1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

Merged from emacs--devo--0

Patches applied:

 * emacs@sv.gnu.org/emacs--devo--0--patch-744
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-745
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-746
   Merge from emacs--rel--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-747
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-748
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-749
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-750
   Merge from emacs--rel--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-751
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-752
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-753
   Merge from emacs--rel--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-754
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-755
   Merge from emacs--rel--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-756
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-757
   Update from CVS: lisp/textmodes/sgml-mode.el: Revert last change.

 * emacs@sv.gnu.org/emacs--devo--0--patch-758
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-759
   Merge from emacs--rel--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-760
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-761
   Update from CVS

 * emacs@sv.gnu.org/emacs--rel--22--patch-14
   Update from CVS

 * emacs@sv.gnu.org/emacs--rel--22--patch-15
   Update from CVS

 * emacs@sv.gnu.org/emacs--rel--22--patch-16
   Update from CVS: src/xterm.c (XTread_socket): Revert last change.

 * emacs@sv.gnu.org/emacs--rel--22--patch-17
   Update from CVS

 * emacs@sv.gnu.org/emacs--rel--22--patch-18
   Update from CVS

 * emacs@sv.gnu.org/emacs--rel--22--patch-19
   Update from CVS

 * emacs@sv.gnu.org/emacs--rel--22--patch-20
   Update from CVS

 * emacs@sv.gnu.org/emacs--rel--22--patch-21
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-221
   Update from CVS

Revision: emacs@sv.gnu.org/emacs--multi-tty--0--patch-12
Creator:  Karoly Lorentey <karoly@lorentey.hu>
This commit is contained in:
Miles Bader 2007-05-20 23:29:14 +00:00
commit 7be1c21aed
71 changed files with 4650 additions and 3254 deletions

95
AUTHORS
View File

@ -334,9 +334,9 @@ Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el
Chong Yidong: changed cus-edit.el simple.el files.el custom.el
display.texi longlines.el xdisp.c files.texi info.el keyboard.c
compile.el custom.texi text.texi frames.texi image-mode.el mouse.el
misc.texi startup.el wid-edit.el xterm.c cus-theme.el
and 295 other files
compile.el custom.texi text.texi xterm.c frames.texi image-mode.el
mouse.el misc.texi startup.el wid-edit.el cus-theme.el
and 296 other files
Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
@ -456,10 +456,10 @@ Dave Lambert: changed sol2-5.h xfns.c xterm.c xterm.h
Dave Love: wrote autoarg.el autoconf.el benchmark.el cfengine.el
code-pages.el elide-head.el georgian.el hl-line.el latin-8.el
latin-9.el latin1-disp.el python.el refill.el rfc1345.el
sgml-input.el smiley.el subst-big5.el subst-gb2312.el subst-jis.el
subst-ksc.el tool-bar.el ucs-tables.el uni-input.el utf-16.el
utf-7.el utf-8-lang.el welsh.el
latin-9.el latin1-disp.el python.el refill.el rfc1345.el sgml-input.el
smiley.el subst-big5.el subst-gb2312.el subst-jis.el subst-ksc.el
tool-bar.el ucs-tables.el uni-input.el utf-16.el utf-7.el utf-8-lang.el
welsh.el
and changed configure.in Makefile.in help.el fortran.el browse-url.el
mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el
wid-edit.el fns.c vc.el rfc2047.el bindings.el cus-start.el buffer.c
@ -550,8 +550,8 @@ and changed w32menu.c w32term.c close.png close.xpm empty.png empty.xpm
David Reitter: wrote mailclient.el
and changed commands.h cus-edit.el easy-mmode.el emacsbug.el
emacsclient.c keymap.c macterm.c menu-bar.el minibuf.c sendmail.el
url-http.el
emacsclient.c keymap.c macterm.c menu-bar.el minibuf.c python.el
sendmail.el url-http.el
David Robinson: changed menu-bar.el x-win.el
@ -561,6 +561,8 @@ David Vazquez: changed m4-mode.el
David Z. Maze: changed nnml.el nnrss.el
Davis Herring: changed timeclock.el
Deanna Phillips: changed configure.in
Decklin Foster: changed nngateway.el
@ -597,7 +599,7 @@ Didier Verna: wrote gnus-diary.el nndiary.el
and changed nntp.el gnus-art.el gnus-msg.el gnus-group.el gnus-start.el
gnus-sum.el gnus-xmas.el gnus-picon.el gnus-salt.el cus-edit.el rect.el
dgnushack.el gnus-agent.el gnus-ems.el gnus-fun.el gnus-topic.el
message.el nnmail.el nnmbox.el smiley.el
gnus.texi message.el nnmail.el nnmbox.el smiley.el
Dirk Herrmann: changed bibtex.el
@ -634,7 +636,7 @@ and changed diary.el tex-mode.el cal-tex.el cal-mayan.el holiday.el
Edward O'connor: changed erc.el erc-viper.el erc-log.el erc-track.el
viper.el erc-backend.el erc-chess.el erc-dcc.el erc-ezbounce.el
erc-goodies.el erc-list.el erc-macs.el erc-match.el erc-ring.el
erc-stamp.el goto-addr.el
erc-stamp.el goto-addr.el python.el
Edwin Steiner: changed gnus-nocem.el
@ -649,9 +651,9 @@ Eli Tziperman: wrote rmail-spam-filter.el
Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
startup.el mainmake.v2 config.bat menu-bar.el pc-win.el rmail.el
startup.el mainmake.v2 config.bat rmail.el menu-bar.el pc-win.el
simple.el msdos.h internal.el xfaces.c emacs.c frame.c dosfns.c
faces.el frame.el and 531 other files
faces.el frame.el and 532 other files
Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
sh-script.el text.texi
@ -746,8 +748,8 @@ Francesc Rocher: changed cus-start.el macterm.c w32term.c xdisp.c xterm.c
Francesco Potort,Al(B: wrote cmacexp.el
and changed etags.c man.el delta.h undigest.el etags.1 comint.el
configure.in uniquify.el latin-post.el rmail.el Makefile.in etags.el
latin-alt.el maintaining.texi sgml-mode.el data.c european.el
configure.in uniquify.el latin-post.el maintaining.texi rmail.el
Makefile.in etags.el latin-alt.el sgml-mode.el data.c european.el
filelock.c files.el generic-x.el gud.el and 43 other files
Francis J. Wright: wrote woman.el
@ -852,9 +854,9 @@ Giuseppe Scrivano: changed buffer.c configure.in sysdep.c xsmfns.c
Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el
calendar.texi appt.el sh-script.el Makefile.in timeclock.el cal-menu.el
files.el complete.el configure.in startup.el MACHINES abbrevs.texi
cal-hebrew.el cal-islam.el emacs.texi fr-refcard.tex holidays.el
and 145 other files
files.el complete.el configure.in programs.texi startup.el MACHINES
abbrevs.texi cal-hebrew.el cal-islam.el emacs.texi faq.texi
and 151 other files
Glynn Clements: wrote gamegrid.el snake.el tetris.el
@ -996,8 +998,8 @@ Ivar Rummelhoff: wrote winner.el
Iwamuro Motonori: changed gnus-kill.el
J.D. Smith: changed idlwave.el idlw-shell.el idlw-help.el idlw-rinfo.el
idlw-toolbar.el comint.el vc.el bibtex.el files.texi hideshow.el
idlw-complete-structtag.el idlwave.texi misc.texi mouse.el
idlw-toolbar.el comint.el idlwave.texi vc.el bibtex.el files.texi
hideshow.el idlw-complete-structtag.el misc.texi mouse.el
Jaap-Henk Hoepman: changed mm-decode.el
@ -1175,8 +1177,8 @@ Joel Ray Holveck: changed gnus-sum.el info.el
Joev Dubach: changed nntp.el
Johan Bockg,Ae(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el
erc-nickserv.el erc-ring.el erc-speak.el erc-track.el simple.el
align.el bytecomp.el calendar.el cl.texi custom.el dired-aux.el
custom.el erc-nickserv.el erc-ring.el erc-speak.el erc-track.el
simple.el align.el bytecomp.el calendar.el cl.texi dired-aux.el
dired-x.el display.texi erc-bbdb.el erc-button.el erc-compat.el
erc-dcc.el and 16 other files
@ -1281,9 +1283,9 @@ Juan Le,As(Bn Lahoz Garc,Am(Ba: wrote wdired.el
and changed files.el perl-mode.el
Juanma Barranquero: changed makefile.w32-in subr.el faces.el help-fns.el
files.el buffer.c simple.el w32fns.c emacsclient.c replace.el
files.el simple.el buffer.c w32fns.c emacsclient.c replace.el
vhdl-mode.el bs.el cperl-mode.el eval.c org.el process.c xdisp.c
idlwave.el sh-script.el window.c ada-mode.el and 628 other files
idlwave.el sh-script.el window.c ada-mode.el and 629 other files
Juergen Hoetzel: changed url-handlers.el
@ -1328,11 +1330,11 @@ Kailash C. Chowksey: changed HELLO Makefile.in ind-util.el kannada.el
Kanematsu Daiji: changed nnimap.el
Karl Berry: changed info.texi emacs.texi elisp.texi anti.texi
display.texi emacs-xtra.texi filelock.c gnu.texi mule.texi text.texi
building.texi cmdargs.texi copyright.el custom.texi customize.texi
dired.c faq.texi frames.texi help.texi lists.texi loading.texi
and 71 other files
Karl Berry: changed emacs.texi info.texi elisp.texi anti.texi
display.texi emacs-xtra.texi filelock.c gnu.texi mule.texi texinfo.tex
text.texi building.texi cmdargs.texi control.texi copyright.el
custom.texi customize.texi dired.c dired.texi faq.texi frames.texi
and 72 other files
Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el
jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el
@ -1696,10 +1698,9 @@ Martin Lorentzon: changed vc.el vc-cvs.el vc-hooks.el vc-rcs.el
Martin Neitzel: changed sc.el
Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
flyspell.el font-lock.el complete.el insdel.c macmenu.c syntax.c
w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c
backups.texi buffer.c buffer.h casefiddle.c cc-mode.el
and 36 other files
flyspell.el font-lock.el complete.el insdel.c ispell.el macmenu.c
syntax.c w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c
backups.texi buffer.c buffer.h casefiddle.c and 36 other files
Martin Stjernholm: wrote cc-bytecomp.el
and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
@ -1838,10 +1839,10 @@ Michal Jankowski: changed insdel.c keyboard.c
Michal Nazarewicz: changed ispell.el
Micha,Ak(Bl Cadilhac: changed ido.el fill.el ispell.el anti.texi battery.el
blackbox.el bs.el cmuscheme.el complete.el cus-edit.el dispnew.c
faq.texi flyspell.el footnote.el glasses.el info.el life.el lpr.el
make-mode.el misc.texi pong.el and 9 other files
Micha,Ak(Bl Cadilhac: changed ido.el fill.el ispell.el Makefile anti.texi
battery.el blackbox.el bs.el cmuscheme.el complete.el cus-edit.el
dispnew.c faq.texi flyspell.el footnote.el fr-refcard.ps fr-refcard.tex
glasses.el info.el life.el lpr.el and 12 other files
Michelangelo Grigni: wrote ffap.el
and changed gnus-score.el
@ -1941,6 +1942,8 @@ Niimi Satoshi: changed pp.el search.c
Niklas Morberg: changed nnweb.el gnus-art.el nnimap.el spam.el
Nikolaj Schumacher: changed compile.el
Noah Friedman: wrote eldoc.el rlogin.el rsz-mini.el type-break.el
and changed comint.el emacs-buffer.gdb files.el mailabbrev.el sendmail.el
subr.el timer.el yow.el battery.el complete.el config.in configure.in
@ -2062,7 +2065,7 @@ and changed iso-acc.el process.c sysdep.c
Per Cederqvist: wrote ewoc.el
and changed vc.el vc-hooks.el diff-mode.el etags.c etags.el forms.el
hexl.el
hexl.el process.c
Per Persson: wrote gnus-vm.el
@ -2399,8 +2402,8 @@ and changed comint.el font-lock.el shell.el rmail.el fortran.el
Skip Collins: changed w32fns.c w32term.c w32term.h
Slawomir Nowaczyk: changed python.el TUTORIAL.pl flyspell.el ls-lisp.el
w32proc.c
Slawomir Nowaczyk: changed emacs.py python.el TUTORIAL.pl flyspell.el
ls-lisp.el w32proc.c
Spencer Thomas: changed dabbrev.el emacsclient.c emacsserver.c gnus.texi
server.el tcp.c unexec.c
@ -2414,7 +2417,7 @@ Stefan Monnier: wrote bibtex.el cvs-status.el diff-mode.el log-edit.el
reveal.el smerge-mode.el
and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
keyboard.c keymap.c tex-mode.el fill.el alloc.c compile.el files.el
regex.c simple.el easy-mmode.el info.el syntax.c vc-hooks.el xdisp.c
regex.c simple.el easy-mmode.el vc-hooks.el info.el syntax.c xdisp.c
sh-script.el and 518 other files
Steinar Bang: changed imap.el
@ -2424,7 +2427,7 @@ Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi
Stephen A. Wood: changed fortran.el
Stephen Berman: changed allout.el recentf.el
Stephen Berman: changed allout.el find-dired.el recentf.el
Stephen C. Gilardi: changed configure.in
@ -2460,7 +2463,7 @@ Steve Youngs: changed mh-utils.el mh-xemacs-compat.el dgnushack.el
Steven E. Harris: changed nnheader.el
Steven Huwig: changed python.el
Steven Huwig: changed emacs.py python.el
Steven L. Baur: wrote earcon.el footnote.el gnus-audio.el gnus-setup.el
and changed gnus-xmas.el gnus-msg.el add-log.el dgnushack.el edebug.el
@ -2680,7 +2683,7 @@ Werner Lemberg: wrote sisheng.el vntelex.el
and changed TUTORIAL.de Makefile.in calc.texi chinese.el czech.el
european.el idlwave.el reftex-vars.el reftex.el reftex.texi slovak.el
supercite.el .cvsignore advice.el calc-forms.el calc-sel.el calendar.el
china-util.el cl-macs.el cl.texi complete.el and 43 other files
china-util.el cl-macs.el cl.texi complete.el and 44 other files
Wes Hardaker: changed gnus-score.el gnus-art.el gnus-sum.el gnus-win.el
@ -2731,11 +2734,13 @@ Yagi Tatsuya: changed gnus-art.el gnus-start.el
Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW
config.h emacs.c Makefile.in macos.texi darwin.h xfaces.c INSTALL
config.h emacs.c Makefile.in macos.texi INSTALL darwin.h xfaces.c
dispnew.c alloc.c and 77 other files
Yann Dirson: changed imenu.el
Yavor Doganov: changed emacs.1 etags.1
Yoichi Nakayama: changed browse-url.el finder.el man.el rfc2368.el
Yoni Rabkin Katzenell: changed faces.el whitespace.el

View File

@ -1,3 +1,15 @@
2007-05-20 Nick Roberts <nickrob@snap.net.nz>
* configure.in: Use HAVE_GPM instead of HAVE_GPM_H and implement
it like others.
* configure: Regenerate.
2007-05-20 Nick Roberts <nickrob@snap.net.nz>
* configure.in (AC_CHECK_HEADERS) Add gpm.h.
(AC_CHECK_LIB): Add -lgpm.
* configure: Regenerate.
2007-05-03 Glenn Morris <rgm@gnu.org>
* configure: Tweak message about the absence of shell functions.

View File

@ -112,6 +112,12 @@ Miles Bader
Thien-Thi Nguyen
VMS
Juanma Barranquero
lisp/bs.el
lisp/server.el
lib-src/emacsclient.c
lib-src/grep-changelog
==============================================================================
3.
==============================================================================
@ -149,13 +155,16 @@ src/filelock.c
src/filemode.c
src/firstfile.c
src/floatfns.c
src/fringe.c
src/fns.c
src/fontset.c
src/getloadavg.c
src/gmalloc.c
src/gtkutil.c
src/hftctl.c
src/indent.c
src/insdel.c
src/image.c
src/lastfile.c
src/lread.c
src/m/

View File

@ -53,12 +53,7 @@ http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00732.html
** michael.ewe@arcor.de, Apr 24: 22.0.98 not starting on Solaris 10/I386
http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg01113.html
** Takaaki.Ota@am.sony.com, May 2: table cell menu does not appear at the menubar
Bug is intermittent.
** Install python.el `with' patch from trunk.
** Install vc-hooks.el patch from trunk.
** coldwell@redhat.com, May 18: 22.0.99 emacs dumper (?) problem
* DOCUMENTATION

View File

@ -427,6 +427,14 @@ http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00257.html
http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg01427.html
lisp/progmodes/python.el
Dave Love alerted us to a potential legal problem:
http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00459.html
On consultation with a lawyer, we found there was no problem:
http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg00466.html
** Issues that are "fixed" for the release of Emacs 22, but we may
wish to revisit later in more detail
@ -587,8 +595,9 @@ Done: TUTORIAL.eo
*** These are copyright issues still to be addressed:
python.el potential legal problem
http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-04/msg00459.html
None known.
This file is part of GNU Emacs.

225
configure vendored
View File

@ -412,10 +412,10 @@ else
fi
test \$exitcode = 0") || {
echo Please tell bug-autoconf@gnu.org about your system,
echo including any error possibly output before this message.
echo This can help us improve future autoconf versions.
echo Configuration will now proceed without shell functions.
echo No shell found that supports shell functions.
echo Please tell autoconf@gnu.org about your system,
echo including any error possibly output before this
echo message
}
@ -683,7 +683,6 @@ LIBSOUND
PKG_CONFIG
ALSA_CFLAGS
ALSA_LIBS
CFLAGS_SOUND
SET_MAKE
XMKMF
@ -1340,6 +1339,7 @@ Optional Packages:
--with-tiff use -ltiff for displaying TIFF images
--with-gif use -lungif for displaying GIF images
--with-png use -lpng for displaying PNG images
--with-gpm use -lgpm for mouse support on a GNU/Linux console
--with-gtk use GTK (same as --with-x-toolkit=gtk)
--with-pkg-config-prog Path to pkg-config to use for finding GTK
--without-toolkit-scroll-bars
@ -1942,6 +1942,12 @@ if test "${with_png+set}" = set; then
fi
# Check whether --with-gpm was given.
if test "${with_gpm+set}" = set; then
withval=$with_gpm;
fi
# Check whether --with-gtk was given.
if test "${with_gtk+set}" = set; then
withval=$with_gtk;
@ -6492,7 +6498,6 @@ cat >>confdefs.h <<\_ACEOF
#define HAVE_ALSA 1
_ACEOF
fi
fi
@ -13937,6 +13942,213 @@ _ACEOF
fi
fi
### Use -lgpm if available, unless `--with-gpm=no'.
HAVE_GPM=no
if test "${with_gpm}" != "no"; then
if test "${ac_cv_header_gpm_h+set}" = set; then
{ echo "$as_me:$LINENO: checking for gpm.h" >&5
echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6; }
if test "${ac_cv_header_gpm_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_gpm_h" >&5
echo "${ECHO_T}$ac_cv_header_gpm_h" >&6; }
else
# Is the header compilable?
{ echo "$as_me:$LINENO: checking gpm.h usability" >&5
echo $ECHO_N "checking gpm.h usability... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
#include <gpm.h>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6; }
# Is the header present?
{ echo "$as_me:$LINENO: checking gpm.h presence" >&5
echo $ECHO_N "checking gpm.h presence... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <gpm.h>
_ACEOF
if { (ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6; }
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
{ echo "$as_me:$LINENO: WARNING: gpm.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: gpm.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: gpm.h: proceeding with the compiler's result" >&5
echo "$as_me: WARNING: gpm.h: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
{ echo "$as_me:$LINENO: WARNING: gpm.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: gpm.h: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: gpm.h: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: gpm.h: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: gpm.h: see the Autoconf documentation" >&5
echo "$as_me: WARNING: gpm.h: see the Autoconf documentation" >&2;}
{ echo "$as_me:$LINENO: WARNING: gpm.h: section \"Present But Cannot Be Compiled\"" >&5
echo "$as_me: WARNING: gpm.h: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: gpm.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: gpm.h: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: gpm.h: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: gpm.h: in the future, the compiler will take precedence" >&2;}
;;
esac
{ echo "$as_me:$LINENO: checking for gpm.h" >&5
echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6; }
if test "${ac_cv_header_gpm_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_header_gpm_h=$ac_header_preproc
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_gpm_h" >&5
echo "${ECHO_T}$ac_cv_header_gpm_h" >&6; }
fi
if test $ac_cv_header_gpm_h = yes; then
{ echo "$as_me:$LINENO: checking for Gpm_Open in -lgpm" >&5
echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6; }
if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char Gpm_Open ();
int
main ()
{
return Gpm_Open ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
ac_cv_lib_gpm_Gpm_Open=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_gpm_Gpm_Open=no
fi
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ echo "$as_me:$LINENO: result: $ac_cv_lib_gpm_Gpm_Open" >&5
echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6; }
if test $ac_cv_lib_gpm_Gpm_Open = yes; then
HAVE_GPM=yes
fi
fi
fi
if test "${HAVE_GPM}" = "yes"; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_GPM 1
_ACEOF
fi
if test "${ac_cv_header_malloc_malloc_h+set}" = set; then
{ echo "$as_me:$LINENO: checking for malloc/malloc.h" >&5
echo $ECHO_N "checking for malloc/malloc.h... $ECHO_C" >&6; }
@ -23111,6 +23323,7 @@ echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
echo " Does Emacs use -lungif? ${HAVE_GIF}"
echo " Does Emacs use -lpng? ${HAVE_PNG}"
echo " Does Emacs use -lgpm? ${HAVE_GPM}"
echo " Does Emacs use X toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
echo

View File

@ -113,6 +113,8 @@ AC_ARG_WITH(gif,
[ --with-gif use -lungif for displaying GIF images])
AC_ARG_WITH(png,
[ --with-png use -lpng for displaying PNG images])
AC_ARG_WITH(gpm,
[ --with-gpm use -lgpm for mouse support on a GNU/Linux console])
AC_ARG_WITH(gtk,
[ --with-gtk use GTK (same as --with-x-toolkit=gtk)])
AC_ARG_WITH(pkg-config-prog,
@ -1620,7 +1622,6 @@ if test "${with_sound}" != "no"; then
LIBSOUND="$LIBSOUND $ALSA_LIBS"
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
AC_SUBST()
fi
AC_SUBST(CFLAGS_SOUND)
fi
@ -2507,6 +2508,17 @@ if test "${HAVE_X11}" = "yes"; then
fi
fi
### Use -lgpm if available, unless `--with-gpm=no'.
HAVE_GPM=no
if test "${with_gpm}" != "no"; then
AC_CHECK_HEADER(gpm.h,
AC_CHECK_LIB(gpm, Gpm_Open, HAVE_GPM=yes))
fi
if test "${HAVE_GPM}" = "yes"; then
AC_DEFINE(HAVE_GPM, 1, [Define to 1 if you have the gpm library (-lgpm).])
fi
dnl Check for malloc/malloc.h on darwin
AC_CHECK_HEADER(malloc/malloc.h, AC_DEFINE(HAVE_MALLOC_MALLOC_H, 1, [Define to 1 if you have the <malloc/malloc.h> header file.]))
@ -3267,6 +3279,7 @@ echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
echo " Does Emacs use -ltiff? ${HAVE_TIFF}"
echo " Does Emacs use -lungif? ${HAVE_GIF}"
echo " Does Emacs use -lpng? ${HAVE_PNG}"
echo " Does Emacs use -lgpm? ${HAVE_GPM}"
echo " Does Emacs use X toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
echo

View File

@ -1,3 +1,31 @@
2007-05-19 Glenn Morris <rgm@gnu.org>
* images/cancel.pbm: Convert from PGM to PBM.
* images/copy.pbm, images/next-node.pbm, images/prev-node.pbm:
* images/save.pbm, images/up-node.pbm: Convert from PPM to PBM.
2007-05-17 Glenn Morris <rgm@gnu.org>
* PROBLEMS (Dumping): Mention OpenBSD macppc problem.
2007-05-15 Micha,Ak(Bl Cadilhac <michael@cadilhac.name>
* fr-refcard.tex: Rewrite using German layout.
* fr-refcard.ps: Regenerate.
2007-05-12 Richard Stallman <rms@gnu.org>
* refcard.tex (section{Incremental Search}): Minor corrections.
2007-05-12 Micha,Ak(Bl Cadilhac <michael@cadilhac.name>
* Makefile (viperCard.ps, calccard.ps refcard.ps)
(sk-dired-ref.ps sk-refcard.ps sk-survival.ps)
(de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps): Use an
explicit output argument for `dvips'.
2007-05-05 Glenn Morris <rgm@gnu.org>
* NEWS: Re-order.

View File

@ -64,10 +64,10 @@ use the set command until the inferior process has been started.
Put a breakpoint early in `main', or suspend the Emacs,
to get an opportunity to do the set command.
When Emacs is running in a terminal, it is useful to use a separate terminal
for the debug session. This can be done by starting Emacs as usual, then
attaching to it from gdb with the `attach' command which is explained in the
node "Attach" of the GDB manual.
When Emacs is running in a terminal, it is sometimes useful to use a separate
terminal for the debug session. This can be done by starting Emacs as usual,
then attaching to it from gdb with the `attach' command which is explained in
the node "Attach" of the GDB manual.
** Examining Lisp object values.

View File

@ -75,22 +75,22 @@ gnus-booklet.dvi: gnus-refcard.tex
## A4, landscape.
de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps: %.ps: %.dvi
dvips -t a4 -t landscape $<
dvips -t a4 -t landscape $< -o $@
## A4, portrait.
cs-dired-ref.ps cs-refcard.ps cs-survival.ps fr-drdref.ps \
pl-refcard.ps ru-refcard.ps \
sk-dired-ref.ps sk-refcard.ps sk-survival.ps: %.ps: %.dvi
dvips -t a4 $<
dvips -t a4 $< -o $@
## letter, landscape.
calccard.ps refcard.ps: %.ps: %.dvi
dvips -t letter -t landscape $<
dvips -t letter -t landscape $< -o $@
## letter, portrait.
dired-ref.ps gnus-booklet.ps gnus-refcard.ps survival.ps vipcard.ps \
viperCard.ps: %.ps: %.dvi
dvips -t letter $<
dvips -t letter $< -o $@
.PHONY: mostlyclean clean distclean maintainer-clean unlock relock

View File

@ -357,7 +357,7 @@ in the value, use `$$'.
** The default values of paragraph-start and indent-line-function have
been changed to reflect those used in Text mode rather than those used
in Indented-Text mode.
in Paragraph-Indent Text mode.
** The default for the paper size (variable ps-paper-type) is taken
from the locale.
@ -5013,9 +5013,9 @@ of multiline constructs so that such constructs get properly recognized.
*** New variable `magic-mode-alist' determines major mode for a file by
looking at the file contents. It takes precedence over `auto-mode-alist'.
*** New variable `file-start-mode-alist' determines major mode for a file by
*** New variable `magic-fallback-mode-alist' determines major mode for a file by
looking at the file contents. It is handled after `auto-mode-alist',
only if `auto-mode-alist' says nothing about the file.
only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file.
*** XML or SGML major mode is selected when file starts with an `<?xml'
or `<!DOCTYPE' declaration.

View File

@ -2772,6 +2772,15 @@ Remove the "#if 0" and "#endif" directives which surround this, save
the file, and then reconfigure and rebuild Emacs. The dumping process
should now succeed.
*** OpenBSD 4.0 macppc: Segfault during dumping.
The build aborts with signal 11 when the command `./temacs --batch
--load loadup bootstrap' tries to load files.el. A workaround seems
to be to reduce the level of compiler optimization used during the
build (from -O2 to -O1). It is possible this is an OpenBSD
GCC problem specific to the macppc architecture, possibly only
occurring with older versions of GCC (e.g. 3.3.5).
** Installation
*** Installing Emacs gets an error running `install-info'.

File diff suppressed because it is too large Load Diff

View File

@ -66,7 +66,7 @@
\def\versionnumber{2.3}
\def\versionemacs{22}
\def\versionyear{2006} % latest update
\def\versionyear{2007} % latest update
\def\year{2007} % latest copyright year
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
@ -79,14 +79,16 @@
\centerline{v\versionnumber{} pour GNU Emacs version \versionemacs,
\versionyear}
\centerline{conception de Stephen Gildea}
\centerline{traduction fran\c{c}aise d'\'Eric Jacoboni}
\centerline{traduction fran\c{c}aise de Micha\"el Cadilhac}
% previously: Eric Jacoboni
Vous pouvez faire et distribuer des copies de cette carte, pourvu que
la note de copyright et cette note de permission soient conserv\'ees sur
toutes les copies.
Pour les copies du manuel GNU Emacs, \'ecrivez \`a la Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Pour des copies du manuel GNU Emacs, \'ecrivez \`a la Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
\endgroup}
@ -121,13 +123,10 @@
\else %2 or 3 columns uses prereduced size
\hsize 3.2in
\vsize 7.95in
\if 1\the\letterpaper
\vsize 7.95in
\else
\vsize 7.65in
\fi
\hoffset -.75in
\voffset -.745in
% \hoffset -.75in
\hoffset -.49in
% \voffset -.745in
\voffset -.84in
\font\titlefont=cmbx10 \scaledmag2
\font\headingfont=cmbx10 \scaledmag1
\font\smallfont=cmr6
@ -146,11 +145,6 @@
\def\it{\eightit}
\def\tt{\eighttt}
\normalbaselineskip=.8\normalbaselineskip
\if 1\the\letterpaper
\normalbaselineskip=.8\normalbaselineskip
\else
\normalbaselineskip=.7\normalbaselineskip
\fi
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
@ -200,7 +194,7 @@
\chardef\{=`\{
\chardef\}=`\}
\hyphenation{mini-buf-fer}
\hyphenation{mini-tam-pon}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
@ -216,8 +210,8 @@
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
\vskip 2ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip 1ex plus 1ex minus 1.5ex}
\vskip 2ex plus 1.5ex minus 2.5ex {\headingfont #1}\mark{#1}%
\vskip 1.5ex plus 1ex minus 1.5ex}
\newdimen\keyindent
@ -250,10 +244,9 @@
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
\def\key#1#2{\leavevmode\hbox to \hsize{\vbox
{\hsize=.75\hsize\rightskip=1em \tolerance=20000
\raggedright
\hskip\keyindent\hangindent=1em\strut#1\strut}\kbd{\quad#2}\hss}}
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
@ -265,12 +258,10 @@
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name. (The "M-x " sticks out to the left.)
% Note: was \hsize=.74, but changed to avoid overflow in some places.
\def\metax#1#2{\leavevmode\hbox to \hsize{\vbox
{\hsize=.66\hsize\rightskip=1em
\raggedright \tolerance=20000
\hskip\keyindent\hangindent=1em\strut#1\strut\par}%
%\hskip-\metaxwidth minus 1fil
\kbd{#2}\hss}}
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
{\hskip\keyindent\relax#1\hfil}%
\hskip -\metaxwidth minus 1fil
\kbd{#2}\hfil}}
% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
@ -284,395 +275,378 @@
\centerline{(pour la version \versionemacs)}
\section{Lancement d'Emacs}
\section{Lancer Emacs}
Pour lancer GNU Emacs \versionemacs, il suffit de taper son nom : \kbd{emacs}
Pour charger un fichier \`a \'editer, voir Fichiers, ci-dessous.
Pour lancer GNU Emacs \versionemacs, tapez juste son nom : \kbd{emacs}.
\section{Quitter Emacs}
\key{suspend Emacs (ou l'iconifie sous X)}{C-z}
\key{quitter d\'efinitivement Emacs}{C-x C-c}
\key{Suspendre Emacs (ou l'iconifier sous X)}{C-z}
\key{Quitter d\'efinitivement Emacs}{C-x C-c}
\section{Fichiers}
\key{{\bf lire} un fichier dans Emacs}{C-x C-f}
\key{{\bf sauvegarder} un fichier sur disque}{C-x C-s}
\key{sauvegarder {\bf tous} les fichiers}{C-x s}
\key{{\bf ins\'erer} le contenu d'un autre fichier dans ce tampon}{C-x i}
\key{remplacer ce fichier par le fichier voulu}{C-x C-v}
\key{\'ecrire le tampon dans un fichier donn\'e}{C-x C-w}
\key{bascule du mode lecture-seule du tampon}{C-x C-q}
\key{{\bf Lire} un fichier}{C-x C-f}
\key{{\bf Sauvegarder} un fichier}{C-x C-s}
\key{Sauvegarder {\bf tous} les fichiers}{C-x s}
\key{{\bf Ins\'erer} un fichier sous le point (curseur)}{C-x i}
\key{Remplacer le fichier par un autre fichier}{C-x C-v}
\key{Sauvegarder sous un autre nom de fichier}{C-x C-w}
\key{Basculer en mode lecture seule}{C-x C-q}
\section{Obtenir de l'aide}
Le syst\`eme d'aide est simple. Faites \kbd{C-h} (ou \kbd{F1}) et suivez
les instructions. Si vous d\'ebutez, faites \kbd{C-h t} pour suivre un
Le syst\`eme d'aide est simple. Faites \kbd{C-h} (ou \kbd{F1}) et
suivez les instructions. Si vous d\'ebutez, faites \kbd{C-h t} pour un
{\bf didacticiel}.
\key{supprimer la fen\^etre d'aide}{C-x 1}
\key{faire d\'efiler la fen\^etre d'aide}{C-M-v}
\key{Supprimer la fen\^etre d'aide}{C-x 1}
\key{Faire d\'efiler la fen\^etre d'aide}{C-M-v}
\key{apropos : montrer les commandes contenant une certaine cha\^\i{}ne}{C-h a}
\key{d\'ecrire la fonction lanc\'ee par une touche}{C-h k}
\key{d\'ecrire une fonction}{C-h f}
\key{obtenir des informations sp\'ecifiques au mode}{C-h m}
\key{Rechercher des commandes selon une cha\^\i{}ne}{C-h a}
\key{D\'ecrire la fonction associ\'ee \`a une touche}{C-h k}
\key{D\'ecrire une fonction}{C-h f}
\key{Obtenir des informations relatives au mode}{C-h m}
\section{R\'ecup\'eration des erreurs}
\section{R\'ecup\'eration sur erreurs}
\key{{\bf avorter} une commande partiellement tap\'ee ou ex\'ecut\'ee}{C-g}
\metax{{\bf r\'ecup\'erer} les fichier perdus par un crash du syst\`eme}{M-x recover-session}
\metax{{\bf annuler} une modification non souhait\'ee}{C-x u, C-_ {\rm ou} C-/}
\metax{restaurer un tampon avec son contenu initial}{M-x revert-buffer}
\key{r\'eafficher un \'ecran perturb\'e}{C-l}
\shortcopyrightnotice
\key{{\bf Abandonner} une commande}{C-g}
\metax{{\bf R\'ecup\'erer} les fichiers apr\`es un crash}{M-x recover-session}
\metax{{\bf Annuler} une modification}{C-x u, C-_ {\rm ou} C-/}
\metax{Annuler toutes les modifications}{M-x revert-buffer}
\key{R\'eafficher un \'ecran perturb\'e}{C-l}
\section{Recherche incr\'ementale}
\key{rechercher vers l'avant}{C-s}
\key{rechercher vers l'arri\`ere}{C-r}
\key{rechercher vers l'avant par expression rationnelle}{C-M-s}
\key{rechercher vers l'arri\`ere par expression rationnelle}{C-M-r}
\key{Rechercher en avant}{C-s}
\key{Rechercher en arri\`ere}{C-r}
\key{Rechercher en avant (expression rationnelle)}{C-M-s}
\key{Rechercher en arri\`ere (expression rationnelle)}{C-M-r}
\key{s\'electionner la cha\^\i{}ne de recherche pr\'ec\'edente}{M-p}
\key{s\'electionner la cha\^\i{}ne de recherche suivante}{M-n}
\key{sortir de la recherche incr\'ementale}{RET}
\key{annuler l'effet du dernier caract\`ere}{DEL}
\key{annuler la recherche en cours}{C-g}
\key{Utiliser la cha\^\i{}ne de recherche pr\'ec\'edente}{M-p}
\key{Utiliser la cha\^\i{}ne de recherche suivante}{M-n}
\key{Quitter la recherche incr\'ementale}{RET}
\key{Annuler l'effet du dernier caract\`ere}{DEL}
\key{Annuler la recherche en cours}{C-g}
Refaites \kbd{C-s} ou \kbd{C-r} pour r\'ep\'eter la recherche dans une
direction quelconque.
Si Emacs est encore en train de chercher, \kbd{C-g} n'annule que ce
qui n'a pas \'et\'e fait.
des directions.
En cours de recherche, \kbd{C-g} efface les derniers caract\`eres et
ne conserve que le pr\'efixe d\'ej\`a trouv\'e.
\shortcopyrightnotice
\section{D\'eplacements}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf entit\'e sur laquelle se d\'eplacer}}{{\bf en arri\`ere}}{{\bf en avant}}
\threecol{caract\`ere}{C-b}{C-f}
\threecol{mot}{M-b}{M-f}
\threecol{ligne}{C-p}{C-n}
\threecol{aller au d\'ebut (ou \`a la fin) de la ligne}{C-a}{C-e}
\threecol{phrase}{M-a}{M-e}
\threecol{paragraphe}{M-\{}{M-\}}
\threecol{page}{C-x [}{C-x ]}
\threecol{s-expression}{C-M-b}{C-M-f}
\threecol{fonction}{C-M-a}{C-M-e}
\threecol{aller au d\'ebut (ou \`a la fin) du tampon}{M-<}{M->}
\threecol{{\bf Objet sur lequel se d\'eplacer}}{{\bf En
arri\`ere}}{{\bf En avant}}
\threecol{Caract\`ere}{C-b}{C-f}
\threecol{Mot}{M-b}{M-f}
\threecol{Ligne}{C-p}{C-n}
\threecol{Aller en d\'ebut/fin de la ligne}{C-a}{C-e}
\threecol{Phrase}{M-a}{M-e}
\threecol{Paragraphe}{M-\{}{M-\}}
\threecol{Page}{C-x [}{C-x ]}
\threecol{S-expression}{C-M-b}{C-M-f}
\threecol{Fonction}{C-M-a}{C-M-e}
\threecol{Aller en d\'ebut/fin du tampon}{M-<}{M->}
}
\key{passer \`a l'\'ecran suivant}{C-v}
\key{passer \`a l'\'ecran pr\'ec\'edent}{M-v}
\key{d\'efiler l'\'ecran vers la droite}{C-x <}
\key{d\'efiler l'\'ecran vers la gauche}{C-x >}
\key{placer la ligne courante au centre de l'\'ecran}{C-u C-l}
\key{Passer \`a l'\'ecran suivant}{C-v}
\key{Passer \`a l'\'ecran pr\'ec\'edent}{M-v}
\key{Faire d\'efiler l'\'ecran vers la gauche}{C-x <}
\key{Faire d\'efiler l'\'ecran vers la droite}{C-x >}
\key{Placer la ligne courante au centre de l'\'ecran}{C-u C-l}
\section{D\'etruire et supprimer}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf entit\'e \`a supprimer}}{{\bf en arri\`ere}}{{\bf en avant}}
\threecol{caract\`ere (suppression, pas destruction)}{DEL}{C-d}
\threecol{mot}{M-DEL}{M-d}
\threecol{ligne (jusqu'\`a la fin)}{M-0 C-k}{C-k}
\threecol{phrase}{C-x DEL}{M-k}
\threecol{s-expression}{M-- C-M-k}{C-M-k}
\threecol{{\bf Objet \`a supprimer}}{{\bf En arri\`ere}}{{\bf En avant}}
\threecol{Caract\`ere (suppression)}{DEL}{C-d}
\threecol{Mot}{M-DEL}{M-d}
\threecol{Ligne (jusqu'au d\'ebut/fin)}{M-0 C-k}{C-k}
\threecol{Phrase}{C-x DEL}{M-k}
\threecol{S-expression}{M-- C-M-k}{C-M-k}
}
\key{d\'etruire une {\bf r\'egion}}{C-w}
\key{copier une r\'egion dans le kill ring}{M-w}
\key{d\'etruire jusqu'\`a l'occurrence suivante de {\it car}}{M-z {\it car}}
\key{D\'etruire une {\bf r\'egion}}{C-w}
\key{Copier une r\'egion dans le {\it kill ring}}{M-w}
\key{D\'etruire jusqu'\`a l'occurrence suivante de {\it car}}{M-z {\it car}}
\key{r\'ecup\'erer la derni\`ere chose d\'etruite}{C-y}
\key{remplacer la derni\`ere r\'ecup\'eration par ce qui a \'et\'e d\'etruit avant}{M-y}
\key{R\'ecup\'erer la derni\`ere r\'egion d\'etruite}{C-y}
\key{R\'ecup\'erer la r\'egion d\'etruite pr\'ec\'edente}{M-y}
\section{Marquer}
\key{placer la marque ici}{C-@ {\rm ou} C-SPC}
\key{\'echanger le point et la marque}{C-x C-x}
\key{Placer la marque au point}{C-@ {\rm ou} C-SPC}
\key{\'Echanger le point et la marque}{C-x C-x}
\key{placer la marque {\it arg\/} {\bf mots} plus loin}{M-@}
\key{marquer le {\bf paragraphe}}{M-h}
\key{marquer la {\bf page}}{C-x C-p}
\key{marquer la {\bf s-expression}}{C-M-@}
\key{marquer la {\bf fonction}}{C-M-h}
\key{marquer tout le {\bf tampon}}{C-x h}
\key{Placer la marque un {\bf mot} plus loin}{M-@}
\key{Marquer le {\bf paragraphe}}{M-h}
\key{Marquer la {\bf page}}{C-x C-p}
\key{Marquer la {\bf s-expression}}{C-M-@}
\key{Marquer la {\bf fonction}}{C-M-h}
\key{Marquer tout le {\bf tampon}}{C-x h}
\section{Remplacement interactif}
\key{remplacer interactivement une cha\^\i{}ne de texte}{M-\%}
\key{Remplacer une cha\^\i{}ne de texte}{M-\%}
% query-replace-regexp est liee a C-M-% mais on ne peut pas le
% taper dans une console.
% Hack to prevent overflow. Please someone fix this properly.
\metax{en utilisant les expressions \hskip 20pt rationnelles}
{\hskip -30pt M-x query-replace-regexp}
\metax{\hskip 10pt \`a l'aide d'expr. rationnelles}{M-x query-replace-regexp}
Les r\'eponses admises dans le mode de remplacement interactif sont :
R\'eponses possibles pour chaque occurrence dans le mode de
remplacement interactif :
\key{{\bf remplacer} celle-l\`a, passer \`a la suivante}{SPC}
\key{remplacer celle-l\`a, rester l\`a}{,}
\key{{\bf passer} \`a la suivante sans remplacer}{DEL}
\key{remplacer toutes les correspondances suivantes}{!}
\key{{\bf revenir} \`a la correspondance pr\'ec\'edente}{^}
\key{{\bf sortir} du remplacement interactif}{RET}
\key{entrer dans l'\'edition r\'ecursive (\kbd{C-M-c} pour sortir)}{C-r}
\key{{\bf Remplacer} celle-l\`a, passer \`a la suivante}{SPC}
\key{Remplacer celle-l\`a, rester l\`a}{,}
\key{{\bf Passer} \`a la suivante sans remplacer}{DEL}
\key{Remplacer toutes les occurrences suivantes}{!}
\key{{\bf Revenir} \`a l'occurrence pr\'ec\'edente}{^}
\key{{\bf Quitter} le remplacement interactif}{RET}
\key{{\bf \'Editer} avant de reprendre (\kbd{C-M-c} : sortir)}{C-r}
\section{Fen\^etres multiples}
Lorsqu'il y a deux commandes, la seconde est une commande identique \`a
la premi\`ere pour un cadre au lieu d'une fen\^etre.
Lorsqu'il y a deux commandes, la seconde est celle qui concerne non
pas les fen\^etres mais les cadres.
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 0\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{supprimer toutes les autres fen\^etres}{C-x 1\ \ \ \ }{C-x 5 1}
\threecol{diviser la fen\^etre horizontalement}{C-x 2\ \ \ \ }{C-x 5 2}
\threecol{supprimer cette fen\^etre}{C-x 0\ \ \ \ }{C-x 5 0}
\threecol{Supprimer toutes les autres fen\^etres}{C-x 1\ \ \ \ }{C-x 5 1}
\threecol{Supprimer cette fen\^etre}{C-x 0\ \ \ \ }{C-x 5 0}
\threecol{Diviser la fen\^etre horizontalement}{C-x 2\ \ \ \ }{C-x 5 2}
}}
\key{diviser la fen\^etre verticalement}{C-x 3}
\key{Diviser la fen\^etre verticalement}{C-x 3}
\key{faire d\'efiler l'autre fen\^etre}{C-M-v}
\key{Faire d\'efiler l'autre fen\^etre}{C-M-v}
%% tabskip reduced from 10 to 3pt to fit on letterpaper.
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0
\paralign to \hsize{#\tabskip=3pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{placer le curseur dans une autre fen\^etre}{C-x o}{C-x 5 o}
\threecol{S\'electionner une autre fen\^etre}{C-x o}{C-x 5 o}
%% Hack in a line break to avoid overflow.
\threecol{\raggedright s\'electionner le tampon dans\cr
\hskip 10pt l'autre fen\^etre}{C-x 4 b}{C-x 5 b}
\threecol{afficher le tampon dans l'autre fen\^etre}{C-x 4 C-o}{C-x 5 C-o}
\threecol{charger un fichier dans l'autre fen\^etre}{C-x 4 f}{C-x 5 f}
%% Hack in a line break to avoid overflow.
\threecol{\raggedright charger un fichier en lecture seule\cr
\hskip 10pt dans l'autre fen\^etre}{C-x 4 r}{C-x 5 r}
\threecol{lancer Dired dans l'autre fen\^etre}{C-x 4 d}{C-x 5 d}
\threecol{trouver un tag dans l'autre fen\^etre}{C-x 4 .}{C-x 5 .}
\threecol{Choisir un tampon (autre fen\^etre)}{C-x 4 b}{C-x 5 b}
\threecol{Afficher un tampon (autre fen\^etre)}{C-x 4 C-o}{C-x 5 C-o}
\threecol{Lire un fichier (autre fen\^etre)}{C-x 4 f}{C-x 5 f}
\threecol{\hskip 10pt en lecture seule}{C-x 4 r}{C-x 5 r}
\threecol{Lancer Dired (autre fen\^etre)}{C-x 4 d}{C-x 5 d}
\threecol{Trouver un tag (autre fen\^etre)}{C-x 4 .}{C-x 5 .}
}}
\key{agrandir la fen\^etre}{C-x ^}
\key{rapetisser la fen\^etre}{C-x \{}
\key{\'elargir la fen\^etre}{C-x \}}
\key{Agrandir la fen\^etre verticalement}{C-x ^}
\key{R\'eduire la fen\^etre horizontalement}{C-x \{}
\key{Agrandir la fen\^etre horizontalement}{C-x \}}
\section{Formater}
\key{indenter la {\bf ligne} courante (d\'epend du mode)}{TAB}
\key{indenter la {\bf r\'egion} courante (d\'epend du mode)}{C-M-\\}
\key{indenter la {\bf s-expression} courante (d\'epend du mode)}{C-M-q}
\key{indenter la r\'egion sur {\it arg\/} colonnes}{C-x TAB}
\key{Indenter la {\bf ligne} courante (selon le mode)}{TAB}
\key{Indenter la {\bf r\'egion} courante (selon le mode)}{C-M-\\}
\key{Indenter la {\bf s-expr.} courante (selon le mode)}{C-M-q}
\key{Indenter la r\'egion sur une colonne}{C-x TAB}
\key{Ins\'erer un retour \`a la ligne apr\`es le point}{C-o}
\key{D\'eplacer le reste de la ligne vers le bas}{C-M-o}
\key{Supprimer les lignes vierges autour du point}{C-x C-o}
\key{Joindre \`a la ligne pr\'ec\'edente (suiv. avec {\it arg\/})}{M-^}
\key{Supprimer tous les espaces autour du point}{M-\\}
\key{Mettre exactement une espace au point}{M-SPC}
\key{ins\'erer un newline apr\`es le point}{C-o}
\key{d\'eplacer le reste de la ligne vers le bas}{C-M-o}
\key{supprimer les lignes blanches autour du point}{C-x C-o}
\key{joindre la ligne \`a la pr\'ec\'edente (\`a la suivante avec arg)}{M-^}
\key{supprimer tous les espaces autour du point}{M-\\}
\key{mettre exactement un espace \`a l'emplacement du point}{M-SPC}
\key{Formater le paragraphe}{M-q}
\key{Placer la marge droite \`a {\it arg\/} colonnes}{C-u {\it arg\/} C-x f}
\key{D\'efinir le pr\'efixe des lignes}{C-x .}
\key{remplir le paragraphe}{M-q}
\key{placer la marge droite}{C-x f}
\key{d\'efinir le pr\'efixe par lequel commencera chaque ligne}{C-x .}
\key{d\'efinir la fonte}{M-o}
\key{D\'efinir la fonte}{M-o}
\section{Modifier la casse}
\key{mettre le mot en majuscules}{M-u}
\key{mettre le mot en minuscules}{M-l}
\key{mettre le mot en capitales}{M-c}
\key{Mettre le mot en capitales}{M-u}
\key{Mettre le mot en minuscules}{M-l}
\key{Mettre une majuscule au mot}{M-c}
\key{mettre la r\'egion en majuscules}{C-x C-u}
\key{mettre la r\'egion en minuscules}{C-x C-l}
\key{Mettre la r\'egion en capitales}{C-x C-u}
\key{Mettre la r\'egion en minuscules}{C-x C-l}
\section{Le mini-tampon}
Les touches suivantes sont utilisables dans le mini-tampon :
Dans le mini-tampon :
\key{compl\'eter autant que possible}{TAB}
\key{compl\'eter un mot}{SPC}
\key{compl\'eter et ex\'ecuter}{RET}
\key{montrer les compl\'etions possibles}{?}
\key{rechercher l'entr\'ee pr\'ec\'edente du mini-tampon}{M-p}
\key{rechercher l'entr\'ee suivante du mini-tampon ou le d\'efaut}{M-n}
\key{rechercher \`a rebours par expr. rationnelle dans l'historique}{M-r}
\key{rechercher vers l'avant par expr. rationnelle dans l'historique}{M-s}
\key{annuler la commande}{C-g}
\key{Compl\'eter autant que possible}{TAB}
\key{Compl\'eter un mot}{SPC}
\key{Compl\'eter et ex\'ecuter}{RET}
\key{Montrer les compl\`etements possibles}{?}
\key{Utiliser l'entr\'ee pr\'ec\'edente du mini-tampon}{M-p}
\key{Utiliser l'entr\'ee suivante du mini-tampon}{M-n}
\key{Rechercher en arri\`ere dans l'historique}{M-r}
\key{Rechercher en avant dans l'historique}{M-s}
\key{Quitter en annulant la commande}{C-g}
Faites \kbd{C-x ESC ESC} pour \'editer et r\'ep\'eter la derni\`ere commande
ayant utilis\'e le minitampon. Faites \kbd{F10} pour activer la barre de
menu utilisant le minitampon.
Faites \kbd{C-x ESC ESC} pour \'editer et r\'ep\'eter la derni\`ere
commande ayant utilis\'e le mini-tampon. Faites \kbd{F10} pour
utiliser la barre de menu sur un terminal en utilisant le mini-tampon.
\newcolumn
\title{Carte de r\'ef\'erence de GNU Emacs}
\section{Tampons}
\key{s\'electionner un autre tampon}{C-x b}
\key{\'enum\'erer tous les tampons}{C-x C-b}
\key{supprimer un tampon}{C-x k}
\key{Choisir un autre tampon}{C-x b}
\key{Lister tous les tampons}{C-x C-b}
\key{Supprimer un tampon}{C-x k}
\section{Transposer}
\key{transposer des {\bf caract\`eres}}{C-t}
\key{transposer des {\bf mots}}{M-t}
\key{transposer des {\bf lignes}}{C-x C-t}
\key{transposer des {\bf s-expressions}}{C-M-t}
\key{Transposer des {\bf caract\`eres}}{C-t}
\key{Transposer des {\bf mots}}{M-t}
\key{Transposer des {\bf lignes}}{C-x C-t}
\key{Transposer des {\bf s-expressions}}{C-M-t}
\section{V\'erifier l'orthographe}
\key{v\'erifier l'orthographe du mot courant}{M-\$}
\metax{v\'erifier l'orthographe de tous les mots d'une r\'egion}{M-x ispell-region}
\metax{v\'erifier l'orthographe de tout le tampon}{M-x ispell-buffer}
\key{V\'erifier l'orthographe du mot courant}{M-\$}
\metax{V\'erifier l'orthographe d'une r\'egion}{M-x ispell-region}
\metax{V\'erifier l'orthographe de tout le tampon}{M-x ispell-buffer}
\section{Tags}
\key{trouver un tag (une d\'efinition)}{M-.}
\key{trouver l'occurrence suivante du tag}{C-u M-.}
\metax{sp\'ecifier un nouveau fichier de tags}{M-x visit-tags-table}
\key{Trouver un tag (une d\'efinition)}{M-.}
\key{Passer \`a l'occurrence suivante du tag}{C-u M-.}
\metax{Sp\'ecifier un autre fichier de tags}{M-x visit-tags-table}
\metax{rechercher par expr. rationnelles dans tous les fichiers du
tableau de tags}{M-x tags-search}
%% Overflow hack.
\metax{lancer un remplacement interactif sur tous les fichiers}%
{\hskip -9pt M-x tags-query-replace}
\key{continuer la derni\`ere recherche de tags ou le remplacement interactif}{M-,}
\metax{Rechercher dans tous les fichiers des tags}{M-x tags-search}
\section{Shells}
\metax{Remplacer dans tous les fichiers}{M-x tags-query-replace}
\key{Continuer la recherche ou le remplacement}{M-,}
\key{ex\'ecuter une commande shell}{M-!}
\key{lancer une commande shell sur la r\'egion}{M-|}
\key{filtrer la r\'egion avec une commande shell}{C-u M-|}
\key{lancer un shell dans la fen\^etre \kbd{*shell*}}{M-x shell}
\section{Shell}
\key{Ex\'ecuter une commande shell}{M-!}
\key{Lancer une commande shell sur la r\'egion}{M-|}
\key{Filtrer la r\'egion avec une commande shell}{C-u M-|}
\key{Lancer un shell dans la fen\^etre {\tt *shell*}}{M-x shell}
\section{Rectangles}
\key{copier le rectangle dans le registre}{C-x r r}
\key{d\'etruire le rectangle}{C-x r k}
\key{r\'ecup\'erer le rectangle}{C-x r y}
\key{ouvrir le rectangle, en d\'ecalant le texte \`a droite}{C-x r o}
\key{vider le rectangle}{C-x r c}
\key{pr\'efixer chaque ligne avec une cha\^\i{}ne}{C-x r t}
\key{Copier le rectangle dans un registre}{C-x r r}
\key{D\'etruire le rectangle}{C-x r k}
\key{R\'ecup\'erer le rectangle}{C-x r y}
\key{D\'ecaler le rectangle \`a droite}{C-x r o}
\key{Vider le rectangle}{C-x r c}
\key{Pr\'efixer chaque ligne du rectangle}{C-x r t}
\section{Abr\'eviations}
\key{ajouter une abr\'eviation globale}{C-x a g}
\key{ajouter une abr\'eviation locale au mode}{C-x a l}
\key{ajouter une expansion globale pour cette abr\'eviation}{C-x a i g}
\key{ajouter une expansion locale au mode pour cette abr\'eviation}{C-x a i l}
\key{faire une expansion explicite de cette abr\'eviation}{C-x a e}
\key{Ajouter une abr\'eviation globale}{C-x a g}
\key{Ajouter une abr\'eviation locale au mode}{C-x a l}
\key{Ajouter une expansion globale}{C-x a i g}
\key{Ajouter une expansion locale au mode}{C-x a i l}
\key{Faire une expansion explicite de l'abr\'eviation}{C-x a e}
\key{faire une expansion dynamique du mot pr\'ec\'edent}{M-/}
\key{Faire une expansion du mot pr\'ec\'edent}{M-/}
\section{Expressions rationnelles}
\key{un unique caract\`ere quelconque, sauf une fin de ligne}{. {\rm(point)}}
\key{z\'ero r\'ep\'etition ou plus}{*}
\key{une r\'ep\'etition ou plus}{+}
\key{z\'ero ou une r\'ep\'etition}{?}
\key{caract\`ere sp\'ecial pour quoter l'expression rationnelle {\it c\/}}{\\{\it c}}
\key{alternative (``ou'')}{\\|}
\key{regroupement}{\\( {\rm$\ldots$} \\)}
\key{le m\^eme texte que dans le {\it n\/}i\`eme groupe}{\\{\it n}}
\key{limite de mot}{\\b}
\key{non limite de mot}{\\B}
\key{Un caract\`ere quelconque, sauf fin de ligne}{. {\rm(point)}}
\key{Z\'ero r\'ep\'etition ou plus}{*}
\key{Une r\'ep\'etition ou plus}{+}
\key{Z\'ero ou une r\'ep\'etition}{?}
\key{\'Echapper le caract\`ere sp\'ecial {\it c\/}}{\\{\it c}}
\key{Alternative (``ou'' non exclusif)}{\\|}
\key{Regroupement}{\\( {\rm$\ldots$} \\)}
\key{Reprendre le texte du {\it n\/}-i\`eme groupement}{\\{\it n}}
\key{Limite de mot}{\\b}
\key{Non limite de mot}{\\B}
%% tabskip reduced from 10 to 5pt for letterpaper.
\paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf entit\'e}}{{\bf d\'ebut}}{{\bf fin}}
\threecol{ligne}{^}{\$}
\threecol{mot}{\\<}{\\>}
\threecol{tampon}{\\`}{\\'}
\threecol{{\bf Objet}}{{\bf D\'ebut}}{{\bf Fin}}
\threecol{Ligne}{^}{\$}
\threecol{Mot}{\\<}{\\>}
\threecol{Tampon}{\\`}{\\'}
\threecol{{\bf classe de caract\`ere}}{{\bf correspond}}
{{\bf correspond \`a d'autres}}
\threecol{ensemble explicite}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
\threecol{caract\`ere de mot}{\\w}{\\W}
%% Overflow hack.
\threecol{\raggedright caract\`ere avec la\cr \hskip 5pt syntaxe {\it c}}%
{\\s{\it c}}{\\S{\it c}}
\threecol{{\bf Classe de caract\`ere}}{{\bf Correspond}}%
{{\bf Compl\'ement}}
\threecol{Ensemble explicite}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
\threecol{Caract\`ere de mot}{\\w}{\\W}
\threecol{Caract\`ere avec la syntaxe {\it c}}{\\s{\it c}}{\\S{\it c}}
}
\section{Jeux de caract\`eres internationaux}
\key{indiquer la langue principale}{C-x RET l}
%% Overflow hack.
\metax{montrer toutes les m\'ethodes de saisie}
{\hskip -10pt M-x list-input-methods}
\key{activer ou d\'esactiver la m\'ethode de saisie}{C-\\}
\key{choisir le syst\`eme de codage pour la commande suivante}{C-x RET c}
%% Overflow hack.
\metax{montrer tous les syst\`emes de codage}%
{\hskip -10pt M-x list-coding-systems}
%% Overflow hack.
\metax{choisir le syst\`eme de codage pr\'ef\'er\'e}%
{\hskip -10pt M-x prefer-coding-system}
\key{Pr\'eciser la langue principale}{C-x RET l}
\metax{Lister les m\'ethodes de saisie}{M-x list-input-methods}
\key{Activer/d\'esactiver la m\'ethode de saisie}{C-\\}
\key{Choisir le codage pour la commande suivante}{C-x RET c}
\metax{Lister les codages}{M-x list-coding-systems}
\metax{Choisir le codage pr\'ef\'er\'e}{M-x prefer-coding-system}
\section{Info}
\key{entrer dans le visualisateur de la documentation Info}{C-h i}
\key{chercher une fonction ou une variable pr\'ecise dans Info}{C-h S}
\key{Lire une documentation Info}{C-h i}
\key{Rechercher une fonction/variable dans Info}{C-h S}
\beginindentedkeys
Se d\'eplacer dans un n\oe{}ud :
\key{une page plus bas}{SPC}
\key{une page plus haut}{DEL}
\key{d\'ebut du n\oe{}ud}{. {\rm (point)}}
\key{Page suivante}{SPC}
\key{Page pr\'ec\'edente}{DEL}
\key{D\'ebut du n\oe{}ud}{. {\rm (point)}}
Passer de n\oe{}ud en n\oe{}ud :
Navigation entre n\oe{}uds :
\key{n\oe{}ud {\bf suivant}}{n}
\key{n\oe{}ud {\bf pr\'ec\'edent}}{p}
\key{aller {\bf plus haut}}{u}
\key{choisir un sujet de menu par son nom}{m}
\key{choisir le {\it n\/}i\`eme sujet de menu par son num\'ero (1--9)}{{\it n}}
\key{suivre une r\'ef\'erence crois\'ee (on revient avec \kbd{l})}{f}
\key{revenir au dernier n\oe{}ud visit\'e}{l}
\key{revenir au n\oe{}ud du r\'epertoire}{d}
\key{aller au n\oe{}ud de plus haut niveau du fichier Info}{t}
\key{aller sur n'importe quel n\oe{}ud par son nom}{g}
\key{N\oe{}ud {\bf suivant}}{n}
\key{N\oe{}ud {\bf pr\'ec\'edent}}{p}
\key{{\bf Remonter} d'un niveau}{u}
\key{Choisir un sujet du menu par son nom}{m}
\key{Choisir le {\it n\/}-i\`eme sujet (1--9)}{{\it n}}
\key{Suivre une r\'ef\'erence crois\'ee (retour avec \kbd{l})}{f}
\key{Revenir au dernier n\oe{}ud visit\'e}{l}
\key{Aller au sommaire Info}{d}
\key{Aller au n\oe{}ud le plus haut du manuel}{t}
\key{Aller sur un n\oe{}ud par son nom}{g}
Autres :
\key{lancer le {\bf didacticiel} Info}{h}
\key{chercher un sujet dans l'index}{i}
\key{rechercher les n\oe{}uds avec une expression rationnelle}{s}
\key{{\bf quitter} Info}{q}
\key{Aller au {\bf didacticiel} Info}{h}
\key{Rechercher un sujet dans l'index}{i}
\key{Rechercher un n\oe{}ud par expr. rationnelle}{s}
\key{{\bf Quitter} Info}{q}
\endindentedkeys
\section{Registres}
\key{sauver la r\'egion dans un registre}{C-x r s}
\key{ins\'erer le contenu du registre dans le tampon}{C-x r i}
\key{Sauver la r\'egion dans un registre}{C-x r s}
\key{Ins\'erer le contenu d'un registre}{C-x r i}
\key{sauver la valeur du point dans un registre}{C-x r SPC}
\key{sauter au point sauv\'e dans le registre}{C-x r j}
\key{Sauver la valeur du point dans un registre}{C-x r SPC}
\key{Aller au point sauv\'e dans un registre}{C-x r j}
\section{Macros clavier}
\key{{\bf lancer} la d\'efinition d'une macro clavier}{C-x (}
\key{{\bf terminer} la d\'efinition d'une macro clavier}{C-x )}
\key{{\bf ex\'ecuter} la derni\`ere macro clavier d\'efinie}{C-x e}
\key{ajouter \`a la derni\`ere macro clavier}{C-u C-x (}
\metax{donner un nom \`a la derni\`ere macro clavier}{M-x name-last-kbd-macro}
\metax{ins\'erer une d\'efinition Lisp dans le tampon}{M-x insert-kbd-macro}
\key{{\bf Lancer} la d\'efinition d'une macro clavier}{C-x (}
\key{{\bf Terminer} la d\'efinition d'une macro clavier}{C-x )}
\key{{\bf Ex\'ecuter} la derni\`ere macro clavier d\'efinie}{C-x e}
\key{Faire un ajout \`a la derni\`ere macro clavier}{C-u C-x (}
\metax{Nommer la derni\`ere macro clavier}{M-x name-last-kbd-macro}
\metax{En ins\'erer une d\'efinition Lisp}{M-x insert-kbd-macro}
\section{Commandes de gestion d'Emacs Lisp}
\key{\'evaluer la {\bf s-expression} situ\'ee avant le point}{C-x C-e}
\key{\'evaluer la {\bf defun} courante}{C-M-x}
\metax{\'evaluer la {\bf r\'egion}}{M-x eval-region}
\key{lire et \'evaluer le mini-tampon}{M-:}
\metax{charger \`a partir du r\'epertoire syst\`eme standard}{M-x load-library}
\key{\'Evaluer la {\bf s-expression} avant le point}{C-x C-e}
\key{\'Evaluer la {\bf defun} courante}{C-M-x}
\metax{\'Evaluer la {\bf r\'egion}}{M-x eval-region}
\key{Lire et \'evaluer dans le mini-tampon}{M-:}
\metax{Charger depuis un r\'epertoire standard}{M-x load-library}
\section{Personnalisation simple}
\metax{personnaliser les variables et les fontes}{M-x customize}
\metax{Personnaliser les variables et les fontes}{M-x customize}
% The intended audience here is the person who wants to make simple
% customizations and knows Lisp syntax.
Cr\'eation de liaisons de touches globales en Emacs Lisp (exemples):
Exemples de d\'efinition globale de touches en Emacs Lisp :
\beginexample%
(global-set-key "\\C-cg" 'goto-line)
@ -683,7 +657,8 @@ \section{\'Ecriture de commandes}
\beginexample%
(defun \<nom-commande> (\<args>)
"\<documentation>" (interactive "\<template>")
"\<documentation>"
(interactive "\<template>")
\<body>)
\endexample
@ -691,8 +666,7 @@ \section{\'Ecriture de commandes}
\beginexample%
(defun cette-ligne-en-haut-de-la-fenetre (line)
%% Leading space omitted to avoid linebreak and underfull hbox.
"Repositionne la ligne du point en haut de la fenetre.
"Positionne la ligne courante en haut de la fen\^etre.
Avec ARG, place le point sur la ligne ARG."
(interactive "P")
(recenter (if (null line)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -330,7 +330,7 @@ \section{Incremental Search}
\key{abort current search}{C-g}
Use \kbd{C-s} or \kbd{C-r} again to repeat the search in either direction.
If Emacs is still searching, \kbd{C-g} cancels only the part not done.
If Emacs is still searching, \kbd{C-g} cancels only the part not matched.
\shortcopyrightnotice
@ -478,7 +478,7 @@ \section{The Minibuffer}
\key{abort command}{C-g}
Type \kbd{C-x ESC ESC} to edit and repeat the last command that used the
minibuffer. Type \kbd{F10} to activate the menu bar using the minibuffer.
minibuffer. Type \kbd{F10} to activate menu bar items on text terminals.
\newcolumn
\title{GNU Emacs Reference Card}
@ -657,7 +657,7 @@ \section{Writing Commands}
\beginexample%
(defun this-line-to-top-of-window (line)
"Reposition line point is on to top of window.
"Reposition current line to top of window.
With ARG, put point on line ARG."
(interactive "P")
(recenter (if (null line)

View File

@ -1,3 +1,11 @@
2007-05-18 Francesco Potort,Al(B <pot@gnu.org>
* etags.c: Extern definitions of some more pointer functions for
standalone compilation, especially important for 64bit platforms.
(main, print_help): --members is now the default for etags.
(C_entries): Parse start of C comment as a space == end of token.
This is not necessary for C++ comment, already parsed as newline.
2007-04-26 Glenn Morris <rgm@gnu.org>
* makefile.w32-in (VERSION): Increase to 22.1.50.

View File

@ -60,10 +60,10 @@ University of California, as described above. */
/*
* Authors:
* Ctags originally by Ken Arnold.
* Fortran added by Jim Kleckner.
* Ed Pelegri-Llopart added C typedefs.
* Gnu Emacs TAGS format and modifications by RMS?
* 1983 Ctags originally by Ken Arnold.
* 1984 Fortran added by Jim Kleckner.
* 1984 Ed Pelegri-Llopart added C typedefs.
* 1985 Emacs TAGS format by Richard Stallman.
* 1989 Sam Kendall added C++.
* 1992 Joseph B. Wells improved C and C++ parsing.
* 1993 Francesco Potortì reorganised C and C++.
@ -80,7 +80,7 @@ University of California, as described above. */
* configuration file containing regexp definitions for etags.
*/
char pot_etags_version[] = "@(#) pot revision number is 17.26";
char pot_etags_version[] = "@(#) pot revision number is 17.31";
#define TRUE 1
#define FALSE 0
@ -159,7 +159,14 @@ char pot_etags_version[] = "@(#) pot revision number is 17.26";
# include <stdlib.h>
# include <string.h>
# else /* no standard C headers */
extern char *getenv ();
extern char *getenv ();
extern char *strcpy ();
extern char *strncpy ();
extern char *strcat ();
extern char *strncat ();
extern unsigned long strlen ();
extern PTR malloc ();
extern PTR realloc ();
# ifdef VMS
# define EXIT_SUCCESS 1
# define EXIT_FAILURE 0
@ -483,7 +490,7 @@ static char
*midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789";
static bool append_to_tagfile; /* -a: append to tags */
/* The next four default to TRUE for etags, but to FALSE for ctags. */
/* The next five default to TRUE for etags, but to FALSE for ctags. */
static bool typedefs; /* -t: create tags for C and Ada typedefs */
static bool typedefs_or_cplusplus; /* -T: create tags for C typedefs, level */
/* 0 struct/enum/union decls, and C++ */
@ -875,7 +882,7 @@ etags --help --lang=ada.");
# define EMACS_NAME "standalone"
#endif
#ifndef VERSION
# define VERSION "version"
# define VERSION "17.31"
#endif
static void
print_version ()
@ -969,7 +976,11 @@ Relative ones are stored relative to the output file's directory.\n");
puts ("--no-globals\n\
Do not create tag entries for global variables in some\n\
languages. This makes the tags file smaller.");
puts ("--no-members\n\
if (CTAGS)
puts ("--members\n\
Create tag entries for members of structures in some languages.");
else
puts ("--no-members\n\
Do not create tag entries for members of structures\n\
in some languages.");
@ -1215,7 +1226,7 @@ main (argc, argv)
if (!CTAGS)
{
typedefs = typedefs_or_cplusplus = constantypedefs = TRUE;
globals = TRUE;
globals = members = TRUE;
}
/* When the optstring begins with a '-' getopt_long does not rearrange the
@ -3397,17 +3408,15 @@ C_entries (c_ext, inf)
case '/':
if (*lp == '*')
{
lp++;
incomm = TRUE;
continue;
lp++;
c = ' ';
}
else if (/* cplpl && */ *lp == '/')
{
c = '\0';
break;
}
else
break;
break;
case '%':
if ((c_ext & YACC) && *lp == '%')
{

View File

@ -1,3 +1,169 @@
2007-05-20 Nick Roberts <nickrob@snap.net.nz>
* t-mouse.el (t-mouse-mode): Reset t-mouse-mode to nil if there
is an error.
* term/linux.el (terminal-init-linux): Don't signal an error
if gpm isn't running.
2007-05-20 Nick Roberts <nickrob@snap.net.nz>
* t-mouse.el: Reduce to a minor-mode macro call.
(t-mouse-mode) Remove the lighter.
* term/linux.el (terminal-init-linux): Enable t-mouse by default.
2007-05-19 Dan Nicolaescu <dann@ics.uci.edu>
* files.el (auto-mode-alist): Change the regexp so that
ChangeLog.unicode and ChangeLog.multi-tty use change-log-mode.
2007-05-19 Chong Yidong <cyd@stupidchicken.com>
* paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20
changes.
2007-05-19 Kevin Ryde <user42@zip.com.au>
* info.el (Info-fontify-node): Fontify https as well as http and ftp.
2007-05-18 Thien-Thi Nguyen <ttn@gnuvola.org>
* textmodes/sgml-mode.el: Revert last change.
2007-05-18 Richard Stallman <rms@gnu.org>
* simple.el (push-mark): Doc fix.
2007-05-18 Rob Riepel <riepel@Stanford.EDU>
* emulation/tpu-edt.el (CSI-map, SS3-map) Moved from global-map to
tpu-global-map.
(tpu-original-global-map) Variable deleted.
(tpu-control-keys-map) New keymap variable.
(tpu-set-control-keys) Use tpu-reset-control-keys rather than
setting keymapping directly.
(tpu-reset-control-keys) Use tpu-control-keys-map instead of
tpu-global-map.
(tpu-edt-on): Activate the tpu-global-map.
(tpu-edt-off): Deactivate the tpu-global-map.
2007-05-18 Ryan Yeske <rcyeske@gmail.com>
* textmodes/ispell.el (ispell-get-word): Return markers
for start and end positions.
(ispell-word): Assume END is a marker.
2007-05-17 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* printing.el: Group together all XEmacs/Emacs definitions.
(pr-version): New version 6.9.
(pr-global-menubar, pr-menu-char-height, pr-menu-char-width): New funs.
(pr-menu-char-height, pr-menu-char-width): Fix initialization code.
(pr-menu-bind): Fix code.
(pr-e-frame-char-height, pr-e-frame-char-width)
(pr-e-mouse-pixel-position, pr-x-add-submenu, pr-x-event-function)
(pr-x-event-object, pr-x-find-menu-item, pr-x-font-height)
(pr-x-font-width, pr-x-get-popup-menu-response, pr-x-make-event)
(pr-x-misc-user-event-p, pr-x-relabel-menu-item, pr-x-event-x-pixel)
(pr-x-event-y-pixel): Aliases eliminated.
(pr-xemacs-global-menubar): Macro moved.
(current-menubar, current-mouse-event, zmacs-region-stays)
(deactivate-mark, pr-menu-position, pr-menu-state, pr-ps-name-old)
(pr-txt-name-old, pr-ps-utility-old, pr-even-or-odd-old, pr-temp-menu):
Vars moved.
(pr-region-active-p, pr-menu-position, pr-menu-lookup, pr-menu-lock)
(pr-update-mode-line, pr-do-update-menus, pr-menu-alist)
(pr-relabel-menu-item, pr-menu-set-ps-title, pr-menu-set-txt-title)
(pr-menu-set-utility-title, pr-even-or-odd-pages)
(pr-f-set-keymap-parents, pr-f-set-keymap-name, pr-f-read-string)
(pr-keep-region-active, pr-menu-get-item, pr-menu-set-item-name): Funs
moved.
2007-05-17 Christian Plate <cplate@web.de> (tiny change)
* textmodes/sgml-mode.el (sgml-tag):
Fix bug: Call sgml-transformation-function.
2007-05-17 Martin Rudalics <rudalics@gmx.at>
* hilit-chg.el (highlight-changes-rotate-faces): Don't set
modified flag of buffer. Use `inhibit-modification-hooks'.
2007-05-16 Richard Stallman <rms@gnu.org>
* buff-menu.el (Buffer-menu-sort-column): Doc fix.
2007-05-16 Stefan Monnier <monnier@iro.umontreal.ca>
* files.el (magic-mode-alist, magic-fallback-mode-alist):
Move the *ml, Postscript, and XmCD entries to the fallback part.
* files.el (magic-fallback-mode-alist):
Rename from file-start-mode-alist.
2007-05-16 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
* progmodes/compile.el (compilation-handle-exit): Quote first
argument of `run-hook-with-args'.
2007-05-16 Juanma Barranquero <lekktu@gmail.com>
* buff-menu.el (Buffer-menu-sort-column):
* dabbrev.el (dabbrev-upcase-means-case-search):
* dired.el (dired-recursive-deletes, dired-recursive-copies):
* info.el (Info-current-subfile):
* ls-lisp.el (ls-lisp-verbosity):
* msb.el (msb-menu-cond):
* pcvs.el (cvs-dired-use-hook):
* simple.el (set-mark-command-repeat-pop):
* time.el (display-time-24hr-format, display-time-mail-file):
Doc fixes.
* tutorial.el (get-lang-string, tutorial--find-changed-keys):
* printing.el (pr-ps-fast-fire): Fix typos in docstrings.
* view.el (view-inhibit-help-message): Fix typo in docstring.
(view-scroll-auto-exit, view-try-extend-at-buffer-end): Doc fixes.
2007-05-16 Martin Rudalics <rudalics@gmx.at>
* textmodes/ispell.el (ispell-start-process): Defend against bad
default-directory.
2007-05-14 Eli Zaretskii <eliz@gnu.org>
* mail/rmail.el (rmail-convert-to-babyl-format): Check
content-transfer-encoding _last_, because it's its position that
we need as value of base64-header-field-end.
2007-05-14 Juanma Barranquero <lekktu@gmail.com>
* files.el (mode-require-final-newline, require-final-newline)
(enable-local-variables, enable-local-eval): Doc fixes.
2007-05-13 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* ps-print.el: Use default color when foreground or background color
are unspecified. Reported by Leo <sdl.web@gmail.com>.
(ps-print-version): New version 6.7.4.
(ps-rgb-color): New argument. Use default color when color is
unspecified.
(ps-begin-job): Fix code.
2007-05-12 Chong Yidong <cyd@stupidchicken.com>
* longlines.el (longlines-mode): Make longlines-auto-wrap
buffer-local. Add hooks unconditionally.
(longlines-auto-wrap): Toggle wrapping.
(longlines-after-change-function)
(longlines-post-command-function): Check longlines-auto-wrap.
2007-05-12 Nick Roberts <nickrob@snap.net.nz>
* xt-mouse.el (xterm-mouse-debug-buffer): New variable.
(xterm-mouse-translate): Use it.
2007-05-10 Richard Stallman <rms@gnu.org>
* international/iso-cvt.el (iso-cvt-read-only): Ignore arguments.

View File

@ -102,8 +102,9 @@ as it is by default."
;; This should get updated & resorted when you click on a column heading
(defvar Buffer-menu-sort-column nil
"2 for sorting by buffer names. 5 for sorting by file names.
nil for default sorting by visited order.")
"Which column to sort the menu on.
Use 2 to sort by buffer names, or 5 to sort by file names.
nil means sort by visited order (the default).")
(defconst Buffer-menu-buffer-column 4)

View File

@ -147,7 +147,7 @@ Any other non-nil version means case is not significant."
(defcustom dabbrev-upcase-means-case-search nil
"*The significance of an uppercase character in an abbreviation.
nil means case fold search when searching for possible expansions;
A nil value means case fold search when searching for possible expansions;
non-nil means case sensitive search.
This variable has an effect only when the value of

View File

@ -1360,10 +1360,10 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
(define-key map
[menu-bar regexp image-dired-mark-tagged-files]
'(menu-item "Mark From Image Tag..." image-dired-mark-tagged-files
:help "Mark files whose image tags matches regexp"))
:help "Mark files whose image tags matches regexp"))
(define-key map [menu-bar regexp dashes-1]
'("--"))
'("--"))
(define-key map [menu-bar regexp downcase]
'(menu-item "Downcase" dired-downcase
@ -1471,9 +1471,9 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
[menu-bar operate image-dired-display-thumbs]
'(menu-item "Display Image-Dired" image-dired-display-thumbs
:help "Display image-dired for current or marked image files"))
(define-key map [menu-bar operate dashes-3]
'("--"))
'("--"))
(define-key map [menu-bar operate query-replace]
'(menu-item "Query Replace in Files..." dired-do-query-replace-regexp
@ -2364,7 +2364,7 @@ Optional argument means return a file name relative to `default-directory'."
(defcustom dired-recursive-deletes nil ; Default only delete empty directories.
"*Decide whether recursive deletes are allowed.
nil means no recursive deletes.
A value of nil means no recursive deletes.
`always' means delete recursively without asking. This is DANGEROUS!
`top' means ask for each directory at top level, but delete its subdirectories
without asking.
@ -3101,7 +3101,7 @@ The idea is to set this buffer-locally in special dired buffers.")
(when (eq major-mode 'dired-mode)
(setq mode-name
(let (case-fold-search)
(cond ((string-match
(cond ((string-match
dired-sort-by-name-regexp dired-actual-switches)
"Dired by name")
((string-match
@ -3208,7 +3208,7 @@ To be called first in body of `dired-sort-other', etc."
(defcustom dired-recursive-copies nil
"*Decide whether recursive copies are allowed.
nil means no recursive copies.
A value of nil means no recursive copies.
`always' means copy recursively without asking.
`top' means ask for each directory at top level.
Anything else means ask for each directory."

View File

@ -584,9 +584,12 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.")
"Maps the SS3 function keys on the VT100 keyboard.
SS3 is DEC's name for the sequence <ESC>O.")
(defvar tpu-global-map nil "TPU-edt global keymap.")
(defvar tpu-original-global-map global-map
"Original non-TPU global keymap.")
(defvar tpu-global-map
(let ((map (make-sparse-keymap)))
(define-key map "\e[" CSI-map)
(define-key map "\eO" SS3-map)
map)
"TPU-edt global keymap.")
(and (not (boundp 'minibuffer-local-ns-map))
(defvar minibuffer-local-ns-map (make-sparse-keymap)
@ -2267,46 +2270,43 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll."
;;;
;;; Functions to set, reset, and toggle the control key bindings
;;;
(defun tpu-set-control-keys nil
(defvar tpu-control-keys-map
(let ((map (make-sparse-keymap)))
(define-key map "\C-\\" 'quoted-insert) ; ^\
(define-key map "\C-a" 'tpu-toggle-overwrite-mode) ; ^A
(define-key map "\C-b" 'repeat-complex-command) ; ^B
(define-key map "\C-e" 'tpu-current-end-of-line) ; ^E
(define-key map "\C-h" 'tpu-next-beginning-of-line) ; ^H (BS)
(define-key map "\C-j" 'tpu-delete-previous-word) ; ^J (LF)
(define-key map "\C-k" 'tpu-define-macro-key) ; ^K
(define-key map "\C-l" 'tpu-insert-formfeed) ; ^L (FF)
(define-key map "\C-r" 'recenter) ; ^R
(define-key map "\C-u" 'tpu-delete-to-bol) ; ^U
(define-key map "\C-v" 'tpu-quoted-insert) ; ^V
(define-key map "\C-w" 'redraw-display) ; ^W
(define-key map "\C-z" 'tpu-exit) ; ^Z
map))
(defun tpu-set-control-keys ()
"Set control keys to TPU style functions."
(define-key global-map "\C-\\" 'quoted-insert) ; ^\
(define-key global-map "\C-a" 'tpu-toggle-overwrite-mode) ; ^A
(define-key global-map "\C-b" 'repeat-complex-command) ; ^B
(define-key global-map "\C-e" 'tpu-current-end-of-line) ; ^E
(define-key global-map "\C-h" 'tpu-next-beginning-of-line) ; ^H (BS)
(define-key global-map "\C-j" 'tpu-delete-previous-word) ; ^J (LF)
(define-key global-map "\C-k" 'tpu-define-macro-key) ; ^K
(define-key global-map "\C-l" 'tpu-insert-formfeed) ; ^L (FF)
(define-key global-map "\C-r" 'recenter) ; ^R
(define-key global-map "\C-u" 'tpu-delete-to-bol) ; ^U
(define-key global-map "\C-v" 'tpu-quoted-insert) ; ^V
(define-key global-map "\C-w" 'redraw-display) ; ^W
(define-key global-map "\C-z" 'tpu-exit) ; ^Z
(setq tpu-control-keys t))
(tpu-reset-control-keys 'tpu))
(defun tpu-reset-control-keys (tpu-style)
"Set control keys to TPU or Emacs style functions."
(let* ((tpu (and tpu-style (not tpu-control-keys)))
(emacs (and (not tpu-style) tpu-control-keys))
(doit (or tpu emacs)))
(cond (doit
(if emacs (setq tpu-global-map (copy-keymap global-map)))
(let ((map (if tpu tpu-global-map tpu-original-global-map)))
(define-key global-map "\C-\\" (lookup-key map "\C-\\")) ; ^\
(define-key global-map "\C-a" (lookup-key map "\C-a")) ; ^A
(define-key global-map "\C-b" (lookup-key map "\C-b")) ; ^B
(define-key global-map "\C-e" (lookup-key map "\C-e")) ; ^E
(define-key global-map "\C-h" (lookup-key map "\C-h")) ; ^H (BS)
(define-key global-map "\C-j" (lookup-key map "\C-j")) ; ^J (LF)
(define-key global-map "\C-k" (lookup-key map "\C-k")) ; ^K
(define-key global-map "\C-l" (lookup-key map "\C-l")) ; ^L (FF)
(define-key global-map "\C-r" (lookup-key map "\C-r")) ; ^R
(define-key global-map "\C-u" (lookup-key map "\C-u")) ; ^U
(define-key global-map "\C-v" (lookup-key map "\C-v")) ; ^V
(define-key global-map "\C-w" (lookup-key map "\C-w")) ; ^W
(define-key global-map "\C-z" (lookup-key map "\C-z")) ; ^Z
(setq tpu-control-keys tpu-style))))))
(let ((parent (keymap-parent tpu-global-map)))
(if tpu-style
(if (eq parent tpu-control-keys-map)
nil ;All done already.
;; Insert tpu-control-keys-map in the global map.
(set-keymap-parent tpu-control-keys-map parent)
(set-keymap-parent tpu-global-map tpu-control-keys-map))
(if (not (eq parent tpu-control-keys-map))
nil ;All done already.
;; Remove tpu-control-keys-map from the global map.
(set-keymap-parent tpu-global-map (keymap-parent parent))
(set-keymap-parent tpu-control-keys-map nil)))
(setq tpu-control-keys tpu-style)))
(defun tpu-toggle-control-keys nil
"Toggles control key bindings between TPU-edt and Emacs."
@ -2447,8 +2447,11 @@ If FILE is nil, try to load a default file. The default file names are
(defun tpu-edt-on ()
"Turn on TPU/edt emulation."
(interactive)
(and window-system (tpu-load-xkeys nil))
(tpu-arrow-history)
;; First, activate tpu-global-map, while protecting the original keymap.
(set-keymap-parent tpu-global-map global-map)
(setq global-map tpu-global-map)
(use-global-map global-map)
;; Then do the normal TPU setup.
(transient-mark-mode t)
(add-hook 'post-command-hook 'tpu-search-highlight)
(tpu-set-mode-line t)
@ -2457,10 +2460,14 @@ If FILE is nil, try to load a default file. The default file names are
(setq-default page-delimiter "\f")
(setq-default truncate-lines t)
(setq scroll-step 1)
(setq global-map (copy-keymap global-map))
(tpu-set-control-keys)
(define-key global-map "\e[" CSI-map)
(define-key global-map "\eO" SS3-map)
(and window-system (tpu-load-xkeys nil))
(tpu-arrow-history)
;; Then protect tpu-global-map from user modifications.
(let ((map (make-sparse-keymap)))
(set-keymap-parent map global-map)
(setq global-map map)
(use-global-map map))
(setq tpu-edt-mode t))
(defun tpu-edt-off ()
@ -2472,8 +2479,13 @@ If FILE is nil, try to load a default file. The default file names are
(setq-default page-delimiter "^\f")
(setq-default truncate-lines nil)
(setq scroll-step 0)
(setq global-map tpu-original-global-map)
(use-global-map global-map)
;; Remove tpu-global-map from the global map.
(let ((map global-map))
(while map
(let ((parent (keymap-parent map)))
(if (eq tpu-global-map parent)
(set-keymap-parent map (keymap-parent parent))
(setq map parent)))))
(setq tpu-edt-mode nil))
(provide 'tpu-edt)

View File

@ -287,7 +287,7 @@ A value of t means do this only when the file is about to be saved.
A value of `visit' means do this right after the file is visited.
A value of `visit-save' means do it at both of those times.
Any other non-nil value means ask user whether to add a newline, when saving.
nil means don't add newlines.
A value of nil means don't add newlines.
Certain major modes set this locally to the value obtained
from `mode-require-final-newline'."
@ -309,10 +309,10 @@ A value of `visit' means do this right after the file is visited.
A value of `visit-save' means do it at both of those times.
Any other non-nil value means ask user whether to add a newline, when saving.
nil means do not add newlines. That is a risky choice in this variable
since this value is used for modes for files that ought to have final newlines.
So if you set this to nil, you must explicitly check and add
a final newline, whenever you save a file that really needs one."
A value of nil means do not add newlines. That is a risky choice in this
variable since this value is used for modes for files that ought to have
final newlines. So if you set this to nil, you must explicitly check and
add a final newline, whenever you save a file that really needs one."
:type '(choice (const :tag "When visiting" visit)
(const :tag "When saving" t)
(const :tag "When visiting or saving" visit-save)
@ -459,7 +459,7 @@ not safe, Emacs queries you, once, whether to set them all.
:safe means set the safe variables, and ignore the rest.
:all means set all variables, whether safe or not.
(Don't set it permanently to :all.)
nil means always ignore the file local variables.
A value of nil means always ignore the file local variables.
Any other value means always query you once whether to set them all.
\(When you say yes to certain values, they are remembered as safe, but
@ -491,7 +491,7 @@ specified in a -*- line.")
"Control processing of the \"variable\" `eval' in a file's local variables.
The value can be t, nil or something else.
A value of t means obey `eval' variables;
nil means ignore them; anything else means query."
A value of nil means ignore them; anything else means query."
:type '(choice (const :tag "Obey" t)
(const :tag "Ignore" nil)
(other :tag "Query" other))
@ -1924,7 +1924,7 @@ since only a single case-insensitive search through the alist is made."
("\\.[sS]\\'" . asm-mode)
("\\.asm\\'" . asm-mode)
("[cC]hange\\.?[lL]og?\\'" . change-log-mode)
("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode)
("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode)
("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
("\\.scm\\.[0-9]*\\'" . scheme-mode)
("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
@ -2120,8 +2120,20 @@ of the regular expression. The mode is then determined as the mode
associated with that interpreter in `interpreter-mode-alist'.")
(defvar magic-mode-alist
`((image-type-auto-detected-p . image-mode)
;; The < comes before the groups (but the first) to reduce backtracking.
`((image-type-auto-detected-p . image-mode))
"Alist of buffer beginnings vs. corresponding major mode functions.
Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION).
After visiting a file, if REGEXP matches the text at the beginning of the
buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will
call FUNCTION rather than allowing `auto-mode-alist' to decide the buffer's
major mode.
If FUNCTION is nil, then it is not called. (That is a way of saying
\"allow `auto-mode-alist' to decide for these files.\")")
(put 'magic-mode-alist 'risky-local-variable t)
(defvar magic-fallback-mode-alist
`(;; The < comes before the groups (but the first) to reduce backtracking.
;; TODO: UTF-16 <?xml may be preceded by a BOM 0xff 0xfe or 0xfe 0xff.
;; We use [ \t\r\n] instead of `\\s ' to make regex overflow less likely.
(,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
@ -2140,19 +2152,6 @@ associated with that interpreter in `interpreter-mode-alist'.")
. sgml-mode)
("%!PS" . ps-mode)
("# xmcd " . conf-unix-mode))
"Alist of buffer beginnings vs. corresponding major mode functions.
Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION).
After visiting a file, if REGEXP matches the text at the beginning of the
buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will
call FUNCTION rather than allowing `auto-mode-alist' to decide the buffer's
major mode.
If FUNCTION is nil, then it is not called. (That is a way of saying
\"allow `auto-mode-alist' to decide for these files.\")")
(put 'magic-mode-alist 'risky-local-variable t)
(defvar file-start-mode-alist
nil
"Like `magic-mode-alist' but has lower priority than `auto-mode-alist'.
Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION).
After visiting a file, if REGEXP matches the text at the beginning of the
@ -2161,11 +2160,11 @@ call FUNCTION, provided that `magic-mode-alist' and `auto-mode-alist'
have not specified a mode for this file.
If FUNCTION is nil, then it is not called.")
(put 'file-start-mode-alist 'risky-local-variable t)
(put 'magic-fallback-mode-alist 'risky-local-variable t)
(defvar magic-mode-regexp-match-limit 4000
"Upper limit on `magic-mode-alist' regexp matches.
Also applies to `file-start-mode-alist'.")
Also applies to `magic-fallback-mode-alist'.")
(defun set-auto-mode (&optional keep-mode-if-same)
"Select major mode appropriate for current buffer.
@ -2284,7 +2283,7 @@ only set the major mode, if that would change it."
(when mode
(set-auto-mode-0 mode keep-mode-if-same)
(setq done t))))))
;; Next try matching the buffer beginning against file-start-mode-alist.
;; Next try matching the buffer beginning against magic-fallback-mode-alist.
(unless done
(if (setq done (save-excursion
(goto-char (point-min))
@ -2292,7 +2291,7 @@ only set the major mode, if that would change it."
(narrow-to-region (point-min)
(min (point-max)
(+ (point-min) magic-mode-regexp-match-limit)))
(assoc-default nil file-start-mode-alist
(assoc-default nil magic-fallback-mode-alist
(lambda (re dummy)
(if (functionp re)
(funcall re)

View File

@ -1,3 +1,8 @@
2007-05-10 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-art.el (gnus-article-mode): Fix comment about displaying
non-break space.
2007-05-09 Didier Verna <didier@xemacs.org>
* gnus-diary.el, nndiary.el: Remove the description comment (nndiary is

View File

@ -3925,7 +3925,8 @@ commands:
(make-local-variable 'gnus-article-image-alist)
(make-local-variable 'gnus-article-charset)
(make-local-variable 'gnus-article-ignored-charsets)
;; Prevent recent Emacsen from displaying non-break space as "\ ".
;; Prevent Emacs 22 from displaying non-break space with `nobreak-space'
;; face.
(set (make-local-variable 'nobreak-char-display) nil)
(setq cursor-in-non-selected-windows nil)
(gnus-set-default-directory)

View File

@ -790,17 +790,37 @@ this, eval the following in the buffer to be saved:
(interactive)
;; If not in active mode do nothing but don't complain because this
;; may be bound to a hook.
(if (eq highlight-changes-mode 'active)
(let ((after-change-functions nil))
;; ensure hilit-chg-list is made and up to date
(hilit-chg-make-list)
;; remove our existing overlays
(hilit-chg-hide-changes)
;; for each change text property, increment it
(hilit-chg-map-changes 'hilit-chg-bump-change)
;; and display them all if active
(if (eq highlight-changes-mode 'active)
(hilit-chg-display-changes))))
(when (eq highlight-changes-mode 'active)
(let ((modified (buffer-modified-p))
(inhibit-modification-hooks t))
;; The `modified' related code tries to combine two goals: (1) Record the
;; rotation in `buffer-undo-list' and (2) avoid setting the modified flag
;; of the current buffer due to the rotation. We do this by inserting (in
;; `buffer-undo-list') entries restoring buffer-modified-p to nil before
;; and after the entry for the rotation.
(unless modified
;; Install the "before" entry.
(setq buffer-undo-list
(cons '(apply restore-buffer-modified-p nil)
buffer-undo-list)))
(unwind-protect
(progn
;; ensure hilit-chg-list is made and up to date
(hilit-chg-make-list)
;; remove our existing overlays
(hilit-chg-hide-changes)
;; for each change text property, increment it
(hilit-chg-map-changes 'hilit-chg-bump-change)
;; and display them all if active
(if (eq highlight-changes-mode 'active)
(hilit-chg-display-changes)))
(unless modified
;; Install the "after" entry.
(setq buffer-undo-list
(cons '(apply restore-buffer-modified-p nil)
buffer-undo-list))
(restore-buffer-modified-p nil)))))
;; This always returns nil so it is safe to use in write-file-functions
nil)

View File

@ -288,7 +288,7 @@ It doesn't contain directory names or file name extensions added by Info.")
(defvar Info-current-subfile nil
"Info subfile that is actually in the *info* buffer now.
nil if current Info file is not split into subfiles.")
It is nil if current Info file is not split into subfiles.")
(defvar Info-current-node nil
"Name of node that Info is now looking at, or nil.")
@ -4074,7 +4074,8 @@ the variable `Info-file-list-for-emacs'."
;; Fontify http and ftp references
(goto-char (point-min))
(when not-fontified-p
(while (re-search-forward "[hf]t?tp://[^ \t\n\"`({<>})']+" nil t)
(while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+"
nil t)
(add-text-properties (match-beginning 0) (match-end 0)
'(font-lock-face info-xref
mouse-face highlight

File diff suppressed because it is too large Load Diff

View File

@ -110,6 +110,7 @@ are indicated with a symbol."
(add-hook 'change-major-mode-hook 'longlines-mode-off nil t)
(add-hook 'before-revert-hook 'longlines-before-revert-hook nil t)
(make-local-variable 'buffer-substring-filters)
(make-local-variable 'longlines-auto-wrap)
(set (make-local-variable 'isearch-search-fun-function)
'longlines-search-function)
(add-to-list 'buffer-substring-filters 'longlines-encode-string)
@ -149,12 +150,10 @@ are indicated with a symbol."
(add-to-list 'message-indent-citation-function
'longlines-decode-region t)))
(add-hook 'after-change-functions 'longlines-after-change-function nil t)
(add-hook 'post-command-hook 'longlines-post-command-function nil t)
(when longlines-auto-wrap
(auto-fill-mode 0)
(add-hook 'after-change-functions
'longlines-after-change-function nil t)
(add-hook 'post-command-hook
'longlines-post-command-function nil t)))
(auto-fill-mode 0)))
;; Turn off longlines mode
(setq buffer-file-format (delete 'longlines buffer-file-format))
(if longlines-showing
@ -365,29 +364,27 @@ Hard newlines are left intact."
;; Auto wrap
(defun longlines-auto-wrap (&optional arg)
"Turn on automatic line wrapping, and wrap the entire buffer.
With optional argument ARG, turn off line wrapping."
"Toggle automatic line wrapping.
With optional argument ARG, turn on line wrapping if and only if ARG is positive.
If automatic line wrapping is turned on, wrap the entire buffer."
(interactive "P")
(remove-hook 'after-change-functions 'longlines-after-change-function t)
(remove-hook 'post-command-hook 'longlines-post-command-function t)
(if arg
(progn (setq longlines-auto-wrap nil)
(message "Auto wrap disabled."))
(setq longlines-auto-wrap t)
(add-hook 'after-change-functions
'longlines-after-change-function nil t)
(add-hook 'post-command-hook
'longlines-post-command-function nil t)
(let ((mod (buffer-modified-p)))
(longlines-wrap-region (point-min) (point-max))
(set-buffer-modified-p mod))
(message "Auto wrap enabled.")))
(and (null arg)
(null longlines-auto-wrap)
(setq arg 1))
(if (> (prefix-numeric-value arg) 0)
(let ((mod (buffer-modified-p)))
(setq longlines-auto-wrap t)
(longlines-wrap-region (point-min) (point-max))
(set-buffer-modified-p mod)
(message "Auto wrap enabled."))
(setq longlines-auto-wrap nil)
(message "Auto wrap disabled.")))
(defun longlines-after-change-function (beg end len)
"Update `longlines-wrap-beg' and `longlines-wrap-end'.
This is called by `after-change-functions' to keep track of the region
that has changed."
(unless undo-in-progress
(when (and longlines-auto-wrap (not undo-in-progress))
(setq longlines-wrap-beg
(if longlines-wrap-beg (min longlines-wrap-beg beg) beg))
(setq longlines-wrap-end
@ -396,7 +393,7 @@ that has changed."
(defun longlines-post-command-function ()
"Perform line wrapping on the parts of the buffer that have changed.
This is called by `post-command-hook' after each command."
(when longlines-wrap-beg
(when (and longlines-auto-wrap longlines-wrap-beg)
(if (or (eq this-command 'yank)
(eq this-command 'yank-pop))
(longlines-decode-region (point) (mark t)))

View File

@ -113,7 +113,7 @@ option will have no effect until you restart Emacs."
(t '(links uid gid))) ; GNU ls
"*A list of optional file attributes that ls-lisp should display.
It should contain none or more of the symbols: links, uid, gid.
nil (or an empty list) means display none of them.
A value of nil (or an empty list) means display none of them.
Concepts come from UNIX: `links' means count of names associated with
the file\; `uid' means user (owner) identifier\; `gid' means group

View File

@ -1959,12 +1959,13 @@ is non-nil if the user has supplied the password interactively.
(base64-header-field-end
(save-excursion
(goto-char start)
;; Don't try to decode non-text data.
(and (re-search-forward
"^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
header-end t)
;; Don't try to decode non-text data.
(re-search-forward
"^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
header-end t)
(goto-char start)
(re-search-forward
"^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
header-end t)))))
(if quoted-printable-header-field-end
(save-excursion
@ -2066,14 +2067,14 @@ is non-nil if the user has supplied the password interactively.
header-end t)))
(base64-header-field-end
(and
(save-excursion
(re-search-forward
"^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
header-end t))
;; Don't decode non-text data.
(save-excursion
(re-search-forward
"^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
header-end t))
(save-excursion
(re-search-forward
"^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
header-end t))))
(size
;; Get the numeric value from the Content-Length field.

View File

@ -230,7 +230,7 @@ the test is surrounded by calls to `save-excursion' and
`save-match-data'.
The categories are sorted by MENU-SORT-KEY. Smaller keys are on top.
nil means don't display this menu.
A value of nil means don't display this menu.
MENU-TITLE is really a format. If you add %d in it, the %d is
replaced with the number of items in that menu.

View File

@ -2315,7 +2315,7 @@ Sensible values are `cvs-examine', `cvs-status' and `cvs-quickdir'."
;;;###autoload
(defcustom cvs-dired-use-hook '(4)
"Whether or not opening a CVS directory should run PCL-CVS.
nil means never do it.
A value of nil means never do it.
ALWAYS means to always do it unless a prefix argument is given to the
command that prompted the opening of the directory.
Anything else means to do it only if the prefix arg is equal to this value."

View File

@ -6,11 +6,11 @@
;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Keywords: wp, print, PostScript
;; Version: 6.8.4
;; Version: 6.9
;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
(defconst pr-version "6.8.4"
"printing.el, v 6.8.4 <2005/06/11 vinicius>
(defconst pr-version "6.9"
"printing.el, v 6.9 <2007/02/11 vinicius>
Please send all bug fixes and enhancements to
Vinicius Jose Latorre <viniciusjl@ig.com.br>
@ -1093,46 +1093,456 @@ If SUFFIX is non-nil, add that at the end of the file name."
(set-default-file-modes umask)))))
;; GNU Emacs
(defalias 'pr-e-frame-char-height 'frame-char-height)
(defalias 'pr-e-frame-char-width 'frame-char-width)
(defalias 'pr-e-mouse-pixel-position 'mouse-pixel-position)
;; XEmacs
(defalias 'pr-x-add-submenu 'add-submenu)
(defalias 'pr-x-event-function 'event-function)
(defalias 'pr-x-event-object 'event-object)
(defalias 'pr-x-find-menu-item 'find-menu-item)
(defalias 'pr-x-font-height 'font-height)
(defalias 'pr-x-font-width 'font-width)
(defalias 'pr-x-get-popup-menu-response 'get-popup-menu-response)
(defalias 'pr-x-make-event 'make-event)
(defalias 'pr-x-misc-user-event-p 'misc-user-event-p)
(defalias 'pr-x-relabel-menu-item 'relabel-menu-item)
(defalias 'pr-x-event-x-pixel 'event-x-pixel)
(defalias 'pr-x-event-y-pixel 'event-y-pixel)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; XEmacs Definitions
(cond
((featurep 'xemacs) ; XEmacs
(defvar current-menubar nil)
(defvar current-mouse-event nil)
(defvar zmacs-region-stays nil)
;; XEmacs
(defalias 'pr-f-set-keymap-parents 'set-keymap-parents)
(defalias 'pr-f-set-keymap-name 'set-keymap-name)
;; XEmacs
(defun pr-f-read-string (prompt initial history default)
(let ((str (read-string prompt initial)))
(if (and str (not (string= str "")))
str
default)))
(defun pr-keep-region-active ()
(setq zmacs-region-stays t)))
;; XEmacs
(defvar zmacs-region-stays nil)
;; XEmacs
(defun pr-keep-region-active ()
(setq zmacs-region-stays t))
;; XEmacs
(defun pr-region-active-p ()
(and pr-auto-region (not zmacs-region-stays) (ps-mark-active-p)))
;; XEmacs
(defun pr-menu-char-height ()
(font-height (face-font 'default)))
;; XEmacs
(defun pr-menu-char-width ()
(font-width (face-font 'default)))
;; XEmacs
(defmacro pr-xemacs-global-menubar (&rest body)
`(save-excursion
(let ((temp (get-buffer-create (make-temp-name " *Temp"))))
;; be sure to access global menubar
(set-buffer temp)
,@body
(kill-buffer temp))))
;; XEmacs
(defun pr-global-menubar (pr-menu-spec)
;; Menu binding
(pr-xemacs-global-menubar
(add-submenu nil (cons "Printing" pr-menu-spec) "Apps"))
(setq pr-menu-print-item nil))
;; XEmacs
(defvar current-mouse-event nil)
(defun pr-menu-position (entry index horizontal)
(make-event
'button-release
(list 'button 1
'x (- (event-x-pixel current-mouse-event) ; X
(* horizontal pr-menu-char-width))
'y (- (event-y-pixel current-mouse-event) ; Y
(* (pr-menu-index entry index) pr-menu-char-height)))))
(defvar pr-menu-position nil)
(defvar pr-menu-state nil)
;; XEmacs
(defvar current-menubar nil) ; to avoid compilation gripes
(defun pr-menu-lookup (path)
(car (find-menu-item current-menubar (cons "Printing" path))))
;; XEmacs
(defun pr-menu-lock (entry index horizontal state path)
(when pr-menu-lock
(or (and pr-menu-position (eq state pr-menu-state))
(setq pr-menu-position (pr-menu-position entry index horizontal)
pr-menu-state state))
(let* ((menu (pr-menu-lookup path))
(result (get-popup-menu-response menu pr-menu-position)))
(and (misc-user-event-p result)
(funcall (event-function result)
(event-object result))))
(setq pr-menu-position nil)))
;; XEmacs
(defalias 'pr-update-mode-line 'set-menubar-dirty-flag)
;; XEmacs
(defvar pr-ps-name-old "PostScript Printers")
(defvar pr-txt-name-old "Text Printers")
(defvar pr-ps-utility-old "PostScript Utility")
(defvar pr-even-or-odd-old "Print All Pages")
;; XEmacs
(defun pr-do-update-menus (&optional force)
(pr-menu-alist pr-ps-printer-alist
'pr-ps-name
'pr-menu-set-ps-title
'("Printing")
'pr-ps-printer-menu-modified
force
pr-ps-name-old
'postscript 2)
(pr-menu-alist pr-txt-printer-alist
'pr-txt-name
'pr-menu-set-txt-title
'("Printing")
'pr-txt-printer-menu-modified
force
pr-txt-name-old
'text 2)
(let ((save-var pr-ps-utility-menu-modified))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("Printing" "PostScript Print" "File")
'save-var
force
pr-ps-utility-old
nil 1))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("Printing" "PostScript Preview" "File")
'pr-ps-utility-menu-modified
force
pr-ps-utility-old
nil 1)
(pr-even-or-odd-pages ps-even-or-odd-pages force))
;; XEmacs
(defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
entry index)
(when (and alist (or force (symbol-value modified-sym)))
(pr-xemacs-global-menubar
(add-submenu menu-path
(pr-menu-create name alist var-sym
fun entry index)))
(funcall fun (symbol-value var-sym))
(set modified-sym nil)))
;; XEmacs
(defun pr-relabel-menu-item (newname var-sym)
(pr-xemacs-global-menubar
(relabel-menu-item
(list "Printing" (symbol-value var-sym))
newname)
(set var-sym newname)))
;; XEmacs
(defun pr-menu-set-ps-title (value &optional item entry index)
(pr-relabel-menu-item (format "PostScript Printer: %s" value)
'pr-ps-name-old)
(pr-ps-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; XEmacs
(defun pr-menu-set-txt-title (value &optional item entry index)
(pr-relabel-menu-item (format "Text Printer: %s" value)
'pr-txt-name-old)
(pr-txt-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; XEmacs
(defun pr-menu-set-utility-title (value &optional item entry index)
(pr-xemacs-global-menubar
(let ((newname (format "%s" value)))
(relabel-menu-item
(list "Printing" "PostScript Print" "File" pr-ps-utility-old)
newname)
(relabel-menu-item
(list "Printing" "PostScript Preview" "File" pr-ps-utility-old)
newname)
(setq pr-ps-utility-old newname)))
(pr-ps-set-utility value)
(and index
(pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
;; XEmacs
(defun pr-even-or-odd-pages (value &optional no-lock)
(pr-relabel-menu-item (cdr (assq value pr-even-or-odd-alist))
'pr-even-or-odd-old)
(setq ps-even-or-odd-pages value)
(or no-lock
(pr-menu-lock 'postscript-options 8 12 'toggle nil)))
)
(t ; GNU Emacs
(defvar deactivate-mark nil)
;; Do nothing
)) ; end cond featurep
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GNU Emacs Definitions
(cond
((featurep 'xemacs) ; XEmacs
;; Do nothing
)
(t ; GNU Emacs
;; GNU Emacs
(defalias 'pr-f-set-keymap-parents 'set-keymap-parent)
(defalias 'pr-f-set-keymap-name 'ignore)
(defalias 'pr-f-read-string 'read-string)
;; GNU Emacs
(defvar deactivate-mark nil)
;; GNU Emacs
(defun pr-keep-region-active ()
(setq deactivate-mark nil))))
(setq deactivate-mark nil))
;; GNU Emacs
(defun pr-region-active-p ()
(and pr-auto-region transient-mark-mode mark-active))
;; GNU Emacs
(defun pr-menu-char-height ()
(frame-char-height))
;; GNU Emacs
(defun pr-menu-char-width ()
(frame-char-width))
;; GNU Emacs
;; Menu binding
(require 'easymenu)
;; Replace existing "print" item by "Printing" item.
;; If you're changing this file, you'll load it a second,
;; third... time, but "print" item exists only in the first load.
(eval-and-compile
(cond
;; GNU Emacs 20
((< emacs-major-version 21)
(defun pr-global-menubar (pr-menu-spec)
(easy-menu-change '("tools") "Printing" pr-menu-spec pr-menu-print-item)
(when pr-menu-print-item
(easy-menu-remove-item nil '("tools") pr-menu-print-item)
(setq pr-menu-print-item nil
pr-menu-bar (vector 'menu-bar 'tools
(pr-get-symbol "Printing")))))
)
;; GNU Emacs 21 & 22
(t
(defun pr-global-menubar (pr-menu-spec)
(let ((menu-file (if (= emacs-major-version 21)
'("menu-bar" "files") ; GNU Emacs 21
'("menu-bar" "file")))) ; GNU Emacs 22 or higher
(cond
(pr-menu-print-item
(easy-menu-add-item global-map menu-file
(easy-menu-create-menu "Print" pr-menu-spec)
"print-buffer")
(dolist (item '("print-buffer" "print-region"
"ps-print-buffer-faces" "ps-print-region-faces"
"ps-print-buffer" "ps-print-region"))
(easy-menu-remove-item global-map menu-file item))
(setq pr-menu-print-item nil
pr-menu-bar (vector 'menu-bar
(pr-get-symbol (nth 1 menu-file))
(pr-get-symbol "Print"))))
(t
(easy-menu-add-item global-map menu-file
(easy-menu-create-menu "Print" pr-menu-spec)))
)))
)))
(eval-and-compile
(cond
(ps-windows-system
;; GNU Emacs for Windows 9x/NT
(defun pr-menu-position (entry index horizontal)
(let ((pos (cdr (mouse-pixel-position))))
(list
(list (or (car pos) 0) ; X
(- (or (cdr pos) 0) ; Y
(* (pr-menu-index entry index) pr-menu-char-height)))
(selected-frame)))) ; frame
)
(t
;; GNU Emacs
(defun pr-menu-position (entry index horizontal)
(let ((pos (cdr (mouse-pixel-position))))
(list
(list (- (or (car pos) 0) ; X
(* horizontal pr-menu-char-width))
(- (or (cdr pos) 0) ; Y
(* (pr-menu-index entry index) pr-menu-char-height)))
(selected-frame)))) ; frame
)))
(defvar pr-menu-position nil)
(defvar pr-menu-state nil)
;; GNU Emacs
(defun pr-menu-lookup (path)
(lookup-key global-map
(if path
(vconcat pr-menu-bar
(mapcar 'pr-get-symbol
(if (listp path)
path
(list path))))
pr-menu-bar)))
;; GNU Emacs
(defun pr-menu-lock (entry index horizontal state path)
(when pr-menu-lock
(or (and pr-menu-position (eq state pr-menu-state))
(setq pr-menu-position (pr-menu-position entry index horizontal)
pr-menu-state state))
(let* ((menu (pr-menu-lookup path))
(result (x-popup-menu pr-menu-position menu)))
(and result
(let ((command (lookup-key menu (vconcat result))))
(if (fboundp command)
(funcall command)
(eval command)))))
(setq pr-menu-position nil)))
;; GNU Emacs
(defalias 'pr-update-mode-line 'force-mode-line-update)
;; GNU Emacs
(defun pr-do-update-menus (&optional force)
(pr-menu-alist pr-ps-printer-alist
'pr-ps-name
'pr-menu-set-ps-title
"PostScript Printers"
'pr-ps-printer-menu-modified
force
"PostScript Printers"
'postscript 2)
(pr-menu-alist pr-txt-printer-alist
'pr-txt-name
'pr-menu-set-txt-title
"Text Printers"
'pr-txt-printer-menu-modified
force
"Text Printers"
'text 2)
(let ((save-var pr-ps-utility-menu-modified))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("PostScript Print" "File" "PostScript Utility")
'save-var
force
"PostScript Utility"
nil 1))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("PostScript Preview" "File" "PostScript Utility")
'pr-ps-utility-menu-modified
force
"PostScript Utility"
nil 1)
(pr-even-or-odd-pages ps-even-or-odd-pages force))
;; GNU Emacs
(defun pr-menu-get-item (name-list)
;; NAME-LIST is a string or a list of strings.
(or (listp name-list)
(setq name-list (list name-list)))
(and name-list
(let* ((reversed (reverse name-list))
(name (pr-get-symbol (car reversed)))
(path (nreverse (cdr reversed)))
(menu (lookup-key
global-map
(vconcat pr-menu-bar
(mapcar 'pr-get-symbol path)))))
(assq name (nthcdr 2 menu)))))
;; GNU Emacs
(defvar pr-temp-menu nil)
;; GNU Emacs
(defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
entry index)
(when (and alist (or force (symbol-value modified-sym)))
(easy-menu-define pr-temp-menu nil ""
(pr-menu-create name alist var-sym fun entry index))
(let ((item (pr-menu-get-item menu-path)))
(and item
(let* ((binding (nthcdr 3 item))
(key-binding (cdr binding)))
(setcar binding pr-temp-menu)
(and key-binding (listp (car key-binding))
(setcdr binding (cdr key-binding))) ; skip KEY-BINDING
(funcall fun (symbol-value var-sym) item))))
(set modified-sym nil)))
;; GNU Emacs
(defun pr-menu-set-item-name (item name)
(and item
(setcar (nthcdr 2 item) name))) ; ITEM-NAME
;; GNU Emacs
(defun pr-menu-set-ps-title (value &optional item entry index)
(pr-menu-set-item-name (or item
(pr-menu-get-item "PostScript Printers"))
(format "PostScript Printer: %s" value))
(pr-ps-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; GNU Emacs
(defun pr-menu-set-txt-title (value &optional item entry index)
(pr-menu-set-item-name (or item
(pr-menu-get-item "Text Printers"))
(format "Text Printer: %s" value))
(pr-txt-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; GNU Emacs
(defun pr-menu-set-utility-title (value &optional item entry index)
(let ((name (symbol-name value)))
(if item
(pr-menu-set-item-name item name)
(pr-menu-set-item-name
(pr-menu-get-item
'("PostScript Print" "File" "PostScript Utility"))
name)
(pr-menu-set-item-name
(pr-menu-get-item
'("PostScript Preview" "File" "PostScript Utility"))
name)))
(pr-ps-set-utility value)
(and index
(pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
;; GNU Emacs
(defun pr-even-or-odd-pages (value &optional no-lock)
(pr-menu-set-item-name (pr-menu-get-item "Print All Pages")
(cdr (assq value pr-even-or-odd-alist)))
(setq ps-even-or-odd-pages value)
(or no-lock
(pr-menu-lock 'postscript-options 8 12 'toggle nil)))
)) ; end cond featurep
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -1592,7 +2002,7 @@ DEFAULT It's a way to set default values when this entry is selected.
(VARIABLE . VALUE)
That associates VARIABLE with VALUE. when this entry is
Which associates VARIABLE with VALUE. When this entry is
selected, it's executed the following command:
(set VARIABLE (eval VALUE))
@ -2147,7 +2557,7 @@ DEFAULT It's a way to set default values when this entry is selected.
(VARIABLE-SYM . VALUE)
That associates VARIABLE-SYM with VALUE. when this entry is
Which associates VARIABLE-SYM with VALUE. When this entry is
selected, it's executed the following command:
(set (make-local-variable VARIABLE-SYM) (eval VALUE))
@ -2327,7 +2737,7 @@ DEFAULT It's a way to set default values when this entry is selected.
(VARIABLE . VALUE)
That associates VARIABLE with VALUE. when this entry is
Which associates VARIABLE with VALUE. When this entry is
selected, it's executed the following command:
(set VARIABLE (eval VALUE))
@ -2452,11 +2862,7 @@ See also `pr-menu-char-height' and `pr-menu-char-width'."
:group 'printing)
(defcustom pr-menu-char-height
(cond ((featurep 'xemacs) ; XEmacs
(pr-x-font-height (face-font 'default)))
(t ; GNU Emacs
(pr-e-frame-char-height)))
(defcustom pr-menu-char-height (pr-menu-char-height)
"*Specify menu char height in pixels.
This variable is used to guess which vertical position should be locked the
@ -2468,11 +2874,7 @@ See also `pr-menu-lock' and `pr-menu-char-width'."
:group 'printing)
(defcustom pr-menu-char-width
(cond ((featurep 'xemacs) ; XEmacs
(pr-x-font-width (face-font 'default)))
(t ; GNU Emacs
(pr-e-frame-char-width)))
(defcustom pr-menu-char-width (pr-menu-char-width)
"*Specify menu char width in pixels.
This variable is used to guess which horizontal position should be locked the
@ -2544,7 +2946,7 @@ SETTING It's a cons like:
(VARIABLE . VALUE)
That associates VARIABLE with VALUE. when this entry is
Which associates VARIABLE with VALUE. When this entry is
selected, it's executed the following command:
* If LOCAL is non-nil:
@ -2772,15 +3174,6 @@ See `pr-ps-printer-alist'.")
;; Keys & Menus
(defmacro pr-xemacs-global-menubar (&rest body)
`(save-excursion
(let ((temp (get-buffer-create (make-temp-name " *Temp"))))
;; be sure to access global menubar
(set-buffer temp)
,@body
(kill-buffer temp))))
(defsubst pr-visible-p (key)
(memq key pr-visible-entry-list))
@ -2802,16 +3195,6 @@ See `pr-ps-printer-alist'.")
'easy-menu-intern
(lambda (s) (if (stringp s) (intern s) s))))
(cond
((featurep 'xemacs) ; XEmacs
(defvar zmacs-region-stays nil) ; to avoid compilation gripes
(defun pr-region-active-p ()
(and pr-auto-region (not zmacs-region-stays) (ps-mark-active-p))))
(t ; GNU Emacs
(defun pr-region-active-p ()
(and pr-auto-region transient-mark-mode mark-active))))
(defconst pr-menu-spec
;; Menu mapping:
@ -3070,51 +3453,7 @@ menu.
Calls `pr-update-menus' to adjust menus."
(interactive)
(cond
((featurep 'xemacs) ; XEmacs
;; Menu binding
(pr-xemacs-global-menubar
(pr-x-add-submenu nil (cons "Printing" pr-menu-spec) "Apps"))
(setq pr-menu-print-item nil))
(t ; GNU Emacs
;; Menu binding
(require 'easymenu)
;; Replace existing "print" item by "Printing" item.
;; If you're changing this file, you'll load it a second,
;; third... time, but "print" item exists only in the first load.
(cond
;; Emacs 20
((< emacs-major-version 21)
(easy-menu-change '("tools") "Printing" pr-menu-spec pr-menu-print-item)
(when pr-menu-print-item
(easy-menu-remove-item nil '("tools") pr-menu-print-item)
(setq pr-menu-print-item nil
pr-menu-bar (vector 'menu-bar 'tools
(pr-get-symbol "Printing")))))
;; Emacs 21 & 22
(t
(let ((menu-file (if (= emacs-major-version 21)
'("menu-bar" "files") ; Emacs 21
'("menu-bar" "file")))) ; Emacs 22 or higher
(cond
(pr-menu-print-item
(easy-menu-add-item global-map menu-file
(easy-menu-create-menu "Print" pr-menu-spec)
"print-buffer")
(dolist (item '("print-buffer" "print-region"
"ps-print-buffer-faces" "ps-print-region-faces"
"ps-print-buffer" "ps-print-region"))
(easy-menu-remove-item global-map menu-file item))
(setq pr-menu-print-item nil
pr-menu-bar (vector 'menu-bar
(pr-get-symbol (nth 1 menu-file))
(pr-get-symbol "Print"))))
(t
(easy-menu-add-item global-map menu-file
(easy-menu-create-menu "Print" pr-menu-spec)))
))))))
(pr-global-menubar pr-menu-spec)
(pr-update-menus t))
@ -4402,7 +4741,7 @@ Interactively, you have the following situations:
C-u 2 M-x pr-ps-fast-fire RET
The command prompts the user for a N-UP value, then for a current
PostScript printer and, finally, for a file name. Then change the active
printer to that choosen by user and saves the PostScript image in
printer to that chosen by user and saves the PostScript image in
that file instead of sending it to the printer.
@ -4421,7 +4760,7 @@ zero and the argument SELECT is treated as follows:
If it's an integer greater or equal to 2, the command prompts the user for a
current PostScript printer and for a file name. Then change the active
printer to that choosen by user and saves the PostScript image in that file
printer to that chosen by user and saves the PostScript image in that file
instead of sending it to the printer.
If it's a symbol which it's defined in `pr-ps-printer-alist', it's the new
@ -4841,94 +5180,6 @@ See `pr-visible-entry-alist'.")
(+ index 2))
(defvar pr-menu-position nil)
(defvar pr-menu-state nil)
(cond
((featurep 'xemacs)
;; XEmacs
(defvar current-mouse-event nil) ; to avoid compilation gripes
(defun pr-menu-position (entry index horizontal)
(pr-x-make-event
'button-release
(list 'button 1
'x (- (pr-x-event-x-pixel current-mouse-event) ; X
(* horizontal pr-menu-char-width))
'y (- (pr-x-event-y-pixel current-mouse-event) ; Y
(* (pr-menu-index entry index) pr-menu-char-height)))))
)
(ps-windows-system
;; GNU Emacs for Windows 9x/NT
(defun pr-menu-position (entry index horizontal)
(let ((pos (cdr (pr-e-mouse-pixel-position))))
(list
(list (or (car pos) 0) ; X
(- (or (cdr pos) 0) ; Y
(* (pr-menu-index entry index) pr-menu-char-height)))
(selected-frame)))) ; frame
)
(t
;; GNU Emacs
(defun pr-menu-position (entry index horizontal)
(let ((pos (cdr (pr-e-mouse-pixel-position))))
(list
(list (- (or (car pos) 0) ; X
(* horizontal pr-menu-char-width))
(- (or (cdr pos) 0) ; Y
(* (pr-menu-index entry index) pr-menu-char-height)))
(selected-frame)))) ; frame
))
(cond
((featurep 'xemacs)
;; XEmacs
(defvar current-menubar nil) ; to avoid compilation gripes
(defun pr-menu-lookup (path)
(car (pr-x-find-menu-item current-menubar (cons "Printing" path))))
;; XEmacs
(defun pr-menu-lock (entry index horizontal state path)
(when pr-menu-lock
(or (and pr-menu-position (eq state pr-menu-state))
(setq pr-menu-position (pr-menu-position entry index horizontal)
pr-menu-state state))
(let* ((menu (pr-menu-lookup path))
(result (pr-x-get-popup-menu-response menu pr-menu-position)))
(and (pr-x-misc-user-event-p result)
(funcall (pr-x-event-function result)
(pr-x-event-object result))))
(setq pr-menu-position nil))))
(t
;; GNU Emacs
(defun pr-menu-lookup (path)
(lookup-key global-map
(if path
(vconcat pr-menu-bar
(mapcar 'pr-get-symbol
(if (listp path)
path
(list path))))
pr-menu-bar)))
;; GNU Emacs
(defun pr-menu-lock (entry index horizontal state path)
(when pr-menu-lock
(or (and pr-menu-position (eq state pr-menu-state))
(setq pr-menu-position (pr-menu-position entry index horizontal)
pr-menu-state state))
(let* ((menu (pr-menu-lookup path))
(result (x-popup-menu pr-menu-position menu)))
(and result
(let ((command (lookup-key menu (vconcat result))))
(if (fboundp command)
(funcall command)
(eval command)))))
(setq pr-menu-position nil)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Printer & Utility Selection
@ -4991,237 +5242,6 @@ If menu binding was not done, calls `pr-menu-bind'."
alist)))
(cond
((featurep 'xemacs)
;; XEmacs
(defalias 'pr-update-mode-line 'set-menubar-dirty-flag)
;; XEmacs
(defvar pr-ps-name-old "PostScript Printers")
(defvar pr-txt-name-old "Text Printers")
(defvar pr-ps-utility-old "PostScript Utility")
(defvar pr-even-or-odd-old "Print All Pages")
;; XEmacs
(defun pr-do-update-menus (&optional force)
(pr-menu-alist pr-ps-printer-alist
'pr-ps-name
'pr-menu-set-ps-title
'("Printing")
'pr-ps-printer-menu-modified
force
pr-ps-name-old
'postscript 2)
(pr-menu-alist pr-txt-printer-alist
'pr-txt-name
'pr-menu-set-txt-title
'("Printing")
'pr-txt-printer-menu-modified
force
pr-txt-name-old
'text 2)
(let ((save-var pr-ps-utility-menu-modified))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("Printing" "PostScript Print" "File")
'save-var
force
pr-ps-utility-old
nil 1))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("Printing" "PostScript Preview" "File")
'pr-ps-utility-menu-modified
force
pr-ps-utility-old
nil 1)
(pr-even-or-odd-pages ps-even-or-odd-pages force))
;; XEmacs
(defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
entry index)
(when (and alist (or force (symbol-value modified-sym)))
(pr-xemacs-global-menubar
(pr-x-add-submenu menu-path
(pr-menu-create name alist var-sym
fun entry index)))
(funcall fun (symbol-value var-sym))
(set modified-sym nil)))
;; XEmacs
(defun pr-relabel-menu-item (newname var-sym)
(pr-xemacs-global-menubar
(pr-x-relabel-menu-item
(list "Printing" (symbol-value var-sym))
newname)
(set var-sym newname)))
;; XEmacs
(defun pr-menu-set-ps-title (value &optional item entry index)
(pr-relabel-menu-item (format "PostScript Printer: %s" value)
'pr-ps-name-old)
(pr-ps-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; XEmacs
(defun pr-menu-set-txt-title (value &optional item entry index)
(pr-relabel-menu-item (format "Text Printer: %s" value)
'pr-txt-name-old)
(pr-txt-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; XEmacs
(defun pr-menu-set-utility-title (value &optional item entry index)
(pr-xemacs-global-menubar
(let ((newname (format "%s" value)))
(pr-x-relabel-menu-item
(list "Printing" "PostScript Print" "File" pr-ps-utility-old)
newname)
(pr-x-relabel-menu-item
(list "Printing" "PostScript Preview" "File" pr-ps-utility-old)
newname)
(setq pr-ps-utility-old newname)))
(pr-ps-set-utility value)
(and index
(pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
;; XEmacs
(defun pr-even-or-odd-pages (value &optional no-lock)
(pr-relabel-menu-item (cdr (assq value pr-even-or-odd-alist))
'pr-even-or-odd-old)
(setq ps-even-or-odd-pages value)
(or no-lock
(pr-menu-lock 'postscript-options 8 12 'toggle nil))))
(t
;; GNU Emacs
(defalias 'pr-update-mode-line 'force-mode-line-update)
;; GNU Emacs
(defun pr-do-update-menus (&optional force)
(pr-menu-alist pr-ps-printer-alist
'pr-ps-name
'pr-menu-set-ps-title
"PostScript Printers"
'pr-ps-printer-menu-modified
force
"PostScript Printers"
'postscript 2)
(pr-menu-alist pr-txt-printer-alist
'pr-txt-name
'pr-menu-set-txt-title
"Text Printers"
'pr-txt-printer-menu-modified
force
"Text Printers"
'text 2)
(let ((save-var pr-ps-utility-menu-modified))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("PostScript Print" "File" "PostScript Utility")
'save-var
force
"PostScript Utility"
nil 1))
(pr-menu-alist pr-ps-utility-alist
'pr-ps-utility
'pr-menu-set-utility-title
'("PostScript Preview" "File" "PostScript Utility")
'pr-ps-utility-menu-modified
force
"PostScript Utility"
nil 1)
(pr-even-or-odd-pages ps-even-or-odd-pages force))
;; GNU Emacs
(defun pr-menu-get-item (name-list)
;; NAME-LIST is a string or a list of strings.
(or (listp name-list)
(setq name-list (list name-list)))
(and name-list
(let* ((reversed (reverse name-list))
(name (pr-get-symbol (car reversed)))
(path (nreverse (cdr reversed)))
(menu (lookup-key
global-map
(vconcat pr-menu-bar
(mapcar 'pr-get-symbol path)))))
(assq name (nthcdr 2 menu)))))
;; GNU Emacs
(defvar pr-temp-menu nil)
;; GNU Emacs
(defun pr-menu-alist (alist var-sym fun menu-path modified-sym force name
entry index)
(when (and alist (or force (symbol-value modified-sym)))
(easy-menu-define pr-temp-menu nil ""
(pr-menu-create name alist var-sym fun entry index))
(let ((item (pr-menu-get-item menu-path)))
(and item
(let* ((binding (nthcdr 3 item))
(key-binding (cdr binding)))
(setcar binding pr-temp-menu)
(and key-binding (listp (car key-binding))
(setcdr binding (cdr key-binding))) ; skip KEY-BINDING
(funcall fun (symbol-value var-sym) item))))
(set modified-sym nil)))
;; GNU Emacs
(defun pr-menu-set-item-name (item name)
(and item
(setcar (nthcdr 2 item) name))) ; ITEM-NAME
;; GNU Emacs
(defun pr-menu-set-ps-title (value &optional item entry index)
(pr-menu-set-item-name (or item
(pr-menu-get-item "PostScript Printers"))
(format "PostScript Printer: %s" value))
(pr-ps-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; GNU Emacs
(defun pr-menu-set-txt-title (value &optional item entry index)
(pr-menu-set-item-name (or item
(pr-menu-get-item "Text Printers"))
(format "Text Printer: %s" value))
(pr-txt-set-printer value)
(and index
(pr-menu-lock entry index 12 'toggle nil)))
;; GNU Emacs
(defun pr-menu-set-utility-title (value &optional item entry index)
(let ((name (symbol-name value)))
(if item
(pr-menu-set-item-name item name)
(pr-menu-set-item-name
(pr-menu-get-item
'("PostScript Print" "File" "PostScript Utility"))
name)
(pr-menu-set-item-name
(pr-menu-get-item
'("PostScript Preview" "File" "PostScript Utility"))
name)))
(pr-ps-set-utility value)
(and index
(pr-menu-lock entry index 5 nil '("PostScript Print" "File"))))
;; GNU Emacs
(defun pr-even-or-odd-pages (value &optional no-lock)
(pr-menu-set-item-name (pr-menu-get-item "Print All Pages")
(cdr (assq value pr-even-or-odd-alist)))
(setq ps-even-or-odd-pages value)
(or no-lock
(pr-menu-lock 'postscript-options 8 12 'toggle nil)))))
(defun pr-ps-set-utility (value)
(let ((item (cdr (assq value pr-ps-utility-alist))))
(or item

View File

@ -1448,7 +1448,7 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
(with-no-warnings
(if compilation-finish-function
(funcall compilation-finish-function (current-buffer) msg)))
(run-hook-with-args compilation-finish-functions (current-buffer) msg)))
(run-hook-with-args 'compilation-finish-functions (current-buffer) msg)))
;; Called when compilation process changes state.
(defun compilation-sentinel (proc msg)

View File

@ -10,11 +10,11 @@
;; Maintainer: Kenichi Handa <handa@m17n.org> (multi-byte characters)
;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Keywords: wp, print, PostScript
;; Version: 6.7.3
;; Version: 6.7.4
;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
(defconst ps-print-version "6.7.3"
"ps-print.el, v 6.7.3 <2007/02/06 vinicius>
(defconst ps-print-version "6.7.4"
"ps-print.el, v 6.7.4 <2007/05/13 vinicius>
Vinicius's last change version -- this file may have been edited as part of
Emacs without changes to the version number. When reporting bugs, please also
@ -5817,21 +5817,27 @@ XSTART YSTART are the relative position for the first page in a sheet.")
(ps-get-size (symbol-value font-sym) "font size" font-sym))
(defun ps-rgb-color (color default)
(cond ((and color (listp color) (= (length color) 3)
(let ((cl color)
(ok t) e)
(while (and ok cl)
(setq e (car cl)
cl (cdr cl)
ok (and (floatp e) (<= 0.0 e) (<= e 1.0))))
ok))
color)
((and (floatp color) (<= 0.0 color) (<= color 1.0))
(list color color color))
((stringp color) (ps-color-scale color))
(t (list default default default))
))
(defun ps-rgb-color (color unspecified default)
(cond
;; (float float float) ==> (R G B)
((and color (listp color) (= (length color) 3)
(let ((cl color)
(ok t) e)
(while (and ok cl)
(setq e (car cl)
cl (cdr cl)
ok (and (floatp e) (<= 0.0 e) (<= e 1.0))))
ok))
color)
;; float ==> 0.0 = black .. 1.0 = white
((and (floatp color) (<= 0.0 color) (<= color 1.0))
(list color color color))
;; "colorName" but different from "unspecified-[bf]g"
((and (stringp color) (not (string= color unspecified)))
(ps-color-scale color))
;; ok, use the default
(t
(list default default default))))
(defun ps-begin-job (genfunc)
@ -5913,6 +5919,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
(ps-face-background-name 'default))
(t
ps-default-bg))
"unspecified-bg"
1.0)
ps-default-foreground (ps-rgb-color
(cond
@ -5924,6 +5931,7 @@ XSTART YSTART are the relative position for the first page in a sheet.")
(ps-face-foreground-name 'default))
(t
ps-default-fg))
"unspecified-fg"
0.0)
ps-default-color (and (eq ps-print-color-p t) ps-default-foreground)
ps-current-color ps-default-color

View File

@ -3196,7 +3196,7 @@ will pop the mark twice, and
C-u \\[set-mark-command] \\[set-mark-command] \\[set-mark-command]
will pop the mark three times.
nil means \\[set-mark-command]'s behavior does not change
A value of nil means \\[set-mark-command]'s behavior does not change
after C-u \\[set-mark-command]."
:type 'boolean
:group 'editing-basics)
@ -3263,12 +3263,11 @@ purposes. See the documentation of `set-mark' for more information."
If the last global mark pushed was not in the current buffer,
also push LOCATION on the global mark ring.
Display `Mark set' unless the optional second arg NOMSG is non-nil.
In Transient Mark mode, activate mark if optional third arg ACTIVATE non-nil.
Novice Emacs Lisp programmers often try to use the mark for the wrong
purposes. See the documentation of `set-mark' for more information.
In Transient Mark mode, this does not activate the mark."
In Transient Mark mode, activate mark if optional third arg ACTIVATE non-nil."
(unless (null (mark t))
(setq mark-ring (cons (copy-marker (mark-marker)) mark-ring))
(when (> (length mark-ring) mark-ring-max)

View File

@ -1,7 +1,7 @@
;;; t-mouse.el --- mouse support within the text terminal
;; Authors: Alessandro Rubini and Ian T Zimmerman
;; Maintainer: Nick Roberts <nickrob@gnu.org>
;; Author: Nick Roberts <nickrob@gnu.org>
;; Maintainer: FSF
;; Keywords: mouse gpm linux
;; Copyright (C) 1994, 1995, 1998, 2006, 2007 Free Software Foundation, Inc.
@ -25,282 +25,43 @@
;;; Commentary:
;; This package provides access to mouse event as reported by the
;; gpm-Linux package. It uses the program "mev" to get mouse events.
;; It tries to reproduce the functionality offered by Emacs under X.
;; This package provides access to mouse event as reported by the gpm-Linux
;; package. It tries to reproduce the functionality offered by Emacs under X.
;; The "gpm" server runs under Linux, so this package is rather
;; Linux-dependent.
;; Modified by Nick Roberts for Emacs 22. In particular, the mode-line is
;; now position sensitive.
(defvar t-mouse-process nil
"Embeds the process which passes mouse events to Emacs.
It is used by the program t-mouse.")
(defvar t-mouse-filter-accumulator ""
"Accumulates input from the mouse reporting process.")
(defvar t-mouse-debug-buffer nil
"Events normally posted to command queue are printed here in debug mode.
See `t-mouse-start-debug'.")
(defvar t-mouse-current-xy '(0 . 0)
"Stores the last mouse position t-mouse has been told about.")
(defvar t-mouse-drag-start nil
"Whenever a drag starts in a special part of a window
\(not the text), the `translated' starting coordinates including the
window and part involved are saved here. This is necessary lest they
get re-translated when the button goes up, at which time window
configuration may have changed.")
(defvar t-mouse-prev-set-selection-function 'x-set-selection)
(defvar t-mouse-prev-get-selection-function 'x-get-selection)
(defvar t-mouse-swap-alt-keys nil
"When set, Emacs will handle mouse events with the right Alt
\(a.k.a. Alt-Ger) modifier, not with the regular left Alt modifier.
Useful for people who play strange games with their keyboard tables.")
(defvar t-mouse-fix-21 nil
"Enable brain-dead chords for 2 button mice.")
;; The file, t-mouse.el was originally written by Alessandro Rubini and Ian T
;; Zimmerman, and Emacs communicated with gpm through a client program called
;; mev. Now the interface with gpm is directly through a Unix socket, so this
;; file is reduced to a single minor mode macro call.
;;
;;; Code:
;; get the number of the current virtual console
(defun t-mouse-tty ()
"Return number of virtual terminal Emacs is running on, as a string.
For example, \"2\" for /dev/tty2."
(with-temp-buffer
(call-process "ps" nil t nil "h" (format "%s" (emacs-pid)))
(goto-char (point-min))
(if (or
;; Many versions of "ps", all different....
(re-search-forward " +tty\\(.?[0-9a-f]\\)" nil t)
(re-search-forward "p \\([0-9a-f]\\)" nil t)
(re-search-forward "v0\\([0-9a-f]\\)" nil t)
(re-search-forward "[0-9]+ +\\([0-9]+\\)" nil t)
(re-search-forward "[\\t ]*[0-9]+[\\t ]+\\([0-9]+\\)" nil t)
(re-search-forward " +vc/\\(.?[0-9a-f]\\)" nil t)
(re-search-forward " +pts/\\(.?[0-9a-f]\\)" nil t))
(buffer-substring (match-beginning 1) (match-end 1)))))
;; due to a horrible kludge in Emacs' keymap handler
;; (read_key_sequence) mouse clicks on funny parts of windows generate
;; TWO events, the first being a dummy of the sort '(mode-line).
;; That's why Per Abrahamsen's code in xt-mouse.el doesn't work for
;; the modeline, for instance.
;; now get this: the Emacs C code that generates these fake events
;; depends on certain things done by the very lowest level input
;; handlers; namely the symbols for the events (for instance
;; 'C-S-double-mouse-2) must have an 'event-kind property, set to
;; 'mouse-click. Since events from unread-command-events do not pass
;; through the low level handlers, they don't get this property unless
;; I set it myself. I imagine this has caused innumerable attempts by
;; hackers to do things similar to t-mouse to lose.
;; The next page of code is devoted to fixing this ugly problem.
;; WOW! a fully general powerset generator
;; (C) Ian Zimmerman Mon Mar 23 12:00:16 PST 1998 :-)
(defun t-mouse-powerset (l)
(if (null l) '(nil)
(let ((l1 (t-mouse-powerset (cdr l)))
(first (nth 0 l)))
(append
(mapcar (function (lambda (l) (cons first l))) l1) l1))))
;; and a slightly less general cartesian product
(defun t-mouse-cartesian (l1 l2)
(if (null l1) l2
(append (mapcar (function (lambda (x) (append (nth 0 l1) x))) l2)
(t-mouse-cartesian (cdr l1) l2))))
(let* ((modifier-sets (t-mouse-powerset '(control meta shift)))
(typed-sets (t-mouse-cartesian '((down) (drag))
'((mouse-1) (mouse-2) (mouse-3))))
(multipled-sets (t-mouse-cartesian '((double) (triple)) typed-sets))
(all-sets (t-mouse-cartesian modifier-sets multipled-sets)))
(while all-sets
(let ((event-sym (event-convert-list (nth 0 all-sets))))
(if (not (get event-sym 'event-kind))
(put event-sym 'event-kind 'mouse-click)))
(setq all-sets (cdr all-sets))))
(defun t-mouse-make-event-element (x-dot-y-avec-time)
(let* ((x-dot-y (nth 0 x-dot-y-avec-time))
(time (nth 1 x-dot-y-avec-time))
(x (car x-dot-y))
(y (cdr x-dot-y))
(w (window-at x y))
(ltrb (window-edges w))
(left (nth 0 ltrb))
(top (nth 1 ltrb))
(event (if w
(posn-at-x-y (- x left) (- y top) w t)
(append (list nil 'menu-bar)
(nthcdr 2 (posn-at-x-y x y))))))
(setcar (nthcdr 3 event) time)
event))
;;; This fun is partly Copyright (C) 1994 Per Abrahamsen <abraham@iesd.auc.dk>
(defun t-mouse-make-event ()
"Make a Lisp style event from the contents of mouse input accumulator.
Also trim the accumulator by all the data used to build the event."
(let (ob (ob-pos (condition-case nil
(progn
;; this test is just needed for Fedora Core 3
(if (string-match "STILL RUNNING_1\n"
t-mouse-filter-accumulator)
(setq t-mouse-filter-accumulator
(substring
t-mouse-filter-accumulator (match-end 0))))
(read-from-string t-mouse-filter-accumulator))
(error nil))))
;; this test is just needed for Fedora Core 3
(if (or (eq (car ob-pos) 'STILL) (eq (car ob-pos) '***) (not ob-pos))
nil
(setq ob (car ob-pos))
(if (string-match "mev:$" (prin1-to-string ob))
(error "Can't open mouse connection"))
(setq t-mouse-filter-accumulator
(substring t-mouse-filter-accumulator (cdr ob-pos)))
;;now the real work
(let ((event-type (nth 0 ob))
(current-xy-avec-time (nth 1 ob))
(type-switch (length ob)))
(if t-mouse-fix-21
(let
;;Acquire the event's symbol's name.
((event-name-string (symbol-name event-type))
end-of-root-event-name
new-event-name-string)
(if (string-match "-\\(21\\|\\12\\)$" event-name-string)
;;Transform the name to what it should have been.
(progn
(setq end-of-root-event-name (match-beginning 0))
(setq new-event-name-string
(concat (substring
event-name-string 0
end-of-root-event-name) "-3"))
;;Change the event to the symbol that corresponds to the
;;name we made. The proper symbol already exists.
(setq event-type
(intern new-event-name-string))))))
;;store current position for mouse-position
(setq t-mouse-current-xy (nth 0 current-xy-avec-time))
;;events have many types but fortunately they differ in length
(cond
((= type-switch 4) ;must be drag
(let ((count (nth 2 ob))
(start-element
(or t-mouse-drag-start
(t-mouse-make-event-element (nth 3 ob))))
(end-element
(t-mouse-make-event-element current-xy-avec-time)))
(setq t-mouse-drag-start nil)
(list event-type start-element end-element count)))
((= type-switch 3) ;down or up
(let ((count (nth 2 ob))
(element
(t-mouse-make-event-element current-xy-avec-time)))
(if (and (not t-mouse-drag-start)
(symbolp (nth 1 element)))
;; OUCH! GOTCHA! emacs uses setc[ad]r on these!
(setq t-mouse-drag-start (copy-sequence element))
(setq t-mouse-drag-start nil))
(list event-type element count)))
((= type-switch 2) ;movement
(list (if (eq 'vertical-scroll-bar
(nth 1 t-mouse-drag-start)) 'scroll-bar-movement
'mouse-movement)
(t-mouse-make-event-element current-xy-avec-time))))))))
(defun t-mouse-process-filter (proc string)
(setq t-mouse-filter-accumulator
(concat t-mouse-filter-accumulator string))
(let ((event (t-mouse-make-event)))
(while event
(if (or track-mouse
(not (eq 'mouse-movement (event-basic-type event))))
(setq unread-command-events
(nconc unread-command-events (list event))))
(if t-mouse-debug-buffer
(print unread-command-events t-mouse-debug-buffer))
(setq event (t-mouse-make-event)))))
(defun t-mouse-mouse-position-function (pos)
"Return the t-mouse-position unless running with a window system.
The (secret) scrollbar interface is not implemented yet."
(setcdr pos t-mouse-current-xy)
pos)
;; It should be possible to just send SIGTSTP to the inferior with
;; stop-process. That doesn't work; mev receives the signal fine but
;; is not really stopped: instead it returns from
;; kill(getpid(), SIGTSTP) immediately. I don't understand what's up
;; itz Tue Mar 24 14:27:38 PST 1998.
(add-hook 'suspend-hook
(function (lambda ()
(and t-mouse-process
;(stop-process t-mouse-process)
(process-send-string
t-mouse-process "push -enone -dall -Mnone\n")))))
(add-hook 'suspend-resume-hook
(function (lambda ()
(and t-mouse-process
;(continue-process t-mouse-process)
(process-send-string t-mouse-process "pop\n")))))
;;;###autoload
(define-minor-mode t-mouse-mode
"Toggle t-mouse mode.
"Toggle t-mouse mode to use the mouse in Linux consoles.
With prefix arg, turn t-mouse mode on iff arg is positive.
Turn it on to use Emacs mouse commands, and off to use t-mouse commands."
nil " Mouse" nil :global t
(unless window-system
This allows the use of the mouse when operating on a Linux console, in the
same way as you can use the mouse under X11.
It requires the `mev' program, part of the `gpm' utilities."
:global t :group 'mouse
(if window-system
(error "t-mouse only works in the console on GNU/Linux")
(if t-mouse-mode
;; Turn it on. Starts getting a stream of mouse events from an
;; asynchronous process. Only works if Emacs is running on a virtual
;; terminal without a window system.
(progn
(setq mouse-position-function #'t-mouse-mouse-position-function)
(let ((tty (t-mouse-tty))
(process-connection-type t))
(if (not (stringp tty))
(error "Cannot find a virtual terminal"))
(setq t-mouse-process
(start-process "t-mouse" nil
"mev" "-i" "-E" "-C" tty
(if t-mouse-swap-alt-keys
"-M-leftAlt" "-M-rightAlt")
"-e-move"
"-dall" "-d-hard"
"-f")))
(setq t-mouse-filter-accumulator "")
(set-process-filter t-mouse-process 't-mouse-process-filter)
(set-process-query-on-exit-flag t-mouse-process nil))
;; Turn it off
(setq mouse-position-function nil)
(delete-process t-mouse-process)
(setq t-mouse-process nil))))
(unless (fboundp 'term-open-connection)
(progn
(setq t-mouse-mode nil)
(error "Emacs must be built with Gpm to use this mode")))
(unless (term-open-connection)
(progn
(setq t-mouse-mode nil)
(error "Can't open mouse connection"))))
;; Turn it off
(term-close-connection))))
(provide 't-mouse)

View File

@ -9,6 +9,9 @@
;; It can't really display underlines.
(tty-no-underline)
(condition-case nil (t-mouse-mode 1)
(error nil))
;; Make Latin-1 input characters work, too.
;; Meta will continue to work, because the kernel
;; turns that into Escape.

View File

@ -1669,7 +1669,7 @@ quit spell session exited."
;; to avoid collapsing markers before and after
;; into a single place.
(ispell-insert-word new-word)
(delete-region (point) (+ (point) (- end start)))
(delete-region (point) end)
;; It is meaningless to preserve the cursor position
;; inside a word that has changed.
(setq cursor-location (point))
@ -1751,8 +1751,8 @@ which is in `ispell-local-dictionary-alist' or `ispell-dictionary-alist'."
;; return dummy word when just flagging misspellings
(list "" (point) (point))
(error "No word found to check!"))
(setq start (match-beginning 0)
end (point)
(setq start (copy-marker (match-beginning 0))
end (point-marker)
word (buffer-substring-no-properties start end))
(list word start end))))
@ -2483,7 +2483,12 @@ When asynchronous processes are not supported, `run' is always returned."
(defun ispell-start-process ()
"Start the ispell process, with support for no asynchronous processes.
Keeps argument list for future ispell invocations for no async support."
(let (args)
(let ((default-directory default-directory)
args)
(unless (and (file-directory-p default-directory)
(file-readable-p default-directory))
;; Defend against bad `default-directory'.
(setq default-directory (expand-file-name "~/")))
;; Local dictionary becomes the global dictionary in use.
(setq ispell-current-dictionary
(or ispell-local-dictionary ispell-dictionary))

View File

@ -37,7 +37,7 @@
(defcustom display-time-mail-file nil
"*File name of mail inbox file, for indicating existence of new mail.
Non-nil and not a string means don't check for mail. nil means use
Non-nil and not a string means don't check for mail; nil means use
default, which is system-dependent, and is the same as used by Rmail."
:type '(choice (const :tag "None" none)
(const :tag "Default" nil)
@ -94,7 +94,7 @@ past 15 minutes. The default is to display 1 minute load average."
(defcustom display-time-24hr-format nil
"*Non-nil indicates time should be displayed as hh:mm, 0 <= hh <= 23.
nil means 1 <= hh <= 12, and an AM/PM suffix is used."
A value of nil means 1 <= hh <= 12, and an AM/PM suffix is used."
:type 'boolean
:group 'display-time)

View File

@ -406,8 +406,8 @@ where
WHERE is a text describing the key sequences to which DEF-FUN is
bound now (or, if it is remapped, a key sequence
for the function it is remapped to)
REMARK is a list with info about rebinding. It has either of these
formats:
REMARK is a list with info about rebinding. It has either of
these formats:
\(TEXT cua-mode)
\(TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)
@ -912,14 +912,14 @@ See `get-lang-string' for more information.")
(defun get-lang-string (lang stringid &optional no-eng-fallback)
"Get a language specific string for Emacs.
In certain places Emacs can replace a string showed to the user with a language specific string.
This function retrieves such strings.
In certain places Emacs can replace a string shown to the user with
a language specific string. This function retrieves such strings.
LANG is the language specification. It should be one of those
LANG is the language specification. It should be one of those
strings that can be returned by `read-language-name'. STRINGID
is a symbol that specifies the string to retrieve.
If no string is found for STRINGID in the choosen language then
If no string is found for STRINGID in the chosen language then
the English string is returned unless NO-ENG-FALLBACK is non-nil.
See `lang-strings' for more information.

View File

@ -64,13 +64,13 @@
;; is now controlled by the presence of a value in `view-return-to-alist'.
(defcustom view-scroll-auto-exit nil
"*Non-nil means scrolling past the end of buffer exits View mode.
nil means attempting to scroll past the end of the buffer,
A value of nil means attempting to scroll past the end of the buffer,
only rings the bell and gives a message on how to leave."
:type 'boolean
:group 'view)
(defcustom view-try-extend-at-buffer-end nil
"*Non-nil means try load more of file when reaching end of buffer.
"*Non-nil means try to load more of file when reaching end of buffer.
This variable is mainly intended to be temporarily set to non-nil by
the F command in view-mode, but you can set it to t if you want the action
for all scroll commands in view mode."
@ -94,7 +94,7 @@ considered for restoring."
:group 'view)
(defcustom view-inhibit-help-message nil
"*Non-nil inhibits the help message showed upon entering View mode."
"*Non-nil inhibits the help message shown upon entering View mode."
:type 'boolean
:group 'view
:version "22.1")

View File

@ -43,6 +43,8 @@
;;; Code:
(defvar xterm-mouse-debug-buffer nil)
;; XXX Perhaps this should be terminal-local instead. --lorentey
(define-key function-key-map "\e[M" 'xterm-mouse-translate)
@ -96,6 +98,8 @@
(list (intern (format "drag-mouse-%d"
(+ 1 xterm-mouse-last)))
down-data click-data)))))
(if xterm-mouse-debug-buffer
(print unread-command-events xterm-mouse-debug-buffer))
(if (and (symbolp down-where)
(consp down-where))
(vector (list down-where down-data) down)

View File

@ -1,3 +1,12 @@
2007-05-12 Richard Stallman <rms@gnu.org>
* text.texi (Margins): indent-to-left-margin is not the default.
(Mode-Specific Indent): For indent-line-function, the default
is indent-relative.
* modes.texi (Example Major Modes): Explain last line of text-mode
is redundant.
2007-05-10 Richard Stallman <rms@gnu.org>
* keymaps.texi (Scanning Keymaps): Update where-is-internal example.

View File

@ -7,7 +7,7 @@
@c Version of the manual and of Emacs.
@c Please remember to update the edition number in README as well.
@set VERSION 2.9
@set EMACSVER 22.0.99
@set EMACSVER 22.0.990
@dircategory Emacs
@direntry

View File

@ -616,7 +616,7 @@ the text at the beginning of the buffer matches @var{regexp} and
@code{auto-mode-alist} gets to decide the mode.
@end defvar
@defvar file-start-mode-alist
@defvar magic-fallback-mode-alist
This works like @code{magic-mode-alist}, except that it is handled
only if @code{auto-mode-alist} does not specify a mode for this file.
@end defvar
@ -956,7 +956,11 @@ Turning on Text mode runs the normal hook `text-mode-hook'."
@end group
@end smallexample
But here is how it was defined formerly, before
@noindent
(The last line is redundant nowadays, since @code{indent-relative} is
the default value, and we'll delete it in a future version.)
Here is how it was defined formerly, before
@code{define-derived-mode} existed:
@smallexample

View File

@ -1655,11 +1655,10 @@ they default to the whole buffer.
@end defun
@defun indent-to-left-margin
This is the default @code{indent-line-function}, used in Fundamental
mode, Text mode, etc. Its effect is to adjust the indentation at the
beginning of the current line to the value specified by the variable
@code{left-margin}. This may involve either inserting or deleting
whitespace.
This function adjusts the indentation at the beginning of the current
line to the value specified by the variable @code{left-margin}. (That
may involve either inserting or deleting whitespace.) This function
is value of @code{indent-line-function} in Paragraph-Indent Text mode.
@end defun
@defvar left-margin
@ -2199,9 +2198,7 @@ various commands) to indent the current line. The command
In Lisp mode, the value is the symbol @code{lisp-indent-line}; in C
mode, @code{c-indent-line}; in Fortran mode, @code{fortran-indent-line}.
In Fundamental mode, Text mode, and many other modes with no standard
for indentation, the value is @code{indent-to-left-margin} (which is the
default value).
The default value is @code{indent-relative}.
@end defvar
@deffn Command indent-according-to-mode

View File

@ -1,3 +1,8 @@
2007-05-19 Eli Zaretskii <eliz@gnu.org>
* INSTALL: Fix URL of EmacsW32 site where building with image
support is described.
2007-04-26 Glenn Morris <rgm@gnu.org>
* emacs.rc: Increase version to 22.1.50.

View File

@ -271,8 +271,12 @@
Binaries for the image libraries (among many others) can be found at
the GnuWin32 project. These are built with MinGW, but they can be
used with both GCC/MinGW and MSVC builds of Emacs. See the info on
http://ourcomments.org/Emacs/EmacsW32.html for more details about
installing image support libraries.
http://ourcomments.org/Emacs/w32-build-emacs.html, under "How to Get
Images Support", for more details about installing image support
libraries. Note specifically that, due to some packaging snafus in
the GnuWin32-supplied image libraries, you will need to download
_source_ packages for some of the libraries in order to get the
header files necessary for building Emacs with image support.
* Building

View File

@ -1,3 +1,103 @@
2007-05-20 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* Makefile.in: Move GPM check outside HAVE_X_WINDOWS.
2007-05-20 Nick Roberts <nickrob@snap.net.nz>
* config.in, keyboard.c, Makefile.in, sysdep.c, term.c,
* termhooks.h: Use HAVE_GPM instead of HAVE_GPM_H.
2007-05-20 Nick Roberts <nickrob@snap.net.nz>
* keyboard.c (make_lispy_event): Make case GPM_CLICK_EVENT
conditional on [HAVE_GPM_H].
2007-05-19 Stefan Monnier <monnier@iro.umontreal.ca>
* syntax.c (skip_chars): Update syntax-table only after we checked that
the new location is valid.
2007-05-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around
mac_get_window_bounds.
2007-05-20 Nick Roberts <nickrob@snap.net.nz>
* Makefile.in (LIBGPM): Allow it to be set from configure.
If set then link Emacs with it.
* config.in: Regenerate.
* lisp.h (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
New externs.
* termhooks.h [HAVE_GPM_H] (enum event_kind): Add GPM_CLICK_EVENT.
Include gpm.h.
(handle_one_term_event, term_gpm) New externs.
* sysdep.c [HAVE_GPM_H] (init_sys_modes): Make gpm_fd nonblocking
and allow it to be interrupted by SIGIO.
* process.c (gpm_wait_mask, max_gpm_desc): New variables.
(wait_reading_process_output): Wait on gpm_fd too.
(add_gpm_wait_descriptor, delete_gpm_wait_descriptor)): New functions.
(add_gpm_wait_descriptor_called_flag): New variable.
(delete_keyboard_wait_descriptor): Check gpm_wait_mask.
* keyboard.c [HAVE_GPM_H] (Qmouse_fixup_help_message)
(make_lispy_movement, tracking_off, Ftrack_mouse, some_mouse_moved)
(show_help_echo, readable_events, kbd_buffer_get_event, init_keyboard):
Extend HAVE_MOUSE ifdefs to HAVE_GPM_H.
(make_lispy_event): Add case GPM_CLICK_EVENT.
(read_avail_input): Handle mouse input.
* term.c (write_glyphs_with_face): New function.
[HAVE_GPM_H]: Include buffer.h, sys/fcntl.h.
(mouse_face_beg_row, mouse_face_beg_col, mouse_face_end_row)
(mouse_face_end_col, mouse_face_past_end, mouse_face_window)
(mouse_face_face_id, term_gpm, pos_x, pos_y)
(last_mouse_x, last_mouse_y): New variables.
(term_show_mouse_face, term_clear_mouse_face, fast_find_position)
(term_mouse_highlight, term_mouse_movement, term_mouse_position)
(term_mouse_click, handle_one_term_event, Fterm_open_connection)
(Fterm_close_connection): New functions.
(term_init): Initialise mouse_face_window.
2007-05-19 Chong Yidong <cyd@stupidchicken.com>
* xdisp.c (redisplay_window): If first window line is a
continuation line, recompute the new window start instead of
recentering.
2007-05-18 Glenn Morris <rgm@gnu.org>
* m/alpha.h (ORDINARY_LINK): No longer define on OpenBSD.
Suggested by Alfred M. Szmidt <ams@gnu.org>.
2007-05-17 Glenn Morris <rgm@gnu.org>
* m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD.
2007-05-16 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert
dead key repeat and up events.
2007-05-14 Chong Yidong <cyd@stupidchicken.com>
* image.c (pbm_load): Check image size for monochrome pbm.
2007-05-13 Chong Yidong <cyd@stupidchicken.com>
* xterm.c (XTread_socket): Revert last change.
2007-05-12 Chong Yidong <cyd@stupidchicken.com>
* image.c (pbm_load): Correctly check image size for greyscale pbm.
* xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC).
2007-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
* editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM)

View File

@ -457,6 +457,15 @@ LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM
#else /* not HAVE_X_WINDOWS */
#endif /* not HAVE_X_WINDOWS */
#if HAVE_GPM
#ifndef LIBGPM
#define LIBGPM -lgpm
#endif /* not defined LIBGPM */
#else /* not HAVE_GPM */
#define LIBGPM
#endif /* not HAVE_GPM */
LIBSOUND= @LIBSOUND@
CFLAGS_SOUND= @CFLAGS_SOUND@
@ -939,7 +948,7 @@ SOME_MACHINE_LISP = ${dotdot}/lisp/mouse.elc \
Note that SunOS needs -lm to come before -lc; otherwise, you get
duplicated symbols. If the standard libraries were compiled
with GCC, we might need gnulib again after them. */
LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) \
LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) LIBGPM \
LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP \
LIBS_DEBUG $(GETLOADAVG_LIBS) $(GNULIB_VAR) LIB_MATH LIB_STANDARD \
$(GNULIB_VAR)

View File

@ -231,6 +231,9 @@ Boston, MA 02110-1301, USA. */
/* Define to 1 if you have the ungif library (-lungif). */
#undef HAVE_GIF
/* Define to 1 if you have the gpm library (-lgpm). */
#undef HAVE_GPM
/* Define to 1 if you have the `grantpt' function. */
#undef HAVE_GRANTPT

View File

@ -5732,7 +5732,17 @@ pbm_load (f, img)
if (raw_p)
{
if ((x & 7) == 0)
c = *p++;
{
if (p >= end)
{
x_destroy_x_image (ximg);
x_clear_image (f, img);
image_error ("Invalid image size in image `%s'",
img->spec, Qnil);
goto error;
}
c = *p++;
}
g = c & 0x80;
c <<= 1;
}
@ -5744,9 +5754,13 @@ pbm_load (f, img)
}
else
{
if (raw_p && (p + 3 * height * width > end))
if (raw_p
&& ((type == PBM_GRAY)
? (p + height * width > end)
: (p + 3 * height * width > end)))
{
x_destroy_x_image (ximg);
x_clear_image (f, img);
image_error ("Invalid image size in image `%s'",
img->spec, Qnil);
goto error;

View File

@ -508,7 +508,7 @@ Lisp_Object Qmake_frame_visible;
Lisp_Object Qselect_window;
Lisp_Object Qhelp_echo;
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
Lisp_Object Qmouse_fixup_help_message;
#endif
@ -661,7 +661,7 @@ static Lisp_Object read_char_x_menu_prompt ();
static Lisp_Object read_char_minibuf_menu_prompt P_ ((int, int,
Lisp_Object *));
static Lisp_Object make_lispy_event P_ ((struct input_event *));
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
static Lisp_Object make_lispy_movement P_ ((struct frame *, Lisp_Object,
enum scroll_bar_part,
Lisp_Object, Lisp_Object,
@ -1466,7 +1466,7 @@ DEFUN ("abort-recursive-edit", Fabort_recursive_edit, Sabort_recursive_edit, 0,
return Qnil;
}
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
/* Restore mouse tracking enablement. See Ftrack_mouse for the only use
of this function. */
@ -1542,7 +1542,7 @@ some_mouse_moved ()
return 0;
}
#endif /* HAVE_MOUSE */
#endif /* HAVE_MOUSE || HAVE_GPM */
/* This is the actual command reading loop,
sans error-handling encapsulation. */
@ -2476,7 +2476,7 @@ show_help_echo (help, window, object, pos, ok_to_overwrite_keystroke_echo)
return;
}
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
if (!noninteractive && STRINGP (help))
{
/* The mouse-fixup-help-message Lisp function can call
@ -3753,7 +3753,7 @@ readable_events (flags)
return 1;
}
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
if (!(flags & READABLE_EVENTS_IGNORE_SQUEEZABLES)
&& !NILP (do_mouse_tracking) && some_mouse_moved ())
return 1;
@ -4103,7 +4103,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
{
if (kbd_fetch_ptr != kbd_store_ptr)
break;
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
if (!NILP (do_mouse_tracking) && some_mouse_moved ())
break;
#endif
@ -4125,7 +4125,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
#endif /* SIGIO */
if (kbd_fetch_ptr != kbd_store_ptr)
break;
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
if (!NILP (do_mouse_tracking) && some_mouse_moved ())
break;
#endif
@ -4361,7 +4361,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
}
}
}
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
/* Try generating a mouse motion event. */
else if (!NILP (do_mouse_tracking) && some_mouse_moved ())
{
@ -4406,7 +4406,7 @@ kbd_buffer_get_event (kbp, used_mouse_menu, end_time)
if (!NILP (x) && NILP (obj))
obj = make_lispy_movement (f, bar_window, part, x, y, time);
}
#endif /* HAVE_MOUSE */
#endif /* HAVE_MOUSE || HAVE GPM */
else
/* We were promised by the above while loop that there was
something for us to read! */
@ -6123,6 +6123,66 @@ make_lispy_event (event)
}
#endif
#ifdef HAVE_GPM
case GPM_CLICK_EVENT:
{
FRAME_PTR f = XFRAME (event->frame_or_window);
Lisp_Object head, position;
Lisp_Object *start_pos_ptr;
Lisp_Object start_pos;
int button = event->code;
if (button >= ASIZE (button_down_location))
{
button_down_location = larger_vector (button_down_location,
button + 1, Qnil);
mouse_syms = larger_vector (mouse_syms, button + 1, Qnil);
}
start_pos_ptr = &AREF (button_down_location, button);
start_pos = *start_pos_ptr;
position = make_lispy_position (f, &event->x, &event->y,
event->timestamp);
if (event->modifiers & down_modifier)
*start_pos_ptr = Fcopy_alist (position);
else if (event->modifiers & (up_modifier | drag_modifier))
{
if (!CONSP (start_pos))
return Qnil;
event->modifiers &= ~up_modifier;
}
head = modify_event_symbol (button,
event->modifiers,
Qmouse_click, Vlispy_mouse_stem,
NULL,
&mouse_syms,
XVECTOR (mouse_syms)->size);
if (event->modifiers & drag_modifier)
return Fcons (head,
Fcons (start_pos,
Fcons (position,
Qnil)));
else if (event->modifiers & double_modifier)
return Fcons (head,
Fcons (position,
Fcons (make_number (2),
Qnil)));
else if (event->modifiers & triple_modifier)
return Fcons (head,
Fcons (position,
Fcons (make_number (3),
Qnil)));
else
return Fcons (head,
Fcons (position,
Qnil));
}
#endif /* HAVE_GPM */
/* The 'kind' field of the event is something we don't recognize. */
default:
abort ();
@ -7057,7 +7117,27 @@ tty_read_avail_input (struct terminal *terminal,
if (! tty->input)
return 0; /* The terminal is suspended. */
/* Determine how many characters we should *try* to read. */
#ifdef HAVE_GPM
if (term_gpm && gpm_tty == tty->terminal->id)
{
Gpm_Event event;
struct input_event hold_quit;
int gpm;
EVENT_INIT (hold_quit);
hold_quit.kind = NO_EVENT;
while (gpm = Gpm_GetEvent (&event), gpm == 1) {
nread += handle_one_term_event (tty, &event, &hold_quit);
}
if (hold_quit.kind != NO_EVENT)
kbd_buffer_store_event (&hold_quit);
if (nread)
return nread;
}
#endif /* HAVE_GPM */
/* Determine how many characters we should *try* to read. */
#ifdef FIONREAD
/* Find out how much input is available. */
if (ioctl (fileno (tty->input), FIONREAD, &n_to_read) < 0)
@ -11440,7 +11520,7 @@ init_keyboard ()
recent_keys_index = 0;
kbd_fetch_ptr = kbd_buffer;
kbd_store_ptr = kbd_buffer;
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
do_mouse_tracking = Qnil;
#endif
input_pending = 0;
@ -11636,7 +11716,7 @@ syms_of_keyboard ()
Qmenu_bar = intern ("menu-bar");
staticpro (&Qmenu_bar);
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
Qmouse_fixup_help_message = intern ("mouse-fixup-help-message");
staticpro (&Qmouse_fixup_help_message);
#endif
@ -11768,7 +11848,7 @@ syms_of_keyboard ()
defsubr (&Sread_key_sequence);
defsubr (&Sread_key_sequence_vector);
defsubr (&Srecursive_edit);
#ifdef HAVE_MOUSE
#if defined (HAVE_MOUSE) || defined (HAVE_GPM)
defsubr (&Strack_mouse);
#endif
defsubr (&Sinput_pending_p);

View File

@ -3101,6 +3101,8 @@ extern int wait_reading_process_output P_ ((int, int, int, int,
int));
extern void add_keyboard_wait_descriptor P_ ((int));
extern void delete_keyboard_wait_descriptor P_ ((int));
extern void add_gpm_wait_descriptor P_ ((int));
extern void delete_gpm_wait_descriptor P_ ((int));
extern void close_process_descs P_ ((void));
extern void init_process P_ ((void));
extern void syms_of_process P_ ((void));

View File

@ -99,10 +99,6 @@ NOTE-END
# endif
#endif
#if defined(__OpenBSD__)
#define ORDINARY_LINK
#endif
#ifdef __ELF__
#undef UNEXEC
#define UNEXEC unexelf.o

View File

@ -66,10 +66,6 @@ Boston, MA 02110-1301, USA. */
/* #define NO_SOCK_SIGIO */
#if defined(__OpenBSD__)
#define ORDINARY_LINK
#endif
#define UNEXEC unexelf.o
#define NO_TERMIO

View File

@ -6079,7 +6079,9 @@ x_calc_absolute_position (f)
/* Find the offsets of the outside upper-left corner of
the inner window, with respect to the outer window. */
BLOCK_INPUT;
mac_get_window_bounds (f, &inner, &outer);
UNBLOCK_INPUT;
width_diff = (outer.right - outer.left) - (inner.right - inner.left);
height_diff = (outer.bottom - outer.top) - (inner.bottom - inner.top);
@ -9159,15 +9161,16 @@ mac_get_mouse_btn (EventRef ref)
/* Normally, ConvertEventRefToEventRecord will correctly handle all
events. However the click of the mouse wheel is not converted to a
mouseDown or mouseUp event. Likewise for dead key down events.
This calls ConvertEventRef, but then checks to see if it is a mouse
up/down, or a dead key down carbon event that has not been
mouseDown or mouseUp event. Likewise for dead key events. This
calls ConvertEventRefToEventRecord, but then checks to see if it is
a mouse up/down, or a dead key Carbon event that has not been
converted, and if so, converts it by hand (to be picked up in the
XTread_socket loop). */
static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
{
OSStatus err;
Boolean result = ConvertEventRefToEventRecord (eventRef, eventRec);
EventKind action;
if (result)
return result;
@ -9196,6 +9199,14 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
switch (GetEventKind (eventRef))
{
case kEventRawKeyDown:
action = keyDown;
goto keystroke_common;
case kEventRawKeyRepeat:
action = autoKey;
goto keystroke_common;
case kEventRawKeyUp:
action = keyUp;
keystroke_common:
{
unsigned char char_codes;
UInt32 key_code;
@ -9209,7 +9220,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
NULL, &key_code);
if (err == noErr)
{
eventRec->what = keyDown;
eventRec->what = action;
eventRec->message = char_codes | ((key_code & 0xff) << 8);
result = 1;
}

View File

@ -336,6 +336,10 @@ static SELECT_TYPE non_keyboard_wait_mask;
static SELECT_TYPE non_process_wait_mask;
/* Mask for the gpm mouse input descriptor. */
static SELECT_TYPE gpm_wait_mask;
#ifdef NON_BLOCKING_CONNECT
/* Mask of bits indicating the descriptors that we wait for connect to
complete on. Once they complete, they are removed from this mask
@ -357,6 +361,9 @@ static int max_process_desc;
/* The largest descriptor currently in use for keyboard input. */
static int max_keyboard_desc;
/* The largest descriptor currently in use for gpm mouse input. */
static int max_gpm_desc;
/* Nonzero means delete a process right away if it exits. */
static int delete_exited_processes;
@ -4451,7 +4458,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
IF_NON_BLOCKING_CONNECT (Ctemp = connect_wait_mask);
EMACS_SET_SECS_USECS (timeout, 0, 0);
if ((select (max (max_process_desc, max_keyboard_desc) + 1,
if ((select (max (max (max_process_desc, max_keyboard_desc),
max_gpm_desc) + 1,
&Atemp,
#ifdef NON_BLOCKING_CONNECT
(num_pending_connects > 0 ? &Ctemp : (SELECT_TYPE *)0),
@ -4596,7 +4604,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
}
#endif
nfds = select (max (max_process_desc, max_keyboard_desc) + 1,
nfds = select (max (max (max_process_desc, max_keyboard_desc),
max_gpm_desc) + 1,
&Available,
#ifdef NON_BLOCKING_CONNECT
(check_connect ? &Connecting : (SELECT_TYPE *)0),
@ -6975,6 +6984,21 @@ add_keyboard_wait_descriptor (desc)
max_keyboard_desc = desc;
}
static int add_gpm_wait_descriptor_called_flag;
void
add_gpm_wait_descriptor (desc)
int desc;
{
if (! add_gpm_wait_descriptor_called_flag)
FD_CLR (0, &input_wait_mask);
add_gpm_wait_descriptor_called_flag = 1;
FD_SET (desc, &input_wait_mask);
FD_SET (desc, &gpm_wait_mask);
if (desc > max_gpm_desc)
max_gpm_desc = desc;
}
/* From now on, do not expect DESC to give keyboard input. */
void
@ -6990,10 +7014,29 @@ delete_keyboard_wait_descriptor (desc)
if (desc == max_keyboard_desc)
for (fd = 0; fd < lim; fd++)
if (FD_ISSET (fd, &input_wait_mask)
&& !FD_ISSET (fd, &non_keyboard_wait_mask))
&& !FD_ISSET (fd, &non_keyboard_wait_mask)
&& !FD_ISSET (fd, &gpm_wait_mask))
max_keyboard_desc = fd;
}
void
delete_gpm_wait_descriptor (desc)
int desc;
{
int fd;
int lim = max_gpm_desc;
FD_CLR (desc, &input_wait_mask);
FD_CLR (desc, &non_process_wait_mask);
if (desc == max_gpm_desc)
for (fd = 0; fd < lim; fd++)
if (FD_ISSET (fd, &input_wait_mask)
&& !FD_ISSET (fd, &non_keyboard_wait_mask)
&& !FD_ISSET (fd, &non_process_wait_mask))
max_gpm_desc = fd;
}
/* Return nonzero if *MASK has a bit set
that corresponds to one of the keyboard input descriptors. */

View File

@ -1669,10 +1669,10 @@ skip_chars (forwardp, syntaxp, string, lim, handle_iso_classes)
p = GPT_ADDR;
stop = endp;
}
UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
if (! fastmap[(int) SYNTAX (p[-1])])
break;
p--, pos--;
UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
}
}
}

View File

@ -1747,6 +1747,14 @@ init_sys_modes (tty_out)
fcntl (fileno (tty_out->input), F_GETOWN, 0);
fcntl (fileno (tty_out->input), F_SETOWN, getpid ());
init_sigio (fileno (tty_out->input));
#ifdef HAVE_GPM
if (term_gpm)
{
fcntl (gpm_fd, F_SETOWN, getpid ());
fcntl (gpm_fd, F_SETFL, O_NONBLOCK);
init_sigio (gpm_fd);
}
#endif /* HAVE_GPM */
}
#endif /* F_GETOWN */
#endif /* F_SETOWN_BUG */

View File

@ -171,6 +171,9 @@ static int system_uses_terminfo;
char *tparam ();
extern char *tgetstr ();
static void term_clear_mouse_face ();
static void term_mouse_highlight (struct frame *f, int x, int y);
#ifdef WINDOWSNT
@ -184,6 +187,35 @@ extern char *tgetstr ();
#define FRAME_TERMCAP_P(_f_) 0
#endif /* WINDOWSNT */
#ifdef HAVE_GPM
#include <sys/fcntl.h>
#include "buffer.h"
/* Nonzero means mouse is enabled on Linux console. */
int term_gpm = 0;
/* The id of the terminal device for which we have gpm support. */
int gpm_tty;
/* These variables describe the range of text currently shown in its
mouse-face, together with the window they apply to. As long as
the mouse stays within this range, we need not redraw anything on
its account. Rows and columns are glyph matrix positions in
MOUSE_FACE_WINDOW. */
static int mouse_face_beg_row, mouse_face_beg_col;
static int mouse_face_end_row, mouse_face_end_col;
static int mouse_face_past_end;
static Lisp_Object mouse_face_window;
static int mouse_face_face_id;
/* FRAME and X, Y position of mouse when last checked for
highlighting. X and Y can be negative or out of range for the frame. */
struct frame *mouse_face_mouse_frame;
int mouse_face_mouse_x, mouse_face_mouse_y;
static int pos_x, pos_y;
static int last_mouse_x, last_mouse_y;
#endif /* HAVE_GPM */
/* Ring the bell on a tty. */
@ -715,6 +747,66 @@ tty_write_glyphs (struct frame *f, struct glyph *string, int len)
cmcheckmagic (tty);
}
static void
tty_write_glyphs_with_face (f, string, len, face_id)
register struct frame *f;
register struct glyph *string;
register int len, face_id;
{
unsigned char *conversion_buffer;
struct coding_system *coding;
struct tty_display_info *tty = FRAME_TTY (f);
tty_turn_off_insert (tty);
tty_hide_cursor (tty);
/* Don't dare write in last column of bottom line, if Auto-Wrap,
since that would scroll the whole frame on some terminals. */
if (AutoWrap (tty)
&& curY (tty) + 1 == FRAME_LINES (f)
&& (curX (tty) + len) == FRAME_COLS (f))
len --;
if (len <= 0)
return;
cmplus (tty, len);
/* If terminal_coding does any conversion, use it, otherwise use
safe_terminal_coding. We can't use CODING_REQUIRE_ENCODING here
because it always return 1 if the member src_multibyte is 1. */
coding = (FRAME_TERMINAL_CODING (f)->common_flags & CODING_REQUIRE_ENCODING_MASK
? FRAME_TERMINAL_CODING (f) : &safe_terminal_coding);
/* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at
the tail. */
coding->mode &= ~CODING_MODE_LAST_BLOCK;
/* Turn appearance modes of the face. */
tty_highlight_if_desired (tty);
turn_on_face (f, face_id);
coding->mode |= CODING_MODE_LAST_BLOCK;
conversion_buffer = encode_terminal_code (string, len, coding);
if (coding->produced > 0)
{
BLOCK_INPUT;
fwrite (conversion_buffer, 1, coding->produced, tty->output);
if (ferror (tty->output))
clearerr (tty->output);
if (tty->termscript)
fwrite (conversion_buffer, 1, coding->produced, tty->termscript);
UNBLOCK_INPUT;
}
/* Turn appearance modes off. */
turn_off_face (f, face_id);
tty_turn_off_highlight (tty);
cmcheckmagic (tty);
}
/* An implementation of insert_glyphs for termcap frames. */
static void
@ -2246,6 +2338,663 @@ the currently selected frame. */)
return Qnil;
}
/***********************************************************************
Mouse
***********************************************************************/
#ifdef HAVE_GPM
static void
term_show_mouse_face (enum draw_glyphs_face draw)
{
struct window *w = XWINDOW (mouse_face_window);
int save_x, save_y;
int i, j;
struct frame *f = XFRAME (w->frame);
struct tty_display_info *tty = FRAME_TTY (f);
if (/* If window is in the process of being destroyed, don't bother
to do anything. */
w->current_matrix != NULL
/* Recognize when we are called to operate on rows that don't exist
anymore. This can happen when a window is split. */
&& mouse_face_end_row < w->current_matrix->nrows)
{
/* write_glyphs writes at cursor position, so we need to
temporarily move cursor coordinates to the beginning of
the highlight region. */
/* Save current cursor co-ordinates */
save_y = curY (tty);
save_x = curX (tty);
/* Note that mouse_face_beg_row etc. are window relative. */
for (i = mouse_face_beg_row; i <= mouse_face_end_row; i++)
{
int start_hpos, end_hpos, nglyphs;
struct glyph_row *row = MATRIX_ROW (w->current_matrix, i);
/* Don't do anything if row doesn't have valid contents. */
if (!row->enabled_p)
continue;
/* For all but the first row, the highlight starts at column 0. */
if (i == mouse_face_beg_row)
start_hpos = mouse_face_beg_col;
else
start_hpos = 0;
if (i == mouse_face_end_row)
end_hpos = mouse_face_end_col;
else
{
end_hpos = row->used[TEXT_AREA];
if (draw == DRAW_NORMAL_TEXT)
row->fill_line_p = 1; /* Clear to end of line */
}
if (end_hpos <= start_hpos)
continue;
/* Record that some glyphs of this row are displayed in
mouse-face. */
row->mouse_face_p = draw > 0;
nglyphs = end_hpos - start_hpos;
if (end_hpos >= row->used[TEXT_AREA])
nglyphs = row->used[TEXT_AREA] - start_hpos;
pos_y = row->y + WINDOW_TOP_EDGE_Y (w);
pos_x = row->used[LEFT_MARGIN_AREA] + start_hpos
+ WINDOW_LEFT_EDGE_X (w);
cursor_to (f, pos_y, pos_x);
if (draw == DRAW_MOUSE_FACE)
{
tty_write_glyphs_with_face (f, row->glyphs[TEXT_AREA] + start_hpos,
nglyphs, mouse_face_face_id);
}
else /* draw == DRAW_NORMAL_TEXT */
write_glyphs (f, row->glyphs[TEXT_AREA] + start_hpos, nglyphs);
}
cursor_to (f, save_y, save_x);
}
}
static void
term_clear_mouse_face ()
{
if (!NILP (mouse_face_window))
term_show_mouse_face (DRAW_NORMAL_TEXT);
mouse_face_beg_row = mouse_face_beg_col = -1;
mouse_face_end_row = mouse_face_end_col = -1;
mouse_face_window = Qnil;
}
/* Find the glyph matrix position of buffer position POS in window W.
*HPOS and *VPOS are set to the positions found. W's current glyphs
must be up to date. If POS is above window start return (0, 0).
If POS is after end of W, return end of last line in W.
- taken from msdos.c */
static int
fast_find_position (struct window *w, int pos, int *hpos, int *vpos)
{
int i, lastcol, line_start_position, maybe_next_line_p = 0;
int yb = window_text_bottom_y (w);
struct glyph_row *row = MATRIX_ROW (w->current_matrix, 0), *best_row = row;
while (row->y < yb)
{
if (row->used[TEXT_AREA])
line_start_position = row->glyphs[TEXT_AREA]->charpos;
else
line_start_position = 0;
if (line_start_position > pos)
break;
/* If the position sought is the end of the buffer,
don't include the blank lines at the bottom of the window. */
else if (line_start_position == pos
&& pos == BUF_ZV (XBUFFER (w->buffer)))
{
maybe_next_line_p = 1;
break;
}
else if (line_start_position > 0)
best_row = row;
/* Don't overstep the last matrix row, lest we get into the
never-never land... */
if (row->y + 1 >= yb)
break;
++row;
}
/* Find the right column within BEST_ROW. */
lastcol = 0;
row = best_row;
for (i = 0; i < row->used[TEXT_AREA]; i++)
{
struct glyph *glyph = row->glyphs[TEXT_AREA] + i;
int charpos;
charpos = glyph->charpos;
if (charpos == pos)
{
*hpos = i;
*vpos = row->y;
return 1;
}
else if (charpos > pos)
break;
else if (charpos > 0)
lastcol = i;
}
/* If we're looking for the end of the buffer,
and we didn't find it in the line we scanned,
use the start of the following line. */
if (maybe_next_line_p)
{
++row;
lastcol = 0;
}
*vpos = row->y;
*hpos = lastcol + 1;
return 0;
}
static void
term_mouse_highlight (struct frame *f, int x, int y)
{
enum window_part part;
Lisp_Object window;
struct window *w;
struct buffer *b;
if (NILP (Vmouse_highlight)
|| !f->glyphs_initialized_p)
return;
mouse_face_mouse_x = x;
mouse_face_mouse_y = y;
mouse_face_mouse_frame = f;
/* Which window is that in? */
window = window_from_coordinates (f, x, y, &part, &x, &y, 0);
/* Not on a window -> return. */
if (!WINDOWP (window))
return;
if (!EQ (window, mouse_face_window))
term_clear_mouse_face ();
w = XWINDOW (window);
/* Are we in a window whose display is up to date?
And verify the buffer's text has not changed. */
b = XBUFFER (w->buffer);
if (part == ON_TEXT
&& EQ (w->window_end_valid, w->buffer)
&& XFASTINT (w->last_modified) == BUF_MODIFF (b)
&& XFASTINT (w->last_overlay_modified) == BUF_OVERLAY_MODIFF (b))
{
int pos, i, nrows = w->current_matrix->nrows;
struct glyph_row *row;
struct glyph *glyph;
/* Find the glyph under X/Y. */
glyph = NULL;
if (y >= 0 && y < nrows)
{
row = MATRIX_ROW (w->current_matrix, y);
/* Give up if some row before the one we are looking for is
not enabled. */
for (i = 0; i <= y; i++)
if (!MATRIX_ROW (w->current_matrix, i)->enabled_p)
break;
if (i > y /* all rows upto and including the one at Y are enabled */
&& row->displays_text_p
&& x < window_box_width (w, TEXT_AREA))
{
glyph = row->glyphs[TEXT_AREA];
if (x >= row->used[TEXT_AREA])
glyph = NULL;
else
{
glyph += x;
if (!BUFFERP (glyph->object))
glyph = NULL;
}
}
}
/* Clear mouse face if X/Y not over text. */
if (glyph == NULL)
{
term_clear_mouse_face ();
return;
}
if (!BUFFERP (glyph->object))
abort ();
pos = glyph->charpos;
/* Check for mouse-face. */
{
extern Lisp_Object Qmouse_face;
Lisp_Object mouse_face, overlay, position, *overlay_vec;
int noverlays, obegv, ozv;;
struct buffer *obuf;
/* If we get an out-of-range value, return now; avoid an error. */
if (pos > BUF_Z (b))
return;
/* Make the window's buffer temporarily current for
overlays_at and compute_char_face. */
obuf = current_buffer;
current_buffer = b;
obegv = BEGV;
ozv = ZV;
BEGV = BEG;
ZV = Z;
/* Is this char mouse-active? */
XSETINT (position, pos);
/* Put all the overlays we want in a vector in overlay_vec. */
GET_OVERLAYS_AT (pos, overlay_vec, noverlays, NULL, 0);
/* Sort overlays into increasing priority order. */
noverlays = sort_overlays (overlay_vec, noverlays, w);
/* Check mouse-face highlighting. */
if (!(EQ (window, mouse_face_window)
&& y >= mouse_face_beg_row
&& y <= mouse_face_end_row
&& (y > mouse_face_beg_row
|| x >= mouse_face_beg_col)
&& (y < mouse_face_end_row
|| x < mouse_face_end_col
|| mouse_face_past_end)))
{
/* Clear the display of the old active region, if any. */
term_clear_mouse_face ();
/* Find the highest priority overlay that has a mouse-face
property. */
overlay = Qnil;
for (i = noverlays - 1; i >= 0; --i)
{
mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face);
if (!NILP (mouse_face))
{
overlay = overlay_vec[i];
break;
}
}
/* If no overlay applies, get a text property. */
if (NILP (overlay))
mouse_face = Fget_text_property (position, Qmouse_face,
w->buffer);
/* Handle the overlay case. */
if (!NILP (overlay))
{
/* Find the range of text around this char that
should be active. */
Lisp_Object before, after;
int ignore;
before = Foverlay_start (overlay);
after = Foverlay_end (overlay);
/* Record this as the current active region. */
fast_find_position (w, XFASTINT (before),
&mouse_face_beg_col,
&mouse_face_beg_row);
mouse_face_past_end
= !fast_find_position (w, XFASTINT (after),
&mouse_face_end_col,
&mouse_face_end_row);
mouse_face_window = window;
mouse_face_face_id
= face_at_buffer_position (w, pos, 0, 0,
&ignore, pos + 1, 1);
/* Display it as active. */
term_show_mouse_face (DRAW_MOUSE_FACE);
}
/* Handle the text property case. */
else if (!NILP (mouse_face))
{
/* Find the range of text around this char that
should be active. */
Lisp_Object before, after, beginning, end;
int ignore;
beginning = Fmarker_position (w->start);
XSETINT (end, (BUF_Z (b) - XFASTINT (w->window_end_pos)));
before
= Fprevious_single_property_change (make_number (pos + 1),
Qmouse_face,
w->buffer, beginning);
after
= Fnext_single_property_change (position, Qmouse_face,
w->buffer, end);
/* Record this as the current active region. */
fast_find_position (w, XFASTINT (before),
&mouse_face_beg_col,
&mouse_face_beg_row);
mouse_face_past_end
= !fast_find_position (w, XFASTINT (after),
&mouse_face_end_col,
&mouse_face_end_row);
mouse_face_window = window;
mouse_face_face_id
= face_at_buffer_position (w, pos, 0, 0,
&ignore, pos + 1, 1);
/* Display it as active. */
term_show_mouse_face (DRAW_MOUSE_FACE);
}
}
/* Look for a `help-echo' property. */
{
Lisp_Object help;
extern Lisp_Object Qhelp_echo;
/* Check overlays first. */
help = Qnil;
for (i = noverlays - 1; i >= 0 && NILP (help); --i)
{
overlay = overlay_vec[i];
help = Foverlay_get (overlay, Qhelp_echo);
}
if (!NILP (help))
{
help_echo_string = help;
help_echo_window = window;
help_echo_object = overlay;
help_echo_pos = pos;
}
/* Try text properties. */
else if (NILP (help)
&& ((STRINGP (glyph->object)
&& glyph->charpos >= 0
&& glyph->charpos < SCHARS (glyph->object))
|| (BUFFERP (glyph->object)
&& glyph->charpos >= BEGV
&& glyph->charpos < ZV)))
{
help = Fget_text_property (make_number (glyph->charpos),
Qhelp_echo, glyph->object);
if (!NILP (help))
{
help_echo_string = help;
help_echo_window = window;
help_echo_object = glyph->object;
help_echo_pos = glyph->charpos;
}
}
}
BEGV = obegv;
ZV = ozv;
current_buffer = obuf;
}
}
}
static int
term_mouse_movement (FRAME_PTR frame, Gpm_Event *event)
{
/* Has the mouse moved off the glyph it was on at the last sighting? */
if (event->x != last_mouse_x || event->y != last_mouse_y)
{
frame->mouse_moved = 1;
term_mouse_highlight (frame, event->x - 1, event->y - 1);
/* Remember which glyph we're now on. */
last_mouse_x = event->x;
last_mouse_y = event->y;
return 1;
}
return 0;
}
/* Return the current position of the mouse.
Set *f to the frame the mouse is in, or zero if the mouse is in no
Emacs frame. If it is set to zero, all the other arguments are
garbage.
Set *bar_window to Qnil, and *x and *y to the column and
row of the character cell the mouse is over.
Set *time to the time the mouse was at the returned position.
This should clear mouse_moved until the next motion
event arrives.
NOT CURRENTLY INVOKED: see mouse_position_hook below. */
static void
term_mouse_position (FRAME_PTR *fp, int insist, Lisp_Object *bar_window,
enum scroll_bar_part *part, Lisp_Object *x,
Lisp_Object *y, unsigned long *time)
{
Gpm_Event event;
struct timeval now;
int i;
BLOCK_INPUT;
*fp = SELECTED_FRAME ();
*bar_window = Qnil;
*part = 0;
i = Gpm_GetSnapshot (&event);
XSETINT (*x, event.x);
XSETINT (*y, event.y);
gettimeofday(&now, 0);
*time = (now.tv_sec * 1000) + (now.tv_usec / 1000);
UNBLOCK_INPUT;
}
/* Prepare a mouse-event in *RESULT for placement in the input queue.
If the event is a button press, then note that we have grabbed
the mouse. */
static Lisp_Object
term_mouse_click (struct input_event *result, Gpm_Event *event,
struct frame *f)
{
struct timeval now;
int i, j;
result->kind = GPM_CLICK_EVENT;
for (i = 0, j = GPM_B_LEFT; i < 3; i++, j >>= 1 )
{
if (event->buttons & j) {
result->code = i; /* button number */
break;
}
}
gettimeofday(&now, 0);
result->timestamp = (now.tv_sec * 1000) + (now.tv_usec / 1000);
if (event->type & GPM_UP)
result->modifiers = up_modifier;
else if (event->type & GPM_DOWN)
result->modifiers = down_modifier;
else
result->modifiers = 0;
if (event->type & GPM_SINGLE)
result->modifiers |= click_modifier;
if (event->type & GPM_DOUBLE)
result->modifiers |= double_modifier;
if (event->type & GPM_TRIPLE)
result->modifiers |= triple_modifier;
if (event->type & GPM_DRAG)
result->modifiers |= drag_modifier;
if (!(event->type & (GPM_MOVE|GPM_DRAG))) {
/* 1 << KG_SHIFT */
if (event->modifiers & (1 << 0))
result->modifiers |= shift_modifier;
/* 1 << KG_CTRL */
if (event->modifiers & (1 << 2))
result->modifiers |= ctrl_modifier;
/* 1 << KG_ALT || KG_ALTGR */
if (event->modifiers & (1 << 3)
|| event->modifiers & (1 << 1))
result->modifiers |= meta_modifier;
}
XSETINT (result->x, event->x - 1);
XSETINT (result->y, event->y - 1);
XSETFRAME (result->frame_or_window, f);
result->arg = Qnil;
return Qnil;
}
int
handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, struct input_event* hold_quit)
{
struct frame *f = XFRAME (tty->top_frame);
int i, j, fd;
struct input_event ie;
int do_help = 0;
int count = 0;
EVENT_INIT (ie);
ie.kind = NO_EVENT;
ie.arg = Qnil;
if (event->type & GPM_MOVE) {
unsigned char buf[6 * sizeof (short)];
unsigned short *arg = (unsigned short *) buf + 1;
const char *name;
previous_help_echo_string = help_echo_string;
help_echo_string = Qnil;
/* Display mouse pointer */
buf[sizeof(short) - 1] = 2; /* set selection */
arg[0] = arg[2] = (unsigned short) event->x;
arg[1] = arg[3] = (unsigned short) event->y;
arg[4] = (unsigned short) 3;
name = (const char *) ttyname (0);
fd = open (name, O_WRONLY);
ioctl (fd, TIOCLINUX, buf + sizeof (short) - 1);
close(fd);
term_mouse_movement (f, event);
/* If the contents of the global variable help_echo_string
has changed, generate a HELP_EVENT. */
if (!NILP (help_echo_string)
|| !NILP (previous_help_echo_string))
do_help = 1;
goto done;
}
else {
f->mouse_moved = 0;
term_mouse_click (&ie, event, f);
//kbd_buffer_store_event_hold (&ie, hold_quit);
}
done:
if (ie.kind != NO_EVENT)
{
kbd_buffer_store_event_hold (&ie, hold_quit);
count++;
}
if (do_help
&& !(hold_quit && hold_quit->kind != NO_EVENT))
{
Lisp_Object frame;
if (f)
XSETFRAME (frame, f);
else
frame = Qnil;
gen_help_event (help_echo_string, frame, help_echo_window,
help_echo_object, help_echo_pos);
count++;
}
return count;
}
DEFUN ("term-open-connection", Fterm_open_connection, Sterm_open_connection,
0, 0, 0,
doc: /* Open a connection to Gpm. */)
()
{
struct tty_display_info *tty = FRAME_TTY (SELECTED_FRAME ());
Gpm_Connect connection;
connection.eventMask = ~0;
connection.defaultMask = ~GPM_HARD;
connection.maxMod = ~0;
connection.minMod = 0;
/* We only support GPM on the controlling tty. */
if (term_gpm || tty->terminal->id > 1
|| Gpm_Open (&connection, 0) < 0)
return Qnil;
else
{
term_gpm = 1;
gpm_tty = tty->terminal->id;
reset_sys_modes (tty);
init_sys_modes (tty);
add_gpm_wait_descriptor (gpm_fd);
return Qt;
}
}
DEFUN ("term-close-connection", Fterm_close_connection, Sterm_close_connection,
0, 0, 0,
doc: /* Close a connection to Gpm. */)
()
{
delete_gpm_wait_descriptor (gpm_fd);
while (Gpm_Close()); /* close all the stack */
term_gpm = 0;
return Qnil;
}
#endif /* HAVE_GPM */
/***********************************************************************
Initialization
@ -2509,6 +3258,14 @@ init_tty (char *name, char *terminal_type, int must_succeed)
encode_terminal_bufsize = 0;
#ifdef HAVE_GPM
/* TODO: Can't get Gpm_Snapshot in term_mouse_position to work: test with
(mouse-position). Also set-mouse-position won't work as is. */
/* mouse_position_hook = term_mouse_position; */
mouse_face_window = Qnil;
#endif
#ifdef WINDOWSNT
initialize_w32_display ();
@ -3139,6 +3896,10 @@ bigger, or it may make it blink, or it may do nothing at all. */);
defsubr (&Scontrolling_tty_p);
defsubr (&Ssuspend_tty);
defsubr (&Sresume_tty);
#ifdef HAVE_GPM
defsubr (&Sterm_open_connection);
defsubr (&Sterm_close_connection);
#endif /* HAVE_GPM */
}

View File

@ -191,7 +191,11 @@ enum event_kind
symbols, respectively. Member `arg' is a Lisp object converted
from the received Apple event. Parameters for non-Apple events
are converted to those in Apple events. */
MAC_APPLE_EVENT
MAC_APPLE_EVENT,
#endif
#ifdef HAVE_GPM
GPM_CLICK_EVENT
#endif
};
@ -290,6 +294,17 @@ enum {
meta_modifier = CHAR_META /* Under X, the XK_Meta_[LR] keysyms. */
};
#ifdef HAVE_GPM
#include <gpm.h>
extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *, struct input_event *);
/* Nonzero means mouse is enabled on Linux console */
extern int term_gpm;
/* The id of the terminal device for which we have gpm support. */
extern int gpm_tty;
#endif
#endif /* CONSP */

View File

@ -12786,7 +12786,7 @@ redisplay_window (window, just_this_one_p)
int rc;
int centering_position = -1;
int last_line_misfit = 0;
int save_beg_unchanged, save_end_unchanged;
int beg_unchanged, end_unchanged;
SET_TEXT_POS (lpoint, PT, PT_BYTE);
opoint = lpoint;
@ -12851,8 +12851,8 @@ redisplay_window (window, just_this_one_p)
set_buffer_internal_1 (XBUFFER (w->buffer));
SET_TEXT_POS (opoint, PT, PT_BYTE);
save_beg_unchanged = BEG_UNCHANGED;
save_end_unchanged = END_UNCHANGED;
beg_unchanged = BEG_UNCHANGED;
end_unchanged = END_UNCHANGED;
current_matrix_up_to_date_p
= (!NILP (w->window_end_valid)
@ -12977,6 +12977,8 @@ redisplay_window (window, just_this_one_p)
w->force_start = Qt;
}
force_start:
/* Handle case where place to start displaying has been specified,
unless the specified location is outside the accessible range. */
if (!NILP (w->force_start)
@ -13156,40 +13158,16 @@ redisplay_window (window, just_this_one_p)
than a simple mouse-click. */
if (NILP (w->start_at_line_beg)
&& NILP (do_mouse_tracking)
&& CHARPOS (startp) > BEGV)
&& CHARPOS (startp) > BEGV
&& CHARPOS (startp) > BEG + beg_unchanged
&& CHARPOS (startp) <= Z - end_unchanged)
{
#if 0
/* The following code tried to make BEG_UNCHANGED and
END_UNCHANGED up to date (similar to try_window_id).
Is it important to do so?
The trouble is that it's a little too strict when it
comes to overlays: modify_overlay can call
BUF_COMPUTE_UNCHANGED, which alters BUF_BEG_UNCHANGED and
BUF_END_UNCHANGED directly without moving the gap.
This can result in spurious recentering when overlays are
altered in the buffer. So unless it's proven necessary,
let's leave this commented out for now. -- cyd. */
if (MODIFF > SAVE_MODIFF
|| BEG_UNCHANGED + END_UNCHANGED > Z_BYTE)
{
if (GPT - BEG < BEG_UNCHANGED)
BEG_UNCHANGED = GPT - BEG;
if (Z - GPT < END_UNCHANGED)
END_UNCHANGED = Z - GPT;
}
#endif
if (CHARPOS (startp) > BEG + save_beg_unchanged
&& CHARPOS (startp) <= Z - save_end_unchanged)
{
/* There doesn't seems to be a simple way to find a new
window start that is near the old window start, so
we just recenter. */
goto recenter;
}
}
w->force_start = Qt;
if (XMARKER (w->start)->buffer == current_buffer)
compute_window_start_on_continuation_line (w);
SET_TEXT_POS_FROM_MARKER (startp, w->start);
goto force_start;
}
#if GLYPH_DEBUG
debug_method_add (w, "same window start");