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:
commit
0f5860c118
11
ChangeLog
11
ChangeLog
@ -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,
|
||||
|
@ -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
5
autogen/aclocal.m4
vendored
@ -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])
|
||||
|
@ -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
4174
autogen/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -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.
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}.
|
@ -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
410
doc/emacs/modes.texi
Normal 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}.
|
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
|
181
lisp/startup.el
181
lisp/startup.el
@ -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."
|
||||
|
@ -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)))
|
||||
|
506
lisp/window.el
506
lisp/window.el
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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).
|
||||
|
Loading…
Reference in New Issue
Block a user