merge trunk
This commit is contained in:
commit
646859d33a
114 changed files with 21857 additions and 20804 deletions
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
File synchronization fixes (Bug#13944).
|
||||
* configure.ac (BSD_SYSTEM, BSD_SYSTEM_AHB): Remove; no longer needed.
|
||||
(fsync): Remove check; now done by gnulib.
|
||||
* lib/fdatasync.c, lib/fsync.c, m4/fdatasync.m4, m4/fsync.m4:
|
||||
New files, from gnulib.
|
||||
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
|
||||
|
||||
Merge from gnulib, incorporating:
|
||||
2013-03-13 putenv: port to Solaris 10
|
||||
2013-03-12 mktime: fix configure typo
|
||||
2013-03-11 regex: port to mingw's recent addition of undeclared alarm
|
||||
2013-03-11 putenv: avoid compilation warning on mingw
|
||||
2013-03-11 unistd: don't prevent Tru64 Unix from using gnulib strtod.
|
||||
|
||||
2013-03-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* configure.ac (TERM_HEADER): Remove duplicate definition (Bug#13872).
|
||||
|
|
|
@ -9,7 +9,6 @@ documented in config.in, and this file would not be necessary.
|
|||
|
||||
AIX
|
||||
_AIX
|
||||
BSD_SYSTEM
|
||||
CYGWIN Compiling the Cygwin port.
|
||||
__CYGWIN__ Ditto
|
||||
GNU_LINUX
|
||||
|
@ -149,7 +148,6 @@ HAVE_FORK
|
|||
HAVE_FREEIFADDRS
|
||||
HAVE_FREETYPE
|
||||
HAVE_FSEEKO
|
||||
HAVE_FSYNC
|
||||
HAVE_FUTIMENS
|
||||
HAVE_FUTIMES
|
||||
HAVE_FUTIMESAT
|
||||
|
|
|
@ -1,3 +1,20 @@
|
|||
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
File synchronization fixes (Bug#13944).
|
||||
* CPP-DEFINES (BSD_SYSTEM, HAVE_FSYNC): Remove.
|
||||
* merge-gnulib (GNULIB_MODULES): Add fsync, fdatasync.
|
||||
|
||||
2013-03-11 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* notes/unicode: Improve notes about Emacs source file encoding.
|
||||
|
||||
2013-03-11 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* admin.el (make-manuals): Add emacs-lisp-intro and some more
|
||||
doc/misc manuals.
|
||||
(manual-html-mono, manual-html-node, manual-txt):
|
||||
Pass -I to makeinfo.
|
||||
|
||||
2013-03-10 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* admin.el (add-release-logs): Use UTC for release date.
|
||||
|
|
|
@ -228,17 +228,33 @@ Root must be the root of an Emacs source tree."
|
|||
(manual-pdf texi (expand-file-name "elisp.pdf" dest))
|
||||
(manual-dvi texi (expand-file-name "elisp.dvi" dvi-dir)
|
||||
(expand-file-name "elisp.ps" ps-dir)))
|
||||
(let ((texi (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root))
|
||||
(dest (expand-file-name "emacs-lisp-intro" dest))
|
||||
dest2 dest3)
|
||||
;; Mimic the atypical directory layout used for emacs-lisp-intro.
|
||||
(make-directory dest)
|
||||
(make-directory (setq dest2 (expand-file-name "html_node" dest)))
|
||||
(manual-html-node texi dest2)
|
||||
(make-directory (setq dest2 (expand-file-name "html_mono" dest)))
|
||||
(manual-html-mono texi (expand-file-name "emacs-lisp-intro.html" dest2))
|
||||
(make-directory (setq dest2 (expand-file-name "txt" dest)))
|
||||
(manual-txt texi (expand-file-name "emacs-lisp-intro.txt" dest2))
|
||||
(manual-pdf texi (expand-file-name "emacs-lisp-intro.pdf" dest))
|
||||
(make-directory (setq dest2 (expand-file-name "dvi" dest)))
|
||||
(make-directory (setq dest3 (expand-file-name "ps" dest)))
|
||||
(manual-dvi texi (expand-file-name "emacs-lisp-intro.dvi" dest2)
|
||||
(expand-file-name "emacs-lisp-intro.ps" dest3)))
|
||||
;; Misc manuals
|
||||
(let ((manuals '("ada-mode" "auth" "autotype" "calc" "cc-mode"
|
||||
(let ((manuals '("ada-mode" "auth" "autotype" "bovine" "calc" "cc-mode"
|
||||
"cl" "dbus" "dired-x" "ebrowse" "ede" "ediff"
|
||||
"edt" "eieio" "emacs-mime" "epa" "erc" "ert"
|
||||
"edt" "eieio" "emacs-gnutls" "emacs-mime" "epa" "erc" "ert"
|
||||
"eshell" "eudc" "faq" "flymake" "forms"
|
||||
"gnus" "emacs-gnutls" "idlwave" "info"
|
||||
"gnus" "htmlfontify" "idlwave" "info"
|
||||
"mairix-el" "message" "mh-e" "newsticker"
|
||||
"nxml-mode" "org" "pcl-cvs" "pgg" "rcirc"
|
||||
"remember" "reftex" "sasl" "sc" "semantic"
|
||||
"ses" "sieve" "smtpmail" "speedbar" "tramp"
|
||||
"url" "vip" "viper" "widget" "woman")))
|
||||
"reftex" "remember" "sasl" "sc" "semantic"
|
||||
"ses" "sieve" "smtpmail" "speedbar" "srecode" "tramp"
|
||||
"url" "vip" "viper" "widget" "wisent" "woman")))
|
||||
(dolist (manual manuals)
|
||||
(manual-misc-html manual root html-node-dir html-mono-dir)))
|
||||
(message "Manuals created in %s" dest)))
|
||||
|
@ -269,6 +285,10 @@ This function also edits the HTML files so that they validate as
|
|||
HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
|
||||
the @import directive."
|
||||
(call-process "makeinfo" nil nil nil
|
||||
"-I" (expand-file-name "../emacs"
|
||||
(file-name-directory texi-file))
|
||||
"-I" (expand-file-name "../misc"
|
||||
(file-name-directory texi-file))
|
||||
"--html" "--no-split" texi-file "-o" dest)
|
||||
(with-temp-buffer
|
||||
(insert-file-contents dest)
|
||||
|
@ -290,6 +310,10 @@ the @import directive."
|
|||
(unless (file-exists-p texi-file)
|
||||
(error "Manual file %s not found" texi-file))
|
||||
(call-process "makeinfo" nil nil nil
|
||||
"-I" (expand-file-name "../emacs"
|
||||
(file-name-directory texi-file))
|
||||
"-I" (expand-file-name "../misc"
|
||||
(file-name-directory texi-file))
|
||||
"--html" texi-file "-o" dir)
|
||||
;; Loop through the node files, fixing them up.
|
||||
(dolist (f (directory-files dir nil "\\.html\\'"))
|
||||
|
@ -321,6 +345,10 @@ the @import directive."
|
|||
(defun manual-txt (texi-file dest)
|
||||
"Run Makeinfo on TEXI-FILE, emitting plaintext output to DEST."
|
||||
(call-process "makeinfo" nil nil nil
|
||||
"-I" (expand-file-name "../emacs"
|
||||
(file-name-directory texi-file))
|
||||
"-I" (expand-file-name "../misc"
|
||||
(file-name-directory texi-file))
|
||||
"--plaintext" "--no-split" texi-file "-o" dest)
|
||||
(shell-command (concat "gzip -c " dest " > " (concat dest ".gz"))))
|
||||
|
||||
|
|
|
@ -29,7 +29,8 @@ GNULIB_MODULES='
|
|||
alloca-opt c-ctype c-strcase
|
||||
careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
|
||||
dtoastr dtotimespec dup2 environ execinfo faccessat
|
||||
fcntl-h fdopendir filemode fstatat getloadavg getopt-gnu gettime gettimeofday
|
||||
fcntl-h fdatasync fdopendir filemode fstatat fsync
|
||||
getloadavg getopt-gnu gettime gettimeofday
|
||||
ignore-value intprops largefile lstat
|
||||
manywarnings memrchr mktime
|
||||
pselect pthread_sigmask putenv readlink readlinkat
|
||||
|
|
|
@ -104,12 +104,15 @@ Source file encoding
|
|||
|
||||
Most Emacs source files are encoded in UTF-8 (or in ASCII, which is a
|
||||
subset), but there are a few exceptions, listed below. Perhaps
|
||||
someday these files will be converted to UTF-8, for convenience when
|
||||
using tools like 'grep -r', but this might need nontrivial changes to
|
||||
the build process.
|
||||
someday many of these files will be converted to UTF-8, for
|
||||
convenience when using tools like 'grep -r', but this might need
|
||||
nontrivial changes to the build process.
|
||||
|
||||
* chinese-big5
|
||||
|
||||
These are verbatim copies of files taken from external sources.
|
||||
They haven't been converted to UTF-8.
|
||||
|
||||
leim/CXTERM-DIC/4Corner.tit
|
||||
leim/CXTERM-DIC/ARRAY30.tit
|
||||
leim/CXTERM-DIC/ECDICT.tit
|
||||
|
@ -123,6 +126,9 @@ the build process.
|
|||
|
||||
* chinese-iso-8bit
|
||||
|
||||
These are verbatim copies of files taken from external sources.
|
||||
They haven't been converted to UTF-8.
|
||||
|
||||
leim/CXTERM-DIC/CCDOSPY.tit
|
||||
leim/CXTERM-DIC/Punct.tit
|
||||
leim/CXTERM-DIC/QJ.tit
|
||||
|
@ -132,28 +138,74 @@ the build process.
|
|||
leim/MISC-DIC/CTLau.html
|
||||
leim/MISC-DIC/ziranma.cin
|
||||
|
||||
* cp850
|
||||
|
||||
This file contains non-ASCII characters in unibyte strings. When
|
||||
editing a keyboard layout it's more convenient to see 'é' than
|
||||
'\202', and the MS-DOS compiler requires the single byte if a
|
||||
backslash escape is not being used.
|
||||
|
||||
src/msdos.c
|
||||
|
||||
* iso-2022-cn-ext
|
||||
|
||||
This file is externally generated from leim/MISC-DIC/cangjie-table.b5
|
||||
by Big5->CNS converter. It hasn't been converted to UTF-8.
|
||||
|
||||
leim/MISC-DIC/cangjie-table.cns
|
||||
|
||||
* iso-latin-2
|
||||
|
||||
etc/refcards/cs-refcard.tex
|
||||
etc/refcards/sk-survival.tex
|
||||
etc/refcards/cs-survival.tex
|
||||
These files are processed by csplain, a program that requires
|
||||
Latin-2 input. In 2012 the csplain maintainers started
|
||||
recommending UTF-8, but these files haven't been converted yet.
|
||||
|
||||
etc/refcards/cs-dired-ref.tex
|
||||
etc/refcards/cs-refcard.tex
|
||||
etc/refcards/cs-survival.tex
|
||||
etc/refcards/sk-dired-ref.tex
|
||||
etc/refcards/sk-refcard.tex
|
||||
etc/refcards/sk-survival.tex
|
||||
|
||||
* japanese-iso-8bit
|
||||
|
||||
SKK-JISYO.L is a verbatim copy of a file taken from an external source.
|
||||
ja-dic.el is generated automatically by skkdic-convert; this process
|
||||
hasn't been converted to use UTF-8.
|
||||
|
||||
leim/SKK-DIC/SKK-JISYO.L
|
||||
leim/ja-dic/ja-dic.el
|
||||
|
||||
* japanese-shift-jis
|
||||
|
||||
This is a verbatim copy of a file taken from an external source.
|
||||
It hasn't been converted to UTF-8.
|
||||
|
||||
admin/charsets/mapfiles/cns2ucsdkw.txt
|
||||
|
||||
* no-conversion
|
||||
|
||||
This file purposely contains arbitrary bytes interspersed within text,
|
||||
to test whether the Emacs distribution is corrupted.
|
||||
|
||||
lib-src/testfile
|
||||
|
||||
* iso-2022-7bit
|
||||
|
||||
This file contains significant charset information, which is not
|
||||
encoded in UTF-8.
|
||||
|
||||
etc/HELLO
|
||||
|
||||
These files contain characters that cannot be encoded in UTF-8.
|
||||
|
||||
leim/quail/tibetan.el
|
||||
leim/quail/ethiopic.el
|
||||
lisp/international/titdic-cnv.el
|
||||
lisp/language/tibetan.el
|
||||
lisp/language/tibet-util.el
|
||||
lisp/language/ind-util.el
|
||||
|
||||
|
||||
This file is part of GNU Emacs.
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=dup --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h fdopendir filemode fstatat getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings memrchr mktime pselect pthread_sigmask putenv readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=dup --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings memrchr mktime pselect pthread_sigmask putenv readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
|
@ -71,8 +71,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
|
|||
$(top_srcdir)/m4/extensions.m4 \
|
||||
$(top_srcdir)/m4/extern-inline.m4 \
|
||||
$(top_srcdir)/m4/faccessat.m4 $(top_srcdir)/m4/fcntl_h.m4 \
|
||||
$(top_srcdir)/m4/fdopendir.m4 $(top_srcdir)/m4/filemode.m4 \
|
||||
$(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fstatat.m4 \
|
||||
$(top_srcdir)/m4/fdatasync.m4 $(top_srcdir)/m4/fdopendir.m4 \
|
||||
$(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/fpending.m4 \
|
||||
$(top_srcdir)/m4/fstatat.m4 $(top_srcdir)/m4/fsync.m4 \
|
||||
$(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/getloadavg.m4 \
|
||||
$(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gettime.m4 \
|
||||
$(top_srcdir)/m4/gettimeofday.m4 \
|
||||
|
@ -657,6 +658,7 @@ LIBX_OTHER = @LIBX_OTHER@
|
|||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
LIB_EACCESS = @LIB_EACCESS@
|
||||
LIB_EXECINFO = @LIB_EXECINFO@
|
||||
LIB_FDATASYNC = @LIB_FDATASYNC@
|
||||
LIB_MATH = @LIB_MATH@
|
||||
LIB_PTHREAD = @LIB_PTHREAD@
|
||||
LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@
|
||||
|
@ -988,13 +990,13 @@ EXTRA_DIST = alloca.in.h allocator.h openat-priv.h openat-proc.c \
|
|||
careadlinkat.h close-stream.h md5.h sha1.h sha256.h sha512.h \
|
||||
dirent.in.h dosname.h ftoastr.c ftoastr.h dup2.c euidaccess.c \
|
||||
execinfo.c execinfo.in.h at-func.c faccessat.c fcntl.in.h \
|
||||
fdopendir.c filemode.h fpending.c fpending.h at-func.c \
|
||||
fstatat.c getgroups.c getloadavg.c getopt.c getopt.in.h \
|
||||
getopt1.c getopt_int.h gettimeofday.c group-member.c \
|
||||
ignore-value.h intprops.h inttypes.in.h lstat.c memrchr.c \
|
||||
mktime-internal.h mktime.c openat.h pathmax.h pselect.c \
|
||||
pthread_sigmask.c putenv.c readlink.c at-func.c readlinkat.c \
|
||||
root-uid.h sig2str.c sig2str.h signal.in.h \
|
||||
fdatasync.c fdopendir.c filemode.h fpending.c fpending.h \
|
||||
at-func.c fstatat.c fsync.c getgroups.c getloadavg.c getopt.c \
|
||||
getopt.in.h getopt1.c getopt_int.h gettimeofday.c \
|
||||
group-member.c ignore-value.h intprops.h inttypes.in.h lstat.c \
|
||||
memrchr.c mktime-internal.h mktime.c openat.h pathmax.h \
|
||||
pselect.c pthread_sigmask.c putenv.c readlink.c at-func.c \
|
||||
readlinkat.c root-uid.h sig2str.c sig2str.h signal.in.h \
|
||||
$(top_srcdir)/build-aux/snippet/_Noreturn.h \
|
||||
$(top_srcdir)/build-aux/snippet/arg-nonnull.h \
|
||||
$(top_srcdir)/build-aux/snippet/c++defs.h \
|
||||
|
@ -1028,13 +1030,13 @@ libgnu_a_SOURCES = allocator.c c-ctype.h c-ctype.c c-strcase.h \
|
|||
libgnu_a_LIBADD = $(gl_LIBOBJS)
|
||||
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
|
||||
EXTRA_libgnu_a_SOURCES = openat-proc.c ftoastr.c dup2.c euidaccess.c \
|
||||
execinfo.c at-func.c faccessat.c fdopendir.c fpending.c \
|
||||
at-func.c fstatat.c getgroups.c getloadavg.c getopt.c \
|
||||
getopt1.c gettimeofday.c group-member.c lstat.c memrchr.c \
|
||||
mktime.c pselect.c pthread_sigmask.c putenv.c readlink.c \
|
||||
at-func.c readlinkat.c sig2str.c stat.c strtoimax.c strtol.c \
|
||||
strtoll.c strtol.c strtoul.c strtoull.c strtoimax.c \
|
||||
strtoumax.c symlink.c time_r.c unsetenv.c
|
||||
execinfo.c at-func.c faccessat.c fdatasync.c fdopendir.c \
|
||||
fpending.c at-func.c fstatat.c fsync.c getgroups.c \
|
||||
getloadavg.c getopt.c getopt1.c gettimeofday.c group-member.c \
|
||||
lstat.c memrchr.c mktime.c pselect.c pthread_sigmask.c \
|
||||
putenv.c readlink.c at-func.c readlinkat.c sig2str.c stat.c \
|
||||
strtoimax.c strtol.c strtoll.c strtol.c strtoul.c strtoull.c \
|
||||
strtoimax.c strtoumax.c symlink.c time_r.c unsetenv.c
|
||||
|
||||
# Because this Makefile snippet defines a variable used by other
|
||||
# gnulib Makefile snippets, it must be present in all Makefile.am that
|
||||
|
@ -1105,10 +1107,12 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/euidaccess.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execinfo.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdopendir.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemode.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpending.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatat.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsync.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftoastr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@
|
||||
|
|
2
autogen/aclocal.m4
vendored
2
autogen/aclocal.m4
vendored
|
@ -998,10 +998,12 @@ m4_include([m4/extensions.m4])
|
|||
m4_include([m4/extern-inline.m4])
|
||||
m4_include([m4/faccessat.m4])
|
||||
m4_include([m4/fcntl_h.m4])
|
||||
m4_include([m4/fdatasync.m4])
|
||||
m4_include([m4/fdopendir.m4])
|
||||
m4_include([m4/filemode.m4])
|
||||
m4_include([m4/fpending.m4])
|
||||
m4_include([m4/fstatat.m4])
|
||||
m4_include([m4/fsync.m4])
|
||||
m4_include([m4/getgroups.m4])
|
||||
m4_include([m4/getloadavg.m4])
|
||||
m4_include([m4/getopt.m4])
|
||||
|
|
|
@ -56,12 +56,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define on FreeBSD to work around an issue when reading from a PTY. */
|
||||
#undef BROKEN_PTY_READ_AFTER_EAGAIN
|
||||
|
||||
/* Define if the system is compatible with BSD 4.2. */
|
||||
#undef BSD_SYSTEM
|
||||
|
||||
/* Define if AH_BOTTOM should change BSD_SYSTEM. */
|
||||
#undef BSD_SYSTEM_AHB
|
||||
|
||||
/* Define if Emacs cannot be dumped on your system. */
|
||||
#undef CANNOT_DUMP
|
||||
|
||||
|
@ -218,9 +212,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if the file /usr/lpp/X11/bin/smt.exp exists. */
|
||||
#undef HAVE_AIX_SMT_EXP
|
||||
|
||||
/* Define to 1 if you have the `alarm' function. */
|
||||
#undef HAVE_ALARM
|
||||
|
||||
/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
|
||||
may be supplied by this distribution. */
|
||||
#undef HAVE_ALLOCA
|
||||
|
@ -281,6 +272,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you have the `dbus_watch_get_unix_fd' function. */
|
||||
#undef HAVE_DBUS_WATCH_GET_UNIX_FD
|
||||
|
||||
/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_ALARM
|
||||
|
||||
/* Define to 1 if you have the declaration of `fdatasync', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_FDATASYNC
|
||||
|
||||
/* Define to 1 if you have the declaration of `fdopendir', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_FDOPENDIR
|
||||
|
@ -329,6 +328,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
don't. */
|
||||
#undef HAVE_DECL_UNSETENV
|
||||
|
||||
/* Define to 1 if you have the declaration of `_putenv', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL__PUTENV
|
||||
|
||||
/* Define to 1 if you have the declaration of `__fpending', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL___FPENDING
|
||||
|
@ -373,6 +376,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you have the `faccessat' function. */
|
||||
#undef HAVE_FACCESSAT
|
||||
|
||||
/* Define to 1 if you have the `fdatasync' function. */
|
||||
#undef HAVE_FDATASYNC
|
||||
|
||||
/* Define to 1 if you have the `fdopendir' function. */
|
||||
#undef HAVE_FDOPENDIR
|
||||
|
||||
|
@ -1130,9 +1136,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
/* Define to 1 if you have the `_ftime' function. */
|
||||
#undef HAVE__FTIME
|
||||
|
||||
/* Define to 1 if you have the `_putenv' function. */
|
||||
#undef HAVE__PUTENV
|
||||
|
||||
/* Define to 1 if _setjmp and _longjmp work. */
|
||||
#undef HAVE__SETJMP
|
||||
|
||||
|
|
238
autogen/configure
vendored
238
autogen/configure
vendored
|
@ -1060,6 +1060,7 @@ GNULIB_FUTIMENS
|
|||
GNULIB_FSTATAT
|
||||
GNULIB_FSTAT
|
||||
GNULIB_FCHMODAT
|
||||
LIB_FDATASYNC
|
||||
NEXT_AS_FIRST_DIRECTIVE_FCNTL_H
|
||||
NEXT_FCNTL_H
|
||||
REPLACE_OPENAT
|
||||
|
@ -3340,6 +3341,7 @@ as_fn_append ac_func_list " fdopendir"
|
|||
as_fn_append ac_header_list " stdio_ext.h"
|
||||
as_fn_append ac_func_list " __fpending"
|
||||
as_fn_append ac_func_list " fstatat"
|
||||
as_fn_append ac_func_list " fsync"
|
||||
gl_getopt_required=GNU
|
||||
as_fn_append ac_header_list " getopt.h"
|
||||
as_fn_append ac_func_list " gettimeofday"
|
||||
|
@ -3349,7 +3351,6 @@ as_fn_append ac_header_list " wchar.h"
|
|||
as_fn_append ac_header_list " stdint.h"
|
||||
as_fn_append ac_header_list " inttypes.h"
|
||||
as_fn_append ac_func_list " lstat"
|
||||
as_fn_append ac_func_list " alarm"
|
||||
as_fn_append ac_header_list " sys/select.h"
|
||||
as_fn_append ac_func_list " pselect"
|
||||
as_fn_append ac_func_list " pthread_sigmask"
|
||||
|
@ -7182,10 +7183,12 @@ esac
|
|||
# Code from module extern-inline:
|
||||
# Code from module faccessat:
|
||||
# Code from module fcntl-h:
|
||||
# Code from module fdatasync:
|
||||
# Code from module fdopendir:
|
||||
# Code from module filemode:
|
||||
# Code from module fpending:
|
||||
# Code from module fstatat:
|
||||
# Code from module fsync:
|
||||
# Code from module getgroups:
|
||||
# Code from module getloadavg:
|
||||
# Code from module getopt-gnu:
|
||||
|
@ -13803,7 +13806,7 @@ select getpagesize setlocale \
|
|||
utimes getrlimit setrlimit shutdown getaddrinfo \
|
||||
strsignal setitimer \
|
||||
sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
|
||||
gai_strerror mkstemp getline getdelim fsync sync \
|
||||
gai_strerror mkstemp getline getdelim sync \
|
||||
difftime posix_memalign \
|
||||
getpwent endpwent getgrent endgrent \
|
||||
touchlock \
|
||||
|
@ -15905,7 +15908,6 @@ esac
|
|||
|
||||
|
||||
|
||||
|
||||
case $opsys in
|
||||
aix4-2)
|
||||
$as_echo "#define USG /**/" >>confdefs.h
|
||||
|
@ -15944,44 +15946,11 @@ $as_echo "#define CYGWIN 1" >>confdefs.h
|
|||
;;
|
||||
|
||||
darwin)
|
||||
$as_echo "#define BSD_SYSTEM /**/" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define DARWIN_OS /**/" >>confdefs.h
|
||||
|
||||
;;
|
||||
|
||||
freebsd)
|
||||
|
||||
$as_echo "#define BSD_SYSTEM_AHB 1" >>confdefs.h
|
||||
|
||||
;;
|
||||
|
||||
gnu | netbsd | openbsd )
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#ifndef BSD_SYSTEM
|
||||
# error "BSD_SYSTEM not defined"
|
||||
#endif
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_cpp "$LINENO"; then :
|
||||
|
||||
else
|
||||
$as_echo "#define BSD_SYSTEM 43" >>confdefs.h
|
||||
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
;;
|
||||
|
||||
gnu-linux | gnu-kfreebsd )
|
||||
$as_echo "#define USG /**/" >>confdefs.h
|
||||
|
||||
|
@ -17213,6 +17182,17 @@ _ACEOF
|
|||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_decl "$LINENO" "fdatasync" "ac_cv_have_decl_fdatasync" "$ac_includes_default"
|
||||
if test "x$ac_cv_have_decl_fdatasync" = x""yes; then :
|
||||
ac_have_decl=1
|
||||
else
|
||||
ac_have_decl=0
|
||||
fi
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_DECL_FDATASYNC $ac_have_decl
|
||||
_ACEOF
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for st_dm_mode in struct stat" >&5
|
||||
|
@ -17366,6 +17346,8 @@ _ACEOF
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB__EXIT=0;
|
||||
GNULIB_ATOLL=0;
|
||||
GNULIB_CALLOC_POSIX=0;
|
||||
|
@ -19467,7 +19449,16 @@ _ACEOF
|
|||
REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
|
||||
REPLACE_TIMEGM=GNULIB_PORTCHECK;
|
||||
|
||||
ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default"
|
||||
if test "x$ac_cv_have_decl_alarm" = x""yes; then :
|
||||
ac_have_decl=1
|
||||
else
|
||||
ac_have_decl=0
|
||||
fi
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_DECL_ALARM $ac_have_decl
|
||||
_ACEOF
|
||||
|
||||
|
||||
GNULIB_PSELECT=0;
|
||||
|
@ -21294,6 +21285,114 @@ $as_echo "$gl_cv_next_fcntl_h" >&6; }
|
|||
|
||||
|
||||
|
||||
LIB_FDATASYNC=
|
||||
|
||||
|
||||
if test $ac_cv_have_decl_fdatasync = no; then
|
||||
HAVE_DECL_FDATASYNC=0
|
||||
for ac_func in fdatasync
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "fdatasync" "ac_cv_func_fdatasync"
|
||||
if test "x$ac_cv_func_fdatasync" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_FDATASYNC 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
if test $ac_cv_func_fdatasync = no; then
|
||||
HAVE_FDATASYNC=0
|
||||
fi
|
||||
else
|
||||
gl_saved_libs=$LIBS
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fdatasync" >&5
|
||||
$as_echo_n "checking for library containing fdatasync... " >&6; }
|
||||
if test "${ac_cv_search_fdatasync+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_func_search_save_LIBS=$LIBS
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char fdatasync ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return fdatasync ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
for ac_lib in '' rt posix4; do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
else
|
||||
ac_res=-l$ac_lib
|
||||
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
|
||||
fi
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_search_fdatasync=$ac_res
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext
|
||||
if test "${ac_cv_search_fdatasync+set}" = set; then :
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test "${ac_cv_search_fdatasync+set}" = set; then :
|
||||
|
||||
else
|
||||
ac_cv_search_fdatasync=no
|
||||
fi
|
||||
rm conftest.$ac_ext
|
||||
LIBS=$ac_func_search_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fdatasync" >&5
|
||||
$as_echo "$ac_cv_search_fdatasync" >&6; }
|
||||
ac_res=$ac_cv_search_fdatasync
|
||||
if test "$ac_res" != no; then :
|
||||
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
|
||||
test "$ac_cv_search_fdatasync" = "none required" ||
|
||||
LIB_FDATASYNC=$ac_cv_search_fdatasync
|
||||
fi
|
||||
|
||||
LIBS=$gl_saved_libs
|
||||
fi
|
||||
|
||||
if test $HAVE_FDATASYNC = 0; then
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gl_LIBOBJS="$gl_LIBOBJS fdatasync.$ac_objext"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB_FDATASYNC=1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ac_fn_c_check_decl "$LINENO" "fdopendir" "ac_cv_have_decl_fdopendir" "
|
||||
#include <dirent.h>
|
||||
|
@ -21614,6 +21713,37 @@ $as_echo "#define HAVE_WORKING_FSTATAT_ZERO_FLAG 1" >>confdefs.h
|
|||
|
||||
|
||||
|
||||
|
||||
if test $ac_cv_func_fsync = no; then
|
||||
HAVE_FSYNC=0
|
||||
fi
|
||||
|
||||
if test $HAVE_FSYNC = 0; then
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gl_LIBOBJS="$gl_LIBOBJS fsync.$ac_objext"
|
||||
|
||||
:
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GNULIB_FSYNC=1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Persuade glibc <stdlib.h> to declare getloadavg().
|
||||
|
||||
|
||||
|
@ -22549,8 +22679,8 @@ else
|
|||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_ALARM
|
||||
# define alarm(X) /* empty */
|
||||
#if HAVE_DECL_ALARM
|
||||
# include <signal.h>
|
||||
#endif
|
||||
|
||||
/* Work around redefinition to rpl_putenv by other config tests. */
|
||||
|
@ -22686,10 +22816,13 @@ main ()
|
|||
int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
|
||||
int time_t_signed = ! ((time_t) 0 < (time_t) -1);
|
||||
|
||||
#if HAVE_DECL_ALARM
|
||||
/* This test makes some buggy mktime implementations loop.
|
||||
Give up after 60 seconds; a mktime slower than that
|
||||
isn't worth using anyway. */
|
||||
signal (SIGALRM, SIG_DFL);
|
||||
alarm (60);
|
||||
#endif
|
||||
|
||||
time_t_max = (! time_t_signed
|
||||
? (time_t) -1
|
||||
|
@ -23267,16 +23400,16 @@ $as_echo "$gl_cv_func_svid_putenv" >&6; }
|
|||
gl_LIBOBJS="$gl_LIBOBJS putenv.$ac_objext"
|
||||
|
||||
|
||||
for ac_func in _putenv
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "_putenv" "ac_cv_func__putenv"
|
||||
if test "x$ac_cv_func__putenv" = x""yes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE__PUTENV 1
|
||||
_ACEOF
|
||||
|
||||
ac_fn_c_check_decl "$LINENO" "_putenv" "ac_cv_have_decl__putenv" "$ac_includes_default"
|
||||
if test "x$ac_cv_have_decl__putenv" = x""yes; then :
|
||||
ac_have_decl=1
|
||||
else
|
||||
ac_have_decl=0
|
||||
fi
|
||||
done
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_DECL__PUTENV $ac_have_decl
|
||||
_ACEOF
|
||||
|
||||
|
||||
fi
|
||||
|
@ -26514,15 +26647,8 @@ case "$opsys" in
|
|||
LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
|
||||
|
||||
## This is here because src/Makefile.in did some extra fiddling around
|
||||
## with LD_SWITCH_SYSTEM. The cpp logic was:
|
||||
## #ifndef LD_SWITCH_SYSTEM
|
||||
## #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
|
||||
## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
|
||||
## not using gcc, darwin.
|
||||
## Because this was done in src/Makefile.in, the resulting part of
|
||||
## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
|
||||
## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
|
||||
## rather than LD_SWITCH_SYSTEM.
|
||||
## with LD_SWITCH_SYSTEM. It seems cleaner to put this in
|
||||
## LD_SWITCH_SYSTEM_TEMACS instead,
|
||||
test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
|
||||
LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
|
||||
;;
|
||||
|
|
36
configure.ac
36
configure.ac
|
@ -2872,7 +2872,7 @@ select getpagesize setlocale \
|
|||
utimes getrlimit setrlimit shutdown getaddrinfo \
|
||||
strsignal setitimer \
|
||||
sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
|
||||
gai_strerror mkstemp getline getdelim fsync sync \
|
||||
gai_strerror mkstemp getline getdelim sync \
|
||||
difftime posix_memalign \
|
||||
getpwent endpwent getgrent endgrent \
|
||||
touchlock \
|
||||
|
@ -3774,7 +3774,6 @@ esac
|
|||
|
||||
dnl Define symbols to identify the version of Unix this is.
|
||||
dnl Define all the symbols that apply correctly.
|
||||
AH_TEMPLATE(BSD_SYSTEM, [Define if the system is compatible with BSD 4.2.])
|
||||
AH_TEMPLATE(DOS_NT, [Define if the system is MS DOS or MS Windows.])
|
||||
AH_TEMPLATE(MSDOS, [Define if the system is MS DOS.])
|
||||
AH_TEMPLATE(USG, [Define if the system is compatible with System III.])
|
||||
|
@ -3798,30 +3797,12 @@ case $opsys in
|
|||
;;
|
||||
|
||||
darwin)
|
||||
dnl BSD4_3 and BSD4_4 are already defined in sys/param.h.
|
||||
AC_DEFINE(BSD_SYSTEM, [])
|
||||
dnl More specific than the above two. We cannot use __APPLE__ as this
|
||||
dnl may not be defined on non-OSX Darwin, and we cannot define DARWIN
|
||||
dnl here because Panther and lower CoreFoundation.h uses DARWIN to
|
||||
dnl Not __APPLE__, as this may not be defined on non-OSX Darwin.
|
||||
dnl Not DARWIN, because Panther and lower CoreFoundation.h use DARWIN to
|
||||
dnl distinguish OS X from pure Darwin.
|
||||
AC_DEFINE(DARWIN_OS, [], [Define if the system is Darwin.])
|
||||
;;
|
||||
|
||||
freebsd)
|
||||
dnl Hack to avoid calling AC_PREPROC_IFELSE multiple times.
|
||||
dnl Would not be needed with autoconf >= 2.67, where the
|
||||
dnl preprocessed output is accessible in "conftest.i".
|
||||
AC_DEFINE(BSD_SYSTEM_AHB, 1, [Define if AH_BOTTOM should change BSD_SYSTEM.])
|
||||
;;
|
||||
|
||||
gnu | netbsd | openbsd )
|
||||
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifndef BSD_SYSTEM
|
||||
# error "BSD_SYSTEM not defined"
|
||||
#endif
|
||||
]], [[]])], [], AC_DEFINE(BSD_SYSTEM, 43) )
|
||||
;;
|
||||
|
||||
gnu-linux | gnu-kfreebsd )
|
||||
AC_DEFINE(USG, [])
|
||||
AC_DEFINE(GNU_LINUX, [], [Define if ths system is compatible with GNU/Linux.])
|
||||
|
@ -4185,15 +4166,8 @@ case "$opsys" in
|
|||
LD_SWITCH_SYSTEM_TEMACS="-fno-pie -prebind $libs_nsgui -Xlinker -headerpad -Xlinker $headerpad_extra"
|
||||
|
||||
## This is here because src/Makefile.in did some extra fiddling around
|
||||
## with LD_SWITCH_SYSTEM. The cpp logic was:
|
||||
## #ifndef LD_SWITCH_SYSTEM
|
||||
## #if !defined (__GNUC__) && ((defined (BSD_SYSTEM) && !defined (COFF)))
|
||||
## Since all the *bsds define LD_SWITCH_SYSTEM, this simplifies to:
|
||||
## not using gcc, darwin.
|
||||
## Because this was done in src/Makefile.in, the resulting part of
|
||||
## LD_SWITCH_SYSTEM was not used in configure (ie, in ac_link).
|
||||
## It therefore seems cleaner to put this in LD_SWITCH_SYSTEM_TEMACS,
|
||||
## rather than LD_SWITCH_SYSTEM.
|
||||
## with LD_SWITCH_SYSTEM. It seems cleaner to put this in
|
||||
## LD_SWITCH_SYSTEM_TEMACS instead,
|
||||
test "x$LD_SWITCH_SYSTEM" = "x" && test "x$GCC" != "xyes" && \
|
||||
LD_SWITCH_SYSTEM_TEMACS="-X $LD_SWITCH_SYSTEM_TEMACS"
|
||||
;;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2013-03-11 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* control.texi (Pattern matching case statement): Fix typo.
|
||||
|
||||
2013-03-04 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* elisp.texi, intro.texi: Switch from Latin-1 to UTF-8.
|
||||
|
|
|
@ -373,7 +373,7 @@ symbol to the value that it matched, so that you can later refer to it, either
|
|||
in the @var{body-forms} or also later in the pattern.
|
||||
@item _
|
||||
This so-called @emph{don't care} pattern matches anything, like the previous
|
||||
one, but unless symbol patterns it does not bind any variable.
|
||||
one, but unlike symbol patterns it does not bind any variable.
|
||||
@item (pred @var{pred})
|
||||
This pattern matches if the function @var{pred} returns non-@code{nil} when
|
||||
called with the object being matched.
|
||||
|
|
|
@ -632,8 +632,9 @@ possible. The value @code{fullboth} specifies that both the width and
|
|||
the height shall be set to the size of the screen. The value
|
||||
@code{maximized} specifies that the frame shall be maximized. The
|
||||
difference between @code{maximized} and @code{fullboth} is that the
|
||||
former still has window manager decorations while the latter really
|
||||
covers the whole screen.
|
||||
former can still be resized by dragging window manager decorations
|
||||
with the mouse, while the latter really covers the whole screen and
|
||||
does not allow resizing by mouse dragging.
|
||||
@end table
|
||||
|
||||
@node Layout Parameters
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2013-03-15 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
Sync with Tramp 2.2.7.
|
||||
|
||||
* trampver.texi: Update release number.
|
||||
|
||||
2013-03-09 Jay Belanger <jay.p.belanger@gmail.com>
|
||||
|
||||
* calc.texi (Basic Operations on Units): Streamline some
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
@c In the Tramp CVS, the version number is auto-frobbed from
|
||||
@c configure.ac, so you should edit that file and run
|
||||
@c "autoconf && ./configure" to change the version number.
|
||||
@set trampver 2.2.7-pre
|
||||
@set trampver 2.2.7
|
||||
|
||||
@c Other flags from configuration
|
||||
@set instprefix /usr/local
|
||||
|
|
|
@ -1,3 +1,20 @@
|
|||
2013-03-12 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Add coding tags for iso-2022-7bit files that are not already tagged.
|
||||
* HELLO, tutorials/TUTORIAL.ko, tutorials/TUTORIAL.th:
|
||||
Add coding tag. For TUTORIAL.th this prevents Emacs from
|
||||
misinterpreting the file.
|
||||
|
||||
Switch encodings of tutorials, thai-word to UTF-8 (Bug#13880).
|
||||
* refcards/ru-refcard.tex:
|
||||
* tutorials/TUTORIAL.bg, tutorials/TUTORIAL.bg, tutorials/TUTORIAL.cn:
|
||||
* tutorials/TUTORIAL.cs, tutorials/TUTORIAL.de, tutorials/TUTORIAL.eo:
|
||||
* tutorials/TUTORIAL.es, tutorials/TUTORIAL.fr, tutorials/TUTORIAL.it:
|
||||
* tutorials/TUTORIAL.nl, tutorials/TUTORIAL.pl, tutorials/TUTORIAL.pt_BR:
|
||||
* tutorials/TUTORIAL.ro, tutorials/TUTORIAL.sk, tutorials/TUTORIAL.sv:
|
||||
* tutorials/TUTORIAL.zh:
|
||||
Switch to UTF-8.
|
||||
|
||||
2013-03-09 Jay Belanger <jay.p.belanger@gmail.com>
|
||||
|
||||
* refcards/calccard.tex: Remove incorrect entry.
|
||||
|
|
|
@ -93,4 +93,5 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
|||
;;; Local Variables:
|
||||
;;; tab-width: 32
|
||||
;;; bidi-display-reordering: t
|
||||
;;; coding: iso-2022-7bit
|
||||
;;; End:
|
||||
|
|
20
etc/NEWS
20
etc/NEWS
|
@ -85,6 +85,26 @@ Eg View mode, etc.
|
|||
|
||||
* Changes in Specialized Modes and Packages in Emacs 24.4
|
||||
|
||||
** More packages look for ~/.emacs.d/<foo> additionally to ~/.<foo>.
|
||||
Affected files:
|
||||
~/.emacs.d/timelog replaces ~/.timelog
|
||||
~/.emacs.d/todo-do replaces ~/.todo-do
|
||||
~/.emacs.d/todo-done replaces ~/.todo-done
|
||||
~/.emacs.d/todo-top replaces ~/.todo-top
|
||||
~/.emacs.d/vip replaces ~/.vip
|
||||
~/.emacs.d/viper replaces ~/.viper
|
||||
~/.emacs.d/ido.last replaces ~/.ido.last
|
||||
~/.emacs.d/kkcrc replaces ~/.kkcrc
|
||||
~/.emacs.d/quickurls replaces ~/.quickurls
|
||||
~/.emacs.d/idlwave replaces ~/.idlwave
|
||||
~/.emacs.d/bdfcache.el replaces ~/.bdfcache.el
|
||||
~/.emacs.d/places replaces ~/.emacs-places
|
||||
~/.emacs.d/shadows replaces ~/.shadows
|
||||
~/.emacs.d/shadow_todo replaces ~/.shadow_todo
|
||||
~/.emacs.d/strokes replaces ~/.strokes
|
||||
~/.emacs.d/notes replaces ~/.notes
|
||||
~/.emacs.d/type-break replaces ~/.type-break
|
||||
|
||||
** Delphi mode is now called OPascal mode.
|
||||
*** All delphi-* variables and functions have been renamed to opascal-*.
|
||||
*** `delphi-newline-always-indents' is not supported any more
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
% Reference Card for Dired -*- coding: iso-latin-1 -*-
|
||||
% Reference Card for Dired -*- coding: utf-8 -*-
|
||||
|
||||
% Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -260,7 +260,7 @@
|
|||
% renommer, copier, compresser, compiler des fichiers. Dans le tampon
|
||||
% d'\'edition, vous pouvez modifier les attributs des fichiers, leur
|
||||
% appliquer des commandes
|
||||
% shell ou ins\'erer des sous-r\'epertoires. Vous pouvez « marquer » des
|
||||
% shell ou ins\'erer des sous-r\'epertoires. Vous pouvez « marquer » des
|
||||
% fichiers pour qu'ils soient supprim\'es plus tard ou pour leur
|
||||
% appliquer des commandes ; cela peut \^etre fait pour un seul fichier \`a
|
||||
% la fois ou pour un ensemble de fichiers correspondant \`a certains
|
||||
|
|
|
@ -296,7 +296,7 @@ \section{Arquivos}
|
|||
|
||||
\section{Ajuda (Help)}
|
||||
|
||||
Tecle \kbd{C-h} (ou \kbd{F1}) e siga as instru{\c{c}}{\~o}es.
|
||||
Tecle \kbd{C-h} (ou \kbd{F1}) e siga as instru{\c{c}}{\~o}es.
|
||||
|
||||
\key{remove a janela de ajuda}{C-x 1}
|
||||
\key{rola a janela de ajuda}{C-M-v}
|
||||
|
@ -676,6 +676,5 @@ \section{Escrevendo Comandos}
|
|||
|
||||
% Local variables:
|
||||
% compile-command: "pdftex pt-br-refcard"
|
||||
% coding: iso-latin-1
|
||||
% coding: utf-8
|
||||
% End:
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
\usepackage{multicol,tabularx}
|
||||
\usepackage[a4paper,hmargin={2cm,2cm},vmargin={2cm,2cm},nohead,twoside]{geometry}
|
||||
\usepackage[T2A]{fontenc}
|
||||
\usepackage[koi8-r]{inputenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[english,russian]{babel}
|
||||
\usepackage{verbatim}
|
||||
%\usepackage{enumerate,calc}
|
||||
|
@ -33,7 +33,7 @@
|
|||
\centerline{Copyright \copyright\ \cyear\ Free Software Foundation, Inc.}
|
||||
\centerline{For GNU Emacs version \versionemacs}
|
||||
\centerline{Designed by Stephen Gildea}
|
||||
\centerline{Перевод Alex Ott <alexott@gmail.com>}
|
||||
\centerline{Перевод Alex Ott <alexott@gmail.com>}
|
||||
|
||||
Permission is granted to make and distribute copies of
|
||||
this card provided the copyright notice and this permission notice
|
||||
|
@ -55,441 +55,441 @@
|
|||
|
||||
%\begin{multicols}{3}
|
||||
|
||||
\centerline{Справочник команд GNU Emacs}
|
||||
\centerline{(для версии \versionemacs)}
|
||||
\centerline{Справочник команд GNU Emacs}
|
||||
\centerline{(для версии \versionemacs)}
|
||||
|
||||
\section{Запуск Emacs}
|
||||
\section{Запуск Emacs}
|
||||
|
||||
Для запуска GNU Emacs \versionemacs, просто наберите имя программы: \kbd{emacs}
|
||||
Для запуска GNU Emacs \versionemacs, просто наберите имя программы: \kbd{emacs}
|
||||
|
||||
\section{Выход из Emacs}
|
||||
\section{Выход из Emacs}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
Приостановить работу Emacs (или свернуть в иконку при работе в X) & \kbd{C-z} \\
|
||||
Выйти из Emacs & \kbd{C-x C-c} \\
|
||||
Приостановить работу Emacs (или свернуть в иконку при работе в X) & \kbd{C-z} \\
|
||||
Выйти из Emacs & \kbd{C-x C-c} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Файлы}
|
||||
\section{Файлы}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
{\bf открыть} файл в Emacs & \kbd{C-x C-f} \\
|
||||
{\bf сохранить} файл обратно на диск & \kbd{C-x C-s} \\
|
||||
сохранить {\bf все} файлы & \kbd{C-x s} \\
|
||||
{\bf вставить} содержимое другого файла в текущий буфер & \kbd{C-x i} \\
|
||||
открыть нужный вам файл вместо текущего & \kbd{C-x C-v} \\
|
||||
сохранить буфер в указанном файле & \kbd{C-x C-w} \\
|
||||
Переключить состояние буфера ``только для чтения'' & \kbd{C-x C-q} \\
|
||||
{\bf открыть} файл в Emacs & \kbd{C-x C-f} \\
|
||||
{\bf сохранить} файл обратно на диск & \kbd{C-x C-s} \\
|
||||
сохранить {\bf все} файлы & \kbd{C-x s} \\
|
||||
{\bf вставить} содержимое другого файла в текущий буфер & \kbd{C-x i} \\
|
||||
открыть нужный вам файл вместо текущего & \kbd{C-x C-v} \\
|
||||
сохранить буфер в указанном файле & \kbd{C-x C-w} \\
|
||||
Переключить состояние буфера ``только для чтения'' & \kbd{C-x C-q} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Получение помощи}
|
||||
\section{Получение помощи}
|
||||
|
||||
Справочная система достаточно проста. Hажмите \kbd{C-h} (или \kbd{F1}) и
|
||||
следуйте инструкциям. Если вы в первый раз работаете с Emacs, то наберите
|
||||
\kbd{C-u C-h t Russian RET} для вызова {\bf учебника}.
|
||||
Справочная система достаточно проста. Hажмите \kbd{C-h} (или \kbd{F1}) и
|
||||
следуйте инструкциям. Если вы в первый раз работаете с Emacs, то наберите
|
||||
\kbd{C-u C-h t Russian RET} для вызова {\bf учебника}.
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
Скрыть окно справки & \kbd{C-x 1} \\
|
||||
Прокрутить окно справки & \kbd{C-M-v} \\
|
||||
Скрыть окно справки & \kbd{C-x 1} \\
|
||||
Прокрутить окно справки & \kbd{C-M-v} \\
|
||||
|
||||
apropos: показать команды, соответствующие строке & \kbd{C-h a} \\
|
||||
показать имя функции, которая запускается клавишей & \kbd{C-h k} \\
|
||||
получить информацию о функции & \kbd{C-h f} \\
|
||||
получить информацию о режиме & \kbd{C-h m} \\
|
||||
apropos: показать команды, соответствующие строке & \kbd{C-h a} \\
|
||||
показать имя функции, которая запускается клавишей & \kbd{C-h k} \\
|
||||
получить информацию о функции & \kbd{C-h f} \\
|
||||
получить информацию о режиме & \kbd{C-h m} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Исправление ошибок}
|
||||
\section{Исправление ошибок}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
{\bf прервать} частично набранную или исполняемую команду & \kbd{C-g} \\
|
||||
{\bf восстановить} файл, потерянный при крахе системы & \kbd{M-x recover-file} \\
|
||||
{\bf отменить} нежелательные изменения & \kbd{C-x u, C-\_ {\rm или} C-/} \\
|
||||
восстановить буфер в первоначальное состояние & \kbd{M-x revert-buffer} \\
|
||||
перерисовать заполненный мусором экран & \kbd{C-l} \\
|
||||
{\bf прервать} частично набранную или исполняемую команду & \kbd{C-g} \\
|
||||
{\bf восстановить} файл, потерянный при крахе системы & \kbd{M-x recover-file} \\
|
||||
{\bf отменить} нежелательные изменения & \kbd{C-x u, C-\_ {\rm или} C-/} \\
|
||||
восстановить буфер в первоначальное состояние & \kbd{M-x revert-buffer} \\
|
||||
перерисовать заполненный мусором экран & \kbd{C-l} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Hаращиваемый поиск}
|
||||
\section{Hаращиваемый поиск}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
поиск вперед & \kbd{C-s} \\
|
||||
поиск назад & \kbd{C-r} \\
|
||||
поиск по регулярному выражению вперед & \kbd{C-M-s} \\
|
||||
поиск по регулярному выражению назад & \kbd{C-M-r} \\
|
||||
поиск вперед & \kbd{C-s} \\
|
||||
поиск назад & \kbd{C-r} \\
|
||||
поиск по регулярному выражению вперед & \kbd{C-M-s} \\
|
||||
поиск по регулярному выражению назад & \kbd{C-M-r} \\
|
||||
|
||||
выбрать предыдущую строку поиска & \kbd{M-p} \\
|
||||
выбрать следующую строку поиска & \kbd{M-n} \\
|
||||
прекратить наращиваемый поиск & \kbd{RET} \\
|
||||
отменить эффект ввода последнего символа & \kbd{DEL} \\
|
||||
прервать текущий поиск & \kbd{C-g} \\
|
||||
выбрать предыдущую строку поиска & \kbd{M-p} \\
|
||||
выбрать следующую строку поиска & \kbd{M-n} \\
|
||||
прекратить наращиваемый поиск & \kbd{RET} \\
|
||||
отменить эффект ввода последнего символа & \kbd{DEL} \\
|
||||
прервать текущий поиск & \kbd{C-g} \\
|
||||
\end{tabular}
|
||||
|
||||
Для повтора поиска в любом направлении используйте клавиши \kbd{C-s} или
|
||||
\kbd{C-r}. Если Emacs все еще производит поиск, \kbd{C-g} отменит только
|
||||
не выполненную часть.
|
||||
Для повтора поиска в любом направлении используйте клавиши \kbd{C-s} или
|
||||
\kbd{C-r}. Если Emacs все еще производит поиск, \kbd{C-g} отменит только
|
||||
не выполненную часть.
|
||||
|
||||
\section{Перемещение}
|
||||
\section{Перемещение}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
{\bf единицы перемещения} & {\bf назад} & {\bf вперед} \\
|
||||
символ & \kbd{C-b} & \kbd{C-f} \\
|
||||
слово & \kbd{M-b} & \kbd{M-f} \\
|
||||
строка & \kbd{C-p} & \kbd{C-n} \\
|
||||
начало (или конец) строки & \kbd{C-a} & \kbd{C-e} \\
|
||||
предложение & \kbd{M-a} & \kbd{M-e} \\
|
||||
абзац & \kbd{M-\{} & \kbd{M-\}} \\
|
||||
страница & \kbd{C-x [} & \kbd{C-x ]} \\
|
||||
выражение (sexp) & \kbd{C-M-b} & \kbd{C-M-f} \\
|
||||
функция & \kbd{C-M-a} & \kbd{C-M-e} \\
|
||||
переход в начало (или конец) буфера & \kbd{M-<} & \kbd{M->} \\
|
||||
{\bf единицы перемещения} & {\bf назад} & {\bf вперед} \\
|
||||
символ & \kbd{C-b} & \kbd{C-f} \\
|
||||
слово & \kbd{M-b} & \kbd{M-f} \\
|
||||
строка & \kbd{C-p} & \kbd{C-n} \\
|
||||
начало (или конец) строки & \kbd{C-a} & \kbd{C-e} \\
|
||||
предложение & \kbd{M-a} & \kbd{M-e} \\
|
||||
абзац & \kbd{M-\{} & \kbd{M-\}} \\
|
||||
страница & \kbd{C-x [} & \kbd{C-x ]} \\
|
||||
выражение (sexp) & \kbd{C-M-b} & \kbd{C-M-f} \\
|
||||
функция & \kbd{C-M-a} & \kbd{C-M-e} \\
|
||||
переход в начало (или конец) буфера & \kbd{M-<} & \kbd{M->} \\
|
||||
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
прокрутка экрана вниз & \kbd{C-v} \\
|
||||
прокрутка экрана вверх & \kbd{M-v} \\
|
||||
прокрутка влево & \kbd{C-x <} \\
|
||||
прокрутка вправо & \kbd{C-x >} \\
|
||||
установка текущей строки в центр экрана & \kbd{C-u C-l} \\
|
||||
прокрутка экрана вниз & \kbd{C-v} \\
|
||||
прокрутка экрана вверх & \kbd{M-v} \\
|
||||
прокрутка влево & \kbd{C-x <} \\
|
||||
прокрутка вправо & \kbd{C-x >} \\
|
||||
установка текущей строки в центр экрана & \kbd{C-u C-l} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Уничтожение и удаление}
|
||||
\section{Уничтожение и удаление}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
{\bf уничтожаемый объект} & {\bf назад} & {\bf вперед} \\
|
||||
символ (удаление, а не уничтожение) & \kbd{DEL} & \kbd{C-d} \\
|
||||
слово & \kbd{M-DEL} & \kbd{M-d} \\
|
||||
строка (до конца строки) & \kbd{M-0 C-k} & \kbd{C-k} \\
|
||||
предложение & \kbd{C-x DEL} & \kbd{M-k} \\
|
||||
выражение & \kbd{M-- C-M-k} & \kbd{C-M-k} \\
|
||||
{\bf уничтожаемый объект} & {\bf назад} & {\bf вперед} \\
|
||||
символ (удаление, а не уничтожение) & \kbd{DEL} & \kbd{C-d} \\
|
||||
слово & \kbd{M-DEL} & \kbd{M-d} \\
|
||||
строка (до конца строки) & \kbd{M-0 C-k} & \kbd{C-k} \\
|
||||
предложение & \kbd{C-x DEL} & \kbd{M-k} \\
|
||||
выражение & \kbd{M-- C-M-k} & \kbd{C-M-k} \\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
уничтожить {\bf область} & \kbd{C-w} \\
|
||||
скопировать область в список уничтожений & \kbd{M-w} \\
|
||||
уничтожить до следующего вхождения символа {\it char} & \kbd{M-z {\it char}} \\
|
||||
уничтожить {\bf область} & \kbd{C-w} \\
|
||||
скопировать область в список уничтожений & \kbd{M-w} \\
|
||||
уничтожить до следующего вхождения символа {\it char} & \kbd{M-z {\it char}} \\
|
||||
|
||||
вставить последний уничтоженный объект & \kbd{C-y} \\
|
||||
заменить только что восстановленный текст предшествующим уничтоженным текстом & M-y \\
|
||||
вставить последний уничтоженный объект & \kbd{C-y} \\
|
||||
заменить только что восстановленный текст предшествующим уничтоженным текстом & M-y \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Пометка}
|
||||
\section{Пометка}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
установить пометки & \kbd{C-@ {\rm или} C-SPC} \\
|
||||
поменять местами курсор и пометку & \kbd{C-x C-x} \\
|
||||
установить пометки & \kbd{C-@ {\rm или} C-SPC} \\
|
||||
поменять местами курсор и пометку & \kbd{C-x C-x} \\
|
||||
|
||||
пометить {\it arg\/} {\bf слов} & \kbd{M-@} \\
|
||||
пометить {\bf параграф} & \kbd{M-h} \\
|
||||
пометить {\bf страницу} & \kbd{C-x C-p} \\
|
||||
пометить {\bf выражение} & \kbd{C-M-@} \\
|
||||
пометить {\bf функцию} & \kbd{C-M-h} \\
|
||||
пометить весь {\bf буфер} & \kbd{C-x h} \\
|
||||
пометить {\it arg\/} {\bf слов} & \kbd{M-@} \\
|
||||
пометить {\bf параграф} & \kbd{M-h} \\
|
||||
пометить {\bf страницу} & \kbd{C-x C-p} \\
|
||||
пометить {\bf выражение} & \kbd{C-M-@} \\
|
||||
пометить {\bf функцию} & \kbd{C-M-h} \\
|
||||
пометить весь {\bf буфер} & \kbd{C-x h} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Замена с запросом}
|
||||
\section{Замена с запросом}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
интерактивная замена текстовой строки & \kbd{M-\%} \\
|
||||
с использованием регулярных выражений & \kbd{M-x query-replace-regexp} \\
|
||||
интерактивная замена текстовой строки & \kbd{M-\%} \\
|
||||
с использованием регулярных выражений & \kbd{M-x query-replace-regexp} \\
|
||||
\end{tabular}
|
||||
|
||||
В режиме интерактивной замены пользователю доступны следующие команды:
|
||||
В режиме интерактивной замены пользователю доступны следующие команды:
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
{\bf заменить} данное соответствие, перейти к следующему & \kbd{SPC} \\
|
||||
заменить это соответствие, не перемещаться & \kbd{,} \\
|
||||
{\bf пропустить} соответствие без замены & \kbd{DEL} \\
|
||||
заменить все оставшиеся соответствия & \kbd{!} \\
|
||||
{\bf вернуться} к предыдущему соответствию & \kbd{\^} \\
|
||||
{\bf выйти} из режима ``замена с запросом'' & \kbd{RET} \\
|
||||
войти в режим рекурсивного редактирования (для выхода используется \kbd{C-M-c}) & \kbd{C-r} \\
|
||||
{\bf заменить} данное соответствие, перейти к следующему & \kbd{SPC} \\
|
||||
заменить это соответствие, не перемещаться & \kbd{,} \\
|
||||
{\bf пропустить} соответствие без замены & \kbd{DEL} \\
|
||||
заменить все оставшиеся соответствия & \kbd{!} \\
|
||||
{\bf вернуться} к предыдущему соответствию & \kbd{\^} \\
|
||||
{\bf выйти} из режима ``замена с запросом'' & \kbd{RET} \\
|
||||
войти в режим рекурсивного редактирования (для выхода используется \kbd{C-M-c}) & \kbd{C-r} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Использование нескольких окон}
|
||||
\section{Использование нескольких окон}
|
||||
|
||||
Команды, приведенные во втором столбце, применяются к другому
|
||||
фрэйму (окну используемой оконной системы).
|
||||
Команды, приведенные во втором столбце, применяются к другому
|
||||
фрэйму (окну используемой оконной системы).
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
удалить все остальные окна & \kbd{C-x 1} \\
|
||||
удалить все остальные окна & \kbd{C-x 1} \\
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
разбить окно по горизонтали & \kbd{C-x 2\ \ \ \ } & \kbd{C-x 5 2} \\
|
||||
удалить данное окно & \kbd{C-x 0\ \ \ \ } & \kbd{C-x 5 0} \\
|
||||
разбить окно по горизонтали & \kbd{C-x 2\ \ \ \ } & \kbd{C-x 5 2} \\
|
||||
удалить данное окно & \kbd{C-x 0\ \ \ \ } & \kbd{C-x 5 0} \\
|
||||
|
||||
разбить окно по вертикали & \kbd{C-x 3} \\
|
||||
разбить окно по вертикали & \kbd{C-x 3} \\
|
||||
|
||||
выполнить прокрутку в другом окне & \kbd{C-M-v} \\
|
||||
выполнить прокрутку в другом окне & \kbd{C-M-v} \\
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
переместить курсор в другое окно & \kbd{C-x o} & \kbd{C-x 5 o} \\
|
||||
переместить курсор в другое окно & \kbd{C-x o} & \kbd{C-x 5 o} \\
|
||||
|
||||
выбрать буфер в другом окне & \kbd{C-x 4 b} & \kbd{C-x 5 b} \\
|
||||
показать буфер в другом окне & \kbd{C-x 4 C-o} & \kbd{C-x 5 C-o} \\
|
||||
загрузить файл в другое окно & \kbd{C-x 4 f} & \kbd{C-x 5 f} \\
|
||||
открыть файл в режиме чтения в другом окне & \kbd{C-x 4 r} & \kbd{C-x 5 r} \\
|
||||
запустить Dired в другом окне & \kbd{C-x 4 d} & \kbd{C-x 5 d} \\
|
||||
найти таг в другом окне & \kbd{C-x 4 .} & \kbd{C-x 5 .} \\
|
||||
выбрать буфер в другом окне & \kbd{C-x 4 b} & \kbd{C-x 5 b} \\
|
||||
показать буфер в другом окне & \kbd{C-x 4 C-o} & \kbd{C-x 5 C-o} \\
|
||||
загрузить файл в другое окно & \kbd{C-x 4 f} & \kbd{C-x 5 f} \\
|
||||
открыть файл в режиме чтения в другом окне & \kbd{C-x 4 r} & \kbd{C-x 5 r} \\
|
||||
запустить Dired в другом окне & \kbd{C-x 4 d} & \kbd{C-x 5 d} \\
|
||||
найти таг в другом окне & \kbd{C-x 4 .} & \kbd{C-x 5 .} \\
|
||||
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
увеличить высоту окна & \kbd{C-x \^} \\
|
||||
сузить текущее окно & \kbd{C-x \{} \\
|
||||
расширить текущее окно & \kbd{C-x \}} \\
|
||||
увеличить высоту окна & \kbd{C-x \^} \\
|
||||
сузить текущее окно & \kbd{C-x \{} \\
|
||||
расширить текущее окно & \kbd{C-x \}} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Форматирование}
|
||||
\section{Форматирование}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
сделать отступ для текущей {\bf строки} (в зависимости от режима) & \kbd{TAB} \\
|
||||
сделать отступ для {\bf области} (в зависимости от режима) & \kbd{C-M-$\backslash$} \\
|
||||
сделать отступ для {\bf выражения} (в зависимости от режима) & \kbd{C-M-q} \\
|
||||
сделать отступ к заданной {\it arg\/} колонке & \kbd{C-x TAB} \\
|
||||
сделать отступ для текущей {\bf строки} (в зависимости от режима) & \kbd{TAB} \\
|
||||
сделать отступ для {\bf области} (в зависимости от режима) & \kbd{C-M-$\backslash$} \\
|
||||
сделать отступ для {\bf выражения} (в зависимости от режима) & \kbd{C-M-q} \\
|
||||
сделать отступ к заданной {\it arg\/} колонке & \kbd{C-x TAB} \\
|
||||
|
||||
вставить новую строку после курсора & \kbd{C-o} \\
|
||||
сдвинуть остаток строки вертикально вниз & \kbd{C-M-o} \\
|
||||
удалить пустые строки вокруг курсора & \kbd{C-x C-o} \\
|
||||
объединить строку с предыдущей (со следующими arg) & \kbd{M-\^} \\
|
||||
удалить пустое пространство вокруг курсора & \kbd{M-$\backslash$} \\
|
||||
поместить только один пробел в позиции курсора & \kbd{M-SPC} \\
|
||||
вставить новую строку после курсора & \kbd{C-o} \\
|
||||
сдвинуть остаток строки вертикально вниз & \kbd{C-M-o} \\
|
||||
удалить пустые строки вокруг курсора & \kbd{C-x C-o} \\
|
||||
объединить строку с предыдущей (со следующими arg) & \kbd{M-\^} \\
|
||||
удалить пустое пространство вокруг курсора & \kbd{M-$\backslash$} \\
|
||||
поместить только один пробел в позиции курсора & \kbd{M-SPC} \\
|
||||
|
||||
отформатировать текущий параграф & \kbd{M-q} \\
|
||||
установить столбец заполнения & \kbd{C-x f} \\
|
||||
установить префикс заполнения каждой строки & \kbd{C-x .} \\
|
||||
отформатировать текущий параграф & \kbd{M-q} \\
|
||||
установить столбец заполнения & \kbd{C-x f} \\
|
||||
установить префикс заполнения каждой строки & \kbd{C-x .} \\
|
||||
|
||||
установить начертание (face) & \kbd{M-g} \\
|
||||
установить начертание (face) & \kbd{M-g} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Изменение регистра}
|
||||
\section{Изменение регистра}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
сделать буквы слова заглавными & \kbd{M-u} \\
|
||||
сделать буквы слова строчными & \kbd{M-l} \\
|
||||
сделать первую букву слова заглавной & \kbd{M-c} \\
|
||||
сделать буквы слова заглавными & \kbd{M-u} \\
|
||||
сделать буквы слова строчными & \kbd{M-l} \\
|
||||
сделать первую букву слова заглавной & \kbd{M-c} \\
|
||||
|
||||
сделать буквы области заглавными & \kbd{C-x C-u} \\
|
||||
сделать буквы области строчными & \kbd{C-x C-l} \\
|
||||
сделать буквы области заглавными & \kbd{C-x C-u} \\
|
||||
сделать буквы области строчными & \kbd{C-x C-l} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Минибуфер}
|
||||
\section{Минибуфер}
|
||||
|
||||
Следующие клавиши (ключи) определены в минибуфере.
|
||||
Следующие клавиши (ключи) определены в минибуфере.
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
дополнить насколько возможно & \kbd{TAB} \\
|
||||
дополнить до одного слова & \kbd{SPC} \\
|
||||
дополнить и выполнить & \kbd{RET} \\
|
||||
показать возможные дополнения & \kbd{?} \\
|
||||
выбрать предыдущую строку из истории ввода & \kbd{M-p} \\
|
||||
выбрать следующую строку из истории ввода & \kbd{M-n} \\
|
||||
поиск в истории по регулярному выражению в обратном напрвлении & \kbd{M-r} \\
|
||||
поиск в истории по регулярному выражению в прямом напрвлении & \kbd{M-s} \\
|
||||
прервать команду & \kbd{C-g} \\
|
||||
дополнить насколько возможно & \kbd{TAB} \\
|
||||
дополнить до одного слова & \kbd{SPC} \\
|
||||
дополнить и выполнить & \kbd{RET} \\
|
||||
показать возможные дополнения & \kbd{?} \\
|
||||
выбрать предыдущую строку из истории ввода & \kbd{M-p} \\
|
||||
выбрать следующую строку из истории ввода & \kbd{M-n} \\
|
||||
поиск в истории по регулярному выражению в обратном напрвлении & \kbd{M-r} \\
|
||||
поиск в истории по регулярному выражению в прямом напрвлении & \kbd{M-s} \\
|
||||
прервать команду & \kbd{C-g} \\
|
||||
\end{tabular}
|
||||
|
||||
Наберите \kbd{C-x ESC ESC} для редактирования и повторения последней
|
||||
команды набранной в минибуфере. Наберите \kbd{F10}, чтобы работать с
|
||||
пунктами меню при помощи команд минибуфера.
|
||||
Наберите \kbd{C-x ESC ESC} для редактирования и повторения последней
|
||||
команды набранной в минибуфере. Наберите \kbd{F10}, чтобы работать с
|
||||
пунктами меню при помощи команд минибуфера.
|
||||
|
||||
\section{Буфера}
|
||||
\section{Буфера}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
выбрать другой буфер & \kbd{C-x b} \\
|
||||
выдать список всех буферов & \kbd{C-x C-b} \\
|
||||
уничтожить буфер & \kbd{C-x k} \\
|
||||
выбрать другой буфер & \kbd{C-x b} \\
|
||||
выдать список всех буферов & \kbd{C-x C-b} \\
|
||||
уничтожить буфер & \kbd{C-x k} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Перестановка данных}
|
||||
\section{Перестановка данных}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
обменять местами {\bf символы} & \kbd{C-t} \\
|
||||
обменять местами {\bf слова} & \kbd{M-t} \\
|
||||
обменять местами {\bf строки} & \kbd{C-x C-t} \\
|
||||
обменять местами {\bf выражения} & \kbd{C-M-t} \\
|
||||
обменять местами {\bf символы} & \kbd{C-t} \\
|
||||
обменять местами {\bf слова} & \kbd{M-t} \\
|
||||
обменять местами {\bf строки} & \kbd{C-x C-t} \\
|
||||
обменять местами {\bf выражения} & \kbd{C-M-t} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Проверка правописания}
|
||||
\section{Проверка правописания}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
проверить текущее слово & \kbd{M-\$} \\
|
||||
проверить все слова в области & \kbd{M-x ispell-region} \\
|
||||
выполнить проверку всего буфера & \kbd{M-x ispell-buffer} \\
|
||||
проверить текущее слово & \kbd{M-\$} \\
|
||||
проверить все слова в области & \kbd{M-x ispell-region} \\
|
||||
выполнить проверку всего буфера & \kbd{M-x ispell-buffer} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Теги}
|
||||
\section{Теги}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
найти определение тега & \kbd{M-.} \\
|
||||
найти следующее вхождение тега & \kbd{C-u M-.} \\
|
||||
использовать новый файл с тегами & \kbd{M-x visit-tags-table} \\
|
||||
найти определение тега & \kbd{M-.} \\
|
||||
найти следующее вхождение тега & \kbd{C-u M-.} \\
|
||||
использовать новый файл с тегами & \kbd{M-x visit-tags-table} \\
|
||||
|
||||
поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\
|
||||
выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\
|
||||
продолжить поиск или поиск-замену тега & \kbd{M-,} \\
|
||||
поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\
|
||||
выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\
|
||||
продолжить поиск или поиск-замену тега & \kbd{M-,} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Командные процессоры}
|
||||
\section{Командные процессоры}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
Выполнить команду командного процессора & \kbd{M-!} \\
|
||||
выполнить команду командного процессора над областью & \kbd{M-|} \\
|
||||
пропустить содержимое области через команду командного процессора & \kbd{C-u M-|} \\
|
||||
запустить командный процессор в окне \kbd{*shell*} & \kbd{M-x shell} \\
|
||||
Выполнить команду командного процессора & \kbd{M-!} \\
|
||||
выполнить команду командного процессора над областью & \kbd{M-|} \\
|
||||
пропустить содержимое области через команду командного процессора & \kbd{C-u M-|} \\
|
||||
запустить командный процессор в окне \kbd{*shell*} & \kbd{M-x shell} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Прямоугольные области}
|
||||
\section{Прямоугольные области}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
скопировать прямоугольную область в регистр & \kbd{C-x r r} \\
|
||||
удалить прямоугольную область & \kbd{C-x r k} \\
|
||||
вставить последную уничтоженную прямоугольную область & \kbd{C-x r y} \\
|
||||
открыть прямоугольную область, сдвигая текст вправо & \kbd{C-x r o} \\
|
||||
очистить прямоугольную область & \kbd{C-x r c} \\
|
||||
предварить каждую строку строкой текста & \kbd{C-x r t} \\
|
||||
скопировать прямоугольную область в регистр & \kbd{C-x r r} \\
|
||||
удалить прямоугольную область & \kbd{C-x r k} \\
|
||||
вставить последную уничтоженную прямоугольную область & \kbd{C-x r y} \\
|
||||
открыть прямоугольную область, сдвигая текст вправо & \kbd{C-x r o} \\
|
||||
очистить прямоугольную область & \kbd{C-x r c} \\
|
||||
предварить каждую строку строкой текста & \kbd{C-x r t} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Сокращения}
|
||||
\section{Сокращения}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
добавить глобальное сокращение & \kbd{C-x a g} \\
|
||||
добавить локальное для режима сокращение & \kbd{C-x a l} \\
|
||||
добавить глобальное значение для данного сокращения & \kbd{C-x a i g} \\
|
||||
добавить специфическое для режима значение данного сокращения & \kbd{C-x a i l} \\
|
||||
явно вставить значение для сокращения & \kbd{C-x a e} \\
|
||||
добавить глобальное сокращение & \kbd{C-x a g} \\
|
||||
добавить локальное для режима сокращение & \kbd{C-x a l} \\
|
||||
добавить глобальное значение для данного сокращения & \kbd{C-x a i g} \\
|
||||
добавить специфическое для режима значение данного сокращения & \kbd{C-x a i l} \\
|
||||
явно вставить значение для сокращения & \kbd{C-x a e} \\
|
||||
|
||||
динамически дополнить предыдущее слово & \kbd{M-/} \\
|
||||
динамически дополнить предыдущее слово & \kbd{M-/} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Регулярные выражения}
|
||||
\section{Регулярные выражения}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
любой одиночный символ (за исключением символа новой строки) & \kbd{. {\rm(dot)}} \\
|
||||
ноль или более повторений & \kbd{*} \\
|
||||
одно или более повторений & \kbd{+} \\
|
||||
ноль или одно повторение & \kbd{?} \\
|
||||
экранировать специальный символ {\it c\/} & \kbd{$\backslash${\it c}} \\
|
||||
выбор между альтернативами (``или'') & \kbd{$\backslash|$} \\
|
||||
группировка & \kbd{$\backslash$( {\rm$\ldots$} $\backslash$)} \\
|
||||
текст в {\it n\/}-й группе & \kbd{$\backslash${\it n}} \\
|
||||
граница слова & \kbd{$\backslash$b} \\
|
||||
не граница слова & \kbd{$\backslash$B} \\
|
||||
любой одиночный символ (за исключением символа новой строки) & \kbd{. {\rm(dot)}} \\
|
||||
ноль или более повторений & \kbd{*} \\
|
||||
одно или более повторений & \kbd{+} \\
|
||||
ноль или одно повторение & \kbd{?} \\
|
||||
экранировать специальный символ {\it c\/} & \kbd{$\backslash${\it c}} \\
|
||||
выбор между альтернативами (``или'') & \kbd{$\backslash|$} \\
|
||||
группировка & \kbd{$\backslash$( {\rm$\ldots$} $\backslash$)} \\
|
||||
текст в {\it n\/}-й группе & \kbd{$\backslash${\it n}} \\
|
||||
граница слова & \kbd{$\backslash$b} \\
|
||||
не граница слова & \kbd{$\backslash$B} \\
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
{\bf объект} & {\bf начало соответствия} & {\bf конец соответствия} \\
|
||||
строка & \kbd{\^} & \kbd{\$} \\
|
||||
слово & \kbd{$\backslash$<} & \kbd{$\backslash$>} \\
|
||||
буфер & \kbd{$\backslash$`} & \kbd{$\backslash$'} \\
|
||||
{\bf объект} & {\bf начало соответствия} & {\bf конец соответствия} \\
|
||||
строка & \kbd{\^} & \kbd{\$} \\
|
||||
слово & \kbd{$\backslash$<} & \kbd{$\backslash$>} \\
|
||||
буфер & \kbd{$\backslash$`} & \kbd{$\backslash$'} \\
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}}
|
||||
{\bf класс символов} & {\bf соответ\-ствует им} & {\bf соответ\-ствует другим} \\
|
||||
явный набор & \kbd{[ {\rm$\ldots$} ]} & \kbd{[\^ {\rm$\ldots$} ]} \\
|
||||
символ-буква & \kbd{$\backslash$w} & \kbd{$\backslash$W} \\
|
||||
символ с синтаксисом {\it c} & \kbd{$\backslash$s{\it c}} & \kbd{$\backslash$S{\it c}} \\
|
||||
{\bf класс символов} & {\bf соответ\-ствует им} & {\bf соответ\-ствует другим} \\
|
||||
явный набор & \kbd{[ {\rm$\ldots$} ]} & \kbd{[\^ {\rm$\ldots$} ]} \\
|
||||
символ-буква & \kbd{$\backslash$w} & \kbd{$\backslash$W} \\
|
||||
символ с синтаксисом {\it c} & \kbd{$\backslash$s{\it c}} & \kbd{$\backslash$S{\it c}} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Международные наборы символов}
|
||||
\section{Международные наборы символов}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
выбрать язык & \kbd{C-x RET l} \\
|
||||
показать все возможные методы ввода & \kbd{M-x list-input-methods} \\
|
||||
разрешить или запретить метод ввода & \kbd{C-$\backslash$} \\
|
||||
установить систему кодирования для следующей команды & \kbd{C-x RET c} \\
|
||||
показать список всех систем кодирования & \kbd{M-x list-coding-systems} \\
|
||||
выбрать предпочтительную систему кодирования & \kbd{M-x prefer-coding-system} \\
|
||||
выбрать язык & \kbd{C-x RET l} \\
|
||||
показать все возможные методы ввода & \kbd{M-x list-input-methods} \\
|
||||
разрешить или запретить метод ввода & \kbd{C-$\backslash$} \\
|
||||
установить систему кодирования для следующей команды & \kbd{C-x RET c} \\
|
||||
показать список всех систем кодирования & \kbd{M-x list-coding-systems} \\
|
||||
выбрать предпочтительную систему кодирования & \kbd{M-x prefer-coding-system} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Информация (система Info)}
|
||||
\section{Информация (система Info)}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
запустить систему доступа к документации & \kbd{C-h i} \\
|
||||
найти указанную функцию или переменную в документации & \kbd{C-h S} \\
|
||||
запустить систему доступа к документации & \kbd{C-h i} \\
|
||||
найти указанную функцию или переменную в документации & \kbd{C-h S} \\
|
||||
\end{tabular}
|
||||
|
||||
Перемещение внутри узла (нодами):
|
||||
Перемещение внутри узла (нодами):
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
прокрутка вперед & \kbd{SPC} \\
|
||||
прокрутка назад & \kbd{DEL} \\
|
||||
перейти к началу узла & \kbd{. {\rm (dot)}} \\
|
||||
прокрутка вперед & \kbd{SPC} \\
|
||||
прокрутка назад & \kbd{DEL} \\
|
||||
перейти к началу узла & \kbd{. {\rm (dot)}} \\
|
||||
\end{tabular}
|
||||
|
||||
Перемещение между узлами:
|
||||
Перемещение между узлами:
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
{\bf следующий} узел & \kbd{n} \\
|
||||
{\bf предыдущий} узел & \kbd{p} \\
|
||||
перейти к {\bf верхнему} узлу & \kbd{u} \\
|
||||
выбрать пункт меню по имени & \kbd{m} \\
|
||||
выбрать {\it n\/}-й пункт меню по номеру (1--9) & \kbd{{\it n}} \\
|
||||
перейти по ссылке (возврат с помощью \kbd{l}) & \kbd{f} \\
|
||||
возвратится к последнему просмотренному узлу & \kbd{l} \\
|
||||
возвратится к узлу-каталогу & \kbd{d} \\
|
||||
Перейти к верхему узлу файла & \kbd{t} \\
|
||||
перейти к узлу, заданному именем & \kbd{g} \\
|
||||
{\bf следующий} узел & \kbd{n} \\
|
||||
{\bf предыдущий} узел & \kbd{p} \\
|
||||
перейти к {\bf верхнему} узлу & \kbd{u} \\
|
||||
выбрать пункт меню по имени & \kbd{m} \\
|
||||
выбрать {\it n\/}-й пункт меню по номеру (1--9) & \kbd{{\it n}} \\
|
||||
перейти по ссылке (возврат с помощью \kbd{l}) & \kbd{f} \\
|
||||
возвратится к последнему просмотренному узлу & \kbd{l} \\
|
||||
возвратится к узлу-каталогу & \kbd{d} \\
|
||||
Перейти к верхему узлу файла & \kbd{t} \\
|
||||
перейти к узлу, заданному именем & \kbd{g} \\
|
||||
\end{tabular}
|
||||
|
||||
Другие команды:
|
||||
Другие команды:
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
запустить {\bf учебник} по системе документации & \kbd{h} \\
|
||||
поиск темы в индексе & \kbd{i} \\
|
||||
поиск в узлах с помощью регулярных выражений & \kbd{s} \\
|
||||
{\bf прекратить работу} с документацией & \kbd{q} \\
|
||||
запустить {\bf учебник} по системе документации & \kbd{h} \\
|
||||
поиск темы в индексе & \kbd{i} \\
|
||||
поиск в узлах с помощью регулярных выражений & \kbd{s} \\
|
||||
{\bf прекратить работу} с документацией & \kbd{q} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Регистры}
|
||||
\section{Регистры}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
сохранить область в регистре & \kbd{C-x r s} \\
|
||||
вставить содержимое регистра в буфер & \kbd{C-x r i} \\
|
||||
сохранить область в регистре & \kbd{C-x r s} \\
|
||||
вставить содержимое регистра в буфер & \kbd{C-x r i} \\
|
||||
|
||||
сохранить положение курсора в регистре & \kbd{C-x r SPC} \\
|
||||
перейти к положению курсора, сохраненному в регистре & \kbd{C-x r j} \\
|
||||
сохранить положение курсора в регистре & \kbd{C-x r SPC} \\
|
||||
перейти к положению курсора, сохраненному в регистре & \kbd{C-x r j} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Клавиатурные макросы}
|
||||
\section{Клавиатурные макросы}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
{\bf начать} определение клавиатурного макроса & \kbd{C-x (} \\
|
||||
{\bf закончить} определение клавиатурного макроса & \kbd{C-x )} \\
|
||||
{\bf выполнить} последний определенный макрос & \kbd{C-x e} \\
|
||||
дополнить последний определенный макрос & \kbd{C-u C-x (} \\
|
||||
задать имя для последнего определенного макроса & \kbd{M-x name-last-kbd-macro} \\
|
||||
вставить в буфер определение макроса на языке Lisp & \kbd{M-x insert-kbd-macro} \\
|
||||
{\bf начать} определение клавиатурного макроса & \kbd{C-x (} \\
|
||||
{\bf закончить} определение клавиатурного макроса & \kbd{C-x )} \\
|
||||
{\bf выполнить} последний определенный макрос & \kbd{C-x e} \\
|
||||
дополнить последний определенный макрос & \kbd{C-u C-x (} \\
|
||||
задать имя для последнего определенного макроса & \kbd{M-x name-last-kbd-macro} \\
|
||||
вставить в буфер определение макроса на языке Lisp & \kbd{M-x insert-kbd-macro} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Команды, связанные с Emacs Lisp}
|
||||
\section{Команды, связанные с Emacs Lisp}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
вычислить {\bf выражение} перед курсором & \kbd{C-x C-e} \\
|
||||
вычислить текущую функцию {\bf defun} & \kbd{C-M-x} \\
|
||||
вычислить {\bf область} как выражение & \kbd{M-x eval-region} \\
|
||||
считать и вычислить выражение из минибуфера & \kbd{M-:} \\
|
||||
загрузить из стандартного системного каталога & \kbd{M-x load-library} \\
|
||||
вычислить {\bf выражение} перед курсором & \kbd{C-x C-e} \\
|
||||
вычислить текущую функцию {\bf defun} & \kbd{C-M-x} \\
|
||||
вычислить {\bf область} как выражение & \kbd{M-x eval-region} \\
|
||||
считать и вычислить выражение из минибуфера & \kbd{M-:} \\
|
||||
загрузить из стандартного системного каталога & \kbd{M-x load-library} \\
|
||||
\end{tabular}
|
||||
|
||||
\section{Простая настройка}
|
||||
\section{Простая настройка}
|
||||
|
||||
\begin{tabular}{p{\ColWidth}l}
|
||||
настроить переменные и оформление (faces) & \kbd{M-x customize} \\
|
||||
настроить переменные и оформление (faces) & \kbd{M-x customize} \\
|
||||
\end{tabular}
|
||||
|
||||
% The intended audience here is the person who wants to make simple
|
||||
% customizations and knows Lisp syntax.
|
||||
|
||||
Создание глобальных привязок клавиш (ключей) на Emacs Lisp (примеры):
|
||||
Создание глобальных привязок клавиш (ключей) на Emacs Lisp (примеры):
|
||||
|
||||
\begin{verbatim}
|
||||
(global-set-key "\C-cg" 'goto-line)
|
||||
(global-set-key "\M-#" 'query-replace-regexp)
|
||||
\end{verbatim}
|
||||
|
||||
\section{Написание команд}
|
||||
\section{Написание команд}
|
||||
|
||||
\begin{verbatim}
|
||||
(defun <command-name> (<args>)
|
||||
|
@ -497,7 +497,7 @@ \section{
|
|||
<body>)
|
||||
\end{verbatim}
|
||||
|
||||
Пример:
|
||||
Пример:
|
||||
|
||||
\begin{verbatim}
|
||||
(defun this-line-to-top-of-window (line)
|
||||
|
@ -509,8 +509,8 @@ \section{
|
|||
(prefix-numeric-value line))))
|
||||
\end{verbatim}
|
||||
|
||||
Спецификация \kbd{interactive} сообщает о том, что аргумент надо считывать
|
||||
интерактивно. Для дополнительной информации наберите \kbd{C-h f interactive}.
|
||||
Спецификация \kbd{interactive} сообщает о том, что аргумент надо считывать
|
||||
интерактивно. Для дополнительной информации наберите \kbd{C-h f interactive}.
|
||||
|
||||
\copyrightnotice
|
||||
|
||||
|
@ -520,6 +520,5 @@ \section{
|
|||
|
||||
% Local variables:
|
||||
% compile-command: "pdflatex ru-refcard"
|
||||
% coding: cyrillic-koi8
|
||||
% coding: utf-8
|
||||
% End:
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -997,3 +997,6 @@ COPYING$(C@L6s4B(B $(CFD@O@;(B $(C@P0m(B $(C3-(B $(CHD?!(B GNU $(C@L8
|
|||
$(CAV=J=C?@(B. $(C@Z@/(B $(C<RGAF.?~>n8&(B $(C>20m(B $(C885i0m(B $(C0x@/GT@87N=a(B $(C<RGAF.?~>n(B
|
||||
$(C9fGX8&(B ("$(C<R@/1G(B") $(C1Y@}GO4B5%(B $(C55?s=C4Y(B.
|
||||
|
||||
;;; Local Variables:
|
||||
;;; coding: iso-2022-7bit
|
||||
;;; End:
|
||||
|
|
|
@ -23,7 +23,7 @@ commando te proberen. Bijvoorbeeld:
|
|||
herhalen als je klaar bent met het lezen van een scherm.
|
||||
|
||||
Merk op dat er een overlapping van twee regels is als je van een
|
||||
scherm naar het volgende gaat; dat zorgt voor continuïteit bij het
|
||||
scherm naar het volgende gaat; dat zorgt voor continuïteit bij het
|
||||
lezen van de tekst.
|
||||
|
||||
Het eerste wat je moet weten, is hoe je je naar verschillende plaatsen
|
||||
|
@ -55,7 +55,7 @@ De volgende commando's zijn handig om volledige schermen te bekijken:
|
|||
|
||||
Als je toetsenbord PageUp- en PageDn-toetsen heeft dan kun je deze ook
|
||||
gebruiken om een scherm terug dan wel vooruit te gaan, maar het werken
|
||||
met C-v en M-v is efficiënter.
|
||||
met C-v en M-v is efficiënter.
|
||||
|
||||
|
||||
* BASISCOMMANDO'S CURSORBEWEGINGEN
|
||||
|
@ -65,7 +65,7 @@ Het is handig om je per scherm te bewegen, maar hoe beweeg je je nu
|
|||
naar een specifieke plaats op het scherm?
|
||||
|
||||
Er is een aantal manieren waarop je dit kan doen. Je kan de
|
||||
pijltjestoetsen gebruiken, maar het is efficiënter om je handen in de
|
||||
pijltjestoetsen gebruiken, maar het is efficiënter om je handen in de
|
||||
standaardhouding te laten, en de commando's C-p, C-b, C-f en C-n te
|
||||
gebruiken. Deze commando's komen overeen met de pijltjestoetsen, als
|
||||
in onderstaande figuur:
|
||||
|
@ -206,7 +206,7 @@ makkelijk andere gevorderde cursorbewegingscommando's leren.
|
|||
De meeste Emacs-commando's accepteren een numeriek argument. Voor de
|
||||
meeste commando's is dit argument het aantal keren dat het commando
|
||||
herhaald moet worden. Je geeft dit numerieke argument aan met C-u en
|
||||
vervolgens de cijfers van het getal, vóór het commando. Als je
|
||||
vervolgens de cijfers van het getal, vóór het commando. Als je
|
||||
toetsenbord een META- (of EDIT- of ALT-) toets heeft, is er ook een
|
||||
andere manier om het getal aan te geven: tik de cijfers terwijl je de
|
||||
META toets ingedrukt houdt. We raden je aan de C-u manier te leren
|
||||
|
@ -256,7 +256,7 @@ Je kan C-g ook gebruiken om een numeriek argument te verwijderen of om
|
|||
het begin van een commando dat je niet wilt afmaken, af te breken.
|
||||
|
||||
>> Tik nu C-u 100 om een numeriek argument te maken met de waarde 100,
|
||||
en tik dan C-g. Tik vervolgens C-f. Het zou de cursor maar één
|
||||
en tik dan C-g. Tik vervolgens C-f. Het zou de cursor maar één
|
||||
positie mogen verplaatsen, omdat je het argument verwijderd hebt
|
||||
met C-g.
|
||||
|
||||
|
@ -288,7 +288,7 @@ niet uitvoeren en beantwoord je de vraag met "n" (van "no" of "nee").
|
|||
Emacs kan meerdere vensters laten zien, elk venster met zijn eigen
|
||||
tekst. We zullen later uitleggen hoe je met meerdere vensters kan
|
||||
werken. Op dit moment willen we slechts uitleggen hoe je van extra
|
||||
vensters af kunt komen en terug kan keren naar het werken met één
|
||||
vensters af kunt komen en terug kan keren naar het werken met één
|
||||
venster. Het is eenvoudig:
|
||||
|
||||
C-x 1 Een enkel venster (dat wil zeggen: verwijder alle
|
||||
|
@ -318,7 +318,7 @@ bestaan uit twee, drie of vier tekens.
|
|||
|
||||
Als je tekst toe wil voegen, tik je die gewoon in. Tekens die je kan
|
||||
zien, zoals A, 7, * en dergelijke, worden door Emacs als tekst
|
||||
geïnterpreteerd en meteen toegevoegd. Tik <Return> (de "volgende
|
||||
geïnterpreteerd en meteen toegevoegd. Tik <Return> (de "volgende
|
||||
regel"-toets) om een Newline toe te voegen en dus een nieuwe regel te
|
||||
beginnen.
|
||||
|
||||
|
@ -386,8 +386,8 @@ trekken, die begon met C-f en M-f (waarbij we voor het gemak even
|
|||
vergeten dat <DEL> niet echt een CONTROL-teken is). C-k en M-k lijken
|
||||
enigzins op C-e en M-e in hun relatie tot regels en zinnen.
|
||||
|
||||
Je kunt ook op één uniforme manier een willekeurig deel van de tekst
|
||||
verwijderen. Beweeg daartoe naar één kant van het gedeelte dat je
|
||||
Je kunt ook op één uniforme manier een willekeurig deel van de tekst
|
||||
verwijderen. Beweeg daartoe naar één kant van het gedeelte dat je
|
||||
wilt verwijderen en tik C-<SPC>. (<SPC> is de spatiebalk.) Beweeg nu
|
||||
naar de andere kant van de tekst die je wilt verwijderen. Terwijl je
|
||||
beweegt, markeert Emacs zichtbaar de tekst tussen de cursor en de
|
||||
|
@ -427,7 +427,7 @@ terwijl tweemaal C-k tikken dat niet doet.
|
|||
Het invoegen van de laatst verwijderde tekst heet yanken ("yanking").
|
||||
Je kan de tekst yanken op de plek waar je het verwijderde, op een
|
||||
andere plek of zelfs in een ander bestand. Je kan dezelfde tekst
|
||||
meerdere keren yanken; op deze manier maak je meerdere kopieën van
|
||||
meerdere keren yanken; op deze manier maak je meerdere kopieën van
|
||||
dezelfde tekst. Verwijderen ("killing") en yanken worden in andere
|
||||
programma's ook wel knip ("cut") en plak ("paste") genoemd (zie ook de
|
||||
Glossary in de Emacs-handleiding).
|
||||
|
@ -439,14 +439,14 @@ tekst in op de huidige cursorpositie.
|
|||
|
||||
Als je meerdere keren C-k achter elkaar hebt gedaan, dan worden alle
|
||||
verwijderde tekstregels samen onthouden, zodat een enkele C-y al die
|
||||
regels in één keer invoegt.
|
||||
regels in één keer invoegt.
|
||||
|
||||
>> Probeer het nu: tik C-k een paar keer.
|
||||
|
||||
Om de verwijderde tekst terug te halen:
|
||||
|
||||
>> Tik C-y. Beweeg de cursor enkele regels naar beneden en tik weer
|
||||
C-y. Je ziet nu hoe je tekst kan kopiëren.
|
||||
C-y. Je ziet nu hoe je tekst kan kopiëren.
|
||||
|
||||
Wat moet je doen als je wat tekst terug wilt brengen, maar je intussen
|
||||
al iets anders verwijderd hebt? C-y zou datgene terugbrengen wat je
|
||||
|
@ -583,7 +583,7 @@ Je kan een bestand dat al bestaat bezoeken om het te bekijken of het
|
|||
te wijzigen. Je kan ook een bestand bezoeken dat nog niet bestaat.
|
||||
Dit is de manier om met Emacs een nieuw bestand te maken: bezoek het
|
||||
bestand, dat eerst leeg zal zijn, en voeg tekst toe. Zodra je de
|
||||
tekst opslaat, wordt het bestand werkelijk gecreëerd, met de nieuwe
|
||||
tekst opslaat, wordt het bestand werkelijk gecreëerd, met de nieuwe
|
||||
tekst als inhoud. Vanaf dat moment ben je dus bezig met een bestand
|
||||
dat al bestaat.
|
||||
|
||||
|
@ -612,7 +612,7 @@ van een of andere buffer.
|
|||
>> Tik C-x 1 om de bufferlijst uit het zicht krijgen.
|
||||
|
||||
Wanneer je met meerdere buffers werkt, dan is op elk moment slechts
|
||||
één van die buffers "actueel". De actuele buffer is degene die je aan
|
||||
één van die buffers "actueel". De actuele buffer is degene die je aan
|
||||
het bewerken bent. Als je een andere buffer wilt bewerken, dan moet
|
||||
je daarnaar "omschakelen". Als je wilt omschakelen naar een buffer
|
||||
die overeenkomt met een bestand, dan kun je dit doen door dat bestand
|
||||
|
@ -647,7 +647,7 @@ deze Emacs-sessie.
|
|||
|
||||
Als je de tekst van het ene bestand verandert en dan een ander bestand
|
||||
bezoekt, wordt het eerste bestand niet opgeslagen. De wijzigingen
|
||||
blijven in Emacs, in de buffer die bij het bestand hoort. Het creëren
|
||||
blijven in Emacs, in de buffer die bij het bestand hoort. Het creëren
|
||||
of veranderen van de buffer van het tweede bestand heeft geen effect
|
||||
op de eerste buffer. Dit is erg nuttig, maar betekent ook dat er een
|
||||
eenvoudige manier nodig is om het eerste bestand te bewaren. Het zou
|
||||
|
@ -689,7 +689,7 @@ voordat Emacs helemaal stopt.)
|
|||
Als je een grafisch scherm gebruikt heb je geen commando's nodig om
|
||||
van Emacs naar een andere applicatie te gaan. Je gebruikt dat de muis
|
||||
of commando's van de vensterbeheerder. Als je Emacs gebruikt in een
|
||||
tekstvenster of terminal, die maar één applicatie tegelijkertijd kan
|
||||
tekstvenster of terminal, die maar één applicatie tegelijkertijd kan
|
||||
laten zien, moet je Emacs tijdelijk verlaten om naar een andere
|
||||
applicatie te gaan.
|
||||
|
||||
|
@ -700,7 +700,7 @@ terug in de shell, maar Emacs is nog aanwezig. In de meeste shells
|
|||
kan je Emacs weer activeren met het "fg" commando, of met "%emacs".
|
||||
|
||||
Het moment om C-x C-c te gebruiken is wanneer je uit gaat loggen. Het
|
||||
is ook het juiste commando om Emacs te beëindigen wanneer Emacs
|
||||
is ook het juiste commando om Emacs te beëindigen wanneer Emacs
|
||||
opgestart was door een mail-programma of iets dergelijks.
|
||||
|
||||
Er bestaan vele C-x commando's. Hier is een lijst van degene die je
|
||||
|
@ -723,7 +723,7 @@ toont Emacs onderaan het scherm "M-x" en moet je de naam van het
|
|||
commando intikken, in dit geval "replace-string". Als je gewoon
|
||||
"repl s<TAB>" tikt maakt Emacs de naam zelf af. (<TAB> is de
|
||||
Tab-toets, die meestal boven de CapsLock of Shift-toets zit aan de
|
||||
linkerkant van het toetsenbord.) Beëindig het commando met <Return>.
|
||||
linkerkant van het toetsenbord.) Beëindig het commando met <Return>.
|
||||
|
||||
Het replace-string commando heeft twee argumenten nodig: de string die
|
||||
vervangen moet worden en de string waarmee die vervangen moet worden.
|
||||
|
@ -801,7 +801,7 @@ heet een hoofdmodus ("major mode" in het Engels).
|
|||
Emacs heeft verschillende hoofdmodi. Sommige daarvan zijn bedoeld
|
||||
voor het bewerken van verschillende talen of soorten tekst, zoals
|
||||
bijvoorbeeld Lisp-modus, Text-modus, etc. Op elk moment is er altijd
|
||||
precies één modus actief, en de naam daarvan staat in de modusregel,
|
||||
precies één modus actief, en de naam daarvan staat in de modusregel,
|
||||
op de plaats waar nu "Fundamental" staat.
|
||||
|
||||
Elke hoofdmodus zorgt ervoor dat sommige commando's zich anders
|
||||
|
@ -840,7 +840,7 @@ Hoofdmodi heten zo omdat er ook bijmodi zijn. Bijmodi zijn geen
|
|||
alternatieven voor hoofdmodi; het zijn slechts kleine aanpassingen
|
||||
daarvan. Elke bijmodus kan aan- of uitgezet worden, onafhankelijk van
|
||||
andere bijmodi en onafhankelijk van de hoofdmodus. Het is dus
|
||||
mogelijk geen bijmodi, één bijmodus of een willekeurige combinatie van
|
||||
mogelijk geen bijmodi, één bijmodus of een willekeurige combinatie van
|
||||
bijmodi te gebruiken.
|
||||
|
||||
Een nuttige bijmodus voor het bewerken van tekst in een natuurlijke
|
||||
|
@ -857,7 +857,7 @@ zeggen dat het commando de modus "schakelt" ("to toggle" in het
|
|||
Engels).
|
||||
|
||||
>> Tik nu M-x auto-fill-mode<Return>. Tik nu vele malen "asdf " op
|
||||
een regel totdat je ziet dat de regel in tweeën gesplitst wordt.
|
||||
een regel totdat je ziet dat de regel in tweeën gesplitst wordt.
|
||||
Er moeten wel spaties tussen de woorden staan, omdat de Auto Fill
|
||||
modus de regel alleen op spaties breekt.
|
||||
|
||||
|
@ -895,16 +895,16 @@ van "to search", zoeken); C-r start het achterwaarts zoeken (met de
|
|||
Als je C-s tikt verschijnt de string "I-search" in het echo-gebied.
|
||||
Dit betekent dat Emacs bezig is met een "incremental search"
|
||||
(incrementele zoekopdracht) en wacht op het intikken van de
|
||||
zoekstring. <Return> beëindigt het zoeken.
|
||||
zoekstring. <Return> beëindigt het zoeken.
|
||||
|
||||
>> Tik nu C-s om het zoeken te starten. Tik nu, LANGZAAM, één letter
|
||||
>> Tik nu C-s om het zoeken te starten. Tik nu, LANGZAAM, één letter
|
||||
per keer, het woord "cursor", met een pauze na elke letter zodat je
|
||||
kan zien wat er met de cursor gebeurt. Je hebt nu eenmaal naar het
|
||||
woord "cursor" gezocht.
|
||||
>> Tik nogmaals C-s, om naar het volgende voorkomen van het woord
|
||||
"cursor" te zoeken.
|
||||
>> Tik nu viermaal <Del> en let op de cursorbewegingen.
|
||||
>> Tik <Return> om het zoeken te beëindigen.
|
||||
>> Tik <Return> om het zoeken te beëindigen.
|
||||
|
||||
Zag je wat er gebeurde? Tijdens incrementeel zoeken probeert Emacs
|
||||
naar de eerste plek te gaan waar de string staat die je tot dan toe
|
||||
|
@ -926,7 +926,7 @@ van de zoekstring afgehaald en de cursor gaat terug naar de plaats
|
|||
waar "c" het eerst voorkwam.
|
||||
|
||||
Als je tijdens een zoekoperatie een CONTROL- of META-teken intikt, dan
|
||||
wordt het zoeken beëindigd. Er zijn een paar uitzonderingen, namelijk
|
||||
wordt het zoeken beëindigd. Er zijn een paar uitzonderingen, namelijk
|
||||
tekens die tijdens zoeken een speciale betekenis hebben, zoals C-s en
|
||||
C-r.
|
||||
|
||||
|
@ -997,7 +997,7 @@ verdwijnen. C-x 1 betekent zoveel als "ik wil maar 1 venster,
|
|||
en wel het venster waar ik nu ben.")
|
||||
|
||||
Je hoeft niet dezelfde buffer in beide vensters te hebben. Wanneer je
|
||||
C-x C-f gebruikt om een bestand in één van de vensters te bezoeken,
|
||||
C-x C-f gebruikt om een bestand in één van de vensters te bezoeken,
|
||||
verandert het andere venster niet. Je kunt de vensters onafhankelijk
|
||||
van elkaar gebruiken om bestanden te bezoeken.
|
||||
|
||||
|
@ -1020,7 +1020,7 @@ vensters, menu's, scrollbalken, echo-gebied, etc. Op grafische
|
|||
schermen is een Emacs-frame wat andere applicaties meestal een venter
|
||||
(of een "window" in het Engels, vgl. Windows) noemen. Meerdere
|
||||
grafische frames kunnen tegelijk op het scherm getoond worden. Een
|
||||
tekstterminal kan maar één frame tegelijkertijd tonen.
|
||||
tekstterminal kan maar één frame tegelijkertijd tonen.
|
||||
|
||||
>> Tik M-x make-frame <Return>.
|
||||
Een nieuw frame verschijnt op het scherm.
|
||||
|
@ -1144,7 +1144,7 @@ overeenkomende commandonaam zoals find-file.
|
|||
C-h i Lees de handleidingen (ook wel Info genoemd).
|
||||
Dit commando zet je in een speciale buffer genaamd
|
||||
"*info*" waar je handleidingen kunt lezen van
|
||||
software die op je computer is geïnstalleerd.
|
||||
software die op je computer is geïnstalleerd.
|
||||
Tik m Emacs <Return> om de handleiding van Emacs te
|
||||
lezen. Als je nog nooit Info hebt gebruikt dan kun je
|
||||
? tikken zodat Emacs je een rondleiding geeft langs de
|
||||
|
@ -1190,7 +1190,7 @@ tegengekomen, blijf dan niet zitten en maak jezelf geen verwijten.
|
|||
Doe je beklag!
|
||||
|
||||
|
||||
* KOPIËREN
|
||||
* KOPIËREN
|
||||
-----------
|
||||
|
||||
(De Engelse versie van) deze inleiding is voorafgegaan door een lange
|
||||
|
@ -1229,7 +1229,7 @@ voorwaarden:
|
|||
onderdeel van GNU Emacs. Als dat niet het geval is, ga naar
|
||||
www.gnu.org/licenses.
|
||||
|
||||
Lees het bestand COPYING en geef daarna kopieën van Emacs aan al je
|
||||
Lees het bestand COPYING en geef daarna kopieën van Emacs aan al je
|
||||
vrienden. Help bij het uitroeien van softwarebeschermingspolitiek
|
||||
("eigendom") door vrije software te gebruiken, te schrijven en te
|
||||
delen!
|
||||
|
@ -1261,5 +1261,5 @@ your friends. Help stamp out software obstructionism ("ownership") by
|
|||
using, writing, and sharing free software!
|
||||
|
||||
;;; Local Variables:
|
||||
;;; coding: latin-1
|
||||
;;; coding: utf-8
|
||||
;;; End:
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1001,6 +1001,6 @@ virach@nectec.or.th
|
|||
Translate - January 1999 by Virach Sornlertlamvanich
|
||||
|
||||
;;; Local Variables:
|
||||
;;; sentence-end-double-space: nil
|
||||
;;; sentence-end-double-space: nil
|
||||
;;; coding: iso-2022-7bit
|
||||
;;; End:
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,24 @@
|
|||
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
File synchronization fixes (Bug#13944).
|
||||
* Makefile.in (LIB_FDATASYNC): New macro.
|
||||
(emacsclient${EXEEXT}): Use it.
|
||||
* emacsclient.c (main): Use fdatasync, not fsync, since we don't
|
||||
care about metadata. Keep trying if interrupted.
|
||||
* movemail.c (main, popmail): Don't worry about BSD_SYSTEM, since
|
||||
fsync is available everywhere (or there is a substitute). Don't
|
||||
report an error if fsync returns EINVAL.
|
||||
|
||||
Static checking by Sun C 5.12.
|
||||
* etags.c (analyse_regex): Omit unreachable code.
|
||||
|
||||
* movemail.c (main): Call umask on all systems.
|
||||
This is OK since Emacs already assumes umask elsewhere.
|
||||
Don't grant more read permissions than necessary.
|
||||
The old 0333 dates back to before we called setuid,
|
||||
so it was needed back then to ensure user-readability,
|
||||
but 0377 should suffice now.
|
||||
|
||||
2013-02-08 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* movemail.c (getenv): Remove decl (unused since 1994).
|
||||
|
|
|
@ -161,6 +161,8 @@ LIBRESOLV=@LIBRESOLV@
|
|||
LIBS_MAIL=@LIBS_MAIL@
|
||||
## empty or -lrt or -lposix4 if HAVE_CLOCK_GETTIME
|
||||
LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
|
||||
## empty or -lrt or -lposix4 if HAVE_FDATASYNC
|
||||
LIB_FDATASYNC = @LIB_FDATASYNC@
|
||||
|
||||
## Extra libraries to use when linking movemail.
|
||||
LIBS_MOVE = $(LIBS_MAIL) $(KRB4LIB) $(DESLIB) $(KRB5LIB) $(CRYPTOLIB) \
|
||||
|
@ -334,7 +336,7 @@ pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h $(config_h)
|
|||
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/emacsclient.c \
|
||||
-DVERSION="\"${version}\"" \
|
||||
$(LOADLIBES) -o emacsclient
|
||||
$(LOADLIBES) $(LIB_FDATASYNC) -o emacsclient
|
||||
|
||||
hexl${EXEEXT}: ${srcdir}/hexl.c $(config_h)
|
||||
$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl
|
||||
|
|
|
@ -1724,7 +1724,8 @@ main (int argc, char **argv)
|
|||
needlf = 2;
|
||||
}
|
||||
fflush (stdout);
|
||||
fsync (1);
|
||||
while (fdatasync (1) != 0 && errno == EINTR)
|
||||
continue;
|
||||
|
||||
/* Now, wait for an answer and print any messages. */
|
||||
while (exit_status == EXIT_SUCCESS)
|
||||
|
@ -1825,7 +1826,8 @@ main (int argc, char **argv)
|
|||
if (needlf)
|
||||
printf ("\n");
|
||||
fflush (stdout);
|
||||
fsync (1);
|
||||
while (fdatasync (1) != 0 && errno == EINTR)
|
||||
continue;
|
||||
|
||||
if (rl < 0)
|
||||
exit_status = EXIT_FAILURE;
|
||||
|
|
|
@ -5628,10 +5628,7 @@ analyse_regex (char *regex_arg)
|
|||
/* regexfile is a file containing regexps, one per line. */
|
||||
regexfp = fopen (regexfile, "r");
|
||||
if (regexfp == NULL)
|
||||
{
|
||||
pfatal (regexfile);
|
||||
return;
|
||||
}
|
||||
pfatal (regexfile);
|
||||
linebuffer_init (®exbuf);
|
||||
while (readline_internal (®exbuf, regexfp) > 0)
|
||||
analyse_regex (regexbuf.buffer);
|
||||
|
|
|
@ -380,13 +380,9 @@ main (int argc, char **argv)
|
|||
if (indesc < 0)
|
||||
pfatal_with_name (inname);
|
||||
|
||||
#ifdef BSD_SYSTEM
|
||||
/* In case movemail is setuid to root, make sure the user can
|
||||
read the output file. */
|
||||
/* This is desirable for all systems
|
||||
but I don't want to assume all have the umask system call */
|
||||
umask (umask (0) & 0333);
|
||||
#endif /* BSD_SYSTEM */
|
||||
/* Make sure the user can read the output file. */
|
||||
umask (umask (0) & 0377);
|
||||
|
||||
outdesc = open (outname, O_WRONLY | O_CREAT | O_EXCL, 0666);
|
||||
if (outdesc < 0)
|
||||
pfatal_with_name (outname);
|
||||
|
@ -470,10 +466,8 @@ main (int argc, char **argv)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef BSD_SYSTEM
|
||||
if (fsync (outdesc) < 0)
|
||||
if (fsync (outdesc) != 0 && errno != EINVAL)
|
||||
pfatal_and_delete (outname);
|
||||
#endif
|
||||
|
||||
/* Prevent symlink attacks truncating other users' mailboxes */
|
||||
if (setregid (-1, real_gid) < 0)
|
||||
|
@ -754,21 +748,14 @@ popmail (char *mailbox, char *outfile, int preserve, char *password, int reverse
|
|||
}
|
||||
}
|
||||
|
||||
/* On AFS, a call to write only modifies the file in the local
|
||||
* workstation's AFS cache. The changes are not written to the server
|
||||
* until a call to fsync or close is made. Users with AFS home
|
||||
* directories have lost mail when over quota because these checks were
|
||||
* not made in previous versions of movemail. */
|
||||
|
||||
#ifdef BSD_SYSTEM
|
||||
if (fsync (mbfi) < 0)
|
||||
if (fsync (mbfi) != 0 && errno != EINVAL)
|
||||
{
|
||||
error ("Error in fsync: %s", strerror (errno), 0);
|
||||
close (mbfi);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (close (mbfi) == -1)
|
||||
if (close (mbfi) != 0)
|
||||
{
|
||||
error ("Error in close: %s", strerror (errno), 0);
|
||||
return EXIT_FAILURE;
|
||||
|
|
27
lib/fdatasync.c
Normal file
27
lib/fdatasync.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
/* Emulate fdatasync on platforms that lack it.
|
||||
|
||||
Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <config.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int
|
||||
fdatasync (int fd)
|
||||
{
|
||||
/* This does more work than strictly necessary, but is the best we
|
||||
can do portably. */
|
||||
return fsync (fd);
|
||||
}
|
83
lib/fsync.c
Normal file
83
lib/fsync.c
Normal file
|
@ -0,0 +1,83 @@
|
|||
/* Emulate fsync on platforms that lack it, primarily Windows and
|
||||
cross-compilers like MinGW.
|
||||
|
||||
This is derived from sqlite3 sources.
|
||||
http://www.sqlite.org/cvstrac/rlog?f=sqlite/src/os_win.c
|
||||
http://www.sqlite.org/copyright.html
|
||||
|
||||
Written by Richard W.M. Jones <rjones.at.redhat.com>
|
||||
|
||||
Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <config.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||||
|
||||
/* FlushFileBuffers */
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
|
||||
# include <errno.h>
|
||||
|
||||
/* Get _get_osfhandle. */
|
||||
# include "msvc-nothrow.h"
|
||||
|
||||
int
|
||||
fsync (int fd)
|
||||
{
|
||||
HANDLE h = (HANDLE) _get_osfhandle (fd);
|
||||
DWORD err;
|
||||
|
||||
if (h == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
errno = EBADF;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!FlushFileBuffers (h))
|
||||
{
|
||||
/* Translate some Windows errors into rough approximations of Unix
|
||||
* errors. MSDN is useless as usual - in this case it doesn't
|
||||
* document the full range of errors.
|
||||
*/
|
||||
err = GetLastError ();
|
||||
switch (err)
|
||||
{
|
||||
case ERROR_ACCESS_DENIED:
|
||||
/* For a read-only handle, fsync should succeed, even though we have
|
||||
no way to sync the access-time changes. */
|
||||
return 0;
|
||||
|
||||
/* eg. Trying to fsync a tty. */
|
||||
case ERROR_INVALID_HANDLE:
|
||||
errno = EINVAL;
|
||||
break;
|
||||
|
||||
default:
|
||||
errno = EIO;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else /* !Windows */
|
||||
|
||||
# error "This platform lacks fsync function, and Gnulib doesn't provide a replacement. This is a bug in Gnulib."
|
||||
|
||||
#endif /* !Windows */
|
|
@ -21,7 +21,7 @@
|
|||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=dup --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h fdopendir filemode fstatat getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings memrchr mktime pselect pthread_sigmask putenv readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=dup --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings memrchr mktime pselect pthread_sigmask putenv readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings
|
||||
|
||||
|
||||
MOSTLYCLEANFILES += core *.stackdump
|
||||
|
@ -297,6 +297,15 @@ EXTRA_DIST += fcntl.in.h
|
|||
|
||||
## end gnulib module fcntl-h
|
||||
|
||||
## begin gnulib module fdatasync
|
||||
|
||||
|
||||
EXTRA_DIST += fdatasync.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += fdatasync.c
|
||||
|
||||
## end gnulib module fdatasync
|
||||
|
||||
## begin gnulib module fdopendir
|
||||
|
||||
|
||||
|
@ -332,6 +341,15 @@ EXTRA_libgnu_a_SOURCES += at-func.c fstatat.c
|
|||
|
||||
## end gnulib module fstatat
|
||||
|
||||
## begin gnulib module fsync
|
||||
|
||||
|
||||
EXTRA_DIST += fsync.c
|
||||
|
||||
EXTRA_libgnu_a_SOURCES += fsync.c
|
||||
|
||||
## end gnulib module fsync
|
||||
|
||||
## begin gnulib module getgroups
|
||||
|
||||
if gl_GNULIB_ENABLED_getgroups
|
||||
|
|
82
lib/putenv.c
82
lib/putenv.c
|
@ -62,7 +62,9 @@ static int
|
|||
_unsetenv (const char *name)
|
||||
{
|
||||
size_t len;
|
||||
#if !HAVE_DECL__PUTENV
|
||||
char **ep;
|
||||
#endif
|
||||
|
||||
if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
|
||||
{
|
||||
|
@ -72,7 +74,7 @@ _unsetenv (const char *name)
|
|||
|
||||
len = strlen (name);
|
||||
|
||||
#if HAVE__PUTENV
|
||||
#if HAVE_DECL__PUTENV
|
||||
{
|
||||
int putenv_result, putenv_errno;
|
||||
char *name_ = malloc (len + 2);
|
||||
|
@ -125,46 +127,46 @@ putenv (char *string)
|
|||
return _unsetenv (string);
|
||||
}
|
||||
|
||||
#if HAVE__PUTENV
|
||||
/* Rely on _putenv to allocate the new environment. If other
|
||||
parts of the application use _putenv, the !HAVE__PUTENV code
|
||||
would fight over who owns the environ vector, causing a crash. */
|
||||
if (name_end[1])
|
||||
return _putenv (string);
|
||||
else
|
||||
{
|
||||
/* _putenv ("NAME=") unsets NAME, so invoke _putenv ("NAME= ")
|
||||
to allocate the environ vector and then replace the new
|
||||
entry with "NAME=". */
|
||||
int putenv_result, putenv_errno;
|
||||
char *name_x = malloc (name_end - string + sizeof "= ");
|
||||
if (!name_x)
|
||||
return -1;
|
||||
memcpy (name_x, string, name_end - string + 1);
|
||||
name_x[name_end - string + 1] = ' ';
|
||||
name_x[name_end - string + 2] = 0;
|
||||
putenv_result = _putenv (name_x);
|
||||
putenv_errno = errno;
|
||||
for (ep = environ; *ep; ep++)
|
||||
if (strcmp (*ep, name_x) == 0)
|
||||
{
|
||||
*ep = string;
|
||||
break;
|
||||
}
|
||||
#if HAVE_DECL__PUTENV
|
||||
/* Rely on _putenv to allocate the new environment. If other
|
||||
parts of the application use _putenv, the !HAVE_DECL__PUTENV code
|
||||
would fight over who owns the environ vector, causing a crash. */
|
||||
if (name_end[1])
|
||||
return _putenv (string);
|
||||
else
|
||||
{
|
||||
/* _putenv ("NAME=") unsets NAME, so invoke _putenv ("NAME= ")
|
||||
to allocate the environ vector and then replace the new
|
||||
entry with "NAME=". */
|
||||
int putenv_result, putenv_errno;
|
||||
char *name_x = malloc (name_end - string + sizeof "= ");
|
||||
if (!name_x)
|
||||
return -1;
|
||||
memcpy (name_x, string, name_end - string + 1);
|
||||
name_x[name_end - string + 1] = ' ';
|
||||
name_x[name_end - string + 2] = 0;
|
||||
putenv_result = _putenv (name_x);
|
||||
putenv_errno = errno;
|
||||
for (ep = environ; *ep; ep++)
|
||||
if (strcmp (*ep, name_x) == 0)
|
||||
{
|
||||
*ep = string;
|
||||
break;
|
||||
}
|
||||
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||||
if (putenv_result == 0)
|
||||
{
|
||||
/* _putenv propagated "NAME= " into the subprocess environment;
|
||||
fix that by calling SetEnvironmentVariable directly. */
|
||||
name_x[name_end - string] = 0;
|
||||
putenv_result = SetEnvironmentVariable (name_x, "") ? 0 : -1;
|
||||
putenv_errno = ENOMEM; /* ENOMEM is the only way to fail. */
|
||||
}
|
||||
# endif
|
||||
free (name_x);
|
||||
__set_errno (putenv_errno);
|
||||
return putenv_result;
|
||||
if (putenv_result == 0)
|
||||
{
|
||||
/* _putenv propagated "NAME= " into the subprocess environment;
|
||||
fix that by calling SetEnvironmentVariable directly. */
|
||||
name_x[name_end - string] = 0;
|
||||
putenv_result = SetEnvironmentVariable (name_x, "") ? 0 : -1;
|
||||
putenv_errno = ENOMEM; /* ENOMEM is the only way to fail. */
|
||||
}
|
||||
# endif
|
||||
free (name_x);
|
||||
__set_errno (putenv_errno);
|
||||
return putenv_result;
|
||||
}
|
||||
#else
|
||||
for (ep = environ; *ep; ep++)
|
||||
if (strncmp (*ep, string, name_end - string) == 0
|
||||
|
@ -186,7 +188,7 @@ putenv (char *string)
|
|||
last_environ = new_environ;
|
||||
environ = new_environ;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -61,8 +61,10 @@
|
|||
/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
|
||||
<unistd.h>. */
|
||||
/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
|
||||
/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system <stdlib.h> is
|
||||
included here. */
|
||||
/* But avoid namespace pollution on glibc systems. */
|
||||
#ifndef __GLIBC__
|
||||
#if !defined __GLIBC__ && !defined __osf__
|
||||
# define __need_system_stdlib_h
|
||||
# include <stdlib.h>
|
||||
# undef __need_system_stdlib_h
|
||||
|
|
123
lisp/ChangeLog
123
lisp/ChangeLog
|
@ -1,5 +1,121 @@
|
|||
2013-03-15 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
Sync with Tramp 2.2.7.
|
||||
|
||||
* net/trampver.el: Update release number.
|
||||
|
||||
2013-03-14 Tassilo Horn <tsdh@gnu.org>
|
||||
|
||||
* doc-view.el Fix bug#13887.
|
||||
(doc-view-insert-image): Don't modify overlay associated to
|
||||
non-live windows, and implement horizontal centering of image in
|
||||
case it's smaller than the window.
|
||||
(doc-view-new-window-function): Force redisplay of new windows on
|
||||
doc-view buffers.
|
||||
|
||||
2013-03-13 Karl Fogel <kfogel@red-bean.com>
|
||||
|
||||
* saveplace.el (save-place-alist-to-file): Don't sort
|
||||
`save-place-alist', just pretty-print it (bug#13882).
|
||||
|
||||
2013-03-13 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp-sh.el (tramp-sh-handle-insert-directory): Check,
|
||||
whether `default-file-name-coding-system' is bound. It isn't in
|
||||
XEmacs.
|
||||
|
||||
2013-03-13 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* emacs-lisp/byte-run.el (defun-declarations-alist): Don't use
|
||||
backquotes for `obsolete' (bug#13929).
|
||||
|
||||
* international/mule.el (find-auto-coding): Include file name in
|
||||
obsolescence warning (bug#13922).
|
||||
|
||||
2013-03-12 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* progmodes/cfengine.el (cfengine-parameters-indent): New variable
|
||||
for CFEngine 3-specific indentation.
|
||||
(cfengine3-indent-line): Use it. Fix up category regex.
|
||||
(cfengine3-font-lock-keywords): Add bundle and namespace characters.
|
||||
|
||||
2013-03-12 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* type-break.el (type-break-file-name):
|
||||
* textmodes/remember.el (remember-data-file):
|
||||
* strokes.el (strokes-file):
|
||||
* shadowfile.el (shadow-initialize):
|
||||
* saveplace.el (save-place-file):
|
||||
* ps-bdf.el (bdf-cache-file):
|
||||
* progmodes/idlwave.el (idlwave-config-directory):
|
||||
* net/quickurl.el (quickurl-url-file):
|
||||
* international/kkc.el (kkc-init-file-name):
|
||||
* ido.el (ido-save-directory-list-file):
|
||||
* emulation/viper.el (viper-custom-file-name):
|
||||
* emulation/vip.el (vip-startup-file):
|
||||
* calendar/todo-mode.el (todo-file-do, todo-file-done, todo-file-top):
|
||||
* calendar/timeclock.el (timeclock-file): Use locate-user-emacs-file.
|
||||
|
||||
2013-03-12 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Switch encodings of tutorials, thai-word to UTF-8 (Bug#13880).
|
||||
* language/thai-word.el: Switch to UTF-8.
|
||||
|
||||
2013-03-11 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* recentf.el (recentf-save-file): Use locate-user-emacs-file (bug#13870).
|
||||
|
||||
2013-03-11 Thierry Volpiatto <thierry.volpiatto@gmail.com>
|
||||
|
||||
* net/net-utils.el (net-utils-remove-ctrl-m-filter):
|
||||
Use with-current-buffer and don't move point.
|
||||
(net-utils-run-simple): Remove useless code.
|
||||
(net-utils-remove-ctl-m): Remove unused custom.
|
||||
|
||||
2013-03-11 Per Starbäck <starback@stp.lingfil.uu.se>
|
||||
|
||||
* international/characters.el (glyphless-set-char-table-range): New fun.
|
||||
(update-glyphless-char-display): Use it (bug#13744).
|
||||
|
||||
2013-03-11 Teodor Zlatanov <tzz@lifelogs.com>
|
||||
|
||||
* progmodes/cfengine.el: Update for CFEngine 3.4.2 and higher:
|
||||
namespaces in the syntax, indent closer for hanging brace
|
||||
correctly, allow single-quote delimited 'strings', and make
|
||||
`cfengine3-mode' the default.
|
||||
|
||||
2013-03-11 Jean-Philippe Gravel <jpgravel@gmail.com>
|
||||
|
||||
* progmodes/gdb-mi.el: Speed up initialization (bug#10580).
|
||||
Use lexical-binding. Fix up docstring according to conventions.
|
||||
(gdbmi-debug-mode): New var.
|
||||
(gdbmi-start-with, gdbmi-same-start, gdbmi-is-number, gdbmi-bnf-init)
|
||||
(gdbmi-bnf-output, gdbmi-bnf-skip-unrecognized, gdbmi-bnf-gdb-prompt)
|
||||
(gdbmi-bnf-result-record, gdbmi-bnf-out-of-band-record)
|
||||
(gdbmi-bnf-async-record, gdbmi-bnf-stream-record)
|
||||
(gdbmi-bnf-console-stream-output, gdbmi-bnf-target-stream-output)
|
||||
(gdbmi-bnf-log-stream-output, gdbmi-bnf-result-and-async-record-impl)
|
||||
(gdbmi-bnf-incomplete-record-result): New functions.
|
||||
(gdb-car<): Remove function.
|
||||
(gdbmi-record-list): Remove variable.
|
||||
(gdbmi-bnf-state, gdbmi-bnf-offset): New vars.
|
||||
(gdbmi-bnf-result-state-configs): New const.
|
||||
(gud-gdbmi-marker-filter): Rewrite.
|
||||
(gdb-ignored-notification, gdb-thread-created, gdb-thread-exited)
|
||||
(gdb-thread-selected, gdb-running, gdb-starting, gdb-stopped):
|
||||
Add `token' argument.
|
||||
(gdb-done, gdb-error): New functions.
|
||||
(gdb-done-or-error): Add `is-complete' argument. Change arg order.
|
||||
|
||||
2013-03-11 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* term/xterm.el (xterm--report-background-handler): Don't burp
|
||||
upon timeout.
|
||||
(xterm--version-handler): Extract from terminal-init-xterm.
|
||||
(xterm--query): Don't mishandle timeout. Remove debugging messages.
|
||||
Allow multiple handlers.
|
||||
(terminal-init-xterm): Handle OSX's Terminal.app's incorrect answer.
|
||||
|
||||
* term/xterm.el: Don't discard input (bug#6758). Use lexical-binding.
|
||||
(xterm--report-background-handler, xterm--query): New functions.
|
||||
(terminal-init-xterm): Use them.
|
||||
|
@ -105,14 +221,13 @@
|
|||
(tramp-gvfs-mount-spec): Use it.
|
||||
(tramp-gvfs-maybe-open-connection): Check, that in case of "smb"
|
||||
there is a share name. Handle different names of the D-Bus
|
||||
signals and methods.
|
||||
(tramp-gvfs-maybe-open-connection): Set connection properties
|
||||
needed for `tramp-check-cached-permissions'.
|
||||
signals and methods. Set connection properties needed for
|
||||
`tramp-check-cached-permissions'.
|
||||
(tramp-gvfs-send-command): Apply `tramp-gvfs-maybe-open-connection'.
|
||||
Return t or nil.
|
||||
|
||||
* net/tramp.el (tramp-backtrace): Move up.
|
||||
(tramp-error): Apply a backtrace into the debug buffer when
|
||||
(tramp-error): Dump a backtrace into the debug buffer when
|
||||
`tramp-verbose > 9.
|
||||
(tramp-file-mode-type-map, tramp-file-mode-from-int)
|
||||
(tramp-file-mode-permissions, tramp-get-local-uid)
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
|
||||
;;; User Variables:
|
||||
|
||||
(defcustom timeclock-file (convert-standard-filename "~/.timelog")
|
||||
(defcustom timeclock-file (locate-user-emacs-file "timelog" ".timelog")
|
||||
"The file used to store timeclock data in."
|
||||
:type 'file
|
||||
:group 'timeclock)
|
||||
|
|
|
@ -281,11 +281,11 @@ show and mark todo entries for today, but may slow down processing of
|
|||
the diary file somewhat."
|
||||
:type 'string
|
||||
:group 'todo)
|
||||
(defcustom todo-file-do (convert-standard-filename "~/.todo-do")
|
||||
(defcustom todo-file-do (locate-user-emacs-file "todo-do" ".todo-do")
|
||||
"TODO mode list file."
|
||||
:type 'file
|
||||
:group 'todo)
|
||||
(defcustom todo-file-done (convert-standard-filename "~/.todo-done")
|
||||
(defcustom todo-file-done (locate-user-emacs-file "todo-done" ".todo-done")
|
||||
"TODO mode archive file."
|
||||
:type 'file
|
||||
:group 'todo)
|
||||
|
@ -315,7 +315,7 @@ window."
|
|||
:group 'todo)
|
||||
(defvar todo-edit-buffer " *TODO Edit*"
|
||||
"TODO Edit buffer name.")
|
||||
(defcustom todo-file-top (convert-standard-filename "~/.todo-top")
|
||||
(defcustom todo-file-top (locate-user-emacs-file "todo-top" ".todo-top")
|
||||
"TODO mode top priorities file.
|
||||
|
||||
Not in TODO format, but diary compatible.
|
||||
|
|
114
lisp/doc-view.el
114
lisp/doc-view.el
|
@ -324,7 +324,26 @@ of the page moves to the previous page."
|
|||
;; `window' property is only effective if its value is a window).
|
||||
(cl-assert (eq t (car winprops)))
|
||||
(delete-overlay ol))
|
||||
(image-mode-window-put 'overlay ol winprops)))
|
||||
(image-mode-window-put 'overlay ol winprops)
|
||||
(when (windowp (car winprops))
|
||||
(if (stringp (get-char-property (point-min) 'display))
|
||||
;; We're not already displaying an image, so this is the
|
||||
;; initial window showing the document.
|
||||
(run-with-timer nil nil
|
||||
(lambda ()
|
||||
;; In case a conversion is running, the
|
||||
;; refresh will happen as defined by
|
||||
;; `doc-view-conversion-refresh-interval'.
|
||||
(unless doc-view-current-converter-processes
|
||||
(with-selected-window (car winprops)
|
||||
(doc-view-goto-page 1)))))
|
||||
;; We've split the window showing the document. All we need
|
||||
;; to do is selecting the new window to make the image appear
|
||||
;; there, too.
|
||||
(run-with-timer nil nil
|
||||
(lambda ()
|
||||
(save-window-excursion
|
||||
(select-window (car winprops)))))))))
|
||||
|
||||
(defvar doc-view-current-files nil
|
||||
"Only used internally.")
|
||||
|
@ -535,7 +554,7 @@ Typically \"page-%s.png\".")
|
|||
(with-selected-window win
|
||||
(doc-view-goto-page page))))))))
|
||||
(overlay-put (doc-view-current-overlay)
|
||||
'help-echo (doc-view-current-info))))
|
||||
'help-echo (doc-view-current-info))))
|
||||
|
||||
(defun doc-view-next-page (&optional arg)
|
||||
"Browse ARG pages forward."
|
||||
|
@ -1250,44 +1269,59 @@ ARGS is a list of image descriptors."
|
|||
(when doc-view-pending-cache-flush
|
||||
(clear-image-cache)
|
||||
(setq doc-view-pending-cache-flush nil))
|
||||
(let ((ol (doc-view-current-overlay))
|
||||
(image (if (and file (file-readable-p file))
|
||||
(if (not (and doc-view-scale-internally
|
||||
(fboundp 'imagemagick-types)))
|
||||
(apply 'create-image file doc-view--image-type nil args)
|
||||
(unless (member :width args)
|
||||
(setq args `(,@args :width ,doc-view-image-width)))
|
||||
(apply 'create-image file 'imagemagick nil args))))
|
||||
(slice (doc-view-current-slice)))
|
||||
(setf (doc-view-current-image) image)
|
||||
(move-overlay ol (point-min) (point-max))
|
||||
(overlay-put ol 'display
|
||||
(cond
|
||||
(image
|
||||
(if slice
|
||||
(list (cons 'slice slice) image)
|
||||
image))
|
||||
;; We're trying to display a page that doesn't exist.
|
||||
(doc-view-current-converter-processes
|
||||
;; Maybe the page doesn't exist *yet*.
|
||||
"Cannot display this page (yet)!")
|
||||
(t
|
||||
;; Typically happens if the conversion process somehow
|
||||
;; failed. Better not signal an error here because it
|
||||
;; could prevent a subsequent reconversion from fixing
|
||||
;; the problem.
|
||||
(concat "Cannot display this page!\n"
|
||||
"Maybe because of a conversion failure!"))))
|
||||
(let ((win (overlay-get ol 'window)))
|
||||
(if (stringp (overlay-get ol 'display))
|
||||
(progn ;Make sure the text is not scrolled out of view.
|
||||
(set-window-hscroll win 0)
|
||||
(set-window-vscroll win 0))
|
||||
(let ((hscroll (image-mode-window-get 'hscroll win))
|
||||
(vscroll (image-mode-window-get 'vscroll win)))
|
||||
;; Reset scroll settings, in case they were changed.
|
||||
(if hscroll (set-window-hscroll win hscroll))
|
||||
(if vscroll (set-window-vscroll win vscroll)))))))
|
||||
(let ((ol (doc-view-current-overlay)))
|
||||
;; Only insert the image if the buffer is visible.
|
||||
(when (window-live-p (overlay-get ol 'window))
|
||||
(let* ((image (if (and file (file-readable-p file))
|
||||
(if (not (and doc-view-scale-internally
|
||||
(fboundp 'imagemagick-types)))
|
||||
(apply 'create-image file doc-view--image-type nil args)
|
||||
(unless (member :width args)
|
||||
(setq args `(,@args :width ,doc-view-image-width)))
|
||||
(apply 'create-image file 'imagemagick nil args))))
|
||||
(slice (doc-view-current-slice))
|
||||
(img-width (and image (car (image-size image))))
|
||||
(displayed-img-width (if (and image slice)
|
||||
(* (/ (float (nth 2 slice))
|
||||
(car (image-size image 'pixels)))
|
||||
img-width)
|
||||
img-width))
|
||||
(window-width (window-width (selected-window))))
|
||||
(setf (doc-view-current-image) image)
|
||||
(move-overlay ol (point-min) (point-max))
|
||||
;; In case the window is wider than the image, center the image
|
||||
;; horizontally.
|
||||
(overlay-put ol 'before-string
|
||||
(when (and image (> window-width displayed-img-width))
|
||||
(propertize " " 'display
|
||||
`(space :align-to (+ center (-0.5 . ,displayed-img-width))))))
|
||||
(overlay-put ol 'display
|
||||
(cond
|
||||
(image
|
||||
(if slice
|
||||
(list (cons 'slice slice) image)
|
||||
image))
|
||||
;; We're trying to display a page that doesn't exist.
|
||||
(doc-view-current-converter-processes
|
||||
;; Maybe the page doesn't exist *yet*.
|
||||
"Cannot display this page (yet)!")
|
||||
(t
|
||||
;; Typically happens if the conversion process somehow
|
||||
;; failed. Better not signal an error here because it
|
||||
;; could prevent a subsequent reconversion from fixing
|
||||
;; the problem.
|
||||
(concat "Cannot display this page!\n"
|
||||
"Maybe because of a conversion failure!"))))
|
||||
(let ((win (overlay-get ol 'window)))
|
||||
(if (stringp (overlay-get ol 'display))
|
||||
(progn ;Make sure the text is not scrolled out of view.
|
||||
(set-window-hscroll win 0)
|
||||
(set-window-vscroll win 0))
|
||||
(let ((hscroll (image-mode-window-get 'hscroll win))
|
||||
(vscroll (image-mode-window-get 'vscroll win)))
|
||||
;; Reset scroll settings, in case they were changed.
|
||||
(if hscroll (set-window-hscroll win hscroll))
|
||||
(if vscroll (set-window-vscroll win vscroll)))))))))
|
||||
|
||||
(defun doc-view-sort (a b)
|
||||
"Return non-nil if A should be sorted before B.
|
||||
|
|
|
@ -79,7 +79,8 @@ The return value of this function is not used."
|
|||
(list 'quote f) (list 'quote arglist) (list 'quote when))))
|
||||
(list 'obsolete
|
||||
#'(lambda (f _args new-name when)
|
||||
`(make-obsolete ',f ',new-name ,when)))
|
||||
(list 'make-obsolete
|
||||
(list 'quote f) (list 'quote new-name) (list 'quote when))))
|
||||
(list 'compiler-macro
|
||||
#'(lambda (f args compiler-function)
|
||||
;; FIXME: Make it possible to just reuse `args'.
|
||||
|
|
|
@ -159,7 +159,7 @@ If nil then it is bound to `delete-backward-char'."
|
|||
|
||||
(defvar vip-inhibit-startup-message nil)
|
||||
|
||||
(defvar vip-startup-file (convert-standard-filename "~/.vip")
|
||||
(defvar vip-startup-file (locate-user-emacs-file "vip" ".vip")
|
||||
"Filename used as startup file for vip.")
|
||||
|
||||
;; key bindings
|
||||
|
|
|
@ -1009,9 +1009,9 @@ as a Meta key and any number of multiple escapes are allowed."
|
|||
(inhibit-quit t))
|
||||
(if (viper-ESC-event-p event)
|
||||
(progn
|
||||
;; Some versions of Emacs (eg., 22.50.8 have a bug, which makes even
|
||||
;; a single ESC into ;; a fast keyseq. To guard against this, we
|
||||
;; added a check if there are other events as well. Keep the next
|
||||
;; Some versions of Emacs (eg., 22.50.8 (?)) have a bug, which makes
|
||||
;; even a single ESC into a fast keyseq. To guard against this, we
|
||||
;; added a check if there are other events as well. Keep the next
|
||||
;; line for the next time the bug reappears, so that will remember to
|
||||
;; report it.
|
||||
;;(if (and (viper-fast-keysequence-p) unread-command-events)
|
||||
|
|
|
@ -313,7 +313,7 @@
|
|||
(require 'viper-keym)
|
||||
|
||||
;; better be defined before Viper custom group.
|
||||
(defvar viper-custom-file-name (convert-standard-filename "~/.viper")
|
||||
(defvar viper-custom-file-name (locate-user-emacs-file "viper" ".viper")
|
||||
"Viper customization file.
|
||||
If set by the user, this must be done _before_ Viper is loaded in `~/.emacs'.")
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -927,7 +927,8 @@ ido is running. Copied from `icomplete-minibuffer-setup-hook'."
|
|||
:type 'hook
|
||||
:group 'ido)
|
||||
|
||||
(defcustom ido-save-directory-list-file (convert-standard-filename "~/.ido.last")
|
||||
(defcustom ido-save-directory-list-file
|
||||
(locate-user-emacs-file "ido.last" ".ido.last")
|
||||
"File in which the ido state is saved between invocations.
|
||||
Variables stored are: `ido-last-directory-list', `ido-work-directory-list',
|
||||
`ido-work-file-list', and `ido-dir-file-cache'.
|
||||
|
|
|
@ -1410,16 +1410,16 @@ This function updates the char-table `glyphless-char-display'."
|
|||
(or (memq method '(zero-width thin-space empty-box acronym hex-code))
|
||||
(error "Invalid glyphless character display method: %s" method))
|
||||
(cond ((eq target 'c0-control)
|
||||
(set-char-table-range glyphless-char-display '(#x00 . #x1F)
|
||||
method)
|
||||
(glyphless-set-char-table-range glyphless-char-display
|
||||
#x00 #x1F method)
|
||||
;; Users will not expect their newlines and TABs be
|
||||
;; displayed as anything but themselves, so exempt those
|
||||
;; two characters from c0-control.
|
||||
(set-char-table-range glyphless-char-display #x9 nil)
|
||||
(set-char-table-range glyphless-char-display #xa nil))
|
||||
((eq target 'c1-control)
|
||||
(set-char-table-range glyphless-char-display '(#x80 . #x9F)
|
||||
method))
|
||||
(glyphless-set-char-table-range glyphless-char-display
|
||||
#x80 #x9F method))
|
||||
((eq target 'format-control)
|
||||
(map-char-table
|
||||
#'(lambda (char category)
|
||||
|
@ -1443,6 +1443,14 @@ This function updates the char-table `glyphless-char-display'."
|
|||
(t
|
||||
(error "Invalid glyphless character group: %s" target))))))
|
||||
|
||||
(defun glyphless-set-char-table-range (chartable from to method)
|
||||
(if (eq method 'acronym)
|
||||
(let ((i from))
|
||||
(while (<= i to)
|
||||
(set-char-table-range chartable i (aref char-acronym-table i))
|
||||
(setq i (1+ i))))
|
||||
(set-char-table-range chartable (cons from to) method)))
|
||||
|
||||
;;; Control of displaying glyphless characters.
|
||||
(defcustom glyphless-char-display-control
|
||||
'((format-control . thin-space)
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
"String denoting KKC input method.
|
||||
This string is shown at mode line when users are in KKC mode.")
|
||||
|
||||
(defvar kkc-init-file-name (convert-standard-filename "~/.kkcrc")
|
||||
(defvar kkc-init-file-name (locate-user-emacs-file "kkcrc" ".kkcrc")
|
||||
"Name of a file which contains user's initial setup code for KKC.")
|
||||
|
||||
;; A flag to control a file specified by `kkc-init-file-name'.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
;;; latexenc.el --- guess correct coding system in LaTeX files -*-coding: iso-2022-7bit -*-
|
||||
;;; latexenc.el --- guess correct coding system in LaTeX files -*-coding: utf-8 -*-
|
||||
|
||||
;; Copyright (C) 2005-2013 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Arne J,Ax(Brgensen <arne@arnested.dk>
|
||||
;; Author: Arne Jørgensen <arne@arnested.dk>
|
||||
;; Keywords: mule, coding system, latex
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; mule-cmds.el --- commands for multilingual environment -*-coding: iso-2022-7bit -*-
|
||||
;;; mule-cmds.el --- commands for multilingual environment -*-coding: utf-8 -*-
|
||||
|
||||
;; Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
|
|
|
@ -1844,8 +1844,11 @@ If nothing is specified, the return value is nil."
|
|||
(re-search-forward
|
||||
"\\(.*;\\)?[ \t]*unibyte:[ \t]*\\([^ ;]+\\)"
|
||||
head-end t))
|
||||
(display-warning 'mule "`unibyte: t' is obsolete; \
|
||||
use \"coding: 'raw-text\" instead." :warning)
|
||||
(display-warning 'mule
|
||||
(format "\"unibyte: t\" (in %s) is obsolete; \
|
||||
use \"coding: 'raw-text\" instead."
|
||||
(file-relative-name filename))
|
||||
:warning)
|
||||
(setq coding-system 'raw-text))
|
||||
(when (and (not coding-system)
|
||||
(re-search-forward
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; china-util.el --- utilities for Chinese -*- coding: iso-2022-7bit -*-
|
||||
;;; china-util.el --- utilities for Chinese -*- coding: utf-8 -*-
|
||||
|
||||
;; Copyright (C) 1995, 2001-2013 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; chinese.el --- support for Chinese -*- coding: iso-2022-7bit; -*-
|
||||
;;; chinese.el --- support for Chinese -*- coding: utf-8; -*-
|
||||
|
||||
;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
|
@ -114,7 +114,7 @@
|
|||
iso-2022-cn)
|
||||
(input-method . "chinese-py-punct")
|
||||
(features china-util)
|
||||
(sample-text . "Chinese ($AVPND(B,$AFUM(;0(B,$A::So(B) $ADc:C(B")
|
||||
(sample-text . "Chinese (中文,普通话,汉语) 你好")
|
||||
(documentation . "Support for Chinese GB2312 character set.")
|
||||
(tutorial . "TUTORIAL.cn"))
|
||||
'("Chinese"))
|
||||
|
@ -146,7 +146,7 @@
|
|||
(input-method . "chinese-py-punct-b5")
|
||||
(ctext-non-standard-encodings "big5-0")
|
||||
(features china-util)
|
||||
(sample-text . "Cantonese ($(0GnM$(B,$(0N]0*Hd(B) $(0*/=((B, $(0+$)p(B")
|
||||
(sample-text . "Cantonese (粵語,廣東話) 早晨, 你好")
|
||||
(documentation . "Support for Chinese Big5 character set.")
|
||||
(tutorial . "TUTORIAL.zh"))
|
||||
'("Chinese"))
|
||||
|
@ -251,7 +251,7 @@ converted to CNS)."))
|
|||
chinese-iso-8bit) ; fixme?
|
||||
(ctext-non-standard-encodings "gbk-0")
|
||||
(input-method . "chinese-py-punct") ; fixme?
|
||||
(sample-text . "Chinese ($BCfJ8(B,$BIaDL$A;0(B,$A::So(B) $(D95$B9%(B")
|
||||
(sample-text . "Chinese (中文,普通话,汉语) 妳好")
|
||||
(features china-util)
|
||||
(documentation . "Support for Chinese GBK character set.")
|
||||
(tutorial . "TUTORIAL.cn"))
|
||||
|
@ -277,7 +277,7 @@ converted to CNS)."))
|
|||
(coding-priority gb18030 gbk iso-2022-cn chinese-big5
|
||||
chinese-iso-8bit) ; fixme?
|
||||
(input-method . "chinese-py-punct") ; fixme?
|
||||
(sample-text . "Chinese ($BCfJ8(B,$BIaDL$A;0(B,$A::So(B) $(D0_$B9%(B")
|
||||
(sample-text . "Chinese (中文,普通话,汉语) 你好")
|
||||
(features china-util)
|
||||
(documentation
|
||||
. "Support for Chinese GB18030 character set.")
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; cyrillic.el --- support for Cyrillic -*- coding: iso-2022-7bit; -*-
|
||||
;;; cyrillic.el --- support for Cyrillic -*- coding: utf-8; -*-
|
||||
|
||||
;; Copyright (C) 1997-1998, 2001-2013 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
|
@ -74,7 +74,7 @@
|
|||
(nonascii-translation . iso-8859-5)
|
||||
(unibyte-display . cyrillic-iso-8bit)
|
||||
(features cyril-util)
|
||||
(sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
|
||||
(sample-text . "Russian (Русский) Здравствуйте!")
|
||||
(documentation . "Support for Cyrillic ISO-8859-5."))
|
||||
'("Cyrillic"))
|
||||
|
||||
|
@ -103,7 +103,7 @@
|
|||
(input-method . "russian-typewriter")
|
||||
(features cyril-util)
|
||||
(unibyte-display . cyrillic-koi8)
|
||||
(sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
|
||||
(sample-text . "Russian (Русский) Здравствуйте!")
|
||||
(documentation . "Support for Cyrillic KOI8-R."))
|
||||
'("Cyrillic"))
|
||||
|
||||
|
@ -117,7 +117,7 @@
|
|||
(input-method . "russian-computer")
|
||||
(features cyril-util)
|
||||
(unibyte-display . cyrillic-koi8)
|
||||
(sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
|
||||
(sample-text . "Russian (Русский) Здравствуйте!")
|
||||
(documentation . "\
|
||||
Support for Russian using koi8-r and the russian-computer input method.")
|
||||
(tutorial . "TUTORIAL.ru"))
|
||||
|
@ -158,7 +158,7 @@ Support for Russian using koi8-r and the russian-computer input method.")
|
|||
(input-method . "russian-typewriter")
|
||||
(features cyril-util)
|
||||
(unibyte-display . cyrillic-alternativnyj)
|
||||
(sample-text . "Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!")
|
||||
(sample-text . "Russian (Русский) Здравствуйте!")
|
||||
(documentation . "Support for Cyrillic ALTERNATIVNYJ."))
|
||||
'("Cyrillic"))
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
;;; czech.el --- support for Czech -*- coding: iso-2022-7bit -*-
|
||||
;;; czech.el --- support for Czech -*- coding: utf-8 -*-
|
||||
|
||||
;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Milan Zamazal <pdm@zamazal.org>
|
||||
;; Maintainer: Pavel Jan,Am(Bk <Pavel@Janik.cz>
|
||||
;; Maintainer: Pavel Janík <Pavel@Janik.cz>
|
||||
;; Keywords: multilingual, Czech
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
@ -35,7 +35,7 @@
|
|||
(nonascii-translation . iso-8859-2)
|
||||
(unibyte-display . iso-8859-2)
|
||||
(tutorial . "TUTORIAL.cs")
|
||||
(sample-text . "P,Bx(Bejeme v,Ba(Bm hezk,B}(B den!")
|
||||
(sample-text . "Přejeme vám hezký den!")
|
||||
(documentation . "\
|
||||
This language environment is almost the same as Latin-2,
|
||||
but sets the default input method to \"czech\",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; korean.el --- support for Korean -*- coding: iso-2022-7bit -*-
|
||||
;;; korean.el --- support for Korean -*- coding: utf-8 -*-
|
||||
|
||||
;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
|
@ -74,7 +74,7 @@
|
|||
(input-method . "korean-hangul")
|
||||
(features korea-util)
|
||||
(coding-priority korean-iso-8bit korean-cp949 iso-2022-kr)
|
||||
(sample-text . "Hangul ($(CGQ1[(B) $(C>H3gGO<<?d(B, $(C>H3gGO=J4O1n(B")
|
||||
(sample-text . "Hangul (한글) 안녕하세요, 안녕하십니까")
|
||||
(documentation . "\
|
||||
The following key bindings are available for controlling Korean input methods:
|
||||
Shift-SPC, Hangul: toggle-korean-input-method
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
;;; slovak.el --- support for Slovak -*- coding: iso-2022-7bit -*-
|
||||
;;; slovak.el --- support for Slovak -*- coding: utf-8 -*-
|
||||
|
||||
;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc.
|
||||
|
||||
;; Authors: Tibor ,B)(Bimko <tibor.simko@fmph.uniba.sk>,
|
||||
;; Authors: Tibor Šimko <tibor.simko@fmph.uniba.sk>,
|
||||
;; Milan Zamazal <pdm@zamazal.org>
|
||||
;; Maintainer: Pavel Jan,Am(Bk <Pavel@Janik.cz>
|
||||
;; Maintainer: Pavel Janík <Pavel@Janik.cz>
|
||||
;; Keywords: multilingual, Slovak
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
@ -36,7 +36,7 @@
|
|||
(input-method . "slovak")
|
||||
(unibyte-display . iso-8859-2)
|
||||
(tutorial . "TUTORIAL.sk")
|
||||
(sample-text . "Prajeme V,Ba(Bm pr,Bm(Bjemn,B}(B de,Br(B!")
|
||||
(sample-text . "Prajeme Vám príjemný deň!")
|
||||
(documentation . "\
|
||||
This language environment is almost the same as Latin-2,
|
||||
but sets the default input method to \"slovak\",
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
|||
;;; vietnamese.el --- support for Vietnamese -*- coding: iso-2022-7bit; -*-
|
||||
;;; vietnamese.el --- support for Vietnamese -*- coding: utf-8; -*-
|
||||
|
||||
;; Copyright (C) 1998, 2001-2013 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
|
@ -80,7 +80,7 @@
|
|||
(input-method . "vietnamese-viqr")
|
||||
(unibyte-display . vietnamese-viscii)
|
||||
(features viet-util)
|
||||
(sample-text . "Vietnamese (Ti,1*(Bng Vi,1.(Bt) Ch,1`(Bo b,1U(Bn")
|
||||
(sample-text . "Vietnamese (Tiếng Việt) Chào bạn")
|
||||
(documentation . "\
|
||||
For Vietnamese, Emacs uses special charsets internally.
|
||||
They can be decoded from and encoded to VISCII, VSCII, TCVN-5712, VIQR
|
||||
|
|
|
@ -54,11 +54,6 @@
|
|||
:group 'comm
|
||||
:version "20.3")
|
||||
|
||||
(defcustom net-utils-remove-ctl-m (memq system-type '(windows-nt msdos))
|
||||
"If non-nil, remove control-Ms from output."
|
||||
:group 'net-utils
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom traceroute-program
|
||||
(if (eq system-type 'windows-nt)
|
||||
"tracert"
|
||||
|
@ -319,25 +314,17 @@ This variable is only used if the variable
|
|||
|
||||
(defun net-utils-remove-ctrl-m-filter (process output-string)
|
||||
"Remove trailing control Ms."
|
||||
(let ((old-buffer (current-buffer))
|
||||
(filtered-string output-string))
|
||||
(unwind-protect
|
||||
(let ((moving))
|
||||
(set-buffer (process-buffer process))
|
||||
(let ((inhibit-read-only t))
|
||||
(setq moving (= (point) (process-mark process)))
|
||||
|
||||
(while (string-match "\r" filtered-string)
|
||||
(setq filtered-string
|
||||
(replace-match "" nil nil filtered-string)))
|
||||
|
||||
(save-excursion
|
||||
;; Insert the text, moving the process-marker.
|
||||
(goto-char (process-mark process))
|
||||
(insert filtered-string)
|
||||
(set-marker (process-mark process) (point))))
|
||||
(if moving (goto-char (process-mark process))))
|
||||
(set-buffer old-buffer))))
|
||||
(with-current-buffer (process-buffer process)
|
||||
(save-excursion
|
||||
(let ((inhibit-read-only t)
|
||||
(filtered-string output-string))
|
||||
(while (string-match "\r" filtered-string)
|
||||
(setq filtered-string
|
||||
(replace-match "" nil nil filtered-string)))
|
||||
;; Insert the text, moving the process-marker.
|
||||
(goto-char (process-mark process))
|
||||
(insert filtered-string)
|
||||
(set-marker (process-mark process) (point))))))
|
||||
|
||||
(defun net-utils-run-program (name header program args)
|
||||
"Run a network information program."
|
||||
|
@ -375,7 +362,6 @@ This variable is only used if the variable
|
|||
(apply 'start-process program-name
|
||||
(current-buffer) program-name args)
|
||||
'net-utils-remove-ctrl-m-filter)
|
||||
(goto-char (point-min))
|
||||
(unless nodisplay (display-buffer (current-buffer)))))
|
||||
|
||||
(defun net-utils--revert-function (&optional ignore-auto noconfirm)
|
||||
|
|
|
@ -94,7 +94,8 @@
|
|||
:group 'abbrev
|
||||
:prefix "quickurl-")
|
||||
|
||||
(defcustom quickurl-url-file (convert-standard-filename "~/.quickurls")
|
||||
(defcustom quickurl-url-file
|
||||
(locate-user-emacs-file "quickurls" ".quickurls")
|
||||
"File that contains the URL list."
|
||||
:type 'file
|
||||
:group 'quickurl)
|
||||
|
|
|
@ -2568,7 +2568,9 @@ This is like `dired-recursive-delete-directory' for Tramp files."
|
|||
;; Decode the output, it could be multibyte.
|
||||
(decode-coding-region
|
||||
beg (point-max)
|
||||
(or file-name-coding-system default-file-name-coding-system))
|
||||
(or file-name-coding-system
|
||||
(and (boundp 'default-file-name-coding-system)
|
||||
(symbol-value 'default-file-name-coding-system))))
|
||||
|
||||
;; The inserted file could be from somewhere else.
|
||||
(when (and (not wildcard) (not full-directory-p))
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
;; should be changed only there.
|
||||
|
||||
;;;###tramp-autoload
|
||||
(defconst tramp-version "2.2.7-pre"
|
||||
(defconst tramp-version "2.2.7"
|
||||
"This version of Tramp.")
|
||||
|
||||
;;;###tramp-autoload
|
||||
|
@ -44,7 +44,7 @@
|
|||
(= emacs-major-version 21)
|
||||
(>= emacs-minor-version 4)))
|
||||
"ok"
|
||||
(format "Tramp 2.2.7-pre is not fit for %s"
|
||||
(format "Tramp 2.2.7 is not fit for %s"
|
||||
(when (string-match "^.*$" (emacs-version))
|
||||
(match-string 0 (emacs-version)))))))
|
||||
(unless (string-match "\\`ok\\'" x) (error "%s" x)))
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
;; Author: Dave Love <fx@gnu.org>
|
||||
;; Maintainer: Ted Zlatanov <tzz@lifelogs.com>
|
||||
;; Keywords: languages
|
||||
;; Version: 1.1
|
||||
;; Version: 1.2
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
|
@ -58,6 +58,70 @@
|
|||
:group 'cfengine
|
||||
:type 'integer)
|
||||
|
||||
(defcustom cfengine-parameters-indent '(promise pname 0)
|
||||
"*Indentation of CFEngine3 promise parameters (hanging indent).
|
||||
|
||||
For example, say you have this code:
|
||||
|
||||
bundle x y
|
||||
{
|
||||
section:
|
||||
class::
|
||||
promise ...
|
||||
promiseparameter => ...
|
||||
}
|
||||
|
||||
You can choose to indent promiseparameter from the beginning of
|
||||
the line (absolutely) or from the word \"promise\" (relatively).
|
||||
|
||||
You can also choose to indent the start of the word
|
||||
\"promiseparameter\" or the arrow that follows it.
|
||||
|
||||
Finally, you can choose the amount of the indent.
|
||||
|
||||
The default is to anchor at promise, indent parameter name, and offset 0:
|
||||
|
||||
bundle agent rcfiles
|
||||
{
|
||||
files:
|
||||
any::
|
||||
\"/tmp/netrc\"
|
||||
comment => \"my netrc\",
|
||||
perms => mog(\"600\", \"tzz\", \"tzz\");
|
||||
}
|
||||
|
||||
Here we anchor at beginning of line, indent arrow, and offset 10:
|
||||
|
||||
bundle agent rcfiles
|
||||
{
|
||||
files:
|
||||
any::
|
||||
\"/tmp/netrc\"
|
||||
comment => \"my netrc\",
|
||||
perms => mog(\"600\", \"tzz\", \"tzz\");
|
||||
}
|
||||
|
||||
Some, including cfengine_stdlib.cf, like to anchor at promise, indent
|
||||
arrow, and offset 16 or so:
|
||||
|
||||
bundle agent rcfiles
|
||||
{
|
||||
files:
|
||||
any::
|
||||
\"/tmp/netrc\"
|
||||
comment => \"my netrc\",
|
||||
perms => mog(\"600\", \"tzz\", \"tzz\");
|
||||
}
|
||||
"
|
||||
|
||||
:group 'cfengine
|
||||
:type '(list
|
||||
(choice (const :tag "Anchor at beginning of promise" promise)
|
||||
(const :tag "Anchor at beginning of line" bol))
|
||||
(choice (const :tag "Indent parameter name" pname)
|
||||
(const :tag "Indent arrow" arrow))
|
||||
(integer :tag "Indentation amount from anchor")))
|
||||
|
||||
(defvar cfengine-mode-debug nil
|
||||
"Whether `cfengine-mode' should print debugging info.")
|
||||
|
||||
|
@ -94,7 +158,7 @@ This includes those for cfservd as well as cfagent.")
|
|||
(regexp-opt cfengine3-defuns t)
|
||||
"Regex to match the CFEngine 3.x defuns.")
|
||||
|
||||
(defconst cfengine3-class-selector-regex "\\([[:alnum:]_().&|!]+\\)::")
|
||||
(defconst cfengine3-class-selector-regex "\\([[:alnum:]_().&|!:]+\\)::")
|
||||
|
||||
(defconst cfengine3-category-regex "\\([[:alnum:]_]+\\):")
|
||||
|
||||
|
@ -126,8 +190,8 @@ This includes those for cfservd as well as cfagent.")
|
|||
;; Defuns. This happens early so they don't get caught by looser
|
||||
;; patterns.
|
||||
(,(concat "\\<" cfengine3-defuns-regex "\\>"
|
||||
"[ \t]+\\<\\([[:alnum:]_]+\\)\\>"
|
||||
"[ \t]+\\<\\([[:alnum:]_]+\\)"
|
||||
"[ \t]+\\<\\([[:alnum:]_.:]+\\)\\>"
|
||||
"[ \t]+\\<\\([[:alnum:]_.:]+\\)"
|
||||
;; Optional parentheses with variable names inside.
|
||||
"\\(?:(\\([^)]*\\))\\)?")
|
||||
(1 font-lock-builtin-face)
|
||||
|
@ -144,8 +208,8 @@ This includes those for cfservd as well as cfagent.")
|
|||
1 font-lock-builtin-face)
|
||||
|
||||
;; Variables, including scope, e.g. module.var
|
||||
("[@$](\\([[:alnum:]_.]+\\))" 1 font-lock-variable-name-face)
|
||||
("[@$]{\\([[:alnum:]_.]+\\)}" 1 font-lock-variable-name-face)
|
||||
("[@$](\\([[:alnum:]_.:]+\\))" 1 font-lock-variable-name-face)
|
||||
("[@$]{\\([[:alnum:]_.:]+\\)}" 1 font-lock-variable-name-face)
|
||||
|
||||
;; Variable definitions.
|
||||
("\\<\\([[:alnum:]_]+\\)[ \t]*=[ \t]*(" 1 font-lock-variable-name-face)
|
||||
|
@ -305,10 +369,10 @@ Intended as the value of `indent-line-function'."
|
|||
((looking-at (concat cfengine3-defuns-regex "\\>"))
|
||||
(indent-line-to 0))
|
||||
;; Categories are indented one step.
|
||||
((looking-at (concat cfengine3-category-regex "[ \t]*$"))
|
||||
((looking-at (concat cfengine3-category-regex "[ \t]*\\(#.*\\)*$"))
|
||||
(indent-line-to cfengine-indent))
|
||||
;; Class selectors are indented two steps.
|
||||
((looking-at (concat cfengine3-class-selector-regex "[ \t]*$"))
|
||||
((looking-at (concat cfengine3-class-selector-regex "[ \t]*\\(#.*\\)*$"))
|
||||
(indent-line-to (* 2 cfengine-indent)))
|
||||
;; Outdent leading close brackets one step.
|
||||
((or (eq ?\} (char-after))
|
||||
|
@ -317,6 +381,8 @@ Intended as the value of `indent-line-function'."
|
|||
(indent-line-to (save-excursion
|
||||
(forward-char)
|
||||
(backward-sexp)
|
||||
(move-beginning-of-line nil)
|
||||
(skip-chars-forward " \t")
|
||||
(current-column)))
|
||||
(error nil)))
|
||||
;; Inside a string and it starts before this line.
|
||||
|
@ -331,7 +397,23 @@ Intended as the value of `indent-line-function'."
|
|||
;; plus 2. That way, promises indent deeper than class
|
||||
;; selectors, which in turn are one deeper than categories.
|
||||
((= 1 (nth 0 parse))
|
||||
(indent-line-to (* (+ 2 (nth 0 parse)) cfengine-indent)))
|
||||
(let ((p-anchor (nth 0 cfengine-parameters-indent))
|
||||
(p-what (nth 1 cfengine-parameters-indent))
|
||||
(p-indent (nth 2 cfengine-parameters-indent)))
|
||||
;; Do we have the parameter anchor and location and indent
|
||||
;; defined, and are we looking at a promise parameter?
|
||||
(if (and p-anchor p-what p-indent
|
||||
(looking-at "\\([[:alnum:]_]+[ \t]*\\)=>"))
|
||||
(let* ((arrow-offset (* -1 (length (match-string 1))))
|
||||
(extra-offset (if (eq p-what 'arrow) arrow-offset 0))
|
||||
(base-offset (if (eq p-anchor 'promise)
|
||||
(* (+ 2 (nth 0 parse)) cfengine-indent)
|
||||
0)))
|
||||
(indent-line-to (max 0 (+ p-indent base-offset extra-offset))))
|
||||
;; Else, indent to cfengine-indent times the nested depth
|
||||
;; plus 2. That way, promises indent deeper than class
|
||||
;; selectors, which in turn are one deeper than categories.
|
||||
(indent-line-to (* (+ 2 (nth 0 parse)) cfengine-indent)))))
|
||||
;; Inside brackets/parens: indent to start column of non-comment
|
||||
;; token on line following open bracket or by one step from open
|
||||
;; bracket's column.
|
||||
|
@ -436,7 +518,8 @@ Intended as the value of `indent-line-function'."
|
|||
;; The syntax defaults seem OK to give reasonable word movement.
|
||||
(modify-syntax-entry ?# "<" table)
|
||||
(modify-syntax-entry ?\n ">#" table)
|
||||
(modify-syntax-entry ?\" "\"" table)
|
||||
(modify-syntax-entry ?\" "\"" table) ; "string"
|
||||
(modify-syntax-entry ?\' "\"" table) ; 'string'
|
||||
;; Variable substitution.
|
||||
(modify-syntax-entry ?$ "." table)
|
||||
;; Doze path separators.
|
||||
|
@ -475,7 +558,6 @@ to the action header."
|
|||
;; Shell commands can be quoted by single, double or back quotes.
|
||||
;; It's debatable whether we should define string syntax, but it
|
||||
;; should avoid potential confusion in some cases.
|
||||
(modify-syntax-entry ?\' "\"" cfengine2-mode-syntax-table)
|
||||
(modify-syntax-entry ?\` "\"" cfengine2-mode-syntax-table)
|
||||
|
||||
(set (make-local-variable 'indent-line-function) #'cfengine2-indent-line)
|
||||
|
@ -505,7 +587,7 @@ on the buffer contents"
|
|||
(forward-line)))
|
||||
(if v3 (cfengine3-mode) (cfengine2-mode))))
|
||||
|
||||
(defalias 'cfengine-mode 'cfengine-auto-mode)
|
||||
(defalias 'cfengine-mode 'cfengine3-mode)
|
||||
|
||||
(provide 'cfengine3)
|
||||
(provide 'cfengine)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; gdb-mi.el --- User Interface for running GDB
|
||||
;;; gdb-mi.el --- User Interface for running GDB -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||||
|
||||
|
@ -192,8 +192,8 @@ address for root variables.")
|
|||
(defvar gdb-disassembly-position nil)
|
||||
|
||||
(defvar gdb-location-alist nil
|
||||
"Alist of breakpoint numbers and full filenames. Only used for files that
|
||||
Emacs can't find.")
|
||||
"Alist of breakpoint numbers and full filenames.
|
||||
Only used for files that Emacs can't find.")
|
||||
(defvar gdb-active-process nil
|
||||
"GUD tooltips display variable values when t, and macro definitions otherwise.")
|
||||
(defvar gdb-error "Non-nil when GDB is reporting an error.")
|
||||
|
@ -227,9 +227,8 @@ This variable is updated in `gdb-done-or-error' and returned by
|
|||
It is initialized to `gdb-non-stop-setting' at the beginning of
|
||||
every GDB session.")
|
||||
|
||||
(defvar gdb-buffer-type nil
|
||||
(defvar-local gdb-buffer-type nil
|
||||
"One of the symbols bound in `gdb-buffer-rules'.")
|
||||
(make-variable-buffer-local 'gdb-buffer-type)
|
||||
|
||||
(defvar gdb-output-sink 'nil
|
||||
"The disposition of the output of the current gdb command.
|
||||
|
@ -294,9 +293,7 @@ argument (see `gdb-emit-signal')."
|
|||
(funcall (cdr subscriber) signal)))
|
||||
|
||||
(defvar gdb-buf-publisher '()
|
||||
"Used to invalidate GDB buffers by emitting a signal in
|
||||
`gdb-update'.
|
||||
|
||||
"Used to invalidate GDB buffers by emitting a signal in `gdb-update'.
|
||||
Must be a list of pairs with cars being buffers and cdr's being
|
||||
valid signal handlers.")
|
||||
|
||||
|
@ -327,8 +324,7 @@ valid signal handlers.")
|
|||
"When in non-stop mode, stopped threads can be examined while
|
||||
other threads continue to execute.
|
||||
|
||||
GDB session needs to be restarted for this setting to take
|
||||
effect."
|
||||
GDB session needs to be restarted for this setting to take effect."
|
||||
:type 'boolean
|
||||
:group 'gdb-non-stop
|
||||
:version "23.2")
|
||||
|
@ -336,19 +332,18 @@ effect."
|
|||
;; TODO Some commands can't be called with --all (give a notice about
|
||||
;; it in setting doc)
|
||||
(defcustom gdb-gud-control-all-threads t
|
||||
"When enabled, GUD execution commands affect all threads when
|
||||
in non-stop mode. Otherwise, only current thread is affected."
|
||||
"When non-nil, GUD execution commands affect all threads when
|
||||
in non-stop mode. Otherwise, only current thread is affected."
|
||||
:type 'boolean
|
||||
:group 'gdb-non-stop
|
||||
:version "23.2")
|
||||
|
||||
(defcustom gdb-switch-reasons t
|
||||
"List of stop reasons which cause Emacs to switch to the thread
|
||||
which caused the stop. When t, switch to stopped thread no matter
|
||||
what the reason was. When nil, never switch to stopped thread
|
||||
automatically.
|
||||
"List of stop reasons for which Emacs should switch thread.
|
||||
When t, switch to stopped thread no matter what the reason was.
|
||||
When nil, never switch to stopped thread automatically.
|
||||
|
||||
This setting is used in non-stop mode only. In all-stop mode,
|
||||
This setting is used in non-stop mode only. In all-stop mode,
|
||||
Emacs always switches to the thread which caused the stop."
|
||||
;; exited, exited-normally and exited-signaled are not
|
||||
;; thread-specific stop reasons and therefore are not included in
|
||||
|
@ -404,7 +399,7 @@ and GDB buffers were updated in `gdb-stopped'."
|
|||
:link '(info-link "(gdb)GDB/MI Async Records"))
|
||||
|
||||
(defcustom gdb-switch-when-another-stopped t
|
||||
"When nil, Emacs won't switch to stopped thread if some other
|
||||
"When nil, don't switch to stopped thread if some other
|
||||
stopped thread is already selected."
|
||||
:type 'boolean
|
||||
:group 'gdb-non-stop
|
||||
|
@ -447,8 +442,7 @@ stopped thread is already selected."
|
|||
:version "23.2")
|
||||
|
||||
(defcustom gdb-show-threads-by-default nil
|
||||
"Show threads list buffer instead of breakpoints list by
|
||||
default."
|
||||
"Show threads list buffer instead of breakpoints list by default."
|
||||
:type 'boolean
|
||||
:group 'gdb-buffers
|
||||
:version "23.2")
|
||||
|
@ -490,12 +484,12 @@ predefined macros."
|
|||
|
||||
(defcustom gdb-create-source-file-list t
|
||||
"Non-nil means create a list of files from which the executable was built.
|
||||
Set this to nil if the GUD buffer displays \"initializing...\" in the mode
|
||||
line for a long time when starting, possibly because your executable was
|
||||
built from a large number of files. This allows quicker initialization
|
||||
but means that these files are not automatically enabled for debugging,
|
||||
e.g., you won't be able to click in the fringe to set a breakpoint until
|
||||
execution has already stopped there."
|
||||
Set this to nil if the GUD buffer displays \"initializing...\" in the mode
|
||||
line for a long time when starting, possibly because your executable was
|
||||
built from a large number of files. This allows quicker initialization
|
||||
but means that these files are not automatically enabled for debugging,
|
||||
e.g., you won't be able to click in the fringe to set a breakpoint until
|
||||
execution has already stopped there."
|
||||
:type 'boolean
|
||||
:group 'gdb
|
||||
:version "23.1")
|
||||
|
@ -507,6 +501,9 @@ Also display the main routine in the disassembly buffer if present."
|
|||
:group 'gdb
|
||||
:version "22.1")
|
||||
|
||||
(defvar gdbmi-debug-mode nil
|
||||
"When non-nil, print the messages sent/received from GDB/MI in *Messages*.")
|
||||
|
||||
(defun gdb-force-mode-line-update (status)
|
||||
(let ((buffer gud-comint-buffer))
|
||||
(if (and buffer (buffer-name buffer))
|
||||
|
@ -570,7 +567,7 @@ When `gdb-non-stop' is nil, return COMMAND unchanged."
|
|||
|
||||
(defmacro gdb-gud-context-call (cmd1 &optional cmd2 noall noarg)
|
||||
"`gud-call' wrapper which adds --thread/--all options between
|
||||
CMD1 and CMD2. NOALL is the same as in `gdb-gud-context-command'.
|
||||
CMD1 and CMD2. NOALL is the same as in `gdb-gud-context-command'.
|
||||
|
||||
NOARG must be t when this macro is used outside `gud-def'"
|
||||
`(gud-call
|
||||
|
@ -603,7 +600,7 @@ and source-file directory for your debugger.
|
|||
|
||||
COMMAND-LINE is the shell command for starting the gdb session.
|
||||
It should be a string consisting of the name of the gdb
|
||||
executable followed by command-line options. The command-line
|
||||
executable followed by command line options. The command line
|
||||
options should include \"-i=mi\" to use gdb's MI text interface.
|
||||
Note that the old \"--annotate\" option is no longer supported.
|
||||
|
||||
|
@ -846,6 +843,8 @@ detailed description of this mode.
|
|||
gdb-register-names '()
|
||||
gdb-non-stop gdb-non-stop-setting)
|
||||
;;
|
||||
(gdbmi-bnf-init)
|
||||
;;
|
||||
(setq gdb-buffer-type 'gdbmi)
|
||||
;;
|
||||
(gdb-force-mode-line-update
|
||||
|
@ -1254,7 +1253,7 @@ With arg, enter name of variable to be watched in the minibuffer."
|
|||
(cond
|
||||
((> new previous)
|
||||
;; Add new children to list.
|
||||
(dotimes (dummy previous)
|
||||
(dotimes (_ previous)
|
||||
(push (pop temp-var-list) var-list))
|
||||
(dolist (child children)
|
||||
(let ((varchild
|
||||
|
@ -1268,9 +1267,9 @@ With arg, enter name of variable to be watched in the minibuffer."
|
|||
(push varchild var-list))))
|
||||
;; Remove deleted children from list.
|
||||
((< new previous)
|
||||
(dotimes (dummy new)
|
||||
(dotimes (_ new)
|
||||
(push (pop temp-var-list) var-list))
|
||||
(dotimes (dummy (- previous new))
|
||||
(dotimes (_ (- previous new))
|
||||
(pop temp-var-list)))))
|
||||
(push var1 var-list))
|
||||
(setq var1 (pop temp-var-list)))
|
||||
|
@ -1502,7 +1501,7 @@ this trigger is subscribed to `gdb-buf-publisher' and called with
|
|||
(gdb-input
|
||||
(concat "-inferior-tty-set " tty) 'ignore))))
|
||||
|
||||
(defun gdb-inferior-io-sentinel (proc str)
|
||||
(defun gdb-inferior-io-sentinel (proc _str)
|
||||
(when (eq (process-status proc) 'failed)
|
||||
;; When the debugged process exits, Emacs gets an EIO error on
|
||||
;; read from the pty, and stops listening to it. If the gdb
|
||||
|
@ -1739,6 +1738,7 @@ complete."
|
|||
(setq gdb-token-number (1+ gdb-token-number))
|
||||
(setq command (concat (number-to-string gdb-token-number) command))
|
||||
(push (cons gdb-token-number handler-function) gdb-handler-alist)
|
||||
(if gdbmi-debug-mode (message "gdb-input: %s" command))
|
||||
(process-send-string (get-buffer-process gud-comint-buffer)
|
||||
(concat command "\n")))
|
||||
|
||||
|
@ -1761,8 +1761,7 @@ If `gdb-thread-number' is nil, just wrap NAME in asterisks."
|
|||
"*"))
|
||||
|
||||
(defun gdb-current-context-mode-name (mode)
|
||||
"Add thread information to MODE which is to be used as
|
||||
`mode-name'."
|
||||
"Add thread information to MODE which is to be used as `mode-name'."
|
||||
(concat mode
|
||||
(if gdb-thread-number
|
||||
(format " [thread %s]" gdb-thread-number)
|
||||
|
@ -1809,7 +1808,8 @@ If NO-PROC is non-nil, do not try to contact the GDB process."
|
|||
;; because we may need to update current gud-running value without
|
||||
;; changing current thread (see gdb-running)
|
||||
(defun gdb-setq-thread-number (number)
|
||||
"Only this function must be used to change `gdb-thread-number'
|
||||
"Set `gdb-thread-number' to NUMBER.
|
||||
Only this function must be used to change `gdb-thread-number'
|
||||
value to NUMBER, because `gud-running' and `gdb-frame-number'
|
||||
need to be updated appropriately when current thread changes."
|
||||
;; GDB 6.8 and earlier always output thread-id="0" when stopping.
|
||||
|
@ -1824,7 +1824,7 @@ need to be updated appropriately when current thread changes."
|
|||
|
||||
Note that when `gdb-gud-control-all-threads' is t, `gud-running'
|
||||
cannot be reliably used to determine whether or not execution
|
||||
control buttons should be shown in menu or toolbar. Use
|
||||
control buttons should be shown in menu or toolbar. Use
|
||||
`gdb-running-threads-count' and `gdb-stopped-threads-count'
|
||||
instead.
|
||||
|
||||
|
@ -1874,23 +1874,337 @@ is running."
|
|||
(set-window-buffer source-window buffer))
|
||||
source-window))
|
||||
|
||||
(defun gdb-car< (a b)
|
||||
(< (car a) (car b)))
|
||||
|
||||
(defvar gdbmi-record-list
|
||||
'((gdb-gdb . "(gdb) \n")
|
||||
(gdb-done . "\\([0-9]*\\)\\^done,?\\(.*?\\)\n")
|
||||
(gdb-starting . "\\([0-9]*\\)\\^running\n")
|
||||
(gdb-error . "\\([0-9]*\\)\\^error,\\(.*?\\)\n")
|
||||
(gdb-console . "~\\(\".*?\"\\)\n")
|
||||
(gdb-internals . "&\\(\".*?\"\\)\n")
|
||||
(gdb-stopped . "\\*stopped,?\\(.*?\\)\n")
|
||||
(gdb-running . "\\*running,\\(.*?\n\\)")
|
||||
(gdb-thread-created . "=thread-created,\\(.*?\n\\)")
|
||||
(gdb-thread-selected . "=thread-selected,\\(.*?\\)\n")
|
||||
(gdb-thread-exited . "=thread-exited,\\(.*?\n\\)")
|
||||
(gdb-ignored-notification . "=[-[:alpha:]]+,?\\(.*?\\)\n")
|
||||
(gdb-shell . "\\(\\(?:^.+\n\\)+\\)")))
|
||||
(defun gdbmi-start-with (str offset match)
|
||||
"Return non-nil if string STR starts with MATCH, else returns nil.
|
||||
OFFSET is the position in STR at which the comparison takes place."
|
||||
(let ((match-length (length match))
|
||||
(str-length (- (length str) offset)))
|
||||
(when (>= str-length match-length)
|
||||
(string-equal match (substring str offset (+ offset match-length))))))
|
||||
|
||||
(defun gdbmi-same-start (str offset match)
|
||||
"Return non-nil iff STR and MATCH are equal up to the end of either strings.
|
||||
OFFSET is the position in STR at which the comparison takes place."
|
||||
(let* ((str-length (- (length str) offset))
|
||||
(match-length (length match))
|
||||
(compare-length (min str-length match-length)))
|
||||
(when (> compare-length 0)
|
||||
(string-equal (substring str offset (+ offset compare-length))
|
||||
(substring match 0 compare-length)))))
|
||||
|
||||
(defun gdbmi-is-number (character)
|
||||
"Return non-nil iff CHARACTER is a numerical character between 0 and 9."
|
||||
(and (>= character ?0)
|
||||
(<= character ?9)))
|
||||
|
||||
|
||||
(defvar-local gdbmi-bnf-state 'gdbmi-bnf-output
|
||||
"Current GDB/MI output parser state.
|
||||
The parser is placed in a different state when an incomplete data steam is
|
||||
received from GDB.
|
||||
This variable will preserve the state required to resume the parsing
|
||||
when more data arrives.")
|
||||
|
||||
(defvar-local gdbmi-bnf-offset 0
|
||||
"Offset in `gud-marker-acc' at which the parser is reading.
|
||||
This offset is used to be able to parse the GDB/MI message
|
||||
in-place, without the need of copying the string in a temporary buffer
|
||||
or discarding parsed tokens by substringing the message.")
|
||||
|
||||
(defun gdbmi-bnf-init ()
|
||||
"Initialize the GDB/MI message parser."
|
||||
(setq gdbmi-bnf-state 'gdbmi-bnf-output)
|
||||
(setq gdbmi-bnf-offset 0)
|
||||
(setq gud-marker-acc ""))
|
||||
|
||||
|
||||
(defun gdbmi-bnf-output ()
|
||||
"Implementation of the following GDB/MI output grammar rule:
|
||||
|
||||
output ==>
|
||||
( out-of-band-record )* [ result-record ] gdb-prompt"
|
||||
|
||||
(gdbmi-bnf-skip-unrecognized)
|
||||
(while (gdbmi-bnf-out-of-band-record))
|
||||
(gdbmi-bnf-result-record)
|
||||
(gdbmi-bnf-gdb-prompt))
|
||||
|
||||
|
||||
(defun gdbmi-bnf-skip-unrecognized ()
|
||||
"Skip characters until is encounters the beginning of a valid record.
|
||||
Used as a protection mechanism in case something goes wrong when parsing
|
||||
a GDB/MI reply message."
|
||||
(let ((acc-length (length gud-marker-acc))
|
||||
(prefix-offset gdbmi-bnf-offset)
|
||||
(prompt "(gdb) \n"))
|
||||
|
||||
(while (and (< prefix-offset acc-length)
|
||||
(gdbmi-is-number (aref gud-marker-acc prefix-offset)))
|
||||
(setq prefix-offset (1+ prefix-offset)))
|
||||
|
||||
(if (and (< prefix-offset acc-length)
|
||||
(not (memq (aref gud-marker-acc prefix-offset)
|
||||
'(?^ ?* ?+ ?= ?~ ?@ ?&)))
|
||||
(not (gdbmi-same-start gud-marker-acc gdbmi-bnf-offset prompt))
|
||||
(string-match "\\([^^*+=~@&]+\\)" gud-marker-acc
|
||||
gdbmi-bnf-offset))
|
||||
(let ((unrecognized-str (match-string 0 gud-marker-acc)))
|
||||
(setq gdbmi-bnf-offset (match-end 0))
|
||||
(if gdbmi-debug-mode
|
||||
(message "gdbmi-bnf-skip-unrecognized: %s" unrecognized-str))
|
||||
(gdb-shell unrecognized-str)
|
||||
t))))
|
||||
|
||||
|
||||
(defun gdbmi-bnf-gdb-prompt ()
|
||||
"Implementation of the following GDB/MI output grammar rule:
|
||||
gdb-prompt ==>
|
||||
'(gdb)' nl
|
||||
|
||||
nl ==>
|
||||
CR | CR-LF"
|
||||
|
||||
(let ((prompt "(gdb) \n"))
|
||||
(when (gdbmi-start-with gud-marker-acc gdbmi-bnf-offset prompt)
|
||||
(if gdbmi-debug-mode (message "gdbmi-bnf-gdb-prompt: %s" prompt))
|
||||
(gdb-gdb prompt)
|
||||
(setq gdbmi-bnf-offset (+ gdbmi-bnf-offset (length prompt)))
|
||||
|
||||
;; Returns non-nil to tell gud-gdbmi-marker-filter we've reached
|
||||
;; the end of a GDB reply message.
|
||||
t)))
|
||||
|
||||
|
||||
(defun gdbmi-bnf-result-record ()
|
||||
"Implementation of the following GDB/MI output grammar rule:
|
||||
|
||||
result-record ==>
|
||||
[ token ] '^' result-class ( ',' result )* nl
|
||||
|
||||
token ==>
|
||||
any sequence of digits."
|
||||
|
||||
(gdbmi-bnf-result-and-async-record-impl))
|
||||
|
||||
|
||||
(defun gdbmi-bnf-out-of-band-record ()
|
||||
"Implementation of the following GDB/MI output grammar rule:
|
||||
|
||||
out-of-band-record ==>
|
||||
async-record | stream-record"
|
||||
|
||||
(or (gdbmi-bnf-async-record)
|
||||
(gdbmi-bnf-stream-record)))
|
||||
|
||||
|
||||
(defun gdbmi-bnf-async-record ()
|
||||
"Implementation of the following GDB/MI output grammar rules:
|
||||
|
||||
async-record ==>
|
||||
exec-async-output | status-async-output | notify-async-output
|
||||
|
||||
exec-async-output ==>
|
||||
[ token ] '*' async-output
|
||||
|
||||
status-async-output ==>
|
||||
[ token ] '+' async-output
|
||||
|
||||
notify-async-output ==>
|
||||
[ token ] '=' async-output
|
||||
|
||||
async-output ==>
|
||||
async-class ( ',' result )* nl"
|
||||
|
||||
(gdbmi-bnf-result-and-async-record-impl))
|
||||
|
||||
|
||||
(defun gdbmi-bnf-stream-record ()
|
||||
"Implement the following GDB/MI output grammar rule:
|
||||
stream-record ==>
|
||||
console-stream-output | target-stream-output | log-stream-output
|
||||
|
||||
console-stream-output ==>
|
||||
'~' c-string
|
||||
|
||||
target-stream-output ==>
|
||||
'@' c-string
|
||||
|
||||
log-stream-output ==>
|
||||
'&' c-string"
|
||||
(when (< gdbmi-bnf-offset (length gud-marker-acc))
|
||||
(if (and (member (aref gud-marker-acc gdbmi-bnf-offset) '(?~ ?@ ?&))
|
||||
(string-match "\\([~@&]\\)\\(\".*?\"\\)\n" gud-marker-acc
|
||||
gdbmi-bnf-offset))
|
||||
(let ((prefix (match-string 1 gud-marker-acc))
|
||||
(c-string (match-string 2 gud-marker-acc)))
|
||||
|
||||
(setq gdbmi-bnf-offset (match-end 0))
|
||||
(if gdbmi-debug-mode (message "gdbmi-bnf-stream-record: %s"
|
||||
(match-string 0 gud-marker-acc)))
|
||||
|
||||
(cond ((string-equal prefix "~")
|
||||
(gdbmi-bnf-console-stream-output c-string))
|
||||
((string-equal prefix "@")
|
||||
(gdbmi-bnf-target-stream-output c-string))
|
||||
((string-equal prefix "&")
|
||||
(gdbmi-bnf-log-stream-output c-string)))
|
||||
t))))
|
||||
|
||||
(defun gdbmi-bnf-console-stream-output (c-string)
|
||||
"Handler for the console-stream-output GDB/MI output grammar rule."
|
||||
(gdb-console c-string))
|
||||
|
||||
(defun gdbmi-bnf-target-stream-output (_c-string)
|
||||
"Handler for the target-stream-output GDB/MI output grammar rule."
|
||||
;; Not currently used.
|
||||
)
|
||||
|
||||
(defun gdbmi-bnf-log-stream-output (c-string)
|
||||
"Handler for the log-stream-output GDB/MI output grammar rule."
|
||||
;; Suppress "No registers." GDB 6.8 and earlier
|
||||
;; duplicates MI error message on internal stream.
|
||||
;; Don't print to GUD buffer.
|
||||
(if (not (string-equal (read c-string) "No registers.\n"))
|
||||
(gdb-internals c-string)))
|
||||
|
||||
|
||||
(defconst gdbmi-bnf-result-state-configs
|
||||
'(("^" . (("done" . (gdb-done . progressive))
|
||||
("error" . (gdb-error . progressive))
|
||||
("running" . (gdb-starting . atomic))))
|
||||
("*" . (("stopped" . (gdb-stopped . atomic))
|
||||
("running" . (gdb-running . atomic))))
|
||||
("+" . ())
|
||||
("=" . (("thread-created" . (gdb-thread-created . atomic))
|
||||
("thread-selected" . (gdb-thread-selected . atomic))
|
||||
("thread-existed" . (gdb-ignored-notification . atomic))
|
||||
('default . (gdb-ignored-notification . atomic)))))
|
||||
"Alist of alists, mapping the type and class of message to a handler function.
|
||||
Handler functions are all flagged as either `progressive' or `atomic'.
|
||||
`progressive' handlers are capable of parsing incomplete messages.
|
||||
They can be called several time with new data chunk as they arrive from GDB.
|
||||
`progressive' handlers must have an extra argument that is set to a non-nil
|
||||
value when the message is complete.
|
||||
|
||||
Implement the following GDB/MI output grammar rule:
|
||||
result-class ==>
|
||||
'done' | 'running' | 'connected' | 'error' | 'exit'
|
||||
|
||||
async-class ==>
|
||||
'stopped' | others (where others will be added depending on the needs
|
||||
--this is still in development).")
|
||||
|
||||
(defun gdbmi-bnf-result-and-async-record-impl ()
|
||||
"Common implementation of the result-record and async-record rule.
|
||||
Both rules share the same syntax. Those records may be very large in size.
|
||||
For that reason, the \"result\" part of the record is parsed by
|
||||
`gdbmi-bnf-incomplete-record-result', which will keep
|
||||
receiving characters as they arrive from GDB until the record is complete."
|
||||
(let ((acc-length (length gud-marker-acc))
|
||||
(prefix-offset gdbmi-bnf-offset))
|
||||
|
||||
(while (and (< prefix-offset acc-length)
|
||||
(gdbmi-is-number (aref gud-marker-acc prefix-offset)))
|
||||
(setq prefix-offset (1+ prefix-offset)))
|
||||
|
||||
(if (and (< prefix-offset acc-length)
|
||||
(member (aref gud-marker-acc prefix-offset) '(?* ?+ ?= ?^))
|
||||
(string-match "\\([0-9]*\\)\\([*+=^]\\)\\(.+?\\)\\([,\n]\\)"
|
||||
gud-marker-acc gdbmi-bnf-offset))
|
||||
|
||||
(let ((token (match-string 1 gud-marker-acc))
|
||||
(prefix (match-string 2 gud-marker-acc))
|
||||
(class (match-string 3 gud-marker-acc))
|
||||
(complete (string-equal (match-string 4 gud-marker-acc) "\n"))
|
||||
class-alist
|
||||
class-command)
|
||||
|
||||
(setq gdbmi-bnf-offset (match-end 0))
|
||||
(if gdbmi-debug-mode (message "gdbmi-bnf-result-record: %s"
|
||||
(match-string 0 gud-marker-acc)))
|
||||
|
||||
(setq class-alist
|
||||
(cdr (assoc prefix gdbmi-bnf-result-state-configs)))
|
||||
(setq class-command (cdr (assoc class class-alist)))
|
||||
(if (null class-command)
|
||||
(setq class-command (cdr (assoc 'default class-alist))))
|
||||
|
||||
(if complete
|
||||
(if class-command
|
||||
(if (equal (cdr class-command) 'progressive)
|
||||
(funcall (car class-command) token "" complete)
|
||||
(funcall (car class-command) token "")))
|
||||
(setq gdbmi-bnf-state
|
||||
(lambda ()
|
||||
(gdbmi-bnf-incomplete-record-result token class-command)))
|
||||
(funcall gdbmi-bnf-state))
|
||||
t))))
|
||||
|
||||
(defun gdbmi-bnf-incomplete-record-result (token class-command)
|
||||
"State of the parser used to progressively parse a result-record or async-record
|
||||
rule from an incomplete data stream. The parser will stay in this state until
|
||||
the end of the current result or async record is reached."
|
||||
(when (< gdbmi-bnf-offset (length gud-marker-acc))
|
||||
;; Search the data stream for the end of the current record:
|
||||
(let* ((newline-pos (string-match "\n" gud-marker-acc gdbmi-bnf-offset))
|
||||
(is-progressive (equal (cdr class-command) 'progressive))
|
||||
(is-complete (not (null newline-pos)))
|
||||
result-str)
|
||||
|
||||
;; Update the gdbmi-bnf-offset only if the current chunk of data can
|
||||
;; be processed by the class-command handler:
|
||||
(when (or is-complete is-progressive)
|
||||
(setq result-str
|
||||
(substring gud-marker-acc gdbmi-bnf-offset newline-pos))
|
||||
(setq gdbmi-bnf-offset (+ 1 newline-pos)))
|
||||
|
||||
(if gdbmi-debug-mode
|
||||
(message "gdbmi-bnf-incomplete-record-result: %s"
|
||||
(substring gud-marker-acc gdbmi-bnf-offset newline-pos)))
|
||||
|
||||
;; Update the parsing state before invoking the handler in class-command
|
||||
;; to make sure it's not left in an invalid state if the handler was
|
||||
;; to generate an error.
|
||||
(if is-complete
|
||||
(setq gdbmi-bnf-state 'gdbmi-bnf-output))
|
||||
|
||||
(if class-command
|
||||
(if is-progressive
|
||||
(funcall (car class-command) token result-str is-complete)
|
||||
(if is-complete
|
||||
(funcall (car class-command) token result-str))))
|
||||
|
||||
(unless is-complete
|
||||
;; Incomplete gdb response: abort parsing until we receive more data.
|
||||
(if gdbmi-debug-mode (message "gdbmi-bnf-incomplete-record-result, aborting: incomplete stream"))
|
||||
(throw 'gdbmi-incomplete-stream nil))
|
||||
|
||||
is-complete)))
|
||||
|
||||
|
||||
; The following grammar rules are not yet implemented by this GDBMI-BNF parser.
|
||||
; The handling of those rules is currently done by the handlers registered
|
||||
; in gdbmi-bnf-result-state-configs
|
||||
;
|
||||
; result ==>
|
||||
; variable "=" value
|
||||
;
|
||||
; variable ==>
|
||||
; string
|
||||
;
|
||||
; value ==>
|
||||
; const | tuple | list
|
||||
;
|
||||
; const ==>
|
||||
; c-string
|
||||
;
|
||||
; tuple ==>
|
||||
; "{}" | "{" result ( "," result )* "}"
|
||||
;
|
||||
; list ==>
|
||||
; "[]" | "[" value ( "," value )* "]" | "[" result ( "," result )* "]"
|
||||
|
||||
|
||||
(defun gud-gdbmi-marker-filter (string)
|
||||
"Filter GDB/MI output."
|
||||
|
@ -1907,46 +2221,20 @@ is running."
|
|||
|
||||
;; Start accumulating output for the GUD buffer.
|
||||
(setq gdb-filter-output "")
|
||||
(let (output-record-list)
|
||||
|
||||
;; Process all the complete markers in this chunk.
|
||||
(dolist (gdbmi-record gdbmi-record-list)
|
||||
(while (string-match (cdr gdbmi-record) gud-marker-acc)
|
||||
(push (list (match-beginning 0)
|
||||
(car gdbmi-record)
|
||||
(match-string 1 gud-marker-acc)
|
||||
(match-string 2 gud-marker-acc)
|
||||
(match-end 0))
|
||||
output-record-list)
|
||||
(setq gud-marker-acc
|
||||
(concat (substring gud-marker-acc 0 (match-beginning 0))
|
||||
;; Pad with spaces to preserve position.
|
||||
(make-string (length (match-string 0 gud-marker-acc)) 32)
|
||||
(substring gud-marker-acc (match-end 0))))))
|
||||
(let ((acc-length (length gud-marker-acc)))
|
||||
(catch 'gdbmi-incomplete-stream
|
||||
(while (and (< gdbmi-bnf-offset acc-length)
|
||||
(funcall gdbmi-bnf-state)))))
|
||||
|
||||
(setq output-record-list (sort output-record-list 'gdb-car<))
|
||||
(when (/= gdbmi-bnf-offset 0)
|
||||
(setq gud-marker-acc (substring gud-marker-acc gdbmi-bnf-offset))
|
||||
(setq gdbmi-bnf-offset 0))
|
||||
|
||||
(dolist (output-record output-record-list)
|
||||
(let ((record-type (cadr output-record))
|
||||
(arg1 (nth 2 output-record))
|
||||
(arg2 (nth 3 output-record)))
|
||||
(cond ((eq record-type 'gdb-error)
|
||||
(gdb-done-or-error arg2 arg1 'error))
|
||||
((eq record-type 'gdb-done)
|
||||
(gdb-done-or-error arg2 arg1 'done))
|
||||
;; Suppress "No registers." GDB 6.8 and earlier
|
||||
;; duplicates MI error message on internal stream.
|
||||
;; Don't print to GUD buffer.
|
||||
((not (and (eq record-type 'gdb-internals)
|
||||
(string-equal (read arg1) "No registers.\n")))
|
||||
(funcall record-type arg1)))))
|
||||
(when (and gdbmi-debug-mode (> (length gud-marker-acc) 0))
|
||||
(message "gud-gdbmi-marker-filter, unparsed string: %s" gud-marker-acc))
|
||||
|
||||
(setq gdb-output-sink 'user)
|
||||
;; Remove padding.
|
||||
(string-match "^ *" gud-marker-acc)
|
||||
(setq gud-marker-acc (substring gud-marker-acc (match-end 0)))
|
||||
|
||||
gdb-filter-output))
|
||||
gdb-filter-output)
|
||||
|
||||
(defun gdb-gdb (_output-field))
|
||||
|
||||
|
@ -1954,13 +2242,13 @@ is running."
|
|||
(setq gdb-filter-output
|
||||
(concat output-field gdb-filter-output)))
|
||||
|
||||
(defun gdb-ignored-notification (_output-field))
|
||||
(defun gdb-ignored-notification (_token _output-field))
|
||||
|
||||
;; gdb-invalidate-threads is defined to accept 'update-threads signal
|
||||
(defun gdb-thread-created (_output-field))
|
||||
(defun gdb-thread-exited (output-field)
|
||||
"Handle =thread-exited async record: unset `gdb-thread-number'
|
||||
if current thread exited and update threads list."
|
||||
(defun gdb-thread-created (_token _output-field))
|
||||
(defun gdb-thread-exited (_token output-field)
|
||||
"Handle =thread-exited async record.
|
||||
Unset `gdb-thread-number' if current thread exited and update threads list."
|
||||
(let* ((thread-id (bindat-get-field (gdb-json-string output-field) 'id)))
|
||||
(if (string= gdb-thread-number thread-id)
|
||||
(gdb-setq-thread-number nil))
|
||||
|
@ -1971,7 +2259,7 @@ is running."
|
|||
(gdb-wait-for-pending
|
||||
(gdb-emit-signal gdb-buf-publisher 'update-threads))))
|
||||
|
||||
(defun gdb-thread-selected (output-field)
|
||||
(defun gdb-thread-selected (_token output-field)
|
||||
"Handler for =thread-selected MI output record.
|
||||
|
||||
Sets `gdb-thread-number' to new id."
|
||||
|
@ -1988,7 +2276,7 @@ Sets `gdb-thread-number' to new id."
|
|||
(gdb-wait-for-pending
|
||||
(gdb-update))))
|
||||
|
||||
(defun gdb-running (output-field)
|
||||
(defun gdb-running (_token output-field)
|
||||
(let* ((thread-id
|
||||
(bindat-get-field (gdb-json-string output-field) 'thread-id)))
|
||||
;; We reset gdb-frame-number to nil if current thread has gone
|
||||
|
@ -2006,7 +2294,7 @@ Sets `gdb-thread-number' to new id."
|
|||
(setq gdb-active-process t)
|
||||
(gdb-emit-signal gdb-buf-publisher 'update-threads))
|
||||
|
||||
(defun gdb-starting (_output-field)
|
||||
(defun gdb-starting (_output-field _result)
|
||||
;; CLI commands don't emit ^running at the moment so use gdb-running too.
|
||||
(setq gdb-inferior-status "running")
|
||||
(gdb-force-mode-line-update
|
||||
|
@ -2020,7 +2308,7 @@ Sets `gdb-thread-number' to new id."
|
|||
|
||||
;; -break-insert -t didn't give a reason before gdb 6.9
|
||||
|
||||
(defun gdb-stopped (output-field)
|
||||
(defun gdb-stopped (_token output-field)
|
||||
"Given the contents of *stopped MI async record, select new
|
||||
current thread and update GDB buffers."
|
||||
;; Reason is available with target-async only
|
||||
|
@ -2106,7 +2394,13 @@ current thread and update GDB buffers."
|
|||
(setq gdb-filter-output
|
||||
(gdb-concat-output gdb-filter-output (read output-field))))
|
||||
|
||||
(defun gdb-done-or-error (output-field token-number type)
|
||||
(defun gdb-done (token-number output-field is-complete)
|
||||
(gdb-done-or-error token-number 'done output-field is-complete))
|
||||
|
||||
(defun gdb-error (token-number output-field is-complete)
|
||||
(gdb-done-or-error token-number 'error output-field is-complete))
|
||||
|
||||
(defun gdb-done-or-error (token-number type output-field is-complete)
|
||||
(if (string-equal token-number "")
|
||||
;; Output from command entered by user
|
||||
(progn
|
||||
|
@ -2122,14 +2416,12 @@ current thread and update GDB buffers."
|
|||
;; Output from command from frontend.
|
||||
(setq gdb-output-sink 'emacs))
|
||||
|
||||
(gdb-clear-partial-output)
|
||||
|
||||
;; The process may already be dead (e.g. C-d at the gdb prompt).
|
||||
(let* ((proc (get-buffer-process gud-comint-buffer))
|
||||
(no-proc (or (null proc)
|
||||
(memq (process-status proc) '(exit signal)))))
|
||||
|
||||
(when gdb-first-done-or-error
|
||||
(when (and is-complete gdb-first-done-or-error)
|
||||
(unless (or token-number gud-running no-proc)
|
||||
(setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name)))
|
||||
(gdb-update no-proc)
|
||||
|
@ -2138,13 +2430,19 @@ current thread and update GDB buffers."
|
|||
(setq gdb-filter-output
|
||||
(gdb-concat-output gdb-filter-output output-field))
|
||||
|
||||
(when token-number
|
||||
;; We are done concatenating to the output sink. Restore it to user sink:
|
||||
(setq gdb-output-sink 'user)
|
||||
|
||||
(when (and token-number is-complete)
|
||||
(with-current-buffer
|
||||
(gdb-get-buffer-create 'gdb-partial-output-buffer)
|
||||
(funcall
|
||||
(cdr (assoc (string-to-number token-number) gdb-handler-alist))))
|
||||
(setq gdb-handler-alist
|
||||
(assq-delete-all token-number gdb-handler-alist)))))
|
||||
(assq-delete-all token-number gdb-handler-alist)))
|
||||
|
||||
(when is-complete
|
||||
(gdb-clear-partial-output))))
|
||||
|
||||
(defun gdb-concat-output (so-far new)
|
||||
(cond
|
||||
|
@ -2169,8 +2467,8 @@ Field names are wrapped in double quotes and equal signs are
|
|||
replaced with semicolons.
|
||||
|
||||
If FIX-KEY is non-nil, strip all \"FIX-KEY=\" occurrences from
|
||||
partial output. This is used to get rid of useless keys in lists
|
||||
in MI messages, e.g.: [key=.., key=..]. -stack-list-frames and
|
||||
partial output. This is used to get rid of useless keys in lists
|
||||
in MI messages, e.g.: [key=.., key=..]. -stack-list-frames and
|
||||
-break-info are examples of MI commands which issue such
|
||||
responses.
|
||||
|
||||
|
@ -2337,16 +2635,16 @@ calling `gdb-table-string'."
|
|||
handler-name
|
||||
&optional signal-list)
|
||||
"Define a trigger TRIGGER-NAME which sends GDB-COMMAND and sets
|
||||
HANDLER-NAME as its handler. HANDLER-NAME is bound to current
|
||||
HANDLER-NAME as its handler. HANDLER-NAME is bound to current
|
||||
buffer with `gdb-bind-function-to-buffer'.
|
||||
|
||||
If SIGNAL-LIST is non-nil, GDB-COMMAND is sent only when the
|
||||
defined trigger is called with an argument from SIGNAL-LIST. It's
|
||||
defined trigger is called with an argument from SIGNAL-LIST. It's
|
||||
not recommended to define triggers with empty SIGNAL-LIST.
|
||||
Normally triggers should respond at least to 'update signal.
|
||||
|
||||
Normally the trigger defined by this command must be called from
|
||||
the buffer where HANDLER-NAME must work. This should be done so
|
||||
the buffer where HANDLER-NAME must work. This should be done so
|
||||
that buffer-local thread number may be used in GDB-COMMAND (by
|
||||
calling `gdb-current-context-command').
|
||||
`gdb-bind-function-to-buffer' is used to achieve this, see
|
||||
|
@ -2375,32 +2673,33 @@ Handlers are normally called from the buffers they put output in.
|
|||
|
||||
Delete ((current-buffer) . TRIGGER-NAME) from
|
||||
`gdb-pending-triggers', erase current buffer and evaluate
|
||||
CUSTOM-DEFUN. Then `gdb-update-buffer-name' is called.
|
||||
CUSTOM-DEFUN. Then `gdb-update-buffer-name' is called.
|
||||
|
||||
If NOPRESERVE is non-nil, window point is not restored after CUSTOM-DEFUN."
|
||||
`(defun ,handler-name ()
|
||||
(gdb-delete-pending (cons (current-buffer) ',trigger-name))
|
||||
(let* ((buffer-read-only nil)
|
||||
(window (get-buffer-window (current-buffer) 0))
|
||||
(start (window-start window))
|
||||
(p (window-point window)))
|
||||
(let* ((inhibit-read-only t)
|
||||
,@(unless nopreserve
|
||||
'((window (get-buffer-window (current-buffer) 0))
|
||||
(start (window-start window))
|
||||
(p (window-point window)))))
|
||||
(erase-buffer)
|
||||
(,custom-defun)
|
||||
(gdb-update-buffer-name)
|
||||
,(when (not nopreserve)
|
||||
'(set-window-start window start)
|
||||
'(set-window-point window p)))))
|
||||
,@(when (not nopreserve)
|
||||
'((set-window-start window start)
|
||||
(set-window-point window p))))))
|
||||
|
||||
(defmacro def-gdb-trigger-and-handler (trigger-name gdb-command
|
||||
handler-name custom-defun
|
||||
&optional signal-list)
|
||||
"Define trigger and handler.
|
||||
|
||||
TRIGGER-NAME trigger is defined to send GDB-COMMAND. See
|
||||
`def-gdb-auto-update-trigger'.
|
||||
TRIGGER-NAME trigger is defined to send GDB-COMMAND.
|
||||
See `def-gdb-auto-update-trigger'.
|
||||
|
||||
HANDLER-NAME handler uses customization of CUSTOM-DEFUN. See
|
||||
`def-gdb-auto-update-handler'."
|
||||
HANDLER-NAME handler uses customization of CUSTOM-DEFUN.
|
||||
See `def-gdb-auto-update-handler'."
|
||||
`(progn
|
||||
(def-gdb-auto-update-trigger ,trigger-name
|
||||
,gdb-command
|
||||
|
@ -2757,37 +3056,38 @@ corresponding to the mode line clicked."
|
|||
gdb-running-threads-count
|
||||
gdb-stopped-threads-count))
|
||||
|
||||
(gdb-table-add-row table
|
||||
(list
|
||||
(bindat-get-field thread 'id)
|
||||
(concat
|
||||
(if gdb-thread-buffer-verbose-names
|
||||
(concat (bindat-get-field thread 'target-id) " ") "")
|
||||
(bindat-get-field thread 'state)
|
||||
;; Include frame information for stopped threads
|
||||
(if (not running)
|
||||
(concat
|
||||
" in " (bindat-get-field thread 'frame 'func)
|
||||
(if gdb-thread-buffer-arguments
|
||||
(concat
|
||||
" ("
|
||||
(let ((args (bindat-get-field thread 'frame 'args)))
|
||||
(mapconcat
|
||||
(lambda (arg)
|
||||
(apply #'format "%s=%s"
|
||||
(gdb-get-many-fields arg 'name 'value)))
|
||||
args ","))
|
||||
")")
|
||||
"")
|
||||
(if gdb-thread-buffer-locations
|
||||
(gdb-frame-location (bindat-get-field thread 'frame)) "")
|
||||
(if gdb-thread-buffer-addresses
|
||||
(concat " at " (bindat-get-field thread 'frame 'addr)) ""))
|
||||
"")))
|
||||
(list
|
||||
'gdb-thread thread
|
||||
'mouse-face 'highlight
|
||||
'help-echo "mouse-2, RET: select thread")))
|
||||
(gdb-table-add-row
|
||||
table
|
||||
(list
|
||||
(bindat-get-field thread 'id)
|
||||
(concat
|
||||
(if gdb-thread-buffer-verbose-names
|
||||
(concat (bindat-get-field thread 'target-id) " ") "")
|
||||
(bindat-get-field thread 'state)
|
||||
;; Include frame information for stopped threads
|
||||
(if (not running)
|
||||
(concat
|
||||
" in " (bindat-get-field thread 'frame 'func)
|
||||
(if gdb-thread-buffer-arguments
|
||||
(concat
|
||||
" ("
|
||||
(let ((args (bindat-get-field thread 'frame 'args)))
|
||||
(mapconcat
|
||||
(lambda (arg)
|
||||
(apply #'format "%s=%s"
|
||||
(gdb-get-many-fields arg 'name 'value)))
|
||||
args ","))
|
||||
")")
|
||||
"")
|
||||
(if gdb-thread-buffer-locations
|
||||
(gdb-frame-location (bindat-get-field thread 'frame)) "")
|
||||
(if gdb-thread-buffer-addresses
|
||||
(concat " at " (bindat-get-field thread 'frame 'addr)) ""))
|
||||
"")))
|
||||
(list
|
||||
'gdb-thread thread
|
||||
'mouse-face 'highlight
|
||||
'help-echo "mouse-2, RET: select thread")))
|
||||
(when (string-equal gdb-thread-number
|
||||
(bindat-get-field thread 'id))
|
||||
(setq marked-line (length gdb-threads-list))))
|
||||
|
@ -2803,8 +3103,8 @@ corresponding to the mode line clicked."
|
|||
"Define a NAME command which will act upon thread on the current line.
|
||||
|
||||
CUSTOM-DEFUN may use locally bound `thread' variable, which will
|
||||
be the value of 'gdb-thread property of the current line. If
|
||||
'gdb-thread is nil, error is signaled."
|
||||
be the value of 'gdb-thread property of the current line.
|
||||
If `gdb-thread' is nil, error is signaled."
|
||||
`(defun ,name (&optional event)
|
||||
,(when doc doc)
|
||||
(interactive (list last-input-event))
|
||||
|
@ -2953,7 +3253,7 @@ line."
|
|||
(defun gdb-memory-column-width (size format)
|
||||
"Return length of string with memory unit of SIZE in FORMAT.
|
||||
|
||||
SIZE is in bytes, as in `gdb-memory-unit'. FORMAT is a string as
|
||||
SIZE is in bytes, as in `gdb-memory-unit'. FORMAT is a string as
|
||||
in `gdb-memory-format'."
|
||||
(let ((format-base (cdr (assoc format
|
||||
'(("x" . 16)
|
||||
|
@ -3455,8 +3755,7 @@ DOC is an optional documentation string."
|
|||
(error "Not recognized as break/watchpoint line")))))
|
||||
|
||||
(defun gdb-goto-breakpoint (&optional event)
|
||||
"Go to the location of breakpoint at current line of
|
||||
breakpoints buffer."
|
||||
"Go to the location of breakpoint at current line of breakpoints buffer."
|
||||
(interactive (list last-input-event))
|
||||
(if event (posn-set-point (event-end event)))
|
||||
;; Hack to stop gdb-goto-breakpoint displaying in GUD buffer.
|
||||
|
@ -3840,7 +4139,7 @@ member."
|
|||
|
||||
(defun gdb-get-source-file-list ()
|
||||
"Create list of source files for current GDB session.
|
||||
If buffers already exist for any of these files, gud-minor-mode
|
||||
If buffers already exist for any of these files, `gud-minor-mode'
|
||||
is set in them."
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward gdb-source-file-regexp nil t)
|
||||
|
@ -3851,8 +4150,8 @@ is set in them."
|
|||
(gdb-init-buffer)))))
|
||||
|
||||
(defun gdb-get-main-selected-frame ()
|
||||
"Trigger for `gdb-frame-handler' which uses main current
|
||||
thread. Called from `gdb-update'."
|
||||
"Trigger for `gdb-frame-handler' which uses main current thread.
|
||||
Called from `gdb-update'."
|
||||
(if (not (gdb-pending-p 'gdb-get-main-selected-frame))
|
||||
(progn
|
||||
(gdb-input (gdb-current-context-command "-stack-info-frame")
|
||||
|
@ -3860,7 +4159,7 @@ thread. Called from `gdb-update'."
|
|||
(gdb-add-pending 'gdb-get-main-selected-frame))))
|
||||
|
||||
(defun gdb-frame-handler ()
|
||||
"Sets `gdb-selected-frame' and `gdb-selected-file' to show
|
||||
"Set `gdb-selected-frame' and `gdb-selected-file' to show
|
||||
overlay arrow in source buffer."
|
||||
(gdb-delete-pending 'gdb-get-main-selected-frame)
|
||||
(let ((frame (bindat-get-field (gdb-json-partial-output) 'frame)))
|
||||
|
@ -3921,8 +4220,8 @@ overlay arrow in source buffer."
|
|||
|
||||
(defun gdb-preempt-existing-or-display-buffer (buf &optional split-horizontal)
|
||||
"Find window displaying a buffer with the same
|
||||
`gdb-buffer-type' as BUF and show BUF there. If no such window
|
||||
exists, just call `gdb-display-buffer' for BUF. If the window
|
||||
`gdb-buffer-type' as BUF and show BUF there. If no such window
|
||||
exists, just call `gdb-display-buffer' for BUF. If the window
|
||||
found is already dedicated, split window according to
|
||||
SPLIT-HORIZONTAL and show BUF in the new window."
|
||||
(if buf
|
||||
|
@ -4310,8 +4609,7 @@ CONTEXT is the text before COMMAND on the line."
|
|||
(gud-gdb-fetch-lines-break (length context))
|
||||
(gud-gdb-fetched-lines nil)
|
||||
;; This filter dumps output lines to `gud-gdb-fetched-lines'.
|
||||
(gud-marker-filter #'gud-gdbmi-fetch-lines-filter)
|
||||
complete-list)
|
||||
(gud-marker-filter #'gud-gdbmi-fetch-lines-filter))
|
||||
(with-current-buffer (gdb-get-buffer 'gdb-partial-output-buffer)
|
||||
(gdb-input (concat "complete " context command)
|
||||
(lambda () (setq gud-gdb-fetch-lines-in-progress nil)))
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
;;; Commentary:
|
||||
|
||||
;; IDLWAVE enables feature-rich development and interaction with IDL,
|
||||
;; the Interactive Data Language. It provides a compelling,
|
||||
;; the Interactive Data Language. It provides a compelling,
|
||||
;; full-featured alternative to the IDLDE development environment
|
||||
;; bundled with IDL.
|
||||
|
||||
|
@ -447,7 +447,7 @@ value of `!DIR'. See also `idlwave-library-path'."
|
|||
|
||||
;; Configuration files
|
||||
(defcustom idlwave-config-directory
|
||||
(convert-standard-filename "~/.idlwave")
|
||||
(locate-user-emacs-file "idlwave" ".idlwave")
|
||||
"Directory for configuration files and user-library catalog."
|
||||
:group 'idlwave-routine-info
|
||||
:type 'file)
|
||||
|
|
|
@ -91,12 +91,7 @@ If BDFNAME doesn't exist, return nil."
|
|||
(insert-file-contents bdfname)
|
||||
buf))))
|
||||
|
||||
(defvar bdf-cache-file (if (eq system-type 'ms-dos)
|
||||
;; convert-standard-filename doesn't
|
||||
;; guarantee that the .el extension will be
|
||||
;; preserved.
|
||||
"~/_bdfcache.el"
|
||||
(convert-standard-filename "~/.bdfcache.el"))
|
||||
(defvar bdf-cache-file (locate-user-emacs-file "bdfcache.el" ".bdfcache.el")
|
||||
"Name of cache file which contains information of `BDF' font files.")
|
||||
|
||||
(defvar bdf-cache nil
|
||||
|
|
|
@ -69,7 +69,7 @@ See the command `recentf-save-list'."
|
|||
:group 'recentf
|
||||
:type 'integer)
|
||||
|
||||
(defcustom recentf-save-file (convert-standard-filename "~/.recentf")
|
||||
(defcustom recentf-save-file (locate-user-emacs-file "recentf" ".recentf")
|
||||
"File to save the recent list into."
|
||||
:group 'recentf
|
||||
:type 'file
|
||||
|
|
|
@ -68,7 +68,7 @@ following code in your init file:
|
|||
|
||||
(make-variable-buffer-local 'save-place)
|
||||
|
||||
(defcustom save-place-file (convert-standard-filename "~/.emacs-places")
|
||||
(defcustom save-place-file (locate-user-emacs-file "places" ".emacs-places")
|
||||
"Name of the file that records `save-place-alist' value."
|
||||
:type 'file
|
||||
:group 'save-place)
|
||||
|
@ -224,9 +224,7 @@ may have changed\) back to `save-place-alist'."
|
|||
(symbol-name coding-system-for-write)))
|
||||
(let ((print-length nil)
|
||||
(print-level nil))
|
||||
(pp (sort save-place-alist
|
||||
(lambda (a b) (string< (car a) (car b))))
|
||||
(current-buffer)))
|
||||
(pp save-place-alist (current-buffer)))
|
||||
(let ((version-control
|
||||
(cond
|
||||
((null save-place-version-control) nil)
|
||||
|
|
|
@ -651,7 +651,7 @@ Return t unless files were locked; then return nil."
|
|||
(beep)
|
||||
(sit-for 3)
|
||||
nil)
|
||||
(save-excursion
|
||||
(save-current-buffer
|
||||
(when shadow-info-file
|
||||
(set-buffer (setq shadow-info-buffer
|
||||
(find-file-noselect shadow-info-file)))
|
||||
|
@ -683,7 +683,7 @@ Also clear `shadow-hashtable', since when there are new shadows
|
|||
defined, the old hashtable info is invalid."
|
||||
(shadow-invalidate-hashtable)
|
||||
(if shadow-info-file
|
||||
(save-excursion
|
||||
(save-current-buffer
|
||||
(if (not shadow-info-buffer)
|
||||
(setq shadow-info-buffer (find-file-noselect shadow-info-file)))
|
||||
(set-buffer shadow-info-buffer)
|
||||
|
@ -802,11 +802,13 @@ look for files that have been changed and need to be copied to other systems."
|
|||
(file-name-as-directory (shadow-expand-file-name "~"))))
|
||||
(if (null shadow-info-file)
|
||||
(setq shadow-info-file
|
||||
(shadow-expand-file-name (convert-standard-filename "~/.shadows"))))
|
||||
;; FIXME: Move defaults to their defcustom.
|
||||
(shadow-expand-file-name
|
||||
(locate-user-emacs-file "shadows" ".shadows"))))
|
||||
(if (null shadow-todo-file)
|
||||
(setq shadow-todo-file
|
||||
(shadow-expand-file-name
|
||||
(convert-standard-filename "~/.shadow_todo"))))
|
||||
(locate-user-emacs-file "shadow_todo" ".shadow_todo"))))
|
||||
(if (not (shadow-read-files))
|
||||
(progn
|
||||
(message "Shadowfile information files not found - aborting")
|
||||
|
|
|
@ -260,7 +260,7 @@ WARNING: Changing the value of this variable will gravely affect the
|
|||
:type 'integer
|
||||
:group 'strokes)
|
||||
|
||||
(defcustom strokes-file (convert-standard-filename "~/.strokes")
|
||||
(defcustom strokes-file (locate-user-emacs-file "strokes" ".strokes")
|
||||
"File containing saved strokes for Strokes mode (default is ~/.strokes)."
|
||||
:type 'file
|
||||
:group 'strokes)
|
||||
|
|
|
@ -470,7 +470,7 @@ The relevant features are:
|
|||
(let ((str "")
|
||||
chr)
|
||||
;; The reply should be: \e ] 11 ; rgb: NUMBER1 / NUMBER2 / NUMBER3 \e \\
|
||||
(while (not (equal (setq chr (read-event nil nil 2)) ?\\))
|
||||
(while (and (setq chr (read-event nil nil 2)) (not (equal chr ?\\)))
|
||||
(setq str (concat str (string chr))))
|
||||
(when (string-match
|
||||
"rgb:\\([a-f0-9]+\\)/\\([a-f0-9]+\\)/\\([a-f0-9]+\\)" str)
|
||||
|
@ -489,34 +489,65 @@ The relevant features are:
|
|||
(when recompute-faces
|
||||
(tty-set-up-initial-frame-faces))))))
|
||||
|
||||
(defun xterm--query (query reply-prefix handler)
|
||||
(defun xterm--version-handler ()
|
||||
(let ((str "")
|
||||
chr)
|
||||
;; The reply should be: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
|
||||
;; If the timeout is completely removed for read-event, this
|
||||
;; might hang for terminals that pretend to be xterm, but don't
|
||||
;; respond to this escape sequence. RMS' opinion was to remove
|
||||
;; it completely. That might be right, but let's first try to
|
||||
;; see if by using a longer timeout we get rid of most issues.
|
||||
(while (and (setq chr (read-event nil nil 2)) (not (equal chr ?c)))
|
||||
(setq str (concat str (string chr))))
|
||||
(when (string-match "0;\\([0-9]+\\);0" str)
|
||||
(let ((version (string-to-number (match-string 1 str))))
|
||||
;; If version is 242 or higher, assume the xterm supports
|
||||
;; reporting the background color (TODO: maybe earlier
|
||||
;; versions do too...)
|
||||
(when (>= version 242)
|
||||
(xterm--query "\e]11;?\e\\"
|
||||
'(("\e]11;" . xterm--report-background-handler))))
|
||||
|
||||
;; If version is 216 (the version when modifyOtherKeys was
|
||||
;; introduced) or higher, initialize the
|
||||
;; modifyOtherKeys support.
|
||||
(when (>= version 216)
|
||||
(terminal-init-xterm-modify-other-keys))))))
|
||||
|
||||
(defun xterm--query (query handlers)
|
||||
;; We used to query synchronously, but the need to use `discard-input' is
|
||||
;; rather annoying (bug#6758). Maybe we could always use the asynchronous
|
||||
;; approach, but it's less tested.
|
||||
;; FIXME: Merge the two branches.
|
||||
(if (input-pending-p)
|
||||
(progn
|
||||
(message "Doing %S asynchronously" query)
|
||||
(define-key input-decode-map reply-prefix
|
||||
(lambda (&optional _prompt)
|
||||
;; Unregister the handler, since we don't expect further answers.
|
||||
(define-key input-decode-map reply-prefix nil)
|
||||
(funcall handler)
|
||||
[]))
|
||||
(dolist (handler handlers)
|
||||
(define-key input-decode-map (car handler)
|
||||
(lambda (&optional _prompt)
|
||||
;; Unregister the handler, since we don't expect further answers.
|
||||
(dolist (handler handlers)
|
||||
(define-key input-decode-map (car handler) nil))
|
||||
(funcall (cdr handler))
|
||||
[])))
|
||||
(send-string-to-terminal query))
|
||||
;; Pending input can be mistakenly returned by the calls to
|
||||
;; read-event below. Discard it.
|
||||
(message "Doing %S synchronously" query)
|
||||
(send-string-to-terminal query)
|
||||
(let ((i 0))
|
||||
(while (and (< i (length reply-prefix))
|
||||
(eq (read-event nil nil 2) (aref reply-prefix i)))
|
||||
(setq i (1+ i)))
|
||||
(if (= i (length reply-prefix))
|
||||
(funcall handler)
|
||||
(push last-input-event unread-command-events)
|
||||
(while (> i 0)
|
||||
(push (aref reply-prefix (setq i (1- i))) unread-command-events))))))
|
||||
(while handlers
|
||||
(let ((handler (pop handlers))
|
||||
(i 0))
|
||||
(while (and (< i (length (car handler)))
|
||||
(let ((evt (read-event nil nil 2)))
|
||||
(or (eq evt (aref (car handler) i))
|
||||
(progn (if evt (push evt unread-command-events))
|
||||
nil))))
|
||||
(setq i (1+ i)))
|
||||
(if (= i (length (car handler)))
|
||||
(funcall (cdr handler))
|
||||
(while (> i 0)
|
||||
(push (aref (car handler) (setq i (1- i)))
|
||||
unread-command-events)))))))
|
||||
|
||||
(defun terminal-init-xterm ()
|
||||
"Terminal initialization function for xterm."
|
||||
|
@ -545,37 +576,16 @@ The relevant features are:
|
|||
(if (eq xterm-extra-capabilities 'check)
|
||||
;; Try to find out the type of terminal by sending a "Secondary
|
||||
;; Device Attributes (DA)" query.
|
||||
(xterm--query
|
||||
"\e[>0c" "\e[>"
|
||||
(lambda ()
|
||||
(let ((str "")
|
||||
chr)
|
||||
;; The reply should be: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
|
||||
;; If the timeout is completely removed for read-event, this
|
||||
;; might hang for terminals that pretend to be xterm, but don't
|
||||
;; respond to this escape sequence. RMS' opinion was to remove
|
||||
;; it completely. That might be right, but let's first try to
|
||||
;; see if by using a longer timeout we get rid of most issues.
|
||||
(while (not (equal (setq chr (read-event nil nil 2)) ?c))
|
||||
(setq str (concat str (string chr))))
|
||||
(when (string-match "0;\\([0-9]+\\);0" str)
|
||||
(let ((version (string-to-number (match-string 1 str))))
|
||||
;; If version is 242 or higher, assume the xterm supports
|
||||
;; reporting the background color (TODO: maybe earlier
|
||||
;; versions do too...)
|
||||
(when (>= version 242)
|
||||
(xterm--query "\e]11;?\e\\" "\e]11;"
|
||||
#'xterm--report-background-handler))
|
||||
|
||||
;; If version is 216 (the version when modifyOtherKeys was
|
||||
;; introduced) or higher, initialize the
|
||||
;; modifyOtherKeys support.
|
||||
(when (>= version 216)
|
||||
(terminal-init-xterm-modify-other-keys)))))))
|
||||
(xterm--query "\e[>0c"
|
||||
;; Some terminals (like OS X's Terminal.app) respond to
|
||||
;; this query as if it were a "Primary Device Attributes"
|
||||
;; query instead, so we should handle that too.
|
||||
'(("\e[?" . xterm--version-handler)
|
||||
("\e[>" . xterm--version-handler)))
|
||||
|
||||
(when (memq 'reportBackground xterm-extra-capabilities)
|
||||
(xterm--query "\e]11;?\e\\" "\e]11;"
|
||||
#'xterm--report-background-handler))
|
||||
(xterm--query "\e]11;?\e\\"
|
||||
'(("\e]11;" . xterm--report-background-handler))))
|
||||
|
||||
(when (memq 'modifyOtherKeys xterm-extra-capabilities)
|
||||
(terminal-init-xterm-modify-other-keys)))
|
||||
|
|
|
@ -380,7 +380,7 @@ Subject: %s\n\n"
|
|||
|
||||
;; Remembering to plain files
|
||||
|
||||
(defcustom remember-data-file (convert-standard-filename "~/.notes")
|
||||
(defcustom remember-data-file (locate-user-emacs-file "notes" ".notes")
|
||||
"The file in which to store unprocessed data."
|
||||
:type 'file
|
||||
:group 'remember)
|
||||
|
|
|
@ -204,11 +204,11 @@ key is pressed."
|
|||
:type 'boolean
|
||||
:group 'type-break)
|
||||
|
||||
(defcustom type-break-file-name (convert-standard-filename "~/.type-break")
|
||||
(defcustom type-break-file-name
|
||||
(locate-user-emacs-file "type-break" ".type-break")
|
||||
"Name of file used to save state across sessions.
|
||||
If this is nil, no data will be saved across sessions."
|
||||
:type 'file
|
||||
:group 'type-break)
|
||||
:type 'file)
|
||||
|
||||
(defvar type-break-post-command-hook '(type-break-check)
|
||||
"Hook run indirectly by `post-command-hook' for typing break functions.
|
||||
|
|
32
m4/fdatasync.m4
Normal file
32
m4/fdatasync.m4
Normal file
|
@ -0,0 +1,32 @@
|
|||
# fdatasync.m4 serial 4
|
||||
dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_FDATASYNC],
|
||||
[
|
||||
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
||||
|
||||
dnl Using AC_CHECK_FUNCS_ONCE would break our subsequent AC_SEARCH_LIBS
|
||||
AC_CHECK_DECLS_ONCE([fdatasync])
|
||||
LIB_FDATASYNC=
|
||||
AC_SUBST([LIB_FDATASYNC])
|
||||
|
||||
if test $ac_cv_have_decl_fdatasync = no; then
|
||||
HAVE_DECL_FDATASYNC=0
|
||||
dnl Mac OS X 10.7 has fdatasync but does not declare it.
|
||||
AC_CHECK_FUNCS([fdatasync])
|
||||
if test $ac_cv_func_fdatasync = no; then
|
||||
HAVE_FDATASYNC=0
|
||||
fi
|
||||
else
|
||||
dnl Solaris <= 2.6 has fdatasync() in libposix4.
|
||||
dnl Solaris 7..10 has it in librt.
|
||||
gl_saved_libs=$LIBS
|
||||
AC_SEARCH_LIBS([fdatasync], [rt posix4],
|
||||
[test "$ac_cv_search_fdatasync" = "none required" ||
|
||||
LIB_FDATASYNC=$ac_cv_search_fdatasync])
|
||||
LIBS=$gl_saved_libs
|
||||
fi
|
||||
])
|
17
m4/fsync.m4
Normal file
17
m4/fsync.m4
Normal file
|
@ -0,0 +1,17 @@
|
|||
# fsync.m4 serial 2
|
||||
dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_FSYNC],
|
||||
[
|
||||
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
||||
AC_CHECK_FUNCS_ONCE([fsync])
|
||||
if test $ac_cv_func_fsync = no; then
|
||||
HAVE_FSYNC=0
|
||||
fi
|
||||
])
|
||||
|
||||
# Prerequisites of lib/fsync.c.
|
||||
AC_DEFUN([gl_PREREQ_FSYNC], [:])
|
|
@ -63,10 +63,12 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module extern-inline:
|
||||
# Code from module faccessat:
|
||||
# Code from module fcntl-h:
|
||||
# Code from module fdatasync:
|
||||
# Code from module fdopendir:
|
||||
# Code from module filemode:
|
||||
# Code from module fpending:
|
||||
# Code from module fstatat:
|
||||
# Code from module fsync:
|
||||
# Code from module getgroups:
|
||||
# Code from module getloadavg:
|
||||
# Code from module getopt-gnu:
|
||||
|
@ -187,6 +189,11 @@ AC_DEFUN([gl_INIT],
|
|||
gl_MODULE_INDICATOR([faccessat])
|
||||
gl_UNISTD_MODULE_INDICATOR([faccessat])
|
||||
gl_FCNTL_H
|
||||
gl_FUNC_FDATASYNC
|
||||
if test $HAVE_FDATASYNC = 0; then
|
||||
AC_LIBOBJ([fdatasync])
|
||||
fi
|
||||
gl_UNISTD_MODULE_INDICATOR([fdatasync])
|
||||
gl_FUNC_FDOPENDIR
|
||||
if test $HAVE_FDOPENDIR = 0 || test $REPLACE_FDOPENDIR = 1; then
|
||||
AC_LIBOBJ([fdopendir])
|
||||
|
@ -204,6 +211,12 @@ AC_DEFUN([gl_INIT],
|
|||
AC_LIBOBJ([fstatat])
|
||||
fi
|
||||
gl_SYS_STAT_MODULE_INDICATOR([fstatat])
|
||||
gl_FUNC_FSYNC
|
||||
if test $HAVE_FSYNC = 0; then
|
||||
AC_LIBOBJ([fsync])
|
||||
gl_PREREQ_FSYNC
|
||||
fi
|
||||
gl_UNISTD_MODULE_INDICATOR([fsync])
|
||||
gl_GETLOADAVG
|
||||
if test $HAVE_GETLOADAVG = 0; then
|
||||
AC_LIBOBJ([getloadavg])
|
||||
|
@ -743,12 +756,14 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/execinfo.in.h
|
||||
lib/faccessat.c
|
||||
lib/fcntl.in.h
|
||||
lib/fdatasync.c
|
||||
lib/fdopendir.c
|
||||
lib/filemode.c
|
||||
lib/filemode.h
|
||||
lib/fpending.c
|
||||
lib/fpending.h
|
||||
lib/fstatat.c
|
||||
lib/fsync.c
|
||||
lib/ftoastr.c
|
||||
lib/ftoastr.h
|
||||
lib/getgroups.c
|
||||
|
@ -842,10 +857,12 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/faccessat.m4
|
||||
m4/fcntl-o.m4
|
||||
m4/fcntl_h.m4
|
||||
m4/fdatasync.m4
|
||||
m4/fdopendir.m4
|
||||
m4/filemode.m4
|
||||
m4/fpending.m4
|
||||
m4/fstatat.m4
|
||||
m4/fsync.m4
|
||||
m4/getgroups.m4
|
||||
m4/getloadavg.m4
|
||||
m4/getopt.m4
|
||||
|
|
11
m4/mktime.m4
11
m4/mktime.m4
|
@ -1,4 +1,4 @@
|
|||
# serial 24
|
||||
# serial 25
|
||||
dnl Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
|
@ -14,7 +14,7 @@ AC_DEFUN([gl_FUNC_MKTIME],
|
|||
dnl We don't use AC_FUNC_MKTIME any more, because it is no longer maintained
|
||||
dnl in Autoconf and because it invokes AC_LIBOBJ.
|
||||
AC_CHECK_HEADERS_ONCE([unistd.h])
|
||||
AC_CHECK_FUNCS_ONCE([alarm])
|
||||
AC_CHECK_DECLS_ONCE([alarm])
|
||||
AC_REQUIRE([gl_MULTIARCH])
|
||||
if test $APPLE_UNIVERSAL_BUILD = 1; then
|
||||
# A universal build on Apple Mac OS X platforms.
|
||||
|
@ -34,8 +34,8 @@ AC_DEFUN([gl_FUNC_MKTIME],
|
|||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_ALARM
|
||||
# define alarm(X) /* empty */
|
||||
#if HAVE_DECL_ALARM
|
||||
# include <signal.h>
|
||||
#endif
|
||||
|
||||
/* Work around redefinition to rpl_putenv by other config tests. */
|
||||
|
@ -171,10 +171,13 @@ main ()
|
|||
int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
|
||||
int time_t_signed = ! ((time_t) 0 < (time_t) -1);
|
||||
|
||||
#if HAVE_DECL_ALARM
|
||||
/* This test makes some buggy mktime implementations loop.
|
||||
Give up after 60 seconds; a mktime slower than that
|
||||
isn't worth using anyway. */
|
||||
signal (SIGALRM, SIG_DFL);
|
||||
alarm (60);
|
||||
#endif
|
||||
|
||||
time_t_max = (! time_t_signed
|
||||
? (time_t) -1
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# putenv.m4 serial 19
|
||||
# putenv.m4 serial 20
|
||||
dnl Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -52,5 +52,5 @@ AC_DEFUN([gl_FUNC_PUTENV],
|
|||
# Prerequisites of lib/putenv.c.
|
||||
AC_DEFUN([gl_PREREQ_PUTENV],
|
||||
[
|
||||
AC_CHECK_FUNCS([_putenv])
|
||||
AC_CHECK_DECLS([_putenv])
|
||||
])
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
File synchronization fixes (Bug#13944).
|
||||
* inc/ms-w32.h (fdatasync): New macro, suggested by Eli Zaretskii.
|
||||
|
||||
2013-03-05 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
FILE's lock is now always .#FILE and may be a regular file (Bug#13807).
|
||||
|
|
|
@ -220,6 +220,7 @@ extern int sys_unlink (const char *);
|
|||
/* Map to MSVC names. */
|
||||
#define execlp _execlp
|
||||
#define execvp _execvp
|
||||
#define fdatasync _commit
|
||||
#define fdopen _fdopen
|
||||
#ifndef fileno
|
||||
#define fileno _fileno
|
||||
|
|
|
@ -26,6 +26,82 @@
|
|||
* lisp.h (adjust_after_replace): Cancel externing it.
|
||||
(insert_from_gap): Adjust prototype.
|
||||
|
||||
2013-03-15 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32term.c (w32fullscreen_hook): Swap FULLSCREEN_BOTH and
|
||||
FULLSCREEN_MAXIMIZED. (Bug#13935)
|
||||
|
||||
2013-03-15 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* region-cache.c (find_cache_boundary, move_cache_gap)
|
||||
(insert_cache_boundary, delete_cache_boundaries, set_cache_region):
|
||||
Simplify debugging check and convert to eassert. Adjust comment.
|
||||
(pp_cache): Put under ENABLE_CHECKING.
|
||||
|
||||
2013-03-14 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32term.c (w32_read_socket) <WM_WINDOWPOSCHANGED>: Remove old
|
||||
and incorrect code. Treat WM_WINDOWPOSCHANGED like WM_ACTIVATE
|
||||
and WM_ACTIVATEAPP.
|
||||
(w32fullscreen_hook): If the frame is visible, reset
|
||||
f->want_fullscreen flag after changing the frame size. If the
|
||||
frame is not visible, set f->want_fullscreen to FULLSCREEN_WAIT.
|
||||
(Bug#13953)
|
||||
|
||||
2013-03-13 Daniel Colascione <dancol@dancol.org>
|
||||
|
||||
* emacs.c (main): Call syms_of_cygw32 on CYGWIN non-NTGUI builds
|
||||
too so that these builds can use Cygwin's file conversion
|
||||
functions. (We've been building and linking cygw32.o all along
|
||||
and just not using it.)
|
||||
|
||||
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
File synchronization fixes (Bug#13944).
|
||||
* Makefile.in (LIB_FDATASYNC): New macro.
|
||||
(LIBES): Use it.
|
||||
* conf_post.h (BSD_SYSTEM, BSD_SYSTEM_AHB): Remove; no longer needed.
|
||||
* fileio.c (Fwrite_region, write_region_inhibit_fsync):
|
||||
Don't worry about HAVE_FSYNC, since a substitute fsync is
|
||||
available if the system lacks one.
|
||||
(Fwrite_regin): Retry fsync if interrupted.
|
||||
|
||||
2013-03-13 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32term.c (w32_read_socket): If the Emacs frame is being
|
||||
activated, call w32fullscreen_hook, to make sure the new frame
|
||||
dimensions are in effect. (Bug#13937)
|
||||
|
||||
2013-03-13 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* xdisp.c (init_iterator): Simplify because both character and byte
|
||||
positions are either specified or -1. Add eassert. Adjust comment.
|
||||
* window.c (Fscroll_other_window): Use SET_PT_BOTH because both
|
||||
character and byte positions can be obtained from marker.
|
||||
|
||||
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
Static checking by Sun C 5.12.
|
||||
* alloc.c (buffer_memory_full) [REL_ALLOC]:
|
||||
* bytecode.c (exec_byte_code):
|
||||
* dispnew.c (init_display):
|
||||
* eval.c (error):
|
||||
* fileio.c (Fsubstitute_in_file_name):
|
||||
* keyboard.c (Fevent_convert_list):
|
||||
* keymap.c (Fsingle_key_description):
|
||||
* term.c (maybe_fatal, fatal):
|
||||
* xfns.c (Fx_display_backing_store, Fx_display_visual_class):
|
||||
* xsmfns.c (Fhandle_save_session):
|
||||
Omit unreachable code.
|
||||
* keymap.c (map_keymap_char_table_item): Cast void * to
|
||||
a function pointer type; the C Standard requires this.
|
||||
|
||||
* sysdep.c: Remove a use of BSD_SYSTEM, which I'm trying to phase out.
|
||||
Include <sys/param.h> unconditionally, as that works elsewhere and
|
||||
is simpler here. Include <sys/sysctl.h> if DARWIN_OS ||
|
||||
__FreeBSD__, not if BSD_SYSTEM, since it's needed only for Darwin
|
||||
and FreeBSD now.
|
||||
|
||||
2013-03-11 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* insdel.c (adjust_after_replace): Use bool for boolean.
|
||||
|
|
|
@ -139,6 +139,7 @@ M17N_FLT_LIBS = @M17N_FLT_LIBS@
|
|||
|
||||
LIB_CLOCK_GETTIME=@LIB_CLOCK_GETTIME@
|
||||
LIB_EACCESS=@LIB_EACCESS@
|
||||
LIB_FDATASYNC=@LIB_FDATASYNC@
|
||||
LIB_TIMER_TIME=@LIB_TIMER_TIME@
|
||||
|
||||
DBUS_CFLAGS = @DBUS_CFLAGS@
|
||||
|
@ -391,7 +392,7 @@ ALLOBJS = $(VMLIMIT_OBJ) $(obj) $(otherobj)
|
|||
LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \
|
||||
$(LIBX_OTHER) $(LIBSOUND) \
|
||||
$(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_CLOCK_GETTIME) \
|
||||
$(LIB_EACCESS) $(LIB_TIMER_TIME) $(DBUS_LIBS) \
|
||||
$(LIB_EACCESS) $(LIB_FDATASYNC) $(LIB_TIMER_TIME) $(DBUS_LIBS) \
|
||||
$(LIB_EXECINFO) \
|
||||
$(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
|
||||
$(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(SETTINGS_LIBS) $(LIBSELINUX_LIBS) \
|
||||
|
|
|
@ -422,11 +422,11 @@ buffer_memory_full (ptrdiff_t nbytes)
|
|||
|
||||
#ifndef REL_ALLOC
|
||||
memory_full (nbytes);
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* This used to call error, but if we've run out of memory, we could
|
||||
get infinite recursion trying to build the string. */
|
||||
xsignal (Qnil, Vmemory_signal_data);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* A common multiple of the positive integers A and B. Ideally this
|
||||
|
|
|
@ -755,7 +755,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
|
|||
{
|
||||
BEFORE_POTENTIAL_GC ();
|
||||
wrong_type_argument (Qlistp, v1);
|
||||
AFTER_POTENTIAL_GC ();
|
||||
}
|
||||
NEXT;
|
||||
}
|
||||
|
@ -790,7 +789,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
|
|||
{
|
||||
BEFORE_POTENTIAL_GC ();
|
||||
wrong_type_argument (Qlistp, v1);
|
||||
AFTER_POTENTIAL_GC ();
|
||||
}
|
||||
NEXT;
|
||||
}
|
||||
|
|
|
@ -44,19 +44,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
# define __has_attribute(a) 0 /* non-clang */
|
||||
#endif
|
||||
|
||||
/* This silences a few compilation warnings on FreeBSD. */
|
||||
#ifdef BSD_SYSTEM_AHB
|
||||
#undef BSD_SYSTEM_AHB
|
||||
#undef BSD_SYSTEM
|
||||
#if __FreeBSD__ == 1
|
||||
#define BSD_SYSTEM 199103
|
||||
#elif __FreeBSD__ == 2
|
||||
#define BSD_SYSTEM 199306
|
||||
#elif __FreeBSD__ >= 3
|
||||
#define BSD_SYSTEM 199506
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef DARWIN_OS
|
||||
#ifdef emacs
|
||||
#define malloc unexec_malloc
|
||||
|
|
|
@ -6100,10 +6100,7 @@ init_display (void)
|
|||
|
||||
/* If no window system has been specified, try to use the terminal. */
|
||||
if (! isatty (0))
|
||||
{
|
||||
fatal ("standard input is not a tty");
|
||||
exit (1);
|
||||
}
|
||||
fatal ("standard input is not a tty");
|
||||
|
||||
#ifdef WINDOWSNT
|
||||
terminal_type = "w32console";
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue