* mail/rmail.el (rmail-show-message-1): When displaying a mime message,

indicate start and finish in the echo area.

       * mail/rmail.el (rmail-epa-decrypt): Disregard <pre> before armor.
       Ignore more kinds of whitespace in mime headers.
       Modify the decrypted mime part's mime type so it will be displayed
       by default when visiting this message again.

       * net/browse-url.el (browse-url-firefox-program): Prefer IceCat, doc.
       (browse-url-firefox-arguments)
       (browse-url-firefox-startup-arguments): Doc fix.
This commit is contained in:
Richard Stallman 2015-04-05 08:36:56 -04:00
commit 4e23cd0ccd
467 changed files with 23465 additions and 14794 deletions

3
.gitattributes vendored
View file

@ -27,6 +27,9 @@ leim/MISC-DIC/pinyin.map -whitespace
lib-src/update-game-score.exe.manifest -whitespace
nt/nmake.defs -whitespace
# The upstream maintainer does not want to remove trailing whitespace.
doc/misc/texinfo.tex -whitespace=blank-at-eol
# Some files should not be treated as text when diffing or merging.
*.gpg binary
*.gz binary

View file

@ -37,16 +37,17 @@ specify the actual author; the committer defaults to you.
When using git, commit messages should use ChangeLog format, with the
following modifications:
- Add a single short line explaining the change, then an empty line,
then unindented ChangeLog entries.
- Start with a single unindented summary line explaining the change,
then an empty line, then unindented ChangeLog entries.
You can use various Emacs functions to ease this process; see (info
"(emacs)Change Log Commands") or
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
- The summary line is limited to 72 characters (enforced by a commit
hook). If you have trouble making that a good summary, add a
paragraph below it, before the individual file descriptions.
- Limit lines in commit messages to 78 characters, unless they consist
of a single word of at most 140 characters. If you have trouble
fitting the summary into 78 characters, add a summarizing paragraph
below the empty line and before the individual file descriptions.
- If only a single file is changed, the summary line can be the normal
file first line (starting with the asterisk). Then there is no
@ -57,6 +58,11 @@ following modifications:
the rationale for a change; that can be done in the commit message
between the summary line and the file entries.
- Commit messages should contain only printable UTF-8 characters.
- Commit messages should not contain the "Signed-off-by:" lines that
are used in some other projects.
** ChangeLog notes
- Emacs generally follows the GNU coding standards when it comes to
@ -187,6 +193,26 @@ know it does not, mark the NEWS entry with "---". If you know
that *all* the necessary documentation updates have been made, mark
the entry with "+++". Otherwise do not mark it.
Please see (info "(elisp)Documentation Tips") or
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
for more specific tips on Emacs's doc style. Use `checkdoc' to check
for documentation errors before submitting a patch.
** Test your changes.
Please test your changes before committing them or sending them to the
list.
Emacs uses ERT, Emacs Lisp Regression Testing, for testing. See (info
"(ert)") or https://www.gnu.org/software/emacs/manual/html_node/ert/
for more information on writing and running tests.
To run tests on the entire Emacs tree, run "make check" from the
top-level directory. Most tests are in the directory
"test/automated". From the "test/automated" directory, run "make
<filename>" to run the tests for <filename>.el(c). See
"test/automated/Makefile" for more information.
** Understanding Emacs Internals.
The best way to understand Emacs Internals is to read the code,

127
ChangeLog
View file

@ -1,6 +1,125 @@
2015-02-01 Joakim Verona <joakim@verona.se>
Support for the new Xwidget feature.
* configure.ac:
2015-04-03 Paul Eggert <eggert@cs.ucla.edu>
Port 'configure' to clang 3.5
* configure.ac: Add -Wno-unknown-attributes if clang; otherwise
clang 3.5.0 (Fedora 21 x86-64) complains
"/usr/include/glib-2.0/glib/gmem.h: ... warning: unknown attribute
'__alloc_size__' ignored". Use -Werror when checking for -nopie;
otherwise clang warns about -nopie instead of failing, and then
later it warns everytime the build uses -nopie.
2015-04-03 Ulrich Müller <ulm@gentoo.org>
* configure.ac (LD_SWITCH_SYSTEM_TEMACS): Add -nopie option if it
is supported, in order to avoid segfaults in temacs. (Bug#18784)
2015-03-27 Pete Williamson <petewil@chromium.org> (tiny change)
Add NaCl target
* configure.ac: Add a target for Chromium Native Client (NaCl).
2015-03-29 Eli Zaretskii <eliz@gnu.org>
* build-aux/dir_top (File): Fix the description of selecting a
menu item by its number. (Bug#20213)
2015-03-29 Paul Eggert <eggert@cs.ucla.edu>
Fix 'commit-msg' to cite 'CONTRIBUTE'
As suggested in:
http://lists.gnu.org/archive/html/emacs-devel/2015-03/msg00947.html
Also, have the two files match better.
* CONTRIBUTE: Match what's in build-aux/git-hooks/commit-msg.
* build-aux/git-hooks/commit-msg: Mention 'CONTRIBUTE'.
2015-03-23 Andreas Schwab <schwab@suse.de>
* configure.ac: Fix jpeg version check to work with gcc >= 5.
2015-03-21 Samer Masterson <samer@samertm.com>
* CONTRIBUTE (Test your changes.): New section.
(Document your changes.): Add doc tips.
2015-03-19 Paul Eggert <eggert@cs.ucla.edu>
Better port of pthread usage to FreeBSD
* configure.ac (ac_func_list): Omit pthread_sigmask, since
we check for that ourselves rather than relying on gnulib.
(HAVE_PTHREAD, LIB_PTHREAD): Port better to FreeBSD,
by also checking for pthread_create, pthread_self, pthread_sigmask.
Tighten the test for pthread_atfork while we're at it.
Fixes: bug#20136
Merge from gnulib
This incorporates:
2015-03-19 fdopendir: port better to MinGW
2015-03-18 fdopendir: fix typo in comment
2015-02-24 glob, etc.: port to MSVC v18 on MS-Windows 8.1
* lib/dirent.in.h, lib/fdopendir.c: Update from gnulib.
* lib/dirfd.c, m4/dirfd.m4: New files from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
2015-03-02 Robert Pluim <rpluim@gmail.com> (tiny change)
* configure.ac: Error out if with-file-notification=w32 is
specified on Cygwin. (Bug#19909)
2015-02-27 Paul Eggert <eggert@cs.ucla.edu>
Don't require GNU putenv
* configure.ac: Use system putenv even if it lacks GNU features, as
we don't need them. This works around a bug in FreeBSD 10.1 getenv.
Fixes: bug#19874
2015-02-25 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib
* lib/getdtablesize.c, m4/dup2.m4, m4/fcntl.m4:
Update from gnulib, incorporating:
2015-02-23 dup2: doc and test for Android bug
2015-02-23 Replace dup2() on Android
2015-02-22 Android doesn't define RLIM_SAVED_*
2015-02-21 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib
* lib/getdtablesize.c, lib/getopt.c, lib/signal.in.h, lib/tempname.c:
* lib/tempname.h, m4/dup2.m4, m4/fcntl.m4, m4/getdtablesize.m4:
Update from gnulib, incorporating:
2015-02-20 getdtablesize: port better for Android
2015-02-19 fcntl: Fix cross compiling
2015-02-18 dup2, fcntl: cross-compile better for Android
2015-02-18 getopt: don't crash on memory exhaustion
2015-02-17 tempname: allow compilation with C++ (trivial)
2015-02-17 dup2, fcntl: port to AIX
2015-02-16 getdtablesize, dup2, fcntl: port to Android
2015-02-11 getdtablesize, signal_h: Fix Android build
2015-02-11 maint: various whitespace cleanups in tempname
2015-02-13 Jan Djärv <jan.h.d@swipnet.se>
* configure.ac: Set locallisppath to empty for NS self contained,
unless --enable-loadllisppath was given (Bug#19850).
2015-02-09 Paul Eggert <eggert@cs.ucla.edu>
* configure.ac (HAVE_LIBXML2): Add missing comma.
2015-02-08 Paul Eggert <eggert@cs.ucla.edu>
Port to platforms lacking test -a and -o
* configure.ac (HAVE_LIBXML2):
Prefer '&&' and '||' to 'test -a' and 'test -o'.
2015-02-08 Ulrich Müller <ulm@gentoo.org>
* configure.ac (--with-gameuser): Default to 'games' group instead
of 'games' user.
2015-02-04 Paul Eggert <eggert@cs.ucla.edu>
* .gitattributes: Ignore blanks at EOL in texinfo.tex.
2015-01-28 Paul Eggert <eggert@cs.ucla.edu>
@ -337,7 +456,7 @@
2014-11-25 Glenn Morris <rgm@gnu.org>
* configure.ac: Fix yesterday's use of uninitialised $version.
* configure.ac: Fix yesterday's use of uninitialized $version.
2014-11-25 Oscar Fuentes <ofv@wanadoo.es>

View file

@ -1,2 +0,0 @@
-*-org-*-
Please see https://github.com/jave/xwidget-aux for documentation.

View file

@ -85,7 +85,6 @@ AMPERSAND_FULL_NAME
BROKEN_DATAGRAM_SOCKETS
BROKEN_FIONREAD
BROKEN_GET_CURRENT_DIR_NAME
BROKEN_NON_BLOCKING_CONNECT
BROKEN_PTY_READ_AFTER_EAGAIN
DEFAULT_SOUND_DEVICE
DEVICE_SEP

View file

@ -1,3 +1,16 @@
2015-03-31 Glenn Morris <rgm@gnu.org>
* update_autogen (commit): Switch prefix from "# " to "; ".
2015-03-03 Kelvin White <kwhite@gnu.org>
* MAINTAINERS: Add myself to section 2.
2015-03-03 Glenn Morris <rgm@gnu.org>
* admin.el (manual-meta-string): Use bug-gnu-emacs@gnu email address
rather than webmasters@gnu.
2015-01-28 Glenn Morris <rgm@gnu.org>
* update_autogen (commit): Prepend "# " to commit message.

View file

@ -78,6 +78,11 @@ Bastien Guerry
2.
==============================================================================
Kelvin White
ERC
lisp/erc/*
doc/misc/erc.texi
Eli Zaretskii
doc/*
lispref/*

View file

@ -248,7 +248,7 @@ Optional argument TYPE is type of output (nil means all)."
(defconst manual-meta-string
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
<link rev=\"made\" href=\"mailto:webmasters@gnu.org\">
<link rev=\"made\" href=\"mailto:bug-gnu-emacs@gnu.org\">
<link rel=\"icon\" type=\"image/png\" href=\"/graphics/gnu-head-mini.png\">
<meta name=\"ICBM\" content=\"42.256233,-71.006581\">
<meta name=\"DC.title\" content=\"gnu.org\">\n\n")

View file

@ -86,6 +86,7 @@ files.")
("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
("Jeremy Bertram Maitin-Shepard" "Jeremy Maitin-Shepard")
("Johan Bockgård" "Johan Bockgard")
("John F. Carr" "John F Carr")
("John J Foerch" "John Foerch")
("John W. Eaton" "John Eaton")
("Jonathan I. Kamens" "Jonathan Kamens")
@ -243,6 +244,7 @@ If REALNAME is nil, ignore that author.")
'(".*loaddefs.el$" ; not obsolete, but auto-generated
"\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting
"\\.arch-inventory$"
"ChangeLog\\(\\.[0-9]+\\)?\\'"
"automated/data/" ; not interesting
;; TODO lib/? Matches other things?
"build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'"
@ -357,6 +359,7 @@ Changes to files matching one of the regexps in this list are not listed.")
"All" "Version" "Everywhere" "Many" "Various" "files"
;; Directories.
"vms" "mac" "url" "tree-widget"
"info/dir"
)
"List of files and directories to ignore.
Changes to files in this list are not listed.")
@ -796,6 +799,7 @@ in the repository.")
("play/bruce.el" . "bruce.el")
("play/yow.el" . "yow.el")
("patcomp.el" . "patcomp.el")
("emulation/ws-mode.el" . "ws-mode.el")
;; From lisp to etc/forms.
("forms-d2.el" . "forms-d2.el")
("forms-pass.el" . "forms-pass.el")

View file

@ -52,9 +52,11 @@ General steps (for each step, check for possible errors):
number to that of the actual release. Pick a date about a week
from now when you intend to make the release. Use M-x add-release-logs
to add the ChangeLog entries for that date to the tar file (but
not yet to the repository). Name the tar file as
emacs-XX.Y-rc1.tar. If all goes well in the following week, you
can simply rename the file and use it for the actual release.
do not commit the entries to the repository until the actual release).
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the
following week, you can simply rename the file and use it for the
actual release. If you need another release candidate, remember
to adjust the ChangeLog entries.
4. autoreconf -i -I m4 --force
make bootstrap

View file

@ -7,6 +7,27 @@ package archive (elpa.gnu.org). See admin/notes/elpa for further
explanation, and the README file in the branch for usage
instructions.
* Install changes only on one branch, let them get merged elsewhere if needed.
In particular, install bug-fixes only on the release branch (if there
is one) and let them get synced to the trunk; do not install them by
hand on the trunk as well. E.g. if there is an active "emacs-24" branch
and you have a bug-fix appropriate for the next emacs-24.x release,
install it only on the emacs-24 branch, not on the trunk as well.
Installing things manually into more than one branch makes merges more
difficult.
http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01124.html
The exception is, if you know that the change will be difficult to
merge to the trunk (eg because the trunk code has changed a lot).
In that case, it's helpful if you can apply the change to both trunk
and branch yourself (when committing the branch change, indicate
in the commit log that it should not be merged to the trunk, by
including the phrase "Not to be merged to master", or any other phrase
that matches "merge").
* Installing changes from your personal branches.
If your branch has only a single commit, or many different real

View file

@ -228,7 +228,7 @@ commit ()
echo "Committing..."
$vcs commit -m "# Auto-commit of $type files." "$@" || return $?
$vcs commit -m "; Auto-commit of $type files." "$@" || return $?
[ "$vcs" = "git" ] && {
$vcs push || return $?

View file

@ -15,6 +15,7 @@ The Info Directory
In Emacs Info, you can click mouse button 2 on a menu item
or cross reference to follow it to its target.
Each menu line that starts with a * is a topic you can select with "m".
You can also select a topic by typing its ordinal number.
Every third topic has a red * to help pick the right number to type.
* Menu:

View file

@ -63,7 +63,7 @@ exec $awk '
/^#/ { next }
!/^.*$/ {
print "Invalid character (not UTF-8) in commit message"
print "Invalid character (not UTF-8) in commit message; see 'CONTRIBUTE'"
status = 1
}
@ -77,13 +77,13 @@ exec $awk '
sub(/^squash! /, "")
if ($0 ~ "^" space) {
print "White space at start of commit message'\''s first line"
print "White space at start of commit message'\''s first line; see 'CONTRIBUTE'"
status = 1
}
}
nlines == 2 && $0 ~ non_space {
print "Nonempty second line in commit message"
print "Nonempty second line in commit message; see 'CONTRIBUTE'"
status = 1
}
@ -97,28 +97,28 @@ exec $awk '
}
78 < length && $0 ~ space {
print "Line longer than 78 characters in commit message"
print "Line longer than 78 characters in commit message; see 'CONTRIBUTE'"
status = 1
}
140 < length {
print "Word longer than 140 characters in commit message"
print "Word longer than 140 characters in commit message; see 'CONTRIBUTE'"
status = 1
}
/^Signed-off-by: / {
print "'\''Signed-off-by:'\'' in commit message"
print "'\''Signed-off-by:'\'' in commit message; see 'CONTRIBUTE'"
status = 1
}
$0 ~ non_print {
print "Unprintable character in commit message"
print "Unprintable character in commit message; see 'CONTRIBUTE'"
status = 1
}
END {
if (nlines == 0) {
print "Empty commit message"
print "Empty commit message; see 'CONTRIBUTE'"
status = 1
}
exit status

View file

@ -374,8 +374,6 @@ otherwise for the first of `gfile' or `inotify' that is usable.])
],
[with_file_notification=$with_features])
OPTION_DEFAULT_OFF([xwidgets],[enable use of some gtk widgets in Emacs buffers])
## For the times when you want to build Emacs but don't have
## a suitable makeinfo, and can live without the manuals.
dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
@ -399,17 +397,12 @@ AC_ARG_WITH(gameuser,dnl
An argument prefixed by ':' specifies a group instead.])])
gameuser=
gamegroup=
# We don't test if we can actually chown/chgrp here, because configure
# may run without root privileges. lib-src/Makefile.in will handle
# any errors due to missing user/group gracefully.
case ${with_gameuser} in
no) ;;
"" | yes)
AC_MSG_CHECKING([whether a 'games' user exists])
if id -u games >/dev/null 2>&1; then
AC_MSG_RESULT([yes])
gameuser=games
else
AC_MSG_RESULT([no])
fi
;;
"" | yes) gamegroup=games ;;
:*) gamegroup=`echo "${with_gameuser}" | sed -e "s/://"` ;;
*) gameuser=${with_gameuser} ;;
esac
@ -430,6 +423,7 @@ AC_ARG_ENABLE(ns-self-contained,
EN_NS_SELF_CONTAINED=$enableval,
EN_NS_SELF_CONTAINED=yes)
locallisppathset=no
AC_ARG_ENABLE(locallisppath,
[AS_HELP_STRING([--enable-locallisppath=PATH],
[directories Emacs should search for lisp files specific
@ -437,7 +431,7 @@ AC_ARG_ENABLE(locallisppath,
if test "${enableval}" = "no"; then
locallisppath=
elif test "${enableval}" != "yes"; then
locallisppath=${enableval}
locallisppath=${enableval} locallisppathset=yes
fi)
AC_ARG_ENABLE(checking,
@ -618,6 +612,11 @@ case "${canonical}" in
## fi
;;
## Chromium Native Client
*-nacl )
opsys=nacl
;;
## Cygwin ports
*-*-cygwin )
opsys=cygwin
@ -786,6 +785,17 @@ AC_DEFUN([gl_CRYPTO_CHECK])
# Avoid gnulib's tests for HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW,
# as we don't use them.
AC_DEFUN([gl_FCNTL_O_FLAGS])
# Avoid gnulib's test for pthread_sigmask.
funcs=
for func in $ac_func_list; do
test $func = pthread_sigmask || AS_VAR_APPEND([funcs], [" $func"])
done
ac_func_list=$funcs
# Use the system putenv even if it lacks GNU features, as we don't need them,
# and the gnulib replacement runs afoul of a FreeBSD 10.1 bug; see Bug#19874.
AC_CHECK_FUNCS_ONCE([putenv])
AC_DEFUN([gl_FUNC_PUTENV],
[test "$ac_cv_func_putenv" = yes || REPLACE_PUTENV=1])
# Initialize gnulib right after choosing the compiler.
dnl Amongst other things, this sets AR and ARFLAGS.
@ -873,6 +883,7 @@ if test "$gl_gcc_warnings" != yes; then
gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
gl_WARN_ADD([-Wno-pointer-sign])
gl_WARN_ADD([-Wno-string-plus-int])
gl_WARN_ADD([-Wno-unknown-attributes])
fi
else
isystem='-isystem '
@ -1258,7 +1269,7 @@ dnl The function dump-emacs will not be defined and temacs will do
dnl (load "loadup") automatically unless told otherwise.
test "x$CANNOT_DUMP" = "x" && CANNOT_DUMP=no
case "$opsys" in
your-opsys-here) CANNOT_DUMP=yes ;;
nacl) CANNOT_DUMP=yes ;;
esac
if test "$CANNOT_DUMP" = "yes"; then
@ -1878,6 +1889,7 @@ if test "${HAVE_NS}" = yes; then
infodir="\${ns_appresdir}/info"
mandir="\${ns_appresdir}/man"
lispdir="\${ns_appresdir}/lisp"
test "$locallisppathset" = no && locallisppath=""
INSTALL_ARCH_INDEP_EXTRA=
fi
@ -2098,7 +2110,7 @@ hybrid_malloc=
case "$opsys" in
## darwin ld insists on the use of malloc routines in the System framework.
darwin|mingw32|sol2-10) system_malloc=yes ;;
darwin | mingw32 | nacl | sol2-10) system_malloc=yes ;;
cygwin) hybrid_malloc=yes;;
esac
@ -2179,39 +2191,62 @@ AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
dnl Check for the POSIX thread library.
LIB_PTHREAD=
if test "$opsys" != "mingw32"; then
AC_CHECK_HEADERS_ONCE(pthread.h)
if test "$ac_cv_header_pthread_h"; then
dnl gmalloc.c uses pthread_atfork, which is not available on older-style
dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
dnl testing for pthread_kill if Emacs uses gmalloc.c.
if test "$GMALLOC_OBJ" = gmalloc.o; then
emacs_pthread_function=pthread_atfork
else
emacs_pthread_function=pthread_kill
if test "$ac_cv_header_pthread_h" && test "$opsys" != "mingw32"; then
AC_CACHE_CHECK([for pthread library],
[emacs_cv_pthread_lib],
[emacs_cv_pthread_lib=no
OLD_CPPFLAGS=$CPPFLAGS
OLD_LIBS=$LIBS
for emacs_pthread_lib in 'none needed' -lpthread; do
case $emacs_pthread_lib in
-*) LIBS="$OLD_LIBS $emacs_pthread_lib";;
esac
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <pthread.h>
#include <signal.h>
sigset_t old_mask, new_mask;
void noop (void) {}]],
[[pthread_t th = pthread_self ();
int status = 0;
status += pthread_create (&th, 0, 0, 0);
status += pthread_sigmask (SIG_BLOCK, &new_mask, &old_mask);
status += pthread_kill (th, 0);
#if ! (defined SYSTEM_MALLOC || defined HYBRID_MALLOC \
|| defined DOUG_LEA_MALLOC)
/* Test for pthread_atfork only if gmalloc uses it,
as older-style hosts like MirBSD 10 lack it. */
status += pthread_atfork (noop, noop, noop);
#endif
return status;]])],
[emacs_cv_pthread_lib=$emacs_pthread_lib])
LIBS=$OLD_LIBS
if test "$emacs_cv_pthread_lib" != no; then
break
fi
done
CPPFLAGS=$OLD_CPPFLAGS])
if test "$emacs_cv_pthread_lib" != no; then
AC_DEFINE([HAVE_PTHREAD], 1, [Define to 1 if you have POSIX threads.])
case $emacs_cv_pthread_lib in
-*) LIB_PTHREAD=$emacs_cv_pthread_lib;;
esac
ac_cv_func_pthread_sigmask=yes
# Some systems optimize for single-threaded programs by default, and
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
case $opsys in
hpux* | sol*)
AC_DEFINE([_REENTRANT], 1,
[Define to 1 if your system requires this in multithreaded code.]);;
aix4-2)
AC_DEFINE([_THREAD_SAFE], 1,
[Define to 1 if your system requires this in multithreaded code.]);;
esac
fi
OLD_LIBS=$LIBS
AC_SEARCH_LIBS([$emacs_pthread_function], [pthread],
[AC_DEFINE([HAVE_PTHREAD], [1],
[Define to 1 if you have pthread (-lpthread).])
# Some systems optimize for single-threaded programs by default, and
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
case $opsys in
sol*)
AC_DEFINE([_REENTRANT], 1,
[Define to 1 if your system requires this in multithreaded code.]);;
aix4-2)
AC_DEFINE([_THREAD_SAFE], 1,
[Define to 1 if your system requires this in multithreaded code.]);;
esac])
if test "X$LIBS" != "X$OLD_LIBS"; then
eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
fi
LIBS=$OLD_LIBS
fi
AC_SUBST([LIB_PTHREAD])
fi
dnl Check for need for bigtoc support on IBM AIX
@ -2529,41 +2564,6 @@ if test "${HAVE_GTK}" = "yes"; then
term_header=gtkutil.h
fi
HAVE_XWIDGETS=no
HAVE_WEBKIT=no
HAVE_GIR=no
if test "${with_xwidgets}" != "no" && test "${USE_GTK_TOOLKIT}" = "GTK3" && test "$window_system" != "none" ; then
echo "xwidgets enabled, checking webkit, and others"
HAVE_XWIDGETS=yes
AC_DEFINE(HAVE_XWIDGETS, 1, [Define to 1 if you have xwidgets support.])
dnl xwidgets
dnl - enable only if GTK3 is enabled, and we have a window system
dnl - check for webkit and gobject introspection
#webkit version for gtk3.
WEBKIT_REQUIRED=1.4.0
WEBKIT_MODULES="webkitgtk-3.0 >= $WEBKIT_REQUIRED"
if test "${with_gtk3}" = "yes"; then
PKG_CHECK_MODULES(WEBKIT, $WEBKIT_MODULES, HAVE_WEBKIT=yes, HAVE_WEBKIT=no)
if test $HAVE_WEBKIT = yes; then
AC_DEFINE(HAVE_WEBKIT_OSR, 1, [Define to 1 if you have webkit_osr support.])
fi
fi
GIR_REQUIRED=1.32.1
GIR_MODULES="gobject-introspection-1.0 >= $GIR_REQUIRED"
PKG_CHECK_MODULES(GIR, $GIR_MODULES, HAVE_GIR=yes, HAVE_GIR=no)
if test $HAVE_GIR = yes; then
AC_DEFINE(HAVE_GIR, 1, [Define to 1 if you have GIR support.])
fi
fi
CFLAGS=$OLD_CFLAGS
LIBS=$OLD_LIBS
@ -2699,6 +2699,11 @@ fi
dnl MS Windows native file monitor is available for mingw32 only.
case $with_file_notification,$opsys in
w32,cygwin)
AC_MSG_ERROR([`--with-file-notification=w32' was specified, but
this is only supported on MS-Windows native and MinGW32 builds.
Consider using gfile instead.])
;;
w32,* | yes,mingw32)
AC_CHECK_HEADER(windows.h)
if test "$ac_cv_header_windows_h" = yes ; then
@ -3198,10 +3203,12 @@ if test "${opsys}" = "mingw32"; then
AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
if test "${HAVE_JPEG}" = "yes"; then
AC_DEFINE(HAVE_JPEG)
AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
[#include <jpeglib.h>
version=JPEG_LIB_VERSION
],
AC_EGREP_CPP([version 6b or later],
[#include <jpeglib.h>
#if JPEG_LIB_VERSION >= 62
version 6b or later
#endif
],
[AC_DEFINE(HAVE_JPEG)],
[AC_MSG_WARN([libjpeg found, but not version 6b or later])
HAVE_JPEG=no])
@ -3217,10 +3224,12 @@ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library (-ljpeg).])dnl
if test "${HAVE_JPEG}" = "yes"; then
AC_DEFINE(HAVE_JPEG)
AC_EGREP_CPP([version= *(6[2-9]|[7-9][0-9])],
AC_EGREP_CPP([version 6b or later],
[#include <jpeglib.h>
version=JPEG_LIB_VERSION
],
#if JPEG_LIB_VERSION >= 62
version 6b or later
#endif
],
[AC_DEFINE(HAVE_JPEG)],
[AC_MSG_WARN([libjpeg found, but not version 6b or later])
HAVE_JPEG=no])
@ -3533,7 +3542,7 @@ if test "${with_xml2}" != "no"; then
### I'm not sure what the version number should be, so I just guessed.
EMACS_CHECK_MODULES([LIBXML2], [libxml-2.0 > 2.6.17])
# Built-in libxml2 on OS X 10.8 lacks libxml-2.0.pc.
if test "${HAVE_LIBXML2}" != "yes" -a "$opsys" = "darwin"; then
if test "${HAVE_LIBXML2}" != "yes" && test "$opsys" = "darwin"; then
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I$xcsdkdir/usr/include/libxml2"
AC_CHECK_HEADER(libxml/HTMLparser.h,
@ -3547,7 +3556,7 @@ if test "${with_xml2}" != "no"; then
fi
if test "${HAVE_LIBXML2}" = "yes"; then
if test "${opsys}" != "mingw32"; then
AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no
AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no,
[$LIBXML2_LIBS])
else
LIBXML2_LIBS=""
@ -4183,7 +4192,7 @@ emacs_broken_SIGIO=no
case $opsys in
dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
dnl See eg <http://article.gmane.org/gmane.os.openbsd.ports/46831>.
hpux* | irix6-5 | openbsd | sol2* | unixware )
hpux* | irix6-5 | nacl | openbsd | sol2* | unixware )
emacs_broken_SIGIO=yes
;;
@ -4345,7 +4354,7 @@ case $opsys in
AC_DEFINE(FIRST_PTY_LETTER, ['p'])
;;
gnu-linux | gnu-kfreebsd | dragonfly | freebsd | netbsd )
gnu-linux | gnu-kfreebsd | dragonfly | freebsd | netbsd | nacl )
dnl if HAVE_GRANTPT
if test "x$ac_cv_func_grantpt" = xyes; then
AC_DEFINE(UNIX98_PTYS, 1, [Define if the system has Unix98 PTYs.])
@ -4550,10 +4559,10 @@ if test $emacs_cv_func_sigsetjmp = yes; then
fi
# We need all of these features to handle C stack overflows.
if test "$ac_cv_header_sys_resource_h" = "yes" -a \
"$ac_cv_func_getrlimit" = "yes" -a \
"$emacs_cv_func_sigsetjmp" = "yes" -a \
"$emacs_cv_alternate_stack" = yes; then
if test "$ac_cv_header_sys_resource_h" = "yes" &&
test "$ac_cv_func_getrlimit" = "yes" &&
test "$emacs_cv_func_sigsetjmp" = "yes" &&
test "$emacs_cv_alternate_stack" = yes; then
AC_DEFINE([HAVE_STACK_OVERFLOW_HANDLING], 1,
[Define to 1 if C stack overflow can be handled in some cases.])
fi
@ -4644,7 +4653,7 @@ esac
AC_CACHE_CHECK([for usable FIONREAD], [emacs_cv_usable_FIONREAD],
[case $opsys in
aix4-2)
aix4-2 | nacl)
dnl BUILD 9008 - FIONREAD problem still exists in X-Windows.
emacs_cv_usable_FIONREAD=no
;;
@ -4843,7 +4852,7 @@ TOOLKIT_LIBW=
case "$USE_X_TOOLKIT" in
MOTIF) TOOLKIT_LIBW="$MOTIF_LIBW" ;;
LUCID) TOOLKIT_LIBW="$LUCID_LIBW" ;;
none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS -lXcomposite" ;;
none) test "x$HAVE_GTK" = "xyes" && TOOLKIT_LIBW="$GTK_LIBS" ;;
esac
AC_SUBST(TOOLKIT_LIBW)
@ -5019,11 +5028,29 @@ case "$opsys" in
esac
;;
openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
*) LD_SWITCH_SYSTEM_TEMACS= ;;
esac
# -nopie fixes a temacs segfault on Gentoo, OpenBSD, and other systems
# with "hardened" GCC configurations for some reason (Bug#18784).
# We don't know why -nopie works, but not segfaulting is better than
# segfaulting. Use -Werror when trying -nopie, otherwise clang keeps
# warning that it does not understand -nopie.
AC_CACHE_CHECK([whether $CC accepts -nopie],
[emacs_cv_prog_cc_nopie],
[emacs_save_CFLAGS=$CFLAGS
emacs_save_LDFLAGS=$LDFLAGS
CFLAGS="$CFLAGS -Werror"
LDFLAGS="$LDFLAGS -nopie"
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[emacs_cv_prog_cc_nopie=yes],
[emacs_cv_prog_cc_nopie=no])
CFLAGS=$emacs_save_CFLAGS
LDFLAGS=$emacs_save_LDFLAGS])
if test "$emacs_cv_prog_cc_nopie" = yes; then
LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -nopie"
fi
if test x$ac_enable_profiling != x ; then
case $opsys in
*freebsd | gnu-linux) ;;
@ -5164,10 +5191,6 @@ echo " Does Emacs use -lxft? ${HAVE_XFT}"
echo " Does Emacs directly use zlib? ${HAVE_ZLIB}"
echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
echo " Does Emacs support Xwidgets? ${HAVE_XWIDGETS}"
echo " Does xwidgets support webkit(requires gtk3)? ${HAVE_WEBKIT}"
echo " Does xwidgets support gobject introspection? ${HAVE_GIR}"
echo
if test -n "${EMACSDATA}"; then

View file

@ -1,3 +1,43 @@
2015-03-29 Dani Moncayo <dmoncayo@gmail.com>
* files.texi (Diff Mode): Doc fix.
2015-03-18 Eli Zaretskii <eliz@gnu.org>
* misc.texi (Term Mode):
* programs.texi (Basic Indent, Custom C Indent):
* mini.texi (Minibuffer History):
* text.texi (Org Mode):
* display.texi (View Mode): Use @kbd where @key was mistakenly
used. (Bug#20135)
2015-03-18 Eli Zaretskii <eliz@gnu.org>
* basic.texi (Moving Point): Improve indexing for HOME and END.
* cmdargs.texi (General Variables): Improve indexing for
environment variables.
* msdog.texi (Windows HOME):
* msdog-xtra.texi (MS-DOS File Names): Remove markup from HOME in
the index entries. (Bug#20105)
2015-02-26 Eli Zaretskii <eliz@gnu.org>
* msdog.texi (Windows Files): Document characters invalid in
Windows file names. (Bug#19463)
* custom.texi (Customization Groups): Update the looks of the
Customize Group buffer.
* programs.texi (Hungry Delete): Fix a typo: "C-d" instead of
"C-c C-d" in hungry-delete mode.
2015-02-26 Eli Zaretskii <eliz@gnu.org>
* mule.texi (Language Environments): Work around refill bug in
makeinfo 4.x. (Bug#19697)
2015-01-28 Eli Zaretskii <eliz@gnu.org>
* cmdargs.texi (Action Arguments): Clarify into which buffer

View file

@ -204,7 +204,7 @@ for Korean Hanja.
@item
Andrew Choi and Yamamoto Mitsuharu wrote the Carbon support, used
prior to Emacs 23 for Mac OS. Yamamoto Mitsuharu continued to
prior to Emacs 23 for Mac OS@. Yamamoto Mitsuharu continued to
contribute to Mac OS support in the newer Nextstep port; and also
improved support for multi-monitor displays.

View file

@ -206,14 +206,14 @@ preserves position within the line, like @kbd{C-n}.
@item C-a
@itemx @key{Home}
@kindex C-a
@kindex HOME
@kindex HOME key
@findex move-beginning-of-line
Move to the beginning of the line (@code{move-beginning-of-line}).
@item C-e
@itemx @key{End}
@kindex C-e
@kindex END
@kindex END key
@findex move-end-of-line
Move to the end of the line (@code{move-end-of-line}).

View file

@ -642,7 +642,7 @@ the directory names in reverse order, so that @file{/top/middle/file}
becomes @samp{file\middle\top}, while @code{post-forward} puts them in
forward order after the file name, as in @samp{file|top/middle}. If
@code{uniquify-buffer-name-style} is set to @code{nil}, the buffer
names simply get @samp{<2>}, @samp{<3>}, etc. appended.
names simply get @samp{<2>}, @samp{<3>}, etc.@: appended.
Which rule to follow for putting the directory names in the buffer
name is not very important if you are going to @emph{look} at the

View file

@ -442,22 +442,31 @@ special meanings in Emacs. Most of these variables are also used by
some other programs. Emacs does not require any of these environment
variables to be set, but it uses their values if they are set.
@vtable @env
@c This used to be @vtable, but that enters the variables alone into
@c the Variable Index, which in some cases, like ``HOME'', might be
@c confused with keys by that name, and other cases, like ``NAME'',
@c might be confused with general-purpose phrases.
@table @env
@item CDPATH
@vindex CDPATH, environment variable
Used by the @code{cd} command to search for the directory you specify,
when you specify a relative directory name.
@item DBUS_SESSION_BUS_ADDRESS
@vindex DBUS_SESSION_BUS_ADDRESS, environment variable
Used by D-Bus when Emacs is compiled with it. Usually, there is no
need to change it. Setting it to a dummy address, like
@samp{unix:path=/dev/null}, suppresses connections to the D-Bus session
bus as well as autolaunching the D-Bus session bus if not running yet.
@item EMACSDATA
@vindex EMACSDATA, environment variable
Directory for the architecture-independent files that come with Emacs.
This is used to initialize the variable @code{data-directory}.
@item EMACSDOC
#vindex EMACSDOC, environment variable
Directory for the documentation string file, which is used to
initialize the Lisp variable @code{doc-directory}.
@item EMACSLOADPATH
#vindex EMACSLOADPATH, environment variable
A colon-separated list of directories@footnote{Here and below,
whenever we say ``colon-separated list of directories'', it pertains
to Unix and GNU/Linux systems. On MS-DOS and MS-Windows, the
@ -471,23 +480,28 @@ the default @code{load-path}. To specify an empty element in the
middle of the list, use 2 colons in a row, as in
@samp{EMACSLOADPATH="/tmp::/foo"}.
@item EMACSPATH
@vindex EMACSPATH, environment variable
A colon-separated list of directories to search for executable files.
If set, Emacs uses this in addition to @env{PATH} (see below) when
initializing the variable @code{exec-path} (@pxref{Shell}).
@item EMAIL
@vindex EMAIL, environment variable
@vindex user-mail-address@r{, initialization}
Your email address; used to initialize the Lisp variable
@code{user-mail-address}, which the Emacs mail interface puts into the
@samp{From} header of outgoing messages (@pxref{Mail Headers}).
@item ESHELL
@vindex ESHELL, environment variable
Used for shell-mode to override the @env{SHELL} environment variable
(@pxref{Interactive Shell}).
@item HISTFILE
@vindex HISTFILE, environment variable
The name of the file that shell commands are saved in between logins.
This variable defaults to @file{~/.bash_history} if you use Bash, to
@file{~/.sh_history} if you use ksh, and to @file{~/.history}
otherwise.
@item HOME
@vindex HOME, environment variable
The location of your files in the directory tree; used for
expansion of file names starting with a tilde (@file{~}). On MS-DOS,
it defaults to the directory from which Emacs was started, with
@ -499,6 +513,7 @@ where @var{username} is your user name), though for backwards
compatibility @file{C:/} will be used instead if a @file{.emacs} file
is found there.
@item HOSTNAME
@vindex HOSTNAME, environment variable
The name of the machine that Emacs is running on.
@c complete.el is obsolete since 24.1.
@ignore
@ -507,15 +522,24 @@ A colon-separated list of directories. Used by the @code{complete} package
to search for files.
@end ignore
@item INFOPATH
@vindex INFOPATH, environment variable
A colon-separated list of directories in which to search for Info files.
@item LC_ALL
@vindex LC_ALL, environment variable
@itemx LC_COLLATE
@vindex LC_COLLATE, environment variable
@itemx LC_CTYPE
@vindex LC_CTYPE, environment variable
@itemx LC_MESSAGES
@vindex LC_MESSAGES, environment variable
@itemx LC_MONETARY
@vindex LC_MONETARY, environment variable
@itemx LC_NUMERIC
@vindex LC_NUMERIC, environment variable
@itemx LC_TIME
@vindex LC_TIME, environment variable
@itemx LANG
@vindex LANG, environment variable
The user's preferred locale. The locale has six categories, specified
by the environment variables @env{LC_COLLATE} for sorting,
@env{LC_CTYPE} for character encoding, @env{LC_MESSAGES} for system
@ -537,73 +561,92 @@ matched against entries in @code{locale-language-names},
@code{locale-preferred-coding-systems}, to select a default language
environment and coding system. @xref{Language Environments}.
@item LOGNAME
@vindex LOGNAME, environment variable
The user's login name. See also @env{USER}.
@item MAIL
@vindex MAIL, environment variable
The name of your system mail inbox.
@ifnottex
@item MH
@vindex MH, environment variable
Name of setup file for the mh system. @xref{Top,,MH-E,mh-e, The Emacs
Interface to MH}.
@end ifnottex
@item NAME
@vindex NAME, environment variable
Your real-world name. This is used to initialize the variable
@code{user-full-name} (@pxref{Mail Headers}).
@item NNTPSERVER
@vindex NNTPSERVER, environment variable
The name of the news server. Used by the mh and Gnus packages.
@item ORGANIZATION
@vindex ORGANIZATION, environment variable
The name of the organization to which you belong. Used for setting the
`Organization:' header in your posts from the Gnus package.
@item PATH
@vindex PATH, environment variable
A colon-separated list of directories containing executable files.
This is used to initialize the variable @code{exec-path}
(@pxref{Shell}).
@item PWD
@vindex PWD, environment variable
If set, this should be the default directory when Emacs was started.
@item REPLYTO
@vindex REPLYTO, environment variable
If set, this specifies an initial value for the variable
@code{mail-default-reply-to} (@pxref{Mail Headers}).
@item SAVEDIR
@vindex SAVEDIR, environment variable
The name of a directory in which news articles are saved by default.
Used by the Gnus package.
@item SHELL
@vindex SHELL, environment variable
The name of an interpreter used to parse and execute programs run from
inside Emacs.
@item SMTPSERVER
@vindex SMTPSERVER, environment variable
The name of the outgoing mail server. This is used to initialize the
variable @code{smtpmail-smtp-server} (@pxref{Mail Sending}).
@cindex background mode, on @command{xterm}
@item TERM
@vindex TERM, environment variable
The type of the terminal that Emacs is using. This variable must be
set unless Emacs is run in batch mode. On MS-DOS, it defaults to
@samp{internal}, which specifies a built-in terminal emulation that
handles the machine's own display.
@item TERMCAP
@vindex TERMCAP, environment variable
The name of the termcap library file describing how to program the
terminal specified by @env{TERM}. This defaults to
@file{/etc/termcap}.
@item TMPDIR
@vindex TMPDIR, environment variable
@itemx TMP
@vindex TMP, environment variable
@itemx TEMP
@vindex TEMP, environment variable
These environment variables are used to initialize the variable
@code{temporary-file-directory}, which specifies a directory in which
to put temporary files (@pxref{Backup}). Emacs tries to use
@env{TMPDIR} first. If that is unset, Emacs normally falls back on
@file{/tmp}, but on MS-Windows and MS-DOS it instead falls back on
@env{TMP}, then @env{TEMP}, and finally @file{c:/temp}.
@item TZ
@vindex TZ, environment variable
This specifies the current time zone and possibly also daylight
saving time information. On MS-DOS, if @env{TZ} is not set in the
environment when Emacs starts, Emacs defines a default value as
appropriate for the country code returned by DOS@. On MS-Windows, Emacs
does not use @env{TZ} at all.
@item USER
@vindex USER, environment variable
The user's login name. See also @env{LOGNAME}. On MS-DOS, this
defaults to @samp{root}.
@item VERSION_CONTROL
@vindex VERSION_CONTROL, environment variable
Used to initialize the @code{version-control} variable (@pxref{Backup
Names}).
@end vtable
@end table
@node Misc Variables
@appendixsubsec Miscellaneous Variables

View file

@ -82,14 +82,12 @@ top-level @code{Emacs} group. It looks like this, in part:
@c @page
@smallexample
@group
To apply changes, use the Save or Set buttons.
For details, see [Saving Customizations] in the [Emacs manual].
For help, see [Easy Customization] in the [Emacs manual].
________________________________________ [ Search ]
Operate on all settings in this buffer:
[ Set for current session ] [ Save for future sessions ]
[ Undo edits ] [ Reset to saved ] [ Erase customizations ] [ Exit ]
[ Revert... ] [ Apply ] [ Apply and Save ]
Emacs group: Customization of the One True Editor.
@ -97,7 +95,6 @@ Emacs group: Customization of the One True Editor.
See also [Manual].
[Editing] : Basic text editing facilities.
[Convenience] : Convenience features for faster editing.
@var{more second-level groups}

View file

@ -138,7 +138,7 @@ instructs the scrolling commands not to fontify (@pxref{Font Lock})
any unfontified text they scroll over, instead to assume it has the
default face. This can cause Emacs to scroll to somewhat wrong buffer
positions when the faces in use are not all the same size, even with
single (i.e. without auto-repeat) scrolling operations.
single (i.e., without auto-repeat) scrolling operations.
@vindex scroll-up
@vindex scroll-down
@ -441,7 +441,7 @@ it. @xref{Disabling}.
screenfuls. It provides commands for scrolling through the buffer
conveniently but not for changing it. Apart from the usual Emacs
cursor motion commands, you can type @key{SPC} to scroll forward one
windowful, @key{S-@key{SPC}} or @key{DEL} to scroll backward, and @kbd{s} to
windowful, @kbd{S-@key{SPC}} or @key{DEL} to scroll backward, and @kbd{s} to
start an incremental search.
@kindex q @r{(View mode)}
@ -1201,7 +1201,7 @@ Highlight space and non-breaking space characters.
@item lines
@vindex whitespace-line-column
Highlight lines longer than 80 lines. To change the column limit,
Highlight lines longer than 80 columns. To change the column limit,
customize the variable @code{whitespace-line-column}.
@item newline

View file

@ -1368,7 +1368,7 @@ remains ``correct''. To disable automatic line number correction,
change the variable @code{diff-update-on-the-fly} to @code{nil}.
Diff mode treats each hunk as an ``error message'', similar to
Compilation mode. Thus, you can use commands such as @kbd{C-x '} to
Compilation mode. Thus, you can use commands such as @kbd{C-x `} to
visit the corresponding source locations. @xref{Compilation Mode}.
In addition, Diff mode provides the following commands to navigate,

View file

@ -955,7 +955,7 @@ bar width, change the @code{scroll-bar-width} frame parameter
@cindex overscrolling
If you're using Emacs on X (with GTK+ or Motif), you can customize the
variable @code{scroll-bar-adjust-thumb-portion} to control
@dfn{overscrolling} of the scroll bar, i.e. dragging the thumb down even
@dfn{overscrolling} of the scroll bar, i.e., dragging the thumb down even
when the end of the buffer is visible. If its value is
non-@code{nil}, the scroll bar can be dragged downwards even if the
end of the buffer is shown; if @code{nil}, the thumb will be at the

View file

@ -848,7 +848,7 @@ shifting the original text to the right.
The command @kbd{C-x @key{SPC}} (@code{rectangle-mark-mode}) toggles
whether the region-rectangle or the standard region is highlighted
(first activating the region if necessary). When this mode is enabled,
commands that resize the region (@kbd{C-f}, @kbd{C-n} etc.) do
commands that resize the region (@kbd{C-f}, @kbd{C-n} etc.)@: do
so in a rectangular fashion, and killing and yanking operate on the
rectangle. @xref{Killing}. The mode persists only as long as the
region is active.

View file

@ -622,7 +622,7 @@ typed @kbd{M-p}), Emacs tries fetching from a list of default
arguments: values that you are likely to enter. You can think of this
as moving through the ``future history'' list.
If you edit the text inserted by the @kbd{M-p} or @key{M-n}
If you edit the text inserted by the @kbd{M-p} or @kbd{M-n}
minibuffer history commands, this does not change its entry in the
history list. However, the edited argument does go at the end of the
history list when you submit it.

View file

@ -1426,7 +1426,7 @@ char mode.
@table @kbd
@item C-c C-c
Send a literal @key{C-c} to the sub-shell.
Send a literal @kbd{C-c} to the sub-shell.
@item C-c @var{char}
This is equivalent to @kbd{C-x @var{char}} in normal Emacs. For

View file

@ -351,7 +351,7 @@ long file name support, set the environment variable @env{LFN} to
DOS programs to access long file names, so Emacs built for MS-DOS will
only see their short 8+3 aliases.
@cindex @env{HOME} directory under MS-DOS
@cindex HOME directory under MS-DOS
MS-DOS has no notion of home directory, so Emacs on MS-DOS pretends
that the directory where it is installed is the value of the @env{HOME}
environment variable. That is, if your Emacs binary,

View file

@ -249,7 +249,42 @@ removable and remote volumes, where this could potentially slow down
Dired and other related features. The value of @code{nil} means never
issue those system calls. Non-@code{nil} values are more useful on
NTFS volumes, which support hard links and file security, than on FAT,
FAT32, and XFAT volumes.
FAT32, and exFAT volumes.
@cindex file names, invalid characters on MS-Windows
Unlike Unix, MS-Windows file systems restrict the set of characters
that can be used in a file name. The following characters are not
allowed:
@itemize @bullet
@item
Shell redirection symbols @samp{<}, @samp{>}, and @samp{|}.
@item
Colon @samp{:} (except after the drive letter).
@item
Forward slash @samp{/} and backslash @samp{\} (except as directory
separators).
@item
Wildcard characters @samp{*} and @samp{?}.
@item
Control characters whose codepoints are 1 through 31 decimal. In
particular, newlines in file names are not allowed.
@item
The null character, whose codepoint is zero (this limitation exists on
Unix filesystems as well).
@end itemize
@noindent
In addition, referencing any file whose name matches a DOS character
device, such as @file{NUL} or @file{LPT1} or @file{PRN} or @file{CON},
with or without any file-name extension, will always resolve to those
character devices, in any directory. Therefore, only use such file
names when you want to use the corresponding character device.
@node ls in Lisp
@section Emulation of @code{ls} on MS-Windows
@ -390,7 +425,7 @@ names, which might cause misalignment of columns in Dired display.
@node Windows HOME
@section HOME and Startup Directories on MS-Windows
@cindex @code{HOME} directory on MS-Windows
@cindex HOME directory on MS-Windows
The Windows equivalent of @code{HOME} is the @dfn{user-specific
application data directory}. The actual location depends on the

View file

@ -265,123 +265,101 @@ the list of supported language environments, and use the command
for more information about the language environment @var{lang-env}.
Supported language environments include:
@c @cindex entries below are split between portions of the list to
@c make them more accurate, i.e., land on the line that mentions the
@c language. However, makeinfo 4.x doesn't fill inside @quotation
@c lines that follow a @cindex entry and whose text has no whitespace.
@c To work around, we group the language environments together, so
@c that the blank that separates them triggers refill.
@quotation
@cindex ASCII
ASCII,
@cindex Arabic
Arabic,
ASCII, Arabic,
@cindex Belarusian
Belarusian,
@cindex Bengali
Bengali,
Belarusian, Bengali,
@cindex Brazilian Portuguese
Brazilian Portuguese,
@cindex Bulgarian
Bulgarian,
Brazilian Portuguese, Bulgarian,
@cindex Burmese
Burmese,
@cindex Cham
Cham,
Burmese, Cham,
@cindex Chinese
Chinese-BIG5, Chinese-CNS, Chinese-EUC-TW, Chinese-GB,
Chinese-GB18030, Chinese-GBK,
@cindex Croatian
Croatian,
@cindex Cyrillic
Cyrillic-ALT, Cyrillic-ISO, Cyrillic-KOI8,
Croatian, Cyrillic-ALT, Cyrillic-ISO, Cyrillic-KOI8,
@cindex Czech
Czech,
@cindex Devanagari
Devanagari,
Czech, Devanagari,
@cindex Dutch
Dutch,
@cindex English
English,
Dutch, English,
@cindex Esperanto
Esperanto,
@cindex Ethiopic
Ethiopic,
Esperanto, Ethiopic,
@cindex French
French,
@cindex Georgian
Georgian,
French, Georgian,
@cindex German
German,
@cindex Greek
Greek,
@cindex Gujarati
Gujarati,
German, Greek, Gujarati,
@cindex Hebrew
Hebrew,
@cindex IPA
IPA,
Hebrew, IPA,
@cindex Italian
Italian,
@cindex Japanese
Japanese,
@cindex Kannada
Kannada,
Japanese, Kannada,
@cindex Khmer
Khmer,
@cindex Korean
Korean,
@cindex Lao
Lao,
Khmer, Korean, Lao,
@cindex Latin
Latin-1, Latin-2, Latin-3, Latin-4, Latin-5, Latin-6, Latin-7,
Latin-8, Latin-9,
@cindex Latvian
Latvian,
@cindex Lithuanian
Lithuanian,
Latvian, Lithuanian,
@cindex Malayalam
Malayalam,
@cindex Oriya
Oriya,
Malayalam, Oriya,
@cindex Persian
Persian,
@cindex Polish
Polish,
Persian, Polish,
@cindex Punjabi
Punjabi,
@cindex Romanian
Romanian,
Punjabi, Romanian,
@cindex Russian
Russian,
@cindex Sinhala
Sinhala,
Russian, Sinhala,
@cindex Slovak
Slovak,
@cindex Slovenian
Slovenian,
@cindex Spanish
Spanish,
Slovak, Slovenian, Spanish,
@cindex Swedish
Swedish,
@cindex TaiViet
TaiViet,
Swedish, TaiViet,
@cindex Tajik
Tajik,
@cindex Tamil
Tamil,
Tajik, Tamil,
@cindex Telugu
Telugu,
@cindex Thai
Thai,
Telugu, Thai,
@cindex Tibetan
Tibetan,
@cindex Turkish
Turkish,
Tibetan, Turkish,
@cindex UTF-8
UTF-8,
@cindex Ukrainian
Ukrainian,
UTF-8, Ukrainian,
@cindex Vietnamese
Vietnamese,
@cindex Welsh
Welsh, and
Vietnamese, Welsh,
@cindex Windows-1255
Windows-1255.
and Windows-1255.
@end quotation
To display the script(s) used by your language environment on a

View file

@ -383,7 +383,7 @@ the preceding lines; if the region is active, @key{TAB} indents each
line within the region, not just the current line.
The command @key{RET} (@code{newline}), which was documented in
@ref{Inserting Text}, does the same as @key{C-j} followed by
@ref{Inserting Text}, does the same as @kbd{C-j} followed by
@key{TAB}: it inserts a new line, then adjusts the line's indentation.
When indenting a line that starts within a parenthetical grouping,
@ -559,7 +559,7 @@ predefined styles, including @code{gnu}, @code{k&r}, @code{bsd},
styles are primarily intended for one language, but any of them can be
used with any of the languages supported by these modes. To find out
what a style looks like, select it and reindent some code, e.g., by
typing @key{C-M-q} at the start of a function definition.
typing @kbd{C-M-q} at the start of a function definition.
@kindex C-c . @r{(C mode)}
@findex c-set-style
@ -870,7 +870,9 @@ mode to skip whitespace forward before deciding whether to skip over
the closing delimiter.
@end itemize
To toggle Electric Pair mode, type @kbd{M-x electric-pair-mode}.
To toggle Electric Pair mode, type @kbd{M-x electric-pair-mode}. To
toggle the mode in a single buffer, use @kbd{M-x
electric-pair-local-mode}.
@node Comments
@section Manipulating Comments
@ -1666,7 +1668,7 @@ Delete the entire block of whitespace after point (@code{c-hungry-delete-forward
As an alternative to the above commands, you can enable @dfn{hungry
delete mode}. When this feature is enabled (indicated by @samp{/h} in
the mode line after the mode name), a single @key{DEL} deletes all
preceding whitespace, not just one space, and a single @kbd{C-c C-d}
preceding whitespace, not just one space, and a single @kbd{C-d}
(but @emph{not} plain @key{Delete}) deletes all following whitespace.
@table @kbd

View file

@ -1293,7 +1293,7 @@ executed.
@kindex S-TAB @r{(Org Mode)}
@findex org-shifttab
Typing @key{S-TAB} (@code{org-shifttab}) anywhere in an Org mode
Typing @kbd{S-@key{TAB}} (@code{org-shifttab}) anywhere in an Org mode
buffer cycles the visibility of the entire outline structure, between
(i) showing only top-level heading lines, (ii) showing all heading
lines but no body lines, and (iii) showing everything.

View file

@ -342,7 +342,7 @@ Here, @var{backtrace} is the name of a text file containing a copy of
the backtrace, @var{bindir} is the name of the directory that
contains the Emacs executable, and @var{emacs-binary} is the name of
the Emacs executable file, normally @file{emacs} on GNU and Unix
systems and @file{emacs.exe} on MS-Windows and MS-DOS. Omit the
systems and @file{emacs.exe} on MS-Windows and MS-DOS@. Omit the
@option{-p} option if your version of @command{addr2line} is too old
to have it.
@ -1142,7 +1142,7 @@ making diffs of C code. This shows the name of the function that each
change occurs in.
If you are using the Emacs repository, make sure your copy is
up-to-date (e.g. with @code{git pull}). You can commit your changes
up-to-date (e.g., with @code{git pull}). You can commit your changes
to a private branch and generate a patch from the master version by
using @code{git format-patch master}. Or you can leave your changes
uncommitted and use @code{git diff}.
@ -1173,7 +1173,7 @@ explanation in comments in the code. It will be more useful there.
Please look at the change log entries of recent commits to see what
sorts of information to put in, and to learn the style that we use. Note that,
unlike some other projects, we do require change logs for
documentation, i.e. Texinfo files.
documentation, i.e., Texinfo files.
@xref{Change Log},
@ifset WWW_GNU_ORG
see
@ -1389,7 +1389,7 @@ user freedom and to defend the rights of all free software users.
For general information, see the website @url{http://www.fsf.org/}.
Generally speaking, for non-trivial contributions to GNU Emacs we
require that the copyright be assigned to the FSF. For the reasons
require that the copyright be assigned to the FSF@. For the reasons
behind this, see @url{http://www.gnu.org/licenses/why-assign.html}.
Copyright assignment is a simple process. Residents of some countries
@ -1408,7 +1408,7 @@ is not enough). Also, a disclaimer cannot be applied to future work, it
has to be repeated each time you want to send something new.
We can accept small changes (roughly, fewer than 15 lines) without
an assignment. This is a cumulative limit (e.g. three separate 5 line
an assignment. This is a cumulative limit (e.g., three separate 5 line
patches) over all your contributions.
@node Service

View file

@ -1,3 +1,7 @@
2015-03-25 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp-intro.texi: `save-excursion' doesn't save&restore the mark.
2014-12-31 Paul Eggert <eggert@cs.ucla.edu>
Less 'make' chatter for Emacs doc

View file

@ -352,7 +352,7 @@ How To Write Function Definitions
* if:: What if?
* else:: If--then--else expressions.
* Truth & Falsehood:: What Lisp considers false and true.
* save-excursion:: Keeping track of point, mark, and buffer.
* save-excursion:: Keeping track of point and buffer.
* Review::
* defun Exercises::
@ -387,7 +387,7 @@ Truth and Falsehood in Emacs Lisp
* Point and mark:: A review of various locations.
* Template for save-excursion::
A Few Buffer--Related Functions
A Few Buffer-Related Functions
* Finding More:: How to find more information.
* simplified-beginning-of-buffer:: Shows @code{goto-char},
@ -2966,7 +2966,7 @@ symbol refers to it.)
* if:: What if?
* else:: If--then--else expressions.
* Truth & Falsehood:: What Lisp considers false and true.
* save-excursion:: Keeping track of point, mark, and buffer.
* save-excursion:: Keeping track of point and buffer.
* Review::
* defun Exercises::
@end menu
@ -4159,11 +4159,11 @@ The @code{save-excursion} function is the third and final special form
that we will discuss in this chapter.
In Emacs Lisp programs used for editing, the @code{save-excursion}
function is very common. It saves the location of point and mark,
executes the body of the function, and then restores point and mark to
their previous positions if their locations were changed. Its primary
function is very common. It saves the location of point,
executes the body of the function, and then restores point to
its previous position if its location was changed. Its primary
purpose is to keep the user from being surprised and disturbed by
unexpected movement of point or mark.
unexpected movement of point.
@menu
* Point and mark:: A review of various locations.
@ -4201,7 +4201,7 @@ region}. Numerous commands work on the region, including
@code{print-region}.
The @code{save-excursion} special form saves the locations of point and
mark and restores those positions after the code within the body of the
restores this position after the code within the body of the
special form is evaluated by the Lisp interpreter. Thus, if point were
in the beginning of a piece of text and some code moved point to the end
of the buffer, the @code{save-excursion} would put point back to where
@ -4212,16 +4212,16 @@ In Emacs, a function frequently moves point as part of its internal
workings even though a user would not expect this. For example,
@code{count-lines-region} moves point. To prevent the user from being
bothered by jumps that are both unexpected and (from the user's point of
view) unnecessary, @code{save-excursion} is often used to keep point and
mark in the location expected by the user. The use of
view) unnecessary, @code{save-excursion} is often used to keep point in
the location expected by the user. The use of
@code{save-excursion} is good housekeeping.
To make sure the house stays clean, @code{save-excursion} restores the
values of point and mark even if something goes wrong in the code inside
value of point even if something goes wrong in the code inside
of it (or, to be more precise and to use the proper jargon, ``in case of
abnormal exit''). This feature is very helpful.
In addition to recording the values of point and mark,
In addition to recording the value of point,
@code{save-excursion} keeps track of the current buffer, and restores
it, too. This means you can write code that will change the buffer and
have @code{save-excursion} switch you back to the original buffer.
@ -4386,9 +4386,9 @@ For example,
@end smallexample
@item save-excursion
Record the values of point and mark and the current buffer before
evaluating the body of this special form. Restore the values of point
and mark and buffer afterward.
Record the values of point and the current buffer before
evaluating the body of this special form. Restore the value of point and
buffer afterward.
@need 1250
For example,
@ -4547,7 +4547,7 @@ and if so, prints an appropriate message.
@end itemize
@node Buffer Walk Through
@chapter A Few Buffer--Related Functions
@chapter A Few Buffer-Related Functions
In this chapter we study in detail several of the functions used in GNU
Emacs. This is called a ``walk-through''. These functions are used as
@ -5201,8 +5201,8 @@ of the two-element list, @code{(oldbuf (current-buffer))}.
The body of the @code{let} expression in @code{append-to-buffer}
consists of a @code{save-excursion} expression.
The @code{save-excursion} function saves the locations of point and
mark, and restores them to those positions after the expressions in the
The @code{save-excursion} function saves the location of point, and restores it
to that position after the expressions in the
body of the @code{save-excursion} complete execution. In addition,
@code{save-excursion} keeps track of the original buffer, and
restores it. This is how @code{save-excursion} is used in
@ -5390,7 +5390,7 @@ Conventionally bound to @kbd{M-.} (that's a period following the
@key{META} key).
@item save-excursion
Save the location of point and mark and restore their values after the
Save the location of point and restore its value after the
arguments to @code{save-excursion} have been evaluated. Also, remember
the current buffer and return to it.
@ -5896,7 +5896,7 @@ the value of point, which will be at the end of the inserted text, is
recorded in the variable @code{newmark}.
After the body of the outer @code{save-excursion} is evaluated, point
and mark are relocated to their original places.
is relocated to its original place.
However, it is convenient to locate a mark at the end of the newly
inserted text and locate point at its beginning. The @code{newmark}
@ -6685,8 +6685,8 @@ restored just before the completion of the function by the
@code{save-restriction} special form.
The call to @code{widen} is followed by @code{save-excursion}, which
saves the location of the cursor (i.e., of point) and of the mark, and
restores them after the code in the body of the @code{save-excursion}
saves the location of the cursor (i.e., of point), and
restores it after the code in the body of the @code{save-excursion}
uses the @code{beginning-of-line} function to move point.
(Note that the @code{(widen)} expression comes between the
@ -6757,8 +6757,8 @@ it, and @code{count-lines} counts only the lines @emph{before} the
current line.
After @code{count-lines} has done its job, and the message has been
printed in the echo area, the @code{save-excursion} restores point and
mark to their original positions; and @code{save-restriction} restores
printed in the echo area, the @code{save-excursion} restores point to
its original position; and @code{save-restriction} restores
the original narrowing, if any.
@node narrow Exercise
@ -12114,7 +12114,7 @@ Internet, see
@uref{http://www.gnu.org/software/texinfo/manual/texinfo/}
@end ifhtml
@iftex
``Indicating Definitions, Commands, etc.'' in @cite{Texinfo, The GNU
``Indicating Definitions, Commands, etc.''@: in @cite{Texinfo, The GNU
Documentation Format}.
@end iftex
@end itemize

View file

@ -1,3 +1,99 @@
2015-03-29 Glenn Morris <rgm@gnu.org>
* objects.texi (Equality Predicates): Fix typo in example.
2015-03-25 Stefan Monnier <monnier@iro.umontreal.ca>
* positions.texi (Excursions, Narrowing): `save-excursion' does not
save&restore the mark any more.
2015-03-24 Paul Eggert <eggert@cs.ucla.edu>
* numbers.texi (Float Basics): Improve ldexp documentation.
2015-03-23 Eli Zaretskii <eliz@gnu.org>
* commands.texi (Event Input Misc): Fix incorrect usage of @code.
(Bug#20174)
(Accessing Mouse): Expand documentation of 'posn-actual-col-row'.
(Bug#20169)
More accurate description of 'posn-object-x-y'. (Bug#20168)
2015-03-23 Daiki Ueno <ueno@gnu.org>
* processes.texi (Asynchronous Processes): Mention `make-process'.
2015-03-18 Eli Zaretskii <eliz@gnu.org>
* minibuf.texi (Basic Completion): Fix a typo. (Bug#20108)
2015-03-09 Nicolas Petton <nicolas@petton.fr>
* sequences.texi (seq-into): Add documentation for the new
seq-into function.
2015-03-03 Eli Zaretskii <eliz@gnu.org>
* processes.texi (Synchronous Processes): Update documentation of
call-process-shell-command and process-file-shell-command.
2015-03-03 Daniel Colascione <dancol@dancol.org>
* control.texi (Generators): Correct missing word. Clarify which
forms are legal in which parts of `unwind-protect'. Fix orphaned
close parenthesis.
* objects.texi (Finalizer Type): New section for finalizer objects.
(Type Predicates): Mention finalizers in `type-of' documentation.
* elisp.texi (Top): Link to finalizer type.
2015-03-02 Daniel Colascione <dancol@dancol.org>
* control.texi (Generators): New section
* elisp.text: Reference new section.
2015-02-28 Eli Zaretskii <eliz@gnu.org>
* searching.texi (Char Classes): Update the documentation of
[:alpha:] and [:alnum:]. (Bug#19878)
2015-02-27 Eli Zaretskii <eliz@gnu.org>
* os.texi (Startup Summary):
* display.texi (Window Systems): Mention peculiarities of daemon
mode on MS-Windows.
2015-02-11 Martin Rudalics <rudalics@gmx.at>
* frames.texi (Size Parameters): Update description of
fullscreen frame parameter. Describe `fullscreen-restore'
parameter.
2015-02-09 Nicolas Petton <nicolas@petton.fr>
* sequences.texi (Sequence Functions): Update documentation
examples for seq-group-by.
2015-02-09 Eli Zaretskii <eliz@gnu.org>
* positions.texi (Screen Lines): Update the documentation of
vertical-motion to document the new additional argument.
2015-02-06 Nicolas Petton <nicolas@petton.fr>
* sequences.texi (Sequence Functions): Add documentation for
seq-mapcat, seq-partition and seq-group-by.
2015-02-05 Martin Rudalics <rudalics@gmx.at>
* display.texi (Size of Displayed Text): Remove description of
optional argument BUFFER of `window-text-pixel-size'.
2015-02-01 Martin Rudalics <rudalics@gmx.at>
* display.texi (Size of Displayed Text): Describe optional
argument BUFFER of `window-text-pixel-size'.
2015-01-28 Eli Zaretskii <eliz@gnu.org>
* searching.texi (Regexp Search): Add a cross-reference to "Syntax

View file

@ -132,7 +132,7 @@ byte compiler to warn if the command is called from Lisp. The output
of @code{describe-function} will include similar information.
The value of the property can be: a string, which the byte-compiler
will use directly in its warning (it should end with a period, and not
start with a capital, e.g. ``use @dots{} instead.''); @code{t}; any
start with a capital, e.g., ``use @dots{} instead.''); @code{t}; any
other symbol, which should be an alternative function to use in Lisp
code.
@ -1043,8 +1043,8 @@ the current Emacs session. If a symbol has not yet been so used,
@end defun
@menu
* Keyboard Events:: Ordinary characters--keys with symbols on them.
* Function Keys:: Function keys--keys with names, not symbols.
* Keyboard Events:: Ordinary characters -- keys with symbols on them.
* Function Keys:: Function keys -- keys with names, not symbols.
* Mouse Events:: Overview of mouse events.
* Click Events:: Pushing and releasing a mouse button.
* Drag Events:: Moving the mouse before releasing the button.
@ -2085,7 +2085,13 @@ Return the actual row and column in @var{position}, as a cons cell
@code{(@var{col} . @var{row})}. The values are the actual row and
column numbers in the window given by @var{position}. @xref{Click
Events}, for details. The function returns @code{nil} if
@var{position} does not include actual position values.
@var{position} does not include actual position values; in that case
@code{posn-col-row} can be used to get approximate values.
Note that this function doesn't account for the visual width of
characters on display, like the number of visual columns taken by a
tab character or an image. If you need the coordinates in canonical
character units, use @code{posn-col-row} instead.
@end defun
@defun posn-string position
@ -2107,8 +2113,9 @@ Return the image or string object in @var{position}, either
@defun posn-object-x-y position
Return the pixel-based x and y coordinates relative to the upper left
corner of the object in @var{position} as a cons cell @code{(@var{dx}
. @var{dy})}. If the @var{position} is a buffer position, return the
relative position in the character at that position.
. @var{dy})}. If the @var{position} is on buffer text, return the
relative position of the buffer-text character closest to that
position.
@end defun
@defun posn-object-width-height position
@ -2811,7 +2818,7 @@ most recently unread will be reread first.
Events read from this list are not normally added to the current
command's key sequence (as returned by, e.g., @code{this-command-keys}),
as the events will already have been added once as they were read for
the first time. An element of the form @code{(@code{t} . @var{event})}
the first time. An element of the form @w{@code{(t . @var{event})}}
forces @var{event} to be added to the current command's key sequence.
@end defvar

View file

@ -39,6 +39,7 @@ structure constructs (@pxref{Macros}).
* Conditionals:: @code{if}, @code{cond}, @code{when}, @code{unless}.
* Combining Conditions:: @code{and}, @code{or}, @code{not}.
* Iteration:: @code{while} loops.
* Generators:: Generic sequences and coroutines.
* Nonlocal Exits:: Jumping out of a sequence.
@end menu
@ -620,6 +621,123 @@ Here is an example of using @code{dotimes} to do something 100 times:
@end example
@end defmac
@node Generators
@section Generators
@cindex generators
A @dfn{generator} is a function that produces a potentially-infinite
stream of values. Each time the function produces a value, it
suspends itself and waits for a caller to request the next value.
@defmac iter-defun name args [doc] [declare] [interactive] body@dots{}
@code{iter-defun} defines a generator function. A generator function
has the same signature as a normal function, but works differently.
Instead of executing @var{body} when called, a generator function
returns an iterator object. That iterator runs @var{body} to generate
values, emitting a value and pausing where @code{iter-yield} or
@code{iter-yield-from} appears. When @var{body} returns normally,
@code{iter-next} signals @code{iter-end-of-sequence} with @var{body}'s
result as its condition data.
Any kind of Lisp code is valid inside @var{body}, but
@code{iter-yield} and @code{iter-yield-from} cannot appear inside
@code{unwind-protect} forms.
@end defmac
@defmac iter-lambda args [doc] [interactive] body@dots{}
@code{iter-lambda} produces an unnamed generator function that works
just like a generator function produced with @code{iter-defun}.
@end defmac
@defmac iter-yield value
When it appears inside a generator function, @code{iter-yield}
indicates that the current iterator should pause and return
@var{value} from @code{iter-next}. @code{iter-yield} evaluates to the
@code{value} parameter of next call to @code{iter-next}.
@end defmac
@defmac iter-yield-from iterator
@code{iter-yield-from} yields all the values that @var{iterator}
produces and evaluates to the value that @var{iterator}'s generator
function returns normally. While it has control, @var{iterator}
receives values sent to the iterator using @code{iter-next}.
@end defmac
To use a generator function, first call it normally, producing a
@dfn{iterator} object. An iterator is a specific instance of a
generator. Then use @code{iter-next} to retrieve values from this
iterator. When there are no more values to pull from an iterator,
@code{iter-next} raises an @code{iter-end-of-sequence} condition with
the iterator's final value.
It's important to note that generator function bodies only execute
inside calls to @code{iter-next}. A call to a function defined with
@code{iter-defun} produces an iterator; you must ``drive'' this
iterator with @code{iter-next} for anything interesting to happen.
Each call to a generator function produces a @emph{different}
iterator, each with its own state.
@defun iter-next iterator value
Retrieve the next value from @var{iterator}. If there are no more
values to be generated (because @var{iterator}'s generator function
returned), @code{iter-next} signals the @code{iter-end-of-sequence}
condition; the data value associated with this condition is the value
with which @var{iterator}'s generator function returned.
@var{value} is sent into the iterator and becomes the value to which
@code{iter-yield} evaluates. @var{value} is ignored for the first
@code{iter-next} call to a given iterator, since at the start of
@var{iterator}'s generator function, the generator function is not
evaluating any @code{iter-yield} form.
@end defun
@defun iter-close iterator
If @var{iterator} is suspended inside an @code{unwind-protect}'s
@code{bodyform} and becomes unreachable, Emacs will eventually run
unwind handlers after a garbage collection pass. (Note that
@code{iter-yield} is illegal inside an @code{unwind-protect}'s
@code{unwindforms}.) To ensure that these handlers are run before
then, use @code{iter-close}.
@end defun
Some convenience functions are provided to make working with
iterators easier:
@defmac iter-do (var iterator) body @dots{}
Run @var{body} with @var{var} bound to each value that
@var{iterator} produces.
@end defmac
The Common Lisp loop facility also contains features for working with
iterators. See @xref{Loop Facility,,,cl,Common Lisp Extensions}.
The following piece of code demonstrates some important principles of
working with iterators.
@example
(iter-defun my-iter (x)
(iter-yield (1+ (iter-yield (1+ x))))
;; Return normally
-1)
(let* ((iter (my-iter 5))
(iter2 (my-iter 0)))
;; Prints 6
(print (iter-next iter))
;; Prints 9
(print (iter-next iter 8))
;; Prints 1; iter and iter2 have distinct states
(print (iter-next iter2 nil))
;; We expect the iter sequence to end now
(condition-case x
(iter-next iter)
(iter-end-of-sequence
;; Prints -1, which my-iter returned normally
(print (cdr x)))))
@end example
@node Nonlocal Exits
@section Nonlocal Exits
@cindex nonlocal exits

View file

@ -2154,7 +2154,7 @@ stipple patterns.
Alternative foreground color, a string. This is like @code{:foreground}
but the color is only used as a foreground when the background color is
near to the foreground that would have been used. This is useful for
example when marking text (i.e. the region face). If the text has a foreground
example when marking text (i.e., the region face). If the text has a foreground
that is visible with the region face, that foreground is used.
If the foreground is near the region face background,
@code{:distant-foreground} is used instead so the text is readable.
@ -6728,8 +6728,9 @@ Emacs is displaying the frame on a character-based terminal.
This variable holds the value of @code{window-system} used for the
first frame created by Emacs during startup. (When Emacs is invoked
with the @option{--daemon} option, it does not create any initial
frames, so @code{initial-window-system} is @code{nil}. @xref{Initial
Options, daemon,, emacs, The GNU Emacs Manual}.)
frames, so @code{initial-window-system} is @code{nil}, except on
MS-Windows, where it is still @code{w32}. @xref{Initial Options,
daemon,, emacs, The GNU Emacs Manual}.)
@end defvar
@defun window-system &optional frame

View file

@ -316,6 +316,7 @@ Programming Types
* Byte-Code Type:: A function written in Lisp, then compiled.
* Autoload Type:: A type used for automatically loading seldom-used
functions.
* Finalizer Type:: Runs code when no longer reachable.
Character Type
@ -464,6 +465,7 @@ Control Structures
* Conditionals:: @code{if}, @code{cond}, @code{when}, @code{unless}.
* Combining Conditions:: @code{and}, @code{or}, @code{not}.
* Iteration:: @code{while} loops.
* Generators:: Generic sequences and coroutines.
* Nonlocal Exits:: Jumping out of a sequence.
Nonlocal Exits
@ -751,8 +753,8 @@ Defining Commands
Input Events
* Keyboard Events:: Ordinary characters--keys with symbols on them.
* Function Keys:: Function keys--keys with names, not symbols.
* Keyboard Events:: Ordinary characters -- keys with symbols on them.
* Function Keys:: Function keys -- keys with names, not symbols.
* Mouse Events:: Overview of mouse events.
* Click Events:: Pushing and releasing a mouse button.
* Drag Events:: Moving the mouse before releasing the button.

View file

@ -360,7 +360,7 @@ coordinates might be negative.
Position of the top-left corner and size of the work area (``usable''
space) in pixels as @samp{(@var{x} @var{y} @var{width} @var{height})}.
This may be different from @samp{geometry} in that space occupied by
various window manager features (docks, taskbars, etc.) may be
various window manager features (docks, taskbars, etc.)@: may be
excluded from the work area. Whether or not such features actually
subtract from the work area depends on the platform and environment.
Again, if the monitor is not the primary monitor, some of the
@ -701,6 +701,7 @@ parameters represent the user's stated preference; otherwise, use
@code{nil}.
@end table
@node Size Parameters
@subsubsection Size Parameters
@cindex window size on display
@ -731,22 +732,52 @@ user-position}) does for the position parameters @code{top} and
@vindex fullscreen, a frame parameter
@item fullscreen
Specify that width, height or both shall be maximized. The value
@code{fullwidth} specifies that width shall be as wide as possible.
The value @code{fullheight} specifies that height shall be as tall as
@code{fullwidth} specifies that width shall be as wide as possible. The
value @code{fullheight} specifies that height shall be as tall as
possible. The value @code{fullboth} specifies that both the width and
the height shall be set to the size of the screen. The value
@code{maximized} specifies that the frame shall be maximized. The
difference between @code{maximized} and @code{fullboth} is that the
former can still be resized by dragging window manager decorations
with the mouse, while the latter really covers the whole screen and
does not allow resizing by mouse dragging.
@code{maximized} specifies that the frame shall be maximized.
The difference between @code{maximized} and @code{fullboth} is that a
maximized frame usually keeps its title bar and the buttons for resizing
and closing the frame. Also, maximized frames typically avoid hiding
any task bar or panels displayed on the desktop. ``Fullboth'' frames,
on the other hand, usually omit the title bar and occupy the entire
available screen space.
``Fullheight'' and ``fullwidth'' frames are more similar to maximized
frames in this regard. However, these typically display an external
border which might be absent with maximized frames. Hence the heights
of maximized and fullheight frames and the widths of maximized and
fullwidth frames often differ by a few pixels.
With some window managers you may have to customize the variable
@code{frame-resize-pixelwise} (@pxref{Size and Position}) to a
non-@code{nil} value in order to make a frame appear ``maximized'' or
``fullscreen''.
@code{frame-resize-pixelwise} (@pxref{Size and Position}) in order to
make a frame truly appear ``maximized'' or ``fullscreen''. Moreover,
some window managers might not support smooth transition between the
various fullscreen or maximization states. Customizing the variable
@code{x-frame-normalize-before-maximize} can help to overcome that.
@vindex fullscreen-restore, a frame parameter
@item fullscreen-restore
This parameter specifies the desired ``fullscreen'' state of the frame
after invoking the @code{toggle-frame-fullscreen} command (@pxref{Frame
Commands,,, emacs, The GNU Emacs Manual}) in the ``fullboth'' state.
Normally this parameter is installed automatically by that command when
toggling the state to fullboth. If, however, you start Emacs in the
fullboth state, you have to specify the desired behavior in your initial
file as, for example
@example
(setq default-frame-alist
'((fullscreen . fullboth) (fullscreen-restore . fullheight)))
@end example
This will give a new frame full height after typing in it @key{F11} for
the first time.
@end table
@node Layout Parameters
@subsubsection Layout Parameters
@cindex layout parameters of frames
@ -1187,7 +1218,7 @@ These functions return the canonical height and width of a character in
@var{frame}, measured in pixels. Together, these values establish the
size of the default font on @var{frame}. The values depend on the
choice of font for @var{frame}, see @ref{Font and Color Parameters}.
@end defun
@end defun
The default font can be also set directly with the following function:

View file

@ -1222,7 +1222,7 @@ This macro is the handy way to add the advice @var{function} to the function
stored in @var{place} (@pxref{Generalized Variables}).
@var{where} determines how @var{function} is composed with the
existing function, e.g. whether @var{function} should be called before, or
existing function, e.g., whether @var{function} should be called before, or
after the original function. @xref{Advice combinators}, for the list of
available ways to compose the two functions.
@ -1310,7 +1310,7 @@ and its properties.
@defun advice-eval-interactive-spec spec
Evaluate the interactive @var{spec} just like an interactive call to a function
with such a spec would, and then return the corresponding list of arguments
that was built. E.g. @code{(advice-eval-interactive-spec "r\nP")} will
that was built. E.g., @code{(advice-eval-interactive-spec "r\nP")} will
return a list of three elements, containing the boundaries of the region and
the current prefix argument.
@end defun

View file

@ -1624,7 +1624,7 @@ similar advice may apply to the unsigned counterparts (e.g.,
of @code{intptr_t}).
@item
Prefer @code{int} for Emacs character codes, in the range 0 ..@: 0x3FFFFF.
Prefer @code{int} for Emacs character codes, in the range 0 ..@: 0x3FFFFF@.
More generally, prefer @code{int} for integers known to be in
@code{int} range, e.g., screen column counts.

View file

@ -95,7 +95,7 @@ suffix), unless it contains an explicit directory name.
If the option @code{load-prefer-newer} is non-@code{nil}, then when
searching suffixes, @code{load} selects whichever version of a file
(@samp{.elc}, @samp{.el}, etc.) has been modified most recently.
(@samp{.elc}, @samp{.el}, etc.)@: has been modified most recently.
If @var{filename} is a relative file name, such as @file{foo} or
@file{baz/foo.bar}, @code{load} searches for the file using the variable

View file

@ -102,7 +102,7 @@ the minibuffer is in a separate frame. @xref{Minibuffers and Frames}.
When Emacs is running in batch mode, any request to read from the
minibuffer actually reads a line from the standard input descriptor that
was supplied when Emacs was started. This supports only basic input:
none of the special minibuffer features (history, completion, etc.)
none of the special minibuffer features (history, completion, etc.)@:
are available in batch mode.
@node Text from Minibuffer
@ -723,7 +723,7 @@ just one matching completion, and the match is exact, it returns
@code{t}. Otherwise, it returns the longest initial sequence common
to all possible matching completions.
If @var{collection} is an list, the permissible completions are
If @var{collection} is a list, the permissible completions are
specified by the elements of the list, each of which should be either
a string, or a cons cell whose @sc{car} is either a string or a symbol
(a symbol is converted to a string using @code{symbol-name}). If the

View file

@ -261,13 +261,19 @@ If @var{x} is finite, then @var{s} is a floating-point number between 0.5
@math{x = s 2^e}.
@end tex
If @var{x} is zero or infinity, then @var{s} is the same as @var{x}.
If @var{x} is a NaN, then @var{s} is also a NaN.
If @var{x} is a NaN, then @var{s} is also a NaN@.
If @var{x} is zero, then @var{e} is 0.
@end defun
@defun ldexp sig &optional exp
This function returns a floating-point number corresponding to the
significand @var{sig} and exponent @var{exp}.
@defun ldexp s e
Given a numeric significand @var{s} and an integer exponent @var{e},
this function returns the floating point number
@ifnottex
@var{s} * 2**@var{e}.
@end ifnottex
@tex
@math{s 2^e}.
@end tex
@end defun
@defun copysign x1 x2

View file

@ -156,6 +156,8 @@ latter are unique to Emacs Lisp.
* Byte-Code Type:: A function written in Lisp, then compiled.
* Autoload Type:: A type used for automatically loading seldom-used
functions.
* Finalizer Type:: Runs code when no longer reachable.
@end menu
@node Integer Type
@ -1361,6 +1363,31 @@ in the loaded file.
@code{autoload}, which stores the object in the function cell of a
symbol. @xref{Autoload}, for more details.
@node Finalizer Type
@subsection Finalizer Type
A @dfn{finalizer object} helps Lisp code clean up after objects that
are no longer needed. A finalizer holds a Lisp function object.
When a finalizer object becomes unreachable after a garbage collection
pass, Emacs calls the finalizer's associated function object.
When deciding whether a finalizer is reachable, Emacs does not count
references from finalizer objects themselves, allowing you to use
finalizers without having to worry about accidentally capturing
references to finalized objects themselves.
Errors in finalizers are printed to @code{*Messages*}. Emacs runs
a given finalizer object's associated function exactly once, even
if that function fails.
@defun make-finalizer function
Make a finalizer that will run @var{function}. @var{function} will be
called after garbage collection when the returned finalizer object
becomes unreachable. If the finalizer object is reachable only
through references from finalizer objects, it does not count as
reachable for the purpose of deciding whether to run @var{function}.
@var{function} will be run once per finalizer object.
@end defun
@node Editing Types
@section Editing Types
@cindex editing types
@ -1907,11 +1934,11 @@ types. In most cases, it is more convenient to use type predicates than
This function returns a symbol naming the primitive type of
@var{object}. The value is one of the symbols @code{bool-vector},
@code{buffer}, @code{char-table}, @code{compiled-function},
@code{cons}, @code{float}, @code{font-entity}, @code{font-object},
@code{font-spec}, @code{frame}, @code{hash-table}, @code{integer},
@code{marker}, @code{overlay}, @code{process}, @code{string},
@code{subr}, @code{symbol}, @code{vector}, @code{window}, or
@code{window-configuration}.
@code{cons}, @code{finalizer}, @code{float}, @code{font-entity},
@code{font-object}, @code{font-spec}, @code{frame}, @code{hash-table},
@code{integer}, @code{marker}, @code{overlay}, @code{process},
@code{string}, @code{subr}, @code{symbol}, @code{vector},
@code{window}, or @code{window-configuration}.
@example
(type-of 1)
@ -2108,12 +2135,12 @@ that for two strings to be equal, they have the same text properties.
@example
@group
(equal "asdf" (propertize "asdf" '(asdf t)))
(equal "asdf" (propertize "asdf" 'asdf t))
@result{} t
@end group
@group
(equal-including-properties "asdf"
(propertize "asdf" '(asdf t)))
(propertize "asdf" 'asdf t))
@result{} nil
@end group
@end example

View file

@ -244,8 +244,9 @@ options were specified.
@item
If the option @code{--daemon} was specified, it calls
@code{server-start} and detaches from the controlling terminal.
@xref{Emacs Server,,, emacs, The GNU Emacs Manual}.
@code{server-start}, and on Posix systems also detaches from the
controlling terminal. @xref{Emacs Server,,, emacs, The GNU Emacs
Manual}.
@item
If started by the X session manager, it calls

View file

@ -493,7 +493,7 @@ If you intend to use them heavily, Emacs provides caches which may
improve the performance of your code. @xref{Truncation, cache-long-scans}.
@end ignore
@defun vertical-motion count &optional window
@defun vertical-motion count &optional window cur-col
This function moves point to the start of the screen line @var{count}
screen lines down from the screen line containing point. If @var{count}
is negative, it moves up instead.
@ -515,6 +515,14 @@ The window @var{window} is used for obtaining parameters such as the
width, the horizontal scrolling, and the display table. But
@code{vertical-motion} always operates on the current buffer, even if
@var{window} currently displays some other buffer.
The optional argument @var{cur-col} specifies the current column when
the function is called. This is the window-relative horizontal
coordinate of point, measured in units of font width of the frame's
default face. Providing it speeds up the function, especially in very
long lines, because it doesn't have to go back in the buffer in order
to determine the current column. Note that @var{cur-col} is also
counted from the visual start of the line.
@end defun
@defun count-screen-lines &optional beg end count-final-newline window
@ -817,8 +825,8 @@ is zero or less.
It is often useful to move point ``temporarily'' within a localized
portion of the program. This is called an @dfn{excursion}, and it is
done with the @code{save-excursion} special form. This construct
remembers the initial identity of the current buffer, and its values
of point and the mark, and restores them after the excursion
remembers the initial identity of the current buffer, and its value
of point, and restores them after the excursion
completes. It is the standard way to move point within one part of a
program and avoid affecting the rest of the program, and is used
thousands of times in the Lisp sources of Emacs.
@ -833,18 +841,18 @@ Configurations} and in @ref{Frame Configurations}. @c frameset?
@cindex mark excursion
@cindex point excursion
This special form saves the identity of the current buffer and the
values of point and the mark in it, evaluates @var{body}, and finally
restores the buffer and its saved values of point and the mark. All
three saved values are restored even in case of an abnormal exit via
value of point in it, evaluates @var{body}, and finally
restores the buffer and its saved value of point. both saved values are
restored even in case of an abnormal exit via
@code{throw} or error (@pxref{Nonlocal Exits}).
The value returned by @code{save-excursion} is the result of the last
form in @var{body}, or @code{nil} if no body forms were given.
@end defspec
Because @code{save-excursion} only saves point and mark for the
Because @code{save-excursion} only saves point for the
buffer that was current at the start of the excursion, any changes
made to point and/or mark in other buffers, during the excursion, will
made to point in other buffers, during the excursion, will
remain in effect afterward. This frequently leads to unintended
consequences, so the byte compiler warns if you call @code{set-buffer}
during an excursion:
@ -880,11 +888,6 @@ type @code{nil}. @xref{Marker Insertion Types}. Therefore, when the
saved point value is restored, it normally comes before the inserted
text.
Although @code{save-excursion} saves the location of the mark, it does
not prevent functions which modify the buffer from setting
@code{deactivate-mark}, and thus causing the deactivation of the mark
after the command finishes. @xref{The Mark}.
@node Narrowing
@section Narrowing
@cindex narrowing
@ -972,7 +975,7 @@ restores the restrictions on the original buffer (the buffer whose
restrictions it saved from), but it does not restore the identity of the
current buffer.
@code{save-restriction} does @emph{not} restore point and the mark; use
@code{save-restriction} does @emph{not} restore point; use
@code{save-excursion} for that. If you use both @code{save-restriction}
and @code{save-excursion} together, @code{save-excursion} should come
first (on the outside). Otherwise, the old point value would be

View file

@ -503,17 +503,21 @@ inputinput@point{}
@c It actually uses shell-command-switch, but no need to mention that here.
@end defun
@defun call-process-shell-command command &optional infile destination display &rest args
@defun call-process-shell-command command &optional infile destination display
This function executes the shell command @var{command} synchronously.
The final arguments @var{args} are additional arguments to add at the
end of @var{command}. The other arguments are handled as in
@code{call-process}.
The arguments are handled as in @code{call-process}. An old calling
convention allowed to pass any number of additional arguments after
@var{display}, which were concatenated to @var{command}; this is still
supported, but strongly discouraged.
@end defun
@defun process-file-shell-command command &optional infile destination display &rest args
@defun process-file-shell-command command &optional infile destination display
This function is like @code{call-process-shell-command}, but uses
@code{process-file} internally. Depending on @code{default-directory},
@var{command} can be executed also on remote hosts.
@var{command} can be executed also on remote hosts. An old calling
convention allowed to pass any number of additional arguments after
@var{display}, which were concatenated to @var{command}; this is still
supported, but strongly discouraged.
@end defun
@defun shell-command-to-string command
@ -688,6 +692,61 @@ use the function @code{process-tty-name} (@pxref{Process
Information}).
@end defvar
@defun make-process &rest args
This function is like @code{start-process}, but takes keyword arguments.
The arguments @var{args} are a list of keyword/argument pairs.
Omitting a keyword is always equivalent to specifying it with value
@code{nil}. Here are the meaningful keywords:
@table @asis
@item :name @var{name}
Use the string @var{name} as the process name. It is modified if
necessary to make it unique.
@item :buffer @var{buffer}
Use @var{buffer} as the process buffer.
@item :command @var{command}
Use @var{command} as the command line of the process. @var{command}
is a list starting with the program's executable file name, followed
by strings to give to program as arguments.
@item :coding @var{coding}
If @var{coding} is a symbol, it specifies the coding system to be
used for both reading and writing of data from and to the
connection. If @var{coding} is a cons cell
@w{@code{(@var{decoding} . @var{encoding})}}, then @var{decoding}
will be used for reading and @var{encoding} for writing.
If @var{coding} is @code{nil}, the default rules for finding the
coding system will apply. @xref{Default Coding Systems}.
@item :connection-type @var{TYPE}
Initialize the type of device used to communicate with the subprocess.
Possible values are @code{pty} to use a pty, @code{pipe} to use a
pipe, or @code{nil} to use the default derived from the value of
the @code{process-connection-type} variable.
@item :noquery @var{query-flag}
Initialize the process query flag to @var{query-flag}.
@xref{Query Before Exit}.
@item :stop @var{stopped}
If @var{stopped} is non-@code{nil}, start the process in the
``stopped'' state.
@item :filter @var{filter}
Initialize the process filter to @var{filter}.
@item :sentinel @var{sentinel}
Initialize the process sentinel to @var{sentinel}.
@end table
The original argument list, modified with the actual connection
information, is available via the @code{process-contact} function.
@end defun
@node Deleting Processes
@section Deleting Processes
@cindex deleting processes

View file

@ -541,11 +541,15 @@ and what they mean:
@item [:ascii:]
This matches any @acronym{ASCII} character (codes 0--127).
@item [:alnum:]
This matches any letter or digit. (At present, for multibyte
characters, it matches anything that has word syntax.)
This matches any letter or digit. For multibyte characters, it
matches characters whose Unicode @samp{general-category} property
(@pxref{Character Properties}) indicates they are alphabetic or
decimal number characters.
@item [:alpha:]
This matches any letter. (At present, for multibyte characters, it
matches anything that has word syntax.)
This matches any letter. For multibyte characters, it matches
characters whose Unicode @samp{general-category} property
(@pxref{Character Properties}) indicates they are alphabetic
characters.
@item [:blank:]
This matches space and tab only.
@item [:cntrl:]

View file

@ -695,9 +695,76 @@ concatenation of @var{sequences}. @var{type} may be: @code{vector},
@end example
@end defun
@defun seq-mapcat function sequence &optional type
This function returns the result of applying @code{seq-concatenate}
to the result of applying @var{function} to each element of
@var{sequence}. The result is a sequence of type @var{type}, or a
list if @var{type} is @code{nil}.
@example
@group
(seq-mapcat #'seq-reverse '((3 2 1) (6 5 4)))
@result{} (1 2 3 4 5 6)
@end group
@end example
@end defun
@defun seq-partition sequence n
This function returns a list of the elements of @var{sequence}
grouped into sub-sequences of length @var{n}. The last sequence may
contain less elements than @var{n}. @var{n} must be an integer. If
@var{n} is a negative integer or 0, nil is returned.
@example
@group
(seq-partition '(0 1 2 3 4 5 6 7) 3)
@result{} ((0 1 2) (3 4 5) (6 7))
@end group
@end example
@end defun
@defun seq-group-by function sequence
This function separates the elements of @var{sequence} into an alist
whose keys are the result of applying @var{function} to each element
of @var{sequence}. Keys are compared using @code{equal}.
@example
@group
(seq-group-by #'integerp '(1 2.1 3 2 3.2))
@result{} ((t 1 3 2) (nil 2.1 3.2))
@end group
@group
(seq-group-by #'car '((a 1) (b 2) (a 3) (c 4)))
@result{} ((b (b 2)) (a (a 1) (a 3)) (c (c 4)))
@end group
@end example
@end defun
@defun seq-into sequence type
This function converts the sequence @var{sequence} into a sequence
of type @var{type}. @var{type} can be one of the following symbols:
@code{vector}, @code{string} or @code{list}.
@example
@group
(seq-into [1 2 3] 'list)
@result{} (1 2 3)
@end group
@group
(seq-into nil 'vector)
@result{} []
@end group
@group
(seq-into "hello" 'vector)
@result{} [104 101 108 108 111]
@end group
@end example
@end defun
@defmac seq-doseq (var sequence [result]) body@dots{}
@cindex sequence iteration
This macro is like @code{dolist}, except that @var{sequence} can be a list,
This macro is like @code{dolist}, except that @var{sequence} can be a list,
vector or string (@pxref{Iteration} for more information about the
@code{dolist} macro). This is primarily useful for side-effects.
@end defmac

View file

@ -344,7 +344,7 @@ When reading or writing from the standard input/output streams of the
Emacs process in batch mode, it is sometimes required to make sure any
arbitrary binary data will be read/written verbatim, and/or that no
translation of newlines to or from CR-LF pairs are performed. This
issue does not exist on Posix hosts, only on MS-Windows and MS-DOS.
issue does not exist on Posix hosts, only on MS-Windows and MS-DOS@.
The following function allows to control the I/O mode of any standard
stream of the Emacs process.

View file

@ -811,7 +811,7 @@ Delete trailing whitespace in the region defined by @var{start} and
This command deletes whitespace characters after the last
non-whitespace character in each line in the region.
If this command acts on the entire buffer (i.e. if called
If this command acts on the entire buffer (i.e., if called
interactively with the mark inactive, or called from Lisp with
@var{end} @code{nil}), it also deletes all trailing lines at the end of the
buffer if the variable @code{delete-trailing-lines} is non-@code{nil}.
@ -2720,7 +2720,7 @@ text properties are considered, since strings never have overlays.
@defun get-pos-property position prop &optional object
This function is like @code{get-char-property}, except that it pays
attention to properties' stickiness and overlays' advancement settings
instead of the property of the character at (i.e. right after)
instead of the property of the character at (i.e., right after)
@var{position}.
@end defun

View file

@ -1,3 +1,76 @@
2015-03-25 Glenn Morris <rgm@gnu.org>
* newsticker.texi (Supported Formats): Remove dead url.
* remember.texi (Function Reference): Copyedit.
* idlwave.texi (HTML Help Browser Tips): Remove obsolete info.
2015-03-18 Eli Zaretskii <eliz@gnu.org>
* efaq-w32.texi: Remove outdated information and update.
2015-03-18 Martin Rudalics <rudalics@gmx.at>
* efaq.texi (Fullscreen mode on MS-Windows):
Fix description (Bug#20110).
2015-03-04 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi (External methods) <adb>: Explain, when Tramp
connects to devices. Mention port numbers.
(GVFS based methods, File name completion): Add index.
(Multi-hops, Remote Programs, File name completion, Ad-hoc multi-hops):
Improve wording.
* trampver.texi: Update release number.
2015-03-03 Kelvin White <kwhite@gnu.org>
* erc.texi (Advanced Usage, Options): Add descriptions and examples
for erc-format-nick-function and erc-rename-buffers options.
(Connecting): Fix typo
2015-03-02 Daniel Colascione <dancol@dancol.org>
* cl.texi (Iteration Clauses): Mention iterator support.
2015-02-25 Tassilo Horn <tsdh@gnu.org>
* reftex.texi (Multifile Documents): Document
reftex-include-file-commands.
(Options): Mention that non-customize changes might require
calling reftex-compile-variables.
2015-02-21 Paul Eggert <eggert@cs.ucla.edu>
* texinfo.tex: Update from gnulib.
2015-02-10 Lars Ingebrigtsen <larsi@gnus.org>
* eww.texi (Basics): Mention eww-toggle-fonts.
2015-02-05 Glenn Morris <rgm@gnu.org>
* auth.texi (Multiple GMail accounts with Gnus): Markup fix.
2015-02-05 Teodor Zlatanov <tzz@lifelogs.com>
* auth.texi (Multiple GMail accounts with Gnus): Add FAQ.
2015-02-05 Lars Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Using IMAP): Fix menu node name.
2015-02-05 Trevor Murphy <trevor.m.murphy@gmail.com>
* gnus.texi (Support for IMAP Extensions): Document the Gmail label
extension.
2015-02-04 Paul Eggert <eggert@cs.ucla.edu>
* texinfo.tex: Update from gnulib.
2015-01-23 Thomas Fitzsimmons <fitzsim@fitzsim.org>
* eudc.texi (LDAP Configuration): Rename from LDAP Requirements

View file

@ -59,6 +59,7 @@ It is a way for multiple applications to share a single configuration
@menu
* Overview:: Overview of the auth-source library.
* Help for users::
* Multiple GMail accounts with Gnus::
* Secret Service API::
* Help for developers::
* GnuPG and EasyPG Assistant Configuration::
@ -110,9 +111,9 @@ You can use spaces inside a password or other token by surrounding the
token with either single or double quotes.
You can use single quotes inside a password or other token by
surrounding it with double quotes, e.g. @code{"he'llo"}. Similarly you
surrounding it with double quotes, e.g., @code{"he'llo"}. Similarly you
can use double quotes inside a password or other token by surrounding
it with single quotes, e.g. @code{'he"llo'}. You can't mix both (so a
it with single quotes, e.g., @code{'he"llo'}. You can't mix both (so a
password or other token can't have both single and double quotes).
All this is optional. You could just say (but we don't recommend it,
@ -229,6 +230,27 @@ don't use a port entry, you match any Tramp method, as explained
earlier. Since Tramp has about 88 connection methods, this may be
necessary if you have an unusual (see earlier comment on those) setup.
@node Multiple GMail accounts with Gnus
@chapter Multiple GMail accounts with Gnus
For multiple GMail accounts with Gnus, you have to make two nnimap
entries in your @code{gnus-secondary-select-methods} with distinct
names:
@example
(setq gnus-secondary-select-methods '((nnimap "gmail"
(nnimap-address "imap.gmail.com"))
(nnimap "gmail2"
(nnimap-address "imap.gmail.com"))))
@end example
Your netrc entries will then be:
@example
machine gmail login account@@gmail.com password "account password" port imap
machine gmail2 login account2@@gmail.com password "account2 password" port imap
@end example
@node Secret Service API
@chapter Secret Service API

View file

@ -36800,7 +36800,7 @@ desired function, or with @kbd{x} or @kbd{z} followed by a function name,
or with @kbd{$} to take a formula from the top of the stack, or with
@kbd{'} and a typed formula. In the last two cases, the formula may
be a nameless function like @samp{<#1+#2>} or @samp{<x, y : x+y>}, or it
may include @kbd{$}, @kbd{$$}, etc. (where @kbd{$} will correspond to the
may include @kbd{$}, @kbd{$$}, etc.@: (where @kbd{$} will correspond to the
last argument of the created function), or otherwise you will be
prompted for an argument list. The number of vectors popped from the
stack by @kbd{V M} depends on the number of arguments of the function.

View file

@ -1038,7 +1038,7 @@ Movement}. They might be removed from a future release of @ccmode{}.
Since there's a lot of normal text in comments and string literals,
@ccmode{} provides features to edit these like in text mode. The goal
is to do it seamlessly, i.e., you can use auto fill mode, sentence and
paragraph movement, paragraph filling, adaptive filling etc. wherever
paragraph movement, paragraph filling, adaptive filling etc.@: wherever
there's a piece of normal text without having to think much about it.
@ccmode{} keeps the indentation, fixes suitable comment line prefixes,
and so on.
@ -7140,7 +7140,7 @@ of XEmacs since 19.16.
Due to release schedule skew, it is likely that all of these Emacsen
have old versions of @ccmode{} and so should be upgraded. Access to the
@ccmode{} source code, as well as more detailed information on Emacsen
compatibility, etc. are all available on the web site:
compatibility, etc.@: are all available on the web site:
@quotation
@uref{http://cc-mode.sourceforge.net/}

View file

@ -296,6 +296,13 @@ list. Also, the function body is enclosed in an implicit block
called @var{name}; @pxref{Blocks and Exits}.
@end defmac
@defmac cl-iter-defun name arglist body@dots{}
This form is identical to the regular @code{iter-defun} form, except
that @var{arglist} is allowed to be a full Common Lisp argument
list. Also, the function body is enclosed in an implicit block
called @var{name}; @pxref{Blocks and Exits}.
@end defmac
@defmac cl-defsubst name arglist body@dots{}
This is just like @code{cl-defun}, except that the function that
is defined is automatically proclaimed @code{inline}, i.e.,
@ -2237,6 +2244,11 @@ This clause is like @code{always}, except that the loop returns
This clause stops the loop when the specified form is non-@code{nil};
in this case, it returns that non-@code{nil} value. If all the
values were @code{nil}, the loop returns @code{nil}.
@item iter-by @var{iterator}
This clause iterates over the values from the specified form, an
iterator object. See (@pxref{Generators,,,elisp,GNU Emacs Lisp
Reference Manual}).
@end table
@node Accumulation Clauses

View file

@ -128,10 +128,12 @@ systems.
@cindex supported versions of Windows
Emacs @value{EMACSVER} is known to run on all versions of Windows from
@c FIXME does it really still support Windows 98? Does it matter?
Windows 98 and Windows NT 4.0 through to Windows 7. The Windows port is
built using the Win32 API and supports most features of the X version,
including variable width fonts, images and tooltips.
Windows 98 and Windows NT 4.0 through to Windows 8.1. The Windows
port is built using the Win32 API and supports most features of the X
version, including variable width fonts, images and tooltips.
Emacs on Windows can be compiled as either a 32-bit or a 64-bit
executable, using the MinGW GCC compiler and development tools.
@node Other versions of Emacs
@section What other versions of Emacs run on Windows?
@ -163,10 +165,12 @@ instructions (requires DJGPP).
@cindex where to get Emacs binaries
Pre-compiled versions are distributed from
@uref{http://ftpmirror.gnu.org/emacs/windows/, ftp.gnu.org mirrors}.
Emacs binaries are distributed as zip files, digitally
signed by the developer who built them. Generally most users will
want the file @file{emacs-@value{EMACSVER}-bin-i386.zip}, which
contains everything you need to get started.
Emacs binaries are distributed as zip files, digitally signed by the
developer who built them. Generally most users will want the file
@file{emacs-@value{EMACSVER}-bin-i686-pc-mingw.zip} for the 32-bit
build, and @file{emacs-@value{EMACSVER}-bin-x86_64-w64-mingw32.zip}
for the 64-bit build. The zip archive contains everything you need to
get started.
@cindex where to get sources
@cindex Emacs source code
@ -187,17 +191,18 @@ development site.
@section How can I compile Emacs myself?
@cindex compiling Emacs
To compile Emacs on Windows, you will need the MingW or Cygwin port of
GCC with MingW make, or a Microsoft C compiler with nmake and the
single threaded C runtime library. Recent versions of Microsoft
Visual Studio no longer come with the single threaded C runtime
library, which is required for certain POSIX compatibility, so MingW
is usually the best choice. Image support requires external
libraries, the headers and import libraries for which will need to be
installed where your compiler can find them. You will also need ports
of GNU @command{rm} and @command{cp}, as the Windows native
equivalents are not consistent between versions. GNU texinfo will be
required to build the manuals. @xref{Other useful ports}.
To compile Emacs on Windows, you will need the MinGW port of GCC and
Binutils, the MinGW runtime and development environment, and the MSYS
suite of tools. For the details, see the file @file{nt/INSTALL} in
the Emacs source distribution.
Support for displaying images, as well as XML/HTML rendering and TLS
networking requires external libraries, the headers and import
libraries for which will need to be installed where your compiler can
find them. Again, the details, including URLs of sites where you can
download these libraries are in @file{nt/INSTALL}. @xref{Other useful
ports}, for auxiliary tools you may wish to install and use in
conjunction with Emacs.
After unpacking the source, or checking out of the repository, be sure
to read the instructions in @file{nt/README} and @file{nt/INSTALL}.
@ -211,39 +216,25 @@ to read the instructions in @file{nt/README} and @file{nt/INSTALL}.
By default, Emacs is compiled with debugging on, and optimizations enabled.
The optimizations may interfere with some types of debugging; the debugger
may not show clearly where it is, or may not be able to inspect certain
variables. If this is the case, reconfigure with @option{--no-opt}.
variables. If this is the case, reconfigure with @kbd{CFLAGS='-O0 -g3'}
The file @file{etc/DEBUG} contains general debugging hints, as well as
specific notes about debugging Emacs with both gdb and Microsoft debuggers.
specific notes about debugging Emacs.
@menu
* GDB::
* Microsoft Developer Studio::
@end menu
@node GDB
@subsection GDB
@cindex GDB, debugging Emacs with
@cindex debugging Emacs with GDB
GDB is the GNU debugger, which can be used to debug Emacs when it has
been compiled with GCC. The best results will be obtained if you
start gdb from the @file{src} directory as @samp{gdb oo/i386/emacs.exe}.
This will load the init file @file{.gdbinit} in that directory, to
define some extra commands for working with lisp while debugging, and
set up breakpoints to catch abnormal aborts.
been compiled with MinGW GCC. The best results will be obtained if
you start gdb from the @file{src} directory as @kbd{gdb ./emacs.exe}.
This will load the init file @file{.gdbinit}@footnote{
Latest versions of GDB might refuse to load the init file for security
reasons, unless you customize GDB; alternatively, use an explicit
@kbd{source ./gdbinit} command after entering GDB.
} in that directory, to define some extra commands for working with
lisp while debugging, and set up breakpoints to catch abnormal
aborts.
@node Microsoft Developer Studio
@subsection Microsoft Developer Studio
@cindex MSVC++, debugging Emacs with
@cindex DevStudio, debugging Emacs with
@cindex debugging Emacs with MS DevStudio
MS DevStudio can be used to debug Emacs when it has been compiled with
a Microsoft compiler. To view lisp variables, you can call the
function @code{debug_print} from the Quickwatch window. Some
@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/debug.txt,
old tips} are probably still valid.
A Windows port of GDB can be found on MinGW download sites and on some
others.
@c ------------------------------------------------------------
@node Installing Emacs
@ -251,7 +242,7 @@ old tips} are probably still valid.
@menu
* Unpacking::
* Installing::
* Installing binaries::
* Image support::
* Init file::
* Location of init file::
@ -279,24 +270,27 @@ old tips} are probably still valid.
The binary distributions are distributed as zip files, which are handled
natively by Windows XP and later. For earlier versions, there are many
tools that can handle the zip format, from InfoZip's command line unzip
tool, to 7zip's multi-format graphical archive explorer. Although
tool, to 7zip's multi-format graphical archive explorer. (Although
popular, WinZip has caused problems with line-ends in the past, and is not
Free software, so we do not recommend it.
Free software, so we do not recommend it.)
Source distributions are distributed as gzipped tar files. 7zip and
similar multi-format graphical tools can handle these, or you can get
Windows ports of the command line gzip and tar tools from multiple sources.
Source distributions are distributed as @file{.tar.gz} or
@file{.tar.xz} files. 7zip and similar multi-format graphical tools
can handle these, or you can get Windows ports of the command line
gzip and tar tools from multiple sources, or use @command{bsdtar}.
@xref{Other useful ports}.
The command to unpack a source distribution from the command line is:
@example
tar xzf emacs-@value{EMACSVER}.tar.gz
@end example
If this does not work with the versions of tar and gzip that you have,
you may need to try a two step process:
@example
gzip -dc emacs-@value{EMACSVER}.tar.gz | tar xvf -
gzip -dc emacs-@value{EMACSVER}.tar.gz | tar xf -
@end example
You may see many messages from tar complaining about being unable to change
@ -304,8 +298,21 @@ the modification time on directories, and from gzip complaining about a
broken pipe. These messages are usually harmless, caused by incomplete ports
that are not fully aware of the limitations of Windows.
@node Installing
@section How do I install Emacs after unpacking?
And here's an example of using @command{bsdtar} (from the
@samp{libarchive} package) to unpack a @file{.tar.xz} archive:
@example
bsdtar -xf emacs-@value{EMACSVER}.tar.xz
@end example
Expect @command{bsdtar} to unpack the whole distribution without any
complaints.
Once you unpack the source distribution, look in @file{nt/INSTALL}
file for build instructions.
@node Installing binaries
@section How do I install Emacs after unpacking the binary zip?
@cindex installing Emacs
@pindex addpm
@cindex Start Menu, creating icons for Emacs
@ -313,7 +320,8 @@ that are not fully aware of the limitations of Windows.
You can run Emacs without any extra steps, but if you want icons in your
Start Menu, or for Emacs to detect the image libraries that are already
installed on your system as part of GTK, then you should run the program
@file{emacs-@value{EMACSVER}\bin\addpm.exe}.
@file{addpm.exe}, which is usually installed into the same @file{bin}
directory with @file{emacs.exe}.
@node Image support
@section How do I get image support?
@ -323,6 +331,7 @@ installed on your system as part of GTK, then you should run the program
@cindex gif, installing image support in Emacs
@cindex tiff, installing image support in Emacs
@cindex xpm, installing image support in Emacs
@cindex rsvg, installing image support in Emacs
@cindex toolbar, installing color icons in
@cindex color images, installing support for images in Emacs
@cindex monochrome images, getting color images in Emacs
@ -330,12 +339,12 @@ installed on your system as part of GTK, then you should run the program
Emacs has built in support for XBM and PBM/PGM/PPM images. This is
sufficient to see the monochrome splash screen and tool-bar icons.
Since 22.2, the official precompiled binaries for Windows have bundled
Since v22.2, the official precompiled binaries for Windows have bundled
libXpm, which is required to display the color versions of those images.
Emacs is compiled to recognize JPEG, PNG, GIF and TIFF images also,
but displaying these image types require external DLLs which are not
bundled with Emacs. @xref{Other useful ports}.
Emacs is compiled to recognize JPEG, PNG, GIF, TIFF, and RSVG images
also, but displaying these image types require external DLLs which are
not bundled with Emacs. @xref{Other useful ports}.
@node Init file
@section What is my init file?
@ -344,11 +353,11 @@ bundled with Emacs. @xref{Other useful ports}.
When Emacs starts up, it attempts to load and execute the contents of
a file commonly called @file{.emacs} (though it may have other names,
@pxref{Installing Emacs,,Where do I put my init file?}) which contains any
customizations you have made. You can manually add lisp code to your
.emacs, or you can use the Customization interface accessible from the
@emph{Options} menu. If the file does not exist, Emacs will start
with the default settings.
@pxref{Location of init file,,Where do I put my init file?}) which
contains any customizations you have made. You can manually add lisp
code to your .emacs, or you can use the Customization interface
accessible from the @emph{Options} menu. If the file does not exist,
Emacs will start with the default settings.
@node Location of init file
@section Where do I put my init file?
@ -358,15 +367,15 @@ with the default settings.
@cindex init.el
@cindex registry, setting the HOME directory in
On Windows, the .emacs file may be called _emacs for backward
compatibility with DOS and FAT filesystems where filenames could not
start with a dot. Some users prefer to continue using such a name,
because Explorer cannot create a file with a name starting with a dot,
even though the filesystem and most other programs can handle it.
In Emacs 22 and later, the init file may also be called
@file{.emacs.d/init.el}. Many of the other files that are created
by lisp packages are now stored in the @file{.emacs.d} directory too,
so this keeps all your Emacs related files in one place.
On Windows, the @file{.emacs} file may be called @file{_emacs} for
backward compatibility with DOS and FAT filesystems where filenames
could not start with a dot. Some users prefer to continue using such
a name due to historical problems various Windows tools had in the
past with file names that begin with a dot. In Emacs 22 and later,
the init file may also be called @file{.emacs.d/init.el}. Many of the
other files that are created by lisp packages are now stored in the
@file{.emacs.d} directory too, so this keeps all your Emacs related
files in one place.
All the files mentioned above should go in your @env{HOME} directory.
The @env{HOME} directory is determined by following the steps below:
@ -387,14 +396,14 @@ backward compatibility, as previous versions defaulted to @file{C:/}
if @env{HOME} was not set.
@item
Use the user's AppData directory, usually a directory called
@file{Application Data} under the user's profile directory, the location
@file{AppData} under the user's profile directory, the location
of which varies according to Windows version and whether the computer is
part of a domain.
@end enumerate
Within Emacs, @key{~} at the beginning of a file name is expanded to your
@env{HOME} directory, so you can always find your .emacs file with
@kbd{C-x C-f ~/.emacs}.
@env{HOME} directory, so you can always find your @file{.emacs} file
by typing the command @kbd{C-x C-f ~/.emacs}.
@node Troubleshooting init file
@section Troubleshooting init file problems
@ -409,15 +418,16 @@ to. You can do this by evaluating the following expression in the
@file{*scratch*} buffer using @kbd{C-x C-e}:
@example
(insert (getenv "HOME"))
(getenv "HOME")
@end example
Look carefully at what is printed and make sure the value is
valid. For example, if the value has trailing whitespace, Emacs won't
be able to find the directory. Also, be sure that the value isn't a
relative drive letter (e.g., @file{d:} without a backslash); if it is,
then @env{HOME} is going to be whatever the current directory on that
drive is, which is likely not what you want to happen.
Look carefully at what is printed in the echo area, and make sure the
value is valid. For example, if the value has trailing whitespace,
Emacs won't be able to find the directory. Also, be sure that the
value isn't a relative drive letter (e.g., @file{d:} without a
backslash or a forward slash after the colon); if it is, then
@env{HOME} is going to be whatever the current directory on that drive
is, which is likely not what you want to happen.
@node Associate files with Emacs
@section How do I associate files with Emacs?
@ -488,9 +498,9 @@ Thanks to Jason Rumney and Sigbjorn Finne for these tips.
The location of the Desktop varies between different versions of
Windows, and in a corporate environment can be moved around by the
network administrator. On NT derivatives, you can use the value of
the @env{USERPROFILE} environment variable to find where the desktop
might be:
network administrator. On latest Windows versions, you can use the
value of the @env{USERPROFILE} environment variable to find where the
desktop might be:
@example
@kbd{C-x C-f $USERPROFILE/Desktop}
@ -512,7 +522,7 @@ menu by default). Once you have a file from the Desktop inside Emacs,
@end menu
@node Focus follows mouse
@subsection How do it make the active window follow the mouse?
@subsection How do I make the active window follow the mouse?
@vindex focus-follows-mouse
@cindex point to focus
@cindex mouse over to focus
@ -524,6 +534,11 @@ even though Windows has a click to focus policy by default (there is
software available to change that though). The latter can be used to
make Emacs use a focus-follow-mouse policy within its own frames.
You can also change the Windows click-to-focus policy by changing
settings in the Registry. The details vary according to your Windows
version; look on the Internet for instructions to enable ``active
window tracking'' for your version of Windows.
@node Swap CapsLock and Control
@subsection How do I swap CapsLock and Control?
@cindex scan codes, modifying
@ -576,7 +591,7 @@ Date: 04 Dec 1996 14:36:21 -0600
Message-ID: <fawg21mm4hm.fsf@@mordor.rsn.hp.com>
Subject: Re: Re[2]: problem with caps/ctrl swap on NT 4.0
@end ignore
@example
@smallexample
It's a binary value that lets you map keystrokes in the low-level keyboard
drivers in NT. As a result you don't have to worry about applications
bypassing mappings that you've done at a higher level (i.e. it just works).
@ -600,7 +615,7 @@ lock key will behave as caps-lock. To swap, you also need to map 0x3a to
This registry value is system wide, and can't be made user-specific. It
also only takes affect on reboot.
@end example
@end smallexample
@item
Ulfar Erlingsson has provided a registry file that sets the CapsLock key
to be a Control key and the Windows key to be an Alt key:
@ -663,7 +678,8 @@ buffers etc. will instead act on the region. An inactive mark needs
to be reactivated to operate on it, unless @code{mark-even-if-inactive}
is set. Secondly, @code{transient-mark-mode} also highlights the
region when it is active, providing the same visual clue that you get
in other programs.
in other programs. This mode is turned on by default in latest
versions of Emacs.
In addition to seeing the highlighting, new Emacs users often expect
editing commands to replace the region when it is active. This behavior
@ -717,14 +733,16 @@ message as documented in Microsoft's API documentation.
@cindex delete Emacs directory
Emacs does not come with an uninstall program. No files are installed
outside of the Emacs base directory, so deleting that directory is
sufficient to clean away the files. If you ran @command{addpm},
you'll need to delete the Start Menu group too. The registry entries
inserted by @command{addpm} will not cause any problems if you leave
them there, but for the sake of completeness, you can use @command{regedit}
to remove the keys under @code{HKEY_LOCAL_MACHINE} orx
@code{HKEY_CURRENT_USER}: @code{SOFTWARE\GNU\Emacs}, and the key
@code{HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\emacs.exe} if it exists.
outside of the directories you find in the binary zip archive, so
deleting those directories is sufficient to clean away the files. If
you ran @command{addpm}, you'll need to delete the Start Menu group
too. The registry entries inserted by @command{addpm} will not cause
any problems if you leave them there, but for the sake of
completeness, you can use @command{regedit} to remove the keys under
@code{HKEY_LOCAL_MACHINE} or @code{HKEY_CURRENT_USER}:
@code{SOFTWARE\GNU\Emacs}, and the key
@code{HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App
Paths\emacs.exe} if it exists.
@node Does not run
@section When I run Emacs nothing happens
@ -751,9 +769,10 @@ been truncated to CONTRIBU or CONTRI~1, your distribution has been
corrupted while unpacking and Emacs will not start.
@end enumerate
If it is still not working, send mail to the list, describing what
you've done, and what you are seeing. (The more information you send
the more likely it is that you'll receive a helpful response..
If it is still not working, send mail to the
@email{help-gnu-emacs@@gnu.org} mailing list, describing what you've
done, and what you are seeing. (The more information you send the more
likely it is that you'll receive a helpful response.)
@node Virus
@section Does Emacs contain a virus?
@ -880,7 +899,6 @@ The doc string contains a list of the system sounds you can use.
* Font names::
* Bold and italic::
* Multilingual fonts::
* BDF fonts::
* Font menu::
* Line ends::
@end menu
@ -910,9 +928,9 @@ an indication of whether the font is outline (.TTF, .ATM) or raster (.FON)
based when fonts are listed, which may let you differentiate between two
fonts with the same name and different technologies.
From Emacs 23, the preferred font name format will be moving to the simpler
and more flexible fontconfig format. XLFD names will continue to be
supported for backward compatibility.
Starting with Emacs 23, the preferred font name format will be moving
to the simpler and more flexible fontconfig format. XLFD names will
continue to be supported for backward compatibility.
@example
XLFD: -*-Courier New-normal-r-*-*-13-*-*-*-c-*-iso8859-1
@ -959,6 +977,9 @@ and manually set the font for italic, bold and bold-italic as follows:
(set-face-font 'bold-italic "-*-Courier New-bold-i-*-*-11-*-*-*-c-*-iso8859-1")
@end example
The @code{w32-enable-synthesized-fonts} variable is obsolete starting
from Emacs 24.4, as Emacs no longer has this limitation.
@node Multilingual fonts
@section Multilingual font support
@cindex multilingual display, fonts
@ -985,11 +1006,8 @@ require the BDF fonts from the GNU intlfonts package.
For many languages, native truetype fonts are sufficient, and in Emacs
23 the need for BDF fonts will disappear for almost all languages. At
the time of writing, some Arabic characters in the HELLO file still do
not display with native fonts, because they are pre-composed characters
from MULE character sets rather than standard Unicode Arabic, but all
other characters are able to be displayed with appropriate truetype or
opentype fonts.
the time of writing, all supported characters are able to be displayed
with appropriate truetype or opentype fonts.
@node Non-latin display
@subsection How do I get Emacs to display non-latin characters?
@ -1025,6 +1043,12 @@ new fontset with @code{create-fontset-from-ascii-font} or
chinese-big5-2:-*-MingLiU-normal-r-*-*-12-*-*-*-c-*-big5-*" t)
@end example
Alternatively, you can augment the default fontset with information of
which fonts to use for certain ranges of characters or for specific
scripts/character sets. @xref{Modifying Fontsets,, Modifying
Fontsets, emacs, The GNU Emacs Manual}, for details and some useful
examples.
@node International fonts
@subsection Where can I find fonts for other languages?
@cindex language support, finding fonts
@ -1037,10 +1061,10 @@ new fontset with @code{create-fontset-from-ascii-font} or
In addition to the wide range of fonts that come with the language
support packages of various components of Windows itself, GNU/Linux
distributions these days come with a number of Free truetype fonts
that cover a wide range of languages. The GNU intlfonts source
distribution contains BDF fonts covering all of the languages that can
be displayed by Emacs 22, and can be downloaded from
@uref{http://ftpmirror.gnu.org/intlfonts, ftp.gnu.org mirrors}.
that cover a wide range of languages. The GNU Unifont project
contains glyphs for most of the Unicode codespace, and can be
downloaded from @uref{http://ftpmirror.gnu.org/unifont, ftp.gnu.org
mirrors}.
@node Third-party multibyte
@subsection How do I use third party programs to display multibyte characters?
@ -1058,12 +1082,6 @@ for that language, but the third party software is intercepting it
and using a different font behind the scenes).
@xref{Non-latin display}.
In addition to defining a fontset with the expected font, you may also need
to disable unicode output with:
@example
(setq w32-enable-unicode-output nil)
@end example
@node Localized fonts
@subsection Can I use a font with a name in my language?
@cindex fonts, localized font names
@ -1073,87 +1091,7 @@ Normally Emacs should initialize @code{locale-coding-system} appropriately
based on your locale, which will let Emacs use font names in your local
language successfully.
@node BDF fonts
@section How do I use bdf fonts with Emacs?
@cindex BDF fonts, using
@cindex GNU intlfonts, using
@cindex intlfonts, using
@vindex w32-bdf-filename-alist
@vindex bdf-directory-alist
@vindex font-encoding-alist
@findex w32-find-bdf-fonts
@findex set-frame-font
To use bdf fonts with Emacs, you need to tell Emacs where the fonts
are located, create fontsets for them, and then use them. We'll use
the 16 dot international fonts from @uref{http://ftpmirror.gnu.org/intlfonts,
ftp.gnu.org/gnu/intlfonts} as an
example put together by Jason Rumney.
Download @file{16dots.tar.gz} and unpack it; I'll assume that they are in
@file{c:\intlfonts}. Then set @code{w32-bdf-filename-alist} to the list of
fonts returned by using @code{w32-find-bdf-fonts} to enumerate all of
the font files. It is a good idea to set the variable
@code{bdf-directory-list} at the same time so @code{ps-print} knows where
to find the fonts:
@example
(setq bdf-directory-list
'("c:/intlfonts/Asian" "c:/intlfonts/Chinese"
"c:/intlfonts/Chinese-X" "c:/intlfonts/Ethiopic"
"c:/intlfonts/European" "c:/intlfonts/Japanese"
"c:/intlfonts/Japanese-X" "c:/intlfonts/Korean-X"
"c:/intlfonts/Misc/"))
(setq w32-bdf-filename-alist (w32-find-bdf-fonts bdf-directory-list))
@end example
Then create fontsets for the BDF fonts:
@example
(create-fontset-from-fontset-spec
"-*-fixed-medium-r-normal-*-16-*-*-*-c-*-fontset-bdf,
japanese-jisx0208:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1983-*,
katakana-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
latin-jisx0201:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0201*-*,
japanese-jisx0208-1978:-*-*-medium-r-normal-*-16-*-*-*-c-*-jisx0208.1978-*,
thai-tis620:-misc-fixed-medium-r-normal--16-160-72-72-m-80-tis620.2529-1,
lao:-misc-fixed-medium-r-normal--16-160-72-72-m-80-MuleLao-1,
tibetan-1-column:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-80-MuleTibetan-1,
ethiopic:-Admas-Ethiomx16f-Medium-R-Normal--16-150-100-100-M-160-Ethiopic-Unicode,
tibetan:-TibMdXA-fixed-medium-r-normal--16-160-72-72-m-160-MuleTibetan-0")
@end example
Many of the international bdf fonts from gnu.org are type 0, and therefore
need to be added to font-encoding-alist:
@example
;; Need to add some fonts to font-encoding-alist since the bdf fonts
;; are type 0 not the default type 1.
(setq font-encoding-alist
(append '(("MuleTibetan-0" (tibetan . 0))
("GB2312" (chinese-gb2312 . 0))
("JISX0208" (japanese-jisx0208 . 0))
("JISX0212" (japanese-jisx0212 . 0))
("VISCII" (vietnamese-viscii-lower . 0))
("KSC5601" (korean-ksc5601 . 0))
("MuleArabic-0" (arabic-digit . 0))
("MuleArabic-1" (arabic-1-column . 0))
("MuleArabic-2" (arabic-2-column . 0))) font-encoding-alist))
@end example
You can now use the Emacs font menu (@pxref{Fonts and text
translation,,How can I have Emacs use a font menu like on X?}) to
select the @emph{bdf: 16-dot medium} fontset, or you can select it by
setting the default font:
@example
(set-frame-font "fontset-bdf")
@end example
Try loading the file @file{etc/HELLO}, and you should be able to see the
various international fonts displayed (except for Hindi, which is not
included in the 16-dot font distribution).
@c This feature disappeared in Emacs 23, and was resurrected in 25.1.
@node Font menu
@section How can I have Emacs use a font menu like on X?
@cindex fonts, displaying a menu
@ -1171,6 +1109,8 @@ Place the following in your init file:
* Add fonts to menu::
@end menu
@c This variable had no effect between v23 and v25.1, where
@c w32-use-w32-font-dialog support was resurrected, see above.
@node Add fonts to menu
@subsection How can I add my font to the font menu?
@cindex font menu, adding fonts
@ -1204,7 +1144,6 @@ this collection of email messages} on the topic.
@menu
* Automatic line ends::
* Line ends by filename::
* Line ends by file system::
@end menu
@ -1220,19 +1159,6 @@ file in Unix (LF) mode with the Ctrl-M characters displayed as @samp{^M}.
It does this to be safe, as no data loss will occur if the file is really
binary and the Ctrl-M characters are significant.
@node Line ends by filename
@subsection CR/LF translation by file extension
@cindex line ends, determining by filename
@cindex binary files, determining by file name
@vindex file-name-buffer-file-type-alist
The variable @code{file-name-buffer-file-type-alist} holds a list of
filename patterns and their associated type; binary or text. Files marked
as binary will not have line-end detection performed on them, and instead
will always be displayed as is. With auto-detection in recent versions of
Emacs, this is seldom useful for existing files, but can still be used
to influence the choice of line ends for newly created files.
@node Line ends by file system
@subsection CR/LF translation by file system
@cindex line ends, determining by filesystem
@ -1260,8 +1186,9 @@ MS Windows, but this has still been insufficient to keep up with
changes in printing technology from text and postscript based printers
connected via ports that can be accessed directly, to graphical
printers that are only accessible via USB. For details, see
@uref{http://www.emacswiki.org/cgi-bin/wiki/PrintingFromEmacs, Emacs
Wiki}.
@uref{http://www.emacswiki.org/emacs/PrintingFromEmacs, Emacs
Wiki}, @uref{http://www.emacswiki.org/emacs/PrintWithWebBrowser}, and
@uref{http://www.emacswiki.org/emacs/PrintFromWindowsExplorer}.
@c ------------------------------------------------------------
@node Sub-processes
@ -1293,9 +1220,7 @@ Wiki}.
The quoting rules for native Windows shells and Cygwin shells have
some subtle differences. When Emacs spawns subprocesses, it tries to
determine whether the process is a Cygwin program and changes its
quoting mechanism appropriately. See this
@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/shell-quoting,
previous discussion} for details.
quoting mechanism appropriately.
@node Subprocess hang
@section Programs reading input hang
@ -1357,9 +1282,11 @@ you can use @code{setbuf} and @code{setvbuf} to manipulate
the buffering semantics.
Some programs handle this by having an explicit flag to control their
buffering behavior, typically @option{-i} for interactive. Other
programs manage to detect that they are running under Emacs, by
using @samp{getenv("emacs")} internally.
buffering behavior, typically @option{-i} for interactive, or by a
special environment variable. Other programs manage to detect that
they are running under Emacs, by using @samp{getenv("emacs")}
internally. Look in the program's documentation for the way around
this issue.
@menu
* Perl script buffering::
@ -1428,6 +1355,7 @@ this discussion} for more details.
@vindex explicit-shell-file-name
You can start an interactive shell in Emacs by typing @kbd{M-x shell}.
By default, this will start the standard Windows shell @file{cmd.exe}.
Emacs uses the @env{SHELL} environment variable to determine which
program to use as the shell. To instruct Emacs to use a non-default
shell, you can either set this environment variable, or customize
@ -1467,11 +1395,6 @@ default shell in Emacs, you can place the following in your init file:
(add-hook 'shell-mode-hook 'my-shell-setup)
@end example
If you find that you are having trouble with Emacs tracking drive
changes with bash, see Mike Fabian's
@uref{http://www.gnu.org/software/emacs/windows/ntemacs/discuss/drive-tracking,
note}.
WARNING: Some versions of bash set and use the environment variable
PID. For some as yet unknown reason, if @env{PID} is set and Emacs
passes it on to bash subshells, bash dies (Emacs can inherit the
@ -1489,7 +1412,7 @@ continue to use bash as your subshell:
@cindex cygwin mount points, using within Emacs
The package
@uref{http://www.emacswiki.org/cgi-bin/wiki/cygwin-mount.el,
@uref{http://www.emacswiki.org/emacs/cygwin-mount.el,
cygwin-mount.el} teaches Emacs about Cygwin mount points.
@node Dired ls
@ -1849,11 +1772,15 @@ your type (@code{flyspell}). Both packages depend on a copy of
@command{ispell} 3.2 or a compatible spell-checking program.
GNU Aspell is a popular choice these days, Windows installers are
available from the @uref{http://aspell.net/win32/, official site}.
Another possibility is Hunspell, which is available from
@uref{https://sourceforge.net/projects/ezwinports/files/?source=navbar,
the ezwinports site}.
Once installed, you will need to configure @code{ispell-program-name}
to tell ispell and flyspell to use @command{aspell} as a replacement for
ispell. You can include the full path to the @file{aspell} binary, which
means you do not need to add its installation directory to the @env{PATH}.
to tell ispell and flyspell to use @command{aspell} or
@command{hunspell} as a replacement for ispell. You can include the
full path to the @file{aspell}/@file{hunspell} binary, which means you
do not need to add its installation directory to the @env{PATH}.
@node Encryption
@section Emacs and encryption
@ -1942,6 +1869,13 @@ of grep is to use @samp{findstr /n /r}.
@node Developing with Emacs
@chapter Developing with Emacs
We recommend using the GNU Compiler Collection for developing C/C++
code from Emacs. The MinGW development toolchain provides Windows
ports of GCC and other compilers.
The rest of this chapter describes other alternatives which you may
need to use.
@menu
* MSVC::
* Borland C++ Builder::
@ -1971,7 +1905,7 @@ tools to build your project.
Christopher Payne wrote a Visual Studio add-in that makes Emacs the
default text editor, this has now been taken over by Jeff Paquette.
See the following two URLS for details:
See the following two URLs for details:
@itemize
@item @uref{http://sourceforge.net/projects/visemacs/} for the latest version.
@item @uref{http://www.smathers.net/VisEmacs.htm} for notes on usage.
@ -2178,6 +2112,7 @@ suggestions} for improving the interaction of perldb and Emacs.
@menu
* Cygwin::
* MinGW::
* EZWinPorts::
* UWIN::
* GnuWin32::
* GTK::
@ -2230,6 +2165,17 @@ filesystem mapping to appear more POSIX like to the scripts that it
runs. This is intended to complement the MinGW tools to make it easier
to port software to Windows.
@node EZWinPorts
@section EZWinPorts
@cindex ezwinports
The @uref{https://sourceforge.net/projects/ezwinports/, EZWinPorts
project} provides many useful ports of recent versions of GNU and Unix
software. This includes all the optional libraries used by Emacs
(image libraries, libxml2, GnuTLS), RCS, Texinfo, a clone of
@command{man} command, Grep, xz, bzip2, bsdtar, ID Utils, Findutils,
Hunspell, Gawk, GNU Make, Groff, GDB.
@node UWIN
@section UWIN
@cindex uwin environment
@ -2251,8 +2197,8 @@ is @command{ksh}, the Korn shell.
@uref{http://gnuwin32.sourceforge.net/}
GnuWin32 provides precompiled native Windows ports of a wide selection
of Free software and libraries. Tools available here that are useful
for Emacs include:
of Free software and libraries. Unfortunately, the ports are
outdated. Tools available here that are useful for Emacs include:
@itemize
@item Arc - used by @code{archive-mode} to edit .arc files.
@ -2302,7 +2248,8 @@ Man pages for Emacs and other ported programs that you have can be
read using Emacs' built-in manual reader @code{woman}. This
requires no external programs, but if you do have a port of
@command{man}, there is also an Emacs wrapper @code{man} that
which may be slightly faster.
which may be slightly faster. A Windows version of @command{man} is
available from the EZWinPorts site (@pxref{EZWinPorts}).
@c ------------------------------------------------------------
@node Further information

View file

@ -2674,8 +2674,16 @@ variable in the environment.
@cindex Maximize frame
@cindex Fullscreen mode
Use the function @code{w32-send-sys-command}. For example, you can
put the following in your @file{.emacs} file:
Beginning with Emacs 24.4 either run Emacs with the @samp{--maximized}
command-line option or put the following form in your @file{.emacs}
file:
@lisp
(add-hook 'emacs-startup-hook 'toggle-frame-maximized)
@end lisp
With older versions use the function @code{w32-send-sys-command}. For
example, you can put the following in your @file{.emacs} file:
@lisp
(add-hook 'emacs-startup-hook

View file

@ -178,7 +178,7 @@ error. @ref{Signals}.
First off, please note that this manual cannot serve as a complete
introduction to object oriented programming and generic functions in
LISP. Although EIEIO is not a complete implementation of the Common
LISP@. Although EIEIO is not a complete implementation of the Common
Lisp Object System (CLOS) and also differs from it in several aspects,
it follows the same basic concepts. Therefore, it is highly
recommended to learn those from a textbook or tutorial first,

View file

@ -667,14 +667,6 @@ your Emacs configuration file. Everything after the @code{(require
@lisp
;;; Sample ERC configuration
;; Add the ERC directory to load path -- you don't need this if you are
;; using the version of ERC that comes with Emacs
(add-to-list 'load-path "~/elisp/erc")
;; Load ERC -- again, you don't need this if you are using the version
;; of ERC that comes with Emacs
(require 'erc)
;; Load authentication info from an external source. Put sensitive
;; passwords and the like in here.
(load "~/.emacs.d/.erc-auth")
@ -724,8 +716,8 @@ stuff, to the current ERC buffer."
(setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
;; Rename server buffers to reflect the current network name instead
;; of IP:PORT. (e.g. "freenode" instead of "84.240.3.129:6667"). This
;; is useful when using a bouncer like ZNC where you have multiple
;; of SERVER:PORT (e.g., "freenode" instead of "irc.freenode.net:6667").
;; This is useful when using a bouncer like ZNC where you have multiple
;; connections to the same server.
(setq erc-rename-buffers t)
@ -788,7 +780,7 @@ or if you have bugs to report, there are several places you can go.
@item
@uref{http://www.emacswiki.org/cgi-bin/wiki/ERC} is the
emacswiki.org page for ERC@. Anyone may add tips, hints, etc. to it.
emacswiki.org page for ERC@. Anyone may add tips, hints, etc.@: to it.
@item
You can ask questions about using ERC on the Emacs mailing list,

View file

@ -649,7 +649,7 @@ Programs that need a terminal to display output properly are referred
to in this manual as ``visual commands,'' because they are not simply
line-oriented. You must tell Eshell which commands are visual, by
adding them to @code{eshell-visual-commands}; for commands that are
visual for only certain @emph{sub}-commands -- e.g. @samp{git log} but
visual for only certain @emph{sub}-commands -- e.g., @samp{git log} but
not @samp{git status} -- use @code{eshell-visual-subcommands}; and for
commands that are visual only when passed certain options, use
@code{eshell-visual-options}.

View file

@ -103,6 +103,12 @@ web page hit @kbd{g} (@code{eww-reload}). Pressing @kbd{w}
which part of the document contains the ``readable'' text, and will
only display this part. This usually gets rid of menus and the like.
@findex eww-toggle-fonts
@findex shr-use-fonts
@kindex F
The @kbd{F} command (@code{eww-toggle-fonts}) toggles whether to use
variable-pitch fonts or not. This sets the @code{shr-use-fonts} variable.
@findex eww-download
@vindex eww-download-directory
@kindex d
@ -120,7 +126,7 @@ specified in @code{eww-download-directory} (Default: @file{~/Downloads/}).
@cindex History
EWW remembers the URLs you have visited to allow you to go back and
forth between them. By pressing @kbd{l} (@code{eww-back-url}) you go
to the previous URL. You can go forward again with @kbd{r}
to the previous URL@. You can go forward again with @kbd{r}
(@code{eww-forward-url}). If you want an overview of your browsing
history press @kbd{H} (@code{eww-list-histories}) to open the history
buffer @file{*eww history*}. The history is lost when EWW is quit.
@ -241,7 +247,7 @@ Sessions, , emacs, The GNU Emacs Manual}.
@vindex eww-desktop-remove-duplicates
EWW history may sensibly contain multiple entries for the same page
URI. At run-time, these entries may still have different associated
URI@. At run-time, these entries may still have different associated
point positions or the actual Web page contents.
The latter, however, tend to be overly large to preserve in the
desktop file, so they get omitted, thus rendering the respective

View file

@ -11482,7 +11482,7 @@ who wrote the article, the date it was written and the subject of the
article. That's well and nice, but there's also lots of information
most people do not want to see---what systems the article has passed
through before reaching you, the @code{Message-ID}, the
@code{References}, etc. ad nauseam---and you'll probably want to get rid
@code{References}, etc.@: ad nauseam---and you'll probably want to get rid
of some of those lines. If you want to keep all those lines in the
article buffer, you can set @code{gnus-show-all-headers} to @code{t}.
@ -14182,6 +14182,7 @@ from different locations, or with different user agents.
* Connecting to an IMAP Server:: Getting started with @acronym{IMAP}.
* Customizing the IMAP Connection:: Variables for @acronym{IMAP} connection.
* Client-Side IMAP Splitting:: Put mail in the correct mail box.
* Support for IMAP Extensions:: Getting extensions and labels from servers.
@end menu
@ -14328,6 +14329,29 @@ Here's a complete example @code{nnimap} backend with a client-side
@end example
@node Support for IMAP Extensions
@subsection Support for IMAP Extensions
@cindex Gmail
@cindex X-GM-LABELS
@cindex IMAP labels
If you're using Google's Gmail, you may want to see your Gmail labels
when reading your mail. Gnus can give you this information if you ask
for @samp{X-GM-LABELS} in the variable @code{gnus-extra-headers}. For
example:
@example
(setq gnus-extra-headers
'(To Newsgroups X-GM-LABELS))
@end example
This will result in Gnus storing your labels in message header
structures for later use. The content is always a parenthesized
(possible empty) list.
@node Getting Mail
@section Getting Mail
@cindex reading mail
@ -25881,7 +25905,7 @@ Store custom flags and keywords
The registry can store custom flags and keywords for a message. For
instance, you can mark a message ``To-Do'' this way and the flag will
persist whether the message is in the nnimap, nnml, nnmaildir,
etc. backends.
etc.@: backends.
@item
Store arbitrary data
@ -25964,7 +25988,7 @@ registry will be pruned back to less than
@code{gnus-registry-max-entries}. This option controls exactly how
much less: the target is calculated as the maximum number of entries
minus the maximum number times this factor. The default is 0.1:
i.e. if your registry is limited to 50000 entries, pruning will try to
i.e., if your registry is limited to 50000 entries, pruning will try to
cut back to 45000 entries. Entries with keys marked as precious will
not be pruned.
@end defvar

View file

@ -839,7 +839,7 @@ See @ref{hfy-display-class} for details of valid values for @var{class}.
(hfy-face-at P)
@end lisp
Find face in effect at point P. If overlays are to be considered
Find face in effect at point P@. If overlays are to be considered
(see @ref{hfy-optimisations}) then this may return a @code{defface} style
list of face properties instead of a face symbol.
@ -1418,7 +1418,7 @@ Add @samp{<div class="default"> </div>} tags around the fontified body.
a page with different colors than the fontified code.)
@item keep-overlays
Preserve overlay highlighting (c.f. @code{ediff} or @code{goo-font-lock})
Preserve overlay highlighting (cf.@: @code{ediff} or @code{goo-font-lock})
as well as basic faces. Can result in extremely verbose highlighting
if there are many overlays (as is the case with @code{goo-font-lock}).

View file

@ -1010,7 +1010,7 @@ Non-@code{nil} means use last match on line for
@cindex Highlighting of syntax
@cindex Font lock
Highlighting of keywords, comments, strings etc. can be accomplished
Highlighting of keywords, comments, strings etc.@: can be accomplished
with @code{font-lock}. If you are using @code{global-font-lock-mode}
(in Emacs), or have @code{font-lock} turned on in any other buffer in
XEmacs, it should also automatically work in IDLWAVE buffers. If you'd
@ -3111,7 +3111,7 @@ window, but is useful for immediate stepping, etc.
@kindex C-c C-d C-p
Do you find yourself repeatedly typing, e.g., @code{print,n_elements(x)},
and similar statements to remind yourself of the
type/size/structure/value/etc. of variables and expressions in your code
type/size/structure/value/etc.@: of variables and expressions in your code
or at the command line? IDLWAVE has a suite of special commands to
automate these types of variable or expression examinations. They work
by sending statements to the shell formatted to include the indicated
@ -3800,31 +3800,25 @@ available, it is the preferred choice, and the default. The variable
whether this help browser is used. If you use the IDL Assistant, the
tips here are not relevant.
Since IDLWAVE runs on a many different system types, a single browser
configuration is not possible, but choices abound. On many systems,
the default browser configured in @code{browse-url-browser-function},
and hence inherited by default by
@code{idlwave-help-browser-function}, is Netscape. Unfortunately, the
HTML manuals decompiled from the original source contain formatting
structures which Netscape 4.x does not handle well, though they are
still readable. A much better choice is Mozilla, or one of the
Mozilla-derived browsers such as
@uref{http://galeon.sourceforge.net/,Galeon} (GNU/Linux),
@uref{http://www.mozilla.org/projects/camino/,Camino} (MacOSX), or
@uref{http://www.mozilla.org/projects/firebird/,Firebird} (all
platforms). Newer versions of Emacs provide a browser-function choice
@code{browse-url-gnome-moz} which uses the Gnome-configured browser.
Since IDLWAVE runs on many different system types, a single browser
configuration is not possible, but choices abound. The default
@code{idlwave-help-browser-function} inherits the browser configured
in @code{browse-url-browser-function}.
Note that the HTML files decompiled from the help sources contain
specific references to the @samp{Symbol} font, which by default is not
permitted in normal encodings (it's invalid, technically). Though it
only impacts a few symbols, you can trick Mozilla-based browsers into
recognizing @samp{Symbol} by following the directions
@c This page is 11 years old. Is it still relevant?
@uref{http://hutchinson.belmont.ma.us/tth/Xfonts.html, here}. With
this fix in place, HTML help pages look almost identical to their PDF
equivalents (yet can be bookmarked, browsed as history, searched,
etc.).
@c Not updated in over a decade.
@c Maybe you want to recommend eww these days.
@ignore
@noindent Individual platform recommendations:
@itemize @bullet
@ -3861,6 +3855,7 @@ following, to get consistent behavior with the @kbd{q} key:
Note that you can open the file in an external browser from within
@code{w3m} using @kbd{M}.
@end itemize
@end ignore
@node Configuration Examples
@appendix Configuration Examples

View file

@ -305,7 +305,7 @@ the files in that directory, simply move the directory to the head
of the list and hit @key{RET}.
To go up to the parent directory, delete any partial file name already
specified (e.g. using @key{DEL}) and hit @key{DEL}.
specified (e.g., using @key{DEL}) and hit @key{DEL}.
@c @deffn Command ido-delete-backward-updir

View file

@ -123,7 +123,7 @@ You may select any number of feeds from this list of (sample) news feeds.
@vindex newsticker-url-list
@item newsticker-url-list
All your personal news feeds are defined here. Each feed is
identified by its name and an URL. You may set the start-time and the
identified by its name and an URL@. You may set the start-time and the
retrieval interval for each feed as well as the retrieval command
arguments in case that the default values do not fit a certain feed.
@ -590,8 +590,7 @@ Newsticker works with the standard RSS and Atom formats listed below
@subheading RSS formats
@itemize
@item RSS 0.91 (see @uref{http://backend.userland.com/rss091} or
@uref{http://my.netscape.com/publish/formats/rss-spec-0.91.html})
@item RSS 0.91 (see @uref{http://backend.userland.com/rss091})
@item RSS 0.92 (see @uref{http://backend.userland.com/rss092})
@item RSS 1.0 (see @uref{http://purl.org/rss/1.0/spec})
@item RSS 2.0 (see @uref{http://blogs.law.harvard.edu/tech/rss})

View file

@ -891,7 +891,7 @@ Recent Emacs distributions include a packaging system which lets you install
Elisp libraries. You can install Org with @kbd{M-x package-install RET org}.
@noindent @b{Important}: you need to do this in a session where no @code{.org} file has
been visited, i.e. where no Org built-in function have been loaded.
been visited, i.e., where no Org built-in function have been loaded.
Otherwise autoload Org functions will mess up the installation.
Then, to make sure your Org configuration is taken into account, initialize
@ -10444,7 +10444,7 @@ You can change the default state of this option by setting
@item C-v
Toggle visible-only export. Only export the text that is currently
visible, i.e. not hidden by outline visibility in the buffer.
visible, i.e., not hidden by outline visibility in the buffer.
@end table
@ -12103,7 +12103,7 @@ Internet-style links for all other links.
A link with no description and destined to a regular (un-itemized) outline
heading is replaced with a cross-reference and section number of the heading.
A @samp{\ref@{label@}}-style reference to an image, table etc. is replaced
A @samp{\ref@{label@}}-style reference to an image, table etc.@: is replaced
with a cross-reference and sequence number of the labeled entity.
@xref{Labels and captions in ODT export}.
@ -13410,7 +13410,7 @@ from it (e.g., @code{beamer}).
This is obviously the most powerful customization, since the changes happen
at the parser level. Indeed, some export back-ends are built as extensions
of other ones (e.g. Markdown back-end an extension of HTML back-end).
of other ones (e.g., Markdown back-end an extension of HTML back-end).
Extending a back-end means that if an element type is not transcoded by the
new back-end, it will be handled by the original one. Hence you can extend

View file

@ -82,7 +82,7 @@ communication. Even though Mailcrypt has similar feature, it does not
deal with detached PGP messages, normally used in PGP/MIME
infrastructure. This was the main reason why I wrote the new library.
Note that the PGG library is now obsolete, replaced by EasyPG.
Note that the PGG library is now obsolete, replaced by EasyPG@.
@xref{Top,, EasyPG, epa, EasyPG Assistant User's Manual}.
PGP/MIME is an application of MIME Object Security Services (RFC1848).

View file

@ -608,7 +608,7 @@ Show calling point in another window. This is the point from where
@item <
Promote the current section. This will convert @code{\section} to
@code{\chapter}, @code{\subsection} to @code{\section} etc. If there is
@code{\chapter}, @code{\subsection} to @code{\section} etc. If there is
an active region, all sections in the region will be promoted, including
the one at point. To avoid mistakes, @RefTeX{} requires a fresh
document scan before executing this command; if necessary, it will
@ -1567,7 +1567,7 @@ Here is the setup:
@cindex @code{linguex}, LaTeX package
@cindex LaTeX packages, @code{linguex}
A more complex example is the @file{linguex.sty} package which defines
list macros @samp{\ex.}, @samp{\a.}, @samp{\b.} etc. for lists which are
list macros @samp{\ex.}, @samp{\a.}, @samp{\b.} etc.@: for lists which are
terminated by @samp{\z.} or by an empty line.
@example
@ -2961,6 +2961,12 @@ label itself in order to be processed correctly by @RefTeX{}. The only
exception is that section labels referring to a section statement
outside the current file can still use that section title as
context.
@item
@vindex reftex-include-file-commands
@RefTeX{} knows about the @code{\include} and @code{\input} macros.
In case you use different commands to include files in a multifile
document, customize the variable @code{reftex-include-file-commands}.
@end itemize
@node Language Support
@ -3893,6 +3899,10 @@ Lisp (and even if you are) you might find it more comfortable to use
@code{customize} to look at and change these variables. @kbd{M-x
reftex-customize} will get you there.
In case you don't use the @code{customize} interface, here's a caveat:
Changing (mostly parsing-related) options might require a call to
@code{reftex-compile-variables} in order to become effective.
@menu
* Options - Table of Contents::
* Options - Defining Label Environments::
@ -5896,7 +5906,7 @@ When no BibTeX database files are specified, citations can also use
@noindent @b{Version 3.11}
@itemize @bullet
@item
Fixed bug which led to naked label in (e.g.@:) footnotes.
Fixed bug which led to naked label in (e.g.)@: footnotes.
@item
Added scroll-other-window functions to RefTeX-Select.
@end itemize

View file

@ -270,7 +270,7 @@ that region, will be remembered.
@defun remember-clipboard
Remember the contents of the current clipboard. This is most useful
for remembering things from Netscape or other X Windows applications.
for remembering things from a web browser or other X Windows applications.
@end defun
@defun remember-finalize

View file

@ -3,11 +3,12 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2014-12-03.16}
\def\texinfoversion{2015-02-05.16}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
% Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@ -4488,7 +4489,6 @@
% Called from \indexdummies and \atdummies.
%
\def\commondummies{%
%
% \definedummyword defines \#1 as \string\#1\space, thus effectively
% preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
@ -4565,6 +4565,7 @@
\definedummyword\guilsinglright
\definedummyword\lbracechar
\definedummyword\leq
\definedummyword\mathopsup
\definedummyword\minus
\definedummyword\ogonek
\definedummyword\pounds
@ -4578,6 +4579,8 @@
\definedummyword\quotesinglbase
\definedummyword\rbracechar
\definedummyword\result
\definedummyword\sub
\definedummyword\sup
\definedummyword\textdegree
%
% We want to disable all macros so that they are not expanded by \write.
@ -4652,6 +4655,7 @@
\definedummyword\samp
\definedummyword\strong
\definedummyword\tie
\definedummyword\U
\definedummyword\uref
\definedummyword\url
\definedummyword\var
@ -8334,14 +8338,7 @@
\catcode`\\=\other
%
% Make the characters 128-255 be printing characters.
{%
\count1=128
\def\loop{%
\catcode\count1=\other
\advance\count1 by 1
\ifnum \count1<256 \loop \fi
}%
}%
{\setnonasciicharscatcodenonglobal\other}%
%
% @ is our escape character in .aux files, and we need braces.
\catcode`\{=1
@ -8952,6 +8949,7 @@
\catcode\count255=#1\relax
\advance\count255 by 1
\repeat
}
% @documentencoding sets the definition of non-ASCII characters
@ -8986,10 +8984,12 @@
%
\else \ifx \declaredencoding \utfeight
\setnonasciicharscatcode\active
\utfeightchardefs
% since we already invoked \utfeightchardefs at the top level
% (below), do not re-invoke it, then our check for duplicated
% definitions triggers. Making non-ascii chars active is enough.
%
\else
\message{Unknown document encoding #1, ignoring.}%
\message{Ignoring unknown document encoding: #1.}%
%
\fi % utfeight
\fi % latnine
@ -8998,10 +8998,11 @@
\fi % ascii
}
% emacs-page
% A message to be logged when using a character that isn't available
% the default font encoding (OT1).
%
\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
\def\missingcharmsg#1{\message{Character missing, sorry: #1.}}
% Take account of \c (plain) vs. \, (Texinfo) difference.
\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
@ -9037,12 +9038,10 @@
\gdef^^b4{\'{}}
\gdef^^b5{$\mu$}
\gdef^^b6{\P}
%
\gdef^^b7{$^.$}
\gdef^^b7{\ifmmode\cdot\else $\cdot$\fi}
\gdef^^b8{\cedilla\ }
\gdef^^b9{$^1$}
\gdef^^ba{\ordm}
%
\gdef^^bb{\guillemetright}
\gdef^^bc{$1\over4$}
\gdef^^bd{$1\over2$}
@ -9331,6 +9330,11 @@
\expandafter\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
\gdef\UTFviiiTmp{#2}%
%
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\errmessage{Internal error, already defined: #1}%
\fi
%
% define an additional control sequence for this code point.
\expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp
\endgroup}
@ -9370,23 +9374,49 @@
\uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
\endgroup
% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M
% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block)
% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A
% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B
%
% Many of our renditions are less than wonderful, and all the missing
% characters are available somewhere. Loading the necessary fonts
% awaits user request. We can't truly support Unicode without
% reimplementing everything that's been done in LaTeX for many years,
% plus probably using luatex or xetex, and who knows what else.
% We won't be doing that here in this simple file. But we can try to at
% least make most of the characters not bomb out.
%
\def\utfeightchardefs{%
\DeclareUnicodeCharacter{00A0}{\tie}
\DeclareUnicodeCharacter{00A1}{\exclamdown}
\DeclareUnicodeCharacter{00A3}{\pounds}
\DeclareUnicodeCharacter{00A7}{\S}
\DeclareUnicodeCharacter{00A8}{\"{ }}
\DeclareUnicodeCharacter{00A9}{\copyright}
\DeclareUnicodeCharacter{00AA}{\ordf}
\DeclareUnicodeCharacter{00AB}{\guillemetleft}
\DeclareUnicodeCharacter{00AC}{\ifmmode\lnot\else $\lnot$\fi}
\DeclareUnicodeCharacter{00AD}{\-}
\DeclareUnicodeCharacter{00AE}{\registeredsymbol}
\DeclareUnicodeCharacter{00AF}{\={ }}
\DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
\DeclareUnicodeCharacter{00B1}{\ifmmode\pm\else $\pm$\fi}
\DeclareUnicodeCharacter{00B2}{$^2$}
\DeclareUnicodeCharacter{00B3}{$^3$}
\DeclareUnicodeCharacter{00B4}{\'{ }}
\DeclareUnicodeCharacter{00B5}{$\mu$}
\DeclareUnicodeCharacter{00B6}{\P}
\DeclareUnicodeCharacter{00B7}{\ifmmode\cdot\else $\cdot$\fi}
\DeclareUnicodeCharacter{00B8}{\cedilla{ }}
\DeclareUnicodeCharacter{00B9}{$^1$}
\DeclareUnicodeCharacter{00BA}{\ordm}
\DeclareUnicodeCharacter{00BB}{\guillemetright}
\DeclareUnicodeCharacter{00BC}{$1\over4$}
\DeclareUnicodeCharacter{00BD}{$1\over2$}
\DeclareUnicodeCharacter{00BE}{$3\over4$}
\DeclareUnicodeCharacter{00BF}{\questiondown}
\DeclareUnicodeCharacter{00C0}{\`A}
@ -9413,6 +9443,7 @@
\DeclareUnicodeCharacter{00D4}{\^O}
\DeclareUnicodeCharacter{00D5}{\~O}
\DeclareUnicodeCharacter{00D6}{\"O}
\DeclareUnicodeCharacter{00D7}{\ifmmode\times\else $\times$\fi}
\DeclareUnicodeCharacter{00D8}{\O}
\DeclareUnicodeCharacter{00D9}{\`U}
\DeclareUnicodeCharacter{00DA}{\'U}
@ -9446,6 +9477,7 @@
\DeclareUnicodeCharacter{00F4}{\^o}
\DeclareUnicodeCharacter{00F5}{\~o}
\DeclareUnicodeCharacter{00F6}{\"o}
\DeclareUnicodeCharacter{00F7}{\ifmmode\div\else $\div$\fi}
\DeclareUnicodeCharacter{00F8}{\o}
\DeclareUnicodeCharacter{00F9}{\`u}
\DeclareUnicodeCharacter{00FA}{\'u}
@ -9465,20 +9497,23 @@
\DeclareUnicodeCharacter{0107}{\'c}
\DeclareUnicodeCharacter{0108}{\^C}
\DeclareUnicodeCharacter{0109}{\^c}
\DeclareUnicodeCharacter{0118}{\ogonek{E}}
\DeclareUnicodeCharacter{0119}{\ogonek{e}}
\DeclareUnicodeCharacter{010A}{\dotaccent{C}}
\DeclareUnicodeCharacter{010B}{\dotaccent{c}}
\DeclareUnicodeCharacter{010C}{\v{C}}
\DeclareUnicodeCharacter{010D}{\v{c}}
\DeclareUnicodeCharacter{010E}{\v{D}}
\DeclareUnicodeCharacter{010F}{d'}
\DeclareUnicodeCharacter{0110}{\DH}
\DeclareUnicodeCharacter{0111}{\dh}
\DeclareUnicodeCharacter{0112}{\=E}
\DeclareUnicodeCharacter{0113}{\=e}
\DeclareUnicodeCharacter{0114}{\u{E}}
\DeclareUnicodeCharacter{0115}{\u{e}}
\DeclareUnicodeCharacter{0116}{\dotaccent{E}}
\DeclareUnicodeCharacter{0117}{\dotaccent{e}}
\DeclareUnicodeCharacter{0118}{\ogonek{E}}
\DeclareUnicodeCharacter{0119}{\ogonek{e}}
\DeclareUnicodeCharacter{011A}{\v{E}}
\DeclareUnicodeCharacter{011B}{\v{e}}
\DeclareUnicodeCharacter{011C}{\^G}
@ -9488,14 +9523,20 @@
\DeclareUnicodeCharacter{0120}{\dotaccent{G}}
\DeclareUnicodeCharacter{0121}{\dotaccent{g}}
\DeclareUnicodeCharacter{0122}{\cedilla{G}}
\DeclareUnicodeCharacter{0123}{\cedilla{g}}
\DeclareUnicodeCharacter{0124}{\^H}
\DeclareUnicodeCharacter{0125}{\^h}
\DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}
\DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}
\DeclareUnicodeCharacter{0128}{\~I}
\DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
\DeclareUnicodeCharacter{012A}{\=I}
\DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
\DeclareUnicodeCharacter{012C}{\u{I}}
\DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
\DeclareUnicodeCharacter{012E}{\ogonek{I}}
\DeclareUnicodeCharacter{012F}{\ogonek{i}}
\DeclareUnicodeCharacter{0130}{\dotaccent{I}}
\DeclareUnicodeCharacter{0131}{\dotless{i}}
@ -9503,15 +9544,29 @@
\DeclareUnicodeCharacter{0133}{ij}
\DeclareUnicodeCharacter{0134}{\^J}
\DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
\DeclareUnicodeCharacter{0136}{\cedilla{K}}
\DeclareUnicodeCharacter{0137}{\cedilla{k}}
\DeclareUnicodeCharacter{0138}{\ifmmode\kappa\else $\kappa$\fi}
\DeclareUnicodeCharacter{0139}{\'L}
\DeclareUnicodeCharacter{013A}{\'l}
\DeclareUnicodeCharacter{013B}{\cedilla{L}}
\DeclareUnicodeCharacter{013C}{\cedilla{l}}
\DeclareUnicodeCharacter{013D}{L'}% should kern
\DeclareUnicodeCharacter{013E}{l'}% should kern
\DeclareUnicodeCharacter{013F}{L\U{00B7}}
\DeclareUnicodeCharacter{0140}{l\U{00B7}}
\DeclareUnicodeCharacter{0141}{\L}
\DeclareUnicodeCharacter{0142}{\l}
\DeclareUnicodeCharacter{0143}{\'N}
\DeclareUnicodeCharacter{0144}{\'n}
\DeclareUnicodeCharacter{0145}{\cedilla{N}}
\DeclareUnicodeCharacter{0146}{\cedilla{n}}
\DeclareUnicodeCharacter{0147}{\v{N}}
\DeclareUnicodeCharacter{0148}{\v{n}}
\DeclareUnicodeCharacter{0149}{'n}
\DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}
\DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}
\DeclareUnicodeCharacter{014C}{\=O}
\DeclareUnicodeCharacter{014D}{\=o}
\DeclareUnicodeCharacter{014E}{\u{O}}
@ -9523,6 +9578,8 @@
\DeclareUnicodeCharacter{0153}{\oe}
\DeclareUnicodeCharacter{0154}{\'R}
\DeclareUnicodeCharacter{0155}{\'r}
\DeclareUnicodeCharacter{0156}{\cedilla{R}}
\DeclareUnicodeCharacter{0157}{\cedilla{r}}
\DeclareUnicodeCharacter{0158}{\v{R}}
\DeclareUnicodeCharacter{0159}{\v{r}}
\DeclareUnicodeCharacter{015A}{\'S}
@ -9534,10 +9591,12 @@
\DeclareUnicodeCharacter{0160}{\v{S}}
\DeclareUnicodeCharacter{0161}{\v{s}}
\DeclareUnicodeCharacter{0162}{\cedilla{t}}
\DeclareUnicodeCharacter{0163}{\cedilla{T}}
\DeclareUnicodeCharacter{0162}{\cedilla{T}}
\DeclareUnicodeCharacter{0163}{\cedilla{t}}
\DeclareUnicodeCharacter{0164}{\v{T}}
\DeclareUnicodeCharacter{0165}{\v{t}}
\DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}
\DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}
\DeclareUnicodeCharacter{0168}{\~U}
\DeclareUnicodeCharacter{0169}{\~u}
\DeclareUnicodeCharacter{016A}{\=U}
@ -9549,6 +9608,8 @@
\DeclareUnicodeCharacter{0170}{\H{U}}
\DeclareUnicodeCharacter{0171}{\H{u}}
\DeclareUnicodeCharacter{0172}{\ogonek{U}}
\DeclareUnicodeCharacter{0173}{\ogonek{u}}
\DeclareUnicodeCharacter{0174}{\^W}
\DeclareUnicodeCharacter{0175}{\^w}
\DeclareUnicodeCharacter{0176}{\^Y}
@ -9560,6 +9621,7 @@
\DeclareUnicodeCharacter{017C}{\dotaccent{z}}
\DeclareUnicodeCharacter{017D}{\v{Z}}
\DeclareUnicodeCharacter{017E}{\v{z}}
\DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}
\DeclareUnicodeCharacter{01C4}{D\v{Z}}
\DeclareUnicodeCharacter{01C5}{D\v{z}}
@ -9765,12 +9827,51 @@
\DeclareUnicodeCharacter{2261}{\equiv}
}% end of \utfeightchardefs
% US-ASCII character definitions.
\def\asciichardefs{% nothing need be done
\relax
}
% Latin1 (ISO-8859-1) character definitions.
\def\nonasciistringdefs{%
\setnonasciicharscatcode\active
\def\defstringchar##1{\def##1{\string##1}}%
\defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3%
\defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7%
\defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab%
\defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af%
%
\defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3%
\defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7%
\defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb%
\defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf%
%
\defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3%
\defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7%
\defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb%
\defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf%
%
\defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3%
\defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7%
\defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db%
\defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df%
%
\defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3%
\defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7%
\defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb%
\defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef%
%
\defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3%
\defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7%
\defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb%
\defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff%
}
% define all the unicode characters we know about, for the sake of @U.
\utfeightchardefs
% Make non-ASCII characters printable again for compatibility with
% existing Texinfo documents that may use them, even without declaring a
% document encoding.
@ -10124,6 +10225,7 @@
%
{@catcode`- = @active
@gdef@normalturnoffactive{%
@nonasciistringdefs
@let-=@normaldash
@let"=@normaldoublequote
@let$=@normaldollar %$ font-lock fix
@ -10192,7 +10294,7 @@
@c Local variables:
@c eval: (add-hook 'write-file-hooks 'time-stamp)
@c page-delimiter: "^\\\\message"
@c page-delimiter: "^\\\\message\\|emacs-page"
@c time-stamp-start: "def\\\\texinfoversion{"
@c time-stamp-format: "%:y-%02m-%02d.%02H"
@c time-stamp-end: "}"

View file

@ -1421,7 +1421,7 @@ Advance point to the next button.
Put point on the previous button.
@end table
These commands are cyclic, e.g. when point is on the last button,
These commands are cyclic, e.g., when point is on the last button,
pressing @kbd{n} moves it to the first button.
Typing @kbd{q} exits Todo Categories mode, killing the buffer and returning
@ -1787,7 +1787,7 @@ current file:
@item F h
@itemx h
Hide the item headers if visible, or show them if they are hidden.
With done items, only the done header (i.e. the done tag and date-time
With done items, only the done header (i.e., the done tag and date-time
string inserted when the item was marked done) is hidden, the original
date-time string is not. With filtered items, the category (or
category-file) tag is not hidden.

View file

@ -1001,16 +1001,17 @@ name.
This special method uses the Android Debug Bridge for accessing
Android devices. The Android Debug Bridge must be installed locally.
Some GNU/Linux distributions offer it for installation, otherwise it
can be installed as part of the Android SDK. If the @command{adb}
can be installed as part of the Android SDK@. If the @command{adb}
program is not found via the @env{PATH} environment variable, the
variable @var{tramp-adb-program} must point to its absolute path.
Tramp does not connect Android devices to @command{adb}. This must be
performed outside @value{emacsname}. If there is exactly one Android
device connected to @command{adb}, a host name is not needed in the
remote file name. The default @value{tramp} name to be used is
@file{@trampfn{adb, , ,}} therefore. Otherwise, one could find
potential host names with the command @command{adb devices}.
@value{tramp} does not connect Android devices to @command{adb},
unless the customer option @option{tramp-adb-connect-if-not-connected}
is non-@code{nil}. If there is exactly one Android device connected
to @command{adb}, a host name is not needed in the remote file name.
The default @value{tramp} name to be used is @file{@trampfn{adb, , ,}},
therefore. Otherwise, one could find potential host names with the
command @command{adb devices}.
Usually, the @command{adb} method does not need any user name. It
runs under the permissions of the @command{adbd} process on the
@ -1019,6 +1020,11 @@ Android device. If a user name is specified, @value{tramp} applies an
devices, especially with unrooted ones. In that case, an error
message is displayed.
If a device shall be connected via TCP/IP, it is possible to declare
the port number to be used like @file{device#42}. Without a port
number, the default value as declared in @command{adb} will be used.
Port numbers are not applicable to Android devices connected via USB.
@end table
@ -1081,6 +1087,7 @@ FUSE, it also needs the SYNCE-GVFS plugin.
@end table
@vindex tramp-gvfs-methods
@defopt tramp-gvfs-methods
This customer option, a list, defines the external methods which shall
be used with GVFS@. Per default, these are @option{dav},
@ -1355,8 +1362,8 @@ bastion host.
@vindex tramp-default-proxies-alist
@defopt tramp-default-proxies-alist
In order to specify multiple hops, it is possible to define a proxy
host to pass through, via the variable
@code{tramp-default-proxies-alist}. This variable keeps a list of
host to pass through, via the customer option
@option{tramp-default-proxies-alist}. This variable keeps a list of
triples (@var{host} @var{user} @var{proxy}).
The first matching item specifies the proxy host to be passed for a
@ -1470,9 +1477,9 @@ Sometimes they offer limited features only, like running @command{rbash}
@vindex tramp-restricted-shell-hosts-alist
@defopt tramp-restricted-shell-hosts-alist
This variable keeps a list of regular expressions, which denote hosts
running a registered shell like "rbash". Those hosts can be used as
proxies only.
This customer option keeps a list of regular expressions, which denote
hosts running a registered shell like @command{rbash}. Those hosts
can be used as proxies only.
If the bastion host from the example above runs a restricted shell,
you shall apply
@ -1788,8 +1795,9 @@ remote file access.
@vindex tramp-own-remote-path
@defopt tramp-remote-path
When @value{tramp} connects to the remote host, it searches for the
programs that it can use. The variable @code{tramp-remote-path}
controls the directories searched on the remote host.
programs that it can use. The customer option
@option{tramp-remote-path} controls the directories searched on the
remote host.
By default, this is set to a reasonable set of defaults for most
hosts. The symbol @code{tramp-default-remote-path} is a place
@ -1798,7 +1806,7 @@ command @command{getconf PATH} on your remote host. For example,
on Debian GNU/Linux this is @file{/bin:/usr/bin}, whereas on Solaris
this is @file{/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/opt/SUNWspro/bin}.
It is recommended to apply this symbol on top of
@code{tramp-remote-path}.
@option{tramp-remote-path}.
It is possible, however, that your local (or remote ;) system
administrator has put the tools you want in some obscure local
@ -2088,6 +2096,7 @@ parameter, you could overwrite the syntax with the following form:
@noindent
with @samp{192.168.0.1} being the IP address of your remote host
(@pxref{Predefined connection information}).
@end table
@ -2591,11 +2600,12 @@ files by other processes. Therefore, during file name completion, the
remote directory contents are reread regularly in order to detect such
changes, which would be invisible otherwise (@pxref{Connection caching}).
@vindex tramp-completion-reread-directory-timeout
@defopt tramp-completion-reread-directory-timeout
This variable defines the number of seconds since last remote command
before rereading a directory contents. A value of 0 would require an
immediate reread during file name completion, @code{nil} means to use
always cached values for the directory contents.
This customer option defines the number of seconds since last remote
command before rereading a directory contents. A value of 0 would
require an immediate reread during file name completion, @code{nil}
means to use always cached values for the directory contents.
@end defopt
@ -2634,8 +2644,9 @@ remotehost, /path}} would be sufficient from now on.
@vindex tramp-save-ad-hoc-proxies
@defopt tramp-save-ad-hoc-proxies
This customer option controls whether ad-hoc definitions are kept
persistently in @code{tramp-default-proxies-alist}. That means, those
definitions are available also for future @value{emacsname} sessions.
persistently in @option{tramp-default-proxies-alist}. That means,
those definitions are available also for future @value{emacsname}
sessions.
@end defopt

View file

@ -8,7 +8,7 @@
@c In the Tramp GIT, 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.11
@set trampver 2.2.12-pre
@c Other flags from configuration
@set instprefix /usr/local

View file

@ -159,7 +159,7 @@ the construct on that line. A @dfn{syntactic component} consists of a
pair of information (in lisp parlance, a @emph{cons cell}), where the
first part is a @dfn{syntactic symbol}, and the second part is a
@dfn{relative buffer position}. Syntactic symbols describe elements of
VHDL code, e.g. @code{statement}, @code{comment}, @code{block-open},
VHDL code, e.g., @code{statement}, @code{comment}, @code{block-open},
@code{block-close}, etc. @xref{Syntactic Symbols}, for a complete list
of currently recognized syntactic symbols and their semantics. Also,
the variable @code{vhdl-offsets-alist} contains the list of currently
@ -633,8 +633,8 @@ similar to what is allowed in @code{vhdl-offsets-alist}. When the file is
visited, VHDL Mode will automatically institute these offsets using
@code{vhdl-set-offset}. @xref{Customizing Indentation}.
Note that file style settings (i.e. @code{vhdl-file-style}) are applied
before file offset settings (i.e. @code{vhdl-file-offsets}).
Note that file style settings (i.e., @code{vhdl-file-style}) are applied
before file offset settings (i.e., @code{vhdl-file-offsets}).
@node Advanced Customizations

View file

@ -436,7 +436,7 @@ Jump to mark (and pop mark off the mark ring).
@cindex region
Vi operators like @kbd{d}, @kbd{c} etc. are usually used in combination
Vi operators like @kbd{d}, @kbd{c} etc.@: are usually used in combination
with motion commands. It is now possible to use current region as the
argument to these operators. (A @dfn{region} is a part of buffer
delimited by point and mark.) The key @kbd{r} is used for this purpose.

View file

@ -1224,7 +1224,7 @@ Facilities like this make Vi's @kbd{:ab} command obsolete.
@cindex Ex style motion
@cindex line editor motion
Viper can be set free from the line--limited movements in Vi, such as @kbd{l}
Viper can be set free from the line-limited movements in Vi, such as @kbd{l}
refusing to move beyond the line, @key{ESC} moving one character back,
etc. These derive from Ex, which is a line editor. If your
Viper customization file contains

View file

@ -1141,7 +1141,7 @@ headings. Default is @code{t}. [Heading emboldening is @emph{not} standard
@code{man} behavior.]
@item woman-ignore
A boolean value. If non-@code{nil} then unrecognized requests etc. are
A boolean value. If non-@code{nil} then unrecognized requests etc.@: are
ignored. Default is @code{t}. This gives the standard @code{roff} behavior.
If @code{nil} then they are left in the buffer, which may aid debugging.

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,40 @@
2015-03-25 Stefan Monnier <monnier@iro.umontreal.ca>
* TODO: Remove obsolete entries.
2015-03-24 Daniel Colascione <dancol@dancol.org>
* NEWS: Mention change to `process-running-child-p`.
2015-03-23 Daiki Ueno <ueno@gnu.org>
* NEWS: Mention `make-process'.
2015-03-21 Titus von der Malsburg <malsburg@posteo.de>
* NEWS: Mention `default-font-width', `window-font-height',
`window-font-width', and `window-max-chars-per-line'.
2015-03-03 Kelvin White <kwhite@gnu.org>
* NEWS.24: Add section to include ERC changes.
2015-03-02 Daniel Colascione <dancol@dancol.org>
* NEWS: Mention finalizers.
2015-02-09 Gareth Rees <gdr@garethrees.org> (tiny change)
* NEWS.24: Fix typo (bug#19820)
2015-02-08 Artur Malabarba <bruce.connor.am@gmail.com>
* NEWS: Document `comment-line'.
2015-02-03 Artur Malabarba <bruce.connor.am@gmail.com>
* NEWS: Document package.el's improved dependency-handling.
2015-01-29 Francesc Rocher <francesc.rocher@gmail.com>
* images/splash.svg, images/splash.png:

View file

@ -9,6 +9,8 @@ For older news, see Gnus info node "New Features".
* New features
** nnimap can request and use the Gmail "X-GM-LABELS".
** New package `gnus-notifications.el' can send notifications when you
receive new messages.

112
etc/NEWS
View file

@ -53,7 +53,7 @@ build with 'make V=1'.
group instead of a user if its argument is prefixed by ':' (a colon).
This will cause the game score files in ${localstatedir}/games/emacs
to be owned by that group, and the helper program for updating them to
be installed setgid.
be installed setgid. The option now defaults to the 'games' group.
---
** The `grep-changelog' script (and its manual page) are no longer included.
@ -65,12 +65,8 @@ so if you want to use it, you can always take a copy from an older Emacs.
* Changes in Emacs 25.1
** Xwidgets : A new feature for embedding native widgets
inside Emacs buffers. If you have gtk3 and webkit-devel installed,
you can try the embedded webkit browser with m-x xwidget-webkit-browse-url.
** `package-install-from-buffer' and `package-install-file' work on directories.
This follows the same rules as installing from a .tar file, except the
-pkg file is optional.
** New command `comment-line' bound to `C-x C-;'.
** New function `custom-prompt-customize-unsaved-options' checks for
unsaved customizations and prompts user to customize (if found).
@ -177,6 +173,24 @@ possible inaccuracies in the end position.
In particular, it now returns the average width of the font's
characters, which can be used for geometry-related calculations.
** A new function `default-font-width' returns the average width of a
character in the current buffer's default font. If the default face
is remapped (see `face-remapping-alist'), the value for the remapped
face is returned. This function complements the existing function
`default-font-height'.
** New functions `window-font-height' and `window-font-width' return
the height and average width of characters in a specified face and
window. If FACE is remapped (see `face-remapping-alist'), the
function returns the information for the remapped face.
** A new function `window-max-chars-per-line' returns the maximal
number of characters that can be displayed on one line. If a face
and/or window are provided, these values are used for the
calculation. This function is different from `window-body-width' in
that it accounts for (i) continuation glyphs, (ii) the size of the
font, and (iii) the specified window.
* Editing Changes in Emacs 25.1
@ -201,8 +215,31 @@ Unicode standards.
** You can access `mouse-buffer-menu' (C-down-mouse-1) using C-f10.
+++
** New buffer-local `electric-pair-local-mode'.
* Changes in Specialized Modes and Packages in Emacs 25.1
** xterm-mouse-mode now supports mouse-tracking (if your xterm supports it).
** package.el
*** `package-install-from-buffer' and `package-install-file' work on directories.
This follows the same rules as installing from a .tar file, except the
-pkg file is optional.
*** Packages which are dependencies of other packages cannot be deleted.
The FORCE argument to `package-delete' overrides this.
*** New custom variable `package-selected-packages' tracks packages
which were installed by the user (as opposed to installed as
dependencies). This variable can also be manually customized.
*** New command `package-install-user-selected-packages' installs all
packages from `package-selected-packages' which are currently missing.
*** New command `package-autoremove' removes all packages which were
installed strictly as dependencies but are no longer needed.
** Shell
When you invoke `shell' interactively, the *shell* buffer will now
@ -221,6 +258,7 @@ If you need your objects to be named, do it by inheriting from `eieio-named'.
*** The <class> variables are declared obsolete.
*** The <initarg> variables are declared obsolete.
*** defgeneric and defmethod are declared obsolete.
*** `constructor' is now an obsolete alias for `make-instance'.
** ido
*** New command `ido-bury-buffer-at-head' bound to C-S-b
@ -261,6 +299,14 @@ useful when, for example, one needs to distinguish various spaces (e.g. ] [,
** eww
---
*** HTML can now be rendered using variable-width fonts.
+++
*** A new command `F' (`eww-toggle-fonts') can be used to toggle
whether to use variable-pitch fonts or not. The user can also
customize the `shr-use-fonts' variable.
+++
*** A new command `R' (`eww-readable') will try do identify the main
textual parts of a web page and display only that, leaving menus and
@ -305,7 +351,7 @@ invalid certificates are marked in red.
transformed into multipart/related messages before sending.
** pcase
*** New UPatterns `quote' and `app'.
*** New UPatterns `quote', `app', `cl-struct', and `eieio'.
*** New UPatterns can be defined with `pcase-defmacro'.
+++
*** New vector QPattern.
@ -366,6 +412,8 @@ The remainder were:
** New ERT function `ert-summarize-tests-batch-and-exit'.
** New js.el option `js-indent-first-init'.
---
** `Info-fontify-maximum-menu-size' can be t for no limit.
@ -444,6 +492,8 @@ allows to customize this.
*** Two new faces `compare-windows-removed' and `compare-windows-added'
replace the obsolete face `compare-windows'.
** VHDL mode supports VHDL'08.
** Calculator: decimal display mode uses "," groups, so it's more
fitting for use in money calculations; factorial works with
non-integer inputs.
@ -529,10 +579,24 @@ to avoid interfering with the kill ring.
allow overriding the regular expression that recognizes the ldapsearch
command line's password prompt.
** Eshell
*** The new built-in command `clear' can scroll window contents out of sight.
** Browse-url
*** Support for the Conkeror web browser.
---
*** Support for several ancient browsers is now officially obsolete.
+++
** tar-mode: new `tar-new-entry' command, allowing for new members to
be added to the archive.
** Autorevert: dired buffers are also auto-reverted via file
notifications, if Emacs is compiled with file notification support.
** Obsolete packages
---
@ -556,6 +620,10 @@ a typographically-correct documents.
* Incompatible Lisp Changes in Emacs 25.1
** `save-excursion' does not save&restore the mark any more.
** read-buffer-function can now be called with a 4th argument (`predicate').
** completion-table-dynamic stays in the minibuffer.
If you want the old behavior of calling the function in the buffer
from which the minibuffer was entered, call it with the new argument
@ -570,6 +638,9 @@ active region handling.
** `cl-the' now asserts that its argument is of the given type.
** `process-running-child-p` may now return a numeric process
group ID instead of `t'.
+++
** Mouse click events on mode line or header line no longer include
any reference to a buffer position. The 6th member of the mouse
@ -584,9 +655,31 @@ when signaling a file error. For example, it now reports "Permission
denied" instead of "permission denied". The old behavior was problematic
in languages like German where downcasing rules depend on grammar.
+++
** The character classes [:alpha:] and [:alnum:] in regular expressions
now match multibyte characters using Unicode character properties.
If you want the old behavior where they matched any character with
word syntax, use `\sw' instead.
* Lisp Changes in Emacs 25.1
** New function `make-process' provides an alternative interface to
`start-process'. It allows programs to set process parameters such as
process filter, sentinel, etc., through keyword arguments (similar to
`make-network-process').
** `read-buffer' takes a new `predicate' argument.
** Emacs Lisp now supports generators.
** New finalizer facility for running code when objects
become unreachable.
** lexical closures can use (:documentation <form>) to build their docstring.
It should be placed right where the docstring would be, and <form> is then
evaluated (and should return a string) when the closure is built.
** define-inline provides a new way to define inlinable functions.
** New function macroexpand-1 to perform a single step of macroexpansion.
@ -724,6 +817,9 @@ Those features have been deprecated in Gtk+ for a long time.
or Windows Server 2003. The built binaries still run on all versions
of Windows starting with Windows 9X.
+++
** Emacs running on MS-Windows now supports the daemon mode.
** OS X 10.5 or older is no longer supported.
** OS X on PowerPC is no longer supported.

View file

@ -14,41 +14,45 @@ and NEWS.1-17 for changes in older Emacs versions.
You can narrow news to a specific version by calling `view-emacs-news'
with a prefix argument or by typing C-u C-h C-n.
Temporary note:
+++ indicates that all necessary documentation updates are complete.
(This means all relevant manuals in doc/ AND lisp doc-strings.)
--- means no change in the manuals is needed.
When you add a new item, use the appropriate mark if you are sure it applies,
otherwise leave it unmarked.
* Changes in Emacs 24.5
---
** This is mainly a bug-fix release, but there are some other changes.
** The default value of `history-length' has increased to 100.
+++
** `redisplay-dont-pause' is declared as obsolete.
** The variable `redisplay-dont-pause' is obsolete.
* Changes in Specialized Modes and Packages in Emacs 24.5
** `call-process-shell-command' and `process-file-shell-command'
don't take "&rest args" any more.
** `call-process-shell-command' and `process-file-shell-command' no longer
take "&rest args".
** The option `browse-url-firefox-startup-arguments' no longer has an effect.
** ERC
*** New option `erc-rename-buffers'.
*** New faces `erc-my-nick-prefix-face' and `erc-nick-prefix-face'.
*** `erc-format-@nick' displays all user modes instead of only op and voice.
*** The display of irc commands in the current buffer has been disabled.
*** `erc-version' now follows the Emacs version.
** Obsolete packages
*** cc-compat.el
---
*** crisp.el - moved to elpa.gnu.org.
*** crisp.el (moved to elpa.gnu.org)
---
*** tpu-edt.el, ws-mode.el
These emulations of old editors are believed to be no longer relevant
- contact emacs-devel@gnu.org if you disagree.
---
*** vi.el, vip.el (try M-x viper instead)
@ -3555,7 +3559,7 @@ frame or window as an Elisp object.
*** New variable `completion-extra-properties' used to specify extra
properties of the current completion:
- :annotate-function, same as the old completion-annotate-function.
- :annotation-function, same as the old completion-annotate-function.
- :exit-function, function to call after completion took place.
*** Functions on `completion-at-point-functions' can return any of the

View file

@ -1,7 +1,6 @@
Known Problems with GNU Emacs
Copyright (C) 1987-1989, 1993-1999, 2001-2015 Free Software Foundation,
Inc.
Copyright (C) 1987-1989, 1993-1999, 2001-2015 Free Software Foundation, Inc.
See the end of the file for license conditions.
@ -458,6 +457,29 @@ problem by adding this to your .cshrc file:
endif
endif
*** Emacs startup on GNU/Linux systems (and possibly other systems) is slow.
This can happen if the system is misconfigured and Emacs can't get the
full qualified domain name, FQDN. You should have your FQDN in the
/etc/hosts file, something like this:
127.0.0.1 localhost
129.187.137.82 nuc04.t30.physik.tu-muenchen.de nuc04
The way to set this up may vary on non-GNU systems.
*** Visiting files in some auto-mounted directories causes Emacs to print
`Error reading dir-locals: (file-error "Read error" "is a directory" ...'
This can happen if the auto-mounter mistakenly reports that
.dir-locals.el exists and is a directory. There is nothing Emacs can
do about this, but you can avoid the issue by adding a suitable entry
to the variable `locate-dominating-stop-dir-regexp'. For example, if
the problem relates to "/smb/.dir-locals.el", set that variable
to a new value where you replace "net\\|afs" with "net\\|afs\\|smb".
(The default value already matches common auto-mount prefixes.)
See http://lists.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00461.html .
*** Attempting to visit remote files via ange-ftp fails.
If the error message is "ange-ftp-file-modtime: Specified time is not

View file

@ -102,6 +102,21 @@ make it.
"FOO-tab -> ?\FOO-\t", "uppercase -> lowercase", "[fringe KEY...] ->
[KEY]", "H-FOO -> M-FOO", "C-x C-y FOO -> H-FOO", ...
* Things related to elpa.gnu.org.
** Move idlwave to elpa.gnu.org.
Need to sync up the Emacs and external versions.
See <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00008.html>
** Move Org mode to elpa.gnu.org.
See <http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00300.html>
<http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg00257.html>
** Move verilog-mode to elpa.gnu.org.
See <http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg01180.html>
** Move vhdl-mode to elpa.gnu.org.
See <http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg01180.html>
* Simple tasks. These don't require much Emacs knowledge, they are
suitable for anyone from beginners to experts.
@ -401,9 +416,6 @@ http://lists.gnu.org/archive/html/emacs-devel/2009-04/msg00034.html
** Allow frames(terminals) created by emacsclient to inherit their environment
from the emacsclient process.
** Remove the default toggling behavior of minor modes when called from elisp
rather than interactively. This a trivial one-liner in easy-mode.el.
** Give Tar mode all the features of Archive mode.
** Create a category of errors called `process-error'
@ -412,9 +424,6 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
** Maybe reinterpret `parse-error' as a category of errors
and put some other errors under it.
** A function to tell you the argument pattern of functions.
See `function-arity' in http://www.loveshack.ukfsn.org/emacs/fx-misc.el.
** Make byte-compile warn when a doc string is too wide.
** Make byte-optimization warnings issue accurate line numbers.
@ -480,9 +489,6 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
** Give start-process the ability to direct standard-error
output to a different filter.
** Make desktop.el save the "frame configuration" of Emacs (in some
useful sense).
** Give desktop.el a feature to switch between different named desktops.
** Add a cpio mode, more or less like tar mode.
@ -508,23 +514,10 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
Check the assignments file for other packages which might go in and
have been missed.
** Make keymaps a first-class Lisp object (this means a rewrite of
keymap.c). What should it do apart from being opaque ?
multiple inheritance ? faster where-is ? no more fix_submap_inheritance ?
what else ?
** Implement popular parts of the rest of the CL functions as compiler
macros in cl-macs. [Is this still relevant now that cl-lib exists?]
** Make compiler warnings about functions that might be undefined at run time
smarter, so that they know which files are required by the file being
compiled and don't warn about functions defined in them.
** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA,
but it's a valuable feature worth making more general.
[Basic support added 2013/10:
http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00904.html ]
** Split out parts of lisp.h.
** Update the FAQ.
@ -532,11 +525,6 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
** Allow auto-compression-mode to use zlib calls if zlib is available.
[It's required for PNG, so may be linked anyhow.]
** Add a --pristine startup flag which does -q --no-site-file plus
ignoring X resources (Doze equivalents?) and most of the
environment. What should not be ignored needs consideration.
[Do the existing -Q and -D cover this, or is more needed?]
** Improve the GC (generational, incremental). (We may be able to use
the Boehm collector.) [See the Boehm-GC branch in CVS for work on this.]
@ -563,20 +551,9 @@ rather than interactively. This a trivial one-liner in easy-mode.el.
(Requires recursing through display properties). Provide some way
to simulate mouse-clicks on marginal text without a mouse.
** Implement Lisp functions to determine properly whether a character
is displayable (particularly needed in XFree 4, sigh). Use it to
define useful glyphs that may be displayed as images or unicodes
(with ASCIIfied fallback via latin1-disp). Examples include
box-drawing graphics in Custom buffers, W3 rules and tables, and
tree displays generally, mode-line mail indicator. [See work done
already for Emacs 23 and consult fx.]
** Extend ps-print to deal with multiple font sizes, images, and extra
encodings.
** Make byte-compile avoid binding an expanded defsubst's args
when the body only calls primitives.
** Use the XIE X extension, if available, for image display.
** Make monochrome images display using the foreground and background

View file

@ -1,3 +1,10 @@
2015-02-23 Pete Williamson <petewil0@googlemail.com> (tiny change)
Use ${EXEEXT} more uniformly in makefiles
When porting Emacs to run on NaCl, we need to make sure that we always
call it with the proper extension (.nexe in this case) during the build.
* Makefile.in (EMACS): Append ${EXEEXT}.
2015-01-04 Paul Eggert <eggert@cs.ucla.edu>
Less 'make' chatter for leim

View file

@ -47,7 +47,7 @@ unexport EMACSDATA EMACSDOC EMACSPATH
# Which Emacs to use to convert TIT files to Emacs Lisp files,
# and generate the file leim-list.el.
EMACS = ../src/emacs
EMACS = ../src/emacs${EXEEXT}
# How to run Emacs.
# Prevent any setting of EMACSLOADPATH in user environment causing problems.

View file

@ -1,3 +1,76 @@
2015-03-27 Paul Eggert <eggert@cs.ucla.edu>
Port etags to -DDEBUG
* etags.c (xnew, xrnew) [DEBUG]: Don't include chkmalloc.h, which
is not part of Emacs and is typically not installed.
Instead, just invoke xmalloc and xrealloc as usual.
Problem reported by Nicolas Richard in:
http://bugs.gnu.org/20191#20
(xrnew): Avoid no-longer-needed cast to 'char *'.
(xrealloc): First arg is now void *, not char *.
2015-03-06 Paul Eggert <eggert@cs.ucla.edu>
Random minor fixes for movemail
* movemail.c: Include <stdbool.h> and <signal.h>.
(waitpid) [WINDOWSNT]: New macro.
(wait) [WINDOWSNT]: Remove.
(main, popmail, pop_retr, mbx_write, mbx_delimit_begin)
(mbx_delimit_end): Use bool for boolean.
(main): Simplify #if usage a bit.
(main): Don't assume EOF == -1. Prefer 'return' to 'exit'. Don't
possibly unlink lockname twice, as that's a race condition. Set
SIGCHLD to SIG_DFL to work around SysV misfeature. Check for fork
failure. Use waitpid, not wait, to avoid a race condition in the
unlikely case where we start up with a child.
(NOTOK, OK): Remove, in favor of plain boolean.
(popmail, pop_retr): Don't get confused about errno, e.g., ferror
need not set errno.
(popmail): Use fclose (mbf), not close (fileno (mbf)), to also
detect any stream-related errors (e.g., memory exhaustion).
(pop_retr): Report pop errors separately, since caller now does
errno reporting.
(mbx_write, mbx_delimit_begin, mbx_delimit_end): Check < 0, not ==
EOF, as it's a bit faster and (in theory) pickier.
2015-02-27 Mark Laws <mdl@60hz.org>
Support daemon mode on MS-Windows (bug#19688)
* emacsclient.c (decode_options) [WINDOWSNT]: Don't reject empty
arguments for --alternate-editor.
(print_help_and_exit) [WINDOWSNT]: Don't refrain from advertising
empty arguments for --alternate-editor.
(start_daemon_and_retry_set_socket) [WINDOWSNT]: MS-Windows
specific code to start Emacs in daemon mode and wait for it to be
ready for client connections.
2015-02-23 Pete Williamson <petewil0@googlemail.com> (tiny change)
Use ${EXEEXT} more uniformly in makefiles
* Makefile.in (EMACS): Append ${EXEEXT}.
2015-02-20 Paul Eggert <eggert@cs.ucla.edu>
Simplify binary I/O configuration
* etags.c: Include <sysstdio.h> rather than <stdio.h>.
(process_file_name, analyze_regex): Use FOPEN_BINARY rather than
hard-coded "b".
2015-02-19 Eli Zaretskii <eliz@gnu.org>
* etags.c (process_file_name) [!DOS_NT]: Use "r", not "rb" in the
call to 'popen'. (Bug#19735)
2015-02-13 Paul Eggert <eggert@cs.ucla.edu>
Better support for future plugins
See the thread containing:
http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg00720.html
* make-docfile.c (write_globals): Generate code that #defines
Qxxx macros other than Qnil only if DEFINE_NONNIL_Q_SYMBOL_MACROS.
Qnil is safe to define even in plugins, since it must be zero for
other reasons.
2015-01-24 Paul Eggert <eggert@cs.ucla.edu>
Fix a couple of AM_V_GEN bugs

View file

@ -21,7 +21,7 @@
SHELL = @SHELL@
# Following ../lisp/Makefile.in.
EMACS = ../src/emacs
EMACS = ../src/emacs${EXEEXT}
EMACSOPT = -batch --no-site-file --no-site-lisp
# ==================== Things `configure' will edit ====================

View file

@ -595,13 +595,6 @@ decode_options (int argc, char **argv)
display = NULL;
tty = 1;
}
if (alternate_editor && alternate_editor[0] == '\0')
{
message (true, "--alternate-editor argument or ALTERNATE_EDITOR variable cannot be\n\
an empty string");
exit (EXIT_FAILURE);
}
#endif /* WINDOWSNT */
}
@ -642,10 +635,8 @@ The following OPTIONS are accepted:\n\
Set filename of the TCP authentication file\n\
-a EDITOR, --alternate-editor=EDITOR\n\
Editor to fallback to if the server is not running\n"
#ifndef WINDOWSNT
" If EDITOR is the empty string, start Emacs in daemon\n\
mode and try connecting again\n"
#endif /* not WINDOWSNT */
"\n\
Report bugs with M-x report-emacs-bug.\n");
exit (EXIT_SUCCESS);
@ -1511,7 +1502,77 @@ start_daemon_and_retry_set_socket (void)
execvp ("emacs", d_argv);
message (true, "%s: error starting emacs daemon\n", progname);
}
#endif /* WINDOWSNT */
#else /* WINDOWSNT */
DWORD wait_result;
HANDLE w32_daemon_event;
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory (&si, sizeof si);
si.cb = sizeof si;
ZeroMemory (&pi, sizeof pi);
/* We start Emacs in daemon mode, and then wait for it to signal us
it is ready to accept client connections, by asserting an event
whose name is known to the daemon (defined by nt/inc/ms-w32.h). */
if (!CreateProcess (NULL, "emacs --daemon", NULL, NULL, FALSE,
CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
char* msg = NULL;
FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_ARGUMENT_ARRAY,
NULL, GetLastError (), 0, (LPTSTR)&msg, 0, NULL);
message (true, "%s: error starting emacs daemon (%s)\n", progname, msg);
exit (EXIT_FAILURE);
}
w32_daemon_event = CreateEvent (NULL, TRUE, FALSE, W32_DAEMON_EVENT);
if (w32_daemon_event == NULL)
{
message (true, "Couldn't create Windows daemon event");
exit (EXIT_FAILURE);
}
if ((wait_result = WaitForSingleObject (w32_daemon_event, INFINITE))
!= WAIT_OBJECT_0)
{
char *msg = NULL;
switch (wait_result)
{
case WAIT_ABANDONED:
msg = "The daemon exited unexpectedly";
break;
case WAIT_TIMEOUT:
/* Can't happen due to INFINITE. */
default:
case WAIT_FAILED:
FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_ARGUMENT_ARRAY,
NULL, GetLastError (), 0, (LPTSTR)&msg, 0, NULL);
break;
}
message (true, "Error: Could not start the Emacs daemon: %s\n", msg);
exit (EXIT_FAILURE);
}
CloseHandle (w32_daemon_event);
/* Try connecting, the daemon should have started by now. */
/* It's just a progress message, so don't pop a dialog if this is
emacsclientw. */
if (!w32_window_app ())
message (true,
"Emacs daemon should have started, trying to connect again\n");
if ((emacs_socket = set_socket (1)) == INVALID_SOCKET)
{
message (true,
"Error: Cannot connect even after starting the Emacs daemon\n");
exit (EXIT_FAILURE);
}
#endif /* WINDOWSNT */
}
int

View file

@ -122,7 +122,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sysstdio.h>
#include <ctype.h>
#include <errno.h>
#include <sys/types.h>
@ -176,17 +176,8 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
* SYNOPSIS: Type *xnew (int n, Type);
* void xrnew (OldPointer, int n, Type);
*/
#if DEBUG
# include "chkmalloc.h"
# define xnew(n,Type) ((Type *) trace_malloc (__FILE__, __LINE__, \
(n) * sizeof (Type)))
# define xrnew(op,n,Type) ((op) = (Type *) trace_realloc (__FILE__, __LINE__, \
(char *) (op), (n) * sizeof (Type)))
#else
# define xnew(n,Type) ((Type *) xmalloc ((n) * sizeof (Type)))
# define xrnew(op,n,Type) ((op) = (Type *) xrealloc ( \
(char *) (op), (n) * sizeof (Type)))
#endif
#define xnew(n, Type) ((Type *) xmalloc ((n) * sizeof (Type)))
#define xrnew(op, n, Type) ((op) = (Type *) xrealloc (op, (n) * sizeof (Type)))
typedef void Lang_function (FILE *);
@ -348,7 +339,7 @@ static void canonicalize_filename (char *);
static void linebuffer_init (linebuffer *);
static void linebuffer_setlen (linebuffer *, int);
static void *xmalloc (size_t);
static void *xrealloc (char *, size_t);
static void *xrealloc (void *, size_t);
static char searchar = '/'; /* use /.../ searches */
@ -1532,11 +1523,11 @@ process_file_name (char *file, language *lang)
if (real_name == compressed_name)
{
char *cmd = concat (compr->command, " ", real_name);
inf = popen (cmd, "rb");
inf = popen (cmd, "r" FOPEN_BINARY);
free (cmd);
}
else
inf = fopen (real_name, "rb");
inf = fopen (real_name, "r" FOPEN_BINARY);
if (inf == NULL)
{
perror (real_name);
@ -5600,7 +5591,7 @@ analyze_regex (char *regex_arg)
char *regexfile = regex_arg + 1;
/* regexfile is a file containing regexps, one per line. */
regexfp = fopen (regexfile, "rb");
regexfp = fopen (regexfile, "r" FOPEN_BINARY);
if (regexfp == NULL)
pfatal (regexfile);
linebuffer_init (&regexbuf);
@ -6533,7 +6524,7 @@ xmalloc (size_t size)
}
static void *
xrealloc (char *ptr, size_t size)
xrealloc (void *ptr, size_t size)
{
void *result = realloc (ptr, size);
if (result == NULL)

View file

@ -707,12 +707,9 @@ write_globals (void)
globals[i].name, globals[i].name);
}
else if (globals[i].type == SYMBOL)
printf (("DEFINE_LISP_SYMBOL_BEGIN (%s)\n"
"#define i%s %d\n"
"#define %s builtin_lisp_symbol (i%s)\n"
"DEFINE_LISP_SYMBOL_END (%s)\n\n"),
globals[i].name, globals[i].name, symnum++,
globals[i].name, globals[i].name, globals[i].name);
printf (("#define i%s %d\n"
"DEFINE_LISP_SYMBOL (%s)\n"),
globals[i].name, symnum++, globals[i].name);
else
{
if (globals[i].flags & DEFUN_noreturn)
@ -740,15 +737,19 @@ write_globals (void)
puts ("#ifdef DEFINE_SYMBOLS");
puts ("static char const *const defsym_name[] = {");
for (int i = 0; i < num_globals; i++)
{
if (globals[i].type == SYMBOL)
printf ("\t\"%s\",\n", globals[i].v.svalue);
while (i + 1 < num_globals
&& strcmp (globals[i].name, globals[i + 1].name) == 0)
i++;
}
if (globals[i].type == SYMBOL)
printf ("\t\"%s\",\n", globals[i].v.svalue);
puts ("};");
puts ("#endif");
puts ("#define Qnil builtin_lisp_symbol (0)");
puts ("#if DEFINE_NON_NIL_Q_SYMBOL_MACROS");
num_symbols = 0;
for (int i = 0; i < num_globals; i++)
if (globals[i].type == SYMBOL && num_symbols++ != 0)
printf ("# define %s builtin_lisp_symbol (%d)\n",
globals[i].name, num_symbols - 1);
puts ("#endif");
}

View file

@ -59,6 +59,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <stdbool.h>
#include <stdio.h>
#include <errno.h>
#include <time.h>
@ -66,6 +67,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <getopt.h>
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
#include <string.h>
#include "syswait.h"
#ifdef MAIL_USE_POP
@ -81,7 +83,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#undef access
#undef unlink
#define fork() 0
#define wait(var) (*(var) = 0)
#define waitpid(child, var, flags) (*(var) = 0)
/* Unfortunately, Samba doesn't seem to properly lock Unix files even
though the locking call succeeds (and indeed blocks local access from
other NT programs). If you have direct file access using an NFS
@ -134,11 +136,11 @@ static void error (const char *s1, const char *s2, const char *s3);
static _Noreturn void pfatal_with_name (char *name);
static _Noreturn void pfatal_and_delete (char *name);
#ifdef MAIL_USE_POP
static int popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse_order);
static int pop_retr (popserver server, int msgno, FILE *arg);
static int mbx_write (char *line, int len, FILE *mbf);
static int mbx_delimit_begin (FILE *mbf);
static int mbx_delimit_end (FILE *mbf);
static int popmail (char *, char *, bool, char *, bool);
static bool pop_retr (popserver, int, FILE *);
static bool mbx_write (char *, int, FILE *);
static bool mbx_delimit_begin (FILE *);
static bool mbx_delimit_end (FILE *);
#endif
#if (defined MAIL_USE_MAILLOCK \
@ -166,23 +168,21 @@ main (int argc, char **argv)
int indesc, outdesc;
ssize_t nread;
int wait_status;
int c, preserve_mail = 0;
int c;
bool preserve_mail = false;
#ifndef MAIL_USE_SYSTEM_LOCK
struct stat st;
int tem;
char *lockname;
char *tempname;
size_t inname_len, inname_dirlen;
int desc;
#endif /* not MAIL_USE_SYSTEM_LOCK */
#ifdef MAIL_USE_MAILLOCK
char *spool_name;
#endif
char *spool_name = 0;
#ifdef MAIL_USE_POP
int pop_reverse_order = 0;
bool pop_reverse_order = false;
# define ARGSTR "pr"
#else /* ! MAIL_USE_POP */
# define ARGSTR "p"
@ -193,19 +193,19 @@ main (int argc, char **argv)
delete_lockname = 0;
while ((c = getopt (argc, argv, ARGSTR)) != EOF)
while (0 <= (c = getopt (argc, argv, ARGSTR)))
{
switch (c) {
#ifdef MAIL_USE_POP
case 'r':
pop_reverse_order = 1;
pop_reverse_order = true;
break;
#endif
case 'p':
preserve_mail++;
preserve_mail = true;
break;
default:
exit (EXIT_FAILURE);
return EXIT_FAILURE;
}
}
@ -223,7 +223,7 @@ main (int argc, char **argv)
#else
fprintf (stderr, "Usage: movemail [-p] inbox destfile%s\n", "");
#endif
exit (EXIT_FAILURE);
return EXIT_FAILURE;
}
inname = argv[optind];
@ -244,7 +244,7 @@ main (int argc, char **argv)
status = popmail (inname + 3, outname, preserve_mail,
(argc - optind == 3) ? argv[optind+2] : NULL,
pop_reverse_order);
exit (status);
return status;
}
if (setuid (getuid ()) < 0)
@ -253,18 +253,15 @@ main (int argc, char **argv)
#endif /* MAIL_USE_POP */
#ifndef DISABLE_DIRECT_ACCESS
char *lockname = 0;
#ifndef MAIL_USE_MMDF
#ifndef MAIL_USE_SYSTEM_LOCK
#ifdef MAIL_USE_MAILLOCK
spool_name = mail_spool_name (inname);
if (spool_name)
{
#ifdef lint
lockname = 0;
#endif
}
else
#endif
if (! spool_name)
{
/* Use a lock file named after our first argument with .lock appended:
If it exists, the mail file is locked. */
@ -292,7 +289,7 @@ main (int argc, char **argv)
continue;
tempname = xmalloc (inname_dirlen + sizeof "EXXXXXX");
while (1)
while (true)
{
/* Create the lock file, but not under the lock file name. */
/* Give up if cannot do that. */
@ -328,7 +325,10 @@ main (int argc, char **argv)
{
time_t now = time (0);
if (st.st_ctime < now - 300)
unlink (lockname);
{
unlink (lockname);
lockname = 0;
}
}
}
@ -337,15 +337,20 @@ main (int argc, char **argv)
#endif /* not MAIL_USE_SYSTEM_LOCK */
#endif /* not MAIL_USE_MMDF */
if (fork () == 0)
#ifdef SIGCHLD
signal (SIGCHLD, SIG_DFL);
#endif
pid_t child = fork ();
if (child < 0)
fatal ("Error in fork; %s", strerror (errno), 0);
if (child == 0)
{
int lockcount = 0;
int status = 0;
#if defined (MAIL_USE_MAILLOCK) && defined (HAVE_TOUCHLOCK)
time_t touched_lock;
# ifdef lint
touched_lock = 0;
# endif
time_t touched_lock IF_LINT (= 0);
#endif
if (setuid (getuid ()) < 0 || setregid (-1, real_gid) < 0)
@ -382,9 +387,9 @@ main (int argc, char **argv)
#ifdef MAIL_USE_MAILLOCK
if (spool_name)
{
/* The "0 - " is to make it a negative number if maillock returns
/* The "-" is to make it a negative number if maillock returns
non-zero. */
status = 0 - maillock (spool_name, 1);
status = - maillock (spool_name, 1);
#ifdef HAVE_TOUCHLOCK
touched_lock = time (0);
#endif
@ -422,7 +427,7 @@ main (int argc, char **argv)
{
char buf[1024];
while (1)
while (true)
{
nread = read (indesc, buf, sizeof buf);
if (nread < 0)
@ -464,7 +469,7 @@ main (int argc, char **argv)
#ifdef MAIL_USE_SYSTEM_LOCK
if (! preserve_mail)
{
if (ftruncate (indesc, 0L) != 0)
if (ftruncate (indesc, 0) != 0)
pfatal_with_name (inname);
}
#endif /* MAIL_USE_SYSTEM_LOCK */
@ -499,21 +504,18 @@ main (int argc, char **argv)
if (spool_name)
mailunlock ();
#endif
exit (EXIT_SUCCESS);
return EXIT_SUCCESS;
}
wait (&wait_status);
if (waitpid (child, &wait_status, 0) < 0)
fatal ("Error in waitpid; %s", strerror (errno), 0);
if (!WIFEXITED (wait_status))
exit (EXIT_FAILURE);
return EXIT_FAILURE;
else if (WEXITSTATUS (wait_status) != 0)
exit (WEXITSTATUS (wait_status));
return WEXITSTATUS (wait_status);
#if !defined (MAIL_USE_MMDF) && !defined (MAIL_USE_SYSTEM_LOCK)
#ifdef MAIL_USE_MAILLOCK
if (! spool_name)
#endif /* MAIL_USE_MAILLOCK */
if (lockname)
unlink (lockname);
#endif /* not MAIL_USE_MMDF and not MAIL_USE_SYSTEM_LOCK */
#endif /* ! DISABLE_DIRECT_ACCESS */
@ -616,12 +618,6 @@ pfatal_and_delete (char *name)
#include <pwd.h>
#include <string.h>
#define NOTOK (-1)
#define OK 0
static char Errmsg[200]; /* POP errors, at least, can exceed
the original length of 80. */
/*
* The full valid syntax for a POP mailbox specification for movemail
* is "po:username:hostname". The ":hostname" is optional; if it is
@ -637,10 +633,11 @@ static char Errmsg[200]; /* POP errors, at least, can exceed
*/
static int
popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse_order)
popmail (char *mailbox, char *outfile, bool preserve, char *password,
bool reverse_order)
{
int nmsgs, nbytes;
register int i;
int i;
int mbfi;
FILE *mbf;
popserver server;
@ -690,7 +687,8 @@ popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse
}
}
if ((mbf = fdopen (mbfi, "wb")) == NULL)
mbf = fdopen (mbfi, "wb");
if (!mbf)
{
pop_close (server);
error ("Error in fdopen: %s", strerror (errno), 0);
@ -713,35 +711,28 @@ popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse
}
for (i = start; i * increment <= end * increment; i += increment)
{
if (mbx_delimit_begin (mbf) != OK
|| pop_retr (server, i, mbf) != OK)
{
error ("%s", Errmsg, 0);
close (mbfi);
return EXIT_FAILURE;
}
mbx_delimit_end (mbf);
fflush (mbf);
if (ferror (mbf))
{
error ("Error in fflush: %s", strerror (errno), 0);
pop_close (server);
close (mbfi);
return EXIT_FAILURE;
}
}
if (! (mbx_delimit_begin (mbf)
&& pop_retr (server, i, mbf)
&& mbx_delimit_end (mbf)
&& fflush (mbf) == 0))
{
if (errno)
error ("Error in POP retrieving: %s", strerror (errno), 0);
pop_close (server);
fclose (mbf);
return EXIT_FAILURE;
}
if (fsync (mbfi) != 0 && errno != EINVAL)
{
error ("Error in fsync: %s", strerror (errno), 0);
close (mbfi);
fclose (mbf);
return EXIT_FAILURE;
}
if (close (mbfi) != 0)
if (fclose (mbf) != 0)
{
error ("Error in close: %s", strerror (errno), 0);
error ("Error in fclose: %s", strerror (errno), 0);
return EXIT_FAILURE;
}
@ -765,7 +756,7 @@ popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse
return EXIT_SUCCESS;
}
static int
static bool
pop_retr (popserver server, int msgno, FILE *arg)
{
char *line;
@ -773,8 +764,9 @@ pop_retr (popserver server, int msgno, FILE *arg)
if (pop_retrieve_first (server, msgno, &line))
{
snprintf (Errmsg, sizeof Errmsg, "Error from POP server: %s", pop_error);
return (NOTOK);
error ("Error from POP server: %s", pop_error, 0);
errno = 0;
return false;
}
while ((ret = pop_retrieve_next (server, &line)) >= 0)
@ -782,24 +774,26 @@ pop_retr (popserver server, int msgno, FILE *arg)
if (! line)
break;
if (mbx_write (line, ret, arg) != OK)
if (! mbx_write (line, ret, arg))
{
strcpy (Errmsg, strerror (errno));
int write_errno = errno;
pop_close (server);
return (NOTOK);
errno = write_errno;
return false;
}
}
if (ret)
{
snprintf (Errmsg, sizeof Errmsg, "Error from POP server: %s", pop_error);
return (NOTOK);
error ("Error from POP server: %s", pop_error, 0);
errno = 0;
return false;
}
return (OK);
return true;
}
static int
static bool
mbx_write (char *line, int len, FILE *mbf)
{
#ifdef MOVEMAIL_QUOTE_POP_FROM_LINES
@ -811,47 +805,42 @@ mbx_write (char *line, int len, FILE *mbf)
&& (a[4] == ' '))
if (IS_FROM_LINE (line))
{
if (fputc ('>', mbf) == EOF)
return (NOTOK);
if (fputc ('>', mbf) < 0)
return false;
}
#endif
if (line[0] == '\037')
{
if (fputs ("^_", mbf) == EOF)
return (NOTOK);
if (fputs ("^_", mbf) < 0)
return false;
line++;
len--;
}
if (fwrite (line, 1, len, mbf) != len)
return (NOTOK);
if (fputc (0x0a, mbf) == EOF)
return (NOTOK);
return (OK);
return fwrite (line, 1, len, mbf) == len && 0 <= fputc ('\n', mbf);
}
static int
static bool
mbx_delimit_begin (FILE *mbf)
{
time_t now = time (NULL);
struct tm *ltime = localtime (&now);
if (!ltime)
return NOTOK;
return false;
char fromline[100];
if (! strftime (fromline, sizeof fromline,
"From movemail %a %b %e %T %Y\n", ltime))
return NOTOK;
if (fputs (fromline, mbf) == EOF)
return (NOTOK);
return (OK);
{
errno = EOVERFLOW;
return false;
}
return 0 <= fputs (fromline, mbf);
}
static int
static bool
mbx_delimit_end (FILE *mbf)
{
if (putc ('\n', mbf) == EOF)
return (NOTOK);
return (OK);
return 0 <= putc ('\n', mbf);
}
#endif /* MAIL_USE_POP */

View file

@ -77,6 +77,7 @@ typedef struct gl_directory DIR;
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef opendir
# define opendir rpl_opendir
# define GNULIB_defined_opendir 1
# endif
_GL_FUNCDECL_RPL (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (opendir, DIR *, (const char *dir_name));
@ -128,6 +129,7 @@ _GL_WARN_ON_USE (rewinddir, "rewinddir is not portable - "
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef closedir
# define closedir rpl_closedir
# define GNULIB_defined_closedir 1
# endif
_GL_FUNCDECL_RPL (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (closedir, int, (DIR *dirp));

32
lib/dirfd.c Normal file
View file

@ -0,0 +1,32 @@
/* dirfd.c -- return the file descriptor associated with an open DIR*
Copyright (C) 2001, 2006, 2008-2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* Written by Jim Meyering. */
#include <config.h>
#include <dirent.h>
#include <errno.h>
int
dirfd (DIR *dir_p)
{
int fd = DIR_TO_FD (dir_p);
if (fd == -1)
errno = ENOTSUP;
return fd;
}

View file

@ -93,7 +93,7 @@ fdopendir (int fd)
That way, barring race conditions, fd_clone_opendir returns a
stream whose file descriptor is FD.
If REPLACE_CHDIR or CWD is null, use opendir ("/proc/self/fd/...",
If REPLACE_FCHDIR or CWD is null, use opendir ("/proc/self/fd/...",
falling back on fchdir metadata. Otherwise, CWD is a saved version
of the working directory; use fchdir/opendir(".")/restore_cwd(CWD). */
static DIR *
@ -156,7 +156,16 @@ fd_clone_opendir (int fd, struct saved_cwd const *cwd)
if (! dir && EXPECTED_ERRNO (saved_errno))
{
char const *name = _gl_directory_name (fd);
return (name ? opendir (name) : NULL);
DIR *dp = name ? opendir (name) : NULL;
/* The caller has done an elaborate dance to arrange for opendir to
consume just the right file descriptor. If dirfd returns -1,
though, we're on a system like mingw where opendir does not
consume a file descriptor. Consume it via 'dup' instead. */
if (dp && dirfd (dp) < 0)
dup (fd);
return dp;
}
# endif
errno = saved_errno;

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