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:
commit
2c302df3a1
661 changed files with 39448 additions and 23155 deletions
|
|
@ -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")
|
||||
|
|
|
|||
68
ChangeLog
68
ChangeLog
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
5
INSTALL
5
INSTALL
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
42
admin/notes/elpa
Normal 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.
|
||||
172
configure.in
172
configure.in
|
|
@ -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 &&
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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+}}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
62
etc/DISTRIB
62
etc/DISTRIB
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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!
|
||||
|
|
|
|||
|
|
@ -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
210
etc/NEWS
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'.
|
||||
|
|
|
|||
64
etc/NEWS.23
64
etc/NEWS.23
|
|
@ -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
|
||||
|
||||
|
|
|
|||
19
etc/PROBLEMS
19
etc/PROBLEMS
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
39
etc/images/checked.xpm
Normal 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
39
etc/images/unchecked.xpm
Normal 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",
|
||||
"............",
|
||||
"............",
|
||||
"..@@@@@@@@+.",
|
||||
"..@@@@@@@@+.",
|
||||
"..@@@@@@@@+.",
|
||||
"..@@@@@@@@+.",
|
||||
"..@@@@@@@@+.",
|
||||
"..@@@@@@@@+.",
|
||||
"..@@@@@@@@+.",
|
||||
"..@++++++++.",
|
||||
".@+++++++++.",
|
||||
"............"};
|
||||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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) */
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
2783
lisp/ChangeLog.trunk
2783
lisp/ChangeLog.trunk
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
|
|
|
|||
373
lisp/allout.el
373
lisp/allout.el
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
337
lisp/bookmark.el
337
lisp/bookmark.el
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue