Merged from emacs@sv.gnu.org. Last-minute emacsclient rewrites be damned!

Patches applied:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 * emacs@sv.gnu.org/emacs--devo--0--patch-519
   Update from CVS: etc/TUTORIAL.cn: Updated.

 * emacs@sv.gnu.org/emacs--devo--0--patch-520
   Merge from erc--emacs--22

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-588
This commit is contained in:
Karoly Lorentey 2006-12-03 15:03:30 +00:00
commit 974b73e838
356 changed files with 19046 additions and 10728 deletions

147
AUTHORS
View file

@ -3,6 +3,8 @@ Foundation's distribution of GNU Emacs. To show our appreciation for
their public spirit, we list here in alphabetical order a condensed
list of their contributions.
"$,1 a(Bukasz Demianiuk": changed erc.el
Aaron Larson: changed bibtex.el
Aaron S. Hawley: changed files.texi files.el isearch.el misc.texi
@ -35,7 +37,7 @@ Alan Mackenzie: wrote cc-awk.el
and changed cc-cmds.el cc-mode.el cc-defs.el cc-engine.el cc-vars.el
cc-langs.el cc-styles.el cc-mode.texi lread.c cc-fonts.el cc-align.el
cc-subword.el isearch.el programs.texi search.texi subr.el text.texi
buffers.texi cc-fix.el cc-mode-19.el ebrowse.el and 14 other files
buffers.texi cc-fix.el cc-mode-19.el ebrowse.el and 15 other files
Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el
easy-mmode.el gnus-sum.el ibuf-ext.el ibuffer.el lunar.el macros.el
@ -120,11 +122,11 @@ Andreas Luik: changed xfns.c xterm.c
Andreas Schwab: changed Makefile.in files.el lisp.h xdisp.c alloc.c
configure.in fns.c print.c coding.c dired.el editfns.c info.el eval.c
fileio.c simple.el buffer.c minibuf.c xterm.c emacs.c keyboard.c
process.c and 444 other files
process.c and 446 other files
Andreas Seltenreich: changed nnweb.el gnus.texi gnus-art.el gnus-ml.el
gnus-srvr.el gnus-start.el gnus-util.el gnus.el mm-url.el mm-uu.el
nnslashdot.el url-cookie.el url-http.el
Andreas Seltenreich: changed nnweb.el gnus.texi battery.el gnus-art.el
gnus-ml.el gnus-srvr.el gnus-start.el gnus-util.el gnus.el mm-url.el
mm-uu.el nnslashdot.el url-cookie.el url-http.el
Andrew Choi: wrote mac-win.el
and changed macterm.c mac.c macfns.c INSTALL macmenu.c darwin.h macterm.h
@ -190,7 +192,7 @@ Ben Harris: changed configure.in
Ben Key: changed w32.c w32fns.c w32menu.c makefile.w32-in w32.h w32term.c
emacs.c gmake.defs ms-w32.h nmake.defs sound.c
Ben North: changed fill.el isearch.el lisp-mode.el
Ben North: changed fill.el isearch.el lisp-mode.el w32term.c xfaces.c
Benjamin Drieu: wrote pong.el
@ -325,9 +327,9 @@ Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el
Chong Yidong: changed cus-edit.el simple.el custom.el display.texi
longlines.el files.el text.texi custom.texi files.texi keyboard.c
wid-edit.el cus-theme.el frames.texi info.el xterm.c compile.el
image-mode.el keymaps.texi misc.texi mouse.el sendmail.el
and 162 other files
wid-edit.el compile.el cus-theme.el frames.texi info.el misc.texi
mouse.el xterm.c image-mode.el keymaps.texi sendmail.el
and 176 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
@ -492,8 +494,8 @@ David J. Mackenzie: changed configure.in etags.c fakemail.c movemail.c
David Kastrup: changed greek.el replace.el search.c ange-ftp.el faq.texi
help.el mouse.el Makefile.in calc.el desktop.el keymaps.texi
meta-mode.el process.c search.texi DEBUG DEVEL.HUMOR MAILINGLISTS
autoload.el browse-url.el buffer.c building.texi and 32 other files
meta-mode.el process.c search.texi subr.el DEBUG DEVEL.HUMOR
MAILINGLISTS autoload.el browse-url.el buffer.c and 32 other files
David K,Ae(Bgedal: wrote tempo.el
and changed sendmail.el xmenu.c
@ -531,8 +533,8 @@ and changed w32menu.c w32term.c close.png close.xpm empty.png empty.xpm
no-handle.xpm open.png open.xpm and 20 other files
David Reitter: wrote mailclient.el
and changed commands.h easy-mmode.el emacsbug.el keymap.c macterm.c
menu-bar.el minibuf.c sendmail.el url-http.el
and changed commands.h easy-mmode.el emacsbug.el emacsclient.c keymap.c
macterm.c menu-bar.el minibuf.c sendmail.el url-http.el
David Robinson: changed menu-bar.el x-win.el
@ -626,9 +628,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 simple.el
internal.el msdos.h rmail.el xfaces.c frame.c dosfns.c faces.el
frame.el emacs.c and 517 other files
startup.el mainmake.v2 config.bat menu-bar.el pc-win.el rmail.el
simple.el internal.el msdos.h xfaces.c frame.c dosfns.c faces.el
frame.el emacs.c and 518 other files
Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
sh-script.el text.texi
@ -826,17 +828,17 @@ Germano Caronni: changed ralloc.c
Gernot Heiser: changed refer.el
Giorgos Keramidas: changed amdx86-64.h apropos.el configure.in
display.texi fringe.c fringe.el lisp.h windows.texi
Giorgos Keramidas: changed configure.in amdx86-64.h apropos.el
display.texi fringe.c fringe.el lisp.h windows.texi xmenu.c
Giuseppe Scrivano: changed buffer.c configure configure.in sysdep.c
xsmfns.c
Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el
Glenn Morris: changed f90.el calendar.el diary-lib.el fortran.el
calendar.texi appt.el sh-script.el timeclock.el cal-menu.el
cal-hebrew.el cal-islam.el files.el holidays.el programs.texi
scroll-all.el startup.el cal-coptic.el cal-julian.el cal-move.el
cal-tex.el cal-x.el and 37 other files
cal-tex.el cal-x.el and 41 other files
Glynn Clements: wrote gamegrid.el snake.el tetris.el
@ -1011,9 +1013,9 @@ and changed bytecode.c mail-extr.el subr.el
Jan Dj,Ad(Brv: wrote dnd.el x-dnd.el
and changed gtkutil.c xterm.c xfns.c xmenu.c xterm.h gtkutil.h
configure.in keyboard.c Makefile.in config.in frames.texi x-win.el
configure xselect.c emacs.c alloc.c xlwmenu.c startup.el xdisp.c
xresources.texi cus-start.el and 172 other files
configure.in x-win.el Makefile.in frames.texi keyboard.c config.in
configure xselect.c emacs.c alloc.c xlwmenu.c xresources.texi frame.c
startup.el xdisp.c and 174 other files
Jan Nieuwenhuizen: changed info.el TUTORIAL.nl emacs.c emacsclient.c
gnus-start.el gud.el nnmh.el server.el startup.el
@ -1037,7 +1039,7 @@ Jason Rumney: wrote w32-vars.el
and changed w32fns.c w32term.c w32menu.c w32-win.el w32term.h
makefile.w32-in w32.c w32bdf.c w32-fns.el w32select.c w32console.c
w32gui.h w32proc.c keyboard.c mule-cmds.el emacs.c fileio.c w32bdf.h
w32inevt.c config.nt configure.bat and 79 other files
w32inevt.c config.nt configure.bat and 80 other files
Jay Belanger: changed calc.texi calc.el calc-ext.el calc-embed.el
calc-aent.el calc-prog.el calc-arith.el calc-help.el calc-lang.el
@ -1078,6 +1080,8 @@ Jens Toivo Berger Thielemann: changed word-help.el
Jens-Ulrik Holger Petersen: changed cus-edit.el find-func.el gnus.el
Jeramey Crawford: changed amdx86-64.h configure.in
Jeremy Bertram Maitin-Shepard: changed erc.el erc-backend.el
erc-button.el mml.el
@ -1258,9 +1262,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 help-fns.el subr.el faces.el
files.el w32fns.c cperl-mode.el replace.el simple.el eval.c
sh-script.el vhdl-mode.el ada-mode.el comint.el org.el w32-win.el
xdisp.c allout.el bs.el desktop.el idlwave.el and 554 other files
files.el w32fns.c bs.el cperl-mode.el eval.c org.el replace.el
simple.el sh-script.el vhdl-mode.el ada-mode.el allout.el comint.el
emacsclient.c idlwave.el process.c w32-win.el and 584 other files
Juergen Hoetzel: changed url-handlers.el
@ -1277,7 +1281,7 @@ Jure Cuhalev: changed ispell.el
Juri Linkov: changed info.el simple.el isearch.el replace.el compile.el
faces.el display.texi grep.el descr-text.el cus-edit.el dired.el
dired-aux.el edebug.el files.el lisp-mode.el lisp.el modes.texi mule.el
compare-w.el desktop.el files.texi and 220 other files
compare-w.el desktop.el files.texi and 221 other files
Justin Sheehy: changed gnus-sum.el nntp.el
@ -1341,7 +1345,7 @@ Katsumi Yamaoka: wrote canlock.el
and changed gnus-art.el message.el gnus-sum.el gnus.texi mm-decode.el
mm-view.el gnus-util.el gnus-msg.el mm-util.el gnus.el lpath.el
gnus-group.el gnus-start.el rfc2047.el dgnushack.el mm-uu.el
gnus-agent.el nntp.el mml.el nnrss.el rfc2231.el and 71 other files
gnus-agent.el mml.el nntp.el nnrss.el rfc2231.el and 71 other files
Kaveh R. Ghazi: changed delta88k.h xterm.c
@ -1473,8 +1477,8 @@ Lars Balker Rasmussen: changed gnus-art.el gnus-agent.el message.el
Lars Brinkhoff: changed building.texi config.in configure configure.in
editfns.c fns.c os.texi
Lars Hansen: changed desktop.el info.el mh-e.el dired-x.el dired-x.texi
dired.el ls-lisp.el rmail.el tramp.el dired.c files.texi grp.h
Lars Hansen: changed desktop.el info.el mh-e.el tramp.el dired-x.el
dired-x.texi dired.el ls-lisp.el rmail.el dired.c files.texi grp.h
hilit-chg.el misc.texi url-auth.el url-cache.el url-dired.el url-ftp.el
url-irc.el url-misc.el url-news.el and 39 other files
@ -1518,7 +1522,8 @@ and changed fortran.el ispell.el sendmail.el cmuscheme.el comint.el
Leigh Stoller: changed emacsclient.c emacsserver.c server.el
Lennart Borgman: changed window.el ada-xref.el filesets.el flymake.el
mouse.el recentf.el shell.el texinfmt.el w32term.c w32term.h
help-fns.el mouse.el recentf.el shell.el texinfmt.el tutorial.el
w32term.c w32term.h
Lennart Staflin: changed dired.el diary-ins.el diary-lib.el tq.el xdisp.c
@ -1554,8 +1559,8 @@ and changed emacsclient.c emacsserver.c etags.c lisp.h movemail.c
Maciek Pasternacki: changed nnrss.el
Magnus Henoch: changed ispell.el url-http.el autoinsert.el rcirc.el
url-gw.el url-https.el url-parse.el url.el
Magnus Henoch: changed url-http.el ispell.el url-gw.el url-parse.el
url.el autoinsert.el rcirc.el url-https.el
Manuel Serrano: wrote flyspell.el
@ -1602,6 +1607,8 @@ Mark D. Baushke: changed mh-e.el mh-utils.el mh-mime.el mh-comp.el
mh-seq.el mh-speed.el mh-funcs.el mh-alias.el MH-E-NEWS etags.c
mh-junk.el mh-pick.el mh-tool-bar.el mh-xemacs-compat.el
Mark Davies: changed Makefile.in netbsd.h ralloc.c sort.el
Mark Diekhans: changed compile.el
Mark H. Weaver: changed comint.el
@ -1640,7 +1647,7 @@ and changed cus-edit.el Makefile.in files.el compile.el rmail.el
mule-cmds.el rmailout.el checkdoc.el configure.in custom.el emacsbug.el
gnus.el help-fns.el ls-lisp.el mwheel.el and 122 other files
Markus Triska: changed doctor.el
Markus Triska: changed doctor.el handwrite.el
Marshall T. Vandegrift: changed gnus-fun.el
@ -1660,9 +1667,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 flyspell.el cus-start.el
files.el font-lock.el insdel.c syntax.c buffer.c buffer.h casefiddle.c
cperl-mode.el custom.el dispextern.h dnd.el editfns.c eldoc.el fileio.c
find-func.el help-at-pt.el hideif.el and 20 other files
files.el font-lock.el insdel.c macmenu.c syntax.c w32menu.c window.el
xdisp.c xmenu.c buffer.c buffer.h casefiddle.c cperl-mode.el custom.el
dispextern.h dnd.el editfns.c and 25 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
@ -1731,8 +1738,6 @@ and changed tramp.el tramp.texi tramp-vc.el tramp-util.el ange-ftp.el
Michael Ben-Gershon: changed acorn.h configure.in riscix1-1.h riscix1-2.h
unexec.c
Michael Cadilhac: changed blackbox.el rect.el subr.el zone.el
Michael Cook: changed gnus-sum.el
Michael D. Ernst: wrote reposition.el
@ -1800,9 +1805,9 @@ Michal Jankowski: changed insdel.c keyboard.c
Michal Nazarewicz: changed ispell.el
Micha,Ak(Bl Cadilhac: changed ido.el ispell.el cus-edit.el dispnew.c info.el
life.el lpr.el make-mode.el pong.el print.c process.c startup.el
uni-input.el
Micha,Ak(Bl Cadilhac: changed ido.el ispell.el battery.el blackbox.el
cus-edit.el dispnew.c info.el life.el lpr.el make-mode.el pong.el
print.c process.c rect.el startup.el subr.el uni-input.el zone.el
Michelangelo Grigni: wrote ffap.el
and changed gnus-score.el
@ -1898,6 +1903,8 @@ and changed gud.el building.texi tooltip.el speedbar.el bindings.el
Nico Francois: changed w32fns.c w32inevt.c w32menu.c
Niimi Satoshi: changed pp.el search.c
Niklas Morberg: changed nnweb.el gnus-art.el nnimap.el spam.el
Noah Friedman: wrote eldoc.el rlogin.el rsz-mini.el type-break.el
@ -1910,8 +1917,8 @@ Nobuyuki Hikichi: changed news-risc.h
Noel Cragg: changed mh-junk.el
Nozomu Ando: changed buffer.c mips.h pmax.h smtpmail.el sysselect.h
unexelf.c unexmacosx.c
Nozomu Ando: changed unexmacosx.c alloc.c buffer.c mips.h pmax.h
smtpmail.el sysselect.h unexelf.c
Nuutti Kotivuori: changed gnus-sum.el flow-fill.el gnus-cache.el
@ -1948,6 +1955,8 @@ Oscar Figueiredo: wrote eudc-bob.el eudc-export.el eudc-hotlist.el
eudc-vars.el eudc.el eudcb-bbdb.el eudcb-ldap.el eudcb-ph.el ldap.el
and changed ph.el
,bS(Bscar Fuentes: changed emacsclient.c
Oystein Viggen: changed dgnushack.el
P. E. Jareth Hein: changed gnus-util.el
@ -2120,9 +2129,9 @@ and changed gnus-art.el gnus-msg.el gnus.texi message.el nnmail.el
Reiner Steib: wrote gmm-utils.el
and changed gnus-art.el message.el gnus.texi gnus-sum.el gnus.el
gnus-group.el gnus-faq.texi mml.el gnus-start.el gnus-util.el
gnus-msg.el gnus-score.el message.texi mm-util.el files.el
gnus-agent.el spam-report.el mm-decode.el nnweb.el spam.el deuglify.el
gnus-group.el gnus-faq.texi gnus-util.el mml.el gnus-start.el
mm-util.el gnus-agent.el gnus-msg.el gnus-score.el message.texi
files.el spam-report.el mm-decode.el nnweb.el spam.el deuglify.el
and 162 other files
Remek Trzaska: changed gnus-ems.el
@ -2149,7 +2158,7 @@ Richard L. Pieri: wrote pop3.el
Richard M. Heiberger: changed tex-mode.el
Richard M. Stallman: wrote [The original GNU emacs and numerous files]
Richard M. Stallman: wrote [The original GNU Emacs and numerous files]
easymenu.el font-lock.el image-mode.el menu-bar.el paren.el
and changed keyboard.c files.el simple.el xterm.c xdisp.c rmail.el
fileio.c process.c sysdep.c xfns.c buffer.c Makefile.in window.c
@ -2183,14 +2192,14 @@ Robert Bihlmeyer: changed gnus-score.el gnus-util.el message.el
Robert Fenk: changed desktop.el
Robert J. Chassell: wrote makeinfo.el texinfo.el texnfo-upd.el
and changed texinfmt.el page-ext.el emacs.tex emacs-lisp-intro.texi
and changed texinfmt.el emacs-lisp-intro.texi page-ext.el emacs.tex
info.el loaddefs.el texinfo-update.el texinfo.tex INSTALL case-table.el
cl.texinfo history.el informat.el latin-1.el latin-2.el latin-3.el
latin-4.el page.el tex-mode.el texinfo.texinfo vip.texinfo
Robert Thorpe: changed cus-start.el
Roberto Rodr,Am(Bguez: changed ada-mode.texi widget.texi
Roberto Rodr,Am(Bguez: changed ada-mode.texi glossary.texi widget.texi
Roderick Schertler: changed dgux.h dgux4.h gud.el sysdep.c
@ -2217,11 +2226,11 @@ Roland Winkler: changed bibtex.el appt.el artist.el conf-mode.el
Rolf Ebert: wrote ada-mode.el
and changed files.el find-file.el
Romain Francoise: changed faq.texi dired-x.el ibuf-ext.el compile.el
message.el puresize.h replace.el files.texi gnus-fun.el gnus.texi
help-fns.el make-dist rcirc.el subr.el Makefile.in antlr-mode.el
Romain Francoise: changed faq.texi dired-x.el ibuf-ext.el Makefile.in
compile.el message.el puresize.h replace.el subr.el files.texi
gnus-fun.el gnus.texi help-fns.el make-dist rcirc.el antlr-mode.el
bookmark.el buffer.c comint.el diary-lib.el dired.el
and 124 other files
and 126 other files
Roman Belenov: changed which-func.el
@ -2317,6 +2326,8 @@ Shinichirou Sugou: changed etags.c
Shuhei Kobayashi: wrote hex-util.el sha1.el
and changed gnus-group.el message.el nnmail.el
Shun-Ichi Goto: changed url-http.el
Sidney Markowitz: changed doctor.el
Sigbjorn Finne: changed gnus-srvr.el
@ -2339,12 +2350,12 @@ Simon Marshall: wrote fast-lock.el lazy-lock.el regexp-opt.el
and changed comint.el font-lock.el shell.el rmail.el fortran.el
sendmail.el subr.el dired.el sh-script.el texinfo.el add-log.el
compile.el outline.el help.el menu-bar.el perl-mode.el ps-print.el
rmailsum.el bytecomp.el data.c faces.el and 56 other files
rmailsum.el bytecomp.el data.c faces.el and 57 other files
Skip Collins: changed w32fns.c w32term.c w32term.h
Slawomir Nowaczyk: changed python.el TUTORIAL.pl emacs.py flyspell.el
ls-lisp.el
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
@ -2378,11 +2389,14 @@ and changed diary-lib.el locate.el octave-inf.el replace.el hexl.el
Stephen Gildea: wrote mh-funcs.el mh-pick.el refcard.tex
and changed time-stamp.el mh-e.el mh-comp.el mh-utils.el mh-customize.el
fileio.c files.el fortran.el mh-e.texi mh-junk.el mh-mime.el mwheel.el
mh-junk.el fileio.c files.el fortran.el mh-e.texi mh-mime.el mwheel.el
tex-mode.el
Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el
Stephen Leake: changed ada-mode.el ada-xref.el ada-stmt.el ada-mode.texi
ada-prj.el
Steve Fisk: wrote cal-tex.el
Steve Nygard: changed unexnext.c
@ -2467,6 +2481,8 @@ Terrence Brannon: wrote landmark.el
Terry Jones: wrote shadow.el
Tetsurou Okazaki: changed xterm.c
Theodore Jump: changed w32-win.el w32faces.c
Thien-Thi Nguyen: wrote hideshow.el make-mms-derivative.el
@ -2503,7 +2519,8 @@ Tijs Van Bakel: changed erc.el
Tim Fleehart: wrote makefile.nt
Tim Van Holder: changed Makefile.in compile.el configure.in which-func.el
Tim Van Holder: changed emacsclient.c Makefile.in compile.el configure.in
which-func.el
Tobias C. Rittweiler: changed font-lock.el
@ -2642,7 +2659,7 @@ and changed latin-pre.el pl-refcard.ps pl-refcard.tex refcard-pl.ps
Wolfgang Glas: changed unexsgi.c
Wolfgang Jenkner: changed conf-mode.el pcvs.el
Wolfgang Jenkner: changed conf-mode.el gnus-sum.el pcvs.el
Wolfgang Rupprecht: wrote float-sup.el floatfns.c sup-mouse.el
and changed process.c alloc.c callint.c config.h.in config.in
@ -2660,15 +2677,15 @@ Xavier Maillard: changed gnus-faq.texi gnus-score.el spam.el
Yagi Tatsuya: changed gnus-art.el gnus-start.el
Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
macgui.h image.c macmenu.c macselect.c keyboard.c xdisp.c makefile.MPW
emacs.c config.h macos.texi xfaces.c Makefile.in darwin.h dispextern.h
dispnew.c w32term.c and 69 other files
macgui.h macmenu.c image.c macselect.c keyboard.c xdisp.c makefile.MPW
emacs.c config.h macos.texi xfaces.c Makefile.in darwin.h INSTALL
dispextern.h dispnew.c and 71 other files
Yann Dirson: changed imenu.el
Yoichi Nakayama: changed browse-url.el finder.el man.el rfc2368.el
Yoni Rabkin Katzenell: changed whitespace.el
Yoni Rabkin Katzenell: changed faces.el whitespace.el
Yoshiki Hayashi: changed texinfmt.el nnheader.el

138
ChangeLog
View file

@ -1,3 +1,41 @@
2006-11-27 Chris Moore <christopher.ian.moore@gmail.com> (tiny change)
* Makefile.in: Touch only the parts of the share/emacs directory
specific to this version.
2006-11-26 Chong Yidong <cyd@stupidchicken.com>
* configure.in (HAVE_X86_64_LIB64_DIR): New test.
* configure: Regenerate.
2006-11-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* configure.in (HAVE_CANCELMENUTRACKING): Remove test.
* configure: Regenerate.
2006-11-08 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* configure.in: Prefer X11 to Carbon only when some X-specific
option is specified (Thanks to Jan Dj,Ad(Brv and Andreas Schwab).
* configure: Regenerate.
2006-11-04 Romain Francoise <romain@orebokech.com>
* Makefile.in (bootstrap-clean-before): Fix typo.
Use new target `bootstrap-clean' in the leim subdirectory.
2006-11-03 Giorgos Keramidas <keramida@ceid.upatras.gr> (tiny change)
* configure.in: Enable sparc64/ia64/powerpc FreeBSD builds.
2006-10-30 Chong Yidong <cyd@stupidchicken.com>
* make-dist: Add makefile.w32-in to the man, lispref and lispintro
directories.
2006-10-29 Chong Yidong <cyd@stupidchicken.com>
* configure: Regenerate using autoconf 2.59.
@ -23,16 +61,6 @@
* configure: Regenerate.
2006-10-23 Michael Kifer <kifer@cs.stonybrook.edu>
* viper-cmd.el (viper-prefix-arg-com): define gg as G0
* viper-ex.el (ex-read): quote file argument.
* ediff-diff.el (ediff-same-file-contents): expand file names.
* ediff-mult.el (ediff-append-custom-diff): quote shell file arguments.
2006-10-23 Andreas Schwab <schwab@suse.de>
* configure.in: Make sure x_default_search_path is always set even
@ -47,7 +75,7 @@
2006-09-30 Eli Zaretskii <eliz@gnu.org>
* configure: Regenerated.
* configure: Regenerate.
2006-09-28 Kenichi Handa <handa@m17n.org>
@ -81,7 +109,7 @@
* configure.in (PKG_CHECK_MODULES): Redirect the output of
$PKG_CONFIG --exists "$2" to config.log.
* configure: Regenerated.
* configure: Regenerate.
2006-07-14 Kim F. Storm <storm@cua.dk>
@ -106,8 +134,8 @@
2006-07-07 Eli Zaretskii <eliz@gnu.org>
* CONTRIBUTE: Slight formatting changes and typo fixes. Add
description of NEWS markings.
* CONTRIBUTE: Slight formatting changes and typo fixes.
Add description of NEWS markings.
2006-07-07 Kim F. Storm <storm@cua.dk>
@ -148,7 +176,7 @@
* info/dir: Remove the Emacs-Xtra entry.
2006-04-20 Ramprasad B <ramprasad_i82@yahoo.com>
2006-04-20 Ramprasad B <ramprasad_i82@yahoo.com>
* Copyright (sources/emacs): Update copyright year(s).
@ -299,12 +327,12 @@
Remove the MAXPATHLEN limitations:
* configure.in (AC_CHECK_FUNCS): Check for get_current_dir_name.
* configure: Regenerated.
* configure: Regenerate.
2005-09-09 Eli Zaretskii <eliz@gnu.org>
* configure.in <lynxsos*>: Support for LynxOS on PPC.
* configure: Regenerated.
* configure: Regenerate.
2005-09-05 Paul Eggert <eggert@cs.ucla.edu>
@ -339,7 +367,7 @@
Update FSF's address in GPL notices.
2005-06-19 J,bi(Br,bt(Bme Marant <jerome@marant.org>
2005-06-19 J,Ai(Br,At(Bme Marant <jerome@marant.org>
* Makefile.in (epaths-force): Protect both lisppath and
buildlisppath from whitespace.
@ -428,7 +456,7 @@
* Makefile.in (install-arch-indep, uninstall): Add url and org
manuals.
2004-12-07 Stefan <monnier@iro.umontreal.ca>
2004-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
* configure.in (INLINE, RE_TRANSLATE_P): Move patches mistakenly
committed to src/config.in.
@ -498,7 +526,7 @@
* configure.in (HAVE_RANDOM_HEAPSTART): Change AC_MSG_ERROR to
AC_MSG_WARN. Move output of warning message to end of configure run.
2004-10-05 Jan Dj,Ad(Brv. <jan.h.d@swipnet.se>
2004-10-05 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* configure.in (HAVE_RANDOM_HEAPSTART): Rename HAVE_EXECSHIELD.
Run test to see if heap start address is random.
@ -620,7 +648,7 @@
* configure.in <darwin>: Use fink packages if available.
2004-01-25 Jerome Marant <jmarant@free.fr> (tiny change)
2004-01-25 J,Ai(Br,At(Bme Marant <jmarant@free.fr> (tiny change)
* make-dist (lispref): Do include lispref/index.texi.
@ -841,7 +869,7 @@
2003-01-29 Kim F. Storm <storm@cua.dk>
* AUTHORS: Regenerated using new format (after fixing numerous
* AUTHORS: Regenerate using new format (after fixing numerous
formatting errors in the ChangeLog files).
2003-01-22 Andreas Schwab <schwab@suse.de>
@ -929,7 +957,7 @@
* configure.in (*-sunos5*, *-solaris*): Use sol2-8.
2002-11-14 Francesco Potorti` <pot@gnu.org>
2002-11-14 Francesco Potort,Al(B <pot@gnu.org>
* configure.in (*-sunos5.8*, *-solaris2.8*): New configurations.
@ -1183,7 +1211,7 @@
These changes make Leim part of the standard distribution:
* README: Add info about the `leim' directory
* README: Add info about the `leim' directory.
* INSTALL: Remove text that describes Leim as a separate package.
@ -1751,8 +1779,7 @@
2000-08-24 Gerd Moellmann <gerd@gnu.org>
* configure.in <making srcdir absolute>: Unset CDPATH in case $PWD
contains a relative path. Protect against unusable values of
$PWD.
contains a relative path. Protect against unusable values of $PWD.
2000-08-08 Eli Zaretskii <eliz@is.elta.co.il>
@ -1763,8 +1790,7 @@
2000-08-07 Gerd Moellmann <gerd@gnu.org>
* Makefile.in (config.status): Prepend `$(srcdir)/' to
`configure'.
* Makefile.in (config.status): Prepend `$(srcdir)/' to `configure'.
2000-08-03 Gerd Moellmann <gerd@gnu.org>
@ -2130,7 +2156,7 @@
1999-08-18 Dave Love <fx@gnu.org>
* configure.in: : Check for termcap.h.
* configure.in: Check for termcap.h.
1999-08-15 Gerd Moellmann <gerd@gnu.org>
@ -2243,8 +2269,8 @@
1998-12-04 Andreas Schwab <schwab@delysid.gnu.org>
* Makefile.in: Don't install customize info file. Run
install-info on viper info file.
* Makefile.in: Don't install customize info file.
Run install-info on viper info file.
1998-11-29 Richard Stallman <rms@psilocin.ai.mit.edu>
@ -2464,7 +2490,7 @@
1997-09-30 Karl Eichwalder <ke@suse.de>
* Makefile.in (install-arch-indep): install the widget info file.
* Makefile.in (install-arch-indep): Install the widget info file.
1997-09-24 Jonathan I. Kamens <jik@kamens.brookline.ma.us>
@ -2476,8 +2502,7 @@
1997-09-21 Erik Naggum <erik@naggum.no>
* make-dist (making links to `src'): Keep timestamp on copied
files.
* make-dist (making links to `src'): Keep timestamp on copied files.
* make-delta: New script to produce delta distributions.
@ -2638,7 +2663,7 @@
* make-dist (etc): Really avoid symlinks now.
(lisp): Don't delete from subdirs the things we never copy.
1997-07-07 Ken'ichi Handa <handa@psilocin.gnu.ai.mit.edu>
1997-07-07 Kenichi Handa <handa@psilocin.gnu.ai.mit.edu>
* Makefile.in (install-arch-indep): Correct the target name.
The first letter `i' was dropped by the previous change of mine.
@ -2663,12 +2688,12 @@
* Makefile.in (install-leim): Correct previous change.
1997-07-02 Ken'ichi Handa <handa@psilocin.gnu.ai.mit.edu>
1997-07-02 Kenichi Handa <handa@psilocin.gnu.ai.mit.edu>
* Makefile.in (install-leim): New target.
(install): Depend on install-leim.
1997-07-01 Ken'ichi Handa <handa@psilocin.gnu.ai.mit.edu>
1997-07-01 Kenichi Handa <handa@psilocin.gnu.ai.mit.edu>
* Makefile.in (SUBDIR): Add leim.
(SUBDIR_MAKEFILES): Add leim/Makefile.
@ -2704,16 +2729,14 @@
1997-06-22 Dave Love <d.love@dl.ac.uk>
* Makefile.in (lib-src): Depend on src/config.h (e.g. for
movemail.o).
(src/config.h): New target to re-configure if src/config.in
is patched.
* Makefile.in (lib-src): Depend on src/config.h (e.g. for movemail.o).
(src/config.h): New target to re-configure if src/config.in is patched.
1997-06-18 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
* configure.in (shutdown): Check for `shutdown' function.
1997-06-18 Ken'ichi Handa <handa@psilocin.gnu.ai.mit.edu>
1997-06-18 Kenichi Handa <handa@psilocin.gnu.ai.mit.edu>
* update-subdirs: Include the directory "language" in subdirs.
@ -2750,15 +2773,14 @@
1997-04-09 Marcus G. Daniels <marcus@cathcart.sysc.pdx.edu>
* configure.in (doug_lea_malloc): First check for SYSTEM_MALLOC,
in case it is desirable to disable the GNU malloc features with
glibc.
in case it is desirable to disable the GNU malloc features with glibc.
1997-04-08 Marcus G. Daniels <marcus@cathcart.sysc.pdx.edu>
* configure.in (DOUG_LEA_MALLOC):
Define if malloc_{get,set}_state exist.
1997-03-05 Ken'ichi Handa <handa@etl.go.jp>
1997-03-05 Kenichi Handa <handa@etl.go.jp>
* make-dist: Make links for files under lisp/language.
@ -2950,7 +2972,7 @@
1996-07-11 Bill Mann <dvmann@dvncr.praxisint.com>
* configure.in: Use s/usg5-4-3.h for ncr-i[3456]86-sysv4.3
* configure.in: Use s/usg5-4-3.h for ncr-i[3456]86-sysv4.3.
1996-07-07 Karl Heuer <kwzh@gnu.ai.mit.edu>
@ -3473,8 +3495,8 @@
1995-06-22 Paul Eggert <eggert@twinsun.com>
* configure.in: Treat SunOS 4.1.4 like SunOS 4.1.3.
(Likewise for SunOS 4.1.5 thorugh 4.1.9, should they ever exist.)
* configure.in: Treat SunOS 4.1.4 like SunOS 4.1.3. (Likewise for
SunOS 4.1.5 thorugh 4.1.9, should they ever exist.)
1995-06-22 Paul Eggert <eggert@twinsun.com>
@ -3546,7 +3568,7 @@
1995-05-22 enami tsugutomo <enami@sys.ptg.sony.co.jp>
* configure.in: pass arg to sqrt.
* configure.in: Pass arg to sqrt.
1995-05-18 Karl Heuer <kwzh@hal.gnu.ai.mit.edu>
@ -3558,8 +3580,7 @@
1995-05-09 David J. MacKenzie <djm@geech.gnu.ai.mit.edu>
* configure.in: Use sqrt (more portable) instead of fmod in -lm
check.
* configure.in: Use sqrt (more portable) instead of fmod in -lm check.
1995-05-09 Richard Stallman <rms@mole.gnu.ai.mit.edu>
@ -3576,9 +3597,9 @@
1995-05-06 David J. MacKenzie <djm@geech.gnu.ai.mit.edu>
* configure.in: Make sure CDPATH doesn't mess up PWD check. Check
whether X bitmaps are in X11/bitmaps instead of bitmaps. Use fmod
instead of logb in -lm check.
* configure.in: Make sure CDPATH doesn't mess up PWD check.
Check whether X bitmaps are in X11/bitmaps instead of bitmaps.
Use fmod instead of logb in -lm check.
1995-05-03 Richard Stallman <rms@mole.gnu.ai.mit.edu>
@ -3598,7 +3619,7 @@
* configure.in (*-sun-sunos4.1.3*): Use shared libraries,
since that's what the header file expects.
1995-04-24 Francesco Potorti` (pot@cnuce.cnr.it)
1995-04-24 Francesco Potort,Al(B (pot@cnuce.cnr.it)
* configure.in (m68k-motorola-sysv*): Distinguish between 68030
and 68040 based machines when choosing options for gnucc.
@ -3627,7 +3648,7 @@
1995-04-06 Simon Leinen <simon@lia.di.epfl.ch>
* Makefile.in (install-arch-indep, dist):
look for `update-subdir' in $(srcdir).
Look for `update-subdir' in $(srcdir).
1995-04-06 Richard Stallman <rms@mole.gnu.ai.mit.edu>
@ -3663,8 +3684,8 @@
1995-02-02 David J. MacKenzie <djm@geech.gnu.ai.mit.edu>
* configure.in: Create a .gdbinit that sources the real one, if
using a different build directory.
* configure.in: Create a .gdbinit that sources the real one,
if using a different build directory.
1995-01-23 Karl Heuer <kwzh@hal.gnu.ai.mit.edu>
@ -6376,6 +6397,7 @@
;; Local Variables:
;; coding: iso-2022-7bit
;; add-log-time-zone-rule: t
;; End:
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2006

View file

@ -280,7 +280,7 @@ epaths-force: FRC
-e 's;/[*] *arch-tag:.*;/*;') && \
${srcdir}/move-if-change epaths.h.$$$$ src/epaths.h
# For parallel make, src should be build before leim.
# For parallel make, src should be built before leim.
# "export PARALLEL=0" is for SGI's Make, to prevent it from
# running more than 1 process in the leim directory, especially for
# the $TIT files there.
@ -518,7 +518,7 @@ install-arch-indep: mkdir info
${INSTALL_INFO} --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \
done; \
else true; fi
-chmod -R a+r $(DESTDIR)${datadir}/emacs ${COPYDESTS} $(DESTDIR)${infodir}
-chmod -R a+r $(DESTDIR)${datadir}/emacs/${version} $(DESTDIR)${datadir}/emacs/site-lisp ${COPYDESTS} $(DESTDIR)${infodir}
thisdir=`/bin/pwd`; \
cd ${srcdir}/etc; \
for page in emacs emacsclient etags ctags ; do \
@ -790,6 +790,7 @@ bootstrap-build: FRC
### Used for `bootstrap' to avoid deleting existing dumped Emacs executables.
bootstrap-clean-before: bootstrap-clean-before-fast FRC
(cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
(cd leim; $(MAKE) $(MFLAGS) bootstrap-clean)
### Used for `bootfast' to avoid deleting existing dumped Emacs executables
### and compiled .elc files.

50
README
View file

@ -1,28 +1,29 @@
This directory tree holds version 22.0.91 of GNU Emacs, the extensible,
This directory tree holds version 23.0.51 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
You may encounter bugs in this release. If you do, please report
them; your bug reports are valuable contributions to the FSF, since
they allow us to notice and fix problems on machines we don't have, or
in code we don't use often. See the file BUGS for more information on
how to report bugs.
The file INSTALL in this directory says how to build and install GNU
Emacs on various systems, once you have unpacked or checked out the
entire Emacs file tree.
See the file etc/NEWS for information on new features and other
user-visible changes in recent versions of Emacs.
The file INSTALL in this directory says how to bring up GNU Emacs on
various systems, once you have loaded the entire subtree of this
directory.
The file etc/PROBLEMS contains information on many common problems that
occur in building, installing and running Emacs.
Reports of bugs in Emacs should be sent to the mailing list
bug-gnu-emacs@gnu.org. See the "Bugs" section of the Emacs
manual for more information on how to report bugs. (The file `BUGS'
in this directory explains how you can find and read that section
using the Info files that come with Emacs.) See `etc/MAILINGLISTS'
for more information on mailing lists relating to GNU packages.
You may encounter bugs in this release. If you do, please report
them; your bug reports are valuable contributions to the FSF, since
they allow us to notice and fix problems on machines we don't have, or
in code we don't use often. Please send bug reports for released
versions of Emacs sent to the mailing list bug-gnu-emacs@gnu.org.
Please send bug reports for pretest versions of Emacs, and versions
from the Savannah.gnu.org repository, to emacs-pretest-bugs@gnu.org.
See the "Bugs" section of the Emacs manual for more information on how
to report bugs. (The file `BUGS' in this directory explains how you
can find and read that section using the Info files that come with
Emacs.) See `etc/MAILINGLISTS' for more information on mailing lists
relating to GNU packages.
The `etc' subdirectory contains several other files, named in capital
letters, which you might consider looking at when installing GNU
@ -86,20 +87,3 @@ There are several subdirectories:
that aren't part of the standard distribution of the OS. The
platform-specific README files and installation instructions should
list the required tools.
VMS info:
Emacs 19.x and above do not compile out of the box on OpenVMS.
Richard Levitte <levitte@lp.se> is distributing and maintaining a
version of Emacs (currently based on version 19.28, but soon moving to
19.34 and then 20.1) that compiles and works on OpenVMS 5.5 and above
on both VAX and Alpha architectures. For more information see
http://www.lp.se/gnu-vms/software/released1/emacs.html
There is also some effort going on with Emacs 21. Source code is
available at ftp://ftp.nvg.ntnu.no/pub/vms/emacs/. Look for most
recent stuff with ls -lta.
It is a working "development" version (editing and much more works).
More developers are needed; contact roart@nvg.ntnu.no.

View file

@ -1,3 +1,13 @@
2006-11-25 Juanma Barranquero <lekktu@gmail.com>
* admin.el (set-version): Set version number in
lib-src/makefile.w32-in.
2006-11-06 Reiner Steib <Reiner.Steib@gmx.de>
* FOR-RELEASE (BUGS): Remove "Build failure under Suse 10.0" was
due to a local miss-configuration.
2006-10-28 Chong Yidong <cyd@stupidchicken.com>
* make-announcement (OLD): Remove LEIM references in announcement
@ -387,6 +397,7 @@
;; Local Variables:
;; coding: iso-2022-7bit
;; add-log-time-zone-rule: t
;; End:
Copyright (C) 2001 Free Software Foundation, Inc.

View file

@ -43,7 +43,19 @@ to the hack introduced on 2005-07-01 to fix some other Cleartype problem.
* BUGS
** david.reitter@gmail.com, Oct 16: url-retrieve may cause hang
** Document use of gpg-agent
** monnier@iro.umontreal.ca, Nov 24:
gnus-summary-tick-article-forward doesn't work any more?
** jpff@codemist.co.uk, Nov 23: Problem in reading mail
Error is Invalid search bound
** rgm@gnu.org, Nov 29: mouse and horizontal scrolling with long lines
** christopher.ian.moore@gmail.com, Nov 30: too much recursion in gnus-sort-threads-1.
** rmg@gnu.org, Nov 29: saved user abbrevs and system abbrevs
* DOCUMENTATION

View file

@ -88,6 +88,9 @@ Root must be the root of an Emacs source tree."
(set-version-in-file root "lispref/elisp.texi" version
(rx (and "EMACSVER" (1+ space)
(submatch (1+ (in "0-9."))))))
(set-version-in-file root "lib-src/makefile.w32-in" version
(rx (and "VERSION" (0+ space) "=" (0+ space)
(submatch (1+ (in "0-9."))))))
;; nt/emacs.rc also contains the version number, but in an awkward
;; format. It must contain four components, separated by commas, and
;; in two places those commas are followed by space, in two other

View file

@ -21,11 +21,12 @@ For each step, check for possible errors.
5. rm configure; make bootstrap
6. Commit configure, README, AUTHORS, lisp/cus-load.el,
lisp/finder-inf.el, lisp/version.el, man/emacs.texi,
lispref/elisp.texi. Copy lisp/loaddefs.el to lisp/ldefs-boot.el
and commit lisp/ldefs-boot.el. For a release, also commit the
ChangeLog files in all directories.
6. Commit configure, README, AUTHORS, lisp/finder-inf.el,
lisp/version.el, man/emacs.texi, lispref/elisp.texi,
mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings,
mac/src/Emacs.r, nt/emacs.rc. Copy lisp/loaddefs.el to
lisp/ldefs-boot.el and commit lisp/ldefs-boot.el. For a release,
also commit the ChangeLog files in all directories.
7. make-dist --snapshot. Check the contents of the new tar with
admin/diff-tar-files against an older tar file. Some old pretest

122
configure vendored
View file

@ -2198,6 +2198,9 @@ case "${canonical}" in
opsys=freebsd
case "${canonical}" in
alpha*-*-freebsd*) machine=alpha ;;
ia64-*-freebsd*) machine=ia64 ;;
sparc64-*-freebsd*) machine=sparc ;;
powerpc-*-freebsd*) machine=macppc ;;
i[3456]86-*-freebsd*) machine=intel386 ;;
amd64-*-freebsd*|x86_64-*-freebsd*) machine=amdx86-64 ;;
esac
@ -5776,6 +5779,19 @@ fi
### The standard library on x86-64 GNU/Linux distributions can
### be located in either /usr/lib64 or /usr/lib.
case "${canonical}" in
x86_64-*-linux-gnu* )
if test -d /usr/lib64; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_X86_64_LIB64_DIR 1
_ACEOF
fi
esac
@ -9333,7 +9349,13 @@ fi
if test "${window_system}" = x11 && test "${HAVE_CARBON}" = yes; then
if test "${with_carbon+set}" != set \
&& test "${carbon_appdir_x+set}" != set; then
HAVE_CARBON=no
for var in with_x with_x_toolkit with_gtk with_xim \
with_xpm with_jpeg with_tiff with_gif with_png; do
if eval test \"\${$var+set}\" = set; then
HAVE_CARBON=no
break
fi
done
fi
fi
if test "${HAVE_CARBON}" = yes; then
@ -13404,104 +13426,6 @@ _ACEOF
fi
# We also have mouse menus.
HAVE_MENUS=yes
tmp_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -framework Carbon"
{ echo "$as_me:$LINENO: checking for CancelMenuTracking" >&5
echo $ECHO_N "checking for CancelMenuTracking... $ECHO_C" >&6; }
if test "${ac_cv_func_CancelMenuTracking+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Define CancelMenuTracking to an innocuous variant, in case <limits.h> declares CancelMenuTracking.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define CancelMenuTracking innocuous_CancelMenuTracking
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char CancelMenuTracking (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef CancelMenuTracking
/* 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 CancelMenuTracking ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined __stub_CancelMenuTracking || defined __stub___CancelMenuTracking
choke me
#endif
int
main ()
{
return CancelMenuTracking ();
;
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_func_CancelMenuTracking=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_CancelMenuTracking=no
fi
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_func_CancelMenuTracking" >&5
echo "${ECHO_T}$ac_cv_func_CancelMenuTracking" >&6; }
if test $ac_cv_func_CancelMenuTracking = yes; then
have_cmt=yes
else
have_cmt=no
fi
if test "$have_cmt" = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_CANCELMENUTRACKING 1
_ACEOF
fi
CFLAGS="$tmp_CFLAGS"
fi
### Use session management (-lSM -lICE) if available

View file

@ -237,6 +237,9 @@ case "${canonical}" in
opsys=freebsd
case "${canonical}" in
alpha*-*-freebsd*) machine=alpha ;;
ia64-*-freebsd*) machine=ia64 ;;
sparc64-*-freebsd*) machine=sparc ;;
powerpc-*-freebsd*) machine=macppc ;;
i[3456]86-*-freebsd*) machine=intel386 ;;
amd64-*-freebsd*|x86_64-*-freebsd*) machine=amdx86-64 ;;
esac
@ -1482,6 +1485,16 @@ dnl Do this early because it can frob feature test macros for Unix-98 &c.
AC_SYS_LARGEFILE
### The standard library on x86-64 GNU/Linux distributions can
### be located in either /usr/lib64 or /usr/lib.
case "${canonical}" in
x86_64-*-linux-gnu* )
if test -d /usr/lib64; then
AC_DEFINE(HAVE_X86_64_LIB64_DIR, 1,
[Define to 1 if the file /usr/lib64 exists.])
fi
esac
dnl This function defintion taken from Gnome 2.0
dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
@ -1776,7 +1789,13 @@ fi
if test "${window_system}" = x11 && test "${HAVE_CARBON}" = yes; then
if test "${with_carbon+set}" != set \
&& test "${carbon_appdir_x+set}" != set; then
HAVE_CARBON=no
for var in with_x with_x_toolkit with_gtk with_xim \
with_xpm with_jpeg with_tiff with_gif with_png; do
if eval test \"\${$var+set}\" = set; then
HAVE_CARBON=no
break
fi
done
fi
fi
if test "${HAVE_CARBON}" = yes; then
@ -2410,15 +2429,6 @@ if test "${HAVE_CARBON}" = "yes"; then
fi
# We also have mouse menus.
HAVE_MENUS=yes
tmp_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -framework Carbon"
AC_CHECK_FUNC(CancelMenuTracking, have_cmt=yes, have_cmt=no)
if test "$have_cmt" = yes; then
AC_DEFINE(HAVE_CANCELMENUTRACKING, 1,
[Define to 1 if CancelMenuTracking is available (Mac OSX).])
fi
CFLAGS="$tmp_CFLAGS"
fi
### Use session management (-lSM -lICE) if available

View file

@ -1,3 +1,53 @@
2006-12-01 Juanma Barranquero <lekktu@gmail.com>
* DEVEL.HUMOR: Another entry.
2006-08-14 Masatake YAMATO <jet@gyve.org>
* etags.1: Added / to the end of DEVAR regex.
2006-11-22 Juanma Barranquero <lekktu@gmail.com>
* emacsclient.1 (DESCRIPTION): Suggest also `server-mode'.
(OPTIONS): Document `-f', `--server-file' and EMACS_SERVER_FILE.
2006-11-20 Michael Olson <mwolson@gnu.org>
* NEWS: Change M-x erc-select to M-x erc.
2006-11-20 Sun Yijiang <sunyijiang@gmail.com>
* TUTORIAL.cn: Updated.
2006-11-17 Carsten Dominik <dominik@science.uva.nl>
* orgcard.tex (section{Agenda Views}): Document `C-k'.
2006-11-13 Carsten Dominik <dominik@science.uva.nl>
* orgcard.tex: Version number change.
2006-11-13 Bill Wohler <wohler@newt.com>
Release MH-E version 8.0.3.
* NEWS, MH-E-NEWS: Update for MH-E release 8.0.3.
2006-11-10 Juanma Barranquero <lekktu@gmail.com>
* DEVEL.HUMOR: Two more entries.
2006-11-10 Carsten Dominik <carsten.dominik@gmail.com>
* orgcard.tex (section{Archiving}): Document C-TAB.
(section{TODO Items and Checkboxes}): Checkbox keys moved to this
section, added documentation for the key `C-c #'.
2006-11-05 Slawomir Nowaczyk <slawek@cs.lth.se> (tiny change)
* emacs.py (eargs): Provide eldoc message for builtin types.
Make sure eargs always outputs sentinel, to avoid Emacs freeze.
2006-10-22 Chong Yidong <cyd@stupidchicken.com>
* emacs.py (eargs): Return expected _emacs_out string even if
@ -59,6 +109,11 @@
* PROBLEMS (are): Emacs compiled with Gtk+ crashes when closing a
display (x-close-connection).
2006-09-03 Diane Murray <disumu@x3y2z1.net>
* erc.texi (Getting Started, Connecting): Changed erc-select to
erc.
2006-09-02 Juri Linkov <juri@jurta.org>
* HELLO: Regroup Europe Non-ASCII examples by similar scripts.
@ -3115,6 +3170,7 @@
;; Local Variables:
;; coding: iso-2022-7bit
;; add-log-time-zone-rule: t
;; End:
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001

View file

@ -136,3 +136,35 @@ without attempting any course of action that requires an advance
course in divination.
There'd be quite a sensational market for that, you know."
-- Emilio Lopes and David Kastrup
----------------------------------------------------------------------
"[T]here may be a good reason since the code explicitly checks for
this; see keyboard.c:789 [...]"
"I think I understand, but I can't find the code in keyboard.c. Do
you really mean 'line 789'? Of which revision?"
"Sorry; by 789, I mean 3262 :-P"
-- Chong Yidong and Stefan Monnier
----------------------------------------------------------------------
"[...] In my opinion, your change does not either increase or
decrease readability. It's a tossup."
"Uh, setting tem to '', an artificial empty string, in order to have
j incremented once again before breaking out of the finished loop is
readable?
Is this kind of 'readable' synonymous to 'comprehensible with
serious effort', reminiscent of mathematicians' use of 'trivial' as
synonymous with 'provable with serious effort'?"
-- RMS and David Kastrup
----------------------------------------------------------------------
Re: New Emacs Icon and Tango
"What about using the 'happy face' with gnu horns?"
"It would make Emacs the object of ridicule until the end of time."
"Isn't it already?"
"It's the object of ridicule until the end of _tape_. The jury is
still out about that end of time thing."
-- Kim F. Storm, Miles Bader, RMS and David Kastrup

View file

@ -1,5 +1,21 @@
ERC NEWS -*- outline -*-
* Changes in ERC 5.2 (stable pre-release for Emacs 22)
** M-x erc RET now starts ERC.
`erc-select' has been changed to `erc'. `erc-select' still remains as
an alias of `erc'. Likewise, `erc-select-ssl' has been renamed to
`erc-ssl' with `erc-select-ssl' as its alias. The function that was
known as `erc' is now `erc-open'.
** Changes and additions to modules
*** Channel tracking (erc-track.el)
**** Use mouse-face and help-echo for channel names in the mode-line.
This helps people using a mouse know that they are buttons and can be
clicked on.
* Changes in ERC 5.1.4
** Make find-function and find-variable work in Emacs 22 for

View file

@ -6,6 +6,33 @@ Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
* Changes in MH-E 8.0.3
Version 8.0.3 fixes errors in sending messages and in running spam
filter commands in certain circumstances.
** Bug Fixes in MH-E 8.0.3
*** mh-send-args Cannot Be nil
If `mh-send-uses-spost-flag' was set, an error would prevent the
sending of messages. This has been fixed (closes SF #1564742).
*** Missing Quotes in sa-learn Command Line
This has been fixed (closes SF #1565460).
*** Errors Associated with mh-junk-background
The Spamassassin filter commands were used inconsistently and
incorrectly; if `mh-junk-background' were nil, not all of the updating
would happen correctly. In the other back-ends such as bogofilter and
SpamProbe, a value of t for `mh-junk-background' would cause the
commands associated with these filters to fail. These problems have
been fixed (closes SF #1594802).
* Changes in MH-E 8.0.2
Version 8.0.2 fixes the tool bar and `F n' on XEmacs, and `K a' on GNU

View file

@ -299,7 +299,8 @@ have been moved to C-h F, C-h K and C-h S.
See below under "incremental search changes".
---
** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer
a special case.
Since the default input is the current directory, this has the effect
of specifying the current directory. Normally that means to visit the
@ -1033,6 +1034,21 @@ jit-lock-defer-contextually is renamed jit-lock-contextually and
jit-lock-context-time determines the delay after which contextual
refontification takes place.
---
*** lazy-lock is considered obsolete.
The `lazy-lock' package is superseded by `jit-lock' and is considered
obsolete. `jit-lock' is activated by default; if you wish to continue
using `lazy-lock', activate it in your ~/.emacs like this:
(setq font-lock-support-mode 'lazy-lock-mode)
If you invoke `lazy-lock-mode' directly rather than through
`font-lock-support-mode', it now issues a warning:
"Use font-lock-support-mode rather than calling lazy-lock-mode"
** Menu support:
---
@ -1184,7 +1200,7 @@ characters instead, depending on how the terminal (or terminal
emulator) works. Use `set-keyboard-coding-system' (or customize
keyboard-coding-system) if you prefer META to work (the old default)
or if the locale doesn't describe the character set actually generated
by the keyboard. See Info node `Single-Byte Character Support'.
by the keyboard. See Info node `Unibyte Mode'.
+++
*** The new command `revert-buffer-with-coding-system' (C-x RET r)
@ -1454,8 +1470,11 @@ otherwise behaves quite similarly to the bash version.
but declared obsolete.
+++
*** The EMACS environment variable now defaults to Emacs's absolute
file name, instead of to "t".
*** The new INSIDE_EMACS environment variable is set to "t" in
subshells running inside Emacs. This supersedes the EMACS environment
variable, which will be removed in a future Emacs release. Programs
that need to know whether they are started inside Emacs should check
INSIDE_EMACS instead of EMACS.
** M-x Compile changes:
@ -1686,8 +1705,8 @@ ERC is a powerful, modular, and extensible IRC client for Emacs.
To see what modules are available, type
M-x customize-option erc-modules RET.
To start an IRC session, type M-x erc-select, and follow the prompts
for server, port, and nick.
To start an IRC session, type M-x erc, and follow the prompts for
server, port, and nick.
---
** Rcirc is now part of the Emacs distribution.
@ -3279,7 +3298,7 @@ See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details.
---
** MH-E changes.
Upgraded to MH-E version 8.0.2. There have been major changes since
Upgraded to MH-E version 8.0.3. There have been major changes since
version 5.0.2; see MH-E-NEWS for details.
** Calendar changes:

View file

@ -1280,6 +1280,11 @@ be carried out at the same time:
For more about lbxproxy, see:
http://www.xfree86.org/4.3.0/lbxproxy.1.html
5) If copying and killing is slow, try to disable the interaction with the
native system's clipboard by adding these lines to your .emacs file:
(setq interprogram-cut-function nil)
(setq interprogram-paste-function nil)
*** Emacs gives the error, Couldn't find per display information.
This can result if the X server runs out of memory because Emacs uses
@ -2322,7 +2327,16 @@ This results from a bug in a VERY old version of GNU Sed. To solve
the problem, install the current version of GNU Sed, then rerun
Emacs's configure script.
*** Building the MS-Windows port with Cygwin GCC can fail.
*** Building the Cygwin port for MS-Windows can fail with some GCC version
Building Emacs 22 with Cygwin builds of GCC 3.4.4-1 and 3.4.4-2 is
reported to either fail or cause Emacs to segfault at run time. In
addition, the Cygwin GCC 3.4.4-2 has problems with generating debug
info. Cygwin users are advised not to use these versions of GCC for
compiling Emacs. GCC versions 4.0.3 and 4.1.1 reportedly build a
working Cygwin binary of Emacs, so we recommend these GCC versions.
*** Building the native MS-Windows port with Cygwin GCC can fail.
Emacs may not build using recent Cygwin builds of GCC, such as Cygwin
version 1.1.8, using the default configure settings. It appears to be

View file

@ -487,6 +487,10 @@ but which can also be used as a modifier).
<http://lists.gnu.org/archive/html/emacs-devel/2006-02/msg01034.html>.
[rgm@gnu.org will look at this after 22.1]
** Possibly make cal-dst use the system timezone database directly.
See thread
<http://lists.gnu.org/archive/html/emacs-pretest-bug/2006-11/msg00060.html>
* Internal changes
** Replace gmalloc.c with the modified Doug Lea code from the current

View file

@ -17,7 +17,7 @@ META
重要提示:要退出 Emacs请用 C-x C-c两个连续的组合键。下文中左边顶
行的“>>”字样用来提示你尝试键盘命令。比如:
<<Blank lines inserted around following line by help-with-tutorial>>
[本页当中特意留出一些空白是出于教学目的,请继续往后]
[本页当中特意留出一些空白是出于教学目的,请继续往后阅读]
>> 现在输入 C-v (查看下一屏文字)移动到下一屏。
(别紧张,在输入字符 v 的同时注意要按住 CONTROL 键)
从现在开始,每读完当前一屏你都需要这样做一次。
@ -129,8 +129,8 @@ P
C-f 向右移动一个字符
C-b 向左移动一个字符
M-f 向右移动一个词【中文是移动到下一个标点符号】
M-b 向左移动一个词【中文是移动到上一个标点符号】
M-f 向右移动一个词【中文是移动到下一个标点符号】
M-b 向左移动一个词【中文是移动到上一个标点符号】
C-n 移动到下一行
C-p 移动到上一行
@ -212,14 +212,14 @@ C-g
如果你不小心按了一下 <ESC>,你也可以用 C-g 来取消它。
【这个说法似乎有问题,因为按照这个按键顺序输入的应该是 C-M-g。
取消<ESC> 的正确做法是再连按两次 <ESC>。】
取消 <ESC> 的正确做法是再连按两次 <ESC>。】
* 被禁用的命令DISABLED COMMANDS
-----------------------------------
有一些 Emacs 命令被“禁用”了,以避免初学者在不了解其确切功能的情况下误
它们,造成麻烦。
造成麻烦。
如果你用到了一个被禁用的命令Emacs 会显示一个提示消息,告诉你这个命令
到底是干什么的,询问你是否要继续,并在得到你的肯定之后再执行这命令。
@ -234,10 +234,10 @@ C-g
* 窗格WINDOWS
-----------------
Emacs 可以有多个窗格,每个窗格都显示不同的文字。我们后面再介绍怎么对付
多个窗格,现在先让我们先搞明白如何关掉多余的窗格。其实也很简单:
Emacs 可以有多个窗格,每个窗格显示不同的文字。后面会介绍怎么对付多个窗
格,现在我们先学会如何关掉多余的窗格。其实也很简单:
C-x 1 只保留一个窗格(也就是关掉其他所有的窗格)。
C-x 1 只保留一个窗格(也就是关掉其它所有窗格)。
也就是先按 CONTROL-x 然后再按 1。C-x 1 会保留光标所在的窗格,并将其扩大
到整个屏幕,同时关掉所有其它的窗格。
@ -245,33 +245,34 @@ Emacs
>> 把光标移到本行然后输入 C-u 0 C-l。
>> 输入 CONTROL-h k CONTROL-f。观察当一个新窗格出现时当前窗格用来显示
CONTROL-f 命令的文档)是如何小的。
CONTROL-f 命令的文档)是如何小的。
>> 输入 C-x 1 关掉文档窗格。
这个命令跟先前学的命令不太一样,因为它包含了两个字符,以 CONTROL-x 开
这个命令跟先前学的命令不太一样,因为它包含了两个字符,以 CONTROL-x 开
始。有一系列命令都是以 CONTROL-x 开始的,这些命令许多都跟“窗格、文件、
缓冲区【缓冲区buffer会在后文详细介绍】”等等诸如此类的东西有关
中有些命令可能有 2 个、3 个或者 4 个字符长
中有些命令可能包含了 2 个、3 个或者 4 个字符
* 插入与删除INSERTING AND DELETING
--------------------------------------
插入文字很简单,敲键盘就行了。你能看到的字符,比如 A、7、* 等等,都被
Emacs 视为文字并且可以直接插入。敲 <Return>(回车键)会插入一个换行符。
插入文字很简单,直接敲键盘就可以了。你能看到的字符,比如 A、7、* 等等,
都被 Emacs 视为文字并且可以直接插入。敲 <Return>(回车键)会插入一个换
行符。
你可以用 <Delback> 来删除最后输入的一个字符,这个跟你在 Emacs 之外的
法应该一样。一般来说 <Delback> 就是位于 <Return> 键上方某处的一个大
通常被标示为“Delete”、“Del”或者“Backspace”。
你可以用 <Delback> 来删除最后输入的一个字符,这个跟你在 Emacs 之外的
法应该一样。一般来说 <Delback> 就是位于 <Return> 键上方某处的一个大块头
通常被标示为“Delete”、“Del”或者“Backspace”。
如果你找到了“Backspace”键那么它应该就是 <Delback>;哪怕你又在别的地
方找到了一个“Del”键那么它也应该不是 <Delback>。
如果你找到了“Backspace”键那么它应该就是 <Delback>这时哪怕你又在别
的地方找到了一个“Del”键那么它也应该不是 <Delback>。
一种更通用的说法是,<Delback> 将删除位于光标前的一个字符。
>> 现在就试试——敲点字,然后按几下 <Delback> 删除它们。
不用担心你会修改文件,你干什么都没关系,这里就是专给你练习用的。
>> 现在就试试——敲点字,然后按几下 <Delback> 删除它们。
不用担心文件被修改,你做什么都没关系,这里就是专给你练习用的。
如果一行文字很长、超出了窗格的宽度,显示不下的部分会在紧邻的下一行继续
显示。这时会有一个反斜线(在控制台下是反斜线,如果你用图形窗口系统,则
@ -281,7 +282,7 @@ Emacs
>> 用 <Delback> 删掉一些文字,直到此行长度小于窗格宽度,接续行就消失了。
换行符跟其字符一样可以被删除。两行中间的换行符被删除后,这两行将会合
换行符跟其字符一样可以被删除。两行中间的换行符被删除后,这两行将会合
并成一行。如果合并后的这一行太长,超出了窗格宽度,它就会以一个接续行来
显示。
@ -315,24 +316,24 @@ Emacs
和 M-k 的关系在某种程度上与 C-e 和 M-e 一样——如果把“一行”和“一句”
作一个类比的话。
你也可以用一种统一的办法来移除缓冲区里的任何一部分:首先把光标移动到你
你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
想要移除的区域的一端,然后按 C-@ 或 C-SPC任一即可SPC指空格【注意
C-SPC 往往被中文用户设定成输入法热键如果这样C-SPC 就被系统拦截而无
输入给 Emacs 了因此这里还是推荐使用C-@。】,然后再移动到另一端,再
按 C-w 就可以把位于这两点之间的所有文字移除了。
传递给 Emacs 了因此这里还是推荐使用C-@。】,然后将光标移动到另一端,
按 C-w 就可以把位于这两点之间的所有文字移除了。
>> 移动光标到上一段开头的“你”字。
>> 输入 C-@ 。Emacs 应该会在屏幕的下方显示一个“Mark set”的消息。
>> 移动光标到第二行中的“端”字。
>> 输入 C-w就会把从“你”开始到“端”之前的文字全部移除。
>> 输入 C-w从“你”开始到“端”之前的文字全部移除。
注意,“移除kill”和“删除delete”的不同在于被移除的东西可以找回
来,而被删除的就不行了。【实际上,移除掉的东西虽然看起来“消失”了,但
实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉的东西虽然也可能还
在内存里,但是已经被 Emacs“抛弃”了所以就找不回来了。】重新插入被移
除的文字称为“召回yank”。一般而言那些会去除很多文字的命令会把去
除掉的文字储存起来(它们被设定成了“可召回”),而那些只是去除一个字符
或者只是去除空白的命令就不会储存被去除掉的东西(自然你就无法召回了)。
除的文字称为“召回yank”。一般而言那些可能消除很多文字的命令会把
消除掉的文字记录下来(它们被设定成了“可召回”),而那些只消除一个字符
或者只消除空白的命令就不会记录被消除的内容(自然你也就无法召回了)。
>> 移动光标到一非空白行的行头,然后输入 C-k 移除那一行上的文字。
@ -344,9 +345,9 @@ C-SPC
C-k 会把两行以及它们的换行符移除;而如果只是输入 C-k 两次显然不是这个结
果。
将被移除的文字恢复的动作称为“召回yanking”。就好像把别人从你身
移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回,也可以在别
地方召回,还可以多次召回同样的文字以得到它的多个拷贝。
将被移除的文字恢复的动作称为“召回yanking”。就好像把别人从你身
移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回,也可以在别
地方召回,还可以多次召回同样的文字以得到它的多个拷贝。
召回的命令是 C-y。它会在光标所在处插入你最后移除的文字。
@ -362,13 +363,13 @@ C-y
>> 按 C-y。然后把光标往下移动几行再按一次 C-y。
现在你应该知道怎么复制文字了。
C-y 可以把最近移除的文字召回,但如果你想召回的东西不是最近移除的,该怎
么办呢?它们当然没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除
的文字之后,紧接着再用 M-y 就可以召回再前一次被移除的文字,再按一次
M-y 又可以召回再上一次的,因此只要多按几次 M-y 就可以找到你想要召回的东
西了。找到了之后,你什么也不用做,把它们晾在那里,继续你的编辑就行了。
C-y 可以召回最近一次移除的内容,那如何召回前几次移除的内容呢?它们当然
没有丢,你可以用 M-y 来召回它们。在用 C-y 召回最近移除的文字之后,紧接
着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上
一次的……连续使用 M-y 直到找到你想要召回的东西,然后什么也不用做,继续
编辑就行了。
如果你一次按 M-y 按了很多下,你可能会回到起始点,也就是最近移除的文字。
如果连续按 M-y 很多次,你可能会回到起始点,也就是最近移除的文字。
【看得出这实际上是一个环。】
>> 移除一行,移动一下光标,然后再移除另外一行。
@ -376,7 +377,7 @@ M-y
紧接着再按 M-y它将会被第一次移除的那行取代。
试着再按几下 M-y 看看会发生什么。
再继续,直到第二行被召回来,然后再做个几次。
如果你愿意,你可以试着给 M-y 指定一个正的或负的参数。
如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。
* 撤销UNDO
@ -405,24 +406,24 @@ C-_ Ҳ
* 文件FILE
--------------
想保存工作成果就要记得存盘,否则一旦退出 Emacs 你编辑的文字就都丢了。要
想保存工作成果就要记得存盘,否则一旦退出 Emacs 你编辑的文字就会丢失。要
存盘,就要在编辑前“寻找”到一个存盘文件。(这个过程通常也被称为“访问”
文件。)
寻找到一个文件意味着你可以在 Emacs 里查看这个文件的内容。从很多方面讲
这就等于你在直接编辑这个文件。但是你所做的修改只有在“存盘”的时候才会
被写入文件。也正因为如此,你可以丢弃一个到一半的文件而不必把这个残缺
文件也保存到计算机上。最后就算你真正存了盘Emacs 也会把存盘前的文件重
命名保存,以防你改完之后又想反悔。
寻找到一个文件意味着你可以在 Emacs 里查看这个文件的内容。从许多角度看
这就等于你在直接编辑这个文件,只是你所做的修改只有在“存盘”的时候才会
被写入文件。也正因为如此,你可以丢弃一个到一半的文件而不必把这个残缺
文件也保存到计算机上。在存盘的时候Emacs 会把存盘前的文件重命名保存,
以防你改完之后又想反悔。
在屏幕的下方,你应该能够看到头尾都是短线“-”的一行,其开头通常都是诸如
“--:-- TUTORIAL.cn”这样的东西,这些文字就代表了你当前正在访问的文件。
现在你访问的文件叫“TUTORIAL.cn”它只是给你个人临时使用的一个拷贝。只
要你用 Emacs 寻找到一个文件,文件名就会出现在上述位置。
在屏幕的下方,你应该能够看到头尾都是短线“-”的一行,行首通常是一些诸如
“--:-- TUTORIAL.cn”的文字,这些文字代表了你当前正在访问的文件。比如你
现在正在访问的文件叫“TUTORIAL.cn”它只是一个给你临时使用的拷贝。每当
Emacs 寻找到一个文件,文件名就会出现在这个位置。
寻找文件的命令有一个特别之处,那就是你必须给出文件名。我们称这个命令
“从终端读入了一个参数”(在这里,这个参数显然就是文件名)。当你输入了
这个命令之后:
寻找文件的命令有一个特,那就是你必须给出文件名。我们称这个命令“从终
端读入了一个参数”(在这里,这个参数显然就是文件名)。在你输入这条命令
之后:
C-x C-f 寻找一个文件
@ -430,50 +431,51 @@ Emacs
行被称为小缓冲minibuffer在小缓冲里你可以使用通常的 Emacs 编辑命令
来编辑文件名。
在小缓冲里输入文件名(其实输入别的东西也一样)时可以用 C-g 取消。
在小缓冲里输入文件名(其实输入其它东西也一样)时可以用 C-g 取消。
>> 输入 C-x C-f然后输入 C-g
这会关掉小缓冲,同时也会取消使用小缓冲的 C-x C-f 命令。
当然了,你也没有找任何文件。
输入完文件名之后用 <Return> 结束,然后 C-x C-f 命令开始工作并找到你指定
文件。小缓冲在 C-x C-f 命令结束之后也会消失。
用 <Return> 结束文件名的输入。这之后 C-x C-f 命令开始工作并找到你指定的
文件。小缓冲在 C-x C-f 命令结束之后也会消失。
眨眼间文件就会显示在屏幕上,你可以开始编辑了。存盘用这个命令:
眨眼间文件就被显示在屏幕上,你可以开始编辑了。存盘用这条命令:
C-x C-s 储存这个文件
这个命令把 Emacs 中的文字存储到文件中。第一次存盘的时候 Emacs 会将原文
件重命名以保留原文。重命名的规则通常是在原文件名之后添加一个“~”字符。
这条命令把 Emacs 中的文字存储到文件中。第一次存盘的时候 Emacs 会将原文
件重命名以备份。重命名的规则通常是在原文件名之后添加一个“~”字符。
【对许多人来说,这是一个烦人的特性,关掉文件备份可以用如下命令:
M-x customize-variable <Return> make-backup-files <Return>】
存盘结束后Emacs 会显示写入文件的文件名。你最好养成经常存盘的习惯,这
样在系统崩溃或者死机的时候你不会损失太多
可以减少系统崩溃和死机给你带来的损失
>> 输入 C-x C-s 把本快速指南存下来。
你会看到“Wrote ...TUTORIAL.cn”这样的消息显示在屏幕的下方
你会在屏幕的下方看到一条消息“Wrote ...TUTORIAL.cn”
注意:使用某些终端的时候,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】,
这样你就看不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能把
C-s 拦截了并且冻结了屏幕Emacs 自然也就看不到这个输入了。用 C-q 可以
解除屏幕冻结。要解决这个问题,请参考 Emacs 手册里的“Spontaneous Entry
to Incremental Search”一节【Emacs 手册可能还没有中文翻译】,那里可能有
一些有用的建议。
注意:在某些终端下,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】,使你看
不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能拦截了 C-s 并
冻结了屏幕。用 C-q 可以解除屏幕冻结。要解决这个问题,请参考 Emacs 手册
里的“Spontaneous Entry to Incremental Search”一节【Emacs 手册可能还没
有中文翻译】,那里提供了一些有用的建议。
可以寻找一个已有的文件然后查看或者编辑,你还可以寻找一个不存在的文件。
实际上这正是 Emacs 创建新文件的方法:找到不存在的新文件,然后从零开始。
在存盘的时Emacs 才真正创建这个文件然后再存盘。在这之后一切就跟
辑一个已有文件一样了。
不但可以寻找一个已有的文件来查看或编辑,还可以寻找一个不存在的文件。
实际上这正是 Emacs 创建新文件的方法:找到不存在的新文件。只有在存盘的时
Emacs 才真正创建这个文件。在这之后一切就跟编辑一个已有文件没
有区别了。
* 缓冲区BUFFER
------------------
如果你用 C-x C-f 找到第二个文件,第一个文件仍然会在 Emacs 里。要切回第
一个文件,你可以 C-x C-f 再次寻找它。这样,你可以在 Emacs 里同时打开很
文件。
你可以用 C-x C-f 找到并打开第二个文件,但第一个文件仍然在 Emacs 中。要
切回第一个文件,一种办法是再用一次 C-x C-f。这样你就可以在 Emacs 中同
时打开多个文件。
>> 用 C-x C-f foo <Return> 的方式建立一个名为“foo”的文件。
然后敲入一些文字,再用 C-x C-s 保存文件“foo”。
入一些文字,再用 C-x C-s 保存文件“foo”。
最后,输入 C-x C-f TUTORIAL.cn <Return> 回到这里。
Emacs 把每个编辑中的文件都放在一个称为“缓冲区buffer”的地方。每寻
@ -484,40 +486,38 @@ Emacs
>> 现在就试一下 C-x C-b
观察一下缓冲区是如何命名的,它很可能跟其对应的文件同名。事实上,你在
个 Emacs 窗格里看到的任何文字都是某个缓冲区的一部分。
观察一下缓冲区是如何被命名的,它很可能跟与其对应的文件同名。实际上,
个 Emacs 窗格里的任何文字都是某个缓冲区的一部分。
>> 输入 C-x 1 离开缓冲区列表
不管存在多少缓冲区,任何时候都只能有一个“当前”缓冲区,也就是你正在
编辑的这个。如果你想编辑另外一个缓冲区,那么你必须“切换”过去。上面讲
过,用 C-x C-f 可以切换到某个文件对应的缓冲区。不过还有一个更简单点的办
法,那就是用 C-x b。用这个命令,你必须输入缓冲区的名称。
不管存在多少缓冲区,任何时候都只能有一个“当前”缓冲区,也就是你正在
辑的这个。如果你想编辑其它的缓冲区,就必须“切换”过去。上面讲过,用
C-x C-f 是一种办法。不过还有一个更简单的办法,那就是用 C-x b。用这条命
令,你必须输入缓冲区的名称。
>> 输入 C-x b foo <Return> 以回到文件“foo”的缓冲区。
然后输入 C-x b TUTORIAL.cn <Return> 回到这里。
大多数情况下,缓冲区与其对应的文件是同名的(不包括目录名),不过这也
不是绝对的。用 C-x C-b 得到的缓冲区列表中显示的总是缓冲区的名称
大多数情况下,缓冲区与其对应的文件是同名的(不包括目录名),不过这也
不是绝对的。用 C-x C-b 得到的缓冲区列表总是显示缓冲区名
你在 Emacs 窗格里看到的“任何”文字都一定是属于某个缓冲区的。也有些缓冲
区并没有对应文件:比如显示缓冲区列表的缓冲区就是这样,再比如一个名叫
“*Messages*”的缓冲区也没有对应的文件,这个缓冲区里存放的都是在 Emacs
底部出现的消息。
你在 Emacs 窗格里看到的“任何”文字都一定属于某个缓冲区。然而,缓冲区未
必有对应文件:比如显示缓冲区列表的缓冲区就是这样。再比如“*Messages*”
缓冲区也没有对应文件,这个缓冲区里存放的都是在 Emacs 底部出现的消息。
>> 输入 C-x b *Messages* <Return> 瞅瞅消息缓冲区里都有什么东西。
然后再输入 C-x b TUTORIAL.cn <Return> 回到这里。
如果你对文件做了修改,然后切换到另一个文件,这个动作并不会帮你把第一个
文件存盘,对第一个文件的修改仍然仅限于 Emacs 中,也就是在它对应的缓冲区
里。同时对第二个文件的修改也不会影响到第一个文件。这很有用,但是也挺麻
烦,因为如果你又想要存储第一个文件,你还需要先用 C-x C-f 切换回去,然后
再用 C-x C-s 存盘,这显然太麻烦了。你需要一个更简便的方法,而 Emacs 当
然已经替你想到了:
如果你对某个文件做了些修改,然后切换到另一个文件,这个动作并不会帮你把
前一个文件存盘。对第一个文件的修改仍然仅存在于 Emacs 中,也就是在它对应
的缓冲区里。并且,对第二个文件的修改也不会影响到第一个文件。这很有用,
但是也挺麻烦:因为如果你想要存储第一个文件,还需要先 C-x C-f 切换回去再
用 C-x C-s 存盘。你需要一个更简便的方法,而 Emacs 已经为你准备好了:
C-x s 保存多个缓冲区
C-x s 会找到所有已被修改但尚未存盘的缓冲区,然后向你逐个询问,是否需要
C-x s 会找出所有已被修改但尚未存盘的缓冲区,然后向你逐个询问:是否需要
存盘?
>> 插入一行文字,然后输入 C-x s。
@ -529,28 +529,28 @@ C-x s
-----------------------------------------
Emacs 的命令就像天上的星星,数也数不清。把它们都对应到 CONTROL 和 META
组合键上显然是不可能的事情。Emacs 用扩展eXtend命令来解决这个问题
扩展命令有两种风格:
组合键上显然是不可能的。Emacs 用扩展eXtend命令来解决这个问题扩展
命令有两种风格:
C-x 字符扩展。 C-x 之后输入另一个字符或者组合键。
M-x 命令名扩展。M-x 之后输入一个命令名。
很多扩展命令都有用,虽然与你已经学过的命令比起来,他们可能不那么常用。
你应该已经见过一些扩展命令了,比如用 C-x C-f 寻找文件和用 C-x C-s 保存
文件。退出 Emacs 用的 C-x C-c 也是扩展命令。(不用担心退出 Emacs 会给你
带来什么损失Emacs 会在退出之前提醒你保存文件的)
很多扩展命令都相当有用,虽然与你已经学过的命令比起来,他们可能不那么常
用。我们早已经见过一些扩展命令了,比如用 C-x C-f 寻找文件和用 C-x C-s
保存文件;退出 Emacs 用的 C-x C-c 也是扩展命令。(不用担心退出 Emacs 会
给你带来什么损失Emacs 会在退出之前提醒你存盘的)
在控制台下C-z 可以暂时离开 Emacs——当然你还可以再回来。
在允许 C-z 的系统中C-z 会把 Emacs“挂起”也就是说它会回到 shell
但不退出 Emacs。在那些最常用的 shell 中通常可以用“fg”或者“%emacs”
命令再次回到 Emacs 中。
但不退出 Emacs。在常用的 shell 中通常可以用“fg”或者“%emacs”命令再
次回到 Emacs 中。
在没有提供挂起功能的系统中C-z 会在 Emacs 之下创建一个子 shell 来让你
运行其它程序,并且再次“回到” Emacs 中——虽然我们并没有真正离开过。这
种情况下通常用shell 命令“exit”从子 shell 回到 Emacs。
运行其它程序并且再次“回到”Emacs 中——虽然我们并没有真正离开过。这
种情况下,通常用 shell 命令“exit”从子 shell 回到 Emacs。
C-x C-c 最好在你打算退出登陆的时候再用。在 Emacs 被诸如邮件处理程序之类
你最好在打算退出登陆的时候再用 C-x C-c。在 Emacs 被诸如邮件处理程序之类
的外部程序调用之后,也可以用 C-x C-c 退出。不过一般来讲,如果你不想退出
登录,最好还是把 Emacs 挂起而不是退出。
@ -563,50 +563,50 @@ C-x
C-x 1 关掉其它所有窗格,只保留一个。
C-x u 撤销。
用命令名扩展的命令一般都不太常用,或者只在部分模式下被用到。比如
replace-string(字符串替换)这个命令,它会在全文范围内把一个字符串替换
成另一个。在你输入 M-x 的时候Emacs 会在屏幕底端向你询问,然后你应该输
入命令名。如果你想输入“replace-string”其实只需要敲“repl s<TAB>”就
行了Emacs 会帮你自动补齐。输入完之后按 <Return> 。
用命令名扩展的命令通常并不常用,或只用在部分模式下。比如 replace-string
(字符串替换)这个命令,它会在全文范围内把一个字符串替换成另一个。在输
入 M-x 之后Emacs 会在屏幕底端向你询问并等待你输入命令名。如果你想输入
“replace-string”其实只需要敲“repl s<TAB>”就行了Emacs 会帮你自动
补齐。输入完之后按 <Return> 。
字符串替换命令需要两个参数——被替换的字符串和用来替换它的字符串。每个
参数的输入换行符来结束。
参数的输入都以换行符来结束。
>> 将光标移到本行下面第二行的空白处,然后输入
M-x repl s<Return>changed<Return>altered<Return>。
【以下保留一行原文,以应练习之需:
Notice how this line has changed: you've replaced...
【以下保留一行原文,以应练习之需:
Notice how this line has changed: you've replaced...
请注意这一行是怎么改变在光标之后的范围内你已经将“changed”这个
词——不管它在哪里出现——全部用“altered”替换掉了。
请注意这一行的变化在光标之后的范围内你已经将“changed”这个词——不
它在哪里出现——全部用“altered”替换掉了。
* 自动保存AUTO SAVE
-----------------------
如果你修改了一个文件但是还没来得及存盘,然后你的计算机罢工了,那么你
辑的东西很可能就找不回来了。为了避免这样的不幸一再发生Emacs 会定期将
你正在编辑的文件存入一个“自动保存”文件中。自动保存的文件名的头尾各有
一个“#”字符比如你正在编辑“hello.c”那么它的自动保存文件就叫
“#hello.c#”。在你正常存盘之后Emacs 会删除自动保存文件
如果你已经修改了一个文件但是还没来得及存盘你的计算机罢工了,那么你
所做的修改就很可能会丢失。为了避免这样的不幸发生Emacs 会定期将正在编
辑的文件写入一个“自动保存”文件中。自动保存文件的文件名的头尾各有一个
“#”字符,比如你正在编辑的文件叫“hello.c”那么它的自动保存文件就叫
“#hello.c#”。这个文件会在正常存盘之后被 Emacs 删除
假如不幸真的发生了,你大可以从容的打开原来的文件(注意不是自动保存文件)
然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提示确认的
时候,输入 yes<Return> 就行了
所以,假如不幸真的发生了,你大可以从容地打开原来的文件(注意不是自动保
存文件)然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提
示确认的时候,输入 yes<Return>。
* 回显区ECHO AREA
---------------------
如果 Emacs 发现你输入多字符命令的节奏很慢,它会在窗格的下方称为“回显区”
的地方给你提示。回显区位于屏幕的最一行。
的地方给你提示。回显区位于屏幕的最下面一行。
* 状态栏MODE LINE
---------------------
位于回显区正上方的一行被称为“状态栏”。状态栏上会显示一些信息,比如:
位于回显区正上方的一行被称为“状态栏”。状态栏上会显示一些信息,比如:
--:** TUTORIAL.cn (Fundamental)--L670--54%----------------
@ -627,58 +627,58 @@ Fundamental
Emacs 的主模式林林总总。有用来编辑程序代码的——比如 Lisp 模式;也有用
来编辑各种自然语言文本的——比如 Text 模式。任何情况下只能应用一个主模
式,其名称会显示在状态栏上,就在现在显示“Fundamental”的地方。
式,其名称会显示在状态栏上,也就是现在显示“Fundamental”的地方。
主模式有时会改变一些命令的行为。比如说,不管编辑什么样的程序代码,你都
可以用一个统一的命令来添加注释,但是在不同的语言中注释的语法往往是不
的,这时相应的主模式就会分别用各自的语法规则来添加注释。主模式都是可
用 M-x 启动的命令,所以 M-x fundamental-mode 就可以切换到 Fundamental
主模式通常会改变一些命令的行为。比方说,不管编辑什么语言的程序代码,你
都可以用一个相同的命令来添加注释。但是在不同的语言中注释的语法往往是不
同的,这时不同的主模式就会用各自不同的语法规则来添加注释。主模式都是可
用 M-x 启动的扩展命令M-x fundamental-mode 就可以切换到 Fundamental
模式。
如果你要编辑自然语言文本——比如现在——应该用 Text 模式。
编辑自然语言文本——比如现在——应该用 Text 模式。
>> 输入 M-x text mode<Return>。
害怕没有什么命令会改变功能。不过你可以发现M-f 和 M-b 现在把单引号
')视为词的一部分了。而在先前,在 Fundamental 模式中M-f 和 M-b 都将
单引号视为分隔单词的符号。
担心什么都没变。不过细心一些可以发现M-f 和 M-b 现在把单引号('
视为词的一部分了。而在先前的 Fundamental 模式中M-f 和 M-b 都将单引号
视为分隔单词的符号。
主模式通常都会搞一些类似的小动作,因为很多命令其实完成的是“相同的工
作”,只是在不同情况下会有不同的工作方式而已。【所谓“求同存异”,在
作”,只是在不同环境下会有不同的工作方式而已。【所谓“求同存异”,在
Emacs 里得到了很好的体现】
用 C-h m 可以查看当前主模式的文档。
>> 用 C-u C-v 将本行带到靠近屏幕的上方。
>> 用 C-u C-v 将本行带到屏幕的上方。
>> 输入 C-h m看看 Text 模式与 Fundamental 模式有哪些不同。
>> 输入 C-x 1 关掉文档窗格。
主模式之所以称之为“主major”模式是因为同时还有“辅模式”minor
mode存在。辅模式并不能替代主模式而是在主模式之外再做一些辅助的修改。
每个辅模式都可以独立地开启和关闭,跟其它辅模式无关,跟主模式也无关。所
以你可以不用辅模式,也可以用一个或者多个辅模式。
mode存在。辅模式并不能替代主模式而是提供一些辅助的功能。每个辅模式
都可以独立地开启和关闭,跟其它辅模式无关,跟主模式也无关。所以你可以不
使用辅模式,也可以只使用一个或同时使用多个辅模式。
有一个叫做自动折行Auto Fill的辅模式用处很大,特别是在编辑自然语言文
本的时候。这个辅模式启动Emacs 会在你打字超出一行边界时自动替你换行。
有一个叫做自动折行Auto Fill的辅模式很有用,特别是在编辑自然语言文
的时候。启用自动折行Emacs 会在你打字超出一行边界时自动替你换行。
用 M-x auto fill mode<Return> 启动自动折行模式。启动之后,如果我们再用
一次 M-x auto fill mode<Return>,自动折行模式就被关闭了。也就是说,如果
自动折行模式没有开启,这个命令会开启它;如果已经开启了,这个命令会关
闭它。我们说这个命令用来“开toggle”模式。
用 M-x auto fill mode<Return> 启动自动折行模式。再用一次这条命令,自动
折行模式会被关闭。也就是说,如果自动折行模式没有被开启,这个命令会开启
它;如果已经开启了,这个命令会关闭它。所以我们说,这个命令可以用来“开
toggle”模式。
>> 现在输入 M-x auto fill mode<Return>。然后随便敲点什么,直到你看到它
分成两行。必须敲一些空格,因为 Auto Fill 只在空白处进行断行。【空格
对英文来说是必须的,而对中文则不必。】
分成两行。必须敲一些空格,因为 Auto Fill 只在空白处进行断行。
【输入空格对英文来说是必须的,而对中文则不必。】
行边界通常被设定为 70 个字符【这里指英文字符】,你可以用 C-x f 命令来重
新设定之。指定新行边界可以用数字参数来进行传递
行边界通常被设定为 70 个字符【这里指英文字符】,你可以用 C-x f 命令配合
数字参数来重新设定它
>> 输入 C-x f 并传递参数 20 C-u 2 0 C-x f。
然后输入一些文字,观察 Emacs 的自动折行动作
最后再用 C-x f 将边界设回 70。
如果你在段落的中间做了一些修改,那么自动折行模式不会替你把整个段落重新
折行。重新自动折行用 M-q注意使用的时候光标必须位于你想折行的那一段里。
折行,你需要用 M-q 手动折行。注意,光标必须位于你需要折行的那一段里。
>> 移动光标到前一段中,然后输入 M-q。
@ -686,49 +686,47 @@ mode
* 搜索SEARCHING
-------------------
Emacs 可以向前或向后搜索字符串。搜索命令是一个移动光标的命令:搜索成
后,光标会停留在搜索目标出现的地方。
Emacs 可以向前或向后搜索字符串。搜索命令是一个移动光标的命令:搜索成
后,光标会停留在搜索目标出现的地方。
Emacs 的搜索命令的独特之处在于它是“渐进的incremental意思是搜
Emacs 的搜索命令的独特之处在于它是“渐进的incremental意思是搜
索与输入同时进行你在键盘上一字一句地输入搜索词的过程中Emacs 就已经
开始替你搜索了。
C-s 是向前搜索C-r 是向后搜索。不过手别这么快!先等等别着急试。
C-s 是向前搜索C-r 是向后搜索。不过手别这么快!别着急试。
在你按下 C-s 之后你会发现回显区里有“I-search”字样出现提示你目前
Emacs 正处于“渐进搜索”状态,正在等待你输入搜索字串。按 <Return> 会结
束搜索。
在按下 C-s 之后回显区里会有“I-search”字样出现表明目前 Emacs 正处
于“渐进搜索”状态,并等待你输入搜索字串。按 <Return> 可以结束搜索。
>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
慢慢输入“cursor”整个词,每敲一个字就暂停一下,注意观察光标。
慢慢输入“cursor”这个词,每敲一个字都停顿一下并观察光标。
现在你应该已曾经找到“cursor”这个词了。
>> 再按一次 C-s搜索下一个“cursor”出现的位置。
>> 现在按四次退格键,看看光标是如何移动的。
>> 敲 <Return> 结束搜索。
刚才看仔细了么在一个渐进式搜索中Emacs 会尝试跳到你输入的字符串的出
现位置。想跳到下一个搜索目标出现的位置,只要再按一次 C-s 就行了。如果找
不到Emacs 会发出“哔”的一声,告诉你搜索失败。在整个过程中,都可以用
C-g 来终止搜索。【你会发现 C-g 之后光标回到了搜索开始前的地方,而
<Return> 会让光标留在搜索结果上,这是很有用的功能。】
看仔细了么在一次渐进式搜索中Emacs 会尝试跳到搜索目标出现的位置。要
跳到下一个命中位置,就再按一次 C-s。如果找不到目标Emacs 会发出“哔”
的一声,告诉你搜索失败。在整个过程中,都可以用 C-g 来终止搜索。【你会发
现 C-g 会让光标回到搜索开始的位置,而 <Return> 则让光标留在搜索结果上,
这是很有用的功能。】
注意:使用某些终端的时候,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】,
这样你就看不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能把
C-s 拦截了并且冻结了屏幕Emacs 自然也就看不到这个输入了。用 C-q 可以
解除屏幕冻结。要解决这个问题,请参考 Emacs 手册里的“Spontaneous Entry
to Incremental Search”一节【Emacs 手册可能还没有中文翻译】,那里可能有
一些有用的建议。
注意:在某些终端下,输入 C-x C-s 会冻结屏幕【屏幕没有任何输出】,使你看
不到 Emacs 的任何变化。其原因是操作系统的“流量控制”功能拦截了 C-s 并
冻结了屏幕。用 C-q 可以解除屏幕冻结。要解决这个问题,请参考 Emacs 手册
里的“Spontaneous Entry to Incremental Search”一节【Emacs 手册可能还没
有中文翻译】,那里提供了一些有用的建议。
如果你正在渐进式搜索中,按退格键会删除目标字符串的最后一个字符,并且光
标会回到最近一次搜索的命中位置。比如你已经输入了“c”光标就停在“c”
第一次出现的地方再输入“u”光标停在“cu”第一次出现的地方这时再按
退格键,“u”就从搜索字串中消失了然后光标会回到“c”第一次出现的地方
在渐进式搜索中,按退格键会删除目标字符串的最后一个字符,并且光标会回到
最近一次搜索的命中位置。比如你已经输入了“c”光标就停在“c”第一次出
现的位置再输入“u”光标停在“cu”第一次出现的位置这时再按退格键
“u”就从搜索字串中消失了然后光标会回到“c”第一次出现的位置
另外如果你在搜索的时候输入了 CONTROL 或者 META 组合键的话,搜索可能会
结束。(也有例外,比如 C-s 和 M-r 这些对搜索有特别意义的组合键。)
另外如果你在搜索的时候输入了 CONTROL 或者 META 组合键的话,搜索可能会
结束。(也有例外,比如 C-s 和 M-r 这些用于搜索的命令。)
前面说的都是“向下”搜索,如果想“向上”搜索,可以用 C-r。C-r 与 C-s
相比除了搜索方向相反之外,其的操作都一样。
相比除了搜索方向相反之外,其的操作都一样。
* 多窗格MULTIPLE WINDOWS
@ -759,29 +757,29 @@ Emacs
窗口下缺省显示为镂空光标。】一般所有的编辑命令都作用于这个光标所在的窗
格,我们称这个窗格为“被选中的窗格”。
当你在一个窗格中编辑,但是想用另一个窗格作参考的时候C-M-v 是很有用的
令。你可以保持光标始终处于编辑窗格中,然后用 C-M-v 命令在另外一个窗格
里滚动。【翻译和校对就很适合用这种方式进行。】
当你在一个窗格中编辑,但用另一个窗格作参考的时候C-M-v 是很有用的
令。你可以始终处于编辑窗格中,然后用 C-M-v 命令滚动另外一个窗格。【比如
翻译和校对就很适合用这种方式进行。】
C-M-v 是一个 CONTROL-META 组合键。如果你有 META 键,可以同时按住
CONTROL 和 META 键然后输入 v。CONTROL 和 META 键哪个先按没有关系,因为
它们只是用来“修饰modify”你输入的字符的。
C-M-v 是一个 CONTROL-META 组合键。如果你有 META 键的话,可以同时按住
CONTROL 和 META 键并输入 v。CONTROL 和 META 键先按哪个都可以,因为它们
只是用来“修饰modify”你输入的字符的。
如果你并没有 META 键,你也可以用 ESC 来代替,不过这样子按键顺序就有关系
了:你必须输入 ESC ,然后再输入 CONTROL-v。CONTROL-ESC v 是没用的,因为
ESC 本身是一个字符键而不是一个修饰键modifier key
如果你并没有 META 键,你也可以用 ESC 来代替,不过这样的话就要注意按键顺
了:你必须输入 ESC ,然后再输入 CONTROL-v。CONTROL-ESC v 是没用的,
因为 ESC 本身是一个字符键而不是一个修饰键modifier key
>> (在上方窗格里)输入 C-x 1 关掉下方窗格。
(如果你在下方的窗格里输入 C-x 1那么就会关掉上方的窗格。你可以把这个
命令看成是“只保留一个窗格”——就是我正在编辑的这个。)
命令看成是“只保留一个窗格”——就是我正在编辑的这个。)
不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了
一个文件,另一个窗格并不会有什么变化。在任何一个窗格里都可以打开文件。
不同的窗格可以显示不同的缓冲区。如果你在一个窗格里用 C-x C-f 打开了一个
文件,另一个窗格并不会发生什么变化。任何一个窗格里都可以用来打开文件。
有一种方式可以让你在另一个窗格里打开文件:
用下面的方法可以在一个新开窗格里打开文件:
>> 输入 C-x 4 C-f后面紧跟着输入一个文件名,用 <Return> 结束。
>> 输入 C-x 4 C-f紧跟着输入一个文件名用 <Return> 结束。
可以看到你指定的文件出现在下方的窗格中,同时光标也跳到了那里。
>> 输入 C-x o 回到上方的窗格,然后再用 C-x 1 关掉下方窗格。
@ -801,29 +799,29 @@ ESC
>> 输入 M-x 进入小缓冲;然后输入 ESC ESC ESC 离开。
你不能用 C-g 来离开递归编辑,因为 C-g 的作用是取消命令和“参数
arguments”,而这些东西都位于本层递归编辑“之内”
你不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的
命令和其参数arguments
* 获得更多帮助GETTING MORE HELP
-----------------------------------
本快速指南的目的仅仅是帮助你学会在 Emacs 的大海里游泳,不至于一上来就淹
死。有关 Emacs 的话题三天三夜也讲不完这里自然是写不下了。Emacs 很理解
你求知若渴的心情因为它提供的强劲功能实在是太多了。Emacs 提供了一些命
令来查看 Emacs 命令文档,这些命令都以 CONTROL-h 开头,这个字符也因此
被称为“Help(帮助)字符”。
本快速指南的目的仅仅是帮助你在 Emacs 的海洋里下水,不至于束手无策望洋兴
叹。有关 Emacs 的话题可谓汗牛充栋,这里自然是难尽万一。不过 Emacs 很理
解你求知若渴的心情因为它提供的强大功能实在是太多了。为此Emacs 提供
了一些命令来查看 Emacs 命令文档,这些命令都以 CONTROL-h 开头,这个字
符也因此被称为“帮助(Help字符”。
要使用帮助Help功能请先输入 C-h然后再输入一个说明你需求的字符。
如果你晕到连需要什么帮助都不知道,那么就输入 C-h ?Emacs 会告诉你它能
提供哪些帮助。如果你已经按了 C-h 又想反悔,那么用 C-g 取消它就是了
要使用帮助Help功能请先输入 C-h然后再输入一个字符以说明你需要什
么帮助。如果你连自己到底需要什么帮助都不知道,那么就输入 C-h ?Emacs
会告诉你它能提供了哪些帮助。如果你按了 C-h 又想反悔,可以用 C-g 取消
(有些站点改变了 C-h 的意思,他们这种以己度人外加一刀切的做法让倒是让你
可以义正辞严的抱怨系统管理员,真的不是太好。话说回来,如果你按 C-h 之后
没有任何帮助信息显示出来,那么试试 F1 键或者 M-x help <Return>。)
(有些主机改变了 C-h 的意义,这种以己度人外加一刀切的做法确实不太好,不
过倒是让你可以义正辞严地抱怨他们的系统管理员。话说回来,如果你按 C-h 之
没有任何帮助信息显示出来,那么试试 F1 键或者 M-x help <Return> 。)
最基本的帮助功能是 C-h c。输入 C-h c 之后在输入一个组合键Emacs 会很简
要地给出这个命令的说明。
最基本的帮助功能是 C-h c。输入 C-h c 之后再输入一个组合键Emacs 会给出
这个命令的简要说明。
>> 输入 C-h c C-p。
@ -833,7 +831,7 @@ ESC
这条消息显示了 C-p 命令对应的函数名,函数名主要用来定制和扩展 Emacs。命
令的功能由函数完成,所以函数名本身也可以被看成是最简单的文档——至少对
于你已经学过的命令来说,它们的函数名足以解释它们所完成的工作了。
于你已经学过的命令来说,它们的函数名足以解释它们的功能了。
多字符命令一样可以用 C-h c 来查看。
@ -841,18 +839,18 @@ ESC
>> 输入 C-h k C-p。
上面的命令会新打开一个 Emacs 窗格,并在其中显示函数的名称及其文档。你读
完之后,可以用 C-x 1 关掉这个帮助窗格。当然你并不需要在 C-h k 之后立即
这样做,你完全可以先在编辑窗格里做点别的事情,然后再用 C-x 1 关掉帮助。
上面的命令会新打开一个 Emacs 窗格以显示函数的名称及其文档。你读完之后可
以用 C-x 1 关掉这个帮助窗格。当然你并不需要立即这样做,你完全可以先在编
辑窗格里做点别的事情,然后再关掉帮助窗格
还有一些其有用的 C-h 命令:
还有一些其有用的 C-h 命令:
C-h f 解释一个函数。要输入函数名。
C-h f 解释一个函数。要输入函数名。
>> 试试看,输入 C-h f previous-line<Return>。
Emacs 会给出它所知道的所有有关“实现 C-p 命令功能的函数”的信息。
C-h v 用来显示 Emacs 变量的文档Emacs 变量可以被用来“定制 Emacs 的行
C-h v 用来显示 Emacs 变量的文档Emacs 变量可以被用来“定制 Emacs 的行
为”。同样,你需要输入变量的名称。
C-h a 相关命令搜索Command Apropos
@ -882,21 +880,21 @@ Emacs
* 更多精彩MORE FEATURES
---------------------------
了解更多使用 Emacs 的知识,应该去读一读 Emacs 使用手册——可以是纸版
的书,也可以是电子版的联机帮助(可以从 Help 菜单进入或者按 F10 h r
两个你可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion
补全),一个是方便文件处理的 dired目录编辑
学习更多的使用技巧Emacs 使用手册manual值得一读。你可以读纸版的
书,也可以看电子版的联机手册(可以从 Help 菜单进入或者按 F10 h r
两个你可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion
补全),一个是方便文件处理的 dired目录编辑
Completion 可以替你节省不必要的键盘输入。比如说你想切换到 *Message* 缓
冲区,你就可以用 C-x b *M<Tab> 来完成,只要 Emacs 能够从你已经输入的文
字中判断出你想要输入的东西,它会自动帮你补齐余下的。有关 Completion 的
详细解释可以在 Emacs Info 中的“Completion”一节里找到。
冲区,你就可以用 C-x b *M<Tab> 来完成。只要 Emacs 能够根据你已经输入的
文字确定你想要输入的内容,它就会自动帮你补齐。有关 Completion 的详细说
可以在 Emacs Info 中的“Completion”一节里找到。
Dired 可以在一个缓冲区里列出一个目录里的所有文件(可以选择是否也列出子
目录),然后你可以在这个文件列表上完成对文件的移动、访问、改名或者删除
等等操作。Dired 也在 Emacs Info 中有详细说明,就在“Dired”一节。
Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子
目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除
等等操作。Dired 也在 Emacs Info 中有详细介绍,参见“Dired”一节。
Emacs 使用手册里还有很多很多的精彩功能等着你来了解。
Emacs 使用手册里还有许许多多的精彩功能等着你来了解。
* 总结CONCLUSION
@ -905,15 +903,15 @@ Emacs ʹ
记住,要退出 Emacs 请用 C-x C-c。要暂时切换到 shell 并且稍后再回到
Emacs 里来,请用 C-z。【切换到 shell 仅对控制台下的 Emacs 有效】
本文完全是为零起点新手写的傻瓜教程。如果你觉得哪里还看不明白,千万不
觉得不好意思,那一定是我们没有写好。我们永远欢迎你的不满和抱怨。
本文完全是为零起点新手所写的起步教程。如果你觉得哪里还看不明白,千万不
要怀疑自己,那一定是我们没有写好。我们永远欢迎你的不满和抱怨。
* 翻译TRANSLATION
---------------------
翻译:孙 一江 <sunyijiang@gmail.com>
校对水木社区www.newsmth.netEmacs 板众多网友
翻译:孙一江 <sunyijiang@gmail.com>
校对水木社区www.newsmth.netEmacs 板众多网友及众多 Emacs 中文用户
Emacs 快速指南Tutorial早有两个刘昭宏的中文译本繁简各一。其简体版本
TUTORIAL.cn基本由繁体版本TUTORIAL.zh经词语替换而得。然而繁简中文
@ -924,10 +922,12 @@ Emacs
表示感谢。
翻译过程中最大的挑战莫过于术语译词的选择了。经过水木社区 Emacs 板热心网
友小范围内的讨论,我们选择了现在的译法。用户的广泛参与是自由软件生命力的
源泉,所以如果你有任何建议、勘误或更好的想法,请用你喜欢的方式向我们提出
。你可以直接给我发电子邮件,也可以放到 GNU Emacs 的开发邮件列表或者水木
社区的 Emacs 板上进行讨论。下面列出主要术语的译词对照,并给出注释说明:
友小范围内的讨论,我们选择了现在的译法。用户的广泛参与是自由软件生命力
的源泉,所以如果你有任何建议、勘误或想法,请用你喜欢的方式向我们提出。
你可以通过电子邮件直接联系译者,也可以放到 GNU Emacs 的开发邮件列表或者
水木社区的 Emacs 板上进行讨论。
下面列出主要术语的译词对照,并给出注释说明:
command 命令
cursor 光标
@ -956,7 +956,7 @@ Emacs
《学习GNU Emacs》第二版一书对“window”和“frame”的翻译与本教程
刚好相反(分别译作“窗口”和“窗格”)。在此特别注明,以消除可能产生
的疑惑。
的疑惑。(感谢李旭章 <lixuzhang@gmail.com> 指出)
[2] 对于“delete”和“kill”的区别正文已经给出了详细的说明。“删除”和
“移除”相比较起来,前者更多地隐含着“破坏”和“不可恢复”的意思,而
@ -968,7 +968,7 @@ Emacs
[3] “incremental”一词在计算机著作中广泛出现被广泛接受的中文译词有两
“增量的”和“渐进的”。“incremental search”翻译成“增量式搜索
”或者“渐进式搜索”都讲通,且都有各自的形象之处。还是参考原文对其
”或者“渐进式搜索”都讲通,且都有各自的形象之处。还是参考原文对其
的解释:“... means that the search happens while you type in the
string to search for”。意思是之所以称其为“incremental search”
因为“在你输入搜索字符串的过程中,搜索就已经在进行了”。我们认为“增
@ -1012,7 +1012,7 @@ GNU Emacs to your friends. Help stamp out software obstructionism
本篇文档与 GNU Emacs 一样拥有版权,并允许在下列条件的约束下发行其拷贝:
Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, 2005
Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
本文档允许在不变更文档内容的情况下由任何人发布在任何媒体上,同时必须

View file

@ -50,11 +50,11 @@ def eargs (name, imports):
if len (parts) > 1:
exec 'import ' + parts[0] # might fail
func = eval (name)
if inspect.isbuiltin (func):
if inspect.isbuiltin (func) or type(func) is type:
doc = func.__doc__
if doc.find (' ->') != -1:
print '_emacs_out', doc.split (' ->')[0]
elif doc.find ('\n') != -1:
else:
print '_emacs_out', doc.split ('\n')[0]
return
if inspect.ismethod (func):

View file

@ -29,10 +29,10 @@ default editor.
For
.B emacsclient
to work, you need an already running Emacs with a server. Within Emacs, call
the function
`server-start'. (Your `.emacs' file can do this automatically if you
add the expression `(server-start)' to it.)
to work, you need an already running Emacs with a server. Within Emacs,
call the functions `server-start' or `server-mode'. (Your `.emacs' file
can do this automatically if you add either `(server-start)' or
`(server-mode 1)' to it.)
When you've finished editing the buffer, type `C-x #'
(`server-edit'). This saves the file and sends a message back to the
@ -57,7 +57,11 @@ do not visit files but instead evaluate the arguments as Emacs
Lisp expressions.
.TP
.B \-s, \-\-socket-name=FILENAME
Use socket named FILENAME for communication.
use socket named FILENAME for communication.
.TP
.B \-f, \-\-server-file=FILENAME
use TCP configuration file FILENAME for communication.
This can also be specified via the `EMACS_SERVER_FILE' environment variable.
.TP
.B \-a, \-\-alternate-editor=EDITOR
if the Emacs server is not running, run the specified editor instead.

View file

@ -205,7 +205,7 @@ from shell interpretation.
Tag the DEFVAR macros in the emacs source files:
.br
\fI\-\-regex\='/[ \\t]*DEFVAR_[A-Z_ \\t(]+"\\([^"]+\\)"\/'\fP
\fI\-\-regex\='/[ \\t]*DEFVAR_[A-Z_ \\t(]+"\\([^"]+\\)"/'\fP
.\"" This comment is to avoid confusion to Emacs syntax highlighting
.br

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{4.44}
\def\orgversionnumber{4.56}
\def\year{2006}
%
%**start of header
@ -284,6 +284,7 @@ \section{Visibility Cycling}
\key{rotate current subtree between states}{TAB}
\key{rotate entire buffer between states}{S-TAB}
\key{show the whole file}{C-c C-a}
\key{reveal context around point}{C-c C-r}
%\key{show branches}{C-c C-k}
\section{Motion}
@ -298,8 +299,6 @@ \section{Structure Editing}
\key{insert new heading/item at current level}{M-RET}
\key{insert new TODO entry/checkbox item}{M-S-RET}
\key{toggle checkbox(es) in region/entry/at point}{C-c C-x C-b}
\key{toggle checkbox at point}{C-c C-c}
\key{promote current heading up one level}{M-LEFT}
\key{demote current heading down one level}{M-RIGHT}
@ -315,8 +314,9 @@ \section{Structure Editing}
\section{Archiving}
\key{toggle ARCHIVE tag}{C-c C-x C-a}
\metax{mark fully dine children}{C-u C-c C-x C-a}
\key{move subtree to achive file}{C-c \$}
\metax{mark fully done children}{C-u C-c C-x C-a}
\key{force cycling of an ARCHIVEd tree}{C-TAB}
\key{move subtree to archive file}{C-c \$}
\key{move all fully done children}{C-u C-c \$}
To set archive location for current file, add a line like$^2$:
\vskip -1mm
@ -330,7 +330,7 @@ \section{Filtering and Sparse Trees}
\key{view TODO's in sparse tree}{C-c C-v}
\key{global TODO list in agenda mode}{C-c t$^1$}
\key{create sparse tree with all deadlines due}{C-c C-w}
\key{time sorted view of current org file}{C-c C-r}
\key{time sorted view of current org file}{C-c a L}
%\key{agenda for the week}{C-c a$^1$}
%\key{agenda for date at cursor}{C-c C-o}
@ -425,10 +425,11 @@ \section{Links}
\key{insert file link with file name completion}{C-u C-c C-l}
\key{edit (also hidden part of) link at point}{C-c C-l}
\key{open file links in emacs (\kbd{C-u} : in emacs)}{C-c C-o}
\key{open link at point (3: in emacs)}{mouse-2/3}
%\key{open file links in emacs}{mouse-3}
%\key{record a position in mark ring}{C-c \%}
\key{open file links in emacs}{C-c C-o}
\key{...force open in emacs/other window}{C-u C-c C-o}
\key{open link at point}{mouse-1/2}
\key{...force open in emacs/other window}{mouse-3}
\key{record a position in mark ring}{C-c \%}
\key{jump back to last followed link(s)}{C-c \&}
{\bf Internal Links}
@ -444,10 +445,10 @@ \section{Links}
\key{\kbd{file:/home/dominik/img/mars.jpg}}{\rm file, absolute}
\key{\kbd{file:papers/last.pdf}}{\rm file, relative}
\key{\kbd{file:projects.org::*that text}}{\rm find headline}
\key{\kbd{file:projects.org::find me}}{\rm find tgt/string}
\key{\kbd{file:projects.org::find me}}{\rm find trgt/string}
%\key{\kbd{file:projects.org::/regexp/}}{\rm regexp search}
\key{\kbd{http://www.astro.uva.nl/~dominik}}{\rm on the web}
\key{\kbd{mailto:adent@galaxy.net}}{\rm EMail address}
\key{\kbd{mailto:adent@galaxy.net}}{\rm Email address}
\key{\kbd{news:comp.emacs}}{\rm Usenet group}
\key{\kbd{bbdb:Richard Stallman}}{\rm BBDB person}
\key{\kbd{gnus:group}}{\rm GNUS group}
@ -494,7 +495,7 @@ \section{Completion}
\centerline{(for version \orgversionnumber)}
\section{TODO Items}
\section{TODO Items and Checkboxes}
\key{rotate the state of the current item}{C-c C-t}
\key{view TODO items in a sparse tree}{C-c C-v}
@ -508,6 +509,12 @@ \section{TODO Items}
\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
\key{insert new checkbox item in plain list}{M-S-RET}
\key{toggle checkbox(es) in region/entry/at point}{C-c C-x C-b}
\key{toggle checkbox at point}{C-c C-c}
\metax{checkbox statistics cookies: insert {\tt [/]} or {\tt [\%]}}{}
\key{update checkbox statistics (\kbd{C-u} : whole file)}{C-c \#}
\section{Tags}
\key{set tags for current heading}{C-c C-c}
@ -535,6 +542,7 @@ \section{Timestamps}
%\key{... forward/backward one day}{S-LEFT/RIGHT}
%\key{... forward/backward one week}{S-UP/DOWN}
%\key{... forward/backward one month}{M-S-LEFT/RIGT}
\key{Toggle custom format display for dates/times}{C-c C-x C-t}
\section{Clocking Time}
@ -547,11 +555,6 @@ \section{Clocking Time}
\key{remove displayed times}{C-c C-c}
\key{insert/update table with clock report}{C-c C-x C-r}
\section{Dynamic Blocks}
\key{update dynamic block at point}{C-c C-x C-u}
\metax{update all dynamic blocks}{C-u C-c C-x C-u}
\section{LaTeX and cdlatex-mode}
\key{preview LaTeX fragment}{C-c C-x C-l}
@ -568,8 +571,10 @@ \section{Agenda Views}
\key{compile global TODO list}{C-c a t$^1$}
\key{compile TODO list for specific keyword}{C-c a T$^1$}
\key{match tags in agenda files}{C-c a m$^1$}
\key{match tags in TODO entries}{C-c a M$^1$}
\key{show timeline of current org file}{C-c a L$^1$}
\key{configure custom commands}{C-c a C$^1$}
\key{agenda for date at cursor}{C-c C-o}
\key{show timeline of current org file}{C-c C-r}
\vskip 1mm
To set categories, add lines like$^2$:
@ -582,11 +587,11 @@ \section{Agenda Views}
{\bf View Org file}
\key{show original location of item}{SPC}
\key{... also available with}{mouse-3}
\key{show original location of item}{SPC/mouse-3}
%\key{... also available with}{mouse-3}
\key{show and recenter window}{L}
\key{goto original location in other window}{TAB}
\key{... also available with}{mouse-2}
\key{goto original location in other window}{TAB/mouse-2}
%\key{... also available with}{mouse-2}
\key{goto original location, delete other windows}{RET}
\key{toggle follow-mode}{f}
@ -607,6 +612,7 @@ \section{Agenda Views}
\key{digit argument}{0-9}
\key{change state of current TODO item}{t}
\key{kill item and source}{C-k}
\key{show tags of current headline}{T}
\key{set tags for current headline}{:}
\key{toggle ARCHIVE tag}{a}
@ -718,6 +724,11 @@ \section{Exporting and Publishing}
%S-RET $\to$ C-S-RET
%\endexample
\section{Dynamic Blocks}
\key{update dynamic block at point}{C-c C-x C-u}
\metax{update all dynamic blocks}{C-u C-c C-x C-u}
\section{Notes}
$^1$ This is only a suggestion for a binding of this command. Choose
you own key as shown under INSTALLATION.

View file

@ -1,3 +1,12 @@
2006-11-29 Juanma Barranquero <lekktu@gmail.com>
* quail/greek.el ("greek-mizuochi"): Remove spurious initial newline
in docstring.
2006-11-04 Romain Francoise <romain@orebokech.com>
* Makefile.in (bootstrap-clean): New target.
2006-10-12 Kenichi Handa <handa@m17n.org>
* Makefile.in (install): Be sure to make ${INSTALLDIR} before `cd'
@ -94,19 +103,16 @@
2005-06-04 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (distclean): Fix a typo (colon was after
"clean").
* makefile.w32-in (distclean): Fix a typo (colon was after "clean").
(extraclean): New target, emulates Makefile.in.
2005-04-06 Kenichi Handa <handa@m17n.org>
* quail/sgml-input.el ("sgml"): Enable quail-completion by typing
TAB.
* quail/sgml-input.el ("sgml"): Enable quail-completion by typing TAB.
2005-03-26 Kenichi Handa <handa@m17n.org>
* quail/latin-ltx.el ("TeX"): Enable quail-completion by typing
TAB.
* quail/latin-ltx.el ("TeX"): Enable quail-completion by typing TAB.
2005-03-18 Kenichi Handa <handa@m17n.org>
@ -166,7 +172,7 @@
2004-07-01 David Kastrup <dak@gnu.org>
* quail/greek.el ("((") ("))"): add quotation mark shorthands.
* quail/greek.el ("((") ("))"): Add quotation mark shorthands.
2004-06-30 Andreas Schwab <schwab@suse.de>
@ -217,7 +223,7 @@
2004-05-01 Kenichi Handa <handa@m17n.org>
* Makefile.in (OTHERS): Raname from MISC.
* Makefile.in (OTHERS): Rename from MISC.
(MISC): Rename from MISC-DIC.
(WORLD): Adjute for the above changes.
(TIT-MISC, NON-TIT-MISC): New targets.
@ -1626,6 +1632,7 @@
;; Local Variables:
;; coding: iso-2022-7bit
;; add-log-time-zone-rule: t
;; End:
Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.

View file

@ -255,6 +255,12 @@ clean mostlyclean:
rm -f ${TIT-MISC} ${TIT-MISC:.elc=.el} \
leim-list.el changed.tit changed.misc
# The following target is needed because the `clean' target only removes
# TIT-generated files and doesn't touch compiled Quail packages. But
# bootstrapping should not leave non-fresh .elc files behind.
bootstrap-clean: clean
rm -f ${WORLD}
distclean: clean
if test -f stamp-subdir; then rm -rf ${SUBDIRS} stamp-subdir; fi
rm -f Makefile

View file

@ -137,8 +137,8 @@ Sorry, accents and terminal sigma are not supported in JIS."
;;
(quail-define-package "greek-mizuochi" "Greek" "CG" t "
The Mizuochi input method for Classical Greek using mule-unicode-0100-24ff.
(quail-define-package "greek-mizuochi" "Greek" "CG" t
"The Mizuochi input method for Classical Greek using mule-unicode-0100-24ff.
-------------------------------------
character capital small

File diff suppressed because it is too large Load diff

View file

@ -94,6 +94,7 @@ gameuser=@gameuser@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
# By default, we uphold the dignity of our programs.
INSTALL_STRIP =
@ -319,7 +320,7 @@ $(DESTDIR)${archlibdir}: all
if [ `(cd $(DESTDIR)${archlibdir} && /bin/pwd)` \
!= `(cd ${srcdir} && /bin/pwd)` ]; then \
for file in ${SCRIPTS}; do \
$(INSTALL_PROGRAM) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \
$(INSTALL_SCRIPT) ${srcdir}/$$file $(DESTDIR)${archlibdir}/$$file; \
done ; \
fi
@ -331,7 +332,7 @@ install: $(DESTDIR)${archlibdir}
chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
done
for file in ${INSTALLABLE_SCRIPTS} ; do \
$(INSTALL_PROGRAM) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \
$(INSTALL_SCRIPT) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \
chmod a+rx $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'`; \
done

File diff suppressed because it is too large Load diff

View file

@ -41,7 +41,7 @@
* configuration file containing regexp definitions for etags.
*/
char pot_etags_version[] = "@(#) pot revision number is 17.20";
char pot_etags_version[] = "@(#) pot revision number is $Revision: 3.61 $";
#define TRUE 1
#define FALSE 0
@ -4955,7 +4955,7 @@ Lua_functions (inf)
if (bp[0] != 'f' && bp[0] != 'l')
continue;
LOOKING_AT (bp, "local"); /* skip possible "local" */
(void)LOOKING_AT (bp, "local"); /* skip possible "local" */
if (LOOKING_AT (bp, "function"))
get_tag (bp, NULL);
@ -5137,7 +5137,7 @@ TeX_commands (inf)
if (!opgrp || *p == TEX_clgrp)
{
while (*p != '\0' && *p != TEX_opgrp && *p != TEX_clgrp)
*p++;
p++;
linelen = p - lb.buffer + 1;
}
make_tag (cp, namelen, TRUE,
@ -6256,15 +6256,14 @@ readline (lbp, stream)
/* Check whether this is a #line directive. */
if (result > 12 && strneq (lbp->buffer, "#line ", 6))
{
int start, lno;
unsigned int lno;
int start = 0;
if (DEBUG) start = 0; /* shut up the compiler */
if (sscanf (lbp->buffer, "#line %d %n\"", &lno, &start) >= 1
&& lbp->buffer[start] == '"')
if (sscanf (lbp->buffer, "#line %u \"%n", &lno, &start) >= 1
&& start > 0) /* double quote character found */
{
char *endp = lbp->buffer + ++start;
char *endp = lbp->buffer + start;
assert (start > 0);
while ((endp = etags_strchr (endp, '"')) != NULL
&& endp[-1] == '\\')
endp++;

View file

@ -36,22 +36,33 @@ use vars qw($author $regexp $exclude $from_date $to_date
@entries);
use Getopt::Long;
my $result = GetOptions ("author=s" => \$author,
"text=s" => \$regexp,
"exclude=s" => \$exclude,
"from-date=s" => \$from_date,
"to-date=s" => \$to_date,
"rcs-log" => \$rcs_log,
"with-date" => \$with_date,
"reverse!" => \$reverse,
"version" => \$version,
"help" => \$help);
# If date options are specified, check that they have the format
# YYYY-MM-DD.
my $result;
$result = 0 if $from_date && $from_date !~ /^\d\d\d\d-\d\d-\d\d$/;
$result = 0 if $to_date && $to_date !~ /^\d\d\d\d-\d\d-\d\d$/;
if (@ARGV == 0) {
# No arguments cannot posibly mean "show everything"!!
$result = 0;
} else {
$result = GetOptions ("author=s" => \$author,
"text=s" => \$regexp,
"exclude=s" => \$exclude,
"from-date=s" => \$from_date,
"to-date=s" => \$to_date,
"rcs-log" => \$rcs_log,
"with-date" => \$with_date,
"reverse!" => \$reverse,
"version" => \$version,
"help" => \$help);
# If date options are specified, check that they have the format
# YYYY-MM-DD.
$result = 0 if $from_date && $from_date !~ /^\d\d\d\d-\d\d-\d\d$/;
$result = 0 if $to_date && $to_date !~ /^\d\d\d\d-\d\d-\d\d$/;
}
# Print usage information and exit when necessary.
@ -77,7 +88,7 @@ Valid options are:
--help Print this help
If no CHANGELOG is specified scan the files "ChangeLog" and
"ChangeLog.1+" in the current directory. Old-style dates in ChangeLogs
"ChangeLog.N+" in the current directory. Old-style dates in ChangeLogs
are not recognized.
USAGE
exit !$help;
@ -86,7 +97,7 @@ USAGE
# Print version info and exit if `--version' was specified.
if ($version) {
print "0.2\n";
print "0.3\n";
exit 0;
}
@ -233,7 +244,7 @@ sub parse_changelog {
# If files were specified on the command line, parse those files in the
# order supplied by the user; otherwise parse default files ChangeLog and
# ChangeLog.1+ according to $reverse.
# ChangeLog.NNN according to $reverse.
unless (@ARGV > 0) {
@ARGV = ("ChangeLog");

View file

@ -20,22 +20,17 @@
# Boston, MA 02110-1301, USA.
#
ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc
ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacsclient
.PHONY: $(ALL)
VERSION = 22.0.91
LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
-DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
-I../src
-I../src
# don't know what (if) to do with these yet...
#
# $(BLD)/server.exe \
# $(BLD)/emacstool.exe \
# $(BLD)/emacsclient.exe \
# $(BLD)/cvtmail.exe \
LIBS = $(BASE_LIBS) $(ADVAPI32)
LIBS = $(BASE_LIBS) $(ADVAPI32)
$(BLD)/make-docfile.exe: $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O)
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/make-docfile.$(O) $(BLD)/ntlib.$(O) $(LIBS)
@ -59,6 +54,7 @@ movemail: $(BLD) $(BLD)/movemail.exe
fakemail: $(BLD) $(BLD)/fakemail.exe
sorted-doc: $(BLD) $(BLD)/sorted-doc.exe
digest-doc: $(BLD) $(BLD)/digest-doc.exe
emacsclient: $(BLD) $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe
test-distrib: $(BLD) $(BLD)/test-distrib.exe
"$(BLD)/test-distrib.exe" "$(SRC)/testfile"
@ -74,6 +70,29 @@ $(BLD)/movemail.exe: $(MOVEMAILOBJS) getopt.h
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(MOVEMAILOBJS) $(WSOCK32) $(LIBS)
ECLIENT_CFLAGS = -DHAVE_GETCWD -DHAVE_STRERROR -DVERSION="\"$(VERSION)\""
ECLIENTOBJS = $(BLD)/emacsclient.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
$(BLD)/ntlib.$(O)
TRES = ../nt/$(BLD)/emacs.res
$(TRES): ../nt/emacs.rc
$(RC) $(RC_OUT)../nt/$(BLD)/emacs.res $(ALL_DEPS)
$(BLD)/emacsclient.exe: $(ECLIENTOBJS)
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(LIBS)
$(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(TRES)
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(TRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(LIBS)
# emacsclient.$(O) depends on makefile.w32-in because makefile.w32-in
# can be edited to define VERSION string, which is part of ECLIENT_CFLAGS.
$(BLD)/emacsclient.$(O): emacsclient.c makefile.w32-in
$(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c
ETAGSOBJ = $(BLD)/etags.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
@ -85,9 +104,9 @@ $(BLD)/etags.exe: $(ETAGSOBJ)
EBROWSEOBJ = $(BLD)/ebrowse.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
$(BLD)/ntlib.$(O)
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
$(BLD)/ntlib.$(O)
$(BLD)/ebrowse.exe: $(EBROWSEOBJ)
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(EBROWSEOBJ) $(LIBS)
@ -117,14 +136,6 @@ CTAGS_CFLAGS = -DCTAGS $(ETAGS_CFLAGS)
$(BLD)/ctags.$(O): ctags.c
$(CC) $(CFLAGS) $(CTAGS_CFLAGS) $(CC_OUT)$@ ctags.c
#
# don't know what to do with these yet...
#
# $(BLD)/emacstool.exe: $(BLD)/emacstool.$(O)
# $(BLD)/server.exe: $(BLD)/server.$(O)
# $(BLD)/cvtmail.exe: $(BLD)/cvtmail.$(O)
# $(BLD)/emacsclient.exe: $(BLD)/emacsclient.$(O)
#
# From ..\src\Makefile.in
# It doesn't matter if the real name is *.obj for the files in this list,
@ -263,6 +274,15 @@ lisp2 = \
$(lispsource)window.elc \
$(lispsource)version.el
# This is needed the first time we build the tree, since temacs.exe
# does not exist yet, and the DOC rule needs it to rebuild DOC whenever
# Emacs is rebuilt.
../src/$(BLD)/temacs.exe:
- mkdir "../src/$(OBJDIR)"
- mkdir "../src/$(BLD)"
@echo temacs > temacs.exe
$(CP) temacs.exe ../src/$(BLD)
- $(DEL) temacs.exe
DOC = DOC
$(DOC): $(BLD) $(BLD)/make-docfile.exe ../src/$(BLD)/temacs.exe $(lisp1) $(lisp2)
@ -296,6 +316,8 @@ install: $(INSTALL_FILES)
$(CP) $(BLD)/movemail.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/sorted-doc.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/digest-doc.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/emacsclient.exe $(INSTALL_DIR)/bin
$(CP) $(BLD)/emacsclientw.exe $(INSTALL_DIR)/bin
- mkdir "$(INSTALL_DIR)/etc"
$(CP) $(DOC) $(INSTALL_DIR)/etc
@ -351,9 +373,6 @@ $(BLD)/ctags.$(O) : \
$(SRC)/ntlib.h \
$(SRC)/getopt.h
$(BLD)/cvtmail.$(O) : \
$(SRC)/cvtmail.c
$(BLD)/digest-doc.$(O) : \
$(SRC)/digest-doc.c
@ -363,10 +382,6 @@ $(BLD)/emacsclient.$(O) : \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/lib-src/../src/config.h
$(BLD)/emacstool.$(O) : \
$(SRC)/emacstool.c \
$(EMACS_ROOT)/nt/inc/sys/file.h
$(BLD)/etags.$(O) : \
$(SRC)/etags.c \
$(EMACS_ROOT)/nt/inc/sys/param.h \
@ -428,7 +443,7 @@ $(BLD)/movemail.$(O) : \
$(EMACS_ROOT)/lib-src/../src/syswait.h \
$(EMACS_ROOT)/nt/inc/pwd.h \
$(SRC)/ntlib.h
$(CC) $(CFLAGS) -DUSG $(CC_OUT)$@ movemail.c
$(CC) $(CFLAGS) -DUSG $(CC_OUT)$@ movemail.c
$(BLD)/ntlib.$(O) : \
$(SRC)/ntlib.c \

File diff suppressed because it is too large Load diff

View file

@ -11829,7 +11829,7 @@
* dbx.el (run-dbx): Set dbx-process.
(dbx-stop-at): Use that to decide where to send the string.
1989-02-13 Marc Shapiro (shapiro@sor.inria.fr)
1989-02-13 Marc Shapiro (marc.shapiro@acm.org)
* bibtex.el (bibtex-clean-entry, bibtex-empty-field, bibtex-find-text,
bibtex-kill-optional-field, bibtex-next-field, bibtex-pop-next,

View file

@ -74,6 +74,8 @@ setwins=subdirs=`(cd $$wd; find . -type d -print)`; \
esac; \
done
# Find all subdirectories except `obsolete'.
setwins_almost=subdirs=`(cd $$wd; find . -type d -print)`; \
for file in $$subdirs; do \
case $$file in */Old | */RCS | */CVS | */CVS/* | */.* | */.*/* | */=* | */obsolete | */term ) ;; \
@ -106,7 +108,7 @@ $(lisp)/loaddefs.el:
echo ";; End:" >> $@
echo ";;; loaddefs.el ends here" >> $@
autoloads: $(lisp)/loaddefs.el doit
wd=$(lisp); $(setwins); \
wd=$(lisp); $(setwins_almost); \
echo Directories: $$wins; \
$(EMACS) $(EMACSOPT) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins

View file

@ -293,6 +293,8 @@ Note: The search is conducted only within 10%, at the beginning of the file."
It takes the same format as the TZ argument of `set-time-zone-rule'.
If nil, use local time.
If t, use universal time.")
(put 'add-log-time-zone-rule 'safe-local-variable
'(lambda (x) (or (booleanp x) (stringp x))))
(defun add-log-iso8601-time-zone (&optional time)
(let* ((utc-offset (or (car (current-time-zone time)) 0))

View file

@ -66,7 +66,7 @@
;;
;; The outline menubar additions provide quick reference to many of
;; the features, and see the docstring of the variable `allout-init'
;; for instructions on priming your emacs session for automatic
;; for instructions on priming your Emacs session for automatic
;; activation of allout-mode.
;;
;; See the docstring of the variables `allout-layout' and
@ -891,12 +891,12 @@ This is properly set by `set-allout-regexp'.")
(make-variable-buffer-local 'allout-plain-bullets-string-len)
;;;_ = allout-doublecheck-at-and-shallower
(defconst allout-doublecheck-at-and-shallower 3
"Verify apparent topics of this depth and shallower as being non-aberrant.
(defconst allout-doublecheck-at-and-shallower 2
"Validate apparent topics of this depth and shallower as being non-aberrant.
Verified with `allout-aberrant-container-p'. This check's usefulness is
limited to shallow prospects, because the determination of aberrance
depends on the mistaken item being followed by a legitimate item of
limited to shallow depths, because the determination of aberrance
is according to the mistaken item being followed by a legitimate item of
excessively greater depth.")
;;;_ X allout-reset-header-lead (header-lead)
(defun allout-reset-header-lead (header-lead)
@ -1380,7 +1380,7 @@ are random binary characters to avoid exposing greater susceptibility to
search attacks.
The verifier string is retained as an Emacs file variable, as well as in
the emacs buffer state, if file variable adjustments are enabled. See
the Emacs buffer state, if file variable adjustments are enabled. See
`allout-enable-file-variable-adjustment' for details about that.")
(make-variable-buffer-local 'allout-passphrase-verifier-string)
;;;###autoload
@ -1392,7 +1392,7 @@ the emacs buffer state, if file variable adjustments are enabled. See
See the description of `allout-passphrase-hint-handling' for details about how
the reminder is deployed.
The hint is retained as an Emacs file variable, as well as in the emacs buffer
The hint is retained as an Emacs file variable, as well as in the Emacs buffer
state, if file variable adjustments are enabled. See
`allout-enable-file-variable-adjustment' for details about that.")
(make-variable-buffer-local 'allout-passphrase-hint-string)
@ -1506,6 +1506,18 @@ and the place for the cursor after the decryption is done."
(goto-char (cadr allout-after-save-decrypt))
(setq allout-after-save-decrypt nil))
)
;;;_ = allout-inhibit-aberrance-doublecheck nil
;; In some exceptional moments, disparate topic depths need to be allowed
;; momentarily, eg when one topic is being yanked into another and they're
;; about to be reconciled. let-binding allout-inhibit-aberrance-doublecheck
;; prevents the aberrance doublecheck to allow, eg, the reconciliation
;; processing to happen in the presence of such discrepancies. It should
;; almost never be needed, however.
(defvar allout-inhibit-aberrance-doublecheck nil
"Internal state, for momentarily inhibits aberrance doublecheck.
This should only be momentarily let-bound non-nil, not set
non-nil in a lasting way.")
;;;_ #2 Mode activation
;;;_ = allout-explicitly-deactivated
@ -2194,27 +2206,16 @@ to return the current depth of the most recently matched topic."
;;;_ - Position Assessment
;;;_ : Location Predicates
;;;_ > allout-on-current-heading-p ()
(defun allout-on-current-heading-p ()
"Return non-nil if point is on current visible topics' header line.
Actually, returns prefix beginning point."
(save-excursion
(allout-beginning-of-current-line)
(and (looking-at allout-regexp)
(allout-prefix-data)
(or (> allout-recent-depth allout-doublecheck-at-and-shallower)
(not (allout-aberrant-container-p))))))
;;;_ > allout-on-heading-p ()
(defalias 'allout-on-heading-p 'allout-on-current-heading-p)
;;;_ > allout-e-o-prefix-p ()
(defun allout-e-o-prefix-p ()
"True if point is located where current topic prefix ends, heading begins."
(and (save-excursion (let ((inhibit-field-text-motion t))
(beginning-of-line))
(looking-at allout-regexp))
(= (point)(save-excursion (allout-end-of-prefix)(point)))))
;;;_ > allout-aberrant-container-p ()
;;;_ > allout-do-doublecheck ()
(defsubst allout-do-doublecheck ()
"True if current item conditions qualify for checking on topic aberrance."
(and
;; presume integrity of outline and yanked content during yank - necessary,
;; to allow for level disparity of yank location and yanked text:
(not allout-inhibit-aberrance-doublecheck)
;; allout-doublecheck-at-and-shallower is ceiling for doublecheck:
(<= allout-recent-depth allout-doublecheck-at-and-shallower)))
;;;_ > allout-aberrant-container-p ()
(defun allout-aberrant-container-p ()
"True if topic, or next sibling with children, contains them discontinuously.
@ -2247,7 +2248,7 @@ exceeds the topic by more than one."
(goto-char allout-recent-prefix-beginning)
(cond
;; sibling - continue:
((eq allout-recent-depth depth))
((eq allout-recent-depth depth))
;; first offspring is excessive - aberrant:
((> allout-recent-depth (1+ depth))
(setq done t aberrant t))
@ -2259,6 +2260,26 @@ exceeds the topic by more than one."
;; recalibrate allout-recent-*
(allout-depth)
nil)))
;;;_ > allout-on-current-heading-p ()
(defun allout-on-current-heading-p ()
"Return non-nil if point is on current visible topics' header line.
Actually, returns prefix beginning point."
(save-excursion
(allout-beginning-of-current-line)
(and (looking-at allout-regexp)
(allout-prefix-data)
(or (not (allout-do-doublecheck))
(not (allout-aberrant-container-p))))))
;;;_ > allout-on-heading-p ()
(defalias 'allout-on-heading-p 'allout-on-current-heading-p)
;;;_ > allout-e-o-prefix-p ()
(defun allout-e-o-prefix-p ()
"True if point is located where current topic prefix ends, heading begins."
(and (save-excursion (let ((inhibit-field-text-motion t))
(beginning-of-line))
(looking-at allout-regexp))
(= (point)(save-excursion (allout-end-of-prefix)(point)))))
;;;_ : Location attributes
;;;_ > allout-depth ()
(defun allout-depth ()
@ -2390,8 +2411,7 @@ Outermost is first."
(allout-depth)
(let ((beginning-of-body
(save-excursion
(while (and (<= allout-recent-depth
allout-doublecheck-at-and-shallower)
(while (and (allout-do-doublecheck)
(allout-aberrant-container-p)
(allout-previous-visible-heading 1)))
(allout-beginning-of-current-entry)
@ -2443,7 +2463,7 @@ We skip anomolous low-level topics, a la `allout-aberrant-container-p'."
(when (re-search-forward allout-line-boundary-regexp nil 0)
(allout-prefix-data)
(and (<= allout-recent-depth allout-doublecheck-at-and-shallower)
(and (allout-do-doublecheck)
;; this will set allout-recent-* on the first non-aberrant topic,
;; whether it's the current one or one that disqualifies it:
(allout-aberrant-container-p))
@ -2464,13 +2484,13 @@ We skip anomolous low-level topics, a la `allout-aberrant-container-p'."
(if (bobp)
nil
;; allout-goto-prefix-doublechecked calls us, so we can't use it here.
(let ((start-point (point)))
;; allout-goto-prefix-doublechecked calls us, so we can't use it here.
(allout-goto-prefix)
(when (or (re-search-backward allout-line-boundary-regexp nil 0)
(looking-at allout-bob-regexp))
(goto-char (allout-prefix-data))
(if (and (<= allout-recent-depth allout-doublecheck-at-and-shallower)
(if (and (allout-do-doublecheck)
(allout-aberrant-container-p))
(or (allout-previous-heading)
(and (goto-char start-point)
@ -2705,11 +2725,11 @@ Like `allout-goto-prefix', but shallow topics \(according to
`allout-doublecheck-at-and-shallower') are checked and
disqualified for child containment discontinuity, according to
`allout-aberrant-container-p'."
(allout-goto-prefix)
(if (and (<= allout-recent-depth allout-doublecheck-at-and-shallower)
(allout-aberrant-container-p))
(allout-previous-heading)
(point)))
(if (allout-goto-prefix)
(if (and (allout-do-doublecheck)
(allout-aberrant-container-p))
(allout-previous-heading)
(point))))
;;;_ > allout-end-of-prefix ()
(defun allout-end-of-prefix (&optional ignore-decorations)
@ -2745,13 +2765,13 @@ of (before any) topics, in which case we return nil."
(allout-beginning-of-current-line)
(let ((bol-point (point)))
(allout-goto-prefix-doublechecked)
(if (<= (point) bol-point)
(if (interactive-p)
(allout-end-of-prefix)
(point))
(goto-char (point-min))
nil)))
(if (allout-goto-prefix-doublechecked)
(if (<= (point) bol-point)
(if (interactive-p)
(allout-end-of-prefix)
(point))
(goto-char (point-min))
nil))))
;;;_ > allout-back-to-heading ()
(defalias 'allout-back-to-heading 'allout-back-to-current-heading)
;;;_ > allout-pre-next-prefix ()
@ -2871,7 +2891,15 @@ collapsed."
"Ascend one level, returning t if successful, nil if not."
(prog1
(if (allout-beginning-of-level)
(allout-previous-heading))
(let ((bolevel (point))
(bolevel-depth allout-recent-depth))
(allout-previous-heading)
(if (< allout-recent-depth bolevel-depth)
allout-recent-depth
;; some topic after file's first is at lower depth than first:
(goto-char bolevel)
(allout-depth)
nil)))
(if (interactive-p) (allout-end-of-prefix))))
;;;_ > allout-descend-to-depth (depth)
(defun allout-descend-to-depth (depth)
@ -2918,6 +2946,7 @@ Return the start point of the new topic if successful, nil otherwise."
nil
(let ((target-depth (or depth (allout-depth)))
(start-point (point))
(start-prefix-beginning allout-recent-prefix-beginning)
(count 0)
leaping
last-depth)
@ -2941,7 +2970,9 @@ Return the start point of the new topic if successful, nil otherwise."
nil)))
((and (not (eobp))
(and (> (or last-depth (allout-depth)) 0)
(= allout-recent-depth target-depth)))
(= allout-recent-depth target-depth))
(not (= start-prefix-beginning
allout-recent-prefix-beginning)))
allout-recent-prefix-beginning)
(t
(goto-char start-point)
@ -3067,8 +3098,7 @@ Move to buffer limit in indicated direction if headings are exhausted."
;; not a header line, keep looking:
t
(allout-prefix-data)
(if (and (<= allout-recent-depth
allout-doublecheck-at-and-shallower)
(if (and (allout-do-doublecheck)
(allout-aberrant-container-p))
;; skip this aberrant prospective header line:
t
@ -3480,8 +3510,6 @@ case.)
If OFFER-RECENT-BULLET is true, offer to use the bullet of the prior sibling.
Runs
Nuances:
- Creation of new topics is with respect to the visible topic
@ -3828,6 +3856,7 @@ this function."
(mb allout-recent-prefix-beginning)
(me allout-recent-prefix-end)
(current-bullet (buffer-substring-no-properties (- me 1) me))
(has-annotation (get-text-property mb 'allout-was-hidden))
(new-prefix (allout-make-topic-prefix current-bullet
nil
new-depth
@ -3854,6 +3883,11 @@ this function."
(allout-unprotected
(delete-region (match-beginning 0)(match-end 0))))
;; convey 'allout-was-hidden annotation, if original had it:
(if has-annotation
(put-text-property 0 (length new-prefix) 'allout-was-hidden t
new-prefix))
; Put in new prefix:
(allout-unprotected (insert new-prefix))
@ -4117,7 +4151,10 @@ the file can be adjusted to any positive depth, however."
(> (1+ current-depth)
(1+ predecessor-depth)))
(error (concat "Disallowed shift deeper than"
" containing topic's children."))))))
" containing topic's children."))
(allout-back-to-current-heading)
(if (< allout-recent-depth (1+ current-depth))
(allout-show-children))))))
(let ((where (point)))
(allout-rebullet-topic 1 (and (> arg 1) 'sans-offspring))
(run-hook-with-args 'allout-structure-shifted-hook arg where))))
@ -4183,10 +4220,11 @@ subtopics into siblings of the item."
(depth (allout-depth)))
(allout-annotate-hidden beg end)
(if (and (not beg-hidden) (not end-hidden))
(allout-unprotected (kill-line arg))
(kill-line arg))
(allout-deannotate-hidden beg end)
(if allout-numbered-bullet
(save-excursion ; Renumber subsequent topics if needed:
(if (not (looking-at allout-regexp))
@ -4218,6 +4256,7 @@ allout-yank-processing for exposure recovery."
(interactive)
(let* ((inhibit-field-text-motion t)
(beg (prog1 (allout-back-to-current-heading) (beginning-of-line)))
end
(depth allout-recent-depth))
(allout-end-of-current-subtree)
(if (and (/= (current-column) 0) (not (eobp)))
@ -4231,9 +4270,13 @@ allout-yank-processing for exposure recovery."
(string= (buffer-substring (- beg 2) beg) "\n\n"))))
(forward-char 1)))
(allout-annotate-hidden beg (point))
(allout-annotate-hidden beg (setq end (point)))
(unwind-protect
(allout-unprotected (kill-region beg end))
(if buffer-read-only
;; eg, during copy-as-kill.
(allout-deannotate-hidden beg end)))
(allout-unprotected (kill-region beg (point)))
(save-excursion
(allout-renumber-to-depth depth))
(run-hook-with-args 'allout-structure-deleted-hook depth (point))))
@ -4251,8 +4294,7 @@ allout-yank-processing for exposure recovery."
(let ((was-modified (buffer-modified-p))
(buffer-read-only nil))
(allout-unprotected
(remove-text-properties begin end '(allout-was-hidden t)))
(allout-deannotate-hidden begin end)
(save-excursion
(goto-char begin)
(let (done next prev overlay)
@ -4279,9 +4321,19 @@ allout-yank-processing for exposure recovery."
(when next
(goto-char next)
(allout-unprotected
(put-text-property (overlay-start overlay) next
'allout-was-hidden t))))))))
(let ((buffer-undo-list t))
(put-text-property (overlay-start overlay) next
'allout-was-hidden t)))))))))
(set-buffer-modified-p was-modified)))
;;;_ > allout-deannotate-hidden (begin end)
(defun allout-deannotate-hidden (begin end)
"Remove allout hidden-text annotation between BEGIN and END."
(allout-unprotected
(let ((inhibit-read-only t)
(buffer-undo-list t))
;(remove-text-properties begin end '(allout-was-hidden t))
)))
;;;_ > allout-hide-by-annotation (begin end)
(defun allout-hide-by-annotation (begin end)
"Translate text properties indicating exposure status into actual exposure."
@ -4309,16 +4361,10 @@ allout-yank-processing for exposure recovery."
nil end))
(overlay-put (make-overlay prev next)
'category 'allout-exposure-category)
(allout-unprotected
(remove-text-properties prev next '(allout-was-hidden t)))
(allout-deannotate-hidden prev next)
(setq prev next)
(if next (goto-char next)))))
(set-buffer-modified-p was-modified))))
;;;_ > allout-remove-exposure-annotation (begin end)
(defun allout-remove-exposure-annotation (begin end)
"Remove text properties indicating exposure status."
(remove-text-properties begin end '(allout-was-hidden t)))
;;;_ > allout-yank-processing ()
(defun allout-yank-processing (&optional arg)
@ -4345,108 +4391,117 @@ however, are left exactly like normal, non-allout-specific yanks."
; region around subject:
(if (< (allout-mark-marker t) (point))
(exchange-point-and-mark))
(allout-unprotected
(let* ((subj-beg (point))
(into-bol (bolp))
(subj-end (allout-mark-marker t))
;; 'resituate' if yanking an entire topic into topic header:
(resituate (and (allout-e-o-prefix-p)
(looking-at allout-regexp)
(allout-prefix-data)))
;; `rectify-numbering' if resituating (where several topics may
;; be resituating) or yanking a topic into a topic slot (bol):
(rectify-numbering (or resituate
(and into-bol (looking-at allout-regexp)))))
(if resituate
; The yanked stuff is a topic:
(let* ((prefix-len (- (match-end 1) subj-beg))
(subj-depth allout-recent-depth)
(prefix-bullet (allout-recent-bullet))
(adjust-to-depth
;; Nil if adjustment unnecessary, otherwise depth to which
;; adjustment should be made:
(save-excursion
(and (goto-char subj-end)
(eolp)
(goto-char subj-beg)
(and (looking-at allout-regexp)
(progn
(beginning-of-line)
(not (= (point) subj-beg)))
(looking-at allout-regexp)
(allout-prefix-data))
allout-recent-depth)))
(more t))
(setq rectify-numbering allout-numbered-bullet)
(if adjust-to-depth
(let* ((subj-beg (point))
(into-bol (bolp))
(subj-end (allout-mark-marker t))
;; 'resituate' if yanking an entire topic into topic header:
(resituate (and (let ((allout-inhibit-aberrance-doublecheck t))
(allout-e-o-prefix-p))
(looking-at allout-regexp)
(allout-prefix-data)))
;; `rectify-numbering' if resituating (where several topics may
;; be resituating) or yanking a topic into a topic slot (bol):
(rectify-numbering (or resituate
(and into-bol (looking-at allout-regexp)))))
(if resituate
;; Yanking a topic into the start of a topic - reconcile to fit:
(let* ((inhibit-field-text-motion t)
(prefix-len (if (not (match-end 1))
1
(- (match-end 1) subj-beg)))
(subj-depth allout-recent-depth)
(prefix-bullet (allout-recent-bullet))
(adjust-to-depth
;; Nil if adjustment unnecessary, otherwise depth to which
;; adjustment should be made:
(save-excursion
(and (goto-char subj-end)
(eolp)
(goto-char subj-beg)
(and (looking-at allout-regexp)
(progn
(beginning-of-line)
(not (= (point) subj-beg)))
(looking-at allout-regexp)
(allout-prefix-data))
allout-recent-depth)))
(more t))
(setq rectify-numbering allout-numbered-bullet)
(if adjust-to-depth
; Do the adjustment:
(progn
(save-restriction
(narrow-to-region subj-beg subj-end)
(progn
(save-restriction
(narrow-to-region subj-beg subj-end)
; Trim off excessive blank
; line at end, if any:
(goto-char (point-max))
(if (looking-at "^$")
(allout-unprotected (delete-char -1)))
(goto-char (point-max))
(if (looking-at "^$")
(allout-unprotected (delete-char -1)))
; Work backwards, with each
; shallowest level,
; successively excluding the
; last processed topic from
; the narrow region:
(while more
(allout-back-to-current-heading)
(while more
(allout-back-to-current-heading)
; go as high as we can in each bunch:
(while (allout-ascend))
(save-excursion
(while (allout-ascend))
(save-excursion
(allout-unprotected
(allout-rebullet-topic-grunt (- adjust-to-depth
subj-depth))
(allout-depth))
(if (setq more (not (bobp)))
(progn (widen)
(forward-char -1)
(narrow-to-region subj-beg (point))))))
;; Preserve new bullet if it's a distinctive one, otherwise
;; use old one:
(if (string-match (regexp-quote prefix-bullet)
allout-distinctive-bullets-string)
subj-depth)))
(allout-depth))
(if (setq more (not (bobp)))
(progn (widen)
(forward-char -1)
(narrow-to-region subj-beg (point))))))
;; Preserve new bullet if it's a distinctive one, otherwise
;; use old one:
(if (string-match (regexp-quote prefix-bullet)
allout-distinctive-bullets-string)
; Delete from bullet of old to
; before bullet of new:
(progn
(beginning-of-line)
(delete-region (point) subj-beg)
(set-marker (allout-mark-marker t) subj-end)
(goto-char subj-beg)
(allout-end-of-prefix))
(progn
(beginning-of-line)
(allout-unprotected
(delete-region (point) subj-beg))
(set-marker (allout-mark-marker t) subj-end)
(goto-char subj-beg)
(allout-end-of-prefix))
; Delete base subj prefix,
; leaving old one:
(delete-region (point) (+ (point)
prefix-len
(- adjust-to-depth subj-depth)))
(allout-unprotected
(progn
(delete-region (point) (+ (point)
prefix-len
(- adjust-to-depth
subj-depth)))
; and delete residual subj
; prefix digits and space:
(while (looking-at "[0-9]") (delete-char 1))
(if (looking-at " ") (delete-char 1))))
(exchange-point-and-mark))))
(if rectify-numbering
(progn
(save-excursion
(while (looking-at "[0-9]") (delete-char 1))
(if (looking-at " ") (delete-char 1))))))
(exchange-point-and-mark))))
(if rectify-numbering
(progn
(save-excursion
; Give some preliminary feedback:
(message "... reconciling numbers")
(message "... reconciling numbers")
; ... and renumber, in case necessary:
(goto-char subj-beg)
(if (allout-goto-prefix-doublechecked)
(goto-char subj-beg)
(if (allout-goto-prefix-doublechecked)
(allout-unprotected
(allout-rebullet-heading nil ;;; solicit
(allout-depth) ;;; depth
nil ;;; number-control
nil ;;; index
t))
(message ""))))
(if (or into-bol resituate)
(allout-hide-by-annotation (point) (allout-mark-marker t))
(allout-remove-exposure-annotation (allout-mark-marker t) (point)))
(if (not resituate)
(exchange-point-and-mark))
(run-hook-with-args 'allout-structure-added-hook subj-beg subj-end))))
(allout-depth) ;;; depth
nil ;;; number-control
nil ;;; index
t)))
(message ""))))
(if (or into-bol resituate)
(allout-hide-by-annotation (point) (allout-mark-marker t))
(allout-deannotate-hidden (allout-mark-marker t) (point)))
(if (not resituate)
(exchange-point-and-mark))
(run-hook-with-args 'allout-structure-added-hook subj-beg subj-end)))
;;;_ > allout-yank (&optional arg)
(defun allout-yank (&optional arg)
"`allout-mode' yank, with depth and numbering adjustment of yanked topics.
@ -5671,7 +5726,7 @@ If allout customization var `allout-passphrase-verifier-handling' is
non-nil, an entry for `allout-passphrase-verifier-string' and its value is
added to an Emacs 'local variables' section at the end of the file, which
is created if necessary. That setting is for retention of the passphrase
verifier across emacs sessions.
verifier across Emacs sessions.
Similarly, `allout-passphrase-hint-string' stores a user-provided reminder
about their passphrase, and `allout-passphrase-hint-handling' specifies
@ -5711,7 +5766,7 @@ See `allout-toggle-current-subtree-encryption' for more details."
" shift it in to make it encryptable")))
(let* ((allout-buffer (current-buffer))
;; Asses location:
;; Assess location:
(bullet-pos allout-recent-prefix-beginning)
(after-bullet-pos (point))
(was-encrypted
@ -5745,7 +5800,29 @@ See `allout-toggle-current-subtree-encryption' for more details."
'(symmetric nil)))
(for-key-type (car key-info))
(for-key-identity (cadr key-info))
(fetch-pass (and fetch-pass (member fetch-pass '(16 (16))))))
(fetch-pass (and fetch-pass (member fetch-pass '(16 (16)))))
(was-coding-system buffer-file-coding-system))
(when (not was-encrypted)
;; ensure that non-ascii chars pending encryption are noticed before
;; they're encrypted, so the coding system is set to accomodate
;; them.
(setq buffer-file-coding-system
(select-safe-coding-system subtree-beg subtree-end))
;; if the coding system for the text being encrypted is different
;; than that prevailing, then there a real risk that the coding
;; system can't be noticed by emacs when the file is visited. to
;; mitigate that, offer to preserve the coding system using a file
;; local variable.
(if (and (not (equal buffer-file-coding-system
was-coding-system))
(yes-or-no-p
(format (concat "Register coding system %s as file local"
" var? Necessary when only encrypted text"
" is in that coding system. ")
buffer-file-coding-system)))
(allout-adjust-file-variable "buffer-file-coding-system"
buffer-file-coding-system)))
(setq result-text
(allout-encrypt-string subject-text was-encrypted
@ -5834,6 +5911,10 @@ Returns the resulting string, or nil if the transformation fails."
target-prompt-id
(or (buffer-file-name allout-buffer)
target-prompt-id))))
(encoding (with-current-buffer allout-buffer
buffer-file-coding-system))
(multibyte (with-current-buffer allout-buffer
enable-multibyte-characters))
(strip-plaintext-regexps
(if (not decrypt)
(allout-get-configvar-values
@ -5870,6 +5951,13 @@ Returns the resulting string, or nil if the transformation fails."
(insert text)
;; convey the text characteristics of the original buffer:
(set-buffer-multibyte multibyte)
(when encoding
(set-buffer-file-coding-system encoding)
(if (not decrypt)
(encode-coding-region (point-min) (point-max) encoding)))
(when (and strip-plaintext-regexps (not decrypt))
(dolist (re strip-plaintext-regexps)
(let ((re (if (listp re) (car re) re))
@ -6356,7 +6444,7 @@ setup for auto-startup."
(save-excursion
(goto-char (point-min))
(if (looking-at allout-regexp)
(if (allout-goto-prefix)
t
(allout-open-topic 2)
(insert (concat "Dummy outline topic header - see"
@ -6393,7 +6481,7 @@ Returns list `(beginning-point prefix-string suffix-string)'."
)
;;;_ > allout-adjust-file-variable (varname value)
(defun allout-adjust-file-variable (varname value)
"Adjust the setting of an emacs file variable named VARNAME to VALUE.
"Adjust the setting of an Emacs file variable named VARNAME to VALUE.
This activity is inhibited if either `enable-local-variables'
`allout-enable-file-variable-adjustment' are nil.
@ -6404,7 +6492,7 @@ variables, itself, is created if not already present. When created, the
section lines \(including the section line) exist as second-level topics in
a top-level topic at the end of the file.
enable-local-variables must be true for any of this to happen."
`enable-local-variables' must be true for any of this to happen."
(if (not (and enable-local-variables
allout-enable-file-variable-adjustment))
nil

View file

@ -171,7 +171,7 @@ If value is `verbose', the computed score is shown for each match."
("yank" "paste")
("region" "selection"))
"List of synonyms known by apropos.
Each element is a list of words where the first word is the standard emacs
Each element is a list of words where the first word is the standard Emacs
term, and the rest of the words are alternative terms.")

View file

@ -119,7 +119,7 @@ then invokes the normal binding of \\[autoarg-terminate].
With ARG, turn Autoarg mode on if ARG is positive, off otherwise.
\\<autoarg-kp-mode-map>
This is similar to \\[autoarg-mode] but rebinds the keypad keys `kp-1'
&c to supply digit arguments.
etc. to supply digit arguments.
\\{autoarg-kp-mode-map}"
nil " Aakp" autoarg-kp-mode-map :global t :group 'keyboard

View file

@ -49,8 +49,8 @@
(file-directory-p "/proc/acpi/battery"))
'battery-linux-proc-acpi)
((and (eq system-type 'darwin)
(condition-case nil
(with-temp-buffer
(condition-case nil
(with-temp-buffer
(and (eq (call-process "pmset" nil t nil "-g" "ps") 0)
(> (buffer-size) 0)))
(error nil)))
@ -355,45 +355,19 @@ The following %-sequences are provided:
60)))
hours (/ minutes 60)))
(list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
(cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state")
(with-temp-buffer
(insert-file-contents
"/proc/acpi/ac_adapter/AC/state")
(when (re-search-forward "state: +\\(.*\\)$" nil t)
(match-string 1))))
(cons ?L (or (battery-search-for-one-match-in-files
(mapcar (lambda (e) (concat e "/state"))
(directory-files "/proc/acpi/ac_adapter/"
t "\\`[^.]"))
"state: +\\(.*\\)$" 1)
"N/A"))
(cons ?d (or (when (file-exists-p
"/proc/acpi/thermal_zone/THRM/temperature")
(with-temp-buffer
(insert-file-contents
"/proc/acpi/thermal_zone/THRM/temperature")
(when (re-search-forward
"temperature: +\\([0-9]+\\) C$" nil t)
(match-string 1))))
(when (file-exists-p
"/proc/acpi/thermal_zone/THM/temperature")
(with-temp-buffer
(insert-file-contents
"/proc/acpi/thermal_zone/THM/temperature")
(when (re-search-forward
"temperature: +\\([0-9]+\\) C$" nil t)
(match-string 1))))
(when (file-exists-p
"/proc/acpi/thermal_zone/THM0/temperature")
(with-temp-buffer
(insert-file-contents
"/proc/acpi/thermal_zone/THM0/temperature")
(when (re-search-forward
"temperature: +\\([0-9]+\\) C$" nil t)
(match-string 1))))
(when (file-exists-p
"/proc/acpi/thermal_zone/THR2/temperature")
(with-temp-buffer
(insert-file-contents
"/proc/acpi/thermal_zone/THR2/temperature")
(when (re-search-forward
"temperature: +\\([0-9]+\\) C$" nil t)
(match-string 1))))
(cons ?d (or (battery-search-for-one-match-in-files
(mapcar (lambda (e) (concat e "/temperature"))
(directory-files "/proc/acpi/thermal_zone/"
t "\\`[^.]"))
"temperature: +\\([0-9]+\\) C$" 1)
"N/A"))
(cons ?r (or (and rate (concat (number-to-string rate) " "
rate-type)) "N/A"))
@ -408,6 +382,7 @@ The following %-sequences are provided:
(format "%d:%02d" hours (- minutes (* 60 hours))))
"N/A"))
(cons ?p (or (and full-capacity capacity
(> full-capacity 0)
(number-to-string
(floor (/ capacity
(/ (float full-capacity) 100)))))
@ -478,6 +453,17 @@ The following %-sequences are provided:
(or (cdr (assoc char alist)) ""))))
format t t))
(defun battery-search-for-one-match-in-files (files regexp match-num)
"Search REGEXP in the content of the files listed in FILES.
If a match occured, return the parenthesized expression numbered by
MATCH-NUM in the match. Otherwise, return nil."
(with-temp-buffer
(catch 'found
(dolist (file files)
(and (ignore-errors (insert-file-contents file nil nil nil 'replace))
(re-search-forward regexp nil t)
(throw 'found (match-string match-num)))))))
(provide 'battery)

View file

@ -285,7 +285,7 @@ Keymap to display on minor modes.")
;; "\
;; mouse-1: select window, mouse-2: delete others, mouse-3: delete,
;; drag-mouse-1: resize, C-mouse-2: split horizontally"
"mouse-1: select (drag to resize), mouse-2: delete others, mouse-3: delete this")
"mouse-1: select (drag to resize), mouse-2 = C-x 1, mouse-3 = C-x 0")
(dashes (propertize "--" 'help-echo help-echo))
(standard-mode-line-format
(list

View file

@ -441,11 +441,12 @@ naming a sort behavior. Default is \"by nothing\" which means no sorting."
(defvar bs--show-all nil
"Flag whether showing all buffers regardless of current configuration.
Non nil means to show all buffers. Otherwise show buffers
Non-nil means to show all buffers. Otherwise show buffers
defined by current configuration `bs-current-configuration'.")
(defvar bs--window-config-coming-from nil
"Window configuration before starting Buffer Selection Menu.")
(make-variable-frame-local 'bs--window-config-coming-from)
(defvar bs--intern-show-never "^ \\|\\*buffer-selection\\*"
"Regular expression specifying which buffers never to show.
@ -583,8 +584,8 @@ a special function. SORT-DESCRIPTION is an element of `bs-sort-functions'."
(defun bs--redisplay (&optional keep-line-p sort-description)
"Redisplay whole Buffer Selection Menu.
If KEEP-LINE-P is non nil the point will stay on current line.
SORT-DESCRIPTION is an element of `bs-sort-functions'"
If KEEP-LINE-P is non-nil the point will stay on current line.
SORT-DESCRIPTION is an element of `bs-sort-functions'."
(let ((line (1+ (count-lines 1 (point)))))
(bs-show-in-buffer (bs-buffer-list nil sort-description))
(if keep-line-p
@ -661,11 +662,17 @@ to show always.
font-lock-verbose nil)
(run-mode-hooks 'bs-mode-hook))
(defun bs--restore-window-config ()
"Restore window configuration on the current frame."
(when bs--window-config-coming-from
(set-window-configuration bs--window-config-coming-from)
(setq bs--window-config-coming-from nil)))
(defun bs-kill ()
"Let buffer disappear and reset window-configuration."
(interactive)
(bury-buffer (current-buffer))
(set-window-configuration bs--window-config-coming-from))
(bs--restore-window-config))
(defun bs-abort ()
"Ding and leave Buffer Selection Menu without a selection."
@ -685,17 +692,6 @@ Refresh whole Buffer Selection Menu."
(interactive)
(bs--redisplay t))
(defun bs--window-for-buffer (buffer-name)
"Return a window showing a buffer with name BUFFER-NAME.
Take only windows of current frame into account.
Return nil if there is no such buffer."
(let ((window nil))
(walk-windows (lambda (wind)
(if (string= (buffer-name (window-buffer wind))
buffer-name)
(setq window wind))))
window))
(defun bs--set-window-height ()
"Change the height of the selected window to suit the current buffer list."
(unless (one-window-p t)
@ -736,7 +732,7 @@ Leave Buffer Selection Menu."
(interactive)
(let ((buffer (bs--current-buffer)))
(bury-buffer (current-buffer))
(set-window-configuration bs--window-config-coming-from)
(bs--restore-window-config)
(switch-to-buffer buffer)
(if bs--marked-buffers
;; Some marked buffers for selection
@ -760,7 +756,7 @@ Leave Buffer Selection Menu."
(interactive)
(let ((buffer (bs--current-buffer)))
(bury-buffer (current-buffer))
(set-window-configuration bs--window-config-coming-from)
(bs--restore-window-config)
(switch-to-buffer-other-window buffer)))
(defun bs-tmp-select-other-window ()
@ -776,7 +772,7 @@ Leave Buffer Selection Menu."
(interactive)
(let ((buffer (bs--current-buffer)))
(bury-buffer (current-buffer))
(set-window-configuration bs--window-config-coming-from)
(bs--restore-window-config)
(switch-to-buffer-other-frame buffer)))
(defun bs-mouse-select-other-frame (event)
@ -1234,7 +1230,6 @@ by buffer configuration `bs-cycle-configuration-name'."
(or (cdr bs--cycle-list)
"this buffer"))))))
;;;###autoload
(defun bs-cycle-previous ()
"Select previous buffer defined by buffer cycling.
@ -1426,17 +1421,20 @@ for buffer selection."
(unless (string= "*buffer-selection*" (buffer-name))
;; Only when not in buffer *buffer-selection*
;; we have to set the buffer we started the command
(progn
(setq bs--buffer-coming-from (current-buffer))
(setq bs--window-config-coming-from (current-window-configuration))))
(setq bs--buffer-coming-from (current-buffer)))
(let ((liste (bs-buffer-list))
(active-window (bs--window-for-buffer "*buffer-selection*")))
(active-window (get-window-with-predicate
(lambda (w)
(string= (buffer-name (window-buffer w))
"*buffer-selection*")))))
(if active-window
(select-window active-window)
(if (> (window-height (selected-window)) 7)
(progn
(split-window-vertically)
(other-window 1))))
(modify-frame-parameters nil
(list (cons 'bs--window-config-coming-from
(current-window-configuration))))
(when (> (window-height (selected-window)) 7)
(split-window-vertically)
(other-window 1)))
(bs-show-in-buffer liste)
(bs-message-without-log "%s" (bs--current-config-message)))))

View file

@ -42,6 +42,16 @@
(require 'calendar)
(require 'cal-persia)
(defcustom calendar-dst-check-each-year-flag t
"Non-nil means to check each year for DST transitions as needed.
Otherwise assume the next two transitions found after the
current date apply to all years. This is faster, but not always
correct, since the dates of Daylight Saving transitions sometimes
change."
:type 'boolean
:version "22.1"
:group 'calendar)
(defvar calendar-current-time-zone-cache nil
"Cache for result of calendar-current-time-zone.")
@ -199,6 +209,74 @@ The result has the proper form for calendar-daylight-savings-starts'."
(cdr candidate-rules)))
(car candidate-rules)))
;; TODO it might be better to extract this information directly from
;; the system timezone database. But cross-platform...?
;; See thread
;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2006-11/msg00060.html
(defun calendar-dst-find-data (&optional time)
"Find data on the first Daylight Saving Time transitions after TIME.
TIME defaults to `current-time'. Return value is as described
for `calendar-current-time-zone'."
(let* ((t0 (or time (current-time)))
(t0-zone (current-time-zone t0))
(t0-utc-diff (car t0-zone))
(t0-name (car (cdr t0-zone))))
(if (not t0-utc-diff)
;; Little or no time zone information is available.
(list nil nil t0-name t0-name nil nil nil nil)
(let* ((t1 (calendar-next-time-zone-transition t0))
(t2 (and t1 (calendar-next-time-zone-transition t1))))
(if (not t2)
;; This locale does not have daylight savings time.
(list (/ t0-utc-diff 60) 0 t0-name t0-name nil nil 0 0)
;; Use heuristics to find daylight savings parameters.
(let* ((t1-zone (current-time-zone t1))
(t1-utc-diff (car t1-zone))
(t1-name (car (cdr t1-zone)))
(t1-date-sec (calendar-absolute-from-time t1 t0-utc-diff))
(t2-date-sec (calendar-absolute-from-time t2 t1-utc-diff))
;; TODO When calendar-dst-check-each-year-flag is non-nil,
;; the rules can be simpler than they currently are.
(t1-rules (calendar-time-zone-daylight-rules
(car t1-date-sec) t0-utc-diff))
(t2-rules (calendar-time-zone-daylight-rules
(car t2-date-sec) t1-utc-diff))
(t1-time (/ (cdr t1-date-sec) 60))
(t2-time (/ (cdr t2-date-sec) 60)))
(cons
(/ (min t0-utc-diff t1-utc-diff) 60)
(cons
(/ (abs (- t0-utc-diff t1-utc-diff)) 60)
(if (< t0-utc-diff t1-utc-diff)
(list t0-name t1-name t1-rules t2-rules t1-time t2-time)
(list t1-name t0-name t2-rules t1-rules t2-time t1-time)
)))))))))
(defvar calendar-dst-transition-cache nil
"Internal cal-dst variable storing date of Daylight Saving Time transitions.
Value is a list with elements of the form (YEAR START END), where
START and END are expressions that when evaluated return the
start and end dates (respectively) for DST in YEAR. Used by the
function `calendar-dst-find-startend'.")
(defun calendar-dst-find-startend (year)
"Find the dates in YEAR on which Daylight Saving Time starts and ends.
Returns a list (YEAR START END), where START and END are
expressions that when evaluated return the start and end dates,
respectively. This function first attempts to use pre-calculated
data from `calendar-dst-transition-cache', otherwise it calls
`calendar-dst-find-data' (and adds the results to the cache)."
(let ((e (assoc year calendar-dst-transition-cache))
f)
(or e
(progn
(setq e (calendar-dst-find-data (encode-time 1 0 0 1 1 year))
f (nth 4 e)
e (list year f (nth 5 e))
calendar-dst-transition-cache
(append calendar-dst-transition-cache (list e)))
e))))
(defun calendar-current-time-zone ()
"Return UTC difference, dst offset, names and rules for current time zone.
@ -226,42 +304,8 @@ DST-ZONE are equal, and all the DST-* integer variables are 0.
Some operating systems cannot provide all this information to Emacs; in this
case, `calendar-current-time-zone' returns a list containing nil for the data
it can't find."
(or
calendar-current-time-zone-cache
(setq
calendar-current-time-zone-cache
(let* ((t0 (current-time))
(t0-zone (current-time-zone t0))
(t0-utc-diff (car t0-zone))
(t0-name (car (cdr t0-zone))))
(if (not t0-utc-diff)
;; Little or no time zone information is available.
(list nil nil t0-name t0-name nil nil nil nil)
(let* ((t1 (calendar-next-time-zone-transition t0))
(t2 (and t1 (calendar-next-time-zone-transition t1))))
(if (not t2)
;; This locale does not have daylight savings time.
(list (/ t0-utc-diff 60) 0 t0-name t0-name nil nil 0 0)
;; Use heuristics to find daylight savings parameters.
(let* ((t1-zone (current-time-zone t1))
(t1-utc-diff (car t1-zone))
(t1-name (car (cdr t1-zone)))
(t1-date-sec (calendar-absolute-from-time t1 t0-utc-diff))
(t2-date-sec (calendar-absolute-from-time t2 t1-utc-diff))
(t1-rules (calendar-time-zone-daylight-rules
(car t1-date-sec) t0-utc-diff))
(t2-rules (calendar-time-zone-daylight-rules
(car t2-date-sec) t1-utc-diff))
(t1-time (/ (cdr t1-date-sec) 60))
(t2-time (/ (cdr t2-date-sec) 60)))
(cons
(/ (min t0-utc-diff t1-utc-diff) 60)
(cons
(/ (abs (- t0-utc-diff t1-utc-diff)) 60)
(if (< t0-utc-diff t1-utc-diff)
(list t0-name t1-name t1-rules t2-rules t1-time t2-time)
(list t1-name t0-name t2-rules t1-rules t2-time t1-time)
)))))))))))
(unless calendar-current-time-zone-cache
(setq calendar-current-time-zone-cache (calendar-dst-find-data))))
;;; The following eight defvars relating to daylight savings time should NOT be
;;; marked to go into loaddefs.el where they would be evaluated when Emacs is
@ -293,12 +337,32 @@ For example, \"EST\" in New York City, \"PST\" for Los Angeles.")
"*Abbreviated name of daylight-savings time zone at `calendar-location-name'.
For example, \"EDT\" in New York City, \"PDT\" for Los Angeles.")
(defun calendar-dst-starts (year)
"Return the date of YEAR on which Daylight Saving Time starts.
This function respects the value of `calendar-dst-check-each-year-flag'."
(or (let ((expr (if calendar-dst-check-each-year-flag
(cadr (calendar-dst-find-startend year))
(nth 4 calendar-current-time-zone-cache))))
(if expr (eval expr)))
(and (not (zerop calendar-daylight-time-offset))
(calendar-nth-named-day 1 0 4 year))))
(defun calendar-dst-ends (year)
"Return the date of YEAR on which Daylight Saving Time ends.
This function respects the value of `calendar-dst-check-each-year-flag'."
(or (let ((expr (if calendar-dst-check-each-year-flag
(nth 2 (calendar-dst-find-startend year))
(nth 5 calendar-current-time-zone-cache))))
(if expr (eval expr)))
(and (not (zerop calendar-daylight-time-offset))
(calendar-nth-named-day -1 0 10 year))))
;;;###autoload
(put 'calendar-daylight-savings-starts 'risky-local-variable t)
(defvar calendar-daylight-savings-starts
(or (car (nthcdr 4 calendar-current-time-zone-cache))
(and (not (zerop calendar-daylight-time-offset))
'(calendar-nth-named-day 1 0 4 year)))
'(calendar-dst-starts year)
"*Sexp giving the date on which daylight savings time starts.
This is an expression in the variable `year' whose value gives the Gregorian
date in the form (month day year) on which daylight savings time starts. It is
@ -319,9 +383,7 @@ If the locale never uses daylight savings time, set this to nil.")
;;;###autoload
(put 'calendar-daylight-savings-ends 'risky-local-variable t)
(defvar calendar-daylight-savings-ends
(or (car (nthcdr 5 calendar-current-time-zone-cache))
(and (not (zerop calendar-daylight-time-offset))
'(calendar-nth-named-day -1 0 10 year)))
'(calendar-dst-ends year)
"*Sexp giving the date on which daylight savings time ends.
This is an expression in the variable `year' whose value gives the Gregorian
date in the form (month day year) on which daylight savings time ends. It is

View file

@ -769,7 +769,8 @@ buffer. The hook `comint-exec-hook' is run after each exec."
(list "TERM=emacs"
(format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))
(unless (getenv "EMACS")
(list (concat "EMACS=" invocation-directory invocation-name)))
(list "EMACS=t"))
(list (format "INSIDE_EMACS=%s,comint" emacs-version))
process-environment))
(default-directory
(if (file-accessible-directory-p default-directory)

View file

@ -466,6 +466,37 @@
:version "22.1"
:prefix "mac-")
;;; Custom mode keymaps
(defvar custom-mode-map
;; This keymap should be dense, but a dense keymap would prevent inheriting
;; "\r" bindings from the parent map.
;; Actually, this misfeature of dense keymaps was fixed on 2001-11-26.
(let ((map (make-keymap)))
(set-keymap-parent map widget-keymap)
(define-key map [remap self-insert-command] 'Custom-no-edit)
(define-key map "\^m" 'Custom-newline)
(define-key map " " 'scroll-up)
(define-key map "\177" 'scroll-down)
(define-key map "\C-c\C-c" 'Custom-set)
(define-key map "\C-x\C-s" 'Custom-save)
(define-key map "q" 'Custom-buffer-done)
(define-key map "u" 'Custom-goto-parent)
(define-key map "n" 'widget-forward)
(define-key map "p" 'widget-backward)
map)
"Keymap for `custom-mode'.")
(defvar custom-mode-link-map
(let ((map (make-keymap)))
(set-keymap-parent map custom-mode-map)
(define-key map [down-mouse-2] nil)
(define-key map [down-mouse-1] 'mouse-drag-region)
(define-key map [mouse-2] 'widget-move-and-invoke)
map)
"Local keymap for links in `custom-mode'.")
;;; Utilities.
(defun custom-split-regexp-maybe (regexp)
@ -521,7 +552,7 @@ WIDGET is the widget to apply the filter entries of MENU on."
"List of prefixes that should be ignored by `custom-unlispify'.")
(defcustom custom-unlispify-menu-entries t
"Display menu entries as words instead of symbols if non nil."
"Display menu entries as words instead of symbols if non-nil."
:group 'custom-menu
:type 'boolean)
@ -568,7 +599,7 @@ WIDGET is the widget to apply the filter entries of MENU on."
(buffer-string)))))
(defcustom custom-unlispify-tag-names t
"Display tag names as words instead of symbols if non nil."
"Display tag names as words instead of symbols if non-nil."
:group 'custom-buffer
:type 'boolean)
@ -846,7 +877,7 @@ it were the arg to `interactive' (which see) to interactively read the value.
If the variable has a `custom-type' property, it must be a widget and the
`:prompt-value' property of that widget will be used for reading the value.
If optional COMMENT argument is non nil, also prompt for a comment and return
If optional COMMENT argument is non-nil, also prompt for a comment and return
it as the third element in the list."
(let* ((var (read-variable prompt-var))
(minibuffer-help-form '(describe-variable var))
@ -1781,6 +1812,8 @@ item in another window.\n\n"))
(define-widget 'custom-manual 'info-link
"Link to the manual entry for this customization option."
:help-echo "Read the manual entry for this option."
:keymap custom-mode-link-map
:follow-link 'mouse-face
:button-face 'custom-link
:mouse-face 'highlight
:pressed-face 'highlight
@ -3631,7 +3664,7 @@ restoring it to the state of a face that has never been customized."
;;; The `hook' Widget.
(define-widget 'hook 'list
"A emacs lisp hook"
"An Emacs Lisp hook."
:value-to-internal (lambda (widget value)
(if (and value (symbolp value))
(list value)
@ -3673,6 +3706,8 @@ restoring it to the state of a face that has never been customized."
:mouse-face 'highlight
:pressed-face 'highlight
:help-echo "Create customization buffer for this group."
:keymap custom-mode-link-map
:follow-link 'mouse-face
:action 'custom-group-link-action)
(defun custom-group-link-action (widget &rest ignore)
@ -4149,6 +4184,8 @@ if only the first line of the docstring is shown."))
;;;###autoload
(defun custom-save-all ()
"Save all customizations in `custom-file'."
(when (and (null custom-file) init-file-had-error)
(error "Cannot save customizations; init file was not fully loaded"))
(let* ((filename (custom-file))
(recentf-exclude (if recentf-mode
(cons (concat "\\`"
@ -4156,7 +4193,8 @@ if only the first line of the docstring is shown."))
"\\'")
recentf-exclude)))
(old-buffer (find-buffer-visiting filename)))
(with-current-buffer (or old-buffer (find-file-noselect filename))
(with-current-buffer (let ((find-file-visit-truename t))
(or old-buffer (find-file-noselect filename)))
(unless (eq major-mode 'emacs-lisp-mode)
(emacs-lisp-mode))
(let ((inhibit-read-only t))
@ -4267,7 +4305,7 @@ This function does not save the buffer."
(eq (get symbol 'force-value)
'rogue))))
(comment (get symbol 'saved-variable-comment)))
;; Check REQUESTS for validity.
;; Check REQUESTS for validity.
(dolist (request requests)
(when (and (symbolp request) (not (featurep request)))
(message "Unknown requested feature: %s" request)
@ -4449,25 +4487,6 @@ The format is suitable for use with `easy-menu-define'."
;;; The Custom Mode.
(defvar custom-mode-map
;; This keymap should be dense, but a dense keymap would prevent inheriting
;; "\r" bindings from the parent map.
;; Actually, this misfeature of dense keymaps was fixed on 2001-11-26.
(let ((map (make-keymap)))
(set-keymap-parent map widget-keymap)
(define-key map [remap self-insert-command] 'Custom-no-edit)
(define-key map "\^m" 'Custom-newline)
(define-key map " " 'scroll-up)
(define-key map "\177" 'scroll-down)
(define-key map "\C-c\C-c" 'Custom-set)
(define-key map "\C-x\C-s" 'Custom-save)
(define-key map "q" 'Custom-buffer-done)
(define-key map "u" 'Custom-goto-parent)
(define-key map "n" 'widget-forward)
(define-key map "p" 'widget-backward)
map)
"Keymap for `custom-mode'.")
(defun Custom-no-edit (pos &optional event)
"Invoke button at POS, or refuse to allow editing of Custom buffer."
(interactive "@d")

View file

@ -185,13 +185,13 @@ otherwise."
(defcustom describe-char-unicodedata-file nil
"Location of Unicode data file.
This is the UnicodeData.txt file from the Unicode consortium, used for
This is the UnicodeData.txt file from the Unicode Consortium, used for
diagnostics. If it is non-nil `describe-char' will print data
looked up from it. This facility is mostly of use to people doing
multilingual development.
This is a fairly large file, not typically present on GNU systems. At
the time of writing it is at the URL
This is a fairly large file, not typically present on GNU systems.
At the time of writing it is at the URL
`http://www.unicode.org/Public/UNIDATA/UnicodeData.txt'."
:group 'mule
:version "22.1"

View file

@ -120,8 +120,8 @@ when editing big diffs)."
("\C-m" . diff-goto-source)
([mouse-2] . diff-goto-source)
;; From XEmacs' diff-mode.
;; Standard M-w is useful, so don't change M-W.
;; ("W" . widen)
;; Standard M-w is useful, so don't change M-W.
;;("W" . widen)
;;("." . diff-goto-source) ;display-buffer
;;("f" . diff-goto-source) ;find-file
("o" . diff-goto-source) ;other-window
@ -153,6 +153,8 @@ when editing big diffs)."
("\C-c\C-s" . diff-split-hunk)
("\C-c\C-t" . diff-test-hunk)
("\C-c\C-u" . diff-context->unified)
;; `d' because it duplicates the context :-( --Stef
("\C-c\C-d" . diff-unified->context)
("\C-c\C-w" . diff-refine-hunk)
("\C-c\C-f" . next-error-follow-minor-mode))
"Keymap for `diff-mode'. See also `diff-mode-shared-map'.")

View file

@ -1182,12 +1182,20 @@ Special value `always' suppresses confirmation."
dired-create-files-failures)
(setq files nil)
(dired-log "Copying error for %s:\n%s\n" from err)))))
(while files
(dired-copy-file-recursive
(expand-file-name (car files) from)
(expand-file-name (car files) to)
ok-flag preserve-time nil recursive)
(pop files)))
(dolist (file files)
(let ((thisfrom (expand-file-name file from))
(thisto (expand-file-name file to)))
;; Catch errors copying within a directory,
;; and report them through the dired log mechanism
;; just as our caller will do for the top level files.
(condition-case err
(dired-copy-file-recursive
thisfrom thisto
ok-flag preserve-time nil recursive)
(file-error
(push (dired-make-relative thisfrom)
dired-create-files-failures)
(dired-log "Copying error for %s:\n%s\n" thisfrom err))))))
;; Not a directory.
(or top (dired-handle-overwrite to))
(condition-case err
@ -1198,11 +1206,7 @@ Special value `always' suppresses confirmation."
(file-date-error
(push (dired-make-relative from)
dired-create-files-failures)
(dired-log "Can't set date on %s:\n%s\n" from err))
(file-error
(push (dired-make-relative from)
dired-create-files-failures)
(dired-log "Copying error for %s:\n%s\n" from err))))))
(dired-log "Can't set date on %s:\n%s\n" from err))))))
;;;###autoload
(defun dired-rename-file (file newname ok-if-already-exists)

View file

@ -791,6 +791,9 @@ wildcards, erases the buffer, and builds the subdir-alist anew
(run-hooks 'dired-before-readin-hook)
(if (consp buffer-undo-list)
(setq buffer-undo-list nil))
(make-local-variable 'file-name-coding-system)
(setq file-name-coding-system
(or coding-system-for-read file-name-coding-system))
(let (buffer-read-only
;; Don't make undo entries for readin.
(buffer-undo-list t))

View file

@ -117,7 +117,7 @@ Valid symbols are `truncation', `wrap', `escape', `control',
(or standard-display-table
(setq standard-display-table (make-display-table)))
(while (<= l h)
(aset standard-display-table l (if (or (< l ?\ ) (>= l 127)) (vector l)))
(aset standard-display-table l (if (or (< l ?\s) (>= l 127)) (vector l)))
(setq l (1+ l))))
;;;###autoload
@ -126,7 +126,7 @@ Valid symbols are `truncation', `wrap', `escape', `control',
(or standard-display-table
(setq standard-display-table (make-display-table)))
(while (<= l h)
(if (and (>= l ?\ ) (char-valid-p l))
(if (and (>= l ?\s) (char-valid-p l))
(aset standard-display-table l nil))
(setq l (1+ l))))

View file

@ -73,7 +73,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
(catch 'electric-buffer-menu-select
(message "<<< Press Return to bury the buffer list >>>")
(if (eq (setq unread-command-events (list (read-event)))
?\ )
?\s)
(progn (setq unread-command-events nil)
(throw 'electric-buffer-menu-select nil)))
(let ((start-point (point))

View file

@ -1274,9 +1274,7 @@ delimiter regions"))
;; Similarly for Windows-*
;; In DOS, must synchronize because DOS doesn't have
;; asynchronous processes.
(condition-case nil
(apply 'call-process program nil buffer nil args)
(error (format "Cannot execute program %S." program)))
(apply 'call-process program nil buffer nil args)
;; On other systems, do it asynchronously.
(setq proc (get-buffer-process buffer))
(if proc (kill-process proc))
@ -1447,14 +1445,12 @@ arguments to `skip-chars-forward'."
"Return t if files F1 and F2 have identical contents."
(if (and (not (file-directory-p f1))
(not (file-directory-p f2)))
(condition-case nil
(let ((res
(apply 'call-process ediff-cmp-program nil nil nil
(append ediff-cmp-options (list (expand-file-name f1)
(expand-file-name f2))))
))
(and (numberp res) (eq res 0)))
(error (format "Cannot execute program %S." ediff-cmp-program)))
(let ((res
(apply 'call-process ediff-cmp-program nil nil nil
(append ediff-cmp-options (list (expand-file-name f1)
(expand-file-name f2))))
))
(and (numberp res) (eq res 0)))
))

View file

@ -1401,8 +1401,8 @@ Uses `vc.el' or `rcs.el' depending on `ediff-version-control-package'."
'no-dirs)))
(find-file file)
(if (and (buffer-modified-p)
(y-or-n-p (message "Buffer %s is modified. Save buffer? "
(buffer-name))))
(y-or-n-p (format "Buffer %s is modified. Save buffer? "
(buffer-name))))
(save-buffer (current-buffer)))
(let (rev1 rev2)
(setq rev1

View file

@ -197,7 +197,7 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit."
(if (pos-visible-in-window-p (point-max))
(progn (message "%s" (substitute-command-keys "<<< Press Space to bury the help buffer, Press \\[electric-help-retain] to retain it >>>"))
(if (equal (setq unread-command-events (list (read-event)))
'(?\ ))
'(?\s))
(progn (setq unread-command-events nil)
(throw 'exit t)))))
(let (up down both neither

View file

@ -43,6 +43,7 @@ files.")
(defconst authors-aliases
'(
("Andrew Csillag" "Drew Csillag")
("Anna M. Bigatti" "Anna Bigatti")
("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
"Barry A. Warsaw, ITB" "Barry Warsaw")
("Bj,Av(Brn Torkelsson" "Bjorn Torkelsson")
@ -176,7 +177,7 @@ listed.")
Changes to files in this list are not listed.")
(defconst authors-fixed-entries
'(("Richard M. Stallman" :wrote "[The original GNU emacs and numerous files]")
'(("Richard M. Stallman" :wrote "[The original GNU Emacs and numerous files]")
("Joseph Arceneaux" :wrote "xrdb.c")
("Blitz Product Development Corporation" :wrote "ispell.el")
("Frank Bresz" :wrote "diff.el")

View file

@ -264,11 +264,12 @@ facilities that have been added more recently."
;; this way can never be run in Emacs 18, and may even cause it to crash.")
(defcustom byte-optimize t
"*Enables optimization in the byte compiler.
nil means don't do any optimization.
t means do all optimizations.
`source' means do source-level optimizations only.
`byte' means do code-level optimizations only."
"*Enable optimization in the byte compiler.
Possible values are:
nil - no optimization
t - all optimizations
`source' - source-level optimizations only
`byte' - code-level optimizations only"
:group 'bytecomp
:type '(choice (const :tag "none" nil)
(const :tag "all" t)
@ -336,7 +337,7 @@ If it is 'byte, then only byte-level optimizations will be logged."
(defcustom byte-compile-warnings t
"*List of warnings that the byte-compiler should issue (t for all).
Elements of the list may be be:
Elements of the list may be:
free-vars references to variables not in the current lexical scope.
unresolved calls to unknown functions.
@ -2864,8 +2865,12 @@ That command is designed for interactive use only" fn))
(defmacro byte-compile-get-constant (const)
`(or (if (stringp ,const)
(assoc-default ,const byte-compile-constants
'equal-including-properties nil)
;; In a string constant, treat properties as significant.
(let (result)
(dolist (elt byte-compile-constants)
(if (equal-including-properties (car elt) ,const)
(setq result elt)))
result)
(assq ,const byte-compile-constants))
(car (setq byte-compile-constants
(cons (list ,const) byte-compile-constants)))))

View file

@ -2155,7 +2155,7 @@ before using the Ispell engine on it."
(defun checkdoc-rogue-space-check-engine (&optional start end interact)
"Return a message list if there is a line with white space at the end.
If `checkdoc-autofix-flag' permits, delete that whitespace instead.
If optional arguments START and END are non nil, bound the check to
If optional arguments START and END are non-nil, bound the check to
this region.
Optional argument INTERACT may permit the user to fix problems on the fly."
(let ((p (point))

View file

@ -256,7 +256,7 @@ Any pair that has the same PREDICATE is first removed."
(defun custom-print-install ()
"Replace print functions with general, customizable, Lisp versions.
The emacs subroutines are saved away, and you can reinstall them
The Emacs subroutines are saved away, and you can reinstall them
by running `custom-print-uninstall'."
(interactive)
(mapcar 'cust-print-set-function-cell
@ -271,7 +271,7 @@ by running `custom-print-uninstall'."
t)
(defun custom-print-uninstall ()
"Reset print functions to their emacs subroutines."
"Reset print functions to their Emacs subroutines."
(interactive)
(mapcar 'cust-print-set-function-cell
'((prin1 cust-print-original-prin1)
@ -375,7 +375,7 @@ The argument used by %s must be a string or a symbol;
the argument used by %d, %b, %o, %x or %c must be a number.
This is the custom-print replacement for the standard `format'. It
calls the emacs `format' after first making strings for list,
calls the Emacs `format' after first making strings for list,
vector, or symbol args. The format specification for such args should
be `%s' in any case, so a string argument will also work. The string
is generated with `custom-prin1-to-string', which quotes quotable

View file

@ -500,7 +500,7 @@ found, do widen first and then call NARROWFUN with no args after moving."
,(concat "^No \\(previous\\|next\\) " (regexp-quote name)))
(defun ,next-sym (&optional count)
,(format "Go to the next COUNT'th %s." name)
(interactive)
(interactive "p")
(unless count (setq count 1))
(if (< count 0) (,prev-sym (- count))
(if (looking-at ,re) (setq count (1+ count)))
@ -523,7 +523,7 @@ found, do widen first and then call NARROWFUN with no args after moving."
(put ',next-sym 'definition-name ',base)
(defun ,prev-sym (&optional count)
,(format "Go to the previous COUNT'th %s" (or name base-name))
(interactive)
(interactive "p")
(unless count (setq count 1))
(if (< count 0) (,next-sym (- count))
(let (was-narrowed)

View file

@ -147,9 +147,9 @@ See the functions `find-function' and `find-variable'."
(defun find-library-name (library)
"Return the absolute file name of the Lisp source of LIBRARY."
;; Strip off the extension to take advantage of library suffixes in
;; the call to `locate-file'.
(if (string-match "\\.el\\(c\\(\\..*\\)?\\)?\\'" library)
;; If the library is byte-compiled, try to find a source library by
;; the same name.
(if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library)
(setq library (replace-match "" t t library)))
(or (locate-file library
(or find-function-source-path load-path)
@ -264,7 +264,7 @@ not selected. If the function definition can't be found in
the buffer, returns (BUFFER).
If the file where FUNCTION is defined is not known, then it is
searched for in `find-function-source-path' if non nil, otherwise
searched for in `find-function-source-path' if non-nil, otherwise
in `load-path'."
(if (not function)
(error "You didn't specify a function"))
@ -357,7 +357,7 @@ places point before the definition.
Set mark before moving, if the buffer already existed.
The library where FUNCTION is defined is searched for in
`find-function-source-path', if non nil, otherwise in `load-path'.
`find-function-source-path', if non-nil, otherwise in `load-path'.
See also `find-function-recenter-line' and `find-function-after-hook'."
(interactive (find-function-read))
(find-function-do-it function nil 'switch-to-buffer))
@ -387,7 +387,7 @@ the point of the definition. The buffer is not selected.
If the variable's definition can't be found in the buffer, return (BUFFER).
The library where VARIABLE is defined is searched for in FILE or
`find-function-source-path', if non nil, otherwise in `load-path'."
`find-function-source-path', if non-nil, otherwise in `load-path'."
(if (not variable)
(error "You didn't specify a variable")
(let ((library (or file
@ -406,7 +406,7 @@ places point before the definition.
Set mark before moving, if the buffer already existed.
The library where VARIABLE is defined is searched for in
`find-function-source-path', if non nil, otherwise in `load-path'.
`find-function-source-path', if non-nil, otherwise in `load-path'.
See also `find-function-recenter-line' and `find-function-after-hook'."
(interactive (find-function-read 'defvar))
(find-function-do-it variable 'defvar 'switch-to-buffer))
@ -436,7 +436,7 @@ variable, `defface' for a face. This function does not switch to the
buffer nor display it.
The library where SYMBOL is defined is searched for in FILE or
`find-function-source-path', if non nil, otherwise in `load-path'."
`find-function-source-path', if non-nil, otherwise in `load-path'."
(cond
((not symbol)
(error "You didn't specify a symbol"))
@ -461,7 +461,7 @@ places point before the definition.
Set mark before moving, if the buffer already existed.
The library where FACE is defined is searched for in
`find-function-source-path', if non nil, otherwise in `load-path'.
`find-function-source-path', if non-nil, otherwise in `load-path'.
See also `find-function-recenter-line' and `find-function-after-hook'."
(interactive (find-function-read 'defface))
(find-function-do-it face 'defface 'switch-to-buffer))

View file

@ -208,22 +208,64 @@ is non-nil.
If variable `beginning-of-defun-function' is non-nil, its value
is called as a function to find the defun's beginning."
(interactive "p")
(if beginning-of-defun-function
(if (> (setq arg (or arg 1)) 0)
(dotimes (i arg)
(funcall beginning-of-defun-function))
;; Better not call end-of-defun-function directly, in case
;; it's not defined.
(end-of-defun (- arg)))
(and arg (< arg 0) (not (eobp)) (forward-char 1))
(interactive "p") ; change this to "P", maybe, if we ever come to pass ARG
; to beginning-of-defun-function.
(unless arg (setq arg 1)) ; The call might not be interactive.
(cond
(beginning-of-defun-function
(if (> arg 0)
(dotimes (i arg)
(funcall beginning-of-defun-function))
;; Better not call end-of-defun-function directly, in case
;; it's not defined.
(end-of-defun (- arg))))
((or defun-prompt-regexp open-paren-in-column-0-is-defun-start)
(and (< arg 0) (not (eobp)) (forward-char 1))
(and (re-search-backward (if defun-prompt-regexp
(concat (if open-paren-in-column-0-is-defun-start
"^\\s(\\|" "")
"\\(?:" defun-prompt-regexp "\\)\\s(")
"^\\s(")
nil 'move (or arg 1))
(progn (goto-char (1- (match-end 0)))) t)))
nil 'move arg)
(progn (goto-char (1- (match-end 0)))) t))
(t
;; Column 0 has no significance - so scan forward from BOB to see how
;; nested point is, then carry on from there.
(let* ((floor (point-min))
(ceiling (point-max))
(pps-state (let (syntax-begin-function
font-lock-beginning-of-syntax-function)
(syntax-ppss)))
(nesting-depth (nth 0 pps-state)))
(save-restriction
(widen)
;; Get outside of any string or comment.
(if (nth 8 pps-state)
(goto-char (nth 8 pps-state)))
(cond
((> arg 0)
(when (> nesting-depth 0)
(up-list (- nesting-depth))
(setq arg (1- arg)))
;; We're now outside of any defun.
(backward-list arg)
(if (< (point) floor) (goto-char floor)))
((< arg 0)
(cond
((> nesting-depth 0)
(up-list nesting-depth)
(setq arg (1+ arg)))
((not (looking-at "\\s("))
;; We're between defuns, and not at the start of one.
(setq arg (1+ arg))))
(forward-list (- arg))
(down-list)
(backward-char)
(if (> (point) ceiling) (goto-char ceiling)))))))))
(defvar end-of-defun-function nil
"If non-nil, function for function `end-of-defun' to call.

View file

@ -191,7 +191,7 @@ secondary selection instead of the primary selection."
"If there is a selection, delete the text it covers, and copy it to
both the kill ring and the Clipboard."
(interactive)
(or (x-selection-owner-p) (error "emacs does not own the primary selection"))
(or (x-selection-owner-p) (error "Emacs does not own the primary selection"))
(setq last-command nil)
(or primary-selection-extent
(error "the primary selection is not an extent?"))
@ -205,7 +205,7 @@ both the kill ring and the Clipboard."
"If there is a selection, delete the text it covers *without* copying it to
the kill ring or the Clipboard."
(interactive)
(or (x-selection-owner-p) (error "emacs does not own the primary selection"))
(or (x-selection-owner-p) (error "Emacs does not own the primary selection"))
(setq last-command nil)
(or primary-selection-extent
(error "the primary selection is not an extent?"))
@ -219,7 +219,7 @@ the kill ring or the Clipboard."
"If there is a selection, copy it to both the kill ring and the Clipboard."
(interactive)
(setq last-command nil)
(or (x-selection-owner-p) (error "emacs does not own the primary selection"))
(or (x-selection-owner-p) (error "Emacs does not own the primary selection"))
(or primary-selection-extent
(error "the primary selection is not an extent?"))
(save-excursion

View file

@ -161,7 +161,7 @@ Ignores leading comment characters."
(set-syntax-table stab)
(if arg
(insert (pp-to-string (eval exp)))
(pp-eval-expression exp))))
(pp-eval-expression (eval exp)))))
;;; Test cases for quote
;; (pp-eval-expression ''(quote quote))

View file

@ -253,6 +253,7 @@ Except for Lisp syntax this is the same as `reb-regexp'.")
(kill-all-local-variables)
(setq major-mode 'reb-mode
mode-name "RE Builder")
(set (make-local-variable 'blink-matching-paren) nil)
(use-local-map reb-mode-map)
(reb-mode-common)
(run-mode-hooks 'reb-mode-hook))

View file

@ -88,7 +88,7 @@
;;;###autoload
(defun regexp-opt (strings &optional paren)
"Return a regexp to match a string in STRINGS.
"Return a regexp to match a string in the list STRINGS.
Each string should be unique in STRINGS and should not contain any regexps,
quoted or not. If optional PAREN is non-nil, ensure that the returned regexp
is enclosed by at least one regexp grouping construct.

View file

@ -184,17 +184,17 @@ and that each of these directories contains a file called XXX.el. Then
XXX.el in the site-lisp directory is referred to by all of:
\(require 'XXX\), \(autoload .... \"XXX\"\), \(load-library \"XXX\"\) etc.
The first XXX.el file prevents emacs from seeing the second \(unless
the second is loaded explicitly via load-file\).
The first XXX.el file prevents Emacs from seeing the second \(unless
the second is loaded explicitly via `load-file'\).
When not intended, such shadowings can be the source of subtle
problems. For example, the above situation may have arisen because the
XXX package was not distributed with versions of emacs prior to
19.30. An emacs maintainer downloaded XXX from elsewhere and installed
it. Later, XXX was updated and included in the emacs distribution.
Unless the emacs maintainer checks for this, the new version of XXX
XXX package was not distributed with versions of Emacs prior to
19.30. An Emacs maintainer downloaded XXX from elsewhere and installed
it. Later, XXX was updated and included in the Emacs distribution.
Unless the Emacs maintainer checks for this, the new version of XXX
will be hidden behind the old \(which may no longer work with the new
emacs version\).
Emacs version\).
This function performs these checks and flags all possible
shadowings. Because a .el file may exist without a corresponding .elc

View file

@ -1,4 +1,4 @@
;;; emacs-lock.el --- prevents you from exiting emacs if a buffer is locked
;;; emacs-lock.el --- prevents you from exiting Emacs if a buffer is locked
;; Copyright (C) 1994, 1997, 2002, 2003, 2004,
;; 2005, 2006 Free Software Foundation, Inc
@ -27,18 +27,18 @@
;;; Commentary:
;; This code sets a buffer-local variable to t if toggle-emacs-lock is run,
;; then if the user attempts to exit emacs, the locked buffer name will be
;; then if the user attempts to exit Emacs, the locked buffer name will be
;; displayed and the exit aborted. This is just a way of protecting
;; yourself from yourself. For example, if you have a shell running a big
;; program and exiting emacs would abort that program, you may want to lock
;; program and exiting Emacs would abort that program, you may want to lock
;; that buffer, then if you forget about it after a while, you won't
;; accidentally exit emacs. To unlock the buffer, just goto the buffer and
;; accidentally exit Emacs. To unlock the buffer, just goto the buffer and
;; run toggle-emacs-lock again.
;;; Code:
(defvar emacs-lock-from-exiting nil
"Whether emacs is locked to prevent exiting. See `check-emacs-lock'.")
"Whether Emacs is locked to prevent exiting. See `check-emacs-lock'.")
(make-variable-buffer-local 'emacs-lock-from-exiting)
(defvar emacs-lock-buffer-locked nil
@ -48,34 +48,30 @@
(defun check-emacs-lock ()
"Check if variable `emacs-lock-from-exiting' is t for any buffer.
If any t is found, signal error and display the locked buffer name."
(let ((buffers (buffer-list)))
(save-excursion
(while buffers
(set-buffer (car buffers))
(if emacs-lock-from-exiting
(error "Emacs is locked from exit due to buffer: %s" (buffer-name))
(setq buffers (cdr buffers)))))))
If any locked buffer is found, signal error and display the buffer's name."
(save-excursion
(dolist (buffer (buffer-list))
(set-buffer buffer)
(when emacs-lock-from-exiting
(error "Emacs is locked from exit due to buffer: %s" (buffer-name))))))
(defun toggle-emacs-lock ()
"Toggle `emacs-lock-from-exiting' between t and nil for the current buffer.
"Toggle `emacs-lock-from-exiting' for the current buffer.
See `check-emacs-lock'."
(interactive)
(if emacs-lock-from-exiting
(setq emacs-lock-from-exiting nil)
(setq emacs-lock-from-exiting t))
(setq emacs-lock-from-exiting (not emacs-lock-from-exiting))
(if emacs-lock-from-exiting
(message "Buffer is now locked")
(message "Buffer is now unlocked")))
(defun emacs-lock-check-buffer-lock ()
"Check if variable `emacs-lock-from-exiting' is t for a buffer.
If t is found, signal error and display the locked buffer name."
(if emacs-lock-from-exiting
(error "Buffer `%s' is locked, can't delete it" (buffer-name))))
If the buffer is locked, signal error and display its name."
(when emacs-lock-from-exiting
(error "Buffer `%s' is locked, can't delete it" (buffer-name))))
; These next defuns make it so if you exit a shell that is locked, the lock
; is shut off for that shell so you can exit emacs. Same for telnet.
; is shut off for that shell so you can exit Emacs. Same for telnet.
; Also, if a shell or a telnet buffer was locked and the process killed,
; turn the lock back on again if the process is restarted.

View file

@ -202,7 +202,7 @@
Sometimes, edt-mapper will ignore a key you press, and just continue to
prompt for the same key. This can happen when your window manager sucks
up the key and doesn't pass it on to emacs, or it could be an emacs bug.
up the key and doesn't pass it on to Emacs, or it could be an Emacs bug.
Either way, there's nothing that edt-mapper can do about it. You must
press RETURN, to skip the current key and continue. Later, you and/or
your local system guru can try to figure out why the key is being ignored.

View file

@ -432,7 +432,7 @@ CSI is DEC's name for the sequence <ESC>[.")
(let ((map (make-keymap)))
(define-key map "\e[" GOLD-CSI-map) ; GOLD-CSI map
(define-key map "\eO" GOLD-SS3-map) ; GOLD-SS3 map
;;
;;
(define-key map "\C-A" 'tpu-toggle-overwrite-mode) ; ^A
(define-key map "\C-B" 'nil) ; ^B
(define-key map "\C-C" 'nil) ; ^C
@ -557,7 +557,7 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.")
(defvar SS3-map
(let ((map (make-sparse-keymap)))
(define-key map "P" GOLD-map) ; GOLD map
;;
;;
(define-key map "A" 'tpu-previous-line) ; up
(define-key map "B" 'tpu-next-line) ; down
(define-key map "C" 'tpu-forward-char) ; right
@ -1141,7 +1141,7 @@ This is useful for inserting control characters."
R Toggle rectangular mode for remove and insert
S Search and substitute - line mode REPLACE command
^T Toggle control key bindings between TPU and emacs
^T Toggle control key bindings between TPU and Emacs
U Undo - undo the last edit
W Write - save current buffer
X Exit - save all modified buffers and exit
@ -1292,7 +1292,7 @@ kills modified buffers without asking."
(kill-buffer (current-buffer)))
(defun tpu-save-all-buffers-kill-emacs nil
"Save all buffers and exit emacs."
"Save all buffers and exit Emacs."
(interactive)
(let ((delete-old-versions t))
(save-buffers-kill-emacs t)))
@ -1852,8 +1852,8 @@ A negative argument means replace all occurrences of the search string."
(message "Replaced %s occurrence%s." strings (if (not (= 1 strings)) "s" ""))))
(defun tpu-emacs-replace (&optional dont-ask)
"A TPU-edt interface to the emacs replace functions. If TPU-edt is
currently in regular expression mode, the emacs regular expression
"A TPU-edt interface to the Emacs replace functions. If TPU-edt is
currently in regular expression mode, the Emacs regular expression
replace functions are used. If an argument is supplied, replacements
are performed without asking. Only works in forward direction."
(interactive "P")
@ -2285,7 +2285,7 @@ Accepts a prefix argument for the number of tpu-pan-columns to scroll."
(setq tpu-control-keys t))
(defun tpu-reset-control-keys (tpu-style)
"Set control keys to TPU or emacs style functions."
"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)))

View file

@ -45,7 +45,7 @@
;; external variables
(defvar vip-emacs-local-map nil
"Local map used in emacs mode. (Buffer-specific.)")
"Local map used in Emacs mode. (Buffer-specific.)")
(defvar vip-insert-local-map nil
"Local map used in insert command mode. (Buffer-specific.)")
@ -447,7 +447,7 @@ Type `n' to quit this window for now.\n")
(vip-change-mode 'insert-mode))
(defun vip-change-mode-to-emacs ()
"Change mode to emacs mode."
"Change mode to Emacs mode."
(interactive)
(vip-change-mode 'emacs-mode))

View file

@ -438,7 +438,7 @@ delete the text being replaced, as in standard Vi."
;; confused in some cases. So, this var is nulled for now.
;; (defcustom viper-emacs-state-cursor-color "Magenta"
(defcustom viper-emacs-state-cursor-color nil
"Cursor color when Viper is in emacs state."
"Cursor color when Viper is in Emacs state."
:type 'string
:group 'viper)
(if (fboundp 'make-variable-frame-local)

View file

@ -144,7 +144,7 @@ viper-insert-basic-map. Not recommended, except for novice users.")
"Auxiliary map for global user-defined bindings in Emacs state.")
(defvar viper-emacs-kbd-map (make-sparse-keymap)
"This keymap keeps Vi-style kbd macros for emacs mode.")
"This keymap keeps Vi-style kbd macros for Emacs mode.")
(viper-deflocalvar viper-emacs-local-user-map (make-sparse-keymap)
"Auxiliary map for local user-defined bindings in Emacs state.")
@ -160,10 +160,10 @@ viper-insert-basic-map. Not recommended, except for novice users.")
;; Some important keys used in viper
(defcustom viper-toggle-key [(control ?z)] ; "\C-z"
"The key used to change states from emacs to Vi and back.
"The key used to change states from Emacs to Vi and back.
In insert mode, this key also functions as Meta.
Enter as a sexp. Examples: \"\\C-z\", [(control ?z)]."
Enter as a sexp. Examples: \"\\C-z\", [(control ?z)]."
:type 'sexp
:group 'viper
:set (lambda (symbol value)

View file

@ -359,7 +359,7 @@ user decide when to invoke Viper in a major mode."
(defcustom viper-mode (cond (noninteractive nil)
(t 'ask))
"To Viperize or not to Viperize.
If t, viperize emacs. If nil -- don't. If `ask', ask the user.
If t, viperize Emacs. If nil -- don't. If `ask', ask the user.
This variable is used primatily when Viper is being loaded.
Must be set in `~/.emacs' before Viper is loaded.
@ -502,10 +502,10 @@ unless it is coming up in a wrong Viper state."
The list has the structure: ((mode viper-state keymap) (mode viper-state
keymap) ...). If `mode' is on the list, the `kemap' will be made active (on
the minor-mode-map-alist) in the specified viper state.
If you change this list, have to restart emacs for the change to take effect.
However, if you did the change through the customization widget, then emacs
If you change this list, have to restart Emacs for the change to take effect.
However, if you did the change through the customization widget, then Emacs
needs to be restarted only if you deleted a triple mode-state-keymap from the
list. No need to restart emacs in case of insertion or modification of an
list. No need to restart Emacs in case of insertion or modification of an
existing triple."
:type '(repeat
(list symbol
@ -891,7 +891,7 @@ It also can't undo some Viper settings."
(eval-after-load
"passwd"
'(defadvice read-passwd-1 (before viper-passwd-ad activate)
"Switch to emacs state while reading password."
"Switch to Emacs state while reading password."
(viper-change-state-to-emacs)))
(defadvice self-insert-command (around viper-self-insert-ad activate)
@ -939,7 +939,7 @@ It also can't undo some Viper settings."
(eval-after-load
"rmailedit"
'(defadvice rmail-cease-edit (after viper-rmail-advice activate)
"Switch to emacs state when done editing message."
"Switch to Emacs state when done editing message."
(viper-change-state-to-emacs)))
;; In case RMAIL was loaded before Viper.
(defadvice rmail-cease-edit (after viper-rmail-advice activate)
@ -1121,7 +1121,7 @@ It also can't undo some Viper settings."
(save-window-excursion
(with-output-to-temp-buffer " *viper-info*"
(princ "
You have loaded Viper, and are about to Viperize your emacs!
You have loaded Viper, and are about to Viperize your Emacs!
Viper is a Package for Emacs Rebels and a venomous VI PERil,

View file

@ -1,8 +1,228 @@
2006-11-28 Juanma Barranquero <lekktu@gmail.com>
* erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
(erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
(erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
(erc-modules, erc-display-message-highlight, erc-process-input-line)
(erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
(erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
(erc-echo-notice-in-first-user-buffer, erc-connection-established)
(erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
(erc-command-symbol, erc-add-query, erc-process-script-line)
(erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
(erc-script-echo): Fix typos in docstrings.
(erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
(define-erc-module, erc-once-with-server-event)
(erc-once-with-server-event-global, erc-debug-irc-protocol)
(erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
(erc-update-current-channel-member, erc-load-script):
(erc-mode-line-away-status-format): Doc fixes.
2006-11-24 Juanma Barranquero <lekktu@gmail.com>
* erc.el (erc-after-connect, erc-open-ssl-stream)
(erc-display-line-1, erc-display-line):
* erc-backend.el (005): Fix space/tab mixup in docstrings.
2006-11-20 Michael Olson <mwolson@gnu.org>
* erc.el (erc-version-string): Call this Version 5.2 stable
pre-release, since it diverges slightly from our 5.2 branch, in
that unstable features are not included.
(erc-update-modules): Display better error message when module not
found.
2006-11-12 Michael Olson <mwolson@gnu.org>
* erc-log.el: Save all log buffers when Emacs exits, in case
someone ignores the warning about open processes. Remove the
advice code in the commentary.
(erc-save-query-buffers): Docfix.
(erc-log-save-all-buffers): New function that saves all ERC
buffers to logs.
(erc-current-logfile): Fix bug in filename selection, where the
current buffer was erroneously being preferred over the given
buffer.
2006-11-08 Michael Olson <mwolson@gnu.org>
* erc.el (erc-string-to-port): Avoid error when a numerical port
is passed. Thanks to Zekeriya KOÇ for the report.
2006-11-08 Łukasz Demianiuk <ldemianiuk@gmail.com> (tiny change)
* erc.el (erc-header-line): Fix typo.
2006-11-06 Juanma Barranquero <lekktu@gmail.com>
* erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
* erc.el (read-passwd):
* erc-autoaway.el (erc-autoaway-reestablish-idletimer):
* erc-truncate.el (truncate): Fix typo in docstring.
2006-10-21 Michael Olson <mwolson@gnu.org>
* erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
first loading iswitchb. Thanks to Leo for the report.
2006-10-10 Michael Olson <mwolson@gnu.org>
* erc.el (erc-default-port): Make the default be 6667 instead of
ircd. since Mac OS X apparently has problems with looking up that
port name.
* erc-backend.el (353): Receive names after displaying the initial
message, instead of before.
2006-10-05 Diane Murray <disumu@x3y2z1.net>
* erc.el (erc-my-nick-face): New face.
(erc): Use FULL-NAME argument, not `erc-user-full-name'. This
fixes a bug where the :full-name argument passed to the function
was not respected.
(erc-format-my-nick): Use `erc-my-nick-face'. This should help
make it easier to find messages you sent in conversations when
`erc-show-my-nick' is non-nil.
(erc-compute-server): Doc fix.
2006-09-11 Michael Olson <mwolson@gnu.org>
* erc-nicklist.el (erc-nicklist-insert-contents): Add missing
parenthesis. Thanks to Stephan Stahl for the report.
2006-09-10 Eric Hanchrow <offby1@blarg.net>
* erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
instead of a single user.
2006-09-10 Michael Olson <mwolson@gnu.org>
* erc.el (erc-generate-new-buffer-name): If this is a server
buffer and a process exists already, create a new buffer.
(erc-open): If the IRC session was continued, restore the old
point. Thanks to Stephan Stahl for the report.
(erc-member-ignore-case): Coding style tweak.
(erc-cmd-UNIGNORE): Quote the user before comparison. If we don't
find the user listed verbatim, try to match them against the list
using string-match. In this case, prompt as to whether the regexp
should be removed.
(erc-ignored-user-p): Remove CL-ism.
* erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
whether we are already away.
* erc-menu.el: Fix potential compiler warning.
2006-09-07 Diane Murray <disumu@x3y2z1.net>
* erc.el: Updated Commentary and URL.
(erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
(erc-arrange-session-in-multiple-windows): No need to check if
`erc-server-process' is bound.
(erc-server-buffer-live-p): Doc fix.
(erc-part-from-channel): Don't use any initial contents at prompt.
(erc-format-nick, erc-format-@nick): Doc fix. Use `when'.
(s367): Fixed to support only banmask and channel which is the
standard. Also, there's no reason to add a message to each banned
user entry trying to persuade the user to use /banlist instead of
/mode #channel +b. That part of the message was a little
confusing, anyways.
(s367-set-by): New catalog entry. The user who set the ban and
the time of ban seem to be specific to only certain servers such
as freenode.
* erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
* erc-backend.el (erc-server-process-alive): No need to check if
`erc-server-process' is bound.
(367): Use s367 or s367-set-by where appropriate.
* erc-compat.el: Fixed URL.
* erc-dcc.el: Updated copyright years. Added Usage section.
Changed supported Emacs version number from 21.3.50 to 22 in
Commentary.
* erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
to check if `erc-server-process' is bound.
* erc-nicklist.el: Added to the Commentary section an explanation
that `erc-nicklist-quit' should be called from within the nicklist
buffer. Set file coding to utf-8 so a contributor's name is
displayed correctly.
(erc-nicklist-icons-directory): Use customize type directory
instead of string.
(erc-nicklist-insert-contents): Set bbdb-nick to an empty string
if it wasn't found. This fixes a bug where an error would occur
when using `string=' on bbdb-nick if it was nil.
* erc-replace.el: Removed URL from file information since it
doesn't exist.
* erc-sound.el: Updated copyright years. Fixed Commentary and
added Usage section.
(define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
`erc-ctcp-query-SOUND-hook' here. Removed the keybinding
definitions.
(erc-play-sound, erc-default-sound, erc-cmd-SOUND)
(erc-ctcp-query-SOUND): Doc fix.
(erc-play-command): Removed, not necessary anymore.
(erc-ctcp-query-SOUND-hook): Set to nil as default. Moved up
higher in code, added docstring.
(erc-play-sound): Use `play-sound-file'. It exists in GNU Emacs
as well since version 21 or earlier. Removed commented-out older
version of function.
* NEWS: Fixed formatting, added channel tracking change.
2006-09-03 Diane Murray <disumu@x3y2z1.net>
* erc.el: M-x erc RET can now be used to start ERC.
(erc-open): Renamed from `erc'.
(erc-before-connect): Change erc-select to erc.
(erc): Renamed from `erc-select'. Use `erc-open'.
(erc-select): Defined as alias of `erc'.
(erc-ssl): Renamed from `erc-select-ssl'. Use `erc'.
(erc-select-ssl): Defined as alias of `erc-ssl'.
(erc-cmd-SERVER): Use `erc'.
(erc-query, erc-handle-irc-url): Use `erc-open'.
* erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
* erc-menu.el (erc-menu-definition): Use `erc'.
* erc-networks.el: Updated copyright years.
(erc-server-select): Use keyword arguments when calling `erc'.
* erc.texi (Getting Started, Connecting): Changed erc-select to
erc.
* NEWS: Added note about these changes.
2006-08-21 Diane Murray <disumu@x3y2z1.net>
* erc-track.el (erc-track-mode-line-mouse-face): New variable.
(erc-make-mode-line-buffer-name): Add help-echo and mouse-face
properties to channel name.
2006-08-14 Diane Murray <disumu@x3y2z1.net>
* erc-menu.el: Updated copyright years. Removed EmacsWiki URL.
(erc-menu-definition): Name the menu "ERC" instead of "IRC" to
avoid confusion with rcirc and other clients.
2006-08-13 Romain Francoise <romain@orebokech.com>
* erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
prompt with a space.
2006-08-11 Michael Olson <mwolson@gnu.org>
* erc-fill.el (erc-fill): Skip any initial empty lines so that we
avoid errors when inserting disconnect messages and other messages
that begin with newlines.
2006-08-07 Michael Olson <mwolson@gnu.org>
* erc-backend.el (erc-process-sentinel-1): Use erc-display-message
@ -20,6 +240,9 @@
2006-08-06 Michael Olson <mwolson@gnu.org>
* erc-backend.el (erc-server-send-queue): Update from Circe
version of this function.
* erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
multi-tty Emacs.
(erc-select-startup-file): Fix bug introduced by recent change.
@ -256,7 +479,7 @@
2006-05-01 Edward O'Connor <ted@oconnor.cx>
* erc-goodies.el: (erc-handle-irc-url): New function, suitable as
* erc-goodies.el (erc-handle-irc-url): New function, suitable as
a value for `url-irc-function'.
2006-04-18 Diane Murray <disumu@x3y2z1.net>
@ -360,14 +583,14 @@
2006-02-12 Michael Olson <mwolson@gnu.org>
* erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el,
erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el,
erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el,
erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el,
erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el,
erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el,
erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el: Add
2006 to copyright years, to comply with the changed guidelines.
* erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
* erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
* erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
* erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
* erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
* erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
* erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
Add 2006 to copyright years, to comply with the changed guidelines.
2006-02-11 Michael Olson <mwolson@gnu.org>
@ -528,7 +751,7 @@
2006-01-29 Edward O'Connor <ted@oconnor.cx>
* erc-viper.el: Remove. Now that ERC is included in Emacs, these
* erc-viper.el: Remove. Now that ERC is included in Emacs, these
work-arounds live in Viper itself.
2006-01-28 Michael Olson <mwolson@gnu.org>
@ -669,10 +892,10 @@
2006-01-22 Johan Bockgård <bojohan@users.sourceforge.net>
* erc-track.el: Use `(eval-when-compile (require 'cl))' (for
`case'). Doc fixes.
`case'). Doc fixes.
(erc-find-parsed-property): Simplify.
(erc-track-get-active-buffer): Fix logic. Simplify.
(erc-track-switch-buffer): Remove unused variable `dir'. Simplify.
(erc-track-get-active-buffer): Fix logic. Simplify.
(erc-track-switch-buffer): Remove unused variable `dir'. Simplify.
* erc-speak.el: Doc fixes.
(erc-speak-region): `propertize' --> `erc-propertize'.
@ -863,6 +1086,7 @@ See ChangeLog.05 for earlier changes.
;; Local Variables:
;; coding: utf-8
;; add-log-time-zone-rule: t
;; End:
;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a

View file

@ -38,7 +38,7 @@ yourself back when you type something."
(defvar erc-autoaway-idletimer nil
"The Emacs idletimer.
This is only used when `erc-autoaway-use-emacs-idle' is non-nil.")
This is only used when `erc-autoaway-idle-method' is set to 'emacs.")
;;;###autoload (autoload 'erc-autoaway-mode "erc-autoaway")
(define-erc-module autoaway nil
@ -136,7 +136,7 @@ See `erc-auto-discard-away'."
(eval-when-compile (defvar erc-autoaway-idle-seconds))
(defun erc-autoaway-reestablish-idletimer ()
"Reestablish the emacs idletimer.
"Reestablish the Emacs idletimer.
If `erc-autoaway-idle-method' is 'emacs, you must call this
function each time you change `erc-autoaway-idle-seconds'."
(interactive)
@ -206,6 +206,7 @@ exceeds `erc-autoaway-idle-seconds'."
;; this function is called from `erc-timer-hook', which is called
;; whenever the server sends something to the client.
(when (and erc-auto-set-away
(not erc-autoaway-caused-away)
(not (erc-away-p)))
(let ((idle-time (erc-time-diff erc-autoaway-last-sent-time
current-time)))

View file

@ -416,7 +416,7 @@ Currently this is called by `erc-send-input'."
(defun erc-server-process-alive ()
"Return non-nil when `erc-server-process' is open or running."
(and (boundp 'erc-server-process)
(and erc-server-process
(processp erc-server-process)
(memq (process-status erc-server-process) '(run open))))
@ -512,8 +512,8 @@ action."
(not (string-match "^failed with code 111" event)))
;; Yuck, this should perhaps funcall
;; erc-server-reconnect-function with no args
(erc erc-session-server erc-session-port erc-server-current-nick
erc-session-user-full-name t erc-session-password)
(erc-open erc-session-server erc-session-port erc-server-current-nick
erc-session-user-full-name t erc-session-password)
;; terminate, do not reconnect
(erc-display-message nil 'error (current-buffer)
'terminated ?e event))))
@ -673,7 +673,8 @@ protection algorithm."
(error nil)))))
(when erc-server-flood-queue
(setq erc-server-flood-timer
(run-at-time 2 nil #'erc-server-send-queue buffer))))))
(run-at-time (+ 0.2 erc-server-flood-penalty)
nil #'erc-server-send-queue buffer))))))
(defun erc-message (message-command line &optional force)
"Send LINE to the server as a privmsg or a notice.
@ -1038,11 +1039,11 @@ add things to `%s' instead."
(let* ((str (cond
;; If I have joined a channel
((erc-current-nick-p nick)
(setq buffer (erc erc-session-server erc-session-port
nick erc-session-user-full-name
nil nil
erc-default-recipients chnl
erc-server-process))
(setq buffer (erc-open erc-session-server erc-session-port
nick erc-session-user-full-name
nil nil
erc-default-recipients chnl
erc-server-process))
(when buffer
(set-buffer buffer)
(erc-add-default-channel chnl)
@ -1225,7 +1226,7 @@ add things to `%s' instead."
(when buffer
(with-current-buffer buffer
;; update the chat partner info. Add to the list if private
;; message. We will accumulate private identities indefinitely
;; message. We will accumulate private identities indefinitely
;; at this point.
(erc-update-channel-member (if privp nick tgt) nick nick
privp nil nil host login nil nil t)
@ -1340,7 +1341,7 @@ add things to `%s' instead."
According to RFC 2812, suggests alternate servers on the network.
Many servers, however, use this code to show which parameters they have set,
for example, the network identifier, maximum allowed topic length, whether
certain commands are accepted and more. See documentation for
certain commands are accepted and more. See documentation for
`erc-server-parameters' for more information on the parameters sent.
A server may send more than one 005 message."
@ -1583,11 +1584,11 @@ See `erc-display-server-message'." nil
"NAMES notice." nil
(let ((channel (third (erc-response.command-args parsed)))
(users (erc-response.contents parsed)))
(erc-with-buffer (channel proc)
(erc-channel-receive-names users))
(erc-display-message parsed 'notice (or (erc-get-buffer channel proc)
'active)
's353 ?c channel ?u users)))
's353 ?c channel ?u users)
(erc-with-buffer (channel proc)
(erc-channel-receive-names users))))
(define-erc-response-handler (366)
"End of NAMES." nil
@ -1598,11 +1599,16 @@ See `erc-display-server-message'." nil
"Channel ban list entries" nil
(multiple-value-bind (channel banmask setter time)
(cdr (erc-response.command-args parsed))
(erc-display-message parsed 'notice 'active 's367
?c channel
?b banmask
?s setter
?t time)))
;; setter and time are not standard
(if setter
(erc-display-message parsed 'notice 'active 's367-set-by
?c channel
?b banmask
?s setter
?t (or time ""))
(erc-display-message parsed 'notice 'active 's367
?c channel
?b banmask))))
(define-erc-response-handler (368)
"End of channel ban list" nil

View file

@ -3,7 +3,7 @@
;; Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
;; Author: Alex Schroeder <alex@gnu.org>
;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsIRCClient
;; URL: http://www.emacswiki.org/cgi-bin/wiki/ERC
;; This file is part of GNU Emacs.

View file

@ -35,7 +35,9 @@
;; rewritten to support the way how ERC operates. Server socket support
;; was added for DCC CHAT and SEND afterwards. Thanks
;; to the original authors for their work.
;;
;;; Usage:
;; To use this file, put
;; (require 'erc-dcc)
;; in your .emacs.
@ -49,7 +51,7 @@
;; /dcc send nick file - Offer DCC SEND to nick
;;
;; Please note that offering DCC connections (offering chats and sending
;; files) is only supported with Emacs 21.3.50 (CVS).
;; files) is only supported with Emacs 22.
;;; Code:
@ -808,7 +810,7 @@ other client."
(erc-ip-to-decimal (nth 0 contact))
(nth 1 contact)
size)))
(error "`make-network-process' not supported by your emacs.")))
(error "`make-network-process' not supported by your Emacs")))
;;; GET handling

View file

@ -122,7 +122,15 @@ characters. Set to nil to disable."
You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'."
(unless (erc-string-invisible-p (buffer-substring (point-min) (point-max)))
(when erc-fill-function
(funcall erc-fill-function))))
;; skip initial empty lines
(goto-char (point-min))
(save-match-data
(while (and (looking-at "[ \t\n]*$")
(= (forward-line 1) 0))))
(unless (eobp)
(save-restriction
(narrow-to-region (point) (point-max))
(funcall erc-fill-function))))))
(defun erc-fill-static ()
"Fills a text such that messages start at column `erc-fill-static-center'."

View file

@ -91,14 +91,14 @@
" "))
(define-ibuffer-column erc-server-name (:name "Server")
(if (and (boundp 'erc-server-process) (processp erc-server-process))
(if (and erc-server-process (processp erc-server-process))
(with-current-buffer (process-buffer erc-server-process)
(or erc-server-announced-name erc-session-server))
""))
(define-ibuffer-column erc-target (:name "Target")
(if (eq major-mode 'erc-mode)
(cond ((and (boundp 'erc-server-process) (processp erc-server-process)
(cond ((and erc-server-process (processp erc-server-process)
(eq (current-buffer) (process-buffer erc-server-process)))
(concat "Server " erc-session-server ":"
(erc-port-to-string erc-session-port)))
@ -125,7 +125,7 @@
""))
(define-ibuffer-column erc-away (:name "A")
(if (and (boundp 'erc-server-process)
(if (and erc-server-process
(processp erc-server-process)
(with-current-buffer (process-buffer erc-server-process)
erc-away))

View file

@ -43,14 +43,6 @@
;;
;; (require 'erc-log)
;;
;; You may optionally want the following code, to save all ERC buffers
;; without confirmation when exiting emacs:
;;
;; (defadvice save-buffers-kill-emacs (before save-logs (&rest args) activate)
;; (save-some-buffers t (lambda ()
;; (when (and (eq major-mode 'erc-mode)
;; (not (null buffer-file-name))) t))))
;;
;; If you only want to save logs for some buffers, customise the
;; variable `erc-enable-logging'.
@ -213,6 +205,7 @@ also be a predicate function. To only log when you are not set away, use:
(add-hook 'erc-send-post-hook 'erc-save-buffer-in-logs))
(add-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
(add-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
(add-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
(add-hook 'erc-quit-hook 'erc-conditional-save-queries)
(add-hook 'erc-part-hook 'erc-conditional-save-buffer)
;; append, so that 'erc-initialize-log-marker runs first
@ -225,6 +218,7 @@ also be a predicate function. To only log when you are not set away, use:
(remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
(remove-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
(remove-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
(remove-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
(remove-hook 'erc-quit-hook 'erc-conditional-save-queries)
(remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
(remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
@ -263,7 +257,7 @@ Returns nil iff `erc-server-buffer-p' returns t."
(not (erc-server-buffer-p)))))
(defun erc-save-query-buffers (process)
"Save all buffers process."
"Save all buffers of the given PROCESS."
(erc-with-all-buffers-of-server process
nil
(erc-save-buffer-in-logs)))
@ -278,6 +272,12 @@ Returns nil iff `erc-server-buffer-p' returns t."
(when erc-save-queries-on-quit
(erc-save-query-buffers process)))
;; Make sure that logs get saved, even if someone overrides the active
;; process prompt for a quick exit from Emacs
(defun erc-log-save-all-buffers ()
(dolist (buffer (erc-buffer-list))
(erc-save-buffer-in-logs buffer)))
;;;###autoload
(defun erc-logging-enabled (&optional buffer)
"Return non-nil if logging is enabled for BUFFER.
@ -309,7 +309,7 @@ The result is converted to lowercase, as IRC is case-insensitive"
(erc-log-standardize-name
(funcall erc-generate-log-file-name-function
(or buffer (current-buffer))
(or (erc-default-target) (buffer-name buffer))
(or (buffer-name buffer) (erc-default-target))
(erc-current-nick)
erc-session-server erc-session-port))
erc-log-channels-directory))

View file

@ -4,7 +4,6 @@
;; Author: Mario Lang <mlang@delysid.org>
;; Keywords: comm, processes, menu
;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcMenu
;; This file is part of GNU Emacs.
@ -29,11 +28,12 @@
;;; Code:
;(require 'erc)
(require 'easymenu)
(defvar erc-menu-definition
(list "IRC"
["Connect to server..." erc-select t]
(list "ERC"
["Connect to server..." erc t]
["Disconnect from server..." erc-quit-server erc-server-connected]
"-"
["List channels..." erc-list-channels

View file

@ -809,7 +809,7 @@ As an example:
(erc-ports-list (nth 3 srv))
(list (nth 3 srv))))
(port (nth (random (length ports)) ports)))
(erc host port erc-nick erc-user-full-name t)))
(erc :server host :port port)))
;;; The following experimental
;; It does not work yet, help me with it if you

View file

@ -29,7 +29,7 @@
;; This provides a minimal mIRC style nicklist buffer for ERC. To
;; activate, do M-x erc-nicklist RET in the channel buffer you want
;; the nicklist to appear for. To close and quit the nicklist
;; buffer, do M-x erc-nicklist-quit RET.
;; buffer, do M-x erc-nicklist-quit RET from within the nicklist buffer.
;;
;; TODO:
;; o Somehow associate nicklist windows with channel windows so they
@ -97,7 +97,7 @@ By \"chat medium\", we mean IRC, AOL, MSN, ICQ, etc."
"*Directory of the PNG files for chat icons.
Icons are displayed if `erc-nicklist-use-icons' is non-nil."
:group 'erc-nicklist
:type 'string)
:type 'directory)
(defcustom erc-nicklist-voiced-position 'bottom
"*Position of voiced nicks in the nicklist.
@ -207,7 +207,9 @@ Seach for the BBDB record of this contact. If not found, return nil."
(channels (erc-server-user-buffers server-user))
(op (erc-channel-user-op channel-user))
(voice (erc-channel-user-voice channel-user))
(bbdb-nick (erc-nicklist-search-for-nick (concat login "@" host)))
(bbdb-nick (or (erc-nicklist-search-for-nick
(concat login "@" host))
""))
(away-status (if voice "" "\n(Away)"))
(balloon-text (concat bbdb-nick (if (string= "" bbdb-nick)
"" "\n")
@ -406,6 +408,7 @@ list has all the voiced users according to
;; Local Variables:
;; indent-tabs-mode: t
;; tab-width: 8
;; coding: utf-8
;; End:
;; arch-tag: db37a256-87a7-4544-bd90-e5f16c9f5ca5

View file

@ -5,7 +5,6 @@
;; Author: Andreas Fuchs <asf@void.at>
;; Maintainer: Mario Lang (mlang@delysid.org)
;; Keywords: IRC, client, Internet
;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcReplace
;; This file is part of GNU Emacs.

View file

@ -21,9 +21,26 @@
;;; Commentary:
;; This used to be in erc.el, I (Jorgen) just extracted it from there
;; and put it in this file. Bugs and features are those of the
;; original author.
;; Play sounds when users send you CTCP SOUND messages.
;; This file also defines the command /sound so that you can send
;; sound requests to other users.
;;; Usage:
;; Add the following to your .emacs if you want to play sounds.
;;
;; (require 'erc-soud)
;; (erc-sound-enable)
;;
;; To send requests to other users from within query buffers, type the
;; following:
;;
;; /sound filename optional-message-text
;;
;; You can also type the following:
;;
;; /ctcp nickname sound filename optional-message
;;; Code:
@ -34,9 +51,11 @@
"In ERC sound mode, the client will respond to CTCP SOUND requests
and play sound files as requested."
;; Enable:
((define-key erc-mode-map "\C-c\C-s" 'erc-toggle-sound))
((add-hook 'erc-ctcp-query-SOUND-hook 'erc-ctcp-query-SOUND)
(define-key erc-mode-map "\C-c\C-s" 'erc-toggle-sound))
;; Disable:
((define-key erc-mode-map "\C-c\C-s" 'undefined)))
((remove-hook 'erc-ctcp-query-SOUND-hook 'erc-ctcp-query-SOUND)
(define-key erc-mode-map "\C-c\C-s" 'undefined)))
(erc-define-catalog-entry 'english 'CTCP-SOUND "%n (%u@%h) plays %s:%m")
@ -45,7 +64,7 @@ and play sound files as requested."
:group 'erc)
(defcustom erc-play-sound t
"*Play sound on SOUND ctcp requests (used in ICQ chat)."
"*Play sounds when you receive CTCP SOUND requests."
:group 'erc-sound
:type 'boolean)
@ -55,18 +74,22 @@ and play sound files as requested."
:type '(repeat directory))
(defcustom erc-default-sound nil
"Play this sound if the requested file was not found."
"Play this sound if the requested file was not found.
If this is set to nil or the file doesn't exist a beep will sound."
:group 'erc-sound
:type '(choice (const nil)
file))
(defcustom erc-play-command "play"
"Command for playing sound samples."
:group 'erc-sound
:type 'string)
(defvar erc-ctcp-query-SOUND-hook nil
"Hook to run after receiving a CTCP SOUND request.")
(defun erc-cmd-SOUND (line &optional force)
"Play the sound given in LINE."
"Send a CTCP SOUND message to the default target.
If `erc-play-sound' is non-nil, play the sound as well.
/sound filename optional-message-text
LINE is the text entered, including the command."
(cond
((string-match "^\\s-*\\(\\S-+\\)\\(\\s-.*\\)?$" line)
(let ((file (match-string 1 line))
@ -84,8 +107,8 @@ and play sound files as requested."
t))
(t nil)))
(defvar erc-ctcp-query-SOUND-hook '(erc-ctcp-query-SOUND))
(defun erc-ctcp-query-SOUND (proc nick login host to msg)
"Display a CTCP SOUND message and play sound if `erc-play-sound' is non-nil."
(when (string-match "^SOUND\\s-+\\(\\S-+\\)\\(\\(\\s-+.*\\)\\|\\(\\s-*\\)\\)$" msg)
(let ((sound (match-string 1 msg))
(comment (match-string 2 msg)))
@ -96,42 +119,16 @@ and play sound files as requested."
nil)
(defun erc-play-sound (file)
"Plays a sound file located in one of the directories in `erc-sound-path'
with a command `erc-play-command'."
"Play a sound file located in one of the directories in `erc-sound-path'.
See also `play-sound-file'."
(let ((filepath (erc-find-file file erc-sound-path)))
(if (and (not filepath) erc-default-sound)
(setq filepath erc-default-sound))
(cond ((and filepath (file-exists-p filepath))
(if (and (fboundp 'device-sound-enabled-p)
(device-sound-enabled-p))
; For XEmacs
(play-sound-file filepath)
; (start-process "erc-sound" nil erc-play-command filepath)
(start-process "erc-sound" nil "/bin/tcsh" "-c"
(concat erc-play-command " " filepath))))
(play-sound-file filepath))
(t (beep)))
(erc-log (format "Playing sound file %S" filepath))))
;(defun erc-play-sound (file)
; "Plays a sound file located in one of the directories in `erc-sound-path'
; with a command `erc-play-command'."
; (let ((filepath nil)
; (paths erc-sound-path))
; (while (and paths
; (progn (setq filepath (expand-file-name file (car paths)))
; (not (file-exists-p filepath))))
; (setq paths (cdr paths)))
; (if (and (not (and filepath (file-exists-p filepath)))
; erc-default-sound)
; (setq filepath erc-default-sound))
; (cond ((and filepath (file-exists-p filepath))
;; (start-process "erc-sound" nil erc-play-command filepath)
; (start-process "erc-sound" nil "/bin/tcsh" "-c"
; (concat erc-play-command " " filepath))
; )
; (t (beep)))
; (erc-log (format "Playing sound file %S" filepath))))
(defun erc-toggle-sound (&optional arg)
"Toggles playing sounds on and off. With positive argument,
turns them on. With any other argument turns sounds off."

View file

@ -580,6 +580,11 @@ ARGS are ignored."
(erc-modified-channels-display)
(force-mode-line-update t))))
(defvar erc-track-mouse-face (if (featurep 'xemacs)
'modeline-mousable
'mode-line-highlight)
"The face to use when mouse is over channel names in the mode line.")
(defun erc-make-mode-line-buffer-name (string buffer &optional faces count)
"Return STRING as a button that switches to BUFFER when clicked.
If FACES are provided, color STRING with them."
@ -609,6 +614,12 @@ If FACES are provided, color STRING with them."
(posn-window (event-start e)))
(switch-to-buffer-other-window ,buffer))))
(put-text-property 0 (length name) 'local-map map name)
(put-text-property
0 (length name)
'help-echo (concat "mouse-2: switch to buffer, "
"mouse-3: switch to buffer in other window")
name)
(put-text-property 0 (length name) 'mouse-face erc-track-mouse-face name)
(when (and faces erc-track-use-faces)
(put-text-property 0 (length name) 'face faces name))
name))

View file

@ -48,7 +48,7 @@ Used only when auto-truncation is enabled.
(define-erc-module truncate nil
"Truncate a query buffer if it gets too large.
This prevents the query buffer from getting too large, which can
bring any grown emacs to its knees after a few days worth of
bring any grown Emacs to its knees after a few days worth of
tracking heavy-traffic channels."
;;enable
((add-hook 'erc-insert-post-hook 'erc-truncate-buffer))

View file

@ -33,11 +33,11 @@
;;; Commentary:
;; ERC is an IRC client for Emacs.
;; ERC is a powerful, modular, and extensible IRC client for Emacs.
;; For more information, see the following URLs:
;; * http://sv.gnu.org/projects/erc/
;; * http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsIRCClient
;; * http://www.emacswiki.org/cgi-bin/wiki/ERC
;; As of 2006-06-13, ERC development is now hosted on Savannah
;; (http://sv.gnu.org/projects/erc). I invite everyone who wants to
@ -57,17 +57,17 @@
;; To connect to an IRC server, do
;;
;; M-x erc-select RET
;; M-x erc RET
;;
;; After you are connected to a server, you can use C-h m or have a look at
;; the IRC menu.
;; the ERC menu.
;;; History:
;;
;;; Code:
(defconst erc-version-string "Version 5.1.4"
(defconst erc-version-string "Version 5.2 stable pre-release"
"ERC version. This is used by function `erc-version'.")
(eval-when-compile (require 'cl))
@ -474,7 +474,7 @@ Removes all users in the current channel. This is called by
(clrhash erc-channel-users)))
(defsubst erc-channel-user-op-p (nick)
"Return `t' if NICK is an operator in the current channel."
"Return t if NICK is an operator in the current channel."
(and nick
(hash-table-p erc-channel-users)
(let ((cdata (erc-get-channel-user nick)))
@ -482,7 +482,7 @@ Removes all users in the current channel. This is called by
(erc-channel-user-op (cdr cdata))))))
(defsubst erc-channel-user-voice-p (nick)
"Return `t' if NICK has voice in the current channel."
"Return t if NICK has voice in the current channel."
(and nick
(hash-table-p erc-channel-users)
(let ((cdata (erc-get-channel-user nick)))
@ -774,7 +774,7 @@ set if some hacker is trying to flood you away."
:type 'boolean)
(defcustom erc-prompt-for-channel-key nil
"Prompt for channel key when using `erc-join-channel' interactively"
"Prompt for channel key when using `erc-join-channel' interactively."
:group 'erc
:type 'boolean)
@ -807,7 +807,7 @@ whose identifier matches, the message will not be processed.
CAVEAT: ERC doesn't know about the user and host of anyone who
was already in the channel when you joined, but never said
anything, so it won't be able to match the user and host of those
people. You can update the ERC internal info using /WHO *."
people. You can update the ERC internal info using /WHO *."
:group 'erc-ignore
:type '(repeat regexp))
@ -827,9 +827,9 @@ See `erc-server-flood-margin' for other flood-related parameters.")
"List of files to try for a startup script.
The first existent and readable one will get executed.
If the filename ends with `.el' it is presumed to be an emacs-lisp
If the filename ends with `.el' it is presumed to be an Emacs Lisp
script and it gets (load)ed. Otherwise is is treated as a bunch of
regular IRC commands"
regular IRC commands."
:group 'erc-scripts
:type '(repeat file))
@ -841,7 +841,7 @@ directory in the list."
:type '(repeat directory))
(defcustom erc-script-echo t
"*If not-NIL, echo the IRC script commands locally."
"*If non-nil, echo the IRC script commands locally."
:group 'erc-scripts
:type 'boolean)
@ -1042,7 +1042,7 @@ At this point, all modifications from prior hook functions are done.
NOTE: The functions on this hook are called _before_ sending a command
to the server.
This function is called with narrowing, ala `erc-send-modify-hook'"
This function is called with narrowing, ala `erc-send-modify-hook'."
:group 'erc-hooks
:type 'hook
:options '(erc-make-read-only))
@ -1164,6 +1164,12 @@ See the variable `erc-command-indicator'."
"ERC face for errors."
:group 'erc-faces)
;; same default color as `erc-input-face'
(defface erc-my-nick-face '((t (:bold t :foreground "brown")))
"ERC face for your current nickname in messages sent by you.
See also `erc-show-my-nick'."
:group 'erc-faces)
(defface erc-nick-default-face '((t (:bold t)))
"ERC nickname default face."
:group 'erc-faces)
@ -1192,7 +1198,7 @@ DOC is the documentation string to use for the minor mode.
ENABLE-BODY is a list of expressions used to enable the mode.
DISABLE-BODY is a list of expressions used to disable the mode.
If LOCAL-P is non-nil, the mode will be created as a buffer-local
mode. Rather than a global one.
mode, rather than a global one.
This will define a minor mode called erc-NAME-mode, possibly
an alias erc-ALIAS-mode, as well as the helper functions
@ -1260,7 +1266,7 @@ You should make sure that `current-buffer' is a server buffer.
This function temporarily adds a function to EVENT's hook to
execute FORMS. After FORMS are run, the function is removed from
EVENT's hook. The last expression of FORMS should be either nil
or t. nil indicates that the other functions on EVENT's hook
or t, where nil indicates that the other functions on EVENT's hook
should be run too, and t indicates that other functions should
not be run.
@ -1288,7 +1294,7 @@ capabilities."
This function temporarily prepends a function to EVENT's hook to
execute FORMS. After FORMS are run, the function is removed from
EVENT's hook. The last expression of FORMS should be either nil
or t. nil indicates that the other functions on EVENT's hook
or t, where nil indicates that the other functions on EVENT's hook
should be run too, and t indicates that other functions should
not be run.
@ -1316,8 +1322,7 @@ the process buffer."
(process-buffer erc-server-process)))
(defun erc-server-buffer-live-p ()
"Return t if the buffer associated with `erc-server-process'
has not been killed."
"Return t if the server buffer has not been killed."
(and (processp erc-server-process)
(buffer-live-p (process-buffer erc-server-process))))
@ -1385,7 +1390,7 @@ If BUFFER is nil, the current buffer is used."
(defvar erc-active-buffer nil
"The current active buffer, the one where the user typed the last command.
Defaults to the server buffer, and should only be set in the
server buffer")
server buffer.")
(make-variable-buffer-local 'erc-active-buffer)
(defun erc-active-buffer ()
@ -1433,7 +1438,7 @@ Turning on `erc-mode' runs the hook `erc-mode-hook'."
(defconst erc-default-server "irc.freenode.net"
"IRC server to use if it cannot be detected otherwise.")
(defconst erc-default-port "ircd"
(defconst erc-default-port "6667"
"IRC port to use if it cannot be detected otherwise.")
(defcustom erc-join-buffer 'buffer
@ -1442,7 +1447,7 @@ Turning on `erc-mode' runs the hook `erc-mode-hook'."
'window-noselect - in another window, but don't select that one,
'frame - in another frame,
'bury - bury it in a new buffer,
any other value - in place of the current buffer"
any other value - in place of the current buffer."
:group 'erc-buffers
:type '(choice (const window)
(const window-noselect)
@ -1452,7 +1457,7 @@ any other value - in place of the current buffer"
(defcustom erc-frame-alist nil
"*Alist of frame parameters for creating erc frames.
A value of `nil means to use `default-frame-alist'."
A value of nil means to use `default-frame-alist'."
:group 'erc-buffers
:type '(repeat (cons :format "%v"
(symbol :tag "Parameter")
@ -1534,7 +1539,7 @@ symbol, it may have these values:
(or target
(with-current-buffer (get-buffer buf-name)
(and (erc-server-buffer-p)
(not erc-server-connected))))
(not (erc-server-process-alive)))))
(with-current-buffer (get-buffer buf-name)
(and (string= erc-session-server server)
(erc-port-equal erc-session-port port))))
@ -1555,7 +1560,8 @@ All strings are compared according to IRC protocol case rules, see
(catch 'result
(while list
(if (string= string (erc-downcase (car list)))
(throw 'result list) (setq list (cdr list))))))
(throw 'result list)
(setq list (cdr list))))))
(defmacro erc-with-buffer (spec &rest body)
"Execute BODY in the buffer associated with SPEC.
@ -1567,7 +1573,7 @@ SPEC should have the form
If TARGET is a buffer, use it. Otherwise, use the buffer
matching TARGET in the process specified by PROCESS.
If PROCESS is nil, use the current `erc-server-process'
If PROCESS is nil, use the current `erc-server-process'.
See `erc-get-buffer' for details.
See also `with-current-buffer'.
@ -1663,7 +1669,7 @@ If `erc-track-mode' is in enabled, put the last element of
Due to some yet unresolved reason, global function `iswitchb-mode'
needs to be active for this function to work."
(interactive "P")
(eval-when-compile
(eval-and-compile
(require 'iswitchb))
(let ((iswitchb-make-buflist-hook
(lambda ()
@ -1671,8 +1677,7 @@ needs to be active for this function to work."
(mapcar 'buffer-name
(erc-buffer-list
nil
(when (and arg (boundp 'erc-server-process))
erc-server-process)))))))
(when arg erc-server-process)))))))
(switch-to-buffer
(iswitchb-read-buffer
"Switch-to: "
@ -1757,7 +1762,7 @@ all channel buffers on all servers."
(defcustom erc-modules '(netsplit fill button match track completion readonly
ring autojoin noncommands irccontrols
stamp list)
"A list of modules which erc should enable.
"A list of modules which ERC should enable.
If you set the value of this without using `customize' remember to call
\(erc-update-modules) after you change it. When using `customize', modules
removed from the list will be disabled."
@ -1833,9 +1838,10 @@ removed from the list will be disabled."
(condition-case nil
(require (intern req))
(error nil))
(funcall (or (intern-soft (concat "erc-" (symbol-name mod) "-mode"))
(error "`%s' is not a known ERC module" mod))
1))))
(let ((sym (intern-soft (concat "erc-" (symbol-name mod) "-mode"))))
(if (fboundp sym)
(funcall sym 1)
(error "`%s' is not a known ERC module" mod))))))
(defun erc-setup-buffer (buffer)
"Consults `erc-join-buffer' to find out how to display `BUFFER'."
@ -1861,8 +1867,8 @@ removed from the list will be disabled."
(display-buffer buffer)
(switch-to-buffer buffer)))))
(defun erc (&optional server port nick full-name
connect passwd tgt-list channel process)
(defun erc-open (&optional server port nick full-name
connect passwd tgt-list channel process)
"ERC is a powerful, modular, and extensible IRC client.
Connect to SERVER on PORT as NICK with FULL-NAME.
@ -1881,6 +1887,7 @@ Returns the buffer for the given server or channel."
(connected-p (unless connect erc-server-connected))
(buffer (erc-get-buffer-create server port channel))
(old-buffer (current-buffer))
(old-point (point))
continued-session)
(erc-update-modules)
(set-buffer buffer)
@ -1959,7 +1966,7 @@ Returns the buffer for the given server or channel."
(insert "\n"))
(set-marker (process-mark erc-server-process) (point))
(if continued-session
(goto-char (point-max))
(goto-char old-point)
(set-marker erc-insert-marker (point))
(erc-display-prompt)
(goto-char (point-max)))
@ -2002,12 +2009,12 @@ If no buffer matches, return nil."
(if (not (fboundp 'read-passwd))
(defun read-passwd (prompt)
"Substitute for read-passwd in early emacsen"
"Substitute for `read-passwd' in early emacsen."
(read-from-minibuffer prompt)))
(defcustom erc-before-connect nil
"Hook called before connecting to a server.
This hook gets executed before `erc-select' actually invokes `erc-mode'
This hook gets executed before `erc' actually invokes `erc-mode'
with your input data. The functions in here get called with three
parameters, SERVER, PORT and NICK."
:group 'erc-hooks
@ -2015,7 +2022,7 @@ parameters, SERVER, PORT and NICK."
(defcustom erc-after-connect nil
"Hook called after connecting to a server.
This hook gets executed when an end of MOTD has been received. All
This hook gets executed when an end of MOTD has been received. All
functions in here get called with the parameters SERVER and NICK."
:group 'erc-hooks
:type 'hook)
@ -2073,11 +2080,11 @@ functions in here get called with the parameters SERVER and NICK."
(list :server server :port port :nick nick :password passwd)))
;;;###autoload
(defun* erc-select (&key (server (erc-compute-server))
(port (erc-compute-port))
(nick (erc-compute-nick))
password
(full-name (erc-compute-full-name)))
(defun* erc (&key (server (erc-compute-server))
(port (erc-compute-port))
(nick (erc-compute-nick))
password
(full-name (erc-compute-full-name)))
"Select connection parameters and run ERC.
Non-interactively, it takes keyword arguments
(server (erc-compute-server))
@ -2088,7 +2095,7 @@ Non-interactively, it takes keyword arguments
That is, if called with
(erc-select :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
(erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
server and full-name will be set to those values, whereas
`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
@ -2096,20 +2103,23 @@ be invoked for the values of the other parameters."
(interactive (erc-select-read-args))
(run-hook-with-args 'erc-before-connect server port nick)
(erc server port nick erc-user-full-name t password))
(erc-open server port nick full-name t password))
(defalias 'erc-select 'erc)
(defun erc-select-ssl (&rest r)
(defun erc-ssl (&rest r)
"Interactively select SSL connection parameters and run ERC.
Arguments are as to erc-select."
Arguments are the same as for `erc'."
(interactive (erc-select-read-args))
(let ((erc-server-connect-function 'erc-open-ssl-stream))
(apply 'erc-select r)))
(apply 'erc r)))
(defalias 'erc-select-ssl 'erc-ssl)
(defun erc-open-ssl-stream (name buffer host port)
"Open an SSL stream to an IRC server.
The process will be given the name NAME, its target buffer will be
BUFFER. HOST and PORT specify the connection target."
BUFFER. HOST and PORT specify the connection target."
(when (require 'tls)
(let ((proc (open-tls-stream name buffer host port)))
;; Ugly hack, but it works for now. Problem is it is
@ -2127,7 +2137,7 @@ BUFFER. HOST and PORT specify the connection target."
The buffer is created if it doesn't exist.
NOTE: If this variable is non-nil, and you kill the the only
NOTE: If this variable is non-nil, and you kill the only
visible \"*erc-protocol*\" buffer, it will be recreated shortly,
but you won't see it.
@ -2142,7 +2152,7 @@ This only has any effect if `erc-debug-irc-protocol' is non-nil.
The buffer is created if it doesn't exist.
If OUTBOUND is non-nil, STRING is being sent to the IRC server
and appears in erc-input-face in the buffer."
and appears in face `erc-input-face' in the buffer."
(when erc-debug-irc-protocol
(let ((network-name (or (ignore-errors (erc-network-name))
"???")))
@ -2226,7 +2236,7 @@ I.e. any char in it has the `invisible' property set."
(defun erc-display-line-1 (string buffer)
"Display STRING in `erc-mode' BUFFER.
Auxiliary function used in `erc-display-line'. The line gets filtered to
Auxiliary function used in `erc-display-line'. The line gets filtered to
interpret the control characters. Then, `erc-insert-pre-hook' gets called.
If `erc-insert-this' is still t, STRING gets inserted into the buffer.
Afterwards, `erc-insert-modify' and `erc-insert-post-hook' get called.
@ -2310,8 +2320,8 @@ or omitted, the default ERC buffer for the `erc-session-server' is used.
The BUFFER can be an actual buffer, a list of buffers, 'all or 'active.
If BUFFER = 'all, the string is displayed in all the ERC buffers for the
current session. 'active means the current active buffer
\(`erc-active-buffer'). If the buffer can't be resolved, the current
buffer is used. `erc-display-line-1' is used to display STRING.
\(`erc-active-buffer'). If the buffer can't be resolved, the current
buffer is used. `erc-display-line-1' is used to display STRING.
If STRING is nil, the function does nothing."
(let ((inhibit-point-motion-hooks t)
@ -2321,9 +2331,8 @@ If STRING is nil, the function does nothing."
((listp buffer) buffer)
((processp buffer) (list (process-buffer buffer)))
((eq 'all buffer)
(and (boundp 'erc-server-process)
;; Hmm, or all of the same session server?
(erc-buffer-list nil erc-server-process)))
;; Hmm, or all of the same session server?
(erc-buffer-list nil erc-server-process))
((and (eq 'active buffer) (erc-active-buffer))
(list (erc-active-buffer)))
((erc-server-buffer-live-p)
@ -2338,9 +2347,9 @@ If STRING is nil, the function does nothing."
(erc-display-line-1 string (current-buffer))))))
(defun erc-display-message-highlight (type string)
"Highlight STRING according to TYPE, where erc-TYPE-face is an erc face.
"Highlight STRING according to TYPE, where erc-TYPE-face is an ERC face.
See also `erc-make-notice'"
See also `erc-make-notice'."
(cond ((eq type 'notice)
(erc-make-notice string))
(t
@ -2426,7 +2435,7 @@ Returns non-nil if the command is actually sent to the server, and nil
otherwise.
If the command in the LINE is not bound as a function `erc-cmd-<COMMAND>',
it is passed to `erc-cmd-default'. If LINE is not a command (ie. doesn't
it is passed to `erc-cmd-default'. If LINE is not a command (i.e. doesn't
start with /<COMMAND>) then it is sent as a message.
An optional FORCE argument forces sending the line when flood
@ -2536,7 +2545,11 @@ therefore has to contain the command itself as well."
"Ignore USER. This should be a regexp matching nick!user@host.
If no USER argument is specified, list the contents of `erc-ignore-list'."
(if user
(progn
(let ((quoted (regexp-quote user)))
(when (and (not (string= user quoted))
(y-or-n-p (format "Use regexp-quoted form (%s) instead? "
quoted)))
(setq user quoted))
(erc-display-line
(erc-make-notice (format "Now ignoring %s" user))
'active)
@ -2554,16 +2567,22 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
(defun erc-cmd-UNIGNORE (user)
"Remove the user specified in USER from the ignore list."
(let ((ignored-nick (car (with-current-buffer (erc-server-buffer)
(erc-member-ignore-case user erc-ignore-list)))))
(if (null ignored-nick)
(erc-member-ignore-case (regexp-quote user)
erc-ignore-list)))))
(unless ignored-nick
(if (setq ignored-nick (erc-ignored-user-p user))
(unless (y-or-n-p (format "Remove this regexp (%s)? "
ignored-nick))
(setq ignored-nick nil))
(erc-display-line
(erc-make-notice (format "%s is not currently ignored!" user))
'active)
'active)))
(when ignored-nick
(erc-display-line
(erc-make-notice (format "No longer ignoring %s" user))
'active))
(with-current-buffer (erc-server-buffer)
(setq erc-ignore-list (delete ignored-nick erc-ignore-list))))
'active)
(with-current-buffer (erc-server-buffer)
(setq erc-ignore-list (delete ignored-nick erc-ignore-list)))))
t)
(defun erc-cmd-CLEAR ()
@ -2642,7 +2661,7 @@ VERSION and so on. It is called with ARGS."
If FUNC contains a valid function or variable, help about that
will be displayed. If FUNC is empty, display an apropos about
erc commands. Otherwise, do apropos in the erc namespace
ERC commands. Otherwise, do `apropos' in the ERC namespace
\(\"erc-.*LINE\"\).
Examples:
@ -2768,9 +2787,9 @@ LINE has the format: \"#CHANNEL NICK REASON\" or \"NICK REASON\"."
(defun erc-cmd-LOAD (line)
"Load the script provided in the LINE.
If LINE continues beyond the file name,
the rest of it is put in a (local) variable
`erc-script-args', which can be used in elisp scripts.
If LINE continues beyond the file name, the rest of
it is put in a (local) variable `erc-script-args',
which can be used in Emacs Lisp scripts.
The optional FORCE argument is ignored here - you can't force loading
a script after exceeding the flood threshold."
@ -3149,7 +3168,7 @@ the message given by REASON."
"Connect to SERVER, leaving existing connection intact."
(erc-log (format "cmd: SERVER: %s" server))
(condition-case nil
(erc-select :server server :nick (erc-current-nick))
(erc :server server :nick (erc-current-nick))
(error
(message "Cannot find host %s." server)
(beep)))
@ -3337,7 +3356,7 @@ The ban list is fetched from the server if necessary."
(and (boundp 'fill-column)
fill-column)
(1- (window-width))))
(separator (make-string erc-fill-column (string-to-char "=")))
(separator (make-string erc-fill-column ?=))
(fmt (concat
"%-" (number-to-string (/ erc-fill-column 2)) "s"
"%" (number-to-string (/ erc-fill-column 2)) "s")))
@ -3403,7 +3422,7 @@ Unban all currently banned users in the current channel."
(lambda (x)
(erc-server-send
(format "MODE %s -%s %s" (erc-default-target)
(make-string (length x) (string-to-char "b"))
(make-string (length x) ?b)
(mapconcat 'identity x " "))))
(erc-group-list bans 3))))
t))))
@ -3534,9 +3553,8 @@ If `point' is at the beginning of a channel name, use that as default."
(list
(if (and (boundp 'reason) (stringp reason) (not (string= reason "")))
reason
(read-from-minibuffer (concat "Leave " (erc-default-target)
", Reason? ")
(cons "No reason" 0)))))
(read-from-minibuffer (concat "Reason for leaving " (erc-default-target)
": ")))))
(erc-cmd-PART (concat (erc-default-target)" " reason)))
(defun erc-set-topic (topic)
@ -3666,15 +3684,15 @@ To change how this query window is displayed, use `let' to bind
(buffer-live-p server)
(set-buffer server))
(error "Couldn't switch to server buffer"))
(let ((buf (erc erc-session-server
erc-session-port
(erc-current-nick)
erc-session-user-full-name
nil
nil
(list target)
target
erc-server-process)))
(let ((buf (erc-open erc-session-server
erc-session-port
(erc-current-nick)
erc-session-user-full-name
nil
nil
(list target)
target
erc-server-process)))
(unless buf
(error "Couldn't open query window"))
(erc-update-mode-line)
@ -3782,7 +3800,7 @@ See also `erc-display-error-notice'."
(defgroup erc-server-hooks nil
"Server event callbacks.
Every server event - like numeric replies - has it's own hook.
Every server event - like numeric replies - has its own hook.
Those hooks are all called using `run-hook-with-args-until-success'.
They receive as first argument the process object from where the event
originated from,
@ -3846,32 +3864,29 @@ and as second argument the event parsed as a vector."
:type 'function)
(defun erc-format-nick (&optional user channel-data)
"Standard nickname formatting function. Only returns the value
of NICK."
(if user
(erc-server-user-nickname user)))
"Return the nickname of USER.
See also `erc-format-nick-function'."
(when user (erc-server-user-nickname user)))
(defun erc-format-@nick (&optional user channel-data)
"Format a nickname such that @ or + are prefix for the NICK
if OP or VOICE are t respectively."
(if user
(let (op voice)
(if channel-data
(setq op (erc-channel-user-op channel-data)
voice (erc-channel-user-voice channel-data)))
(concat (if voice "+" "")
(if op "@" "")
(erc-server-user-nickname user)))))
"Format the nickname of USER showing if USER is an operator or has voice.
Operators have \"@\" and users with voice have \"+\" as a prefix.
Use CHANNEL-DATA to determine op and voice status.
See also `erc-format-nick-function'."
(when user
(let ((op (and channel-data (erc-channel-user-op channel-data) "@"))
(voice (and channel-data (erc-channel-user-voice channel-data) "+")))
(concat voice op (erc-server-user-nickname user)))))
(defun erc-format-my-nick ()
"Return the beginning of this user's message, correctly propertized"
"Return the beginning of this user's message, correctly propertized."
(if erc-show-my-nick
(let ((open "<")
(close "> ")
(nick (erc-current-nick)))
(concat
(erc-propertize open 'face 'erc-default-face)
(erc-propertize nick 'face 'erc-nick-default-face)
(erc-propertize nick 'face 'erc-my-nick-face)
(erc-propertize close 'face 'erc-default-face)))
(let ((prefix "> "))
(erc-propertize prefix 'face 'erc-default-face))))
@ -3933,7 +3948,7 @@ returns non-nil iff there is at least one buffer for which the
sender is a member.
See also: `erc-echo-notice-in-first-user-buffer',
`erc-buffer-list-with-nick'"
`erc-buffer-list-with-nick'."
(let ((buffers (erc-buffer-list-with-nick sender erc-server-process)))
(if buffers
(progn (erc-display-message parsed nil buffers s) t)
@ -3948,7 +3963,7 @@ at least one buffer for which the sender is a member or the
default target.
See also: `erc-echo-notice-in-user-buffers',
`erc-buffer-list-with-nick'"
`erc-buffer-list-with-nick'."
(let ((buffers (erc-buffer-list-with-nick sender erc-server-process)))
(add-to-list 'buffers buffer)
(if buffers
@ -3963,7 +3978,7 @@ returns non-nil iff there is at least one buffer for which the
sender is a member.
See also: `erc-echo-notice-in-user-buffers',
`erc-buffer-list-with-nick'"
`erc-buffer-list-with-nick'."
(let ((buffers (erc-buffer-list-with-nick sender erc-server-process)))
(if buffers
(progn (erc-display-message parsed nil (car buffers) s) t)
@ -4046,7 +4061,7 @@ See also: `erc-echo-notice-in-user-buffers',
(defun erc-connection-established (proc parsed)
"Run just after connection.
Set user modes and run `erc-after-connect hook'."
Set user modes and run `erc-after-connect' hook."
(unless erc-server-connected ; only once per session
(let ((server (or erc-server-announced-name (erc-response.sender parsed)))
(nick (car (erc-response.command-args parsed ))))
@ -4376,7 +4391,7 @@ The buffer where the change happened is current while this hook is called."
"Updates the stored user information for the user with nickname
NICK.
See also: `erc-update-user'"
See also: `erc-update-user'."
(erc-update-user (erc-get-server-user nick) new-nick
host login full-name info))
@ -4387,9 +4402,9 @@ struct. Any of NEW-NICK, HOST, LOGIN, FULL-NAME, INFO which are
non-nil and not equal to the existing values for USER are used to
replace the stored values in USER.
If, any only if a change is made,
If, and only if, a change is made,
`erc-channel-members-changed-hook' is run for each channel for
which USER is a member, and `t' is returned."
which USER is a member, and t is returned."
(let (changed)
(when user
(when (and new-nick
@ -4426,10 +4441,10 @@ which USER is a member, and `t' is returned."
update-message-time)
"Updates the stored user information for the user with nickname
NICK. `erc-update-user' is called to handle changes to nickname,
host, login, full-name, and info. If `op' or `voice' are
non-nil, they must be equal to either `on' or `off', in which
case the operator or voice status of USER in the current channel
is changed accordingly. If `update-message-time' is non-nil, the
HOST, LOGIN, FULL-NAME, and INFO. If OP or VOICE are non-nil,
they must be equal to either `on' or `off', in which case the
operator or voice status of the user in the current channel is
changed accordingly. If UPDATE-MESSAGE-TIME is non-nil, the
last-message-time of the user in the current channel is set
to (current-time).
@ -4438,7 +4453,7 @@ information if it is not already present in the user or channel
lists.
If, and only if, changes are made, or the user is added,
`erc-channel-members-updated-hook' is run, and `t' is returned.
`erc-channel-members-updated-hook' is run, and t is returned.
See also: `erc-update-user' and `erc-update-channel-member'."
(let* (changed user-changed
@ -4504,7 +4519,7 @@ See also: `erc-update-user' and `erc-update-channel-member'."
"Updates user and channel information for the user with
nickname NICK in channel CHANNEL.
See also: `erc-update-current-channel-member'"
See also: `erc-update-current-channel-member'."
(erc-with-buffer
(channel)
(erc-update-current-channel-member nick new-nick add op voice host
@ -4512,8 +4527,8 @@ See also: `erc-update-current-channel-member'"
update-message-time)))
(defun erc-remove-current-channel-member (nick)
"Remove NICK from current channel membership list. Runs
`erc-channel-members-changed-hook'."
"Remove NICK from current channel membership list.
Runs `erc-channel-members-changed-hook'."
(let ((channel-data (erc-get-channel-user nick)))
(when channel-data
(erc-remove-channel-user nick)
@ -4548,7 +4563,7 @@ TOPIC string to the current topic."
;; list of triples: (mode-char 'on/'off argument)
(arg-modes (nth 2 modes)))
(cond ((erc-channel-p tgt); channel modes
(let ((buf (and (boundp 'erc-server-process) erc-server-process
(let ((buf (and erc-server-process
(erc-get-buffer tgt erc-server-process))))
(when buf
(with-current-buffer buf
@ -4640,7 +4655,7 @@ person who changed the modes."
(arg-modes (nth 2 modes)))
;; now parse the modes changes and do the updates
(cond ((erc-channel-p tgt); channel modes
(let ((buf (and (boundp 'erc-server-process) erc-server-process
(let ((buf (and erc-server-process
(erc-get-buffer tgt erc-server-process))))
(when buf
;; FIXME! This used to have an original buffer
@ -4718,7 +4733,7 @@ So far the following TYPE/L pairs are supported:
(defun erc-highlight-notice (s)
"Highlight notice message S and return it.
See also variable `erc-notice-highlight-type'"
See also variable `erc-notice-highlight-type'."
(cond
((eq erc-notice-highlight-type 'prefix)
(erc-put-text-property 0 (length erc-notice-prefix)
@ -4935,7 +4950,7 @@ current position."
(run-hooks 'erc-send-post-hook))))))
(defun erc-command-symbol (command)
"Return the erc command symbol for COMMAND if it exists and is bound."
"Return the ERC command symbol for COMMAND if it exists and is bound."
(let ((cmd (intern-soft (format "erc-cmd-%s" (upcase command)))))
(when (fboundp cmd) cmd)))
@ -5034,7 +5049,7 @@ See also `erc-downcase'."
(defun erc-add-query (nickname)
"Add QUERY'd NICKNAME to the default channel list.
The previous default target of QUERY type gets removed"
The previous default target of QUERY type gets removed."
(let ((d1 (car erc-default-recipients))
(d2 (cdr erc-default-recipients))
(qt (cons 'QUERY (downcase nickname))))
@ -5059,10 +5074,10 @@ The previous default target of QUERY type gets removed"
Takes a full SPEC of a user in the form \"nick!login@host\", and
matches against all the regexp's in `erc-ignore-list'. If any
match, returns that regexp."
(dolist (ignored (with-current-buffer (erc-server-buffer) erc-ignore-list))
(if (string-match ignored spec)
;; We have `require'd cl, so we can return from the block named nil
(return ignored))))
(catch 'found
(dolist (ignored (with-current-buffer (erc-server-buffer) erc-ignore-list))
(if (string-match ignored spec)
(throw 'found ignored)))))
(defun erc-ignored-reply-p (msg tgt proc)
;; FIXME: this docstring needs fixing -- Lawrence 2004-01-08
@ -5259,8 +5274,8 @@ See also `erc-startup-file-list'."
FILE must be the full name, it is not searched in the
`erc-script-path'. If the filename ends with `.el', then load it
as a emacs-lisp program. Otherwise, treat it as a regular IRC
script"
as an Emacs Lisp program. Otherwise, treat it as a regular IRC
script."
(erc-log (concat "erc-load-script: " file))
(cond
((string-match "\\.el$" file)
@ -5272,13 +5287,13 @@ script"
"Process an IRC script LINE.
Does script-specific substitutions (script arguments, current nick,
server, etc.) in LINE and returns it.
server, etc.) in LINE and returns it.
Substitutions are: %C and %c = current target (channel or nick),
%S %s = current server, %N %n = my current nick, and %x is x verbatim,
where x is any other character;
$* = the entire argument string, $1 = the first argument, $2 = the second,
end so on."
and so on."
(if (not args) (setq args ""))
(let* ((arg-esc-regexp "\\(\\$\\(\\*\\|[1-9][0-9]*\\)\\)\\([^0-9]\\|$\\)")
(percent-regexp "\\(%.\\)")
@ -5403,10 +5418,10 @@ user input."
"Determine the connection and authentication parameters.
Sets the buffer local variables:
- erc-session-server
- erc-session-port
- erc-session-full-name
- erc-server-current-nick"
- `erc-session-server'
- `erc-session-port'
- `erc-session-full-name'
- `erc-server-current-nick'"
(setq erc-session-server (erc-compute-server server)
erc-session-port (or port erc-default-port)
erc-session-user-full-name (erc-compute-full-name name))
@ -5418,7 +5433,7 @@ Sets the buffer local variables:
This tries a number of increasingly more default methods until a
non-nil value is found.
- SERVER (the argument passwd to this function)
- SERVER (the argument passed to this function)
- The `erc-server' option
- The value of the IRCSERVER environment variable
- The `erc-default-server' variable"
@ -5548,7 +5563,7 @@ See also `erc-emacs-time-to-erc-time'."
(defun erc-client-info (s)
"Return CTCP CLIENTINFO on command S.
If S is NIL or an empty string then return general CLIENTINFO"
If S is nil or an empty string then return general CLIENTINFO."
(if (or (not s) (string= s ""))
(concat
(apply #'concat
@ -5686,7 +5701,7 @@ displayed hostnames."
"(AWAY since %a %b %d %H:%M) "
"When you're away on a server, this is shown in the mode line.
This should be a string with substitution variables recognized by
format-time-message."
`format-time-string'."
:group 'erc-mode-line-and-header
:type 'string)
@ -5779,7 +5794,7 @@ if `erc-away' is non-nil."
((functionp erc-header-line-face-method)
(funcall erc-header-line-face-method))
(t
erc-header-line))))
'erc-header-line))))
(cond ((featurep 'xemacs)
(setq modeline-buffer-identification
(list (format-spec erc-mode-line-format spec)))
@ -5833,10 +5848,12 @@ P may be an integer or a service name."
(defun erc-string-to-port (s)
"Convert string S to either an integer port number or a service name."
(let ((n (string-to-number s)))
(if (= n 0)
s
n)))
(if (numberp s)
s
(let ((n (string-to-number s)))
(if (= n 0)
s
n))))
(defun erc-version (&optional here)
"Show the version number of ERC in the minibuffer.
@ -5886,8 +5903,8 @@ If optional argument HERE is non-nil, insert version number at point."
All windows are opened in the current frame."
(interactive)
(unless (boundp 'erc-server-process)
(error "No erc-process found in current buffer"))
(unless erc-server-process
(error "No erc-server-process found in current buffer"))
(let ((bufs (erc-buffer-list nil erc-server-process)))
(when bufs
(delete-other-windows)
@ -5901,7 +5918,7 @@ All windows are opened in the current frame."
(balance-windows)))))
(defun erc-popup-input-buffer ()
"Provide a input buffer."
"Provide an input buffer."
(interactive)
(let ((buffer-name (generate-new-buffer-name "*ERC input*"))
(mode (intern
@ -6019,7 +6036,8 @@ All windows are opened in the current frame."
(s341 . "Inviting %n to channel %c")
(s352 . "%-11c %-10n %-4a %u@%h (%f)")
(s353 . "Users on %c: %u")
(s367 . "Ban on %b on %c set by %s on %t (Use /banlist!)")
(s367 . "Ban for %b on %c")
(s367-set-by . "Ban for %b on %c set by %s on %t")
(s368 . "Banlist of %c ends.")
(s379 . "%c: Forwarded to %f")
(s391 . "The time at %s is %t")
@ -6194,10 +6212,10 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL."
(with-current-buffer (or server-buffer (current-buffer))
(if (and server-buffer channel)
(erc-cmd-JOIN channel)
(erc host port (or user (erc-compute-nick)) (erc-compute-full-name)
(not server-buffer) password nil channel
(when server-buffer
(get-buffer-process server-buffer)))))))
(erc-open host port (or user (erc-compute-nick)) (erc-compute-full-name)
(not server-buffer) password nil channel
(when server-buffer
(get-buffer-process server-buffer)))))))
(provide 'erc)

View file

@ -296,7 +296,7 @@ If ARG is omitted, point is placed at the end of the expanded text."
(defvar expand-list nil "Temporary variable used by the Expand package.")
(defvar expand-pos nil
"If non nil, stores a vector containing markers to positions defined by the last expansion.
"If non-nil, stores a vector containing markers to positions defined by the last expansion.
This variable is local to a buffer.")
(make-variable-buffer-local 'expand-pos)

View file

@ -685,8 +685,11 @@ This is called whenever you create a new face, and at other times."
symbol (intern name)))
(setq menu 'facemenu-face-menu)
(setq docstring
(format "Select face `%s' for subsequent insertion."
name))
(format "Select face `%s' for subsequent insertion.
If the mark is active and there is no prefix argument,
apply face `%s' to the region instead.
This command was defined by `facemenu-add-new-face'."
name name))
(cond ((facemenu-iterate ; check if equivalent face is already in the menu
(lambda (m) (and (listp m)
(symbolp (car m))

View file

@ -1293,6 +1293,7 @@ If FRAME is omitted or nil, use the selected frame."
(insert " undefined face.\n")
(let ((customize-label "customize this face")
file-name)
(insert (concat " (" (propertize "sample" 'font-lock-face f) ")"))
(princ (concat " (" customize-label ")\n"))
(insert "Documentation: "
(or (face-documentation f)

View file

@ -4,7 +4,7 @@
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Michelangelo Grigni <mic@mathcs.emory.edu>
;; Maintainer: Rajesh Vaidheeswarran <rv@gnu.org>
;; Maintainer: FSF
;; Created: 29 Mar 1993
;; Keywords: files, hypermedia, matching, mouse, convenience
;; X-URL: ftp://ftp.mathcs.emory.edu/pub/mic/emacs/

View file

@ -1533,7 +1533,7 @@ the various files."
(not (eq major-mode 'hexl-mode)))
(if (buffer-modified-p)
(if (y-or-n-p
(format
(format
(if rawfile
"The file %s is already visited normally,
and you have edited the buffer. Now you have asked to visit it literally,
@ -1553,7 +1553,7 @@ Do you want to save the file, and visit it normally instead? ")
(find-file-noselect-1 buf filename nowarn
rawfile truename number))
(if (y-or-n-p
(format
(format
(if rawfile
"\
Do you want to discard your changes, and visit the file literally now? "
@ -1563,8 +1563,8 @@ Do you want to discard your changes, and visit the file normally now? ")))
rawfile truename number)
(error (if rawfile "File already visited non-literally"
"File already visited literally"))))
(if (y-or-n-p
(format
(if (y-or-n-p
(format
(if rawfile
"The file %s is already visited normally.
You have asked to visit it literally,
@ -2821,8 +2821,8 @@ the old visited file has been renamed to the new name FILENAME."
(let ((buffer (and filename (find-buffer-visiting filename))))
(and buffer (not (eq buffer (current-buffer)))
(not no-query)
(not (y-or-n-p (message "A buffer is visiting %s; proceed? "
filename)))
(not (y-or-n-p (format "A buffer is visiting %s; proceed? "
filename)))
(error "Aborted")))
(or (equal filename buffer-file-name)
(progn
@ -4082,6 +4082,11 @@ non-nil, it is called instead of rereading visited file contents."
"File %s no longer exists!"
"Cannot revert nonexistent file %s")
file-name))
((not (file-readable-p file-name))
(error (if buffer-file-number
"File %s no longer readable!"
"Cannot revert unreadable file %s")
file-name))
(t
;; Bind buffer-file-name to nil
;; so that we don't try to lock the file.
@ -4095,6 +4100,16 @@ non-nil, it is called instead of rereading visited file contents."
(if auto-save-p 'auto-save-coding
(or coding-system-for-read
buffer-file-coding-system-explicit))))
(if (and (not enable-multibyte-characters)
coding-system-for-read
(not (memq (coding-system-base
coding-system-for-read)
'(no-conversion raw-text))))
;; As a coding system suitable for multibyte
;; buffer is specified, make the current
;; buffer multibyte.
(set-buffer-multibyte t))
;; This force after-insert-file-set-coding
;; (called from insert-file-contents) to set
;; buffer-file-coding-system to a proper value.

View file

@ -449,7 +449,7 @@ After that, changing the prefix key requires manipulating keymaps."
(if follow-mode
menu
'(["Activate " follow-mode t]))))
mainmap)
"Minor mode keymap for Follow mode.")
@ -473,7 +473,7 @@ are \" Fw\", or simply \"\"."
:group 'follow)
(defvar follow-avoid-tail-recenter-p (not (featurep 'xemacs))
"*When non-nil, patch emacs so that tail windows won't be recentered.
"*When non-nil, patch Emacs so that tail windows won't be recentered.
A \"tail window\" is a window that displays only the end of
the buffer. Normally it is practical for the user that empty

View file

@ -149,7 +149,7 @@ your own function which is called when `font-lock-mode' is toggled via
nil nil nil
;; Don't turn on Font Lock mode if we don't have a display (we're running a
;; batch job) or if the buffer is invisible (the name starts with a space).
(when (or noninteractive (eq (aref (buffer-name) 0) ?\ ))
(when (or noninteractive (eq (aref (buffer-name) 0) ?\s))
(setq font-lock-mode nil))
(funcall font-lock-function font-lock-mode)
;; Arrange to unfontify this buffer if we change major mode later.

View file

@ -1,7 +1,101 @@
2006-11-30 Katsumi Yamaoka <yamaoka@jpl.org>
* mml2015.el (mml2015-pgg-clear-verify): Replace encode-coding-string
with mm-encode-coding-string.
2006-11-29 Katsumi Yamaoka <yamaoka@jpl.org>
* nneething.el (nneething-decode-file-name): Replace
decode-coding-string with mm-decode-coding-string.
2006-11-24 Juanma Barranquero <lekktu@gmail.com>
* gnus-agent.el (gnus-agent-expire-unagentized-dirs)
(gnus-agent-regenerate-group): Fix space/tab mixup in messages.
* gnus-art.el (gnus-article-x-face-command, gnus-numeric-save-name):
* gnus-group.el (gnus-group-sort-function, gnus-group-line-format)
(gnus-group-mode, gnus-group-read-group, gnus-group-delete-group)
(gnus-group-make-directory-group, gnus-group-transpose-groups):
* gnus-start.el (gnus-options-subscribe, gnus-options-not-subscribe)
(gnus-subscribe-newsgroup, gnus-1):
* gnus-sum.el (gnus-summary-make-false-root, gnus-make-threads):
* gnus.el (gnus-nntp-server, gnus-use-cross-reference)
(gnus-valid-select-methods, total-expire, gnus-summary-line-format)
(gnus-group-read-only-p): Fix space/tab mixup in docstrings.
2006-11-21 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-util.el (mm-string-to-multibyte): Alias to identity in XEmacs.
2006-11-18 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
* mm-uu.el (mm-uu-pgp-signed-extract-1): Make last fix more thorough
and comment it.
* nnslashdot.el (nnslashdot-retrieve-headers-1): Update regexp.
2006-11-15 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-util.el (gnus-extract-address-components): Improve comment.
2006-11-14 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-util.el (gnus-extract-address-components): Work with address in
which the name portion contains @.
2006-11-14 Reiner Steib <Reiner.Steib@gmx.de>
* gnus.el (gnus-start): Move custom group up.
(gnus-select-method): Don't autoload, but make it available for
`customize-variable'.
(gnus-getenv-nntpserver): Don't autoload.
2006-11-14 Katsumi Yamaoka <yamaoka@jpl.org>
* mml.el (mml-generate-mime-1): Use mm-string-as-unibyte instead of
mm-with-unibyte-current-buffer to make string unibyte.
* mm-decode.el (mm-insert-part): Use mm-string-to-multibyte instead of
mm-string-as-multibyte.
2006-11-09 Reiner Steib <Reiner.Steib@gmx.de>
* message.el: Merge from the trunk to fix the bug WRT double encoded
subjects.
(message-replacement-char): New variable.
(message-fix-before-sending): Use it.
(message-simplify-subject): New function to remove duplicate code.
(message-reply, message-followup): Use it.
(message-simplify-subject-functions): New variable.
(message-strip-subject-encoded-words): New function
2006-11-08 Wolfgang Jenkner <wjenkner@inode.at> (tiny change)
* gnus-sum.el (gnus-summary-catchup): Use gnus-sorted-intersection
instead of gnus-intersection because arguments of gnus-sorted-nunion
must be sorted. This avoids corruption of gnus-newsgroup-unreads.
2006-11-03 Juanma Barranquero <lekktu@gmail.com>
* gnus-diary.el (gnus-diary-delay-format-function):
* nndiary.el (nndiary-reminders):
* nnsoup.el (nnsoup-always-save): Use "non-nil" in docstrings.
2006-11-01 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-art.el (article-hide-boring-headers): Fetch date from
gnus-original-article-buffer to avoid problems with localized date
strings.
2006-10-30 Katsumi Yamaoka <yamaoka@jpl.org>
* html2text.el (html2text-format-tags): Avoid infloop on open tags.
2006-10-29 Reiner Steib <Reiner.Steib@gmx.de>
* mm-util.el (mm-codepage-iso-8859-list, mm-codepage-ibm-list): New
variables.
* mm-util.el (mm-codepage-iso-8859-list, mm-codepage-ibm-list):
New variables.
(mm-setup-codepage-iso-8859, mm-setup-codepage-ibm): New functions.
(mm-charset-synonym-alist): Move some entries to
mm-codepage-iso-8859-list.
@ -610,7 +704,7 @@
(rfc2231-encode-string): Be sure to work on multibyte buffer at
first, and after mm-encode-body, change the buffer to unibyte.
2006-03-21 Daniel Pittman <daniel@rimspace.net>
2006-03-21 Daniel Pittman <daniel@rimspace.net>
* nnimap.el (nnimap-request-update-info-internal): Optimize.
Don't `gnus-uncompress-range' to avoid excessive memory usage.
@ -4484,6 +4578,7 @@ See ChangeLog.2 for earlier changes.
;; Local Variables:
;; coding: iso-2022-7bit
;; fill-column: 79
;; add-log-time-zone-rule: t
;; End:
;;; arch-tag: 3f33a3e7-090d-492b-bedd-02a1417d32b4

View file

@ -13,7 +13,7 @@
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
@ -1167,7 +1167,7 @@ downloadable."
;; For each article that I processed that is no longer
;; undownloaded, remove its processable mark.
(mapc #'gnus-summary-remove-process-mark
(mapc #'gnus-summary-remove-process-mark
(gnus-sorted-ndifference gnus-newsgroup-processable gnus-newsgroup-undownloaded))
;; The preceeding call to (gnus-agent-summary-fetch-group)
@ -1972,11 +1972,11 @@ doesn't exist, to valid the overview buffer."
;; First, we'll fix the sort.
(sort-numeric-fields 1 (point-min) (point-max))
;; but now we have to consider that we may have duplicate rows...
;; but now we have to consider that we may have duplicate rows...
;; so reset to beginning of file
(goto-char (point-min))
(setq last -134217728)
;; and throw a code that restarts this scan
(throw 'problems t))
nil))))))
@ -3470,7 +3470,7 @@ articles in every agentized group? "))
(or gnus-expert-user
(gnus-y-or-n-p
"gnus-agent-expire has identified local directories that are\
not currently required by any agentized group. Do you wish to consider\
not currently required by any agentized group. Do you wish to consider\
deleting them?")))
(while to-remove
(let ((dir (pop to-remove)))
@ -3756,7 +3756,7 @@ If REREAD is not nil, downloaded articles are marked as unread."
(dir (file-name-directory file))
point
(downloaded (if (file-exists-p dir)
(sort (delq nil (mapcar (lambda (name)
(sort (delq nil (mapcar (lambda (name)
(and (not (file-directory-p (nnheader-concat dir name)))
(string-to-number name)))
(directory-files dir nil "^[0-9]+$" t)))
@ -3802,7 +3802,7 @@ If REREAD is not nil, downloaded articles are marked as unread."
((= l1 l2)
(forward-line -1)
(gnus-message 4 "gnus-agent-regenerate-group: NOV\
entries contained duplicate of article %s. Duplicate deleted." l1)
entries contained duplicate of article %s. Duplicate deleted." l1)
(gnus-delete-line)
(setq nov-arts (cdr nov-arts))))))
(t
@ -3923,7 +3923,7 @@ If REREAD is not nil, downloaded articles are marked as unread."
(gnus-agent-possibly-alter-active group group-active)))))
(when (and reread gnus-agent-article-alist)
(gnus-agent-synchronize-group-flags
(gnus-agent-synchronize-group-flags
group
(list (list
(if (listp reread)

View file

@ -15,7 +15,7 @@
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
@ -265,7 +265,7 @@ regexp. If it matches, the text in question is not a signature."
display -"))
"*String or function to be executed to display an X-Face header.
If it is a string, the command will be executed in a sub-shell
asynchronously. The compressed face will be piped to this command."
asynchronously. The compressed face will be piped to this command."
:type `(choice string
(function-item gnus-display-x-face-in-from)
function)
@ -1917,7 +1917,11 @@ always hide."
'string<))))
(gnus-article-hide-header "reply-to")))))
((eq elem 'date)
(let ((date (message-fetch-field "date")))
(let ((date (with-current-buffer gnus-original-article-buffer
;; If date in `gnus-article-buffer' is localized
;; (`gnus-treat-date-user-defined'),
;; `days-between' might fail.
(message-fetch-field "date"))))
(when (and date
(< (days-between (current-time-string) date)
4))
@ -3637,7 +3641,7 @@ Otherwise, it is like ~/News/news/group/num."
(defun gnus-numeric-save-name (newsgroup headers &optional last-file)
"Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
If variable `gnus-use-long-file-name' is non-nil, it is
~/News/news.group/num. Otherwise, it is like ~/News/news/group/num."
~/News/news.group/num. Otherwise, it is like ~/News/news/group/num."
(let ((default
(expand-file-name
(concat (if (gnus-use-long-file-name 'not-save)

View file

@ -121,7 +121,7 @@ Please refer to `format-time-string' for information on possible values."
(defcustom gnus-diary-delay-format-function 'gnus-diary-delay-format-english
"*Function called to format a diary delay string.
It is passed two arguments. The first one is non nil if the delay is in
It is passed two arguments. The first one is non-nil if the delay is in
the past. The second one is of the form ((NUM . UNIT) ...) where NUM is
an integer and UNIT is one of 'year 'month 'week 'day 'hour or 'minute.
It should return strings like \"In 2 months, 3 weeks\", \"3 hours,

View file

@ -131,7 +131,7 @@ for the groups to be sorted. Pre-made functions include
`gnus-group-sort-by-score', `gnus-group-sort-by-method',
`gnus-group-sort-by-server', and `gnus-group-sort-by-rank'.
This variable can also be a list of sorting functions. In that case,
This variable can also be a list of sorting functions. In that case,
the most significant sort function should be the last function in the
list."
:group 'gnus-group-listing
@ -193,7 +193,7 @@ with some simple extensions.
Note that this format specification is not always respected. For
reasons of efficiency, when listing killed groups, this specification
is ignored altogether. If the spec is changed considerably, your
is ignored altogether. If the spec is changed considerably, your
output may end up looking strange when listing both alive and killed
groups.
@ -1115,7 +1115,7 @@ When FORCE, rebuild the tool bar."
All normal editing commands are switched off.
\\<gnus-group-mode-map>
The group buffer lists (some of) the groups available. For instance,
The group buffer lists (some of) the groups available. For instance,
`\\[gnus-group-list-groups]' will list all subscribed groups with unread articles, while `\\[gnus-group-list-zombies]'
lists all zombie groups.
@ -2006,7 +2006,7 @@ and with point over the group in question."
If the prefix argument ALL is non-nil, already read articles become
readable. IF ALL is a number, fetch this number of articles. If the
optional argument NO-ARTICLE is non-nil, no article will be
auto-selected upon group entry. If GROUP is non-nil, fetch that
auto-selected upon group entry. If GROUP is non-nil, fetch that
group."
(interactive "P")
(let ((no-display (eq all 0))
@ -2446,7 +2446,7 @@ ADDRESS."
"Delete the current group. Only meaningful with editable groups.
If FORCE (the prefix) is non-nil, all the articles in the group will
be deleted. This is \"deleted\" as in \"removed forever from the face
of the Earth\". There is no undo. The user will be prompted before
of the Earth\". There is no undo. The user will be prompted before
doing the deletion.
Note that you also have to specify FORCE if you want the group to
be removed from the server, even when it's empty."
@ -2825,7 +2825,7 @@ Given a prefix, create a full group."
(defun gnus-group-make-directory-group (dir)
"Create an nndir group.
The user will be prompted for a directory. The contents of this
directory will be used as a newsgroup. The directory should contain
directory will be used as a newsgroup. The directory should contain
mail messages or news articles in files that have numeric names."
(interactive
(list (read-file-name "Create group from directory: ")))
@ -3495,7 +3495,7 @@ group line."
(defun gnus-group-transpose-groups (n)
"Move the current newsgroup up N places.
If given a negative prefix, move down instead. The difference between
If given a negative prefix, move down instead. The difference between
N and the number of steps taken is returned."
(interactive "p")
(unless (gnus-group-group-name)
@ -4211,7 +4211,7 @@ and the second element is the address."
(unless entry
(error "Trying to change non-existent group %s" method-only-group))
;; We have received parts of the actual group info - either the
;; select method or the group parameters. We first check
;; select method or the group parameters. We first check
;; whether we have to extend the info, and if so, do that.
(let ((len (length info))
(total (if (eq part 'method) 5 6)))

Some files were not shown because too many files have changed in this diff Show more