merge trunk

This commit is contained in:
Kenichi Handa 2012-09-30 23:39:46 +09:00
commit c194970e15
294 changed files with 8085 additions and 4708 deletions

View file

@ -1,3 +1,22 @@
2012-09-30 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, incorporating:
2012-09-28 extern-inline: provide a -Wundef safe config.h
2012-09-27 Paul Eggert <eggert@cs.ucla.edu>
Check more robustly for timer_settime.
This should fix an OS X build problem reported by Ivan Andrus in
<http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00671.html>.
* configure.ac (gl_THREADLIB): Define to empty, since Emacs
does threads its own way.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
2012-09-23 Paul Eggert <eggert@cs.ucla.edu>
* Makefile.in (bootstrap): Set MAKEFILE_NAME when building Makefile,
to avoid problems with recursion when using GNU make.
2012-09-22 Paul Eggert <eggert@cs.ucla.edu>
* Makefile.in (bootstrap): Simplify build procedure.

View file

@ -355,6 +355,10 @@ blessmail: Makefile src FRC
# config.status overrides MAKEFILE_NAME with a bogus name when creating
# src/epaths.h, so that 'make epaths-force' does not recursively invoke
# config.status and overwrite config.status while executing it (Bug#11214).
#
# 'make bootstrap' overrides MAKEFILE_NAME to a nonexistent file but
# then attempts to build that file. This forces 'Makefile', 'lib/Makefile',
# etc. to be built without running into similar recursion problems.
MAKEFILE_NAME = Makefile
$(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \
$(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN)
@ -895,7 +899,7 @@ dvi:
# * Do the actual build.
bootstrap: bootstrap-clean FRC
cd $(srcdir) && { ./autogen.sh || autogen/copy_autogen; }
$(MAKE) $(MFLAGS) Makefile
$(MAKE) $(MFLAGS) MAKEFILE_NAME=force-Makefile force-Makefile
$(MAKE) $(MFLAGS) info all
.PHONY: check-declare

View file

@ -1,3 +1,17 @@
2012-09-27 Glenn Morris <rgm@gnu.org>
* admin.el (set-version): Set msdos.c's Vwindow_system_version.
2012-09-27 Paul Eggert <eggert@cs.ucla.edu>
Check more robustly for timer_settime.
* merge-gnulib (GNULIB_MODULES): Add timer-time.
2012-09-26 Juanma Barranquero <lekktu@gmail.com>
* unidata/BidiMirroring.txt:
* unidata/UnicodeData.txt: Update to Unicode 6.2.
2012-09-17 Glenn Morris <rgm@gnu.org>
* admin.el (add-log-time-format): Declare.

View file

@ -129,8 +129,12 @@ Root must be the root of an Emacs source tree."
(rx (and "\"ProductVersion\"" (0+ space) ?,
(0+ space) ?\" (submatch (1+ (in "0-9, ")))
"\\0\"")))
;; Major version only.
(when (string-match "\\([0-9]\\{2,\\}\\)" version)
(setq version (match-string 1 version))
(set-version-in-file root "src/msdos.c" version
(rx (and "Vwindow_system_version" (1+ not-newline)
?\( (submatch (1+ (in "0-9"))) ?\))))
(set-version-in-file root "etc/refcards/ru-refcard.tex" version
"\\\\newcommand{\\\\versionemacs}\\[0\\]\
{\\([0-9]\\{2,\\}\\)}.+%.+version of Emacs")

View file

@ -34,7 +34,7 @@ GNULIB_MODULES='
manywarnings mktime pselect pthread_sigmask readlink
socklen stat-time stdalign stdarg stdbool stdio
strftime strtoimax strtoumax symlink sys_stat
sys_time time timespec-add timespec-sub utimens
sys_time time timer-time timespec-add timespec-sub utimens
warnings
'

View file

@ -610,7 +610,7 @@ An /etc/aliases entry redirects it to the real emacs-bug-tracker address.
All discarded messages are stored in /var/lib/mailman/spam.
If a non-spam message accidentally gets discarded, just do:
cat /var/lib/mailman/spam/not-really-spam.msg | /usr/lib/debbugs/receive
/usr/lib/debbugs/receive < /var/lib/mailman/spam/not-really-spam.msg
chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/*
... check it works ...
mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/

View file

@ -1,19 +1,19 @@
# BidiMirroring-6.1.0.txt
# Date: 2011-12-20, 19:31:00 GMT [KW, LI]
# BidiMirroring-6.2.0.txt
# Date: 2012-05-15, 24:19:00 GMT [KW, LI]
#
# Bidi_Mirroring_Glyph Property
#
# This file is an informative contributory data file in the
# Unicode Character Database.
#
# Copyright (c) 1991-2011 Unicode, Inc.
# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# This data file lists characters that have the Bidi_Mirrored=Yes property
# value, for which there is another Unicode character that typically has a glyph
# that is the mirror image of the original character's glyph.
#
# The repertoire covered by the file is Unicode 6.1.0.
# The repertoire covered by the file is Unicode 6.2.0.
#
# The file contains a list of lines with mappings from one code point
# to another one for character-based mirroring.
@ -30,16 +30,8 @@
# characters exist with mirrored glyphs, are
# listed as comments at the end of the file.
#
# Note: (2011-12-19) There is an inconsistency between the
# following statement about the default value
# of the Bidi_Mirroring_Glyph property and the
# value of the @missing line for Bidi_Mirroring_Glyph in
# PropertyValueAliases.txt. This inconsistency was discovered too
# late in the release process to be resolved by
# the UTC. The inconsistency will be resolved in a future revision.
#
# Formally, the default value of the Bidi_Mirroring_Glyph property
# for each code point is the code point itself, unless a mapping to
# for each code point is <none>, unless a mapping to
# some other character is specified in this data file. When a code
# point has the default value for the Bidi_Mirroring_Glyph property,
# that means that no other character exists whose glyph is suitable
@ -50,12 +42,13 @@
#
# This file was originally created by Markus Scherer.
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
# and for Unicode 6.1 by Ken Whistler and Laurentiu Iancu.
# and for Unicode 6.1 and 6.2 by Ken Whistler and Laurentiu Iancu.
#
# ############################################################
#
# Property: Bidi_Mirroring_Glyph
#
# @missing: 0000..10FFFF; <none>
0028; 0029 # LEFT PARENTHESIS
0029; 0028 # RIGHT PARENTHESIS

View file

@ -7190,6 +7190,7 @@
20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;
20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;;
20B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
20BA;TURKISH LIRA SIGN;Sc;0;ET;;;;;N;;;;;
20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
@ -18703,8 +18704,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;216000;N;;;;;
12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;432000;N;;;;;
12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
@ -18739,8 +18740,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;-1;N;;;;;
12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;-1;N;;;;;
12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;

View file

@ -36,7 +36,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timespec-add timespec-sub utimens warnings
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
@ -95,11 +95,11 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/sys_socket_h.m4 \
$(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
$(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
$(top_srcdir)/m4/timespec.m4 $(top_srcdir)/m4/tm_gmtoff.m4 \
$(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/utimbuf.m4 \
$(top_srcdir)/m4/utimens.m4 $(top_srcdir)/m4/utimes.m4 \
$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/m4/wchar_t.m4 \
$(top_srcdir)/configure.ac
$(top_srcdir)/m4/timer_time.m4 $(top_srcdir)/m4/timespec.m4 \
$(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/unistd_h.m4 \
$(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utimens.m4 \
$(top_srcdir)/m4/utimes.m4 $(top_srcdir)/m4/warnings.m4 \
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
@ -566,6 +566,7 @@ LIB_MATH = @LIB_MATH@
LIB_PTHREAD = @LIB_PTHREAD@
LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@
LIB_STANDARD = @LIB_STANDARD@
LIB_TIMER_TIME = @LIB_TIMER_TIME@
LN_S = @LN_S@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@

1
autogen/aclocal.m4 vendored
View file

@ -1043,6 +1043,7 @@ m4_include([m4/sys_stat_h.m4])
m4_include([m4/sys_time_h.m4])
m4_include([m4/time_h.m4])
m4_include([m4/time_r.m4])
m4_include([m4/timer_time.m4])
m4_include([m4/timespec.m4])
m4_include([m4/tm_gmtoff.m4])
m4_include([m4/unistd_h.m4])

View file

@ -958,6 +958,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the tiff library (-ltiff). */
#undef HAVE_TIFF
/* Define to 1 if you have the `timer_settime' function. */
#undef HAVE_TIMER_SETTIME
/* Define if struct tm has the tm_gmtoff member. */
#undef HAVE_TM_GMTOFF
@ -1519,7 +1522,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
<http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
_GL_INLINE_HEADER_END contains useful stuff to put
in the same include file, after uses of _GL_INLINE. */
#if __GNUC__ ? __GNUC_STDC_INLINE__ : 199901L <= __STDC_VERSION__
#if (__GNUC__ \
? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
: 199901L <= __STDC_VERSION__)
# define _GL_INLINE inline
# define _GL_EXTERN_INLINE extern inline
#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
@ -1536,7 +1541,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
# if __GNUC_STDC_INLINE__
# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
# define _GL_INLINE_HEADER_CONST_PRAGMA
# else
# define _GL_INLINE_HEADER_CONST_PRAGMA \

160
autogen/configure vendored
View file

@ -631,6 +631,7 @@ WINDOWS_64_BIT_OFF_T
HAVE_UNISTD_H
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
NEXT_UNISTD_H
LIB_TIMER_TIME
PTHREAD_H_DEFINES_STRUCT_TIMESPEC
SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
TIME_H_DEFINES_STRUCT_TIMESPEC
@ -5723,6 +5724,9 @@ else
test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
fi
# Avoid gnulib's threadlib module, as we do threads our own way.
# Initialize gnulib right after choosing the compiler.
ac_ext=c
@ -7006,6 +7010,7 @@ esac
# Code from module sys_time:
# Code from module time:
# Code from module time_r:
# Code from module timer-time:
# Code from module timespec:
# Code from module timespec-add:
# Code from module timespec-sub:
@ -19229,6 +19234,7 @@ done
ac_fn_c_check_type "$LINENO" "sigset_t" "ac_cv_type_sigset_t" "
#include <signal.h>
/* Mingw defines sigset_t not in <signal.h>, but in <sys/types.h>. */
@ -21655,11 +21661,61 @@ $as_echo "$gl_cv_sig_pselect" >&6; }
LIB_PTHREAD_SIGMASK=
if test $ac_cv_func_pthread_sigmask = yes; then
:
if test "$gl_threads_api" = posix; then
if test $ac_cv_func_pthread_sigmask = yes; then
:
else
if test -n "$LIBMULTITHREAD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_sigmask in $LIBMULTITHREAD" >&5
$as_echo_n "checking for pthread_sigmask in $LIBMULTITHREAD... " >&6; }
if test "${gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD+set}" = set; then :
$as_echo_n "(cached) " >&6
else
gl_save_LIBS="$LIBS"
LIBS="$LIBS $LIBMULTITHREAD"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
#include <signal.h>
int
main ()
{
return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes
else
gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gl_save_LIBS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&5
$as_echo "$gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD" >&6; }
if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
else
HAVE_PTHREAD_SIGMASK=0
fi
else
HAVE_PTHREAD_SIGMASK=0
fi
fi
else
HAVE_PTHREAD_SIGMASK=0
REPLACE_PTHREAD_SIGMASK=1
if test $ac_cv_func_pthread_sigmask = yes; then
REPLACE_PTHREAD_SIGMASK=1
else
HAVE_PTHREAD_SIGMASK=0
fi
fi
@ -23576,6 +23632,102 @@ $as_echo "$gl_cv_time_r_posix" >&6; }
LIB_TIMER_TIME=
gl_saved_libs=$LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing timer_settime" >&5
$as_echo_n "checking for library containing timer_settime... " >&6; }
if test "${ac_cv_search_timer_settime+set}" = set; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char timer_settime ();
int
main ()
{
return timer_settime ();
;
return 0;
}
_ACEOF
for ac_lib in '' rt posix4; do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_search_timer_settime=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if test "${ac_cv_search_timer_settime+set}" = set; then :
break
fi
done
if test "${ac_cv_search_timer_settime+set}" = set; then :
else
ac_cv_search_timer_settime=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_timer_settime" >&5
$as_echo "$ac_cv_search_timer_settime" >&6; }
ac_res=$ac_cv_search_timer_settime
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
test "$ac_cv_search_timer_settime" = "none required" ||
LIB_TIMER_TIME=$ac_cv_search_timer_settime
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <features.h>
#ifdef __GNU_LIBRARY__
#if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || (__GLIBC__ > 2)) \
&& !defined __UCLIBC__
Thread emulation available
#endif
#endif
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "Thread" >/dev/null 2>&1; then :
LIB_TIMER_TIME="$LIB_TIMER_TIME $LIBMULTITHREAD"
fi
rm -f conftest*
for ac_func in timer_settime
do :
ac_fn_c_check_func "$LINENO" "timer_settime" "ac_cv_func_timer_settime"
if test "x$ac_cv_func_timer_settime" = x""yes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_TIMER_SETTIME 1
_ACEOF
fi
done
LIBS=$gl_saved_libs
:

View file

@ -571,6 +571,9 @@ else
test "x$NON_GCC_TEST_OPTIONS" != x && CC="$CC $NON_GCC_TEST_OPTIONS"
fi
# Avoid gnulib's threadlib module, as we do threads our own way.
AC_DEFUN([gl_THREADLIB])
# Initialize gnulib right after choosing the compiler.
gl_EARLY

View file

@ -1,3 +1,42 @@
2012-09-30 Chong Yidong <cyd@gnu.org>
* killing.texi (Rectangles): Document copy-rectangle-as-kill.
* search.texi (Special Isearch): Document the lax space search
feature and M-s SPC.
(Regexp Search): Move main search-whitespace-regexp description to
Special Isearch.
(Replace): Document replace-lax-whitespace.
* basic.texi (Position Info): Document C-u M-=.
(Moving Point): Document move-to-column.
* display.texi (Useless Whitespace): Add delete-trailing-lines.
* misc.texi (emacsclient Options): Document the effect of
initial-buffer-choice on client frames. Document server-auth-dir.
Do not document server-host, which is bad security practice.
* building.texi (Lisp Libraries): Docstring lookups can trigger
autoloading. Document help-enable-auto-load.
* mini.texi (Yes or No Prompts): New node.
* ack.texi (Acknowledgments): Remove obsolete packages.
2012-09-27 Glenn Morris <rgm@gnu.org>
* cal-xtra.texi (Advanced Calendar/Diary Usage):
Rename the section to be more general.
* emacs.texi: Update menu.
2012-09-23 Chong Yidong <cyd@gnu.org>
* buffers.texi (Misc Buffer): Replace toggle-read-only with
read-only-mode.
* files.texi (Visiting): Likewise.
2012-09-22 Paul Eggert <eggert@cs.ucla.edu>
* trouble.texi (Crashing): Document ulimit -c.

View file

@ -644,10 +644,9 @@ statically scoped Emacs lisp.
@item
Daniel LaLiberte wrote @file{edebug.el}, a source-level debugger for
Emacs Lisp; @file{cl-specs.el}, specifications to help @code{edebug}
debug code written using David Gillespie's Common Lisp support;
@file{cust-print.el}, a customizable package for printing lisp
objects; and @file{isearch.el}, Emacs's incremental search minor mode.
He also co-wrote @file{hideif.el} (q.v.@:).
debug code written using David Gillespie's Common Lisp support; and
@file{isearch.el}, Emacs's incremental search minor mode. He also
co-wrote @file{hideif.el} (q.v.@:).
@item
Karl Landstrom and Daniel Colascione wrote @file{js.el}, a mode for
@ -1301,15 +1300,14 @@ providing electric accent keys.
Colin Walters wrote Ibuffer, an enhanced buffer menu.
@item
Barry Warsaw wrote @file{assoc.el}, a set of utility functions for
working with association lists; @file{cc-mode.el}, a mode for editing
C, C@t{++}, and Java code, based on earlier work by Dave Detlefs,
Stewart Clamen, and Richard Stallman; @file{elp.el}, a profiler for
Emacs Lisp programs; @file{man.el}, a mode for reading Unix manual
pages; @file{regi.el}, providing an AWK-like functionality for use in
lisp programs; @file{reporter.el}, providing customizable bug
reporting for lisp packages; and @file{supercite.el}, a minor mode for
quoting sections of mail messages and news articles.
Barry Warsaw wrote @file{cc-mode.el}, a mode for editing C, C@t{++},
and Java code, based on earlier work by Dave Detlefs, Stewart Clamen,
and Richard Stallman; @file{elp.el}, a profiler for Emacs Lisp
programs; @file{man.el}, a mode for reading Unix manual pages;
@file{regi.el}, providing an AWK-like functionality for use in lisp
programs; @file{reporter.el}, providing customizable bug reporting for
lisp packages; and @file{supercite.el}, a minor mode for quoting
sections of mail messages and news articles.
@item
Christoph Wedler wrote @file{antlr-mode.el}, a major mode for ANTLR
@ -1351,9 +1349,8 @@ Directory Client; and @code{eshell}, a command shell implemented
entirely in Emacs Lisp. He also contributed to Org mode (q.v.@:).
@item
Mike Williams wrote @file{mouse-sel.el}, providing enhanced mouse
selection; and @file{thingatpt.el}, a library of functions for finding
the ``thing'' (word, line, s-expression) containing point.
Mike Williams wrote @file{thingatpt.el}, a library of functions for
finding the ``thing'' (word, line, s-expression) at point.
@item
Roland Winkler wrote @file{proced.el}, a system process editor.

View file

@ -267,7 +267,8 @@ necessary (@code{scroll-up-command}). @xref{Scrolling}.
Scroll one screen backward, and move point onscreen if necessary
(@code{scroll-down-command}). @xref{Scrolling}.
@item M-x goto-char
@item M-g c
@kindex M-g c
@findex goto-char
Read a number @var{n} and move point to buffer position @var{n}.
Position 1 is the beginning of the buffer.
@ -285,6 +286,13 @@ also specify @var{n} by giving @kbd{M-g M-g} a numeric prefix argument.
@xref{Select Buffer}, for the behavior of @kbd{M-g M-g} when you give it
a plain prefix argument.
@item M-g @key{TAB}
@kindex M-g TAB
@findex move-to-column
Read a number @var{n} and move to column @var{n} in the current line.
Column 0 is the leftmost column. If called with a prefix argument,
move to the column number specified by the argument's numeric value.
@item C-x C-n
@kindex C-x C-n
@findex set-goal-column
@ -619,12 +627,16 @@ narrowed region and the line number relative to the whole buffer.
@kindex M-=
@findex count-words-region
@findex count-words
@kbd{M-=} (@code{count-words-region}) displays a message reporting
the number of lines, words, and characters in the region. @kbd{M-x
count-words} displays a similar message for the entire buffer, or for
the region if the region is @dfn{active}. @xref{Mark}, for an
explanation of the region.
the number of lines, words, and characters in the region
(@pxref{Mark}, for an explanation of the region). With a prefix
argument, @kbd{C-u M-=}, the command displays a count for the entire
buffer.
@findex count-words
The command @kbd{M-x count-words} does the same job, but with a
different calling convention. It displays a count for the region if
the region is active, and for the buffer otherwise.
@kindex C-x =
@findex what-cursor-position

View file

@ -212,7 +212,7 @@ unless they visit files: such buffers are used internally by Emacs.
@table @kbd
@item C-x C-q
Toggle read-only status of buffer (@code{toggle-read-only}).
Toggle read-only status of buffer (@code{read-only-mode}).
@item M-x rename-buffer @key{RET} @var{name} @key{RET}
Change the name of the current buffer.
@item M-x rename-uniquely
@ -231,9 +231,9 @@ buffers are usually made by subsystems such as Dired and Rmail that
have special commands to operate on the text; also by visiting a file
whose access control says you cannot write it.
@findex toggle-read-only
@findex read-only-mode
@vindex view-read-only
The command @kbd{C-x C-q} (@code{toggle-read-only}) makes a read-only
The command @kbd{C-x C-q} (@code{read-only-mode}) makes a read-only
buffer writable, and makes a writable buffer read-only. This works by
setting the variable @code{buffer-read-only}, which has a local value
in each buffer and makes the buffer read-only if its value is

View file

@ -1393,13 +1393,21 @@ putting a line like this in your init file (@pxref{Init File}):
@end example
@cindex autoload
Some commands are @dfn{autoloaded}: when you run them, Emacs
Some commands are @dfn{autoloaded}; when you run them, Emacs
automatically loads the associated library first. For instance, the
@kbd{M-x compile} command (@pxref{Compilation}) is autoloaded; if you
call it, Emacs automatically loads the @code{compile} library first.
In contrast, the command @kbd{M-x recompile} is not autoloaded, so it
is unavailable until you load the @code{compile} library.
@vindex help-enable-auto-load
Automatic loading can also occur when you look up the documentation
of an autoloaded command (@pxref{Name Help}), if the documentation
refers to other functions and variables in its library (loading the
library lets Emacs properly set up the hyperlinks in the @file{*Help*}
buffer). To disable this feature, change the variable
@code{help-enable-auto-load} to @code{nil}.
@vindex load-dangerous-libraries
@cindex Lisp files byte-compiled by XEmacs
By default, Emacs refuses to load compiled Lisp files which were

View file

@ -7,10 +7,12 @@
@c Moved here from the Emacs Lisp Reference Manual, 2005-03-26.
@node Advanced Calendar/Diary Usage
@section Customizing the Calendar and Diary
@section More advanced features of the Calendar and Diary
There are many ways in which you can customize the calendar and
diary to suit your personal tastes.
This section describes some of the more advanced/specialized
features of the calendar and diary. It starts with some of the
many ways in which you can customize the calendar and diary to suit
your personal tastes.
@menu
* Calendar Customizing:: Calendar layout and hooks.

View file

@ -1044,9 +1044,9 @@ the left fringe, but no arrow bitmaps, use @code{((top . left)
@cindex whitespace, trailing
@vindex show-trailing-whitespace
It is easy to leave unnecessary spaces at the end of a line, or
empty lines at the end of a file, without realizing it. In most
cases, this @dfn{trailing whitespace} has no effect, but there are
special circumstances where it matters, and it can be a nuisance.
empty lines at the end of a buffer, without realizing it. In most
cases, this @dfn{trailing whitespace} has no effect, but sometimes it
can be a nuisance.
You can make trailing whitespace at the end of a line visible by
setting the buffer-local variable @code{show-trailing-whitespace} to
@ -1061,9 +1061,13 @@ the location of point is enough to show you that the spaces are
present.
@findex delete-trailing-whitespace
@vindex delete-trailing-lines
Type @kbd{M-x delete-trailing-whitespace} to delete all trailing
whitespace within the buffer. If the region is active, it deletes all
trailing whitespace in the region instead.
whitespace. This command deletes all extra spaces at the end of each
line in the buffer, and all empty lines at the end of the buffer; to
ignore the latter, change the varaible @code{delete-trailing-lines} to
@code{nil}. If the region is active, the command instead deletes
extra spaces at the end of each line in the region.
@vindex indicate-empty-lines
@cindex unused lines

View file

@ -267,6 +267,7 @@ The Minibuffer
* Minibuffer History:: Reusing recent minibuffer arguments.
* Repetition:: Re-executing commands that used the minibuffer.
* Passwords:: Entering passwords in the echo area.
* Yes or No Prompts:: Replying yes or no in the echo area.
Completion
@ -953,7 +954,7 @@ The Diary
* Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc.
@ifnottex
Customizing the Calendar and Diary
More advanced features of the Calendar and Diary
* Calendar Customizing:: Calendar layout and hooks.
* Holiday Customizing:: Defining your own holidays.

View file

@ -79,11 +79,6 @@ non-@code{nil} value. (In that case, even if you specify one or more
files on the command line, Emacs opens but does not display them.)
The value of @code{initial-buffer-choice} should be the name of
the desired file or directory.
@ignore
@c I do not think this should be mentioned. AFAICS it is just a dodge
@c around inhibit-startup-screen not being settable on a site-wide basis.
or @code{t}, which means to display the @file{*scratch*} buffer.
@end ignore
@node Exiting
@section Exiting Emacs

View file

@ -246,7 +246,7 @@ Archives}, for more about these features.
or that is marked read-only, Emacs makes the buffer read-only too, so
that you won't go ahead and make changes that you'll have trouble
saving afterward. You can make the buffer writable with @kbd{C-x C-q}
(@code{toggle-read-only}). @xref{Misc Buffer}.
(@code{read-only-mode}). @xref{Misc Buffer}.
@kindex C-x C-r
@findex find-file-read-only

View file

@ -243,7 +243,7 @@ by the innermost Lisp expression in the buffer around point,
(That name appears as the default while you enter the argument.) For
example, if point is located following the text @samp{(make-vector
(car x)}, the innermost list containing point is the one that starts
with @samp{(make-vector}, so @kbd{C-h f @key{RET}} will describe the
with @samp{(make-vector}, so @kbd{C-h f @key{RET}} describes the
function @code{make-vector}.
@kbd{C-h f} is also useful just to verify that you spelled a

View file

@ -709,6 +709,9 @@ rectangle, depending on the command that uses them.
@item C-x r k
Kill the text of the region-rectangle, saving its contents as the
``last killed rectangle'' (@code{kill-rectangle}).
@item C-x r M-w
Save the text of the region-rectangle as the ``last killed rectangle''
(@code{copy-rectangle-as-kill}).
@item C-x r d
Delete the text of the region-rectangle (@code{delete-rectangle}).
@item C-x r y
@ -757,6 +760,12 @@ yanking a rectangle is so different from yanking linear text that
different yank commands have to be used. Yank-popping is not defined
for rectangles.
@kindex C-x r M-w
@findex copy-rectangle-as-kill
@kbd{C-x r M-w} (@code{copy-rectangle-as-kill}) is the equivalent of
@kbd{M-w} for rectangles: it records the rectangle as the ``last
killed rectangle'', without deleting the text from the buffer.
@kindex C-x r y
@findex yank-rectangle
To yank the last killed rectangle, type @kbd{C-x r y}

View file

@ -45,6 +45,7 @@ do not echo.
* Minibuffer History:: Reusing recent minibuffer arguments.
* Repetition:: Re-executing commands that used the minibuffer.
* Passwords:: Entering passwords in the echo area.
* Yes or No Prompts:: Replying yes or no in the echo area.
@end menu
@node Minibuffer File
@ -733,3 +734,53 @@ password (@pxref{Killing}). You may type either @key{RET} or
@key{ESC} to submit the password. Any other self-inserting character
key inserts the associated character into the password, and all other
input is ignored.
@node Yes or No Prompts
@section Yes or No Prompts
An Emacs command may require you to answer a ``yes or no'' question
during the course of its execution. Such queries come in two main
varieties.
@cindex y or n prompt
For the first type of ``yes or no'' query, the prompt ends with
@samp{(y or n)}. Such a query does not actually use the minibuffer;
the prompt appears in the echo area, and you answer by typing either
@samp{y} or @samp{n}, which immediately delivers the response. For
example, if you type @kbd{C-x C-w} (@kbd{write-file}) to save a
buffer, and enter the name of an existing file, Emacs issues a prompt
like this:
@smallexample
File `foo.el' exists; overwrite? (y or n)
@end smallexample
@noindent
Because this query does not actually use the minibuffer, the usual
minibuffer editing commands cannot be used. However, you can perform
some window scrolling operations while the query is active: @kbd{C-l}
recenters the selected window; @kbd{M-v} (or @key{PageDown} or
@key{next}) scrolls forward; @kbd{C-v} (or @key{PageUp}, or
@key{prior}) scrolls backward; @kbd{C-M-v} scrolls forward in the next
window; and @kbd{C-M-S-v} scrolls backward in the next window. Typing
@kbd{C-g} dismisses the query, and quits the command that issued it
(@pxref{Quitting}).
@cindex yes or no prompt
The second type of ``yes or no'' query is typically employed if
giving the wrong answer would have serious consequences; it uses the
minibuffer, and features a prompt ending with @samp{(yes or no)}. For
example, if you invoke @kbd{C-x k} (@code{kill-buffer}) on a
file-visiting buffer with unsaved changes, Emacs activates the
minibuffer with a prompt like this:
@smallexample
Buffer foo.el modified; kill anyway? (yes or no)
@end smallexample
@noindent
To answer, you must type @samp{yes} or @samp{no} into the minibuffer,
followed by @key{RET}. The minibuffer behaves as described in the
previous sections; you can switch to another window with @kbd{C-x o},
use the history commands @kbd{M-p} and @kbd{M-f}, etc. Type @kbd{C-g}
to quit the minibuffer and the querying command.

View file

@ -1509,15 +1509,11 @@ precedence.
@cindex client frame
@item -c
Create a new graphical @dfn{client frame}, instead of using an
existing Emacs frame. If you omit a filename argument while supplying
the @samp{-c} option, the new frame displays the @file{*scratch*}
buffer (@pxref{Buffers}). See below for the special behavior of
@kbd{C-x C-c} in a client frame.
If Emacs is unable to create a new graphical frame (e.g.@: if it is
unable to connect to the X server), it tries to create a text terminal
client frame, as though you had supplied the @samp{-t} option instead
(see below).
existing Emacs frame. See below for the special behavior of @kbd{C-x
C-c} in a client frame. If Emacs cannot create a new graphical frame
(e.g.@: if it cannot connect to the X server), it tries to create a
text terminal client frame, as though you had supplied the @samp{-t}
option instead.
On MS-Windows, a single Emacs session cannot display frames on both
graphical and text terminals, nor on multiple text terminals. Thus,
@ -1525,6 +1521,11 @@ if the Emacs server is running on a text terminal, the @samp{-c}
option, like the @samp{-t} option, creates a new frame in the server's
current text terminal. @xref{Windows Startup}.
If you omit a filename argument while supplying the @samp{-c} option,
the new frame displays the @file{*scratch*} buffer by default. If
@code{initial-buffer-choice} is a string (@pxref{Entering Emacs}), the
new frame displays that file or directory instead.
@item -F @var{alist}
@itemx --frame-parameters=@var{alist}
Set the parameters for a newly-created graphical frame
@ -1545,38 +1546,24 @@ evaluate, @emph{not} as a list of files to visit.
@item -f @var{server-file}
@itemx --server-file=@var{server-file}
@cindex @env{EMACS_SERVER_FILE} environment variable
@cindex server file
@vindex server-use-tcp
@vindex server-host
Specify a @dfn{server file} for connecting to an Emacs server via TCP.
An Emacs server usually uses an operating system feature called a
``local socket'' to listen for connections. Some operating systems,
such as Microsoft Windows, do not support local sockets; in that case,
Emacs uses TCP instead. When you start the Emacs server, Emacs
creates a server file containing some TCP information that
@command{emacsclient} needs for making the connection. By default,
the server file is in @file{~/.emacs.d/server/}. On Microsoft
Windows, if @command{emacsclient} does not find the server file there,
it looks in the @file{.emacs.d/server/} subdirectory of the directory
pointed to by the @env{APPDATA} environment variable. You can tell
@command{emacsclient} to use a specific server file with the @samp{-f}
or @samp{--server-file} option, or by setting the
@env{EMACS_SERVER_FILE} environment variable.
Even if local sockets are available, you can tell Emacs to use TCP by
setting the variable @code{server-use-tcp} to @code{t}. One advantage
of TCP is that the server can accept connections from remote machines.
For this to work, you must (i) set the variable @code{server-host} to
the hostname or IP address of the machine on which the Emacs server
runs, and (ii) provide @command{emacsclient} with the server file.
(One convenient way to do the latter is to put the server file on a
networked file system such as NFS.)
the server communicates with @command{emacsclient} via TCP.
@vindex server-auth-dir
@cindex server file
@vindex server-port
When the Emacs server is using TCP, the variable @code{server-port}
determines the port number to listen on; the default value,
@code{nil}, means to choose a random port when the server starts.
When you start a TCP Emacs server, Emacs creates a @dfn{server file}
containing the TCP information to be used by @command{emacsclient} to
connect to the server. The variable @code{server-auth-dir} specifies
the directory containing the server file; by default, this is
@file{~/.emacs.d/server/}. To tell @command{emacsclient} to connect
to the server over TCP with a specific server file, use the @samp{-f}
or @samp{--server-file} option, or set the @env{EMACS_SERVER_FILE}
environment variable.
@item -n
@itemx --no-wait
@ -1606,19 +1593,14 @@ server it finds. (This option is not supported on MS-Windows.)
@itemx --tty
@itemx -nw
Create a new client frame on the current text terminal, instead of
using an existing Emacs frame. This is similar to the @samp{-c}
option, above, except that it creates a text terminal frame
(@pxref{Non-Window Terminals}). If you omit a filename argument while
supplying this option, the new frame displays the @file{*scratch*}
buffer (@pxref{Buffers}). See below for the special behavior of
@kbd{C-x C-c} in a client frame.
using an existing Emacs frame. This behaves just like the @samp{-c}
option, described above, except that it creates a text terminal frame
(@pxref{Non-Window Terminals}).
On MS-Windows, a single Emacs session cannot display frames on both
graphical and text terminals, nor on multiple text terminals. Thus,
if the Emacs server is using the graphical display, @samp{-t} behaves
like @samp{-c} (see above); whereas if the Emacs server is running on
a text terminal, it creates a new frame in its current text terminal.
@xref{Windows Startup}.
On MS-Windows, @samp{-t} behaves just like @samp{-c} if the Emacs
server is using the graphical display, but if the Emacs server is
running on a text terminal, it creates a new frame in the current text
terminal.
@end table
The new graphical or text terminal frames created by the @samp{-c}

View file

@ -17,7 +17,6 @@ thing, but search for patterns instead of fixed strings.
(@pxref{Operating on Files}), or ask the @code{grep} program to do it
(@pxref{Grep Searching}).
@menu
* Incremental Search:: Search happens as you type the string.
* Nonincremental Search:: Specify entire string and then search.
@ -218,6 +217,24 @@ search.
Some of the characters you type during incremental search have
special effects.
@cindex lax space matching
@kindex M-s SPC @r{(Incremental search)}
@kindex SPC @r{(Incremental search)}
@findex isearch-toggle-lax-whitespace
@vindex search-whitespace-regexp
By default, incremental search performs @dfn{lax space matching}:
each space, or sequence of spaces, matches any sequence of one or more
spaces in the text. Hence, @samp{foo bar} matches @samp{foo bar},
@samp{foo bar}, @samp{foo bar}, and so on (but not @samp{foobar}).
More precisely, Emacs matches each sequence of space characters in the
search string to a regular expression specified by the variable
@code{search-whitespace-regexp}. For example, set it to
@samp{"[[:space:]\n]+"} to make spaces match sequences of newlines as
well as spaces. To toggle lax space matching, type @kbd{M-s SPC}
(@code{isearch-toggle-lax-whitespace}). To disable this feature
entirely, change @code{search-whitespace-regexp} to @code{nil}; then
each space in the search string matches exactly one space
If the search string you entered contains only lower-case letters,
the search is case-insensitive; as long as an upper-case letter exists
in the search string, the search becomes case-sensitive. If you
@ -492,12 +509,12 @@ Incremental regexp and non-regexp searches have independent defaults.
They also have separate search rings, which you can access with
@kbd{M-p} and @kbd{M-n}.
@vindex search-whitespace-regexp
If you type @key{SPC} in incremental regexp search, it matches any
sequence of whitespace characters, including newlines. If you want to
match just a space, type @kbd{C-q @key{SPC}}. You can control what a
bare space matches by setting the variable
@code{search-whitespace-regexp} to the desired regexp.
Just as in ordinary incremental search, any @key{SPC} typed in
incremental regexp search matches any sequence of one or more
whitespace characters. The variable @code{search-whitespace-regexp}
specifies the regexp for the lax space matching, and @kbd{M-s SPC}
(@code{isearch-toggle-lax-whitespace}) toggles the feature.
@xref{Special Isearch}.
In some cases, adding characters to the regexp in an incremental
regexp search can make the cursor move back and start again. For
@ -974,6 +991,13 @@ instead (@pxref{Mark}). The basic replace commands replace one
is possible to perform several replacements in parallel, using the
command @code{expand-region-abbrevs} (@pxref{Expanding Abbrevs}).
@vindex replace-lax-whitespace
Unlike incremental search, the replacement commands do not use lax
space matching (@pxref{Special Isearch}) by default. To enable lax
space matching for replacement, change the variable
@code{replace-lax-whitespace} to @code{t}. (This only affects how
Emacs finds the text to replace, not the replacement text.)
@menu
* Unconditional Replace:: Replacing all matches for a string.
* Regexp Replace:: Replacing all matches for a regexp.

View file

@ -1,3 +1,59 @@
2012-09-30 Chong Yidong <cyd@gnu.org>
* commands.texi (Click Events): Define "mouse position list".
Remove mention of unimplemented horizontal scroll bars.
(Drag Events, Motion Events): Refer to "mouse position list".
(Accessing Mouse): Document posnp.
* errors.texi (Standard Errors): Tweak arith-error description.
Tweak markup. Remove domain-error and friends, which seem to be
unused after the floating-point code revamp.
* functions.texi (Obsolete Functions): Obsolescence also affects
documentation commands. Various clarifications.
(Declare Form): New node.
* strings.texi (String Basics): Copyedits.
* os.texi (Idle Timers): Minor clarifications.
(User Identification): Add system-users and system-groups.
* macros.texi (Defining Macros): Move description of `declare' to
Declare Form node.
* loading.texi (Autoload):
* help.texi (Documentation Basics): The special sequences can
trigger autoloading.
* numbers.texi (Integer Basics): Copyedits.
(Float Basics): Consider IEEE floating point always available.
(Random Numbers): Document actual limits.
(Arithmetic Operations): Clarify division by zero. Don't mention
the machine-independence of negative division since it does not
happen in practice.
2012-09-28 Chong Yidong <cyd@gnu.org>
* os.texi (Startup Summary): Document leim-list.el change.
2012-09-25 Chong Yidong <cyd@gnu.org>
* functions.texi (Defining Functions): defun is now a macro.
2012-09-28 Leo Liu <sdl.web@gmail.com>
* files.texi (Files): Fix typo.
2012-09-23 Chong Yidong <cyd@gnu.org>
* buffers.texi (Read Only Buffers): Document read-only-mode.
* keymaps.texi (Alias Menu Items): Replace toggle-read-only with
read-only-mode.
* backups.texi (Auto-Saving): Refer to Minor Mode Conventions for
calling conventions.
2012-09-22 Chong Yidong <cyd@gnu.org>
* searching.texi (Replacing Match): Minor clarification.

View file

@ -441,12 +441,14 @@ buffer-auto-save-file-name
@end defvar
@deffn Command auto-save-mode arg
When used interactively without an argument, this command is a toggle
switch: it turns on auto-saving of the current buffer if it is off,
and vice versa. When called from Lisp with no argument, it turns
auto-saving on. With an argument @var{arg}, it turns auto-saving on
if the value of @var{arg} is @code{t}, a nonempty list, or a positive
integer; otherwise, it turns auto-saving off.
This is the mode command for Auto Save mode, a buffer-local minor
mode. When Auto Save mode is enabled, auto-saving is enabled in the
buffer. The calling convention is the same as for other minor mode
commands (@pxref{Minor Mode Conventions}).
Unlike most minor modes, there is no @code{auto-save-mode} variable.
Auto Save mode is enabled if @code{buffer-auto-save-file-name} is
non-@code{nil} and @code{buffer-saved-size} (see below) is non-zero.
@end deffn
@defun auto-save-file-name-p filename

View file

@ -740,31 +740,25 @@ properties have no effect. If @code{inhibit-read-only} is a list, then
of the list (comparison is done with @code{eq}).
@end defvar
@deffn Command toggle-read-only &optional arg message
This command toggles whether the current buffer is read-only, by
setting the variable @code{buffer-read-only}. If @var{arg} is
non-@code{nil}, it should be a raw prefix argument; the command then
makes the buffer read-only if the numeric value of that prefix
argument is positive, and makes the buffer writable otherwise.
@xref{Prefix Command Arguments}.
@deffn Command read-only-mode &optional arg
This is the mode command for Read Only minor mode, a buffer-local
minor mode. When the mode is enabled, @code{buffer-read-only} is
non-@code{nil} in the buffer; when disabled, @code{buffer-read-only}
is @code{nil} in the buffer. The calling convention is the same as
for other minor mode commands (@pxref{Minor Mode Conventions}).
If called interactively, or if called from Lisp with @var{message} is
non-@code{nil}, the command prints a message reporting the buffer's
new read-only status.
This minor mode mainly serves as a wrapper for
@code{buffer-read-only}; unlike most minor modes, there is no separate
@code{read-only-mode} variable. Even when Read Only mode is disabled,
characters with non-@code{nil} @code{read-only} text properties remain
read-only. To temporarily ignore all read-only states, bind
@code{inhibit-read-only}, as described above.
When making the buffer read-only, this command also enables View mode
When enabling Read Only mode, this mode command also enables View mode
if the option @code{view-read-only} is non-@code{nil}. @xref{Misc
Buffer,,Miscellaneous Buffer Operations, emacs, The GNU Emacs Manual}.
When making the buffer writable, it disables View mode if View mode
was enabled.
Lisp programs should only call @code{toggle-read-only} if they really
intend to do the same thing as the user command, including possibly
enabling or disabling View mode. Note also that this command works by
setting @code{buffer-read-only}, so even if you make the buffer
writable, characters with non-@code{nil} @code{read-only} text
properties will remain read-only. To temporarily ignore all read-only
states, bind @code{inhibit-read-only}, as described above.
When disabling Read Only mode, it disables View mode if View mode was
enabled.
@end deffn
@defun barf-if-buffer-read-only

View file

@ -1275,12 +1275,21 @@ describe events by their types; thus, if there is a key binding for
@var{event-type} is @code{mouse-1}.
@item @var{position}
This is the position where the mouse click occurred. The actual
format of @var{position} depends on what part of a window was clicked
on.
@cindex mouse position list
This is a @dfn{mouse position list} specifying where the mouse click
occurred; see below for details.
For mouse click events in the text area, mode line, header line, or in
the marginal areas, @var{position} has this form:
@item @var{click-count}
This is the number of rapid repeated presses so far of the same mouse
button. @xref{Repeat Events}.
@end table
To access the contents of a mouse position list in the
@var{position} slot of a click event, you should typically use the
functions documented in @ref{Accessing Mouse}. The explicit format of
the list depends on where the click occurred. For clicks in the text
area, mode line, header line, or in the fringe or marginal areas, the
mouse position list has the form
@example
(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
@ -1289,18 +1298,16 @@ the marginal areas, @var{position} has this form:
@end example
@noindent
The meanings of these list elements are documented below.
@xref{Accessing Mouse}, for functions that let you easily access these
elements.
The meanings of these list elements are as follows:
@table @asis
@item @var{window}
This is the window in which the click occurred.
The window in which the click occurred.
@item @var{pos-or-area}
This is the buffer position of the character clicked on in the text
area, or if clicked outside the text area, it is the window area in
which the click occurred. It is one of the symbols @code{mode-line},
The buffer position of the character clicked on in the text area; or,
if the click was outside the text area, the window area where it
occurred. It is one of the symbols @code{mode-line},
@code{header-line}, @code{vertical-line}, @code{left-margin},
@code{right-margin}, @code{left-fringe}, or @code{right-fringe}.
@ -1310,22 +1317,23 @@ happens after the imaginary prefix keys for the event are registered
by Emacs. @xref{Key Sequence Input}.
@item @var{x}, @var{y}
These are the relative pixel coordinates of the click. For clicks in
the text area of a window, the coordinate origin @code{(0 . 0)} is
taken to be the top left corner of the text area. @xref{Window
Sizes}. For clicks in a mode line or header line, the coordinate
origin is the top left corner of the window itself. For fringes,
margins, and the vertical border, @var{x} does not have meaningful
data. For fringes and margins, @var{y} is relative to the bottom edge
of the header line. In all cases, the @var{x} and @var{y} coordinates
increase rightward and downward respectively.
The relative pixel coordinates of the click. For clicks in the text
area of a window, the coordinate origin @code{(0 . 0)} is taken to be
the top left corner of the text area. @xref{Window Sizes}. For
clicks in a mode line or header line, the coordinate origin is the top
left corner of the window itself. For fringes, margins, and the
vertical border, @var{x} does not have meaningful data. For fringes
and margins, @var{y} is relative to the bottom edge of the header
line. In all cases, the @var{x} and @var{y} coordinates increase
rightward and downward respectively.
@item @var{timestamp}
This is the time at which the event occurred, in milliseconds.
The time at which the event occurred, as an integer number of
milliseconds since a system-dependent initial time.
@item @var{object}
This is either @code{nil} if there is no string-type text property at
the click position, or a cons cell of the form (@var{string}
Either @code{nil} if there is no string-type text property at the
click position, or a cons cell of the form (@var{string}
. @var{string-pos}) if there is one:
@table @asis
@ -1371,8 +1379,7 @@ These are the pixel width and height of @var{object} or, if this is
@code{nil}, those of the character glyph clicked on.
@end table
@sp 1
For mouse clicks on a scroll-bar, @var{position} has this form:
For clicks on a scroll bar, @var{position} has this form:
@example
(@var{window} @var{area} (@var{portion} . @var{whole}) @var{timestamp} @var{part})
@ -1380,32 +1387,35 @@ For mouse clicks on a scroll-bar, @var{position} has this form:
@table @asis
@item @var{window}
This is the window whose scroll-bar was clicked on.
The window whose scroll bar was clicked on.
@item @var{area}
This is the scroll bar where the click occurred. It is one of the
symbols @code{vertical-scroll-bar} or @code{horizontal-scroll-bar}.
This is the symbol @code{vertical-scroll-bar}.
@item @var{portion}
This is the distance of the click from the top or left end of
the scroll bar.
The number of pixels from the top of the scroll bar to the click
position. On some toolkits, including GTK+, Emacs cannot extract this
data, so the value is always @code{0}.
@item @var{whole}
This is the length of the entire scroll bar.
The total length, in pixels, of the scroll bar. On some toolkits,
including GTK+, Emacs cannot extract this data, so the value is always
@code{0}.
@item @var{timestamp}
This is the time at which the event occurred, in milliseconds.
The time at which the event occurred, in milliseconds. On some
toolkits, including GTK+, Emacs cannot extract this data, so the value
is always @code{0}.
@item @var{part}
This is the part of the scroll-bar which was clicked on. It is one
of the symbols @code{above-handle}, @code{handle}, @code{below-handle},
@code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}.
The part of the scroll bar on which the click occurred. It is one of
the symbols @code{handle} (the scroll bar handle), @code{above-handle}
(the area above the handle), @code{below-handle} (the area below the
handle), @code{up} (the up arrow at one end of the scroll bar), or
@code{down} (the down arrow at one end of the scroll bar).
@c The `top', `bottom', and `end-scroll' codes don't seem to be used.
@end table
@item @var{click-count}
This is the number of rapid repeated presses so far of the same mouse
button. @xref{Repeat Events}.
@end table
@node Drag Events
@subsection Drag Events
@ -1429,10 +1439,9 @@ For a drag event, the name of the symbol @var{event-type} contains the
prefix @samp{drag-}. For example, dragging the mouse with button 2
held down generates a @code{drag-mouse-2} event. The second and third
elements of the event give the starting and ending position of the
drag. They have the same form as @var{position} in a click event
(@pxref{Click Events}) that is not on the scroll bar part of the
window. You can access the second element of any mouse event in the
same way, with no need to distinguish drag events from others.
drag, as mouse position lists (@pxref{Click Events}). You can access
the second element of any mouse event in the same way, with no need to
distinguish drag events from others.
The @samp{drag-} prefix follows the modifier key prefixes such as
@samp{C-} and @samp{M-}.
@ -1575,13 +1584,14 @@ represented by lists that look like this:
(mouse-movement POSITION)
@end example
The second element of the list describes the current position of the
mouse, just as in a click event (@pxref{Click Events}).
@noindent
@var{position} is a mouse position list (@pxref{Click Events}),
specifying the current position of the mouse cursor.
The special form @code{track-mouse} enables generation of motion events
within its body. Outside of @code{track-mouse} forms, Emacs does not
generate events for mere motion of the mouse, and these events do not
appear. @xref{Mouse Tracking}.
The special form @code{track-mouse} enables generation of motion
events within its body. Outside of @code{track-mouse} forms, Emacs
does not generate events for mere motion of the mouse, and these
events do not appear. @xref{Mouse Tracking}.
@node Focus Events
@subsection Focus Events
@ -1648,13 +1658,11 @@ frame has already been made visible, Emacs has no work to do.
@cindex @code{wheel-up} event
@cindex @code{wheel-down} event
@item (wheel-up @var{position})
@item (wheel-down @var{position})
These kinds of event are generated by moving a mouse wheel. Their
usual meaning is a kind of scroll or zoom.
The element @var{position} is a list describing the position of the
event, in the same format as used in a mouse-click event (@pxref{Click
Events}).
@itemx (wheel-down @var{position})
These kinds of event are generated by moving a mouse wheel. The
@var{position} element is a mouse position list (@pxref{Click
Events}), specifying the position of the mouse cursor when the event
occurred.
@vindex mouse-wheel-up-event
@vindex mouse-wheel-down-event
@ -1922,14 +1930,8 @@ must be the last element of the list. For example,
This section describes convenient functions for accessing the data in
a mouse button or motion event.
These two functions return the starting or ending position of a
mouse-button event, as a list of this form (@pxref{Click Events}):
@example
(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp}
@var{object} @var{text-pos} (@var{col} . @var{row})
@var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height}))
@end example
The following two functions return a mouse position list
(@pxref{Click Events}), specifying the position of a mouse event.
@defun event-start event
This returns the starting position of @var{event}.
@ -1948,9 +1950,15 @@ event, the value is actually the starting position, which is the only
position such events have.
@end defun
@defun posnp object
This function returns non-@code{nil} if @var{object} is a mouse
oposition list, in either of the formats documented in @ref{Click
Events}); and @code{nil} otherwise.
@end defun
@cindex mouse position list, accessing
These functions take a position list as described above, and
return various parts of it.
These functions take a mouse position list as argument, and return
various parts of it:
@defun posn-window position
Return the window that @var{position} is in.

View file

@ -516,6 +516,7 @@ Functions
* Obsolete Functions:: Declaring functions obsolete.
* Inline Functions:: Defining functions that the compiler
will expand inline.
* Declare Form:: Adding additional information about a function.
* Declaring Functions:: Telling the compiler that a function is defined.
* Function Safety:: Determining whether a function is safe to call.
* Related Topics:: Cross-references to specific Lisp primitives

View file

@ -37,78 +37,69 @@ handled.
@table @code
@item error
@code{"error"}@*
@xref{Errors}.
The message is @samp{error}. @xref{Errors}.
@item quit
@code{"Quit"}@*
@xref{Quitting}.
The message is @samp{Quit}. @xref{Quitting}.
@item args-out-of-range
@code{"Args out of range"}@*
This happens when trying to access an element beyond the range of a
sequence or buffer.@*
@xref{Sequences Arrays Vectors}, @xref{Text}.
The message is @samp{Args out of range}. This happens when trying to
access an element beyond the range of a sequence, buffer, or other
container-like object. @xref{Sequences Arrays Vectors}, and
@xref{Text}.
@item arith-error
@code{"Arithmetic error"}@*
The message is @samp{Arithmetic error}. This occurs when trying to
perform integer division by zero. @xref{Numeric Conversions}, and
@xref{Arithmetic Operations}.
@item beginning-of-buffer
@code{"Beginning of buffer"}@*
@xref{Character Motion}.
The message is @samp{Beginning of buffer}. @xref{Character Motion}.
@item buffer-read-only
@code{"Buffer is read-only"}@*
@xref{Read Only Buffers}.
The message is @samp{Buffer is read-only}. @xref{Read Only Buffers}.
@item circular-list
@code{"List contains a loop"}@*
This happens when some operations (e.g. resolving face names)
encounter circular structures.@*
@xref{Circular Objects}.
The message is @samp{List contains a loop}. This happens when a
circular structure is encountered. @xref{Circular Objects}.
@item cl-assertion-failed
@code{"Assertion failed"}@*
This happens when the @code{assert} macro fails a test.@*
@xref{Assertions,,, cl, Common Lisp Extensions}.
The message is @samp{Assertion failed}. This happens when the
@code{assert} macro fails a test. @xref{Assertions,,, cl, Common Lisp
Extensions}.
@item coding-system-error
@code{"Invalid coding system"}@*
@xref{Lisp and Coding Systems}.
The message is @samp{Invalid coding system}. @xref{Lisp and Coding
Systems}.
@item cyclic-function-indirection
@code{"Symbol's chain of function indirections contains a loop"}@*
@xref{Function Indirection}.
The message is @samp{Symbol's chain of function indirections contains
a loop}. @xref{Function Indirection}.
@item cyclic-variable-indirection
@code{"Symbol's chain of variable indirections contains a loop"}@*
@xref{Variable Aliases}.
The message is @samp{Symbol's chain of variable indirections contains
a loop}. @xref{Variable Aliases}.
@item dbus-error
@code{"D-Bus error"}@*
This is only defined if Emacs was compiled with D-Bus support.@*
@xref{Errors and Events,,, dbus, D-Bus integration in Emacs}.
The message is @samp{D-Bus error}. This is only defined if Emacs was
compiled with D-Bus support. @xref{Errors and Events,,, dbus, D-Bus
integration in Emacs}.
@item end-of-buffer
@code{"End of buffer"}@*
@xref{Character Motion}.
The message is @samp{End of buffer}. @xref{Character Motion}.
@item end-of-file
@code{"End of file during parsing"}@*
Note that this is not a subcategory of @code{file-error},
because it pertains to the Lisp reader, not to file I/O.@*
@xref{Input Functions}.
The message is @samp{End of file during parsing}. Note that this is
not a subcategory of @code{file-error}, because it pertains to the
Lisp reader, not to file I/O. @xref{Input Functions}.
@item file-already-exists
This is a subcategory of @code{file-error}.@*
@xref{Writing to Files}.
This is a subcategory of @code{file-error}. @xref{Writing to Files}.
@item file-date-error
This is a subcategory of @code{file-error}. It occurs when
@code{copy-file} tries and fails to set the last-modification time of
the output file.@*
@xref{Changing Files}.
the output file. @xref{Changing Files}.
@item file-error
We do not list the error-strings of this error and its subcategories,
@ -116,122 +107,109 @@ because the error message is normally constructed from the data items
alone when the error condition @code{file-error} is present. Thus,
the error-strings are not very relevant. However, these error symbols
do have @code{error-message} properties, and if no data is provided,
the @code{error-message} property @emph{is} used.@*
@xref{Files}.
the @code{error-message} property @emph{is} used. @xref{Files}.
@c jka-compr.el
@item compression-error
This is a subcategory of @code{file-error}, which results from
problems handling a compressed file.@*
@xref{How Programs Do Loading}.
problems handling a compressed file. @xref{How Programs Do Loading}.
@c userlock.el
@item file-locked
This is a subcategory of @code{file-error}.@*
@xref{File Locks}.
This is a subcategory of @code{file-error}. @xref{File Locks}.
@c userlock.el
@item file-supersession
This is a subcategory of @code{file-error}.@*
@xref{Modification Time}.
This is a subcategory of @code{file-error}. @xref{Modification Time}.
@c net/ange-ftp.el
@item ftp-error
This is a subcategory of @code{file-error}, which results from problems
in accessing a remote file using ftp.@*
@xref{Remote Files,,, emacs, The GNU Emacs Manual}.
This is a subcategory of @code{file-error}, which results from
problems in accessing a remote file using ftp. @xref{Remote Files,,,
emacs, The GNU Emacs Manual}.
@item invalid-function
@code{"Invalid function"}@*
@xref{Function Indirection}.
The message is @samp{Invalid function}. @xref{Function Indirection}.
@item invalid-read-syntax
@code{"Invalid read syntax"}@*
@xref{Printed Representation}.
The message is @samp{Invalid read syntax}. @xref{Printed
Representation}.
@item invalid-regexp
@code{"Invalid regexp"}@*
@xref{Regular Expressions}.
The message is @samp{Invalid regexp}. @xref{Regular Expressions}.
@c simple.el
@item mark-inactive
@code{"The mark is not active now"}@*
@xref{The Mark}.
The message is @samp{The mark is not active now}. @xref{The Mark}.
@item no-catch
@code{"No catch for tag"}@*
@xref{Catch and Throw}.
The message is @samp{No catch for tag}. @xref{Catch and Throw}.
@ignore
@c Not actually used for anything? Probably definition should be removed.
@item protected-field
@code{"Attempt to modify a protected field"}
The message is @samp{Attempt to modify a protected fiel.
@end ignore
@item scan-error
@code{"Scan error"}@*
This happens when certain syntax-parsing functions
find invalid syntax or mismatched parentheses.@*
@xref{List Motion}, and @ref{Parsing Expressions}.
The message is @samp{Scan error}. This happens when certain
syntax-parsing functions find invalid syntax or mismatched
parentheses. @xref{List Motion}, and @xref{Parsing Expressions}.
@item search-failed
@code{"Search failed"}@*
@xref{Searching and Matching}.
The message is @samp{Search failed}. @xref{Searching and Matching}.
@item setting-constant
@code{"Attempt to set a constant symbol"}@*
The values of the symbols @code{nil} and @code{t},
and any symbols that start with @samp{:},
may not be changed.@*
@xref{Constant Variables, , Variables that Never Change}.
The message is @samp{Attempt to set a constant symbol}. This happens
when attempting to assign values to @code{nil}, @code{t}, and keyword
symbols. @xref{Constant Variables}.
@c simple.el
@item text-read-only
@code{"Text is read-only"}@*
This is a subcategory of @code{buffer-read-only}.@*
@xref{Special Properties}.
The message is @samp{Text is read-only}. This is a subcategory of
@code{buffer-read-only}. @xref{Special Properties}.
@item undefined-color
@code{"Undefined color"}@*
@xref{Color Names}.
The message is @samp{Undefined color}. @xref{Color Names}.
@item void-function
@code{"Symbol's function definition is void"}@*
The message is @samp{Symbol's function definition is void}.
@xref{Function Cells}.
@item void-variable
@code{"Symbol's value as variable is void"}@*
The message is @samp{Symbol's value as variable is void}.
@xref{Accessing Variables}.
@item wrong-number-of-arguments
@code{"Wrong number of arguments"}@*
@xref{Classifying Lists}.
The message is @samp{Wrong number of arguments}. @xref{Classifying
Lists}.
@item wrong-type-argument
@code{"Wrong type argument"}@*
@xref{Type Predicates}.
The message is @samp{Wrong type argument}. @xref{Type Predicates}.
@end table
@ignore The following seem to be unused now.
The following kinds of error, which are classified as special cases of
@code{arith-error}, can occur on certain systems for invalid use of
mathematical functions. @xref{Math Functions}.
@table @code
@item domain-error
@code{"Arithmetic domain error"}
The message is @samp{Arithmetic domain error}.
@item overflow-error
@code{"Arithmetic overflow error"}@*
This is a subcategory of @code{domain-error}.
The message is @samp{Arithmetic overflow error}. This is a subcategory
of @code{domain-error}.
@item range-error
@code{"Arithmetic range error"}
The message is @code{Arithmetic range error}.
@item singularity-error
@code{"Arithmetic singularity error"}@*
This is a subcategory of @code{domain-error}.
The mssage is @samp{Arithmetic singularity error}. This is a
subcategory of @code{domain-error}.
@item underflow-error
@code{"Arithmetic underflow error"}@*
This is a subcategory of @code{domain-error}.
The message is @samp{Arithmetic underflow error}. This is a
subcategory of @code{domain-error}.
@end table
@end ignore

View file

@ -29,7 +29,7 @@ arguments, except where noted. @xref{Magic File Names}, for details.
When file I/O functions signal Lisp errors, they usually use the
condition @code{file-error} (@pxref{Handling Errors}). The error
message is in most cases obtained from the operating system, according
to locale @code{system-message-locale}, and decoded using coding system
to locale @code{system-messages-locale}, and decoded using coding system
@code{locale-coding-system} (@pxref{Locales}).
@menu

View file

@ -1529,24 +1529,14 @@ track of such changes. @xref{Misc Events}.
@node Raising and Lowering
@section Raising and Lowering Frames
Most window systems use a desktop metaphor. Part of this metaphor is
the idea that windows are stacked in a notional third dimension
perpendicular to the screen surface, and thus ordered from ``highest''
to ``lowest''. Where two windows overlap, the one higher up covers
the one underneath. Even a window at the bottom of the stack can be
seen if no other window overlaps it.
@c @cindex raising a frame redundant with raise-frame
@cindex raising a frame
@cindex lowering a frame
A window's place in this ordering is not fixed; in fact, users tend
to change the order frequently. @dfn{Raising} a window means moving
it ``up'', to the top of the stack. @dfn{Lowering} a window means
moving it to the bottom of the stack. This motion is in the notional
third dimension only, and does not change the position of the window
on the screen.
With Emacs, frames constitute the windows in the metaphor sketched
above. You can raise and lower frames using these functions:
Most window systems use a desktop metaphor. Part of this metaphor
is the idea that system-level windows (e.g.@: Emacs frames) are
stacked in a notional third dimension perpendicular to the screen
surface. Where two overlap, the one higher up covers the one
underneath. You can @dfn{raise} or @dfn{lower} a frame using the
functions @code{raise-frame} and @code{lower-frame}.
@deffn Command raise-frame &optional frame
This function raises frame @var{frame} (default, the selected frame).

View file

@ -23,6 +23,7 @@ define them.
* Closures:: Functions that enclose a lexical environment.
* Obsolete Functions:: Declaring functions obsolete.
* Inline Functions:: Functions that the compiler will expand inline.
* Declare Form:: Adding additional information about a function.
* Declaring Functions:: Telling the compiler that a function is defined.
* Function Safety:: Determining whether a function is safe to call.
* Related Topics:: Cross-references to specific Lisp primitives
@ -521,7 +522,7 @@ Scheme.)
is called @dfn{defining a function}, and it is done with the
@code{defun} special form.
@defspec defun name argument-list body-forms...
@defmac defun name argument-list body-forms...
@code{defun} is the usual way to define new Lisp functions. It
defines the symbol @var{name} as a function that looks like this:
@ -578,7 +579,7 @@ without any hesitation or notification. Emacs does not prevent you
from doing this, because redefining a function is sometimes done
deliberately, and there is no way to distinguish deliberate
redefinition from unintentional redefinition.
@end defspec
@end defmac
@cindex function aliases
@defun defalias name definition &optional docstring
@ -1132,29 +1133,46 @@ examining or altering the structure of closure objects.
@node Obsolete Functions
@section Declaring Functions Obsolete
You can use @code{make-obsolete} to declare a function obsolete. This
indicates that the function may be removed at some stage in the future.
You can mark a named function as @dfn{obsolete}, meaning that it may
be removed at some point in the future. This causes Emacs to warn
that the function is obsolete whenever it byte-compiles code
containing that function, and whenever it displays the documentation
for that function. In all other respects, an obsolete function
behaves like any other function.
The easiest way to mark a function as obsolete is to put a
@code{(declare (obsolete @dots{}))} form in the function's
@code{defun} definition. @xref{Declare Form}. Alternatively, you can
use the @code{make-obsolete} function, described below.
A macro (@pxref{Macros}) can also be marked obsolete with
@code{make-obsolete}; this has the same effects as for a function. An
alias for a function or macro can also be marked as obsolete; this
makes the alias itself obsolete, not the function or macro which it
resolves to.
@defun make-obsolete obsolete-name current-name &optional when
This function makes the byte compiler warn that the function
@var{obsolete-name} is obsolete. If @var{current-name} is a symbol, the
warning message says to use @var{current-name} instead of
@var{obsolete-name}. @var{current-name} does not need to be an alias for
@var{obsolete-name}; it can be a different function with similar
functionality. If @var{current-name} is a string, it is the warning
message.
This function marks @var{obsolete-name} as obsolete.
@var{obsolete-name} should be a symbol naming a function or macro, or
an alias for a function or macro.
If @var{current-name} is a symbol, the warning message says to use
@var{current-name} instead of @var{obsolete-name}. @var{current-name}
does not need to be an alias for @var{obsolete-name}; it can be a
different function with similar functionality. @var{current-name} can
also be a string, which serves as the warning message. The message
should begin in lower case, and end with a period. It can also be
@code{nil}, in which case the warning message provides no additional
details.
If provided, @var{when} should be a string indicating when the function
was first made obsolete---for example, a date or a release number.
@end defun
You can define a function as an alias and declare it obsolete at the
same time using the macro @code{define-obsolete-function-alias}:
@defmac define-obsolete-function-alias obsolete-name current-name &optional when docstring
This macro marks the function @var{obsolete-name} obsolete and also
defines it as an alias for the function @var{current-name}. It is
equivalent to the following:
This convenience macro marks the function @var{obsolete-name} obsolete
and also defines it as an alias for the function @var{current-name}.
It is equivalent to the following:
@example
(defalias @var{obsolete-name} @var{current-name} @var{docstring})
@ -1236,6 +1254,63 @@ body uses the arguments, as you do for macros.
After an inline function is defined, its inline expansion can be
performed later on in the same file, just like macros.
@node Declare Form
@section The @code{declare} Form
@findex declare
@code{declare} is a special macro which can be used to add ``meta''
properties to a function or macro: for example, marking it as
obsolete, or giving its forms a special @key{TAB} indentation
convention in Emacs Lisp mode.
@anchor{Definition of declare}
@defmac declare @var{specs}@dots{}
This macro ignores its arguments and evaluates to @code{nil}; it has
no run-time effect. However, when a @code{declare} form occurs as the
@emph{very first form} in the body of a @code{defun} function
definition or a @code{defmacro} macro definition (@pxref{Defining
Macros}, for a description of @code{defmacro}), it appends the
properties specified by @var{specs} to the function or macro. This
work is specially performed by the @code{defun} and @code{defmacro}
macros.
Note that if you put a @code{declare} form in an interactive function,
it should go before the @code{interactive} form.
Each element in @var{specs} should have the form @code{(@var{property}
@var{args}@dots{})}, which should not be quoted. These have the
following effects:
@table @code
@item (advertised-calling-convention @var{signature} @var{when})
This acts like a call to @code{set-advertised-calling-convention}
(@pxref{Obsolete Functions}); @var{signature} specifies the correct
argument list for calling the function or macro, and @var{when} should
be a string indicating when the variable was first made obsolete.
@item (debug @var{edebug-form-spec})
This is valid for macros only. When stepping through the macro with
Edebug, use @var{edebug-form-spec}. @xref{Instrumenting Macro Calls}.
@item (doc-string @var{n})
Use element number @var{n}, if any, as the documentation string.
@item (indent @var{indent-spec})
Indent calls to this function or macro according to @var{indent-spec}.
This is typically used for macros, though it works for functions too.
@xref{Indenting Macros}.
@item (obsolete @var{current-name} @var{when})
Mark the function or macro as obsolete, similar to a call to
@code{make-obsolete} (@pxref{Obsolete Functions}). @var{current-name}
should be a symbol (in which case the warning message says to use that
instead), a string (specifying the warning message), or @code{nil} (in
which case the warning message gives no extra details). @var{when}
should be a string indicating when the function or macro was first
made obsolete.
@end table
@end defmac
@node Declaring Functions
@section Telling the Compiler that a Function is Defined
@cindex function declaration

View file

@ -58,11 +58,17 @@ use @kbd{C-h f} (@code{describe-function}) or @kbd{C-h v}
are many other conventions for documentation strings; see
@ref{Documentation Tips}.
Documentation strings can contain several special substrings, which
stand for key bindings to be looked up in the current keymaps when the
documentation is displayed. This allows documentation strings to refer
to the keys for related commands and be accurate even when a user
rearranges the key bindings. (@xref{Keys in Documentation}.)
Documentation strings can contain several special text sequences,
referring to key bindings which are looked up in the current keymaps
when the user views the documentation. This allows the help commands
to display the correct keys even if a user rearranges the default key
bindings. @xref{Keys in Documentation}.
In the documentation string of an autoloaded command
(@pxref{Autoload}), these special text sequences have an additional
special effect: they cause @kbd{C-h f} (@code{describe-function}) on
the command to trigger autoloading. (This is needed for correctly
setting up the hyperlinks in the @file{*Help*} buffer).
@vindex emacs-lisp-docstring-fill-column
Emacs Lisp mode fills documentation strings to the width

View file

@ -2288,12 +2288,12 @@ command but with different enable conditions. The best way to do this
in Emacs now is with extended menu items; before that feature existed,
it could be done by defining alias commands and using them in menu
items. Here's an example that makes two aliases for
@code{toggle-read-only} and gives them different enable conditions:
@code{read-only-mode} and gives them different enable conditions:
@example
(defalias 'make-read-only 'toggle-read-only)
(defalias 'make-read-only 'read-only-mode)
(put 'make-read-only 'menu-enable '(not buffer-read-only))
(defalias 'make-writable 'toggle-read-only)
(defalias 'make-writable 'read-only-mode)
(put 'make-writable 'menu-enable 'buffer-read-only)
@end example
@ -2310,7 +2310,7 @@ itself). To request this, give the alias symbol a non-@code{nil}
@noindent
causes menu items for @code{make-read-only} and @code{make-writable} to
show the keyboard bindings for @code{toggle-read-only}.
show the keyboard bindings for @code{read-only-mode}.
@node Toolkit Differences
@subsubsection Toolkit Differences

View file

@ -384,11 +384,13 @@ non-@acronym{ASCII} characters written as @code{?v@var{literal}}.
@section Autoload
@cindex autoload
The @dfn{autoload} facility allows you to register the existence of
a function or macro, but put off loading the file that defines it.
The first call to the function automatically reads the proper file, in
The @dfn{autoload} facility lets you register the existence of a
function or macro, but put off loading the file that defines it. The
first call to the function automatically loads the proper library, in
order to install the real definition and other associated code, then
runs the real definition as if it had been loaded all along.
Autoloading can also be triggered by looking up the documentation of
the function or macro (@pxref{Documentation Basics}).
There are two ways to set up an autoloaded function: by calling
@code{autoload}, and by writing a special ``magic'' comment in the

View file

@ -235,43 +235,8 @@ of constants and nonconstant parts. To make this easier, use the
@end example
The body of a macro definition can include a @code{declare} form,
which can specify how @key{TAB} should indent macro calls, and how to
step through them for Edebug.
@defmac declare @var{specs}@dots{}
@anchor{Definition of declare}
A @code{declare} form is used in a macro definition to specify various
additional information about it. The following specifications are
currently supported:
@table @code
@item (debug @var{edebug-form-spec})
Specify how to step through macro calls for Edebug.
@xref{Instrumenting Macro Calls}.
@item (indent @var{indent-spec})
Specify how to indent calls to this macro. @xref{Indenting Macros},
for more details.
@item (doc-string @var{number})
Specify which element of the macro is the documentation string, if
any.
@end table
A @code{declare} form only has its special effect in the body of a
@code{defmacro} form if it immediately follows the documentation
string, if present, or the argument list otherwise. (Strictly
speaking, @emph{several} @code{declare} forms can follow the
documentation string or argument list, but since a @code{declare} form
can have several @var{specs}, they can always be combined into a
single form.) When used at other places in a @code{defmacro} form, or
outside a @code{defmacro} form, @code{declare} just returns @code{nil}
without evaluating any @var{specs}.
@end defmac
No macro absolutely needs a @code{declare} form, because that form
has no effect on how the macro expands, on what the macro means in the
program. It only affects the secondary features listed above.
which specifies additional properties about the macro. @xref{Declare
Form}.
@node Problems with Macros
@section Common Problems Using Macros

View file

@ -48,9 +48,8 @@ to
@tex
@math{2^{29}-1}),
@end tex
but some machines provide a wider range. Many examples in this
chapter assume that an integer has 30 bits and that floating point
numbers are IEEE double precision.
but many machines provide a wider range. Many examples in this
chapter assume the minimum integer width of 30 bits.
@cindex overflow
The Lisp reader reads an integer as a sequence of digits with optional
@ -160,8 +159,9 @@ The value of this variable is the smallest integer that Emacs Lisp can
handle. It is negative.
@end defvar
@xref{Character Codes, max-char}, for the maximum value of a valid
character codepoint.
In Emacs Lisp, text characters are represented by integers. Any
integer between zero and the value of @code{max-char}, inclusive, is
considered to be valid as a character. @xref{String Basics}.
@node Float Basics
@section Floating Point Basics
@ -171,8 +171,8 @@ character codepoint.
not integral. The precise range of floating point numbers is
machine-specific; it is the same as the range of the C data type
@code{double} on the machine you are using. Emacs uses the
@acronym{IEEE} floating point standard where possible (the standard is
supported by most modern computers).
@acronym{IEEE} floating point standard, which is supported by all
modern computers.
The read syntax for floating point numbers requires either a decimal
point (with at least one digit following), an exponent, or both. For
@ -316,17 +316,16 @@ compare them, then you test whether two values are the same
@emph{object}. By contrast, @code{=} compares only the numeric values
of the objects.
At present, each integer value has a unique Lisp object in Emacs Lisp.
In Emacs Lisp, each integer value is a unique Lisp object.
Therefore, @code{eq} is equivalent to @code{=} where integers are
concerned. It is sometimes convenient to use @code{eq} for comparing an
unknown value with an integer, because @code{eq} does not report an
error if the unknown value is not a number---it accepts arguments of any
type. By contrast, @code{=} signals an error if the arguments are not
numbers or markers. However, it is a good idea to use @code{=} if you
can, even for comparing integers, just in case we change the
representation of integers in a future Emacs version.
concerned. It is sometimes convenient to use @code{eq} for comparing
an unknown value with an integer, because @code{eq} does not report an
error if the unknown value is not a number---it accepts arguments of
any type. By contrast, @code{=} signals an error if the arguments are
not numbers or markers. However, it is better programming practice to
use @code{=} if you can, even for comparing integers.
Sometimes it is useful to compare numbers with @code{equal}; it
Sometimes it is useful to compare numbers with @code{equal}, which
treats two numbers as equal if they have the same data type (both
integers, or both floating point) and the same value. By contrast,
@code{=} can treat an integer and a floating point number as equal.
@ -439,15 +438,16 @@ If @var{number} is already a floating point number, @code{float} returns
it unchanged.
@end defun
There are four functions to convert floating point numbers to integers;
they differ in how they round. All accept an argument @var{number}
and an optional argument @var{divisor}. Both arguments may be
integers or floating point numbers. @var{divisor} may also be
There are four functions to convert floating point numbers to
integers; they differ in how they round. All accept an argument
@var{number} and an optional argument @var{divisor}. Both arguments
may be integers or floating point numbers. @var{divisor} may also be
@code{nil}. If @var{divisor} is @code{nil} or omitted, these
functions convert @var{number} to an integer, or return it unchanged
if it already is an integer. If @var{divisor} is non-@code{nil}, they
divide @var{number} by @var{divisor} and convert the result to an
integer. An @code{arith-error} results if @var{divisor} is 0.
integer. integer. If @var{divisor} is zero (whether integer or
floating-point), Emacs signals an @code{arith-error} error.
@defun truncate number &optional divisor
This returns @var{number}, converted to an integer by rounding towards
@ -524,14 +524,12 @@ depending on your machine.
@section Arithmetic Operations
@cindex arithmetic operations
Emacs Lisp provides the traditional four arithmetic operations:
addition, subtraction, multiplication, and division. Remainder and modulus
functions supplement the division functions. The functions to
add or subtract 1 are provided because they are traditional in Lisp and
commonly used.
All of these functions except @code{%} return a floating point value
if any argument is floating.
Emacs Lisp provides the traditional four arithmetic operations
(addition, subtraction, multiplication, and division), as well as
remainder and modulus functions, and functions to add or subtract 1.
Except for @code{%}, each of these functions accepts both integer and
floating point arguments, and returns a floating point number if any
argument is a floating point number.
It is important to note that in Emacs Lisp, arithmetic functions
do not check for overflow. Thus @code{(1+ 536870911)} may evaluate to
@ -620,40 +618,49 @@ quotient. If there are additional arguments @var{divisors}, then it
divides @var{dividend} by each divisor in turn. Each argument may be a
number or a marker.
If all the arguments are integers, then the result is an integer too.
This means the result has to be rounded. On most machines, the result
is rounded towards zero after each division, but some machines may round
differently with negative arguments. This is because the Lisp function
@code{/} is implemented using the C division operator, which also
permits machine-dependent rounding. As a practical matter, all known
machines round in the standard fashion.
@cindex @code{arith-error} in division
If you divide an integer by 0, an @code{arith-error} error is signaled.
(@xref{Errors}.) Floating point division by zero returns either
infinity or a NaN if your machine supports @acronym{IEEE} floating point;
otherwise, it signals an @code{arith-error} error.
If all the arguments are integers, the result is an integer, obtained
by rounding the quotient towards zero after each division.
(Hypothetically, some machines may have different rounding behavior
for negative arguments, because @code{/} is implemented using the C
division operator, which permits machine-dependent rounding; but this
does not happen in practice.)
@example
@group
(/ 6 2)
@result{} 3
@end group
@group
(/ 5 2)
@result{} 2
@end group
@group
(/ 5.0 2)
@result{} 2.5
@end group
@group
(/ 5 2.0)
@result{} 2.5
@end group
@group
(/ 5.0 2.0)
@result{} 2.5
@end group
@group
(/ 25 3 2)
@result{} 4
@end group
@group
(/ -17 6)
@result{} -2 @r{(could in theory be @minus{}3 on some machines)}
@result{} -2
@end group
@end example
@cindex @code{arith-error} in division
If you divide an integer by the integer 0, Emacs signals an
@code{arith-error} error (@pxref{Errors}). If you divide a floating
point number by 0, or divide by the floating point number 0.0, the
result is either positive or negative infinity (@pxref{Float Basics}).
@end defun
@defun % dividend divisor
@ -661,22 +668,6 @@ otherwise, it signals an @code{arith-error} error.
This function returns the integer remainder after division of @var{dividend}
by @var{divisor}. The arguments must be integers or markers.
For negative arguments, the remainder is in principle machine-dependent
since the quotient is; but in practice, all known machines behave alike.
An @code{arith-error} results if @var{divisor} is 0.
@example
(% 9 4)
@result{} 1
(% -9 4)
@result{} -1
(% 9 -4)
@result{} 1
(% -9 -4)
@result{} -1
@end example
For any two integers @var{dividend} and @var{divisor},
@example
@ -687,7 +678,19 @@ For any two integers @var{dividend} and @var{divisor},
@end example
@noindent
always equals @var{dividend}.
always equals @var{dividend}. If @var{divisor} is zero, Emacs signals
an @code{arith-error} error.
@example
(% 9 4)
@result{} 1
(% -9 4)
@result{} -1
(% 9 -4)
@result{} 1
(% -9 -4)
@result{} -1
@end example
@end defun
@defun mod dividend divisor
@ -697,10 +700,9 @@ in other words, the remainder after division of @var{dividend}
by @var{divisor}, but with the same sign as @var{divisor}.
The arguments must be numbers or markers.
Unlike @code{%}, @code{mod} returns a well-defined result for negative
arguments. It also permits floating point arguments; it rounds the
quotient downward (towards minus infinity) to an integer, and uses that
quotient to compute the remainder.
Unlike @code{%}, @code{mod} permits floating point arguments; it
rounds the quotient downward (towards minus infinity) to an integer,
and uses that quotient to compute the remainder.
If @var{divisor} is zero, @code{mod} signals an @code{arith-error}
error if both arguments are integers, and returns a NaN otherwise.
@ -1086,8 +1088,8 @@ numbers as arguments.
@defun sin arg
@defunx cos arg
@defunx tan arg
These are the ordinary trigonometric functions, with argument measured
in radians.
These are the basic trigonometric functions, with argument @var{arg}
measured in radians.
@end defun
@defun asin arg
@ -1154,20 +1156,6 @@ This function returns the logarithm of @var{arg}, with base
returns a NaN.
@end defun
@ignore
@defun expm1 arg
This function returns @code{(1- (exp @var{arg}))}, but it is more
accurate than that when @var{arg} is negative and @code{(exp @var{arg})}
is close to 1.
@end defun
@defun log1p arg
This function returns @code{(log (1+ @var{arg}))}, but it is more
accurate than that when @var{arg} is so small that adding 1 to it would
lose accuracy.
@end defun
@end ignore
@defun log10 arg
This function returns the logarithm of @var{arg}, with base 10:
@code{(log10 @var{x})} @equiv{} @code{(log @var{x} 10)}.
@ -1201,20 +1189,20 @@ The mathematical constant @math{pi} (3.14159@dots{}).
@section Random Numbers
@cindex random numbers
A deterministic computer program cannot generate true random numbers.
For most purposes, @dfn{pseudo-random numbers} suffice. A series of
pseudo-random numbers is generated in a deterministic fashion. The
numbers are not truly random, but they have certain properties that
mimic a random series. For example, all possible values occur equally
often in a pseudo-random series.
A deterministic computer program cannot generate true random
numbers. For most purposes, @dfn{pseudo-random numbers} suffice. A
series of pseudo-random numbers is generated in a deterministic
fashion. The numbers are not truly random, but they have certain
properties that mimic a random series. For example, all possible
values occur equally often in a pseudo-random series.
In Emacs, pseudo-random numbers are generated from a ``seed''.
Starting from any given seed, the @code{random} function always
generates the same sequence of numbers. Emacs typically starts with a
different seed each time, so the sequence of values of @code{random}
typically differs in each Emacs run.
Pseudo-random numbers are generated from a ``seed''. Starting from
any given seed, the @code{random} function always generates the same
sequence of numbers. By default, Emacs initializes the random seed at
startup, in such a way that the sequence of values of @code{random}
(with overwhelming likelihood) differs in each Emacs run.
Sometimes you want the random number sequence to be repeatable. For
Sometimes you want the random number sequence to be repeatable. For
example, when debugging a program whose behavior depends on the random
number sequence, it is helpful to get the same behavior in each
program run. To make the sequence repeat, execute @code{(random "")}.
@ -1227,8 +1215,10 @@ This function returns a pseudo-random integer. Repeated calls return a
series of pseudo-random integers.
If @var{limit} is a positive integer, the value is chosen to be
nonnegative and less than @var{limit}. Otherwise, the value
might be any integer representable in Lisp.
nonnegative and less than @var{limit}. Otherwise, the value might be
any integer representable in Lisp, i.e.@: an integer between
@code{most-negative-fixnum} and @code{most-positive-fixnum}
(@pxref{Integer Basics}).
If @var{limit} is @code{t}, it means to choose a new seed based on the
current time of day and on Emacs's process @acronym{ID} number.

View file

@ -70,13 +70,11 @@ in their turn. The files @file{subdirs.el} are normally generated
automatically when Emacs is installed.
@item
It registers input methods by loading any @file{leim-list.el} file
found in the @code{load-path}.
@c It removes PWD from the environment if it is not accurate.
@c It abbreviates default-directory.
@c Now normal-top-level calls command-line.
If the library @file{leim-list.el} exists, Emacs loads it. This
optional library is intended for registering input methods; Emacs
looks for it in @code{load-path} (@pxref{Library Search}), skipping
those directories containing the standard Emacs libraries (since
@file{leim-list.el} should not exist in those directories).
@vindex before-init-time
@item
@ -1159,6 +1157,20 @@ This function returns the effective @acronym{UID} of the user.
The value may be a floating point number.
@end defun
@defun system-users
This function returns a list of strings, listing the user names on the
system. If Emacs cannot retrieve this information, the return value
is a list containing just the value of @code{user-real-login-name}.
@end defun
@cindex user groups
@defun system-groups
This function returns a list of strings, listing the names of user
groups on the system. If Emacs cannot retrieve this information, the
return value is @code{nil}.
@end defun
@node Time of Day
@section Time of Day
@ -1812,43 +1824,6 @@ minutes, and even if there have been garbage collections and autosaves.
input. Then it becomes idle again, and all the idle timers that are
set up to repeat will subsequently run another time, one by one.
@defun current-idle-time
If Emacs is idle, this function returns the length of time Emacs has
been idle, as a list of four integers: @code{(@var{sec-high}
@var{sec-low} @var{microsec} @var{picosec})}, using the same format as
@code{current-time} (@pxref{Time of Day}).
When Emacs is not idle, @code{current-idle-time} returns @code{nil}.
This is a convenient way to test whether Emacs is idle.
The main use of this function is when an idle timer function wants to
``take a break'' for a while. It can set up another idle timer to
call the same function again, after a few seconds more idleness.
Here's an example:
@smallexample
(defvar resume-timer nil
"Timer that `timer-function' used to reschedule itself, or nil.")
(defun timer-function ()
;; @r{If the user types a command while @code{resume-timer}}
;; @r{is active, the next time this function is called from}
;; @r{its main idle timer, deactivate @code{resume-timer}.}
(when resume-timer
(cancel-timer resume-timer))
...@var{do the work for a while}...
(when @var{taking-a-break}
(setq resume-timer
(run-with-idle-timer
;; Compute an idle time @var{break-length}
;; more than the current value.
(time-add (current-idle-time)
(seconds-to-time @var{break-length}))
nil
'timer-function))))
@end smallexample
@end defun
Do not write an idle timer function containing a loop which does a
certain amount of processing each time around, and exits when
@code{(input-pending-p)} is non-@code{nil}. This approach seems very
@ -1864,16 +1839,50 @@ It blocks out any idle timers that ought to run during that time.
@end itemize
@noindent
For similar reasons, do not write an idle timer function that sets
up another idle time (including the same idle timer) with the
@var{secs} argument less or equal to the current idleness time. Such
a timer will run almost immediately, and continue running again and
again, instead of waiting for the next time Emacs becomes idle.
Similarly, do not write an idle timer function that sets up another
idle timer (including the same idle timer) with @var{secs} argument
less than or equal to the current idleness time. Such a timer will
run almost immediately, and continue running again and again, instead
of waiting for the next time Emacs becomes idle. The correct approach
is to reschedule with an appropriate increment of the current value of
the idleness time, as described below.
@noindent
The correct approach is for the idle timer to reschedule itself after
a brief pause, using the method in the @code{timer-function} example
above.
@defun current-idle-time
If Emacs is idle, this function returns the length of time Emacs has
been idle, as a list of four integers: @code{(@var{sec-high}
@var{sec-low} @var{microsec} @var{picosec})}, using the same format as
@code{current-time} (@pxref{Time of Day}).
When Emacs is not idle, @code{current-idle-time} returns @code{nil}.
This is a convenient way to test whether Emacs is idle.
@end defun
The main use of @code{current-idle-time} is when an idle timer
function wants to ``take a break'' for a while. It can set up another
idle timer to call the same function again, after a few seconds more
idleness. Here's an example:
@example
(defvar my-resume-timer nil
"Timer for `my-timer-function' to reschedule itself, or nil.")
(defun my-timer-function ()
;; @r{If the user types a command while @code{my-resume-timer}}
;; @r{is active, the next time this function is called from}
;; @r{its main idle timer, deactivate @code{my-resume-timer}.}
(when my-resume-timer
(cancel-timer my-resume-timer))
...@var{do the work for a while}...
(when @var{taking-a-break}
(setq my-resume-timer
(run-with-idle-timer
;; Compute an idle time @var{break-length}
;; more than the current value.
(time-add (current-idle-time)
(seconds-to-time @var{break-length}))
nil
'my-timer-function))))
@end example
@node Terminal Input
@section Terminal Input
@ -1907,7 +1916,6 @@ If @var{flow} is non-@code{nil}, then Emacs uses @sc{xon/xoff}
(@kbd{C-q}, @kbd{C-s}) flow control for output to the terminal. This
has no effect except in @sc{cbreak} mode.
@c Emacs 19 feature
The argument @var{meta} controls support for input character codes
above 127. If @var{meta} is @code{t}, Emacs converts characters with
the 8th bit set into Meta characters. If @var{meta} is @code{nil},
@ -1916,7 +1924,6 @@ it as a parity bit. If @var{meta} is neither @code{t} nor @code{nil},
Emacs uses all 8 bits of input unchanged. This is good for terminals
that use 8-bit character sets.
@c Emacs 19 feature
If @var{quit-char} is non-@code{nil}, it specifies the character to
use for quitting. Normally this character is @kbd{C-g}.
@xref{Quitting}.
@ -1925,7 +1932,6 @@ use for quitting. Normally this character is @kbd{C-g}.
The @code{current-input-mode} function returns the input mode settings
Emacs is currently using.
@c Emacs 19 feature
@defun current-input-mode
This function returns the current mode for reading keyboard input. It
returns a list, corresponding to the arguments of @code{set-input-mode},

View file

@ -35,28 +35,31 @@ keyboard character events.
@node String Basics
@section String and Character Basics
Characters are represented in Emacs Lisp as integers;
whether an integer is a character or not is determined only by how it is
used. Thus, strings really contain integers. @xref{Character Codes},
for details about character representation in Emacs.
A character is a Lisp object which represents a single character of
text. In Emacs Lisp, characters are simply integers; whether an
integer is a character or not is determined only by how it is used.
@xref{Character Codes}, for details about character representation in
Emacs.
The length of a string (like any array) is fixed, and cannot be
altered once the string exists. Strings in Lisp are @emph{not}
terminated by a distinguished character code. (By contrast, strings in
C are terminated by a character with @acronym{ASCII} code 0.)
A string is a fixed sequence of characters. It is a type of
sequence called a @dfn{array}, meaning that its length is fixed and
cannot be altered once it is created (@pxref{Sequences Arrays
Vectors}). Unlike in C, Emacs Lisp strings are @emph{not} terminated
by a distinguished character code.
Since strings are arrays, and therefore sequences as well, you can
operate on them with the general array and sequence functions.
(@xref{Sequences Arrays Vectors}.) For example, you can access or
change individual characters in a string using the functions @code{aref}
and @code{aset} (@pxref{Array Functions}). However, note that
@code{length} should @emph{not} be used for computing the width of a
string on display; use @code{string-width} (@pxref{Width}) instead.
operate on them with the general array and sequence functions
documented in @ref{Sequences Arrays Vectors}. For example, you can
access or change individual characters in a string using the functions
@code{aref} and @code{aset} (@pxref{Array Functions}). However, note
that @code{length} should @emph{not} be used for computing the width
of a string on display; use @code{string-width} (@pxref{Width})
instead.
There are two text representations for non-@acronym{ASCII} characters in
Emacs strings (and in buffers): unibyte and multibyte (@pxref{Text
Representations}). For most Lisp programming, you don't need to be
concerned with these two representations.
There are two text representations for non-@acronym{ASCII}
characters in Emacs strings (and in buffers): unibyte and multibyte.
For most Lisp programming, you don't need to be concerned with these
two representations. @xref{Text Representations}, for details.
Sometimes key sequences are represented as unibyte strings. When a
unibyte string is a key sequence, string elements in the range 128 to
@ -88,7 +91,7 @@ for information about the syntax of characters and strings.
representations and to encode and decode character codes.
@node Predicates for Strings
@section The Predicates for Strings
@section Predicates for Strings
For more information about general sequence and array predicates,
see @ref{Sequences Arrays Vectors}, and @ref{Arrays}.

View file

@ -1,3 +1,7 @@
2012-09-30 Jan Djärv <jan.h.d@swipnet.se>
* NEWS: The NS port supports fullscreen.
2012-09-17 Glenn Morris <rgm@gnu.org>
* refcards/emacsver.tex: New file.

147
etc/NEWS
View file

@ -76,6 +76,7 @@ You can explicitly require a specific version by passing
* Startup Changes in Emacs 24.3
+++
** Emacs no longer searches for `leim-list.el' files beneath the standard
lisp/ directory. There should not be any there anyway. If you have
been adding them there, put them somewhere else, eg site-lisp.
@ -86,15 +87,20 @@ been adding them there, put them somewhere else, eg site-lisp.
* Changes in Emacs 24.3
** minibuffer-electric-default-mode can rewrite (default ...) to [...].
Just set minibuffer-eldef-shorten-default to t before enabling the mode.
+++
** Most y-or-n prompts now allow you to scroll the selected window.
Typing C-v or M-v at a y-or-n prompt scrolls forward or backward
respectively, without exiting from the prompt.
---
** In minibuffer filename prompts, `C-M-f' and `C-M-b' now move to the
next and previous path separator, respectively.
** Mode line changes
---
*** New option `mode-line-default-help-echo' specifies the help text
(shown in a tooltip or in the echo area) for any part of the mode line
that does not have its own specialized help text.
@ -104,12 +110,14 @@ invokes `set-buffer-file-coding-system'.
** Help changes
+++
*** `C-h f' (describe-function) can now perform autoloading.
When this command is called for an autoloaded function whose docstring
contains a key substitution construct, that function's library is
automatically loaded, so that the documentation can be shown
correctly. To disable this, set `help-enable-auto-load' to nil.
---
*** `C-h f' now reports previously-autoloaded functions as "autoloaded",
even after their associated libraries have been loaded (and the
autoloads have been redefined as functions).
@ -133,16 +141,17 @@ treated as images.
:background image spec property.
** Server and client changes
+++
*** emacsclient now obeys string values for `initial-buffer-choice',
if it is told to open a new frame without specifying any file to visit
or expression to evaluate.
---
*** New option `server-auth-key' specifies a shared server key.
** In the Package Menu, newly-available packages are listed as "new",
and sorted above the other "available" packages by default.
+++
** `C-x C-q' is now bound to the new minor mode `read-only-mode'.
This minor mode replaces `toggle-read-only', which is now obsolete.
@ -151,6 +160,7 @@ On encountering a fatal error, Emacs now outputs a textual description
of the fatal signal, and a short backtrace on platforms like glibc
that support backtraces.
---
** If your Emacs was built from a bzr checkout, the new variable
`emacs-bzr-version' contains information about the bzr revision used.
@ -177,9 +187,39 @@ The PCL-CVS commands are still available via the keyboard.
---
*** New input method `vietnamese-vni'.
** The NS port supports fullscreen.
* Editing Changes in Emacs 24.3
** Navigation command changes
+++
*** New binding `M-g c' for `goto-char'.
+++
*** New binding `M-g TAB' for `move-to-column'.
+++
*** `M-g TAB' (`move-to-column') prompts for a column number if called
interactively with no prefix arg. Previously, it moved to column 1.
** Search and Replace changes
+++
*** Non-regexp Isearch now performs "lax" space matching.
Each sequence of spaces in the supplied search string may match any
sequence of one or more whitespace characters, as specified by the
variable `search-whitespace-regexp'. (This variable is also used by a
similar existing feature for regexp Isearch).
+++
*** New Isearch command `M-s SPC' toggles lax space matching.
This applies to both ordinary and regexp Isearch.
+++
*** New option `replace-lax-whitespace'.
If non-nil, `query-replace' uses flexible whitespace matching too.
The default is nil.
*** Global `M-s _' starts a symbol (identifier) incremental search,
and `M-s _' in Isearch toggles symbol search mode.
`M-s c' in Isearch toggles search case-sensitivity.
+++
** `C-x 8 RET' is now bound to `insert-char', which is now a command.
`ucs-insert' is now an obsolete alias for `insert-char'.
@ -189,29 +229,11 @@ The PCL-CVS commands are still available via the keyboard.
It used to be bound to `kill-this-buffer', but `z' is too easy to
accidentally type.
+++
** New option `delete-trailing-lines' specifies whether
M-x delete-trailing-whitespace should delete trailing lines at the end
of the buffer. It defaults to t.
** Search and Replace changes
*** Non-regexp Isearch now performs "lax" space matching.
Each sequence of spaces in the supplied search string may match any
sequence of one or more whitespace characters, as specified by the
variable `search-whitespace-regexp'. (This variable is also used by a
similar existing feature for regexp Isearch).
*** New Isearch command `M-s SPC' toggles lax space matching.
This applies to both ordinary and regexp Isearch.
*** New option `replace-lax-whitespace'.
If non-nil, `query-replace' uses flexible whitespace matching too.
The default is nil.
*** Global `M-s _' starts a symbol (identifier) incremental search,
and `M-s _' in Isearch toggles symbol search mode.
`M-s c' in Isearch toggles search case-sensitivity.
** Register changes
+++
*** `C-x r +' is now overloaded to invoke `append-to-register.
@ -220,13 +242,10 @@ and `M-s _' in Isearch toggles symbol search mode.
the text to put between collected texts for use with M-x
append-to-register and M-x prepend-to-register.
+++
** `C-u M-=' now counts lines/words/characters in the entire buffer.
** New binding `M-g c' for `goto-char'.
** M-x move-to-column, if called interactively with no prefix arg, now
prompts for a column number.
+++
** New command `C-x r M-w' (copy-rectangle-as-kill).
It copies the region-rectangle as the last rectangle kill.
@ -238,17 +257,17 @@ just removing them, as done by `yank-excluded-properties'.
* Changes in Specialized Modes and Packages in Emacs 24.3
** Apropos
---
*** The faces used by Apropos are now directly customizable.
These faces are named `apropos-symbol', `apropos-keybinding', and so on;
see the `apropos' Custom group for details.
**** The old options whose values specified faces to use were removed
---
*** The old options whose values specified faces to use were removed
(i.e. `apropos-symbol-face', `apropos-keybinding-face', etc.).
** Buffer Menu
This package has been rewritten to use Tabulated List mode.
---
*** Option `Buffer-menu-buffer+size-width' is now obsolete.
Use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead.
@ -410,6 +429,8 @@ server properties.
** In Perl mode, new option `perl-indent-parens-as-block' causes non-block
closing brackets to be aligned with the line of the opening bracket.
** In Proced mode, new command `proced-renice' renices marked processes.
** Python mode
A new version of python.el, which provides several new features, including:
@ -562,27 +583,30 @@ in case that is not properly encoded.
** which-function-mode now applies to all applicable major modes by default.
---
** winner-mode-hook now runs when the mode is disabled, as well as when it is
enabled.
** FIXME something happened to ses.el, 2012-04-17.
** Obsolete packages:
+++
*** assoc.el
In most cases, assoc+member+push+delq work just as well.
And in any case it's just a terrible package: ugly semantics, terrible
inefficiency, and not namespace-clean.
---
*** bruce.el
---
*** ledit.el
---
*** mailpost.el
+++
*** mouse-sel.el
---
*** patcomp.el
+++
*** cust-print.el
@ -590,11 +614,13 @@ inefficiency, and not namespace-clean.
* Incompatible Lisp Changes in Emacs 24.3
+++
** (random) by default now returns a different random sequence in
every Emacs run. Use (random S), where S is a string, to set the
random seed to a value based on S, in order to get a repeatable
sequence in later calls.
---
** The function `x-select-font' can return a font spec, instead of a
font name as a string. Whether it returns a font spec or a font name
depends on the graphical library.
@ -615,6 +641,7 @@ and are now undefined. For backwards compatibility, defun and
defmacro currently return the name of the newly defined function/macro
but this should not be relied upon.
---
** `face-spec-set' no longer sets frame-specific attributes when the
third argument is a frame (that usage was obsolete since Emacs 22.2).
@ -652,15 +679,34 @@ are deprecated and will be removed eventually.
**** inactivate-current-input-method-function ->
deactivate-current-input-method-function
** Some obsolete variables and variable aliases were removed:
** Some obsolete functions and variables were removed:
*** `facemenu-unlisted-faces'
*** `rmail-decode-mime-charset'
*** `last-input-char', `last-command-char', `unread-command-char'.
*** `iswitchb-read-buffer'
*** `sc-version', `sc-submit-bug-report'
*** `set-char-table-default'
*** `string-to-sequence' (use `string-to-list' or `string-to-vector').
*** `compile-internal'
*** `mode-line-inverse-video'
*** `cvs-commit-buffer-require-final-newline'
(use `'log-edit-require-final-newline'instead)
*** `cvs-changelog-full-paragraphs'
(use `log-edit-changelog-full-paragraphs' instead)
*** `cvs-diff-ignore-marks', `cvs-diff-buffer-name'
*** `vc-ignore-vc-files' (use `vc-handled-backends' instead)
*** `vc-master-templates' (use `vc-handled-backends' instead)
*** `vc-checkout-carefully'
* Lisp changes in Emacs 24.3
** New sampling-based Elisp profiler.
Try M-x profiler-start ... M-x profiler-stop; and then M-x profiler-report.
The sampling rate can be based on CPU time (only supported on some
systems), or based on memory allocations.
** CL-style generalized variables are now in core Elisp.
`setf' is autoloaded; `push' and `pop' accept generalized variables.
@ -706,14 +752,11 @@ now accept a third argument to avoid choosing the selected window.
*** New macro `with-temp-buffer-window'.
*** New options `temp-buffer-resize-frames' and
`temp-buffer-resize-regexps'.
*** `temp-buffer-resize-mode' no longer resizes windows that have been
reused.
*** New function `fit-frame-to-buffer' and new option
`fit-frame-to-buffer-bottom-margin'.
*** New function `fit-frame-to-buffer' and new options
`fit-frame-to-buffer' and `fit-frame-to-buffer-bottom-margin'.
*** New display action functions `display-buffer-below-selected',
`display-buffer-at-bottom' and `display-buffer-in-previous-window'.
@ -728,6 +771,9 @@ non-nil, specifies frame parameters to give any newly-created frame.
*** New display action alist entry `previous-window', if non-nil,
specifies window to reuse in `display-buffer-in-previous-window'.
*** New display action alist entries `window-height' and `window-width'
to specify size of new window created by `display-buffer'.
*** The following variables are obsolete, as they can be replaced by
appropriate entries in the `display-buffer-alist' function introduced
in Emacs 24.1:
@ -740,23 +786,24 @@ in Emacs 24.1:
**** `display-buffer-function'
** Time
---
*** `current-time-string' no longer requires that its argument's year
must be in the range 1000..9999. It now works with any year supported
by the underlying C implementation.
---
*** `current-time' now returns extended-format time stamps
(HIGH LOW USEC PSEC), where the new PSEC slot specifies picoseconds.
PSEC is typically a multiple of 1000 on current machines. Other
functions that use this format, such as file-attributes and
format-time-string, have been changed accordingly. Old-format time
stamps are still accepted.
---
*** The format of timers in timer-list and timer-idle-list is now
[TRIGGERED-P HI-SECS LO-SECS USECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY PSECS].
The PSECS slot is new, and uses picosecond resolution. It can be
accessed via the new timer--psecs accessor.
+++
** Floating point functions now always return special values like NaN,
instead of signaling errors, if given invalid args, e.g. (log -1.0).
Previously, they returned NaNs on some platforms but signaled errors
@ -774,18 +821,22 @@ result in a warning describing the cycle.
*** `autoloadp'
*** `autoload-do-load'.
+++
*** `buffer-narrowed-p' tests if the buffer is narrowed.
*** `file-name-base' returns a file name sans directory and extension.
*** `function-get' fetches a function property, following aliases.
+++
*** `posnp' tests if an object is a `posn'.
*** `set-temporary-overlay-map' sets up a temporary overlay map.
+++
*** `system-users' returns the user names on the system.
+++
*** `system-groups' returns the group names on the system.
*** `tty-top-frame' returns the topmost frame of a text terminal.
** New macros `setq-local' and `defvar-local'.
** New fringe bitmap exclamation-mark.
** New fringe bitmap `exclamation-mark'.
** Face underlining can now use a wave.
See the "Face Attributes" section of the Elisp manual.

View file

@ -1,3 +1,7 @@
2012-09-26 Juanma Barranquero <lekktu@gmail.com>
* makefile.w32-in (obj): Add profiler.o.
2012-09-17 Glenn Morris <rgm@gnu.org>
* ebrowse.c (version):
@ -1038,7 +1042,7 @@
(Asm_help, default_C_suffixes, default_C_help, Cplusplus_suffixes)
(Cplusplus_help, Cjava_suffixes, Cobol_suffixes, Cstar_suffixes)
(Erlang_suffixes, Erlang_help, Forth_suffixes, Forth_help)
(Fortran_suffixes, Fortran_help, HTML_suffixes, HTML_help)
(Fortran_suffixes, Fortran_help, HTML_suffixes, HTML_help)
(Lisp_suffixes, Lisp_help, Lua_suffixes, Lua_help)
(Makefile_filenames, Makefile_help, Objc_suffixes, Objc_help)
(Pascal_suffixes, Pascal_help, Perl_suffixes, Perl_interpreters)

View file

@ -140,7 +140,7 @@ obj = dosfns.o msdos.o \
process.o callproc.o unexw32.o \
region-cache.o sound.o atimer.o \
doprnt.o intervals.o textprop.o composite.o \
gnutls.o xml.o
gnutls.o xml.o profiler.o
#
# These are the lisp files that are loaded up in loadup.el

View file

@ -21,7 +21,7 @@
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timespec-add timespec-sub utimens warnings
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings
MOSTLYCLEANFILES += core *.stackdump

View file

@ -1,3 +1,484 @@
2012-09-30 Juanma Barranquero <lekktu@gmail.com>
* ido.el (ido-max-directory-size): Default to nil; the current
default is small for POSIX systems, and impractical on Windows 7
now that lstat returns directory sizes for NTFS.
2012-09-30 Martin Rudalics <rudalics@gmx.at>
In buffer display functions handle window-height/window-width
alist entries. Suggested by Juri Linkov as fix for Bug#1806.
* window.el (window--display-buffer): New argument ALIST. Obey
window-height and window-width alist entries.
(window--try-to-split-window): New argument ALIST. Bind
window-combination-limit to t when the window's size shall be
changed and window-combination-limit equals `window-size'.
(display-buffer-in-atom-window)
(display-buffer-in-major-side-window)
(display-buffer-in-side-window, display-buffer-same-window)
(display-buffer-reuse-window, display-buffer-pop-up-frame)
(display-buffer-pop-up-window, display-buffer-below-selected)
(display-buffer-at-bottom, display-buffer-in-previous-window)
(display-buffer-use-some-window): Adjust all callers of
window--display-buffer and window--try-to-split-window.
(fit-frame-to-buffer): New option.
(fit-window-to-buffer): Can resize frames if fit-frame-to-buffer
is non-nil.
(display-buffer-in-major-side-window): Evaluate window-height /
window-width alist entries.
* help.el (temp-buffer-resize-frames)
(temp-buffer-resize-regexps): Remove options.
(temp-buffer-resize-mode): Adjust doc-string.
(resize-temp-buffer-window): Don't consult
temp-buffer-resize-regexps. Use fit-frame-to-buffer instead of
temp-buffer-resize-frames.
* dired.el (dired-mark-pop-up): Call
display-buffer-below-selected with a fit-window-to-buffer alist
entry.
2012-09-30 Chong Yidong <cyd@gnu.org>
* server.el (server-host): Document the security implications.
(server-auth-key): Doc fix.
* startup.el (initial-buffer-choice): Doc fix.
* minibuffer.el (minibuffer-local-filename-syntax): Doc fix.
* simple.el (delete-trailing-whitespace): Avoid an unnecessary
restriction change.
* bindings.el (goto-map): Bind M-g TAB to move-to-column.
* help-fns.el (help-fns--obsolete): Fix last change.
2012-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
* winner.el (winner-mode-map): Obey winner-dont-bind-my-keys here.
(minor-mode-map-alist): Remove redundant code.
* vc/pcvs.el (cvs-cleanup-collection): Keep entries that are currently
visited in a buffer.
(cvs-insert-visited-file): New function.
(find-file-hook): Use it.
* vc/pcvs-info.el (cvs-fileinfo-pp): Don't use non-existent faces.
* vc/log-edit.el (log-edit-font-lock-keywords): Ignore case to
chose face.
(log-edit-empty-buffer-p): Don't require a space after a header.
* vc/ediff-util.el (ediff-diff-at-point): Don't assume point-min==1.
* tutorial.el (help-with-tutorial): Use minibuffer-with-setup-hook.
* textmodes/text-mode.el (paragraph-indent-minor-mode): Make it
a proper minor-mode.
* textmodes/tex-mode.el (tex-mode-map): Don't bind paren keys.
2012-09-29 Glenn Morris <rgm@gnu.org>
* winner.el (winner-mode): Remove variable (let define-minor-mode
handle it).
(winner-dont-bind-my-keys, winner-boring-buffers, winner-mode-hook):
Doc fixes.
(winner-mode-leave-hook): Rename to winner-mode-off-hook.
(winner-mode): Use define-minor-mode.
* vc/vc-sccs.el (vc-sccs-registered): Use the progn trick to get
the full definition in loaddefs, rather than duplicating it.
* help-macro.el (three-step-help): No need to autoload defcustom.
* progmodes/inf-lisp.el (inferior-lisp-filter-regexp)
(inferior-lisp-program, inferior-lisp-load-command)
(inferior-lisp-prompt, inferior-lisp-mode-hook):
No need to autoload defcustoms.
* hippie-exp.el (hippie-expand-try-functions-list)
(hippie-expand-verbose, hippie-expand-dabbrev-skip-space)
(hippie-expand-dabbrev-as-symbol, hippie-expand-no-restriction)
(hippie-expand-max-buffers, hippie-expand-ignore-buffers)
(hippie-expand-only-buffers): No need to autoload defcustoms.
* progmodes/vhdl-mode.el (vhdl-line-expand):
Explicitly load hippie-exp, so it does not get autoloaded
while hippie-expand-try-functions-list is let-bound.
2012-09-28 Glenn Morris <rgm@gnu.org>
* emacs-lisp/cl.el (flet): Fix case of obsolescence message.
* emacs-lisp/bytecomp.el (byte-compile-cl-file-p):
Only "cl.el" counts as cl these days.
2012-09-28 Juri Linkov <juri@jurta.org>
Display archive errors in the echo area instead of inserting
to the file buffer.
* arc-mode.el (archive-extract-by-stdout): Change arg STDERR-FILE
to STDERR-TEST that can be a regexp matching a successful output.
Create a temporary file and redirect stderr to it. Search for
STDERR-TEST in the stderr output and display it in the echo area
if no match is found.
(archive-extract-by-file): New function like
`archive-extract-by-stdout' but extracting archives to files
and looking for successful matches in stdout. Function body is
mostly copied from `archive-rar-extract'.
(archive-rar-extract): Use `archive-extract-by-file'.
(archive-7z-extract): Use `archive-extract-by-stdout'. (Bug#10347)
2012-09-28 Leo Liu <sdl.web@gmail.com>
* pcomplete.el (pcomplete-show-completions): Use
minibuffer-message to make pcomplete usable in minibuffer.
* ido.el (ido-set-matches-1): Fix 2012-09-11 change.
2012-09-28 Stefan Monnier <monnier@iro.umontreal.ca>
* type-break.el: Use lexical-binding.
(type-break-mode): Use define-minor-mode.
* emacs-lisp/pcase.el (pcase--mark-used): New.
(pcase--u1): Use it (bug#12512).
* custom.el (load-theme): Set buffer-file-name so the load is recorded
in load-history with the right file name.
2012-09-28 Tassilo Horn <tsdh@gnu.org>
* doc-view.el (doc-view-current-cache-doc-pdf): New function.
(doc-view-doc->txt, doc-view-convert-current-doc): Use it.
(doc-view-get-bounding-box): Make bounding box slicing work for
ODF and DVI documents.
2012-09-28 Glenn Morris <rgm@gnu.org>
* type-break.el (type-break-mode, type-break-interval)
(type-break-good-rest-interval, type-break-keystroke-threshold):
No need to autoload.
(type-break-good-rest-interval, type-break-keystroke-threshold):
Add :set-after.
2012-09-28 Chong Yidong <cyd@gnu.org>
* progmodes/verilog-mode.el (verilog-auto-inst-interfaced-ports):
Add :version tag.
2012-09-27 Stefan Monnier <monnier@iro.umontreal.ca>
* json.el (json-encode-char): Codes 127-160 aren't "ASCII printable".
2012-09-27 Glenn Morris <rgm@gnu.org>
* faces.el (x-display-name): Declare (for without-x builds).
* linum.el (linum-format): Don't autoload it. Improve :type.
* progmodes/tcl.el: Don't require outline when compiling.
(outline-regexp, outline-level): Declare.
* textmodes/sgml-mode.el: Don't require outline when compiling.
(outline-regexp, outline-heading-end-regexp, outline-level): Declare.
* term.el (term-ansi-reset):
Try setting term-ansi-face-already-done to nil. (Bug#11785)
* vc/vc.el (vc-next-action): Only gripe about committing read-only
files for RCS and SCCS. (Bug#9781)
2012-09-27 Chong Yidong <cyd@gnu.org>
* progmodes/verilog-mode.el (verilog-mode-release-emacs): Fix last
change; value should be t.
2012-09-27 Stefan Monnier <monnier@iro.umontreal.ca>
* image-mode.el: Use lexical-binding.
(image-mode-winprops): Use t to stand for the window of
a buffer that's not displayed.
* doc-view.el (doc-view-new-window-function): Handle the new
t in winprops.
(doc-view-enlarge): Make it a real nop if the size is not changed.
(doc-view-display): Handle the case where the buffer is not (yet?)
displayed in any window.
(doc-view-saved-settings): New var.
(doc-view-mode): Use it.
(doc-view-fallback-mode): Set it.
* minibuf-eldef.el: Make it possible to replace (default ...) with [...].
Set lexical-binding.
(minibuffer-eldef-shorten-default): New var.
(minibuffer-default-in-prompt-regexps): Use it for new default.
(minibuf-eldef-setup-minibuffer): Add replacement functionality.
2012-09-26 Juanma Barranquero <lekktu@gmail.com>
* international/uni-bidi.el:
* international/uni-category.el:
* international/uni-name.el:
* international/uni-numeric.el: Regenerate.
2012-09-26 Tomohiro Matsuyama <tomo@cx4a.org>
Stefan Monnier <monnier@iro.umontreal.ca>
* profiler.el: New file.
2012-09-26 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/testcover.el (testcover-after): Add gv-expander.
(testcover-reinstrument): Simplify with CSE.
2012-09-26 Juanma Barranquero <lekktu@gmail.com>
* window.el (temp-buffer-window-setup): Fix typo in docstring.
2012-09-25 Wilson Snyder <wsnyder@wsnyder.org>
* verilog-mode.el (verilog-auto-ascii-enum, verilog-auto-inout)
(verilog-auto-input, verilog-auto-insert-lisp)
(verilog-auto-output, verilog-auto-output-every, verilog-auto-reg)
(verilog-auto-reg-input, verilog-auto-tieoff, verilog-auto-undef)
(verilog-auto-unused, verilog-auto-wire)
(verilog-forward-or-insert-line): Fix AUTOs with no trailing
newline. Reported by Andrew Jones.
(verilog-auto-inst) Support expanding $clog2 in AUTOINST.
Reported by Brad Dobbie.
(verilog-batch-delete-trailing-whitespace):
Create verilog-batch-delete-trailing-whitespace.
Reported by Brad Dobbie.
(verilog-auto-inout-param): Support AUTOINOUTPARAM for copying
parameters from another module. Reported by Dan Katz.
(verilog-auto, verilog-auto-assign-modport)
(verilog-auto-inout-modport): Add AUTOASSIGNMODPORT and
AUTOINOUTMODPORT for UVM interface module shell generation.
Reported by Brad Dobbie.
(verilog-auto-inst-interfaced-ports): Make default nil, as more
standard behavior.
(verilog-auto): Fix AUTO parameters with parenthesis arguments.
Reported by Matt Martin.
2012-09-25 Martin Rudalics <rudalics@gmx.at>
* window.el (window--resize-child-windows): When resizing child
windows proportionally, process them in reverse order to
preserve the "when splitting a window the new one gets the odd
line" behavior.
(window--resize-root-window-vertically): When resizing the
minibuffer window try to affect only windows at the bottom of the
frame. (Bug#12419)
2012-09-25 Chong Yidong <cyd@gnu.org>
* subr.el (declare): Doc fix.
* help-fns.el (help-fns--obsolete): Handle macros properly.
2012-09-25 Chong Yidong <cyd@gnu.org>
* bookmark.el (bookmark-jump-noselect): Use a declare form to mark
this function obsolete.
* calendar/cal-x.el (calendar-two-frame-setup)
(calendar-only-one-frame-setup, calendar-one-frame-setup):
* calendar/calendar.el (american-calendar, european-calendar)
(calendar-for-loop):
* comint.el (comint-dynamic-simple-complete)
(comint-dynamic-complete-as-filename, comint-unquote-filename):
* desktop.el (desktop-load-default):
* dired-x.el (dired-omit-here-always)
(dired-hack-local-variables, dired-default-directory):
* emacs-lisp/derived.el (derived-mode-class):
* emacs-lisp/timer.el (timer-set-time-with-usecs):
* emacs-lock.el (toggle-emacs-lock):
* epa.el (epa-display-verify-result):
* epg.el (epg-sign-keys, epg-start-sign-keys)
(epg-passphrase-callback-function):
* eshell/esh-util.el (eshell-for):
* eshell/eshell.el (eshell-remove-from-window-buffer-names)
(eshell-add-to-window-buffer-names):
* files.el (locate-file-completion):
* imenu.el (imenu-example--create-c-index)
(imenu-example--create-lisp-index)
(imenu-example--lisp-extract-index-name)
(imenu-example--name-and-position):
* international/mule-cmds.el (princ-list):
* international/mule-diag.el (decode-codepage-char):
* international/mule-util.el (detect-coding-with-priority):
* iswitchb.el (iswitchb-read-buffer):
* mail/mailalias.el (mail-complete):
* mail/sendmail.el (mail-sent-via):
* mouse.el (mouse-popup-menubar-stuff, mouse-popup-menubar)
(mouse-major-mode-menu):
* password-cache.el (password-read-and-add):
* pcomplete.el (pcomplete-parse-comint-arguments):
* progmodes/sh-script.el (sh-maybe-here-document):
* replace.el (query-replace-regexp-eval):
* savehist.el (savehist-load):
* simple.el (choose-completion-delete-max-match):
* term.el (term-dynamic-simple-complete):
* vc/ediff-init.el (ediff-check-version):
* vc/ediff-wind.el (ediff-choose-window-setup-function-automatically):
* vc/vc.el (vc-diff-switches-list):
* view.el (view-return-to-alist-update): Likewise.
* subr.el (eval-next-after-load, makehash, insert-string)
(assoc-ignore-representation, assoc-ignore-case): Use declare to
mark obsolete.
(mode-line-inverse-video): Variable deleted.
* international/mule-util.el (string-to-sequence): Remove.
* calendar/calendar.el (calendar-version):
* calendar/icalendar.el (icalendar-extract-ical-from-buffer)
(icalendar-convert-diary-to-ical):
* cus-edit.el (custom-mode):
* ansi-color.el (ansi-color-unfontify-region):
* international/latin1-disp.el (latin1-char-displayable-p):
* progmodes/cwarn.el (turn-on-cwarn-mode):
* progmodes/which-func.el (which-func-update-1):
Use define-obsolete-function-alias.
* net/newst-backend.el (newsticker-cache-filename):
* net/newst-treeview.el (newsticker-groups-filename):
Fix incorrect obsolescence declaration.
* allout.el (allout-passphrase-hint-string): Likewise.
(allout-init): Use a declare form to mark obsolete.
* emacs-lisp/byte-run.el (make-obsolete): Doc fix; emphasize that
this applies to functions.
* iswitchb.el (iswitchb-read-buffer): Move code of
iswitchb-define-mode-map here, and delete that obsolete function.
* net/snmp-mode.el (snmp-font-lock-keywords-3): Don't use obsolete
font-lock-reference-face.
2012-09-25 Glenn Morris <rgm@gnu.org>
* buff-menu.el (Buffer-menu-name-width, Buffer-menu-size-width):
Doc fixes.
* eshell/em-term.el (eshell-term-name):
Default to term-term-name. (Bug#12485)
2012-09-24 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-shell-send-buffer): Better handling
of "if __name__ == '__main__':" conditionals when sending the buffer.
2012-09-24 Glenn Morris <rgm@gnu.org>
* eshell/esh-cmd.el (eshell-find-alias-function):
Tighten up file-name regexp. (Bug#12499)
2012-09-24 Fabián Ezequiel Gallina <fgallina@cuca>
Enhancements for triple-quote string syntax.
* progmodes/python.el (python-quote-syntax): Remove.
(python-syntax-propertize-function): New value.
(python-syntax-count-quotes, python-syntax-stringify):
New functions.
2012-09-24 Chong Yidong <cyd@gnu.org>
* mail/supercite.el (sc-version): Remove obsolete function.
(sc-describe): Don't mark as obsolete, since it is bound.
(sc-submit-bug-report): Remove.
* vc/log-edit.el (cvs-changelog-full-paragraphs)
(cvs-commit-buffer-require-final-newline): Remove.
(log-edit-require-final-newline)
(log-edit-changelog-full-paragraphs): Default to t.
* vc/pcvs-defs.el (cvs-diff-buffer-name, cvs-diff-ignore-marks)
* vc/vc-hooks.el (vc-ignore-vc-files, vc-master-templates)
* vc/vc.el (vc-checkout-carefully): Likewise.
* vc/emerge.el (emerge-mode): Make it an obsolete alias.
(emerge-version): Remove.
* progmodes/compile.el (compile-internal): Remove.
(compilation-parse-errors-function): Fix typo.
* international/mule.el (set-char-table-default): Remove.
(set-coding-priority, make-coding-system, generic-char-p)
(charset-list, charset-bytes, charset-id): Use declare to mark
functions as obsolete.
* vc/pcvs-defs.el (cvs-buffer-name-alist)
(cvs-invert-ignore-marks): Remove references to obsolete vars.
* vc/vc-hooks.el (vc-default-registered): Don't use
vc-master-templates.
* font-lock.el (font-lock-reference-face):
Use define-obsolete-variable-alias.
* generic-x.el (rul-generic-mode): Use font-lock-constant-face.
* calendar/calendar.el (calendar-font-lock-keywords):
* calendar/diary-lib.el (diary-font-lock-keywords)
(diary-fancy-font-lock-keywords):
* textmodes/reftex-sel.el (reftex-insert-docstruct):
* textmodes/reftex-index.el (reftex-insert-index):
* textmodes/reftex-cite.el (reftex-format-bib-entry):
* progmodes/ruby-mode.el (ruby-font-lock-keywords):
* progmodes/ps-mode.el (ps-mode-font-lock-keywords-1):
* progmodes/prolog.el (prolog-font-lock-keywords):
* progmodes/idlwave.el (idlwave-idl-keywords):
* progmodes/ada-mode.el (ada-font-lock-keywords):
* net/snmp-mode.el (snmp-font-lock-keywords-3): Likewise.
2012-09-24 Glenn Morris <rgm@gnu.org>
* mail/emacsbug.el (report-emacs-bug): Include `lsb_release -d'.
2012-09-23 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (python-indent-line): More consistent cursor
movement behavior.
2012-09-23 Stefan Merten <smerten@oekonux.de>
* textmodes/rst.el: Fix compiler warning.
2012-09-23 Roland Winkler <winkler@gnu.org>
* textmodes/bibtex.el (bibtex-autokey-transcriptions):
Transcribe also LaTeX hyphenation.
(bibtex-reformat): Bug fix. Do not quote twice the elements of
bibtex-reformat-previous-options.
2012-09-23 Roland Winkler <winkler@gnu.org>
* proced.el (proced-renice-command): New variable.
(proced-marked-processes): New function.
(proced-with-processes-buffer): New macro.
(proced-send-signal): Use them.
(proced-renice): New command bound to r.
2012-09-23 Roland Winkler <winkler@gnu.org>
* ibuf-ext.el (ibuffer-switch-to-saved-filter-groups): If list
ibuffer-saved-filter-groups has one element, shortcut the call of
completing-read. (Bug#12331)
2012-09-23 Chong Yidong <cyd@gnu.org>
* bindings.el (mode-line-toggle-read-only):
* bs.el (bs-toggle-readonly):
* buff-menu.el (Buffer-menu-toggle-read-only):
* dired.el (dired-toggle-read-only):
* ibuffer.el (ibuffer-do-toggle-read-only): Use read-only-mode.
2012-09-23 Chong Yidong <cyd@gnu.org>
* image.el (image-type-available-p): Adapt to init-image-library
argument changes.
2012-09-22 Juri Linkov <juri@jurta.org>
* dired.el (dired-mode-map): Add [remap read-only-mode] for
@ -45,7 +526,7 @@
2012-09-22 Stefan Merten <smerten@oekonux.de>
* rst.el: Revamp section title faces.
* textmodes/rst.el: Revamp section title faces.
(rst-official-version)
(rst-package-emacs-version-alist): Sync with official version
V1.4.0.
@ -120,15 +601,15 @@
2012-09-20 Stefan Merten <smerten@oekonux.de>
* rst.el: Integrate support for `imenu' and `which-function'.
* textmodes/rst.el: Integrate support for `imenu' and `which-function'.
Fixes feature request bug#11711.
(rst-mode): Create `imenu-create-index-function'.
(rst-get-stripped-line): Delete after refactoring.
(rst-section-tree, rst-section-tree-rec)
(rst-section-tree-point): Refactor and document properly.
(rst-imenu-find-adornments-for-position)
(rst-imenu-convert-cell, rst-imenu-create-index): New
function.
(rst-imenu-convert-cell, rst-imenu-create-index):
New function.
2012-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
@ -260,7 +741,7 @@
2012-09-17 Stefan Merten <smerten@oekonux.de>
* rst.el: Add support for `testcover'.
* textmodes/rst.el: Add support for `testcover'.
(rst-defcustom-testcover, rst-testcover-add-compose)
(rst-testcover-add-1value): New functions.
(rst-portable-mark-active-p): Replace by `use-region-p'.
@ -2096,7 +2577,7 @@
2012-07-30 Stefan Merten <smerten@oekonux.de>
* rst.el: Silence `checkdoc-ispell'.
* textmodes/rst.el: Silence `checkdoc-ispell'.
(rst-cvs-header, rst-svn-rev, rst-svn-timestamp)
(rst-official-version, rst-official-cvs-rev)
(rst-package-emacs-version-alist): Update to upstream V1.3.1.
@ -9488,7 +9969,7 @@
Declare as obsolete.
(ns-get-pasteboard, ns-paste-secondary):
Use ns-get-selection-internal.
(ns-set-pasteboard, ns-copy-including-secondary):
(ns-set-pasteboard, ns-copy-including-secondary):
Use ns-store-selection-internal.
2011-12-17 Chong Yidong <cyd@gnu.org>

View file

@ -2372,7 +2372,7 @@
(sh-mode-map): Added new bindings.
(sh-mode): Updated mode doc-string for new commands, added
make-local-variable calls, initialize mode-specific variables.
(sh-indent-line): Renamed to sh-basic-indent-line; sh-indent-line
(sh-indent-line): Renamed to sh-basic-indent-line; sh-indent-line
is now a different function.
(sh-header-marker): Changed docstring.
(sh-set-shell): Initialize mode-specific variables.

View file

@ -569,7 +569,7 @@
Don't bind mouse events or tab/backtab.
(help-function, help-variable, help-face, help-coding-system)
(help-input-method, help-character-set, help-back, help-info)
(help-customize-variable, help-function-def, help-variable-def):
(help-customize-variable, help-function-def, help-variable-def):
New button types.
(help-button-action): New function.
(describe-function-1): Pass help button-types to
@ -20671,7 +20671,7 @@
* term/tty-colors.el (tty-defined-color-alist): Renamed from
tty-color-alist.
(tty-color-alist, tty-modify-color-alist): New functions.
(tty-color-define, tty-color-clear, tty-color-approximate)
(tty-color-define, tty-color-clear, tty-color-approximate)
(tty-color-translate, tty-color-by-index, tty-color-desc): Accept an
optional parameter FRAME.

View file

@ -1522,8 +1522,8 @@ The verifier string is retained as an Emacs file variable, as well as in
the Emacs buffer state, if file variable adjustments are enabled. See
`allout-enable-file-variable-adjustment' for details about that.")
(make-variable-buffer-local 'allout-passphrase-verifier-string)
(make-obsolete 'allout-passphrase-verifier-string
'allout-passphrase-verifier-string "23.3")
(make-obsolete-variable 'allout-passphrase-verifier-string
'allout-passphrase-verifier-string "23.3")
;;;###autoload
(put 'allout-passphrase-verifier-string 'safe-local-variable 'stringp)
;;;_ = allout-passphrase-hint-string
@ -1538,8 +1538,8 @@ state, if file variable adjustments are enabled. See
`allout-enable-file-variable-adjustment' for details about that.")
(make-variable-buffer-local 'allout-passphrase-hint-string)
(setq-default allout-passphrase-hint-string "")
(make-obsolete 'allout-passphrase-hint-string
'allout-passphrase-hint-string "23.3")
(make-obsolete-variable 'allout-passphrase-hint-string
'allout-passphrase-hint-string "23.3")
;;;###autoload
(put 'allout-passphrase-hint-string 'safe-local-variable 'stringp)
;;;_ = allout-after-save-decrypt
@ -1688,11 +1688,10 @@ from what it did before, for backwards compatibility.
MODE is the activation mode - see `allout-auto-activation' for
valid values."
(declare (obsolete allout-auto-activation "23.3"))
(custom-set-variables (list 'allout-auto-activation (format "%s" mode)))
(format "%s" mode))
(make-obsolete 'allout-init
"customize 'allout-auto-activation' instead." "23.3")
;;;_ > allout-setup-menubar ()
(defun allout-setup-menubar ()
"Populate the current buffer's menubar with `allout-mode' stuff."

View file

@ -230,8 +230,8 @@ This is a good function to put in `comint-output-filter-functions'."
(t
(ansi-color-apply-on-region start-marker end-marker)))))
(defalias 'ansi-color-unfontify-region 'font-lock-default-unfontify-region)
(make-obsolete 'ansi-color-unfontify-region "not needed any more" "24.1")
(define-obsolete-function-alias 'ansi-color-unfontify-region
'font-lock-default-unfontify-region "24.1")
;; Working with strings
(defvar ansi-color-context nil

View file

@ -1117,13 +1117,54 @@ using `make-temp-file', and the generated name is returned."
(archive-delete-local tmpfile)
success))
(defun archive-extract-by-stdout (archive name command &optional stderr-file)
(apply 'call-process
(car command)
nil
(if stderr-file (list t stderr-file) t)
nil
(append (cdr command) (list archive name))))
(defun archive-extract-by-stdout (archive name command &optional stderr-test)
(let ((stderr-file (make-temp-file "arc-stderr")))
(unwind-protect
(prog1
(apply 'call-process
(car command)
nil
(if stderr-file (list t stderr-file) t)
nil
(append (cdr command) (list archive name)))
(with-temp-buffer
(insert-file-contents stderr-file)
(goto-char (point-min))
(when (if (stringp stderr-test)
(not (re-search-forward stderr-test nil t))
(> (buffer-size) 0))
(message "%s" (buffer-string)))))
(if (file-exists-p stderr-file)
(delete-file stderr-file)))))
(defun archive-extract-by-file (archive name command &optional stdout-test)
(let ((dest (make-temp-file "arc-dir" 'dir))
(stdout-file (make-temp-file "arc-stdout")))
(unwind-protect
(prog1
(apply 'call-process
(car command)
nil
`(:file ,stdout-file)
nil
(append (cdr command) (list archive name dest)))
(with-temp-buffer
(insert-file-contents stdout-file)
(goto-char (point-min))
(when (if (stringp stdout-test)
(not (re-search-forward stdout-test nil t))
(> (buffer-size) 0))
(message "%s" (buffer-string))))
(if (file-exists-p (expand-file-name name dest))
(insert-file-contents-literally (expand-file-name name dest))))
(if (file-exists-p stdout-file)
(delete-file stdout-file))
(if (file-exists-p (expand-file-name name dest))
(delete-file (expand-file-name name dest)))
(while (file-name-directory name)
(setq name (directory-file-name (file-name-directory name)))
(delete-directory (expand-file-name name dest)))
(delete-directory dest))))
(defun archive-extract-other-window ()
"In archive mode, find this member in another window."
@ -2006,17 +2047,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
;; The code below assumes the name is relative and may do undesirable
;; things otherwise.
(error "Can't extract files with non-relative names")
(let ((dest (make-temp-file "arc-rar" 'dir)))
(unwind-protect
(progn
(call-process "unrar-free" nil nil nil
"--extract" archive name dest)
(insert-file-contents-literally (expand-file-name name dest)))
(delete-file (expand-file-name name dest))
(while (file-name-directory name)
(setq name (directory-file-name (file-name-directory name)))
(delete-directory (expand-file-name name dest)))
(delete-directory dest)))))
(archive-extract-by-file archive name '("unrar-free" "--extract") "All OK")))
;;; Section: Rar self-extracting .exe archives.
@ -2099,17 +2130,11 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(apply 'vector files))))
(defun archive-7z-extract (archive name)
(let ((tmpfile (make-temp-file "7z-stderr")))
;; 7z doesn't provide a `quiet' option to suppress non-essential
;; stderr messages. So redirect stderr to a temp file and display it
;; in the echo area when it contains error messages.
(prog1 (archive-extract-by-stdout
archive name archive-7z-extract tmpfile)
(with-temp-buffer
(insert-file-contents tmpfile)
(unless (search-forward "Everything is Ok" nil t)
(message "%s" (buffer-string)))
(delete-file tmpfile)))))
;; 7z doesn't provide a `quiet' option to suppress non-essential
;; stderr messages. So redirect stderr to a temp file and display it
;; in the echo area when it contains no message indicating success.
(archive-extract-by-stdout
archive name archive-7z-extract "Everything is Ok"))
(defun archive-7z-write-file-member (archive descr)
(archive-*-write-file-member

View file

@ -40,7 +40,7 @@ corresponding to the mode line clicked."
(interactive "e")
(save-selected-window
(select-window (posn-window (event-start event)))
(call-interactively 'toggle-read-only)))
(read-only-mode 'toggle)))
(defun mode-line-toggle-modified (event)
"Toggle the buffer-modified flag from the mode-line."
@ -898,6 +898,7 @@ if `inhibit-field-text-motion' is non-nil."
(define-key goto-map "\M-n" 'next-error)
(define-key goto-map "p" 'previous-error)
(define-key goto-map "\M-p" 'previous-error)
(define-key goto-map "\t" 'move-to-column)
(defvar search-map (make-sparse-keymap)
"Keymap for search related commands.")

View file

@ -1048,12 +1048,11 @@ The return value has the form (BUFFER . POINT).
Note: this function is deprecated and is present for Emacs 22
compatibility only."
(declare (obsolete bookmark-handle-bookmark "23.1"))
(save-excursion
(bookmark-handle-bookmark bookmark)
(cons (current-buffer) (point))))
(make-obsolete 'bookmark-jump-noselect 'bookmark-handle-bookmark "23.1")
(defun bookmark-handle-bookmark (bookmark-name-or-record)
"Call BOOKMARK-NAME-OR-RECORD's handler or `bookmark-default-handler'
if it has none. This changes current buffer and point and returns nil,

View file

@ -962,7 +962,7 @@ Default is `bs--current-sort-function'."
Uses function `toggle-read-only'."
(interactive)
(with-current-buffer (bs--current-buffer)
(call-interactively 'toggle-read-only))
(read-only-mode 'toggle))
(bs--update-current-line))
(defun bs-clear-modified ()

View file

@ -64,13 +64,13 @@ minus `Buffer-menu-size-width'. This use is deprecated."
"24.3")
(defcustom Buffer-menu-name-width 19
"Width of buffer size column in the Buffer Menu."
"Width of buffer name column in the Buffer Menu."
:type 'number
:group 'Buffer-menu
:version "24.3")
(defcustom Buffer-menu-size-width 7
"Width of buffer name column in the Buffer Menu."
"Width of buffer size column in the Buffer Menu."
:type 'number
:group 'Buffer-menu
:version "24.3")
@ -520,7 +520,7 @@ This behaves like invoking \\[toggle-read-only] in that buffer."
(interactive)
(let ((read-only
(with-current-buffer (Buffer-menu-buffer t)
(call-interactively 'toggle-read-only)
(read-only-mode 'toggle)
buffer-read-only)))
(tabulated-list-set-col 1 (if read-only "%" " ") t)))

View file

@ -1097,7 +1097,7 @@ shown are hard-coded to 8-12, 13-17."
(cal-tex-longday "leftday" "2.75in"))
(cal-tex-b-document)
(cal-tex-cmd "\\pagestyle" "empty")
;; Let's assume this is something to with twopage documents.
;; Let's assume this is something to do with twopage documents.
;; It has the downside that we start with a blank page.
;; It doesn't make obvious sense when oddside and evenside margins
;; are the same (non-filofax), but consider the left and right

View file

@ -155,29 +155,23 @@ If PROMPT is non-nil, prompt for the month and year to use."
(defun calendar-one-frame-setup (&optional prompt)
"Display calendar and diary in a single dedicated frame.
See `calendar-frame-setup' for more information."
(declare (obsolete calendar-frame-setup "23.1"))
(calendar-frame-setup 'one-frame prompt))
(make-obsolete 'calendar-one-frame-setup 'calendar-frame-setup "23.1")
;;;###cal-autoload
(defun calendar-only-one-frame-setup (&optional prompt)
"Display calendar in a dedicated frame.
See `calendar-frame-setup' for more information."
(declare (obsolete calendar-frame-setup "23.1"))
(calendar-frame-setup 'calendar-only prompt))
(make-obsolete 'calendar-only-one-frame-setup 'calendar-frame-setup "23.1")
;;;###cal-autoload
(defun calendar-two-frame-setup (&optional prompt)
"Display calendar and diary in separate, dedicated frames.
See `calendar-frame-setup' for more information."
(declare (obsolete calendar-frame-setup "23.1"))
(calendar-frame-setup 'two-frames prompt))
(make-obsolete 'calendar-two-frame-setup 'calendar-frame-setup "23.1")
;; Undocumented and probably useless.
(defvar cal-x-load-hook nil
"Hook run on loading of the `cal-x' package.")

View file

@ -1001,18 +1001,16 @@ The valid styles are described in the documentation of `calendar-date-style'."
(defun european-calendar ()
"Set the interpretation and display of dates to the European style."
(declare (obsolete calendar-set-date-style "23.1"))
(interactive)
(calendar-set-date-style 'european))
(make-obsolete 'european-calendar 'calendar-set-date-style "23.1")
(defun american-calendar ()
"Set the interpretation and display of dates to the American style."
(declare (obsolete calendar-set-date-style "23.1"))
(interactive)
(calendar-set-date-style 'american))
(make-obsolete 'american-calendar 'calendar-set-date-style "23.1")
(define-obsolete-variable-alias 'holidays-in-diary-buffer
'diary-show-holidays-flag "23.1")
@ -1148,14 +1146,13 @@ MON defaults to `displayed-month'. YR defaults to `displayed-year'."
"Execute a for loop.
Evaluate BODY with VAR bound to successive integers from INIT to FINAL,
inclusive. The standard macro `dotimes' is preferable in most cases."
(declare (debug (symbolp "from" form "to" form "do" body))
(declare (obsolete "use `dotimes' or `while' instead." "23.1")
(debug (symbolp "from" form "to" form "do" body))
(indent defun))
`(let ((,var (1- ,init)))
(while (>= ,final (setq ,var (1+ ,var)))
,@body)))
(make-obsolete 'calendar-for-loop "use `dotimes' or `while' instead." "23.1")
(defmacro calendar-sum (index initial condition expression)
"For INDEX = INITIAL, +1, ... (as long as CONDITION holds), sum EXPRESSION."
(declare (debug (symbolp form form form)))
@ -2298,7 +2295,7 @@ Negative years are interpreted as years BC; -1 being 1 BC, and so on."
;; First two chars of each day are used in the calendar.
(,(regexp-opt (mapcar (lambda (x) (substring x 0 calendar-day-header-width))
calendar-day-name-array))
. font-lock-reference-face))
. font-lock-constant-face))
"Default keywords to highlight in Calendar mode.")
(defun calendar-day-name (date &optional abbrev absolute)
@ -2655,13 +2652,7 @@ If called by a mouse-event, pops up a menu with the result."
"---")
(calendar-string-spread (list str) ?- width)))))
(defun calendar-version ()
"Display the Calendar version."
(interactive)
(message "GNU Emacs %s" emacs-version))
(make-obsolete 'calendar-version 'emacs-version "23.1")
(define-obsolete-function-alias 'calendar-version 'emacs-version "23.1")
(run-hooks 'calendar-load-hook)

View file

@ -2400,10 +2400,10 @@ return a font-lock pattern matching array of MONTHS and marking SYMBOL."
(cons
(format "^%s?\\(%s\\)" (regexp-quote diary-nonmarking-symbol)
(regexp-quote diary-sexp-entry-symbol))
'(1 font-lock-reference-face))
'(1 font-lock-constant-face))
(cons
(format "^%s" (regexp-quote diary-nonmarking-symbol))
'font-lock-reference-face)
'font-lock-constant-face)
(cons
(format "^%s?%s" (regexp-quote diary-nonmarking-symbol)
(regexp-opt (mapcar 'regexp-quote
@ -2411,7 +2411,7 @@ return a font-lock pattern matching array of MONTHS and marking SYMBOL."
diary-islamic-entry-symbol
diary-bahai-entry-symbol))
t))
'(1 font-lock-reference-face))
'(1 font-lock-constant-face))
'(diary-font-lock-sexps . font-lock-keyword-face)
;; Don't need to worry about space around "-" because the first
;; match takes care of that. It does mean the "-" itself may or
@ -2482,7 +2482,7 @@ This depends on the calendar date style."
(defvar diary-fancy-font-lock-keywords
`((diary-fancy-date-matcher . diary-face)
("^.*\\([aA]nniversary\\|[bB]irthday\\).*$" . 'diary-anniversary)
("^.*Yahrzeit.*$" . font-lock-reference-face)
("^.*Yahrzeit.*$" . font-lock-constant-face)
("^\\(Erev \\)?Rosh Hodesh.*" . font-lock-function-name-face)
("^Day.*omer.*$" . font-lock-builtin-face)
("^Parashat.*$" . font-lock-comment-face)

View file

@ -931,8 +931,8 @@ Finto iCalendar file: ")
(set-buffer (find-file diary-filename))
(icalendar-export-region (point-min) (point-max) ical-filename)))
(defalias 'icalendar-convert-diary-to-ical 'icalendar-export-file)
(make-obsolete 'icalendar-convert-diary-to-ical 'icalendar-export-file "22.1")
(define-obsolete-function-alias 'icalendar-convert-diary-to-ical
'icalendar-export-file "22.1")
(defvar icalendar--uid-count 0
"Auxiliary counter for creating unique ids.")
@ -1881,8 +1881,8 @@ buffer `*icalendar-errors*'."
;; return nil, i.e. import did not work
nil)))
(defalias 'icalendar-extract-ical-from-buffer 'icalendar-import-buffer)
(make-obsolete 'icalendar-extract-ical-from-buffer 'icalendar-import-buffer "22.1")
(define-obsolete-function-alias 'icalendar-extract-ical-from-buffer
'icalendar-import-buffer "22.1")
(defun icalendar--format-ical-event (event)
"Create a string representation of an iCalendar EVENT."

View file

@ -3069,11 +3069,11 @@ Magic characters are those in `comint-file-name-quote-list'."
(defun comint-unquote-filename (filename)
"Return FILENAME with quoted characters unquoted."
(declare (obsolete nil "24.3"))
(if (null comint-file-name-quote-list)
filename
(save-match-data
(replace-regexp-in-string "\\\\\\(.\\)" "\\1" filename t))))
(make-obsolete 'comint-unquote-filename nil "24.3")
(defun comint--requote-argument (upos qstr)
;; See `completion-table-with-quoting'.
@ -3170,10 +3170,9 @@ See `completion-table-with-quoting' and `comint-unquote-function'.")
(defun comint-dynamic-complete-as-filename ()
"Dynamically complete at point as a filename.
See `comint-dynamic-complete-filename'. Returns t if successful."
(declare (obsolete comint-filename-completion "24.1"))
(let ((data (comint--complete-file-name-data)))
(completion-in-region (nth 0 data) (nth 1 data) (nth 2 data))))
(make-obsolete 'comint-dynamic-complete-as-filename
'comint-filename-completion "24.1")
(defun comint-replace-by-expanded-filename ()
"Dynamically expand and complete the filename at point.
@ -3204,6 +3203,7 @@ Return `partial' if completed as far as possible.
Return `listed' if a completion listing was shown.
See also `comint-dynamic-complete-filename'."
(declare (obsolete completion-in-region "24.1"))
(let* ((completion-ignore-case (memq system-type '(ms-dos windows-nt cygwin)))
(minibuffer-p (window-minibuffer-p (selected-window)))
(suffix (cond ((not comint-completion-addsuffix) "")
@ -3246,8 +3246,6 @@ See also `comint-dynamic-complete-filename'."
(unless minibuffer-p
(message "Partially completed"))
'partial)))))))
(make-obsolete 'comint-dynamic-simple-complete 'completion-in-region "24.1")
(defun comint-dynamic-list-filename-completions ()
"Display a list of possible completions for the filename at point."

View file

@ -2228,9 +2228,9 @@ and `face'."
(setq widget nil)))))
(widget-setup))
(make-obsolete 'custom-show "this widget type is no longer supported." "24.1")
(defun custom-show (widget value)
"Non-nil if WIDGET should be shown with VALUE by default."
(declare (obsolete "this widget type is no longer supported." "24.1"))
(let ((show (widget-get widget :custom-show)))
(if (functionp show)
(funcall show widget value)
@ -4823,12 +4823,7 @@ if that value is non-nil."
(put 'Custom-mode 'mode-class 'special)
;; backward-compatibility
(defun custom-mode ()
"Non-interactive variant of `Custom-mode'."
(Custom-mode))
(make-obsolete 'custom-mode 'Custom-mode "23.1")
(put 'custom-mode 'mode-class 'special)
(define-obsolete-function-alias 'custom-mode 'Custom-mode "23.1")
(add-to-list 'debug-ignored-errors "^Invalid face:? ")

View file

@ -443,7 +443,6 @@ since it could result in memory overflow and make Emacs crash."
(hscroll-step windows number "22.1")
(truncate-partial-width-windows display boolean "23.1")
(make-cursor-line-fully-visible windows boolean)
(mode-line-inverse-video mode-line boolean)
(mode-line-in-non-selected-windows mode-line boolean "22.1")
(line-number-display-limit display
(choice integer

View file

@ -1193,7 +1193,8 @@ Return t if THEME was successfully loaded, nil otherwise."
(expand-file-name "themes/" data-directory)))
(member hash custom-safe-themes)
(custom-theme-load-confirm hash))
(let ((custom--inhibit-theme-enable t))
(let ((custom--inhibit-theme-enable t)
(buffer-file-name fn)) ;For load-history.
(eval-buffer))
;; Optimization: if the theme changes the `default' face, put that
;; entry first. This avoids some `frame-set-background-mode' rigmarole

View file

@ -1045,11 +1045,10 @@ Using it may cause conflicts. Use it anyway? " owner)))))
(defun desktop-load-default ()
"Load the `default' start-up library manually.
Also inhibit further loading of it."
(declare (obsolete desktop-save-mode "22.1"))
(unless inhibit-default-init ; safety check
(load "default" t t)
(setq inhibit-default-init t)))
(make-obsolete 'desktop-load-default
'desktop-save-mode "22.1")
;; ----------------------------------------------------------------------------
;;;###autoload

View file

@ -723,15 +723,13 @@ determine a default directory.")
(defun dired-default-directory ()
"Return the `dired-default-directory-alist' entry for the current major-mode.
If none, return `default-directory'."
;; It looks like this was intended to be something of a "general"
;; feature, but it only ever seems to have been used in
;; dired-smart-shell-command, and doesn't seem worth keeping around.
(declare (obsolete nil "24.1"))
(or (eval (cdr (assq major-mode dired-default-directory-alist)))
default-directory))
;; It looks like this was intended to be something of a "general" feature,
;; but it only ever seems to have been used in dired-smart-shell-command,
;; and does not seem worth keeping around (?).
(make-obsolete 'dired-default-directory
"this feature is due to be removed." "24.1")
(defun dired-smart-shell-command (command &optional output-buffer error-buffer)
"Like function `shell-command', but in the current Virtual Dired directory."
(interactive
@ -782,6 +780,7 @@ See also `dired-enable-local-variables'."
(defun dired-hack-local-variables ()
"Evaluate local variables in `dired-local-variables-file' for dired buffer."
(declare (obsolete hack-dir-local-variables-non-file-buffer "24.1"))
(and (stringp dired-local-variables-file)
(file-exists-p dired-local-variables-file)
(let ((opoint (point-max))
@ -803,14 +802,12 @@ See also `dired-enable-local-variables'."
;; Make sure that the mode line shows the proper information.
(dired-sort-set-mode-line))))
(make-obsolete 'dired-hack-local-variables
'hack-dir-local-variables-non-file-buffer "24.1")
;; Does not seem worth a dedicated command.
;; See the more general features in files-x.el.
(defun dired-omit-here-always ()
"Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'.
If in a Dired buffer, reverts it."
(declare (obsolete add-dir-local-variable "24.1"))
(interactive)
(if (file-exists-p dired-local-variables-file)
(error "Old-style dired-local-variables-file `./%s' found;
@ -830,8 +827,6 @@ replace it with a dir-locals-file `./%s'"
(dired-extra-startup)
(dired-revert))))
(make-obsolete 'dired-omit-here-always 'add-dir-local-variable "24.1")
;;; GUESS SHELL COMMAND.

View file

@ -1964,7 +1964,7 @@ Otherwise, call `toggle-read-only'."
(interactive)
(if (derived-mode-p 'dired-mode)
(wdired-change-to-wdired-mode)
(call-interactively 'toggle-read-only)))
(read-only-mode 'toggle)))
(defun dired-next-line (arg)
"Move down lines then position at filename.
@ -2997,7 +2997,8 @@ argument or confirmation)."
(let ((split-height-threshold 0))
(with-temp-buffer-window
buffer
(cons 'display-buffer-below-selected nil)
(cons 'display-buffer-below-selected
'((window-height . fit-window-to-buffer)))
#'(lambda (window _value)
(with-selected-window window
(unwind-protect
@ -4268,7 +4269,7 @@ instead.
;;;***
;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump)
;;;;;; "dired-x" "dired-x.el" "d2461aa6efb8c1d7de8f245728ab448e")
;;;;;; "dired-x" "dired-x.el" "a4e6844421c2c5e6fde90e959fbcc26f")
;;; Generated autoloads from dired-x.el
(autoload 'dired-jump "dired-x" "\

View file

@ -255,20 +255,23 @@ of the page moves to the previous page."
;;;; Internal Variables
(defun doc-view-new-window-function (winprops)
;; (message "New window %s for buf %s" (car winprops) (current-buffer))
(cl-assert (or (eq t (car winprops))
(eq (window-buffer (car winprops)) (current-buffer))))
(let ((ol (image-mode-window-get 'overlay winprops)))
(when (and ol (not (overlay-buffer ol)))
;; I've seen `ol' be a dead overlay. I do not yet know how this
;; happened, so maybe the bug is elsewhere, but in the mean time,
;; this seems like a safe approach.
(setq ol nil))
(if ol
(progn
(cl-assert (eq (overlay-buffer ol) (current-buffer)))
(setq ol (copy-overlay ol)))
(cl-assert (not (get-char-property (point-min) 'display)))
(setq ol (copy-overlay ol))
;; `ol' might actually be dead.
(move-overlay ol (point-min) (point-max)))
(setq ol (make-overlay (point-min) (point-max) nil t))
(overlay-put ol 'doc-view t))
(overlay-put ol 'window (car winprops))
(unless (windowp (car winprops))
;; It's a pseudo entry. Let's make sure it's not displayed (the
;; `window' property is only effective if its value is a window).
(cl-assert (eq t (car winprops)))
(delete-overlay ol))
(image-mode-window-put 'overlay ol winprops)))
(defvar doc-view-current-files nil
@ -560,7 +563,8 @@ at the top edge of the page moves to the previous page."
"Kill the current converter process(es)."
(interactive)
(while (consp doc-view-current-converter-processes)
(ignore-errors ;; Maybe it's dead already?
(ignore-errors ;; Some entries might not be processes, and maybe
;; some are dead already?
(kill-process (pop doc-view-current-converter-processes))))
(when doc-view-current-timer
(cancel-timer doc-view-current-timer)
@ -663,19 +667,21 @@ OpenDocument format)."
(defvar doc-view-shrink-factor 1.125)
(defun doc-view-enlarge (factor)
"Enlarge the document."
"Enlarge the document by FACTOR."
(interactive (list doc-view-shrink-factor))
(if (eq (plist-get (cdr (doc-view-current-image)) :type)
'imagemagick)
;; ImageMagick supports on-the-fly-rescaling
(progn
(set (make-local-variable 'doc-view-image-width)
(ceiling (* factor doc-view-image-width)))
(doc-view-insert-image (plist-get (cdr (doc-view-current-image)) :file)
:width doc-view-image-width))
(set (make-local-variable 'doc-view-resolution)
(ceiling (* factor doc-view-resolution)))
(doc-view-reconvert-doc)))
;; ImageMagick supports on-the-fly-rescaling.
(let ((new (ceiling (* factor doc-view-image-width))))
(unless (equal new doc-view-image-width)
(set (make-local-variable 'doc-view-image-width) new)
(doc-view-insert-image
(plist-get (cdr (doc-view-current-image)) :file)
:width doc-view-image-width)))
(let ((new (ceiling (* factor doc-view-resolution))))
(unless (equal new doc-view-resolution)
(set (make-local-variable 'doc-view-resolution) new)
(doc-view-reconvert-doc)))))
(defun doc-view-shrink (factor)
"Shrink the document."
@ -743,12 +749,14 @@ min {(window-width / image-width), (window-height / image-height)} times."
(img-height (cdr (image-display-size
(image-get-display-property) t))))
(doc-view-enlarge (min (/ (float win-width) (float img-width))
(/ (float (- win-height 1)) (float img-height)))))
(/ (float (- win-height 1))
(float img-height)))))
;; If slice is set
(let* ((slice-width (nth 2 slice))
(slice-height (nth 3 slice))
(scale-factor (min (/ (float win-width) (float slice-width))
(/ (float (- win-height 1)) (float slice-height))))
(/ (float (- win-height 1))
(float slice-height))))
(new-slice (mapcar (lambda (x) (ceiling (* scale-factor x))) slice)))
(doc-view-enlarge scale-factor)
(setf (doc-view-current-slice) new-slice)
@ -762,6 +770,7 @@ Should be invoked when the cached images aren't up-to-date."
;; Clear the old cached files
(when (file-exists-p (doc-view-current-cache-dir))
(delete-directory (doc-view-current-cache-dir) 'recursive))
(kill-local-variable 'doc-view-last-page-number)
(doc-view-initiate-display))
(defun doc-view-sentinel (proc event)
@ -895,6 +904,11 @@ Start by converting PAGES, and then the rest."
(list "-raw" pdf txt)
callback))
(defun doc-view-current-cache-doc-pdf ()
"Return the name of the doc.pdf in the current cache dir.
This file exists only if the current document isn't a PDF or PS file already."
(expand-file-name "doc.pdf" (doc-view-current-cache-dir)))
(defun doc-view-doc->txt (txt callback)
"Convert the current document to text and call CALLBACK when done."
(make-directory (doc-view-current-cache-dir) t)
@ -905,22 +919,17 @@ Start by converting PAGES, and then the rest."
(`ps
;; Doc is a PS, so convert it to PDF (which will be converted to
;; TXT thereafter).
(let ((pdf (expand-file-name "doc.pdf"
(doc-view-current-cache-dir))))
(let ((pdf (doc-view-current-cache-doc-pdf)))
(doc-view-ps->pdf doc-view-buffer-file-name pdf
(lambda () (doc-view-pdf->txt pdf txt callback)))))
(`dvi
;; Doc is a DVI. This means that a doc.pdf already exists in its
;; cache subdirectory.
(doc-view-pdf->txt (expand-file-name "doc.pdf"
(doc-view-current-cache-dir))
txt callback))
(doc-view-pdf->txt (doc-view-current-cache-doc-pdf) txt callback))
(`odf
;; Doc is some ODF (or MS Office) doc. This means that a doc.pdf
;; already exists in its cache subdirectory.
(doc-view-pdf->txt (expand-file-name "doc.pdf"
(doc-view-current-cache-dir))
txt callback))
(doc-view-pdf->txt (doc-view-current-cache-doc-pdf) txt callback))
(_ (error "DocView doesn't know what to do"))))
(defun doc-view-ps->pdf (ps pdf callback)
@ -960,13 +969,13 @@ Those files are saved in the directory given by the function
(`dvi
;; DVI files have to be converted to PDF before Ghostscript can process
;; it.
(let ((pdf (expand-file-name "doc.pdf" doc-view-current-cache-dir)))
(let ((pdf (doc-view-current-cache-doc-pdf)))
(doc-view-dvi->pdf doc-view-buffer-file-name pdf
(lambda () (doc-view-pdf/ps->png pdf png-file)))))
(`odf
;; ODF files have to be converted to PDF before Ghostscript can
;; process it.
(let ((pdf (expand-file-name "doc.pdf" doc-view-current-cache-dir))
(let ((pdf (doc-view-current-cache-doc-pdf))
(opdf (expand-file-name (concat (file-name-base doc-view-buffer-file-name)
".pdf")
doc-view-current-cache-dir))
@ -1033,12 +1042,15 @@ dragging it to its bottom-right corner. See also
(defun doc-view-get-bounding-box ()
"Get the BoundingBox information of the current page."
(let* ((page (doc-view-current-page))
(doc (let ((cache-doc (doc-view-current-cache-doc-pdf)))
(if (file-exists-p cache-doc)
cache-doc
doc-view-buffer-file-name)))
(o (shell-command-to-string
(concat doc-view-ghostscript-program
" -dSAFER -dBATCH -dNOPAUSE -q -sDEVICE=bbox "
(format "-dFirstPage=%s -dLastPage=%s %s"
page page
doc-view-buffer-file-name)))))
page page doc)))))
(save-match-data
(when (string-match (concat "%%BoundingBox: "
"\\([[:digit:]]+\\) \\([[:digit:]]+\\) "
@ -1169,24 +1181,23 @@ Predicate for sorting `doc-view-current-files'."
If FORCE is non-nil, start viewing even if the document does not
have the page we want to view."
(with-current-buffer buffer
(let ((prev-pages doc-view-current-files)
(windows (get-buffer-window-list buffer nil t)))
(let ((prev-pages doc-view-current-files))
(setq doc-view-current-files
(sort (directory-files (doc-view-current-cache-dir) t
"page-[0-9]+\\.png" t)
'doc-view-sort))
(unless windows
(switch-to-buffer buffer)
(setq windows (get-buffer-window-list buffer nil t)))
(dolist (win windows)
(dolist (win (or (get-buffer-window-list buffer nil t)
(list t)))
(let* ((page (doc-view-current-page win))
(pagefile (expand-file-name (format "page-%d.png" page)
(doc-view-current-cache-dir))))
(when (or force
(and (not (member pagefile prev-pages))
(member pagefile doc-view-current-files)))
(with-selected-window win
(cl-assert (eq (current-buffer) buffer) t)
(if (windowp win)
(with-selected-window win
(cl-assert (eq (current-buffer) buffer) t)
(doc-view-goto-page page))
(doc-view-goto-page page))))))))
(defun doc-view-buffer-message ()
@ -1231,6 +1242,10 @@ For now these keys are useful:
;;;;; Toggle between editing and viewing
(defvar-local doc-view-saved-settings nil
"Doc-view settings saved while in some other mode.")
(put 'doc-view-saved-settings 'permanent-local t)
(defun doc-view-toggle-display ()
"Toggle between editing a document as text or viewing it."
(interactive)
@ -1483,13 +1498,16 @@ toggle between displaying the document or editing it as text.
;; returns nil for tar members.
(doc-view-fallback-mode)
(let* ((prev-major-mode (if (eq major-mode 'doc-view-mode)
(let* ((prev-major-mode (if (derived-mode-p 'doc-view-mode)
doc-view-previous-major-mode
(when (not (memq major-mode
'(doc-view-mode fundamental-mode)))
(unless (eq major-mode 'fundamental-mode)
major-mode))))
(kill-all-local-variables)
(set (make-local-variable 'doc-view-previous-major-mode) prev-major-mode))
(set (make-local-variable 'doc-view-previous-major-mode)
prev-major-mode))
(dolist (var doc-view-saved-settings)
(set (make-local-variable (car var)) (cdr var)))
;; Figure out the document type.
(unless doc-view-doc-type
@ -1563,13 +1581,20 @@ toggle between displaying the document or editing it as text.
(defun doc-view-fallback-mode ()
"Fallback to the previous or next best major mode."
(if doc-view-previous-major-mode
(funcall doc-view-previous-major-mode)
(let ((auto-mode-alist (rassq-delete-all
'doc-view-mode-maybe
(rassq-delete-all 'doc-view-mode
(copy-alist auto-mode-alist)))))
(normal-mode))))
(let ((vars (if (derived-mode-p 'doc-view-mode)
(mapcar (lambda (var) (cons var (symbol-value var)))
'(doc-view-resolution
image-mode-winprops-alist)))))
(if doc-view-previous-major-mode
(funcall doc-view-previous-major-mode)
(let ((auto-mode-alist
(rassq-delete-all
'doc-view-mode-maybe
(rassq-delete-all 'doc-view-mode
(copy-alist auto-mode-alist)))))
(normal-mode)))
(when vars
(setq-local doc-view-saved-settings vars))))
;;;###autoload
(defun doc-view-mode-maybe ()

View file

@ -253,7 +253,9 @@ convention was modified."
advertised-signature-table))
(defun make-obsolete (obsolete-name current-name &optional when)
"Make the byte-compiler warn that OBSOLETE-NAME is obsolete.
"Make the byte-compiler warn that function OBSOLETE-NAME is obsolete.
OBSOLETE-NAME should be a function name or macro name (a symbol).
The warning will say that CURRENT-NAME should be used instead.
If CURRENT-NAME is a string, that is the `use instead' message
\(it should end with a period, and not start with a capital).

View file

@ -846,7 +846,7 @@ CONST2 may be evaluated multiple times."
(defun byte-compile-cl-file-p (file)
"Return non-nil if FILE is one of the CL files."
(and (stringp file)
(string-match "^cl\\>" (file-name-nondirectory file))))
(string-match "^cl\\.el" (file-name-nondirectory file))))
(defun byte-compile-eval (form)
"Eval FORM and mark the functions defined therein.

View file

@ -689,7 +689,6 @@ PROPLIST is a list of the sort returned by `symbol-plist'.
;; Local variables:
;; byte-compile-dynamic: t
;; byte-compile-warnings: (not cl-functions)
;; generated-autoload-file: "cl-loaddefs.el"
;; End:

View file

@ -745,7 +745,6 @@ If ALIST is non-nil, the new pairs are prepended to it."
;; Local variables:
;; byte-compile-dynamic: t
;; byte-compile-warnings: (not cl-functions)
;; End:
;;; cl-lib.el ends here

View file

@ -11,7 +11,7 @@
;;;;;; cl--map-overlays cl--map-intervals cl--map-keymap-recursively
;;;;;; cl-notevery cl-notany cl-every cl-some cl-mapcon cl-mapcan
;;;;;; cl-mapl cl-maplist cl-map cl--mapcar-many cl-equalp cl-coerce)
;;;;;; "cl-extra" "cl-extra.el" "535a24c1cff55a16e3d51219498a7858")
;;;;;; "cl-extra" "cl-extra.el" "1572ae52fa4fbd9c4bf89b49a068a865")
;;; Generated autoloads from cl-extra.el
(autoload 'cl-coerce "cl-extra" "\
@ -260,7 +260,7 @@ Remove from SYMBOL's plist the property PROPNAME and its value.
;;;;;; cl-typecase cl-ecase cl-case cl-load-time-value cl-eval-when
;;;;;; cl-destructuring-bind cl-function cl-defmacro cl-defun cl-gentemp
;;;;;; cl-gensym cl--compiler-macro-cXXr cl--compiler-macro-list*)
;;;;;; "cl-macs" "cl-macs.el" "6d0676869af66e5b5a671f95ee069461")
;;;;;; "cl-macs" "cl-macs.el" "da92f58f688ff6fb4d0098eb0f3acf0b")
;;; Generated autoloads from cl-macs.el
(autoload 'cl--compiler-macro-list* "cl-macs" "\
@ -748,7 +748,7 @@ surrounded by (cl-block NAME ...).
;;;;;; cl-nsubstitute-if cl-nsubstitute cl-substitute-if-not cl-substitute-if
;;;;;; cl-substitute cl-delete-duplicates cl-remove-duplicates cl-delete-if-not
;;;;;; cl-delete-if cl-delete cl-remove-if-not cl-remove-if cl-remove
;;;;;; cl-replace cl-fill cl-reduce) "cl-seq" "cl-seq.el" "b444601641dcbd14a23ca5182bc80ffa")
;;;;;; cl-replace cl-fill cl-reduce) "cl-seq" "cl-seq.el" "4c1e1191e82dc8d5449a5ec4d59efc10")
;;; Generated autoloads from cl-seq.el
(autoload 'cl-reduce "cl-seq" "\

View file

@ -2686,7 +2686,6 @@ surrounded by (cl-block NAME ...).
;; Local variables:
;; byte-compile-dynamic: t
;; byte-compile-warnings: (not cl-functions)
;; generated-autoload-file: "cl-loaddefs.el"
;; End:

View file

@ -1010,7 +1010,6 @@ Atoms are compared by `eql'; cons cells are compared recursively.
;; Local variables:
;; byte-compile-dynamic: t
;; byte-compile-warnings: (not cl-functions)
;; generated-autoload-file: "cl-loaddefs.el"
;; End:

View file

@ -452,7 +452,7 @@ definitions, or lack thereof).
\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
(declare (indent 1) (debug cl-flet)
(obsolete "Use either `cl-flet' or `cl-letf'." "24.3"))
(obsolete "use either `cl-flet' or `cl-letf'." "24.3"))
`(letf ,(mapcar
(lambda (x)
(if (or (and (fboundp (car x))

View file

@ -276,10 +276,10 @@ A mode's class is the first ancestor which is NOT a derived mode.
Use the `derived-mode-parent' property of the symbol to trace backwards.
Since major-modes might all derive from `fundamental-mode', this function
is not very useful."
(declare (obsolete derived-mode-p "22.1"))
(while (get mode 'derived-mode-parent)
(setq mode (get mode 'derived-mode-parent)))
mode)
(make-obsolete 'derived-mode-class 'derived-mode-p "22.1")
;;; PRIVATE

View file

@ -7,18 +7,18 @@
;; This file is part of GNU Emacs.
;; 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.
;;
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see `http://www.gnu.org/licenses/'.
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:

View file

@ -7,18 +7,18 @@
;; This file is part of GNU Emacs.
;; 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.
;;
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see `http://www.gnu.org/licenses/'.
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:

View file

@ -1,22 +1,25 @@
;;; gv.el --- Generalized variables -*- lexical-binding: t -*-
;;; gv.el --- generalized variables -*- lexical-binding: t -*-
;; Copyright (C) 2012 Free Software Foundation, Inc.
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
;; Keywords: extensions
;; Package: emacs
;; This program is free software; you can redistribute it and/or modify
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
@ -266,7 +269,7 @@ The return value is the last VAL in the list.
;;;###autoload
(put 'gv-place 'edebug-form-spec 'edebug-match-form)
;; CL did the equivalent of:
;;(gv-define-expand edebug-after (lambda (before index place) place))
;;(gv-define-macroexpand edebug-after (lambda (before index place) place))
(put 'edebug-after 'gv-expander
(lambda (do before index place)

View file

@ -10,10 +10,10 @@
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@ -21,9 +21,7 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:

View file

@ -9,10 +9,10 @@
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@ -20,9 +20,7 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Change Log:

View file

@ -517,6 +517,10 @@ MATCH is the pattern that needs to be matched, of the form:
(defun pcase--self-quoting-p (upat)
(or (keywordp upat) (numberp upat) (stringp upat)))
(defsubst pcase--mark-used (sym)
;; Exceptionally, `sym' may be a constant expression rather than a symbol.
(if (symbolp sym) (put sym 'pcase-used t)))
;; It's very tempting to use `pcase' below, tho obviously, it'd create
;; bootstrapping problems.
(defun pcase--u1 (matches code vars rest)
@ -581,7 +585,7 @@ Otherwise, it defers to REST which is a list of branches of the form
((memq upat '(t _)) (pcase--u1 matches code vars rest))
((eq upat 'pcase--dontcare) :pcase--dontcare)
((memq (car-safe upat) '(guard pred))
(if (eq (car upat) 'pred) (put sym 'pcase-used t))
(if (eq (car upat) 'pred) (pcase--mark-used sym))
(let* ((splitrest
(pcase--split-rest
sym (lambda (pat) (pcase--split-pred upat pat)) rest))
@ -614,10 +618,10 @@ Otherwise, it defers to REST which is a list of branches of the form
(pcase--u1 matches code vars then-rest)
(pcase--u else-rest))))
((pcase--self-quoting-p upat)
(put sym 'pcase-used t)
(pcase--mark-used sym)
(pcase--q1 sym upat matches code vars rest))
((symbolp upat)
(put sym 'pcase-used t)
(pcase--mark-used sym)
(if (not (assq upat vars))
(pcase--u1 matches code (cons (cons upat sym) vars) rest)
;; Non-linear pattern. Turn it into an `eq' test.
@ -640,7 +644,7 @@ Otherwise, it defers to REST which is a list of branches of the form
(pcase--u1 (cons `(match ,sym . ,(nth 1 upat)) matches)
code vars rest)))
((eq (car-safe upat) '\`)
(put sym 'pcase-used t)
(pcase--mark-used sym)
(pcase--q1 sym (cadr upat) matches code vars rest))
((eq (car-safe upat) 'or)
(let ((all (> (length (cdr upat)) 1))
@ -662,7 +666,7 @@ Otherwise, it defers to REST which is a list of branches of the form
sym (lambda (pat) (pcase--split-member elems pat)) rest))
(then-rest (car splitrest))
(else-rest (cdr splitrest)))
(put sym 'pcase-used t)
(pcase--mark-used sym)
(pcase--if `(,(if memq-fine #'memq #'member) ,sym ',elems)
(pcase--u1 matches code vars then-rest)
(pcase--u else-rest)))

View file

@ -7,10 +7,10 @@
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of

View file

@ -270,9 +270,9 @@ value, 'maybe if either is acceptable."
(setq id (nth 2 form))
(setcdr form (nthcdr 2 form))
(setq val (testcover-reinstrument (nth 2 form)))
(if (eq val t)
(setcar form 'testcover-1value)
(setcar form 'testcover-after))
(setcar form (if (eq val t)
'testcover-1value
'testcover-after))
(when val
;;1-valued or potentially 1-valued
(aset testcover-vector id '1value))
@ -359,9 +359,9 @@ value, 'maybe if either is acceptable."
,(nth 3 (cadr form))))
t)
(t
(if (eq (car (cadr form)) 'edebug-after)
(setq id (car (nth 3 (cadr form))))
(setq id (car (cadr form))))
(setq id (car (if (eq (car (cadr form)) 'edebug-after)
(nth 3 (cadr form))
(cadr form))))
(let ((testcover-1value-functions
(cons id testcover-1value-functions)))
(testcover-reinstrument (cadr form))))))
@ -379,9 +379,9 @@ value, 'maybe if either is acceptable."
,(nth 3 (cadr form))))
'maybe)
(t
(if (eq (car (cadr form)) 'edebug-after)
(setq id (car (nth 3 (cadr form))))
(setq id (car (cadr form))))
(setq id (car (if (eq (car (cadr form)) 'edebug-after)
(nth 3 (cadr form))
(cadr form))))
(let ((testcover-noreturn-functions
(cons id testcover-noreturn-functions)))
(testcover-reinstrument (cadr form))))))
@ -447,6 +447,12 @@ binding `testcover-vector' to the code-coverage vector for TESTCOVER-SYM
(defun testcover-after (idx val)
"Internal function for coverage testing. Returns VAL after installing it in
`testcover-vector' at offset IDX."
(declare (gv-expander (lambda (do)
(gv-letplace (getter setter) val
(funcall do getter
(lambda (store)
`(progn (testcover-after ,idx ,getter)
,(funcall setter store))))))))
(cond
((eq (aref testcover-vector idx) 'unknown)
(aset testcover-vector idx val))

View file

@ -146,14 +146,13 @@ TIME must be in the internal format returned by, e.g., `current-time'.
The microsecond count from TIME is ignored, and USECS is used instead.
If optional fourth argument DELTA is a positive number, make the timer
fire repeatedly that many seconds apart."
(declare (obsolete "use `timer-set-time' and `timer-inc-time' instead."
"22.1"))
(setf (timer--time timer) time)
(setf (timer--usecs timer) usecs)
(setf (timer--psecs timer) 0)
(setf (timer--repeat-delay timer) (and (numberp delta) (> delta 0) delta))
timer)
(make-obsolete 'timer-set-time-with-usecs
"use `timer-set-time' and `timer-inc-time' instead."
"22.1")
(defun timer-set-function (timer function &optional args)
"Make TIMER call FUNCTION with optional ARGS when triggering."

View file

@ -249,9 +249,9 @@ Other values are interpreted as usual."
(defun toggle-emacs-lock ()
"Toggle `emacs-lock-from-exiting' for the current buffer."
(declare (obsolete emacs-lock-mode "24.1"))
(interactive)
(call-interactively 'emacs-lock-mode))
(make-obsolete 'toggle-emacs-lock 'emacs-lock-mode "24.1")
(provide 'emacs-lock)

View file

@ -585,8 +585,8 @@ If SECRET is non-nil, list secret keys instead of public keys."
(message "%s" info)))
(defun epa-display-verify-result (verify-result)
(declare (obsolete epa-display-info "23.1"))
(epa-display-info (epg-verify-result-to-string verify-result)))
(make-obsolete 'epa-display-verify-result 'epa-display-info "23.1")
(defun epa-passphrase-callback-function (context key-id handback)
(if (eq key-id 'SYM)

View file

@ -1779,6 +1779,7 @@ This function is for internal use only."
(epg-context-set-result-for context 'import-status nil)))
(defun epg-passphrase-callback-function (context key-id _handback)
(declare (obsolete epa-passphrase-callback-function "23.1"))
(if (eq key-id 'SYM)
(read-passwd "Passphrase for symmetric encryption: "
(eq (epg-context-operation context) 'encrypt))
@ -1790,9 +1791,6 @@ This function is for internal use only."
(format "Passphrase for %s %s: " key-id (cdr entry))
(format "Passphrase for %s: " key-id)))))))
(make-obsolete 'epg-passphrase-callback-function
'epa-passphrase-callback-function "23.1")
(defun epg--list-keys-1 (context name mode)
(let ((args (append (if epg-gpg-home-directory
(list "--homedir" epg-gpg-home-directory))
@ -2562,6 +2560,7 @@ If you use this function, you will need to wait for the completion of
`epg-reset' to clear a temporary output file.
If you are unsure, use synchronous version of this function
`epg-sign-keys' instead."
(declare (obsolete nil "23.1"))
(epg-context-set-operation context 'sign-keys)
(epg-context-set-result context nil)
(epg--start context (cons (if local
@ -2572,10 +2571,10 @@ If you are unsure, use synchronous version of this function
(epg-sub-key-id
(car (epg-key-sub-key-list key))))
keys))))
(make-obsolete 'epg-start-sign-keys "do not use." "23.1")
(defun epg-sign-keys (context keys &optional local)
"Sign KEYS from the key ring."
(declare (obsolete nil "23.1"))
(unwind-protect
(progn
(epg-start-sign-keys context keys local)
@ -2586,7 +2585,6 @@ If you are unsure, use synchronous version of this function
(list "Sign keys failed"
(epg-errors-to-string errors))))))
(epg-reset context)))
(make-obsolete 'epg-sign-keys "do not use." "23.1")
(defun epg-start-generate-key (context parameters)
"Initiate a key generation.

View file

@ -1,3 +1,7 @@
2012-09-25 Chong Yidong <cyd@gnu.org>
* erc.el (erc-send-command): Use define-obsolete-function-alias.
2012-09-17 Chong Yidong <cyd@gnu.org>
* erc-page.el (erc-page-function):

View file

@ -139,8 +139,8 @@
(message (concat "ERC: The function `defvaralias' is not bound. See the "
"NEWS file for variable name changes since ERC 5.0.4.")))
(defalias 'erc-send-command 'erc-server-send)
(erc-make-obsolete 'erc-send-command 'erc-server-send "ERC 5.1")
(define-obsolete-function-alias 'erc-send-command
'erc-server-send "ERC 5.1")
;; tunable connection and authentication parameters

View file

@ -63,10 +63,13 @@ which commands are considered visual in nature."
:type '(repeat string)
:group 'eshell-term)
(defcustom eshell-term-name "eterm"
;; If you change this from term-term-name, you need to ensure that the
;; value you choose exists in the system's terminfo database. (Bug#12485)
(defcustom eshell-term-name term-term-name
"Name to use for the TERM variable when running visual commands.
See `term-term-name' in term.el for more information on how this is
used."
:version "24.3" ; eterm -> term-term-name = eterm-color
:type 'string
:group 'eshell-term)

View file

@ -1216,11 +1216,12 @@ COMMAND may result in an alias being executed, or a plain command."
(let* ((sym (intern-soft (concat "eshell/" name)))
(file (symbol-file sym 'defun)))
;; If the function exists, but is defined in an eshell module
;; that's not currently enabled, don't report it as found
;; that's not currently enabled, don't report it as found.
(if (and file
(string-match "\\(em\\|esh\\)-\\(.*\\)\\(\\.el\\)?\\'" file))
(setq file (file-name-base file))
(string-match "\\`\\(em\\|esh\\)-\\([[:alnum:]]+\\)\\'" file))
(let ((module-sym
(intern (file-name-base (concat "eshell-" (match-string 2 file))))))
(intern (concat "eshell-" (match-string 2 file)))))
(if (and (functionp sym)
(or (null module-sym)
(eshell-using-module module-sym)

View file

@ -275,6 +275,7 @@ Prepend remote identification of `default-directory', if any."
(defmacro eshell-for (for-var for-list &rest forms)
"Iterate through a list."
(declare (obsolete dolist "24.1"))
(declare (indent 2))
`(let ((list-iter ,for-list))
(while list-iter
@ -282,9 +283,6 @@ Prepend remote identification of `default-directory', if any."
,@forms)
(setq list-iter (cdr list-iter)))))
(make-obsolete 'eshell-for 'dolist "24.1")
(defun eshell-flatten-list (args)
"Flatten any lists within ARGS, so that there are no sublists."
(let ((new-list (list t)))

View file

@ -243,16 +243,14 @@ shells such as bash, zsh, rc, 4dos."
(defun eshell-add-to-window-buffer-names ()
"Add `eshell-buffer-name' to `same-window-buffer-names'."
(declare (obsolete nil "24.3"))
(add-to-list 'same-window-buffer-names eshell-buffer-name))
(make-obsolete 'eshell-add-to-window-buffer-names
"no longer needed." "24.3")
(defun eshell-remove-from-window-buffer-names ()
"Remove `eshell-buffer-name' from `same-window-buffer-names'."
(declare (obsolete nil "24.3"))
(setq same-window-buffer-names
(delete eshell-buffer-name same-window-buffer-names)))
(make-obsolete 'eshell-remove-from-window-buffer-names
"no longer needed." "24.3")
(defcustom eshell-load-hook nil
"A hook run once Eshell has been loaded."

View file

@ -1867,6 +1867,7 @@ Return nil if it has no specified face."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare-function x-parse-geometry "frame.c" (string))
(defvar x-display-name)
(defun x-handle-named-frame-geometry (parameters)
"Add geometry parameters for a named frame to parameter list PARAMETERS.

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