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:
commit
7be1c21aed
95
AUTHORS
95
AUTHORS
@ -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
|
||||
|
12
ChangeLog
12
ChangeLog
@ -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.
|
||||
|
@ -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/
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
225
configure
vendored
@ -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
|
||||
|
||||
|
15
configure.in
15
configure.in
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
6
etc/NEWS
6
etc/NEWS
@ -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.
|
||||
|
@ -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'.
|
||||
|
2578
etc/fr-refcard.ps
2578
etc/fr-refcard.ps
File diff suppressed because it is too large
Load Diff
@ -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.
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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 == '%')
|
||||
{
|
||||
|
166
lisp/ChangeLog
166
lisp/ChangeLog
@ -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.
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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."
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
1380
lisp/ldefs-boot.el
1380
lisp/ldefs-boot.el
File diff suppressed because it is too large
Load Diff
@ -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)))
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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."
|
||||
|
872
lisp/printing.el
872
lisp/printing.el
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
291
lisp/t-mouse.el
291
lisp/t-mouse.el
@ -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)
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
100
src/ChangeLog
100
src/ChangeLog
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
18
src/image.c
18
src/image.c
@ -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;
|
||||
|
108
src/keyboard.c
108
src/keyboard.c
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -99,10 +99,6 @@ NOTE-END
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(__OpenBSD__)
|
||||
#define ORDINARY_LINK
|
||||
#endif
|
||||
|
||||
#ifdef __ELF__
|
||||
#undef UNEXEC
|
||||
#define UNEXEC unexelf.o
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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. */
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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 */
|
||||
|
761
src/term.c
761
src/term.c
@ -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 */
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
||||
|
50
src/xdisp.c
50
src/xdisp.c
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user