1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-04 06:31:13 -08:00

Merge from trunk

This commit is contained in:
Stefan Monnier 2010-12-10 19:13:08 -05:00
commit 2c302df3a1
661 changed files with 39448 additions and 23155 deletions

View file

@ -2,6 +2,10 @@
(sentence-end-double-space . t)
(fill-column . 70)))
(c-mode . ((c-file-style . "GNU")))
;; You must set bugtracker_debbugs_url in your bazaar.conf for this to work.
;; See admin/notes/bugtracker.
(log-edit-mode . ((log-edit-rewrite-fixes
" (bug#\\([0-9]+\\))" . "debbugs:\\1")))
(change-log-mode . ((add-log-time-zone-rule . t)
(fill-column . 74)
(bug-reference-url-format . "http://debbugs.gnu.org/%s")

View file

@ -1,3 +1,69 @@
2010-12-10 Andreas Schwab <schwab@linux-m68k.org>
* configure.in: Don't double machfile in final message.
2010-12-04 Chong Yidong <cyd@stupidchicken.com>
* configure.in: Fix last change.
2010-12-04 Andreas Schwab <schwab@linux-m68k.org>
* configure.in: Remove reference to removed machine description
files and allow $machine and $machfile to be empty. Substitute
M_FILE/S_FILE instead of machfile/opsysfile.
2010-12-03 Glenn Morris <rgm@gnu.org>
* make-dist: Remove EMACS_UNIBYTE unsetting; it does nothing.
2010-11-23 Dan Nicolaescu <dann@ics.uci.edu>
* configure.in <AC_CHECK_HEADERS>: Remove sys/ioctl.h.
(EXTERNALLY_VISIBLE): New definition.
2010-11-21 Dan Nicolaescu <dann@ics.uci.edu>
* configure.in (INLINE): Do not depend on OPTIMIZE, unused.
2010-11-15 Dan Nicolaescu <dann@ics.uci.edu>
* configure.in: Do not check for unconditionally included headers.
2010-11-09 Stefan Monnier <monnier@iro.umontreal.ca>
* .dir-locals.el (log-edit-mode): Set log-edit-rewrite-fixes.
2010-11-09 Michael Albinus <michael.albinus@gmx.de>
* configure.in: Don't write a warning for D-Bus anymore.
2010-11-06 Andreas Schwab <schwab@linux-m68k.org>
* configure.in: Fix indentation.
2010-10-31 Ken Brown <kbrown@cornell.edu>
* configure.in (checking whether localtime caches TZ): Use
unsetenv instead of modifying environment directly.
2010-10-25 Andreas Schwab <schwab@linux-m68k.org>
* configure.in (checking for -znocombreloc): Use AC_LANG_PROGRAM
to avoid warning.
2010-10-24 Lars Magne Ingebrigtsen <larsi@gnus.org>
* configure.in: Remove the BROKEN annotation from gnutls.
2010-10-22 Glenn Morris <rgm@gnu.org>
* make-dist: Avoid listing .el files twice. Don't try to run
autoconf if --no-update.
2010-10-20 Glenn Morris <rgm@gnu.org>
* make-dist: No longer create lisp/MANIFEST.
2010-10-14 Glenn Morris <rgm@gnu.org>
* BUGS, INSTALL.BZR, README: Updates.
@ -2855,7 +2921,7 @@
* make-dist (lispref): Do include lispref/index.texi.
2004-01-06 Eric Hanchrow <offby1@blarg.net> (tiny change)
2004-01-06 Eric Hanchrow <offby1@blarg.net>
* make-dist (tempdir): Include cursors in nt/icons.

View file

@ -676,8 +676,7 @@ the following steps.
the paths to the values specified in `./Makefile'.
2) Go to directory `./lib-src' and run `make'. This creates
executables named `ctags' and `etags' and `make-docfile' and
`digest-doc' and `test-distrib'. And others.
executables named `etags', `make-docfile', and others.
3) Go to directory `./src' and run `make'. This refers to files in
the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
@ -709,8 +708,6 @@ Strictly speaking, not all of the executables in `./lib-src' need be copied.
are intended to be run by users; they are handled below.
- The programs `make-docfile' and `test-distrib' were
used in building Emacs, and are not needed any more.
- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
a file for users to read. There is no important reason to move them.
2) Copy the files in `./info' to the place specified in
`./lisp/site-init.el' or `./lisp/paths.el'. Note that if the

View file

@ -62,7 +62,6 @@ SIGTYPE
SYSTEM_TYPE
** Machine specific macros, decribed in detail in src/m/template.h
EXPLICIT_SIGN_EXTEND
LOAD_AVE_CVT
LOAD_AVE_TYPE
VIRT_ADDR_VARIES

View file

@ -1,3 +1,7 @@
2010-12-03 Andreas Schwab <schwab@linux-m68k.org>
* CPP-DEFINES (EXPLICIT_SIGN_EXTEND): Remove.
2010-10-12 Glenn Morris <rgm@gnu.org>
* notes/nextstep: Move here from ../nextstep/DEV-NOTES.

View file

@ -4,7 +4,8 @@ Instructions to create pretest or release tarballs.
For each step, check for possible errors.
1. cvs -q update -Pd
1. `bzr update' (for a bound branch), or `bzr pull'.
bzr status # check for locally modified files
2. Bootstrap to make 100% sure all elc files are up-to-date, and to
make sure that the later tagged version will bootstrap, should it be
@ -27,24 +28,23 @@ For each step, check for possible errors.
refer to a newer release of Emacs. (This is probably needed only
when preparing a major Emacs release, or branching for it.)
5. rm configure; autoconf
5. rm configure src/config.in; autoconf; autoheader
make bootstrap
6. Commit configure, README, doc/emacs/emacs.texi,
doc/lispref/elisp.texi, etc/AUTHORS, src/emacs.c, nt/emacs.rc,
and lisp/cus-edit.el (if modified). Copy lisp/loaddefs.el to
lisp/ldefs-boot.el and commit lisp/ldefs-boot.el. For a release,
also commit the ChangeLog files in all directories.
6. Commit configure, src/config.in, etc/AUTHORS, all the files changed
by M-x set-version, and lisp/cus-edit.el (if modified).
Copy lisp/loaddefs.el to lisp/ldefs-boot.el and commit lisp/ldefs-boot.el.
For a release, also commit the ChangeLog files in all directories.
7. make-dist --snapshot. Check the contents of the new tar with
admin/diff-tar-files against an older tar file. Some old pretest
tarballs are kept under fencepost.gnu.org:~pot/emacs-pretest/, while
old emacs tarballs are at <ftp://ftp.gnu.org/pub/gnu/emacs/>.
tarballs may be found at <ftp://alpha.gnu.org/gnu/emacs/pretest>;
old release tarballs are at <ftp://ftp.gnu.org/pub/gnu/emacs/>.
If this is the first pretest of a major release, just comparing
with the previous release may overlook many new files. You can try
something like `find -f | grep -v CVS...etc' in a clean CVS tree,
and compare the results against the new tar contents.
something like `find . | sort' in a clean bzr tree, and compare the
results against the new tar contents.
8. xdelta delta emacs-OLD.tar.gz emacs-NEW.tar.gz emacs-OLD-NEW.xdelta
@ -108,5 +108,3 @@ For each step, check for possible errors.
For a release, announce it on info-gnu@gnu.org,
info-gnu-emacs@gnu.org, and emacs-devel.
# arch-tag: c23c771f-ca26-4584-8a04-50ecf0989390

View file

@ -384,6 +384,14 @@ fixed 123 23.0.60
*** To remove a "fixed" mark:
notfixed 123 23.0.60
*** To make a bug as present in a particular version:
found 123 23.2
NB if there is no specified "fixed" version, or if there is one and it
is earlier than the found version, this reopens a closed bug.
The leading "23.1;" that M-x report-emacs-bug adds to bug subjects
automatically sets a found version (if none is explicitly specified).
*** To assign or reassign a bug to a package or list of packages:
reassign 1234 emacs
@ -466,16 +474,41 @@ http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg00440.html
** Bazaar stuff
*** You can use `bzr commit --fixes emacs:123' to mark that a commit fixes
Emacs bug 123. You will first need to add a line to your bazaar.conf:
*** You can use `bzr commit --fixes debbugs:123' to mark that a commit fixes
Emacs bug 123. You will first need to add a line to one of your
configuration files, ~/.bazaar/bazaar.conf or ~/.bazaar/locations.conf:
bugtracker_emacs_url = http://debbugs.gnu.org/{id}
bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
Here "{id}" is a literal string, a placeholder that will be replaced
by the bug number you specify after `--fixes debbugs:' in the bzr
command line (123 in the example above).
In the bazaar.conf file, this setting should go into the [DEFAULTS]
section.
In the locations.conf file, it should go into the branch-specific
configuration section for the branch where you want this to be in
effect. For example, if you want this to be in effect for the branch
located at `/home/projects/emacs/trunk', you need to have this in your
~/.bazaar/locations.conf file:
[/home/projects/emacs/trunk]
bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
If you want to use this in all Emacs branches whose common parent is
`/home/projects/emacs', put the setting in the [/home/projects/emacs]
section. See "bzr help configuration" for more information about
the *.conf files, their location and formats. See "bzr help bugs" for
more information about the bugtracker_debbugs_url setting.
See also log-edit-rewrite-fixes in .dir-locals.el.
Note that all this does is add some metadata to the commit, it doesn't
actually mark the bug as closed in the tracker. There seems to be no
way to see this "metadata" with `bzr log', which is rather poor, but
it will show up as a link in a recent loggerhead installation, or with
some of the graphical frontends to bzr log.
actually mark the bug as closed in the tracker. You can see this
information with `bzr log', and it will show up as a link in a recent
loggerhead installation, or with some of the graphical frontends to
`bzr log'.
** Gnus-specific voodoo

42
admin/notes/elpa Normal file
View file

@ -0,0 +1,42 @@
NOTES ON THE EMACS PACKAGE ARCHIVE
Here are instructions on uploading files to the package archive at
elpa.gnu.org, for Emacs maintainers. (If you are not a maintainer,
contact us if you want to submit a package.)
1. You will need login access to elpa.gnu.org. You will also need to
get the FSF sysadmins to allow ssh access through the FSF firewall
for your local machine. Ensure that your uid, USER, is in the
`elpa' group on elpa.gnu.org; this gives you write access to the
bzr repository from which the packages are managed.
2. Go to your bzr repository on your local machine. Of, if you don't
have one (you should, if you're tracking Emacs bzr), make one:
cd $DEVHOME
bzr init-repo elpa/
cd elpa
Create a branch for elpa:
bzr branch bzr+ssh://USER@elpa.gnu.org/home/elpa/package-repo package-repo
Bind the branch:
cd package-repo/
echo "public_branch = bzr+ssh://USER@elpa.gnu.org/home/elpa/package-repo" >> .bzr/branch/branch.conf
bzr bind bzr+ssh://USER@elpa.gnu.org/home/elpa/package-repo
Now you should be able to do `bzr up' and `bzr commit'.
3. Changes in bzr do not immediately propagate to the user-facing tree
(i.e., what users see when they do `M-x list-packages'). That tree
is created by a (daily) cron job that does "bzr export". If for
some reason you need to refresh the user-facing tree immediately,
run /home/elpa/bin/package-update.sh as the "elpa" user.
The Org mode dailies are not part of the repository. After the
package-update.sh script creates the user-facing tree, it copies
the daily tarfile hosted on orgmode.org directly into that tree.
4. FIXME: How to actually upload a package file.

1292
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -412,13 +412,27 @@ dnl quotation begins
machine='' opsys='' unported=no
case "${canonical}" in
## GNU/Linux ports
*-*-linux-gnu*)
opsys=gnu-linux
case ${canonical} in
alpha*) machine=alpha ;;
s390-*) machine=ibms390 ;;
s390x-*) machine=ibms390x ;;
powerpc*) machine=macppc ;;
sparc*) machine=sparc ;;
ia64*) machine=ia64 ;;
m68k*) machine=m68k ;;
x86_64*) machine=amdx86-64 ;;
esac
;;
## FreeBSD ports
*-*-freebsd* )
opsys=freebsd
case "${canonical}" in
alpha*) machine=alpha ;;
amd64-*|x86_64-*) machine=amdx86-64 ;;
arm*) machine=arm ;;
ia64-*) machine=ia64 ;;
i[3456]86-*) machine=intel386 ;;
powerpc-*) machine=macppc ;;
@ -447,13 +461,9 @@ case "${canonical}" in
case "${canonical}" in
alpha*) machine=alpha ;;
x86_64-*) machine=amdx86-64 ;;
arm-*) machine=arm ;;
hppa-*) machine=hp800 ;;
i[3456]86-*) machine=intel386 ;;
m68k-*) machine=m68k ;;
powerpc-*) machine=macppc ;;
mips-*) machine=mips ;;
mipse[bl]-*) machine=mips ;;
sparc*-) machine=sparc ;;
vax-*) machine=vax ;;
esac
@ -465,8 +475,6 @@ case "${canonical}" in
case "${canonical}" in
alpha*) machine=alpha ;;
x86_64-*) machine=amdx86-64 ;;
arm-*) machine=arm ;;
hppa-*) machine=hp800 ;;
i386-*) machine=intel386 ;;
powerpc-*) machine=macppc ;;
sparc*) machine=sparc ;;
@ -474,14 +482,6 @@ case "${canonical}" in
esac
;;
alpha*-*-linux-gnu* )
machine=alpha opsys=gnu-linux
;;
arm*-*-linux-gnu* )
machine=arm opsys=gnu-linux
;;
## Apple Darwin / Mac OS X
*-apple-darwin* )
case "${canonical}" in
@ -503,24 +503,14 @@ case "${canonical}" in
## HP 9000 series 700 and 800, running HP/UX
hppa*-hp-hpux10.2* )
machine=hp800 opsys=hpux10-20
opsys=hpux10-20
;;
hppa*-hp-hpux1[1-9]* )
machine=hp800 opsys=hpux11
opsys=hpux11
CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
;;
hppa*-*-linux-gnu* )
machine=hp800 opsys=gnu-linux
;;
## IBM machines
s390-*-linux-gnu* )
machine=ibms390 opsys=gnu-linux
;;
s390x-*-linux-gnu* )
machine=ibms390x opsys=gnu-linux
;;
rs6000-ibm-aix4.[23]* )
machine=ibmrs6000 opsys=aix4-2
;;
@ -534,11 +524,6 @@ case "${canonical}" in
machine=ibmrs6000 opsys=aix4-2
;;
## Macintosh PowerPC
powerpc*-*-linux-gnu* )
machine=macppc opsys=gnu-linux
;;
## Silicon Graphics machines
## Iris 4D
mips-sgi-irix6.5 )
@ -551,10 +536,6 @@ case "${canonical}" in
;;
## Suns
sparc-*-linux-gnu* | sparc64-*-linux-gnu* )
machine=sparc opsys=gnu-linux
;;
*-sun-solaris* \
| i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
| x86_64-*-solaris2* | x86_64-*-sunos5*)
@ -594,11 +575,6 @@ case "${canonical}" in
esac
;;
## IA-64
ia64*-*-linux* )
machine=ia64 opsys=gnu-linux
;;
## Intel 386 machines where we don't care about the manufacturer.
i[3456]86-*-* )
machine=intel386
@ -607,7 +583,6 @@ case "${canonical}" in
*-darwin* ) opsys=darwin
CPP="${CC-cc} -E -no-cpp-precomp"
;;
*-linux-gnu* ) opsys=gnu-linux ;;
*-sysv4.2uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
*-sysv5uw* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
*-sysv5OpenUNIX* ) opsys=unixware; NON_GNU_CPP=/lib/cpp ;;
@ -615,32 +590,6 @@ case "${canonical}" in
esac
;;
## m68k Linux-based GNU system
m68k-*-linux-gnu* )
machine=m68k opsys=gnu-linux
;;
## Mips Linux-based GNU system
mips-*-linux-gnu* | mipsel-*-linux-gnu* \
| mips64-*-linux-gnu* | mips64el-*-linux-gnu* )
machine=mips opsys=gnu-linux
;;
## AMD x86-64 Linux-based GNU system
x86_64-*-linux-gnu* )
machine=amdx86-64 opsys=gnu-linux
;;
## Tensilica Xtensa Linux-based GNU system
xtensa*-*-linux-gnu* )
machine=xtensa opsys=gnu-linux
;;
## SuperH Linux-based GNU system
sh[34]*-*-linux-gnu* )
machine=sh3 opsys=gnu-linux
;;
* )
unported=yes
;;
@ -669,7 +618,11 @@ if test $unported = yes; then
Check `etc/MACHINES' for recognized configuration names.])
fi
machfile="m/${machine}.h"
if test -n "$machine"; then
machfile="m/${machine}.h"
else
machfile=
fi
opsysfile="s/${opsys}.h"
@ -869,7 +822,7 @@ else
fi
AC_MSG_CHECKING([for -znocombreloc])
AC_LINK_IFELSE([main(){return 0;}],
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[AC_MSG_RESULT(yes)],
LDFLAGS=$late_LDFLAGS
[AC_MSG_RESULT(no)])
@ -936,7 +889,7 @@ case "$opsys" in
gnu-linux)
## cpp test was "ifdef __mips__", but presumably this is equivalent...
test "$machine" = "mips" && LD_SWITCH_SYSTEM="-G 0"
case $host_cpu in mips*) LD_SWITCH_SYSTEM="-G 0";; esac
;;
netbsd)
@ -1218,10 +1171,10 @@ if test "${with_sound}" != "no"; then
fi
dnl checks for header files
AC_CHECK_HEADERS(sys/select.h sys/timeb.h sys/time.h unistd.h utime.h \
linux/version.h sys/systeminfo.h termios.h limits.h string.h stdlib.h \
stdio_ext.h fcntl.h strings.h coff.h pty.h sys/mman.h \
sys/param.h sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \
AC_CHECK_HEADERS(sys/select.h sys/time.h unistd.h utime.h \
linux/version.h sys/systeminfo.h limits.h \
stdio_ext.h fcntl.h coff.h pty.h sys/mman.h \
sys/vlimit.h sys/resource.h locale.h sys/_mbstate_t.h \
sys/utsname.h pwd.h utmp.h dirent.h util.h)
AC_MSG_CHECKING(if personality LINUX32 can be set)
@ -1498,7 +1451,7 @@ if test "${with_ns}" != no; then
elif test -f $GNUSTEP_CONFIG_FILE; then
NS_IMPL_GNUSTEP=yes
ns_appdir=`pwd`/nextstep/Emacs.app
ns_appbindir=${ns_appdir}
ns_appbindir=${ns_appdir}/
ns_appresdir=${ns_appdir}/Resources
ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
dnl FIXME sourcing this several times in subshells seems inefficient.
@ -1982,6 +1935,8 @@ if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
if test "$HAVE_GCONF" = yes; then
AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
dnl Newer GConf doesn't link with g_objects, so this is not defined.
AC_CHECK_FUNCS([g_type_init])
fi
fi
@ -2095,8 +2050,8 @@ AC_SUBST(LIBXTR6)
dnl FIXME the logic here seems weird, but this is what cpp was doing.
dnl Why not just test for libxmu in the normal way?
LIBXMU=-lXmu
case "$machine" in
## These machines don't supply Xmu.
case $opsys in
## These systems don't supply Xmu.
hpux* | aix4-2 )
test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
;;
@ -2952,14 +2907,6 @@ AC_MSG_CHECKING(whether localtime caches TZ)
AC_CACHE_VAL(emacs_cv_localtime_cache,
[if test x$ac_cv_func_tzset = xyes; then
AC_TRY_RUN([#include <time.h>
extern char **environ;
unset_TZ ()
{
char **from, **to;
for (to = from = environ; (*to = *from); from++)
if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
to++;
}
char TZ_GMT0[] = "TZ=GMT0";
char TZ_PST8[] = "TZ=PST8";
main()
@ -2969,13 +2916,13 @@ main()
if (putenv (TZ_GMT0) != 0)
exit (1);
hour_GMT0 = localtime (&now)->tm_hour;
unset_TZ ();
unsetenv("TZ");
hour_unset = localtime (&now)->tm_hour;
if (putenv (TZ_PST8) != 0)
exit (1);
if (localtime (&now)->tm_hour == hour_GMT0)
exit (1);
unset_TZ ();
unsetenv("TZ");
if (localtime (&now)->tm_hour != hour_unset)
exit (1);
exit (0);
@ -3034,8 +2981,6 @@ dnl Fixme: Not used. Should this be HAVE_SOCKETS?
[Define to 1 if you have inet sockets.])
fi
AC_CHECK_HEADERS(sys/ioctl.h)
if test -f /usr/lpp/X11/bin/smt.exp; then
AC_DEFINE(HAVE_AIX_SMT_EXP, 1,
[Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists.])
@ -3163,8 +3108,14 @@ AC_SUBST(C_SWITCH_X_SYSTEM)
AC_SUBST(CFLAGS)
## Used in lwlib/Makefile.in.
AC_SUBST(X_TOOLKIT_TYPE)
AC_SUBST(machfile)
AC_SUBST(opsysfile)
if test -n "${machfile}"; then
M_FILE="\$(srcdir)/${machfile}"
else
M_FILE=
fi
S_FILE="\$(srcdir)/${opsysfile}"
AC_SUBST(M_FILE)
AC_SUBST(S_FILE)
AC_SUBST(GETLOADAVG_LIBS)
AC_SUBST(ns_appdir)
AC_SUBST(ns_appbindir)
@ -3177,8 +3128,10 @@ AC_DEFINE_UNQUOTED(EMACS_CONFIGURATION, "${canonical}",
[Define to the canonical Emacs configuration name.])
AC_DEFINE_UNQUOTED(EMACS_CONFIG_OPTIONS, "${ac_configure_args}",
[Define to the options passed to configure.])
AC_DEFINE_UNQUOTED(config_machfile, "${machfile}",
[Define to the used machine dependent file.])
if test -n "$machfile"; then
AC_DEFINE_UNQUOTED(config_machfile, "${machfile}",
[Define to the used machine dependent file.])
fi
AC_DEFINE_UNQUOTED(config_opsysfile, "${opsysfile}",
[Define to the used os dependent file.])
@ -3442,16 +3395,18 @@ if test "x$GCC" = "xyes" && test "x$ORDINARY_LINK" != "xyes"; then
gnu-*)
## armin76@gentoo.org reported that the lgcc_s flag is necessary to
## build on ARM EABI under GNU/Linux. (Bug#5518)
## Note that m/arm.h never bothered to undefine LIB_GCC first.
if test "$machine" = "arm"; then
case $host_cpu in
arm*)
LIB_GCC="-lgcc_s"
else
;;
*)
## FIXME? s/gnu-linux.h used to define LIB_GCC as below, then
## immediately undefine it again and redefine it to empty.
## Was the C_SWITCH_X_SITE part really necessary?
## LIB_GCC=`$CC $C_SWITCH_X_SITE -print-libgcc-file-name`
LIB_GCC=
fi
;;
esac
;;
## Ask GCC where to find libgcc.a.
@ -3517,7 +3472,7 @@ AH_BOTTOM([
/* Don't try to switch on inline handling as detected by AC_C_INLINE
generally, because even if non-gcc compilers accept `inline', they
may reject `extern inline'. */
#if defined (__GNUC__) && defined (OPTIMIZE)
#if defined (__GNUC__)
#define INLINE __inline__
#else
#define INLINE
@ -3533,7 +3488,9 @@ AH_BOTTOM([
/* Include the os and machine dependent files. */
#include config_opsysfile
#include config_machfile
#ifdef config_machfile
# include config_machfile
#endif
/* GNUstep needs a bit more pure memory. Of the existing knobs,
SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.
@ -3641,6 +3598,12 @@ typedef unsigned size_t;
#define NO_INLINE
#endif
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
#define EXTERNALLY_VISIBLE __attribute__((externally_visible))
#else
#define EXTERNALLY_VISIBLE
#endif
/* Some versions of GNU/Linux define noinline in their headers. */
#ifdef noinline
#undef noinline
@ -3680,7 +3643,7 @@ Configured for \`${canonical}'.
Where should the build process find the source code? ${srcdir}
What operating system and machine description files should Emacs use?
\`${opsysfile}' and \`${machfile}'
\`${opsysfile}'${machfile:+ and \`${machfile}'}
What compiler should emacs be built with? ${CC} ${CFLAGS}
Should Emacs use the GNU version of malloc? ${GNU_MALLOC}${GNU_MALLOC_reason}
Should Emacs use a relocating allocator for buffers? ${REL_ALLOC}
@ -3712,7 +3675,7 @@ echo " Does Emacs use -lgpm? ${HAVE_GPM}"
echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}"
echo " Does Emacs use -lgnutls (BROKEN)? ${HAVE_GNUTLS}"
echo " Does Emacs use -lgnutls? ${HAVE_GNUTLS}"
echo " Does Emacs use -lxml2? ${HAVE_LIBXML2}"
echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}"
@ -3745,11 +3708,6 @@ to run if these resources are not installed."
echo
fi
if test "$HAVE_DBUS" = yes && test "${opsys}" != "gnu-linux"; then
echo "D-Bus integration has been tested for GNU/Linux only."
echo
fi
# Remove any trailing slashes in these variables.
[test "${prefix}" != NONE &&

View file

@ -1,3 +1,52 @@
2010-11-27 Bob Rogers <rogers-emacs@rgrjr.dyndns.org>
* maintaining.texi (VC With A Locking VCS, VC Directory Commands):
* vc1-xtra.texi (Customizing VC, General VC Options): Small fixes.
2010-11-27 Chong Yidong <cyd@stupidchicken.com>
* maintaining.texi (Version Control Systems): Fix repeated sentence.
Suggested by Štěpán Němec.
2010-11-27 Chong Yidong <cyd@stupidchicken.com>
* maintaining.texi (Version Control): Say "commit", not "check in".
(Version Control Systems): Simplify descriptions.
(VCS Merging, VCS Changesets, VCS Repositories): New nodes, split from
VCS Concepts.
(VC Mode Line): Update example.
(Old Revisions): Document revert-buffer for vc-diff.
(Log Buffer): Promote to a subsection. Document header lines.
* macos.texi (Mac / GNUstep Basics): Document
ns-right-alternate-modifier.
* emacs.texi (Top): Update node listing.
2010-11-13 Eli Zaretskii <eliz@gnu.org>
* rmail.texi (Rmail Coding): Characters with no fonts are not
necessarily displayed as empty boxes.
* mule.texi (Language Environments, Fontsets): Characters with no
fonts are not necessarily displayed as empty boxes.
* display.texi (Text Display): Document display of glyphless
characters.
2010-11-13 Glenn Morris <rgm@gnu.org>
* basic.texi (Position Info): Add M-x count-words-region.
2010-11-11 Glenn Morris <rgm@gnu.org>
* msdog.texi (ls in Lisp): Update for ls-lisp changes.
2010-11-09 Eli Zaretskii <eliz@gnu.org>
* msdog.texi (Windows HOME): Add information regarding startup
directory when invoking Emacs from a desktop shortcut. (bug#7300)
2010-10-11 Glenn Morris <rgm@gnu.org>
* Makefile.in (MAKEINFO): Add explicit -I$srcdir.

View file

@ -537,6 +537,8 @@ Toggle automatic display of the current line number or column number.
Display the number of lines in the current region. Normally bound to
@kbd{M-=}, except in a few specialist modes. @xref{Mark}, for
information about the region.
@item M-x count-words-region
Display the number of words in the current region.
@item C-x =
Display the character code of character after point, character position of
point, and column of point (@code{what-cursor-position}).
@ -743,6 +745,3 @@ additional times, to delete a total of 80 characters, by typing @kbd{C-x
z z z}. The first @kbd{C-x z} repeats the command once, and each
subsequent @kbd{z} repeats it once again.
@ignore
arch-tag: cda8952a-c439-41c1-aecf-4bc0d6482956
@end ignore

View file

@ -1136,6 +1136,48 @@ prefix these characters with an escape character.
by means of a display table. @xref{Display Tables,, Display Tables,
elisp, The Emacs Lisp Reference Manual}.
@cindex glyphless characters
@cindex characters with no font glyphs
On graphics displays, some characters could have no glyphs in any of
the fonts available to Emacs. On text terminals, some characters
could be impossible to encode with the terminal coding system
(@pxref{Terminal Coding}). Emacs can display such @dfn{glyphless}
characters using one of the following methods:
@table @code
@item zero-width
Don't display the character.
@item thin-space
Display a thin space, 1-pixel wide on graphics displays or 1-character
wide on text terminals.
@item empty-box
Display an empty box.
@item acronym
Display the acronym of the character's name (such as @sc{zwnj} or
@sc{rlm}) in a box.
@item hex-code
Display the Unicode codepoint of the character in hexadecimal
notation, in a box.
@end table
@noindent
@cindex @code{glyphless-char} face
With the exception of @code{zero-width}, all other methods draw these
characters in a special face @code{glyphless-char}, which you can
customize.
@vindex glyphless-char-display-control
@vindex char-acronym-table
To control what glyphless characters are displayed using which method,
customize the variable @code{glyphless-char-display-control}; see its
doc string for the details. For even finer control, set the elements
of 2 char-tables: @code{glyphless-char-display} and
@code{char-acronym-table}.
@node Cursor Display
@section Displaying the Cursor

View file

@ -771,6 +771,7 @@ Version Control
* Introduction to VC:: How version control works in general.
* VC Mode Line:: How the mode line shows version control status.
* Basic VC Editing:: How to edit a file under version control.
* Log Buffer:: Features available in log entry buffers.
* Old Revisions:: Examining and comparing old versions.
* Secondary VC Commands:: The commands used a little less frequently.
* VC Directory Mode:: Listing files managed by version control.
@ -785,6 +786,9 @@ Introduction to Version Control
* Why Version Control?:: Understanding the problems it addresses.
* Version Control Systems:: Supported version control back-end systems.
* VCS Concepts:: Words and concepts related to version control.
* VCS Merging:: How file conflicts are handled.
* VCS Changesets:: Changesets in version control.
* VCS Repositories:: Where version control repositories are stored.
* Types of Log File:: The VCS log in contrast to the ChangeLog.
Basic Editing under Version Control
@ -792,7 +796,6 @@ Basic Editing under Version Control
* VC With A Merging VCS:: Without locking: default mode for CVS.
* VC With A Locking VCS:: RCS in its default mode, SCCS, and optionally CVS.
* Advanced C-x v v:: Advanced features available with a prefix argument.
* Log Buffer:: Features available in log entry buffers.
The Secondary Commands of VC

View file

@ -8,23 +8,22 @@
@cindex Macintosh
@cindex GNUstep
This section briefly describes the peculiarities of using Emacs built with
the GNUstep libraries on GNU/Linux or other operating systems, or on Mac OS X
with native window system support. For Mac OS X, Emacs can be built either
without window system support, with X11, or with the Cocoa interface. This
section only applies to the Cocoa build. Emacs 23 does not support Mac OS
Classic.
This section describes the peculiarities of using Emacs built with
the GNUstep libraries on GNU/Linux or other operating systems, or on
Mac OS X with native window system support. On Mac OS X, Emacs can be
built either without window system support, with X11, or with the
Cocoa interface; this section only applies to the Cocoa build. Emacs
does not support earlier versions of Mac OS.
Emacs, when built on Mac OS X, uses the Cocoa application interface. For
various historical and technical reasons, Emacs uses the term @samp{Nextstep}
internally, instead of ``Cocoa'' or ``Mac OS X''; for instance, most of the
commands and variables described in the following sections begin with
@samp{ns-}, which is short for @samp{Nextstep}. NeXTstep was an application
interface released by NeXT Inc during the 1980s, of which Cocoa is a direct
descendant. Apart from Cocoa, there is another NeXTstep-style system:
GNUstep, which is free software. As of this writing, the GNUstep support is
alpha status (@pxref{GNUstep Support}), but we hope to improve it in the
future.
For various historical and technical reasons, Emacs uses the term
@samp{Nextstep} internally, instead of ``Cocoa'' or ``Mac OS X''; for
instance, most of the commands and variables described in this section
begin with @samp{ns-}, which is short for @samp{Nextstep}. NeXTstep
was an application interface released by NeXT Inc during the 1980s, of
which Cocoa is a direct descendant. Apart from Cocoa, there is
another NeXTstep-style system: GNUstep, which is free software. As of
this writing, the GNUstep support is alpha status (@pxref{GNUstep
Support}), but we hope to improve it in the future.
@menu
* Mac / GNUstep Basics:: Basic Emacs usage under GNUstep or Mac OS.
@ -37,19 +36,24 @@ future.
@section Basic Emacs usage under Mac OS and GNUstep
By default, the @key{alt} and @key{option} keys are the same as
@key{Meta} when running under Mac OS. The Mac @key{Cmd} key is the
same as @key{Super}, and Emacs provides a set of keybindings 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}).
@key{Meta}. The Mac @key{Cmd} key is the same as @key{Super}, and
Emacs provides a set of keybindings 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}).
The standard Mac / GNUstep font and color panels are accessible via Lisp commands.
To use the color panel, drag from it to an Emacs frame to change the
foreground color of the face at that position (if the @key{shift} key
is held down, it changes the background color instead). To discard the
settings, create a new frame and close the altered one.
@c [unclear if the following holds.]
@c To finalize the settings for either color or font, choose @samp{Save Options} in the @samp{Options} menu.
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.
The standard Mac / GNUstep font and color panels are accessible via
Lisp commands. To use the color panel, drag from it to an Emacs frame
to change the foreground color of the face at that position (if the
@key{shift} key is held down, it changes the background color
instead). To discard the settings, create a new frame and close the
altered one.
@key{S-Mouse-1} (i.e., clicking the left mouse button
while holding down the @key{Shift} key) adjusts the region to the
@ -58,7 +62,7 @@ it does not pop up a menu for changing the default face, as
@key{S-Mouse-1} normally does (@pxref{Temporary Face Changes}). This
change makes Emacs behave more like other Mac / GNUstep applications.
When you open or save files using the menus, or using the
When you open or save files using the menus, or using the
@key{Cmd-o} and @key{Cmd-S} bindings, Emacs uses graphical file
dialogs to read file names. However, if you use the regular Emacs key
sequences, such as @key{C-x C-f}, Emacs uses the minibuffer to read
@ -110,7 +114,7 @@ dragging will alter the foreground color. Shift dragging will alter the
background color.
@c To make the changes permanent select the "Save Options"
@c item in the "Options" menu, or run @code{menu-bar-options-save}.
@c item in the "Options" menu, or run @code{menu-bar-options-save}.
Useful in this context is the listing of all faces obtained by @key{M-x}
@code{list-faces-display}.
@ -193,7 +197,7 @@ font are stored in the variables @code{ns-input-font} and
@code{ns-input-fontsize}, respectively.
@item ns-power-off
This event occurs when the user logs out and Emacs is still running, or when
This event occurs when the user logs out and Emacs is still running, or when
`Quit Emacs' is chosen from the application menu.
The default behavior is to save all file-visiting buffers.
@end table
@ -208,26 +212,9 @@ and return the result as a string. You can also use the Lisp function
services and receive the results back. Note that you may need to
restart Emacs to access newly-available services.
@node GNUstep Support, , Mac / GNUstep Events, Mac OS / GNUstep
@section GNUstep Support
Emacs can be built and run under GNUstep, however there are still some
Emacs can be built and run under GNUstep, but there are still some
issues to be addressed. Interested developers should contact
@email{emacs-devel@@gnu.org}.
@c Presumably no longer relevant since CANNOT_DUMP removed 2009-05-06:
@ignore
In particular, it may be necessary to run @samp{make bootstrap} with a
plain X configuration, then @samp{make clean} and @samp{./configure
--with-ns} followed by @samp{make install}.
Currently CANNOT_DUMP is automatically enabled in GNUstep configurations,
because the unex file(s) for GNUstep, mainly @samp{unexelf.c}, have not been
updated yet with the ``zone'' code in and related to @samp{unexmacosx.c}.
@end ignore
@ignore
arch-tag: a822c2ab-4273-4997-927e-c153bb71dcf6
@end ignore

View file

@ -24,20 +24,20 @@ programs.
@section Version Control
@cindex version control
A @dfn{version control system} is a package that can record multiple
A @dfn{version control system} is a program that can record multiple
versions of a source file, storing information such as the creation
time of each version, who created it, and a description of what was
changed in that version.
time of each version, who made it, and a description of what was
changed.
The Emacs version control interface is called VC. Its commands work
with several different version control systems; currently, it supports
GNU Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS, SCCS/CSSC, and
Subversion. Of these, the GNU project distributes CVS, GNU Arch, RCS,
and Bazaar.
The Emacs version control interface is called @dfn{VC}. VC commands
work with several different version control systems; currently, it
supports GNU Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS,
SCCS/CSSC, and Subversion. Of these, the GNU project distributes CVS,
Arch, RCS, and Bazaar.
VC is enabled automatically whenever you visit a file that is
governed by a version control system. To disable VC entirely, set the
customizable variable @code{vc-handled-backends} to @code{nil}
VC is enabled automatically whenever you visit a file governed by a
version control system. To disable VC entirely, set the customizable
variable @code{vc-handled-backends} to @code{nil}
@iftex
(@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}).
@end iftex
@ -49,6 +49,7 @@ customizable variable @code{vc-handled-backends} to @code{nil}
* Introduction to VC:: How version control works in general.
* VC Mode Line:: How the mode line shows version control status.
* Basic VC Editing:: How to edit a file under version control.
* Log Buffer:: Features available in log entry buffers.
* Old Revisions:: Examining and comparing old versions.
* Secondary VC Commands:: The commands used a little less frequently.
* VC Directory Mode:: Listing files managed by version control.
@ -65,12 +66,13 @@ customizable variable @code{vc-handled-backends} to @code{nil}
@subsection Introduction to Version Control
VC allows you to use a version control system from within Emacs,
integrating the version control operations smoothly with editing.
Though VC cannot completely bridge the gaps between version control
systems with widely differing capabilities, it does provide a uniform
interface to many version control operations. Regardless of which
version control system is in use, you will be able to do basic
operations in much the same way.
integrating the version control operations smoothly with editing. It
provides a uniform interface for common operations in many version
control operations.
Some uncommon or intricate version control operations, such as
altering repository settings, are not supported in VC. You should
perform such tasks outside Emacs, e.g. via the command line.
This section provides a general overview of version control, and
describes the version control systems that VC supports. You can skip
@ -81,6 +83,9 @@ you want to use.
* Why Version Control?:: Understanding the problems it addresses.
* Version Control Systems:: Supported version control back-end systems.
* VCS Concepts:: Words and concepts related to version control.
* VCS Merging:: How file conflicts are handled.
* VCS Changesets:: How changes are grouped.
* VCS Repositories:: Where version control repositories are stored.
* Types of Log File:: The VCS log in contrast to the ChangeLog.
@end menu
@ -112,8 +117,8 @@ vitally important form of communication among developers.
@subsubsection Supported Version Control Systems
@cindex back end (version control)
VC currently works with many different version control systems or
@dfn{back ends}:
VC currently works with many different version control systems,
which it refers to as @dfn{back ends}:
@itemize @bullet
@ -134,73 +139,60 @@ control system.
@cindex RCS
@item
RCS is the free version control system around which VC was initially
built. Almost everything you can do with RCS can be done through VC.
However, you cannot use RCS over the network, and it only works at the
level of individual files rather than projects.
built. It is relatively primitive: it cannot be used over the
network, and works at the level of individual files. Almost
everything you can do with RCS can be done through VC.
@cindex CVS
@item
CVS is the free version control system that was, until recently (circa
2008), used by the majority of free software projects. Nowadays, it
is slowly being superseded by newer systems. CVS allows concurrent
multi-user development either locally or over the network. It lacks
support for atomic commits or file moving/renaming. VC supports all
basic editing operations under CVS. For some less common tasks, you
still need to call CVS from the command line. Note also that before
using CVS you must set up a repository, which is a subject too complex
to treat here.
multi-user development either locally or over the network. Unlike
newer systems, it lacks support for atomic commits and file
moving/renaming. VC supports all basic editing operations under CVS.
@cindex SVN
@cindex Subversion
@item
Subversion (SVN) is a free version control system designed to be
similar to CVS but without its problems. It supports atomic commits
of filesets, and versioning of directories, symbolic links, meta-data,
renames, copies, and deletes.
similar to CVS but without its problems (e.g., it supports atomic
commits of filesets, and versioning of directories, symbolic links,
meta-data, renames, copies, and deletes).
@cindex GNU Arch
@cindex Arch
@item
GNU Arch is a version control system designed for distributed work.
It differs in many ways from older systems like CVS and RCS. It
provides different methods for interoperating between users, support
for offline operations, and good branching and merging features. It
also supports atomic commits of filesets and file moving/renaming. VC
does not support all operations provided by GNU Arch, so you must
sometimes invoke it from the command line.
GNU Arch is one of the earliest @dfn{distributed} version control
systems (the other being Monotone). @xref{VCS Concepts}, for a
description of distributed version control systems. It is no longer
under active development, and has been deprecated in favor of Bazaar.
@cindex git
@item
Git is a distributed version control system invented by Linus Torvalds to support
development of Linux (his kernel). It supports atomic commits of filesets and
file moving/renaming. One significant feature of git is that it
largely abolishes the notion of a single centralized repository;
instead, each working copy of a git project is its own repository and
coordination is done through repository-sync operations. VC supports
most git operations, with the exception of news merges and repository
syncing; these must be done from the command line.
Git is a distributed version control system originally invented by
Linus Torvalds to support development of Linux (his kernel). VC
supports many common git operations, but others, such as repository
syncing, must be done from the command line.
@cindex hg
@cindex Mercurial
@item
Mercurial (hg) is a distributed version control system broadly
resembling GNU Arch and git, with atomic fileset commits and file
moving/renaming. Like git, it is fully decentralized. VC supports
most Mercurial commands, with the exception of repository sync
operations; this needs to be done from the command line.
resembling git. VC supports most Mercurial commands, with the
exception of repository sync operations.
@cindex bzr
@cindex Bazaar
@item
Bazaar (bzr) is a distributed version control system that supports both
repository-based and distributed versioning, with atomic fileset
commits and file moving/renaming. VC supports most basic editing
operations under Bazaar.
Bazaar (bzr) is a distributed version control system that supports
both repository-based and distributed versioning. VC supports most
basic editing operations under Bazaar.
@end itemize
Previous versions of VC supported a version control system known as
Meta-CVS. This support has been dropped because of limited interest
from users and developers.
Meta-CVS. This support was dropped due to limited interest from users
and developers.
@node VCS Concepts
@subsubsection Concepts of Version Control
@ -216,11 +208,11 @@ as @dfn{log entries} that describe the changes made to each file.
@cindex work file
@cindex checking out files
A file @dfn{checked out} of a repository is called the @dfn{work
file}. You edit the work file and make changes in it, as you would
with an ordinary file. After you are done with a set of changes, you
@dfn{check in} or @dfn{commit} the file; this records the changes in
the repository, along with a log entry for those changes.
The copy of a version-controlled file that you actually edit is
called the @dfn{work file}. You can change each work file as you
would an ordinary file. After you are done with a set of changes, you
@dfn{commit} (or @dfn{check in}) the changes; this records the changes
in the repository, along with a descriptive log entry.
@cindex revision
@cindex revision ID
@ -231,12 +223,15 @@ on the version control system; in the simplest case, it is just an
integer.
To go beyond these basic concepts, you will need to understand three
aspects in which version control systems differ.
They can be locking-based or merging-based; they can be file-based or
changeset-based; and they can be centralized or decentralized. VC
handles all these modes of operation, but it cannot hide the differences.
aspects in which version control systems differ. As explained in the
next three sections, they can be lock-based or merge-based; file-based
or changeset-based; and centralized or decentralized. VC handles all
these modes of operation, but it cannot hide the differences.
@node VCS Merging
@subsubsection Merge-based vs lock-based Version Control
@cindex locking versus merging
A version control system typically has some mechanism to coordinate
between users who want to change the same file. There are two ways to
do this: merging and locking.
@ -244,8 +239,7 @@ do this: merging and locking.
In a version control system that uses merging, each user may check
out and modify a work file at any time. The system lets you
@dfn{merge} your work file, which may contain changes that have not
been checked in, with the latest changes that others have checked into
the repository.
been committed, with the latest changes that others have committed.
Older version control systems use a @dfn{locking} scheme instead.
Here, work files are normally read-only. To edit a file, you ask the
@ -253,7 +247,7 @@ version control system to make it writable for you by @dfn{locking}
it; only one user can lock a given file at any given time. This
procedure is analogous to, but different from, the locking that Emacs
uses to detect simultaneous editing of ordinary files
(@pxref{Interlocking}). When you check in your changes, that unlocks
(@pxref{Interlocking}). When you commit your changes, that unlocks
the file, and the work file becomes read-only again. Other users may
then lock the file to make their own changes.
@ -261,8 +255,8 @@ then lock the file to make their own changes.
users try to modify the same file at the same time. Locking systems
have @dfn{lock conflicts}; a user may try to check a file out and be
unable to because it is locked. In merging systems, @dfn{merge
conflicts} happen when you check in a change to a file that conflicts
with a change checked in by someone else after your checkout. Both
conflicts} happen when you commit a change to a file that conflicts
with a change committed by someone else after your checkout. Both
kinds of conflict have to be resolved by human judgment and
communication. Experience has shown that merging is superior to
locking, both in convenience to developers and in minimizing the
@ -275,27 +269,33 @@ Distributed version control systems, such as GNU Arch, git, and
Mercurial, are exclusively merging-based.
VC mode supports both locking and merging version control. The
terms ``checkin'' and ``checkout'' come from locking-based version
control systems; newer version control systems have slightly different
operations usually called ``commit'' and ``update'', but VC hides the
differences between them as much as possible.
terms ``commit'' and ``update'' are used in newer version control
systems; older lock-based systems use the terms ``check in'' and
``check out''. VC hides the differences between them as much as
possible.
@cindex files versus changesets.
@node VCS Changesets
@subsubsection Changeset-based vs File-based Version Control
@cindex changesets
On SCCS, RCS, CVS, and other early version control systems, version
control operations are @dfn{file-based}: each file has its own comment
and revision history separate from that of all other files in the
system. Later systems, beginning with Subversion, are
@dfn{changeset-based}: a checkin may include changes to several files,
and the entire set of changes is treated as a unit by the system. Any
comment associated with the change does not belong to a single file,
but to the changeset itself.
and revision history separate from that of all other files. Newer
systems, beginning with Subversion, are @dfn{changeset-based}: a
checkin may include changes to several files, and the entire set of
changes is handled as a unit. Any comment associated with the change
does not belong to a single file, but to the changeset itself.
Changeset-based version control is more flexible and powerful than
file-based version control; usually, when a change to multiple files
has to be reversed, it's good to be able to easily identify and remove
all of it.
@cindex centralized vs. decentralized version control
@node VCS Repositories
@subsubsection Decentralized vs Centralized Repositories
@cindex centralized version control
@cindex decentralized version control
Early version control systems were designed around a
@dfn{centralized} model in which each project has only one repository
used by all developers. SCCS, RCS, CVS, and Subversion share this
@ -306,14 +306,12 @@ point for reliability and efficiency.
control, later implemented in git, Mercurial, and Bazaar. A project
may have several different repositories, and these systems support a
sort of super-merge between repositories that tries to reconcile their
change histories. At the limit, each developer has his/her own
repository, and repository merges replace checkin/commit operations.
change histories. In effect, there is one repository for each
developer, and repository merges take the place of commit operations.
VC's job is to help you manage the traffic between your personal
workfiles and a repository. Whether that repository is a single
master or one of a network of peer repositories is not something VC
has to care about. Thus, the difference between a centralized and a
decentralized version control system is invisible to VC mode.
VC helps you manage the traffic between your personal workfiles and
a repository. Whether the repository is a single master, or one of a
network of peer repositories, is not something VC has to care about.
@node Types of Log File
@subsubsection Types of Log File
@ -323,9 +321,9 @@ decentralized version control system is invisible to VC mode.
Projects that use a version control system can have two types of log
for changes. One is the log maintained by the version control system:
each time you check in a change, you fill out a @dfn{log entry} for
the change (@pxref{Log Buffer}). This is called the @dfn{version
control log}.
each time you commit a change, you fill out a @dfn{log entry} for the
change (@pxref{Log Buffer}). This is called the @dfn{version control
log}.
The other kind of log is the file @file{ChangeLog} (@pxref{Change
Log}). It provides a chronological record of all changes to a large
@ -365,32 +363,29 @@ change, and later use the @kbd{C-x v a} command to copy it to
@cindex VC, mode line indicator
When you visit a file that is under version control, Emacs indicates
this on the mode line. For example, @samp{RCS-1.3} says that the RCS
back end is used for that file, and the current version of the file is
1.3.
The first part of the VC mode-line indicator is the name of the back
end: @samp{RCS}, @samp{CVS}, @samp{Bzr}, etc. The back-end name is
followed by a single character and the version of the file.
this on the mode line. For example, @samp{Bzr-1223} says that Bazaar
is used for that file, and the current revision ID is 1223.
The character between the back-end name and the revision ID
indicates the version control status of the file. @samp{-} means that
the work file is not locked (if locking is in use), or not modified (if
locking is not in use). @samp{:} indicates that the file is locked, or
that it is modified. If the file is locked by some other user (for
indicates the status of the work file. In a merge-based version
control system, a @samp{-} character indicates that the work file is
unmodified, and @samp{:} indicates that it has been modified.
@samp{!} indicates that the file contains conflicts as result of a
recent merge operation (@pxref{Merging}), or that the file was removed
from the version control. Finally, @samp{?} means that the file is
under version control, but is missing from the working tree.
In a lock-based system, @samp{-} indicates an unlocked file, and
@samp{:} a locked file; if the file is locked by another user (for
instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
@samp{@@} means that the file was locally added, but not yet committed
to the master repository. @samp{!} indicates that the file contains
conflicts as result of a recent merge operation (@pxref{Merging}), or
that the file was removed from the version control. Finally, @samp{?}
means that the file is under version control, but is missing from the
working tree.
to the master repository.
On a graphical display, you can move the mouse over this mode line
indicator to pop up a ``tool-tip'', which displays a more verbose
description of the version control status. Pressing @kbd{Mouse-1}
over the indicator pops up a menu of VC commands. This menu is
identical to the @samp{Tools / Version Control} menu item.
over the indicator pops up a menu of VC commands, identical to
@samp{Tools / Version Control} on the menu bar.
@vindex auto-revert-check-vc-info
When Auto Revert mode (@pxref{Reverting}) reverts a buffer that is
@ -442,12 +437,6 @@ command line. All files in a VC fileset must be under the same
version control system; if they are not, Emacs signals an error when
you attempt to execute a command on the fileset.
Support for VC filesets and changeset-based version control systems
is the main improvement to VC in Emacs 23. When you mark multi-file
VC in a VC Directory buffer, VC operations treat them as a VC fileset,
and operate on them all at once if the version control system is
changeset-based. @xref{VC Directory Mode}.
VC filesets are distinct from the ``named filesets'' used for
viewing and visiting files in functional groups (@pxref{Filesets}).
Unlike named filesets, VC filesets are not named and don't persist
@ -457,7 +446,6 @@ across sessions.
* VC With A Merging VCS:: Without locking: default mode for CVS.
* VC With A Locking VCS:: RCS in its default mode, SCCS, and optionally CVS.
* Advanced C-x v v:: Advanced features available with a prefix argument.
* Log Buffer:: Features available in log entry buffers.
@end menu
@node VC With A Merging VCS
@ -490,9 +478,9 @@ If you have not changed the work file, but some other user has checked
in changes to the repository, merge those changes into the work file.
@item
If you have made modifications to the work file, attempts to check in
your changes. To do this, Emacs first reads the log entry for the new
revision (@pxref{Log Buffer}). If some other user has checked in
If you have made modifications to the work file, attempt to commit
the changes. To do this, Emacs first reads the log entry for the new
revision (@pxref{Log Buffer}). If some other user has committed
changes to the repository since you last checked it out, the checkin
fails. In that case, type @kbd{C-x v v} again to merge those changes
into your own work file; this puts the work file into a ``conflicted''
@ -507,8 +495,8 @@ trying to commit your own changes, type @kbd{C-x v m @key{RET}}.
These rules also apply when you use RCS in its ``non-locking'' mode,
except that changes are not automatically merged from the repository.
Nothing informs you if another user has checked in changes in the same
file since you began editing it; when you check in your revision, his
Nothing informs you if another user has committed changes in the same
file since you began editing it; when you commit your revision, his
changes are removed (however, they remain in the repository and are
thus not irrevocably lost). Therefore, you must verify that the
current revision is unchanged before checking in your changes. In
@ -528,7 +516,7 @@ If the file is not locked, lock it and make it writable, so that you
can change it.
@item
If the file is locked by you, and contains changes, check in the
If the file is locked by you, and contains changes, commit the
changes. In order to do this, Emacs first reads the log entry for the
new revision. @xref{Log Buffer}.
@ -544,12 +532,12 @@ locked the file, to inform him of what has happened.
@end itemize
These rules also apply when you use CVS in locking mode, except
that there is no such thing as stealing a lock.
that CVS does not support stealing a lock.
@node Advanced C-x v v
@subsubsection Advanced Control in @kbd{C-x v v}
@cindex revision ID to check in/out
@cindex revision ID in version control
When you give a prefix argument to @code{vc-next-action} (@kbd{C-u
C-x v v}), it still performs the next logical version control
operation, but accepts additional arguments to specify precisely how
@ -558,8 +546,8 @@ to do the operation.
@itemize @bullet
@item
If the file is modified (or locked), you can specify the revision ID
to use for the new version that you check in. This is one way
to create a new branch (@pxref{Branches}).
to use for the new version that you commit. This is one way to create
a new branch (@pxref{Branches}).
@item
If the file is not modified (and unlocked), you can specify the
@ -585,34 +573,53 @@ Features}).
@end itemize
@node Log Buffer
@subsubsection Features of the Log Entry Buffer
@subsection Features of the Log Entry Buffer
When you check in changes, Emacs pops up a buffer called
@samp{*VC-Log*} for you to enter a log entry.
When you tell VC to commit a change, it pops up a buffer called
@samp{*VC-Log*}. In this buffer, you should write a @dfn{log entry}
describing the changes you have made (@pxref{Why Version Control?}).
After you are done, type @kbd{C-c C-c}; this exits the buffer and
commits the change, together with your log entry.
After you have finished editing the log message, type @kbd{C-c C-c}
to exit the buffer and commit the change.
While in the @samp{*VC-Log*} buffer, you can write one or more
@dfn{header lines}, specifying additional information to be supplied
to the version control system. Each header line must occupy a single
line at the top of the buffer; the first line that is not a header
line is treated as the start of the log entry. For example, the
following header line states that the present change was not written
by you, but by another developer:
@smallexample
Author: J. R. Hacker <jrh@@example.com>
@end smallexample
@noindent
Apart from the @samp{Author} header, Emacs recognizes the headers
@samp{Date} (a manually-specified commit time) and @samp{Fixes} (a
reference to a bug fixed by the change). Not all version control
systems recognize all headers: Bazaar recognizes all three headers,
while git, Mercurial, and Monotone recognizes only @samp{Author} and
@samp{Summary}. If you specify a header for a version control that
does not support it, the header is treated as part of the log entry.
@findex log-edit-show-files
@findex log-edit-show-diff
In the @samp{*VC-Log*} buffer, typing @kbd{C-c C-f}
(@code{log-edit-show-files}) displays a list of files in the VC
fileset you are committing. If you called @kbd{C-x v v} directly from
a work file, the VC fileset consists of that single file, so this
command is not very useful. If you called @kbd{C-x v v} from a VC
directory buffer, the VC fileset may consist of multiple files
(@pxref{VC Directory Mode}).
Type @kbd{C-c C-f} (@code{log-edit-show-files}) to display a list of
files in the current VC fileset. If you called @kbd{C-x v v} directly
from a work file, the fileset consists of that single file; if you
called @kbd{C-x v v} from a VC directory buffer (@pxref{VC Directory
Mode}), the fileset may consist of multiple files.
@findex log-edit-insert-changelog
Type @kbd{C-c C-d} (@code{log-edit-show-diff}) to show a ``diff'' of
the changes you have made (i.e., the differences between the work file
and the repository revision from which you started editing the file).
The diff is displayed in a special buffer in another window.
@xref{Comparing Files}.
Type @kbd{C-c C-d} (@code{log-edit-show-diff}) to show a @dfn{diff}
of the changes you have made (i.e., the differences between the work
file and the repository revision from which you started editing).
@xref{Old Revisions}.
If you have written an entry in the @file{ChangeLog} (@pxref{Change
Log}), type @kbd{C-c C-a} (@code{log-edit-insert-changelog}) to pull
it into the @samp{*VC-Log*} buffer. If the topmost item in the
If the current VC fileset includes one or more @file{ChangeLog}
files (@pxref{Change Log}), type @kbd{C-c C-a}
(@code{log-edit-insert-changelog}) to pull the relevant entries into
the @samp{*VC-Log*} buffer. If the topmost item in each
@file{ChangeLog} was made under your user name on the current date,
this command searches that item for entries that match the file(s) to
be committed; if found, these entries are inserted.
@ -627,7 +634,7 @@ the revision control log.
To abort a check-in, just @strong{don't} type @kbd{C-c C-c} in that
buffer. You can switch buffers and do other editing. As long as you
don't try to check in another file, the entry you were editing remains
don't try to commit another file, the entry you were editing remains
in the @samp{*VC-Log*} buffer, and you can go back to that buffer at
any time to complete the check-in.
@ -636,7 +643,7 @@ convenient to specify the same log entry for many of the files. (This
is the normal way to do things on a changeset-oriented system, where
comments are attached to changesets rather than the history of
individual files.) The most convenient way to do this is to mark all
the files in VC Directory Mode and check in from there; the log buffer
the files in VC Directory Mode and commit from there; the log buffer
will carry the fileset information with it and do a group commit when
you type @kbd{C-c C-c}.
@ -648,7 +655,7 @@ work just like the minibuffer history commands (except that these
versions are used outside the minibuffer).
@vindex vc-log-mode-hook
Each time you check in a change, the log entry buffer is put into VC
Each time you commit a change, the log entry buffer is put into VC
Log Edit mode, which involves running two hooks: @code{text-mode-hook}
and @code{vc-log-mode-hook}. @xref{Hooks}.
@ -700,8 +707,12 @@ buffer in a separate window.
@kbd{C-x v =} (@code{vc-diff}) compares each file in the current VC
fileset (saving them if necessary) with the repository revision(s)
from which you started editing. Note that the latter may or may not
be the latest revision of the file(s). The diff is displayed in a
special buffer in another window. @xref{Comparing Files}.
be the latest revision of the file(s).
The diff is displayed in another window, in a Diff mode buffer
(@pxref{Diff Mode}) named @file{*vc-diff*}. In this buffer, the
@kbd{g} (@code{revert-buffer}) command performs the file comparison
again, generating a new diff.
@findex vc-diff
@kindex C-u C-x v =
@ -1008,7 +1019,7 @@ then decide not to change it.
@kindex C-x v c
@findex vc-rollback
To cancel a change that you already checked in, use @kbd{C-x v c}
To cancel a change that you already committed, use @kbd{C-x v c}
(@code{vc-rollback}). This command discards all record of the most
recent checked-in revision, but only if your work file corresponds to
that revision---you cannot use @kbd{C-x v c} to cancel a revision that
@ -1075,8 +1086,8 @@ output is used. Here is an example using CVS:
@noindent
In this example, @samp{file1.c} is modified with respect to the
repository, and @samp{file2.c} is not. @samp{file3.c} is modified,
but other changes have also been checked in to the repository---you
need to merge them with the work file before you can check it in.
but other changes have also been committed---you need to merge them
with the work file before you can check it in.
@vindex vc-stay-local
@vindex vc-cvs-stay-local
@ -1114,7 +1125,7 @@ this includes Version Control subdirectories such as @samp{RCS} and
VC Directory mode has a full set of navigation and marking commands
for picking out filesets. Some of these are also available in a
context menu invoked by the @kbd{mouse-2} button.
context menu invoked by @kbd{mouse-2}.
Up- and down-arrow keys move in the buffer; @kbd{n} and @kbd{p} also
move vertically as in other list-browsing modes. @key{SPC} and
@ -1158,7 +1169,8 @@ directory buffer will be used.
@kbd{M-s a C-s} does an incremental search on the marked files.
@kbd{M-s a C-M-s} does an incremental search on the marked files.
@kbd{M-s a C-M-s} does an incremental regular expression search
on the marked files.
@cindex stashes in version control
@cindex shelves in version control
@ -1174,11 +1186,11 @@ buffers. Some single-key shortcuts are available as well; @kbd{=},
@kbd{+}, @kbd{l}, @kbd{i}, and @kbd{v} behave as through prefixed with
@kbd{C-x v}.
The command @kbd{C-x v v} (@code{vc-next-action}) operates on all the
marked files, so that you can check in several files at once.
If the underlying VC supports atomic commits of multiple-file
changesets, @kbd{C-x v v} with a selected set of modified but not
committed files will commit all of them at once as a single changeset.
The command @kbd{C-x v v} (@code{vc-next-action}) operates on all
the marked files, so that you can commit several files at once. If
the underlying VC supports atomic commits of multiple-file changesets,
@kbd{C-x v v} with a selected set of modified but not committed files
will commit all of them at once as a single changeset.
When @kbd{C-x v v} (@code{vc-next-action}) operates on multiple
files, all of those files must be either in the same state or in
@ -1261,15 +1273,15 @@ other branch.
@node Creating Branches
@subsubsection Creating New Branches
To create a new branch from a head revision (one that is the latest in
the branch that contains it), first select that revision if necessary,
lock it with @kbd{C-x v v}, and make whatever changes you want. Then,
when you check in the changes, use @kbd{C-u C-x v v}. This lets you
specify the revision ID for the new revision. You should specify a
suitable branch ID for a branch starting at the current revision.
For example, if the current revision is 2.5, the branch ID should be
2.5.1, 2.5.2, and so on, depending on the number of existing branches at
that point.
To create a new branch from a head revision (one that is the latest
in the branch that contains it), first select that revision if
necessary, lock it with @kbd{C-x v v}, and make whatever changes you
want. Then, when you commit the changes, use @kbd{C-u C-x v v}. This
lets you specify the revision ID for the new revision. You should
specify a suitable branch ID for a branch starting at the current
revision. For example, if the current revision is 2.5, the branch ID
should be 2.5.1, 2.5.2, and so on, depending on the number of existing
branches at that point.
To create a new branch at an older revision (one that is no longer the
head of a branch), first select that revision (@pxref{Switching
@ -1282,11 +1294,11 @@ revision, that you really mean to create a new branch---if you say no,
you'll be offered a chance to lock the latest revision instead. On
a merging-based VCS you will skip this step.
Then make your changes and type @kbd{C-x v v} again to check in a new
Then make your changes and type @kbd{C-x v v} again to commit a new
revision. This automatically creates a new branch starting from the
selected revision. You need not specially request a new branch, because
that's the only way to add a new revision at a point that is not the head
of a branch.
selected revision. You need not specially request a new branch,
because that's the only way to add a new revision at a point that is
not the head of a branch.
After the branch is created, you ``stay'' on it. That means that
subsequent check-ins create new revisions on that branch. To leave the
@ -1334,11 +1346,11 @@ type @kbd{C-x v v} to lock revision 1.5 so that you can change it. Next,
type @kbd{C-x v m 1.3.1 @key{RET}}. This takes the entire set of changes on
branch 1.3.1 (relative to revision 1.3, where the branch started, up to
the last revision on the branch) and merges it into the current revision
of the work file. You can now check in the changed file, thus creating
of the work file. You can now commit the changed file, thus creating
revision 1.6 containing the changes from the branch.
It is possible to do further editing after merging the branch, before
the next check-in. But it is usually wiser to check in the merged
the next check-in. But it is usually wiser to commit the merged
revision, then lock it and make the further changes. This will keep
a better record of the history of changes.
@ -1374,7 +1386,7 @@ master file revision with user B's changes in it is 1.11.
Then you can resolve the conflicts by editing the file manually. Or
you can type @code{M-x vc-resolve-conflicts} after visiting the file.
This starts an Ediff session, as described above. Don't forget to
check in the merged version afterwards.
commit the merged version afterwards.
@node Multi-User Branching
@subsubsection Multi-User Branching

View file

@ -31,7 +31,8 @@ here.
* Text and Binary:: Text files use CRLF to terminate lines.
* Windows Files:: File-name conventions on Windows.
* ls in Lisp:: Emulation of @code{ls} for Dired.
* Windows HOME:: Where Emacs looks for your @file{.emacs}.
* Windows HOME:: Where Emacs looks for your @file{.emacs} and
where it starts up.
* Windows Keyboard:: Windows-specific keyboard features.
* Windows Mouse:: Windows-specific mouse features.
* Windows Processes:: Running subprocesses on Windows.
@ -284,11 +285,12 @@ on Windows, since many users of Emacs on those platforms prefer the
@end table
@noindent
Any other value of @code{ls-lisp-emulation} means the same as
@code{GNU}. Note that this option needs to be set @emph{before}
@file{ls-lisp.el} is loaded, which means that on MS-Windows and MS-DOS
you will have to set the value from your @file{.emacs} file and then
restart Emacs, since @file{ls-lisp.el} is preloaded.
Any other value of @code{ls-lisp-emulation} means the same as @code{GNU}.
Customizing this option calls the function @code{ls-lisp-set-options} to
update the 3 dependent options as needed. If you change the value of
this variable without using customize after @file{ls-lisp.el} is loaded
(note that it is preloaded on MS-Windows and MS-DOS), you can call that
function manually for the same result.
@vindex ls-lisp-support-shell-wildcards
The variable @code{ls-lisp-support-shell-wildcards} controls how
@ -329,7 +331,7 @@ names, which might cause misalignment of columns in Dired display.
@end ifnottex
@node Windows HOME
@section HOME Directory on MS-Windows
@section HOME and Startup Directories on MS-Windows
@cindex @code{HOME} directory on MS-Windows
The Windows equivalent of the @code{HOME} directory is the
@ -371,6 +373,13 @@ names, the Windows port of Emacs supports an alternative name
@file{_emacs} as a fallback, if such a file exists in the home
directory, whereas @file{.emacs} does not.
@cindex start directory, MS-Windows
@cindex directory where Emacs starts on MS-Windows
If you use a Windows desktop shortcut to start Emacs, it starts in
the directory specified by the shortcut. To control where that is,
right-click on the shortcut, select ``Properties'', and in the
``Shortcut'' tab modify the ``Start in'' field to your liking.
@node Windows Keyboard
@section Keyboard Usage on MS-Windows
@cindex keyboard, MS-Windows
@ -917,6 +926,3 @@ click-to-focus policy.
@include msdog-xtra.texi
@end ifnottex
@ignore
arch-tag: f39d2590-5dcc-4318-88d9-0eb73ca10fa2
@end ignore

View file

@ -351,10 +351,11 @@ which prefers Cyrillic characters and files encoded in Windows-1255).
@cindex Intlfonts package, installation
To display the script(s) used by your language environment on a
graphical display, you need to have a suitable font. If some of the
characters appear as empty boxes, you should install the GNU Intlfonts
package, which includes fonts for most supported scripts.@footnote{If
you run Emacs on X, you need to inform the X server about the location
of the newly installed fonts with the following commands:
characters appear as empty boxes or hex codes, you should install the
GNU Intlfonts package, which includes fonts for most supported
scripts.@footnote{If you run Emacs on X, you need to inform the X
server about the location of the newly installed fonts with the
following commands:
@example
xset fp+ /usr/local/share/emacs/fonts
@ -1314,10 +1315,11 @@ characters the font does not cover. The standard fontset is only used if
explicitly requested, despite its name.
A fontset does not necessarily specify a font for every character
code. If a fontset specifies no font for a certain character, or if it
specifies a font that does not exist on your system, then it cannot
display that character properly. It will display that character as an
empty box instead.
code. If a fontset specifies no font for a certain character, or if
it specifies a font that does not exist on your system, then it cannot
display that character properly. It will display that character as a
hex code or thin space or an empty box instead. (@xref{Text Display, ,
glyphless characters}, for details.)
@node Defining Fontsets
@section Defining fontsets

View file

@ -1192,7 +1192,8 @@ specification, or because the specification was inaccurate. For
example, a misconfigured mailer could send a message with a
@samp{charset=iso-8859-1} header when the message is actually encoded
in @code{koi8-r}. When you see the message text garbled, or some of
its characters displayed as empty boxes, this may have happened.
its characters displayed as hex codes or empty boxes, this may have
happened.
@findex rmail-redecode-body
You can correct the problem by decoding the message again using the

View file

@ -594,7 +594,7 @@ headers.
@vindex vc-handled-backends
The variable @code{vc-handled-backends} determines which version
control systems VC should handle. The default value is @code{(RCS CVS
SVN SCCS BZR GIT HG Arch)}, so it contains all the version systems
SVN SCCS Bzr Git Hg Mtn Arch)}, so it contains all the version systems
that are currently supported. If you want VC to ignore one or more of
these systems, exclude its name from the list. To disable VC entirely,
set this variable to @code{nil}.
@ -657,8 +657,8 @@ variable does not affect @kbd{C-x v c}; that operation is so drastic
that it should always ask for confirmation.)
@vindex vc-command-messages
VC mode does much of its work by running the shell commands for RCS,
CVS and SCCS. If @code{vc-command-messages} is non-@code{nil}, VC
VC mode does much of its work by running the shell commands for the
appropriate backend. If @code{vc-command-messages} is non-@code{nil}, VC
displays messages to indicate which shell commands it runs, and
additional messages when the commands finish.

View file

@ -1,3 +1,8 @@
2010-11-13 Glenn Morris <rgm@gnu.org>
* emacs-lisp-intro.texi: Rename the `count-words-region' example,
since there is now a standard command of that name.
2010-10-11 Glenn Morris <rgm@gnu.org>
* Makefile.in (.dvi.ps): Remove unnecessary suffix rule.

View file

@ -704,23 +704,25 @@ Regular Expression Searches
* fwd-para while:: The forward motion @code{while} loop.
Counting: Repetition and Regexps
@set COUNT-WORDS count-words-example
@c Length of variable name chosen so that things still line up when expanded.
* Why Count Words::
* count-words-region:: Use a regexp, but find a problem.
* @value{COUNT-WORDS}:: Use a regexp, but find a problem.
* recursive-count-words:: Start with case of no words in region.
* Counting Exercise::
The @code{count-words-region} Function
The @code{@value{COUNT-WORDS}} Function
* Design count-words-region:: The definition using a @code{while} loop.
* Whitespace Bug:: The Whitespace Bug in @code{count-words-region}.
* Design @value{COUNT-WORDS}:: The definition using a @code{while} loop.
* Whitespace Bug:: The Whitespace Bug in @code{@value{COUNT-WORDS}}.
Counting Words in a @code{defun}
* Divide and Conquer::
* Words and Symbols:: What to count?
* Syntax:: What constitutes a word or symbol?
* count-words-in-defun:: Very like @code{count-words}.
* count-words-in-defun:: Very like @code{@value{COUNT-WORDS}}.
* Several defuns:: Counting several defuns in a file.
* Find a File:: Do you want to look at a file?
* lengths-list-file:: A list of the lengths of many definitions.
@ -13829,35 +13831,37 @@ word count commands using @code{while} loops and recursion.
@menu
* Why Count Words::
* count-words-region:: Use a regexp, but find a problem.
* @value{COUNT-WORDS}:: Use a regexp, but find a problem.
* recursive-count-words:: Start with case of no words in region.
* Counting Exercise::
@end menu
@node Why Count Words, count-words-region, Counting Words, Counting Words
@node Why Count Words, @value{COUNT-WORDS}, Counting Words, Counting Words
@ifnottex
@unnumberedsec Counting words
@end ifnottex
The standard Emacs distribution contains a function for counting the
number of lines within a region. However, there is no corresponding
function for counting words.
The standard Emacs distribution contains functions for counting the
number of lines and words within a region.
Certain types of writing ask you to count words. Thus, if you write
an essay, you may be limited to 800 words; if you write a novel, you
may discipline yourself to write 1000 words a day. It seems odd to me
that Emacs lacks a word count command. Perhaps people use Emacs
mostly for code or types of documentation that do not require word
counts; or perhaps they restrict themselves to the operating system
word count command, @code{wc}. Alternatively, people may follow
the publishers' convention and compute a word count by dividing the
number of characters in a document by five. In any event, here are
commands to count words.
may discipline yourself to write 1000 words a day. It seems odd, but
for a long time, Emacs lacked a word count command. Perhaps people used
Emacs mostly for code or types of documentation that did not require
word counts; or perhaps they restricted themselves to the operating
system word count command, @code{wc}. Alternatively, people may have
followed the publishers' convention and computed a word count by
dividing the number of characters in a document by five.
@node count-words-region, recursive-count-words, Why Count Words, Counting Words
There are many ways to implement a command to count words. Here are
some examples, which you may wish to compare with the standard Emacs
command, @code{count-words-region}.
@node @value{COUNT-WORDS}, recursive-count-words, Why Count Words, Counting Words
@comment node-name, next, previous, up
@section The @code{count-words-region} Function
@findex count-words-region
@section The @code{@value{COUNT-WORDS}} Function
@findex @value{COUNT-WORDS}
A word count command could count words in a line, paragraph, region,
or buffer. What should the command cover? You could design the
@ -13865,7 +13869,7 @@ command to count the number of words in a complete buffer. However,
the Emacs tradition encourages flexibility---you may want to count
words in just a section, rather than all of a buffer. So it makes
more sense to design the command to count the number of words in a
region. Once you have a @code{count-words-region} command, you can,
region. Once you have a command to count words in a region, you can,
if you wish, count words in a whole buffer by marking it with
@w{@kbd{C-x h}} (@code{mark-whole-buffer}).
@ -13876,13 +13880,13 @@ region. This means that word counting is ideally suited to recursion
or to a @code{while} loop.
@menu
* Design count-words-region:: The definition using a @code{while} loop.
* Whitespace Bug:: The Whitespace Bug in @code{count-words-region}.
* Design @value{COUNT-WORDS}:: The definition using a @code{while} loop.
* Whitespace Bug:: The Whitespace Bug in @code{@value{COUNT-WORDS}}.
@end menu
@node Design count-words-region, Whitespace Bug, count-words-region, count-words-region
@node Design @value{COUNT-WORDS}, Whitespace Bug, @value{COUNT-WORDS}, @value{COUNT-WORDS}
@ifnottex
@unnumberedsubsec Designing @code{count-words-region}
@unnumberedsubsec Designing @code{@value{COUNT-WORDS}}
@end ifnottex
First, we will implement the word count command with a @code{while}
@ -13905,7 +13909,9 @@ What we need to do is fill in the slots.
The name of the function should be self-explanatory and similar to the
existing @code{count-lines-region} name. This makes the name easier
to remember. @code{count-words-region} is a good choice.
to remember. @code{count-words-region} is the obvious choice. Since
that name is now used for the standard Emacs command to count words, we
will name our implementation @code{@value{COUNT-WORDS}}.
The function counts words within a region. This means that the
argument list must contain symbols that are bound to the two
@ -13923,7 +13929,7 @@ first, to set up conditions under which the @code{while} loop can
count words, second, to run the @code{while} loop, and third, to send
a message to the user.
When a user calls @code{count-words-region}, point may be at the
When a user calls @code{@value{COUNT-WORDS}}, point may be at the
beginning or the end of the region. However, the counting process
must start at the beginning of the region. This means we will want
to put point there if it is not already there. Executing
@ -14015,7 +14021,7 @@ All this leads to the following function definition:
@smallexample
@group
;;; @r{First version; has bugs!}
(defun count-words-region (beginning end)
(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region.
Words are defined as at least one word-constituent
character followed by at least one character that
@ -14056,14 +14062,14 @@ table determines which characters these are."
@noindent
As written, the function works, but not in all circumstances.
@node Whitespace Bug, , Design count-words-region, count-words-region
@node Whitespace Bug, , Design @value{COUNT-WORDS}, @value{COUNT-WORDS}
@comment node-name, next, previous, up
@subsection The Whitespace Bug in @code{count-words-region}
@subsection The Whitespace Bug in @code{@value{COUNT-WORDS}}
The @code{count-words-region} command described in the preceding
The @code{@value{COUNT-WORDS}} command described in the preceding
section has two bugs, or rather, one bug with two manifestations.
First, if you mark a region containing only whitespace in the middle
of some text, the @code{count-words-region} command tells you that the
of some text, the @code{@value{COUNT-WORDS}} command tells you that the
region contains one word! Second, if you mark a region containing
only whitespace at the end of the buffer or the accessible portion of
a narrowed buffer, the command displays an error message that looks
@ -14084,7 +14090,7 @@ parenthesis and type @kbd{C-x C-e} to install it.
@smallexample
@group
;; @r{First version; has bugs!}
(defun count-words-region (beginning end)
(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region.
Words are defined as at least one word-constituent character followed
by at least one character that is not a word-constituent. The buffer's
@ -14123,12 +14129,12 @@ syntax table determines which characters these are."
If you wish, you can also install this keybinding by evaluating it:
@smallexample
(global-set-key "\C-c=" 'count-words-region)
(global-set-key "\C-c=" '@value{COUNT-WORDS})
@end smallexample
To conduct the first test, set mark and point to the beginning and end
of the following line and then type @kbd{C-c =} (or @kbd{M-x
count-words-region} if you have not bound @kbd{C-c =}):
@value{COUNT-WORDS}} if you have not bound @kbd{C-c =}):
@smallexample
one two three
@ -14139,7 +14145,7 @@ Emacs will tell you, correctly, that the region has three words.
Repeat the test, but place mark at the beginning of the line and place
point just @emph{before} the word @samp{one}. Again type the command
@kbd{C-c =} (or @kbd{M-x count-words-region}). Emacs should tell you
@kbd{C-c =} (or @kbd{M-x @value{COUNT-WORDS}}). Emacs should tell you
that the region has no words, since it is composed only of the
whitespace at the beginning of the line. But instead Emacs tells you
that the region has one word!
@ -14148,7 +14154,7 @@ For the third test, copy the sample line to the end of the
@file{*scratch*} buffer and then type several spaces at the end of the
line. Place mark right after the word @samp{three} and point at the
end of line. (The end of the line will be the end of the buffer.)
Type @kbd{C-c =} (or @kbd{M-x count-words-region}) as you did before.
Type @kbd{C-c =} (or @kbd{M-x @value{COUNT-WORDS}}) as you did before.
Again, Emacs should tell you that the region has no words, since it is
composed only of the whitespace at the end of the line. Instead,
Emacs displays an error message saying @samp{Search failed}.
@ -14157,7 +14163,7 @@ The two bugs stem from the same problem.
Consider the first manifestation of the bug, in which the command
tells you that the whitespace at the beginning of the line contains
one word. What happens is this: The @code{M-x count-words-region}
one word. What happens is this: The @code{M-x @value{COUNT-WORDS}}
command moves point to the beginning of the region. The @code{while}
tests whether the value of point is smaller than the value of
@code{end}, which it is. Consequently, the regular expression search
@ -14191,7 +14197,7 @@ an error if the search fails. The optional fourth argument is a
repeat count. (In Emacs, you can see a function's documentation by
typing @kbd{C-h f}, the name of the function, and then @key{RET}.)
In the @code{count-words-region} definition, the value of the end of
In the @code{@value{COUNT-WORDS}} definition, the value of the end of
the region is held by the variable @code{end} which is passed as an
argument to the function. Thus, we can add @code{end} as an argument
to the regular expression search expression:
@ -14200,7 +14206,7 @@ to the regular expression search expression:
(re-search-forward "\\w+\\W*" end)
@end smallexample
However, if you make only this change to the @code{count-words-region}
However, if you make only this change to the @code{@value{COUNT-WORDS}}
definition and then test the new version of the definition on a
stretch of whitespace, you will receive an error message saying
@samp{Search failed}.
@ -14231,7 +14237,7 @@ true-or-false-test tests true because the value of point is still less
than the value of end, since the @code{re-search-forward} expression
did not move point. @dots{} and the cycle repeats @dots{}
The @code{count-words-region} definition requires yet another
The @code{@value{COUNT-WORDS}} definition requires yet another
modification, to cause the true-or-false-test of the @code{while} loop
to test false if the search fails. Put another way, there are two
conditions that must be satisfied in the true-or-false-test before the
@ -14265,17 +14271,17 @@ succeeds and as a side effect moves point. Consequently, as words are
found, point is moved through the region. When the search expression
fails to find another word, or when point reaches the end of the
region, the true-or-false-test tests false, the @code{while} loop
exits, and the @code{count-words-region} function displays one or
exits, and the @code{@value{COUNT-WORDS}} function displays one or
other of its messages.
After incorporating these final changes, the @code{count-words-region}
After incorporating these final changes, the @code{@value{COUNT-WORDS}}
works without bugs (or at least, without bugs that I have found!).
Here is what it looks like:
@smallexample
@group
;;; @r{Final version:} @code{while}
(defun count-words-region (beginning end)
(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region."
(interactive "r")
(message "Counting words in region ... ")
@ -14309,7 +14315,7 @@ Here is what it looks like:
@end group
@end smallexample
@node recursive-count-words, Counting Exercise, count-words-region, Counting Words
@node recursive-count-words, Counting Exercise, @value{COUNT-WORDS}, Counting Words
@comment node-name, next, previous, up
@section Count Words Recursively
@cindex Count words recursively
@ -14319,7 +14325,7 @@ Here is what it looks like:
You can write the function for counting words recursively as well as
with a @code{while} loop. Let's see how this is done.
First, we need to recognize that the @code{count-words-region}
First, we need to recognize that the @code{@value{COUNT-WORDS}}
function has three jobs: it sets up the appropriate conditions for
counting to occur; it counts the words in the region; and it sends a
message to the user telling how many words there are.
@ -14333,7 +14339,7 @@ other. One function will set up the conditions and display the
message; the other will return the word count.
Let us start with the function that causes the message to be displayed.
We can continue to call this @code{count-words-region}.
We can continue to call this @code{@value{COUNT-WORDS}}.
This is the function that the user will call. It will be interactive.
Indeed, it will be similar to our previous versions of this
@ -14347,7 +14353,7 @@ previous versions:
@smallexample
@group
;; @r{Recursive version; uses regular expression search}
(defun count-words-region (beginning end)
(defun @value{COUNT-WORDS} (beginning end)
"@var{documentation}@dots{}"
(@var{interactive-expression}@dots{})
@end group
@ -14388,7 +14394,7 @@ Using @code{let}, the function definition looks like this:
@smallexample
@group
(defun count-words-region (beginning end)
(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region."
(interactive "r")
@end group
@ -14484,7 +14490,7 @@ Thus, the do-again-test should look like this:
Note that the search expression is part of the do-again-test---the
function returns @code{t} if its search succeeds and @code{nil} if it
fails. (@xref{Whitespace Bug, , The Whitespace Bug in
@code{count-words-region}}, for an explanation of how
@code{@value{COUNT-WORDS}}}, for an explanation of how
@code{re-search-forward} works.)
The do-again-test is the true-or-false test of an @code{if} clause.
@ -14657,7 +14663,7 @@ The wrapper:
@smallexample
@group
;;; @r{Recursive version}
(defun count-words-region (beginning end)
(defun @value{COUNT-WORDS} (beginning end)
"Print number of words in the region.
@end group
@ -14702,11 +14708,11 @@ exclamation mark, and question mark. Do the same using recursion.
Our next project is to count the number of words in a function
definition. Clearly, this can be done using some variant of
@code{count-word-region}. @xref{Counting Words, , Counting Words:
@code{@value{COUNT-WORDS}}. @xref{Counting Words, , Counting Words:
Repetition and Regexps}. If we are just going to count the words in
one definition, it is easy enough to mark the definition with the
@kbd{C-M-h} (@code{mark-defun}) command, and then call
@code{count-word-region}.
@code{@value{COUNT-WORDS}}.
However, I am more ambitious: I want to count the words and symbols in
every definition in the Emacs sources and then print a graph that
@ -14719,7 +14725,7 @@ and this will tell.
* Divide and Conquer::
* Words and Symbols:: What to count?
* Syntax:: What constitutes a word or symbol?
* count-words-in-defun:: Very like @code{count-words}.
* count-words-in-defun:: Very like @code{@value{COUNT-WORDS}}.
* Several defuns:: Counting several defuns in a file.
* Find a File:: Do you want to look at a file?
* lengths-list-file:: A list of the lengths of many definitions.
@ -14793,11 +14799,11 @@ of ten words and symbols.
@noindent
However, if we mark the @code{multiply-by-seven} definition with
@kbd{C-M-h} (@code{mark-defun}), and then call
@code{count-words-region} on it, we will find that
@code{count-words-region} claims the definition has eleven words, not
@code{@value{COUNT-WORDS}} on it, we will find that
@code{@value{COUNT-WORDS}} claims the definition has eleven words, not
ten! Something is wrong!
The problem is twofold: @code{count-words-region} does not count the
The problem is twofold: @code{@value{COUNT-WORDS}} does not count the
@samp{*} as a word, and it counts the single symbol,
@code{multiply-by-seven}, as containing three words. The hyphens are
treated as if they were interword spaces rather than intraword
@ -14805,8 +14811,8 @@ connectors: @samp{multiply-by-seven} is counted as if it were written
@samp{multiply by seven}.
The cause of this confusion is the regular expression search within
the @code{count-words-region} definition that moves point forward word
by word. In the canonical version of @code{count-words-region}, the
the @code{@value{COUNT-WORDS}} definition that moves point forward word
by word. In the canonical version of @code{@value{COUNT-WORDS}}, the
regexp is:
@smallexample
@ -14839,8 +14845,8 @@ Syntax tables specify which characters belong to which categories.
Usually, a hyphen is not specified as a `word constituent character'.
Instead, it is specified as being in the `class of characters that are
part of symbol names but not words.' This means that the
@code{count-words-region} function treats it in the same way it treats
an interword white space, which is why @code{count-words-region}
@code{@value{COUNT-WORDS}} function treats it in the same way it treats
an interword white space, which is why @code{@value{COUNT-WORDS}}
counts @samp{multiply-by-seven} as three words.
There are two ways to cause Emacs to count @samp{multiply-by-seven} as
@ -14853,7 +14859,7 @@ most common character within symbols that is not typically a word
constituent character; there are others, too.
Alternatively, we can redefine the regular expression used in the
@code{count-words} definition so as to include symbols. This
@code{@value{COUNT-WORDS}} definition so as to include symbols. This
procedure has the merit of clarity, but the task is a little tricky.
@need 1200
@ -14910,7 +14916,7 @@ Here is the full regular expression:
@cindex Counting words in a @code{defun}
We have seen that there are several ways to write a
@code{count-word-region} function. To write a
@code{count-words-region} function. To write a
@code{count-words-in-defun}, we need merely adapt one of these
versions.
@ -15044,7 +15050,7 @@ Put together, the @code{count-words-in-defun} definition looks like this:
How to test this? The function is not interactive, but it is easy to
put a wrapper around the function to make it interactive; we can use
almost the same code as for the recursive version of
@code{count-words-region}:
@code{@value{COUNT-WORDS}}:
@smallexample
@group
@ -18885,7 +18891,7 @@ Lisp Reference Manual}.
@itemize @bullet
@item
Install the @code{count-words-region} function and then cause it to
Install the @code{@value{COUNT-WORDS}} function and then cause it to
enter the built-in debugger when you call it. Run the command on a
region containing two words. You will need to press @kbd{d} a
remarkable number of times. On your system, is a `hook' called after
@ -18894,7 +18900,7 @@ Overview, , Command Loop Overview, elisp, The GNU Emacs Lisp Reference
Manual}.)
@item
Copy @code{count-words-region} into the @file{*scratch*} buffer,
Copy @code{@value{COUNT-WORDS}} into the @file{*scratch*} buffer,
instrument the function for Edebug, and walk through its execution.
The function does not need to have a bug, although you can introduce
one if you wish. If the function lacks a bug, the walk-through
@ -18909,7 +18915,7 @@ for commands made outside of the Edebug debugging buffer.)
@item
In the Edebug debugging buffer, use the @kbd{p}
(@code{edebug-bounce-point}) command to see where in the region the
@code{count-words-region} is working.
@code{@value{COUNT-WORDS}} is working.
@item
Move point to some spot further down the function and then type the
@ -22272,6 +22278,3 @@ airplane.
@bye
@ignore
arch-tag: da1a2154-531f-43a8-8e33-fc7faad10acf
@end ignore

View file

@ -1,3 +1,77 @@
2010-12-08 Glenn Morris <rgm@gnu.org>
* buffers.texi (Modification Time):
verify-visited-file-modtime now defaults to the current buffer.
2010-11-27 Chong Yidong <cyd@stupidchicken.com>
* nonascii.texi (Converting Representations): Document byte-to-string.
* strings.texi (Creating Strings): Don't mention semi-obsolete
function char-to-string.
(String Conversion): Shorten discussion of semi-obsolete function
string-to-char. Link to Converting Representations.
* objects.texi (Symbol Type):
* text.texi (Near Point):
* help.texi (Help Functions):
* functions.texi (Mapping Functions): Use string instead of
char-to-string in examples.
2010-11-27 Chong Yidong <cyd@stupidchicken.com>
* text.texi (Kill Functions, Kill Functions)
(Low-Level Kill Ring, Low-Level Kill Ring): Remove obsolete
YANK-HANDLER args.
* symbols.texi (Creating Symbols): Using unintern without an
obarray arg is now obsolete.
* numbers.texi (Float Basics): Document float-e and float-pi.
* variables.texi (Defining Variables): Change "pi" example to
"float-pi".
2010-11-26 Eli Zaretskii <eliz@gnu.org>
* commands.texi (Click Events): Document the values of X, Y and
COL, ROW in the event's position, when the click is on the header
or mode line, on the fringes, or in the margins.
2010-11-17 Eli Zaretskii <eliz@gnu.org>
* customize.texi (Composite Types): Lower-case index entry.
* loading.texi (How Programs Do Loading): Document
load-file-name. (Bug#7346)
2010-11-17 Glenn Morris <rgm@gnu.org>
* text.texi (Kill Functions, Low-Level Kill Ring): Small fixes.
2010-11-13 Eli Zaretskii <eliz@gnu.org>
* display.texi (Usual Display): Characters with no fonts are not
necessarily displayed as empty boxes.
2010-10-31 Glenn Morris <rgm@gnu.org>
* maps.texi (Standard Keymaps): Update File menu description.
2010-10-28 Glenn Morris <rgm@gnu.org>
* Makefile.in (elisp.dvi, elisp.pdf): Also include $emacsdir.
2010-10-24 Eli Zaretskii <eliz@gnu.org>
* display.texi (Window Systems): Deprecate use of window-system as
a predicate.
2010-10-23 Glenn Morris <rgm@gnu.org>
* help.texi (Documentation Basics): Remove mentions of digest-doc and
sorted-doc.
2010-10-15 Eli Zaretskii <eliz@gnu.org>
* os.texi (Dynamic Libraries): New node, with slightly modified

View file

@ -109,7 +109,7 @@ $(infodir)/elisp: $(srcs)
$(MAKEINFO) -o $@ $<
elisp.dvi: $(srcs)
$(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $<
$(TEXI2DVI) -I $(srcdir) -I $(texinfodir) -I $(emacsdir) $<
elisp.html: $(srcs)
$(MAKEINFO) --html -o $@ $<
@ -118,7 +118,7 @@ elisp.ps: elisp.dvi
$(DVIPS) -o $@ $<
elisp.pdf: $(srcs)
$(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $<
$(TEXI2PDF) -I $(srcdir) -I $(texinfodir) -I $(emacsdir) $<
.PHONY: mostlyclean clean distclean maintainer-clean infoclean

View file

@ -1,7 +1,8 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002,
@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
@c 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/buffers
@node Buffers, Windows, Backups and Auto-Saving, Top
@ -594,12 +595,12 @@ therefore checks the file's modification time using the functions
described below before saving the file. (@xref{File Attributes},
for how to examine a file's modification time.)
@defun verify-visited-file-modtime buffer
This function compares what @var{buffer} has recorded for the
modification time of its visited file against the actual modification
time of the file as recorded by the operating system. The two should be
the same unless some other process has written the file since Emacs
visited or saved it.
@defun verify-visited-file-modtime &optional buffer
This function compares what @var{buffer} (by default, the
current-buffer) has recorded for the modification time of its visited
file against the actual modification time of the file as recorded by the
operating system. The two should be the same unless some other process
has written the file since Emacs visited or saved it.
The function returns @code{t} if the last actual modification time and
Emacs's recorded modification time are the same, @code{nil} otherwise.
@ -1223,6 +1224,3 @@ This function returns the current gap position in the current buffer.
This function returns the current gap size of the current buffer.
@end defun
@ignore
arch-tag: 2e53cfab-5691-41f6-b5a8-9c6a3462399c
@end ignore

View file

@ -1285,8 +1285,12 @@ input stream. @xref{Key Sequence Input}.
@item @var{x}, @var{y}
These are the pixel coordinates of the click, relative to
the top left corner of @var{window}, which is @code{(0 . 0)}.
For the mode or header line, @var{y} does not have meaningful data.
For the vertical line, @var{x} does not have meaningful data.
For a click on text, these are relative to the top left corner of
the window's text area. For the mode or header line, they are
relative to the top left window edge. For fringes, margins, and the
vertical border, @var{x} does not have meaningful data. For fringes
and margins, @var{y} is relative to the bottom edge of the header
line.
@item @var{timestamp}
This is the time at which the event occurred, in milliseconds.
@ -1316,7 +1320,12 @@ the window.
@item @var{col}, @var{row}
These are the actual coordinates of the glyph under the @var{x},
@var{y} position, possibly padded with default character width
glyphs if @var{x} is beyond the last glyph on the line.
glyphs if @var{x} is beyond the last glyph on the line. For clicks on
the header or mode line, these are measured from the top left edge of
the header or mode line. For clicks on the fringes and on the
vertical border, these have no meaningful data. For clicks on the
margins, @var{col} is measured from the left edge of the margin area
and @var{row} is measured from the top of the margin area.
@item @var{image}
This is the image object on which the click occurred. It is either
@ -1333,7 +1342,7 @@ left corner of the character glyph clicked on.
These are the pixel width and height of @var{object} or, if this is
@code{nil}, those of the character glyph clicked on.
@end table
@sp 1
For mouse clicks on a scroll-bar, @var{position} has this form:

View file

@ -733,7 +733,7 @@ The value must be a valid color name, and you can do completion with
@node Composite Types
@subsection Composite Types
@cindex Composite Types (customization)
@cindex composite types (customization)
When none of the simple types is appropriate, you can use composite
types, which build new types from other types or from specified data.

View file

@ -5579,9 +5579,9 @@ digit characters representing the character code in octal. (A display
table can specify a glyph to use instead of @samp{\}.)
@item
Multibyte character codes above 256 are displayed as themselves, or as a
question mark or empty box if the terminal cannot display that
character.
Multibyte character codes above 256 are displayed as themselves, or as
a question mark or a hex code or an empty box if the terminal cannot
display that character.
@end itemize
The usual display conventions apply even when there is a display
@ -5928,6 +5928,14 @@ selected frame). The list of possible symbols it returns is the same
one documented for the variable @code{window-system} above.
@end defun
Do @emph{not} use @code{window-system} and
@code{initial-window-system} as predicates or boolean flag variables,
if you want to write code that works differently on text terminals and
graphic displays. That is because @code{window-system} is not a good
indicator of Emacs capabilities on a given display type. Instead, use
@code{display-graphic-p} or any of the other @code{display-*-p}
predicates described in @ref{Display Feature Testing}.
@defvar window-setup-hook
This variable is a normal hook which Emacs runs after handling the
initialization files. Emacs runs this hook after it has completed

View file

@ -1748,6 +1748,15 @@ If @var{frame} is not visible, this function does nothing. The return
value is not significant.
@end defun
@defun frame-pointer-visible-p &optional frame
This predicate function returns non-@code{nil} if the mouse pointer
displayed on @var{frame} is visible; otherwise it returns @code{nil}.
@var{frame} omitted or @code{nil} means the selected frame. This is
useful when @code{make-pointer-invisible} is set to @code{t}: it
allows to know if the pointer has been hidden.
@xref{Mouse Avoidance,,,emacs}.
@end defun
@need 3000
@node Pop-Up Menus

View file

@ -843,7 +843,7 @@ length of @var{sequence}. For example:
@result{} (a c e)
(mapcar '1+ [1 2 3])
@result{} (2 3 4)
(mapcar 'char-to-string "abc")
(mapcar 'string "abc")
@result{} ("a" "b" "c")
@end group

View file

@ -1,7 +1,8 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/help
@node Documentation, Files, Modes, Top
@ -106,12 +107,6 @@ documentation string. The functions @code{documentation} and
documentation string from the appropriate file; this is transparent to
the user.
@c Wordy to prevent overfull hbox. --rjc 15mar92
The @file{emacs/lib-src} directory contains two utilities that you can
use to print nice-looking hardcopy for the file
@file{emacs/etc/DOC-@var{version}}. These are @file{sorted-doc} and
@file{digest-doc}.
@node Accessing Documentation
@section Access to Documentation Strings
@ -551,7 +546,7 @@ follows:
@smallexample
@group
(define-key global-map (char-to-string help-char) 'help-command)
(define-key global-map (string help-char) 'help-command)
(fset 'help-command help-map)
@end group
@end smallexample
@ -701,6 +696,3 @@ echo area at first, and display the longer @var{help-text} strings only
if the user types the help character again.
@end defopt
@ignore
arch-tag: ba36b4c2-e60f-49e2-bc25-61158fdcd815
@end ignore

View file

@ -107,6 +107,10 @@ in @code{load-path}, where @code{nil} stands for the default directory.
@code{load-path}, then all three suffixes in the second directory, and
so on. @xref{Library Search}.
Whatever the name under which the file is eventually found, and the
directory where Emacs found it, Emacs sets the value of the variable
@code{load-file-name} to that file's name.
If you get a warning that @file{foo.elc} is older than @file{foo.el}, it
means you should consider recompiling @file{foo.el}. @xref{Byte
Compilation}.
@ -157,6 +161,12 @@ This variable is non-@code{nil} if Emacs is in the process of loading a
file, and it is @code{nil} otherwise.
@end defvar
@defvar load-file-name
When Emacs is in the process of loading a file, this variable's value
is the name of that file, as Emacs found it during the search
described earlier in this section.
@end defvar
@defvar load-read-function
@anchor{Definition of load-read-function}
@c do not allow page break at anchor; work around Texinfo deficiency.

View file

@ -1,7 +1,8 @@
@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
@c Copyright (C) 1990, 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004,
@c 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
@c 2005, 2006, 2007, 2008, 2009, 2010
@c Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../../info/maps
@node Standard Keymaps, Standard Hooks, Standard Buffer-Local Variables, Top
@ -183,9 +184,9 @@ A sparse keymap used by Lisp mode.
@vindex menu-bar-edit-menu
The keymap which displays the Edit menu in the menu bar.
@item menu-bar-files-menu
@vindex menu-bar-files-menu
The keymap which displays the Files menu in the menu bar.
@item menu-bar-file-menu
@vindex menu-bar-file-menu
The keymap which displays the File menu in the menu bar.
@item menu-bar-help-menu
@vindex menu-bar-help-menu
@ -239,6 +240,3 @@ The keymap defining the contents of the tool bar.
A full keymap used by View mode.
@end table
@ignore
arch-tag: b741253c-7e23-4a02-b3fa-cffd9e4d72b9
@end ignore

View file

@ -199,6 +199,13 @@ unibyte string, it is returned unchanged. Use this function for
characters.
@end defun
@defun byte-to-string byte
@cindex byte to string
This function returns a unibyte string containing a single byte of
character data, @var{character}. It signals a error if
@var{character} is not an integer between 0 and 255.
@end defun
@defun multibyte-char-to-unibyte char
This converts the multibyte character @var{char} to a unibyte
character, and returns that character. If @var{char} is neither

View file

@ -224,6 +224,14 @@ down to an integer.
@end example
@end defun
@defvar float-e
The mathematical constant @math{e} (2.71828@dots{}).
@end defvar
@defvar float-pi
The mathematical constant @math{pi} (3.14159@dots{}).
@end defvar
@node Predicates on Numbers
@section Type Predicates for Numbers
@cindex predicates for numbers

View file

@ -582,7 +582,6 @@ makes it invalid as a number.
@group
foo ; @r{A symbol named @samp{foo}.}
FOO ; @r{A symbol named @samp{FOO}, different from @samp{foo}.}
char-to-string ; @r{A symbol named @samp{char-to-string}.}
@end group
@group
1+ ; @r{A symbol named @samp{1+}}

View file

@ -126,9 +126,8 @@ This function returns a string made up of @var{count} repetitions of
@result{} ""
@end example
Other functions to compare with this one include @code{char-to-string}
(@pxref{String Conversion}), @code{make-vector} (@pxref{Vectors}), and
@code{make-list} (@pxref{Building Lists}).
Other functions to compare with this one include @code{make-vector}
(@pxref{Vectors}) and @code{make-list} (@pxref{Building Lists}).
@end defun
@defun string &rest characters
@ -565,38 +564,6 @@ of text characters and general input events
(@code{single-key-description} and @code{text-char-description}). These
are used primarily for making help messages.
@defun char-to-string character
@cindex character to string
This function returns a new string containing one character,
@var{character}. This function is semi-obsolete because the function
@code{string} is more general. @xref{Creating Strings}.
@end defun
@defun string-to-char string
@cindex string to character
This function returns the first character in @var{string}. If the
string is empty, the function returns 0. The value is also 0 when the
first character of @var{string} is the null character, @acronym{ASCII} code
0.
@example
(string-to-char "ABC")
@result{} 65
(string-to-char "xyz")
@result{} 120
(string-to-char "")
@result{} 0
@group
(string-to-char "\000")
@result{} 0
@end group
@end example
This function may be eliminated in the future if it does not seem useful
enough to retain.
@end defun
@defun number-to-string number
@cindex integer to string
@cindex integer to decimal
@ -657,21 +624,41 @@ this function returns 0.
@findex string-to-int
@code{string-to-int} is an obsolete alias for this function.
@end defun
@defun char-to-string character
@cindex character to string
This function returns a new string containing one character,
@var{character}. This function is semi-obsolete because the function
@code{string} is more general. @xref{Creating Strings}.
@end defun
@defun string-to-char string
This function returns the first character in @var{string}. This
mostly identical to @code{(aref string 0)}, except that it returns 0
if the string is empty. (The value is also 0 when the first character
of @var{string} is the null character, @acronym{ASCII} code 0.) This
function may be eliminated in the future if it does not seem useful
enough to retain.
@end defun
Here are some other functions that can convert to or from a string:
@table @code
@item concat
@code{concat} can convert a vector or a list into a string.
This function converts a vector or a list into a string.
@xref{Creating Strings}.
@item vconcat
@code{vconcat} can convert a string into a vector. @xref{Vector
This function converts a string into a vector. @xref{Vector
Functions}.
@item append
@code{append} can convert a string into a list. @xref{Building Lists}.
This function converts a string into a list. @xref{Building Lists}.
@item byte-to-string
This function converts a byte of character data into a unibyte string.
@xref{Converting Representations}.
@end table
@node Formatting Strings

View file

@ -383,7 +383,7 @@ See @code{documentation} in @ref{Accessing Documentation}, for another
example using @code{mapatoms}.
@end defun
@defun unintern symbol &optional obarray
@defun unintern symbol obarray
This function deletes @var{symbol} from the obarray @var{obarray}. If
@code{symbol} is not actually in the obarray, @code{unintern} does
nothing. If @var{obarray} is @code{nil}, the current obarray is used.

View file

@ -87,7 +87,7 @@ buffer is @samp{@@}:
@example
@group
(char-to-string (char-after 1))
(string (char-after 1))
@result{} "@@"
@end group
@end example
@ -122,9 +122,9 @@ but there is no peace.
@end group
@group
(char-to-string (preceding-char))
(string (preceding-char))
@result{} "a"
(char-to-string (following-char))
(string (following-char))
@result{} "c"
@end group
@end example
@ -866,7 +866,7 @@ adds it to the most recent element. It determines automatically (using
@code{last-command}) whether the previous command was a kill command,
and if so appends the killed text to the most recent entry.
@deffn Command kill-region start end &optional yank-handler
@deffn Command kill-region start end
This function kills the text in the region defined by @var{start} and
@var{end}. The text is deleted but saved in the kill ring, along with
its text properties. The value is always @code{nil}.
@ -874,17 +874,10 @@ its text properties. The value is always @code{nil}.
In an interactive call, @var{start} and @var{end} are point and
the mark.
@c Emacs 19 feature
If the buffer or text is read-only, @code{kill-region} modifies the kill
ring just the same, then signals an error without modifying the buffer.
This is convenient because it lets the user use a series of kill
commands to copy text from a read-only buffer into the kill ring.
If @var{yank-handler} is non-@code{nil}, this puts that value onto
the string of killed text, as a @code{yank-handler} text property.
@xref{Yanking}. Note that if @var{yank-handler} is @code{nil}, any
@code{yank-handler} properties present on the killed text are copied
onto the kill ring, like other text properties.
@end deffn
@defopt kill-read-only-ok
@ -901,10 +894,10 @@ from the buffer. It returns @code{nil}.
The command does not set @code{this-command} to @code{kill-region}, so a
subsequent kill command does not append to the same kill ring entry.
Don't call @code{copy-region-as-kill} in Lisp programs unless you aim to
support Emacs 18. For newer Emacs versions, it is better to use
@code{kill-new} or @code{kill-append} instead. @xref{Low-Level Kill
Ring}.
@c FIXME Why is it better? Why isn't copy-region-as-kill obsolete then?
@c Why is it used in many places in Emacs?
In Lisp programs, it is better to use @code{kill-new} or
@code{kill-append} instead of this command. @xref{Low-Level Kill Ring}.
@end deffn
@node Yanking
@ -1042,8 +1035,8 @@ text property, if there is one.
@subsection Low-Level Kill Ring
These functions and variables provide access to the kill ring at a
lower level, but still convenient for use in Lisp programs, because they
take care of interaction with window system selections
lower level, but are still convenient for use in Lisp programs,
because they take care of interaction with window system selections
(@pxref{Window System Selections}).
@defun current-kill n &optional do-not-move
@ -1069,7 +1062,7 @@ it returns the entry pointed at by the yanking pointer and does not
move the yanking pointer.
@end defun
@defun kill-new string &optional replace yank-handler
@defun kill-new string &optional replace
This function pushes the text @var{string} onto the kill ring and
makes the yanking pointer point to it. It discards the oldest entry
if appropriate. It also invokes the value of
@ -1078,25 +1071,15 @@ if appropriate. It also invokes the value of
If @var{replace} is non-@code{nil}, then @code{kill-new} replaces the
first element of the kill ring with @var{string}, rather than pushing
@var{string} onto the kill ring.
If @var{yank-handler} is non-@code{nil}, this puts that value onto
the string of killed text, as a @code{yank-handler} property.
@xref{Yanking}. Note that if @var{yank-handler} is @code{nil}, then
@code{kill-new} copies any @code{yank-handler} properties present on
@var{string} onto the kill ring, as it does with other text properties.
@end defun
@defun kill-append string before-p &optional yank-handler
@defun kill-append string before-p
This function appends the text @var{string} to the first entry in the
kill ring and makes the yanking pointer point to the combined entry.
Normally @var{string} goes at the end of the entry, but if
@var{before-p} is non-@code{nil}, it goes at the beginning. This
function also invokes the value of @code{interprogram-cut-function}
(see below). This handles @var{yank-handler} just like
@code{kill-new}, except that if @var{yank-handler} is different from
the @code{yank-handler} property of the first entry of the kill ring,
@code{kill-append} pushes the concatenated string onto the kill ring,
instead of replacing the original first entry with it.
(see below).
@end defun
@defvar interprogram-paste-function
@ -4324,6 +4307,4 @@ code that is itself run from a modification hook, then rebind locally
@code{inhibit-modification-hooks} to @code{nil}.
@end defvar
@ignore
arch-tag: 3721e738-a1cb-4085-bc1a-6cb8d8e1d32b
@end ignore

View file

@ -544,21 +544,23 @@ not the buffer-local value. (But you should not be making
buffer-local bindings for a symbol that is defined with
@code{defconst}.)
Here, @code{pi} is a constant that presumably ought not to be changed
by anyone (attempts by the Indiana State Legislature notwithstanding).
As the second form illustrates, however, this is only advisory.
An example of the use of @code{defconst} is Emacs' definition of
@code{float-pi}---the mathematical constant @math{pi}, which ought not
to be changed by anyone (attempts by the Indiana State Legislature
notwithstanding). As the second form illustrates, however,
@code{defconst} is only advisory.
@example
@group
(defconst pi 3.1415 "Pi to five places.")
@result{} pi
(defconst float-pi 3.141592653589793 "The value of Pi.")
@result{} float-pi
@end group
@group
(setq pi 3)
@result{} pi
(setq float-pi 3)
@result{} float-pi
@end group
@group
pi
float-pi
@result{} 3
@end group
@end example

View file

@ -1,3 +1,311 @@
2010-12-06 Tassilo Horn <tassilo@member.fsf.org>
* gnus.texi (Server Commands): Point to the rest of the server
commands.
2010-12-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Paging the Article): Note the reverse meanings of `C-u C-u
g'.
2010-12-02 Julien Danjou <julien@danjou.info>
* gnus.texi (Archived Messages): Remove gnus-outgoing-message-group.
2010-11-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Customizing the IMAP Connection): Note the new defaults.
(Direct Functions): Note the STARTTLS upgrade.
2010-11-27 Glenn Morris <rgm@gnu.org>
James Clark <none@example.com>
* nxml-mode.texi (Introduction): New section.
2010-11-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Server Commands): Document gnus-server-show-server.
2010-11-20 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.2.0.
* trampver.texi: Update release number.
2010-11-19 Jay Belanger <jay.p.belanger@gmail.com>
* calc.texi (TeX and LaTeX Language Modes, Predefined Units):
Mention that the TeX specific units won't use the `tex' prefix
in TeX mode.
2010-11-18 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi (Misc Article): Document gnus-inhibit-images.
2010-11-17 Glenn Morris <rgm@gnu.org>
* edt.texi: Remove information about Emacs 19.
2010-11-17 Michael Albinus <michael.albinus@gmx.de>
* trampver.texi: Update release number.
2010-11-12 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi (Article Washing): Fix typo.
2010-11-11 Noorul Islam <noorul@noorul.com>
* org.texi: Fix typo.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Using capture): Explain that refiling is
sensitive to cursor position.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Images and tables): Add cross reference to link section.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi: Document the <c> cookie.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi: multi-line header arguments :PROPERTIES: :ID:
b77c8857-6c76-4ea9-8a61-ddc2648d96c4 :END:.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (CSS support): Document :HTML_CONTAINER_CLASS: property.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Project alist): Mention that this is a property list.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Setting up the staging area): Document that
file names remain visible when encrypting the MobileOrg files.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Setting up the staging area): Document which
versions are needed for encryption.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi (noweb): Update :noweb documentation to
reflect the new "tangle" argument.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi (Batch execution): Improve tangling script in
documentation.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Handling links):
(In-buffer settings): Document inlining images on startup.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Setting up the staging area): Document use of
crypt password.
2010-11-11 David Maus <dmaus@ictsoc.de>
* org.texi (Template expansion): Add date related link type escapes.
2010-11-11 David Maus <dmaus@ictsoc.de>
* org.texi (Template expansion): Add mew in table for link type
escapes.
2010-11-11 David Maus <dmaus@ictsoc.de>
* org.texi (Template expansion): Fix typo in link type escapes.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi (Structure of code blocks): Another documentation tweak.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi (Structure of code blocks): Documentation tweak.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi (Structure of code blocks):
Update documentation to mention inline code block syntax.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi (comments): Improve wording.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* org.texi (comments): Document the new :comments header arguments.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Installation): Remove the special
installation instructions for XEmacs.
2010-11-11 Jambunathan K <kjambunathan@gmail.com> (tiny change)
* org.texi (Easy Templates): New section. Documents quick
insertion of empty structural elements.
2010-11-11 Noorul Islam <noorul@noorul.com>
* org.texi: Fix doc.
2010-11-11 Jambunathan K <kjambunathan@gmail.com> (tiny change)
* org.texi (The date/time prompt): Document specification
of time ranges.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Internal links): Document the changes in
internal links.
2010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
* org.texi (Agenda commands): Document the limitation for
the filter preset - it can only be used for an entire agenda
view, not in an individual block in a block agenda.
2010-11-11 Eric S Fraga <e.fraga@ucl.ac.uk>
* org.texi (iCalendar export): Document alarm creation.
2010-11-10 Michael Albinus <michael.albinus@gmx.de>
* dbus.texi (Type Conversion): Introduce `:unix-fd' type mapping.
2010-11-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Article Washing): Document gnus-article-treat-non-ascii.
2010-11-09 Jay Belanger <jay.p.belanger@gmail.com>
* calc.texi: Use emacsver.texi to determine Emacs version.
2010-11-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Customizing the IMAP Connection): Remove nnir mention,
since that works by default.
2010-11-03 Kan-Ru Chen <kanru@kanru.info> (tiny change)
* gnus.texi (Customizing the IMAP Connection): Document
`nnimap-expunge' and remove `nnimap-expunge-inbox' from example.
2010-11-04 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi (Remote shell setup): New item "Interactive shell
prompt". Reported by Christian Millour <cm@abtela.com>.
(Remote shell setup, Remote processes): Use @code{} for
environment variables.
2010-11-03 Glenn Morris <rgm@gnu.org>
* ediff.texi (Quick Help Commands, Miscellaneous):
* gnus.texi (Agent Variables, Configuring nnmairix): Spelling fix.
2010-10-31 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Paging the Article): Document C-u g/C-u C-u g.
2010-10-31 Glenn Morris <rgm@gnu.org>
* mh-e.texi (Preface, From Bill Wohler): Change 23 to past tense.
2010-10-31 Glenn Morris <rgm@gnu.org>
* cc-mode.texi: Remove reference to defunct viewcvs URL.
2010-10-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Client-Side IMAP Splitting): Mention
nnimap-unsplittable-articles.
2010-10-29 Julien Danjou <julien@danjou.info>
* gnus.texi (Finding the News): Remove references to obsoletes
variables `gnus-nntp-server' and `gnus-secondary-servers'.
2010-10-29 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (MAKEINFO): Add -I$(emacsdir).
(ENVADD): Remove extra -I$(emacsdir), included in $(MAKEINFO).
($(infodir)/efaq): Remove -I$(emacsdir), included in $(MAKEINFO).
($(infodir)/calc, calc.dvi): Depend on $(emacsdir)/emacsver.texi.
2010-10-28 Glenn Morris <rgm@gnu.org>
* Makefile.in (MAKEINFO, ENVADD): Add $emacsdir to include path.
(($(infodir)/calc, calc.dvi, calc.pdf): Depend on emacsver.texi.
($(infodir)/efaq): Remove -I option now in $MAKEINFO.
2010-10-25 Daiki Ueno <ueno@unixuser.org>
* epa.texi (Mail-mode integration): Add alternative key bindings
for epa-mail commands; escape comma.
Don't use the word "PGP", since it is a non-free program.
2010-10-24 Jay Belanger <jay.p.belanger@gmail.com>
* calc.texi: Use emacsver.texi to determine Emacs version.
2010-10-24 Juanma Barranquero <lekktu@gmail.com>
* gnus.texi (Group Parameters, Buttons): Fix typos.
2010-10-22 Tassilo Horn <tassilo@member.fsf.org>
* gnus.texi (Subscription Commands): Mention that you can also
subscribe to new groups via the Server buffer, which is probably more
convenient when subscribing to many groups.
2010-10-21 Julien Danjou <julien@danjou.info>
* message.texi (Message Headers): Allow message-default-headers to be a
function.
2010-10-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-news.texi: Mention new archive defaults.
2010-10-21 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi (RSS): Remove nnrss-wash-html-in-text-plain-parts.
2010-10-20 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (HTML): Document the function value of
gnus-blocked-images.
(Article Washing): shr and gnus-w3m, not the direct function names.
2010-10-20 Julien Danjou <julien@danjou.info>
* emacs-mime.texi (Flowed text): Add a note about mml-enable-flowed
variable.
2010-10-19 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Customizing the IMAP Connection): The port strings are
strings.
(Document Groups): Mention git.
2010-10-18 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-coding.texi (Gnus Maintainance Guide): Update to mention Emacs
bzr/Gnus git sync.
2010-10-15 Eli Zaretskii <eliz@gnu.org>
* auth.texi (GnuPG and EasyPG Assistant Configuration): Fix last

