Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-61

Merge from emacs--cvs-trunk--0

Patches applied:

 * emacs--cvs-trunk--0  (patch 353-357)

   - Update from CVS
This commit is contained in:
Miles Bader 2005-06-09 07:13:03 +00:00
commit d113efea8e
77 changed files with 3187 additions and 4103 deletions

View file

@ -1,3 +1,13 @@
2005-06-08 Steven Tamm <steventamm@mac.com>
* configure.in: Support Darwin/MacOSX on Intel
* configure: Regenerate.
2005-06-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* configure.in (HAVE_CANCELMENUTRACKING): New test.
* configure: Regenerate.
2005-05-11 J,Ai(Br,At(Bme Marant <jmarant@marant.org> 2005-05-11 J,Ai(Br,At(Bme Marant <jmarant@marant.org>
* configure.in: Add --enable-locallisppath. * configure.in: Add --enable-locallisppath.

5364
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -1080,6 +1080,9 @@ dnl see the `changequote' comment above.
machine=intel386 machine=intel386
case "${canonical}" in case "${canonical}" in
*-cygwin ) opsys=cygwin ;; *-cygwin ) opsys=cygwin ;;
*-darwin ) opsys=darwin
CPP="${CC-cc} -E -no-cpp-precomp"
;;
*-lynxos* ) opsys=lynxos ;; *-lynxos* ) opsys=lynxos ;;
*-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;;
*-isc2.2* ) opsys=isc2-2 ;; *-isc2.2* ) opsys=isc2-2 ;;
@ -2345,6 +2348,15 @@ if test "${HAVE_CARBON}" = "yes"; then
fi fi
# We also have mouse menus. # We also have mouse menus.
HAVE_MENUS=yes HAVE_MENUS=yes
tmp_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -framework Carbon"
AC_CHECK_FUNC(CancelMenuTracking, have_cmt=yes, have_cmt=no)
if test "$have_cmt" = yes; then
AC_DEFINE(HAVE_CANCELMENUTRACKING, 1,
[Define to 1 if CancelMenuTracking is available (Mac OSX).])
fi
CFLAGS="$tmp_CFLAGS"
fi fi
### Use session management (-lSM -lICE) if available ### Use session management (-lSM -lICE) if available

View file

@ -1,3 +1,15 @@
2005-06-08 Kim F. Storm <storm@cua.dk>
* PROBLEMS: Linux kernel 2.6.10 may corrupt process output.
Warn that using CVS+SSH may corrupt files, include work-around.
2005-06-06 Juri Linkov <juri@jurta.org>
* TUTORIAL.cs, TUTORIAL.sk: Change NBSP to space.
* TUTORIAL.ro: Change NBSP to space. Move coding cookie from the
second line to Local Variables. Fix title line.
2005-05-30 Miles Bader <miles@gnu.org> 2005-05-30 Miles Bader <miles@gnu.org>
* emacs-buffer.gdb: Remove RCS keywords. * emacs-buffer.gdb: Remove RCS keywords.

View file

@ -873,6 +873,21 @@ appears in.
*** The variable `cursor-in-non-selected-windows' can now be set to any *** The variable `cursor-in-non-selected-windows' can now be set to any
of the recognized cursor types. of the recognized cursor types.
** New faces:
+++
*** `mode-line-highlight' is the standard face indicating mouse sensitive
elements on mode-line (and header-line) like `highlight' face on text
areas.
+++
*** `shadow' face defines the appearance of the "shadowed" text, i.e.
the text which should be less noticeable than the surrounding text.
This can be achieved by using shades of grey in contrast with either
black or white default foreground color. This generic shadow face
allows customization of the appearance of shadowed text in one place,
so package-specific faces can inherit from it.
** Font-Lock changes: ** Font-Lock changes:
+++ +++
@ -3588,6 +3603,14 @@ properties from surrounding text.
element, if the last match was on a buffer. `set-match-data' element, if the last match was on a buffer. `set-match-data'
accepts such a list for restoring the match state. accepts such a list for restoring the match state.
+++
*** Functions `match-data' and `set-match-data' now have an optional
argument `reseat'. When non-nil, all markers in the match data list
passed to these function will be reseated to point to nowhere, and if
the value of `reseat' is `evaporate', the markers are put onto the
free list. Note that no other references to those markers must exist
if `evaporate' is specified for the `reseat' argument.
+++ +++
*** The default value of `sentence-end' is now defined using the new *** The default value of `sentence-end' is now defined using the new
variable `sentence-end-without-space', which contains such characters variable `sentence-end-without-space', which contains such characters
@ -4872,9 +4895,6 @@ line.
+++ +++
*** Mouse-face on mode-line (and header-line) is now supported. *** Mouse-face on mode-line (and header-line) is now supported.
`mode-line-highlight' is the standard face indicating mouse sensitive
elements on mode-line (and header-line) like `highlight' face on text
areas.
** Menu manipulation changes: ** Menu manipulation changes:

View file

@ -1583,6 +1583,24 @@ global-font-lock-mode RET" or by customizing the variable
** GNU/Linux ** GNU/Linux
*** GNU/Linux: Process output is corrupted.
There is a bug in Linux kernel 2.6.10 PTYs that can cause emacs to
read corrupted process output.
*** GNU/Linux: Remote access to CVS with SSH causes file corruption.
If you access a remote CVS repository via SSH, files may be corrupted
due to bad interaction between CVS, SSH, and libc.
To fix the problem, save the following script into a file, make it
executable, and set CVS_RSH environment variable to the file name of
the script:
#!/bin/bash
exec 2> >(exec cat >&2 2>/dev/null)
exec ssh "$@"
*** GNU/Linux: On Linux-based GNU systems using libc versions 5.4.19 through *** GNU/Linux: On Linux-based GNU systems using libc versions 5.4.19 through
5.4.22, Emacs crashes at startup with a segmentation fault. 5.4.22, Emacs crashes at startup with a segmentation fault.

View file

@ -489,7 +489,7 @@ vyvol
C-x C-f Vyhledání souboru C-x C-f Vyhledání souboru
Emacs se vás zeptá na jméno souboru. Jméno souboru, které píšete, se Emacs se vás zeptá na jméno souboru. Jméno souboru, které píšete, se
objevuje ve spodním řádku obrazovky, který se v této situaci nazývá objevuje ve spodním řádku obrazovky, který se v této situaci nazývá
minibuffer. Pro editaci jména souboru můžete používat obvyklé editační minibuffer. Pro editaci jména souboru můžete používat obvyklé editační
příkazy Emacsu. příkazy Emacsu.

View file

@ -1,10 +1,8 @@
tutorialului de Emacs. Tutorialului de Emacs. A se citi sfârşitul pentru condiţii.
Copyright (c) 1998 Free Software Foundation -*-coding: latin-2;-*- Copyright (c) 1998 Free Software Foundation
Traducere din engleză de Tudor Hulubei <tudor@gnu.org>. Traducere din engleză de Tudor Hulubei <tudor@gnu.org>.
Mulţumiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi şi sugestii. Mulţumiri Aidei Hulubei <aida@chang.pub.ro> pentru corecturi şi sugestii.
A se citi sfârşitul pentru condiţii.
Această versiune a fost produsă plecând de la versiunea în limba Această versiune a fost produsă plecând de la versiunea în limba
engleză, care este engleză, care este
Copyright (c) 1985 Free Software Foundation, Inc. Copyright (c) 1985 Free Software Foundation, Inc.
@ -1112,4 +1110,8 @@ spirit. Citi
ale Emacs-ului. Contribuiţi la eliminarea obstrucţionismului software ale Emacs-ului. Contribuiţi la eliminarea obstrucţionismului software
folosind, scriind şi distribuind free software! folosind, scriind şi distribuind free software!
;;; Local Variables:
;;; coding: iso-latin-2
;;; End:
;;; arch-tag: dcf252cf-bd67-4f8d-a440-1ec4b8dbfd70 ;;; arch-tag: dcf252cf-bd67-4f8d-a440-1ec4b8dbfd70

View file

@ -501,7 +501,7 @@ vyvol
C-x C-f Vyhµadanie súboru C-x C-f Vyhµadanie súboru
Emacs sa Vás opýta na meno súboru. Meno súboru, ktoré pí¹ete, sa Emacs sa Vás opýta na meno súboru. Meno súboru, ktoré pí¹ete, sa
objavuje v spodnom riadku obrazovky, ktorý sa v tejto situácii nazýva objavuje v spodnom riadku obrazovky, ktorý sa v tejto situácii nazýva
minibuffer. Pre editáciu mena súboru mô¾ete pou¾íva» obvyklé editaèné minibuffer. Pre editáciu mena súboru mô¾ete pou¾íva» obvyklé editaèné
príkazy Emacsu. príkazy Emacsu.

View file

@ -1,86 +1,86 @@
This file contains the list of translators and maintainers of the This file contains the list of translators and maintainers of the
tutorial. tutorial.
* TUTORIAL.bg: * TUTORIAL.bg:
Author: Ognyan Kulev <ogi@fmi.uni-sofia.bg> Author: Ognyan Kulev <ogi@fmi.uni-sofia.bg>
Maintainer: Ognyan Kulev <ogi@fmi.uni-sofia.bg> Maintainer: Ognyan Kulev <ogi@fmi.uni-sofia.bg>
* TUTORIAL.cn: * TUTORIAL.cn:
Author: Chao-Hong Liu <chliu@gnu.org> Author: Chao-Hong Liu <chliu@gnu.org>
Maintainer: Chao-Hong Liu <chliu@gnu.org> Maintainer: Chao-Hong Liu <chliu@gnu.org>
* TUTORIAL.cs: * TUTORIAL.cs:
Author: Milan Zamazal <pdm@zamazal.org> Author: Milan Zamazal <pdm@zamazal.org>
Pavel Janík <Pavel@Janik.cz> Pavel Janík <Pavel@Janik.cz>
Maintainer: Milan Zamazal <pdm@zamazal.org> Maintainer: Milan Zamazal <pdm@zamazal.org>
Pavel Janík <Pavel@Janik.cz> Pavel Janík <Pavel@Janik.cz>
* TUTORIAL.de: * TUTORIAL.de:
Author: Werner Lemberg <wl@gnu.org> Author: Werner Lemberg <wl@gnu.org>
Maintainer: Werner Lemberg <wl@gnu.org> Maintainer: Werner Lemberg <wl@gnu.org>
* TUTORIAL.es: * TUTORIAL.es:
Author: Rafael Sepúlveda <drs@gnulinux.org.mx> Author: Rafael Sepúlveda <drs@gnulinux.org.mx>
Maintainer: Rafael Sepúlveda <drs@gnulinux.org.mx> Maintainer: Rafael Sepúlveda <drs@gnulinux.org.mx>
* TUTORIAL.fr: * TUTORIAL.fr:
Author: Éric Jacoboni <jaco@teaser.fr> Author: Éric Jacoboni <jaco@teaser.fr>
Maintainer: Éric Jacoboni <jaco@teaser.fr> Maintainer: Éric Jacoboni <jaco@teaser.fr>
* TUTORIAL.it: * TUTORIAL.it:
Author: Alfredo Finelli <alfredofnl@tiscali.it> Author: Alfredo Finelli <alfredofnl@tiscali.it>
Italian GNU Translation Group <tp@lists.linux.it> Italian GNU Translation Group <tp@lists.linux.it>
Maintainer: Alfredo Finelli <alfredofnl@tiscali.it> Maintainer: Alfredo Finelli <alfredofnl@tiscali.it>
Italian GNU Translation Group <tp@lists.linux.it> Italian GNU Translation Group <tp@lists.linux.it>
* TUTORIAL.ja: * TUTORIAL.ja:
Author: Kenichi Handa <handa@m17n.org> Author: Kenichi Handa <handa@m17n.org>
Maintainer: Kenichi Handa <handa@m17n.org> Maintainer: Kenichi Handa <handa@m17n.org>
* TUTORIAL.ko: * TUTORIAL.ko:
Author: Koaunghi Un <koaunghi@ling.cnu.ac.kr> Author: Koaunghi Un <koaunghi@ling.cnu.ac.kr>
Maintainer: Maintainer needed. Maintainer: Maintainer needed.
* TUTORIAL.nl: * TUTORIAL.nl:
Author: Pieter Schoenmakers <tiggr@tiggr.net> Author: Pieter Schoenmakers <tiggr@tiggr.net>
Maintainer: Pieter Schoenmakers <tiggr@tiggr.net> Maintainer: Pieter Schoenmakers <tiggr@tiggr.net>
* TUTORIAL.pl: * TUTORIAL.pl:
Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl> Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
Janusz S. Bien <jsbien@mail.uw.edu.pl> Janusz S. Bien <jsbien@mail.uw.edu.pl>
Maintainer: Beatę Wierzchołowską <beataw@orient.uw.edu.pl> Maintainer: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
Janusz S. Bien <jsbien@mail.uw.edu.pl> Janusz S. Bien <jsbien@mail.uw.edu.pl>
* TUTORIAL.pt_BR: * TUTORIAL.pt_BR:
Author: Marcelo Toledo <marcelo@gnu.org> Author: Marcelo Toledo <marcelo@gnu.org>
Maintainer: Marcelo Toledo <marcelo@gnu.org> Maintainer: Marcelo Toledo <marcelo@gnu.org>
* TUTORIAL.ro: * TUTORIAL.ro:
Author: Tudor Hulubei <tudor@gnu.org> Author: Tudor Hulubei <tudor@gnu.org>
Maintainer: Maintainer needed. Maintainer: Maintainer needed.
* TUTORIAL.ru: * TUTORIAL.ru:
Author: Alex Ott <ottalex@narod.ru> Author: Alex Ott <ottalex@narod.ru>
Maintainer: Alex Ott <ottalex@narod.ru> Maintainer: Alex Ott <ottalex@narod.ru>
* TUTORIAL.sk: * TUTORIAL.sk:
Author: Miroslav Vaško <vasko@debian.cz> Author: Miroslav Vaško <vasko@debian.cz>
Pavel Janík <Pavel@Janik.cz> Pavel Janík <Pavel@Janik.cz>
Maintainer: Pavel Janík <Pavel@Janik.cz> Maintainer: Pavel Janík <Pavel@Janik.cz>
* TUTORIAL.sl: * TUTORIAL.sl:
Author: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si> Author: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>
Maintainer: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si> Maintainer: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>
* TUTORIAL.sv: * TUTORIAL.sv:
Author: Mats Lidell <matsl@contactor.se> Author: Mats Lidell <matsl@contactor.se>
Maintainer: Mats Lidell <matsl@contactor.se> Maintainer: Mats Lidell <matsl@contactor.se>
* TUTORIAL.th: * TUTORIAL.th:
Author: Virach Sornlertlamvanich <virach@nectec.or.th> Author: Virach Sornlertlamvanich <virach@nectec.or.th>
Maintainer: Virach Sornlertlamvanich <virach@nectec.or.th> Maintainer: Virach Sornlertlamvanich <virach@nectec.or.th>
* TUTORIAL.zh: * TUTORIAL.zh:
Author: Chao-Hong Liu <chliu@gnu.org> Author: Chao-Hong Liu <chliu@gnu.org>
Maintainer: Chao-Hong Liu <chliu@gnu.org> Maintainer: Chao-Hong Liu <chliu@gnu.org>

View file

@ -1,3 +1,203 @@
2005-06-09 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/debug.el (debugger-will-be-back): New var.
(debug): Use it.
(debugger-step-through, debugger-continue, debugger-jump)
(debugger-return-value): Set it when needed.
(debugger-make-xrefs, debugger-frame, debugger-frame-clear):
Use inhibit-read-only.
2005-06-09 Juanma Barranquero <lekktu@gmail.com>
* thumbs.el: Don't set `auto-image-file-mode'. Do not create the
thumbnails directory on loading.
(thumbs-conversion-program): Use `eq' to check the system type,
not `equal'.
(thumbs-temp-dir): Initialize to `temporary-file-directory',
not "/tmp". Fix docstring.
(thumbs-thumbsdir): New function to return the thumbnails
directory, creating it if needed.
(thumbs-cleanup-thumbsdir, thumbs-thumbname): Use it.
(thumbs-temp-file): Delete variable and make it into a function.
(thumbs-resize-image, thumbs-modify-image): Use it.
(thumbs-kill-buffer): Simplify.
(thumbs-gensym): Defalias or duplicate CL `gensym'.
(thumbs-resize-image, thumbs-resize-interactive): Fix typos in
docstrings.
2005-06-09 Kim F. Storm <storm@cua.dk>
* subr.el (save-match-data): Add RESEAT arg `evaporate' to
set-match-data to free markers in match-data.
* replace.el (replace-match-data): Pass RESEAT arg `t' to
match-data to unchain markers in match-data.
2005-06-08 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/debug.el (debug): Don't iconify if we know we'll re-enter
the debugger immediately anyway. Undo the 2005-06-06 change, rendered
unnecessary now.
2005-06-08 Richard M. Stallman <rms@gnu.org>
* emacs-lisp/easy-mmode.el (define-minor-mode): If BODY is empty,
give the variable a doc string that doesn't say don't set it directly.
* textmodes/ispell.el (ispell-check-version):
Use match-string-no-properties.
(ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict)
(ispell-buffer-local-words): Likewise.
* progmodes/make-mode.el (makefile-shell-face): Make this a no-op
except on terminals with enough colors to really display it.
(makefile-dependency-regex): Delete spurious `bb'.
* faces.el (escape-glyph): Use blue once again in last case.
(no-break-space): Redefine so that it isn't invisible on a tty.
2005-06-08 Kim F. Storm <storm@cua.dk>
* ido.el (ido-read-file-name): Fallback to read-file-name on C-f
also when reading directory name.
2005-06-08 Lute Kamstra <lute@gnu.org>
* textmodes/flyspell.el (flyspell-mode): Use define-minor-mode.
(flyspell-mode-line-string): Remove autoload cookie.
(flyspell-mode): Remove defvar.
2005-06-07 Lute Kamstra <lute@gnu.org>
* textmodes/org.el (org-run-mode-hooks): New function.
(org-agenda-mode): Use it.
2005-06-07 David McCabe <davemccabe@gmail.com> (tiny change)
* emacs-lisp/lisp-mode.el (defstruct): Set `doc-string-elt' property.
2005-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
* international/iso-cvt.el (iso-sgml2iso-trans-tab): Add NBSP.
2005-06-06 Luc Teirlinck <teirllm@auburn.edu>
* font-lock.el (font-lock-add-keywords): Doc fix.
2005-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
* textmodes/tex-mode.el (tex-guess-mode): Add RequirePackage.
(tex-compile-default): In the absence of any history, use the order in
tex-compile-alist to choose the preferred command.
(tex-compile-commands): Reorder a bit.
* textmodes/flyspell.el (flyspell-auto-correct-binding)
(flyspell-incorrect-face, flyspell-duplicate-face):
Use (X)Emacs-agnostic code.
(flyspell-mode-map): Don't overwrite at each load. Remove code
redundant with the subsequent add-minor-mode. Merge Emacs and
XEmacs code.
(flyspell-word): Minor simplification.
(flyspell-math-tex-command-p): Quieten the byte-compiler.
(flyspell-external-point-words): Remove unused vars `size' and `start'.
(flyspell-do-correct): Rename from flyspell-xemacs-correct.
Merge the corresponding Emacs code.
(flyspell-correct-word, flyspell-xemacs-popup): Use flyspell-do-correct.
* emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in
a dedicated window.
* international/latexenc.el (latexenc-find-file-coding-system):
Undo part of last patch, to turn off a compiler warning.
2005-06-06 Juri Linkov <juri@jurta.org>
* tmm.el (tmm-inactive, tmm-remove-inactive-mouse-face):
Rename `tmm-inactive-face' to `tmm-inactive'.
2005-06-06 Matt Hodges <MPHodges@member.fsf.org>
* iswitchb.el: Rename faces.
2005-06-06 Kim F. Storm <storm@cua.dk>
* emulation/cua-base.el (cua-rectangle, cua-rectangle-noselect)
(cua-global-mark): Remove -face suffix from face names.
* emulation/cua-gmrk.el (cua--init-global-mark):
Remove cua-global-mark face setup.
2005-06-06 Richard M. Stallman <rms@gnu.org>
* progmodes/make-mode.el (makefile-dependency-regex): Handle whitespace
just like other allowed characters.
(makefile-match-dependency): Exclude leading and training whitespace
from the range of regexp subexp 1.
(makefile-macroassign-regex): Don't try to match the body,
just the name of the macro being defined.
* info.el (Info-read-node-name-2): New function.
(Info-read-node-name-1): Use that.
Add a completion-base-size-function property.
* simple.el (completion-setup-function): Look for
completion-base-size-function property of
minibuffer-completion-table.
* files.el (locate-file-completion): Doc fix.
* printing.el: Don't call pr-update-menus; user must do that.
* emacs-lisp/debug.el (debugger-window): New variable.
(debug): Use debugger-window if it is set and still alive.
Record debugger-window for next entry.
* mail/supercite.el (sc-mail-glom-frame): Mark as risky.
2005-06-06 Matthias F,Av(Brste <slashdevslashnull@gmx.net>
* files.el (hack-local-variables-confirm): New arg FLAG-TO-CHECK.
(hack-one-local-variable, hack-local-variables)
(hack-local-variables-prop-line): Pass that arg.
2005-06-06 Kim F. Storm <storm@cua.dk>
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-indicator): Remove -face suffix from face names.
2005-06-06 Juri Linkov <juri@jurta.org>
* font-lock.el (font-lock-regexp-backslash)
(font-lock-regexp-backslash-construct): New faces.
(lisp-font-lock-keywords-2): Use new faces. Match `?:' only
after `('. Add `while-no-input' to control structures.
* faces.el (no-break-space, shadow): New faces.
(escape-glyph): Use less loud colors pink2 and red4.
* diff-mode.el (diff-context-face)
* dired.el (dired-ignored)
* rfn-eshadow.el (file-name-shadow)
* tmm.el (tmm-inactive-face): Inherit from `shadow' face.
* info.el (Info-title-1-face): Use green instead of yellow because
bold yellow is not readable on light backgrounds.
* progmodes/compile.el (compilation-start): Move `erase-buffer' up
before selecting the desired mode to not spend time fontifying
old contents.
2005-06-06 Juanma Barranquero <lekktu@gmail.com>
* thumbs.el (thumbs-thumbsdir-max-size, thumbs-image-resizing-step)
(thumbs-thumbsdir-auto-clean): Fix typos in docstrings.
* ps-print.el (ps-default-fg, ps-default-bg):
Fix typos in docstrings.
* isearchb.el (isearchb): Don't pass a spurious second argument to
`iswitchb-completions'.
2005-06-05 Nick Roberts <nickrob@snap.net.nz> 2005-06-05 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-info-locals-handler): Use window point * progmodes/gdb-ui.el (gdb-info-locals-handler): Use window point
@ -5,16 +205,16 @@
(gdb-find-file-hook): Add doc string. (gdb-find-file-hook): Add doc string.
* progmodes/gud.el (gdb, gud-menu-map): Add command to evaluate * progmodes/gud.el (gdb, gud-menu-map): Add command to evaluate
C dereferenced pointer expression. C dereferenced pointer expression.
(gud-tool-bar-map): Put it on the tool bar. Re-order icons. (gud-tool-bar-map): Put it on the tool bar. Re-order icons.
* toolbar/gud-pstar.xpm, toolbar/gud-pstar.pbm: New files. * toolbar/gud-pstar.xpm, toolbar/gud-pstar.pbm: New files.
* toolbar/gud-break.xpm, toolbar/gud-cont.xpm, toolbar/gud-down.xpm, * toolbar/gud-break.xpm, toolbar/gud-cont.xpm, toolbar/gud-down.xpm
toolbar/gud-finish.xpm, toolbar/gud-ni.xpm, toolbar/gud-n.xpm, * toolbar/gud-finish.xpm, toolbar/gud-ni.xpm, toolbar/gud-n.xpm
toolbar/gud-print.xpm, toolbar/gud-remove.xpm, toolbar/gud-run.xpm, * toolbar/gud-print.xpm, toolbar/gud-remove.xpm, toolbar/gud-run.xpm
toolbar/gud-si.xpm, toolbar/gud-s.xpm, toolbar/gud-until.xpm, * toolbar/gud-si.xpm, toolbar/gud-s.xpm, toolbar/gud-until.xpm
toolbar/gud-up.xpm, toolbar/gud-watch.xpm: * toolbar/gud-up.xpm, toolbar/gud-watch.xpm:
Make background transparent. Make background transparent.
2005-06-04 Luc Teirlinck <teirllm@auburn.edu> 2005-06-04 Luc Teirlinck <teirllm@auburn.edu>
@ -44,7 +244,7 @@
(iswitchb-current-match-face, iswitchb-virtual-matches-face) (iswitchb-current-match-face, iswitchb-virtual-matches-face)
(iswitchb-invalid-regexp-face): New faces. (iswitchb-invalid-regexp-face): New faces.
(iswitchb-completions): Use them. (iswitchb-completions): Use them.
(iswitchb-use-faces): Renamed from iswitchb-use-fonts, which is (iswitchb-use-faces): Rename from iswitchb-use-fonts, which is
now marked as an obsolete alias. now marked as an obsolete alias.
(iswitchb-read-buffer): Remove check for bound font variables. (iswitchb-read-buffer): Remove check for bound font variables.
(iswitchb-invalid-regexp): New free variable. (iswitchb-invalid-regexp): New free variable.
@ -151,8 +351,7 @@
(gdb-info-breakpoints-custom, gdb-delete-breakpoint) (gdb-info-breakpoints-custom, gdb-delete-breakpoint)
(gdb-goto-breakpoint, gdb-source-info, gdb-get-location) (gdb-goto-breakpoint, gdb-source-info, gdb-get-location)
(gdb-assembler-custom): Improve regexps. (gdb-assembler-custom): Improve regexps.
(def-gdb-auto-update-handler): Use window point to preserve (def-gdb-auto-update-handler): Use window point to preserve point.
point.
2005-05-31 Stefan Monnier <monnier@iro.umontreal.ca> 2005-05-31 Stefan Monnier <monnier@iro.umontreal.ca>

View file

@ -243,10 +243,7 @@ when editing big diffs)."
(defvar diff-function-face 'diff-function-face) (defvar diff-function-face 'diff-function-face)
(defface diff-context-face (defface diff-context-face
'((((class color) (background light)) '((t :inherit shadow))
:foreground "grey50")
(((class color) (background dark))
:foreground "grey70"))
"`diff-mode' face used to highlight context and other side-information." "`diff-mode' face used to highlight context and other side-information."
:group 'diff-mode) :group 'diff-mode)
(defvar diff-context-face 'diff-context-face) (defvar diff-context-face 'diff-context-face)

View file

@ -356,7 +356,7 @@ Subexpression 2 must end right before the \\n or \\r.")
"Face name used for symbolic links.") "Face name used for symbolic links.")
(defface dired-ignored (defface dired-ignored
'((t (:inherit font-lock-string-face))) '((t (:inherit shadow)))
"Face used for files suffixed with `completion-ignored-extensions'." "Face used for files suffixed with `completion-ignored-extensions'."
:group 'dired-faces :group 'dired-faces
:version "22.1") :version "22.1")

View file

@ -88,6 +88,8 @@ This is to optimize `debugger-make-xrefs'.")
(defvar debugger-outer-standard-output) (defvar debugger-outer-standard-output)
(defvar debugger-outer-inhibit-redisplay) (defvar debugger-outer-inhibit-redisplay)
(defvar debugger-outer-cursor-in-echo-area) (defvar debugger-outer-cursor-in-echo-area)
(defvar debugger-will-be-back nil
"Non-nil if we expect to get back in the debugger soon.")
(defvar inhibit-debug-on-entry nil (defvar inhibit-debug-on-entry nil
"Non-nil means that debug-on-entry is disabled.") "Non-nil means that debug-on-entry is disabled.")
@ -97,6 +99,8 @@ This is to optimize `debugger-make-xrefs'.")
This variable is used by `debugger-jump', `debugger-step-through', This variable is used by `debugger-jump', `debugger-step-through',
and `debugger-reenable' to temporarily disable debug-on-entry.") and `debugger-reenable' to temporarily disable debug-on-entry.")
(defvar inhibit-trace) ;Not yet implemented.
;;;###autoload ;;;###autoload
(setq debugger 'debug) (setq debugger 'debug)
;;;###autoload ;;;###autoload
@ -121,6 +125,7 @@ first will be printed into the backtrace buffer."
(get-buffer-create "*Backtrace*"))) (get-buffer-create "*Backtrace*")))
(debugger-old-buffer (current-buffer)) (debugger-old-buffer (current-buffer))
(debugger-step-after-exit nil) (debugger-step-after-exit nil)
(debugger-will-be-back nil)
;; Don't keep reading from an executing kbd macro! ;; Don't keep reading from an executing kbd macro!
(executing-kbd-macro nil) (executing-kbd-macro nil)
;; Save the outer values of these vars for the `e' command ;; Save the outer values of these vars for the `e' command
@ -178,7 +183,7 @@ first will be printed into the backtrace buffer."
;; Place an extra debug-on-exit for macro's. ;; Place an extra debug-on-exit for macro's.
(when (eq 'lambda (car-safe (cadr (backtrace-frame 4)))) (when (eq 'lambda (car-safe (cadr (backtrace-frame 4))))
(backtrace-debug 5 t))) (backtrace-debug 5 t)))
(pop-to-buffer debugger-buffer) (pop-to-buffer debugger-buffer)
(debugger-mode) (debugger-mode)
(debugger-setup-buffer debugger-args) (debugger-setup-buffer debugger-args)
(when noninteractive (when noninteractive
@ -210,12 +215,23 @@ first will be printed into the backtrace buffer."
;; Still visible despite the save-window-excursion? Maybe it ;; Still visible despite the save-window-excursion? Maybe it
;; it's in a pop-up frame. It would be annoying to delete and ;; it's in a pop-up frame. It would be annoying to delete and
;; recreate it every time the debugger stops, so instead we'll ;; recreate it every time the debugger stops, so instead we'll
;; erase it and hide it but keep it alive. ;; erase it (and maybe hide it) but keep it alive.
(with-current-buffer debugger-buffer (with-current-buffer debugger-buffer
(erase-buffer) (erase-buffer)
(fundamental-mode) (fundamental-mode)
(with-selected-window (get-buffer-window debugger-buffer 0) (with-selected-window (get-buffer-window debugger-buffer 0)
(bury-buffer))) (when (and (window-dedicated-p (selected-window))
(not debugger-will-be-back))
;; If the window is not dedicated, burying the buffer
;; will mean that the frame created for it is left
;; around showing some random buffer, and next time we
;; pop to the debugger buffer we'll create yet
;; another frame.
;; If debugger-will-be-back is non-nil, the frame
;; would need to be de-iconified anyway immediately
;; after when we re-enter the debugger, so iconifying it
;; here would cause flashing.
(bury-buffer))))
(kill-buffer debugger-buffer)) (kill-buffer debugger-buffer))
(set-match-data debugger-outer-match-data))) (set-match-data debugger-outer-match-data)))
;; Put into effect the modified values of these variables ;; Put into effect the modified values of these variables
@ -307,7 +323,7 @@ That buffer should be current already."
(save-excursion (save-excursion
(set-buffer (or buffer (current-buffer))) (set-buffer (or buffer (current-buffer)))
(setq buffer (current-buffer)) (setq buffer (current-buffer))
(let ((buffer-read-only nil) (let ((inhibit-read-only t)
(old-end (point-min)) (new-end (point-min))) (old-end (point-min)) (new-end (point-min)))
;; If we saved an old backtrace, find the common part ;; If we saved an old backtrace, find the common part
;; between the new and the old. ;; between the new and the old.
@ -377,6 +393,7 @@ Enter another debugger on next entry to eval, apply or funcall."
(interactive) (interactive)
(setq debugger-step-after-exit t) (setq debugger-step-after-exit t)
(setq debugger-jumping-flag t) (setq debugger-jumping-flag t)
(setq debugger-will-be-back t)
(add-hook 'post-command-hook 'debugger-reenable) (add-hook 'post-command-hook 'debugger-reenable)
(message "Proceeding, will debug on next eval or call.") (message "Proceeding, will debug on next eval or call.")
(exit-recursive-edit)) (exit-recursive-edit))
@ -387,6 +404,12 @@ Enter another debugger on next entry to eval, apply or funcall."
(unless debugger-may-continue (unless debugger-may-continue
(error "Cannot continue")) (error "Cannot continue"))
(message "Continuing.") (message "Continuing.")
(save-excursion
;; Check to see if we've flagged some frame for debug-on-exit, in which
;; case we'll probably come back to the debugger soon.
(goto-char (point-min))
(if (re-search-forward "^\\* " nil t)
(setq debugger-will-be-back t)))
(exit-recursive-edit)) (exit-recursive-edit))
(defun debugger-return-value (val) (defun debugger-return-value (val)
@ -397,6 +420,12 @@ will be used, such as in a debug on exit from a frame."
(setq debugger-value val) (setq debugger-value val)
(princ "Returning " t) (princ "Returning " t)
(prin1 debugger-value) (prin1 debugger-value)
(save-excursion
;; Check to see if we've flagged some frame for debug-on-exit, in which
;; case we'll probably come back to the debugger soon.
(goto-char (point-min))
(if (re-search-forward "^\\* " nil t)
(setq debugger-will-be-back t)))
(exit-recursive-edit)) (exit-recursive-edit))
(defun debugger-jump () (defun debugger-jump ()
@ -406,6 +435,7 @@ will be used, such as in a debug on exit from a frame."
(setq debugger-jumping-flag t) (setq debugger-jumping-flag t)
(add-hook 'post-command-hook 'debugger-reenable) (add-hook 'post-command-hook 'debugger-reenable)
(message "Continuing through this frame") (message "Continuing through this frame")
(setq debugger-will-be-back t)
(exit-recursive-edit)) (exit-recursive-edit))
(defun debugger-reenable () (defun debugger-reenable ()
@ -454,7 +484,7 @@ Applies to the frame whose line point is on in the backtrace."
(beginning-of-line) (beginning-of-line)
(backtrace-debug (debugger-frame-number) t) (backtrace-debug (debugger-frame-number) t)
(if (= (following-char) ? ) (if (= (following-char) ? )
(let ((buffer-read-only nil)) (let ((inhibit-read-only t))
(delete-char 1) (delete-char 1)
(insert ?*))) (insert ?*)))
(beginning-of-line)) (beginning-of-line))
@ -470,7 +500,7 @@ Applies to the frame whose line point is on in the backtrace."
(beginning-of-line) (beginning-of-line)
(backtrace-debug (debugger-frame-number) nil) (backtrace-debug (debugger-frame-number) nil)
(if (= (following-char) ?*) (if (= (following-char) ?*)
(let ((buffer-read-only nil)) (let ((inhibit-read-only t))
(delete-char 1) (delete-char 1)
(insert ? ))) (insert ? )))
(beginning-of-line)) (beginning-of-line))

View file

@ -183,13 +183,18 @@ Use the command `%s' to change this variable." pretty-name mode))
(let ((curfile (or (and (boundp 'byte-compile-current-file) (let ((curfile (or (and (boundp 'byte-compile-current-file)
byte-compile-current-file) byte-compile-current-file)
load-file-name))) load-file-name))
`(defcustom ,mode ,init-value base-doc-string)
,(format "Non-nil if %s is enabled. (setq base-doc-string "Non-nil if %s is enabled.
See the command `%s' for a description of this minor-mode. See the command `%s' for a description of this minor-mode.
Setting this variable directly does not take effect; Setting this variable directly does not take effect;
use either \\[customize] or the function `%s'." use either \\[customize] or the function `%s'.")
pretty-name mode mode) (if (null body)
(setq base-doc-string "Non-nil if %s is enabled.
See the command `%s' for a description of this minor-mode."))
`(defcustom ,mode ,init-value
,(format base-doc-string pretty-name mode mode)
:set 'custom-set-minor-mode :set 'custom-set-minor-mode
:initialize 'custom-initialize-default :initialize 'custom-initialize-default
,@group ,@group

View file

@ -129,6 +129,7 @@
(put 'defmacro 'doc-string-elt 3) (put 'defmacro 'doc-string-elt 3)
(put 'defmacro* 'doc-string-elt 3) (put 'defmacro* 'doc-string-elt 3)
(put 'defsubst 'doc-string-elt 3) (put 'defsubst 'doc-string-elt 3)
(put 'defstruct 'doc-string-elt 2)
(put 'define-skeleton 'doc-string-elt 2) (put 'define-skeleton 'doc-string-elt 2)
(put 'define-derived-mode 'doc-string-elt 4) (put 'define-derived-mode 'doc-string-elt 4)
(put 'define-compilation-mode 'doc-string-elt 3) (put 'define-compilation-mode 'doc-string-elt 3)
@ -194,7 +195,7 @@
(setq comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *") (setq comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
(make-local-variable 'font-lock-comment-start-skip) (make-local-variable 'font-lock-comment-start-skip)
;; Font lock mode uses this only when it KNOWS a comment is starting. ;; Font lock mode uses this only when it KNOWS a comment is starting.
(setq font-lock-comment-start-skip ";+ *") (setq font-lock-comment-start-skip ";+ *")
(make-local-variable 'comment-add) (make-local-variable 'comment-add)
(setq comment-add 1) ;default to `;;' in comment-region (setq comment-add 1) ;default to `;;' in comment-region
(make-local-variable 'comment-column) (make-local-variable 'comment-column)

View file

@ -384,13 +384,13 @@ and after the region marked by the rectangle to search."
:type 'boolean :type 'boolean
:group 'cua) :group 'cua)
(defface cua-rectangle-face (defface cua-rectangle
'((default :inherit region) '((default :inherit region)
(((class color)) :foreground "white" :background "maroon")) (((class color)) :foreground "white" :background "maroon"))
"*Font used by CUA for highlighting the rectangle." "*Font used by CUA for highlighting the rectangle."
:group 'cua) :group 'cua)
(defface cua-rectangle-noselect-face (defface cua-rectangle-noselect
'((default :inherit region) '((default :inherit region)
(((class color)) :foreground "white" :background "dimgray")) (((class color)) :foreground "white" :background "dimgray"))
"*Font used by CUA for highlighting the non-selected rectangle lines." "*Font used by CUA for highlighting the non-selected rectangle lines."
@ -404,7 +404,7 @@ and after the region marked by the rectangle to search."
:type 'boolean :type 'boolean
:group 'cua) :group 'cua)
(defface cua-global-mark-face (defface cua-global-mark
'((((min-colors 88)(class color)) :foreground "black" :background "yellow1") '((((min-colors 88)(class color)) :foreground "black" :background "yellow1")
(((class color)) :foreground "black" :background "yellow") (((class color)) :foreground "black" :background "yellow")
(t :bold t)) (t :bold t))

View file

@ -74,7 +74,7 @@
(move-overlay cua--global-mark-overlay (point) (1+ (point))) (move-overlay cua--global-mark-overlay (point) (1+ (point)))
(setq cua--global-mark-overlay (setq cua--global-mark-overlay
(make-overlay (point) (1+ (point)))) (make-overlay (point) (1+ (point))))
(overlay-put cua--global-mark-overlay 'face 'cua-global-mark-face)) (overlay-put cua--global-mark-overlay 'face 'cua-global-mark))
(if (and cua-global-mark-blink-cursor-interval (if (and cua-global-mark-blink-cursor-interval
(not cua--orig-blink-cursor-interval)) (not cua--orig-blink-cursor-interval))
(setq cua--orig-blink-cursor-interval blink-cursor-interval (setq cua--orig-blink-cursor-interval blink-cursor-interval
@ -218,7 +218,7 @@ With prefix argument, don't jump to global mark when cancelling it."
(let ((olist (overlays-at (marker-position cua--global-mark-marker))) (let ((olist (overlays-at (marker-position cua--global-mark-marker)))
in-rect) in-rect)
(while olist (while olist
(if (eq (overlay-get (car olist) 'face) 'cua-rectangle-face) (if (eq (overlay-get (car olist) 'face) 'cua-rectangle)
(setq in-rect t olist nil) (setq in-rect t olist nil)
(setq olist (cdr olist)))) (setq olist (cdr olist))))
(if in-rect (if in-rect
@ -358,11 +358,6 @@ With prefix argument, don't jump to global mark when cancelling it."
;;; Initialization ;;; Initialization
(defun cua--init-global-mark () (defun cua--init-global-mark ()
(unless (face-background 'cua-global-mark-face)
(copy-face 'region 'cua-global-mark-face)
(set-face-foreground 'cua-global-mark-face "black")
(set-face-background 'cua-global-mark-face "cyan"))
(define-key cua--global-mark-keymap [remap copy-region-as-kill] 'cua-copy-to-global-mark) (define-key cua--global-mark-keymap [remap copy-region-as-kill] 'cua-copy-to-global-mark)
(define-key cua--global-mark-keymap [remap kill-ring-save] 'cua-copy-to-global-mark) (define-key cua--global-mark-keymap [remap kill-ring-save] 'cua-copy-to-global-mark)
(define-key cua--global-mark-keymap [remap kill-region] 'cua-cut-to-global-mark) (define-key cua--global-mark-keymap [remap kill-region] 'cua-cut-to-global-mark)

View file

@ -755,7 +755,7 @@ If command is repeated at same position, delete the rectangle."
(sit-for 0) ; make window top/bottom reliable (sit-for 0) ; make window top/bottom reliable
(cua--rectangle-operation nil t nil nil nil ; do not tabify (cua--rectangle-operation nil t nil nil nil ; do not tabify
'(lambda (s e l r v) '(lambda (s e l r v)
(let ((rface (if v 'cua-rectangle-face 'cua-rectangle-noselect-face)) (let ((rface (if v 'cua-rectangle 'cua-rectangle-noselect))
overlay bs ms as) overlay bs ms as)
(when (cua--rectangle-virtual-edges) (when (cua--rectangle-virtual-edges)
(let ((lb (line-beginning-position)) (let ((lb (line-beginning-position))

View file

@ -2085,13 +2085,32 @@ Note: Other faces cannot inherit from the cursor face."
:group 'whitespace ; like `show-trailing-whitespace' :group 'whitespace ; like `show-trailing-whitespace'
:group 'basic-faces) :group 'basic-faces)
(defface escape-glyph '((((background dark)) :foreground "cyan") (defface escape-glyph
;; See the comment in minibuffer-prompt for '((((background dark)) :foreground "pink2")
;; the reason not to use blue on MS-DOS. ;; See the comment in minibuffer-prompt for
(((type pc)) :foreground "magenta") ;; the reason not to use blue on MS-DOS.
(t :foreground "blue")) (((type pc)) :foreground "magenta")
;; red4 is too light -- rms.
(t :foreground "blue"))
"Face for characters displayed as ^-sequences or \-sequences." "Face for characters displayed as ^-sequences or \-sequences."
:group 'basic-faces) :group 'basic-faces
:version "22.1")
(defface no-break-space
'((((class color) (min-colors 88)) :inherit escape-glyph :underline t)
(((class color) (min-colors 8)) :background "magenta" :foreground )
(t :inverse-video t))
"Face for non-breaking space."
:group 'basic-faces
:version "22.1")
(defface shadow
'((((background dark)) :foreground "grey70")
(((background light)) :foreground "grey50"))
"Basic face for shadowed text."
:group 'basic-faces
:version "22.1")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Manipulating font names. ;;; Manipulating font names.

View file

@ -658,7 +658,7 @@ one or more of those symbols."
(defun locate-file-completion (string path-and-suffixes action) (defun locate-file-completion (string path-and-suffixes action)
"Do completion for file names passed to `locate-file'. "Do completion for file names passed to `locate-file'.
PATH-AND-SUFFIXES is a pair of lists (DIRECTORIES . SUFFIXES)." PATH-AND-SUFFIXES is a pair of lists, (DIRECTORIES . SUFFIXES)."
(if (file-name-absolute-p string) (if (file-name-absolute-p string)
(read-file-name-internal string nil action) (read-file-name-internal string nil action)
(let ((names nil) (let ((names nil)
@ -2159,9 +2159,9 @@ Otherwise, return nil; point may be changed."
(goto-char beg) (goto-char beg)
end)))) end))))
(defun hack-local-variables-confirm (string) (defun hack-local-variables-confirm (string flag-to-check)
(or (eq enable-local-variables t) (or (eq flag-to-check t)
(and enable-local-variables (and flag-to-check
(save-window-excursion (save-window-excursion
(condition-case nil (condition-case nil
(switch-to-buffer (current-buffer)) (switch-to-buffer (current-buffer))
@ -2236,7 +2236,8 @@ is specified, returning t if it is specified."
(if (and result (if (and result
(or mode-only (or mode-only
(hack-local-variables-confirm (hack-local-variables-confirm
"Set local variables as specified in -*- line of %s? "))) "Set local variables as specified in -*- line of %s? "
enable-local-variables)))
(let ((enable-local-eval enable-local-eval)) (let ((enable-local-eval enable-local-eval))
(while result (while result
(hack-one-local-variable (car (car result)) (cdr (car result))) (hack-one-local-variable (car (car result)) (cdr (car result)))
@ -2267,7 +2268,8 @@ is specified, returning t if it is specified."
(and (search-forward "Local Variables:" nil t) (and (search-forward "Local Variables:" nil t)
(or mode-only (or mode-only
(hack-local-variables-confirm (hack-local-variables-confirm
"Set local variables as specified at end of %s? ")))) "Set local variables as specified at end of %s? "
enable-local-variables))))
(skip-chars-forward " \t") (skip-chars-forward " \t")
(let ((enable-local-eval enable-local-eval) (let ((enable-local-eval enable-local-eval)
;; suffix is what comes after "local variables:" in its line. ;; suffix is what comes after "local variables:" in its line.
@ -2489,7 +2491,8 @@ is considered risky."
;; Permit eval if not root and user says ok. ;; Permit eval if not root and user says ok.
(and (not (zerop (user-uid))) (and (not (zerop (user-uid)))
(hack-local-variables-confirm (hack-local-variables-confirm
"Process `eval' or hook local variables in %s? "))) "Process `eval' or hook local variables in %s? "
enable-local-eval)))
(if (eq var 'eval) (if (eq var 'eval)
(save-excursion (eval val)) (save-excursion (eval val))
(make-local-variable var) (make-local-variable var)

View file

@ -691,7 +691,7 @@ For example:
(add-hook 'c-mode-hook (add-hook 'c-mode-hook
(lambda () (lambda ()
(font-lock-add-keywords 'c-mode (font-lock-add-keywords nil
'((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 font-lock-warning-face prepend) '((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 font-lock-warning-face prepend)
(\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" . (\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" .
font-lock-keyword-face))))) font-lock-keyword-face)))))
@ -905,7 +905,7 @@ The value of this variable is used when Font Lock mode is turned on."
'font-lock-after-change-function t) 'font-lock-after-change-function t)
(set (make-local-variable 'font-lock-fontify-buffer-function) (set (make-local-variable 'font-lock-fontify-buffer-function)
'jit-lock-refontify) 'jit-lock-refontify)
;; Don't fontify eagerly (and don't abort is the buffer is large). ;; Don't fontify eagerly (and don't abort if the buffer is large).
(set (make-local-variable 'font-lock-fontified) t) (set (make-local-variable 'font-lock-fontified) t)
;; Use jit-lock. ;; Use jit-lock.
(jit-lock-register 'font-lock-fontify-region (jit-lock-register 'font-lock-fontify-region
@ -1826,6 +1826,17 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
"Font Lock mode face used to highlight preprocessor directives." "Font Lock mode face used to highlight preprocessor directives."
:group 'font-lock-highlighting-faces) :group 'font-lock-highlighting-faces)
(defface font-lock-regexp-backslash
'((((class color) (min-colors 16)) :inherit escape-glyph)
(t :inherit bold))
"Font Lock mode face used to highlight a backslash in Lisp regexps."
:group 'font-lock-highlighting-faces)
(defface font-lock-regexp-backslash-construct
'((t :inherit bold))
"Font Lock mode face used to highlight `\' constructs in Lisp regexps."
:group 'font-lock-highlighting-faces)
;;; End of Colour etc. support. ;;; End of Colour etc. support.
;;; Menu support. ;;; Menu support.
@ -2020,7 +2031,7 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
`(;; Control structures. Emacs Lisp forms. `(;; Control structures. Emacs Lisp forms.
(,(concat (,(concat
"(" (regexp-opt "(" (regexp-opt
'("cond" "if" "while" "let" "let*" '("cond" "if" "while" "while-no-input" "let" "let*"
"prog" "progn" "progv" "prog1" "prog2" "prog*" "prog" "progn" "progv" "prog1" "prog2" "prog*"
"inline" "lambda" "save-restriction" "save-excursion" "inline" "lambda" "save-restriction" "save-excursion"
"save-window-excursion" "save-selected-window" "save-window-excursion" "save-selected-window"
@ -2076,16 +2087,14 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
;; Make regexp grouping constructs bold, so they stand out, but only ;; Make regexp grouping constructs bold, so they stand out, but only
;; in strings. ;; in strings.
((lambda (bound) ((lambda (bound)
(if (re-search-forward "\\(\\\\\\\\\\)\\([(|)]\\)\\(\\?:\\)?" bound t) (if (re-search-forward "\\(\\\\\\\\\\)\\((\\(?:?:\\)?\\|[|)]\\)" bound t)
(let ((face (get-text-property (1- (point)) 'face))) (let ((face (get-text-property (1- (point)) 'face)))
(if (listp face) (if (listp face)
(memq 'font-lock-string-face face) (memq 'font-lock-string-face face)
(eq 'font-lock-string-face face))))) (eq 'font-lock-string-face face)))))
;; Should we introduce a lowlight face for this? (1 'font-lock-regexp-backslash prepend)
;; Ideally that would retain the color, dimmed. (2 'font-lock-regexp-backslash-construct prepend))
(1 font-lock-comment-face prepend)
(2 'bold prepend)
(3 font-lock-type-face prepend t))
;; Underline innermost grouping, so that you can more easily see what ;; Underline innermost grouping, so that you can more easily see what
;; belongs together. 2005-05-12: Font-lock can go into an ;; belongs together. 2005-05-12: Font-lock can go into an
;; unbreakable endless loop on this -- something's broken. ;; unbreakable endless loop on this -- something's broken.

View file

@ -299,8 +299,8 @@
;; ------------ ;; ------------
;; The highlighting of matching items is controlled via ido-use-faces. ;; The highlighting of matching items is controlled via ido-use-faces.
;; The faces used are ido-first-match-face, ido-only-match-face and ;; The faces used are ido-first-match, ido-only-match and
;; ido-subdir-face. ;; ido-subdir.
;; Colouring of the matching item was suggested by ;; Colouring of the matching item was suggested by
;; Carsten Dominik (dominik@strw.leidenuniv.nl). ;; Carsten Dominik (dominik@strw.leidenuniv.nl).
@ -740,17 +740,17 @@ subdirs in the alternatives."
:type 'boolean :type 'boolean
:group 'ido) :group 'ido)
(defface ido-first-match-face '((t (:bold t))) (defface ido-first-match '((t (:bold t)))
"*Font used by ido for highlighting first match." "*Font used by ido for highlighting first match."
:group 'ido) :group 'ido)
(defface ido-only-match-face '((((class color)) (defface ido-only-match '((((class color))
(:foreground "ForestGreen")) (:foreground "ForestGreen"))
(t (:italic t))) (t (:italic t)))
"*Font used by ido for highlighting only match." "*Font used by ido for highlighting only match."
:group 'ido) :group 'ido)
(defface ido-subdir-face '((((min-colors 88) (class color)) (defface ido-subdir '((((min-colors 88) (class color))
(:foreground "red1")) (:foreground "red1"))
(((class color)) (((class color))
(:foreground "red")) (:foreground "red"))
@ -758,7 +758,7 @@ subdirs in the alternatives."
"*Font used by ido for highlighting subdirs in the alternatives." "*Font used by ido for highlighting subdirs in the alternatives."
:group 'ido) :group 'ido)
(defface ido-indicator-face '((((min-colors 88) (class color)) (defface ido-indicator '((((min-colors 88) (class color))
(:foreground "yellow1" (:foreground "yellow1"
:background "red1" :background "red1"
:width condensed)) :width condensed))
@ -4039,7 +4039,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
first) first)
(if (and ind ido-use-faces) (if (and ind ido-use-faces)
(put-text-property 0 1 'face 'ido-indicator-face ind)) (put-text-property 0 1 'face 'ido-indicator ind))
(if (and ido-use-faces comps) (if (and ido-use-faces comps)
(let* ((fn (ido-name (car comps))) (let* ((fn (ido-name (car comps)))
@ -4047,8 +4047,8 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
(setq first (format "%s" fn)) (setq first (format "%s" fn))
(put-text-property 0 ln 'face (put-text-property 0 ln 'face
(if (= (length comps) 1) (if (= (length comps) 1)
'ido-only-match-face 'ido-only-match
'ido-first-match-face) 'ido-first-match)
first) first)
(if ind (setq first (concat first ind))) (if ind (setq first (concat first ind)))
(setq comps (cons first (cdr comps))))) (setq comps (cons first (cdr comps)))))
@ -4091,7 +4091,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
(if (and ido-use-faces (if (and ido-use-faces
(not (string= str first)) (not (string= str first))
(ido-final-slash str)) (ido-final-slash str))
(put-text-property 0 (length str) 'face 'ido-subdir-face str)) (put-text-property 0 (length str) 'face 'ido-subdir str))
str))))) str)))))
comps)))))) comps))))))
@ -4193,7 +4193,9 @@ See `read-file-name' for additional parameters."
(eq (get this-command 'ido) 'dir) (eq (get this-command 'ido) 'dir)
(memq this-command ido-read-file-name-as-directory-commands)) (memq this-command ido-read-file-name-as-directory-commands))
(setq filename (setq filename
(ido-read-directory-name prompt dir default-filename mustmatch initial))) (ido-read-directory-name prompt dir default-filename mustmatch initial))
(if (eq ido-exit 'fallback)
(setq filename 'fallback)))
((and (not (eq (get this-command 'ido) 'ignore)) ((and (not (eq (get this-command 'ido) 'ignore))
(not (memq this-command ido-read-file-name-non-ido)) (not (memq this-command ido-read-file-name-non-ido))
(or (null predicate) (eq predicate 'file-exists-p))) (or (null predicate) (eq predicate 'file-exists-p)))

View file

@ -1379,6 +1379,43 @@ If FORK is a string, it is the name to use for the new buffer."
(defvar Info-read-node-completion-table) (defvar Info-read-node-completion-table)
(defun Info-read-node-name-2 (string path-and-suffixes action)
"Virtual completion table for file names input in Info node names.
PATH-AND-SUFFIXES is a pair of lists, (DIRECTORIES . SUFFIXES)."
(let* ((names nil)
(suffixes (remove "" (cdr path-and-suffixes)))
(suffix (concat (regexp-opt suffixes t) "\\'"))
(string-dir (file-name-directory string))
(dirs
(if (file-name-absolute-p string)
(list (file-name-directory string))
(car path-and-suffixes))))
(dolist (dir dirs)
(unless dir
(setq dir default-directory))
(if string-dir (setq dir (expand-file-name string-dir dir)))
(when (file-directory-p dir)
(dolist (file (file-name-all-completions
(file-name-nondirectory string) dir))
;; If the file name has no suffix or a standard suffix,
;; include it.
(and (or (null (file-name-extension file))
(string-match suffix file))
;; But exclude subfiles of split info files.
(not (string-match "-[0-9]+\\'" file))
;; And exclude backup files.
(not (string-match "~\\'" file))
(push (if string-dir (concat string-dir file) file) names))
;; If the file name ends in a standard suffix,
;; add the unsuffixed name as a completion option.
(when (string-match suffix file)
(setq file (substring file 0 (match-beginning 0)))
(push (if string-dir (concat string-dir file) file) names)))))
(cond
((eq action t) (all-completions string names))
((null action) (try-completion string names))
(t (test-completion string names)))))
;; This function is used as the "completion table" while reading a node name. ;; This function is used as the "completion table" while reading a node name.
;; It does completion using the alist in Info-read-node-completion-table ;; It does completion using the alist in Info-read-node-completion-table
;; unless STRING starts with an open-paren. ;; unless STRING starts with an open-paren.
@ -1389,15 +1426,16 @@ If FORK is a string, it is the name to use for the new buffer."
(let ((file (substring string 1))) (let ((file (substring string 1)))
(cond (cond
((eq code nil) ((eq code nil)
(let ((comp (try-completion file 'locate-file-completion (let ((comp (try-completion file 'Info-read-node-name-2
(cons Info-directory-list (cons Info-directory-list
(mapcar 'car Info-suffix-list))))) (mapcar 'car Info-suffix-list)))))
(cond (cond
((eq comp t) (concat string ")")) ((eq comp t) (concat string ")"))
(comp (concat "(" comp))))) (comp (concat "(" comp)))))
((eq code t) (all-completions file 'locate-file-completion ((eq code t)
(cons Info-directory-list (all-completions file 'Info-read-node-name-2
(mapcar 'car Info-suffix-list)))) (cons Info-directory-list
(mapcar 'car Info-suffix-list))))
(t nil)))) (t nil))))
;; If a file name was given, then any node is fair game. ;; If a file name was given, then any node is fair game.
((string-match "\\`(" string) ((string-match "\\`(" string)
@ -1413,6 +1451,10 @@ If FORK is a string, it is the name to use for the new buffer."
(t (t
(test-completion string Info-read-node-completion-table predicate)))) (test-completion string Info-read-node-completion-table predicate))))
;; Arrange to highlight the proper letters in the completion list buffer.
(put 'Info-read-node-name-1 'completion-base-size-function
(lambda () 1))
(defun Info-read-node-name (prompt &optional default) (defun Info-read-node-name (prompt &optional default)
(let* ((completion-ignore-case t) (let* ((completion-ignore-case t)
(Info-read-node-completion-table (Info-build-node-completions)) (Info-read-node-completion-table (Info-build-node-completions))
@ -3483,7 +3525,7 @@ the variable `Info-file-list-for-emacs'."
(Info-goto-emacs-command-node command))))) (Info-goto-emacs-command-node command)))))
(defface Info-title-1-face (defface Info-title-1-face
'((((type tty pc) (class color)) :foreground "yellow" :weight bold) '((((type tty pc) (class color)) :foreground "green" :weight bold)
(t :height 1.2 :inherit Info-title-2-face)) (t :height 1.2 :inherit Info-title-2-face))
"Face for Info titles at level 1." "Face for Info titles at level 1."
:group 'info) :group 'info)

View file

@ -791,6 +791,7 @@ Optional arg BUFFER is ignored (for use in `format-alist')."
("&iuml;" "ï") ("&iuml;" "ï")
("&eth;" "ð") ("&eth;" "ð")
("&ntilde;" "ñ") ("&ntilde;" "ñ")
("&nbsp;" "<EFBFBD>")
("&ograve;" "ò") ("&ograve;" "ò")
("&oacute;" "ó") ("&oacute;" "ó")
("&ocirc;" "ô") ("&ocirc;" "ô")

View file

@ -47,7 +47,7 @@
;; like this ;; like this
;; (add-to-list 'file-coding-system-alist ;; (add-to-list 'file-coding-system-alist
;; '("\\.tex\\|\\.ltx\\|\\.dtx\\|\\.drv\\'" . latexenc-find-file-coding-system)) ;; '("\\.\\(tex\\|ltx\\|dtx\\|drv\\)\\'" . latexenc-find-file-coding-system))
;;; Code: ;;; Code:
@ -159,10 +159,11 @@ coding system names is determined from `latex-inputenc-coding-alist'."
(setq latexenc-main-file (concat file ext))))))) (setq latexenc-main-file (concat file ext)))))))
;; try tex-modes tex-guess-main-file ;; try tex-modes tex-guess-main-file
(when (and (not latexenc-dont-use-tex-guess-main-file-flag) (when (and (not latexenc-dont-use-tex-guess-main-file-flag)
(not latexenc-main-file) (not latexenc-main-file))
(fboundp 'tex-guess-main-file)) ;; Use a separate `when' so the byte-compiler sees the fboundp.
(let ((tex-start-of-header "\\\\document\\(style\\|class\\)")) (when (fboundp 'tex-guess-main-file)
(setq latexenc-main-file (tex-guess-main-file)))) (let ((tex-start-of-header "\\\\document\\(style\\|class\\)"))
(setq latexenc-main-file (tex-guess-main-file)))))
;; if we found a master/main file get the coding system from it ;; if we found a master/main file get the coding system from it
(if (and latexenc-main-file (if (and latexenc-main-file
(file-readable-p latexenc-main-file)) (file-readable-p latexenc-main-file))

View file

@ -151,7 +151,7 @@ It's purpose is to pass different call arguments to
(switch-to-buffer buf) (switch-to-buffer buf)
(if isearchb-show-completions (if isearchb-show-completions
(message "isearchb: %s%s" iswitchb-text (message "isearchb: %s%s" iswitchb-text
(iswitchb-completions iswitchb-text nil)) (iswitchb-completions iswitchb-text))
(if (= 1 (length iswitchb-matches)) (if (= 1 (length iswitchb-matches))
(message "isearchb: %s (only match)" iswitchb-text) (message "isearchb: %s (only match)" iswitchb-text)
(message "isearchb: %s" iswitchb-text)))))) (message "isearchb: %s" iswitchb-text))))))

View file

@ -404,21 +404,21 @@ iswitchb is running."
:type 'hook :type 'hook
:group 'iswitchb) :group 'iswitchb)
(defface iswitchb-single-match-face (defface iswitchb-single-match
'((t '((t
(:inherit font-lock-comment-face))) (:inherit font-lock-comment-face)))
"Iswitchb face for single matching buffer name." "Iswitchb face for single matching buffer name."
:version "22.1" :version "22.1"
:group 'iswitchb) :group 'iswitchb)
(defface iswitchb-current-match-face (defface iswitchb-current-match
'((t '((t
(:inherit font-lock-function-name-face))) (:inherit font-lock-function-name-face)))
"Iswitchb face for current matching buffer name." "Iswitchb face for current matching buffer name."
:version "22.1" :version "22.1"
:group 'iswitchb) :group 'iswitchb)
(defface iswitchb-virtual-matches-face (defface iswitchb-virtual-matches
'((t '((t
(:inherit font-lock-builtin-face))) (:inherit font-lock-builtin-face)))
"Iswitchb face for matching virtual buffer names. "Iswitchb face for matching virtual buffer names.
@ -426,7 +426,7 @@ See also `iswitchb-use-virtual-buffers'."
:version "22.1" :version "22.1"
:group 'iswitchb) :group 'iswitchb)
(defface iswitchb-invalid-regexp-face (defface iswitchb-invalid-regexp
'((t '((t
(:inherit font-lock-warning-face))) (:inherit font-lock-warning-face)))
"Iswitchb face for indicating invalid regexp. " "Iswitchb face for indicating invalid regexp. "
@ -1299,9 +1299,9 @@ Modified from `icomplete-completions'."
(put-text-property 0 (length first) 'face (put-text-property 0 (length first) 'face
(if (= (length comps) 1) (if (= (length comps) 1)
(if iswitchb-invalid-regexp (if iswitchb-invalid-regexp
'iswitchb-invalid-regexp-face 'iswitchb-invalid-regexp
'iswitchb-single-match-face) 'iswitchb-single-match)
'iswitchb-current-match-face) 'iswitchb-current-match)
first) first)
(setq comps (cons first (cdr comps))))) (setq comps (cons first (cdr comps)))))
@ -1330,7 +1330,7 @@ Modified from `icomplete-completions'."
(let ((comp comps)) (let ((comp comps))
(while comp (while comp
(put-text-property 0 (length (car comp)) (put-text-property 0 (length (car comp))
'face 'iswitchb-virtual-matches-face 'face 'iswitchb-virtual-matches
(car comp)) (car comp))
(setq comp (cdr comp)))))) (setq comp (cdr comp))))))

View file

@ -720,6 +720,7 @@ the list should be unique."
(sc-mail-warn-if-non-rfc822-p (sc-mail-error-in-mail-field)) (sc-mail-warn-if-non-rfc822-p (sc-mail-error-in-mail-field))
(end (setq sc-mail-headers-end (point)))) (end (setq sc-mail-headers-end (point))))
"Regi frame for glomming mail header information.") "Regi frame for glomming mail header information.")
(put 'sc-mail-glom-frame 'risky-local-variable t)
(defvar curline) ; dynamic bondage (defvar curline) ; dynamic bondage

View file

@ -6434,7 +6434,8 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(pr-update-menus t) ;;; Files are not supposed to change Emacs behavior when you merely load them.
;;; (pr-update-menus t)
(provide 'printing) (provide 'printing)

View file

@ -935,6 +935,7 @@ Returns the compilation buffer created."
(substitute-env-vars (match-string 1 command)) (substitute-env-vars (match-string 1 command))
"~") "~")
default-directory)) default-directory))
(erase-buffer)
;; Select the desired mode. ;; Select the desired mode.
(if (not (eq mode t)) (if (not (eq mode t))
(funcall mode) (funcall mode)
@ -944,11 +945,11 @@ Returns the compilation buffer created."
(if highlight-regexp (if highlight-regexp
(set (make-local-variable 'compilation-highlight-regexp) (set (make-local-variable 'compilation-highlight-regexp)
highlight-regexp)) highlight-regexp))
(erase-buffer)
;; Output a mode setter, for saving and later reloading this buffer. ;; Output a mode setter, for saving and later reloading this buffer.
(insert "-*- mode: " name-of-mode (insert "-*- mode: " name-of-mode
"; default-directory: " (prin1-to-string default-directory) "; default-directory: " (prin1-to-string default-directory)
" -*-\n" command "\n") (setq thisdir default-directory)) " -*-\n" command "\n")
(setq thisdir default-directory))
(set-buffer-modified-p nil)) (set-buffer-modified-p nil))
;; If we're already in the compilation buffer, go to the end ;; If we're already in the compilation buffer, go to the end
;; of the buffer, so point will track the compilation output. ;; of the buffer, so point will track the compilation output.

View file

@ -115,9 +115,8 @@
:version "22.1") :version "22.1")
(defface makefile-shell-face (defface makefile-shell-face
'((((class color) (background light)) (:background "seashell1")) '((((class color) (min-colors 88) (background light)) (:background "seashell1"))
(((class color) (background dark)) (:background "seashell4")) (((class color) (min-colors 88) (background dark)) (:background "seashell4")))
(t (:reverse-video t)))
"Face to use for additionally highlighting Shell commands in Font-Lock mode." "Face to use for additionally highlighting Shell commands in Font-Lock mode."
:group 'faces :group 'faces
:group 'makefile :group 'makefile
@ -262,7 +261,7 @@ not be enclosed in { } or ( )."
;; index in makefile-imenu-generic-expression. ;; index in makefile-imenu-generic-expression.
(defvar makefile-dependency-regex (defvar makefile-dependency-regex
;; Allow for two nested levels $(v1:$(v2:$(v3:a=b)=c)=d) ;; Allow for two nested levels $(v1:$(v2:$(v3:a=b)=c)=d)
"^ *\\(\\(?: *\\$\\(?:[({]\\(?:\\$\\(?:[({]\\(?:\\$\\(?:[^({]\\|.[^\n$#})]+?[})]\\)\\|[^\n$#)}]\\)+?[})]\\|[^({]\\)\\|[^\n$#)}]\\)+?[})]\\|[^({]\\)\\| *[^ \n$#:=]+\\)+?\\)[ \t]*\\(:\\)\\(?:[ \t]*$\\|[^=\n]\\(?:[^#\n]*?;[ \t]*\\(.+\\)\\)?\\)" "^\\(\\(?:\\$\\(?:[({]\\(?:\\$\\(?:[({]\\(?:\\$\\(?:[^({]\\|.[^\n$#})]+?[})]\\)\\|[^\n$#)}]\\)+?[})]\\|[^({]\\)\\|[^\n$#)}]\\)+?[})]\\|[^({]\\)\\|[^\n$#:=]\\)+?\\)\\(:\\)\\(?:[ \t]*$\\|[^=\n]\\(?:[^#\n]*?;[ \t]*\\(.+\\)\\)?\\)"
"Regex used to find dependency lines in a makefile.") "Regex used to find dependency lines in a makefile.")
(defconst makefile-bsdmake-dependency-regex (defconst makefile-bsdmake-dependency-regex
@ -291,7 +290,7 @@ not be enclosed in { } or ( )."
;; that if you change this regexp you might have to fix the imenu index in ;; that if you change this regexp you might have to fix the imenu index in
;; makefile-imenu-generic-expression. ;; makefile-imenu-generic-expression.
(defconst makefile-macroassign-regex (defconst makefile-macroassign-regex
"^ *\\([^ \n\t][^:#= \t\n]*\\)[ \t]*\\(?:!=[ \t]*\\(\\(?:.+\\\\\n\\)*.+\\)\\|[*:+]?[:?]?=[ \t]*\\(\\(?:.*\\\\\n\\)*.*\\)\\)" "^ *\\([^ \n\t][^:#= \t\n]*\\)[ \t]*\\(?:!=\\|[*:+]?[:?]?=\\)"
"Regex used to find macro assignment lines in a makefile.") "Regex used to find macro assignment lines in a makefile.")
(defconst makefile-var-use-regex (defconst makefile-var-use-regex
@ -1704,6 +1703,19 @@ matched in a rule action."
(when (save-excursion (when (save-excursion
(beginning-of-line) (beginning-of-line)
(looking-at makefile-dependency-regex)) (looking-at makefile-dependency-regex))
(save-excursion
(let ((deps-end (match-end 1))
(match-data (match-data)))
(goto-char deps-end)
(skip-chars-backward " \t")
(setq deps-end (point))
(beginning-of-line)
(skip-chars-forward " \t")
;; Alter the bounds recorded for subexp 1,
;; which is what is supposed to match the targets.
(setcar (nthcdr 2 match-data) (point))
(setcar (nthcdr 3 match-data) deps-end)
(store-match-data match-data)))
(end-of-line) (end-of-line)
(throw 'found (point))))) (throw 'found (point)))))
(goto-char pt)) (goto-char pt))

View file

@ -3019,7 +3019,7 @@ Valid values are:
NUMBER It's a real value between 0.0 (black) and 1.0 (white) that NUMBER It's a real value between 0.0 (black) and 1.0 (white) that
indicate the gray color. indicate the gray color.
COLOR-NAME It's a string wich contains the color name. For example: COLOR-NAME It's a string which contains the color name. For example:
\"yellow\". \"yellow\".
LIST It's a list of RGB values, that is a list of three real values LIST It's a list of RGB values, that is a list of three real values
@ -3059,7 +3059,7 @@ Valid values are:
NUMBER It's a real value between 0.0 (black) and 1.0 (white) that NUMBER It's a real value between 0.0 (black) and 1.0 (white) that
indicate the gray color. indicate the gray color.
COLOR-NAME It's a string wich contains the color name. For example: COLOR-NAME It's a string which contains the color name. For example:
\"yellow\". \"yellow\".
LIST It's a list of RGB values, that is a list of three real values LIST It's a list of RGB values, that is a list of three real values
@ -6119,7 +6119,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
(if (and (boundp 'ucs-mule-8859-to-mule-unicode) (if (and (boundp 'ucs-mule-8859-to-mule-unicode)
(char-table-p ucs-mule-8859-to-mule-unicode)) (char-table-p ucs-mule-8859-to-mule-unicode))
(map-char-table (map-char-table
#'(lambda (k v) #'(lambda (k v)
(if (and v (eq (char-charset v) 'latin-iso8859-1) (/= k v)) (if (and v (eq (char-charset v) 'latin-iso8859-1) (/= k v))
(aset tbl k v))) (aset tbl k v)))
ucs-mule-8859-to-mule-unicode)) ucs-mule-8859-to-mule-unicode))

View file

@ -217,7 +217,7 @@ Fourth and fifth arg START and END specify the region to operate on.
To customize possible responses, change the \"bindings\" in `query-replace-map'." To customize possible responses, change the \"bindings\" in `query-replace-map'."
(interactive (let ((common (interactive (let ((common
(query-replace-read-args (query-replace-read-args
(if (and transient-mark-mode mark-active) (if (and transient-mark-mode mark-active)
"Query replace in region" "Query replace in region"
"Query replace") "Query replace")
@ -281,7 +281,7 @@ text, TO-STRING is actually made a list instead of a string.
Use \\[repeat-complex-command] after this command for details." Use \\[repeat-complex-command] after this command for details."
(interactive (interactive
(let ((common (let ((common
(query-replace-read-args (query-replace-read-args
(if (and transient-mark-mode mark-active) (if (and transient-mark-mode mark-active)
"Query replace regexp in region" "Query replace regexp in region"
"Query replace regexp") "Query replace regexp")
@ -431,7 +431,7 @@ which will run faster and will not set the mark or print anything.
and TO-STRING is also null.)" and TO-STRING is also null.)"
(interactive (interactive
(let ((common (let ((common
(query-replace-read-args (query-replace-read-args
(if (and transient-mark-mode mark-active) (if (and transient-mark-mode mark-active)
"Replace string in region" "Replace string in region"
"Replace string") "Replace string")
@ -489,10 +489,10 @@ What you probably want is a loop like this:
which will run faster and will not set the mark or print anything." which will run faster and will not set the mark or print anything."
(interactive (interactive
(let ((common (let ((common
(query-replace-read-args (query-replace-read-args
(if (and transient-mark-mode mark-active) (if (and transient-mark-mode mark-active)
"Replace regexp in region" "Replace regexp in region"
"Replace regexp") "Replace regexp")
t))) t)))
(list (nth 0 common) (nth 1 common) (nth 2 common) (list (nth 0 common) (nth 1 common) (nth 2 common)
(if (and transient-mark-mode mark-active) (if (and transient-mark-mode mark-active)
@ -1268,12 +1268,7 @@ but coerced to the correct value of INTEGERS."
(and (eq new reuse) (and (eq new reuse)
(eq (null integers) (markerp (car reuse))) (eq (null integers) (markerp (car reuse)))
new))) new)))
(match-data integers (match-data integers reuse t)))
(prog1 reuse
(while reuse
(if (markerp (car reuse))
(set-marker (car reuse) nil))
(setq reuse (cdr reuse)))))))
(defun replace-match-maybe-edit (newtext fixedcase literal noedit match-data) (defun replace-match-maybe-edit (newtext fixedcase literal noedit match-data)
"Make a replacement with `replace-match', editing `\\?'. "Make a replacement with `replace-match', editing `\\?'.

View file

@ -113,10 +113,7 @@ system, `file-name-shadow-properties' is used instead."
:group 'minibuffer) :group 'minibuffer)
(defface file-name-shadow (defface file-name-shadow
'((((background dark)) '((t :inherit shadow))
:foreground "grey50")
(t
:foreground "grey70"))
"Face used by `file-name-shadow-mode' for the shadow." "Face used by `file-name-shadow-mode' for the shadow."
:group 'minibuffer) :group 'minibuffer)

View file

@ -3342,10 +3342,15 @@ Outline mode sets this."
(or (memq prop buffer-invisibility-spec) (or (memq prop buffer-invisibility-spec)
(assq prop buffer-invisibility-spec))))) (assq prop buffer-invisibility-spec)))))
;; Perform vertical scrolling of tall images if necessary. ;; This is like line-move-1 except that it also performs
;; Don't vscroll in a keyboard macro. ;; vertical scrolling of tall images if appropriate.
;; That is not really a clean thing to do, since it mixes
;; scrolling with cursor motion. But so far we don't have
;; a cleaner solution to the problem of making C-n do something
;; useful given a tall image.
(defun line-move (arg &optional noerror to-end try-vscroll) (defun line-move (arg &optional noerror to-end try-vscroll)
(if (and auto-window-vscroll try-vscroll (if (and auto-window-vscroll try-vscroll
;; But don't vscroll in a keyboard macro.
(not defining-kbd-macro) (not defining-kbd-macro)
(not executing-kbd-macro)) (not executing-kbd-macro))
(let ((forward (> arg 0)) (let ((forward (> arg 0))
@ -3368,6 +3373,8 @@ Outline mode sets this."
;; Update display before calling pos-visible-in-window-p, ;; Update display before calling pos-visible-in-window-p,
;; because it depends on window-start being up-to-date. ;; because it depends on window-start being up-to-date.
(sit-for 0) (sit-for 0)
;; If the current line is partly hidden at the bottom,
;; scroll it partially up so as to unhide the bottom.
(if (and (setq part (nth 2 (pos-visible-in-window-p (if (and (setq part (nth 2 (pos-visible-in-window-p
(line-beginning-position) nil t))) (line-beginning-position) nil t)))
(> (cdr part) 0)) (> (cdr part) 0))
@ -4833,7 +4840,11 @@ of the differing parts is, by contrast, slightly highlighted."
(- (point) (minibuffer-prompt-end))))) (- (point) (minibuffer-prompt-end)))))
;; Otherwise, in minibuffer, the whole input is being completed. ;; Otherwise, in minibuffer, the whole input is being completed.
(if (minibufferp mainbuf) (if (minibufferp mainbuf)
(setq completion-base-size 0))) (if (and (symbolp minibuffer-completion-table)
(get minibuffer-completion-table 'completion-base-size-function))
(setq completion-base-size
(funcall (get minibuffer-completion-table 'completion-base-size-function)))
(setq completion-base-size 0))))
;; Put faces on first uncommon characters and common parts. ;; Put faces on first uncommon characters and common parts.
(when completion-base-size (when completion-base-size
(let* ((common-string-length (let* ((common-string-length

View file

@ -1970,7 +1970,7 @@ The value returned is the value of the last form in BODY."
'((save-match-data-internal (match-data))) '((save-match-data-internal (match-data)))
(list 'unwind-protect (list 'unwind-protect
(cons 'progn body) (cons 'progn body)
'(set-match-data save-match-data-internal)))) '(set-match-data save-match-data-internal 'evaporate))))
(defun match-string (num &optional string) (defun match-string (num &optional string)
"Return string of text matched by last search. "Return string of text matched by last search.

View file

@ -228,7 +228,6 @@ http://strw.leidenuniv.nl/~dominik/Tools"
:version "21.1" :version "21.1"
:type 'boolean) :type 'boolean)
;;;###autoload
(defcustom flyspell-mode-line-string " Fly" (defcustom flyspell-mode-line-string " Fly"
"*String displayed on the modeline when flyspell is active. "*String displayed on the modeline when flyspell is active.
Set this to nil if you don't want a modeline indicator." Set this to nil if you don't want a modeline indicator."
@ -268,11 +267,7 @@ If `flyspell-large-region' is nil, all regions are treated as small."
:type 'boolean) :type 'boolean)
(defcustom flyspell-auto-correct-binding (defcustom flyspell-auto-correct-binding
(cond [(control ?\;)]
((eq flyspell-emacs 'xemacs)
[(control \;)])
(t
[?\C-\;]))
"The key binding for flyspell auto correction." "The key binding for flyspell auto correction."
:group 'flyspell) :group 'flyspell)
@ -410,10 +405,6 @@ property of the major mode name.")
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
(eval-when-compile (defvar flyspell-local-mouse-map)) (eval-when-compile (defvar flyspell-local-mouse-map))
;;;###autoload
(defvar flyspell-mode nil)
(make-variable-buffer-local 'flyspell-mode)
(defvar flyspell-mouse-map (defvar flyspell-mouse-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(if flyspell-use-meta-tab (if flyspell-use-meta-tab
@ -425,26 +416,18 @@ property of the major mode name.")
(define-key map [(control \.)] 'flyspell-auto-correct-word) (define-key map [(control \.)] 'flyspell-auto-correct-word)
map)) map))
;;;###autoload (defvar flyspell-mode-map
(defvar flyspell-mode-map (make-sparse-keymap)) (let ((map (make-sparse-keymap)))
;; mouse, keyboard bindings and misc definition
;; mouse, keyboard bindings and misc definition (if flyspell-use-meta-tab
(when (or (assoc 'flyspell-mode minor-mode-map-alist) (define-key map "\M-\t" 'flyspell-auto-correct-word))
(setq minor-mode-map-alist (cond
(cons (cons 'flyspell-mode flyspell-mode-map) ;; I don't understand this test, so I left it as is. --Stef
minor-mode-map-alist))) ((or (featurep 'xemacs) flyspell-use-local-map)
(if flyspell-use-meta-tab (define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
(define-key flyspell-mode-map "\M-\t" 'flyspell-auto-correct-word)) (define-key map [(control ?\,)] 'flyspell-goto-next-error)
(cond (define-key map [(control ?\.)] 'flyspell-auto-correct-word)))
((eq flyspell-emacs 'xemacs) map))
(define-key flyspell-mode-map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
(define-key flyspell-mode-map [(control \,)] 'flyspell-goto-next-error)
(define-key flyspell-mode-map [(control \.)] 'flyspell-auto-correct-word))
(flyspell-use-local-map
(define-key flyspell-mode-map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
(define-key flyspell-mode-map [?\C-\,] 'flyspell-goto-next-error)
(define-key flyspell-mode-map [?\C-\.] 'flyspell-auto-correct-word))))
;; the name of the overlay property that defines the keymap ;; the name of the overlay property that defines the keymap
(defvar flyspell-overlay-keymap-property-name 'keymap) (defvar flyspell-overlay-keymap-property-name 'keymap)
@ -462,20 +445,14 @@ property of the major mode name.")
;* Highlighting */ ;* Highlighting */
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
(defface flyspell-incorrect-face (defface flyspell-incorrect-face
(if (eq flyspell-emacs 'xemacs) '((((class color)) (:foreground "OrangeRed" :bold t :underline t))
'((((class color)) (:foreground "OrangeRed" :bold t :underline t)) (t (:bold t)))
(t (:bold t)))
'((((class color)) (:foreground "OrangeRed" :weight bold :underline t))
(t (:weight bold))))
"Face used for marking a misspelled word in Flyspell." "Face used for marking a misspelled word in Flyspell."
:group 'flyspell) :group 'flyspell)
(defface flyspell-duplicate-face (defface flyspell-duplicate-face
(if (eq flyspell-emacs 'xemacs) '((((class color)) (:foreground "Gold3" :bold t :underline t))
'((((class color)) (:foreground "Gold3" :bold t :underline t)) (t (:bold t)))
(t (:bold t)))
'((((class color)) (:foreground "Gold3" :weight bold :underline t))
(t (:weight bold))))
"Face used for marking a misspelled word that appears twice in the buffer. "Face used for marking a misspelled word that appears twice in the buffer.
See also `flyspell-duplicate-distance'." See also `flyspell-duplicate-distance'."
:group 'flyspell) :group 'flyspell)
@ -486,7 +463,7 @@ See also `flyspell-duplicate-distance'."
;* flyspell-mode ... */ ;* flyspell-mode ... */
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
;;;###autoload ;;;###autoload
(defun flyspell-mode (&optional arg) (define-minor-mode flyspell-mode
"Minor mode performing on-the-fly spelling checking. "Minor mode performing on-the-fly spelling checking.
This spawns a single Ispell process and checks each word. This spawns a single Ispell process and checks each word.
The default flyspell behavior is to highlight incorrect words. The default flyspell behavior is to highlight incorrect words.
@ -514,28 +491,12 @@ in your .emacs file.
\\[flyspell-region] checks all words inside a region. \\[flyspell-region] checks all words inside a region.
\\[flyspell-buffer] checks the whole buffer." \\[flyspell-buffer] checks the whole buffer."
(interactive "P") :lighter flyspell-mode-line-string
(let ((old-flyspell-mode flyspell-mode)) :keymap flyspell-mode-map
;; Mark the mode as on or off. :group 'flyspell
(setq flyspell-mode (not (or (and (null arg) flyspell-mode) (if flyspell-mode
(<= (prefix-numeric-value arg) 0)))) (flyspell-mode-on)
;; Do the real work. (flyspell-mode-off)))
(unless (eq flyspell-mode old-flyspell-mode)
(if flyspell-mode
(flyspell-mode-on)
(flyspell-mode-off))
;; Force modeline redisplay.
(set-buffer-modified-p (buffer-modified-p)))))
;*---------------------------------------------------------------------*/
;* Autoloading */
;*---------------------------------------------------------------------*/
;;;###autoload
(add-minor-mode 'flyspell-mode
'flyspell-mode-line-string
flyspell-mode-map
nil
'flyspell-mode)
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
;* flyspell-buffers ... */ ;* flyspell-buffers ... */
@ -1057,8 +1018,7 @@ Mostly we check word delimiters."
(cond (cond
((and (or (not (eq ispell-parser 'tex)) ((and (or (not (eq ispell-parser 'tex))
(and (> start (point-min)) (and (> start (point-min))
(not (eq (char-after (1- start)) ?})) (not (memq (char-after (1- start)) '(?\} ?\\)))))
(not (eq (char-after (1- start)) ?\\))))
flyspell-mark-duplications-flag flyspell-mark-duplications-flag
(save-excursion (save-excursion
(goto-char (1- start)) (goto-char (1- start))
@ -1181,20 +1141,21 @@ Mostly we check word delimiters."
;* time that function is called. */ ;* time that function is called. */
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
(defun flyspell-math-tex-command-p () (defun flyspell-math-tex-command-p ()
(cond (when (fboundp 'texmathp)
(flyspell-check-tex-math-command (cond
nil) (flyspell-check-tex-math-command
((eq flyspell-tex-math-initialized t) nil)
(texmathp)) ((eq flyspell-tex-math-initialized t)
((eq flyspell-tex-math-initialized 'error) (texmathp))
nil) ((eq flyspell-tex-math-initialized 'error)
(t nil)
(setq flyspell-tex-math-initialized t) (t
(condition-case nil (setq flyspell-tex-math-initialized t)
(texmathp) (condition-case nil
(error (progn (texmathp)
(setq flyspell-tex-math-initialized 'error) (error (progn
nil)))))) (setq flyspell-tex-math-initialized 'error)
nil)))))))
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
;* flyspell-tex-command-p ... */ ;* flyspell-tex-command-p ... */
@ -1381,9 +1342,7 @@ Word syntax described by `flyspell-dictionary-alist' (which see)."
(let ((buffer flyspell-external-ispell-buffer)) (let ((buffer flyspell-external-ispell-buffer))
(set-buffer buffer) (set-buffer buffer)
(goto-char (point-min)) (goto-char (point-min))
(let ((size (- flyspell-large-region-end flyspell-large-region-beg)) (let ((pword "")
(start flyspell-large-region-beg)
(pword "")
(pcount 1)) (pcount 1))
;; now we are done with ispell, we have to find the word in ;; now we are done with ispell, we have to find the word in
;; the initial buffer ;; the initial buffer
@ -1954,7 +1913,7 @@ The word checked is the word at the mouse position."
(let ((start (car (cdr word))) (let ((start (car (cdr word)))
(end (car (cdr (cdr word)))) (end (car (cdr (cdr word))))
(word (car word)) (word (car word))
poss replace) poss)
;; now check spelling of word. ;; now check spelling of word.
(process-send-string ispell-process "%\n") ;put in verbose mode (process-send-string ispell-process "%\n") ;put in verbose mode
(process-send-string ispell-process (concat "^" word "\n")) (process-send-string ispell-process (concat "^" word "\n"))
@ -1972,89 +1931,65 @@ The word checked is the word at the mouse position."
((null poss) ((null poss)
;; ispell error ;; ispell error
(error "Ispell: error in Ispell process")) (error "Ispell: error in Ispell process"))
((string-match "GNU" (emacs-version)) ((featurep 'xemacs)
;; the word is incorrect, we have to propose a replacement
(setq replace (flyspell-emacs-popup event poss word))
(cond ((eq replace 'ignore)
(goto-char save)
nil)
((eq replace 'save)
(goto-char save)
(process-send-string ispell-process
(concat "*" word "\n"))
(flyspell-unhighlight-at cursor-location)
(setq ispell-pdict-modified-p '(t)))
((or (eq replace 'buffer) (eq replace 'session))
(process-send-string ispell-process
(concat "@" word "\n"))
(if (null ispell-pdict-modified-p)
(setq ispell-pdict-modified-p
(list ispell-pdict-modified-p)))
(flyspell-unhighlight-at cursor-location)
(goto-char save)
(if (eq replace 'buffer)
(ispell-add-per-file-word-list word)))
(replace
(flyspell-unhighlight-at cursor-location)
(let ((new-word (if (atom replace)
replace
(car replace)))
(cursor-location
(+ (- (length word) (- end start))
cursor-location)))
(if (not (equal new-word (car poss)))
(let ((old-max (point-max)))
(delete-region start end)
(funcall flyspell-insert-function new-word)
(if flyspell-abbrev-p
(flyspell-define-abbrev word new-word))
(flyspell-ajust-cursor-point save
cursor-location
old-max)))))
(t
(goto-char save)
nil)))
((eq flyspell-emacs 'xemacs)
(flyspell-xemacs-popup (flyspell-xemacs-popup
event poss word cursor-location start end save) event poss word cursor-location start end save))
(goto-char save))) (t
;; The word is incorrect, we have to propose a replacement.
(flyspell-do-correct (flyspell-emacs-popup event poss word)
poss word cursor-location start end save)))
(ispell-pdict-save t)))))) (ispell-pdict-save t))))))
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
;* flyspell-xemacs-correct ... */ ;* flyspell-do-correct ... */
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
(defun flyspell-xemacs-correct (replace poss word cursor-location start end save) (defun flyspell-do-correct (replace poss word cursor-location start end save)
"The xemacs popup menu callback." "The popup menu callback."
;; Originally, the XEmacs code didn't do the (goto-char save) here and did
;; it instead right after calling the function.
(cond ((eq replace 'ignore) (cond ((eq replace 'ignore)
(goto-char save)
nil) nil)
((eq replace 'save) ((eq replace 'save)
(process-send-string ispell-process (concat "*" word "\n")) (goto-char save)
(process-send-string ispell-process "#\n") (ispell-send-string (concat "*" word "\n"))
;; This was added only to the XEmacs side in revision 1.18 of
;; flyspell. I assume its absence on the Emacs side was an
;; oversight. --Stef
(ispell-send-string "#\n")
(flyspell-unhighlight-at cursor-location) (flyspell-unhighlight-at cursor-location)
(setq ispell-pdict-modified-p '(t))) (setq ispell-pdict-modified-p '(t)))
((or (eq replace 'buffer) (eq replace 'session)) ((or (eq replace 'buffer) (eq replace 'session))
(process-send-string ispell-process (concat "@" word "\n")) (ispell-send-string (concat "@" word "\n"))
(flyspell-unhighlight-at cursor-location) (flyspell-unhighlight-at cursor-location)
(if (null ispell-pdict-modified-p) (if (null ispell-pdict-modified-p)
(setq ispell-pdict-modified-p (setq ispell-pdict-modified-p
(list ispell-pdict-modified-p))) (list ispell-pdict-modified-p)))
(goto-char save)
(if (eq replace 'buffer) (if (eq replace 'buffer)
(ispell-add-per-file-word-list word))) (ispell-add-per-file-word-list word)))
(replace (replace
;; This was added only to the Emacs side. I assume its absence on
;; the XEmacs side was an oversight. --Stef
(flyspell-unhighlight-at cursor-location)
(let ((old-max (point-max)) (let ((old-max (point-max))
(new-word (if (atom replace) (new-word (if (atom replace)
replace replace
(car replace))) (car replace)))
(cursor-location (+ (- (length word) (- end start)) (cursor-location (+ (- (length word) (- end start))
cursor-location))) cursor-location)))
(if (not (equal new-word (car poss))) (unless (equal new-word (car poss))
(progn (delete-region start end)
(delete-region start end) (goto-char start)
(goto-char start) (funcall flyspell-insert-function new-word)
(funcall flyspell-insert-function new-word) (if flyspell-abbrev-p
(if flyspell-abbrev-p (flyspell-define-abbrev word new-word)))
(flyspell-define-abbrev word new-word)))) ;; In the original Emacs code, this was only called in the body
(flyspell-ajust-cursor-point save cursor-location old-max))))) ;; of the if. I arbitrarily kept the XEmacs behavior instead.
(flyspell-ajust-cursor-point save cursor-location old-max)))
(t
(goto-char save)
nil)))
;*---------------------------------------------------------------------*/ ;*---------------------------------------------------------------------*/
;* flyspell-ajust-cursor-point ... */ ;* flyspell-ajust-cursor-point ... */
@ -2123,7 +2058,7 @@ The word checked is the word at the mouse position."
(cor-menu (if (consp corrects) (cor-menu (if (consp corrects)
(mapcar (lambda (correct) (mapcar (lambda (correct)
(vector correct (vector correct
(list 'flyspell-xemacs-correct (list 'flyspell-do-correct
correct correct
(list 'quote poss) (list 'quote poss)
word word
@ -2138,7 +2073,7 @@ The word checked is the word at the mouse position."
(menu (let ((save (if (consp affix) (menu (let ((save (if (consp affix)
(vector (vector
(concat "Save affix: " (car affix)) (concat "Save affix: " (car affix))
(list 'flyspell-xemacs-correct (list 'flyspell-do-correct
''save ''save
(list 'quote poss) (list 'quote poss)
word word
@ -2149,7 +2084,7 @@ The word checked is the word at the mouse position."
t) t)
(vector (vector
"Save word" "Save word"
(list 'flyspell-xemacs-correct (list 'flyspell-do-correct
''save ''save
(list 'quote poss) (list 'quote poss)
word word
@ -2159,7 +2094,7 @@ The word checked is the word at the mouse position."
save) save)
t))) t)))
(session (vector "Accept (session)" (session (vector "Accept (session)"
(list 'flyspell-xemacs-correct (list 'flyspell-do-correct
''session ''session
(list 'quote poss) (list 'quote poss)
word word
@ -2169,7 +2104,7 @@ The word checked is the word at the mouse position."
save) save)
t)) t))
(buffer (vector "Accept (buffer)" (buffer (vector "Accept (buffer)"
(list 'flyspell-xemacs-correct (list 'flyspell-do-correct
''buffer ''buffer
(list 'quote poss) (list 'quote poss)
word word

View file

@ -796,19 +796,16 @@ Otherwise returns the library directory name, if that is defined."
nil t) nil t)
case-fold-search case-fold-search-val) case-fold-search case-fold-search-val)
(if (or (not status) ; major version mismatch (if (or (not status) ; major version mismatch
(< (car (read-from-string (buffer-substring-no-properties (< (car (read-from-string (match-string-no-properties 2)))
(match-beginning 2) (match-end 2))))
(car (cdr ispell-required-version)))) ; minor version mismatch (car (cdr ispell-required-version)))) ; minor version mismatch
(error "%s version 3 release %d.%d.%d or greater is required" (error "%s version 3 release %d.%d.%d or greater is required"
ispell-program-name (car ispell-required-version) ispell-program-name (car ispell-required-version)
(car (cdr ispell-required-version)) (car (cdr ispell-required-version))
(car (cdr (cdr ispell-required-version)))) (car (cdr (cdr ispell-required-version))))
;; check that it is the correct version. ;; check that it is the correct version.
(if (and (= (car (read-from-string (buffer-substring-no-properties (if (and (= (car (read-from-string (match-string-no-properties 2)))
(match-beginning 2)(match-end 2))))
(car (cdr ispell-required-version))) (car (cdr ispell-required-version)))
(< (car (read-from-string (buffer-substring-no-properties (< (car (read-from-string (match-string-no-properties 3)))
(match-beginning 3)(match-end 3))))
(car (cdr (cdr ispell-required-version))))) (car (cdr (cdr ispell-required-version)))))
(setq ispell-offset 0)) (setq ispell-offset 0))
;; Check to see if it's really aspell. ;; Check to see if it's really aspell.
@ -2537,9 +2534,7 @@ Return nil if spell session is quit,
(ispell-begin-skip-region-regexp) (ispell-begin-skip-region-regexp)
ispell-region-end t)) ispell-region-end t))
(progn (progn
(setq key (buffer-substring-no-properties (setq key (match-string-no-properties 0))
(car (match-data))
(car (cdr (match-data)))))
(set-marker skip-region-start (set-marker skip-region-start
(- (point) (length key))) (- (point) (length key)))
(goto-char rstart)) (goto-char rstart))
@ -3480,8 +3475,7 @@ Includes Latex/Nroff modes and extended character mode."
(search-forward ispell-parsing-keyword) (search-forward ispell-parsing-keyword)
(while (re-search-forward " *\\([^ \"]+\\)" end t) (while (re-search-forward " *\\([^ \"]+\\)" end t)
;; space separated definitions. ;; space separated definitions.
(setq string (downcase (buffer-substring-no-properties (setq string (downcase (match-string-no-properties 1)))
(match-beginning 1) (match-end 1))))
(cond ((and (string-match "latex-mode" string) (cond ((and (string-match "latex-mode" string)
(not (eq 'exclusive ispell-check-comments))) (not (eq 'exclusive ispell-check-comments)))
(ispell-send-string "+\n~tex\n")) (ispell-send-string "+\n~tex\n"))
@ -3514,8 +3508,7 @@ Both should not be used to define a buffer-local dictionary."
(setq end (save-excursion (end-of-line) (point))) (setq end (save-excursion (end-of-line) (point)))
(if (re-search-forward " *\\([^ \"]+\\)" end t) (if (re-search-forward " *\\([^ \"]+\\)" end t)
(setq ispell-local-dictionary (setq ispell-local-dictionary
(buffer-substring-no-properties (match-beginning 1) (match-string-no-properties 1))))))
(match-end 1)))))))
(goto-char (point-max)) (goto-char (point-max))
(if (search-backward ispell-pdict-keyword nil t) (if (search-backward ispell-pdict-keyword nil t)
(progn (progn
@ -3523,8 +3516,7 @@ Both should not be used to define a buffer-local dictionary."
(setq end (save-excursion (end-of-line) (point))) (setq end (save-excursion (end-of-line) (point)))
(if (re-search-forward " *\\([^ \"]+\\)" end t) (if (re-search-forward " *\\([^ \"]+\\)" end t)
(setq ispell-local-pdict (setq ispell-local-pdict
(buffer-substring-no-properties (match-beginning 1) (match-string-no-properties 1)))))))
(match-end 1))))))))
;; Reload if new personal dictionary defined. ;; Reload if new personal dictionary defined.
(if (and ispell-local-pdict (if (and ispell-local-pdict
(not (equal ispell-local-pdict ispell-personal-dictionary))) (not (equal ispell-local-pdict ispell-personal-dictionary)))
@ -3554,8 +3546,7 @@ Both should not be used to define a buffer-local dictionary."
;; buffer-local words separated by a space, and can contain ;; buffer-local words separated by a space, and can contain
;; any character other than a space. Not rigorous enough. ;; any character other than a space. Not rigorous enough.
(while (re-search-forward " *\\([^ ]+\\)" end t) (while (re-search-forward " *\\([^ ]+\\)" end t)
(setq string (buffer-substring-no-properties (match-beginning 1) (setq string (match-string-no-properties 1))
(match-end 1)))
;; This can fail when string contains a word with illegal chars. ;; This can fail when string contains a word with illegal chars.
;; Error handling needs to be added between ispell and emacs. ;; Error handling needs to be added between ispell and emacs.
(if (and (< 1 (length string)) (if (and (< 1 (length string))

View file

@ -154,8 +154,6 @@
(require 'outline) (require 'outline)
(require 'time-date) (require 'time-date)
(require 'easymenu) (require 'easymenu)
(or (fboundp 'run-mode-hooks)
(defalias 'run-mode-hooks 'run-hooks))
;;; Customization variables ;;; Customization variables
@ -384,6 +382,12 @@ or contain a special line
If the file does not specify a category, then file's base name If the file does not specify a category, then file's base name
is used instead.") is used instead.")
(defun org-run-mode-hooks (&rest hooks)
"Call `run-mode-hooks' if it is available; otherwise call `run-hooks'."
(if (fboundp 'run-mode-hooks)
(apply 'run-mode-hooks hooks)
(apply 'run-hooks hooks)))
(defun org-set-regexps-and-options () (defun org-set-regexps-and-options ()
"Precompute regular expressions for current buffer." "Precompute regular expressions for current buffer."
(when (eq major-mode 'org-mode) (when (eq major-mode 'org-mode)
@ -3118,7 +3122,7 @@ The following commands are available:
"--") "--")
(mapcar 'org-file-menu-entry org-agenda-files))) (mapcar 'org-file-menu-entry org-agenda-files)))
(org-agenda-set-mode-name) (org-agenda-set-mode-name)
(run-mode-hooks 'org-agenda-mode-hook)) (org-run-mode-hooks 'org-agenda-mode-hook))
(define-key org-agenda-mode-map [(tab)] 'org-agenda-goto) (define-key org-agenda-mode-map [(tab)] 'org-agenda-goto)
(define-key org-agenda-mode-map [(return)] 'org-agenda-switch-to) (define-key org-agenda-mode-map [(return)] 'org-agenda-switch-to)

View file

@ -795,7 +795,7 @@ Inherits `shell-mode-map' with a few additions.")
(regexp-opt '("documentstyle" "documentclass" (regexp-opt '("documentstyle" "documentclass"
"begin" "subsection" "section" "begin" "subsection" "section"
"part" "chapter" "newcommand" "part" "chapter" "newcommand"
"renewcommand") 'words) "renewcommand" "RequirePackage") 'words)
"\\|NeedsTeXFormat{LaTeX"))) "\\|NeedsTeXFormat{LaTeX")))
(if (and (looking-at (if (and (looking-at
"document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}") "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}")
@ -1639,9 +1639,12 @@ If NOT-ALL is non-nil, save the `.dvi' file."
" " (if (< 0 (length tex-start-commands)) " " (if (< 0 (length tex-start-commands))
(shell-quote-argument tex-start-commands)) " %f") (shell-quote-argument tex-start-commands)) " %f")
t "%r.dvi") t "%r.dvi")
("yap %r &" "%r.dvi")
("xdvi %r &" "%r.dvi") ("xdvi %r &" "%r.dvi")
("xpdf %r.pdf &" "%r.pdf")
("gv %r.ps &" "%r.ps")
("yap %r &" "%r.dvi")
("advi %r &" "%r.dvi") ("advi %r &" "%r.dvi")
("gv %r.pdf &" "%r.pdf")
("bibtex %r" "%r.aux" "%r.bbl") ("bibtex %r" "%r.aux" "%r.bbl")
("makeindex %r" "%r.idx" "%r.ind") ("makeindex %r" "%r.idx" "%r.ind")
("texindex %r.??") ("texindex %r.??")
@ -1649,9 +1652,6 @@ If NOT-ALL is non-nil, save the `.dvi' file."
("dvipdf %r" "%r.dvi" "%r.pdf") ("dvipdf %r" "%r.dvi" "%r.pdf")
("dvips -o %r.ps %r" "%r.dvi" "%r.ps") ("dvips -o %r.ps %r" "%r.dvi" "%r.ps")
("ps2pdf %r.ps" "%r.ps" "%r.pdf") ("ps2pdf %r.ps" "%r.ps" "%r.pdf")
("gv %r.ps &" "%r.ps")
("gv %r.pdf &" "%r.pdf")
("xpdf %r.pdf &" "%r.pdf")
("lpr %r.ps" "%r.ps")) ("lpr %r.ps" "%r.ps"))
"List of commands for `tex-compile'. "List of commands for `tex-compile'.
Each element should be of the form (FORMAT IN OUT) where Each element should be of the form (FORMAT IN OUT) where
@ -1830,8 +1830,7 @@ FILE is typically the output DVI or PDF file."
(push cmd cmds) (push cmd cmds)
(push (nth 1 cmd) unchanged-in)))) (push (nth 1 cmd) unchanged-in))))
;; If no command seems to be applicable, arbitrarily pick the first one. ;; If no command seems to be applicable, arbitrarily pick the first one.
(unless cmds (setq cmds (if cmds (nreverse cmds) (list (car tex-compile-commands))))
(setq cmds (list (car tex-compile-commands))))
;; Remove those commands whose input was considered stable for ;; Remove those commands whose input was considered stable for
;; some other command (typically if (t . "%.pdf") is inactive ;; some other command (typically if (t . "%.pdf") is inactive
;; then we're using pdflatex and the fact that the dvi file ;; then we're using pdflatex and the fact that the dvi file
@ -1841,7 +1840,7 @@ FILE is typically the output DVI or PDF file."
(unless (member (nth 1 cmd) unchanged-in) (unless (member (nth 1 cmd) unchanged-in)
(push cmd tmp))) (push cmd tmp)))
;; Only remove if there's something left. ;; Only remove if there's something left.
(if tmp (setq cmds tmp))) (if tmp (setq cmds (nreverse tmp))))
;; Remove commands whose input is not uptodate either. ;; Remove commands whose input is not uptodate either.
(let ((outs (delq nil (mapcar (lambda (x) (nth 2 x)) cmds))) (let ((outs (delq nil (mapcar (lambda (x) (nth 2 x)) cmds)))
(tmp nil)) (tmp nil))
@ -1849,7 +1848,7 @@ FILE is typically the output DVI or PDF file."
(unless (member (nth 1 cmd) outs) (unless (member (nth 1 cmd) outs)
(push cmd tmp))) (push cmd tmp)))
;; Only remove if there's something left. ;; Only remove if there's something left.
(if tmp (setq cmds tmp))) (if tmp (setq cmds (nreverse tmp))))
;; Select which file we're going to operate on (the latest). ;; Select which file we're going to operate on (the latest).
(let ((latest (nth 1 (car cmds)))) (let ((latest (nth 1 (car cmds))))
(dolist (cmd (prog1 (cdr cmds) (setq cmds (list (car cmds))))) (dolist (cmd (prog1 (cdr cmds) (setq cmds (list (car cmds)))))

View file

@ -65,8 +65,7 @@
:version "22.1" :version "22.1"
:group 'multimedia) :group 'multimedia)
(defcustom thumbs-thumbsdir (defcustom thumbs-thumbsdir "~/.emacs-thumbs"
(expand-file-name "~/.emacs-thumbs")
"*Directory to store thumbnails." "*Directory to store thumbnails."
:type 'directory :type 'directory
:group 'thumbs) :group 'thumbs)
@ -83,12 +82,12 @@
(defcustom thumbs-thumbsdir-max-size 50000000 (defcustom thumbs-thumbsdir-max-size 50000000
"Max size for thumbnails directory. "Max size for thumbnails directory.
When it reachs that size (in bytes), a warning is sent." When it reaches that size (in bytes), a warning is sent."
:type 'string :type 'string
:group 'thumbs) :group 'thumbs)
(defcustom thumbs-conversion-program (defcustom thumbs-conversion-program
(if (equal 'windows-nt system-type) (if (eq system-type 'windows-nt)
"convert.exe" "convert.exe"
(or (executable-find "convert") (or (executable-find "convert")
"/usr/X11R6/bin/convert")) "/usr/X11R6/bin/convert"))
@ -117,20 +116,19 @@ This is where you see the cursor."
(defcustom thumbs-thumbsdir-auto-clean t (defcustom thumbs-thumbsdir-auto-clean t
"If set, delete older file in the thumbnails directory. "If set, delete older file in the thumbnails directory.
Deletion is done at load time when the directory size is bigger Deletion is done at load time when the directory size is bigger
than 'thumbs-thumbsdir-max-size'." than `thumbs-thumbsdir-max-size'."
:type 'boolean :type 'boolean
:group 'thumbs) :group 'thumbs)
(defcustom thumbs-image-resizing-step 10 (defcustom thumbs-image-resizing-step 10
"Step by wich to resize image." "Step by which to resize image."
:type 'string :type 'string
:group 'thumbs) :group 'thumbs)
(defcustom thumbs-temp-dir (defcustom thumbs-temp-dir temporary-file-directory
"/tmp/"
"Temporary directory to use. "Temporary directory to use.
Leaving it to default '/tmp/' can let another user Defaults to `temporary-file-directory'. Leaving it to
see some of your images." this value can let another user see some of your images."
:type 'directory :type 'directory
:group 'thumbs) :group 'thumbs)
@ -140,10 +138,6 @@ see some of your images."
:group 'thumbs) :group 'thumbs)
;; Initialize some variable, for later use. ;; Initialize some variable, for later use.
(defvar thumbs-temp-file
(concat thumbs-temp-dir thumbs-temp-prefix)
"Temporary filename for images.")
(defvar thumbs-current-tmp-filename (defvar thumbs-current-tmp-filename
nil nil
"Temporary filename of current image.") "Temporary filename of current image.")
@ -163,28 +157,36 @@ see some of your images."
nil nil
"List of marked files.") "List of marked files.")
;; Make sure auto-image-file-mode is ON. (defalias 'thumbs-gensym
(auto-image-file-mode t) (if (fboundp 'gensym)
'gensym
;; Copied from cl-macs.el
(defvar thumbs-gensym-counter 0)
(lambda (&optional prefix)
"Generate a new uninterned symbol.
The name is made by appending a number to PREFIX, default \"G\"."
(let ((pfix (if (stringp prefix) prefix "G"))
(num (if (integerp prefix) prefix
(prog1 thumbs-gensym-counter
(setq thumbs-gensym-counter
(1+ thumbs-gensym-counter))))))
(make-symbol (format "%s%d" pfix num))))))
;; Create the thumbs directory if it does not exists. (defun thumbs-temp-file ()
(setq thumbs-thumbsdir (expand-file-name thumbs-thumbsdir)) "Return a unique temporary filename for an image."
(format "%s%s-%s.jpg"
(expand-file-name thumbs-temp-dir)
thumbs-temp-prefix
(thumbs-gensym "T")))
(when (not (file-directory-p thumbs-thumbsdir)) (defun thumbs-thumbsdir ()
(progn "Return the current thumbnails directory (from `thumbs-thumbsdir').
(make-directory thumbs-thumbsdir) Create the thumbnails directory if it does not exist."
(message "Creating thumbnails directory"))) (let ((thumbs-thumbsdir (expand-file-name thumbs-thumbsdir)))
(unless (file-directory-p thumbs-thumbsdir)
(defvar thumbs-gensym-counter 0) (make-directory thumbs-thumbsdir)
(message "Creating thumbnails directory"))
(defun thumbs-gensym (&optional arg) thumbs-thumbsdir))
"Generate a new uninterned symbol.
The name is made by appending a number to PREFIX, default \"Thumbs\"."
(let ((prefix (if (stringp arg) arg "Thumbs"))
(num (if (integerp arg) arg
(prog1
thumbs-gensym-counter
(setq thumbs-gensym-counter (1+ thumbs-gensym-counter))))))
(make-symbol (format "%s%d" prefix num))))
(defun thumbs-cleanup-thumbsdir () (defun thumbs-cleanup-thumbsdir ()
"Clean the thumbnails directory. "Clean the thumbnails directory.
@ -197,8 +199,8 @@ reached."
(lambda (f) (lambda (f)
(let ((fattribsL (file-attributes f))) (let ((fattribsL (file-attributes f)))
`(,(nth 4 fattribsL) ,(nth 7 fattribsL) ,f))) `(,(nth 4 fattribsL) ,(nth 7 fattribsL) ,f)))
(directory-files thumbs-thumbsdir t (image-file-name-regexp))) (directory-files (thumbs-thumbsdir) t (image-file-name-regexp)))
'(lambda (l1 l2) (time-less-p (car l1)(car l2))))) '(lambda (l1 l2) (time-less-p (car l1) (car l2)))))
(dirsize (apply '+ (mapcar (lambda (x) (cadr x)) filesL)))) (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) filesL))))
(while (> dirsize thumbs-thumbsdir-max-size) (while (> dirsize thumbs-thumbsdir-max-size)
(progn (progn
@ -258,7 +260,7 @@ ACTION-PREFIX is the symbol to place before the ACTION command
(defun thumbs-resize-image (&optional increment size) (defun thumbs-resize-image (&optional increment size)
"Resize image in current buffer. "Resize image in current buffer.
if INCREMENT is set, make the image bigger, else smaller. If INCREMENT is set, make the image bigger, else smaller.
Or, alternatively, a SIZE may be specified." Or, alternatively, a SIZE may be specified."
(interactive) (interactive)
;; cleaning of old temp file ;; cleaning of old temp file
@ -276,7 +278,7 @@ Or, alternatively, a SIZE may be specified."
thumbs-current-image-size) thumbs-current-image-size)
(thumbs-decrement-image-size (thumbs-decrement-image-size
thumbs-current-image-size)))) thumbs-current-image-size))))
(tmp (format "%s%s.jpg" thumbs-temp-file (thumbs-gensym)))) (tmp (thumbs-temp-file)))
(erase-buffer) (erase-buffer)
(thumbs-call-convert thumbs-current-image-filename (thumbs-call-convert thumbs-current-image-filename
tmp "sample" tmp "sample"
@ -286,7 +288,7 @@ Or, alternatively, a SIZE may be specified."
(setq thumbs-current-tmp-filename tmp))) (setq thumbs-current-tmp-filename tmp)))
(defun thumbs-resize-interactive (width height) (defun thumbs-resize-interactive (width height)
"Resize Image interactively to specified WIDTH and HEIGHT." "Resize image interactively to specified WIDTH and HEIGHT."
(interactive "nWidth: \nnHeight: ") (interactive "nWidth: \nnHeight: ")
(thumbs-resize-image nil (cons width height))) (thumbs-resize-image nil (cons width height)))
@ -305,7 +307,7 @@ Or, alternatively, a SIZE may be specified."
(convert-standard-filename (convert-standard-filename
(let ((filename (expand-file-name img))) (let ((filename (expand-file-name img)))
(format "%s/%08x-%s.jpg" (format "%s/%08x-%s.jpg"
thumbs-thumbsdir (thumbs-thumbsdir)
(sxhash filename) (sxhash filename)
(subst-char-in-string (subst-char-in-string
?\s ?\_ ?\s ?\_
@ -562,11 +564,7 @@ Open another window."
(defun thumbs-kill-buffer () (defun thumbs-kill-buffer ()
"Kill the current buffer." "Kill the current buffer."
(interactive) (interactive)
(let ((buffer (current-buffer))) (quit-window t (selected-window)))
(condition-case nil
(delete-window (selected-window))
(error nil))
(kill-buffer buffer)))
(defun thumbs-show-image-num (num) (defun thumbs-show-image-num (num)
"Show the image with number NUM." "Show the image with number NUM."
@ -643,7 +641,7 @@ ACTION and ARG should be a valid convert command."
t t
thumbs-temp-prefix)) thumbs-temp-prefix))
(let ((buffer-read-only nil) (let ((buffer-read-only nil)
(tmp (format "%s%s.jpg" thumbs-temp-file (thumbs-gensym)))) (tmp (thumbs-temp-file)))
(erase-buffer) (erase-buffer)
(thumbs-call-convert thumbs-current-image-filename (thumbs-call-convert thumbs-current-image-filename
tmp tmp

View file

@ -133,9 +133,8 @@ specify nil for this variable."
:type '(choice integer (const nil)) :type '(choice integer (const nil))
:group 'tmm) :group 'tmm)
(require 'font-lock) (defface tmm-inactive
(defface tmm-inactive-face '((t :inherit shadow))
'((t :inherit font-lock-comment-face))
"Face used for inactive menu items." "Face used for inactive menu items."
:group 'tmm) :group 'tmm)
@ -350,7 +349,7 @@ Stores a list of all the shortcuts in the free variable `tmm-short-cuts'."
(setq next (next-single-char-property-change (point) 'mouse-face)) (setq next (next-single-char-property-change (point) 'mouse-face))
(when (looking-at inactive-string) (when (looking-at inactive-string)
(remove-text-properties (point) next '(mouse-face)) (remove-text-properties (point) next '(mouse-face))
(add-text-properties (point) next '(face tmm-inactive-face))) (add-text-properties (point) next '(face tmm-inactive)))
(goto-char next))) (goto-char next)))
(set-buffer-modified-p nil))) (set-buffer-modified-p nil)))

View file

@ -1,3 +1,32 @@
2005-06-09 Kim F. Storm <storm@cua.dk>
* searching.texi (Entire Match Data): Explain new `reseat' argument to
match-data and set-match-data.
2005-06-08 Richard M. Stallman <rms@gnu.org>
* searching.texi (Entire Match Data): Clarify when match-data
returns markers and when integers.
* display.texi (Defining Faces): Explain that face name should not
end in `-face'.
* modes.texi (Mode Line Data): Minor cleanup.
(Customizing Keywords): Node split out of Search-based Fontification.
Add example of using font-lock-add-keywords from a hook.
Clarify when MODE should be non-nil, and when nil.
2005-06-06 Richard M. Stallman <rms@gnu.org>
* modes.texi (Mode Line Data): Explain what happens when the car
of a list is a void symbol.
(Search-based Fontification): Explain MODE arg to
font-lock-add-keywords and warn about calls from major modes.
2005-06-08 Juri Linkov <juri@jurta.org>
* display.texi (Standard Faces): Add `shadow' face.
2005-05-29 Luc Teirlinck <teirllm@auburn.edu> 2005-05-29 Luc Teirlinck <teirllm@auburn.edu>
* modes.texi (Major Mode Conventions): A derived mode only needs * modes.texi (Major Mode Conventions): A derived mode only needs

View file

@ -1775,6 +1775,11 @@ This face forces use of a particular fixed-width font.
This face forces use of a particular variable-width font. It's This face forces use of a particular variable-width font. It's
reasonable to customize this to use a different variable-width font, if reasonable to customize this to use a different variable-width font, if
you like, but you should not make it a fixed-width font. you like, but you should not make it a fixed-width font.
@item shadow
@kindex shadow @r{(face name)}
This face is used for making the text less noticeable than the
surrounding ordinary text.
@end table @end table
@defvar show-trailing-whitespace @defvar show-trailing-whitespace
@ -1790,14 +1795,15 @@ end of a line.
The way to define a new face is with @code{defface}. This creates a The way to define a new face is with @code{defface}. This creates a
kind of customization item (@pxref{Customization}) which the user can kind of customization item (@pxref{Customization}) which the user can
customize using the Customization buffer (@pxref{Easy Customization,,, customize using the Customization buffer (@pxref{Easy Customization,,,
emacs, The GNU Emacs Manual}). emacs, The GNU Emacs Manual}).
@defmac defface face spec doc [keyword value]... @defmac defface face spec doc [keyword value]...
This declares @var{face} as a customizable face that defaults according This declares @var{face} as a customizable face that defaults
to @var{spec}. You should not quote the symbol @var{face}. The according to @var{spec}. You should not quote the symbol @var{face},
and it should not end in @samp{-face} (that would be redundant). The
argument @var{doc} specifies the face documentation. The keywords you argument @var{doc} specifies the face documentation. The keywords you
can use in @code{defface} are the same ones that are meaningful in both can use in @code{defface} are the same as in @code{defgroup} and
@code{defgroup} and @code{defcustom} (@pxref{Common Keywords}). @code{defcustom} (@pxref{Common Keywords}).
When @code{defface} executes, it defines the face according to When @code{defface} executes, it defines the face according to
@var{spec}, then uses any customizations that were read from the @var{spec}, then uses any customizations that were read from the

View file

@ -1650,13 +1650,13 @@ properties specified by @var{props} to the result. The argument
@var{value}. (This feature is new as of Emacs 22.1.) @var{value}. (This feature is new as of Emacs 22.1.)
@item (@var{symbol} @var{then} @var{else}) @item (@var{symbol} @var{then} @var{else})
A list whose first element is a symbol that is not a keyword specifies a A list whose first element is a symbol that is not a keyword specifies
conditional. Its meaning depends on the value of @var{symbol}. If the a conditional. Its meaning depends on the value of @var{symbol}. If
value is non-@code{nil}, the second element, @var{then}, is processed @var{symbol} has a non-@code{nil} value, the second element,
recursively as a mode-line element. But if the value of @var{symbol} is @var{then}, is processed recursively as a mode-line element.
@code{nil}, the third element, @var{else}, is processed recursively. Otherwise, the third element, @var{else}, is processed recursively.
You may omit @var{else}; then the mode-line element displays nothing if You may omit @var{else}; then the mode-line element displays nothing
the value of @var{symbol} is @code{nil}. if the value of @var{symbol} is @code{nil} or void.
@item (@var{width} @var{rest}@dots{}) @item (@var{width} @var{rest}@dots{})
A list whose first element is an integer specifies truncation or A list whose first element is an integer specifies truncation or
@ -2319,6 +2319,7 @@ Search-based fontification happens second.
@menu @menu
* Font Lock Basics:: Overview of customizing Font Lock. * Font Lock Basics:: Overview of customizing Font Lock.
* Search-based Fontification:: Fontification based on regexps. * Search-based Fontification:: Fontification based on regexps.
* Customizing Keywords:: Customizing search-based fontification.
* Other Font Lock Variables:: Additional customization facilities. * Other Font Lock Variables:: Additional customization facilities.
* Levels of Font Lock:: Each mode can define alternative levels * Levels of Font Lock:: Each mode can define alternative levels
so that the user can select more or less. so that the user can select more or less.
@ -2624,19 +2625,27 @@ Non-@code{nil} means that regular expression matching for the sake of
@code{font-lock-keywords} should be case-insensitive. @code{font-lock-keywords} should be case-insensitive.
@end defvar @end defvar
You can use @code{font-lock-add-keywords} to add additional @node Customizing Keywords
@subsection Customizing Search-Based Fontification
You can use @code{font-lock-add-keywords} to add additional
search-based fontification rules to a major mode, and search-based fontification rules to a major mode, and
@code{font-lock-remove-keywords} to removes rules. @code{font-lock-remove-keywords} to removes rules.
@defun font-lock-add-keywords mode keywords &optional append @defun font-lock-add-keywords mode keywords &optional append
This function adds highlighting @var{keywords} for @var{mode}. The This function adds highlighting @var{keywords}, for the current buffer
argument @var{keywords} should be a list with the same format as the or for major mode @var{mode}. The argument @var{keywords} should be a
variable @code{font-lock-keywords}. @var{mode} should be a symbol, list with the same format as the variable @code{font-lock-keywords}.
the major mode command name, such as @code{c-mode}. When Font Lock
mode is turned on in @var{mode}, it adds @var{keywords} to If @var{mode} is a symbol which is a major mode command name, such as
@code{font-lock-keywords}. @var{mode} can also be @code{nil}; the @code{c-mode}, the effect is that enabling Font Lock mode in
highlighting @var{keywords} are immediately added to @var{mode} will add @var{keywords} to @code{font-lock-keywords}.
@code{font-lock-keywords} in the current buffer in that case. Calling with a non-@code{nil} value of @var{mode} is correct only in
your @file{~/.emacs} file.
If @var{mode} is @code{nil}, this function adds @var{keywords} to
@code{font-lock-keywords} in the current buffer. This way of calling
@code{font-lock-add-keywords} is usually used in mode hook functions.
By default, @var{keywords} are added at the beginning of By default, @var{keywords} are added at the beginning of
@code{font-lock-keywords}. If the optional argument @var{append} is @code{font-lock-keywords}. If the optional argument @var{append} is
@ -2645,7 +2654,29 @@ By default, @var{keywords} are added at the beginning of
non-@code{nil} value, they are added at the end of non-@code{nil} value, they are added at the end of
@code{font-lock-keywords}. @code{font-lock-keywords}.
For example: Some modes provide specialized support you can use in additional
highlighting patterns. See the variables
@code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types},
@code{objc-font-lock-extra-types} and
@code{java-font-lock-extra-types}, for example.
@strong{Warning:} major mode functions must not call
@code{font-lock-add-keywords} under any circumstances, either directly
or indirectly, except through their mode hooks. (Doing so would lead
to incorrect behavior for some minor modes.) They should set up their
rules for search-based fontification by setting
@code{font-lock-keywords}.
@end defun
@defun font-lock-remove-keywords mode keywords
This function removes @var{keywords} from @code{font-lock-keywords}
for the current buffer or for major mode @var{mode}. As in
@code{font-lock-add-keywords}, @var{mode} should be a major mode
command name or @code{nil}. All the caveats and requirments for
@code{font-lock-add-keywords} apply here too.
@end defun
For example, this code
@smallexample @smallexample
(font-lock-add-keywords 'c-mode (font-lock-add-keywords 'c-mode
@ -2653,30 +2684,23 @@ For example:
("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face))) ("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face)))
@end smallexample @end smallexample
@noindent
adds two fontification patterns for C mode: one to fontify the word adds two fontification patterns for C mode: one to fontify the word
@samp{FIXME}, even in comments, and another to fontify the words @samp{FIXME}, even in comments, and another to fontify the words
@samp{and}, @samp{or} and @samp{not} as keywords. @samp{and}, @samp{or} and @samp{not} as keywords.
Some modes have specialized support for additional patterns. See the @noindent
variables @code{c-font-lock-extra-types}, That example affects only C mode proper. To add the same patterns to
@code{c++-font-lock-extra-types}, @code{objc-font-lock-extra-types} C mode @emph{and} all modes derived from it, do this instead:
and @code{java-font-lock-extra-types}, for example.
@end defun
@defun font-lock-remove-keywords mode keywords @smallexample
This function removes highlighting @var{keywords} for @var{mode}. As (add-hook 'c-mode-hook
in @code{font-lock-add-keywords}, @var{mode} should be a major mode (lambda ()
command name or @code{nil}. If @code{nil}, the highlighting (font-lock-add-keywords nil
@var{keywords} are immediately removed in the current buffer. '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
@end defun ("\\<\\(and\\|or\\|not\\)\\>" .
font-lock-keyword-face)))))
@strong{Warning:} Only use a non-@code{nil} @var{mode} argument when @end smallexample
you use @code{font-lock-add-keywords} or
@code{font-lock-remove-keywords} in your @file{.emacs} file. When you
use these functions from a Lisp program (such as a minor mode), we
recommend that you use @code{nil} for @var{mode} (and place the call
on a hook) to avoid subtle problems due to the details of the
implementation.
@node Other Font Lock Variables @node Other Font Lock Variables
@subsection Other Font Lock Variables @subsection Other Font Lock Variables

View file

@ -1485,13 +1485,14 @@ character of the buffer counts as 1.)
The functions @code{match-data} and @code{set-match-data} read or The functions @code{match-data} and @code{set-match-data} read or
write the entire match data, all at once. write the entire match data, all at once.
@defun match-data &optional integers reuse @defun match-data &optional integers reuse reseat
This function returns a newly constructed list containing all the This function returns a list of positions (markers or integers) that
information on what text the last search matched. Element zero is the record all the information on what text the last search matched.
position of the beginning of the match for the whole expression; element Element zero is the position of the beginning of the match for the
one is the position of the end of the match for the expression. The whole expression; element one is the position of the end of the match
next two elements are the positions of the beginning and end of the for the expression. The next two elements are the positions of the
match for the first subexpression, and so on. In general, element beginning and end of the match for the first subexpression, and so on.
In general, element
@ifnottex @ifnottex
number 2@var{n} number 2@var{n}
@end ifnottex @end ifnottex
@ -1508,15 +1509,13 @@ number {\mathsurround=0pt $2n+1$}
@end tex @end tex
corresponds to @code{(match-end @var{n})}. corresponds to @code{(match-end @var{n})}.
All the elements are markers or @code{nil} if matching was done on a Normally all the elements are markers or @code{nil}, but if
buffer and all are integers or @code{nil} if matching was done on a @var{integers} is non-@code{nil}, that means to use integers instead
string with @code{string-match}. If @var{integers} is of markers. (In that case, the buffer itself is appended as an
non-@code{nil}, then the elements are integers or @code{nil}, even if additional element at the end of the list, to facilitate complete
matching was done on a buffer. In that case, the buffer itself is restoration of the match data.) If the last match was done on a
appended as an additional element at the end of the list string with @code{string-match}, then integers are always used,
to facilitate complete restoration of the match data. Also, since markers can't point into a string.
@code{match-beginning} and
@code{match-end} always return integers or @code{nil}.
If @var{reuse} is non-@code{nil}, it should be a list. In that case, If @var{reuse} is non-@code{nil}, it should be a list. In that case,
@code{match-data} stores the match data in @var{reuse}. That is, @code{match-data} stores the match data in @var{reuse}. That is,
@ -1524,8 +1523,16 @@ If @var{reuse} is non-@code{nil}, it should be a list. In that case,
have the right length. If it is not long enough to contain the match have the right length. If it is not long enough to contain the match
data, it is extended. If it is too long, the length of @var{reuse} data, it is extended. If it is too long, the length of @var{reuse}
stays the same, but the elements that were not used are set to stays the same, but the elements that were not used are set to
@code{nil}. The purpose of this feature is to avoid producing too @code{nil}. The purpose of this feature is to reduce the need for
much garbage, that would later have to be collected. garbage collection.
If @var{reseat} is non-@code{nil}, all markers on the @var{reuse} list
are reseated to point to nowhere, and if the value is @code{evaporate},
the markers are put back on the free list.
@strong{Warning:} When @code{evaporate} is specified for @var{reseat},
no other references to the markers on the @var{reuse} list; otherwise,
Emacs may crash during the next garbage collection.
As always, there must be no possibility of intervening searches between As always, there must be no possibility of intervening searches between
the call to a search function and the call to @code{match-data} that is the call to a search function and the call to @code{match-data} that is
@ -1542,7 +1549,7 @@ intended to access the match data for that search.
@end example @end example
@end defun @end defun
@defun set-match-data match-list @defun set-match-data match-list &optional reseat
This function sets the match data from the elements of @var{match-list}, This function sets the match data from the elements of @var{match-list},
which should be a list that was the value of a previous call to which should be a list that was the value of a previous call to
@code{match-data}. (More precisely, anything that has the same format @code{match-data}. (More precisely, anything that has the same format
@ -1551,6 +1558,14 @@ will work.)
If @var{match-list} refers to a buffer that doesn't exist, you don't get If @var{match-list} refers to a buffer that doesn't exist, you don't get
an error; that sets the match data in a meaningless but harmless way. an error; that sets the match data in a meaningless but harmless way.
If @var{reseat} is non-@code{nil}, all markers on the @var{match-list} list
are reseated to point to nowhere, and if the value is @code{evaporate},
the markers are put back on the free list.
@strong{Warning:} When @code{evaporate} is specified for @var{reseat},
no other references to the markers on the @var{match-list} list; otherwise,
Emacs may crash during the next garbage collection.
@findex store-match-data @findex store-match-data
@code{store-match-data} is a semi-obsolete alias for @code{set-match-data}. @code{store-match-data} is a semi-obsolete alias for @code{set-match-data}.
@end defun @end defun

View file

@ -1,3 +1,9 @@
2005-06-08 Steven Tamm <steventamm@mac.com>
* INSTALL: Explain that a universal binary cannot be created and
builds for on emachine cannot be targeted to the other.
* README: Add Universal Binary to the Todo List.
2005-05-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 2005-05-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* makefile.MPW (buildobj.lst): New target. * makefile.MPW (buildobj.lst): New target.

View file

@ -230,7 +230,11 @@ system sofware updates possibly overwriting the distribution. If this
is a concern, as it should be in normal binary distributions, please is a concern, as it should be in normal binary distributions, please
use /usr/local as the prefix for installation. use /usr/local as the prefix for installation.
Enjoy! Emacs supports both PowerPC and Intel-based Macintoshes. However,
due to the unexec process that Emacs uses to dump core, it is not
possible at this time to generate a universal binary that supports both
architectures. In addition, Rosetta doesn't appear to work correctly
with PowerPC builds of Emacs; you will have to recompile for Intel.
Therefore, builds of Emacs are architecture specific.
Andrew. Enjoy!
<akochoi@mac.com>

View file

@ -53,6 +53,9 @@ A number of things do not work yet:
+ Support for certain image types (such as XPM) is not as extensive as + Support for certain image types (such as XPM) is not as extensive as
on other plaforms. on other plaforms.
+ Incorporate Apple's wrappers to be able to create a universal
binary that unexecs on first run for the given architecture.
If your Mac is connected to the Internet, report bugs by typing `M-x If your Mac is connected to the Internet, report bugs by typing `M-x
report-emacs-bug' or by choosing the entry `Send Bug Report...' in report-emacs-bug' or by choosing the entry `Send Bug Report...' in
the `Help' menu. This will send the bug report to the address the `Help' menu. This will send the bug report to the address

View file

@ -1,3 +1,23 @@
2005-06-08 Luc Teirlinck <teirllm@auburn.edu>
* files.texi (Log Buffer): Document when there can be more than
one file to be committed.
2005-06-08 Juri Linkov <juri@jurta.org>
* display.texi (Faces): Add `shadow' face.
2005-06-07 Masatake YAMATO <jet@gyve.org>
* display.texi (Faces): Write about mode-line-highlight.
2005-06-06 Richard M. Stallman <rms@gnu.org>
* misc.texi (Printing Package): Explain how to initialize
printing package.
* cmdargs.texi (Action Arguments): Clarify directory default for -l.
2005-06-05 Chong Yidong <cyd@stupidchicken.com> 2005-06-05 Chong Yidong <cyd@stupidchicken.com>
* emacs.texi: Rename Hardcopy to Printing. * emacs.texi: Rename Hardcopy to Printing.

View file

@ -119,6 +119,10 @@ the library can be found either in the current directory, or in the
Emacs library search path as specified with @env{EMACSLOADPATH} Emacs library search path as specified with @env{EMACSLOADPATH}
(@pxref{General Variables}). (@pxref{General Variables}).
@strong{Warning:} If previous command-line arguments have visited
files, the current directory is the directory of the last file
visited.
@item -L @var{dir} @item -L @var{dir}
@opindex -L @opindex -L
@itemx --directory=@var{dir} @itemx --directory=@var{dir}

View file

@ -118,6 +118,8 @@ This face is used for the prompt strings displayed in the minibuffer.
@item highlight @item highlight
This face is used for highlighting portions of text, in various modes. This face is used for highlighting portions of text, in various modes.
For example, mouse-sensitive text is highlighted using this face. For example, mouse-sensitive text is highlighted using this face.
@item mode-line-highlight
Like @code{highlight}, but used for portions of text on mode lines.
@item isearch @item isearch
This face is used for highlighting Isearch matches. This face is used for highlighting Isearch matches.
@item lazy-highlight @item lazy-highlight
@ -167,6 +169,10 @@ The face for highlighting trailing whitespace when
Whitespace}. Whitespace}.
@item variable-pitch @item variable-pitch
The basic variable-pitch face. The basic variable-pitch face.
@item shadow
The basic face for making the text less noticeable than the surrounding
ordinary text. Usually this is achieved by using shades of grey in
contrast with either black or white default foreground color.
@end table @end table
@cindex @code{region} face @cindex @code{region} face

View file

@ -1545,7 +1545,9 @@ working---generating ChangeLog entries from the revision control log.
In the @samp{*VC-Log*} buffer, @kbd{C-c C-f} (@kbd{M-x log-edit-show-files}) In the @samp{*VC-Log*} buffer, @kbd{C-c C-f} (@kbd{M-x log-edit-show-files})
shows the list of files to be committed in case you need to check shows the list of files to be committed in case you need to check
that. that. (This can be a list of more than one file if you use VC Dired
mode or PCL-CVS. @xref{VC Dired Mode}, and @ref{Top, , About PCL-CVS,
pcl-cvs, PCL-CVS --- The Emacs Front-End to CVS}.)
When you have finished editing the log message, type @kbd{C-c C-c} to When you have finished editing the log message, type @kbd{C-c C-c} to
exit the buffer and commit the change. exit the buffer and commit the change.

View file

@ -1609,15 +1609,16 @@ used.
@findex pr-interface @findex pr-interface
To use the Printing package, add @code{(require 'printing)} to your To use the Printing package, add @code{(require 'printing)} to your
init file (@pxref{Init File}). The usual printing options in the menu init file (@pxref{Init File}), followed by @code{(pr-update-menus)}.
bar will be replaced with a @samp{Printing} submenu, containing This function replaces the usual printing commands in the menu bar
various printing options. You can also type @kbd{M-x pr-interface with a @samp{Printing} submenu that contains various printing options.
RET}; this creates a @samp{*Printing Interface*} buffer, similar to a You can also type @kbd{M-x pr-interface RET}; this creates a
customization buffer , where you can set the printing options. After @samp{*Printing Interface*} buffer, similar to a customization buffer,
selecting what and how to print, start the print job using the where you can set the printing options. After selecting what and how
@samp{Print} button (click @kbd{mouse-2} on it, or move point over it to print, you start the print job using the @samp{Print} button (click
and type @kbd{RET}). For further information on the various options, @kbd{mouse-2} on it, or move point over it and type @kbd{RET}). For
use the @samp{Interface Help} button. further information on the various options, use the @samp{Interface
Help} button.
@node Sorting, Narrowing, Printing, Top @node Sorting, Narrowing, Printing, Top
@section Sorting Text @section Sorting Text

View file

@ -1,3 +1,105 @@
2005-06-08 Steven Tamm <steventamm@mac.com>
* unexmacosx.c (copy_data_segment): Copy __la_sym_ptr2 section
used by gcc4 on intel mac.
2005-06-09 Kim F. Storm <storm@cua.dk>
* search.c (Fmatch_data): Add optional RESEAT arg. Unchain markers
in REUSE list if non-nil; free them if equal to evaporate.
(Fset_match_data): Add optional RESEAT arg. Unchain markers in LIST
if non-nil; free them if equal to evaporate. Use XCAR/XCDR.
(restore_search_regs): Rename from restore_match_data. Uses changed.
(unwind_set_match_data): New function.
(record_unwind_save_match_data): New function like save-match-data.
* lisp.h (Fmatch_data, Fset_match_data): Fix EXFUN.
(record_unwind_save_match_data): Add prototype.
(restore_search_regs): Rename from restore_match_data.
* composite.c (compose_chars_in_text):
* eval.c (do_autoload):
* macmenu.c (set_frame_menubar):
* process.c (read_process_output, exec_sentinel):
* xmenu.c (set_frame_menubar):
* xdisp.c (prepare_menu_bars, update_menu_bar, update_tool_bar):
* w32menu.c (set_frame_menubar):
Use record_unwind_save_match_data.
2005-06-08 Richard M. Stallman <rms@gnu.org>
* xdisp.c (get_next_display_element): Alter previous change:
Distinguish Vshow_nonbreak_escape = t or not t.
For t, use escape_glyph once again, as before previous change.
Use space or hyphen for display, instead of the non-ASCII char.
(syms_of_xdisp) <show-nonbreak-escape>: Doc fix.
* process.c (Fstart_process): Don't touch command_channel_p slot.
* process.h (struct process): Delete command_channel_p.
2005-06-07 Masatake YAMATO <jet@gyve.org>
* xdisp.c (note_mode_line_or_margin_highlight): Check
the overlapping of re-rendering area to avoid flickering.
(note_mouse_highlight): Call clear_mouse_face if PART
is not ON_MODE_LINE nor ON_HEADER_LINE.
2005-06-07 Kim F. Storm <storm@cua.dk>
* process.c: Improve commentary for adaptive read buffering.
2005-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
* xterm.c (x_create_toolkit_scroll_bar): Use XtNarrowScrollbars
if available.
2005-06-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* macmenu.c (menu_quit_handler, install_menu_quit_handler): New
functions for popping down menus on C-g.
(set_frame_menubar, mac_menu_show): Call install_menu_quit_handler.
* macterm.c: Make mac_quit_char_modifiers and mac_quit_char_keycode
non-static.
* config.in: Added HAVE_CANCELMENUTRACKING
2005-06-06 Eli Zaretskii <eliz@gnu.org>
* w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove
macros.
* unexw32.c (RVA_TO_PTR): Moved here from w32heap.h.
* w32proc.c (RVA_TO_PTR): New macro.
* w32heap.c (RVA_TO_PTR): No need to #undef now.
* makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/w32select.$(O)):
Depend on w32heap.h.
2005-06-06 Luc Teirlinck <teirllm@auburn.edu>
* keyboard.c (command_loop_1): Update Vthis_original_command.
2005-06-06 Richard M. Stallman <rms@gnu.org>
* xmenu.c (popup_get_selection): Undo previous change.
2005-06-06 Juri Linkov <juri@jurta.org>
* xdisp.c (Qno_break_space): New variable.
(syms_of_xdisp): Initialize it.
(get_next_display_element): Add no-break space and soft hypen
codes for iso8859-2 and iso8859-5. Don't add `\' for them.
Use `no-break-space' face for no-break spaces.
2005-06-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* window.c (delete_window): Handle the case where a h/vchild has
a h/vchild.
2005-06-05 Eli Zaretskii <eliz@gnu.org> 2005-06-05 Eli Zaretskii <eliz@gnu.org>
* w32.c (sys_setsockopt): Change arg 4 to `const void *'. In the * w32.c (sys_setsockopt): Change arg 4 to `const void *'. In the

View file

@ -96,6 +96,9 @@ Boston, MA 02111-1307, USA. */
/* Define to 1 if you have the `bzero' function. */ /* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO #undef HAVE_BZERO
/* Define to 1 if CancelMenuTracking is available (Mac OSX). */
#undef HAVE_CANCELMENUTRACKING
/* Define to 1 if you are using the Carbon API on Mac OS X. */ /* Define to 1 if you are using the Carbon API on Mac OS X. */
#undef HAVE_CARBON #undef HAVE_CARBON
@ -782,9 +785,9 @@ Boston, MA 02111-1307, USA. */
/* If using the C implementation of alloca, define if you know the /* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be direction of stack growth for your system; otherwise it will be
automatically deduced at run-time. automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */ STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION #undef STACK_DIRECTION
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */

View file

@ -1971,7 +1971,7 @@ do_autoload (fundef, funname)
GCPRO3 (fun, funname, fundef); GCPRO3 (fun, funname, fundef);
/* Preserve the match data. */ /* Preserve the match data. */
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
/* Value saved here is to be restored into Vautoload_queue. */ /* Value saved here is to be restored into Vautoload_queue. */
record_unwind_protect (un_autoload, Vautoload_queue); record_unwind_protect (un_autoload, Vautoload_queue);

View file

@ -6265,8 +6265,8 @@ jpeg_image_p (object)
#endif /* HAVE_STLIB_H */ #endif /* HAVE_STLIB_H */
#if defined (HAVE_NTGUI) && !defined (__WIN32__) #if defined (HAVE_NTGUI) && !defined (__WIN32__)
/* jpeglib.h will define boolean differently depending on __WIN32__, /* In older releases of the jpeg library, jpeglib.h will define boolean
so make sure it is defined. */ differently depending on __WIN32__, so make sure it is defined. */
#define __WIN32__ 1 #define __WIN32__ 1
#endif #endif

View file

@ -1522,6 +1522,7 @@ command_loop_1 ()
Vthis_command = Qnil; Vthis_command = Qnil;
real_this_command = Qnil; real_this_command = Qnil;
Vthis_original_command = Qnil;
/* Read next key sequence; i gets its length. */ /* Read next key sequence; i gets its length. */
i = read_key_sequence (keybuf, sizeof keybuf / sizeof keybuf[0], i = read_key_sequence (keybuf, sizeof keybuf / sizeof keybuf[0],

View file

@ -2804,6 +2804,7 @@ EXFUN (Fbuffer_disable_undo, 1);
EXFUN (Fbuffer_enable_undo, 1); EXFUN (Fbuffer_enable_undo, 1);
EXFUN (Ferase_buffer, 0); EXFUN (Ferase_buffer, 0);
extern Lisp_Object Qoverlayp; extern Lisp_Object Qoverlayp;
extern Lisp_Object Qevaporate;
extern Lisp_Object get_truename_buffer P_ ((Lisp_Object)); extern Lisp_Object get_truename_buffer P_ ((Lisp_Object));
extern struct buffer *all_buffers; extern struct buffer *all_buffers;
EXFUN (Fprevious_overlay_change, 1); EXFUN (Fprevious_overlay_change, 1);
@ -2871,11 +2872,12 @@ extern void syms_of_abbrev P_ ((void));
/* defined in search.c */ /* defined in search.c */
extern void shrink_regexp_cache P_ ((void)); extern void shrink_regexp_cache P_ ((void));
EXFUN (Fstring_match, 3); EXFUN (Fstring_match, 3);
extern void restore_match_data P_ ((void)); extern void restore_search_regs P_ ((void));
EXFUN (Fmatch_data, 2); EXFUN (Fmatch_data, 3);
EXFUN (Fset_match_data, 1); EXFUN (Fset_match_data, 2);
EXFUN (Fmatch_beginning, 1); EXFUN (Fmatch_beginning, 1);
EXFUN (Fmatch_end, 1); EXFUN (Fmatch_end, 1);
extern void record_unwind_save_match_data P_ ((void));
EXFUN (Flooking_at, 1); EXFUN (Flooking_at, 1);
extern int fast_string_match P_ ((Lisp_Object, Lisp_Object)); extern int fast_string_match P_ ((Lisp_Object, Lisp_Object));
extern int fast_c_string_match_ignore_case P_ ((Lisp_Object, const char *)); extern int fast_c_string_match_ignore_case P_ ((Lisp_Object, const char *));

View file

@ -1356,6 +1356,68 @@ update_submenu_strings (first_wv)
} }
/* Event handler function that pops down a menu on C-g. We can only pop
down menus if CancelMenuTracking is present (OSX 10.3 or later). */
#ifdef HAVE_CANCELMENUTRACKING
static pascal OSStatus
menu_quit_handler (nextHandler, theEvent, userData)
EventHandlerCallRef nextHandler;
EventRef theEvent;
void* userData;
{
UInt32 keyCode;
UInt32 keyModifiers;
extern int mac_quit_char_modifiers;
extern int mac_quit_char_keycode;
GetEventParameter (theEvent, kEventParamKeyCode,
typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode);
GetEventParameter (theEvent, kEventParamKeyModifiers,
typeUInt32, NULL, sizeof(UInt32),
NULL, &keyModifiers);
if (keyCode == mac_quit_char_keycode
&& keyModifiers == mac_quit_char_modifiers)
{
MenuRef menu = userData != 0
? (MenuRef)userData : AcquireRootMenu ();
CancelMenuTracking (menu, true, 0);
if (!userData) ReleaseMenu (menu);
return noErr;
}
return CallNextEventHandler (nextHandler, theEvent);
}
#endif /* HAVE_CANCELMENUTRACKING */
/* Add event handler for MENU_HANDLE so we can detect C-g.
If MENU_HANDLE is NULL, install handler for all menus in the menu bar.
If CancelMenuTracking isn't available, do nothing. */
static void
install_menu_quit_handler (MenuHandle menu_handle)
{
#ifdef HAVE_CANCELMENUTRACKING
EventHandlerUPP handler = NewEventHandlerUPP(menu_quit_handler);
UInt32 numTypes = 1;
EventTypeSpec typesList[] = { { kEventClassKeyboard, kEventRawKeyDown } };
int i = MIN_MENU_ID;
MenuHandle menu = menu_handle ? menu_handle : GetMenuHandle (i);
while (menu != NULL)
{
InstallMenuEventHandler (menu, handler, GetEventTypeCount (typesList),
typesList, menu_handle, NULL);
if (menu_handle) break;
menu = GetMenuHandle (++i);
}
DisposeEventHandlerUPP (handler);
#endif /* HAVE_CANCELMENUTRACKING */
}
/* Set the contents of the menubar widgets of frame F. /* Set the contents of the menubar widgets of frame F.
The argument FIRST_TIME is currently ignored; The argument FIRST_TIME is currently ignored;
it is set the first time this is called, from initialize_frame_menubar. */ it is set the first time this is called, from initialize_frame_menubar. */
@ -1413,7 +1475,7 @@ set_frame_menubar (f, first_time, deep_p)
because it is not reentrant. */ because it is not reentrant. */
specbind (Qdebug_on_next_call, Qnil); specbind (Qdebug_on_next_call, Qnil);
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
if (NILP (Voverriding_local_map_menu_flag)) if (NILP (Voverriding_local_map_menu_flag))
{ {
specbind (Qoverriding_terminal_local_map, Qnil); specbind (Qoverriding_terminal_local_map, Qnil);
@ -1575,6 +1637,8 @@ set_frame_menubar (f, first_time, deep_p)
DrawMenuBar (); DrawMenuBar ();
/* Add event handler so we can detect C-g. */
install_menu_quit_handler (NULL);
free_menubar_widget_value_tree (first_wv); free_menubar_widget_value_tree (first_wv);
UNBLOCK_INPUT; UNBLOCK_INPUT;
@ -1606,7 +1670,43 @@ free_frame_menubar (f)
} }
/* mac_menu_show actually displays a menu using the panes and items in static Lisp_Object
pop_down_menu (arg)
Lisp_Object arg;
{
struct Lisp_Save_Value *p1 = XSAVE_VALUE (Fcar (arg));
struct Lisp_Save_Value *p2 = XSAVE_VALUE (Fcdr (arg));
FRAME_PTR f = p1->pointer;
MenuHandle *menu = p2->pointer;
BLOCK_INPUT;
/* Must reset this manually because the button release event is not
passed to Emacs event loop. */
FRAME_MAC_DISPLAY_INFO (f)->grabbed = 0;
/* delete all menus */
{
int i = MIN_POPUP_SUBMENU_ID;
MenuHandle submenu = GetMenuHandle (i);
while (submenu != NULL)
{
DeleteMenu (i);
DisposeMenu (submenu);
submenu = GetMenuHandle (++i);
}
}
DeleteMenu (POPUP_SUBMENU_ID);
DisposeMenu (*menu);
UNBLOCK_INPUT;
return Qnil;
}
/* Mac_menu_show actually displays a menu using the panes and items in
menu_items and returns the value selected from it; we assume input menu_items and returns the value selected from it; we assume input
is blocked by the caller. */ is blocked by the caller. */
@ -1644,6 +1744,7 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
= (Lisp_Object *) alloca (menu_items_used * sizeof (Lisp_Object)); = (Lisp_Object *) alloca (menu_items_used * sizeof (Lisp_Object));
int submenu_depth = 0; int submenu_depth = 0;
int first_pane; int first_pane;
int specpdl_count = SPECPDL_INDEX ();
*error = NULL; *error = NULL;
@ -1817,7 +1918,7 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
title = ENCODE_MENU_STRING (title); title = ENCODE_MENU_STRING (title);
#endif #endif
wv_title->name = (char *) SDATA (title); wv_title->name = (char *) SDATA (title);
wv_title->enabled = TRUE; wv_title->enabled = FALSE;
wv_title->title = TRUE; wv_title->title = TRUE;
wv_title->button_type = BUTTON_TYPE_NONE; wv_title->button_type = BUTTON_TYPE_NONE;
wv_title->help = Qnil; wv_title->help = Qnil;
@ -1830,6 +1931,10 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
submenu_id = MIN_POPUP_SUBMENU_ID; submenu_id = MIN_POPUP_SUBMENU_ID;
fill_submenu (menu, first_wv->contents); fill_submenu (menu, first_wv->contents);
/* Free the widget_value objects we used to specify the
contents. */
free_menubar_widget_value_tree (first_wv);
/* Adjust coordinates to be root-window-relative. */ /* Adjust coordinates to be root-window-relative. */
pos.h = x; pos.h = x;
pos.v = y; pos.v = y;
@ -1844,11 +1949,18 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
InsertMenu (menu, -1); InsertMenu (menu, -1);
record_unwind_protect (pop_down_menu,
Fcons (make_save_value (f, 0),
make_save_value (&menu, 0)));
/* Add event handler so we can detect C-g. */
install_menu_quit_handler (menu);
/* Display the menu. */ /* Display the menu. */
menu_item_choice = PopUpMenuSelect (menu, pos.v, pos.h, 0); menu_item_choice = PopUpMenuSelect (menu, pos.v, pos.h, 0);
menu_item_selection = LoWord (menu_item_choice); menu_item_selection = LoWord (menu_item_choice);
/* Get the refcon to find the correct item*/ /* Get the refcon to find the correct item */
if (menu_item_selection) if (menu_item_selection)
{ {
MenuHandle sel_menu = GetMenuHandle (HiWord (menu_item_choice)); MenuHandle sel_menu = GetMenuHandle (HiWord (menu_item_choice));
@ -1856,35 +1968,10 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
GetMenuItemRefCon (sel_menu, menu_item_selection, &refcon); GetMenuItemRefCon (sel_menu, menu_item_selection, &refcon);
} }
} }
else if (! for_click)
#if 0 /* Make "Cancel" equivalent to C-g unless this menu was popped up by
/* Clean up extraneous mouse events which might have been generated a mouse press. */
during the call. */ Fsignal (Qquit, Qnil);
discard_mouse_events ();
#endif
/* Must reset this manually because the button release event is not
passed to Emacs event loop. */
FRAME_MAC_DISPLAY_INFO (f)->grabbed = 0;
/* Free the widget_value objects we used to specify the
contents. */
free_menubar_widget_value_tree (first_wv);
/* delete all menus */
{
int i = MIN_POPUP_SUBMENU_ID;
MenuHandle submenu = GetMenuHandle (i);
while (submenu != NULL)
{
DeleteMenu (i);
DisposeMenu (submenu);
submenu = GetMenuHandle (++i);
}
}
DeleteMenu (POPUP_SUBMENU_ID);
DisposeMenu (menu);
/* Find the selected item, and its pane, to return /* Find the selected item, and its pane, to return
the proper value. */ the proper value. */
@ -1944,6 +2031,8 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error)
/* Make "Cancel" equivalent to C-g. */ /* Make "Cancel" equivalent to C-g. */
Fsignal (Qquit, Qnil); Fsignal (Qquit, Qnil);
unbind_to (specpdl_count, Qnil);
return Qnil; return Qnil;
} }

View file

@ -9916,8 +9916,8 @@ MakeMeTheFrontProcess ()
/***** Code to handle C-g testing *****/ /***** Code to handle C-g testing *****/
/* Contains the Mac modifier formed from quit_char */ /* Contains the Mac modifier formed from quit_char */
static mac_quit_char_modifiers = 0; int mac_quit_char_modifiers = 0;
static mac_quit_char_keycode; int mac_quit_char_keycode;
extern int quit_char; extern int quit_char;
static void static void

View file

@ -634,6 +634,7 @@ $(BLD)/emacs.$(O) : \
$(SRC)/termhooks.h \ $(SRC)/termhooks.h \
$(SRC)/w32bdf.h \ $(SRC)/w32bdf.h \
$(SRC)/w32gui.h \ $(SRC)/w32gui.h \
$(SRC)/w32heap.h \
$(SRC)/window.h $(SRC)/window.h
$(BLD)/eval.$(O) : \ $(BLD)/eval.$(O) : \
@ -1494,6 +1495,7 @@ $(BLD)/w32select.$(O): \
$(SRC)/systime.h \ $(SRC)/systime.h \
$(SRC)/w32bdf.h \ $(SRC)/w32bdf.h \
$(SRC)/w32gui.h \ $(SRC)/w32gui.h \
$(SRC)/w32heap.h \
$(SRC)/w32term.h $(SRC)/w32term.h
$(BLD)/w32reg.$(O): \ $(BLD)/w32reg.$(O): \

View file

@ -272,17 +272,19 @@ int update_tick;
#define READ_OUTPUT_DELAY_MAX (READ_OUTPUT_DELAY_INCREMENT * 5) #define READ_OUTPUT_DELAY_MAX (READ_OUTPUT_DELAY_INCREMENT * 5)
#define READ_OUTPUT_DELAY_MAX_MAX (READ_OUTPUT_DELAY_INCREMENT * 7) #define READ_OUTPUT_DELAY_MAX_MAX (READ_OUTPUT_DELAY_INCREMENT * 7)
/* Number of processes which might be delayed. */ /* Number of processes which have a non-zero read_output_delay,
and therefore might be delayed for adaptive read buffering. */
static int process_output_delay_count; static int process_output_delay_count;
/* Non-zero if any process has non-nil process_output_skip. */ /* Non-zero if any process has non-nil read_output_skip. */
static int process_output_skip; static int process_output_skip;
/* Non-nil means to delay reading process output to improve buffering. /* Non-nil means to delay reading process output to improve buffering.
A value of t means that delay is reset after each send, any other A value of t means that delay is reset after each send, any other
non-nil value does not reset the delay. */ non-nil value does not reset the delay. A value of nil disables
adaptive read buffering completely. */
static Lisp_Object Vprocess_adaptive_read_buffering; static Lisp_Object Vprocess_adaptive_read_buffering;
#else #else
#define process_output_delay_count 0 #define process_output_delay_count 0
@ -1536,7 +1538,6 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
XPROCESS (proc)->childp = Qt; XPROCESS (proc)->childp = Qt;
XPROCESS (proc)->plist = Qnil; XPROCESS (proc)->plist = Qnil;
XPROCESS (proc)->command_channel_p = Qnil;
XPROCESS (proc)->buffer = buffer; XPROCESS (proc)->buffer = buffer;
XPROCESS (proc)->sentinel = Qnil; XPROCESS (proc)->sentinel = Qnil;
XPROCESS (proc)->filter = Qnil; XPROCESS (proc)->filter = Qnil;
@ -4320,6 +4321,11 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
#endif #endif
#ifdef ADAPTIVE_READ_BUFFERING #ifdef ADAPTIVE_READ_BUFFERING
/* Set the timeout for adaptive read buffering if any
process has non-nil read_output_skip and non-zero
read_output_delay, and we are not reading output for a
specific wait_channel. It is not executed if
Vprocess_adaptive_read_buffering is nil. */
if (process_output_skip && check_delay > 0) if (process_output_skip && check_delay > 0)
{ {
int usecs = EMACS_USECS (timeout); int usecs = EMACS_USECS (timeout);
@ -4330,6 +4336,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
proc = chan_process[channel]; proc = chan_process[channel];
if (NILP (proc)) if (NILP (proc))
continue; continue;
/* Find minimum non-zero read_output_delay among the
processes with non-nil read_output_skip. */
if (XINT (XPROCESS (proc)->read_output_delay) > 0) if (XINT (XPROCESS (proc)->read_output_delay) > 0)
{ {
check_delay--; check_delay--;
@ -4880,10 +4888,10 @@ read_process_output (proc, channel)
{ {
Lisp_Object tem; Lisp_Object tem;
/* Don't clobber the CURRENT match data, either! */ /* Don't clobber the CURRENT match data, either! */
tem = Fmatch_data (Qnil, Qnil); tem = Fmatch_data (Qnil, Qnil, Qnil);
restore_match_data (); restore_search_regs ();
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
Fset_match_data (tem); Fset_match_data (tem, Qt);
} }
/* For speed, if a search happens within this code, /* For speed, if a search happens within this code,
@ -4939,7 +4947,7 @@ read_process_output (proc, channel)
read_process_output_error_handler); read_process_output_error_handler);
/* If we saved the match data nonrecursively, restore it now. */ /* If we saved the match data nonrecursively, restore it now. */
restore_match_data (); restore_search_regs ();
running_asynch_code = outer_running_asynch_code; running_asynch_code = outer_running_asynch_code;
/* Handling the process output should not deactivate the mark. */ /* Handling the process output should not deactivate the mark. */
@ -6338,10 +6346,10 @@ exec_sentinel (proc, reason)
if (outer_running_asynch_code) if (outer_running_asynch_code)
{ {
Lisp_Object tem; Lisp_Object tem;
tem = Fmatch_data (Qnil, Qnil); tem = Fmatch_data (Qnil, Qnil, Qnil);
restore_match_data (); restore_search_regs ();
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
Fset_match_data (tem); Fset_match_data (tem, Qt);
} }
/* For speed, if a search happens within this code, /* For speed, if a search happens within this code,
@ -6355,7 +6363,7 @@ exec_sentinel (proc, reason)
exec_sentinel_error_handler); exec_sentinel_error_handler);
/* If we saved the match data nonrecursively, restore it now. */ /* If we saved the match data nonrecursively, restore it now. */
restore_match_data (); restore_search_regs ();
running_asynch_code = outer_running_asynch_code; running_asynch_code = outer_running_asynch_code;
Vdeactivate_mark = odeactivate; Vdeactivate_mark = odeactivate;
@ -6709,7 +6717,7 @@ init_process ()
#endif /* HAVE_SOCKETS */ #endif /* HAVE_SOCKETS */
#if defined (DARWIN) || defined (MAC_OSX) #if defined (DARWIN) || defined (MAC_OSX)
/* PTYs are broken on Darwin < 6, but are sometimes useful for interactive /* PTYs are broken on Darwin < 6, but are sometimes useful for interactive
processes. As such, we only change the default value. */ processes. As such, we only change the default value. */
if (initialized) if (initialized)
{ {

View file

@ -52,8 +52,6 @@ struct Lisp_Process
Lisp_Object buffer; Lisp_Object buffer;
/* Number of this process */ /* Number of this process */
Lisp_Object pid; Lisp_Object pid;
/* Non-nil if this is really a command channel */
Lisp_Object command_channel_p;
/* t if this is a real child process. /* t if this is a real child process.
For a net connection, it is a plist based on the arguments to make-network-process. */ For a net connection, it is a plist based on the arguments to make-network-process. */
Lisp_Object childp; Lisp_Object childp;
@ -105,7 +103,7 @@ struct Lisp_Process
Initialized from `Vprocess_adaptive_read_buffering'. */ Initialized from `Vprocess_adaptive_read_buffering'. */
Lisp_Object adaptive_read_buffering; Lisp_Object adaptive_read_buffering;
/* Hysteresis to try to read process output in larger blocks. /* Hysteresis to try to read process output in larger blocks.
On some systems, e.g. the Linux kernel, emacs is seen as On some systems, e.g. GNU/Linux, Emacs is seen as
an interactive app also when reading process output, meaning an interactive app also when reading process output, meaning
that process output can be read in as little as 1 byte at a that process output can be read in as little as 1 byte at a
time. Value is micro-seconds to delay reading output from time. Value is micro-seconds to delay reading output from

View file

@ -2701,7 +2701,7 @@ Zero means the entire text matched by the whole regexp or whole string. */)
return match_limit (subexp, 0); return match_limit (subexp, 0);
} }
DEFUN ("match-data", Fmatch_data, Smatch_data, 0, 2, 0, DEFUN ("match-data", Fmatch_data, Smatch_data, 0, 3, 0,
doc: /* Return a list containing all info on what the last search matched. doc: /* Return a list containing all info on what the last search matched.
Element 2N is `(match-beginning N)'; element 2N + 1 is `(match-end N)'. Element 2N is `(match-beginning N)'; element 2N + 1 is `(match-end N)'.
All the elements are markers or nil (nil if the Nth pair didn't match) All the elements are markers or nil (nil if the Nth pair didn't match)
@ -2713,17 +2713,35 @@ integers \(rather than markers) to represent buffer positions. In
this case, and if the last match was in a buffer, the buffer will get this case, and if the last match was in a buffer, the buffer will get
stored as one additional element at the end of the list. stored as one additional element at the end of the list.
If REUSE is a list, reuse it as part of the value. If REUSE is long enough If REUSE is a list, reuse it as part of the value. If REUSE is long
to hold all the values, and if INTEGERS is non-nil, no consing is done. enough to hold all the values, and if INTEGERS is non-nil, no consing
is done.
If optional third arg RESEAT is non-nil, any previous markers on the
REUSE list will be modified to point to nowhere.
If RESEAT is `evaporate', put markers back on the free list.
Note: No other references to the markers must exist if you use this.
Return value is undefined if the last search failed. */) Return value is undefined if the last search failed. */)
(integers, reuse) (integers, reuse, reseat)
Lisp_Object integers, reuse; Lisp_Object integers, reuse, reseat;
{ {
Lisp_Object tail, prev; Lisp_Object tail, prev;
Lisp_Object *data; Lisp_Object *data;
int i, len; int i, len;
if (!NILP (reseat))
for (tail = reuse; CONSP (tail); tail = XCDR (tail))
if (MARKERP (XCAR (tail)))
{
if (EQ (reseat, Qevaporate))
free_marker (XCAR (tail));
else
unchain_marker (XMARKER (XCAR (tail)));
XSETCAR (tail, Qnil);
}
if (NILP (last_thing_searched)) if (NILP (last_thing_searched))
return Qnil; return Qnil;
@ -2759,10 +2777,10 @@ Return value is undefined if the last search failed. */)
/* last_thing_searched must always be Qt, a buffer, or Qnil. */ /* last_thing_searched must always be Qt, a buffer, or Qnil. */
abort (); abort ();
len = 2*(i+1); len = 2 * i + 2;
} }
else else
data[2 * i] = data [2 * i + 1] = Qnil; data[2 * i] = data[2 * i + 1] = Qnil;
} }
if (BUFFERP (last_thing_searched) && !NILP (integers)) if (BUFFERP (last_thing_searched) && !NILP (integers))
@ -2796,11 +2814,15 @@ Return value is undefined if the last search failed. */)
} }
DEFUN ("set-match-data", Fset_match_data, Sset_match_data, 1, 1, 0, DEFUN ("set-match-data", Fset_match_data, Sset_match_data, 1, 2, 0,
doc: /* Set internal data on last search match from elements of LIST. doc: /* Set internal data on last search match from elements of LIST.
LIST should have been created by calling `match-data' previously. */) LIST should have been created by calling `match-data' previously.
(list)
register Lisp_Object list; If optional arg RESEAT is non-nil, make markers on LIST point nowhere.
If RESEAT is `evaporate', put the markers back on the free list.
Note: No other references to the markers must exist if you use this. */)
(list, reseat)
register Lisp_Object list, reseat;
{ {
register int i; register int i;
register Lisp_Object marker; register Lisp_Object marker;
@ -2844,9 +2866,9 @@ LIST should have been created by calling `match-data' previously. */)
search_regs.num_regs = length; search_regs.num_regs = length;
} }
for (i = 0;; i++) for (i = 0; CONSP (list); i++)
{ {
marker = Fcar (list); marker = XCAR (list);
if (BUFFERP (marker)) if (BUFFERP (marker))
{ {
last_thing_searched = marker; last_thing_searched = marker;
@ -2857,12 +2879,14 @@ LIST should have been created by calling `match-data' previously. */)
if (NILP (marker)) if (NILP (marker))
{ {
search_regs.start[i] = -1; search_regs.start[i] = -1;
list = Fcdr (list); list = XCDR (list);
} }
else else
{ {
int from; int from;
Lisp_Object m;
m = marker;
if (MARKERP (marker)) if (MARKERP (marker))
{ {
if (XMARKER (marker)->buffer == 0) if (XMARKER (marker)->buffer == 0)
@ -2873,17 +2897,38 @@ LIST should have been created by calling `match-data' previously. */)
CHECK_NUMBER_COERCE_MARKER (marker); CHECK_NUMBER_COERCE_MARKER (marker);
from = XINT (marker); from = XINT (marker);
list = Fcdr (list);
marker = Fcar (list); if (!NILP (reseat) && MARKERP (m))
{
if (EQ (reseat, Qevaporate))
free_marker (m);
else
unchain_marker (XMARKER (m));
XSETCAR (list, Qnil);
}
if ((list = XCDR (list), !CONSP (list)))
break;
m = marker = XCAR (list);
if (MARKERP (marker) && XMARKER (marker)->buffer == 0) if (MARKERP (marker) && XMARKER (marker)->buffer == 0)
XSETFASTINT (marker, 0); XSETFASTINT (marker, 0);
CHECK_NUMBER_COERCE_MARKER (marker); CHECK_NUMBER_COERCE_MARKER (marker);
search_regs.start[i] = from; search_regs.start[i] = from;
search_regs.end[i] = XINT (marker); search_regs.end[i] = XINT (marker);
if (!NILP (reseat) && MARKERP (m))
{
if (EQ (reseat, Qevaporate))
free_marker (m);
else
unchain_marker (XMARKER (m));
XSETCAR (list, Qnil);
}
} }
list = Fcdr (list); list = XCDR (list);
} }
for (; i < search_regs.num_regs; i++) for (; i < search_regs.num_regs; i++)
@ -2921,7 +2966,7 @@ save_search_regs ()
/* Called upon exit from filters and sentinels. */ /* Called upon exit from filters and sentinels. */
void void
restore_match_data () restore_search_regs ()
{ {
if (search_regs_saved) if (search_regs_saved)
{ {
@ -2939,6 +2984,21 @@ restore_match_data ()
} }
} }
static Lisp_Object
unwind_set_match_data (list)
Lisp_Object list;
{
return Fset_match_data (list, Qevaporate);
}
/* Called to unwind protect the match data. */
void
record_unwind_save_match_data ()
{
record_unwind_protect (unwind_set_match_data,
Fmatch_data (Qnil, Qnil, Qnil));
}
/* Quote a string to inactivate reg-expr chars */ /* Quote a string to inactivate reg-expr chars */
DEFUN ("regexp-quote", Fregexp_quote, Sregexp_quote, 1, 1, 0, DEFUN ("regexp-quote", Fregexp_quote, Sregexp_quote, 1, 1, 0,

View file

@ -695,6 +695,7 @@ copy_data_segment (struct load_command *lc)
} }
else if (strncmp (sectp->sectname, "__la_symbol_ptr", 16) == 0 else if (strncmp (sectp->sectname, "__la_symbol_ptr", 16) == 0
|| strncmp (sectp->sectname, "__nl_symbol_ptr", 16) == 0 || strncmp (sectp->sectname, "__nl_symbol_ptr", 16) == 0
|| strncmp (sectp->sectname, "__la_sym_ptr2", 16) == 0
|| strncmp (sectp->sectname, "__dyld", 16) == 0 || strncmp (sectp->sectname, "__dyld", 16) == 0
|| strncmp (sectp->sectname, "__const", 16) == 0 || strncmp (sectp->sectname, "__const", 16) == 0
|| strncmp (sectp->sectname, "__cfstring", 16) == 0) || strncmp (sectp->sectname, "__cfstring", 16) == 0)

View file

@ -325,6 +325,9 @@ relocate_offset (DWORD offset,
/* Convert address in executing image to RVA. */ /* Convert address in executing image to RVA. */
#define PTR_TO_RVA(ptr) ((DWORD)(ptr) - (DWORD) GetModuleHandle (NULL)) #define PTR_TO_RVA(ptr) ((DWORD)(ptr) - (DWORD) GetModuleHandle (NULL))
#define RVA_TO_PTR(var,section,filedata) \
((void *)(RVA_TO_OFFSET(var,section) + (filedata).file_base))
#define PTR_TO_OFFSET(ptr, pfile_data) \ #define PTR_TO_OFFSET(ptr, pfile_data) \
((unsigned char *)(ptr) - (pfile_data)->file_base) ((unsigned char *)(ptr) - (pfile_data)->file_base)

View file

@ -31,7 +31,6 @@ Boston, MA 02111-1307, USA.
#include "w32heap.h" #include "w32heap.h"
#include "lisp.h" /* for VALMASK */ #include "lisp.h" /* for VALMASK */
#undef RVA_TO_PTR
#define RVA_TO_PTR(rva) ((unsigned char *)((DWORD)(rva) + (DWORD)GetModuleHandle (NULL))) #define RVA_TO_PTR(rva) ((unsigned char *)((DWORD)(rva) + (DWORD)GetModuleHandle (NULL)))
/* This gives us the page size and the size of the allocation unit on NT. */ /* This gives us the page size and the size of the allocation unit on NT. */

View file

@ -82,15 +82,6 @@ typedef struct file_data {
unsigned char *file_base; unsigned char *file_base;
} file_data; } file_data;
#define OFFSET_TO_RVA(var,section) \
(section->VirtualAddress + ((DWORD)(var) - section->PointerToRawData))
#define RVA_TO_OFFSET(var,section) \
(section->PointerToRawData + ((DWORD)(var) - section->VirtualAddress))
#define RVA_TO_PTR(var,section,filedata) \
((void *)(RVA_TO_OFFSET(var,section) + (filedata).file_base))
int open_input_file (file_data *p_file, char *name); int open_input_file (file_data *p_file, char *name);
int open_output_file (file_data *p_file, char *name, unsigned long size); int open_output_file (file_data *p_file, char *name, unsigned long size);
void close_file_data (file_data *p_file); void close_file_data (file_data *p_file);

View file

@ -1443,7 +1443,8 @@ set_frame_menubar (f, first_time, deep_p)
because it is not reentrant. */ because it is not reentrant. */
specbind (Qdebug_on_next_call, Qnil); specbind (Qdebug_on_next_call, Qnil);
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
if (NILP (Voverriding_local_map_menu_flag)) if (NILP (Voverriding_local_map_menu_flag))
{ {
specbind (Qoverriding_terminal_local_map, Qnil); specbind (Qoverriding_terminal_local_map, Qnil);

View file

@ -57,6 +57,11 @@ extern BOOL WINAPI IsValidLocale(LCID, DWORD);
#include "syssignal.h" #include "syssignal.h"
#include "w32term.h" #include "w32term.h"
#define RVA_TO_PTR(var,section,filedata) \
((void *)((section)->PointerToRawData \
+ ((DWORD)(var) - (section)->VirtualAddress) \
+ (filedata).file_base))
/* Control whether spawnve quotes arguments as necessary to ensure /* Control whether spawnve quotes arguments as necessary to ensure
correct parsing by child process. Because not all uses of spawnve correct parsing by child process. Because not all uses of spawnve
are careful about constructing argv arrays, we make this behaviour are careful about constructing argv arrays, we make this behaviour

View file

@ -1452,8 +1452,10 @@ delete_window (window)
tem = par->hchild; tem = par->hchild;
if (NILP (tem)) if (NILP (tem))
tem = par->vchild; tem = par->vchild;
if (NILP (XWINDOW (tem)->next)) if (NILP (XWINDOW (tem)->next)) {
replace_window (parent, tem); replace_window (parent, tem);
par = XWINDOW (tem);
}
/* Since we may be deleting combination windows, we must make sure that /* Since we may be deleting combination windows, we must make sure that
not only p but all its children have been marked as deleted. */ not only p but all its children have been marked as deleted. */
@ -1465,6 +1467,51 @@ delete_window (window)
/* Mark this window as deleted. */ /* Mark this window as deleted. */
p->buffer = p->hchild = p->vchild = Qnil; p->buffer = p->hchild = p->vchild = Qnil;
if (! NILP (par->parent))
par = XWINDOW (par->parent);
/* Check if we have a v/hchild with a v/hchild. In that case remove
one of them. */
if (! NILP (par->vchild) && ! NILP (XWINDOW (par->vchild)->vchild))
{
p = XWINDOW (par->vchild);
par->vchild = p->vchild;
tem = p->vchild;
}
else if (! NILP (par->hchild) && ! NILP (XWINDOW (par->hchild)->hchild))
{
p = XWINDOW (par->hchild);
par->hchild = p->hchild;
tem = p->hchild;
}
else
p = 0;
if (p)
{
while (! NILP (tem)) {
XWINDOW (tem)->parent = p->parent;
if (NILP (XWINDOW (tem)->next))
break;
tem = XWINDOW (tem)->next;
}
if (! NILP (tem)) {
/* The next of the v/hchild we are removing is now the next of the
last child for the v/hchild:
Before v/hchild -> v/hchild -> next1 -> next2
|
-> next3
After: v/hchild -> next1 -> next2 -> next3
*/
XWINDOW (tem)->next = p->next;
if (! NILP (p->next))
XWINDOW (p->next)->prev = tem;
}
p->next = p->prev = p->vchild = p->hchild = p->buffer = Qnil;
}
/* Adjust glyph matrices. */ /* Adjust glyph matrices. */
adjust_glyphs (f); adjust_glyphs (f);
UNBLOCK_INPUT; UNBLOCK_INPUT;

View file

@ -351,6 +351,10 @@ Lisp_Object Qtrailing_whitespace;
Lisp_Object Qescape_glyph; Lisp_Object Qescape_glyph;
/* Name and number of the face used to highlight non-breaking spaces. */
Lisp_Object Qno_break_space;
/* The symbol `image' which is the car of the lists used to represent /* The symbol `image' which is the car of the lists used to represent
images in Lisp. */ images in Lisp. */
@ -5203,6 +5207,8 @@ get_next_display_element (it)
int face_id, lface_id = 0 ; int face_id, lface_id = 0 ;
GLYPH escape_glyph; GLYPH escape_glyph;
/* Handle control characters with ^. */
if (it->c < 128 && it->ctl_arrow_p) if (it->c < 128 && it->ctl_arrow_p)
{ {
g = '^'; /* default glyph for Control */ g = '^'; /* default glyph for Control */
@ -5234,7 +5240,28 @@ get_next_display_element (it)
goto display_control; goto display_control;
} }
escape_glyph = '\\'; /* default for Octal display */ /* Handle non-break space in the mode where it only gets
highlighting. */
if (! EQ (Vshow_nonbreak_escape, Qt)
&& (it->c == 0x8a0 || it->c == 0x920
|| it->c == 0xe20 || it->c == 0xf20))
{
/* Merge the no-break-space face into the current face. */
face_id = merge_faces (it->f, Qno_break_space, 0,
it->face_id);
g = it->c = ' ';
XSETINT (it->ctl_chars[0], g);
ctl_len = 1;
goto display_control;
}
/* Handle sequences that start with the "escape glyph". */
/* the default escape glyph is \. */
escape_glyph = '\\';
if (it->dp if (it->dp
&& INTEGERP (DISP_ESCAPE_GLYPH (it->dp)) && INTEGERP (DISP_ESCAPE_GLYPH (it->dp))
&& GLYPH_CHAR_VALID_P (XFASTINT (DISP_ESCAPE_GLYPH (it->dp)))) && GLYPH_CHAR_VALID_P (XFASTINT (DISP_ESCAPE_GLYPH (it->dp))))
@ -5244,6 +5271,8 @@ get_next_display_element (it)
} }
if (lface_id) if (lface_id)
{ {
/* The display table specified a face.
Merge it into face_id and also into escape_glyph. */
escape_glyph = FAST_GLYPH_CHAR (escape_glyph); escape_glyph = FAST_GLYPH_CHAR (escape_glyph);
face_id = merge_faces (it->f, Qt, lface_id, face_id = merge_faces (it->f, Qt, lface_id,
it->face_id); it->face_id);
@ -8552,7 +8581,7 @@ prepare_menu_bars ()
Lisp_Object tail, frame; Lisp_Object tail, frame;
int count = SPECPDL_INDEX (); int count = SPECPDL_INDEX ();
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
FOR_EACH_FRAME (tail, frame) FOR_EACH_FRAME (tail, frame)
{ {
@ -8675,7 +8704,7 @@ update_menu_bar (f, save_match_data)
set_buffer_internal_1 (XBUFFER (w->buffer)); set_buffer_internal_1 (XBUFFER (w->buffer));
if (save_match_data) if (save_match_data)
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
if (NILP (Voverriding_local_map_menu_flag)) if (NILP (Voverriding_local_map_menu_flag))
{ {
specbind (Qoverriding_terminal_local_map, Qnil); specbind (Qoverriding_terminal_local_map, Qnil);
@ -8866,7 +8895,7 @@ update_tool_bar (f, save_match_data)
/* Save match data, if we must. */ /* Save match data, if we must. */
if (save_match_data) if (save_match_data)
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
/* Make sure that we don't accidentally use bogus keymaps. */ /* Make sure that we don't accidentally use bogus keymaps. */
if (NILP (Voverriding_local_map_menu_flag)) if (NILP (Voverriding_local_map_menu_flag))
@ -21620,10 +21649,8 @@ note_mode_line_or_margin_highlight (window, x, y, area)
int total_pixel_width; int total_pixel_width;
int ignore; int ignore;
int vpos, hpos;
if (clear_mouse_face (dpyinfo))
cursor = No_Cursor;
b = Fprevious_single_property_change (make_number (charpos + 1), b = Fprevious_single_property_change (make_number (charpos + 1),
Qmouse_face, string, Qnil); Qmouse_face, string, Qnil);
if (NILP (b)) if (NILP (b))
@ -21666,15 +21693,30 @@ note_mode_line_or_margin_highlight (window, x, y, area)
for (tmp_glyph = glyph - gpos; tmp_glyph != glyph; tmp_glyph++) for (tmp_glyph = glyph - gpos; tmp_glyph != glyph; tmp_glyph++)
total_pixel_width += tmp_glyph->pixel_width; total_pixel_width += tmp_glyph->pixel_width;
dpyinfo->mouse_face_beg_col = (x - gpos); /* Pre calculation of re-rendering position */
dpyinfo->mouse_face_beg_row = (area == ON_MODE_LINE vpos = (x - gpos);
? (w->current_matrix)->nrows - 1 hpos = (area == ON_MODE_LINE
: 0); ? (w->current_matrix)->nrows - 1
: 0);
/* If the re-rendering position is included in the last
re-rendering area, we should do nothing. */
if ( window == dpyinfo->mouse_face_window
&& dpyinfo->mouse_face_beg_col <= vpos
&& vpos < dpyinfo->mouse_face_end_col
&& dpyinfo->mouse_face_beg_row == hpos )
return;
if (clear_mouse_face (dpyinfo))
cursor = No_Cursor;
dpyinfo->mouse_face_beg_col = vpos;
dpyinfo->mouse_face_beg_row = hpos;
dpyinfo->mouse_face_beg_x = original_x_pixel - (total_pixel_width + dx); dpyinfo->mouse_face_beg_x = original_x_pixel - (total_pixel_width + dx);
dpyinfo->mouse_face_beg_y = 0; dpyinfo->mouse_face_beg_y = 0;
dpyinfo->mouse_face_end_col = (x - gpos) + gseq_length; dpyinfo->mouse_face_end_col = vpos + gseq_length;
dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_beg_row; dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_beg_row;
dpyinfo->mouse_face_end_x = 0; dpyinfo->mouse_face_end_x = 0;
@ -21746,7 +21788,8 @@ note_mouse_highlight (f, x, y)
/* If we were displaying active text in another window, clear that. /* If we were displaying active text in another window, clear that.
Also clear if we move out of text area in same window. */ Also clear if we move out of text area in same window. */
if (! EQ (window, dpyinfo->mouse_face_window) if (! EQ (window, dpyinfo->mouse_face_window)
|| (part != ON_TEXT && !NILP (dpyinfo->mouse_face_window))) || (part != ON_TEXT && part != ON_MODE_LINE && part != ON_HEADER_LINE
&& !NILP (dpyinfo->mouse_face_window)))
clear_mouse_face (dpyinfo); clear_mouse_face (dpyinfo);
/* Not on a window -> return. */ /* Not on a window -> return. */
@ -22861,6 +22904,8 @@ syms_of_xdisp ()
staticpro (&Qtrailing_whitespace); staticpro (&Qtrailing_whitespace);
Qescape_glyph = intern ("escape-glyph"); Qescape_glyph = intern ("escape-glyph");
staticpro (&Qescape_glyph); staticpro (&Qescape_glyph);
Qno_break_space = intern ("no-break-space");
staticpro (&Qno_break_space);
Qimage = intern ("image"); Qimage = intern ("image");
staticpro (&Qimage); staticpro (&Qimage);
QCmap = intern (":map"); QCmap = intern (":map");
@ -22967,7 +23012,11 @@ The face used for trailing whitespace is `trailing-whitespace'. */);
Vshow_trailing_whitespace = Qnil; Vshow_trailing_whitespace = Qnil;
DEFVAR_LISP ("show-nonbreak-escape", &Vshow_nonbreak_escape, DEFVAR_LISP ("show-nonbreak-escape", &Vshow_nonbreak_escape,
doc: /* *Non-nil means display escape character before non-break space and hyphen. */); doc: /* *Control highlighting of non-break space and soft hyphen.
t means highlight the character itself (for non-break space,
use face `non-break-space'.
nil means no highlighting.
other values mean display the escape glyph before the character. */);
Vshow_nonbreak_escape = Qt; Vshow_nonbreak_escape = Qt;
DEFVAR_LISP ("void-text-area-pointer", &Vvoid_text_area_pointer, DEFVAR_LISP ("void-text-area-pointer", &Vvoid_text_area_pointer,

View file

@ -1235,10 +1235,6 @@ popup_get_selection (initial_event, dpyinfo, id, do_timers)
if (event.type == ButtonRelease if (event.type == ButtonRelease
&& dpyinfo->display == event.xbutton.display) && dpyinfo->display == event.xbutton.display)
{ {
/* If the click is not on the menu, deactivate the menu. */
if (x_any_window_to_frame (dpyinfo, event.xexpose.window))
popup_activated_flag = 0;
dpyinfo->grabbed &= ~(1 << event.xbutton.button); dpyinfo->grabbed &= ~(1 << event.xbutton.button);
#ifdef USE_MOTIF /* Pretending that the event came from a #ifdef USE_MOTIF /* Pretending that the event came from a
Btn1Down seems the only way to convince Motif to Btn1Down seems the only way to convince Motif to
@ -2034,7 +2030,7 @@ set_frame_menubar (f, first_time, deep_p)
because it is not reentrant. */ because it is not reentrant. */
specbind (Qdebug_on_next_call, Qnil); specbind (Qdebug_on_next_call, Qnil);
record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); record_unwind_save_match_data ();
record_unwind_protect (unuse_menu_items, Qnil); record_unwind_protect (unuse_menu_items, Qnil);
if (NILP (Voverriding_local_map_menu_flag)) if (NILP (Voverriding_local_map_menu_flag))
{ {

View file

@ -4595,11 +4595,14 @@ x_create_toolkit_scroll_bar (f, bar)
char *initial = ""; char *initial = "";
char *val = initial; char *val = initial;
XtVaGetValues (widget, XtNscrollVCursor, (XtPointer) &val, XtVaGetValues (widget, XtNscrollVCursor, (XtPointer) &val,
#ifdef XtNarrowScrollbars
XtNarrowScrollbars, (XtPointer) &xaw3d_arrow_scroll,
#endif
XtNpickTop, (XtPointer) &xaw3d_pick_top, NULL); XtNpickTop, (XtPointer) &xaw3d_pick_top, NULL);
if (val == initial) if (xaw3d_arrow_scroll || val == initial)
{ /* ARROW_SCROLL */ { /* ARROW_SCROLL */
xaw3d_arrow_scroll = True; xaw3d_arrow_scroll = True;
/* Isn't that just a personal preference ? -sm */ /* Isn't that just a personal preference ? --Stef */
XtVaSetValues (widget, XtNcursorName, "top_left_arrow", NULL); XtVaSetValues (widget, XtNcursorName, "top_left_arrow", NULL);
} }
} }