1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-02 11:21:42 +00:00

Merge from trunk.

This commit is contained in:
Paul Eggert 2011-07-09 21:54:04 -07:00
commit 0f5860c118
39 changed files with 3415 additions and 2900 deletions

View File

@ -1,5 +1,16 @@
2011-07-09 Paul Eggert <eggert@cs.ucla.edu>
* lib/stdint.in.h: Merge from gnulib (Bug#9025).
This fixes a build problem on older Mac OS X hosts.
* m4/pthread_sigmask.m4 (gl_FUNC_PTHREAD_SIGMASK): Omit gl_THREADLIB
test, which runs afoul of Automake installations where, for example,
/usr/share/aclocal contains a copy of gl_THREADLIB.
Problem reported by Sven Joachim in
<http://lists.gnu.org/archive/html/emacs-devel/2011-07/msg00529.html>.
This is just a quick temporary fix, specific to Emacs; I'll work
with the other gnulib maintainers to get a more-permanent fix.
Add gnulib's strtoimax module, needed on Solaris 8.
* Makefile.in (GNULIB_MODULES): Add strtoimax.
* lib/strtoll.c, m4/strtoimax.m4, m4/strtoll.m4: New files,

View File

@ -24,7 +24,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=. --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime readlink socklen stdarg stdio strftime strtoumax symlink sys_stat
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=. --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dup2 filemode getloadavg getopt-gnu ignore-value intprops lstat mktime pthread_sigmask readlink socklen stdarg stdio strftime strtoimax strtoumax symlink sys_stat
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
@ -59,14 +59,18 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
$(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inttypes.m4 \
$(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/lstat.m4 \
$(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/mktime.m4 \
$(top_srcdir)/m4/multiarch.m4 $(top_srcdir)/m4/readlink.m4 \
$(top_srcdir)/m4/sha1.m4 $(top_srcdir)/m4/sha256.m4 \
$(top_srcdir)/m4/sha512.m4 $(top_srcdir)/m4/socklen.m4 \
$(top_srcdir)/m4/multiarch.m4 \
$(top_srcdir)/m4/pthread_sigmask.m4 \
$(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/sha1.m4 \
$(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
$(top_srcdir)/m4/signal_h.m4 \
$(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/socklen.m4 \
$(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
$(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdarg.m4 \
$(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \
$(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdio_h.m4 \
$(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strftime.m4 \
$(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtoll.m4 \
$(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
$(top_srcdir)/m4/symlink.m4 $(top_srcdir)/m4/sys_stat_h.m4 \
$(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/time_r.m4 \
@ -244,6 +248,7 @@ GNULIB_POPEN = @GNULIB_POPEN@
GNULIB_PREAD = @GNULIB_PREAD@
GNULIB_PRINTF = @GNULIB_PRINTF@
GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@
GNULIB_PTSNAME = @GNULIB_PTSNAME@
GNULIB_PUTC = @GNULIB_PUTC@
GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
@ -263,6 +268,9 @@ GNULIB_RMDIR = @GNULIB_RMDIR@
GNULIB_RPMATCH = @GNULIB_RPMATCH@
GNULIB_SCANF = @GNULIB_SCANF@
GNULIB_SETENV = @GNULIB_SETENV@
GNULIB_SIGACTION = @GNULIB_SIGACTION@
GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@
GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@
GNULIB_SLEEP = @GNULIB_SLEEP@
GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
@ -384,7 +392,9 @@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@
HAVE_OS_H = @HAVE_OS_H@
HAVE_PIPE = @HAVE_PIPE@
HAVE_PIPE2 = @HAVE_PIPE2@
HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@
HAVE_PREAD = @HAVE_PREAD@
HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@
HAVE_PTSNAME = @HAVE_PTSNAME@
HAVE_PWRITE = @HAVE_PWRITE@
HAVE_RANDOM_H = @HAVE_RANDOM_H@
@ -395,9 +405,13 @@ HAVE_REALPATH = @HAVE_REALPATH@
HAVE_RENAMEAT = @HAVE_RENAMEAT@
HAVE_RPMATCH = @HAVE_RPMATCH@
HAVE_SETENV = @HAVE_SETENV@
HAVE_SIGACTION = @HAVE_SIGACTION@
HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@
HAVE_SIGINFO_T = @HAVE_SIGINFO_T@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
HAVE_SIGSET_T = @HAVE_SIGSET_T@
HAVE_SLEEP = @HAVE_SLEEP@
HAVE_STDINT_H = @HAVE_STDINT_H@
HAVE_STRPTIME = @HAVE_STRPTIME@
@ -405,6 +419,7 @@ HAVE_STRTOD = @HAVE_STRTOD@
HAVE_STRTOLL = @HAVE_STRTOLL@
HAVE_STRTOULL = @HAVE_STRTOULL@
HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@
HAVE_SYMLINK = @HAVE_SYMLINK@
HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
@ -413,6 +428,7 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
HAVE_TIMEGM = @HAVE_TIMEGM@
HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@
HAVE_UNISTD_H = @HAVE_UNISTD_H@
HAVE_UNLINKAT = @HAVE_UNLINKAT@
HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
@ -479,6 +495,7 @@ LIBXT_OTHER = @LIBXT_OTHER@
LIBX_OTHER = @LIBX_OTHER@
LIB_GCC = @LIB_GCC@
LIB_MATH = @LIB_MATH@
LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@
LIB_STANDARD = @LIB_STANDARD@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
@ -491,6 +508,7 @@ MKDIR_P = @MKDIR_P@
M_FILE = @M_FILE@
NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@
NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@
NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@
NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
@ -501,6 +519,7 @@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@
NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
NEXT_GETOPT_H = @NEXT_GETOPT_H@
NEXT_INTTYPES_H = @NEXT_INTTYPES_H@
NEXT_SIGNAL_H = @NEXT_SIGNAL_H@
NEXT_STDARG_H = @NEXT_STDARG_H@
NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@
@ -584,6 +603,7 @@ REPLACE_PERROR = @REPLACE_PERROR@
REPLACE_POPEN = @REPLACE_POPEN@
REPLACE_PREAD = @REPLACE_PREAD@
REPLACE_PRINTF = @REPLACE_PRINTF@
REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
REPLACE_PUTENV = @REPLACE_PUTENV@
REPLACE_PWRITE = @REPLACE_PWRITE@
REPLACE_READ = @REPLACE_READ@
@ -739,25 +759,29 @@ x_default_search_path = @x_default_search_path@
# present in all Makefile.am that need it. This is ensured by the applicability
# 'all' defined above.
BUILT_SOURCES = $(ALLOCA_H) arg-nonnull.h c++defs.h $(GETOPT_H) \
inttypes.h $(STDARG_H) $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) \
stdio.h stdlib.h sys/stat.h time.h unistd.h warn-on-use.h
inttypes.h signal.h $(STDARG_H) $(STDBOOL_H) $(STDDEF_H) \
$(STDINT_H) stdio.h stdlib.h sys/stat.h time.h unistd.h \
warn-on-use.h
EXTRA_DIST = alloca.in.h allocator.h $(top_srcdir)/./arg-nonnull.h \
$(top_srcdir)/./c++defs.h careadlinkat.h md5.h sha1.h sha256.h \
sha512.h dosname.h ftoastr.c ftoastr.h dup2.c filemode.h \
getloadavg.c getopt.c getopt.in.h getopt1.c getopt_int.h \
ignore-value.h intprops.h inttypes.in.h lstat.c \
mktime-internal.h mktime.c readlink.c stat.c stdarg.in.h \
stdbool.in.h stddef.in.h stdint.in.h stdio.in.h stdlib.in.h \
strftime.h strtol.c strtoul.c strtoull.c strtoimax.c \
strtoumax.c symlink.c sys_stat.in.h time.in.h time_r.c u64.h \
unistd.in.h verify.h $(top_srcdir)/./warn-on-use.h
mktime-internal.h mktime.c pthread_sigmask.c readlink.c \
signal.in.h sigprocmask.c stat.c stdarg.in.h stdbool.in.h \
stddef.in.h stdint.in.h stdio.in.h stdlib.in.h strftime.h \
strtoimax.c strtol.c strtoll.c strtol.c strtoul.c strtoull.c \
strtoimax.c strtoumax.c symlink.c sys_stat.in.h time.in.h \
time_r.c u64.h unistd.in.h verify.h \
$(top_srcdir)/./warn-on-use.h
MOSTLYCLEANDIRS = sys
MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arg-nonnull.h \
arg-nonnull.h-t c++defs.h c++defs.h-t getopt.h getopt.h-t \
inttypes.h inttypes.h-t stdarg.h stdarg.h-t stdbool.h \
stdbool.h-t stddef.h stddef.h-t stdint.h stdint.h-t stdio.h \
stdio.h-t stdlib.h stdlib.h-t sys/stat.h sys/stat.h-t time.h \
time.h-t unistd.h unistd.h-t warn-on-use.h warn-on-use.h-t
inttypes.h inttypes.h-t signal.h signal.h-t stdarg.h \
stdarg.h-t stdbool.h stdbool.h-t stddef.h stddef.h-t stdint.h \
stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t sys/stat.h \
sys/stat.h-t time.h time.h-t unistd.h unistd.h-t warn-on-use.h \
warn-on-use.h-t
noinst_LIBRARIES = libgnu.a
DEFAULT_INCLUDES = -I. -I../src -I$(top_srcdir)/src
libgnu_a_SOURCES = allocator.c careadlinkat.c md5.c sha1.c sha256.c \
@ -765,7 +789,8 @@ libgnu_a_SOURCES = allocator.c careadlinkat.c md5.c sha1.c sha256.c \
libgnu_a_LIBADD = $(gl_LIBOBJS)
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
EXTRA_libgnu_a_SOURCES = ftoastr.c dup2.c getloadavg.c getopt.c \
getopt1.c lstat.c mktime.c readlink.c stat.c strtol.c \
getopt1.c lstat.c mktime.c pthread_sigmask.c readlink.c \
sigprocmask.c stat.c strtoimax.c strtol.c strtoll.c strtol.c \
strtoul.c strtoull.c strtoimax.c strtoumax.c symlink.c \
time_r.c
ARG_NONNULL_H = arg-nonnull.h
@ -832,14 +857,17 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pthread_sigmask.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha512.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigprocmask.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoimax.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtol.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoll.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoul.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoull.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoumax.Po@am__quote@
@ -1137,6 +1165,36 @@ inttypes.h: inttypes.in.h $(top_builddir)/config.status $(WARN_ON_USE_H) $(ARG_N
} > $@-t && \
mv $@-t $@
# We need the following in order to create <signal.h> when the system
# doesn't have a complete one.
signal.h: signal.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_SIGNAL_H''@|$(NEXT_SIGNAL_H)|g' \
-e 's|@''GNULIB_PTHREAD_SIGMASK''@|$(GNULIB_PTHREAD_SIGMASK)|g' \
-e 's/@''GNULIB_SIGNAL_H_SIGPIPE''@/$(GNULIB_SIGNAL_H_SIGPIPE)/g' \
-e 's/@''GNULIB_SIGPROCMASK''@/$(GNULIB_SIGPROCMASK)/g' \
-e 's/@''GNULIB_SIGACTION''@/$(GNULIB_SIGACTION)/g' \
-e 's|@''HAVE_POSIX_SIGNALBLOCKING''@|$(HAVE_POSIX_SIGNALBLOCKING)|g' \
-e 's|@''HAVE_PTHREAD_SIGMASK''@|$(HAVE_PTHREAD_SIGMASK)|g' \
-e 's|@''HAVE_SIGSET_T''@|$(HAVE_SIGSET_T)|g' \
-e 's|@''HAVE_SIGINFO_T''@|$(HAVE_SIGINFO_T)|g' \
-e 's|@''HAVE_SIGACTION''@|$(HAVE_SIGACTION)|g' \
-e 's|@''HAVE_STRUCT_SIGACTION_SA_SIGACTION''@|$(HAVE_STRUCT_SIGACTION_SA_SIGACTION)|g' \
-e 's|@''HAVE_TYPE_VOLATILE_SIG_ATOMIC_T''@|$(HAVE_TYPE_VOLATILE_SIG_ATOMIC_T)|g' \
-e 's|@''HAVE_SIGHANDLER_T''@|$(HAVE_SIGHANDLER_T)|g' \
-e 's|@''REPLACE_PTHREAD_SIGMASK''@|$(REPLACE_PTHREAD_SIGMASK)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
< $(srcdir)/signal.in.h; \
} > $@-t && \
mv $@-t $@
# We need the following in order to create <stdarg.h> when the system
# doesn't have one that works with the given compiler.
@GL_GENERATE_STDARG_H_TRUE@stdarg.h: stdarg.in.h $(top_builddir)/config.status

5
autogen/aclocal.m4 vendored
View File

@ -1001,10 +1001,13 @@ m4_include([m4/lstat.m4])
m4_include([m4/md5.m4])
m4_include([m4/mktime.m4])
m4_include([m4/multiarch.m4])
m4_include([m4/pthread_sigmask.m4])
m4_include([m4/readlink.m4])
m4_include([m4/sha1.m4])
m4_include([m4/sha256.m4])
m4_include([m4/sha512.m4])
m4_include([m4/signal_h.m4])
m4_include([m4/signalblocking.m4])
m4_include([m4/socklen.m4])
m4_include([m4/ssize_t.m4])
m4_include([m4/st_dm_mode.m4])
@ -1016,6 +1019,8 @@ m4_include([m4/stdint.m4])
m4_include([m4/stdio_h.m4])
m4_include([m4/stdlib_h.m4])
m4_include([m4/strftime.m4])
m4_include([m4/strtoimax.m4])
m4_include([m4/strtoll.m4])
m4_include([m4/strtoull.m4])
m4_include([m4/strtoumax.m4])
m4_include([m4/symlink.m4])

View File

@ -160,6 +160,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
don't. */
#undef HAVE_DECL_STRMODE
/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you
don't. */
#undef HAVE_DECL_STRTOIMAX
/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
don't. */
#undef HAVE_DECL_STRTOLL
/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
don't. */
#undef HAVE_DECL_STRTOULL
@ -592,6 +600,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the <pthread.h> header file. */
#undef HAVE_PTHREAD_H
/* Define to 1 if you have the `pthread_sigmask' function. */
#undef HAVE_PTHREAD_SIGMASK
/* Define to 1 if you have the <pty.h> header file. */
#undef HAVE_PTY_H
@ -661,6 +672,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if 'wint_t' is a signed integer type. */
#undef HAVE_SIGNED_WINT_T
/* Define to 1 if the system has the type `sigset_t'. */
#undef HAVE_SIGSET_T
/* Define to 1 if you have sound support. */
#undef HAVE_SOUND
@ -697,6 +711,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `strsignal' function. */
#undef HAVE_STRSIGNAL
/* Define to 1 if you have the `strtoimax' function. */
#undef HAVE_STRTOIMAX
/* Define to 1 if you have the `strtoll' function. */
#undef HAVE_STRTOLL
/* Define to 1 if you have the `strtoull' function. */
#undef HAVE_STRTOULL

4174
autogen/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,30 @@
2011-07-10 Chong Yidong <cyd@stupidchicken.com>
* misc.texi (Amusements): Don't mention Yow; it's crippled.
* modes.texi: Rename from major.texi.
(Modes): New node. Make Major Modes and Minor Modes subsections
of this. All callers changed.
* custom.texi (Minor Modes): Move to modes.texi.
2011-07-10 Chong Yidong <cyd@stupidchicken.com>
* custom.texi (Syntax): Node deleted.
* help.texi (Help Summary):
* major.texi (Major Modes):
* programs.texi (Parentheses):
* search.texi (Regexp Backslash, Regexp Backslash)
(Regexp Backslash):
* text.texi (Words): Callers changed.
* text.texi (Refill, Longlines): Delete nodes.
* ack.texi (Acknowledgments): Longlines removed from manual.
* emacs.texi (Top): Update node listing.
2011-07-09 Glenn Morris <rgm@gnu.org>
* fortran-xtra.texi (Fortran): Update handled extensions.

View File

@ -84,7 +84,7 @@ EMACSSOURCES= \
${srcdir}/windows.texi \
${srcdir}/frames.texi \
${srcdir}/mule.texi \
${srcdir}/major.texi \
${srcdir}/modes.texi \
${srcdir}/indent.texi \
${srcdir}/text.texi \
${srcdir}/programs.texi \

View File

@ -190,9 +190,7 @@ prior to Emacs 23 for Mac OS.
@item
Chong Yidong was the Emacs co-maintainer for Emacs 23. He made many
improvements to the Emacs display engine; and, together with Kai
Großjohann and Alex Schroeder, wrote @file{longlines.el}, a minor
mode for wrapping long lines.
improvements to the Emacs display engine.
@item
James Clark wrote SGML mode, a mode for editing SGML documents; and
@ -689,14 +687,12 @@ the current window on which point is; @file{cap-words.el}, a minor mode
for motion in ``CapitalizedWordIdentifiers''; @file{latin1-disp.el}, a
package that lets you display ISO 8859 characters on Latin-1 terminals
by setting up appropriate display tables; @file{python.el}, a major mode
for the Python programming language; @file{refill.el}, a mode for
automatic paragraph refilling, akin to typical word processors;
@file{smiley.el}, a facility for displaying smiley faces;
@file{sym-comp.el}, a library for performing mode-dependent symbol
completion; @file{benchmark.el} for timing code execution; and
@file{tool-bar.el}, a mode to control the display of the Emacs tool bar.
With Riccardo Murri he wrote @file{vc-bzr.el}, support for the Bazaar
version control system.
for the Python programming language; @file{smiley.el}, a facility for
displaying smiley faces; @file{sym-comp.el}, a library for performing
mode-dependent symbol completion; @file{benchmark.el} for timing code
execution; and @file{tool-bar.el}, a mode to control the display of
the Emacs tool bar. With Riccardo Murri he wrote @file{vc-bzr.el},
support for the Bazaar version control system.
@item
Eric Ludlam wrote the Speedbar package; @file{checkdoc.el}, for checking

View File

@ -23,169 +23,16 @@ Reference Manual}.
@end ifnottex
@menu
* Minor Modes:: Each minor mode is a feature you can turn on
independently of any others.
* Easy Customization:: Convenient way to browse and change settings.
* Variables:: Many Emacs commands examine Emacs variables
to decide what to do; by setting variables,
you can control their functioning.
* Key Bindings:: The keymaps say what command each key runs.
By changing them, you can "redefine keys".
* Syntax:: The syntax table controls how words and
expressions are parsed.
* Init File:: How to write common customizations in the
@file{.emacs} file.
@end menu
@node Minor Modes
@section Minor Modes
@cindex minor modes
@cindex mode, minor
Minor modes are optional features which you can turn on or off. For
example, Auto Fill mode is a minor mode in which @key{SPC} breaks
lines between words as you type. Minor modes are independent of one
another and of the selected major mode. Most minor modes say in the
mode line when they are enabled; for example, @samp{Fill} in the mode
line means that Auto Fill mode is enabled.
Each minor mode is associated with a command, called the @dfn{mode
command}, which turns it on or off. The name of this command consists
of the name of the minor mode, followed by @samp{-mode}; for instance,
the mode command for Auto Fill mode is @code{auto-fill-mode}. Calling
the minor mode command with no prefix argument @dfn{toggles} the mode,
turning it on if it was off, and off if it was on. A positive
argument always turns the mode on, and a zero or negative argument
always turns it off. Mode commands are usually invoked with
@kbd{M-x}, but you can bind keys to them if you wish (@pxref{Key
Bindings}).
Most minor modes also have a @dfn{mode variable}, with the same name
as the mode command. Its value is non-@code{nil} if the mode is
enabled, and @code{nil} if it is disabled. In some minor modes---but
not all---the value of the variable alone determines whether the mode
is active: the mode command works simply by setting the variable, and
changing the value of the variable has the same effect as calling the
mode command. Because not all minor modes work this way, we recommend
that you avoid changing the mode variables directly; use the mode
commands instead.
Some minor modes are @dfn{buffer-local}: they apply only to the
current buffer, so you can enable the mode in certain buffers and not
others. Other minor modes are @dfn{global}: while enabled, they
affect everything you do in the Emacs session, in all buffers. Some
global minor modes are enabled by default.
The following is a list of some buffer-local minor modes:
@itemize @bullet
@item
Abbrev mode automatically expands text based on pre-defined
abbreviation definitions. @xref{Abbrevs}.
@item
Auto Fill mode inserts newlines as you type to prevent lines from
becoming too long. @xref{Filling}.
@item
Auto Save mode saves the buffer contents periodically to reduce the
amount of work you can lose in case of a crash. @xref{Auto Save}.
@item
Enriched mode enables editing and saving of formatted text.
@xref{Formatted Text}.
@item
Flyspell mode automatically highlights misspelled words.
@xref{Spelling}.
@item
Font-Lock mode automatically highlights certain textual units found in
programs. It is enabled globally by default, but you can disable it
in individual buffers. @xref{Faces}.
@findex linum-mode
@cindex Linum mode
@item
Linum mode displays each line's line number in the window's left
margin. Its mode command is @code{linum-mode}.
@item
Outline minor mode provides similar facilities to the major mode
called Outline mode. @xref{Outline Mode}.
@cindex Overwrite mode
@cindex mode, Overwrite
@findex overwrite-mode
@kindex INSERT
@item
Overwrite mode causes ordinary printing characters to replace existing
text instead of shoving it to the right. For example, if point is in
front of the @samp{B} in @samp{FOOBAR}, then in Overwrite mode typing
a @kbd{G} changes it to @samp{FOOGAR}, instead of producing
@samp{FOOGBAR} as usual. In Overwrite mode, the command @kbd{C-q}
inserts the next character whatever it may be, even if it is a
digit---this gives you a way to insert a character instead of
replacing an existing character. The mode command,
@code{overwrite-mode}, is bound to the @key{Insert} key.
@findex binary-overwrite-mode
@item
Binary Overwrite mode is a variant of Overwrite mode for editing
binary files; it treats newlines and tabs like other characters, so
that they overwrite other characters and can be overwritten by them.
In Binary Overwrite mode, digits after @kbd{C-q} specify an octal
character code, as usual.
@item
Visual Line mode performs ``word wrapping'', causing long lines to be
wrapped at word boundaries. @xref{Visual Line Mode}.
@end itemize
Here are some useful global minor modes. Since Line Number mode and
Transient Mark mode can be enabled or disabled just by setting the
value of the minor mode variable, you @emph{can} set them differently
for particular buffers, by explicitly making the corresponding
variable local in those buffers. @xref{Locals}.
@itemize @bullet
@item
Column Number mode enables display of the current column number in the
mode line. @xref{Mode Line}.
@item
Delete Selection mode causes text insertion to first delete the text
in the region, if the region is active. @xref{Using Region}.
@item
Icomplete mode displays an indication of available completions when
you are in the minibuffer and completion is active. @xref{Completion
Options}.
@item
Line Number mode enables display of the current line number in the
mode line. It is enabled by default. @xref{Mode Line}.
@item
Menu Bar mode gives each frame a menu bar. It is enabled by default.
@xref{Menu Bars}.
@item
Scroll Bar mode gives each window a scroll bar. It is enabled by
default, but the scroll bar is only displayed on graphical terminals.
@xref{Scroll Bars}.
@item
Tool Bar mode gives each frame a tool bar. It is enabled by default,
but the tool bar is only displayed on graphical terminals. @xref{Tool
Bars}.
@item
Transient Mark mode highlights the region, and makes many Emacs
commands operate on the region when the mark is active. It is enabled
by default. @xref{Mark}.
@end itemize
@node Easy Customization
@section Easy Customization Interface
@ -2085,36 +1932,6 @@ invoke it; disabling also applies if the command is invoked using
@kbd{M-x}. However, disabling a command has no effect on calling it
as a function from Lisp programs.
@node Syntax
@section The Syntax Table
@cindex syntax table
All the Emacs commands which parse words or balance parentheses are
controlled by the @dfn{syntax table}. The syntax table says which
characters are opening delimiters, which are parts of words, which are
string quotes, and so on. It does this by assigning each character to
one of fifteen-odd @dfn{syntax classes}. In some cases it specifies
some additional information also.
Each major mode has its own syntax table (though related major modes
sometimes share one syntax table), which it installs in each buffer
that uses the mode. The syntax table installed in the current buffer
is the one that all commands use, so we call it ``the'' syntax table.
@kindex C-h s
@findex describe-syntax
To display a description of the contents of the current syntax
table, type @kbd{C-h s} (@code{describe-syntax}). The description of
each character includes the string you would have to give to
@code{modify-syntax-entry} to set up that character's current syntax,
starting with the character which designates its syntax class, plus
some English text to explain its meaning.
A syntax table is actually a Lisp object, a char-table, whose
elements are cons cells. For full information on the syntax table,
see @ref{Syntax Tables,, Syntax Tables, elisp, The Emacs Lisp
Reference Manual}.
@node Init File
@section The Init File, @file{~/.emacs}
@cindex init file

View File

@ -168,15 +168,13 @@ Important Text-Changing Commands
* Killing:: Killing (cutting) text.
* Yanking:: Recovering killed text. Moving text. (Pasting.)
* Accumulating Text:: Other ways of copying text.
* Rectangles:: Operating on the text inside a rectangle on the screen.
* CUA Bindings:: Using @kbd{C-x}, @kbd{C-c}, @kbd{C-v} for copy
and paste, with enhanced rectangle support.
* Rectangles:: Operating on text in rectangular areas.
* CUA Bindings:: Using @kbd{C-x}, @kbd{C-c}, @kbd{C-v} to kill and yank.
* Registers:: Saving a text string or a location in the buffer.
* Display:: Controlling what text is displayed.
* Search:: Finding or replacing occurrences of a string.
* Fixit:: Commands especially useful for fixing typos.
* Keyboard Macros:: A keyboard macro records a sequence of
keystrokes to be replayed with a single command.
* Keyboard Macros:: Recording a sequence of keystrokes to be replayed.
Major Structures of Emacs
* Files:: All about handling files.
@ -186,13 +184,13 @@ Major Structures of Emacs
* International:: Using non-@acronym{ASCII} character sets.
Advanced Features
* Major Modes:: Text mode vs. Lisp mode vs. C mode...
* Modes:: Major and minor modes alter Emacs' basic behavior.
* Indentation:: Editing the white space at the beginnings of lines.
* Text:: Commands and modes for editing English.
* Programs:: Commands and modes for editing programs.
* Building:: Compiling, running and debugging programs.
* Maintaining:: Features for maintaining large programs.
* Abbrevs:: How to define text abbreviations to reduce
* Abbrevs:: Defining text abbreviations to reduce
the number of characters you must type.
@c AFAICS, the tex stuff generates its own index and does not use this one.
@ifnottex
@ -204,9 +202,9 @@ Advanced Features
* Dired:: You can ``edit'' a directory to manage files in it.
* Calendar/Diary:: The calendar and diary facilities.
* Document View:: Viewing PDF, PS and DVI files.
* Gnus:: How to read netnews with Emacs.
* Gnus:: A flexible mail and news reader.
* Shell:: Executing shell commands from Emacs.
* Emacs Server:: Using Emacs as an editing server for @code{mail}, etc.
* Emacs Server:: Using Emacs as an editing server.
* Printing:: Printing hardcopies of buffers or regions.
* Sorting:: Sorting lines, paragraphs or pages within Emacs.
* Narrowing:: Restricting display and editing to a portion
@ -551,9 +549,12 @@ International Character Set Support
to use without multibyte characters.
* Charsets:: How Emacs groups its internal character codes.
Major Modes
Modes
* Choosing Modes:: How major modes are specified or chosen.
* Major Modes:: Text mode vs. Lisp mode vs. C mode...
* Minor Modes:: Each minor mode is a feature you can turn on
independently of any others.
* Choosing Modes:: How modes are chosen when visiting files.
Indentation
@ -585,8 +586,6 @@ Filling Text
* Fill Prefix:: Filling paragraphs that are indented
or in a comment, etc.
* Adaptive Fill:: How Emacs can determine the fill prefix automatically.
* Refill:: Keeping paragraphs filled.
* Longlines:: Editing text with very long lines.
Outline Mode
@ -1062,16 +1061,12 @@ Hyperlinking and Navigation Features
Customization
* Minor Modes:: Each minor mode is a feature you can turn on
independently of any others.
* Easy Customization:: Convenient way to browse and change settings.
* Variables:: Many Emacs commands examine Emacs variables
to decide what to do; by setting variables,
you can control their functioning.
* Key Bindings:: The keymaps say what command each key runs.
By changing them, you can "redefine keys".
* Syntax:: The syntax table controls how words and
expressions are parsed.
* Key Bindings:: Keymaps say what command each key runs.
By changing them, you can ``redefine'' keys.
* Init File:: How to write common customizations in the
@file{.emacs} file.
@ -1491,7 +1486,7 @@ Lisp programming.
@include windows.texi
@include frames.texi
@include mule.texi
@include major.texi
@include modes.texi
@include indent.texi
@include text.texi
@c Includes fortran-xtra.

View File

@ -962,7 +962,7 @@ special Emacs commands for moving over and operating on paragraphs.
@item Parsing
We say that certain Emacs commands parse words or expressions in the
text being edited. Really, all they know how to do is find the other
end of a word or expression. @xref{Syntax}.
end of a word or expression.
@item Point
Point is the place in the buffer at which insertion and deletion
@ -1212,7 +1212,8 @@ See `font lock.'
@item Syntax Table
The syntax table tells Emacs which characters are part of a word,
which characters balance each other like parentheses, etc.
@xref{Syntax}.
@xref{Syntax Tables,, Syntax Tables, elisp, The Emacs Lisp Reference
Manual}.
@item Super
Super is the name of a modifier bit that a keyboard input character may

View File

@ -139,8 +139,11 @@ command.
@item C-h r
Display the Emacs manual in Info (@code{info-emacs-manual}).
@item C-h s
Display the current contents of the syntax table, with an explanation of
what they mean (@code{describe-syntax}). @xref{Syntax}.
Display the current contents of the @dfn{syntax table}, with an
explanation of what they mean (@code{describe-syntax}). The syntax
table says which characters are opening delimiters, which are parts of
words, which are string quotes, and so on. @xref{Syntax Tables,,
Syntax Tables, elisp, The Emacs Lisp Reference Manual}, for details.
@item C-h t
Enter the Emacs interactive tutorial (@code{help-with-tutorial}).
@item C-h v @var{var} @key{RET}
@ -583,7 +586,8 @@ bindings now in effect: first the local bindings of the current minor
modes, then the local bindings defined by the current major mode, and
finally the global bindings (@pxref{Key Bindings}). @kbd{C-h s}
displays the contents of the syntax table, with explanations of each
character's syntax (@pxref{Syntax}).
character's syntax (@pxref{Syntax Tables,, Syntax Tables, elisp, The
Emacs Lisp Reference Manual}).
You can get a list of subcommands for a particular prefix key by
typing @kbd{C-h} after the prefix key. (There are a few prefix keys

View File

@ -2,7 +2,7 @@
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Indentation, Text, Major Modes, Top
@node Indentation, Text, Modes, Top
@chapter Indentation
@cindex indentation
@cindex tabs

View File

@ -19,7 +19,7 @@ units.
* Yanking:: Commands that insert text.
* Accumulating Text:: Other methods to add text to the buffer.
* Rectangles:: Operating on text in rectangular areas.
* CUA Bindings:: Using C-x/C-c/C-v to kill and yank.
* CUA Bindings:: Using @kbd{C-x}/@kbd{C-c}/@kbd{C-v} to kill and yank.
@end menu
@node Deletion and Killing

View File

@ -1,237 +0,0 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Major Modes, Indentation, International, Top
@chapter Major Modes
@cindex major modes
@cindex mode, major
@kindex TAB @r{(and major modes)}
@kindex DEL @r{(and major modes)}
@kindex C-j @r{(and major modes)}
Emacs provides many alternative @dfn{major modes}, each of which
customizes Emacs for editing text of a particular sort. The major modes
are mutually exclusive, and each buffer has one major mode at any time.
The mode line normally shows the name of the current major mode, in
parentheses (@pxref{Mode Line}).
The least specialized major mode is called @dfn{Fundamental mode}.
This mode has no mode-specific redefinitions or variable settings, so
that each Emacs command behaves in its most general manner, and each
user option variable is in its default state. For editing text of a
specific type that Emacs knows about, such as Lisp code or English
text, you should switch to the appropriate major mode, such as Lisp
mode or Text mode.
Selecting a major mode changes the meanings of a few keys to become
more specifically adapted to the language being edited. The ones that
are changed frequently are @key{TAB}, @key{DEL}, and @kbd{C-j}. The
prefix key @kbd{C-c} normally contains mode-specific commands. In
addition, the commands which handle comments use the mode to determine
how comments are to be delimited. Many major modes redefine the
syntactical properties of characters appearing in the buffer.
@xref{Syntax}.
The major modes fall into three major groups. The first group
contains modes for normal text, either plain or with mark-up. It
includes Text mode, HTML mode, SGML mode, @TeX{} mode and Outline
mode. The second group contains modes for specific programming
languages. These include Lisp mode (which has several variants), C
mode, Fortran mode, and others. The remaining major modes are not
intended for use on users' files; they are used in buffers created for
specific purposes by Emacs, such as Dired mode for buffers made by
Dired (@pxref{Dired}), Message mode for buffers made by @kbd{C-x m}
(@pxref{Sending Mail}), and Shell mode for buffers used for
communicating with an inferior shell process (@pxref{Interactive
Shell}).
Most programming-language major modes specify that only blank lines
separate paragraphs. This is to make the paragraph commands useful.
(@xref{Paragraphs}.) They also cause Auto Fill mode to use the
definition of @key{TAB} to indent the new lines it creates. This is
because most lines in a program are usually indented
(@pxref{Indentation}).
@menu
* Choosing Modes:: How major modes are specified or chosen.
@end menu
@node Choosing Modes,,Major Modes,Major Modes
@section How Major Modes are Chosen
@cindex choosing a major mode
You can select a major mode explicitly for the current buffer, but
most of the time Emacs determines which mode to use based on the file
name or on special text in the file.
To explicitly select a new major, you use an @kbd{M-x} command.
Take the name of a major mode and add @code{-mode} to get the name of
the command to select that mode. Thus, you can enter Lisp mode by
executing @kbd{M-x lisp-mode}.
@vindex auto-mode-alist
When you visit a file, Emacs usually chooses the right major mode
automatically. Normally, it makes the choice based on the file
name---for example, files whose names end in @samp{.c} are normally
edited in C mode---but sometimes it chooses the major mode based on
the contents of the file. Here is the exact procedure:
First, Emacs checks whether the file contains a file-local variable
that specifies the major mode. If so, it uses that major mode,
ignoring all other criteria. @xref{File Variables}. There are
several methods to specify a major mode using a file-local variable;
the simplest is to put the mode name in the first nonblank line,
preceded and followed by @samp{-*-}. Other text may appear on the
line as well. For example,
@example
; -*-Lisp-*-
@end example
@noindent
tells Emacs to use Lisp mode. Note how the semicolon is used to make
Lisp treat this line as a comment. Alternatively, you could write
@example
; -*- mode: Lisp;-*-
@end example
@noindent
The latter format allows you to specify local variables as well, like
this:
@example
; -*- mode: Lisp; tab-width: 4; -*-
@end example
@vindex interpreter-mode-alist
Second, Emacs checks whether the file's contents begin with
@samp{#!}. If so, that indicates that the file can serve as an
executable shell command, which works by running an interpreter named
on the file's first line (the rest of the file is used as input to the
interpreter). Therefore, Emacs tries to use the interpreter name to
choose a mode. For instance, a file that begins with
@samp{#!/usr/bin/perl} is opened in Perl mode. The variable
@code{interpreter-mode-alist} specifies the correspondence between
interpreter program names and major modes.
When the first line starts with @samp{#!}, you usually cannot use
the @samp{-*-} feature on the first line, because the system would get
confused when running the interpreter. So Emacs looks for @samp{-*-}
on the second line in such files as well as on the first line. The
same is true for man pages which start with the magic string
@samp{'\"} to specify a list of troff preprocessors.
@vindex magic-mode-alist
Third, Emacs tries to determine the major mode by looking at the
text at the start of the buffer, based on the variable
@code{magic-mode-alist}. By default, this variable is @code{nil} (an
empty list), so Emacs skips this step; however, you can customize it
in your init file (@pxref{Init File}). The value should be a list of
elements of the form
@example
(@var{regexp} . @var{mode-function})
@end example
@noindent
where @var{regexp} is a regular expression (@pxref{Regexps}), and
@var{mode-function} is a Lisp function that toggles a major mode. If
the text at the beginning of the file matches @var{regexp}, Emacs
chooses the major mode specified by @var{mode-function}.
Alternatively, an element of @code{magic-mode-alist} may have the form
@example
(@var{match-function} . @var{mode-function})
@end example
@noindent
where @var{match-function} is a Lisp function that is called at the
beginning of the buffer; if the function returns non-@code{nil}, Emacs
set the major mode wit @var{mode-function}.
Fourth---if Emacs still hasn't found a suitable major mode---it
looks at the file's name. The correspondence between file names and
major modes is controlled by the variable @code{auto-mode-alist}. Its
value is a list in which each element has this form,
@example
(@var{regexp} . @var{mode-function})
@end example
@noindent
or this form,
@example
(@var{regexp} @var{mode-function} @var{flag})
@end example
@noindent
For example, one element normally found in the list has the form
@code{(@t{"\\.c\\'"} . c-mode)}, and it is responsible for selecting C
mode for files whose names end in @file{.c}. (Note that @samp{\\} is
needed in Lisp syntax to include a @samp{\} in the string, which must
be used to suppress the special meaning of @samp{.} in regexps.) If
the element has the form @code{(@var{regexp} @var{mode-function}
@var{flag})} and @var{flag} is non-@code{nil}, then after calling
@var{mode-function}, Emacs discards the suffix that matched
@var{regexp} and searches the list again for another match.
@vindex auto-mode-case-fold
On systems with case-insensitive file names, such as Microsoft
Windows, Emacs performs a single case-insensitive search through
@code{auto-mode-alist}. On other systems, Emacs normally performs a
single case-sensitive search through the alist. However, if you
change the variable @code{auto-mode-case-fold} to @code{t}, Emacs
performs a second case-insensitive search if the first search fails.
@vindex magic-fallback-mode-alist
Finally, if Emacs @emph{still} hasn't found a major mode to use, it
compares the text at the start of the buffer to the variable
@code{magic-fallback-mode-alist}. This variable works like
@code{magic-mode-alist}, described above, except that is consulted
only after @code{auto-mode-alist}. By default,
@code{magic-fallback-mode-alist} contains forms that check for image
files, HTML/XML/SGML files, and Postscript files.
@vindex major-mode
Once a major mode is chosen, Emacs sets the value of the variable
@code{major-mode} to the symbol for that major mode (e.g.,
@code{text-mode} for Text mode). This is a per-buffer variable
(@pxref{Locals}); its buffer-local value is set automatically, and you
should not change it yourself.
The default value of @code{major-mode} determines the major mode to
use for files that do not specify a major mode, and for new buffers
created with @kbd{C-x b}. Normally, this default value is the symbol
@code{fundamental-mode}, which specifies Fundamental mode. You can
change it via the Customization interface (@pxref{Easy
Customization}), or by adding a line like this to your init file
(@pxref{Init File}):
@smallexample
(setq-default major-mode 'text-mode)
@end smallexample
@noindent
If the default value of @code{major-mode} is @code{nil}, the major
mode is taken from the previously current buffer.
@findex normal-mode
If you have changed the major mode of a buffer, you can return to
the major mode Emacs would have chosen automatically, by typing
@kbd{M-x normal-mode}. This is the same function that
@code{find-file} calls to choose the major mode. It also processes
the file's @samp{-*-} line or local variables list (if any).
@xref{File Variables}.
@vindex change-major-mode-with-file-name
The commands @kbd{C-x C-w} and @code{set-visited-file-name} change to
a new major mode if the new file name implies a mode (@pxref{Saving}).
(@kbd{C-x C-s} does this too, if the buffer wasn't visiting a file.)
However, this does not happen if the buffer contents specify a major
mode, and certain ``special'' major modes do not allow the mode to
change. You can turn off this mode-changing feature by setting
@code{change-major-mode-with-file-name} to @code{nil}.

View File

@ -2794,7 +2794,6 @@ userenced and properbose. Have fun. Your buggestions are welcome.
@section Other Amusements
@cindex boredom
@findex hanoi
@findex yow
@findex gomoku
@cindex tower of Hanoi
@ -2882,9 +2881,6 @@ Likewise, @kbd{M-x snake} provides an implementation of Snake.
When you are frustrated, try the famous Eliza program. Just do
@kbd{M-x doctor}. End each input by typing @key{RET} twice.
@cindex Zippy
When you are feeling strange, type @kbd{M-x yow}.
@findex zone
The command @kbd{M-x zone} plays games with the display when Emacs is
idle.

410
doc/emacs/modes.texi Normal file
View File

@ -0,0 +1,410 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Modes, Indentation, International, Top
@chapter Editing Modes
Emacs contains many @dfn{editing modes}, each of which alters its
basic behavior in useful ways. These are divided into @dfn{major
modes} and @dfn{minor modes}.
Major modes provide specialized facilities for working on a
particular file type, such as a C source file (@pxref{Programs}), or a
particular type of non-file buffer, such as a shell buffer
(@pxref{Shell}). Major modes are mutually exclusive; each buffer has
one and only one major mode at any time.
Minor modes are optional features which you can turn on or off, not
necessarily specific to a type of file or buffer. For example, Auto
Fill mode is a minor mode in which @key{SPC} breaks lines between
words as you type (@pxref{Auto Fill}). Minor modes are independent of
one another, and of the selected major mode.
@menu
* Major Modes:: Text mode vs. Lisp mode vs. C mode...
* Minor Modes:: Each minor mode is a feature you can turn on
independently of any others.
* Choosing Modes:: How modes are chosen when visiting files.
@end menu
@node Major Modes
@section Major Modes
@cindex major modes
@cindex mode, major
@kindex TAB @r{(and major modes)}
@kindex DEL @r{(and major modes)}
@kindex C-j @r{(and major modes)}
Every buffer possesses a major mode, which determines the editing
behavior of Emacs while that buffer is current. The mode line
normally shows the name of the current major mode, in parentheses.
@xref{Mode Line}.
Usually, the major mode is automatically set by Emacs, when you
first visit a file or create a buffer. @xref{Choosing Modes}. You
can explicitly select a new major mode by using an @kbd{M-x} command.
Take the name of the mode and add @code{-mode} to get the name of the
command to select that mode. Thus, you can enter Lisp mode with
@kbd{M-x lisp-mode}.
The least specialized major mode is called @dfn{Fundamental mode}.
This mode has no mode-specific redefinitions or variable settings, so
that each Emacs command behaves in its most general manner, and each
user option variable is in its default state.
For editing text of a specific type that Emacs knows about, such as
Lisp code or English text, you typically use a more specialized major
mode, such as Lisp mode or Text mode. Such major modes change the
meanings of some keys to become more specifically adapted to the
language being edited. The ones that are commonly changed are
@key{TAB}, @key{DEL}, and @kbd{C-j}. The prefix key @kbd{C-c}
normally contains mode-specific commands. In addition, the commands
which handle comments use the mode to determine how comments are to be
delimited. Many major modes redefine the syntactical properties of
characters appearing in the buffer.
The major modes fall into three major groups. The first group
contains modes for normal text, either plain or with mark-up. It
includes Text mode, HTML mode, SGML mode, @TeX{} mode and Outline
mode. The second group contains modes for specific programming
languages. These include Lisp mode (which has several variants), C
mode, Fortran mode, and others. The remaining major modes are not
intended for use on users' files; they are used in buffers created for
specific purposes by Emacs, such as Dired mode for buffers made by
Dired (@pxref{Dired}), Message mode for buffers made by @kbd{C-x m}
(@pxref{Sending Mail}), and Shell mode for buffers used for
communicating with an inferior shell process (@pxref{Interactive
Shell}).
Most programming-language major modes specify that only blank lines
separate paragraphs. This is to make the paragraph commands useful.
(@xref{Paragraphs}.) They also cause Auto Fill mode to use the
definition of @key{TAB} to indent the new lines it creates. This is
because most lines in a program are usually indented
(@pxref{Indentation}).
@node Minor Modes
@section Minor Modes
@cindex minor modes
@cindex mode, minor
A minor mode is an optional editing modes that alters the behavior
of Emacs in some well-defined way. Unlike major modes, any number of
minor modes can be in effect at any time. Some minor modes are
@dfn{buffer-local}: they apply only to the current buffer, so you can
enable the mode in certain buffers and not others. Other minor modes
are @dfn{global}: while enabled, they affect everything you do in the
Emacs session, in all buffers. Some global minor modes are enabled by
default.
Most minor modes say in the mode line when they are enabled, just
after the major mode indicator. For example, @samp{Fill} in the mode
line means that Auto Fill mode is enabled. @xref{Mode Line}.
Each minor mode is associated with a command, called the @dfn{mode
command}, which turns it on or off. The name of this command consists
of the name of the minor mode, followed by @samp{-mode}; for instance,
the mode command for Auto Fill mode is @code{auto-fill-mode}. Calling
the minor mode command with no prefix argument @dfn{toggles} the mode,
turning it on if it was off, and off if it was on. A positive
argument always turns the mode on, and a zero or negative argument
always turns it off. Mode commands are usually invoked with
@kbd{M-x}, but you can bind keys to them if you wish (@pxref{Key
Bindings}).
Most minor modes also have a @dfn{mode variable}, with the same name
as the mode command. Its value is non-@code{nil} if the mode is
enabled, and @code{nil} if it is disabled. In some minor modes---but
not all---the value of the variable alone determines whether the mode
is active: the mode command works simply by setting the variable, and
changing the value of the variable has the same effect as calling the
mode command. Because not all minor modes work this way, we recommend
that you avoid changing the mode variables directly; use the mode
commands instead.
The following is a list of some buffer-local minor modes:
@itemize @bullet
@item
Abbrev mode automatically expands text based on pre-defined
abbreviation definitions. @xref{Abbrevs}.
@item
Auto Fill mode inserts newlines as you type to prevent lines from
becoming too long. @xref{Filling}.
@item
Auto Save mode saves the buffer contents periodically to reduce the
amount of work you can lose in case of a crash. @xref{Auto Save}.
@item
Enriched mode enables editing and saving of formatted text.
@xref{Formatted Text}.
@item
Flyspell mode automatically highlights misspelled words.
@xref{Spelling}.
@item
Font-Lock mode automatically highlights certain textual units found in
programs. It is enabled globally by default, but you can disable it
in individual buffers. @xref{Faces}.
@findex linum-mode
@cindex Linum mode
@item
Linum mode displays each line's line number in the window's left
margin. Its mode command is @code{linum-mode}.
@item
Outline minor mode provides similar facilities to the major mode
called Outline mode. @xref{Outline Mode}.
@cindex Overwrite mode
@cindex mode, Overwrite
@findex overwrite-mode
@kindex INSERT
@item
Overwrite mode causes ordinary printing characters to replace existing
text instead of shoving it to the right. For example, if point is in
front of the @samp{B} in @samp{FOOBAR}, then in Overwrite mode typing
a @kbd{G} changes it to @samp{FOOGAR}, instead of producing
@samp{FOOGBAR} as usual. In Overwrite mode, the command @kbd{C-q}
inserts the next character whatever it may be, even if it is a
digit---this gives you a way to insert a character instead of
replacing an existing character. The mode command,
@code{overwrite-mode}, is bound to the @key{Insert} key.
@findex binary-overwrite-mode
@item
Binary Overwrite mode is a variant of Overwrite mode for editing
binary files; it treats newlines and tabs like other characters, so
that they overwrite other characters and can be overwritten by them.
In Binary Overwrite mode, digits after @kbd{C-q} specify an octal
character code, as usual.
@item
Visual Line mode performs ``word wrapping'', causing long lines to be
wrapped at word boundaries. @xref{Visual Line Mode}.
@end itemize
Here are some useful global minor modes. Since Line Number mode and
Transient Mark mode can be enabled or disabled just by setting the
value of the minor mode variable, you @emph{can} set them differently
for particular buffers, by explicitly making the corresponding
variable local in those buffers. @xref{Locals}.
@itemize @bullet
@item
Column Number mode enables display of the current column number in the
mode line. @xref{Mode Line}.
@item
Delete Selection mode causes text insertion to first delete the text
in the region, if the region is active. @xref{Using Region}.
@item
Icomplete mode displays an indication of available completions when
you are in the minibuffer and completion is active. @xref{Completion
Options}.
@item
Line Number mode enables display of the current line number in the
mode line. It is enabled by default. @xref{Mode Line}.
@item
Menu Bar mode gives each frame a menu bar. It is enabled by default.
@xref{Menu Bars}.
@item
Scroll Bar mode gives each window a scroll bar. It is enabled by
default, but the scroll bar is only displayed on graphical terminals.
@xref{Scroll Bars}.
@item
Tool Bar mode gives each frame a tool bar. It is enabled by default,
but the tool bar is only displayed on graphical terminals. @xref{Tool
Bars}.
@item
Transient Mark mode highlights the region, and makes many Emacs
commands operate on the region when the mark is active. It is enabled
by default. @xref{Mark}.
@end itemize
@node Choosing Modes
@section Choosing File Modes
@cindex choosing a major mode
@cindex choosing a minor mode
@vindex auto-mode-alist
When you visit a file, Emacs chooses a major mode automatically.
Normally, it makes the choice based on the file name---for example,
files whose names end in @samp{.c} are normally edited in C mode---but
sometimes it chooses the major mode based on special text in the file.
This special text can also be used to enable buffer-local minor modes.
Here is the exact procedure:
First, Emacs checks whether the file contains file-local mode
variables. @xref{File Variables}. If there is a file-local variable
that specifies a major mode, then Emacs uses that major mode, ignoring
all other criteria. There are several methods to specify a major mode
using a file-local variable; the simplest is to put the mode name in
the first nonblank line, preceded and followed by @samp{-*-}. Other
text may appear on the line as well. For example,
@example
; -*-Lisp-*-
@end example
@noindent
tells Emacs to use Lisp mode. Note how the semicolon is used to make
Lisp treat this line as a comment. Alternatively, you could write
@example
; -*- mode: Lisp;-*-
@end example
@noindent
The latter format allows you to specify local variables as well, like
this:
@example
; -*- mode: Lisp; tab-width: 4; -*-
@end example
If a file variable specifies a buffer-local minor mode, Emacs
enables that minor mode in the buffer.
@vindex interpreter-mode-alist
Second, if there is no file variable specifying a major mode, Emacs
checks whether the file's contents begin with @samp{#!}. If so, that
indicates that the file can serve as an executable shell command,
which works by running an interpreter named on the file's first line
(the rest of the file is used as input to the interpreter).
Therefore, Emacs tries to use the interpreter name to choose a mode.
For instance, a file that begins with @samp{#!/usr/bin/perl} is opened
in Perl mode. The variable @code{interpreter-mode-alist} specifies
the correspondence between interpreter program names and major modes.
When the first line starts with @samp{#!}, you usually cannot use
the @samp{-*-} feature on the first line, because the system would get
confused when running the interpreter. So Emacs looks for @samp{-*-}
on the second line in such files as well as on the first line. The
same is true for man pages which start with the magic string
@samp{'\"} to specify a list of troff preprocessors.
@vindex magic-mode-alist
Third, Emacs tries to determine the major mode by looking at the
text at the start of the buffer, based on the variable
@code{magic-mode-alist}. By default, this variable is @code{nil} (an
empty list), so Emacs skips this step; however, you can customize it
in your init file (@pxref{Init File}). The value should be a list of
elements of the form
@example
(@var{regexp} . @var{mode-function})
@end example
@noindent
where @var{regexp} is a regular expression (@pxref{Regexps}), and
@var{mode-function} is a Lisp function that toggles a major mode. If
the text at the beginning of the file matches @var{regexp}, Emacs
chooses the major mode specified by @var{mode-function}.
Alternatively, an element of @code{magic-mode-alist} may have the form
@example
(@var{match-function} . @var{mode-function})
@end example
@noindent
where @var{match-function} is a Lisp function that is called at the
beginning of the buffer; if the function returns non-@code{nil}, Emacs
set the major mode wit @var{mode-function}.
Fourth---if Emacs still hasn't found a suitable major mode---it
looks at the file's name. The correspondence between file names and
major modes is controlled by the variable @code{auto-mode-alist}. Its
value is a list in which each element has this form,
@example
(@var{regexp} . @var{mode-function})
@end example
@noindent
or this form,
@example
(@var{regexp} @var{mode-function} @var{flag})
@end example
@noindent
For example, one element normally found in the list has the form
@code{(@t{"\\.c\\'"} . c-mode)}, and it is responsible for selecting C
mode for files whose names end in @file{.c}. (Note that @samp{\\} is
needed in Lisp syntax to include a @samp{\} in the string, which must
be used to suppress the special meaning of @samp{.} in regexps.) If
the element has the form @code{(@var{regexp} @var{mode-function}
@var{flag})} and @var{flag} is non-@code{nil}, then after calling
@var{mode-function}, Emacs discards the suffix that matched
@var{regexp} and searches the list again for another match.
@vindex auto-mode-case-fold
On systems with case-insensitive file names, such as Microsoft
Windows, Emacs performs a single case-insensitive search through
@code{auto-mode-alist}. On other systems, Emacs normally performs a
single case-sensitive search through the alist. However, if you
change the variable @code{auto-mode-case-fold} to @code{t}, Emacs
performs a second case-insensitive search if the first search fails.
@vindex magic-fallback-mode-alist
Finally, if Emacs @emph{still} hasn't found a major mode to use, it
compares the text at the start of the buffer to the variable
@code{magic-fallback-mode-alist}. This variable works like
@code{magic-mode-alist}, described above, except that is consulted
only after @code{auto-mode-alist}. By default,
@code{magic-fallback-mode-alist} contains forms that check for image
files, HTML/XML/SGML files, and Postscript files.
@vindex major-mode
Once a major mode is chosen, Emacs sets the value of the variable
@code{major-mode} to the symbol for that major mode (e.g.,
@code{text-mode} for Text mode). This is a per-buffer variable
(@pxref{Locals}); its buffer-local value is set automatically, and you
should not change it yourself.
The default value of @code{major-mode} determines the major mode to
use for files that do not specify a major mode, and for new buffers
created with @kbd{C-x b}. Normally, this default value is the symbol
@code{fundamental-mode}, which specifies Fundamental mode. You can
change it via the Customization interface (@pxref{Easy
Customization}), or by adding a line like this to your init file
(@pxref{Init File}):
@smallexample
(setq-default major-mode 'text-mode)
@end smallexample
@noindent
If the default value of @code{major-mode} is @code{nil}, the major
mode is taken from the previously current buffer.
@findex normal-mode
If you have changed the major mode of a buffer, you can return to
the major mode Emacs would have chosen automatically, by typing
@kbd{M-x normal-mode}. This is the same function that
@code{find-file} calls to choose the major mode. It also processes
the file's @samp{-*-} line or local variables list (if any).
@xref{File Variables}.
@vindex change-major-mode-with-file-name
The commands @kbd{C-x C-w} and @code{set-visited-file-name} change to
a new major mode if the new file name implies a mode (@pxref{Saving}).
(@kbd{C-x C-s} does this too, if the buffer wasn't visiting a file.)
However, this does not happen if the buffer contents specify a major
mode, and certain ``special'' major modes do not allow the mode to
change. You can turn off this mode-changing feature by setting
@code{change-major-mode-with-file-name} to @code{nil}.

View File

@ -1,7 +1,7 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1997, 1999-2011 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node International, Major Modes, Frames, Top
@node International, Modes, Frames, Top
@chapter International Character Set Support
@c This node is referenced in the tutorial. When renaming or deleting
@c it, the tutorial needs to be adjusted. (TUTORIAL.de)

View File

@ -643,8 +643,9 @@ balanced.
When talking about these facilities, the term ``parenthesis'' also
includes braces, brackets, or whatever delimiters are defined to match
in pairs. The major mode controls which delimiters are significant,
through the syntax table (@pxref{Syntax}). In Lisp, only parentheses
count; in C, these commands apply to braces and brackets too.
through the syntax table (@pxref{Syntax Tables,, Syntax Tables, elisp,
The Emacs Lisp Reference Manual}). In Lisp, only parentheses count;
in C, these commands apply to braces and brackets too.
You can use @kbd{M-x check-parens} to find any unbalanced
parentheses and unbalanced string quotes in the buffer.

View File

@ -870,8 +870,9 @@ matches at the end of the buffer only if the contents end with a
word-constituent character.
@item \w
matches any word-constituent character. The syntax table
determines which characters these are. @xref{Syntax}.
matches any word-constituent character. The syntax table determines
which characters these are. @xref{Syntax Tables,, Syntax Tables,
elisp, The Emacs Lisp Reference Manual}.
@item \W
matches any character that is not a word-constituent.
@ -892,7 +893,8 @@ symbol-constituent character.
matches any character whose syntax is @var{c}. Here @var{c} is a
character that designates a particular syntax class: thus, @samp{w}
for word constituent, @samp{-} or @samp{ } for whitespace, @samp{.}
for ordinary punctuation, etc. @xref{Syntax}.
for ordinary punctuation, etc. @xref{Syntax Tables,, Syntax Tables,
elisp, The Emacs Lisp Reference Manual}.
@item \S@var{c}
matches any character whose syntax is not @var{c}.
@ -911,8 +913,9 @@ matches any character that does @emph{not} belong to category
@var{c}.
@end table
The constructs that pertain to words and syntax are controlled by the
setting of the syntax table (@pxref{Syntax}).
The constructs that pertain to words and syntax are controlled by
the setting of the syntax table. @xref{Syntax Tables,, Syntax Tables,
elisp, The Emacs Lisp Reference Manual}.
@node Regexp Example
@section Regular Expression Example

View File

@ -154,9 +154,10 @@ the mark by one additional word. @kbd{M-@@} also accepts a numeric
argument that says how many words to scan for the place to put the
mark.
The word commands' understanding of word boundaries is controlled
by the syntax table. Any character can, for example, be declared to
be a word delimiter. @xref{Syntax}.
The word commands' understanding of word boundaries is controlled by
the syntax table. Any character can, for example, be declared to be a
word delimiter. @xref{Syntax Tables,, Syntax Tables, elisp, The Emacs
Lisp Reference Manual}.
@node Sentences
@section Sentences
@ -406,8 +407,6 @@ Text}).
* Fill Commands:: Commands to refill paragraphs and center lines.
* Fill Prefix:: Filling paragraphs that are indented or in a comment, etc.
* Adaptive Fill:: How Emacs can determine the fill prefix automatically.
* Refill:: Keeping paragraphs filled.
* Longlines:: Editing text with very long lines.
@end menu
@node Auto Fill
@ -722,92 +721,6 @@ line, and it should return the appropriate fill prefix based on that
line. If it returns @code{nil}, @code{adaptive-fill-regexp} gets
a chance to find a prefix.
@node Refill
@subsection Refill Mode
@cindex refilling text, word processor style
@cindex modes, Refill
@cindex Refill minor mode
Refill minor mode provides support for keeping paragraphs filled as
you type or modify them in other ways. It provides an effect similar
to typical word processor behavior. This works by running a
paragraph-filling command at suitable times.
To toggle the use of Refill mode in the current buffer, type
@kbd{M-x refill-mode}. When you are typing text, only characters
which normally trigger auto filling, like the space character, will
trigger refilling. This is to avoid making it too slow. Apart from
self-inserting characters, other commands which modify the text cause
refilling.
The current implementation is preliminary and not robust. You can
get better ``line wrapping'' behavior using Longlines mode.
@xref{Longlines}. However, Longlines mode has an important
side-effect: the newlines that it inserts for you are not saved to
disk, so the files that you make with Longlines mode will appear to be
completely unfilled if you edit them without Longlines mode.
@node Longlines
@subsection Long Lines Mode
@cindex refilling text, word processor style
@cindex modes, Long Lines
@cindex word wrap
@cindex Long Lines minor mode
Sometimes, you may come across ``unfilled'' text files, which Emacs
normally displays as a bunch of extremely long lines. Comfortably
reading and editing such files normally requires ``word wrap'', a
feature that breaks up each long text line into multiple screen lines
in a readable manner---by putting the breaks at word boundaries. Many
text editors, such as those built into many web browsers, perform word
wrapping by default.
There are two different minor modes in Emacs that perform word
wrapping. The first is Visual Line mode, which does it by altering
the behavior of screen line continuation. @xref{Visual Line Mode},
for information about Visual Line mode.
@findex longlines-mode
Instead of using Visual Line mode, you can use a minor mode called
Long Lines mode. Long Lines mode wraps lines by inserting or deleting
@dfn{soft newlines} as you type (@pxref{Hard and Soft Newlines}).
These soft newlines won't show up when you save the buffer into a
file, or when you copy the text into the kill ring, clipboard, or a
register. Unlike Visual Line mode, Lone Lines mode breaks long lines
at the fill column (@pxref{Fill Commands}), rather than the right
window edge. To enable Long Lines mode, type @kbd{M-x
longlines-mode}. If the text is full of long lines, this also
immediately ``wraps'' them all.
@findex longlines-auto-wrap
The word wrap performed by Long Lines mode is @emph{not} the same as
ordinary filling (@pxref{Fill Commands}). It does not contract
multiple spaces into a single space, recognize fill prefixes
(@pxref{Fill Prefix}), or perform adaptive filling (@pxref{Adaptive
Fill}). The reason for this is that a wrapped line is still,
conceptually, a single line. Each soft newline is equivalent to
exactly one space in that long line, and vice versa. However, you can
still call filling functions such as @kbd{M-q}, and these will work as
expected, inserting soft newlines that won't show up on disk or when
the text is copied. You can even rely entirely on the normal fill
commands by turning off automatic line wrapping, with @kbd{C-u M-x
longlines-auto-wrap}. To turn automatic line wrapping back on, type
@kbd{M-x longlines-auto-wrap}.
@findex longlines-show-hard-newlines
Type @kbd{RET} to insert a hard newline, one which automatic
refilling will not remove. If you want to see where all the hard
newlines are, type @kbd{M-x longlines-show-hard-newlines}. This will
mark each hard newline with a special symbol. The same command with a
prefix argument turns this display off.
Long Lines mode does not change normal text files that are already
filled, since the existing newlines are considered hard newlines.
Before Long Lines can do anything, you need to transform each
paragraph into a long line. One way is to set @code{fill-column} to a
large number (e.g., @kbd{C-u 9999 C-x f}), re-fill all the paragraphs,
and then set @code{fill-column} back to its original value.
@node Case
@section Case Conversion Commands
@cindex case conversion

View File

@ -1,3 +1,7 @@
2011-07-09 Andreas Schwab <schwab@linux-m68k.org>
* update-game-score.c (usage): Update usage line.
2011-07-02 Jason Rumney <jasonr@gnu.org>
* emacsclient.c (decode_options) [WINDOWSNT]: Avoid tty mode on

View File

@ -71,7 +71,7 @@ static int usage (int err) NO_RETURN;
static int
usage (int err)
{
fprintf (stdout, "Usage: update-game-score [-m MAX ] [ -r ] game/scorefile SCORE DATA\n");
fprintf (stdout, "Usage: update-game-score [-m MAX] [-r] [-d DIR] game/scorefile SCORE DATA\n");
fprintf (stdout, " update-game-score -h\n");
fprintf (stdout, " -h\t\tDisplay this help.\n");
fprintf (stdout, " -m MAX\t\tLimit the maximum number of scores to MAX.\n");
@ -113,8 +113,7 @@ static void lose_syserr (const char *msg) NO_RETURN;
#ifndef HAVE_STRERROR
#ifndef WINDOWSNT
char *
strerror (errnum)
int errnum;
strerror (int errnum)
{
extern char *sys_errlist[];
extern int sys_nerr;

View File

@ -270,26 +270,36 @@ typedef unsigned long int gl_uintptr_t;
/* Note: These types are compiler dependent. It may be unwise to use them in
public header files. */
#undef intmax_t
#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
/* If the system defines INTMAX_MAX, assume that intmax_t works, and
similarly for UINTMAX_MAX and uintmax_t. This avoids problems with
assuming one type where another is used by the system. */
#ifndef INTMAX_MAX
# undef INTMAX_C
# undef intmax_t
# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
typedef long long int gl_intmax_t;
# define intmax_t gl_intmax_t
#elif defined GL_INT64_T
# define intmax_t int64_t
#else
# define intmax_t gl_intmax_t
# elif defined GL_INT64_T
# define intmax_t int64_t
# else
typedef long int gl_intmax_t;
# define intmax_t gl_intmax_t
# define intmax_t gl_intmax_t
# endif
#endif
#undef uintmax_t
#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
#ifndef UINTMAX_MAX
# undef UINTMAX_C
# undef uintmax_t
# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
typedef unsigned long long int gl_uintmax_t;
# define uintmax_t gl_uintmax_t
#elif defined GL_UINT64_T
# define uintmax_t uint64_t
#else
# define uintmax_t gl_uintmax_t
# elif defined GL_UINT64_T
# define uintmax_t uint64_t
# else
typedef unsigned long int gl_uintmax_t;
# define uintmax_t gl_uintmax_t
# define uintmax_t gl_uintmax_t
# endif
#endif
/* Verify that intmax_t and uintmax_t have the same size. Too much code
@ -431,21 +441,23 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
/* 7.18.2.5. Limits of greatest-width integer types */
#undef INTMAX_MIN
#undef INTMAX_MAX
#ifdef INT64_MAX
# define INTMAX_MIN INT64_MIN
# define INTMAX_MAX INT64_MAX
#else
# define INTMAX_MIN INT32_MIN
# define INTMAX_MAX INT32_MAX
#ifndef INTMAX_MAX
# undef INTMAX_MIN
# ifdef INT64_MAX
# define INTMAX_MIN INT64_MIN
# define INTMAX_MAX INT64_MAX
# else
# define INTMAX_MIN INT32_MIN
# define INTMAX_MAX INT32_MAX
# endif
#endif
#undef UINTMAX_MAX
#ifdef UINT64_MAX
# define UINTMAX_MAX UINT64_MAX
#else
# define UINTMAX_MAX UINT32_MAX
#ifndef UINTMAX_MAX
# ifdef UINT64_MAX
# define UINTMAX_MAX UINT64_MAX
# else
# define UINTMAX_MAX UINT32_MAX
# endif
#endif
/* 7.18.3. Limits of other integer types */
@ -568,22 +580,24 @@ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
/* 7.18.4.2. Macros for greatest-width integer constants */
#undef INTMAX_C
#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
# define INTMAX_C(x) x##LL
#elif defined GL_INT64_T
# define INTMAX_C(x) INT64_C(x)
#else
# define INTMAX_C(x) x##L
#ifndef INTMAX_C
# if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
# define INTMAX_C(x) x##LL
# elif defined GL_INT64_T
# define INTMAX_C(x) INT64_C(x)
# else
# define INTMAX_C(x) x##L
# endif
#endif
#undef UINTMAX_C
#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
# define UINTMAX_C(x) x##ULL
#elif defined GL_UINT64_T
# define UINTMAX_C(x) UINT64_C(x)
#else
# define UINTMAX_C(x) x##UL
#ifndef UINTMAX_C
# if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
# define UINTMAX_C(x) x##ULL
# elif defined GL_UINT64_T
# define UINTMAX_C(x) UINT64_C(x)
# else
# define UINTMAX_C(x) x##UL
# endif
#endif
#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */

View File

@ -1,3 +1,50 @@
2011-07-10 Bob Rogers <rogers@rgrjr.dyndns.org>
* vc/vc.el (vc-diff-internal): Fix race condition (Bug#1256).
2011-07-10 Chong Yidong <cyd@stupidchicken.com>
* window.el (display-buffer): Fix arguments to
display-buffer-reuse-window in last change.
* faces.el (link): Use a less saturated blue on light backgrounds.
* startup.el (fancy-startup-text, fancy-about-text)
(fancy-startup-tail): Use font-lock faces, for background safety.
2011-07-09 Bob Nnamtrop <bobnnamtrop@gmail.com> (tiny change)
* emulation/viper-cmd.el (viper-change-state-to-vi): Limit
triggering of abbrev expansion (Bug#9038).
2011-07-09 Martin Rudalics <rudalics@gmx.at>
* window.el (display-buffer-default-specifiers): Remove.
(display-buffer-macro-specifiers): Remove default specifiers.
(display-buffer-alist): Default to nil.
(display-buffer-reuse-window): New optional argument
other-window.
(display-buffer-pop-up-window): Allow splitting internal
windows. Check whether a live window was created.
(display-buffer-other-window-means-other-frame)
(display-buffer-normalize-arguments): Rename to
display-buffer-normalize-argument and rewrite. Set the
other-window specifier.
(display-buffer-normalize-special): New function.
(display-buffer-normalize-options): Rename to
display-buffer-normalize-default and rewrite.
(display-buffer-normalize-options-inhibit): Remove.
(display-buffer-normalize-specifiers): Rewrite.
(display-buffer): Process other-window specifier and call
display-buffer-reuse-window with it. Emulate Emacs 23 behavior
more faithfully.
(pop-up-windows, even-window-heights): Restore Emacs 23 default
values.
(display-buffer-alist-set): Don't handle 'unset default values.
(display-buffer-in-window, display-buffer-alist-set): Replace
symbol "dedicated" by "dedicate". Reported by Tassilo Horn
<tassilo@member.fsf.org>.
2011-07-09 Leo Liu <sdl.web@gmail.com>
* register.el (insert-register): Restore accidental change on

View File

@ -617,7 +617,10 @@
(or (viper-overlay-p viper-replace-overlay)
(viper-set-replace-overlay (point-min) (point-min)))
(viper-hide-replace-overlay)
(if abbrev-mode (expand-abbrev))
;; Expand abbrevs iff the previous character has word syntax.
(and abbrev-mode
(eq (char-syntax (preceding-char)) ?w)
(expand-abbrev))
(if (and auto-fill-function (> (current-column) fill-column))
(funcall auto-fill-function))
;; don't leave whitespace lines around

View File

@ -2109,7 +2109,7 @@ terminal type to a different value."
(defface link
'((((class color) (min-colors 88) (background light))
:foreground "blue1" :underline t)
:foreground "RoyalBlue3" :underline t)
(((class color) (background light))
:foreground "blue" :underline t)
(((class color) (min-colors 88) (background dark))

View File

@ -1,3 +1,18 @@
2011-07-09 Bill Wohler <wohler@newt.com>
* mh-speed.el (mh-speed-toggle,mh-speed-view): Document "ignored"
arguments to keep checkdoc happy.
* mh-search.el (mh-flists-execute): Ditto.
* mh-funcs.el (mh-undo-folder): Ditto.
* mh-comp.el (mh-user-agent-compose): Ditto.
* mh-xface.el (mh-face-to-png, mh-uncompface)
(mh-picon-file-contents): Only call set-buffer-multibyte if it
exists, which it doesn't in XEmacs.
2011-07-04 Bill Wohler <wohler@newt.com>
* mh-e.el: Just require mh-loaddefs since loading it in an

View File

@ -213,7 +213,7 @@ Elements look like (HEADER . VALUE) where both HEADER and VALUE
are strings.
CONTINUE, SWITCH-FUNCTION, YANK-ACTION, SEND-ACTIONS, and
RETURN-ACTION are ignored."
RETURN-ACTION and any additional arguments are IGNORED."
(mh-find-path)
(let ((mh-error-if-no-draft t))
(mh-send to "" subject)

View File

@ -349,7 +349,7 @@ See `mh-store-msg' for a description of DIRECTORY."
(error "Error occurred during execution of %s" command)))))
;;;###mh-autoload
(defun mh-undo-folder (&rest _ignored)
(defun mh-undo-folder (&rest ignored)
"Undo all refiles and deletes in the current folder.
Arguments are IGNORED (for `revert-buffer')."
(interactive)

View File

@ -454,12 +454,12 @@ search all folders."
(defvar mh-flists-search-folders)
(defun mh-flists-execute (&rest args)
(defun mh-flists-execute (&rest ignored)
"Execute flists.
Search for messages belonging to `mh-flists-sequence' in the
folders specified by `mh-flists-search-folders'. If
`mh-recursive-folders-flag' is t, then the folders are searched
recursively. All parameters ARGS are ignored."
recursively. All arguments are IGNORED."
(set-buffer (get-buffer-create mh-temp-index-buffer))
(erase-buffer)
(unless (executable-find "sh")

View File

@ -126,9 +126,9 @@ With non-nil FORCE, the update is always carried out."
;; Otherwise on to your regular programming
(t t)))
(defun mh-speed-toggle (&rest args)
(defun mh-speed-toggle (&rest ignored)
"Toggle the display of child folders in the speedbar.
The optional ARGS from speedbar are ignored."
The optional arguments from speedbar are IGNORED."
(interactive)
(declare (ignore args))
(beginning-of-line)
@ -165,9 +165,9 @@ The optional ARGS from speedbar are ignored."
(mh-line-beginning-position) (1+ (line-beginning-position))
`(mh-expanded t)))))))
(defun mh-speed-view (&rest args)
(defun mh-speed-view (&rest ignored)
"Visits the selected folder just as if you had used \\<mh-folder-mode-map>\\[mh-visit-folder].
The optional ARGS from speedbar are ignored."
The optional arguments from speedbar are IGNORED."
(interactive)
(declare (ignore args))
(let* ((folder (get-text-property (mh-line-beginning-position) 'mh-folder))

View File

@ -125,7 +125,8 @@ in this order is used."
(defun mh-face-to-png (data)
"Convert base64 encoded DATA to png image."
(with-temp-buffer
(set-buffer-multibyte nil)
(if (fboundp 'set-buffer-multibyte)
(set-buffer-multibyte nil))
(insert data)
(ignore-errors (base64-decode-region (point-min) (point-max)))
(buffer-string)))
@ -133,7 +134,8 @@ in this order is used."
(defun mh-uncompface (data)
"Run DATA through `uncompface' to generate bitmap."
(with-temp-buffer
(set-buffer-multibyte nil)
(if (fboundp 'set-buffer-multibyte)
(set-buffer-multibyte nil))
(insert data)
(when (and mh-uncompface-executable
(equal (call-process-region (point-min) (point-max)
@ -271,7 +273,8 @@ file contents as a string is returned. If FILE is nil, then both
elements of the list are nil."
(if (stringp file)
(with-temp-buffer
(set-buffer-multibyte nil)
(if (fboundp 'set-buffer-multibyte)
(set-buffer-multibyte nil))
(let ((type (and (string-match ".*\\.\\(...\\)$" file)
(intern (match-string 1 file)))))
(insert-file-contents-literally file)

View File

@ -1293,7 +1293,7 @@ If this is nil, no message will be displayed."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defconst fancy-startup-text
`((:face (variable-pitch (:foreground "red"))
`((:face (variable-pitch font-lock-comment-face)
"Welcome to "
:link ("GNU Emacs"
,(lambda (_button) (browse-url "http://www.gnu.org/software/emacs/"))
@ -1350,7 +1350,7 @@ Each element in the list should be a list of strings or pairs
`:face FACE', like `fancy-splash-insert' accepts them.")
(defconst fancy-about-text
`((:face (variable-pitch (:foreground "red"))
`((:face (variable-pitch font-lock-comment-face)
"This is "
:link ("GNU Emacs"
,(lambda (_button) (browse-url "http://www.gnu.org/software/emacs/"))
@ -1366,11 +1366,7 @@ Each element in the list should be a list of strings or pairs
`("GNU" ,(lambda (_button) (describe-gnu-project))
"Display info on the GNU project.")))
" operating system.\n"
:face ,(lambda ()
(list 'variable-pitch
(list :foreground
(if (eq (frame-parameter nil 'background-mode) 'dark)
"cyan" "darkblue"))))
:face (variable-pitch font-lock-builtin-face)
"\n"
,(lambda () (emacs-version))
"\n"
@ -1426,8 +1422,7 @@ Each element in the list should be a list of strings or pairs
,(lambda (_button)
(browse-url "http://www.gnu.org/software/emacs/tour/"))
"Browse http://www.gnu.org/software/emacs/tour/")
"\tSee an overview of Emacs features at gnu.org"
))
"\tSee an overview of Emacs features at gnu.org"))
"A list of texts to show in the middle part of the About screen.
Each element in the list should be a list of strings or pairs
`:face FACE', like `fancy-splash-insert' accepts them.")
@ -1537,93 +1532,91 @@ a face or button specification."
(defun fancy-startup-tail (&optional concise)
"Insert the tail part of the splash screen into the current buffer."
(let ((fg (if (eq (frame-parameter nil 'background-mode) 'dark)
"cyan" "darkblue")))
(unless concise
(fancy-splash-insert
:face 'variable-pitch
"\nTo start... "
:link `("Open a File"
,(lambda (_button) (call-interactively 'find-file))
"Specify a new file's name, to edit the file")
" "
:link `("Open Home Directory"
,(lambda (_button) (dired "~"))
"Open your home directory, to operate on its files")
" "
:link `("Customize Startup"
,(lambda (_button) (customize-group 'initialization))
"Change initialization settings including this screen")
"\n"))
(unless concise
(fancy-splash-insert
:face 'variable-pitch "To quit a partially entered command, type "
:face 'default "Control-g"
:face 'variable-pitch ".\n")
(fancy-splash-insert :face `(variable-pitch (:foreground ,fg))
"\nThis is "
(emacs-version)
"\n"
:face '(variable-pitch (:height 0.8))
emacs-copyright
"\n")
(and auto-save-list-file-prefix
;; Don't signal an error if the
;; directory for auto-save-list files
;; does not yet exist.
(file-directory-p (file-name-directory
auto-save-list-file-prefix))
(directory-files
(file-name-directory auto-save-list-file-prefix)
nil
(concat "\\`"
(regexp-quote (file-name-nondirectory
auto-save-list-file-prefix)))
t)
(fancy-splash-insert :face '(variable-pitch (:foreground "red"))
"\nIf an Emacs session crashed recently, "
"type "
:face '(fixed-pitch :foreground "red")
"Meta-x recover-session RET"
:face '(variable-pitch (:foreground "red"))
"\nto recover"
" the files you were editing."))
:face 'variable-pitch
"\nTo start... "
:link `("Open a File"
,(lambda (_button) (call-interactively 'find-file))
"Specify a new file's name, to edit the file")
" "
:link `("Open Home Directory"
,(lambda (_button) (dired "~"))
"Open your home directory, to operate on its files")
" "
:link `("Customize Startup"
,(lambda (_button) (customize-group 'initialization))
"Change initialization settings including this screen")
"\n"))
(fancy-splash-insert
:face 'variable-pitch "To quit a partially entered command, type "
:face 'default "Control-g"
:face 'variable-pitch ".\n")
(fancy-splash-insert :face `(variable-pitch font-lock-builtin-face)
"\nThis is "
(emacs-version)
"\n"
:face '(variable-pitch (:height 0.8))
emacs-copyright
"\n")
(and auto-save-list-file-prefix
;; Don't signal an error if the
;; directory for auto-save-list files
;; does not yet exist.
(file-directory-p (file-name-directory
auto-save-list-file-prefix))
(directory-files
(file-name-directory auto-save-list-file-prefix)
nil
(concat "\\`"
(regexp-quote (file-name-nondirectory
auto-save-list-file-prefix)))
t)
(fancy-splash-insert :face '(variable-pitch font-lock-comment-face)
"\nIf an Emacs session crashed recently, "
"type "
:face '(fixed-pitch font-lock-comment-face)
"Meta-x recover-session RET"
:face '(variable-pitch font-lock-comment-face)
"\nto recover"
" the files you were editing."))
(when concise
(fancy-splash-insert
:face 'variable-pitch "\n"
:link `("Dismiss this startup screen"
,(lambda (_button)
(when startup-screen-inhibit-startup-screen
(customize-set-variable 'inhibit-startup-screen t)
(customize-mark-to-save 'inhibit-startup-screen)
(custom-save-all))
(let ((w (get-buffer-window "*GNU Emacs*")))
(and w (not (one-window-p)) (delete-window w)))
(kill-buffer "*GNU Emacs*")))
" ")
(when (or user-init-file custom-file)
(let ((checked (create-image "checked.xpm"
nil nil :ascent 'center))
(unchecked (create-image "unchecked.xpm"
nil nil :ascent 'center)))
(insert-button
" "
:on-glyph checked
:off-glyph unchecked
'checked nil 'display unchecked 'follow-link t
'action (lambda (button)
(if (overlay-get button 'checked)
(progn (overlay-put button 'checked nil)
(overlay-put button 'display
(overlay-get button :off-glyph))
(setq startup-screen-inhibit-startup-screen
nil))
(overlay-put button 'checked t)
(overlay-put button 'display
(overlay-get button :on-glyph))
(setq startup-screen-inhibit-startup-screen t)))))
(fancy-splash-insert :face '(variable-pitch (:height 0.9))
" Never show it again.")))))
(when concise
(fancy-splash-insert
:face 'variable-pitch "\n"
:link `("Dismiss this startup screen"
,(lambda (_button)
(when startup-screen-inhibit-startup-screen
(customize-set-variable 'inhibit-startup-screen t)
(customize-mark-to-save 'inhibit-startup-screen)
(custom-save-all))
(let ((w (get-buffer-window "*GNU Emacs*")))
(and w (not (one-window-p)) (delete-window w)))
(kill-buffer "*GNU Emacs*")))
" ")
(when (or user-init-file custom-file)
(let ((checked (create-image "checked.xpm"
nil nil :ascent 'center))
(unchecked (create-image "unchecked.xpm"
nil nil :ascent 'center)))
(insert-button
" "
:on-glyph checked
:off-glyph unchecked
'checked nil 'display unchecked 'follow-link t
'action (lambda (button)
(if (overlay-get button 'checked)
(progn (overlay-put button 'checked nil)
(overlay-put button 'display
(overlay-get button :off-glyph))
(setq startup-screen-inhibit-startup-screen
nil))
(overlay-put button 'checked t)
(overlay-put button 'display
(overlay-get button :on-glyph))
(setq startup-screen-inhibit-startup-screen t)))))
(fancy-splash-insert :face '(variable-pitch (:height 0.9))
" Never show it again."))))
(defun exit-splash-screen ()
"Stop displaying the splash screen buffer."

View File

@ -1605,10 +1605,13 @@ Return t if the buffer had changes, nil otherwise."
;; bindings are nicer for read only buffers. pcl-cvs does the
;; same thing.
(setq buffer-read-only t)
(vc-exec-after `(vc-diff-finish ,(current-buffer) ',(when verbose
messages)))
;; Display the buffer, but at the end because it can change point.
(pop-to-buffer (current-buffer))
;; The diff process may finish early, so call `vc-diff-finish'
;; after `pop-to-buffer'; the former assumes the diff buffer is
;; shown in some window.
(vc-exec-after `(vc-diff-finish ,(current-buffer)
',(when verbose messages)))
;; In the async case, we return t even if there are no differences
;; because we don't know that yet.
t)))

View File

@ -3829,22 +3829,6 @@ subwindows can get as small as `window-safe-min-height' and
(window-state-put-2 ignore))
(window-check frame))))
;;; Displaying buffers.
(defconst display-buffer-default-specifiers
'((reuse-window nil same visible)
(pop-up-window (largest . nil) (lru . nil))
(pop-up-window-min-height . 40)
(pop-up-window-min-width . 80)
(reuse-window other nil nil)
(reuse-window nil other visible)
(reuse-window nil nil t)
(reuse-window-even-sizes . t))
"Buffer display default specifiers.
The value specified here is used when no other specifiers have
been specified by the user or the application. Consult the
documentation of `display-buffer-alist' for a description of
buffer display specifiers.")
(defconst display-buffer-macro-specifiers
'((same-window
;; Use the same window.
@ -3854,11 +3838,6 @@ buffer display specifiers.")
(reuse-window nil same nil)
(pop-up-window (largest . nil) (lru . nil))
(reuse-window nil other nil))
;; (other-window
;; ;; Avoid selected window.
;; (reuse-window other same visible)
;; (pop-up-window (largest . nil) (lru . nil))
;; (reuse-window other other visible))
(same-frame-other-window
;; Avoid other frames and selected window.
(reuse-window other same nil)
@ -3868,25 +3847,10 @@ buffer display specifiers.")
;; Avoid selected frame.
(reuse-window nil same other)
(pop-up-frame)
(reuse-window nil other other))
(default
;; The default specifiers.
display-buffer-default-specifiers))
(reuse-window nil other other)))
"Buffer display macro specifiers.")
(defcustom display-buffer-alist
'((((regexp . ".*"))
;; Reuse window showing same buffer on same frame.
reuse-window (reuse-window nil same nil)
;; Pop up window.
pop-up-window
;; Split largest or lru window.
(pop-up-window (largest . nil) (lru . nil))
(pop-up-window-min-height . 40) ; split-height-threshold / 2
(pop-up-window-min-width . 80) ; split-width-threshold / 2
;; Reuse any but selected window on same frame.
reuse-window (reuse-window other nil nil)
(reuse-window-even-sizes . t)))
(defcustom display-buffer-alist nil
"List associating buffer identifiers with display specifiers.
The car of each element of this list is built from a set of cons
cells called buffer identifiers. `display-buffer' shows a buffer
@ -4751,15 +4715,15 @@ documentation of `display-buffer-alist' for a description."
(setq window (window-normalize-live-window window))
(let* ((old-frame (selected-frame))
(new-frame (window-frame window))
(dedicated (cdr (assq 'dedicated specifiers)))
(dedicate (cdr (assq 'dedicate specifiers)))
(no-other-window (cdr (assq 'no-other-window specifiers))))
;; Show BUFFER in WINDOW.
(unless (eq buffer (window-buffer window))
;; If we show another buffer in WINDOW, undedicate it first.
(set-window-dedicated-p window nil))
(set-window-buffer window buffer)
(when dedicated
(set-window-dedicated-p window dedicated))
(when dedicate
(set-window-dedicated-p window dedicate))
(when no-other-window
(set-window-parameter window 'no-other-window t))
(unless (or (eq old-frame new-frame)
@ -4775,7 +4739,7 @@ documentation of `display-buffer-alist' for a description."
;; Return window.
window))
(defun display-buffer-reuse-window (buffer method &optional specifiers)
(defun display-buffer-reuse-window (buffer method &optional specifiers other-window)
"Display BUFFER in an existing window.
METHOD must be a list in the form of the cdr of a `reuse-window'
buffer display specifier, see `display-buffer-alist' for an
@ -4787,8 +4751,9 @@ frame to use - either nil, 0, `visible', `other', t, or a live
frame.
Optional argument SPECIFIERS must be a list of valid display
specifiers. Return the window chosen to display BUFFER, nil if
none was found."
specifiers. Optional argument OTHER-WINDOW, if non-nil, means do
not use the selected window. Return the window chosen to display
BUFFER, nil if none was found."
(let* ((method-window (nth 0 method))
(method-buffer (nth 1 method))
(method-frame (nth 2 method))
@ -4806,6 +4771,7 @@ none was found."
(eq window-buffer buffer))
(or (not method-window)
(and (eq method-window 'same)
(not other-window)
(eq window (selected-window)))
(and (eq method-window 'other)
(not (eq window (selected-window))))
@ -5064,7 +5030,7 @@ description."
;; A window, directly specified.
cand)))
(when (and (window-live-p window)
(when (and (window-any-p window)
;; The window must be on the correct frame,
(eq (window-frame window) frame)
;; and must be neither a minibuffer window
@ -5084,7 +5050,7 @@ description."
;; Don't pass any specifiers to this function.
(funcall side window)))))
(when window
(when (window-live-p window)
;; Adjust sizes if asked for.
(display-buffer-set-height window specifiers)
(display-buffer-set-width window specifiers)
@ -5324,201 +5290,225 @@ Optional argument LABEL is like the same argument of
The calculation of the return value is exclusively based on the
user preferences expressed in `display-buffer-alist'."
(let* ((buffer (window-normalize-buffer buffer-or-name))
(list (display-buffer-normalize-alist (buffer-name buffer) label))
(value (assq 'other-window-means-other-frame
(or (car list) (cdr list)))))
(when value (cdr value))))
(let* ((buffer-name
(buffer-name (window-normalize-buffer buffer-or-name)))
(default (display-buffer-normalize-default buffer-name))
(alist (display-buffer-normalize-alist buffer-name label)))
(or (cdr (assq 'other-window-means-other-frame default))
(cdr (assq 'other-window-means-other-frame (cdr alist))))))
(defun display-buffer-normalize-arguments (buffer-name specifiers label other-frame)
"Normalize second and third argument of `display-buffer'.
BUFFER-NAME is the name of the buffer that shall be displayed,
SPECIFIERS is the second argument of `display-buffer'. LABEL is
the same argument of `display-buffer'. OTHER-FRAME non-nil means
use other-frame for other-window."
(let (normalized entry specifier pars)
(setq specifier
(cond
((not specifiers)
nil)
((listp specifiers)
;; If SPECIFIERS is a list, we assume it is a list of specifiers.
(dolist (specifier specifiers)
(cond
((consp specifier)
(setq normalized (cons specifier normalized)))
((eq specifier 'other-window)
;; `other-window' must be treated separately.
(let ((entry (assq (if other-frame
'other-frame
'same-frame-other-window)
display-buffer-macro-specifiers)))
(dolist (item (cdr entry))
(setq normalized (cons item normalized)))))
((symbolp specifier)
;; Might be a macro specifier, try to expand it (the cdr is a
;; list and we have to reverse it later, so do it one at a
;; time).
(let ((entry (assq specifier display-buffer-macro-specifiers)))
(dolist (item (cdr entry))
(setq normalized (cons item normalized)))))))
;; Reverse list.
(nreverse normalized))
((setq entry (assq specifiers display-buffer-macro-specifiers))
;; A macro specifier.
(cdr entry))
((or other-frame (with-no-warnings pop-up-frames))
;; `special-display-p' group.
(if (and (with-no-warnings special-display-function)
;; `special-display-p' returns either t or a list
;; of frame parameters to pass to
;; `special-display-function'.
(setq pars (with-no-warnings
(special-display-p buffer-name))))
(list (list 'function
(with-no-warnings special-display-function)
(when (listp pars) pars)))
;; Pop up another frame.
(cddr (assq 'other-frame display-buffer-macro-specifiers))))
(t
;; In any other case pop up a new window.
(cdr (assq 'same-frame-other-window
display-buffer-macro-specifiers)))))
(defun display-buffer-normalize-special (&optional args)
"Return buffer display specifiers for `special-display-frame-alist'."
(progn ;; <-- reserved for with-no-warnings
(if (and (listp args) (symbolp (car args)))
;; Note: `display-buffer' funcalls this so take "(nth 1 args)"
;; where `special-display-popup-frame' (which uses apply) takes
;; "(cdr args)".
`((function ,(car args) ,(nth 1 args)))
(append
'((reuse-window nil same 0))
(when (and (listp args) (cdr (assq 'same-window args)))
'((reuse-window same nil nil) (reuse-dedicated . weak)))
(when (and (listp args)
(or (cdr (assq 'same-frame args))
(cdr (assq 'same-window args))))
'((pop-up-window (largest . nil) (lru . nil))
(reuse-window nil nil nil)))
(unless display-buffer-mark-dedicated
;; Don't make anything created above dedicated unless requested.
;; Otherwise the dedication request below gets in our way.
'((dedicated . nil)))
`((pop-up-frame t)
,(append '(pop-up-frame-alist)
(when (listp args) args)
special-display-frame-alist)
(dedicated . t))))))
;; Handle the old meaning of the LABEL argument of `display-buffer'.
(cond
((or (memq label '(visible 0 t)) (frame-live-p label))
;; LABEL must be one of visible (and visible frame), 0 (any
;; visible or iconfied frame), t (any frame), or a live frame.
(cons `(reuse-window nil same ,label) specifier))
((or other-frame
(with-no-warnings pop-up-frames)
(with-no-warnings display-buffer-reuse-frames))
(cons '(reuse-window nil same 0) specifier))
(t
specifier))))
(defun display-buffer-normalize-options (buffer-or-name)
(defun display-buffer-normalize-default (buffer-or-name)
"Subroutine of `display-buffer-normalize-specifiers'.
BUFFER-OR-NAME is the buffer to display. This routine provides a
compatibility layer for the now obsolete Emacs 23 buffer display
options."
(with-no-warnings
BUFFER-OR-NAME is the buffer to display.
This routine provides a compatibility layer for the obsolete
Emacs 23 buffer display options to set up the corresponding
buffer display specifiers."
(progn ;; <-- reserved for with-no-warnings
(let* ((buffer (window-normalize-buffer buffer-or-name))
(buffer-name (buffer-name buffer))
(use-pop-up-frames
(or (and (eq pop-up-frames 'graphic-only)
(display-graphic-p))
pop-up-frames))
specifiers)
;; `even-window-heights', unless nil or unset.
(unless (memq even-window-heights '(nil unset))
(pop-up-frames
(and (boundp 'pop-up-frames)
(or (and (eq pop-up-frames 'graphic-only)
(display-graphic-p))
pop-up-frames)))
specifiers args)
;; `other-window-means-other-frame'
(when pop-up-frames
(setq specifiers
(cons (cons 'other-window-means-other-frame t) specifiers)))
;; `even-window-heights'
(unless (and (boundp 'even-window-heights)
(not even-window-heights))
(setq specifiers
(cons (cons 'reuse-window-even-sizes t) specifiers)))
;; `display-buffer-mark-dedicated'
(when display-buffer-mark-dedicated
(when (and (boundp 'display-buffer-mark-dedicated)
display-buffer-mark-dedicated)
(setq specifiers
(cons (cons 'dedicate display-buffer-mark-dedicated)
specifiers)))
;; `pop-up-window' group. Anything is added here iff
;; `pop-up-windows' is neither nil nor unset.
(let ((pop-up-window (not (memq pop-up-windows '(nil unset))))
(fun (unless (eq split-window-preferred-function
'split-window-sensibly)
split-window-preferred-function))
(min-height (if (numberp split-height-threshold)
(/ split-height-threshold 2)
1.0))
(min-width (if (numberp split-width-threshold)
(/ split-width-threshold 2)
1.0)))
;; Create an entry only if a default value was changed.
(when (or pop-up-window
(not (equal split-height-threshold 80))
(not (equal split-width-threshold 160)))
;; `reuse-window' (needed as fallback when popping up the new
;; window fails).
(setq specifiers
(cons (list 'reuse-window 'other nil nil)
specifiers))
;; `split-width-threshold'
(setq specifiers
(cons (cons 'pop-up-window-min-width min-width)
specifiers))
;; `split-height-threshold'
(setq specifiers
(cons (cons 'pop-up-window-min-height min-height)
specifiers))
;; `pop-up-window'
(setq specifiers
(cons (list 'pop-up-window
(cons 'largest fun) (cons 'lru fun))
specifiers))))
;; `pop-up-frame' group.
(when use-pop-up-frames
;; `pop-up-frame-function'. If `pop-up-frame-function' uses the
;; now obsolete `pop-up-frame-alist' it will continue to do so.
;; `pop-up-window-min-height'
(let ((min-height
(if (boundp 'split-height-threshold)
(if (numberp split-height-threshold)
(/ split-height-threshold 2)
1.0)
40)))
(setq specifiers
(cons (cons 'pop-up-frame-function pop-up-frame-function)
specifiers))
;; `pop-up-frame'
(setq specifiers
(cons (list 'pop-up-frame t) specifiers)))
;; `pop-up-windows' and `use-pop-up-frames' both nil means means
;; we are supposed to reuse any window on the same frame (unless
;; we find one showing the same buffer already).
(unless (or pop-up-windows use-pop-up-frames)
;; `reuse-window' showing any buffer on same frame.
(setq specifiers
(cons (list 'reuse-window nil nil nil)
(cons (cons 'pop-up-window-min-height min-height)
specifiers)))
;; `special-display-p' group.
(when special-display-function
;; `special-display-p' returns either t or a list of frame
;; parameters to pass to `special-display-function'.
(let ((pars (special-display-p buffer-name)))
(when pars
(setq specifiers
(cons (list 'function special-display-function
(when (listp pars) pars))
specifiers)))))
;; `pop-up-window-min-width'
(let ((min-width
(if (boundp 'split-width-threshold)
(if (numberp split-width-threshold)
(/ split-width-threshold 2)
1.0)
80)))
(setq specifiers
(cons (cons 'pop-up-window-min-width min-width)
specifiers)))
;; `pop-up-window'
(unless (and (boundp 'pop-up-windows) (not pop-up-windows))
(let ((fun (when (and (boundp 'split-window-preferred-function)
(not (eq split-window-preferred-function
'split-window-sensibly)))
split-window-preferred-function)))
;; `pop-up-window'
(setq specifiers
(cons
(list 'pop-up-window (cons 'largest fun) (cons 'lru fun))
specifiers))))
;; `pop-up-frame-function'
(when (and (boundp 'pop-up-frame-function)
(not (equal pop-up-frame-function
'(lambda nil
(make-frame pop-up-frame-alist)))))
(setq specifiers
(cons (cons 'pop-up-frame-function pop-up-frame-function)
specifiers)))
;; `pop-up-frame-alist'
(when pop-up-frame-alist
(setq specifiers
(cons (cons 'pop-up-frame-alist pop-up-frame-alist)
specifiers)))
;; `pop-up-frame'
(when pop-up-frames
;; `pop-up-frame-function'. If `pop-up-frame-function' uses the
;; now obsolete `pop-up-frame-alist' it will continue to do so.
;; `pop-up-frame'
(setq specifiers
;; Maybe we should merge graphic-only into the following?
(cons (list 'pop-up-frame t) specifiers)))
;; `special-display'
(when (and (boundp 'special-display-function)
special-display-function
(fboundp 'special-display-p)
(setq args (special-display-p buffer-name)))
;; `special-display-p' returns either t or a list of arguments
;; to pass to `special-display-function'.
(if (eq special-display-function 'special-display-popup-frame)
(setq specifiers
(append (display-buffer-normalize-special args)
specifiers))
(setq specifiers
(cons
`(function ,special-display-function ,(when (listp args) args))
specifiers))))
;; Reuse window showing same buffer on visible or iconified frame.
;; `pop-up-frames', `display-buffer-reuse-frames' means search for
;; a window showing the buffer on some visible or iconfied frame.
;; `last-nonminibuffer-frame' set and not the same frame means
;; search that frame.
(let ((frames (or (and (or use-pop-up-frames
display-buffer-reuse-frames
;; `last-nonminibuffer-frame' non-nil means search that frame.
(let ((frames (or (and (or pop-up-frames
(and (boundp 'display-buffer-reuse-frames)
display-buffer-reuse-frames)
(not (last-nonminibuffer-frame)))
;; All visible or iconfied frames.
0)
;; Same frame.
;; The following usually returns the same frame
;; so we implicitly search for a window showing
;; the buffer on the same frame already.
(last-nonminibuffer-frame))))
(when frames
(setq specifiers
(cons (list 'reuse-window 'other 'same frames)
specifiers))))
;; `same-window-p' group.
(when (same-window-p buffer-name)
;; `same-window'
(when (and (fboundp 'same-window-p) (same-window-p buffer-name))
;; Try to reuse the same (selected) window.
(setq specifiers
(cons (list 'reuse-window 'same nil nil)
specifiers)))
(cons (list 'reuse-window 'same nil nil) specifiers)))
;; Prepend "reuse window on same frame if showing the buffer
;; already" specifier. It will be overriden by the application
;; supplied 'other-window specifier.
(setq specifiers (cons (list 'reuse-window nil 'same nil)
specifiers))
;; Same window if showing this buffer already. Can be overridden
;; by `other-window' argument if the buffer is already shown in
;; the same window.
(setq specifiers
(cons (list 'reuse-window 'same 'same nil) specifiers))
specifiers)))
(defun display-buffer-normalize-argument (buffer-name specifiers other-window-means-other-frame)
"Normalize second argument of `display-buffer'.
BUFFER-NAME is the name of the buffer that shall be displayed,
SPECIFIERS is the second argument of `display-buffer'.
OTHER-WINDOW-MEANS-OTHER-FRAME non-nil means use other-frame for
other-window."
(progn ;; <-- reserved for with-no-warnings
(let (normalized entry specifier pars)
(cond
((not specifiers)
nil)
((listp specifiers)
;; If SPECIFIERS is a list, we assume it is a list of valid
;; specifiers.
(dolist (specifier specifiers)
(cond
((consp specifier)
(setq normalized (cons specifier normalized)))
((eq specifier 'other-window)
;; `other-window' must be treated separately.
(let ((entry (assq (if other-window-means-other-frame
'other-frame
'same-frame-other-window)
display-buffer-macro-specifiers)))
(dolist (item (cdr entry))
(setq normalized (cons item normalized)))))
((symbolp specifier)
;; Might be a macro specifier, try to expand it (the cdr is a
;; list and we have to reverse it later, so do it one at a
;; time).
(let ((entry (assq specifier display-buffer-macro-specifiers)))
(dolist (item (cdr entry))
(setq normalized (cons item normalized)))))))
;; Reverse list.
(nreverse normalized))
((setq entry (assq specifiers display-buffer-macro-specifiers))
;; A macro specifier.
(cdr entry))
(t
;; Anything else means use another window according to the
;; non-overriding specifiers of `display-buffer-alist' and the
;; specifiers produced by `display-buffer-normalize-default'.
'((other-window . t)))))))
(defun display-buffer-normalize-alist-1 (specifiers label)
"Subroutine of `display-buffer-normalize-alist'.
SPECIFIERS is a list of buffer display specfiers. LABEL is the
@ -5579,9 +5569,6 @@ LABEL the corresponding argument of `display-buffer'."
(cons list-1 list-2)))
(defvar display-buffer-normalize-options-inhibit nil
"If non-nil, `display-buffer' doesn't process obsolete options.")
(defun display-buffer-normalize-specifiers (buffer-name specifiers label)
"Return normalized specifiers for a buffer matching BUFFER-NAME or LABEL.
BUFFER-NAME must be a string specifying a valid buffer name.
@ -5600,25 +5587,33 @@ specifiers:
- The specifiers in `display-buffer-alist' whose buffer
identifier matches BUFFER-NAME or LABEL and whose 'override
component is not set.
- `display-buffer-default-specifiers'."
(let* ((list (display-buffer-normalize-alist buffer-name label))
(other-frame (cdr (assq 'other-window-means-other-frame
(or (car list) (cdr list))))))
component is not set."
(let* ((default (display-buffer-normalize-default buffer-name))
(alist (display-buffer-normalize-alist buffer-name label))
(other-window-means-other-frame
(or (cdr (assq 'other-window-means-other-frame default))
(cdr (assq 'other-window-means-other-frame (cdr alist)))))
(arg2 (display-buffer-normalize-argument
buffer-name specifiers other-window-means-other-frame))
(arg3
;; Handle special meaning of the LABEL argument of
;; `display-buffer'.
(when (or (memq label '(visible 0 t)) (frame-live-p label))
;; LABEL must be one of visible (any visible frame), 0 (any
;; visible or iconfied frame), t (any frame), or a live
;; frame.
`((reuse-window nil same ,label)))))
(append
;; Overriding user specifiers.
(car list)
;; Application specifiers.
(display-buffer-normalize-arguments
buffer-name specifiers label other-frame)
;; Emacs 23 compatibility specifiers.
(unless display-buffer-normalize-options-inhibit
(display-buffer-normalize-options buffer-name))
(car alist)
;; Special value of third argument of display-buffer.
arg3
;; Second argument of display-buffer.
arg2
;; Non-overriding user specifiers.
(cdr list)
(cdr alist)
;; Default specifiers.
display-buffer-default-specifiers)))
default)))
;; Minibuffer-only frames should be documented better. They really
;; deserve a separate section in the manual. Also
@ -5653,9 +5648,8 @@ For convenience, SPECIFIERS may also consist of a single buffer
display location specifier or t, where the latter means to
display the buffer in any but the selected window. If SPECIFIERS
is nil or omitted, this means to exclusively use the specifiers
provided by `display-buffer-alist'. If the value of the latter
is nil too, all specifiers are provided by the constant
`display-buffer-default-specifiers'.
provided by the variable `display-buffer-alist' and the function
`display-buffer-normalize-default'.
As a special case, the `reuse-window' specifier allows to specify
as second element an arbitrary window, as third element an
@ -5707,7 +5701,7 @@ this list as arguments."
;; Don't use a minibuffer frame.
(frame (display-buffer-frame))
;; `window' is the window we use for showing `buffer'.
window specifier method)
window specifier method other-window)
;; Reset this.
(setq display-buffer-window nil)
(if display-buffer-function
@ -5723,7 +5717,7 @@ this list as arguments."
(cond
((eq method 'reuse-window)
(display-buffer-reuse-window
buffer (cdr specifier) normalized))
buffer (cdr specifier) normalized other-window))
((eq method 'pop-up-window)
(display-buffer-pop-up-window
buffer (cdr specifier) normalized))
@ -5734,25 +5728,31 @@ this list as arguments."
(display-buffer-in-side-window
buffer (nth 1 specifier) (nth 2 specifier) normalized))
((eq method 'function)
(funcall (nth 1 specifier) buffer (nth 2 specifier))))))
(funcall (nth 1 specifier) buffer (nth 2 specifier)))
((eq method 'other-window)
(setq other-window t)))))
;; If we don't have a window yet, try a fallback method. All
;; specifiers have been used up by now.
;; specifiers have been used up by now. Try reusing a window
(or (and (window-live-p window) window)
;; Try reusing a window showing BUFFER on any visible or
;; iconfied frame.
(display-buffer-reuse-window buffer `(nil ,buffer 0))
;; Try reusing a window not showing BUFFER on any visible or
;; iconified frame.
(display-buffer-reuse-window buffer '(nil other 0))
;; Eli says it's better to never try making a new frame.
;; (display-buffer-pop-up-frame buffer)
;; Try using a weakly dedicated window.
;; on the selected frame,
(display-buffer-reuse-window
buffer '(nil nil t) '((reuse-window-dedicated . weak)))
;; Try using a strongly dedicated window.
buffer '(nil nil nil) nil other-window)
;; showing BUFFER on any visible frame,
(display-buffer-reuse-window
buffer '(nil nil t) '((reuse-window-dedicated . t)))))))
buffer '(nil same visible) nil other-window)
;; not showing BUFFER on any visible frame,
(display-buffer-reuse-window
buffer '(nil other visible) nil other-window)
;; showing BUFFER on any visible or iconified frame,
(display-buffer-reuse-window
buffer '(nil same 0) nil other-window)
;; not showing BUFFER on any visible or iconified frame.
(display-buffer-reuse-window
buffer '(nil other 0) nil other-window)
;; If everything failed so far, try popping up a new frame
;; regardless of graphic-only restrictions.
(display-buffer-pop-up-frame buffer)))))
(defsubst display-buffer-same-window (&optional buffer-or-name label)
"Display buffer specified by BUFFER-OR-NAME in the selected window.
@ -6395,10 +6395,9 @@ that frame."
;; 'display-buffer-reuse-frames
;; "use 2nd arg of `display-buffer' instead." "24.1")
(defcustom pop-up-windows 'unset ; t
"Set and non-nil means `display-buffer' should make a new window."
(defcustom pop-up-windows t
"Non-nil means `display-buffer' should make a new window."
:type 'boolean
:version "24.1"
:group 'windows)
;; (make-obsolete-variable
;; 'pop-up-windows
@ -6459,13 +6458,12 @@ is nil, `display-buffer' cannot split windows horizontally."
;; 'split-width-threshold
;; "use 2nd arg of `display-buffer' instead." "24.1")
(defcustom even-window-heights 'unset ; t
"If set and non-nil `display-buffer' will try to even window heights.
(defcustom even-window-heights t
"If non-nil `display-buffer' will try to even window heights.
Otherwise `display-buffer' will leave the window configuration
alone. Heights are evened only when `display-buffer' reuses a
alone. Heights are evened only when `display-buffer' chooses a
window that appears above or below the selected window."
:type 'boolean
:version "24.1"
:group 'windows)
;; (make-obsolete-variable
;; 'even-window-heights
@ -6635,7 +6633,7 @@ value of `display-buffer-alist'."
1.0)))
(list
'pop-up-window
(when pop-up-windows ; unset qualifies as t
(when pop-up-windows
(list
'pop-up-window
(cons 'largest fun)
@ -6789,7 +6787,7 @@ value of `display-buffer-alist'."
;; "0" (all visible and iconified frames) is hardcoded in
;; Emacs 23.
0))
(unless (memq even-window-heights '(nil unset))
(when even-window-heights
(cons 'reuse-window-even-sizes t)))
no-custom)
@ -6798,7 +6796,7 @@ value of `display-buffer-alist'."
(display-buffer-alist-add
nil
(list
(cons 'dedicated display-buffer-mark-dedicated))
(cons 'dedicate display-buffer-mark-dedicated))
no-custom)))
display-buffer-alist)

View File

@ -1,4 +1,4 @@
# pthread_sigmask.m4 serial 7
# pthread_sigmask.m4 serial 7-emacs1
dnl Copyright (C) 2011 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@ -8,55 +8,6 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
[
AC_CHECK_FUNCS_ONCE([pthread_sigmask])
LIB_PTHREAD_SIGMASK=
m4_ifdef([gl_THREADLIB], [
AC_REQUIRE([gl_THREADLIB])
if test "$gl_threads_api" = posix; then
if test $ac_cv_func_pthread_sigmask = yes; then
dnl pthread_sigmask is available without -lpthread.
:
else
if test -n "$LIBMULTITHREAD"; then
AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD],
[gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD],
[gl_save_LIBS="$LIBS"
LIBS="$LIBS $LIBMULTITHREAD"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <pthread.h>
#include <signal.h>
]],
[[return pthread_sigmask (0, (sigset_t *) 0, (sigset_t *) 0);]])
],
[gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes],
[gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no])
LIBS="$gl_save_LIBS"
])
if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
dnl pthread_sigmask is available with -lpthread.
LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
else
dnl pthread_sigmask is not available at all.
HAVE_PTHREAD_SIGMASK=0
fi
else
dnl pthread_sigmask is not available at all.
HAVE_PTHREAD_SIGMASK=0
fi
fi
else
dnl pthread_sigmask may exist but does not interoperate with the chosen
dnl multithreading facility.
dnl If "$gl_threads_api" = pth, we could use the function pth_sigmask,
dnl but it is equivalent to sigprocmask, so we choose to emulate
dnl pthread_sigmask with sigprocmask also in this case. This yields fewer
dnl link dependencies.
if test $ac_cv_func_pthread_sigmask = yes; then
REPLACE_PTHREAD_SIGMASK=1
else
HAVE_PTHREAD_SIGMASK=0
fi
fi
] ,[
dnl gl_THREADLIB is not in use. Assume the application wants
dnl POSIX semantics.
if test $ac_cv_func_pthread_sigmask != yes; then
@ -69,7 +20,6 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
LIB_PTHREAD_SIGMASK=$ac_cv_search_pthread_sigmask
fi
fi
])
AC_SUBST([LIB_PTHREAD_SIGMASK])
dnl We don't need a variable LTLIB_PTHREAD_SIGMASK, because when
dnl "$gl_threads_api" = posix, $LTLIBMULTITHREAD and $LIBMULTITHREAD are the

View File

@ -1,3 +1,15 @@
2011-07-09 Juanma Barranquero <lekktu@gmail.com>
* chartab.c (uniprop_table_uncompress): Remove unused local variable.
2011-07-09 Jan Djärv <jan.h.d@swipnet.se>
* gtkutil.c (qttip_cb): Remove code without function.
2011-07-09 Eli Zaretskii <eliz@gnu.org>
* w32.c (pthread_sigmask): New stub.
2011-07-08 Paul Eggert <eggert@cs.ucla.edu>
Fix minor problems found by static checking (Bug#9031).

View File

@ -1451,6 +1451,14 @@ sigprocmask (int how, const sigset_t *set, sigset_t *oset)
return 0;
}
int
pthread_sigmask (int how, const sigset_t *set, sigset_t *oset)
{
if (sigprocmask (how, set, oset) == -1)
return EINVAL;
return 0;
}
int
setpgrp (int pid, int gid)
{