View file

@ -37,12 +37,12 @@ VPATH=@srcdir@
## Note that the setfilename command in the .texi files assumes this.
infodir=../../info
## Directory with emacsver.texi.
## Currently only used by efaq; could be added to MAKEINFO.
## Currently only used by efaq and calc.
emacsdir = $(srcdir)/../emacs
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
MAKEINFO = makeinfo --force
MAKEINFO = makeinfo --force -I$(emacsdir)
# Also add new entries to INFO_FILES in the top-level Makefile.in.
INFO_TARGETS = \
@ -198,7 +198,7 @@ PDF_TARGETS = \
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
ENVADD = TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
@ -244,12 +244,12 @@ autotype.pdf: ${srcdir}/autotype.texi
$(ENVADD) $(TEXI2PDF) $<
calc : $(infodir)/calc
$(infodir)/calc: calc.texi
$(infodir)/calc: calc.texi $(emacsdir)/emacsver.texi
$(mkinfodir)
cd $(srcdir); $(MAKEINFO) $<
calc.dvi: ${srcdir}/calc.texi
calc.dvi: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $<
calc.pdf: ${srcdir}/calc.texi
calc.pdf: ${srcdir}/calc.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2PDF) $<
ccmode : $(infodir)/ccmode
@ -381,7 +381,7 @@ eudc.pdf: ${srcdir}/eudc.texi
efaq : $(infodir)/efaq
$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
$(mkinfodir)
cd $(srcdir); $(MAKEINFO) -I $(emacsdir) $<
cd $(srcdir); $(MAKEINFO) $<
faq.dvi: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $<
faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi

View file

@ -7,6 +7,8 @@
@setchapternewpage odd
@comment %**end of header (This is for running Texinfo on a region.)
@include emacsver.texi
@c The following macros are used for conditional output for single lines.
@c @texline foo
@c `foo' will appear only in TeX output
@ -88,7 +90,8 @@
This file documents Calc, the GNU Emacs calculator.
@end ifinfo
@ifnotinfo
This file documents Calc, the GNU Emacs calculator, included with GNU Emacs 23.1.
This file documents Calc, the GNU Emacs calculator, included with
GNU Emacs @value{EMACSVER}.
@end ifnotinfo
Copyright @copyright{} 1990, 1991, 2001, 2002, 2003, 2004,
@ -14119,6 +14122,10 @@ but
@texline @math{\sin(2 + x)}.
@infoline @expr{sin(2 + x)}.
The @TeX{} specific unit names (@pxref{Predefined Units}) will not use
the @samp{tex} prefix; the unit name for a @TeX{} point will be
@samp{pt} instead of @samp{texpt}, for example.
Function and variable names not treated specially by @TeX{} and La@TeX{}
are simply written out as-is, which will cause them to come out in
italic letters in the printed document. If you invoke @kbd{d T} or
@ -27987,6 +27994,14 @@ than the point used by @TeX{}), @code{texdd} (a Didot point),
@code{texcc} (a Cicero) and @code{texsp} (a scaled @TeX{} point,
all dimensions representable in @TeX{} are multiples of this value).
When Calc is using the @TeX{} or La@TeX{} language mode (@pxref{TeX
and LaTeX Language Modes}), the @TeX{} specific unit names will not
use the @samp{tex} prefix; the unit name for a @TeX{} point will be
@samp{pt} instead of @samp{texpt}, for example. To avoid conflicts,
the unit names for pint and parsec will simply be @samp{pint} and
@samp{parsec} instead of @samp{pt} and @samp{pc}.
The unit @code{e} stands for the elementary (electron) unit of charge;
because algebra command could mistake this for the special constant
@expr{e}, Calc provides the alternate unit name @code{ech} which is
@ -36582,7 +36597,3 @@ the corresponding full Lisp name is derived by adding a prefix of
@bye
@ignore
arch-tag: 77a71809-fa4d-40be-b2cc-da3e8fb137c0
@end ignore

View file

@ -160,7 +160,8 @@ CC Mode
This manual is for CC Mode in Emacs.
Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@ -201,9 +202,8 @@ developing GNU and promoting software freedom.''
@vskip 0pt plus 1filll
@insertcopying
This manual was generated from cc-mode.texi, which can be downloaded
from
@url{http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/doc/misc/cc-mode.texi}.
This manual was generated from cc-mode.texi, which is distributed with Emacs,
or can be downloaded from @url{http://savannah.gnu.org/projects/emacs/}.
@end titlepage
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@ -7015,6 +7015,3 @@ Since most @ccmode{} variables are prepended with the string
@bye
@ignore
arch-tag: c4cab162-5e57-4366-bdce-4a9db2fc97f0
@end ignore

View file

@ -890,7 +890,8 @@ symbol can be preceeded to the corresponding Lisp object. Basic D-Bus
types are represented by the type symbols @code{:byte},
@code{:boolean}, @code{:int16}, @code{:uint16}, @code{:int32},
@code{:uint32}, @code{:int64}, @code{:uint64}, @code{:double},
@code{:string}, @code{:object-path} and @code{:signature}.
@code{:string}, @code{:object-path}, @code{:signature} and
@code{:unix-fd}.
@noindent
Example:
@ -1009,6 +1010,7 @@ objects.
@item DBUS_TYPE_UINT16 @tab @expansion{} @tab natural number
@item DBUS_TYPE_INT16 @tab @expansion{} @tab integer
@item DBUS_TYPE_UINT32 @tab @expansion{} @tab natural number or float
@item DBUS_TYPE_UNIX_FD @tab @expansion{} @tab natural number or float
@item DBUS_TYPE_INT32 @tab @expansion{} @tab integer or float
@item DBUS_TYPE_UINT64 @tab @expansion{} @tab natural number or float
@item DBUS_TYPE_INT64 @tab @expansion{} @tab integer or float
@ -1024,9 +1026,9 @@ objects.
@end example
A float object in case of @code{DBUS_TYPE_UINT32},
@code{DBUS_TYPE_INT32}, @code{DBUS_TYPE_UINT64} and
@code{DBUS_TYPE_INT6432} is returned, when the C value exceeds the
Emacs number size range.
@code{DBUS_TYPE_INT32}, @code{DBUS_TYPE_UINT64},
@code{DBUS_TYPE_INT64} and @code{DBUS_TYPE_UNIX_FD} is returned, when
the C value exceeds the Emacs number size range.
The resulting list of the last 4 D-Bus compound types contains as
elements the elements of the D-Bus container, mapped according to the

View file

@ -759,7 +759,7 @@ Displays a list of currently active Ediff sessions---the Ediff Registry.
You can then restart any of these sessions by either clicking on a session
record or by putting the cursor over it and then typing the return key.
(Some poor souls leave so many active Ediff sessions around that they loose
(Some poor souls leave so many active Ediff sessions around that they lose
track of them completely... The `R' command is designed to save these
people from the recently discovered Ediff Proficiency Syndrome.)
@ -2315,7 +2315,7 @@ other behavior.
However, Ediff temporarily resets this variable to @code{t} if it is
invoked via one of the "buffer" jobs, such as @code{ediff-buffers}.
This is because it is all too easy to loose day's work otherwise.
This is because it is all too easy to lose a day's work otherwise.
Besides, in a "buffer" job, the variant buffers have already been loaded
prior to starting Ediff, so Ediff just preserves status quo here.
@ -2542,6 +2542,3 @@ Eli Zaretskii (eliz at is.elta.co.il)
@bye
@ignore
arch-tag: 165ecb88-d03c-44b1-a921-b93f50b05b46
@end ignore

View file

@ -63,8 +63,8 @@ of DEC's EDT editor.
@node Overview
@chapter Overview of the EDT Package
This manual describes version 4.0 of the EDT Emulation for Emacs 19 and
above. It comes with special functions which replicate nearly all of
This manual describes version 4.0 of the EDT Emulation for Emacs.
It comes with special functions which replicate nearly all of
EDT's keypad mode behavior. It sets up default keypad and function key
bindings which closely match those found in EDT. Support is provided so
that users may reconfigure most keypad and function key bindings to
@ -152,9 +152,8 @@ You can also invoke @code{edt-set-scroll-margins} interactively while
EDT Emulation is active to change the settings for that session.
@strong{Please note:} Another way to set the scroll margins is to use
the Emacs customization feature (not available in Emacs 19) to set the
following two variables directly: @code{edt-top-scroll-margin} and
@code{edt-bottom-scroll-margin}.
the Emacs customization feature to set the following two variables
directly: @code{edt-top-scroll-margin} and @code{edt-bottom-scroll-margin}.
Enter the Emacs @code{customize} command. First select the
@samp{Editing} group and then select the @samp{Emulations} group.
@ -239,8 +238,7 @@ Provide an easy way to restore @strong{all} original Emacs key bindings,
just as they existed before the EDT emulation was first invoked.
@item
Support GNU Emacs 19 and higher. (GNU Emacs 18 and below is no longer
supported.) XEmacs 19, and above, is also supported.
Support GNU Emacs 19 and higher. XEmacs 19, and above, is also supported.
@item
Supports highlighting of marked text within the EDT emulation on all
@ -933,9 +931,8 @@ You can also invoke @code{edt-set-scroll-margins} interactively while
EDT Emulation is active to change the settings for that session.
@strong{Please note:} Another way to set the scroll margins is to use
the Emacs customization feature (not available in Emacs 19) to set the
following two variables directly: @code{edt-top-scroll-margin} and
@code{edt-bottom-scroll-margin}.
the Emacs customization feature to set the following two variables
directly: @code{edt-top-scroll-margin} and @code{edt-bottom-scroll-margin}.
Enter the Emacs @code{customize} command. First select the
@samp{Editing} group and then select the @samp{Emulations} group.
@ -946,7 +943,3 @@ Finally, select the @samp{Edt} group and follow the directions.
@include doclicense.texi
@bye
@ignore
arch-tag: 1b7ebe01-754b-4834-a12b-f152ef7db9e0
@end ignore

View file

@ -1040,6 +1040,10 @@ flowed text, the default is to wrap after 66 characters. If hard
newline characters are not present in the buffer, no flow encoding
occurs.
You can customize the value of the @code{mml-enable-flowed} variable
to enable or disable the flowed encoding usage when newline
characteres are present in the buffer.
On decoding flowed text, lines with soft newline characters are filled
together and wrapped after the column decided by
@code{fill-flowed-display-column}. The default is to wrap after

View file

@ -306,14 +306,14 @@ Encrypt marked files.
@section Mail-mode integration
EasyPG Assistant provides a minor mode @code{epa-mail-mode} to help
user compose inline PGP messages. Inline PGP is a traditional style
of sending signed/encrypted emails by embedding raw OpenPGP blobs
inside a message body, not using modern MIME format.
user compose inline OpenPGP messages. Inline OpenPGP is a traditional
style of sending signed/encrypted emails by embedding raw OpenPGP
blobs inside a message body, not using modern MIME format.
NOTE: Inline PGP is not recommended and you should consider to use
NOTE: Inline OpenPGP is not recommended and you should consider to use
PGP/MIME. See
@uref{http://josefsson.org/inline-openpgp-considered-harmful.html,
Inline PGP in E-mail is bad, Mm'kay?}.
Inline OpenPGP in E-mail is bad@comma{} Mm'kay?}.
@noindent
Once @code{epa-mail-mode} is enabled, the following keys are assigned.
@ -321,22 +321,26 @@ You can do it by @kbd{C-u 1 M-x epa-mail-mode} or through the Customize
interface. Try @kbd{M-x customize-variable epa-global-mail-mode}.
@table @kbd
@item C-c C-e d
@item C-c C-e C-d and C-c C-e d
@kindex @kbd{C-c C-e C-d}
@kindex @kbd{C-c C-e d}
@findex epa-mail-decrypt
Decrypt OpenPGP armors in the current buffer.
@item C-c C-e v
@item C-c C-e C-v and C-c C-e v
@kindex @kbd{C-c C-e C-v}
@kindex @kbd{C-c C-e v}
@findex epa-mail-verify
Verify OpenPGP cleartext signed messages in the current buffer.
@item C-c C-e s
@item C-c C-e C-s and C-c C-e s
@kindex @kbd{C-c C-e C-s}
@kindex @kbd{C-c C-e s}
@findex epa-mail-sign
Compose a signed message from the current buffer.
@item C-c C-e e
@item C-c C-e C-e and C-c C-e e
@kindex @kbd{C-c C-e C-e}
@kindex @kbd{C-c C-e e}
@findex epa-mail-encrypt
Compose an encrypted message from the current buffer.

View file

@ -288,14 +288,21 @@ Emacs repository might have been lost.
With the inclusion of Gnus 5.10, Miles Bader has set up an Emacs-Gnus
gateway to ensure the bug fixes from Emacs CVS are propagated to Gnus
CVS semi-automatically. These bug fixes are installed on the stable
branch and on the trunk. Basically the idea is that the gateway will
cause all common files in Emacs and Gnus v5-10 to be identical except
when there's a very good reason (e.g., the Gnus version string in Emacs
says @samp{5.11}, but the v5-10 version string remains @samp{5.10.x}).
Furthermore, all changes in these files in either Emacs or the v5-10
branch will be installed into the Gnus CVS trunk, again except where
there's a good reason.
CVS semi-automatically.
After Emacs moved to bzr and Gnus moved to git, Katsumi Yamaoka has
taken over the chore of keeping Emacs and Gnus in sync. In general,
changes made to one repository will usually be replicated in the other
within a few days.
Basically the idea is that the gateway will cause all common files in
Emacs and Gnus v5-13 to be identical except when there's a very good
reason (e.g., the Gnus version string in Emacs says @samp{5.11}, but
the v5-13 version string remains @samp{5.13.x}). Furthermore, all
changes in these files in either Emacs or the v5-13 branch will be
installed into the Gnus git trunk, again except where there's a good
reason.
@c (typically so far the only exception has been that the changes
@c already exist in the trunk in modified form).
Because of this, when the next major version of Gnus will be included in
@ -311,9 +318,9 @@ If it's a file which is thought of as being outside of Gnus (e.g., the
new @file{encrypt.el}), you should probably make the change in the Emacs
tree, and it will show up in the Gnus tree a few days later.
If you don't have Emacs CVS access (or it's inconvenient), you can
If you don't have Emacs bzr access (or it's inconvenient), you can
change such a file in the v5-10 branch, and it should propagate to Emacs
CVS -- however, it will get some extra scrutiny (by Miles) to see if the
bzr -- however, it will get some extra scrutiny (by Miles) to see if the
changes are possibly controversial and need discussion on the mailing
list. Many changes are obvious bug-fixes however, so often there won't
be any problem.
@ -321,12 +328,12 @@ be any problem.
@item
If it's to a Gnus file, and it's important enough that it should be part
of Emacs and the v5-10 branch, then you can make the change on the v5-10
branch, and it will go into Emacs CVS and the Gnus CVS trunk (a few days
branch, and it will go into Emacs bzr and the Gnus git trunk (a few days
later). The most prominent examples for such changes are bug-fixed
including improvements on the documentation.
If you know that there will be conflicts (perhaps because the affected
source code is different in v5-10 and the Gnus CVS trunk), then you can
source code is different in v5-10 and the Gnus git trunk), then you can
install your change in both places, and when I try to sync them, there
will be a conflict -- however, since in most such cases there would be a
conflict @emph{anyway}, it's often easier for me to resolve it simply if
@ -338,9 +345,6 @@ For general Gnus development changes, of course you just make the
change on the Gnus Git trunk and it goes into Emacs a few years
later... :-)
With the new Git repository, we'll probably set up something to
automatically synchronize with Emacs when possible. CVS was much less
powerful for this kind of synchronization.
@end itemize
Of course in any case, if you just can't wait for me to sync your

View file

@ -124,6 +124,9 @@ Customization}.
@itemize @bullet
@item There's now only one variable that determines how @acronym{HTML}
is rendered: @code{mm-text-html-renderer}.
@item Gnus now supports sticky article buffers. Those are article buffers
that are not reused when you select another article. @xref{Sticky
Articles}.
@ -221,6 +224,9 @@ that are accessible from the article buffer.
@item Changes in Message mode
@itemize @bullet
@item Gnus now defaults to saving all outgoing messages in per-month
nnfolder archives.
@item Gnus now supports the ``hashcash'' client puzzle anti-spam mechanism.
Use @code{(setq message-generate-hashcash t)} to enable.
@xref{Hashcash}.

View file

@ -1020,22 +1020,6 @@ Gnus will see whether @code{gnus-nntpserver-file}
If that fails as well, Gnus will try to use the machine running Emacs
as an @acronym{NNTP} server. That's a long shot, though.
@vindex gnus-nntp-server
If @code{gnus-nntp-server} is set, this variable will override
@code{gnus-select-method}. You should therefore set
@code{gnus-nntp-server} to @code{nil}, which is what it is by default.
@vindex gnus-secondary-servers
@vindex gnus-nntp-server
You can also make Gnus prompt you interactively for the name of an
@acronym{NNTP} server. If you give a non-numerical prefix to @code{gnus}
(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers
in the @code{gnus-secondary-servers} list (if any). You can also just
type in the name of any server you feel like visiting. (Note that this
will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x
gnus} later in the same Emacs session, Gnus will contact the same
server.)
@findex gnus-group-browse-foreign-server
@kindex B (Group)
However, if you use one @acronym{NNTP} server regularly and are just
@ -2211,6 +2195,12 @@ selected.
@section Subscription Commands
@cindex subscription
The following commands allow for managing your subscriptions in the
Group buffer. If you want to subscribe to many groups, it's probably
more convenient to go to the @ref{Server Buffer}, and choose the
server there using @kbd{RET} or @kbd{SPC}. Then you'll have the
commands listed in @ref{Browse Foreign Server} at hand.
@table @kbd
@item S t
@ -2409,6 +2399,9 @@ one with the best level.
All groups with a level less than or equal to
@code{gnus-group-default-list-level} will be listed in the group buffer
by default.
This variable can also be a function. In that case, that function will
be called and the result will be used as value.
@vindex gnus-group-list-inactive-groups
If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active
@ -3085,8 +3078,8 @@ The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve,
Top, sieve, Emacs Sieve}.
@item (agent parameters)
If the agent has been enabled, you can set any of the its parameters
to control the behavior of the agent in individual groups. See Agent
If the agent has been enabled, you can set any of its parameters to
control the behavior of the agent in individual groups. See Agent
Parameters in @ref{Category Syntax}. Most users will choose to set
agent parameters in either an agent category or group topic to
minimize the configuration effort.
@ -4563,7 +4556,7 @@ However, you can also create e.g. a new @code{nnmaildir} or @code{nnml}
server exclusively for @code{nnmairix} in your secondary select methods
(@pxref{Finding the News}). If you use a secondary @code{nnml} server
just for mairix, make sure that you explicitly set the server variable
@code{nnml-get-new-mail} to @code{nil}, or you might loose mail
@code{nnml-get-new-mail} to @code{nil}, or you might lose mail
(@pxref{nnmairix caveats}). If you want to use mairix remotely on an
@acronym{IMAP} server, you have to choose the corresponding
@code{nnimap} server here.
@ -5195,24 +5188,6 @@ used for fetching the file.
If fetching from the first site is unsuccessful, Gnus will attempt to go
through @code{gnus-group-faq-directory} and try to open them one by one.
@item H C
@kindex H C (Group)
@findex gnus-group-fetch-control
@vindex gnus-group-fetch-control-use-browse-url
@cindex control message
Fetch the control messages for the group from the archive at
@code{ftp.isc.org} (@code{gnus-group-fetch-control}). Query for a
group if given a prefix argument.
If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil},
Gnus will open the control messages in a browser using
@code{browse-url}. Otherwise they are fetched using @code{ange-ftp}
and displayed in an ephemeral group.
Note that the control messages are compressed. To use this command
you need to turn on @code{auto-compression-mode} (@pxref{Compressed
Files, ,Compressed Files, emacs, The Emacs Manual}).
@item H d
@itemx C-c C-d
@c @icon{gnus-group-describe-group}
@ -6177,9 +6152,10 @@ Scroll the current article one line backward
@findex gnus-summary-show-article
@vindex gnus-summary-show-article-charset-alist
(Re)fetch the current article (@code{gnus-summary-show-article}). If
given a prefix, fetch the current article, but don't run any of the
article treatment functions. This will give you a ``raw'' article, just
the way it came from the server.
given a prefix, show a completely ``raw'' article, just the way it
came from the server. If given a prefix twice (i.e., @kbd{C-u C-u
g'}), fetch the current article, but don't run any of the article
treatment functions.
@cindex charset, view article with different charset
If given a numerical prefix, you can do semi-manual charset stuff.
@ -9688,6 +9664,17 @@ an attempt to provide more quoting characters. If you see something
like @code{\222} or @code{\264} where you're expecting some kind of
apostrophe or quotation mark, then try this wash.
@item W U
@kindex W U (Summary)
@findex gnus-article-treat-non-ascii
@cindex Unicode
@cindex Non-@acronym{ASCII}
Translate many non-@acronym{ASCII} characters into their
@acronym{ASCII} equivalents (@code{gnus-article-treat-non-ascii}).
This is mostly useful if you're on a terminal that has a limited font
and does't show accented characters, ``advanced'' punctuation, and the
like. For instance, @samp{»} is tranlated into @samp{>>}, and so on.
@item W Y f
@kindex W Y f (Summary)
@findex gnus-article-outlook-deuglify-article
@ -9803,19 +9790,16 @@ If a prefix is given, a charset will be asked for. If it is a number,
the charset defined in @code{gnus-summary-show-article-charset-alist}
(@pxref{Paging the Article}) will be used.
@vindex gnus-article-wash-function
The default is to use the function specified by
@code{mm-text-html-renderer} (@pxref{Display Customization, ,Display
Customization, emacs-mime, The Emacs MIME Manual}) to convert the
@acronym{HTML}, but this is controlled by the
@code{gnus-article-wash-function} variable. Pre-defined functions you
can use include:
@acronym{HTML}. Pre-defined functions you can use include:
@table @code
@item mm-shr
@item shr
Use Gnus simple html renderer.
@item gnus-article-html
@item gnus-w3m
Use Gnus rendered based on w3m.
@item w3
@ -12462,15 +12446,22 @@ that's based on @code{w3m}.
@item gnus-blocked-images
@vindex gnus-blocked-images
Images that have @acronym{URL}s that match this regexp won't be
fetched and displayed. For instance, do block all @acronym{URL}s that
have the string ``ads'' in them, do the following:
External images that have @acronym{URL}s that match this regexp won't
be fetched and displayed. For instance, do block all @acronym{URL}s
that have the string ``ads'' in them, do the following:
@lisp
(setq gnus-blocked-images "ads")
@end lisp
The default is to block all external images.
This can also be a function to be evaluated. If so, it will be
called with the group name as the parameter. The default value is
@code{gnus-block-private-groups}, which will return @samp{"."} for
anything that isn't a newsgroup. This means that no external images
will be fetched as a result of reading mail, so that nobody can use
web bugs (and the like) to track whether you've read email.
Also @pxref{Misc Article} for @code{gnus-inhibit-images}.
@item gnus-html-cache-directory
@vindex gnus-html-cache-directory
@ -12952,6 +12943,15 @@ for how to compose such messages. This requires
@uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this
variable is only enabled if you have installed it.
@vindex gnus-inhibit-images
@item gnus-inhibit-images
If this is non-@code{nil}, inhibit displaying of images inline in the
article body. It is effective to images that are in articles as
@acronym{MIME} parts, and images in @acronym{HTML} articles rendered
when @code{mm-text-html-renderer} (@pxref{Display Customization,
,Display Customization, emacs-mime, The Emacs MIME Manual}) is
@code{shr} or @code{gnus-w3m}.
@end table
@ -13342,21 +13342,6 @@ case you should set @code{gnus-message-archive-group} to @code{nil};
this will disable archiving.
@table @code
@item gnus-outgoing-message-group
@vindex gnus-outgoing-message-group
All outgoing messages will be put in this group. If you want to store
all your outgoing mail and articles in the group @samp{nnml:archive},
you set this variable to that value. This variable can also be a list of
group names.
If you want to have greater control over what group to put each
message in, you can set this variable to a function that checks the
current newsgroup name and then returns a suitable group name (or list
of names).
This variable can be used instead of @code{gnus-message-archive-group},
but the latter is the preferred method.
@item gnus-gcc-mark-as-read
@vindex gnus-gcc-mark-as-read
If non-@code{nil}, automatically mark @code{Gcc} articles as read.
@ -13451,14 +13436,20 @@ the headers of the article; if the value is @code{nil}, the header
name will be removed. If the attribute name is @code{eval}, the form
is evaluated, and the result is thrown away.
The attribute value can be a string (used verbatim), a function with
zero arguments (the return value will be used), a variable (its value
will be used) or a list (it will be @code{eval}ed and the return value
will be used). The functions and sexps are called/@code{eval}ed in the
message buffer that is being set up. The headers of the current article
are available through the @code{message-reply-headers} variable, which
is a vector of the following headers: number subject from date id
references chars lines xref extra.
The attribute value can be a string, a function with zero arguments
(the return value will be used), a variable (its value will be used)
or a list (it will be @code{eval}ed and the return value will be
used). The functions and sexps are called/@code{eval}ed in the
message buffer that is being set up. The headers of the current
article are available through the @code{message-reply-headers}
variable, which is a vector of the following headers: number subject
from date id references chars lines xref extra.
In the case of a string value, if the @code{match} is a regular
expression, a @samp{gnus-match-substitute-replacement} is proceed on
the value to replace the positional parameters @samp{\@var{n}} by the
corresponding parenthetical matches (see @xref{Replacing the Text that
Matched, , Text Replacement, elisp, The Emacs Lisp Reference Manual}.)
@vindex message-reply-headers
@ -13834,6 +13825,11 @@ Add a new server (@code{gnus-server-add-server}).
@findex gnus-server-edit-server
Edit a server (@code{gnus-server-edit-server}).
@item S
@kindex S (Server)
@findex gnus-server-show-server
Show the definition of a server (@code{gnus-server-show-server}).
@item SPACE
@kindex SPACE (Server)
@findex gnus-server-read-server
@ -13889,6 +13885,9 @@ hence getting a correct total article count.
@end table
Some more commands for closing, disabling, and re-opening servers are
listed in @ref{Unavailable Servers}.
@node Example Methods
@subsection Example Methods
@ -14442,7 +14441,9 @@ functions is also affected by commonly understood variables
@findex nntp-open-network-stream
@item nntp-open-network-stream
This is the default, and simply connects to some port or other on the
remote system.
remote system. If both Emacs and the server supports it, the
connection will be upgraded to an encrypted @acronym{STARTTLS}
connection automatically.
@findex nntp-open-tls-stream
@item nntp-open-tls-stream
@ -14861,9 +14862,7 @@ Here's an example method that's more complex:
(nnimap-inbox "INBOX")
(nnimap-split-methods default)
(nnimap-expunge t)
(nnimap-stream ssl)
(nnir-search-engine imap)
(nnimap-expunge-inbox t))
(nnimap-stream ssl))
@end example
@table @code
@ -14872,18 +14871,23 @@ The address of the server, like @samp{imap.gmail.com}.
@item nnimap-server-port
If the server uses a non-standard port, that can be specified here. A
typical port would be @samp{imap} or @samp{imaps}.
typical port would be @code{"imap"} or @code{"imaps"}.
@item nnimap-stream
How @code{nnimap} should connect to the server. Possible values are:
@table @code
@item undecided
This is the default, and this first tries the @code{ssl} setting, and
then tries the @code{network} setting.
@item ssl
This is the default, and this uses standard
@acronym{TLS}/@acronym{SSL} connection.
This uses standard @acronym{TLS}/@acronym{SSL} connections.
@item network
Non-encrypted and unsafe straight socket connection.
Non-encrypted and unsafe straight socket connection, but will upgrade
to encrypted @acronym{STARTTLS} if both Emacs and the server
supports it.
@item starttls
Encrypted @acronym{STARTTLS} over the normal @acronym{IMAP} port.
@ -14899,6 +14903,11 @@ what you need.
Some @acronym{IMAP} servers allow anonymous logins. In that case,
this should be set to @code{anonymous}.
@item nnimap-expunge
If non-@code{nil}, expunge articles after deleting them. This is always done
if the server supports UID EXPUNGE, but it's not done by default on
servers that doesn't support that command.
@item nnimap-streaming
Virtually all @code{IMAP} server support fast streaming of data. If
you have problems connecting to the server, try setting this to @code{nil}.
@ -14934,6 +14943,11 @@ use the value of the @code{nnmail-split-methods} variable.
@item nnimap-split-fancy
Uses the same syntax as @code{nnmail-split-fancy}.
@item nnimap-unsplittable-articles
List of flag symbols to ignore when doing splitting. That is,
articles that have these flags won't be considered when splitting.
The default is @samp{(%Deleted %Seen)}.
@end table
@ -17711,15 +17725,6 @@ If you set @code{nnrss-use-local} to @code{t}, @code{nnrss} will read
the feeds from local files in @code{nnrss-directory}. You can use
the command @code{nnrss-generate-download-script} to generate a
download script using @command{wget}.
@item nnrss-wash-html-in-text-plain-parts
Non-@code{nil} means that @code{nnrss} renders text in @samp{text/plain}
parts as @acronym{HTML}. The function specified by the
@code{mm-text-html-renderer} variable (@pxref{Display Customization,
,Display Customization, emacs-mime, The Emacs MIME Manual}) will be used
to render text. If it is @code{nil}, which is the default, text will
simply be folded. Leave it @code{nil} if you prefer to see
@samp{text/html} parts.
@end table
The following code may be helpful, if you want to show the description in
@ -17969,6 +17974,10 @@ A @acronym{MIME} digest of messages.
@item lanl-gov-announce
Announcement messages from LANL Gov Announce.
@cindex git commit messages
@item git
@code{git} commit messages.
@cindex forwarded messages
@item rfc822-forward
A message forwarded according to RFC822.
@ -19856,7 +19865,7 @@ limit to control how often the cycling occurs. A large value improves
performance. A small value minimizes the time lost should the
connection be lost while fetching (You may need to run
@code{gnus-agent-regenerate-group} to update the group's state.
However, all articles parsed prior to loosing the connection will be
However, all articles parsed prior to losing the connection will be
available while unplugged). The default is 10M so it is unusual to
see any cycling.
@ -30096,11 +30105,11 @@ that means:
(setq gnus-read-active-file 'some)
@end lisp
On the other hand, if the manual says ``set @code{gnus-nntp-server} to
@samp{nntp.ifi.uio.no}'', that means:
On the other hand, if the manual says ``set @code{gnus-nntp-server-file} to
@samp{/etc/nntpserver}'', that means:
@lisp
(setq gnus-nntp-server "nntp.ifi.uio.no")
(setq gnus-nntp-server-file "/etc/nntpserver")
@end lisp
So be careful not to mix up strings (the latter) with symbols (the

View file

@ -32,7 +32,7 @@ infodir = $(srcdir)/../../info
emacsdir = $(srcdir)/../emacs
# The makeinfo program is part of the Texinfo distribution.
MAKEINFO = makeinfo --force
MAKEINFO = makeinfo --force -I$(emacsdir)
MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
INFO_TARGETS = $(infodir)/ccmode \
$(infodir)/cl $(infodir)/dbus $(infodir)/dired-x \
@ -70,7 +70,7 @@ INFOSOURCES = info.texi
TEXI2DVI = texi2dvi
ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
"MAKEINFO=$(MAKEINFO) -I$(srcdir) -I$(emacsdir)" /C
"MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
info: $(INFO_TARGETS)
@ -218,7 +218,7 @@ widget.dvi: widget.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/widget.texi
$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
$(MAKEINFO) -I$(emacsdir) faq.texi
$(MAKEINFO) faq.texi
faq.dvi: faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/faq.texi
@ -227,10 +227,10 @@ $(infodir)/autotype: autotype.texi
autotype.dvi: autotype.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/autotype.texi
$(infodir)/calc: calc.texi
$(infodir)/calc: calc.texi $(emacsdir)/emacsver.texi
$(MAKEINFO) calc.texi
calc.dvi: calc.texi
calc.dvi: calc.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/calc.texi
# This is produced with --no-split to avoid making files whose

View file

@ -1450,8 +1450,10 @@ Allegedly.
@item message-default-headers
@vindex message-default-headers
This string is inserted at the end of the headers in all message
buffers.
Header lines to be inserted in outgoing messages before you edit the
message, so you can edit or delete their lines. If set to a string, it
is directly inserted. If set to a function, it is called and its
result is inserted.
@item message-subject-re-regexp
@vindex message-subject-re-regexp

View file

@ -213,7 +213,7 @@ more niceties about GNU Emacs and MH@. Now I'm fully hooked on both of
them.
The MH-E package is distributed with GNU Emacs@footnote{Version
@value{VERSION} of MH-E will appear in GNU Emacs 23.1. It is supported
@value{VERSION} of MH-E appeared in GNU Emacs 23.1. It is supported
in GNU Emacs 21 and 22, as well as XEmacs 21 (except for versions
21.5.9-21.5.16). It is compatible with MH versions 6.8.4 and higher,
all versions of nmh, and GNU mailutils 1.0 and higher.}, so you
@ -8951,8 +8951,8 @@ files that were already part of Emacs) and the software was completely
reorganized to push back two decades of entropy. Version 8 appeared in
Emacs 22.1 in 2006.
Development was then quiet for a couple of years. Emacs 23.1, which is
due out in 2009, will contain version 8.1. This version includes a few
Development was then quiet for a couple of years. Emacs 23.1, released
in June 2009, contains version 8.2. This version includes a few
new features and several bug fixes.
Bill Wohler, August 2008
@ -9061,6 +9061,4 @@ Bill Wohler, August 2008
@c sentence-end-double-space: nil
@c End:
@ignore
arch-tag: b778477d-1a10-4a99-84de-f877a2ea6bef
@end ignore

View file

@ -8,7 +8,8 @@
This manual documents nxml-mode, an Emacs major mode for editing
XML with RELAX NG support.
Copyright @copyright{} 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Copyright @copyright{} 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@ -43,6 +44,7 @@ license to the document, as described in section 6 of the license.
This manual is not yet complete.
@menu
* Introduction::
* Completion::
* Inserting end-tags::
* Paragraphs::
@ -52,6 +54,58 @@ This manual is not yet complete.
* Limitations::
@end menu
@node Introduction
@chapter Introduction
nXML mode is an Emacs major-mode for editing XML documents. It supports
editing well-formed XML documents, and provides schema-sensitive editing
using RELAX NG Compact Syntax. To get started, visit a file containing an
XML document, and, if necessary, use @kbd{M-x nxml-mode} to switch to nXML
mode. By default, @code{auto-mode-alist} and @code{magic-fallback-alist}
put buffers in nXML mode if they have recognizable XML content or file
extensions. You may wish to customize the settings, for example to
recognize different file extensions.
Once in nXML mode, you can type @kbd{C-h m} for basic information on the
mode.
The @file{etc/nxml} directory in the Emacs distribution contains some data
files used by nXML mode, and includes two files (@file{test.valid.xml} and
@file{test.invalid.xml}) that provide examples of valid and invalid XML
documents.
To get validation and schema-sensitive editing, you need a RELAX NG Compact
Syntax (RNC) schema for your document (@pxref{Locating a schema}). The
@file{etc/schema} directory includes some schemas for popular document
types. See @url{http://relaxng.org/} for more information on RELAX NG.
You can use the @samp{Trang} program from
@url{http://www.thaiopensource.com/relaxng/trang.html} to
automatically create RNC schemas. This program can:
@itemize @bullet
@item
infer an RNC schema from an instance document;
@item
convert a DTD to an RNC schema;
@item
convert a RELAX NG XML syntax schema to an RNC schema.
@end itemize
@noindent To convert a RELAX NG XML syntax (@samp{.rng}) schema to a RNC
one, you can also use the XSLT stylesheet from
@url{http://www.pantor.com/download.html}.
To convert a W3C XML Schema to an RNC schema, you need first to convert it
to RELAX NG XML syntax using the RELAX NG converter tool @code{rngconv}
(built on top of MSV). See @url{https://github.com/kohsuke/msv}
and @url{https://msv.dev.java.net/}.
For historical discussions only, see the mailing list archives at
@url{http://groups.yahoo.com/group/emacs-nxml-mode/}. Please make all new
discussions on the @samp{help-gnu-emacs} and @samp{emacs-devel} mailing
lists. Report any bugs with @kbd{M-x report-emacs-bug}.
@node Completion
@chapter Completion
@ -855,6 +909,3 @@ specification are not enforced.
@bye
@ignore
arch-tag: 3b6e8ac2-ae8d-4f38-bd43-ce9f80be04d6
@end ignore

File diff suppressed because it is too large Load diff

View file

@ -1942,7 +1942,7 @@ understand this syntax and will emit a syntax error when it reaches
this line.
Another example is the tilde (@code{~}) character, say when adding
@file{~/bin} to @code{$PATH}. Many Bourne shells will not expand this
@file{~/bin} to @code{PATH}. Many Bourne shells will not expand this
character, and since there is usually no directory whose name consists
of the single character tilde, strange things will happen.
@ -1969,6 +1969,38 @@ shell is Bourne-ish already, then it might be prudent to omit the
@command{exec /bin/sh} step. But how to find out if the shell is
Bourne-ish?
@item Interactive shell prompt
@value{tramp} redefines the shell prompt in order to parse the shell's
output robustly. When calling an interactive shell by @kbd{M-x
shell}, this doesn't look nice.
You can redefine the shell prompt by checking the environment variable
@code{INSIDE_EMACS}, which is set by @value{tramp}, in your startup
script @file{~/.emacs_SHELLNAME}. @code{SHELLNAME} might be the string
@code{bash} or similar, in case of doubt you could set it the
environment variable @code{ESHELL} in your @file{.emacs}:
@lisp
(setenv "ESHELL" "bash")
@end lisp
Your file @file{~/.emacs_SHELLNAME} could contain code like
@example
# Reset the prompt for remote Tramp shells.
if [ "$@{INSIDE_EMACS/*tramp*/tramp@}" == "tramp" ] ; then
PS1="[\u@@\h \w]$ "
fi
@end example
@ifinfo
@ifset emacs
@xref{Interactive Shell, , , @value{emacsdir}}.
@end ifset
@end ifinfo
@end table
@ -2493,7 +2525,7 @@ Adding an entry can be performed via @code{add-to-list}:
Changing or removing an existing entry is not encouraged. The default
values are chosen for proper @value{tramp} work. Nevertheless, if for
example a paranoid system administrator disallows changing the
@var{$HISTORY} environment variable, you can customize
@code{HISTORY} environment variable, you can customize
@code{tramp-remote-process-environment}, or you can apply the
following code in your @file{.emacs}:
@ -2512,7 +2544,7 @@ integrate them as well. @xref{Bug Reports}.
If you want to run a remote program, which shall connect the X11
server you are using with your local host, you can set the
@var{$DISPLAY} environment variable on the remote host:
@code{DISPLAY} environment variable on the remote host:
@lisp
(add-to-list 'tramp-remote-process-environment

View file

@ -9,7 +9,7 @@
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
@set trampver 2.2.0-pre
@set trampver 2.2.0
@c Other flags from configuration
@set instprefix /usr/local
@ -73,7 +73,3 @@
@set emacsotherdir emacs
@set emacsotherfilename tramp-emacs.html
@end ifset
@ignore
arch-tag: e0fe322c-e06b-46eb-bb5b-d091b521f41c
@end ignore

View file

@ -1,3 +1,41 @@
2010-11-27 Ulrich Mueller <ulm@gentoo.org>
* HELLO: Add ancient Greek (Bug#7418).
2010-11-13 Eli Zaretskii <eliz@gnu.org>
* NEWS: Document display of glyphless characters.
2010-11-11 Eric Schulte <schulte.eric@gmail.com>
* refcards/orgcard.tex: Add new Babel key sequences.
2010-10-26 Glenn Morris <rgm@gnu.org>
* images/README: Add (un)checked.xpm
* images/checked.xpm, images/unchecked.xpm: Add copyright.
2010-10-24 Chong Yidong <cyd@stupidchicken.com>
* images/checked.xpm:
* images/unchecked.xpm: New images.
2010-10-24 Richard Stallman <rms@gnu.org>
* DISTRIB: Update donation section.
2010-10-24 Glenn Morris <rgm@gnu.org>
* DISTRIB: Small updates.
2010-10-19 Julien Danjou <julien@danjou.info>
* tutorials/TUTORIAL: Don't mention mode-line end dashes.
2010-10-16 Chong Yidong <cyd@stupidchicken.com>
* themes: New directory for custom theme files, moved from lisp/.
2010-10-14 Juanma Barranquero <lekktu@gmail.com>
* tutorials/TUTORIAL.es: Fix typos.
@ -3325,7 +3363,7 @@
* NEWS: Mention the thumbs.el package.
2004-08-14 Eric Hanchrow <offby1@blarg.net> (tiny change)
2004-08-14 Eric Hanchrow <offby1@blarg.net>
* TUTORIAL.es: Replace actual whitespace with the magic string
that causes help-with-tutorial to automatically insert the correct
@ -5078,12 +5116,11 @@
;; Local Variables:
;; coding: utf-8
;; add-log-time-zone-rule: t
;; End:
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001
2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -5099,5 +5136,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; arch-tag: 094f3a51-bd72-44d0-8fac-2ac242c6c5b1

View file

@ -1,12 +1,9 @@
-*- text -*-
For an order form for all Emacs and FSF distributions deliverable from
the USA, see http://www.gnu.org/order/order.html.
GNU Emacs availability information, October 2000
GNU Emacs availability information
Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995,
1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010 Free Software Foundation, Inc.
See the end of the file for license conditions.
@ -29,31 +26,17 @@ are designed to make sure that everyone who has a copy of GNU Emacs
(including modified versions) has the freedom to redistribute and
change it.
If you do not know anyone to get a copy of GNU Emacs from, you can
order a cd-rom from the Free Software Foundation. We distribute
several Emacs versions. We also distribute nicely typeset copies of
the Emacs user manual, Emacs Lisp Reference Manual, the Emacs
reference card, etc. See http://www.gnu.org/order/order.html.
If you have Internet access, you can copy the latest Emacs
distribution from hosts, such as ftp.gnu.org. There are several ways
to do this; see http://www.gnu.org/software/software.html for more
information.
For information on how to get GNU software, see
http://www.gnu.org/software/software.html. Printed copies of GNU
manuals, including the Emacs manual, are available from the FSF's
online store at http://shop.fsf.org.
Emacs has been run on GNU/Linux, FreeBSD, NetBSD, OpenBSD, and on many
Unix systems, on a variety of types of cpu, as well as on MSDOS,
Windows and MacOS. It also formerly worked on VMS and on Apollo
computers, though with some deficiencies that reflect problems in
these operating systems. See the file `MACHINES' in this directory
(see above) for a full list of machines that GNU Emacs has been tested
Windows and MacOS. See the file `etc/MACHINES' in the Emacs
distribution for a full list of machines that GNU Emacs has been tested
on, with machine-specific installation notes and warnings.
Note that there is significant variation between Unix systems
supposedly running the same version of Unix; it is possible that what
works in GNU Emacs for me does not work on your system due to such an
incompatibility. Since I must avoid reading Unix source code, I
cannot even guess what such problems may exist.
GNU Emacs is distributed with no warranty (see the General Public
License for full details, in the file `COPYING' in this directory (see
above)), and neither I nor the Free Software Foundation promises any
@ -62,14 +45,13 @@ of people who are willing to offer support and assistance for hire.
See http://www.gnu.org/help/gethelp.html.
However, we plan to continue to improve GNU Emacs and keep it
reliable, so please send me any complaints and suggestions you have.
I will probably fix anything that I consider a malfunction. I may
make improvements that are suggested, but I may choose not to.
reliable, so please send us any complaints and suggestions you have.
We will probably fix anything that we consider a malfunction. We may
make improvements that are suggested, but we may choose not to.
If you are on the Internet, report bugs to bug-gnu-emacs@gnu.org. You
can use the Emacs command M-x report-bug RET to mail a bug report.
Please read the Bugs section of the Emacs manual before reporting
bugs.
If you are on the Internet, report bugs to bug-gnu-emacs@gnu.org.
You can use the Emacs command M-x report-bug RET to mail a bug report.
Please read the Bugs section of the Emacs manual before reporting bugs.
General questions about the GNU Project can be asked of gnu@gnu.org.
@ -80,12 +62,14 @@ You should consider making a donation to help support the GNU project;
if you estimate what it would cost to distribute some commercial
product and divide it by five, that is a good amount.
If you like GNU Emacs, please express your satisfaction with a
donation: send me or the Foundation what you feel Emacs has been worth
to you. If you are glad that I developed GNU Emacs and distribute it
as free software, rather than following the obstructive and antisocial
practices typical of software developers, reward me. If you would
like the Foundation to develop more free software, contribute.
If you like GNU Emacs, please express your satisfaction with a donation:
send me (please email me about how) or the Foundation
(https://my.fsf.org/donate) what you feel Emacs has been worth to you.
If you are glad that I developed GNU Emacs and distribute it as free
software, rather than following the obstructive and antisocial
practices of proprietary software, you can reward me. If you would
like the Foundation to do more to forward the cause of free software,
you can contribute.
Your donations will help to support the development of additional GNU
software. GNU/Linux systems (variants of GNU, based on the kernel

View file

@ -33,6 +33,7 @@ French (fran,Ag(Bais) Bonjour / Salut
Georgian ($,1JEJ0J@J7J5J4J:J8(B) $,1J2J0J;J0J@JOJ=J1J0(B
German (Deutsch) Guten Tag / Gr,A|_(B Gott
Greek (,Fekkgmij\(B) ,FCei\(B ,Fsar(B
Greek, ancient ($,1p1,Fkkgmij^(B) ,FO$,1pv,Fk](B ,Fte(B ,Fja$,1q6(B ,Fl]ca(B ,Fwa$,1r6,Fqe(B
Gujarati ($,19W:!9\9p9~9d: (B) $,19h9n9x:-9d:'(B
Hebrew $,1ro(B($,1-",q-(,y-*(B) ,Hylem(B
Hungarian (magyar) Sz,Bi(Bp j,Bs(B napot!

View file

@ -1,13 +1,13 @@
* COPYRIGHT
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010 Free Software Foundation, Inc.
See the end of the file for license conditions.
* Changes in MH-E 8.2
Version 8.2 of MH-E will appear in GNU Emacs 23.1. This is a small
Version 8.2 of MH-E appeared in GNU Emacs 23.1. This is a small
release that includes internal changes from the Emacs team. A new
hook, `mh-pack-folder-hook', has been added.
@ -231,7 +231,7 @@ gatewayed at gmane.org (closes SF #979308).
If you want to see the release notes for the alpha and beta releases
leading up this release, please see:
http://cvs.savannah.gnu.org/viewcvs/emacs/etc/MH-E-NEWS?rev=1.25&root=emacs&view=markup
http://cvs.savannah.gnu.org/viewvc/emacs/emacs/etc/MH-E-NEWS?revision=1.25&view=markup

210
etc/NEWS
View file

@ -37,10 +37,6 @@ You can disable this by configuring --without-compress-info.
These provide no new functionality, they just remove the need to edit
lib-src/Makefile by hand in order to use the associated features.
---
** There is a new configure option --with-crt-dir.
This is only useful if your crt*.o files are in a non-standard location.
---
** Emacs can be compiled against Gtk+ 3.0 if you pass --with-x-toolkit=gtk3
to configure. Note that other libraries used by Emacs, RSVG and GConf,
@ -60,8 +56,8 @@ automatically select it.
* Startup Changes in Emacs 24.1
** The --unibyte, --multibyte, --no-multibyte, and --no-unibyte
command line arguments no longer have any effect. (They were declared
obsolete in Emacs 23.)
command line arguments, and the EMACS_UNIBYTE environment variable, no
longer have any effect. (They were declared obsolete in Emacs 23.)
* Changes in Emacs 24.1
@ -138,7 +134,23 @@ theme when Emacs is built with GTK.
off by customizing x-gtk-use-system-tooltips.
** Lucid menus and dialogs can display antialiased fonts if Emacs is built
with Xft.
with Xft. To change font, use X resource faceName, for example:
Emacs.pane.menubar.faceName: Courier-12
Set faceName to none and use font to use the old X fonts.
+++
** Enhanced support for characters that have no glyphs in available fonts
If a character has no glyphs in any of the available fonts, Emacs by
default will display it either as a hexadecimal code in a box or as a
thin 1-pixel space. In addition to these two methods, Emacs can
display these characters as empty box, as an acronym, or not display
them at all. To change how these characters are displayed, customize
the variable `glyphless-char-display-control'.
On character terminals these methods are used for characters that
cannot be encoded by the `terminal-coding-system'.
** On graphical displays, the mode-line no longer ends in dashes.
** Basic SELinux support has been added.
This requires Emacs to be linked with libselinux at build time.
@ -183,7 +195,7 @@ for `list-colors-display'.
** An Emacs Lisp package manager is now included.
This is a convenient way to download and install additional packages,
from elpa.gnu.org.
from a package repository at elpa.gnu.org.
*** `M-x list-packages' shows a list of packages, which can be
selected for installation.
@ -199,13 +211,26 @@ loaded, customize `package-load-list'.
*** `M-x customize-themes' lists Custom themes which can be enabled.
*** New option `custom-theme-load-path' is the load path for themes.
Emacs no longer looks for custom themes in `load-path'. The default
is to search in `custom-theme-directory', followed by a built-in theme
directory named "themes/" in `data-directory'.
** The user option `remote-file-name-inhibit-cache' controls whether
the remote file-name cache is used for read access.
** The standalone programs lib-src/digest-doc and sorted-doc have been
replaced with Lisp commands `doc-file-to-man' and `doc-file-to-info'.
* Editing Changes in Emacs 24.1
** completion-at-point is now an alias for complete-symbol.
+++
** There is a new command `count-words-region', which does what you expect.
** completion-at-point now handles tags and semantic completion.
** The default value of `backup-by-copying-when-mismatch' is now t.
** Deletion changes
@ -215,8 +240,8 @@ and no prefix argument is given. If set to `kill', these commands
kill instead.
*** New command `delete-forward-char', bound to C-d and [delete].
This is meant for interactive use, and obeys `delete-active-region';
delete-char, meant for Lisp, does not obey `delete-active-region'.
This is meant for interactive use, and obeys `delete-active-region'.
The command `delete-char' does not obey `delete-active-region'.
*** `delete-backward-char' is now a Lisp function.
Apart from obeying `delete-active-region', its behavior is unchanged.
@ -228,76 +253,73 @@ should use delete-char with a negative argument instead.
** Selection changes.
The default handling of clipboard and primary selections has been
changed to conform with other X applications.
changed to conform with other X applications. The exact changes are
described below; in short, mouse commands to select and paste text now
use the primary selection, while all other commands for killing and
yanking text now use the clipboard.
The new behavior is that by default Emacs does not put text into the
clipboard, and does not add it to kill-ring, merely because the text
was selected. Only commands that kill text or copy it to the
kill-ring (C-w, M-w, C-k, etc.) put the killed text into the
clipboard. Selected text is put into the primary selection (on
systems, such as X, that support the primary selection separately from
the clipboard).
*** Merely selecting text (e.g. with drag-mouse-1) does not add it to
the kill-ring. On systems with a primary selection separate from the
clipboard (such as X), the selected text is put in the primary
selection.
Similarly, Emacs by default does not retrieve text from the clipboard
when the mouse (e.g., mouse-2) is used for pasting text selected in
another application. Text from the clipboard is retrieved only by
C-y, M-y and other commands that yank text from the kill-ring. Mouse
commands that paste text retrieve text from the primary selection, on
systems that support it separately from the clipboard.
*** mouse-2 is now bound to `mouse-yank-primary', which pastes from
the primary selection regardless of the contents of the kill-ring.
In other words, the default behavior is that mouse gestures that
select and paste text work with the primary selection, while keyboard
commands that kill/copy and paste text work with the clipboard.
*** Commands that kill text or copy it to the kill-ring (M-w, C-w,
C-k, etc.) also put the killed text into the clipboard. This change
also means that the "Copy", "Cut", and "Paste" items in the "Edit"
menu are now exactly equivalent to, respectively M-w, C-w, and C-y.
This change also means that the "Copy", "Cut", and "Paste" items of
the menu-bar "Edit" menu are now exactly equivalent to, respectively
M-w, C-w, and C-y.
*** Yank commands, such as C-y and M-y, retrieve text from the
clipboard if it is available.
To get back the previous behavior, whereby mouse gestures set the
clipboard and retrieve text from there, customize the variables
`mouse-drag-copy-region' and (on X only) `x-select-enable-primary'.
If you don't want Emacs to put the text into the clipboard, only to
the primary selection, additionally customize
`x-select-enable-clipboard' to nil.
These changes in the default behavior are reflected in the default
values of several variables:
*** `select-active-regions' now defaults to t, so active regions set
the primary selection. It was nil in previous versions.
*** The above changes are reflected in the following new defaults:
**** `select-active-regions' now defaults to t.
It also accepts a new value, `only', which means to only set the
primary selection for temporarily active regions (usually made by
mouse-dragging or shift-selection).
*** `mouse-2' is now bound to `mouse-yank-primary'.
**** `mouse-2' is now bound to `mouse-yank-primary'.
Previously, it was bound to `mouse-yank-at-click' (which is now
unbound by default.
unbound by default).
*** `x-select-enable-clipboard' now defaults to t on all platforms.
Thus, killing and yanking now use the clipboard (in addition to the
kill ring). Note that this variable was already non-nil by default on
MS-Windows, which does not support the primary selection between
applications.
**** `x-select-enable-clipboard' now defaults to t on all platforms.
Note that this variable was already non-nil by default on MS-Windows,
which does not support the primary selection between applications.
*** `x-select-enable-primary' now defaults to nil.
**** `x-select-enable-primary' now defaults to nil.
This variable exists only on X; its default value was t in previous
versions.
*** `mouse-drag-copy-region' now defaults to nil.
Its previous default value was t.
**** `mouse-drag-copy-region' now defaults to nil.
*** To return to the previous behavior, where mouse commands use the
clipboard, change `mouse-drag-copy-region' and (on X only)
`x-select-enable-primary' to t. If you don't want Emacs to put the
text into the clipboard, only to the primary selection, additionally
set `x-select-enable-clipboard' to nil.
*** Support for X cut buffers has been removed.
* Changes in Specialized Modes and Packages in Emacs 24.1
** shell-mode can track your cwd by reading it from your prompt.
Just set shell-dir-cookie-re to an appropriate regexp.
** Modula-2 mode provides auto-indentation.
** latex-electric-env-pair-mode keeps \begin..\end matched on the fly.
** FIXME: xdg-open for browse-url and reportbug, 2010/08.
** Archive Mode has basic support to browse 7z archives.
** browse-url has gotten a new variable that is used for mailto: URLs,
`browse-url-mailto-function', which defaults to `browse-url-mail'.
** ERC changes
*** New vars `erc-autojoin-timing' and `erc-autojoin-delay'.
@ -306,6 +328,11 @@ successful NickServ identification, or after `erc-autojoin-delay'
seconds. The default value, 'ident, means to autojoin immediately
after connecting.
*** New variable `erc-coding-system-precedence': If we use `undecided'
as the server coding system, this variable will then be consulted.
The default is to decode strings that can be decoded as utf-8 as
utf-8, and do the normal `undecided' decoding for the rest.
** In ido-mode, C-v is no longer bound to ido-toggle-vc.
The reason is that this interferes with cua-mode.
@ -316,6 +343,8 @@ You can get a comparable behavior with:
** mpc.el: Can use pseudo tags of the form tag1|tag2 as a union of two tags.
** server can listen on a specific port using the server-port option.
** Calendar, Diary, and Appt
---
@ -335,7 +364,7 @@ view-diary-entries, list-diary-entries, show-all-diary-entries
*** Customize buffers now contain a search field.
The search is performed using `customize-apropos'.
To turn off the search field, set custom-search-field to nil .
To turn off the search field, set custom-search-field to nil.
*** Custom options now start out hidden if at their default values.
Use the arrow to the left of the option name to toggle visibility.
@ -350,41 +379,6 @@ choose a color via list-colors-display.
*** dired-jump and dired-jump-other-window called with a prefix argument
read a file name from the minibuffer instead of using buffer-file-name.
** VC and related modes
*** New VC commands: vc-log-incoming, vc-log-outgoing, vc-find-conflicted-file.
**** vc-log-incoming for Git runs "git fetch" so that the necessary
data is available locally.
**** vc-log-incoming and vc-log-outgoing for Git require version 1.7 (or newer).
*** New key bindings: C-x v I and C-x v O bound to vc-log-incoming and
vc-log-outgoing, respectively.
*** The 'g' key in VC diff, log, log-incoming and log-outgoing buffers
reruns the corresponding VC command to compute an up to date version
of the buffer.
*** vc-dir for Bzr supports viewing shelve contents and shelving snapshots.
*** Special markup can be added to log-edit buffers.
The log-edit buffers are expected to have a format similar to email messages
with headers of the form:
Author: <author of this change>
Summary: <one line summary of this change>
Fixes: <reference to the bug fixed by this change>
Some backends handle some of those headers specially, but any unknown header
is just left as is in the message, so it is not lost.
**** vc-git handles Author: and Date:
**** vc-hg handles Author: and Date:
**** vc-bzr handles Author:, Date: and Fixes:
**** vc-mtn handles Author: and Date:
*** Pressing g in a *vc-diff* buffer reruns vc-diff, so it will
produce an up to date diff.
** Directory local variables can apply to file-less buffers.
For example, adding "(diff-mode . ((mode . whitespace)))" to your
.dir-locals.el file, will turn on `whitespace-mode' for *vc-diff* buffers.
@ -551,15 +545,32 @@ system or session bus.
*** The following access methods are discontinued: "ssh1_old",
"ssh2_old", "scp1_old", "scp2_old" and "fish".
** VC and related modes
*** Support for pulling on distributed version control systems.
The vc-update command now runs a "pull" operation, if it is supported.
This updates the current branch from upstream. A prefix argument
means to prompt the user for command specifics, e.g. a pull location.
**** vc-pull is an alias for vc-update.
**** Currently supported by Bzr.
*** Support for merging on distributed version control systems.
The vc-merge command now runs a "merge" operation, if it is supported.
This merges another branch into the current one. A prefix argument
means to prompt the user for command specifics, e.g. a merge location.
**** Currently supported by Bzr.
* New Modes and Packages in Emacs 24.1
** New global minor modes electric-pair-mode and electric-indent-mode.
** New global minor modes electric-pair-mode, electric-indent-mode,
and electric-layout-mode.
** pcase.el provides the ML-style pattern matching macro `pcase'.
** smie.el is a package providing a simple generic indentation engine.
** secrets.el is an implementation of the Secret Service API, an
interface to password managers like GNOME Keyring or KDE Wallet. The
Secret Service API requires D-Bus for communication. The command
@ -572,6 +583,13 @@ Notifications API. It requires D-Bus for communication.
* Incompatible Lisp Changes in Emacs 24.1
** For mouse click input events in the text area, the Y pixel
coordinate in the POSITION list now counts from the top of the text
area, excluding any header line. Previously, it counted from the top
of the header line.
** Remove obsolete name `e' (use `float-e' instead).
** A backquote not followed by a space is now always treated as new-style.
** Test for special mode-class was moved from view-file to view-buffer.
@ -615,6 +633,8 @@ font-lock-defaults-alist
** The following files, obsolete since at least Emacs 21.1, have been removed:
sc.el, x-menu.el, rnews.el, rnewspost.el
** FIXME finder-inf.el changes.
* Lisp changes in Emacs 24.1
@ -650,6 +670,12 @@ argument is supplied (see Trash changes, above).
** New completion style `substring'.
** `facemenu-read-color' is now an alias for `read-color'.
The command `read-color' now requires a match for a color name or RGB
triplet, instead of signalling an error if the user provides a invalid
input.
** Image API
*** When the image type is one of listed in `image-animated-types'

View file

@ -235,7 +235,7 @@ Various new commands and features exist; see the Emacs manual.
* Nroff mode and TeX mode.
The are two new major modes for editing nroff input and TeX input.
There are two new major modes for editing nroff input and TeX input.
See the Emacs manual for full information.
* New C indentation style variable `c-brace-imaginary-offset'.

View file

@ -21,9 +21,6 @@ with a prefix argument or by typing C-u C-h C-n.
* Changes in Emacs 23.3
** The nextstep port can have different modifiers for the left and right
alt/option key by customizing the value for ns-right-alternate-modifier.
* Editing Changes in Emacs 23.3
@ -34,6 +31,42 @@ alt/option key by customizing the value for ns-right-alternate-modifier.
** The appt-add command takes an optional argument for the warning time.
This can be used in place of the default appt-message-warning-time.
---
** You can allow inferior Python processes to load modules from the
current directory by setting `python-remove-cwd-from-path' to nil.
** VC and related modes
*** New VC command `vc-log-incoming', bound to `C-x v I'.
This shows a log of changes to be received with a pull operation.
For Git, this runs "git fetch" to make the necessary data available
locally; this requires version 1.7 or newer.
*** New VC command `vc-log-outgoing', bound to `C-x v O'.
This shows a log of changes to be sent in the next commit.
*** New VC command vc-find-conflicted-file.
+++
*** The 'g' key in VC diff, log, log-incoming and log-outgoing buffers
reruns the corresponding VC command to compute an up to date version
of the buffer.
*** vc-dir for Bzr supports viewing shelve contents and shelving snapshots.
+++
*** Special markup can be added to log-edit buffers.
You can add headers specifying additional information to be supplied
to the version control system. For example:
Author: J. R. Hacker <jrh@example.com>
Fixes: 4204
Actual text of log entry...
Bazaar recognizes the headers "Author", "Date" and "Fixes".
Git, Mercurial, and Monotone recognize "Author" and "Date".
Any unknown header is left as is in the message, so it is not lost.
** Obsolete packages
+++
@ -42,21 +75,44 @@ This can be used in place of the default appt-message-warning-time.
* New Modes and Packages in Emacs 23.3
** smie.el is a generic navigation and indentation engine.
It takes a simple BNF description of the grammar, and provides both
sexp-style navigation (jumping over begin..end pairs) as well as
indentation, which can be adjusted via ad-hoc indentation rules.
* Incompatible Lisp Changes in Emacs 23.3
** posn-col-row now excludes the header line from the row count
If the frame has a header line, posn-col-row will count row numbers
starting from the first line of text below the header line.
* Lisp changes in Emacs 23.3
+++
** `e' and `pi' are now called `float-e' and `float-pi'.
The old names are obsolete.
** The use of unintern without an obarray arg is declared obsolete.
+++
** The use of unintern without an obarray arg is now obsolete.
---
** The function `princ-list' is now obsolete.
+++
** The yank-handler argument to kill-region and friends is now obsolete.
+++
** New function byte-to-string, like char-to-string but for bytes.
* Changes in Emacs 23.3 on non-free operating systems
+++
** The nextstep port can have different modifiers for the left and right
alt/option key by customizing the value for ns-right-alternate-modifier.
* Installation Changes in Emacs 23.2

View file

@ -235,19 +235,18 @@ necessary but missing, please report it via M-x report-emacs-bug.
On platforms such as Solaris, you can also work around this problem by
configuring your compiler to use the native linker instead of GNU ld.
** Emacs compiled with Gtk+ crashes when closing a display (x-close-connection).
** When Emacs is compiled with Gtk+, closing a display kills Emacs.
This happens because of bugs in Gtk+. Gtk+ 2.10 seems to be OK. See bug
http://bugzilla.gnome.org/show_bug.cgi?id=85715.
There is a long-standing bug in GTK that prevents it from recovering
from disconnects: http://bugzilla.gnome.org/show_bug.cgi?id=85715.
** Emacs compiled with Gtk+ may loop forever if a display crashes.
Thus, for instance, when Emacs is run as a server on a text terminal,
and an X frame is created, and the X server for that frame crashes or
exits unexpectedly, Emacs must exit to prevent a GTK error that would
result in an endless loop.
This is related to the bug above. A scenario for this is when emacs is run
as a server, and an X frame is created. If the X server for the frame
crashes or exits unexpectedly and an attempt is made to create a new
frame on another X display, then a Gtk+ error happens in the emacs
server that results in an endless loop. This is not fixed in any known
Gtk+ version (2.14.4 being current).
If you need Emacs to be able to recover from closing displays, compile
it with the Lucid toolkit instead of GTK.
* General runtime problems

View file

@ -35,6 +35,10 @@ Files: splash.png, splash.svg
Author: Francesc Rocher <rocher@member.fsf.org>
Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
Files: checked.xpm, unchecked.xpm
Author: Chong Yidong <cyd@stupidchicken.com>
Copyright (C) 2010 Free Software Foundation, Inc.
* The following icons are from GTK+ 2.x. They are not part of Emacs, but
are distributed and used by Emacs. They are licensed under the

39
etc/images/checked.xpm Normal file
View file

@ -0,0 +1,39 @@
/* XPM */
/* Copyright (C) 2010 Free Software Foundation, Inc.
*
* Author: Chong Yidong <cyd@stupidchicken.com>
*
* 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/>.
*/
static char * checked_xpm[] = {
"12 12 5 1",
" c None",
". c gray20",
"+ c white",
"@ c gray70",
"# c black",
"............",
"............",
"..@@@@@@##+.",
"..@@@@@@##+.",
"..#@@@@##@+.",
"..##@@@##@+.",
"..###@##@@+.",
"..@#####@@+.",
"..@@###@@@+.",
"..@++##++++.",
".@+++++++++.",
"............"};

39
etc/images/unchecked.xpm Normal file
View file

@ -0,0 +1,39 @@
/* XPM */
/* Copyright (C) 2010 Free Software Foundation, Inc.
*
* Author: Chong Yidong <cyd@stupidchicken.com>
*
* 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/>.
*/
static char * unchecked_xpm[] = {
"12 12 5 1",
" c None",
". c gray20",
"+ c white",
"@ c gray70",
"# c black",
"............",
"............",
"..@@@@@@@@+.",
"..@@@@@@@@+.",
"..@@@@@@@@+.",
"..@@@@@@@@+.",
"..@@@@@@@@+.",
"..@@@@@@@@+.",
"..@@@@@@@@+.",
"..@++++++++.",
".@+++++++++.",
"............"};

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{7.01}
\def\orgversionnumber{7.3}
\def\versionyear{2010} % latest update
\def\year{2010} % latest copyright year
@ -480,14 +480,18 @@ formula, \kbd{:=} a field formula.
\key{view expanded body of code block at point}{C-c C-v v}
\key{go to named code block}{C-c C-v g}
\key{go to named result}{C-c C-v r}
\key{go to the head of the current code block}{C-c C-v u}
\key{go to the next code block}{C-c C-v n}
\key{go to the previous code block}{C-c C-v p}
\key{demarcate a code block}{C-c C-v d}
\key{execute the next key sequence in the code edit buffer}{C-c C-v x}
\key{execute all code blocks in current buffer}{C-c C-v b}
\key{execute all code blocks in current subtree}{C-c C-v s}
\key{tangle code blocks in current file}{C-c C-v t}
\key{tangle code blocks in supplied file}{C-c C-v f}
\key{ingest all code blocks in supplied file into the Library of Babel}{C-c C-v l}
\key{ingest all code blocks in supplied file into the Library of Babel}{C-c C-v i}
\key{switch to the session of the current code block}{C-c C-v z}
\key{load expanded body of the current code block into a session}{C-c C-v l}
\key{view sha1 hash of the current code block}{C-c C-v a}
% \section{Remember-mode Integration}

View file

@ -22,7 +22,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. -->
<uri pattern="*.html" typeId="XHTML"/>
<uri pattern="*.rng" typeId="RELAX NG"/>
<uri pattern="*.rdf" typeId="RDF"/>
<namespace ns="http://www.w3.org/1999/XSL/Transform" typeId="XSLT"/>
<namespace ns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" typeId="RDF"/>
<namespace ns="http://www.w3.org/1999/xhtml" typeId="XHTML"/>
@ -39,10 +39,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. -->
<documentElement prefix="" localName="article" typeId="DocBook"/>
<documentElement prefix="" localName="book" typeId="DocBook"/>
<documentElement prefix="" localName="chapter" typeId="DocBook"/>
<documentElement prefix="" localName="part" typeId="DocBook"/>
<documentElement prefix="" localName="refentry" typeId="DocBook"/>
<documentElement prefix="" localName="section" typeId="DocBook"/>
<documentElement localName="RDF" typeId="RDF"/>
<documentElement prefix="rdf" typeId="RDF"/>
<documentElement localName="locatingRules" uri="locate.rnc"/>
<typeId id="XSLT" uri="xslt.rnc"/>

View file

@ -498,12 +498,12 @@ you save, Emacs leaves the original file under a changed name in case
you later decide that your changes were a mistake.
If you look near the bottom of the screen you will see a line that
begins and ends with dashes, and starts with "--:--- TUTORIAL" or
something like that. This part of the screen normally shows the name
of the file that you are visiting. Right now, you are visiting a file
called "TUTORIAL" which is your personal scratch copy of the Emacs
tutorial. When you find a file with Emacs, that file's name will
appear in that precise spot.
begins with dashes, and starts with "--:--- TUTORIAL" or something
like that. This part of the screen normally shows the name of the
file that you are visiting. Right now, you are visiting a file called
"TUTORIAL" which is your personal scratch copy of the Emacs tutorial.
When you find a file with Emacs, that file's name will appear in that
precise spot.
One special thing about the command for finding a file is that you
have to say what file name you want. We say the command "reads an

View file

@ -1,3 +1,33 @@
2010-11-27 Joe Matarazzo <joe.matarazzo@gmail.com> (tiny change)
* ebrowse.c (yylex): If end of input buffer encountered while
searching for a newline after "//", return YYEOF. (Bug#7446)
2010-11-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* emacsclient.c (set_local_socket) [DARWIN_OS]: Add fall-back
definition of _CS_DARWIN_USER_TEMP_DIR for Mac OS X 10.4 and older.
2010-11-15 Dan Nicolaescu <dann@ics.uci.edu>
* test-distrib.c: Remove include guards for config.h and fcntl.h.
(O_RDONLY): Do not define.
(cool_read): Fix type for variable "sofar".
2010-10-25 Glenn Morris <rgm@gnu.org>
* makefile.w32-in (OTHER_PLATFORM_SUPPORT): Remove easymenu.elc.
2010-10-23 Glenn Morris <rgm@gnu.org>
* digest-doc.c, sorted-doc.c: Remove files.
* Makefile.in (UTILITIES): Remove digest-doc and sorted-doc.
(digest-doc${EXEEXT}, sorted-doc${EXEEXT}): Remove rules.
* makefile.w32-in (ALL): Remove digest-doc and sorted-doc.
($(BLD)/sorted-doc.exe, $(BLD)/digest-doc.exe, sorted-doc, digest-doc)
($(BLD)/digest-doc.$(O), $(BLD)/sorted-doc.$(O)): Remove rules.
(install): Don't install digest-doc.exe or sorted-doc.exe.
2010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
* Makefile.in (PROFILING_LDFLAGS): Remove, not needed.
@ -5376,10 +5406,10 @@
(main): Improve usage message.
(error): Write to stderr, not stdout.
* b2m.c cvtmail.c digest-doc.c emacsclient.c emacsserver.c etags.c
fakemail.c hexl.c make-docfile.c profile.c sorted-doc.c test-distrib.c
timer.c wakeup.c yow.c: Eliminate some -Wall warnings from unused
variables and implicitly declared functions.
* b2m.c, cvtmail.c, digest-doc.c, emacsclient.c, emacsserver.c:
* etags.c, fakemail.c, hexl.c, make-docfile.c, profile.c, sorted-doc.c:
* test-distrib.c, timer.c, wakeup.c, yow.c: Eliminate some -Wall
warnings from unused variables and implicitly declared functions.
1994-10-11 Richard Stallman <rms@mole.gnu.ai.mit.edu>

View file

@ -118,8 +118,7 @@ STAMP_INST_SCRIPTS = stamp-rcs-checkin stamp-grep-changelog
# Things that Emacs runs internally, or during the build process,
# which should not be installed in bindir.
UTILITIES = profile${EXEEXT} digest-doc${EXEEXT} sorted-doc${EXEEXT} \
movemail${EXEEXT} fakemail${EXEEXT} \
UTILITIES = profile${EXEEXT} movemail${EXEEXT} fakemail${EXEEXT} \
hexl${EXEEXT} update-game-score${EXEEXT}
DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT}
@ -353,12 +352,6 @@ make-docfile${EXEEXT}: ${srcdir}/make-docfile.c ../src/config.h
$(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) \
-o make-docfile
digest-doc${EXEEXT}: ${srcdir}/digest-doc.c
$(CC) ${ALL_CFLAGS} ${srcdir}/digest-doc.c $(LOADLIBES) -o digest-doc
sorted-doc${EXEEXT}: ${srcdir}/sorted-doc.c
$(CC) ${ALL_CFLAGS} ${srcdir}/sorted-doc.c $(LOADLIBES) -o sorted-doc
movemail${EXEEXT}: movemail.o pop.o $(GETOPTDEPS)
$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} movemail.o pop.o \
$(GETOPTOBJS) $(LOADLIBES) $(LIBS_MOVE) -o movemail

View file

@ -1,81 +0,0 @@
/* Give this program DOC-mm.nn.oo as standard input and it outputs to
standard output a file of nroff output containing the doc strings.
Copyright (C) 1987, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010 Free Software Foundation, Inc.
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/>.
See also sorted-doc.c, which produces similar output
but in texinfo format and sorted by function/variable name. */
#include <stdio.h>
#ifdef DOS_NT
#include <fcntl.h> /* for O_BINARY */
#include <io.h> /* for setmode */
#endif
int
main (void)
{
register int ch;
register int notfirst = 0;
#ifdef DOS_NT
/* DOC is a binary file. */
if (!isatty (fileno (stdin)))
setmode (fileno (stdin), O_BINARY);
#endif
printf (".TL\n");
printf ("Command Summary for GNU Emacs\n");
printf (".AU\nRichard M. Stallman\n");
while ((ch = getchar ()) != EOF)
{
if (ch == '\037')
{
if (notfirst)
printf ("\n.DE");
else
notfirst = 1;
printf ("\n.SH\n");
ch = getchar ();
printf (ch == 'F' ? "Function " : "Variable ");
while ((ch = getchar ()) != '\n') /* Changed this line */
{
if (ch != EOF)
putchar (ch);
else
{
ungetc (ch, stdin);
break;
}
}
printf ("\n.DS L\n");
}
else
putchar (ch);
}
return 0;
}
/* arch-tag: 2ba2c9b0-4157-4eba-bd9f-967e3677e35f
(do not change this comment) */

View file

@ -1700,6 +1700,11 @@ yylex (void)
case '/':
while (GET (c) && c != '\n')
;
/* Don't try to read past the end of the input buffer if
the file ends in a C++ comment without a newline. */
if (c == 0)
return YYEOF;
INCREMENT_LINENO;
break;

View file

@ -1225,6 +1225,9 @@ set_local_socket (void)
if (!tmpdir)
{
#ifdef DARWIN_OS
#ifndef _CS_DARWIN_USER_TEMP_DIR
#define _CS_DARWIN_USER_TEMP_DIR 65537
#endif
size_t n = confstr (_CS_DARWIN_USER_TEMP_DIR, NULL, (size_t) 0);
if (n > 0)
{

View file

@ -18,7 +18,7 @@
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacsclient
ALL = make-docfile hexl ctags etags movemail ebrowse emacsclient
.PHONY: $(ALL)
@ -36,10 +36,6 @@ $(BLD)/hexl.exe: $(BLD)/hexl.$(O)
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/hexl.$(O) $(LIBS)
$(BLD)/fakemail.exe: $(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O)
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O) $(LIBS)
$(BLD)/sorted-doc.exe: $(BLD)/sorted-doc.$(O)
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/sorted-doc.$(O) $(LIBS)
$(BLD)/digest-doc.exe: $(BLD)/digest-doc.$(O)
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/digest-doc.$(O) $(LIBS)
$(BLD)/test-distrib.exe: $(BLD)/test-distrib.$(O)
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/test-distrib.$(O) $(LIBS)
@ -50,8 +46,6 @@ ebrowse: stamp_BLD $(BLD)/ebrowse.exe
hexl: stamp_BLD $(BLD)/hexl.exe
movemail: stamp_BLD $(BLD)/movemail.exe
fakemail: stamp_BLD $(BLD)/fakemail.exe
sorted-doc: stamp_BLD $(BLD)/sorted-doc.exe
digest-doc: stamp_BLD $(BLD)/digest-doc.exe
emacsclient: stamp_BLD $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe
test-distrib: stamp_BLD $(BLD)/test-distrib.exe
@ -195,7 +189,6 @@ OTHER_PLATFORM_SUPPORT = \
$(lispsource)term/pc-win.elc \
$(lispsource)x-dnd.elc \
$(lispsource)term/x-win.elc \
$(lispsource)emacs-lisp/easymenu.elc \
$(lispsource)term/ns-win.elc
@ -335,8 +328,6 @@ install: $(INSTALL_FILES)
$(CP) $(BLD)/ctags.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/hexl.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/movemail.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/sorted-doc.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/digest-doc.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/emacsclient.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/emacsclientw.exe $(INSTALL_DIR)/bin
- mkdir "$(INSTALL_DIR)/etc"
@ -404,9 +395,6 @@ $(BLD)/ctags.$(O) : \
$(SRC)/ntlib.h \
$(SRC)/getopt.h
$(BLD)/digest-doc.$(O) : \
$(SRC)/digest-doc.c
$(BLD)/emacsclient.$(O) : \
$(SRC)/emacsclient.c \
$(EMACS_ROOT)/src/s/ms-w32.h \
@ -496,12 +484,6 @@ $(BLD)/profile.$(O) : \
$(BLD)/qsort.$(O) : \
$(SRC)/qsort.c
$(BLD)/sorted-doc.$(O) : \
$(SRC)/sorted-doc.c \
$(EMACS_ROOT)/src/s/ms-w32.h \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/src/config.h
$(BLD)/tcp.$(O) : \
$(SRC)/tcp.c
@ -519,8 +501,6 @@ $(BLD)/timer.$(O) : \
#
$(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O): stamp_BLD
$(BLD)/sorted-doc.$(O) $(BLD)/digest-doc.$(O): stamp_BLD
$(BLD)/test-distrib.$(O) $(GETOPTOBJS) $(MOVEMAILOBJS): stamp_BLD
$(BLD)/emacsclient.$(O) $(BLD)/etags.$(O) $(BLD)/regex.$(O): stamp_BLD

View file

@ -1,296 +0,0 @@
/* Give this program DOC-mm.nn.oo as standard input and it outputs to
standard output a file of texinfo input containing the doc strings.
Copyright (C) 1989, 1992, 1994, 1996, 1999, 2000, 2001, 2002, 2003,
2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
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/>. */
/* This version sorts the output by function name. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <ctype.h>
#ifdef DOS_NT
#include <fcntl.h> /* for O_BINARY */
#include <io.h> /* for setmode */
#endif
#ifndef HAVE_STDLIB_H /* config.h includes stdlib. */
#ifndef WINDOWSNT /* src/s/ms-w32.h includes stdlib.h */
extern char *malloc ();
#endif
#endif
#define NUL '\0'
#define MARKER '\037'
#define DEBUG 0
typedef struct line LINE;
struct line
{
LINE *next; /* ptr to next or NULL */
char *line; /* text of the line */
};
typedef struct docstr DOCSTR;
struct docstr /* Allocated thing for an entry. */
{
DOCSTR *next; /* next in the chain */
char *name; /* name of the function or var */
LINE *first; /* first line of doc text. */
char type; /* 'F' for function, 'V' for variable */
};
/* Print error message. `s1' is printf control string, `s2' is arg for it. */
void
error (const char *s1, const char *s2)
{
fprintf (stderr, "sorted-doc: ");
fprintf (stderr, s1, s2);
fprintf (stderr, "\n");
}
/* Print error message and exit. */
void
fatal (const char *s1, const char *s2)
{
error (s1, s2);
exit (EXIT_FAILURE);
}
/* Like malloc but get fatal error if memory is exhausted. */
char *
xmalloc (int size)
{
char *result = malloc ((unsigned)size);
if (result == NULL)
fatal ("%s", "virtual memory exhausted");
return result;
}
char *
xstrdup (const char *str)
{
char *buf = xmalloc (strlen (str) + 1);
(void) strcpy (buf, str);
return (buf);
}
/* Comparison function for qsort to call. */
int
cmpdoc (const void *va, const void *vb)
{
DOCSTR *const *a = va;
DOCSTR *const *b = vb;
register int val = strcmp ((*a)->name, (*b)->name);
if (val) return val;
return (*a)->type - (*b)->type;
}
enum state
{
WAITING, BEG_NAME, NAME_GET, BEG_DESC, DESC_GET
};
const char *states[] =
{
"WAITING", "BEG_NAME", "NAME_GET", "BEG_DESC", "DESC_GET"
};
int
main (void)
{
register DOCSTR *dp = NULL; /* allocated DOCSTR */
register LINE *lp = NULL; /* allocated line */
register char *bp; /* ptr inside line buffer */
register enum state state = WAITING; /* state at start */
int cnt = 0; /* number of DOCSTRs read */
DOCSTR *docs = NULL; /* chain of allocated DOCSTRS */
char buf[512]; /* line buffer */
#ifdef DOS_NT
/* DOC is a binary file. */
if (!isatty (fileno (stdin)))
setmode (fileno (stdin), O_BINARY);
#endif
bp = buf;
while (1) /* process one char at a time */
{
/* this char from the DOCSTR file */
register int ch = getchar ();
/* Beginnings */
if (state == WAITING)
{
if (ch == MARKER)
state = BEG_NAME;
}
else if (state == BEG_NAME)
{
cnt++;
if (dp == NULL) /* first dp allocated */
{
docs = dp = (DOCSTR*) xmalloc (sizeof (DOCSTR));
}
else /* all the rest */
{
dp->next = (DOCSTR*) xmalloc (sizeof (DOCSTR));
dp = dp->next;
}
lp = NULL;
dp->next = NULL;
bp = buf;
state = NAME_GET;
/* Record whether function or variable. */
dp->type = ch;
ch = getchar ();
}
else if (state == BEG_DESC)
{
if (lp == NULL) /* first line for dp */
{
dp->first = lp = (LINE*)xmalloc (sizeof (LINE));
}
else /* continuing lines */
{
lp->next = (LINE*)xmalloc (sizeof (LINE));
lp = lp->next;
}
lp->next = NULL;
bp = buf;
state = DESC_GET;
}
/* process gets */
if (state == NAME_GET || state == DESC_GET)
{
if (ch != MARKER && ch != '\n' && ch != EOF)
{
*bp++ = ch;
}
else /* saving and changing state */
{
*bp = NUL;
bp = xstrdup (buf);
if (state == NAME_GET)
dp->name = bp;
else
lp->line = bp;
bp = buf;
state = (ch == MARKER) ? BEG_NAME : BEG_DESC;
}
} /* NAME_GET || DESC_GET */
if (ch == EOF)
break;
}
{
DOCSTR **array;
register int i; /* counter */
/* build array of ptrs to DOCSTRs */
array = (DOCSTR**)xmalloc (cnt * sizeof (*array));
for (dp = docs, i = 0; dp != NULL ; dp = dp->next)
array[i++] = dp;
/* sort the array by name; within each name, by type */
qsort ((char*)array, cnt, sizeof (DOCSTR*), cmpdoc);
/* write the output header */
printf ("\\input texinfo @c -*-texinfo-*-\n");
printf ("@setfilename ../info/summary\n");
printf ("@settitle Command Summary for GNU Emacs\n");
printf ("@finalout\n");
printf ("@unnumbered Command Summary for GNU Emacs\n");
printf ("@table @asis\n");
printf ("\n");
printf ("@iftex\n");
printf ("@global@let@ITEM@item\n");
printf ("@def@item{@filbreak@vskip5pt@ITEM}\n");
printf ("@font@tensy cmsy10 scaled @magstephalf\n");
printf ("@font@teni cmmi10 scaled @magstephalf\n");
printf ("@def\\{{@tensy@char110}}\n"); /* this backslash goes with cmr10 */
printf ("@def|{{@tensy@char106}}\n");
printf ("@def@{{{@tensy@char102}}\n");
printf ("@def@}{{@tensy@char103}}\n");
printf ("@def<{{@teni@char62}}\n");
printf ("@def>{{@teni@char60}}\n");
printf ("@chardef@@64\n");
printf ("@catcode43=12\n");
printf ("@tableindent-0.2in\n");
printf ("@end iftex\n");
/* print each function from the array */
for (i = 0; i < cnt; i++)
{
printf ("\n@item %s @code{%s}\n@display\n",
array[i]->type == 'F' ? "Function" : "Variable",
array[i]->name);
for (lp = array[i]->first; lp != NULL ; lp = lp->next)
{
for (bp = lp->line; *bp; bp++)
{
/* the characters "@{}" need special treatment */
if (*bp == '@' || *bp == '{' || *bp == '}')
{
putchar('@');
}
putchar(*bp);
}
putchar ('\n');
}
printf("@end display\n");
/* Try to avoid a save size overflow in the TeX output
routine. */
if (i%100 == 0 && i > 0 && i != cnt)
printf("\n@end table\n@table @asis\n");
}
printf ("@end table\n");
printf ("@bye\n");
}
return EXIT_SUCCESS;
}
/* arch-tag: ce28f204-1e70-4b34-8210-3d54a5662071
(do not change this comment) */
/* sorted-doc.c ends here */

View file

@ -19,24 +19,14 @@ You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifndef O_RDONLY
#define O_RDONLY 0
#endif
/* Break string in two parts to avoid buggy C compilers that ignore characters
after nulls in strings. */
@ -55,7 +45,7 @@ int
cool_read (int fd, char *buf, size_t size)
{
ssize_t num;
size_t sofar = 0;
ssize_t sofar = 0;
while (1)
{

View file

@ -11494,7 +11494,7 @@
* net/zone-mode.el (zone-mode): Use write-file-functions, not
write-file-hooks.
2003-12-29 Eric Hanchrow <offby1@blarg.net> (tiny change)
2003-12-29 Eric Hanchrow <offby1@blarg.net>
* autorevert.el (auto-revert-interval): Doc fix.
@ -12922,7 +12922,7 @@
* emacs-lisp/tq.el (tq-create): Fix mixed up unquote style.
2003-09-12 Eric Hanchrow <offby1@blarg.net> (tiny change)
2003-09-12 Eric Hanchrow <offby1@blarg.net>
* dired.el (dired-mode-map): Fix typo.

View file

@ -2528,7 +2528,7 @@
* files.el (find-alternate-file): Revert query message to Emacs 21
version.
2007-01-20 Eric Hanchrow <offby1@blarg.net> (tiny change)
2007-01-20 Eric Hanchrow <offby1@blarg.net>
* progmodes/cperl-mode.el (cperl-electric-keywords): Document in
the doc string how to use personal abbrevs without electric keywords.
@ -7791,7 +7791,7 @@
* textmodes/table.el: Add move-beginning-of-line and
move-end-of-line to Point Motion Only Group.
2006-07-22 Eric Hanchrow <offby1@blarg.net> (tiny change)
2006-07-22 Eric Hanchrow <offby1@blarg.net>
* progmodes/delphi.el (delphi-fill-comment): Use save-restriction.
@ -12997,8 +12997,8 @@
2006-02-13 Mathias Dahl <mathias.dahl@gmail.com>
* tumme.el: Remove history section. If someone needs the it, it
can always be found in CVS.
* tumme.el: Remove history section. If someone needs it, it can
always be found in CVS.
2006-02-12 Mathias Dahl <mathias.dahl@gmail.com>
@ -20588,7 +20588,7 @@
* progmodes/gud.el (gud-speedbar-menu-items): Use :visible
instead of :active.
2005-10-08 Eric Hanchrow <offby1@blarg.net> (tiny change)
2005-10-08 Eric Hanchrow <offby1@blarg.net>
* textmodes/ispell.el (ispell-check-version):
Ignore hyphen, and all that follows, in aspell's version text.
@ -29165,7 +29165,7 @@
* jit-lock.el (jit-lock-stealth-time): Change default value to 16.
(jit-lock-stealth-nice): Change default value to 0.5.
2005-04-23 Eric Hanchrow <offby1@blarg.net> (tiny change)
2005-04-23 Eric Hanchrow <offby1@blarg.net>
* abbrev.el (write-abbrev-file): Write table entries in
alphabetical order by table name.

View file

@ -6680,8 +6680,9 @@
buffer if the parent buffer is in vc-dired-mode.
2007-11-23 Mark A. Hershberger <mah@everybody.org>
James Clark <none@example.com>
* nxml: Initial merge of nxml. Kept nxml/char-name subdir for now.
* nxml/: Initial merge of nxml. Kept nxml/char-name subdir for now.
2007-11-23 Juri Linkov <juri@jurta.org>
@ -13493,7 +13494,7 @@
* menu-bar.el (menu-bar-vc-filter): New function.
(menu-bar-tools-menu): Use it as a filter.
2007-08-01 Eric Hanchrow <offby1@blarg.net> (tiny change)
2007-08-01 Eric Hanchrow <offby1@blarg.net>
* ibuf-ext.el (ibuffer-mark-old-buffers): Docstring fix.
@ -16693,10 +16694,9 @@ See ChangeLog.12 for earlier changes.
;; Local Variables:
;; coding: utf-8
;; add-log-time-zone-rule: t
;; End:
Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -16712,5 +16712,3 @@ See ChangeLog.12 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;; arch-tag: 1e8aa93a-fc6c-4ac3-9b10-1f445e1840af

View file

@ -2148,7 +2148,7 @@
* emacs-lisp/find-func.el (find-library-name, find-library):
Doc fixes. (Part of bug#2270)
2009-02-10 Eric Hanchrow <eric.hanchrow@gmail.com> (tiny change)
2009-02-10 Eric Hanchrow <eric.hanchrow@gmail.com>
* env.el (getenv): When FRAME is non-nil, pass the frame environment
to `getenv-internal', not the frame. (Bug#2259)
@ -6518,7 +6518,7 @@
(hl-line-unhighlight, global-hl-line-unhighlight): Use `when'.
(hl-line-sticky-flag): Remove spurious * in docstring.
2008-10-14 Eric Hanchrow <offby1@blarg.net> (tiny change)
2008-10-14 Eric Hanchrow <offby1@blarg.net>
* vc-git.el (vc-git-show-log-entry): Include the revision in the
search string.

View file

@ -1034,8 +1034,8 @@
2001-09-18 Eli Zaretskii <eliz@is.elta.co.il>
* dired.el (dired-move-to-filename-regexp): Allow one digit in the
numeric month value, and allow the Kanji character after the it to
be missing (happens with ls-lisp's output on Japanese versions of
numeric month value, and allow the Kanji character after it to be
missing (happens with ls-lisp's output on Japanese versions of
MS-Windows).
2001-09-18 Miles Bader <miles@gnu.org>

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
;;; abbrev.el --- abbrev mode commands for Emacs
;; Copyright (C) 1985, 1986, 1987, 1992, 2001, 2002, 2003, 2004,
;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 1985, 1986, 1987, 1992, 2001, 2002, 2003, 2004, 2005,
;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: abbrev convenience
@ -57,18 +57,10 @@ define global abbrevs instead."
"Toggle Abbrev mode in the current buffer.
With optional argument ARG, turn abbrev mode on if ARG is
positive, otherwise turn it off. In Abbrev mode, inserting an
abbreviation causes it to expand and be replaced by its expansion.")
abbreviation causes it to expand and be replaced by its expansion."
;; It's defined in C, this stops the d-m-m macro defining it again.
:variable abbrev-mode)
(defcustom abbrev-mode nil
"Enable or disable Abbrev mode.
Non-nil means automatically expand abbrevs as they are inserted.
Setting this variable with `setq' changes it for the current buffer.
Changing it with \\[customize] sets the default value.
Interactively, use the command `abbrev-mode'
to enable or disable Abbrev mode in the current buffer."
:type 'boolean
:group 'abbrev-mode)
(put 'abbrev-mode 'safe-local-variable 'booleanp)
@ -927,5 +919,4 @@ SORTFUN is passed to `sort' to change the default ordering."
(provide 'abbrev)
;; arch-tag: dbd6f3ae-dfe3-40ba-b00f-f9e3ff960df5
;;; abbrev.el ends here

View file

@ -1,12 +1,12 @@
;;; allout.el --- extensive outline mode for use alone and with other modes
;; Copyright (C) 1992, 1993, 1994, 2001, 2002, 2003, 2004, 2005,
;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 1992, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: Ken Manheimer <ken dot manheimer at gmail dot com>
;; Maintainer: Ken Manheimer <ken dot manheimer at gmail dot com>
;; Created: Dec 1991 -- first release to usenet
;; Version: 2.2.1
;; Version: 2.2.2
;; Keywords: outlines wp languages
;; Website: http://myriadicity.net/Sundry/EmacsAllout
@ -98,21 +98,145 @@
;;;_* USER CUSTOMIZATION VARIABLES:
;;;_ > defgroup allout
;;;_ > defgroup allout, allout-keybindings
(defgroup allout nil
"Extensive outline mode for use alone and with other modes."
:prefix "allout-"
:group 'outlines)
(defgroup allout-keybindings nil
"Allout outline mode keyboard bindings configuration."
:group 'allout)
;;;_ + Layout, Mode, and Topic Header Configuration
;;;_ = allout-command-prefix
(defvar allout-command-prefix) ; defined below
(defvar allout-mode-map)
;;;_ > allout-keybindings incidentals:
;;;_ > allout-bind-keys &optional varname value
(defun allout-bind-keys (&optional varname value)
"Rebuild the `allout-mode-map' according to the keybinding specs.
Useful standalone, to init the map, or in customizing the
respective allout-mode keybinding variables, `allout-command-prefix',
`allout-prefixed-keybindings', and `allout-unprefixed-keybindings'"
;; Set the customization variable, if any:
(when varname
(set-default varname value))
(let ((map (make-sparse-keymap))
key)
(when (boundp 'allout-prefixed-keybindings)
;; Be tolerant of the moments when the variables are first being defined.
(dolist (entry allout-prefixed-keybindings)
(define-key map
;; XXX vector vs non-vector key descriptions?
(vconcat allout-command-prefix
(car (read-from-string (car entry))))
(cadr entry))))
(when (boundp 'allout-unprefixed-keybindings)
(dolist (entry allout-unprefixed-keybindings)
(define-key map (car (read-from-string (car entry))) (cadr entry))))
(setq allout-mode-map map)
map
))
;;;_ = allout-command-prefix
(defcustom allout-command-prefix "\C-c "
"Key sequence to be used as prefix for outline mode command key bindings.
Default is '\C-c<space>'; just '\C-c' is more short-and-sweet, if you're
willing to let allout use a bunch of \C-c keybindings."
:type 'string
:group 'allout-keybindings
:set 'allout-bind-keys)
;;;_ = allout-keybindings-binding
(define-widget 'allout-keybindings-binding 'lazy
"Structure of allout keybindings customization items."
:type '(repeat
(list (string :tag "Key" :value "[(meta control shift ?f)]")
(function :tag "Function name"
:value allout-forward-current-level))))
;;;_ = allout-prefixed-keybindings
(defcustom allout-prefixed-keybindings
'(("[(control ?n)]" allout-next-visible-heading)
("[(control ?p)]" allout-previous-visible-heading)
;; ("[(control ?u)]" allout-up-current-level)
("[(control ?f)]" allout-forward-current-level)
("[(control ?b)]" allout-backward-current-level)
("[(control ?a)]" allout-beginning-of-current-entry)
("[(control ?e)]" allout-end-of-entry)
("[(control ?i)]" allout-show-children)
("[(control ?i)]" allout-show-children)
("[(control ?s)]" allout-show-current-subtree)
("[(control ?t)]" allout-toggle-current-subtree-exposure)
("[(control ?h)]" allout-hide-current-subtree)
("[?h]" allout-hide-current-subtree)
("[(control ?o)]" allout-show-current-entry)
("[?!]" allout-show-all)
("[?x]" allout-toggle-current-subtree-encryption)
("[? ]" allout-open-sibtopic)
("[?.]" allout-open-subtopic)
("[?,]" allout-open-supertopic)
("[?']" allout-shift-in)
("[?>]" allout-shift-in)
("[?<]" allout-shift-out)
("[(control ?m)]" allout-rebullet-topic)
("[?*]" allout-rebullet-current-heading)
("[?']" allout-number-siblings)
("[(control ?k)]" allout-kill-topic)
("[??]" allout-copy-topic-as-kill)
("[?@]" allout-resolve-xref)
("[?=?c]" allout-copy-exposed-to-buffer)
("[?=?i]" allout-indented-exposed-to-buffer)
("[?=?t]" allout-latexify-exposed)
("[?=?p]" allout-flatten-exposed-to-buffer)
)
"Allout-mode key bindings that are prefixed with `allout-command-prefix'.
See `allout-unprefixed-keybindings' for the list of keybindings
that are not prefixed.
Use vector format for the keys:
- put literal keys after a '?' question mark, eg: '?a', '?.'
- enclose control, shift, or meta-modified keys as sequences within
parentheses, with the literal key, as above, preceded by the name(s)
of the modifers, eg: [(control ?a)]
See the existing keys for examples.
Functions can be bound to multiple keys, but binding keys to
multiple functions will not work - the last binding for a key
prevails."
:type 'allout-keybindings-binding
:group 'allout-keybindings
:set 'allout-bind-keys
)
;;;_ = allout-unprefixed-keybindings
(defcustom allout-unprefixed-keybindings
'(("[(control ?k)]" allout-kill-line)
("[??(meta ?k)]" allout-copy-line-as-kill)
("[(control ?y)]" allout-yank)
("[??(meta ?y)]" allout-yank-pop)
)
"Allout-mode functions bound to keys without any added prefix.
This is in contrast to the majority of allout-mode bindings on
`allout-prefixed-bindings', whose bindings are created with a
preceeding command key.
Use vector format for the keys:
- put literal keys after a '?' question mark, eg: '?a', '?.'
- enclose control, shift, or meta-modified keys as sequences within
parentheses, with the literal key, as above, preceded by the name(s)
of the modifers, eg: [(control ?a)]
See the existing keys for examples."
:type 'allout-keybindings-binding
:group 'allout-keybindings
:set 'allout-bind-keys
)
;;;_ = allout-preempt-trailing-ctrl-h
(defcustom allout-preempt-trailing-ctrl-h nil
"Use <prefix>-\C-h, instead of leaving it for describe-prefix-bindings?"
:type 'boolean
:group 'allout)
;;;_ = allout-keybindings-list
@ -133,9 +257,13 @@ unless optional third, non-nil element is present.")
("\C-a" allout-beginning-of-current-entry)
("\C-e" allout-end-of-entry)
; Exposure commands:
("\C-i" allout-show-children)
([(control i)] allout-show-children) ; xemacs translates "\C-i" to tab
("\C-i" allout-show-children) ; but we still need this for hotspot
("\C-s" allout-show-current-subtree)
("\C-h" allout-hide-current-subtree)
;; binding to \C-h is included if allout-preempt-trailing-ctrl-h,
;; so user controls whether or not to preempt the conventional ^H
;; binding to help-command.
("\C-h" allout-hide-current-subtree)
("\C-t" allout-toggle-current-subtree-exposure)
("h" allout-hide-current-subtree)
("\C-o" allout-show-current-entry)
@ -753,7 +881,7 @@ disable auto-saves for that file."
;;;_ + Developer
;;;_ = allout-developer group
(defgroup allout-developer nil
"Settings for topic encryption features of allout outliner."
"Allout settings developers care about, including topic encryption and more."
:group 'allout)
;;;_ = allout-run-unit-tests-on-load
(defcustom allout-run-unit-tests-on-load nil
@ -792,7 +920,7 @@ For details, see `allout-toggle-current-subtree-encryption's docstring."
;;;_ #1 Internal Outline Formatting and Configuration
;;;_ : Version
;;;_ = allout-version
(defvar allout-version "2.2.1"
(defvar allout-version "2.2.2"
"Version of currently loaded outline package. (allout.el)")
;;;_ > allout-version
(defun allout-version (&optional here)
@ -1163,6 +1291,13 @@ See doc string for `allout-keybindings-list' for format of binding list."
(car (cdr cell)))))))
keymap-list)
map))
;;;_ > allout-mode-map-adjustments (base-map)
(defun allout-mode-map-adjustments (base-map)
"Do conditional additions to specified base-map, like inclusion of \\C-h."
(if allout-preempt-trailing-ctrl-h
(cons '("\C-h" allout-hide-current-subtree) base-map)
base-map)
)
;;;_ : Menu bar
(defvar allout-mode-exposure-menu)
(defvar allout-mode-editing-menu)
@ -1278,7 +1413,7 @@ The settings are stored on `allout-mode-prior-settings'."
(void-variable nil)))
(when (not (assoc name allout-mode-prior-settings))
;; Not already added as a resumption, create the prior setting entry.
(if (local-variable-p name)
(if (local-variable-p name (current-buffer))
;; is already local variable -- preserve the prior value:
(push (list name prior-value) allout-mode-prior-settings)
;; wasn't local variable, indicate so for resumption by killing
@ -1541,6 +1676,14 @@ and the place for the cursor after the decryption is done."
(goto-char (cadr allout-after-save-decrypt))
(setq allout-after-save-decrypt nil))
)
;;;_ > allout-called-interactively-p ()
(defmacro allout-called-interactively-p ()
"A version of called-interactively-p independent of emacs version."
;; ... to ease maintenance of allout without betraying deprecation.
(if (equal (subr-arity (symbol-function 'called-interactively-p))
'(0 . 0))
'(called-interactively-p)
'(called-interactively-p 'interactive)))
;;;_ = allout-inhibit-aberrance-doublecheck nil
;; In some exceptional moments, disparate topic depths need to be allowed
;; momentarily, eg when one topic is being yanked into another and they're
@ -1554,7 +1697,7 @@ and the place for the cursor after the decryption is done."
This should only be momentarily let-bound non-nil, not set
non-nil in a lasting way.")
;;;_ #2 Mode activation
;;;_ #2 Mode environment and activation
;;;_ = allout-explicitly-deactivated
(defvar allout-explicitly-deactivated nil
"If t, `allout-mode's last deactivation was deliberate.
@ -1590,7 +1733,7 @@ the following two lines in your Emacs init file:
\(allout-init t)"
(interactive)
(if (called-interactively-p 'interactive)
(if (allout-called-interactively-p)
(progn
(setq mode
(completing-read
@ -1614,7 +1757,7 @@ the following two lines in your Emacs init file:
(cond ((not mode)
(set find-file-hook-var-name
(delq hook (symbol-value find-file-hook-var-name)))
(if (called-interactively-p 'interactive)
(if (allout-called-interactively-p)
(message "Allout outline mode auto-activation inhibited.")))
((eq mode 'report)
(if (not (memq hook (symbol-value find-file-hook-var-name)))
@ -1656,7 +1799,7 @@ the following two lines in your Emacs init file:
(setplist 'allout-exposure-category nil)
(put 'allout-exposure-category 'invisible 'allout)
(put 'allout-exposure-category 'evaporate t)
;; XXX We use isearch-open-invisible *and* isearch-mode-end-hook. The
;; ??? We use isearch-open-invisible *and* isearch-mode-end-hook. The
;; latter would be sufficient, but it seems that a separate behavior --
;; the _transient_ opening of invisible text during isearch -- is keyed to
;; presence of the isearch-open-invisible property -- even though this
@ -2116,9 +2259,11 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
(defun allout-setup-mode-map ()
"Establish allout-mode bindings."
(setq-default allout-mode-map
(produce-allout-mode-map allout-keybindings-list))
(produce-allout-mode-map
(allout-mode-map-adjustments allout-keybindings-list)))
(setq allout-mode-map
(produce-allout-mode-map allout-keybindings-list))
(produce-allout-mode-map
(allout-mode-map-adjustments allout-keybindings-list)))
(substitute-key-definition 'beginning-of-line
'allout-beginning-of-line
allout-mode-map global-map)
@ -2153,7 +2298,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
;;;_ - Position Assessment
;;;_ > allout-hidden-p (&optional pos)
(defsubst allout-hidden-p (&optional pos)
"Non-nil if the character after point is invisible."
"Non-nil if the character after point was made invisible by allout."
(eq (get-char-property (or pos (point)) 'invisible) 'allout))
;;;_ > allout-overlay-insert-in-front-handler (ol after beg end
@ -2162,8 +2307,8 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
&optional prelen)
"Shift the overlay so stuff inserted in front of it is excluded."
(if after
;; XXX Shouldn't moving the overlay should be unnecessary, if overlay
;; front-advance on the overlay worked as it should?
;; ??? Shouldn't moving the overlay should be unnecessary, if overlay
;; front-advance on the overlay worked as expected?
(move-overlay ol (1+ beg) (overlay-end ol))))
;;;_ > allout-overlay-interior-modification-handler (ol after beg end
;;; &optional prelen)
@ -2225,8 +2370,9 @@ See `allout-overlay-interior-modification-handler' for details."
(save-excursion
(goto-char beg)
(let ((overlay (allout-get-invisibility-overlay)))
(allout-overlay-interior-modification-handler
overlay nil beg end nil)))))
(if overlay
(allout-overlay-interior-modification-handler
overlay nil beg end nil))))))
;;;_ > allout-isearch-end-handler (&optional overlay)
(defun allout-isearch-end-handler (&optional overlay)
"Reconcile allout outline exposure on arriving in hidden text after isearch.
@ -2508,7 +2654,7 @@ Outermost is first."
;;;_ > allout-end-of-current-line ()
(defun allout-end-of-current-line ()
"Move to the end of line, past concealed text if any."
;; XXX This is for symmetry with `allout-beginning-of-current-line' --
;; This is for symmetry with `allout-beginning-of-current-line' --
;; `move-end-of-line' doesn't suffer the same problem as
;; `move-beginning-of-line'.
(let ((inhibit-field-text-motion t))
@ -2527,7 +2673,7 @@ Outermost is first."
(progn
(if (and (not (bolp))
(allout-hidden-p (1- (point))))
(goto-char (previous-single-char-property-change
(goto-char (allout-previous-single-char-property-change
(1- (point)) 'invisible)))
(move-beginning-of-line 1))
(allout-depth)
@ -2573,9 +2719,20 @@ Outermost is first."
(allout-back-to-current-heading)
(allout-end-of-current-line))
(t
(if (not (and transient-mark-mode mark-active))
(if (not (allout-mark-active-p))
(push-mark))
(allout-end-of-entry))))))
;;;_ > allout-mark-active-p ()
(defun allout-mark-active-p ()
"True if the mark is currently or always active."
;; `(cond (boundp...))' (or `(if ...)') invokes special byte-compiler
;; provisions, at least in fsf emacs to prevent warnings about lack of,
;; eg, region-active-p.
(cond ((boundp 'mark-active)
mark-active)
((fboundp 'region-active-p)
(region-active-p))
(t)))
;;;_ > allout-next-heading ()
(defsubst allout-next-heading ()
"Move to the heading for the topic (possibly invisible) after this one.
@ -2888,8 +3045,8 @@ otherwise skip white space between bullet and ensuing text."
(if (not (allout-current-depth))
nil
(1- allout-recent-prefix-end)))
;;;_ > allout-back-to-current-heading ()
(defun allout-back-to-current-heading ()
;;;_ > allout-back-to-current-heading (&optional interactive)
(defun allout-back-to-current-heading (&optional interactive)
"Move to heading line of current topic, or beginning if not in a topic.
If interactive, we position at the end of the prefix.
@ -2897,11 +3054,13 @@ If interactive, we position at the end of the prefix.
Return value of resulting point, unless we started outside
of (before any) topics, in which case we return nil."
(interactive "p")
(allout-beginning-of-current-line)
(let ((bol-point (point)))
(if (allout-goto-prefix-doublechecked)
(if (<= (point) bol-point)
(if (called-interactively-p 'interactive)
(if interactive
(allout-end-of-prefix)
(point))
(goto-char (point-min))
@ -2955,20 +3114,20 @@ excluded as delimiting whitespace between topics.
Returns the value of point."
(interactive)
(allout-end-of-subtree t include-trailing-blank))
;;;_ > allout-beginning-of-current-entry ()
(defun allout-beginning-of-current-entry ()
;;;_ > allout-beginning-of-current-entry (&optional interactive)
(defun allout-beginning-of-current-entry (&optional interactive)
"When not already there, position point at beginning of current topic header.
If already there, move cursor to bullet for hot-spot operation.
\(See `allout-mode' doc string for details of hot-spot operation.)"
(interactive)
(interactive "p")
(let ((start-point (point)))
(move-beginning-of-line 1)
(if (< 0 (allout-current-depth))
(goto-char allout-recent-prefix-end)
(goto-char (point-min)))
(allout-end-of-prefix)
(if (and (called-interactively-p 'interactive)
(if (and interactive
(= (point) start-point))
(goto-char (allout-current-bullet-pos)))))
;;;_ > allout-end-of-entry (&optional inclusive)
@ -3018,9 +3177,9 @@ collapsed."
(while (and (< depth allout-recent-depth)
(setq last-ascended (allout-ascend))))
(goto-char allout-recent-prefix-beginning)
(if (called-interactively-p 'interactive) (allout-end-of-prefix))
(if (allout-called-interactively-p) (allout-end-of-prefix))
(and last-ascended allout-recent-depth))))
;;;_ > allout-ascend ()
;;;_ > allout-ascend (&optional dont-move-if-unsuccessful)
(defun allout-ascend (&optional dont-move-if-unsuccessful)
"Ascend one level, returning resulting depth if successful, nil if not.
@ -3046,7 +3205,7 @@ which case point is returned to its original starting location."
(goto-char bolevel)
(allout-depth)
nil))))
(if (called-interactively-p 'interactive) (allout-end-of-prefix))))
(if (allout-called-interactively-p) (allout-end-of-prefix))))
;;;_ > allout-descend-to-depth (depth)
(defun allout-descend-to-depth (depth)
"Descend to depth DEPTH within current topic.
@ -3074,7 +3233,7 @@ Returning depth if successful, nil if not."
(if (not (allout-ascend))
(progn (goto-char start-point)
(error "Can't ascend past outermost level"))
(if (called-interactively-p 'interactive) (allout-end-of-prefix))
(if (allout-called-interactively-p) (allout-end-of-prefix))
allout-recent-prefix-beginning)))
;;;_ - Linear
@ -3219,7 +3378,7 @@ Presumes point is at the start of a topic prefix."
(let ((depth (allout-depth)))
(while (allout-previous-sibling depth nil))
(prog1 allout-recent-depth
(if (called-interactively-p 'interactive) (allout-end-of-prefix)))))
(if (allout-called-interactively-p) (allout-end-of-prefix)))))
;;;_ > allout-next-visible-heading (arg)
(defun allout-next-visible-heading (arg)
"Move to the next ARG'th visible heading line, backward if arg is negative.
@ -3272,7 +3431,7 @@ A heading line is one that starts with a `*' (or that `allout-regexp'
matches)."
(interactive "p")
(prog1 (allout-next-visible-heading (- arg))
(if (called-interactively-p 'interactive) (allout-end-of-prefix))))
(if (allout-called-interactively-p) (allout-end-of-prefix))))
;;;_ > allout-forward-current-level (arg)
(defun allout-forward-current-level (arg)
"Position point at the next heading of the same level.
@ -3293,7 +3452,7 @@ Returns resulting position, else nil if none found."
(allout-previous-sibling)
(allout-next-sibling)))
(setq arg (1- arg)))
(if (not (called-interactively-p 'interactive))
(if (not (allout-called-interactively-p))
nil
(allout-end-of-prefix)
(if (not (zerop arg))
@ -3306,7 +3465,7 @@ Returns resulting position, else nil if none found."
(defun allout-backward-current-level (arg)
"Inverse of `allout-forward-current-level'."
(interactive "p")
(if (called-interactively-p 'interactive)
(if (allout-called-interactively-p)
(let ((current-prefix-arg (* -1 arg)))
(call-interactively 'allout-forward-current-level))
(allout-forward-current-level (* -1 arg))))
@ -3391,8 +3550,10 @@ this-command accordingly.
Returns the qualifying command, if any, else nil."
(interactive)
(let* ((key-string (if (numberp last-command-event)
(char-to-string last-command-event)))
(let* ((modified (event-modifiers last-command-event))
(key-string (if (numberp last-command-event)
(char-to-string
(event-basic-type last-command-event))))
(key-num (cond ((numberp last-command-event) last-command-event)
;; for XEmacs character type:
((and (fboundp 'characterp)
@ -3406,6 +3567,7 @@ Returns the qualifying command, if any, else nil."
(if (and
;; exclude control chars and escape:
(not modified)
(<= 33 key-num)
(setq mapped-binding
(or (and (assoc key-string allout-keybindings-list)
@ -3413,22 +3575,22 @@ Returns the qualifying command, if any, else nil."
(cadr (assoc key-string allout-keybindings-list)))
;; translate as a keybinding:
(key-binding (vconcat allout-command-prefix
(char-to-string
(if (and (<= 97 key-num) ; "a"
(>= 122 key-num)) ; "z"
(- key-num 96) key-num)))
(vector
(if (and (<= 97 key-num) ; "a"
(>= 122 key-num)) ; "z"
(- key-num 96) key-num)))
t))))
;; Qualified as an allout command -- do hot-spot operation.
(setq allout-post-goto-bullet t)
;; accept-defaults nil, or else we'll get allout-item-icon-key-handler.
(setq mapped-binding (key-binding (char-to-string key-num))))
;; accept-defaults nil, or else we get allout-item-icon-key-handler.
(setq mapped-binding (key-binding (vector key-num))))
(while (keymapp mapped-binding)
(setq mapped-binding
(lookup-key mapped-binding (vector (read-char)))))
(if mapped-binding
(setq this-command mapped-binding)))))
(when mapped-binding
(setq this-command mapped-binding)))))
;;;_ > allout-find-file-hook ()
(defun allout-find-file-hook ()
@ -3457,7 +3619,7 @@ Offer one suitable for current depth DEPTH as default."
(setq choice (solicit-char-in-string
(format "Select bullet: %s ('%s' default): "
sans-escapes
(substring-no-properties default-bullet))
(allout-substring-no-properties default-bullet))
sans-escapes
t)))
(message "")
@ -4455,9 +4617,9 @@ Topic exposure is marked with text-properties, to be used by
(if (not (allout-hidden-p))
(setq next
(max (1+ (point))
(next-single-char-property-change (point)
'invisible
nil end))))
(allout-next-single-char-property-change (point)
'invisible
nil end))))
(if (or (not next) (eq prev next))
;; still not at start of hidden area -- must not be any left.
(setq done t)
@ -4496,9 +4658,8 @@ Topic exposure is marked with text-properties, to be used by
(while (not done)
;; at or advance to start of next annotation:
(if (not (get-text-property (point) 'allout-was-hidden))
(setq next (next-single-char-property-change (point)
'allout-was-hidden
nil end)))
(setq next (allout-next-single-char-property-change
(point) 'allout-was-hidden nil end)))
(if (or (not next) (eq prev next))
;; no more or not advancing -- must not be any left.
(setq done t)
@ -4508,9 +4669,8 @@ Topic exposure is marked with text-properties, to be used by
;; still not at start of annotation.
(setq done t)
;; advance to just after end of this annotation:
(setq next (next-single-char-property-change (point)
'allout-was-hidden
nil end))
(setq next (allout-next-single-char-property-change
(point) 'allout-was-hidden nil end))
(overlay-put (make-overlay prev next nil 'front-advance)
'category 'allout-exposure-category)
(allout-deannotate-hidden prev next)
@ -4725,7 +4885,7 @@ by pops to non-distinctive yanks. Bug..."
(save-match-data
(save-excursion
(let* ((text-start allout-recent-prefix-end)
(heading-end (progn (end-of-line) (point))))
(heading-end (point-at-eol)))
(goto-char text-start)
(setq file-name
(if (re-search-forward "\\s-\\(\\S-*\\)" heading-end t)
@ -4766,7 +4926,10 @@ invoked.)"
(when (featurep 'xemacs)
(let ((props (symbol-plist 'allout-exposure-category)))
(while props
(overlay-put o (pop props) (pop props)))))))
(condition-case nil
;; as of 2008-02-27, xemacs lacks modification-hooks
(overlay-put o (pop props) (pop props))
(error nil)))))))
(run-hooks 'allout-view-change-hook)
(run-hook-with-args 'allout-exposure-change-hook from to flag))
;;;_ > allout-flag-current-subtree (flag)
@ -4845,7 +5008,7 @@ point of non-opened subtree?)"
(to-reveal (or (allout-chart-to-reveal chart chart-level)
;; interactive, show discontinuous children:
(and chart
(called-interactively-p 'interactive)
(allout-called-interactively-p)
(save-excursion
(allout-back-to-current-heading)
(setq depth (allout-current-depth))
@ -5672,8 +5835,7 @@ environment. Leaves point at the end of the line."
(let ((inhibit-field-text-motion t))
(beginning-of-line)
(let ((beg (point))
(end (progn (end-of-line)(point))))
(goto-char beg)
(end (point-at-eol)))
(save-match-data
(while (re-search-forward "\\\\"
;;"\\\\\\|\\{\\|\\}\\|\\_\\|\\$\\|\\\"\\|\\&\\|\\^\\|\\-\\|\\*\\|#"
@ -5976,7 +6138,7 @@ See `allout-toggle-current-subtree-encryption' for more details."
;; they're encrypted, so the coding system is set to accommodate
;; them.
(setq buffer-file-coding-system
(select-safe-coding-system subtree-beg subtree-end))
(allout-select-safe-coding-system subtree-beg subtree-end))
;; if the coding system for the text being encrypted is different
;; than that prevailing, then there a real risk that the coding
;; system can't be noticed by emacs when the file is visited. to
@ -6119,7 +6281,7 @@ Returns the resulting string, or nil if the transformation fails."
(insert text)
;; convey the text characteristics of the original buffer:
(set-buffer-multibyte multibyte)
(allout-set-buffer-multibyte multibyte)
(when encoding
(set-buffer-file-coding-system encoding)
(if (not decrypt)
@ -6831,6 +6993,14 @@ If BEG is bigger than END we return 0."
((atom (car list)) (cons (car list) (allout-flatten (cdr list))))
(t (append (allout-flatten (car list)) (allout-flatten (cdr list))))))
;;;_ : Compatibility:
;;;_ : xemacs undo-in-progress provision:
(unless (boundp 'undo-in-progress)
(defvar undo-in-progress nil
"Placeholder defvar for XEmacs compatibility from allout.el.")
(defadvice undo-more (around allout activate)
;; This defadvice used only in emacs that lack undo-in-progress, eg xemacs.
(let ((undo-in-progress t)) ad-do-it)))
;;;_ > allout-mark-marker to accommodate divergent emacsen:
(defun allout-mark-marker (&optional force buffer)
"Accommodate the different signature for `mark-marker' across Emacsen.
@ -6941,7 +7111,7 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(skip-chars-backward "^\n"))
(vertical-motion 0))
)
;;;_ > move-end-of-line if necessary -- older emacs, xemacs
;;;_ > move-end-of-line if necessary -- Emacs < 22.1, xemacs
(if (not (fboundp 'move-end-of-line))
(defun move-end-of-line (arg)
"Move point to end of current line as displayed.
@ -6991,6 +7161,42 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(setq arg 1)
(setq done t)))))))
)
;;;_ > allout-next-single-char-property-change -- alias unless lacking
(defalias 'allout-next-single-char-property-change
(if (fboundp 'next-single-char-property-change)
'next-single-char-property-change
'next-single-property-change)
;; No docstring because xemacs defalias doesn't support it.
)
;;;_ > allout-previous-single-char-property-change -- alias unless lacking
(defalias 'allout-previous-single-char-property-change
(if (fboundp 'previous-single-char-property-change)
'previous-single-char-property-change
'previous-single-property-change)
;; No docstring because xemacs defalias doesn't support it.
)
;;;_ > allout-set-buffer-multibyte
;; define as alias first, so byte compiler is happy.
(defalias 'allout-set-buffer-multibyte 'set-buffer-multibyte)
;; then supplant with definition if underlying alias absent.
(if (not (fboundp 'set-buffer-multibyte))
(defun allout-set-buffer-multibyte (is-multibyte)
(setq enable-multibyte-characters is-multibyte))
)
;;;_ > allout-select-safe-coding-system
(defalias 'allout-select-safe-coding-system
(if (fboundp 'select-safe-coding-system)
'select-safe-coding-system
'detect-coding-region)
)
;;;_ > allout-substring-no-properties
;; define as alias first, so byte compiler is happy.
(defalias 'allout-substring-no-properties 'substring-no-properties)
;; then supplant with definition if underlying alias absent.
(if (not (fboundp 'substring-no-properties))
(defun allout-substring-no-properties (string &optional start end)
(substring string (or start 0) end))
)
;;;_ #10 Unfinished
;;;_ > allout-bullet-isearch (&optional bullet)
@ -7022,7 +7228,7 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
;;;_ > allout-tests-obliterate-variable (name)
(defun allout-tests-obliterate-variable (name)
"Completely unbind variable with NAME."
(if (local-variable-p name) (kill-local-variable name))
(if (local-variable-p name (current-buffer)) (kill-local-variable name))
(while (boundp name) (makunbound name)))
;;;_ > allout-test-resumptions ()
(defvar allout-tests-globally-unbound nil
@ -7041,11 +7247,12 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(allout-tests-obliterate-variable 'allout-tests-globally-unbound)
(allout-add-resumptions '(allout-tests-globally-unbound t))
(assert (not (default-boundp 'allout-tests-globally-unbound)))
(assert (local-variable-p 'allout-tests-globally-unbound))
(assert (local-variable-p 'allout-tests-globally-unbound (current-buffer)))
(assert (boundp 'allout-tests-globally-unbound))
(assert (equal allout-tests-globally-unbound t))
(allout-do-resumptions)
(assert (not (local-variable-p 'allout-tests-globally-unbound)))
(assert (not (local-variable-p 'allout-tests-globally-unbound
(current-buffer))))
(assert (not (boundp 'allout-tests-globally-unbound))))
;; ensure that variable with prior global value is resumed
@ -7054,10 +7261,11 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(setq allout-tests-globally-true t)
(allout-add-resumptions '(allout-tests-globally-true nil))
(assert (equal (default-value 'allout-tests-globally-true) t))
(assert (local-variable-p 'allout-tests-globally-true))
(assert (local-variable-p 'allout-tests-globally-true (current-buffer)))
(assert (equal allout-tests-globally-true nil))
(allout-do-resumptions)
(assert (not (local-variable-p 'allout-tests-globally-true)))
(assert (not (local-variable-p 'allout-tests-globally-true
(current-buffer))))
(assert (boundp 'allout-tests-globally-true))
(assert (equal allout-tests-globally-true t)))
@ -7068,16 +7276,16 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(assert (not (default-boundp 'allout-tests-locally-true))
nil (concat "Test setup mistake -- variable supposed to"
" not have global binding, but it does."))
(assert (local-variable-p 'allout-tests-locally-true)
(assert (local-variable-p 'allout-tests-locally-true (current-buffer))
nil (concat "Test setup mistake -- variable supposed to have"
" local binding, but it lacks one."))
(allout-add-resumptions '(allout-tests-locally-true nil))
(assert (not (default-boundp 'allout-tests-locally-true)))
(assert (local-variable-p 'allout-tests-locally-true))
(assert (local-variable-p 'allout-tests-locally-true (current-buffer)))
(assert (equal allout-tests-locally-true nil))
(allout-do-resumptions)
(assert (boundp 'allout-tests-locally-true))
(assert (local-variable-p 'allout-tests-locally-true))
(assert (local-variable-p 'allout-tests-locally-true (current-buffer)))
(assert (equal allout-tests-locally-true t))
(assert (not (default-boundp 'allout-tests-locally-true))))
@ -7096,22 +7304,24 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
'(allout-tests-locally-true 4))
;; reestablish many of the basic conditions are maintained after re-add:
(assert (not (default-boundp 'allout-tests-globally-unbound)))
(assert (local-variable-p 'allout-tests-globally-unbound))
(assert (local-variable-p 'allout-tests-globally-unbound (current-buffer)))
(assert (equal allout-tests-globally-unbound 2))
(assert (default-boundp 'allout-tests-globally-true))
(assert (local-variable-p 'allout-tests-globally-true))
(assert (local-variable-p 'allout-tests-globally-true (current-buffer)))
(assert (equal allout-tests-globally-true 3))
(assert (not (default-boundp 'allout-tests-locally-true)))
(assert (local-variable-p 'allout-tests-locally-true))
(assert (local-variable-p 'allout-tests-locally-true (current-buffer)))
(assert (equal allout-tests-locally-true 4))
(allout-do-resumptions)
(assert (not (local-variable-p 'allout-tests-globally-unbound)))
(assert (not (local-variable-p 'allout-tests-globally-unbound
(current-buffer))))
(assert (not (boundp 'allout-tests-globally-unbound)))
(assert (not (local-variable-p 'allout-tests-globally-true)))
(assert (not (local-variable-p 'allout-tests-globally-true
(current-buffer))))
(assert (boundp 'allout-tests-globally-true))
(assert (equal allout-tests-globally-true t))
(assert (boundp 'allout-tests-locally-true))
(assert (local-variable-p 'allout-tests-locally-true))
(assert (local-variable-p 'allout-tests-locally-true (current-buffer)))
(assert (equal allout-tests-locally-true t))
(assert (not (default-boundp 'allout-tests-locally-true))))
@ -7147,5 +7357,4 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
;;allout-layout: (0 : -1 -1 0)
;;End:
;; arch-tag: cf38fbc3-c044-450f-8bff-afed8ba5681c
;;; allout.el ends here

View file

@ -215,48 +215,10 @@ This is a good function to put in `comint-output-filter-functions'."
(add-hook 'comint-output-filter-functions
'ansi-color-process-output)
;; Alternative font-lock-unfontify-region-function for Emacs only
(defun ansi-color-unfontify-region (beg end &rest xemacs-stuff)
"Replacement function for `font-lock-default-unfontify-region'.
As text properties are implemented using extents in XEmacs, this
function is probably not needed. In Emacs, however, things are a bit
different: When font-lock is active in a buffer, you cannot simply add
face text properties to the buffer. Font-lock will remove the face
text property using `font-lock-unfontify-region-function'. If you want
to insert the strings returned by `ansi-color-apply' into such buffers,
you must set `font-lock-unfontify-region-function' to
`ansi-color-unfontify-region'. This function will not remove all face
text properties unconditionally. It will keep the face text properties
if the property `ansi-color' is set.
The region from BEG to END is unfontified. XEMACS-STUFF is ignored.
A possible way to install this would be:
\(add-hook 'font-lock-mode-hook
\(function (lambda ()
\(setq font-lock-unfontify-region-function
'ansi-color-unfontify-region))))"
;; Simplified now that font-lock-unfontify-region uses save-buffer-state.
(when (boundp 'font-lock-syntactic-keywords)
(remove-text-properties beg end '(syntax-table nil)))
;; instead of just using (remove-text-properties beg end '(face
;; nil)), we find regions with a non-nil face text-property, skip
;; positions with the ansi-color property set, and remove the
;; remaining face text-properties.
(while (setq beg (text-property-not-all beg end 'face nil))
(setq beg (or (text-property-not-all beg end 'ansi-color t) end))
(when (get-text-property beg 'face)
(let ((end-face (or (text-property-any beg end 'face nil)
end)))
(remove-text-properties beg end-face '(face nil))
(setq beg end-face)))))
(defalias 'ansi-color-unfontify-region 'font-lock-default-unfontify-region)
(make-obsolete 'ansi-color-unfontify-region "not needed any more" "24.1")
;; Working with strings
(defvar ansi-color-context nil
"Context saved between two calls to `ansi-color-apply'.
This is a list of the form (FACES FRAGMENT) or nil. FACES is a list of
@ -290,9 +252,7 @@ This function can be added to `comint-preoutput-filter-functions'."
(setq fragment (substring string pos)
result (concat result (substring string start pos))))
(setq result (concat result (substring string start))))
(if fragment
(setq ansi-color-context (list nil fragment))
(setq ansi-color-context nil)))
(setq ansi-color-context (if fragment (list nil fragment))))
result))
(defun ansi-color-apply (string)
@ -309,10 +269,7 @@ Every call to this function will set and use the buffer-local variable
This information will be used for the next call to `ansi-color-apply'.
Set `ansi-color-context' to nil if you don't want this.
This function can be added to `comint-preoutput-filter-functions'.
You cannot insert the strings returned into buffers using font-lock.
See `ansi-color-unfontify-region' for a way around this."
This function can be added to `comint-preoutput-filter-functions'."
(let ((face (car ansi-color-context))
(start 0) end escape-sequence result
colorized-substring)
@ -325,8 +282,7 @@ See `ansi-color-unfontify-region' for a way around this."
(setq escape-sequence (match-string 1 string))
;; Colorize the old block from start to end using old face.
(when face
(put-text-property start end 'ansi-color t string)
(put-text-property start end 'face face string))
(put-text-property start end 'font-lock-face face string))
(setq colorized-substring (substring string start end)
start (match-end 0))
;; Eliminate unrecognized ANSI sequences.
@ -338,8 +294,7 @@ See `ansi-color-unfontify-region' for a way around this."
(setq face (ansi-color-apply-sequence escape-sequence face)))
;; if the rest of the string should have a face, put it there
(when face
(put-text-property start (length string) 'ansi-color t string)
(put-text-property start (length string) 'face face string))
(put-text-property start (length string) 'font-lock-face face string))
;; save context, add the remainder of the string to the result
(let (fragment)
(if (string-match "\033" string start)
@ -347,9 +302,7 @@ See `ansi-color-unfontify-region' for a way around this."
(setq fragment (substring string pos))
(push (substring string start pos) result))
(push (substring string start) result))
(if (or face fragment)
(setq ansi-color-context (list face fragment))
(setq ansi-color-context nil)))
(setq ansi-color-context (if (or face fragment) (list face fragment))))
(apply 'concat (nreverse result))))
;; Working with regions

View file

@ -616,7 +616,7 @@ the mode is invalid. If ERROR is nil then nil will be returned."
(defun archive-get-lineno ()
(if (>= (point) archive-file-list-start)
(count-lines archive-file-list-start
(save-excursion (beginning-of-line) (point)))
(line-beginning-position))
0))
(defun archive-get-descr (&optional noerror)
@ -1813,10 +1813,12 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
archive
;; unzip expands wildcards in NAME, so we need to quote it. But
;; not on DOS/Windows, since that fails extraction on those
;; systems, and file names with wildcards in zip archives don't
;; work there anyway.
;; systems (unless w32-quote-process-args is nil), and file names
;; with wildcards in zip archives don't work there anyway.
;; FIXME: Does pkunzip need similar treatment?
(if (and (not (memq system-type '(windows-nt ms-dos)))
(if (and (or (not (memq system-type '(windows-nt ms-dos)))
(and (boundp 'w32-quote-process-args)
(null w32-quote-process-args)))
(equal (car archive-zip-extract) "unzip"))
(shell-quote-argument name)
name)
@ -2213,5 +2215,4 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(provide 'arc-mode)
;; arch-tag: e5966a01-35ec-4f27-8095-a043a79b457b
;;; arc-mode.el ends here

View file

@ -1,7 +1,7 @@
;;; array.el --- array editing commands for GNU Emacs
;; Copyright (C) 1987, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
;; 2008, 2009, 2010 Free Software Foundation, Inc.
;; 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: David M. Brown
;; Maintainer: FSF
@ -748,9 +748,7 @@ of `array-rows-numbered'."
(defun current-line ()
"Return the current buffer line at point. The first line is 0."
(save-excursion
(beginning-of-line)
(count-lines (point-min) (point))))
(count-lines (point-min) (line-beginning-position)))
(defun move-to-column-untabify (column)
"Move to COLUMN on the current line, untabifying if necessary.
@ -903,5 +901,4 @@ Entering array mode calls the function `array-mode-hook'."
(provide 'array)
;; arch-tag: 0086605d-79fe-4a1a-992a-456417261f80
;;; array.el ends here

View file

@ -278,7 +278,8 @@ redefine this function to suit your own tastes."
(defun mouse-avoidance-ignore-p ()
(let ((mp (mouse-position)))
(or executing-kbd-macro ; don't check inside macro
(or (not (frame-pointer-visible-p)) ; The pointer is hidden
executing-kbd-macro ; don't check inside macro
(null (cadr mp)) ; don't move unless in an Emacs frame
(not (eq (car mp) (selected-frame)))
;; Don't do anything if last event was a mouse event.

View file

@ -318,7 +318,7 @@ Keymap to display on column and line numbers.")
mouse-2: Make current window occupy the whole frame\n\
mouse-3: Remove current window from display")
(recursive-edit-help-echo "Recursive edit, type C-M-c to get out")
(dashes (propertize "--" 'help-echo help-echo))
(spaces (propertize " " 'help-echo help-echo))
(standard-mode-line-format
(list
"%e"
@ -334,9 +334,10 @@ mouse-3: Remove current window from display")
'(vc-mode vc-mode)
(propertize " " 'help-echo help-echo)
'mode-line-modes
`(which-func-mode ("" which-func-format ,dashes))
`(global-mode-string ("" global-mode-string ,dashes))
(propertize "-%-" 'help-echo help-echo)))
`(which-func-mode ("" which-func-format ,spaces))
`(global-mode-string ("" global-mode-string ,spaces))
`(:eval (unless (display-graphic-p)
,(propertize "-%-" 'help-echo help-echo)))))
(standard-mode-line-modes
(list
(propertize "%[" 'help-echo recursive-edit-help-echo)
@ -362,7 +363,7 @@ mouse-3: Toggle minor modes"
'mouse-2 #'mode-line-widen))
(propertize ")" 'help-echo help-echo)
(propertize "%]" 'help-echo recursive-edit-help-echo)
(propertize "--" 'help-echo help-echo)))
spaces))
(standard-mode-line-position
`((-3 ,(propertize
@ -654,6 +655,16 @@ is okay. See `mode-line-format'.")
(define-key esc-map "\t" 'complete-symbol)
(defun complete-symbol (arg)
"Perform completion on the text around point.
The completion method is determined by `completion-at-point-functions'.
With a prefix argument, this command does completion within
the collection of symbols listed in the index of the manual for the
language you are using."
(interactive "P")
(if arg (info-complete-symbol) (completion-at-point)))
;; Reduce total amount of space we must allocate during this function
;; that we will not need to keep permanently.
(garbage-collect)
@ -824,7 +835,7 @@ if `inhibit-field-text-motion' is non-nil."
(define-key global-map [?\C-\M--] 'negative-argument)
(define-key global-map "\177" 'delete-backward-char)
(define-key global-map "\C-d" 'delete-forward-char)
(define-key global-map "\C-d" 'delete-char)
(define-key global-map "\C-k" 'kill-line)
(define-key global-map "\C-w" 'kill-region)
@ -933,7 +944,7 @@ if `inhibit-field-text-motion' is non-nil."
;; (define-key global-map [clearline] 'function-key-error)
(define-key global-map [insertline] 'open-line)
(define-key global-map [deleteline] 'kill-line)
(define-key global-map [deletechar] 'delete-char)
(define-key global-map [deletechar] 'delete-forward-char)
;; (define-key global-map [backtab] 'function-key-error)
;; (define-key global-map [f1] 'function-key-error)
;; (define-key global-map [f2] 'function-key-error)

View file

@ -1,7 +1,8 @@
;;; bookmark.el --- set bookmarks, maybe annotate them, jump to them later
;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003, 2004,
;; 2005, 2006, 2007, 2008, 2009, 2010
;; Free Software Foundation, Inc.
;; Author: Karl Fogel <kfogel@red-bean.com>
;; Maintainer: Karl Fogel <kfogel@red-bean.com>
@ -304,124 +305,112 @@ This point is in `bookmark-current-buffer'.")
;; need to know anything about the format of bookmark-alist entries.
;; Everyone else should go through them.
(defun bookmark-name-from-full-record (full-record)
"Return name of FULL-RECORD (an alist element instead of a string)."
(car full-record))
(defun bookmark-name-from-record (bookmark-record)
"Return the name of BOOKMARK-RECORD. BOOKMARK-RECORD is, e.g.,
one element from `bookmark-alist'."
(car bookmark-record))
(defun bookmark-all-names ()
"Return a list of all current bookmark names."
(bookmark-maybe-load-default-file)
(mapcar 'bookmark-name-from-full-record bookmark-alist))
(mapcar 'bookmark-name-from-record bookmark-alist))
(defun bookmark-get-bookmark (bookmark &optional noerror)
"Return the bookmark record corresponding to BOOKMARK.
If BOOKMARK is a string, look for the corresponding bookmark record in
`bookmark-alist'; return it if found, otherwise error. Else if
BOOKMARK is already a bookmark record, just return it."
(defun bookmark-get-bookmark (bookmark-name-or-record &optional noerror)
"Return the bookmark record corresponding to BOOKMARK-NAME-OR-RECORD.
If BOOKMARK-NAME-OR-RECORD is a string, look for the corresponding
bookmark record in `bookmark-alist'; return it if found, otherwise
error. Else if BOOKMARK-NAME-OR-RECORD is already a bookmark record,
just return it."
(cond
((consp bookmark) bookmark)
((stringp bookmark)
(or (assoc-string bookmark bookmark-alist bookmark-completion-ignore-case)
(unless noerror (error "Invalid bookmark %s" bookmark))))))
((consp bookmark-name-or-record) bookmark-name-or-record)
((stringp bookmark-name-or-record)
(or (assoc-string bookmark-name-or-record bookmark-alist
bookmark-completion-ignore-case)
(unless noerror (error "Invalid bookmark %s"
bookmark-name-or-record))))))
(defun bookmark-get-bookmark-record (bookmark)
"Return the record portion of the entry for BOOKMARK in
`bookmark-alist' (that is, all information but the name).
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(let ((alist (cdr (bookmark-get-bookmark bookmark))))
(defun bookmark-get-bookmark-record (bookmark-name-or-record)
"Return the record portion of the entry for BOOKMARK-NAME-OR-RECORD in
`bookmark-alist' (that is, all information but the name)."
(let ((alist (cdr (bookmark-get-bookmark bookmark-name-or-record))))
;; The bookmark objects can either look like (NAME ALIST) or
;; (NAME . ALIST), so we have to distinguish the two here.
(if (and (null (cdr alist)) (consp (caar alist)))
(car alist) alist)))
(defun bookmark-set-name (bookmark newname)
"Set BOOKMARK's name to NEWNAME.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(setcar
(if (stringp bookmark) (bookmark-get-bookmark bookmark) bookmark)
newname))
(defun bookmark-set-name (bookmark-name-or-record newname)
"Set BOOKMARK-NAME-OR-RECORD's name to NEWNAME."
(setcar (bookmark-get-bookmark bookmark-name-or-record) newname))
(defun bookmark-prop-get (bookmark prop)
"Return the property PROP of BOOKMARK, or nil if none.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(cdr (assq prop (bookmark-get-bookmark-record bookmark))))
(defun bookmark-prop-get (bookmark-name-or-record prop)
"Return the property PROP of BOOKMARK-NAME-OR-RECORD, or nil if none."
(cdr (assq prop (bookmark-get-bookmark-record bookmark-name-or-record))))
(defun bookmark-prop-set (bookmark prop val)
"Set the property PROP of BOOKMARK to VAL.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(let ((cell (assq prop (bookmark-get-bookmark-record bookmark))))
(defun bookmark-prop-set (bookmark-name-or-record prop val)
"Set the property PROP of BOOKMARK-NAME-OR-RECORD to VAL."
(let ((cell (assq
prop (bookmark-get-bookmark-record bookmark-name-or-record))))
(if cell
(setcdr cell val)
(nconc (bookmark-get-bookmark-record bookmark)
(nconc (bookmark-get-bookmark-record bookmark-name-or-record)
(list (cons prop val))))))
(defun bookmark-get-annotation (bookmark)
"Return the annotation of BOOKMARK, or nil if none.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-get bookmark 'annotation))
(defun bookmark-get-annotation (bookmark-name-or-record)
"Return the annotation of BOOKMARK-NAME-OR-RECORD, or nil if none."
(bookmark-prop-get bookmark-name-or-record 'annotation))
(defun bookmark-set-annotation (bookmark ann)
"Set the annotation of BOOKMARK to ANN.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-set bookmark 'annotation ann))
(defun bookmark-set-annotation (bookmark-name-or-record ann)
"Set the annotation of BOOKMARK-NAME-OR-RECORD to ANN."
(bookmark-prop-set bookmark-name-or-record 'annotation ann))
(defun bookmark-get-filename (bookmark)
"Return the full filename of BOOKMARK, or nil if none.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-get bookmark 'filename))
(defun bookmark-get-filename (bookmark-name-or-record)
"Return the full filename of BOOKMARK-NAME-OR-RECORD, or nil if none."
(bookmark-prop-get bookmark-name-or-record 'filename))
(defun bookmark-set-filename (bookmark filename)
"Set the full filename of BOOKMARK to FILENAME.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-set bookmark 'filename filename))
(defun bookmark-set-filename (bookmark-name-or-record filename)
"Set the full filename of BOOKMARK-NAME-OR-RECORD to FILENAME."
(bookmark-prop-set bookmark-name-or-record 'filename filename))
(defun bookmark-get-position (bookmark)
"Return the position (i.e.: point) of BOOKMARK, or nil if none.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-get bookmark 'position))
(defun bookmark-get-position (bookmark-name-or-record)
"Return the position (i.e.: point) of BOOKMARK-NAME-OR-RECORD, or nil if none."
(bookmark-prop-get bookmark-name-or-record 'position))
(defun bookmark-set-position (bookmark position)
"Set the position (i.e.: point) of BOOKMARK to POSITION.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-set bookmark 'position position))
(defun bookmark-set-position (bookmark-name-or-record position)
"Set the position (i.e.: point) of BOOKMARK-NAME-OR-RECORD to POSITION."
(bookmark-prop-set bookmark-name-or-record 'position position))
(defun bookmark-get-front-context-string (bookmark)
"Return the front-context-string of BOOKMARK, or nil if none.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-get bookmark 'front-context-string))
(defun bookmark-get-front-context-string (bookmark-name-or-record)
"Return the front-context-string of BOOKMARK-NAME-OR-RECORD, or nil if none."
(bookmark-prop-get bookmark-name-or-record 'front-context-string))
(defun bookmark-set-front-context-string (bookmark string)
"Set the front-context-string of BOOKMARK to STRING.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-set bookmark 'front-context-string string))
(defun bookmark-set-front-context-string (bookmark-name-or-record string)
"Set the front-context-string of BOOKMARK-NAME-OR-RECORD to STRING."
(bookmark-prop-set bookmark-name-or-record 'front-context-string string))
(defun bookmark-get-rear-context-string (bookmark)
"Return the rear-context-string of BOOKMARK, or nil if none.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-get bookmark 'rear-context-string))
(defun bookmark-get-rear-context-string (bookmark-name-or-record)
"Return the rear-context-string of BOOKMARK-NAME-OR-RECORD, or nil if none."
(bookmark-prop-get bookmark-name-or-record 'rear-context-string))
(defun bookmark-set-rear-context-string (bookmark string)
"Set the rear-context-string of BOOKMARK to STRING.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-set bookmark 'rear-context-string string))
(defun bookmark-set-rear-context-string (bookmark-name-or-record string)
"Set the rear-context-string of BOOKMARK-NAME-OR-RECORD to STRING."
(bookmark-prop-set bookmark-name-or-record 'rear-context-string string))
(defun bookmark-get-handler (bookmark)
"Return the handler function for BOOKMARK, or nil if none.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(bookmark-prop-get bookmark 'handler))
(defun bookmark-get-handler (bookmark-name-or-record)
"Return the handler function for BOOKMARK-NAME-OR-RECORD, or nil if none."
(bookmark-prop-get bookmark-name-or-record 'handler))
(defvar bookmark-history nil
"The history list for bookmark functions.")
@ -816,7 +805,7 @@ the list of bookmarks.)"
"Kill from point to end of line.
If optional arg NEWLINE-TOO is non-nil, delete the newline too.
Does not affect the kill ring."
(let ((eol (save-excursion (end-of-line) (point))))
(let ((eol (line-end-position)))
(delete-region (point) eol)
(if (and newline-too (looking-at "\n"))
(delete-char 1))))
@ -829,11 +818,11 @@ This is used in `bookmark-edit-annotation' to record the bookmark
whose annotation is being edited.")
(defun bookmark-default-annotation-text (bookmark)
"Return default annotation text for BOOKMARK (a string, not a record).
(defun bookmark-default-annotation-text (bookmark-name)
"Return default annotation text for BOOKMARK-NAME.
The default annotation text is simply some text explaining how to use
annotations."
(concat "# Type the annotation for bookmark '" bookmark "' here.\n"
(concat "# Type the annotation for bookmark '" bookmark-name "' here.\n"
"# All lines which start with a '#' will be deleted.\n"
"# Type C-c C-c when done.\n#\n"
"# Author: " (user-full-name) " <" (user-login-name) "@"
@ -855,22 +844,20 @@ It takes one argument, the name of the bookmark, as a string.")
"Keymap for editing an annotation of a bookmark.")
(defun bookmark-edit-annotation-mode (bookmark)
"Mode for editing the annotation of bookmark BOOKMARK.
(defun bookmark-edit-annotation-mode (bookmark-name-or-record)
"Mode for editing the annotation of bookmark BOOKMARK-NAME-OR-RECORD.
When you have finished composing, type \\[bookmark-send-annotation].
BOOKMARK is a bookmark name (a string) or a bookmark record.
\\{bookmark-edit-annotation-mode-map}"
(interactive)
(kill-all-local-variables)
(make-local-variable 'bookmark-annotation-name)
(setq bookmark-annotation-name bookmark)
(setq bookmark-annotation-name bookmark-name-or-record)
(use-local-map bookmark-edit-annotation-mode-map)
(setq major-mode 'bookmark-edit-annotation-mode
mode-name "Edit Bookmark Annotation")
(insert (funcall bookmark-edit-annotation-text-func bookmark))
(let ((annotation (bookmark-get-annotation bookmark)))
(insert (funcall bookmark-edit-annotation-text-func bookmark-name-or-record))
(let ((annotation (bookmark-get-annotation bookmark-name-or-record)))
(if (and annotation (not (string-equal annotation "")))
(insert annotation)))
(run-mode-hooks 'text-mode-hook))
@ -889,19 +876,18 @@ Lines beginning with `#' are ignored."
(forward-line 1)))
;; Take no chances with text properties.
(let ((annotation (buffer-substring-no-properties (point-min) (point-max)))
(bookmark bookmark-annotation-name))
(bookmark-set-annotation bookmark annotation)
(bookmark-name bookmark-annotation-name))
(bookmark-set-annotation bookmark-name annotation)
(setq bookmark-alist-modification-count
(1+ bookmark-alist-modification-count))
(bookmark-bmenu-surreptitiously-rebuild-list))
(kill-buffer (current-buffer)))
(defun bookmark-edit-annotation (bookmark)
"Pop up a buffer for editing bookmark BOOKMARK's annotation.
BOOKMARK is a bookmark name (a string) or a bookmark record."
(defun bookmark-edit-annotation (bookmark-name-or-record)
"Pop up a buffer for editing bookmark BOOKMARK-NAME-OR-RECORD's annotation."
(pop-to-buffer (generate-new-buffer-name "*Bookmark Annotation Compose*"))
(bookmark-edit-annotation-mode bookmark))
(bookmark-edit-annotation-mode bookmark-name-or-record))
(defun bookmark-insert-current-bookmark ()
@ -1001,14 +987,14 @@ If `bookmark-sort-flag' is non-nil, then return a sorted copy of the alist."
"Hook run after `bookmark-jump' jumps to a bookmark.
Useful for example to unhide text in `outline-mode'.")
(defun bookmark--jump-via (bookmark display-function)
"Handle BOOKMARK, then call DISPLAY-FUNCTION with current buffer as argument.
Bookmark may be a bookmark name (a string) or a bookmark record.
(defun bookmark--jump-via (bookmark-name-or-record display-function)
"Handle BOOKMARK-NAME-OR-RECORD, then call DISPLAY-FUNCTION with
current buffer as argument.
After calling DISPLAY-FUNCTION, set window point to the point specified
by BOOKMARK, if necessary, run `bookmark-after-jump-hook', and then show
any annotations for this bookmark."
(bookmark-handle-bookmark bookmark)
by BOOKMARK-NAME-OR-RECORD, if necessary, run `bookmark-after-jump-hook',
and then show any annotations for this bookmark."
(bookmark-handle-bookmark bookmark-name-or-record)
(save-current-buffer
(funcall display-function (current-buffer)))
(let ((win (get-buffer-window (current-buffer) 0)))
@ -1019,7 +1005,7 @@ any annotations for this bookmark."
(if bookmark-automatically-show-annotations
;; if there is an annotation for this bookmark,
;; show it in a buffer.
(bookmark-show-annotation bookmark)))
(bookmark-show-annotation bookmark-name-or-record)))
;;;###autoload
@ -1035,8 +1021,8 @@ if you wish to give the bookmark a new location, and `bookmark-jump'
will then jump to the new location, as well as recording it in place
of the old one in the permanent bookmark record.
BOOKMARK may be a bookmark name (a string) or a bookmark record, but
the latter is usually only used by programmatic callers.
BOOKMARK is usually a bookmark name (a string). It can also be a
bookmark record, but this is usually only done by programmatic callers.
If DISPLAY-FUNC is non-nil, it is a function to invoke to display the
bookmark. It defaults to `switch-to-buffer'. A typical value for
@ -1060,11 +1046,9 @@ DISPLAY-FUNC would be `switch-to-buffer-other-window'."
(defun bookmark-jump-noselect (bookmark)
"Return the location pointed to by the bookmark BOOKMARK.
"Return the location pointed to by BOOKMARK (see `bookmark-jump').
The return value has the form (BUFFER . POINT).
BOOKMARK may be a bookmark name (a string) or a bookmark record.
Note: this function is deprecated and is present for Emacs 22
compatibility only."
(save-excursion
@ -1073,26 +1057,27 @@ compatibility only."
(make-obsolete 'bookmark-jump-noselect 'bookmark-handle-bookmark "23.1")
(defun bookmark-handle-bookmark (bookmark)
"Call BOOKMARK's handler or `bookmark-default-handler' if it has none.
BOOKMARK may be a bookmark name (a string) or a bookmark record.
(defun bookmark-handle-bookmark (bookmark-name-or-record)
"Call BOOKMARK-NAME-OR-RECORD's handler or `bookmark-default-handler'
if it has none. This changes current buffer and point and returns nil,
or signals a `file-error'.
Changes current buffer and point and returns nil, or signals a `file-error'.
If BOOKMARK has no file, this is a no-op. If BOOKMARK has a file, but
that file no longer exists, then offer interactively to relocate BOOKMARK."
If BOOKMARK-NAME-OR-RECORD has no file, this is a no-op. If
BOOKMARK-NAME-OR-RECORD has a file, but that file no longer exists,
then offer interactively to relocate BOOKMARK-NAME-OR-RECORD."
(condition-case err
(funcall (or (bookmark-get-handler bookmark)
(funcall (or (bookmark-get-handler bookmark-name-or-record)
'bookmark-default-handler)
(bookmark-get-bookmark bookmark))
(bookmark-get-bookmark bookmark-name-or-record))
(bookmark-error-no-filename ;file-error
;; We were unable to find the marked file, so ask if user wants to
;; relocate the bookmark, else remind them to consider deletion.
(when (stringp bookmark)
;; `bookmark' can be either a bookmark name (from `bookmark-alist')
;; or a bookmark object. If it's an object, we assume it's a
;; bookmark used internally by some other package.
(let ((file (bookmark-get-filename bookmark)))
(when (stringp bookmark-name-or-record)
;; `bookmark-name-or-record' can be either a bookmark name
;; (from `bookmark-alist') or a bookmark object. If it's an
;; object, we assume it's a bookmark used internally by some
;; other package.
(let ((file (bookmark-get-filename bookmark-name-or-record)))
(when file ;Don't know how to relocate if there's no `file'.
;; If file is not a dir, directory-file-name just returns file.
(let ((display-name (directory-file-name file)))
@ -1105,20 +1090,20 @@ that file no longer exists, then offer interactively to relocate BOOKMARK."
(let ((use-dialog-box nil)
(use-file-dialog nil))
(if (y-or-n-p (concat display-name " nonexistent. Relocate \""
bookmark "\"? "))
bookmark-name-or-record "\"? "))
(progn
(bookmark-relocate bookmark)
(bookmark-relocate bookmark-name-or-record)
;; Try again.
(funcall (or (bookmark-get-handler bookmark)
(funcall (or (bookmark-get-handler bookmark-name-or-record)
'bookmark-default-handler)
(bookmark-get-bookmark bookmark)))
(bookmark-get-bookmark bookmark-name-or-record)))
(message
"Bookmark not relocated; consider removing it (%s)."
bookmark)
bookmark-name-or-record)
(signal (car err) (cdr err))))))))))
;; Added by db.
(when (stringp bookmark)
(setq bookmark-current-bookmark bookmark))
(when (stringp bookmark-name-or-record)
(setq bookmark-current-bookmark bookmark-name-or-record))
nil)
(put 'bookmark-error-no-filename
@ -1158,23 +1143,22 @@ Changes current buffer and point and returns nil, or signals a `file-error'."
nil))
;;;###autoload
(defun bookmark-relocate (bookmark)
"Relocate BOOKMARK to another file (reading file name with minibuffer).
BOOKMARK is a bookmark name (a string), not a bookmark record.
(defun bookmark-relocate (bookmark-name)
"Relocate BOOKMARK-NAME to another file, reading file name with minibuffer.
This makes an already existing bookmark point to that file, instead of
the one it used to point at. Useful when a file has been renamed
after a bookmark was set in it."
(interactive (list (bookmark-completing-read "Bookmark to relocate")))
(bookmark-maybe-historicize-string bookmark)
(bookmark-maybe-historicize-string bookmark-name)
(bookmark-maybe-load-default-file)
(let* ((bmrk-filename (bookmark-get-filename bookmark))
(let* ((bmrk-filename (bookmark-get-filename bookmark-name))
(newloc (abbreviate-file-name
(expand-file-name
(read-file-name
(format "Relocate %s to: " bookmark)
(format "Relocate %s to: " bookmark-name)
(file-name-directory bmrk-filename))))))
(bookmark-set-filename bookmark newloc)
(bookmark-set-filename bookmark-name newloc)
(setq bookmark-alist-modification-count
(1+ bookmark-alist-modification-count))
(if (bookmark-time-to-save-p)
@ -1183,17 +1167,16 @@ after a bookmark was set in it."
;;;###autoload
(defun bookmark-insert-location (bookmark &optional no-history)
"Insert the name of the file associated with BOOKMARK.
BOOKMARK is a bookmark name (a string), not a bookmark record.
(defun bookmark-insert-location (bookmark-name &optional no-history)
"Insert the name of the file associated with BOOKMARK-NAME.
Optional second arg NO-HISTORY means don't record this in the
minibuffer history list `bookmark-history'."
(interactive (list (bookmark-completing-read "Insert bookmark location")))
(or no-history (bookmark-maybe-historicize-string bookmark))
(or no-history (bookmark-maybe-historicize-string bookmark-name))
(let ((start (point)))
(prog1
(insert (bookmark-location bookmark))
(insert (bookmark-location bookmark-name))
(if (display-mouse-p)
(add-text-properties
start
@ -1207,42 +1190,39 @@ minibuffer history list `bookmark-history'."
;;;###autoload
(defalias 'bookmark-locate 'bookmark-insert-location)
(defun bookmark-location (bookmark)
"Return a description of the location of BOOKMARK.
BOOKMARK may be a bookmark name (a string) or a bookmark record."
(defun bookmark-location (bookmark-name-or-record)
"Return a description of the location of BOOKMARK-NAME-OR-RECORD."
(bookmark-maybe-load-default-file)
;; We could call the `handler' and ask for it to construct a description
;; dynamically: it would open up several new possibilities, but it
;; would have the major disadvantage of forcing to load each and
;; every handler when the user calls bookmark-menu.
(or (bookmark-prop-get bookmark 'location)
(bookmark-get-filename bookmark)
(or (bookmark-prop-get bookmark-name-or-record 'location)
(bookmark-get-filename bookmark-name-or-record)
"-- Unknown location --"))
;;;###autoload
(defun bookmark-rename (old &optional new)
"Change the name of OLD bookmark to NEW name.
If called from keyboard, prompt for OLD and NEW. If called from
menubar, select OLD from a menu and prompt for NEW.
(defun bookmark-rename (old-name &optional new-name)
"Change the name of OLD-NAME bookmark to NEW-NAME name.
If called from keyboard, prompt for OLD-NAME and NEW-NAME.
If called from menubar, select OLD-NAME from a menu and prompt for NEW-NAME.
Both OLD and NEW are bookmark names (strings), never bookmark records.
If called from Lisp, prompt for NEW if only OLD was passed as an
argument. If called with two strings, then no prompting is done. You
must pass at least OLD when calling from Lisp.
If called from Lisp, prompt for NEW-NAME if only OLD-NAME was passed
as an argument. If called with two strings, then no prompting is done.
You must pass at least OLD-NAME when calling from Lisp.
While you are entering the new name, consecutive C-w's insert
consecutive words from the text of the buffer into the new bookmark
name."
(interactive (list (bookmark-completing-read "Old bookmark name")))
(bookmark-maybe-historicize-string old)
(bookmark-maybe-historicize-string old-name)
(bookmark-maybe-load-default-file)
(setq bookmark-yank-point (point))
(setq bookmark-current-buffer (current-buffer))
(let ((newname
(or new ; use second arg, if non-nil
(let ((final-new-name
(or new-name ; use second arg, if non-nil
(read-from-minibuffer
"New name: "
nil
@ -1251,8 +1231,8 @@ name."
now-map)
nil
'bookmark-history))))
(bookmark-set-name old newname)
(setq bookmark-current-bookmark newname)
(bookmark-set-name old-name final-new-name)
(setq bookmark-current-bookmark final-new-name)
(bookmark-bmenu-surreptitiously-rebuild-list)
(setq bookmark-alist-modification-count
(1+ bookmark-alist-modification-count))
@ -1261,21 +1241,21 @@ name."
;;;###autoload
(defun bookmark-insert (bookmark)
"Insert the text of the file pointed to by bookmark BOOKMARK.
BOOKMARK is a bookmark name (a string), not a bookmark record.
(defun bookmark-insert (bookmark-name)
"Insert the text of the file pointed to by bookmark BOOKMARK-NAME.
BOOKMARK-NAME is a bookmark name (a string), not a bookmark record.
You may have a problem using this function if the value of variable
`bookmark-alist' is nil. If that happens, you need to load in some
bookmarks. See help on function `bookmark-load' for more about
this."
(interactive (list (bookmark-completing-read "Insert bookmark contents")))
(bookmark-maybe-historicize-string bookmark)
(bookmark-maybe-historicize-string bookmark-name)
(bookmark-maybe-load-default-file)
(let ((orig-point (point))
(str-to-insert
(save-current-buffer
(bookmark-handle-bookmark bookmark)
(bookmark-handle-bookmark bookmark-name)
(buffer-string))))
(insert str-to-insert)
(push-mark)
@ -1283,9 +1263,8 @@ this."
;;;###autoload
(defun bookmark-delete (bookmark &optional batch)
"Delete BOOKMARK from the bookmark list.
BOOKMARK is a bookmark name (a string), not a bookmark record.
(defun bookmark-delete (bookmark-name &optional batch)
"Delete BOOKMARK-NAME from the bookmark list.
Removes only the first instance of a bookmark with that name. If
there are one or more other bookmarks with the same name, they will
@ -1296,9 +1275,9 @@ probably because we were called from there."
(interactive
(list (bookmark-completing-read "Delete bookmark"
bookmark-current-bookmark)))
(bookmark-maybe-historicize-string bookmark)
(bookmark-maybe-historicize-string bookmark-name)
(bookmark-maybe-load-default-file)
(let ((will-go (bookmark-get-bookmark bookmark 'noerror)))
(let ((will-go (bookmark-get-bookmark bookmark-name 'noerror)))
(setq bookmark-alist (delq will-go bookmark-alist))
;; Added by db, nil bookmark-current-bookmark if the last
;; occurrence has been deleted
@ -1412,13 +1391,13 @@ they conflict with existing bookmark names."
(dolist (full-record new-list)
(bookmark-maybe-rename full-record names)
(setq bookmark-alist (nconc bookmark-alist (list full-record)))
(push (bookmark-name-from-full-record full-record) names))))
(push (bookmark-name-from-record full-record) names))))
(defun bookmark-maybe-rename (full-record names)
"Rename bookmark FULL-RECORD if its current name is already used.
This is a helper for `bookmark-import-new-list'."
(let ((found-name (bookmark-name-from-full-record full-record)))
(let ((found-name (bookmark-name-from-record full-record)))
(if (member found-name names)
;; We've got a conflict, so generate a new name
(let ((count 2)
@ -1576,7 +1555,7 @@ deletion, or > if it is flagged for displaying."
(add-text-properties (point-min) (point)
'(font-lock-face bookmark-menu-heading))
(dolist (full-record (bookmark-maybe-sort-alist))
(let ((name (bookmark-name-from-full-record full-record))
(let ((name (bookmark-name-from-record full-record))
(annotation (bookmark-get-annotation full-record))
(start (point))
end)
@ -1684,7 +1663,7 @@ mainly for debugging, and should not be necessary in normal use."
(while (< (point) (point-max))
(let ((bmrk (bookmark-bmenu-bookmark)))
(push bmrk bookmark-bmenu-hidden-bookmarks)
(let ((start (save-excursion (end-of-line) (point))))
(let ((start (line-end-position)))
(move-to-column bookmark-bmenu-file-column t)
;; Strip off `mouse-face' from the white spaces region.
(if (display-mouse-p)
@ -1746,16 +1725,15 @@ last full line, move to the last full line. The return value is undefined."
(get-text-property (point) 'bookmark-name-prop)))
(defun bookmark-show-annotation (bookmark)
"Display the annotation for bookmark named BOOKMARK in a buffer,
(defun bookmark-show-annotation (bookmark-name-or-record)
"Display the annotation for BOOKMARK-NAME-OR-RECORD in a buffer,
if an annotation exists."
(let ((annotation (bookmark-get-annotation bookmark)))
(let ((annotation (bookmark-get-annotation bookmark-name-or-record)))
(when (and annotation (not (string-equal annotation "")))
(save-excursion
(let ((old-buf (current-buffer)))
(pop-to-buffer (get-buffer-create "*Bookmark Annotation*") t)
(delete-region (point-min) (point-max))
;; (insert (concat "Annotation for bookmark '" bookmark "':\n\n"))
(insert annotation)
(goto-char (point-min))
(switch-to-buffer-other-window old-buf))))))
@ -1767,7 +1745,7 @@ if an annotation exists."
(pop-to-buffer (get-buffer-create "*Bookmark Annotation*") t)
(delete-region (point-min) (point-max))
(dolist (full-record bookmark-alist)
(let* ((name (bookmark-name-from-full-record full-record))
(let* ((name (bookmark-name-from-record full-record))
(ann (bookmark-get-annotation full-record)))
(insert (concat name ":\n"))
(if (and ann (not (string-equal ann "")))
@ -2225,5 +2203,4 @@ This also runs `bookmark-exit-hook'."
(provide 'bookmark)
;; arch-tag: 139f519a-dd0c-4b8d-8b5d-f9fcf53ca8f6
;;; bookmark.el ends here

View file

@ -1,7 +1,8 @@
;;; buff-menu.el --- buffer menu main function and support functions -*- coding:utf-8 -*-
;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002, 2003,
;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 2000, 2001, 2002,
;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: convenience
@ -303,9 +304,7 @@ negative ARG, display other buffers as well."
(defun Buffer-menu-buffer (error-if-non-existent-p)
"Return buffer described by this line of buffer menu."
(let* ((where (save-excursion
(beginning-of-line)
(+ (point) Buffer-menu-buffer-column)))
(let* ((where (+ (line-beginning-position) Buffer-menu-buffer-column))
(name (and (not (eobp)) (get-text-property where 'buffer-name)))
(buf (and (not (eobp)) (get-text-property where 'buffer))))
(if name
@ -924,5 +923,4 @@ For more information, see the function `buffer-menu'."
(set-buffer-modified-p nil)
(current-buffer))))
;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6
;;; buff-menu.el ends here

View file

@ -74,6 +74,9 @@ Summary of changes to "Calc"
Emacs 24.1
* Calc no longer uses the tex prefix for TeX specific unit
names when using TeX or LaTeX mode.
* Added option to highlight selections using faces.
* Gave `calc-histogram' the option of using a vector to determine the bins.

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