aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2006-10-15 02:54:13 +0000
committerMiles Bader2006-10-15 02:54:13 +0000
commitbb9c4b4f8b3dcd1b5fc96d2d0275cc532832fbd6 (patch)
tree8c4ae9640abcb8f33326e96e661f711417e5307c
parent5be4d5336db8be316100a5b80ee8c5e428438b9e (diff)
parent92edaeeda5c362acf2c7e7f72b3666ab7673699a (diff)
downloademacs-bb9c4b4f8b3dcd1b5fc96d2d0275cc532832fbd6.tar.gz
emacs-bb9c4b4f8b3dcd1b5fc96d2d0275cc532832fbd6.zip
Merge from emacs--devo--0
Patches applied: * emacs--devo--0 (patch 460-475) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 145-152) - Merge from emacs--devo--0 - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-118
-rw-r--r--AUTHORS167
-rw-r--r--ChangeLog4
-rw-r--r--admin/FOR-RELEASE19
-rw-r--r--admin/make-tarball.txt7
-rw-r--r--etc/ChangeLog130
-rw-r--r--etc/DEVEL.HUMOR138
-rw-r--r--etc/NEWS6
-rw-r--r--etc/TUTORIAL.bg298
-rw-r--r--leim/ChangeLog14
-rw-r--r--leim/Makefile.in11
-rw-r--r--leim/quail/latin-ltx.el32
-rw-r--r--lib-src/ChangeLog6
-rw-r--r--lib-src/makefile.w32-in2
-rw-r--r--lisp/ChangeLog558
-rw-r--r--lisp/allout.el28
-rw-r--r--lisp/apropos.el2
-rw-r--r--lisp/autoinsert.el2
-rw-r--r--lisp/completion.el11
-rw-r--r--lisp/dnd.el2
-rw-r--r--lisp/emacs-lisp/advice.el6
-rw-r--r--lisp/emacs-lisp/cl.el5
-rw-r--r--lisp/files.el13
-rw-r--r--lisp/filesets.el4
-rw-r--r--lisp/gnus/ChangeLog65
-rw-r--r--lisp/gnus/ChangeLog.2973
-rw-r--r--lisp/gnus/gmm-utils.el15
-rw-r--r--lisp/gnus/gnus-demon.el6
-rw-r--r--lisp/gnus/gnus-registry.el28
-rw-r--r--lisp/gnus/gnus-sum.el2
-rw-r--r--lisp/gnus/gnus-util.el41
-rw-r--r--lisp/gnus/mm-util.el16
-rw-r--r--lisp/gnus/mm-uu.el2
-rw-r--r--lisp/gnus/nnmaildir.el11
-rw-r--r--lisp/gnus/pop3.el33
-rw-r--r--lisp/help-at-pt.el2
-rw-r--r--lisp/help.el2
-rw-r--r--lisp/ido.el19
-rw-r--r--lisp/info-look.el3
-rw-r--r--lisp/international/mule-cmds.el28
-rw-r--r--lisp/isearch.el11
-rw-r--r--lisp/longlines.el2
-rw-r--r--lisp/mail/rmail.el8
-rw-r--r--lisp/mouse-sel.el3
-rw-r--r--lisp/newcomment.el49
-rw-r--r--lisp/progmodes/cperl-mode.el4132
-rw-r--r--lisp/progmodes/gdb-ui.el33
-rw-r--r--lisp/progmodes/sh-script.el90
-rw-r--r--lisp/shell.el9
-rw-r--r--lisp/simple.el2
-rw-r--r--lisp/strokes.el3
-rw-r--r--lisp/subr.el4
-rw-r--r--lisp/textmodes/org.el9
-rw-r--r--lisp/textmodes/reftex-global.el3
-rw-r--r--lisp/textmodes/reftex-vars.el2
-rw-r--r--lisp/textmodes/two-column.el6
-rw-r--r--lisp/url/ChangeLog112
-rw-r--r--lisp/url/url-http.el35
-rw-r--r--lisp/url/url-https.el56
-rw-r--r--lisp/url/url-parse.el49
-rw-r--r--lisp/vc-hooks.el11
-rw-r--r--lisp/wid-edit.el4
-rw-r--r--lispref/ChangeLog22
-rw-r--r--lispref/frames.texi3
-rw-r--r--lispref/keymaps.texi44
-rw-r--r--lispref/lists.texi21
-rw-r--r--lispref/searching.texi8
-rw-r--r--man/ChangeLog69
-rw-r--r--man/ack.texi79
-rw-r--r--man/building.texi4
-rw-r--r--man/ebrowse.texi2
-rw-r--r--man/emacs.texi139
-rw-r--r--man/faq.texi6
-rw-r--r--man/gnus-faq.texi13
-rw-r--r--man/gnus.texi9
-rw-r--r--man/widget.texi24
-rw-r--r--nt/INSTALL4
-rw-r--r--src/ChangeLog97
-rw-r--r--src/dispextern.h3
-rw-r--r--src/dispnew.c10
-rw-r--r--src/eval.c4
-rw-r--r--src/frame.c15
-rw-r--r--src/image.c2
-rw-r--r--src/keyboard.c10
-rw-r--r--src/keymap.c16
-rw-r--r--src/lisp.h1
-rw-r--r--src/macterm.c134
-rw-r--r--src/minibuf.c9
-rw-r--r--src/process.c7
-rw-r--r--src/regex.c9
-rw-r--r--src/regex.h12
-rw-r--r--src/search.c23
-rw-r--r--src/sysdep.c10
-rw-r--r--src/w32fns.c7
-rw-r--r--src/xdisp.c45
-rw-r--r--src/xmenu.c3
-rw-r--r--src/xterm.c2
96 files changed, 5532 insertions, 2678 deletions
diff --git a/AUTHORS b/AUTHORS
index 4d9dfc81500..58dc3ad08d5 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -112,13 +112,13 @@ Andreas Leue: changed artist.el
112Andreas Luik: changed xfns.c xterm.c 112Andreas Luik: changed xfns.c xterm.c
113 113
114Andreas Schwab: changed Makefile.in files.el lisp.h xdisp.c alloc.c 114Andreas Schwab: changed Makefile.in files.el lisp.h xdisp.c alloc.c
115 configure.in fns.c coding.c dired.el editfns.c info.el print.c eval.c 115 configure.in fns.c print.c coding.c dired.el editfns.c info.el eval.c
116 fileio.c simple.el buffer.c minibuf.c xterm.c emacs.c keyboard.c 116 fileio.c simple.el buffer.c minibuf.c xterm.c emacs.c keyboard.c
117 process.c and 443 other files 117 process.c and 444 other files
118 118
119Andreas Seltenreich: changed nnweb.el gnus-art.el gnus-ml.el gnus-srvr.el 119Andreas Seltenreich: changed nnweb.el gnus-art.el gnus-ml.el gnus-srvr.el
120 gnus-start.el gnus-util.el gnus.el gnus.texi mm-url.el url-cookie.el 120 gnus-start.el gnus-util.el gnus.el gnus.texi mm-url.el nnslashdot.el
121 url-http.el 121 url-cookie.el url-http.el
122 122
123Andrew Choi: wrote mac-win.el 123Andrew Choi: wrote mac-win.el
124and changed macterm.c mac.c macfns.c INSTALL macmenu.c darwin.h macterm.h 124and changed macterm.c mac.c macfns.c INSTALL macmenu.c darwin.h macterm.h
@@ -236,6 +236,8 @@ and changed isearch.el sendmail.el
236 236
237Bob Halley: changed esh-io.el 237Bob Halley: changed esh-io.el
238 238
239Bob Rogers: changed ffap.el
240
239Bob Weiner: changed info.el quail.el 241Bob Weiner: changed info.el quail.el
240 242
241Boris Goldowsky: wrote avoid.el descr-text.el enriched.el facemenu.el 243Boris Goldowsky: wrote avoid.el descr-text.el enriched.el facemenu.el
@@ -309,17 +311,18 @@ Charlie Martin: wrote autoinsert.el
309Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el 311Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el
310 url-file.el url-handlers.el url-http.el url-nfs.el 312 url-file.el url-handlers.el url-http.el url-nfs.el
311 313
312Chong Yidong: changed cus-edit.el custom.el display.texi longlines.el 314Chong Yidong: changed cus-edit.el custom.el simple.el display.texi
313 files.el simple.el text.texi custom.texi files.texi cus-theme.el 315 longlines.el files.el text.texi custom.texi files.texi wid-edit.el
314 info.el keyboard.c wid-edit.el xterm.c frames.texi image-mode.el 316 cus-theme.el info.el keyboard.c xterm.c compile.el frames.texi
315 misc.texi mouse.el sendmail.el xfns.c anti.texi and 152 other files 317 image-mode.el keymaps.texi misc.texi mouse.el sendmail.el
318 and 156 other files
316 319
317Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c 320Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
318 hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el 321 hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
319 syntax.c texnfo-upd.el x11fns.c xfns.c dired.el fileio.c hp9000s800.h 322 syntax.c texnfo-upd.el x11fns.c xfns.c dired.el fileio.c hp9000s800.h
320 indent.c info.el man.el and 17 other files 323 indent.c info.el man.el and 17 other files
321 324
322Chris Moore: changed wdired.el 325Chris Moore: changed dired.el wdired.el
323 326
324Chris Prince: changed w32term.c 327Chris Prince: changed w32term.c
325 328
@@ -430,7 +433,7 @@ Dave Love: wrote autoarg.el autoconf.el benchmark.el cfengine.el
430 welsh.el 433 welsh.el
431and changed configure.in Makefile.in help.el fortran.el browse-url.el 434and changed configure.in Makefile.in help.el fortran.el browse-url.el
432 mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el 435 mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el
433 wid-edit.el vc.el fns.c rfc2047.el bindings.el cus-start.el buffer.c 436 wid-edit.el fns.c vc.el rfc2047.el bindings.el cus-start.el buffer.c
434 byte-opt.el bytecomp.el and 729 other files 437 byte-opt.el bytecomp.el and 729 other files
435 438
436Dave Pearson: wrote 5x5.el quickurl.el 439Dave Pearson: wrote 5x5.el quickurl.el
@@ -475,10 +478,9 @@ David J. Mackenzie: changed configure.in etags.c fakemail.c movemail.c
475 etags-vmslib.c fortran.el hexl.c isearch.el and 12 other files 478 etags-vmslib.c fortran.el hexl.c isearch.el and 12 other files
476 479
477David Kastrup: changed greek.el replace.el search.c ange-ftp.el faq.texi 480David Kastrup: changed greek.el replace.el search.c ange-ftp.el faq.texi
478 calc.el meta-mode.el process.c search.texi DEBUG MAILINGLISTS 481 help.el mouse.el Makefile.in calc.el desktop.el keymaps.texi
479 Makefile.in autoload.el browse-url.el buffer.c building.texi 482 meta-mode.el process.c search.texi DEBUG MAILINGLISTS autoload.el
480 calc-alg.el configure.in cus-theme.el desktop.el dispnew.c 483 browse-url.el buffer.c building.texi calc-alg.el and 30 other files
481 and 21 other files
482 484
483David K,Ae(Bgedal: wrote tempo.el 485David K,Ae(Bgedal: wrote tempo.el
484and changed sendmail.el xmenu.c 486and changed sendmail.el xmenu.c
@@ -535,6 +537,8 @@ Deepak Goel: changed README ada-mode.el ada-xref.el appt.el apropos.el
535 537
536Denis Howe: wrote browse-url.el 538Denis Howe: wrote browse-url.el
537 539
540Denis St,A|(Bnkel: changed ibuf-ext.el
541
538Derek Atkins: changed pgg-pgp.el 542Derek Atkins: changed pgg-pgp.el
539 543
540Derek L. Davies: changed gud.el 544Derek L. Davies: changed gud.el
@@ -607,7 +611,7 @@ Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
607and changed msdos.c Makefile.in files.el makefile.w32-in info.el fileio.c 611and changed msdos.c Makefile.in files.el makefile.w32-in info.el fileio.c
608 startup.el mainmake.v2 config.bat menu-bar.el pc-win.el simple.el 612 startup.el mainmake.v2 config.bat menu-bar.el pc-win.el simple.el
609 internal.el msdos.h xfaces.c frame.c rmail.el dosfns.c faces.el 613 internal.el msdos.h xfaces.c frame.c rmail.el dosfns.c faces.el
610 frame.el emacs.c and 514 other files 614 frame.el emacs.c and 517 other files
611 615
612Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el 616Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
613 sh-script.el text.texi 617 sh-script.el text.texi
@@ -802,7 +806,7 @@ Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el
802 calendar.texi appt.el sh-script.el timeclock.el cal-menu.el 806 calendar.texi appt.el sh-script.el timeclock.el cal-menu.el
803 cal-hebrew.el cal-islam.el files.el holidays.el programs.texi 807 cal-hebrew.el cal-islam.el files.el holidays.el programs.texi
804 scroll-all.el startup.el cal-coptic.el cal-julian.el cal-move.el 808 scroll-all.el startup.el cal-coptic.el cal-julian.el cal-move.el
805 cal-tex.el cal-x.el and 36 other files 809 cal-tex.el cal-x.el and 37 other files
806 810
807Glynn Clements: wrote gamegrid.el snake.el tetris.el 811Glynn Clements: wrote gamegrid.el snake.el tetris.el
808 812
@@ -966,9 +970,9 @@ and changed bytecode.c mail-extr.el subr.el
966 970
967Jan Dj,Ad(Brv: wrote dnd.el x-dnd.el 971Jan Dj,Ad(Brv: wrote dnd.el x-dnd.el
968and changed gtkutil.c xterm.c xfns.c xmenu.c xterm.h gtkutil.h 972and changed gtkutil.c xterm.c xfns.c xmenu.c xterm.h gtkutil.h
969 configure.in keyboard.c Makefile.in config.in configure frames.texi 973 configure.in keyboard.c Makefile.in config.in frames.texi configure
970 emacs.c x-win.el xselect.c alloc.c xlwmenu.c startup.el xdisp.c 974 x-win.el emacs.c xselect.c alloc.c xlwmenu.c startup.el xdisp.c
971 xresources.texi fileio.c and 171 other files 975 xresources.texi cus-start.el and 172 other files
972 976
973Jan Nieuwenhuizen: changed info.el TUTORIAL.nl emacs.c emacsclient.c 977Jan Nieuwenhuizen: changed info.el TUTORIAL.nl emacs.c emacsclient.c
974 gnus-start.el gud.el nnmh.el server.el startup.el 978 gnus-start.el gud.el nnmh.el server.el startup.el
@@ -990,13 +994,13 @@ Jason Rumney: wrote w32-vars.el
990and changed w32fns.c w32term.c w32menu.c w32-win.el w32term.h 994and changed w32fns.c w32term.c w32menu.c w32-win.el w32term.h
991 makefile.w32-in w32.c w32bdf.c w32-fns.el w32select.c w32console.c 995 makefile.w32-in w32.c w32bdf.c w32-fns.el w32select.c w32console.c
992 w32gui.h w32proc.c keyboard.c mule-cmds.el emacs.c fileio.c w32bdf.h 996 w32gui.h w32proc.c keyboard.c mule-cmds.el emacs.c fileio.c w32bdf.h
993 w32inevt.c config.nt configure.bat and 78 other files 997 w32inevt.c config.nt configure.bat and 79 other files
994 998
995Jay Belanger: changed calc.texi calc.el calc-ext.el calc-embed.el 999Jay Belanger: changed calc.texi calc.el calc-ext.el calc-embed.el
996 calc-aent.el calc-prog.el calc-arith.el calc-help.el calc-lang.el 1000 calc-aent.el calc-prog.el calc-arith.el calc-help.el calc-lang.el
997 calcalg2.el calc-graph.el calc-store.el calc-units.el calc-misc.el 1001 calcalg2.el COPYING calc-graph.el calc-store.el calc-units.el
998 calc-yank.el calc-alg.el calc-poly.el calccomp.el calc-mode.el 1002 calc-misc.el calc-yank.el calc-alg.el calc-poly.el calccomp.el
999 calc-rewr.el calc-sel.el and 26 other files 1003 calc-mode.el calc-rewr.el and 34 other files
1000 1004
1001Jay K. Adams: wrote jka-cmpr-hook.el jka-compr.el 1005Jay K. Adams: wrote jka-cmpr-hook.el jka-compr.el
1002 1006
@@ -1006,6 +1010,8 @@ Jean-Philippe Theberge: wrote thumbs.el
1006 1010
1007Jeff Dwork: changed ehelp.el facemenu.el 1011Jeff Dwork: changed ehelp.el facemenu.el
1008 1012
1013Jeff Miller: changed appt.el
1014
1009Jeff Morgenthaler: changed flow-ctrl.el vt200.el vt201.el vt220.el 1015Jeff Morgenthaler: changed flow-ctrl.el vt200.el vt201.el vt220.el
1010 vt240.el 1016 vt240.el
1011 1017
@@ -1101,10 +1107,10 @@ Joel Ray Holveck: changed gnus-sum.el info.el
1101Joev Dubach: changed nntp.el 1107Joev Dubach: changed nntp.el
1102 1108
1103Johan Bockg,Ae(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el 1109Johan Bockg,Ae(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el
1104 erc-nickserv.el erc-ring.el erc-speak.el erc-track.el align.el 1110 erc-nickserv.el erc-ring.el erc-speak.el erc-track.el simple.el
1105 calendar.el cl.texi custom.el dired-aux.el display.texi erc-bbdb.el 1111 align.el calendar.el cl.texi custom.el dired-aux.el display.texi
1106 erc-button.el erc-compat.el erc-dcc.el erc-list.el erc-log.el 1112 erc-bbdb.el erc-button.el erc-compat.el erc-dcc.el erc-list.el
1107 erc-nicklist.el and 9 other files 1113 erc-log.el and 10 other files
1108 1114
1109Johan Vromans: wrote forms-d2.el forms.el iso-acc.el 1115Johan Vromans: wrote forms-d2.el forms.el iso-acc.el
1110and changed complete.el 1116and changed complete.el
@@ -1203,7 +1209,7 @@ and changed files.el perl-mode.el
1203Juanma Barranquero: changed makefile.w32-in help-fns.el subr.el faces.el 1209Juanma Barranquero: changed makefile.w32-in help-fns.el subr.el faces.el
1204 files.el w32fns.c cperl-mode.el replace.el simple.el eval.c 1210 files.el w32fns.c cperl-mode.el replace.el simple.el eval.c
1205 sh-script.el vhdl-mode.el comint.el org.el xdisp.c allout.el bs.el 1211 sh-script.el vhdl-mode.el comint.el org.el xdisp.c allout.el bs.el
1206 desktop.el idlwave.el keyboard.c process.c and 549 other files 1212 desktop.el idlwave.el keyboard.c process.c and 550 other files
1207 1213
1208Juergen Hoetzel: changed url-handlers.el 1214Juergen Hoetzel: changed url-handlers.el
1209 1215
@@ -1217,8 +1223,8 @@ Jure Cuhalev: changed ispell.el
1217 1223
1218Juri Linkov: changed info.el simple.el isearch.el replace.el compile.el 1224Juri Linkov: changed info.el simple.el isearch.el replace.el compile.el
1219 faces.el display.texi grep.el descr-text.el cus-edit.el dired.el 1225 faces.el display.texi grep.el descr-text.el cus-edit.el dired.el
1220 dired-aux.el edebug.el files.el lisp-mode.el lisp.el mule.el 1226 dired-aux.el edebug.el files.el lisp-mode.el lisp.el modes.texi mule.el
1221 compare-w.el desktop.el files.texi font-lock.el and 220 other files 1227 compare-w.el desktop.el files.texi and 220 other files
1222 1228
1223Justin Sheehy: changed gnus-sum.el nntp.el 1229Justin Sheehy: changed gnus-sum.el nntp.el
1224 1230
@@ -1246,9 +1252,9 @@ Kailash C. Chowksey: changed HELLO Makefile.in ind-util.el kannada.el
1246 1252
1247Karl Berry: changed info.texi emacs.texi elisp.texi emacs-xtra.texi 1253Karl Berry: changed info.texi emacs.texi elisp.texi emacs-xtra.texi
1248 filelock.c anti.texi building.texi cmdargs.texi copyright.el 1254 filelock.c anti.texi building.texi cmdargs.texi copyright.el
1249 customize.texi dired.c faq.texi gnu.texi help.texi macos.texi 1255 custom.texi customize.texi dired.c display.texi faq.texi frames.texi
1250 minibuf.texi msdog.texi mule.texi sending.texi texinfo.el texinfo.tex 1256 gnu.texi help.texi macos.texi minibuf.texi msdog.texi mule.texi
1251 and 64 other files 1257 and 65 other files
1252 1258
1253Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el 1259Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el
1254 jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el 1260 jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el
@@ -1278,7 +1284,7 @@ Katsuhiro Hermit Endo: changed gnus-spec.el
1278Katsumi Yamaoka: wrote canlock.el 1284Katsumi Yamaoka: wrote canlock.el
1279and changed gnus-art.el message.el gnus-sum.el gnus.texi mm-decode.el 1285and changed gnus-art.el message.el gnus-sum.el gnus.texi mm-decode.el
1280 mm-view.el gnus-util.el gnus-msg.el gnus.el mm-util.el lpath.el 1286 mm-view.el gnus-util.el gnus-msg.el gnus.el mm-util.el lpath.el
1281 gnus-start.el gnus-group.el mm-uu.el rfc2047.el dgnushack.el 1287 gnus-start.el rfc2047.el gnus-group.el mm-uu.el dgnushack.el
1282 gnus-agent.el nntp.el mml.el nnrss.el nnheader.el and 71 other files 1288 gnus-agent.el nntp.el mml.el nnrss.el nnheader.el and 71 other files
1283 1289
1284Kaveh R. Ghazi: changed delta88k.h xterm.c 1290Kaveh R. Ghazi: changed delta88k.h xterm.c
@@ -1316,7 +1322,7 @@ Ken Stevens: wrote ispell.el
1316Kenichi Handa: wrote cyrillic.el isearch-x.el py-punct.el pypunct-b5.el 1322Kenichi Handa: wrote cyrillic.el isearch-x.el py-punct.el pypunct-b5.el
1317 quail.el thai-word.el 1323 quail.el thai-word.el
1318and changed coding.c mule-cmds.el mule.el charset.c fileio.c xterm.c 1324and changed coding.c mule-cmds.el mule.el charset.c fileio.c xterm.c
1319 fns.c ccl.c mule-conf.el Makefile.in fontset.c charset.h coding.h 1325 fns.c ccl.c Makefile.in mule-conf.el fontset.c charset.h coding.h
1320 fontset.el mule-diag.el xdisp.c editfns.c process.c insdel.c 1326 fontset.el mule-diag.el xdisp.c editfns.c process.c insdel.c
1321 japanese.el characters.el and 277 other files 1327 japanese.el characters.el and 277 other files
1322 1328
@@ -1361,10 +1367,10 @@ and changed info-look.el info.el gnus-art.el gnus-sum.el mailcap.el
1361 1367
1362Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el 1368Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el
1363 ido.el keypad.el kmacro.el 1369 ido.el keypad.el kmacro.el
1364and changed xdisp.c dispextern.h simple.el xterm.c window.c keyboard.c 1370and changed xdisp.c dispextern.h simple.el window.c xterm.c keyboard.c
1365 process.c w32term.c lisp.h subr.el dispnew.c fringe.c macterm.c 1371 process.c w32term.c dispnew.c subr.el lisp.h fringe.c macterm.c
1366 display.texi alloc.c fns.c xfaces.c xfns.c xterm.h .gdbinit buffer.c 1372 display.texi fns.c alloc.c xfaces.c xfns.c xterm.h keymap.c .gdbinit
1367 and 235 other files 1373 and 238 other files
1368 1374
1369Kim-Minh Kaplan: changed gnus-picon.el gnus-sum.el gnus-start.el 1375Kim-Minh Kaplan: changed gnus-picon.el gnus-sum.el gnus-start.el
1370 gnus-win.el gnus-xmas.el gnus.texi message.el nndraft.el nnml.el 1376 gnus-win.el gnus-xmas.el gnus.texi message.el nndraft.el nnml.el
@@ -1486,7 +1492,7 @@ and changed emacsclient.c emacsserver.c etags.c lisp.h movemail.c
1486 1492
1487Maciek Pasternacki: changed nnrss.el 1493Maciek Pasternacki: changed nnrss.el
1488 1494
1489Magnus Henoch: changed ispell.el 1495Magnus Henoch: changed ispell.el rcirc.el
1490 1496
1491Manuel Serrano: wrote flyspell.el 1497Manuel Serrano: wrote flyspell.el
1492 1498
@@ -1584,10 +1590,10 @@ Martin Lorentzon: changed vc.el vc-cvs.el vc-hooks.el vc-rcs.el
1584 1590
1585Martin Neitzel: changed sc.el 1591Martin Neitzel: changed sc.el
1586 1592
1587Martin Rudalics: changed cus-edit.el wid-edit.el font-lock.el insdel.c 1593Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
1588 syntax.c buffer.c buffer.h casefiddle.c cus-start.el custom.el 1594 font-lock.el insdel.c syntax.c buffer.c buffer.h casefiddle.c custom.el
1589 editfns.c fileio.c files.el find-func.el hideif.el info.el jit-lock.el 1595 dispextern.h editfns.c eldoc.el fileio.c find-func.el hideif.el info.el
1590 lisp-mode.el lisp.h midnight.el mouse.el and 5 other files 1596 jit-lock.el lisp-mode.el lisp.h and 13 other files
1591 1597
1592Martin Stjernholm: wrote cc-bytecomp.el 1598Martin Stjernholm: wrote cc-bytecomp.el
1593and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el 1599and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
@@ -1604,8 +1610,8 @@ and changed gnuspost.el
1604 1610
1605Masatake Yamato: wrote cc-subword.el ld-script.el 1611Masatake Yamato: wrote cc-subword.el ld-script.el
1606and changed etags.el asm-mode.el xdisp.c bindings.el hexl.el man.el 1612and changed etags.el asm-mode.el xdisp.c bindings.el hexl.el man.el
1607 simple.el wid-edit.el compile.el faces.el pcvs.el register.el 1613 simple.el wid-edit.el add-log.el compile.el faces.el pcvs.el
1608 ruler-mode.el add-log.el buffer.c cus-face.el dired-x.el display.texi 1614 register.el ruler-mode.el buffer.c cus-face.el dired-x.el display.texi
1609 etags.c font-lock.el gdb-ui.el and 57 other files 1615 etags.c font-lock.el gdb-ui.el and 57 other files
1610 1616
1611Masayuki Ataka: changed texinfmt.el texinfo.el characters.el make-mode.el 1617Masayuki Ataka: changed texinfmt.el texinfo.el characters.el make-mode.el
@@ -1691,7 +1697,7 @@ Michael Olson: changed erc.el erc-backend.el Makefile erc.texi
1691 erc-stamp.el erc-log.el erc-autoaway.el erc-identd.el erc-track.el 1697 erc-stamp.el erc-log.el erc-autoaway.el erc-identd.el erc-track.el
1692 erc-match.el erc-dcc.el erc-notify.el erc-goodies.el erc-ibuffer.el 1698 erc-match.el erc-dcc.el erc-notify.el erc-goodies.el erc-ibuffer.el
1693 erc-list.el erc-pcomplete.el erc-spelling.el erc-bbdb.el erc-compat.el 1699 erc-list.el erc-pcomplete.el erc-spelling.el erc-bbdb.el erc-compat.el
1694 erc-nicklist.el erc-*.el and 41 other files 1700 erc-nicklist.el and 42 other files
1695 1701
1696Michael Piotrowski: changed ps-print.el 1702Michael Piotrowski: changed ps-print.el
1697 1703
@@ -1713,14 +1719,17 @@ Michael Sperber [Mr. Preprocessor]: changed aix3-1.h aix4-2.h
1713 1719
1714Michael Staats: wrote pc-select.el 1720Michael Staats: wrote pc-select.el
1715 1721
1716Michael Welsh Duggan: changed lisp.h w32term.c buffer.c gnus-spec.el 1722Michael Welsh Duggan: changed lisp.h sh-script.el w32term.c buffer.c
1717 keyboard.c nnmail.el termhooks.h url-http.el w32-win.el w32fns.c 1723 gnus-spec.el keyboard.c nnmail.el termhooks.h url-http.el w32-win.el
1718 w32menu.c w32term.h xdisp.c xterm.c 1724 w32fns.c w32menu.c w32term.h xdisp.c xterm.c
1719 1725
1720Michal Jankowski: changed insdel.c keyboard.c 1726Michal Jankowski: changed insdel.c keyboard.c
1721 1727
1722Micha,Ak(Bl Cadilhac: changed ispell.el dispnew.c make-mode.el pong.el 1728Michal Nazarewicz: changed ispell.el
1723 print.c process.c startup.el 1729
1730Micha,Ak(Bl Cadilhac: changed ispell.el cus-edit.el dispnew.c ido.el info.el
1731 life.el lpr.el make-mode.el pong.el print.c process.c startup.el
1732 uni-input.el
1724 1733
1725Michelangelo Grigni: wrote ffap.el 1734Michelangelo Grigni: wrote ffap.el
1726and changed gnus-score.el 1735and changed gnus-score.el
@@ -1750,8 +1759,8 @@ Mikio Nakajima: changed ring.el viper-util.el
1750Milan Zamazal: wrote czech.el glasses.el tildify.el 1759Milan Zamazal: wrote czech.el glasses.el tildify.el
1751and changed slovak.el abbrev.el compile.el filecache.el files.el 1760and changed slovak.el abbrev.el compile.el filecache.el files.el
1752 1761
1753Miles Bader: wrote button.el image-file.el macroexp.el mb-depth.el 1762Miles Bader: wrote button.el image-file.el macroexp.el minibuf-eldef.el
1754 minibuf-eldef.el rfn-eshadow.el 1763 rfn-eshadow.el
1755and changed comint.el faces.el simple.el editfns.c xfaces.c info.el 1764and changed comint.el faces.el simple.el editfns.c xfaces.c info.el
1756 xdisp.c minibuf.c wid-edit.el xterm.c subr.el window.el cus-edit.el 1765 xdisp.c minibuf.c wid-edit.el xterm.c subr.el window.el cus-edit.el
1757 diff-mode.el dispextern.h xfns.c help.el lisp.h quick-install-emacs 1766 diff-mode.el dispextern.h xfns.c help.el lisp.h quick-install-emacs
@@ -1760,7 +1769,7 @@ and changed comint.el faces.el simple.el editfns.c xfaces.c info.el
1760Miyashita Hisashi: changed ccl.c coding.c coding.h mule-cmds.el 1769Miyashita Hisashi: changed ccl.c coding.c coding.h mule-cmds.el
1761 mule-conf.el mule.el pop3.el 1770 mule-conf.el mule.el pop3.el
1762 1771
1763Miyoshi Masanori: changed mouse.el xdisp.c 1772Miyoshi Masanori: changed mouse.el smtpmail.el xdisp.c
1764 1773
1765Morioka Tomohiko: changed rmail.el rmailout.el rmailsum.el fns.c 1774Morioka Tomohiko: changed rmail.el rmailout.el rmailsum.el fns.c
1766 message.el nnheader.el nnmail.el rmailkwd.el smiley.el 1775 message.el nnheader.el nnmail.el rmailkwd.el smiley.el
@@ -1858,6 +1867,8 @@ Olivier Lecarme: changed make-mode.el ange-ftp.el apropos.el bibtex.el
1858 1867
1859Olli Savia: changed etags.c syssignal.h 1868Olli Savia: changed etags.c syssignal.h
1860 1869
1870Osamu Yamane: changed smtpmail.el
1871
1861Oscar Figueiredo: wrote eudc-bob.el eudc-export.el eudc-hotlist.el 1872Oscar Figueiredo: wrote eudc-bob.el eudc-export.el eudc-hotlist.el
1862 eudc-vars.el eudc.el eudcb-bbdb.el eudcb-ldap.el eudcb-ph.el ldap.el 1873 eudc-vars.el eudc.el eudcb-bbdb.el eudcb-ldap.el eudcb-ph.el ldap.el
1863and changed ph.el 1874and changed ph.el
@@ -1879,7 +1890,7 @@ Paul Eggert: wrote cal-dst.el rcs2log vcdiff
1879and changed editfns.c vc.el Makefile.in configure.in vc-hooks.el data.c 1890and changed editfns.c vc.el Makefile.in configure.in vc-hooks.el data.c
1880 emacs.c gnus.el calendar.el config.in floatfns.c process.c sysdep.c 1891 emacs.c gnus.el calendar.el config.in floatfns.c process.c sysdep.c
1881 dired.el xterm.c callproc.c fileio.c filelock.c lread.c print.c 1892 dired.el xterm.c callproc.c fileio.c filelock.c lread.c print.c
1882 rmail.el and 287 other files 1893 rmail.el and 290 other files
1883 1894
1884Paul Fisher: changed fns.c 1895Paul Fisher: changed fns.c
1885 1896
@@ -2030,9 +2041,9 @@ and changed gnus-art.el gnus-msg.el gnus.texi message.el nnmail.el
2030Reiner Steib: wrote gmm-utils.el 2041Reiner Steib: wrote gmm-utils.el
2031and changed gnus-art.el message.el gnus.texi gnus-sum.el gnus.el 2042and changed gnus-art.el message.el gnus.texi gnus-sum.el gnus.el
2032 gnus-group.el mml.el gnus-faq.texi gnus-score.el gnus-start.el 2043 gnus-group.el mml.el gnus-faq.texi gnus-score.el gnus-start.el
2033 gnus-util.el gnus-msg.el message.texi gnus-agent.el files.el mm-util.el 2044 gnus-util.el gnus-msg.el message.texi gnus-agent.el mm-util.el files.el
2034 spam-report.el nnweb.el spam.el deuglify.el mm-decode.el 2045 spam-report.el nnweb.el spam.el deuglify.el mm-decode.el
2035 and 156 other files 2046 and 161 other files
2036 2047
2037Remek Trzaska: changed gnus-ems.el 2048Remek Trzaska: changed gnus-ems.el
2038 2049
@@ -2060,8 +2071,8 @@ Richard M. Stallman: wrote [The original GNU emacs and numerous files]
2060 easymenu.el font-lock.el image-mode.el menu-bar.el paren.el 2071 easymenu.el font-lock.el image-mode.el menu-bar.el paren.el
2061and changed keyboard.c files.el simple.el xterm.c xdisp.c rmail.el 2072and changed keyboard.c files.el simple.el xterm.c xdisp.c rmail.el
2062 fileio.c process.c sysdep.c xfns.c buffer.c Makefile.in window.c 2073 fileio.c process.c sysdep.c xfns.c buffer.c Makefile.in window.c
2063 configure.in subr.el editfns.c emacs.c sendmail.el startup.el info.el 2074 configure.in subr.el startup.el emacs.c editfns.c sendmail.el info.el
2064 dispnew.c and 1331 other files 2075 dispnew.c and 1334 other files
2065 2076
2066Richard Mlynarik: wrote cl-indent.el ebuff-menu.el ehelp.el env.c 2077Richard Mlynarik: wrote cl-indent.el ebuff-menu.el ehelp.el env.c
2067 rfc822.el terminal.el yow.el 2078 rfc822.el terminal.el yow.el
@@ -2126,7 +2137,7 @@ Romain Francoise: changed faq.texi dired-x.el ibuf-ext.el compile.el
2126 message.el puresize.h replace.el files.texi gnus-fun.el gnus.texi 2137 message.el puresize.h replace.el files.texi gnus-fun.el gnus.texi
2127 help-fns.el make-dist rcirc.el subr.el Makefile.in antlr-mode.el 2138 help-fns.el make-dist rcirc.el subr.el Makefile.in antlr-mode.el
2128 bookmark.el buffer.c comint.el diary-lib.el dired.el 2139 bookmark.el buffer.c comint.el diary-lib.el dired.el
2129 and 119 other files 2140 and 121 other files
2130 2141
2131Roman Belenov: changed which-func.el 2142Roman Belenov: changed which-func.el
2132 2143
@@ -2174,8 +2185,8 @@ Satyaki Das: wrote mh-acros.el mh-gnus.el mh-junk.el mh-search.el
2174and changed mh-e.el mh-utils.el mh-seq.el mh-index.el mh-comp.el 2185and changed mh-e.el mh-utils.el mh-seq.el mh-index.el mh-comp.el
2175 mh-mime.el mh-customize.el mh-loaddefs.el mh-funcs.el Makefile 2186 mh-mime.el mh-customize.el mh-loaddefs.el mh-funcs.el Makefile
2176 mh-alias.el mh-pick.el mh-unit.el mh-init.el mh-identity.el mh-make.el 2187 mh-alias.el mh-pick.el mh-unit.el mh-init.el mh-identity.el mh-make.el
2177 mh-xemacs-toolbar.el mh-xemacs-compat.el mh-inc.el highlight.xpm 2188 mh-xemacs-toolbar.el mh-xemacs-compat.el pgg-gpg.el mh-inc.el
2178 mh-func.el and 7 other files 2189 highlight.xpm and 7 other files
2179 2190
2180Schlumberger Technology Corporation: changed gud.el 2191Schlumberger Technology Corporation: changed gud.el
2181 2192
@@ -2224,8 +2235,8 @@ Simon Josefsson: wrote dig.el dns-mode.el flow-fill.el fringe.el imap.el
2224 mml-sec.el mml-smime.el nnfolder.el nnimap.el nnml.el rfc2104.el 2235 mml-sec.el mml-smime.el nnfolder.el nnimap.el nnml.el rfc2104.el
2225 sieve-manage.el sieve-mode.el sieve.el smime.el starttls.el tls.el 2236 sieve-manage.el sieve-mode.el sieve.el smime.el starttls.el tls.el
2226 url-imap.el 2237 url-imap.el
2227and changed message.el gnus-sum.el gnus-art.el smtpmail.el pgg-gpg.el 2238and changed message.el gnus-sum.el gnus-art.el smtpmail.el pgg.el
2228 pgg.el gnus-agent.el mml2015.el mml.el mm-decode.el mml1991.el 2239 pgg-gpg.el gnus-agent.el mml2015.el mml.el mm-decode.el mml1991.el
2229 gnus-group.el gnus-msg.el gnus.el pgg-pgp5.el gnus-cache.el 2240 gnus-group.el gnus-msg.el gnus.el pgg-pgp5.el gnus-cache.el
2230 gnus-sieve.el browse-url.el gnus-int.el mail-source.el pgg-parse.el 2241 gnus-sieve.el browse-url.el gnus-int.el mail-source.el pgg-parse.el
2231 and 91 other files 2242 and 91 other files
@@ -2242,7 +2253,8 @@ and changed comint.el font-lock.el shell.el rmail.el fortran.el
2242 2253
2243Skip Collins: changed w32fns.c w32term.c w32term.h 2254Skip Collins: changed w32fns.c w32term.c w32term.h
2244 2255
2245Slawomir Nowaczyk: changed TUTORIAL.pl emacs.py flyspell.el ls-lisp.el 2256Slawomir Nowaczyk: changed python.el TUTORIAL.pl emacs.py flyspell.el
2257 ls-lisp.el
2246 2258
2247Spencer Thomas: changed dabbrev.el emacsclient.c emacsserver.c gnus.texi 2259Spencer Thomas: changed dabbrev.el emacsclient.c emacsserver.c gnus.texi
2248 server.el tcp.c unexec.c 2260 server.el tcp.c unexec.c
@@ -2253,15 +2265,17 @@ Stefan Monnier: wrote bibtex.el cvs-status.el diff-mode.el log-edit.el
2253 log-view.el pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el 2265 log-view.el pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el
2254 reveal.el smerge-mode.el 2266 reveal.el smerge-mode.el
2255and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h 2267and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
2256 keyboard.c tex-mode.el fill.el keymap.c alloc.c compile.el 2268 keyboard.c keymap.c tex-mode.el fill.el alloc.c compile.el files.el
2257 easy-mmode.el files.el simple.el info.el regex.c syntax.c vc-hooks.el 2269 regex.c easy-mmode.el simple.el info.el syntax.c xdisp.c vc-hooks.el
2258 xdisp.c sh-script.el and 509 other files 2270 sh-script.el and 511 other files
2259 2271
2260Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi 2272Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi
2261 ediff-mult.el 2273 ediff-mult.el
2262 2274
2263Stephen A. Wood: changed fortran.el 2275Stephen A. Wood: changed fortran.el
2264 2276
2277Stephen Berman: changed allout.el
2278
2265Stephen Eglen: wrote iswitchb.el mspools.el 2279Stephen Eglen: wrote iswitchb.el mspools.el
2266and changed diary-lib.el locate.el octave-inf.el replace.el hexl.el 2280and changed diary-lib.el locate.el octave-inf.el replace.el hexl.el
2267 info-look.el sendmail.el spell.el uce.el MORE.STUFF add-log.el 2281 info-look.el sendmail.el spell.el uce.el MORE.STUFF add-log.el
@@ -2269,8 +2283,9 @@ and changed diary-lib.el locate.el octave-inf.el replace.el hexl.el
2269 bib-mode.el bruce.el c-mode.el ccl.el and 71 other files 2283 bib-mode.el bruce.el c-mode.el ccl.el and 71 other files
2270 2284
2271Stephen Gildea: wrote mh-funcs.el mh-pick.el refcard.tex 2285Stephen Gildea: wrote mh-funcs.el mh-pick.el refcard.tex
2272and changed time-stamp.el mh-e.el mh-utils.el mh-comp.el mh-customize.el 2286and changed time-stamp.el mh-e.el mh-comp.el mh-utils.el mh-customize.el
2273 fileio.c files.el fortran.el mh-e.texi mh-mime.el mwheel.el tex-mode.el 2287 fileio.c files.el fortran.el mh-e.texi mh-junk.el mh-mime.el mwheel.el
2288 tex-mode.el
2274 2289
2275Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el 2290Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el
2276 2291
@@ -2396,7 +2411,7 @@ Tim Van Holder: changed Makefile.in compile.el configure.in which-func.el
2396 2411
2397Tobias C. Rittweiler: changed font-lock.el 2412Tobias C. Rittweiler: changed font-lock.el
2398 2413
2399Toby Allsopp: changed eudc.el 2414Toby Allsopp: changed ldap.el eudc.el
2400 2415
2401Toby Speight: changed window.el 2416Toby Speight: changed window.el
2402 2417
@@ -2527,7 +2542,7 @@ and changed latin-pre.el pl-refcard.ps pl-refcard.tex refcard-pl.ps
2527 2542
2528Wolfgang Glas: changed unexsgi.c 2543Wolfgang Glas: changed unexsgi.c
2529 2544
2530Wolfgang Jenkner: changed pcvs.el 2545Wolfgang Jenkner: changed conf-mode.el pcvs.el
2531 2546
2532Wolfgang Rupprecht: wrote float-sup.el floatfns.c sup-mouse.el 2547Wolfgang Rupprecht: wrote float-sup.el floatfns.c sup-mouse.el
2533and changed process.c alloc.c callint.c config.h.in config.in 2548and changed process.c alloc.c callint.c config.h.in config.in
@@ -2544,10 +2559,10 @@ Xavier Maillard: changed gnus-faq.texi gnus-score.el
2544 2559
2545Yagi Tatsuya: changed gnus-art.el gnus-start.el 2560Yagi Tatsuya: changed gnus-art.el gnus-start.el
2546 2561
2547Yamamoto Mitsuharu: changed macterm.c mac-win.el macfns.c mac.c macterm.h 2562Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
2548 macgui.h image.c macmenu.c macselect.c keyboard.c makefile.MPW xdisp.c 2563 macgui.h image.c macmenu.c macselect.c keyboard.c makefile.MPW xdisp.c
2549 emacs.c macos.texi xfaces.c Makefile.in config.h darwin.h dispextern.h 2564 emacs.c config.h macos.texi xfaces.c Makefile.in darwin.h dispextern.h
2550 w32term.c Info.plist and 61 other files 2565 w32term.c INSTALL and 66 other files
2551 2566
2552Yann Dirson: changed imenu.el 2567Yann Dirson: changed imenu.el
2553 2568
diff --git a/ChangeLog b/ChangeLog
index 306a72a8587..d05eb9c5c02 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12006-10-03 Kim F. Storm <storm@cua.dk>
2
3 * AUTHORS: Regenerate.
4
12006-09-30 Eli Zaretskii <eliz@gnu.org> 52006-09-30 Eli Zaretskii <eliz@gnu.org>
2 6
3 * configure: Regenerated. 7 * configure: Regenerated.
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 90e05a557a8..aef0773b89d 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -2,12 +2,13 @@ Tasks needed before the next release.
2 2
3* TO BE DONE SHORTLY BEFORE RELEASE 3* TO BE DONE SHORTLY BEFORE RELEASE
4 4
5** Update release dates of manuals.
6
7** Check for widow and orphan lines in manuals; 5** Check for widow and orphan lines in manuals;
8make sure all the pages really look ok in the manual as formatted. 6make sure all the pages really look ok in the manual as formatted.
9 7
8** Check for text in manuals that assumes current version is 21.
9
10** Update AUTHORS. 10** Update AUTHORS.
11[Done 2006-10-03]
11 12
12** Regenerate the postscript files of the reference cards in etc. 13** Regenerate the postscript files of the reference cards in etc.
13 14
@@ -34,22 +35,16 @@ These don't need to be fixed to start pretest, but we call the
34attention of Windows users to fixing them. 35attention of Windows users to fixing them.
35 36
36** Drew Adams 12 Aug bug rpt: overlay display artifact: trace left behind 37** Drew Adams 12 Aug bug rpt: overlay display artifact: trace left behind
37Windows only bug. 38Windows only bug. Bug appears only when Cleartype enabled, probably related
39to the hack introduced on 2005-07-01 to fix some other Cleartype problem.
38 40
39** henman@it.to-be.co.jp 09 Aug 2006: ispell.el problem on Cygwin. 41** henman@it.to-be.co.jp 09 Aug 2006: ispell.el problem on Cygwin.
40 (Did we decide that is unreproducible?) 42 (Did we decide that is unreproducible?)
41 43
42** kitty@dre.vanderbilt.edu Sep 20 says make-frame ignores left and top.
43
44* BUGS 44* BUGS
45 45
46** Enrico Schwass, Sep 13 help-gnu-emacs: display japanese outputdoesnt work quite right 46** hashiz@tomba.meridiani.jp, Oct 6: bootstrap failure on FreeBSD 6.2
47 47Can't be reproduced on GNU/Linux.
48** XIM hotkey doesn't work in Emacs with gnome-settings-demon.
49
50** jpff@codemist.co.uk, Sep 29: rmail g gets Wrong type argument error.
51
52** M.P.Hodges@rl.ac.uk Sep 30: list-processes and process sentinels not run.
53 48
54* DOCUMENTATION 49* DOCUMENTATION
55 50
diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt
index 0fcba5b40c8..9b15f8d39b3 100644
--- a/admin/make-tarball.txt
+++ b/admin/make-tarball.txt
@@ -62,8 +62,11 @@ For each step, check for possible errors.
62 echo directory: emacs/pretest > FILE.directive (for a pretest) 62 echo directory: emacs/pretest > FILE.directive (for a pretest)
63 echo directory: emacs > FILE.directive (for a release) 63 echo directory: emacs > FILE.directive (for a release)
64 gpg --clearsign FILE.directive 64 gpg --clearsign FILE.directive
65 Upload by anonymous ftp to ftp://ftp-upload.gnu.org/incoming/ftp/ 65 Upload by anonymous ftp to ftp://ftp-upload.gnu.org/ the files FILE,
66 the files FILE, FILE.sig, FILE.directive.asc 66 FILE.sig, FILE.directive.asc.
67 For a release, place the files in the /incoming/ftp directory.
68 For a pretest, place the files in /incoming/alpha instead, so that
69 they appear on ftp://alpha.gnu.org/.
67 70
6813. After five minutes, verify that the files are visible at 7113. After five minutes, verify that the files are visible at
69 ftp://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, at 72 ftp://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, at
diff --git a/etc/ChangeLog b/etc/ChangeLog
index f5b800b325a..5f14cbd728f 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,16 @@
12006-10-09 David Kastrup <dak@gnu.org>
2
3 * DEVEL.HUMOR: Add the topic line for last entry since that was
4 what the joke was about.
5
62006-10-07 Ognyan Kulev <ogi@fmi.uni-sofia.bg>
7
8 * TUTORIAL.bg: Synchronize with TUTORIAL.
9
102006-10-06 Juanma Barranquero <lekktu@gmail.com>
11
12 * DEVEL.HUMOR: New file.
13
12006-09-30 Chong Yidong <cyd@stupidchicken.com> 142006-09-30 Chong Yidong <cyd@stupidchicken.com>
2 15
3 * PROBLEMS: Document Emacs/XIM/gnome-settings-terminal clash. 16 * PROBLEMS: Document Emacs/XIM/gnome-settings-terminal clash.
@@ -26,7 +39,7 @@
26 39
272006-09-15 David Kastrup <dak@gnu.org> 402006-09-15 David Kastrup <dak@gnu.org>
28 41
29 * NEWS: explain new behavior and arguments of `key-binding' and 42 * NEWS: Explain new behavior and arguments of `key-binding' and
30 `command-remapping'. 43 `command-remapping'.
31 44
322006-09-11 Paul Eggert <eggert@cs.ucla.edu> 452006-09-11 Paul Eggert <eggert@cs.ucla.edu>
@@ -216,8 +229,7 @@
216 229
2172006-06-19 Carsten Dominik <dominik@science.uva.nl> 2302006-06-19 Carsten Dominik <dominik@science.uva.nl>
218 231
219 * orgcard.tex (section{Clocking Time}): Add new clocking 232 * orgcard.tex (section{Clocking Time}): Add new clocking commands.
220 commands.
221 (section{Structure Editing}): Add global archiving command. 233 (section{Structure Editing}): Add global archiving command.
222 234
2232006-06-14 Thien-Thi Nguyen <ttn@gnu.org> 2352006-06-14 Thien-Thi Nguyen <ttn@gnu.org>
@@ -304,8 +316,7 @@
304 316
3052006-05-24 Carsten Dominik <dominik@science.uva.nl> 3172006-05-24 Carsten Dominik <dominik@science.uva.nl>
306 318
307 * orgcard.tex: (section{Motion}): Added the item navigation 319 * orgcard.tex (section{Motion}): Added the item navigation commands.
308 commands.
309 (section{Publishing}): New section. 320 (section{Publishing}): New section.
310 (section{Links}): Documented elisp and shell links. 321 (section{Links}): Documented elisp and shell links.
311 322
@@ -317,8 +328,7 @@
317 328
318 * pl-refcard.tex (Local variables): Add compile-command. 329 * pl-refcard.tex (Local variables): Add compile-command.
319 330
320 * ru-refcard.tex (Local variables): Add compile-command and 331 * ru-refcard.tex (Local variables): Add compile-command and coding.
321 coding.
322 332
323 * pt-br-refcard.tex: Don't \input psfig. 333 * pt-br-refcard.tex: Don't \input psfig.
324 334
@@ -332,7 +342,7 @@
332 * pl-refcard.tex (section{Info}): Ditto. Translation suggested by 342 * pl-refcard.tex (section{Info}): Ditto. Translation suggested by
333 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>. 343 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>.
334 344
335 * cs-refcard.tex (section{Info}): Use `s' instead of `M-s'. Entry 345 * cs-refcard.tex (section{Info}): Use `s' instead of `M-s'. Entry
336 for `i' is not translated yet. 346 for `i' is not translated yet.
337 347
338 * pt-br-refcard.tex (section{Info}): Ditto. 348 * pt-br-refcard.tex (section{Info}): Ditto.
@@ -413,7 +423,7 @@
413 423
4142006-04-11 Carsten Dominik <dominik@science.uva.nl> 4242006-04-11 Carsten Dominik <dominik@science.uva.nl>
415 425
416 * orgcard.tex: (section{Tables}): Document column narrowing. 426 * orgcard.tex (section{Tables}): Document column narrowing.
417 (section{Links}): Document bracket links. 427 (section{Links}): Document bracket links.
418 428
4192006-04-11 Kenichi Handa <handa@m17n.org> 4292006-04-11 Kenichi Handa <handa@m17n.org>
@@ -442,11 +452,11 @@
442 New bitmaps for new images. 452 New bitmaps for new images.
443 453
444 * images/refresh.xpm, images/sort-ascending.xpm, 454 * images/refresh.xpm, images/sort-ascending.xpm,
445 * images/sort-descending.xpm: Update with GTK 2.x images. Note 455 * images/sort-descending.xpm: Update with GTK 2.x images. Note
446 that the default GTK icons are not overridden by the GNOME theme 456 that the default GTK icons are not overridden by the GNOME theme
447 due to a bug which was fixed in GNOME 2.15. Once GNOME 2.16 is in 457 due to a bug which was fixed in GNOME 2.15. Once GNOME 2.16 is in
448 wide circulation, then the GTK icons should be replaced with the 458 wide circulation, then the GTK icons should be replaced with the
449 equivalent GNOME icons. Until then, we should be consistent with 459 equivalent GNOME icons. Until then, we should be consistent with
450 GTK first, then GNOME. 460 GTK first, then GNOME.
451 461
452 * images/mail/repack.xpm, images/mail/reply-from.xpm: 462 * images/mail/repack.xpm, images/mail/reply-from.xpm:
@@ -504,9 +514,9 @@
504 514
5052006-03-11 Bill Wohler <wohler@newt.com> 5152006-03-11 Bill Wohler <wohler@newt.com>
506 516
507 * NEWS: Document `image-load-path-for-library'. Note that all 517 * NEWS: Document `image-load-path-for-library'. Note that all
508 images have been moved from lisp into etc/images in `find-image' 518 images have been moved from lisp into etc/images in `find-image'
509 item. Fix typo in `copy-tree'. 519 item. Fix typo in `copy-tree'.
510 520
5112006-03-09 Reiner Steib <Reiner.Steib@gmx.de> 5212006-03-09 Reiner Steib <Reiner.Steib@gmx.de>
512 522
@@ -528,7 +538,7 @@
528 538
5292006-02-22 Carsten Dominik <dominik@science.uva.nl> 5392006-02-22 Carsten Dominik <dominik@science.uva.nl>
530 540
531 * orgcard.tex: (section{Links}): Rewritten to cover the modified 541 * orgcard.tex (section{Links}): Rewritten to cover the modified
532 link system. 542 link system.
533 543
5342006-02-18 Bill Wohler <wohler@newt.com> 5442006-02-18 Bill Wohler <wohler@newt.com>
@@ -602,11 +612,11 @@
602 612
6032006-01-23 Michael Albinus <michael.albinus@gmx.de> 6132006-01-23 Michael Albinus <michael.albinus@gmx.de>
604 614
605 * NEWS: tramp can be removed by M-x tramp-unload-tramp. 615 * NEWS: Tramp can be removed by M-x tramp-unload-tramp.
606 616
6072006-01-15 Dan Nicolaescu <dann@ics.uci.edu> 6172006-01-15 Dan Nicolaescu <dann@ics.uci.edu>
608 618
609 * e/eterm-color.ti: Re-enable the ri entry. Add kich1. 619 * e/eterm-color.ti: Re-enable the ri entry. Add kich1.
610 620
6112006-01-13 Richard M. Stallman <rms@gnu.org> 6212006-01-13 Richard M. Stallman <rms@gnu.org>
612 622
@@ -711,7 +721,7 @@
7112005-10-27 Dan Nicolaescu <dann@ics.uci.edu> 7212005-10-27 Dan Nicolaescu <dann@ics.uci.edu>
712 722
713 * e/eterm-color.ti (el1): Undo 2005-10-23 change. 723 * e/eterm-color.ti (el1): Undo 2005-10-23 change.
714 Add some comments on how to update this file. Add ri 724 Add some comments on how to update this file. Add ri
715 capability that has long been supported by term.el. 725 capability that has long been supported by term.el.
716 726
7172005-10-25 Nick Roberts <nickrob@snap.net.nz> 7272005-10-25 Nick Roberts <nickrob@snap.net.nz>
@@ -738,7 +748,7 @@
738 748
7392005-10-17 Bill Wohler <wohler@newt.com> 7492005-10-17 Bill Wohler <wohler@newt.com>
740 750
741 Moved all remaining images from lisp/toolbar to etc/images. The 751 Moved all remaining images from lisp/toolbar to etc/images. The
742 low resolution images were placed in their own directory (low-color). 752 low resolution images were placed in their own directory (low-color).
743 753
744 * images/attach.*, images/cancel.*, images/close.*: 754 * images/attach.*, images/cancel.*, images/close.*:
@@ -885,7 +895,7 @@
885 895
886 * GNUS-NEWS: Fix IDNA notes. 896 * GNUS-NEWS: Fix IDNA notes.
887 897
8882005-09-27 Jay Belanger <belanger@truman.edu> 8982005-09-27 Jay Belanger <belanger@truman.edu>
889 899
890 * calccard.tex: Update `versionnumber', remove `versiondate'. 900 * calccard.tex: Update `versionnumber', remove `versiondate'.
891 (Error Recovery): Refer to "initial state" rather than "default state". 901 (Error Recovery): Refer to "initial state" rather than "default state".
@@ -1292,7 +1302,7 @@
1292 1302
12932004-09-26 Dan Nicolaescu <dann@ics.uci.edu> 13032004-09-26 Dan Nicolaescu <dann@ics.uci.edu>
1294 1304
1295 * e/eterm.ti: Comment out smcup, rmcup. Add kbs, kdch1, rc, sc. 1305 * e/eterm.ti: Comment out smcup, rmcup. Add kbs, kdch1, rc, sc.
1296 Reformat. 1306 Reformat.
1297 * e/eterm: Regenerate. 1307 * e/eterm: Regenerate.
1298 1308
@@ -1403,7 +1413,7 @@
1403 1413
14042004-06-10 Lars Hansen <larsh@math.ku.dk> 14142004-06-10 Lars Hansen <larsh@math.ku.dk>
1405 1415
1406 * NEWS: Describe dired-omit-mode. Describe desktop package changes. 1416 * NEWS: Describe dired-omit-mode. Describe desktop package changes.
1407 1417
14082004-05-29 Steven Tamm <steventamm@mac.com> 14182004-05-29 Steven Tamm <steventamm@mac.com>
1409 1419
@@ -1426,7 +1436,7 @@
1426 1436
14272004-04-13 Marcelo Toledo <marcelo@gnu.org> 14372004-04-13 Marcelo Toledo <marcelo@gnu.org>
1428 1438
1429 * TUTORIAL.pt_BR: initial check-in. 1439 * TUTORIAL.pt_BR: Initial check-in.
1430 1440
14312004-05-06 Dave Love <fx@gnu.org> 14412004-05-06 Dave Love <fx@gnu.org>
1432 1442
@@ -1790,7 +1800,7 @@
1790 1800
17912001-08-05 Pavel Jan,Am(Bk <Pavel@Janik.cz> 18012001-08-05 Pavel Jan,Am(Bk <Pavel@Janik.cz>
1792 1802
1793 * TUTORIAL.cs, TUTORIAL.sk, cs-refcard.tex, sk-refcard.tex: e-mail 1803 * TUTORIAL.cs, TUTORIAL.sk, cs-refcard.tex, sk-refcard.tex: E-mail
1794 address of Milan Zamazal changed. 1804 address of Milan Zamazal changed.
1795 1805
17962001-08-04 Pavel Jan,Am(Bk <Pavel@Janik.cz> 18062001-08-04 Pavel Jan,Am(Bk <Pavel@Janik.cz>
@@ -1904,7 +1914,7 @@
19042001-01-08 Kevin Gallagher <kevingal@onramp.net> 19142001-01-08 Kevin Gallagher <kevingal@onramp.net>
1905 1915
1906 * edt-user.doc: Updated to reflect EDT Emulation version 4.0 1916 * edt-user.doc: Updated to reflect EDT Emulation version 4.0
1907 enhancements. 1917 enhancements.
1908 1918
19092000-12-29 Gerd Moellmann <gerd@gnu.org> 19192000-12-29 Gerd Moellmann <gerd@gnu.org>
1910 1920
@@ -2229,7 +2239,7 @@
2229 2239
22301995-06-28 Eric S. Raymond <esr@spiff.gnu.ai.mit.edu> 22401995-06-28 Eric S. Raymond <esr@spiff.gnu.ai.mit.edu>
2231 2241
2232 * termcap.dat, termcap.ucb: deleted and replaced. 2242 * termcap.dat, termcap.ucb: Deleted and replaced.
2233 2243
2234 * termcap: New termcap file from the ncurses project; bigger, 2244 * termcap: New termcap file from the ncurses project; bigger,
2235 better, brighter, does away with waxy yellow buildup. Email 2245 better, brighter, does away with waxy yellow buildup. Email
@@ -2322,7 +2332,7 @@
2322 2332
23231993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) 23331993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
2324 2334
2325 Bring mumbleclean targets into conformance with GNU coding standards. 2335 Bring mumbleclean targets into conformance with GNU coding standards.
2326 * Makefile (distclean): Don't remove backup and autosave files. 2336 * Makefile (distclean): Don't remove backup and autosave files.
2327 These are easy to get rid of in other ways, and a pain to lose. 2337 These are easy to get rid of in other ways, and a pain to lose.
2328 (mostlyclean, realclean): New targets. 2338 (mostlyclean, realclean): New targets.
@@ -2345,7 +2355,7 @@
2345 2355
23461993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) 23561993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
2347 2357
2348 * Version 19.7 released. 2358 * Version 19.7 released.
2349 2359
23501993-05-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) 23601993-05-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
2351 2361
@@ -2366,7 +2376,7 @@
2366 out of date. This file referenced LNEWS when it should have 2376 out of date. This file referenced LNEWS when it should have
2367 said news.texi; fixed. 2377 said news.texi; fixed.
2368 2378
2369 news.texi: invocation-name now exists. 2379 * news.texi: invocation-name now exists.
2370 2380
23711993-03-27 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) 23811993-03-27 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
2372 2382
@@ -2386,7 +2396,7 @@
2386 2396
23871993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) 23971993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu)
2388 2398
2389 * MACHINES: Deleted some VMS caveats. If the src and lisp 2399 * MACHINES: Deleted some VMS caveats. If the src and lisp
2390 ChangeLogs are correct, dired and mail and process control are now 2400 ChangeLogs are correct, dired and mail and process control are now
2391 fully supported. 2401 fully supported.
2392 2402
@@ -2408,7 +2418,7 @@
2408 I nuked it. Let the file mod date serve. Merged in APOLLO and 2418 I nuked it. Let the file mod date serve. Merged in APOLLO and
2409 SUNBUG files. Changed references to 18.* to past tense. 2419 SUNBUG files. Changed references to 18.* to past tense.
2410 2420
2411 * emacs.names: merged into JOKES. I faked a mail header from the 2421 * emacs.names: Merged into JOKES. I faked a mail header from the
2412 Unknown User to delimit the first (unheaded) bit. 2422 Unknown User to delimit the first (unheaded) bit.
2413 2423
2414 * Makefile (relock, unlock): New productions. 2424 * Makefile (relock, unlock): New productions.
@@ -2420,30 +2430,30 @@
2420 the Emacs distribution, I have the following changes in the etc 2430 the Emacs distribution, I have the following changes in the etc
2421 directory: 2431 directory:
2422 2432
2423 * CHARACTERS: merged into TO-DO file under the heading "Long Range:" 2433 * CHARACTERS: Merged into TO-DO file under the heading "Long Range:"
2424 2434
2425 * DIFF, CCADIFF and GOSDIFF: merged into a new outline file titled 2435 * DIFF, CCADIFF, GOSDIFF: Merged into a new outline file titled
2426 OTHER.EMACSES. The present names don't really convey anything. 2436 OTHER.EMACSES. The present names don't really convey anything.
2427 Various key bindings and feature descriptions have been updated. 2437 Various key bindings and feature descriptions have been updated.
2428 2438
2429 * NICKLES.WORTH. Nuked. This is copyrighted material that could land 2439 * NICKLES.WORTH: Nuked. This is copyrighted material that could land
2430 FSF in hot water. 2440 FSF in hot water.
2431 2441
2432 * INTERVAL.IDEAS: Nuked. RMS's thinking, and indeed the 2442 * INTERVAL.IDEAS: Nuked. RMS's thinking, and indeed the
2433 implementation of intervals, have progressed way beyond this. 2443 implementation of intervals, have progressed way beyond this.
2434 2444
2435 * RCP: Nuked. It no longer said anything but "Ooops, sorry!" 2445 * RCP: Nuked. It no longer said anything but "Ooops, sorry!"
2436 2446
2437 * ED.WORSHIP, GNU.JOKES: merged into a mailbox called JOKES. 2447 * ED.WORSHIP, GNU.JOKES: Merged into a mailbox called JOKES.
2438 Future jokes can accumulate there. 2448 Future jokes can accumulate there.
2439 2449
2440 * DISTRIB: the actual domestic order form is now ORDERS.USA. 2450 * DISTRIB: The actual domestic order form is now ORDERS.USA.
2441 The DISTRIB text now mentions 19. 2451 The DISTRIB text now mentions 19.
2442 2452
2443 * ORDERS.USA: created. This is just the order form. DISTRIB 2453 * ORDERS.USA: Created. This is just the order form. DISTRIB
2444 has a pointer to it at the beginning. 2454 has a pointer to it at the beginning.
2445 2455
2446 * EUROPE: renamed to ORDERS.EUROPE. DISTRIB now has a pointer 2456 * EUROPE: Renamed to ORDERS.EUROPE. DISTRIB now has a pointer
2447 to it at the beginning. 2457 to it at the beginning.
2448 2458
2449 * OOOONEWS, OOOONEWS: Nuked. It's version 19 --- nobody needs the 2459 * OOOONEWS, OOOONEWS: Nuked. It's version 19 --- nobody needs the
@@ -2455,7 +2465,7 @@
2455 2465
24561993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) 24661993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu)
2457 2467
2458 * XENIX: nuked (moved to =XENIX). The hackery it describes is 2468 * XENIX: Nuked (moved to =XENIX). The hackery it describes is
2459 no longer necessary in the presence of 19's function-key-map 2469 no longer necessary in the presence of 19's function-key-map
2460 feature; I've added an explanation to the beginning of the file. 2470 feature; I've added an explanation to the beginning of the file.
2461 2471
@@ -2560,7 +2570,7 @@
2560 2570
25611992-03-31 Jim Blandy (jimb@pogo.cs.oberlin.edu) 25711992-03-31 Jim Blandy (jimb@pogo.cs.oberlin.edu)
2562 2572
2563 * lib-src/Makefile, etc/MACHINES, etc/NEWS: Changed references to 2573 * lib-src/Makefile, etc/MACHINES, etc/NEWS: Changed references to
2564 `config.emacs' to `configure'. 2574 `config.emacs' to `configure'.
2565 2575
2566 * lib-src/Makefile: Adjusted for renaming of share-lib to etc. 2576 * lib-src/Makefile: Adjusted for renaming of share-lib to etc.
@@ -2656,7 +2666,7 @@
2656 * etags.c (C_entries): Process token before handling end of line. 2666 * etags.c (C_entries): Process token before handling end of line.
2657 When inner loops reach end of line, just back up. 2667 When inner loops reach end of line, just back up.
2658 Let the real end of line processing happen in just one place. 2668 Let the real end of line processing happen in just one place.
2659 (consider_token): Likewise. 2669 (consider_token): Likewise.
2660 2670
26611991-04-11 Jim Blandy (jimb@geech.gnu.ai.mit.edu) 26711991-04-11 Jim Blandy (jimb@geech.gnu.ai.mit.edu)
2662 2672
@@ -2727,7 +2737,7 @@
2727 2737
27281990-08-30 David Lawrence (tale@pogo.ai.mit.edu) 27381990-08-30 David Lawrence (tale@pogo.ai.mit.edu)
2729 2739
2730 * emacs.1: Add break before -nw option. 2740 * emacs.1: Add break before -nw option.
2731 2741
27321990-08-19 David J. MacKenzie (djm@apple-gunkies) 27421990-08-19 David J. MacKenzie (djm@apple-gunkies)
2733 2743
@@ -2769,7 +2779,7 @@
2769 2779
27701990-03-14 Joseph Arceneaux (jla@churchy.ai.mit.edu) 27801990-03-14 Joseph Arceneaux (jla@churchy.ai.mit.edu)
2771 2781
2772 * etags.c (getit): Recognize '$' as beginning identifiers. 2782 * etags.c (getit): Recognize '$' as beginning identifiers.
2773 2783
27741990-02-22 David Lawrence (tale@pogo.ai.mit.edu) 27841990-02-22 David Lawrence (tale@pogo.ai.mit.edu)
2775 2785
@@ -2891,15 +2901,15 @@
2891 2901
28921989-04-18 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 29021989-04-18 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
2893 2903
2894 * loadst.c: on bsd4.3, use gettimeofday instead of CPUSTATES. 2904 * loadst.c: On bsd4.3, use gettimeofday instead of CPUSTATES.
2895 2905
28961989-03-15 Jeff Peck (rms@sugar-bombs.ai.mit.edu) 29061989-03-15 Jeff Peck (rms@sugar-bombs.ai.mit.edu)
2897 2907
2898 * emacstool.c: setenv IN_EMACSTOOL=t, TERM=sun, TERMCAP=. 2908 * emacstool.c: setenv IN_EMACSTOOL=t, TERM=sun, TERMCAP=.
2899 2909
2900 * emacsstool.1: update to document environment variables. 2910 * emacsstool.1: Update to document environment variables.
2901 2911
29021989-02-21 Mosur Mohan (email@notavailable) 29121989-02-21 Mosur Mohan (email@notavailable)
2903 2913
2904 * etags.c (PAS_funcs): New function. 2914 * etags.c (PAS_funcs): New function.
2905 2915
@@ -2913,7 +2923,7 @@
2913 2923
29141989-02-15 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 29241989-02-15 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
2915 2925
2916 * etags.c: Prolog support from Sunichirou Sugou 2926 * etags.c: Prolog support from Sunichirou Sugou.
2917 2927
29181989-02-03 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 29281989-02-03 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
2919 2929
@@ -2926,7 +2936,7 @@
29261989-01-19 Sam Kendall (email@notavailable) 29361989-01-19 Sam Kendall (email@notavailable)
2927 2937
2928 * etags.c: Greatly rewritten for C++ support and for multiple tags 2938 * etags.c: Greatly rewritten for C++ support and for multiple tags
2929 per line. 2939 per line.
2930 2940
29311989-01-03 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 29411989-01-03 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
2932 2942
@@ -2936,8 +2946,8 @@
2936 2946
29371988-12-31 Richard Mlynarik (mly@rice-chex.ai.mit.edu) 29471988-12-31 Richard Mlynarik (mly@rice-chex.ai.mit.edu)
2938 2948
2939 * env.c: Add decl for my-index 2949 * env.c: Add decl for my-index.
2940 * etags.c (file-entries): .oak => scheme 2950 * etags.c (file-entries): .oak => scheme
2941 2951
29421988-12-30 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 29521988-12-30 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
2943 2953
@@ -2981,8 +2991,8 @@
2981 2991
29821988-11-29 Richard Mlynarik (mly@pickled-brain.ai.mit.edu) 29921988-11-29 Richard Mlynarik (mly@pickled-brain.ai.mit.edu)
2983 2993
2984 * movemail.c: Better error message when can't create tempname. 2994 * movemail.c: Better error message when can't create tempname.
2985 This file needs a great deal of extra error-checking and lucid reporting... 2995 This file needs a great deal of extra error-checking and lucid reporting...
2986 2996
29871988-11-16 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 29971988-11-16 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
2988 2998
@@ -3000,7 +3010,7 @@
3000 3010
30011988-09-24 Richard Stallman (rms@gluteus.ai.mit.edu) 30111988-09-24 Richard Stallman (rms@gluteus.ai.mit.edu)
3002 3012
3003 * etags.c (main): default setting of eflag was backwards. 3013 * etags.c (main): Default setting of eflag was backwards.
3004 3014
30051988-09-23 Richard Stallman (rms@sugar-bombs.ai.mit.edu) 30151988-09-23 Richard Stallman (rms@sugar-bombs.ai.mit.edu)
3006 3016
@@ -3065,8 +3075,8 @@
3065 3075
30661988-05-13 Chris Hanson (cph@kleph) 30761988-05-13 Chris Hanson (cph@kleph)
3067 3077
3068 * emacsclient.c: Delete references to unused variable `out'. This 3078 * emacsclient.c: Delete references to unused variable `out'.
3069 caused a bus error when used under hp-ux. 3079 This caused a bus error when used under hp-ux.
3070 3080
30711988-05-06 Richard Stallman (rms@frosted-flakes.ai.mit.edu) 30811988-05-06 Richard Stallman (rms@frosted-flakes.ai.mit.edu)
3072 3082
@@ -3083,7 +3093,7 @@
30831988-04-28 Richard Stallman (rms@frosted-flakes.ai.mit.edu) 30931988-04-28 Richard Stallman (rms@frosted-flakes.ai.mit.edu)
3084 3094
3085 * movemail.c: #undef close, since config can #define it on V.3. 3095 * movemail.c: #undef close, since config can #define it on V.3.
3086 * emacsclient.c, fakemail.c, loadst.c, server.c: likewise. 3096 * emacsclient.c, fakemail.c, loadst.c, server.c: Likewise.
3087 3097
30881988-04-26 Richard Stallman (rms@lucky-charms.ai.mit.edu) 30981988-04-26 Richard Stallman (rms@lucky-charms.ai.mit.edu)
3089 3099
@@ -3094,9 +3104,9 @@
3094 3104
30951988-03-20 Richard M. Stallman (rms@wilson) 31051988-03-20 Richard M. Stallman (rms@wilson)
3096 3106
3097 * server.c [not BSD and not HAVE_SYSVIPC]: fix error message. 3107 * server.c [not BSD and not HAVE_SYSVIPC]: Fix error message.
3098 3108
3099 * loadst.c (main) [XENIX]: use /usr/spool/mail, not /usr/mail. 3109 * loadst.c (main) [XENIX]: Use /usr/spool/mail, not /usr/mail.
3100 3110
3101;; Local Variables: 3111;; Local Variables:
3102;; coding: iso-2022-7bit 3112;; coding: iso-2022-7bit
diff --git a/etc/DEVEL.HUMOR b/etc/DEVEL.HUMOR
new file mode 100644
index 00000000000..94d86407dd4
--- /dev/null
+++ b/etc/DEVEL.HUMOR
@@ -0,0 +1,138 @@
1---------------- -*- mode: text; coding: utf-8; fill-column: 70 -*- --
2-- --
3-- Humor (sometimes unintended) on the Emacs developer's list --
4-- --
5----------------------------------------------------------------------
6
7 "Is it legal for a `struct interval' to have a total_length field of
8zero?"
9 "We can't be arrested for it as far as I know, but it is definitely
10invalid for an interval to have zero length."
11 -- Miles Bader and RMS
12
13----------------------------------------------------------------------
14
15Re: lost argument and doc string
16
17I remember when I lost an argument. Boy did that hurt! ;-).
18 -- RMS
19
20----------------------------------------------------------------------
21
22 "'Cowardly' is not an adverb, although it looks like one. It is an
23adjective. It makes a statement about general temperament, rather
24than a specific occasion. I don't think Emacs has a general
25temperament."
26 "Mine does."
27 -- RMS and Eli Zaretskii
28
29----------------------------------------------------------------------
30
31 "In order to bring the user's attention to the minibuffer when an
32item such as 'Edit -> Search' is activated from the menu, I was just
33thinking that we could draw a big rectangle around the minibuffer,
34blinking (or zooming in-and-out) until some input is typed in."
35 "How about dancing elephants?"
36 "They don't fit in my office."
37 "Well once the elephants are done, your office will be much...
38bigger."
39 -- Stefan Monnier, Miles Bader and Kai Grossjohann
40
41----------------------------------------------------------------------
42
43I remember these versions as yard-rocks (is that between inch-pebbles
44and mile-stones?).
45 -- Kai Grossjohann
46
47----------------------------------------------------------------------
48
49 "I think it depends on video drivers. I cannot reproduce it on my
50home PC, but I can at work."
51 "Can you try to find a workaround at work? (I guess you don't need
52a homearound at home. ;-)"
53 -- Jason Rumney and RMS
54
55----------------------------------------------------------------------
56
57By the way, I also really really hate this unibyte/multibyte problem.
58Sometimes I think I should have opposed to the introduction of such a
59concept more strongly.
60
61 imagine there's no unibyte
62 it's easy if you try
63 no bytes below us
64 above us only chars
65 imagine all the people living in multibyte
66
67 -- Kenichi Handa
68
69----------------------------------------------------------------------
70
71I try to uphold the ideals that I was taught to value as an American,
72but every year I get less and less help from the United States.
73 -- RMS
74
75----------------------------------------------------------------------
76
77 "If the terminfo entry is most likely wrong, and we know it, then it
78doesn't make sense to follow it."
79 "Nevertheless, until now, we always did."
80 "So.... should we not fix old bugs?"
81 "Why fix an old bug if you can write three new ones in the same
82time?"
83 -- Miles Bader, Eli Zaretskii and David Kastrup
84
85----------------------------------------------------------------------
86
87 [...] As is well known, people who speak American English tend to
88be more resource-conscious and try to avoid wasting precious bits
89transferring those redundant "u"s.
90 Think of the number of occurrences of "color" and "behavior" in the
91Emacs tarball, multiply that by the number of times it'll be
92downloaded, stored on hard disks, archived, ...that's a substantial
93saving.
94 -- Stefan Monnier
95
96----------------------------------------------------------------------
97
98Re: Parent of a derived mode's keymap.
99
100 "I can't decide whether the title of this thread is more fitting for
101a blues song or a pulp fiction booklet. It certainly projects drama."
102 "Hey, it says derived, not deprived."
103 "Actually, for some keymaps 'depraved' would fit better."
104 "I knew it! You're one of them vi lovers! There is nothing wrong
105with Emacs using escape, meta, alt, control, and shift!"
106 -- David Kastrup and Lute Kamstra
107
108----------------------------------------------------------------------
109
110 "Aren't user-defined constants useful in other languages?"
111 "The only user-defined constant is ignorance. (With programmers,
112this is a variable concept ;-)"
113 -- Juanma Barranquero and Thien-Thi Nguyen
114
115----------------------------------------------------------------------
116
117 "Uh, 'archaic' and 'alive' is not a contradiction."
118 "Yes it is. 'Archaic' does not mean 'old' or 'early'. It means
119'obsolete'."
120 "'He arche' in Greek means 'the beginning'. John 1 starts off with
121'En arche en ho Logos': in the beginning, there was the word. Now of
122course we all know that Emacs was there before Word, but this might
123have escaped John's notice."
124 -- David Kastrup and RMS
125
126----------------------------------------------------------------------
127
128Re: patch for woman (woman-topic-at-point)
129
130 "Sorry for the long message. I wanted to make the problem clear
131also for people not familiar with `woman'."
132 "Most hackers, I take?
133 For a moment there I thought you had a patch that you could put on
134a woman, and it would make her come right to the topic at point
135without attempting any course of action that requires an advance
136course in divination.
137 There'd be quite a sensational market for that, you know."
138 -- Emilio Lopes and David Kastrup
diff --git a/etc/NEWS b/etc/NEWS
index ee0721b634d..c86bcca7627 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -983,6 +983,12 @@ Such individual settings are now preserved when windows are split
983horizontally or vertically, a saved window configuration is restored, 983horizontally or vertically, a saved window configuration is restored,
984or when the frame is resized. 984or when the frame is resized.
985 985
986+++
987*** The %c and %l constructs are now ignored in frame-title-format.
988Due to technical limitations in how Emacs interacts with windowing
989systems, these constructs often failed to render properly, and could
990even cause Emacs to crash.
991
986** Cursor display changes: 992** Cursor display changes:
987 993
988+++ 994+++
diff --git a/etc/TUTORIAL.bg b/etc/TUTORIAL.bg
index 9cb97696772..bf6f0af8bd5 100644
--- a/etc/TUTORIAL.bg
+++ b/etc/TUTORIAL.bg
@@ -1,6 +1,6 @@
1Âúâåäåíèå â Emacs. Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà. 1Âúâåäåíèåòî íà Åìàêñ. Óñëîâèÿòà çà êîïèðàíå ñà â êðàÿ íà òåêñòà.
2 2
3Êîìàíäèòå íà Emacs íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà 3Êîìàíäèòå íà Åìàêñ íàé-÷åñòî âêëþ÷âàò êëàâèøèòå CONTROL (ïîíÿêîãà
4îòáåëÿçâàí ñ CTRL èëè CTL) è META (ïîíÿêîãà îòáåëÿçâàí ñ EDIT èëè 4îòáåëÿçâàí ñ CTRL èëè CTL) è META (ïîíÿêîãà îòáåëÿçâàí ñ EDIT èëè
5ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå 5ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
6ñëåäíèòå ñúêðàùåíèÿ: 6ñëåäíèòå ñúêðàùåíèÿ:
@@ -14,7 +14,7 @@ ALT). Âìåñòî äà ñå èçïèñâàò ñ ïúëíî èìå âñåêè ïúò, íèå ùå èçïîëçâàìå
14 êëàâèøà ESC è ñëåä òîâà âúâåäåòå <çíàê>. Íèå 14 êëàâèøà ESC è ñëåä òîâà âúâåäåòå <çíàê>. Íèå
15 çàïèñâàìå <ESC>, çà äà îòáåëåæèì êëàâèøà ESC. 15 çàïèñâàìå <ESC>, çà äà îòáåëåæèì êëàâèøà ESC.
16 16
17Âàæíà áåëåæêà: â êðàÿ íà Emacs ñåñèÿòà âúâåäåòå äâàòà çíàêà C-x C-c. 17Âàæíà áåëåæêà: â êðàÿ íà Åìàêñ ñåñèÿòà âúâåäåòå äâàòà çíàêà C-x C-c.
18Çíàöèòå ">>" îòëÿâî âè äàâàò óêàçàíèå äà èçïúëíèòå êîìàíäà. Íàïðèìåð: 18Çíàöèòå ">>" îòëÿâî âè äàâàò óêàçàíèå äà èçïúëíèòå êîìàíäà. Íàïðèìåð:
19<<Blank lines inserted here by startup of help-with-tutorial>> 19<<Blank lines inserted here by startup of help-with-tutorial>>
20>> Ñåãà âúâåäåòå C-v (Ïîêàæè ñëåäâàùèÿ åêðàí), çà äà ñå ïðèäâèæèòå êúì 20>> Ñåãà âúâåäåòå C-v (Ïîêàæè ñëåäâàùèÿ åêðàí), çà äà ñå ïðèäâèæèòå êúì
@@ -92,7 +92,7 @@ Next (ñëåäâàù), B çà Backward (íàçàä) è F çà Forward (íàïðåä). Âèå ùå
92 92
93Âñåêè ðåä îò òåêñò çàâúðøâà ñúñ çíàê çà íîâ ðåä, êîéòî ñëóæè çà 93Âñåêè ðåä îò òåêñò çàâúðøâà ñúñ çíàê çà íîâ ðåä, êîéòî ñëóæè çà
94îòäåëÿíåòî íà ðåäà îò ñëåäâàùèÿ ðåä. Ïîñëåäíèÿò ðåä âúâ âàøèÿ ôàéë 94îòäåëÿíåòî íà ðåäà îò ñëåäâàùèÿ ðåä. Ïîñëåäíèÿò ðåä âúâ âàøèÿ ôàéë
95òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ (íî Emacs íå èçèñêâà òàêúâ, 95òðÿáâà äà èìà çíàê çà íîâ ðåä â êðàÿ (íî Åìàêñ íå èçèñêâà òàêúâ,
96êîãàòî ïðî÷èòà ôàéëà). 96êîãàòî ïðî÷èòà ôàéëà).
97 97
98>> Îïèòàéòå C-b â íà÷àëîòî íà ðåä. Òîâà òðÿáâà äà âè ïðèäâèæè â êðàÿ 98>> Îïèòàéòå C-b â íà÷àëîòî íà ðåä. Òîâà òðÿáâà äà âè ïðèäâèæè â êðàÿ
@@ -108,7 +108,7 @@ C-f ìîæå äà ïðèäâèæâà ïðåç çíàê çà íîâ ðåä òî÷íî êàêòî C-b.
108 108
109Êîãàòî ñå ïðèäâèæâàòå ñëåä ãîðíèÿ èëè äîëíèÿ êðàé íà åêðàíà, òåêñòúò 109Êîãàòî ñå ïðèäâèæâàòå ñëåä ãîðíèÿ èëè äîëíèÿ êðàé íà åêðàíà, òåêñòúò
110îòâúä êðàÿ ñå èçìåñòâà êúì åêðàíà. Òîâà ñå íàðè÷à "ñêðîëèðàíå". Òî 110îòâúä êðàÿ ñå èçìåñòâà êúì åêðàíà. Òîâà ñå íàðè÷à "ñêðîëèðàíå". Òî
111ïîçâîëÿâà íà Emacs äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà, 111ïîçâîëÿâà íà Åìàêñ äà ïðèäâèæâà êóðñîðà êúì çàäàäåíîòî ìÿñòî â òåêñòà,
112áåç äà ãî èçêàðâà èçâúí åêðàíà. 112áåç äà ãî èçêàðâà èçâúí åêðàíà.
113 113
114>> Îïèòàéòå ñå äà ïðèäâèæèòå êóðñîðà ñëåä äîëíèÿ êðàé íà åêðàíà ñ C-n 114>> Îïèòàéòå ñå äà ïðèäâèæèòå êóðñîðà ñëåä äîëíèÿ êðàé íà åêðàíà ñ C-n
@@ -191,7 +191,7 @@ Shift áèõòå âúâåëè M-çàïåòàÿ.
191Âèå ìîæåòå ñúùî äà ñå ïðèäâèæâàòå ñ êëàâèøèòå-ñòðåëêè, àêî âàøèÿò 191Âèå ìîæåòå ñúùî äà ñå ïðèäâèæâàòå ñ êëàâèøèòå-ñòðåëêè, àêî âàøèÿò
192òåðìèíàë èìà òàêèâà. Íèå ïðåïîðú÷âàìå äà íàó÷èòå C-b, C-f, C-n è C-p 192òåðìèíàë èìà òàêèâà. Íèå ïðåïîðú÷âàìå äà íàó÷èòå C-b, C-f, C-n è C-p
193ïî òðè ïðè÷èíè. Ïúðâî, òå ðàáîòÿò íà âñè÷êè âèäîâå òåðìèíàëè. Âòîðî, 193ïî òðè ïðè÷èíè. Ïúðâî, òå ðàáîòÿò íà âñè÷êè âèäîâå òåðìèíàëè. Âòîðî,
194âåäíúæ ñëåä êàòî äîáèåòå ïðàêòèêà â èçïîëçâàíåòî íà Emacs, ùå 194âåäíúæ ñëåä êàòî äîáèåòå ïðàêòèêà â èçïîëçâàíåòî íà Åìàêñ, ùå
195îòêðèåòå, ÷å âúâåæäàíåòî íà òåçè Control-çíàöè å ïî-áúðçî îò 195îòêðèåòå, ÷å âúâåæäàíåòî íà òåçè Control-çíàöè å ïî-áúðçî îò
196âúâåæäàíåòî íà êëàâèøèòå ñòðåëêè, çàùîòî íå òðÿáâà äà ïðåìåñòâàòå 196âúâåæäàíåòî íà êëàâèøèòå ñòðåëêè, çàùîòî íå òðÿáâà äà ïðåìåñòâàòå
197ðúêàòà ñè äàëå÷ îò îáëàñòòà íà êëàâèøèòå ñ áóêâè. Òðåòî, âåäíúæ ñëåä 197ðúêàòà ñè äàëå÷ îò îáëàñòòà íà êëàâèøèòå ñ áóêâè. Òðåòî, âåäíúæ ñëåä
@@ -199,7 +199,7 @@ Shift áèõòå âúâåëè M-çàïåòàÿ.
199ìîæåòå ñúùî òàêà ëåñíî äà íàó÷èòå ïî-íàïðåäíàëèòå êîìàíäè çà äâèæåíèå 199ìîæåòå ñúùî òàêà ëåñíî äà íàó÷èòå ïî-íàïðåäíàëèòå êîìàíäè çà äâèæåíèå
200íà êóðñîðà. 200íà êóðñîðà.
201 201
202Ïîâå÷åòî Emacs êîìàíäè ïðèåìàò ÷èñëîâ àðãóìåíò; çà ïîâå÷åòî îò òÿõ òîé 202Ïîâå÷åòî Åìàêñ êîìàíäè ïðèåìàò ÷èñëîâ àðãóìåíò; çà ïîâå÷åòî îò òÿõ òîé
203ñëóæè êàòî áðîÿ÷ íà ïîâòîðåíèÿ. Íà÷èíúò, ïî êîéòî äàâàòå ÷èñëîâ 203ñëóæè êàòî áðîÿ÷ íà ïîâòîðåíèÿ. Íà÷èíúò, ïî êîéòî äàâàòå ÷èñëîâ
204áðîÿ÷, å ñ âúâåæäàíå íà C-u, ïîñëåäâàíî îò âúâåæäàíå íà öèôðèòå, è 204áðîÿ÷, å ñ âúâåæäàíå íà C-u, ïîñëåäâàíî îò âúâåæäàíå íà öèôðèòå, è
205âñè÷êî òîâà ïðåäè âúâåæäàíå íà ñàìàòà êîìàíäà. Àêî èìàòå êëàâèø META 205âñè÷êî òîâà ïðåäè âúâåæäàíå íà ñàìàòà êîìàíäà. Àêî èìàòå êëàâèø META
@@ -231,7 +231,7 @@ C-v è M-v ñà äðóã âèä èçêëþ÷åíèå. Êîãàòî èì å äàäåí àðãóìåíò, òå
231 231
232Àêî èçïîëçâàòå ãðàôè÷åí èíòåðôåéñ, êàòî X11 èëè MS-Windows, áè 232Àêî èçïîëçâàòå ãðàôè÷åí èíòåðôåéñ, êàòî X11 èëè MS-Windows, áè
233òðÿáâàëî äà èìà òúíêà ïðàâîúãúëíà îáëàñò, íàðå÷åíà ïëúçãà÷ (scroll 233òðÿáâàëî äà èìà òúíêà ïðàâîúãúëíà îáëàñò, íàðå÷åíà ïëúçãà÷ (scroll
234bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Emacs. Âèå ìîæåòå äà ñêðîëèðàòå 234bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Åìàêñ. Âèå ìîæåòå äà ñêðîëèðàòå
235òåêñòà, ùðàêàéêè ñ ìèøêàòà â ïëúçãà÷à. 235òåêñòà, ùðàêàéêè ñ ìèøêàòà â ïëúçãà÷à.
236 236
237>> Îïèòàéòå äà íàòèñíåòå ñðåäíèÿ áóòîí íà âúðõà íà îñâåòåíàòà îáëàñò 237>> Îïèòàéòå äà íàòèñíåòå ñðåäíèÿ áóòîí íà âúðõà íà îñâåòåíàòà îáëàñò
@@ -243,10 +243,10 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Emacs. Âèå ìîæåòå äà ñêðîëèðàòå
243 íàãîðå è íàäîëó, êàòî äâèæèòå ìèøêàòà. 243 íàãîðå è íàäîëó, êàòî äâèæèòå ìèøêàòà.
244 244
245 245
246* ÊÎÃÀÒÎ EMACS Å ÁËÎÊÈÐÀË 246* ÊÎÃÀÒÎ ÅÌÀÊÑ Å ÁËÎÊÈÐÀË
247------------------------- 247-------------------------
248 248
249Àêî Emacs ñïðå äà îòãîâàðÿ íà âàøèòå êîìàíäè, âèå ìîæåòå äà ãî ñïðåòå 249Àêî Åìàêñ ñïðå äà îòãîâàðÿ íà âàøèòå êîìàíäè, âèå ìîæåòå äà ãî ñïðåòå
250áåçîïàñíî, êàòî âúâåäåòå C-g. Ìîæå äà èçïîëçâàòå C-g, çà äà ñïðåòå 250áåçîïàñíî, êàòî âúâåäåòå C-g. Ìîæå äà èçïîëçâàòå C-g, çà äà ñïðåòå
251êîìàíäà, êîÿòî ñå èçïúëíÿâà òâúðäå äúëãî. 251êîìàíäà, êîÿòî ñå èçïúëíÿâà òâúðäå äúëãî.
252 252
@@ -263,15 +263,15 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Emacs. Âèå ìîæåòå äà ñêðîëèðàòå
263* ÇÀÁÐÀÍÅÍÈ ÊÎÌÀÍÄÈ 263* ÇÀÁÐÀÍÅÍÈ ÊÎÌÀÍÄÈ
264------------------- 264-------------------
265 265
266Íÿêîè êîìàíäè íà Emacs ñà "çàáðàíåíè", òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè 266Íÿêîè êîìàíäè íà Åìàêñ ñà "çàáðàíåíè", òàêà ÷å íà÷èíàåùèòå ïîòðåáèòåëè
267äà íå ìîãàò äà ãè óïîòðåáÿò ïî ïîãðåøêà. 267äà íå ìîãàò äà ãè óïîòðåáÿò ïî ïîãðåøêà.
268 268
269Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Emacs èçâåæäà ñúîáùåíèå, 269Àêî âúâåäåòå íÿêîÿ îò çàáðàíåíèòå êîìàíäè, Åìàêñ èçâåæäà ñúîáùåíèå,
270êàçâàéêè êàêâà å áèëà êîìàíäàòà è ïèòàéêè âè äàëè èñêàòå äà ïðîäúëæèòå 270êàçâàéêè êàêâà å áèëà êîìàíäàòà è ïèòàéêè âè äàëè èñêàòå äà ïðîäúëæèòå
271íàïðåä è äà èçïúëíèòå êîìàíäàòà. 271íàïðåä è äà èçïúëíèòå êîìàíäàòà.
272 272
273Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå <SPC> (êëàâèøà 273Àêî íàèñòèíà èñêàòå äà èçïðîáâàòå êîìàíäàòà, âúâåäåòå êëàâèøà èíòåðâàë
274èíòåðâàë) â îòãîâîð íà âúïðîñà. Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå 274â îòãîâîð íà âúïðîñà. Îáèêíîâåíî àêî íå èñêàòå äà èçïúëíèòå
275çàáðàíåíàòà êîìàíäà, îòãîâàðÿòå íà âúïðîñà ñ "n". 275çàáðàíåíàòà êîìàíäà, îòãîâàðÿòå íà âúïðîñà ñ "n".
276 276
277>> Âúâåäåòå C-x C-l (êîÿòî å çàáðàíåíà êîìàíäà), è ñëåä òîâà âúâåäåòå 277>> Âúâåäåòå C-x C-l (êîÿòî å çàáðàíåíà êîìàíäà), è ñëåä òîâà âúâåäåòå
@@ -281,7 +281,7 @@ bar), â ëÿâàòà ñòðàíà íà ïðîçîðåöà íà Emacs. Âèå ìîæåòå äà ñêðîëèðàòå
281* ÏÐÎÇÎÐÖÈ 281* ÏÐÎÇÎÐÖÈ
282---------- 282----------
283 283
284Emacs ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé 284Åìàêñ ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé
285ñîáñòâåí òåêñò. Íèå ùå îáÿñíèì ïî-êúñíî êàê äà èçïîëçâàòå íÿêîëêî 285ñîáñòâåí òåêñò. Íèå ùå îáÿñíèì ïî-êúñíî êàê äà èçïîëçâàòå íÿêîëêî
286ïðîçîðåöà. Òî÷íî ñåãà íèå èñêàìå äà îáÿñíèì êàê äà ñå îòúðâåòå îò 286ïðîçîðåöà. Òî÷íî ñåãà íèå èñêàìå äà îáÿñíèì êàê äà ñå îòúðâåòå îò
287äîïúëíèòåëíè ïðîçîðöè è äà ñå âúðíåòå êúì îñíîâíîòî ðåäàêòèðàíå ñ åäèí 287äîïúëíèòåëíè ïðîçîðöè è äà ñå âúðíåòå êúì îñíîâíîòî ðåäàêòèðàíå ñ åäèí
@@ -311,13 +311,13 @@ Emacs ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé
311---------------------- 311----------------------
312 312
313Àêî èñêàòå äà âìúêíåòå òåêñò, ïðîñòî ãî âúâåäåòå. Çíàöèòå, êîèòî 313Àêî èñêàòå äà âìúêíåòå òåêñò, ïðîñòî ãî âúâåäåòå. Çíàöèòå, êîèòî
314ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âúçïðèåìàò îò Emacs êàòî 314ìîãàò äà ñå âèæäàò, êàòî À, 7, * è ò.í., ñå âúçïðèåìàò îò Åìàêñ êàòî
315òåêñò è ñå âìúêâàò âåäíàãà. Âúâåäåòå <Return> (êëàâèøúò çà âðúùàíå â 315òåêñò è ñå âìúêâàò âåäíàãà. Âúâåäåòå <Return> (êëàâèøúò çà âðúùàíå â
316íà÷àëîòî íà ðåäà), çà äà âìúêíåòå çíàê çà íîâ ðåä. 316íà÷àëîòî íà ðåäà), çà äà âìúêíåòå çíàê çà íîâ ðåä.
317 317
318Ìîæå äà èçòðèåòå ïîñëåäíèÿ çíàê, êîéòî ñòå âúâåëè, ñ âúâåæäàíå íà 318Ìîæå äà èçòðèåòå ïîñëåäíèÿ çíàê, êîéòî ñòå âúâåëè, ñ âúâåæäàíå íà
319<Delback>. <Delback> å êëàâèø îò êëàâèàòóðàòà -- ñúùèÿò, êîéòî 319<Delback>. <Delback> å êëàâèø îò êëàâèàòóðàòà -- ñúùèÿò, êîéòî
320îáèêíîâåíî èçïîëçâàòå èçâúí Emacs, çà äà èçòðèåòå ïîñëåäíèÿ âúâåäåí îò 320îáèêíîâåíî èçïîëçâàòå èçâúí Åìàêñ, çà äà èçòðèåòå ïîñëåäíèÿ âúâåäåí îò
321âàñ çíàê. Îáèêíîâåíî å ãîëÿì êëàâèø, íà íÿêîëêî ðåäà ðàçñòîÿíèå îò 321âàñ çíàê. Îáèêíîâåíî å ãîëÿì êëàâèø, íà íÿêîëêî ðåäà ðàçñòîÿíèå îò
322êëàâèøà <Return>, è îáèêíîâåíî å îòáåëÿçàí ñ "Delete", "Del" èëè 322êëàâèøà <Return>, è îáèêíîâåíî å îòáåëÿçàí ñ "Delete", "Del" èëè
323"Backspace". 323"Backspace".
@@ -357,24 +357,24 @@ Emacs ìîæå äà óïðàâëÿâà íÿêîëêî ïðîçîðåöà, âñåêè èçâåæäàéêè ñâîé
357>> Âúâåäåòå <Return>, çà äà âìúêíåòå íàíîâî çíàêà çà íîâ ðåä, êîéòî 357>> Âúâåäåòå <Return>, çà äà âìúêíåòå íàíîâî çíàêà çà íîâ ðåä, êîéòî
358 èçòðèõòå. 358 èçòðèõòå.
359 359
360Çàïîìíåòå, ÷å íà ïîâå÷åòî êîìàíäè íà Emacs ìîæå äà áúäå çàäàäåí áðîÿ÷ 360Çàïîìíåòå, ÷å íà ïîâå÷åòî êîìàíäè íà Åìàêñ ìîæå äà áúäå çàäàäåí áðîÿ÷
361íà ïîâòîðåíèÿòà; òîâà âêëþ÷âà âìúêâàíåòî íà òåêñòîâè çíàöè. 361íà ïîâòîðåíèÿòà; òîâà âêëþ÷âà âìúêâàíåòî íà òåêñòîâè çíàöè.
362Ïîâòàðÿíåòî íà òåêñòîâ çíàê ãî âìúêâà íÿêîëêî ïúòè. 362Ïîâòàðÿíåòî íà òåêñòîâ çíàê ãî âìúêâà íÿêîëêî ïúòè.
363 363
364>> Îïèòàéòå òîâà ñåãà -- âúâåäåòå C-u 8 *, çà äà âìúêíåòå ********. 364>> Îïèòàéòå òîâà ñåãà -- âúâåäåòå C-u 8 *, çà äà âìúêíåòå ********.
365 365
366Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Emacs 366Ñåãà âèå ñòå íàó÷èëè íàé-îñíîâíèòå íà÷èíè çà âúâåæäàíå íà íåùî â Åìàêñ
367è ïîïðàâÿíå íà ãðåøêè. Ìîæåòå ñúùî òàêà äà èçòðèâàòå äóìè èëè ðåäîâå. 367è ïîïðàâÿíå íà ãðåøêè. Ìîæåòå ñúùî òàêà äà èçòðèâàòå äóìè èëè ðåäîâå.
368Åòî îáîáùåíèå íà èçòðèâàùèòå äåéñòâèÿ: 368Åòî îáîáùåíèå íà èçòðèâàùèòå äåéñòâèÿ:
369 369
370 <Delback> Èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà 370 <Delback> èçòðèâàíå íà çíàêà òî÷íî ïðåäè êóðñîðà
371 C-d Èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà 371 C-d èçòðèâàíå íà çíàêà òî÷íî ñëåä êóðñîðà
372 372
373 M-<Delback> Èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà 373 M-<Delback> èçòðèâàíå íà äóìàòà íåïîñðåäñòâåíî ïðåäè êóðñîðà
374 M-d Èçòðèâàíå íà äóìàòà ñëåä êóðñîðà 374 M-d èçòðèâàíå íà äóìàòà ñëåä êóðñîðà
375 375
376 C-k Èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà 376 C-k èçòðèâàíå îò ìÿñòîòî íà êóðñîðà äî êðàÿ íà ðåäà
377 M-k Èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå 377 M-k èçòðèâàíå äî êðàÿ íà òåêóùîòî èçðå÷åíèå
378 378
379Çàáåëåæåòå, ÷å <Delback> è C-d, ñðàâíåíè ñ M-<Delback> è M-d, 379Çàáåëåæåòå, ÷å <Delback> è C-d, ñðàâíåíè ñ M-<Delback> è M-d,
380ðàçøèðÿâàò ïîäîáèåòî, çàïî÷íàòî îò C-f è M-f (äîáðå, <Delback> íå å 380ðàçøèðÿâàò ïîäîáèåòî, çàïî÷íàòî îò C-f è M-f (äîáðå, <Delback> íå å
@@ -384,12 +384,12 @@ M-k ñà ïîäîáíè íà C-e è M-e â ñìèñúë, ÷å åäíèòå ñà çà ðåäîâå, à
384 384
385Ìîæåòå ñúùî äà ïðåìàõíåòå âñÿêà ÷àñò îò áóôåðà ñ åäèí óíèâåðñàëåí 385Ìîæåòå ñúùî äà ïðåìàõíåòå âñÿêà ÷àñò îò áóôåðà ñ åäèí óíèâåðñàëåí
386íà÷èí. Ïðèäâèæåòå ñå äî åäèíèÿ êðàé íà ÷àñòòà è âúâåäåòå C-@ èëè 386íà÷èí. Ïðèäâèæåòå ñå äî åäèíèÿ êðàé íà ÷àñòòà è âúâåäåòå C-@ èëè
387C-<SPC> (êîåòî è äà å îò äâåòå). (<SPC> å êëàâèøúò èíòåðâàë.) 387C-èíòåðâàë (êîåòî è äà å îò äâåòå). Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà
388Ïðèäâèæåòå ñå äî äðóãèÿ êðàé íà ÷àñòòà è âúâåäåòå C-w. Òîâà ùå èçðåæå 388÷àñòòà è âúâåäåòå C-w. Òîâà ùå èçðåæå öåëèÿ òåêñò ìåæäó òåçè äâà
389öåëèÿ òåêñò ìåæäó òåçè äâà êðàÿ. 389êðàÿ.
390 390
391>> Ïðèäâèæåòå êóðñîðà äî çíàêà "Ì" â íà÷àëîòî íà ïðåäèøíèÿ àáçàö. 391>> Ïðèäâèæåòå êóðñîðà äî çíàêà "Ì" â íà÷àëîòî íà ïðåäèøíèÿ àáçàö.
392>> Âúâåäåòå C-<SPC>. Emacs òðÿáâà äà èçâåäå ñúîáùåíèå "Mark set" â 392>> Âúâåäåòå C-èíòåðâàë. Åìàêñ òðÿáâà äà èçâåäå ñúîáùåíèå "Mark set" â
393 äîëíèÿ êðàé íà åêðàíà. 393 äîëíèÿ êðàé íà åêðàíà.
394>> Ïðèäâèæåòå êóðñîðà äî áóêâàòà "ð" â "êðàé" íà âòîðèÿ ðåä îò àáçàöà. 394>> Ïðèäâèæåòå êóðñîðà äî áóêâàòà "ð" â "êðàé" íà âòîðèÿ ðåä îò àáçàöà.
395>> Âúâåäåòå C-w. Òîâà ùå èçðåæå òåêñòà, çàïî÷âàù îò "Ì" è çàâúðøâàù 395>> Âúâåäåòå C-w. Òîâà ùå èçðåæå òåêñòà, çàïî÷âàù îò "Ì" è çàâúðøâàù
@@ -419,9 +419,9 @@ C-k îáðàáîòâà ÷èñëîâèòå àðãóìåíòè ïî ñïåöèàëåí íà÷èí: ïðåìàõâàò ñå
419Âðúùàíåòî îáðàòíî íà òåêñò ñå íàðè÷à "âìúêâàíå". (Ìèñëåòå çà íåãî 419Âðúùàíåòî îáðàòíî íà òåêñò ñå íàðè÷à "âìúêâàíå". (Ìèñëåòå çà íåãî
420êàòî çà èçâàæäàíå îáðàòíî, èëè äðúïâàíå îáðàòíî, íà òåêñò, êîéòî å áèë 420êàòî çà èçâàæäàíå îáðàòíî, èëè äðúïâàíå îáðàòíî, íà òåêñò, êîéòî å áèë
421èçðÿçàí.) Ìîæåòå äà âìúêâàòå èçðÿçàíèÿ òåêñò èëè íà ñúùîòî ìÿñòî, 421èçðÿçàí.) Ìîæåòå äà âìúêâàòå èçðÿçàíèÿ òåêñò èëè íà ñúùîòî ìÿñòî,
422îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â ðåäàêòèðàíèÿ òåêñò, 422îòêúäåòî å áèë ïðåìàõíàò, èëè íà äðóãî ìÿñòî â áóôåðà, äàæå è â
423äàæå è â ðàçëè÷åí ôàéë. Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî 423ðàçëè÷åí ôàéë. Ìîæåòå äà âìúêâàòå åäèí è ñúù òåêñò íÿêîëêî ïúòè; òîâà
424ïúòè; òîâà ïðàâè íÿêîëêî êîïèÿ îò íåãî. 424ïðàâè íÿêîëêî êîïèÿ îò íåãî.
425 425
426Êîìàíäàòà çà âìúêâàíå å C-y. Òÿ âìúêâà íàíîâî ïîñëåäíèÿ èçðÿçàí òåêñò 426Êîìàíäàòà çà âìúêâàíå å C-y. Òÿ âìúêâà íàíîâî ïîñëåäíèÿ èçðÿçàí òåêñò
427â òåêóùîòî ìÿñòî íà êóðñîðà. 427â òåêóùîòî ìÿñòî íà êóðñîðà.
@@ -500,25 +500,25 @@ C_- å, ÷å íà íÿêîè êëàâèàòóðè íå å î÷åâèäíî êàê òðÿáâà äà ñå âúâåäå.
500--------- 500---------
501 501
502Çà äà íàïðàâèòå òåêñòà, êîéòî ðåäàêòèðàòå, ïîñòîÿíåí, òðÿáâà äà ãî 502Çà äà íàïðàâèòå òåêñòà, êîéòî ðåäàêòèðàòå, ïîñòîÿíåí, òðÿáâà äà ãî
503ñëîæèòå âúâ ôàéë.  ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Emacs 503ñëîæèòå âúâ ôàéë.  ïðîòèâåí ñëó÷àé òîé ùå èç÷åçíå, êîãàòî Åìàêñ
504ïðèêëþ÷è. Çà äà ñëîæèòå âàøèÿ òåêñò âúâ ôàéë, òðÿáâà äà "íàìåðèòå" 504ïðèêëþ÷è. Çà äà ñëîæèòå âàøèÿ òåêñò âúâ ôàéë, òðÿáâà äà "íàìåðèòå"
505ôàéëà ïðåäè äà âúâåæäàòå òåêñò. (Òîâà ñúùî ñå íàðè÷à "ïîñåùàâàíå" íà 505ôàéëà ïðåäè äà âúâåæäàòå òåêñò. (Òîâà ñúùî ñå íàðè÷à "ïîñåùàâàíå" íà
506ôàéëà.) 506ôàéëà.)
507 507
508Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Emacs.  508Íàìèðàíå íà ôàéë îçíà÷àâà, ÷å âèæäàòå ñúäúðæàíèåòî ìó â Åìàêñ. Â
509ìíîãî ñëó÷àè òîâà å êàòî äà ðåäàêòèðàòå ñàìèÿ ôàéë. Îáà÷å ïðîìåíèòå, 509ìíîãî ñëó÷àè òîâà å êàòî äà ðåäàêòèðàòå ñàìèÿ ôàéë. Îáà÷å ïðîìåíèòå,
510êîèòî ïðàâèòå, èçïîëçâàéêè Emacs, íå îñòàâàò ïîñòîÿííè, äîêàòî íå 510êîèòî ïðàâèòå, èçïîëçâàéêè Åìàêñ, íå îñòàâàò ïîñòîÿííè, äîêàòî íå
511"çàïèøåòå" ôàéëà. Òîâà å òàêà, çà äà ñå ïðåäîòâðàòè îñòàâÿíåòî íà 511"çàïèøåòå" ôàéëà. Òîâà å òàêà, çà äà ñå ïðåäîòâðàòè îñòàâÿíåòî íà
512ïîëóïðîìåíåí ôàéë â ñèñòåìàòà, êîãàòî íå èñêàòå òîâà. Äîðè êîãàòî 512ïîëóïðîìåíåí ôàéë â ñèñòåìàòà, êîãàòî íå èñêàòå òîâà. Äîðè êîãàòî
513çàïèñâàòå, Emacs îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å 513çàïèñâàòå, Åìàêñ îñòàâÿ íà÷àëíèÿ ôàéë ïîä ïðîìåíåíî èìå, â ñëó÷àé, ÷å
514ïî-êúñíî ðåøèòå, ÷å âàøèòå ïðîìåíè ñà áèëè ãðåøêà. 514ïî-êúñíî ðåøèòå, ÷å âàøèòå ïðîìåíè ñà áèëè ãðåøêà.
515 515
516Àêî ïîãëåäíåòå â äúíîòî íà åêðàíà, ùå âèäèòå ðåä, êîéòî çàïî÷âà è 516Àêî ïîãëåäíåòå â äúíîòî íà åêðàíà, ùå âèäèòå ðåä, êîéòî çàïî÷âà è
517çàâúðøâà ñ òèðåòà è çàïî÷âà ñ "-R:-- TUTORIAL.bg" èëè íåùî ïîäîáíî. 517çàâúðøâà ñ òèðåòà è çàïî÷âà ñ "-b:-- TUTORIAL.bg" èëè íåùî ïîäîáíî.
518Òàçè ÷àñò îò åêðàíà ïîêàçâà èìåòî íà ôàéëà, êîéòî ñòå ïîñåòèëè. Òî÷íî 518Òàçè ÷àñò îò åêðàíà ïîêàçâà èìåòî íà ôàéëà, êîéòî ñòå ïîñåòèëè. Òî÷íî
519ñåãà âèå ñòå ïîñåòèëè ôàéë, íàðå÷åí "TUTORIAL.bg", êîéòî å âàøåòî 519ñåãà âèå ñòå ïîñåòèëè ôàéë, íàðå÷åí "TUTORIAL.bg", êîéòî å âàøåòî
520ëè÷íî êîïèå-÷åðíîâà íà Emacs âúâåäåíèåòî. Êîãàòî íàìåðèòå ôàéë â 520ëè÷íî êîïèå-÷åðíîâà íà Åìàêñ âúâåäåíèåòî. Êîãàòî íàìåðèòå ôàéë â
521Emacs, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî. 521Åìàêñ, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî.
522 522
523Îñîáåíîñò íà êîìàíäàòà çà íàìèðàíå íà ôàéë å, ÷å òðÿáâà äà êàæåòå 523Îñîáåíîñò íà êîìàíäàòà çà íàìèðàíå íà ôàéë å, ÷å òðÿáâà äà êàæåòå
524èìåòî íà ôàéëà, êîéòî èñêàòå. Íèå ãî íàðè÷àìå "÷åòåíå íà àðãóìåíò îò 524èìåòî íà ôàéëà, êîéòî èñêàòå. Íèå ãî íàðè÷àìå "÷åòåíå íà àðãóìåíò îò
@@ -527,10 +527,10 @@ Emacs, èìåòî íà òîçè ôàéë ùå ñå ïîÿâè íà ñúùîòî ìÿñòî.
527 527
528 C-x C-f Íàìèðàíå íà ôàéë 528 C-x C-f Íàìèðàíå íà ôàéë
529 529
530Emacs âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî 530Åìàêñ âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî
531íàïèøåòå, ñå ïîÿâÿâà â äúíîòî íà åêðàíà. Ðåäúò â äúíîòî íà åêðàíà ñå 531íàïèøåòå, ñå ïîÿâÿâà â äúíîòî íà åêðàíà. Ðåäúò â äúíîòî íà åêðàíà ñå
532íàðè÷à ìèíèáóôåð, êîãàòî ñå èçïîëçâà çà òîçè âèä âõîä. Ìîæåòå äà 532íàðè÷à ìèíèáóôåð, êîãàòî ñå èçïîëçâà çà òîçè âèä âõîä. Ìîæåòå äà
533èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Emacs, çà äà 533èçïîëçâàòå îáèêíîâåíèòå êîìàíäè çà ðåäàêòèðàíå íà Åìàêñ, çà äà
534ðåäàêòèðàòå èìåòî íà ôàéëà. 534ðåäàêòèðàòå èìåòî íà ôàéëà.
535 535
536Êîãàòî âúâåæäàòå èìåòî íà ôàéëà (èëè êàêúâòî è äà å âõîä â 536Êîãàòî âúâåæäàòå èìåòî íà ôàéëà (èëè êàêúâòî è äà å âõîä â
@@ -551,12 +551,12 @@ Emacs âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî
551 551
552 C-x C-s Çàïàçâàíå íà ôàéëà 552 C-x C-s Çàïàçâàíå íà ôàéëà
553 553
554Òîâà êîïèðà òåêñòà îò Emacs âúâ ôàéëà. Ïúðâèÿ ïúò, êîãàòî òîâà ñå 554Òîâà êîïèðà òåêñòà îò Åìàêñ âúâ ôàéëà. Ïúðâèÿ ïúò, êîãàòî òîâà ñå
555íàïðàâè, Emacs ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå 555íàïðàâè, Åìàêñ ïðåèìåíóâà íà÷àëíèÿ ôàéë ñ íîâî èìå, òàêà ÷å òîé äà íå
556ñå èçãóáè. Íîâîòî èìå ñå ïîñòðîÿâà ñ äîáàâÿíå íà "~" â êðàÿ íà èìåòî 556ñå èçãóáè. Íîâîòî èìå ñå ïîñòðîÿâà ñ äîáàâÿíå íà "~" â êðàÿ íà èìåòî
557íà íà÷àëíèÿ ôàéë. 557íà íà÷àëíèÿ ôàéë.
558 558
559Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Emacs èçâåæäà èìåòî íà ôàéëà, êîéòî å 559Êîãàòî çàïàçâàíåòî å ñâúðøèëî, Åìàêñ èçâåæäà èìåòî íà ôàéëà, êîéòî å
560áèë çàïèñàí. Òðÿáâà äà çàïèñâàòå äîñòàòú÷íî ÷åñòî, òàêà ÷å äà íå 560áèë çàïèñàí. Òðÿáâà äà çàïèñâàòå äîñòàòú÷íî ÷åñòî, òàêà ÷å äà íå
561èçãóáèòå ìíîãî ðàáîòà, àêî ñèñòåìàòà ñå ñðèíå ïî íÿêàêâà ïðè÷èíà. 561èçãóáèòå ìíîãî ðàáîòà, àêî ñèñòåìàòà ñå ñðèíå ïî íÿêàêâà ïðè÷èíà.
562 562
@@ -564,19 +564,19 @@ Emacs âè ïîäêàíÿ äà âúâåäåòå èìåòî íà ôàéëà. Èìåòî íà ôàéëà, êîåòî
564 Òîâà òðÿáâà äà èçâåäå "Wrote ...TUTORIAL.bg" â äúíîòî íà åêðàíà. 564 Òîâà òðÿáâà äà èçâåäå "Wrote ...TUTORIAL.bg" â äúíîòî íà åêðàíà.
565 565
566ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-x C-s ùå çàìðúçè åêðàíà è 566ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-x C-s ùå çàìðúçè åêðàíà è
567âèå íÿìà äà âèæäàòå ïîâå÷å èçõîä îò Emacs. Òîâà ïîêàçâà, ÷å åäíà 567âèå íÿìà äà âèæäàòå ïîâå÷å èçõîä îò Åìàêñ. Òîâà ïîêàçâà, ÷å åäíà
568"ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðè÷àíà "óïðàâëåíèå íà ïîòîêà" 568"ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðè÷àíà "óïðàâëåíèå íà ïîòîêà"
569(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà êúì Emacs. Çà äà 569(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà êúì Åìàêñ. Çà äà
570ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî 570ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî
571âêëþ÷âàíå íà ïîñòúïêîâî òúðñåíå" (Spontaneous Entry to Incremental 571âêëþ÷âàíå íà ïîñòúïêîâî òúðñåíå" (Spontaneous Entry to Incremental
572Search) â ðúêîâîäñòâîòî íà Emacs çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè 572Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
573"ñïîñîáíîñò". 573"ñïîñîáíîñò".
574 574
575Ìîæå äà íàìåðèòå ñúùåñòâóâàù ôàéë, äà ãî ðàçãëåäàòå è äà ãî 575Ìîæå äà íàìåðèòå ñúùåñòâóâàù ôàéë, äà ãî ðàçãëåäàòå è äà ãî
576ðåäàêòèðàòå. Ìîæåòå ñúùî äà íàìåðèòå ôàéë, êîéòî íå ñúùåñòâóâà. Òîâà 576ðåäàêòèðàòå. Ìîæåòå ñúùî äà íàìåðèòå ôàéë, êîéòî íå ñúùåñòâóâà. Òîâà
577å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Emacs: íàìèðàòå ôàéëà, êîéòî 577å íà÷èíúò çà ñúçäàâàíå íà íîâè ôàéëîâå â Åìàêñ: íàìèðàòå ôàéëà, êîéòî
578ùå áúäå â íà÷àëîòî ïðàçåí, è òîãàâà çàïî÷âàòå âìúêâàíåòî íà òåêñòà çà 578ùå áúäå â íà÷àëîòî ïðàçåí, è òîãàâà çàïî÷âàòå âìúêâàíåòî íà òåêñòà çà
579ôàéëà. Êîãàòî ãîâîðèòå çà "çàïèñâàíå" íà ôàéë, Emacs âñúùíîñò ùå 579ôàéëà. Êîãàòî ãîâîðèòå çà "çàïèñâàíå" íà ôàéë, Åìàêñ âñúùíîñò ùå
580ñúçäàäå ôàéëà ñ òåêñòà, êîéòî ñòå âúâåëè. Îòòàì íàòàòúê ìîæå äà 580ñúçäàäå ôàéëà ñ òåêñòà, êîéòî ñòå âúâåëè. Îòòàì íàòàòúê ìîæå äà
581ñ÷èòàòå, ÷å ðåäàêòèðàòå âå÷å ñúùåñòâóâàù ôàéë. 581ñ÷èòàòå, ÷å ðåäàêòèðàòå âå÷å ñúùåñòâóâàù ôàéë.
582 582
@@ -584,9 +584,9 @@ Search) â ðúêîâîäñòâîòî íà Emacs çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
584* ÁÓÔÅÐÈ 584* ÁÓÔÅÐÈ
585-------- 585--------
586 586
587Àêî íàìåðèòå âòîðè ôàéë ñ C-x C-f, ïúðâèÿò ôàéë îñòàâà â Emacs. 587Àêî íàìåðèòå âòîðè ôàéë ñ C-x C-f, ïúðâèÿò ôàéë îñòàâà â Åìàêñ.
588Ìîæåòå äà ïðåâêëþ÷èòå îáðàòíî êúì íåãî, êàòî ãî íàìåðèòå ïàê ñ C-x 588Ìîæåòå äà ïðåâêëþ÷èòå îáðàòíî êúì íåãî, êàòî ãî íàìåðèòå ïàê ñ C-x
589C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Emacs. 589C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Åìàêñ.
590 590
591>> Ñúçäàéòå ôàéë ñ èìå "foo", âúâåæäàéêè C-x C-f foo <Return>. 591>> Ñúçäàéòå ôàéë ñ èìå "foo", âúâåæäàéêè C-x C-f foo <Return>.
592 Âìúêíåòå ìàëêî òåêñò, ðåäàêòèðàéòå ãî è çàïàçåòå "foo" ñ âúâåæäàíå 592 Âìúêíåòå ìàëêî òåêñò, ðåäàêòèðàéòå ãî è çàïàçåòå "foo" ñ âúâåæäàíå
@@ -594,16 +594,16 @@ C-f. Ïî òîçè íà÷èí ìîæå äà ïîëó÷èòå äîñòà íà áðîé ôàéëîâå â Emacs.
594 Íàêðàÿ âúâåäåòå C-x C-f TUTORIAL.bg <Return>, çà äà ñå âúðíåòå 594 Íàêðàÿ âúâåäåòå C-x C-f TUTORIAL.bg <Return>, çà äà ñå âúðíåòå
595 îáðàòíî âúâ âúâåäåíèåòî. 595 îáðàòíî âúâ âúâåäåíèåòî.
596 596
597Emacs çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð". 597Åìàêñ çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð".
598Íàìèðàíåòî íà ôàéë ïðàâè íîâ áóôåð â Emacs. Çà äà âèäèòå ñïèñúê íà 598Íàìèðàíåòî íà ôàéë ïðàâè íîâ áóôåð â Åìàêñ. Çà äà âèäèòå ñïèñúê íà
599áóôåðèòå, êîèòî â ìîìåíòà ñúùåñòâóâàò âúâ âàøèÿ Emacs, âúâåäåòå 599áóôåðèòå, êîèòî â ìîìåíòà ñúùåñòâóâàò âúâ âàøèÿ Åìàêñ, âúâåäåòå
600 600
601 C-x C-b Ïîêàçâàíå íà áóôåðèòå 601 C-x C-b Ïîêàçâàíå íà áóôåðèòå
602 602
603>> Îïèòàéòå C-x C-b ñåãà. 603>> Îïèòàéòå C-x C-b ñåãà.
604 604
605Âèæòå êàê âñåêè áóôåð èìà èìå, à ïîíÿêîãà è èìå íà ôàéë çà ôàéëà, 605Âèæòå êàê âñåêè áóôåð èìà èìå, à ïîíÿêîãà è èìå íà ôàéë çà ôàéëà,
606÷èåòî ñúäúðæàíèå äúðæè. ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Emacs ïðîçîðåö, 606÷èåòî ñúäúðæàíèå äúðæè. ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö,
607å âèíàãè ÷àñò îò íÿêàêúâ áóôåð. 607å âèíàãè ÷àñò îò íÿêàêúâ áóôåð.
608 608
609>> Âúâåäåòå C-x 1, çà äà ìàõíåòå ñïèñúêà ñ áóôåðèòå. 609>> Âúâåäåòå C-x 1, çà äà ìàõíåòå ñïèñúêà ñ áóôåðèòå.
@@ -625,13 +625,13 @@ Emacs çàïàçâà òåêñòà íà âñåêè ôàéë â îáåêò, íàðè÷àí "áóôåð".
625Ñïèñúêúò ñ áóôåðèòå, êîéòî ïðàâèòå ñ C-x C-b, âèíàãè âè ïîêàçâà èìåòî 625Ñïèñúêúò ñ áóôåðèòå, êîéòî ïðàâèòå ñ C-x C-b, âèíàãè âè ïîêàçâà èìåòî
626íà âñåêè áóôåð. 626íà âñåêè áóôåð.
627 627
628ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Emacs ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ 628ÂÑÅÊÈ òåêñò, êîéòî âèæäàòå â Åìàêñ ïðîçîðåö, å âèíàãè ÷àñò îò íÿêàêúâ
629áóôåð. Íÿêîè áóôåðè íå ñúîòâåòñòâàò íà ôàéëîâå. Íàïðèìåð áóôåðúò, 629áóôåð. Íÿêîè áóôåðè íå ñúîòâåòñòâàò íà ôàéëîâå. Íàïðèìåð áóôåðúò,
630èìåíóâàí "*Buffer List*", íå ñúîòâåòñòâà íà ôàéë. Òîâà å áóôåðúò, 630èìåíóâàí "*Buffer List*", íå ñúîòâåòñòâà íà ôàéë. Òîâà å áóôåðúò,
631êîéòî ñúäúðæà ñïèñúêà ñ áóôåðèòå, êîèòî ñòå íàïðàâèëè ñ C-x C-b. 631êîéòî ñúäúðæà ñïèñúêà ñ áóôåðèòå, êîèòî ñòå íàïðàâèëè ñ C-x C-b.
632Áóôåðúò, èìåíóâàí "*Messages*", ñúùî íå ñúîòâåòñòâà íà ôàéë; òîé 632Áóôåðúò, èìåíóâàí "*Messages*", ñúùî íå ñúîòâåòñòâà íà ôàéë; òîé
633ñúäúðæà ñúîáùåíèÿòà, êîèòî ñå ïîÿâÿâàò â äúíîòî íà åêðàíà ïî âðåìå íà 633ñúäúðæà ñúîáùåíèÿòà, êîèòî ñå ïîÿâÿâàò â äúíîòî íà åêðàíà ïî âðåìå íà
634Emacs ñåñèÿòà. 634Åìàêñ ñåñèÿòà.
635 635
636>> Âúâåäåòå C-x b *Messages* <Return>, çà äà âèäèòå áóôåðà ñúñ 636>> Âúâåäåòå C-x b *Messages* <Return>, çà äà âèäèòå áóôåðà ñúñ
637 ñúîáùåíèÿòà. Ñëåä òîâà âúâåäåòå C-x C-b TUTORIAL <Return>, çà äà 637 ñúîáùåíèÿòà. Ñëåä òîâà âúâåäåòå C-x C-b TUTORIAL <Return>, çà äà
@@ -639,7 +639,7 @@ Emacs ñåñèÿòà.
639 639
640Àêî íàïðàâèòå ïðîìåíè â òåêñòà íà åäèí ôàéë è òîãàâà íàìåðèòå äðóã 640Àêî íàïðàâèòå ïðîìåíè â òåêñòà íà åäèí ôàéë è òîãàâà íàìåðèòå äðóã
641ôàéë, òîâà íÿìà äà çàïèøå ïúðâèÿ ôàéë. Íåãîâèòå ïðîìåíè îñòàâàò âúòðå 641ôàéë, òîâà íÿìà äà çàïèøå ïúðâèÿ ôàéë. Íåãîâèòå ïðîìåíè îñòàâàò âúòðå
642â Emacs, â áóôåðà íà ôàéëà. Ñúçäàâàíåòî èëè ðåäàêòèðàíåòî íà áóôåðà 642â Åìàêñ, â áóôåðà íà ôàéëà. Ñúçäàâàíåòî èëè ðåäàêòèðàíåòî íà áóôåðà
643íà âòîðèÿ ôàéë íÿìà åôåêò âúðõó áóôåðà íà ïúðâèÿ ôàéë. Òîâà å ìíîãî 643íà âòîðèÿ ôàéë íÿìà åôåêò âúðõó áóôåðà íà ïúðâèÿ ôàéë. Òîâà å ìíîãî
644ïîëåçíî, íî ñúùî îçíà÷àâà, ÷å ñå íóæäàåòå îò óäîáåí íà÷èí äà çàïàçèòå 644ïîëåçíî, íî ñúùî îçíà÷àâà, ÷å ñå íóæäàåòå îò óäîáåí íà÷èí äà çàïàçèòå
645áóôåðà íà ïúðâèÿ ôàéë. Ùå å íåóäîáíî äà ïðåâêëþ÷èòå îáðàòíî ñ C-x 645áóôåðà íà ïúðâèÿ ôàéë. Ùå å íåóäîáíî äà ïðåâêëþ÷èòå îáðàòíî ñ C-x
@@ -658,8 +658,8 @@ C-x s ïèòà çà âñåêè áóôåð, êîéòî ñúäúðæà ïðîìåíè, êîèòî íå ñòå
658* ÐÀÇØÈÐßÂÀÍÅ ÍÀ ÍÀÁÎÐÀ ÊÎÌÀÍÄÈ 658* ÐÀÇØÈÐßÂÀÍÅ ÍÀ ÍÀÁÎÐÀ ÊÎÌÀÍÄÈ
659------------------------------- 659-------------------------------
660 660
661Èìà ìíîãî, ìíîãî ïîâå÷å êîìàíäè íà Emacs, îòêîëêîòî ìîãàò äà ñå ñëîæàò 661Èìà ìíîãî, ìíîãî ïîâå÷å êîìàíäè íà Åìàêñ, îòêîëêîòî ìîãàò äà ñå ñëîæàò
662íà âñè÷êè êîíòðîëíè è ìåòà çíàöè. Emacs çàîáèêàëÿ òîâà ñ X (eXtended) 662íà âñè÷êè êîíòðîëíè è ìåòà çíàöè. Åìàêñ çàîáèêàëÿ òîâà ñ X (eXtended)
663êîìàíäàòà. Òîâà ñòàâà ïî äâà íà÷èíà: 663êîìàíäàòà. Òîâà ñòàâà ïî äâà íà÷èíà:
664 664
665 C-x Çíàêîâî ðàçøèðÿâàíå. Ïîñëåäâàíî îò åäèí çíàê. 665 C-x Çíàêîâî ðàçøèðÿâàíå. Ïîñëåäâàíî îò åäèí çíàê.
@@ -667,49 +667,49 @@ C-x s ïèòà çà âñåêè áóôåð, êîéòî ñúäúðæà ïðîìåíè, êîèòî íå ñòå
667 èìå. 667 èìå.
668 668
669Òåçè êîìàíäè ñà îáùî âçåòî ïîëåçíè, íî ïî-ìàëêî, îòêîëêîòî êîìàíäèòå, 669Òåçè êîìàíäè ñà îáùî âçåòî ïîëåçíè, íî ïî-ìàëêî, îòêîëêîòî êîìàíäèòå,
670êîèòî äîñåãà ñòå íàó÷èëè. Âå÷å âèäÿõòå íÿêîëêî îò òÿõ: íàïðèìåð 670êîèòî äîñåãà ñòå íàó÷èëè. Âå÷å âèäÿõòå äâå îò òÿõ: êîìàíäèòå âúðõó
671êîìàíäèòå âúðõó ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà 671ôàéëîâå C-x C-f çà íàìèðàíå (Find) è C-x C-s çà çàïàçâàíå (Save).
672çàïàçâàíå (Save). Äðóã ïðèìåð å êîìàíäàòà çà êðàé íà Emacs ñåñèÿòà -- 672Äðóã ïðèìåð å êîìàíäàòà çà êðàé íà Åìàêñ ñåñèÿòà -- òîâà å êîìàíäàòà
673òîâà å êîìàíäàòà C-x C-c. (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå 673C-x C-c. (Íå ñå áåçïîêîéòå, ÷å ìîæå äà èçãóáèòå âñè÷êè ïðîìåíè, êîèòî
674âñè÷êè ïðîìåíè, êîèòî ñòå íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè 674ñòå íàïðàâèëè; C-x C-c ïðåäëàãà äà çàïàçè âñåêè ïðîìåíåí ôàéë, ïðåäè
675ïðîìåíåí ôàéë, ïðåäè äà ïðåìàõíå Emacs.) 675äà ïðåìàõíå Åìàêñ.)
676 676
677C-z å êîìàíäàòà çà èçëèçàíå îò Emacs *âðåìåííî* -- òàêà ÷å äà ìîæåòå 677C-z å êîìàíäàòà çà èçëèçàíå îò Åìàêñ *âðåìåííî* -- òàêà ÷å äà ìîæåòå
678äà ñå âúðíåòå êúì ñúùàòà Emacs ñåñèÿ ïî-êúñíî. 678äà ñå âúðíåòå êúì ñúùàòà Åìàêñ ñåñèÿ ïî-êúñíî.
679 679
680Íà ñèñòåìè, êîèòî ïîçâîëÿâàò òîâà, C-z "èçîñòàâÿ" (suspend) Emacs, 680Íà ñèñòåìè, êîèòî ïîçâîëÿâàò òîâà, C-z "èçîñòàâÿ" (suspend) Åìàêñ,
681ò.å. âðúùà êúì îáâèâêàòà, íî íå ðàçðóøàâà Emacs.  ïîâå÷åòî îáâèâêè 681ò.å. âðúùà êúì îáâèâêàòà, íî íå ðàçðóøàâà Åìàêñ.  ïîâå÷åòî îáâèâêè
682ìîæåòå äà ïðîäúëæèòå Emacs ñåñèÿòà ñ êîìàíäàòà "fg" èëè ñ "%emacs". 682ìîæåòå äà ïðîäúëæèòå Åìàêñ ñåñèÿòà ñ êîìàíäàòà "fg" èëè ñ "%emacs".
683 683
684Íà ñèñòåìè, êîèòî íå ïîçâîëÿâàò èçîñòàâÿíå, C-z ñúçäàâà íîâà 684Íà ñèñòåìè, êîèòî íå ïîçâîëÿâàò èçîñòàâÿíå, C-z ñúçäàâà íîâà
685ïîäîáâèâêà, êîÿòî âúðâè ïîä Emacs, çà äà âè äàäå øàíñ äà ñòàðòèðàòå 685ïîäîáâèâêà, êîÿòî âúðâè ïîä Åìàêñ, çà äà âè äàäå øàíñ äà ñòàðòèðàòå
686äðóãè ïðîãðàìè è äà ñå âúðíåòå êúì Emacs ñëåä òîâà; òîâà íå å èñòèíñêî 686äðóãè ïðîãðàìè è äà ñå âúðíåòå êúì Åìàêñ ñëåä òîâà; òîâà íå å èñòèíñêî
687"èçëèçàíå" îò Emacs.  òîçè ñëó÷àé êîìàíäàòà íà îáâèâêàòà "exit" å 687"èçëèçàíå" îò Åìàêñ.  òîçè ñëó÷àé êîìàíäàòà íà îáâèâêàòà "exit" å
688îáèêíîâåíèÿò íà÷èí äà ñå âúðíåòå îáðàòíî êúì Emacs îò ïîäîáâèâêàòà. 688îáèêíîâåíèÿò íà÷èí äà ñå âúðíåòå îáðàòíî êúì Åìàêñ îò ïîäîáâèâêàòà.
689 689
690Ìîìåíòúò äà èçïîëçâàòå C-x C-c å, êîãàòî èñêàòå äà èçëåçåòå îò 690Ìîìåíòúò äà èçïîëçâàòå C-x C-c å, êîãàòî èñêàòå äà èçëåçåòå îò
691ñèñòåìàòà. Òîâà å è ïðàâèëíàòà êîìàíäà çà èçëèçàíå, êîãàòî Emacs å 691ñèñòåìàòà. Òîâà å è ïðàâèëíàòà êîìàíäà çà èçëèçàíå, êîãàòî Åìàêñ å
692èçâèêàí îò ïîùåíñêà ïðîãðàìà èëè äðóãè ñòðàíè÷íè ïðîãðàìè, òúé êàòî òå 692èçâèêàí îò ïîùåíñêà ïðîãðàìà èëè äðóãè ñòðàíè÷íè ïðîãðàìè, òúé êàòî òå
693ìîæå è äà íå çíàÿò êàê äà ñå ñïðàâÿò ñ èçîñòàâÿíåòî íà Emacs. Ïðè 693ìîæå è äà íå çíàÿò êàê äà ñå ñïðàâÿò ñ èçîñòàâÿíåòî íà Åìàêñ. Ïðè
694îáèêíîâåíè îáñòîÿòåëñòâà, îáà÷å, àêî íå ñòå òðúãíàëè äà èçëèçàòå îò 694îáèêíîâåíè îáñòîÿòåëñòâà, îáà÷å, àêî íå ñòå òðúãíàëè äà èçëèçàòå îò
695ñèñòåìàòà, ïî-äîáðå å äà èçîñòàâèòå Emacs ñ C-z, âìåñòî äà èçëèçàòå îò 695ñèñòåìàòà, ïî-äîáðå å äà èçîñòàâèòå Åìàêñ ñ C-z, âìåñòî äà èçëèçàòå îò
696Emacs. 696Åìàêñ.
697 697
698Èìà ìíîãî êîìàíäè C-x. Åòî ñïèñúê íà òåçè, êîèòî ñòå íàó÷èëè: 698Èìà ìíîãî êîìàíäè C-x. Åòî ñïèñúê íà òåçè, êîèòî ñòå íàó÷èëè:
699 699
700 C-x C-f Íàìèðàíå íà ôàéë 700 C-x C-f Íàìèðàíå íà ôàéë.
701 C-x C-s Çàïàçâàíå íà ôàéë 701 C-x C-s Çàïàçâàíå íà ôàéë.
702 C-x C-b Ñïèñúê íà áóôåðèòå 702 C-x C-b Ñïèñúê íà áóôåðèòå.
703 C-x C-c Èçëèçàíå îò Emacs 703 C-x C-c Èçëèçàíå îò Åìàêñ.
704 C-x 1 Èçòðèâàíå íà âñè÷êè ïðîçîðöè, îñâåí åäèí 704 C-x 1 Èçòðèâàíå íà âñè÷êè ïðîçîðöè îñâåí åäèí.
705 C-x u Îòìÿíà 705 C-x u Îòìÿíà.
706 706
707Èìåíóâàíèòå ðàçøèðåíè êîìàíäè ñà êîìàíäè, êîèòî ñå èçïîëçâàò äàæå îùå 707Èìåíóâàíèòå ðàçøèðåíè êîìàíäè ñà êîìàíäè, êîèòî ñå èçïîëçâàò äàæå îùå
708ïî-ðÿäêî, èëè êîìàíäè, êîèòî ñå èçïîëçâàò ñàìî â îïðåäåëåíè ðåæèìè. 708ïî-ðÿäêî, èëè êîìàíäè, êîèòî ñå èçïîëçâàò ñàìî â îïðåäåëåíè ðåæèìè.
709Ïðèìåð å êîìàíäàòà replace-string, êîÿòî çàìåíÿ ãëîáàëíî åäèí íèç ñ 709Ïðèìåð å êîìàíäàòà replace-string, êîÿòî çàìåíÿ ãëîáàëíî åäèí íèç ñ
710äðóã. Êîãàòî âúâåäåòå M-x, Emacs âè ïîäñêàçâà â äúíîòî íà åêðàíà ñ 710äðóã. Êîãàòî âúâåäåòå M-x, Åìàêñ âè ïîäñêàçâà â äúíîòî íà åêðàíà ñ
711M-x è âèå òðÿáâà äà âúâåäåòå èìåòî íà êîìàíäàòà, â òîçè ñëó÷àé 711M-x è âèå òðÿáâà äà âúâåäåòå èìåòî íà êîìàíäàòà, â òîçè ñëó÷àé
712"replace-string". Ïðîñòî âúâåäåòå "repl s<TAB>" è Emacs ùå çàâúðøè 712"replace-string". Ïðîñòî âúâåäåòå "repl s<TAB>" è Åìàêñ ùå çàâúðøè
713èìåòî. (<TAB> å êëàâèøúò Tab, îáèêíîâåíî íàìèðàù ñå íàä êëàâèøà 713èìåòî. (<TAB> å êëàâèøúò Tab, îáèêíîâåíî íàìèðàù ñå íàä êëàâèøà
714CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.) 714CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.)
715Çàâúðøåòå èìåòî íà êîìàíäàòà ñ <Return>. 715Çàâúðøåòå èìåòî íà êîìàíäàòà ñ <Return>.
@@ -733,11 +733,11 @@ CapsLock èëè êëàâèøà Shift áëèçî äî ëåâèÿ êðàé íà êëàâèàòóðàòà.)
733 733
734Êîãàòî ñòå íàïðàâèëè ïðîìåíè âúâ ôàéë, íî îùå íå ñòå ãî çàïàçèëè, òå 734Êîãàòî ñòå íàïðàâèëè ïðîìåíè âúâ ôàéë, íî îùå íå ñòå ãî çàïàçèëè, òå
735ìîãàò äà áúäàò çàãóáåíè, àêî êîìïþòúðúò âíåçàïíî ñå èçêëþ÷è. Çà äà âè 735ìîãàò äà áúäàò çàãóáåíè, àêî êîìïþòúðúò âíåçàïíî ñå èçêëþ÷è. Çà äà âè
736ïðåäïàçè îò òàêèâà ñèòóàöèè, Emacs ïåðèîäè÷íî çàïàçâà "àâòîìàòè÷íî 736ïðåäïàçè îò òàêèâà ñèòóàöèè, Åìàêñ ïåðèîäè÷íî çàïàçâà "àâòîìàòè÷íî
737çàïàçâàí" ôàéë çà âñåêè ôàéë, êîéòî ðåäàêòèðàòå. Èìåòî íà àâòîìàòè÷íî 737çàïàçâàí" ôàéë çà âñåêè ôàéë, êîéòî ðåäàêòèðàòå. Èìåòî íà àâòîìàòè÷íî
738çàïàçâàíèÿ ôàéë èìà # â íà÷àëîòî è â êðàÿ; íàïðèìåð, àêî âàøèÿò ôàéë å 738çàïàçâàíèÿ ôàéë èìà # â íà÷àëîòî è â êðàÿ; íàïðèìåð, àêî âàøèÿò ôàéë å
739ñ èìå "hello.c", èìåòî íà íåãîâèÿ àâòîìàòè÷íî çàïàçâàí ôàéë ùå áúäå 739ñ èìå "hello.c", èìåòî íà íåãîâèÿ àâòîìàòè÷íî çàïàçâàí ôàéë ùå áúäå
740"#hello.c#". Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Emacs 740"#hello.c#". Êîãàòî çàïàçâàòå ôàéë ïî îáèêíîâåíèÿ íà÷èí, Åìàêñ
741èçòðèâà íåãîâèÿ àâòîìàòè÷íî çàïèñâàí ôàéë. 741èçòðèâà íåãîâèÿ àâòîìàòè÷íî çàïèñâàí ôàéë.
742 742
743Àêî êîìïþòúðúò çàâèñíå, ìîæå äà âúçñòàíîâèòå âàøàòà àâòîìàòè÷íî 743Àêî êîìïþòúðúò çàâèñíå, ìîæå äà âúçñòàíîâèòå âàøàòà àâòîìàòè÷íî
@@ -751,7 +751,7 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå,
751* ÅÕÎ ÎÁËÀÑÒÒÀ 751* ÅÕÎ ÎÁËÀÑÒÒÀ
752-------------- 752--------------
753 753
754Àêî Emacs âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè 754Àêî Åìàêñ âèäè, ÷å âúâåæäàòå ìíîãîçíàêîâè êîìàíäè áàâíî, ùå âè ãè
755ïîêàæå â äúíîòî íà åêðàíà, â îáëàñò, íàðè÷àíà "åõî îáëàñò". Åõî 755ïîêàæå â äúíîòî íà åêðàíà, â îáëàñò, íàðè÷àíà "åõî îáëàñò". Åõî
756îáëàñòòà îáõâàùà ïîñëåäíèÿ ðåä îò åêðàíà. 756îáëàñòòà îáõâàùà ïîñëåäíèÿ ðåä îò åêðàíà.
757 757
@@ -762,18 +762,18 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå,
762Ðåäúò òî÷íî íàä åõî îáëàñòòà ñå íàðè÷à "ðåä íà ðåæèìà" (mode line). 762Ðåäúò òî÷íî íàä åõî îáëàñòòà ñå íàðè÷à "ðåä íà ðåæèìà" (mode line).
763Òîé ïîêàçâà íåùî êàòî: 763Òîé ïîêàçâà íåùî êàòî:
764 764
765-D:** TUTORIAL.bg 63% L749 (Fundamental)--------------------- 765-b:** TUTORIAL.bg (Fundamental)--L670--58%----------------
766 766
767Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Emacs è òåêñòà, 767Òîçè ðåä äàâà ïîëåçíà èíôîðìàöèÿ çà ñúñòîÿíèåòî íà Åìàêñ è òåêñòà,
768êîéòî ðåäàêòèðàòå. 768êîéòî ðåäàêòèðàòå.
769 769
770Âå÷å çíàåòå êàêâî îçíà÷àâà èìåòî íà ôàéëà -- òîâà å ôàéëúò, êîéòî ñòå 770Âå÷å çíàåòå êàêâî îçíà÷àâà èìåòî íà ôàéëà -- òîâà å ôàéëúò, êîéòî ñòå
771íàìåðèëè. NN% ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà îçíà÷àâà, 771íàìåðèëè. -NN%-- ïîêàçâà âàøàòà òåêóùà ïîçèöèÿ â òåêñòà; òîâà
772÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà. Àêî íà÷àëîòî íà ôàéëà 772îçíà÷àâà, ÷å NN ïðîöåíòà îò òåêñòà å íàä âúðõà íà åêðàíà. Àêî
773å íà åêðàíà, ùå ñå ïîêàçâà --Top-- (âðúõ) âìåñòî --00%--. Àêî êðàÿò 773íà÷àëîòî íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Top-- (âðúõ) âìåñòî
774íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Bot-- (äúíî). Àêî ãëåäàòå 774--00%--. Àêî êðàÿ íà ôàéëà å íà åêðàíà, ùå ñå ïîêàçâà --Bot-- (äúíî).
775òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà åêðàíà, ðåäúò íà 775Àêî ãëåäàòå òåêñò, êîéòî å òîëêîâà ìàëúê, ÷å ñå ïîêàçâà èçöÿëî íà
776ðåæèìà ùå èçâåäå --All--. 776åêðàíà, ðåäúò íà ðåæèìà ùå èçâåäå --All--.
777 777
778Çíàêúò L è öèôðèòå ïîêàçâàò ìÿñòîòî ïî äðóã íà÷èí: òîâà å íîìåðúò íà 778Çíàêúò L è öèôðèòå ïîêàçâàò ìÿñòîòî ïî äðóã íà÷èí: òîâà å íîìåðúò íà
779òåêóùèÿ ðåä íà òî÷êàòà. 779òåêóùèÿ ðåä íà òî÷êàòà.
@@ -787,7 +787,7 @@ M-x recover file<Return>. Êîãàòî êîìàíäàòà èçèñêà ïîòâúðæäåíèå,
787Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà 787Fundamental (Îñíîâåí), êîéòî èçïîëçâàòå â ìîìåíòà. Òîâà å ïðèìåð çà
788"ãëàâåí ðåæèì" (major mode). 788"ãëàâåí ðåæèì" (major mode).
789 789
790Emacs èìà ìíîãî ãëàâíè ðåæèìè. Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà 790Åìàêñ èìà ìíîãî ãëàâíè ðåæèìè. Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà
791ðåäàêòèðàíå íà ðàçëè÷íè åçèöè è/èëè âèäîâå òåêñò, êàòî íàïðèìåð ðåæèì 791ðåäàêòèðàíå íà ðàçëè÷íè åçèöè è/èëè âèäîâå òåêñò, êàòî íàïðèìåð ðåæèì
792Ëèñï, ðåæèì Òåêñò è äðóãè. Âúâ âñåêè åäèí ìîìåíò îò âðåìå òî÷íî åäèí 792Ëèñï, ðåæèì Òåêñò è äðóãè. Âúâ âñåêè åäèí ìîìåíò îò âðåìå òî÷íî åäèí
793ãëàâåí ðåæèì å àêòèâåí è íåãîâîòî èìå ìîæå âèíàãè äà áúäå íàìåðåíî â 793ãëàâåí ðåæèì å àêòèâåí è íåãîâîòî èìå ìîæå âèíàãè äà áúäå íàìåðåíî â
@@ -806,7 +806,7 @@ Emacs èìà ìíîãî ãëàâíè ðåæèìè. Íÿêîè îò òÿõ ñà ïðåäâèäåíè çà
806 806
807>> Âúâåäåòå M-x text mode<Return>. 807>> Âúâåäåòå M-x text mode<Return>.
808 808
809Íå ñå áåçïîêîéòå, íèêîÿ îò Emacs êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà 809Íå ñå áåçïîêîéòå, íèêîÿ îò Åìàêñ êîìàíäèòå, êîèòî ñòå íàó÷èëè, íÿìà äà
810ñå ïðîìåíè ïî íÿêàêúâ ñúùåñòâåí íà÷èí. Íî ìîæå äà çàáåëåæèòå, ÷å M-f 810ñå ïðîìåíè ïî íÿêàêúâ ñúùåñòâåí íà÷èí. Íî ìîæå äà çàáåëåæèòå, ÷å M-f
811è M-b ñåãà âúçïðèåìàò àïîñòðîôèòå (') êàòî ÷àñò îò äóìèòå. Ïðåäè 811è M-b ñåãà âúçïðèåìàò àïîñòðîôèòå (') êàòî ÷àñò îò äóìèòå. Ïðåäè
812òîâà, â îñíîâíèÿ ðåæèì (Fundamental), M-f è M-b ñå âúçïðèåìàõà êàòî 812òîâà, â îñíîâíèÿ ðåæèì (Fundamental), M-f è M-b ñå âúçïðèåìàõà êàòî
@@ -835,7 +835,7 @@ m.
835 835
836Åäèí ãëàâåí ðåæèì, êîéòî å ìíîãî ïîëåçåí, îñîáåíî çà ðåäàêòèðàíå íà 836Åäèí ãëàâåí ðåæèì, êîéòî å ìíîãî ïîëåçåí, îñîáåíî çà ðåäàêòèðàíå íà
837òåêñò íà åñòåñòâåí åçèê, å ðåæèìúò íà àâòîìàòè÷íî çàïúëâàíå (Auto Fill 837òåêñò íà åñòåñòâåí åçèê, å ðåæèìúò íà àâòîìàòè÷íî çàïúëâàíå (Auto Fill
838mode). Êîãàòî òîçè ðåæèì å âêëþ÷åí, Emacs àâòîìàòè÷íî ðàçäåëÿ ðåäà 838mode). Êîãàòî òîçè ðåæèì å âêëþ÷åí, Åìàêñ àâòîìàòè÷íî ðàçäåëÿ ðåäà
839ïðè ìÿñòîòî ìåæäó äóìèòå, êîãàòî âìúêâàòå òåêñò è íàïðàâèòå ðåä, êîéòî 839ïðè ìÿñòîòî ìåæäó äóìèòå, êîãàòî âìúêâàòå òåêñò è íàïðàâèòå ðåä, êîéòî
840å òâúðäå äúëúã. 840å òâúðäå äúëúã.
841 841
@@ -855,7 +855,7 @@ auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî
855àðãóìåíò íà êîìàíäàòà. 855àðãóìåíò íà êîìàíäàòà.
856 856
857>> Âúâåäåòå C-x f ñ àðãóìåíò 20. (C-u 2 0 C-x f). 857>> Âúâåäåòå C-x f ñ àðãóìåíò 20. (C-u 2 0 C-x f).
858 Ñåãà âúâåäåòå íÿêàêúâ òåêñò è âèæòå êàê Emacs çàïúëâà ðåäîâåòå ñ ïî 858 Ñåãà âúâåäåòå íÿêàêúâ òåêñò è âèæòå êàê Åìàêñ çàïúëâà ðåäîâåòå ñ ïî
859 íå ïîâå÷å îò 20 çíàêà. Ïîñëå âúðíåòå îáðàòíî ãðàíèöàòà íà 70, 859 íå ïîâå÷å îò 20 çíàêà. Ïîñëå âúðíåòå îáðàòíî ãðàíèöàòà íà 70,
860 èçïîëçâàéêè C-x f îòíîâî. 860 èçïîëçâàéêè C-x f îòíîâî.
861 861
@@ -870,12 +870,12 @@ auto fill mode<Return>. Êîãàòî ðåæèìúò å âêëþ÷åí, ìîæå äà ãî
870* ÒÚÐÑÅÍÅ 870* ÒÚÐÑÅÍÅ
871--------- 871---------
872 872
873Emacs ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè 873Åìàêñ ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè
874îò çíàöè èëè äóìè) èëè íàïðåä â òåêñòà, èëè íàçàä â íåãî. Òúðñåíåòî 874îò çíàöè èëè äóìè) èëè íàïðåä â òåêñòà, èëè íàçàä â íåãî. Òúðñåíåòî
875íà íèç å ïðèäâèæâàùà êóðñîðà êîìàíäà; òÿ ïðåìåñòâà êóðñîðà íà 875íà íèç å ïðèäâèæâàùà êóðñîðà êîìàíäà; òÿ ïðåìåñòâà êóðñîðà íà
876ñëåäâàùîòî ìÿñòî, êúäåòî ñå ñðåùà íèçúò. 876ñëåäâàùîòî ìÿñòî, êúäåòî ñå ñðåùà íèçúò.
877 877
878Êîìàíäàòà çà òúðñåíå íà Emacs ñå ðàçëè÷àâà îò êîìàíäàòà çà òúðñåíå íà 878Êîìàíäàòà çà òúðñåíå íà Åìàêñ ñå ðàçëè÷àâà îò êîìàíäàòà çà òúðñåíå íà
879ïîâå÷åòî ðåäàêòîðè ïî òîâà, ÷å òÿ å "ïîñòúïêîâà". Òîâà îçíà÷àâà, ÷å 879ïîâå÷åòî ðåäàêòîðè ïî òîâà, ÷å òÿ å "ïîñòúïêîâà". Òîâà îçíà÷àâà, ÷å
880òúðñåíåòî ñå èçâúðøâà îùå äîêàòî âúâåæäàòå òåêñòà, êîéòî òúðñèòå. 880òúðñåíåòî ñå èçâúðøâà îùå äîêàòî âúâåæäàòå òåêñòà, êîéòî òúðñèòå.
881 881
@@ -883,7 +883,7 @@ Emacs ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè
883òúðñåíå íàçàä. ÍÎ ÏÎ×ÀÊÀÉÒÅ! Íå ãè ïðîáâàéòå ñåãà. 883òúðñåíå íàçàä. ÍÎ ÏÎ×ÀÊÀÉÒÅ! Íå ãè ïðîáâàéòå ñåãà.
884 884
885Êîãàòî âúâåäåòå C-s, ùå çàáåëåæèòå, ÷å íèçúò "I-search" ñå ïîÿâÿâà 885Êîãàòî âúâåäåòå C-s, ùå çàáåëåæèòå, ÷å íèçúò "I-search" ñå ïîÿâÿâà
886êàòî ïîäñêàçêà â åõî îáëàñòòà. Òîâà âè êàçâà, ÷å Emacs å â òîâà, 886êàòî ïîäñêàçêà â åõî îáëàñòòà. Òîâà âè êàçâà, ÷å Åìàêñ å â òîâà,
887êîåòî ñå íàðè÷à ïîñòúïêîâî òúðñåíå, ÷àêàéêè âè äà âúâåæäàòå òåêñòà, 887êîåòî ñå íàðè÷à ïîñòúïêîâî òúðñåíå, ÷àêàéêè âè äà âúâåæäàòå òåêñòà,
888êîéòî èñêàòå äà òúðñèòå. <Return> ïðèêëþ÷âà òúðñåíåòî. 888êîéòî èñêàòå äà òúðñèòå. <Return> ïðèêëþ÷âà òúðñåíåòî.
889 889
@@ -895,19 +895,19 @@ Emacs ìîæå äà èçâúðøâà òúðñåíèÿ íà íèçîâå (òîâà ñà ïîñëåäîâàòåëíîñòè
895>> Ñåãà âúâåäåòå <Delback> òðè ïúòè è âèæòå êàê ñå ïðèäâèæâà êóðñîðà. 895>> Ñåãà âúâåäåòå <Delback> òðè ïúòè è âèæòå êàê ñå ïðèäâèæâà êóðñîðà.
896>> Âúâåäåòå <Return>, çà äà ïðåêðàòèòå òúðñåíåòî. 896>> Âúâåäåòå <Return>, çà äà ïðåêðàòèòå òúðñåíåòî.
897 897
898Çàáåëÿçàõòå ëè êàêâî ñòàíà? Emacs, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà 898Çàáåëÿçàõòå ëè êàêâî ñòàíà? Åìàêñ, êîãàòî òúðñè ïîñòúïêîâî, ñå îïèòâà
899äà íàìåðè ñëåäâàùîòî ñúâïàäåíèå íà íèçà, êîéòî ñå âúâåæäà. Çà äà 899äà íàìåðè ñëåäâàùîòî ñúâïàäåíèå íà íèçà, êîéòî ñå âúâåæäà. Çà äà
900îòèäåòå íà ñëåäâàùîòî ñúâïàäåíèå íà "òúðñíå", ïðîñòî îòíîâî âúâåäåòå 900îòèäåòå íà ñëåäâàùîòî ñúâïàäåíèå íà "òúðñíå", ïðîñòî îòíîâî âúâåäåòå
901C-s. Àêî íÿìà òàêîâà ñúâïàäåíèå, Emacs áèáèïâà è âè êàçâà, ÷å 901C-s. Àêî íÿìà òàêîâà ñúâïàäåíèå, Åìàêñ áèáèïâà è âè êàçâà, ÷å
902òúðñåíåòî å "ïðîâàëåíî" (failing). C-g ñúùî ïðåêðàòÿâà òúðñåíåòî. 902òúðñåíåòî å "ïðîâàëåíî" (failing). C-g ñúùî ïðåêðàòÿâà òúðñåíåòî.
903 903
904ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-s ùå çàìðàçè åêðàíà è âèå 904ÇÀÁÅËÅÆÊÀ: Íà íÿêîè ñèñòåìè âúâåæäàíåòî íà C-s ùå çàìðàçè åêðàíà è âèå
905íÿìà äà ìîæå äà âèäèòå ïîâå÷å ðåàêöèÿ îò Emacs. Òîâà ïîêàçâà, ÷å 905íÿìà äà ìîæå äà âèäèòå ïîâå÷å ðåàêöèÿ îò Åìàêñ. Òîâà ïîêàçâà, ÷å
906"ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðå÷åíà "óïðàâëåíèå íà ïîòîêà" 906"ñïîñîáíîñò" íà îïåðàöèîííàòà ñèñòåìà, íàðå÷åíà "óïðàâëåíèå íà ïîòîêà"
907(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà äî Emacs. Çà äà 907(flow control), å ïðèõâàíàëà C-s è íå ãî ïðîïóñêà äî Åìàêñ. Çà äà
908ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî 908ðàçìðàçèòå åêðàíà, âúâåäåòå C-q. Òîãàâà âèæòå ñåêöèÿòà "Ñïîíòàííî
909âêëþ÷âàíå íà ïîñòúïêîâîòî òúðñåíå" (Spontaneous Entry to Incremental 909âêëþ÷âàíå íà ïîñòúïêîâîòî òúðñåíå" (Spontaneous Entry to Incremental
910Search) â ðúêîâîäñòâîòî íà Emacs çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè 910Search) â ðúêîâîäñòâîòî íà Åìàêñ çà ñúâåò êàê äà ñå ñïðàâèòå ñ òàçè
911"ñïîñîáíîñò". 911"ñïîñîáíîñò".
912 912
913Àêî ñòå â ñðåäàòà íà ïîñòúïêîâî òúðñåíå è âúâåäåòå <Delback>, ùå 913Àêî ñòå â ñðåäàòà íà ïîñòúïêîâî òúðñåíå è âúâåäåòå <Delback>, ùå
@@ -929,9 +929,9 @@ C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà
929 929
930 930
931* ÌÍÎÆÅÑÒÂÎ ÏÐÎÇÎÐÖÈ 931* ÌÍÎÆÅÑÒÂÎ ÏÐÎÇÎÐÖÈ
932-------------------- 932----------------
933 933
934Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Emacs å òàçè, ÷å ìîæå äà 934Åäíà îò ïðèâëåêàòåëíèòå ñïîñîáíîñòè íà Åìàêñ å òàçè, ÷å ìîæå äà
935ãëåäàòå ïîâå÷å îò åäèí ïðîçîðåö íà åêðàíà â äàäåí ìîìåíò îò âðåìå. 935ãëåäàòå ïîâå÷å îò åäèí ïðîçîðåö íà åêðàíà â äàäåí ìîìåíò îò âðåìå.
936 936
937>> Ïðèäâèæåòå êóðñîðà äî òîçè ðåä è âúâåäåòå C-u 0 C-l (òîâà å 937>> Ïðèäâèæåòå êóðñîðà äî òîçè ðåä è âúâåäåòå C-u 0 C-l (òîâà å
@@ -942,7 +942,7 @@ C-s çàïî÷âà òúðñåíå, êîåòî ãëåäà çà ñúâïàäåíèå ñ íèçà, äàäåí çà
942 îñòàâà íà ïî-ãîðíèÿ ïðîçîðåö. 942 îñòàâà íà ïî-ãîðíèÿ ïðîçîðåö.
943 943
944>> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå äîëíèÿ ïðîçîðåö. (Àêî íÿìàòå 944>> Âúâåäåòå C-M-v, çà äà ñêðîëèðàòå äîëíèÿ ïðîçîðåö. (Àêî íÿìàòå
945 èñòèíñêè êëàâèø META, âúâåäåòå <ESC> C-v.) 945 èñòèíñêè êëàâèø META, âúâåäåòå ESC C-v.)
946 946
947>> Âúâåäåòå C-x o ("o" îò "other" -- "äðóã"), çà äà ïðèäâèæèòå 947>> Âúâåäåòå C-x o ("o" îò "other" -- "äðóã"), çà äà ïðèäâèæèòå
948 êóðñîðà â äîëíèÿ ïðîçîðåö. 948 êóðñîðà â äîëíèÿ ïðîçîðåö.
@@ -971,10 +971,10 @@ C-M-v å ïðèìåð çà çíàê CONTROL-META. Àêî èìàòå èñòèíñêè êëàâèø META,
971ïúðâè", çàùîòî è äâàòà êëàâèøà äåéñòâàò, ìîäèôèöèðàéêè çíàêà, êîéòî 971ïúðâè", çàùîòî è äâàòà êëàâèøà äåéñòâàò, ìîäèôèöèðàéêè çíàêà, êîéòî
972ñòå âúâåëè. 972ñòå âúâåëè.
973 973
974Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå <ESC> âìåñòî òîâà, ðåäúò 974Àêî íÿìàòå èñòèíñêè êëàâèø META è èçïîëçâàòå ESC âìåñòî òîâà, ðåäúò
975èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå <ESC>, ïîñëåäâàí îò CONTROL-v, 975èìà çíà÷åíèå: òðÿáâà äà âúâåæäàòå ESC, ïîñëåäâàí îò CONTROL-v, çàùîòî
976çàùîòî CONTROL-<ESC> v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî <ESC> å 976CONTROL-ESC v íÿìà äà ðàáîòè. Òîâà å òàêà, çàùîòî ESC å ñîáñòâåí
977ñîáñòâåí çíàê, à íå ìîäèôèêàòîð. 977çíàê, à íå ìîäèôèêàòîð.
978 978
979>> Âúâåäåòå C-x 1 (â ãîðíèÿ ïðîçîðåö), çà äà ìàõíåòå äîëíèÿ ïðîçîðåö. 979>> Âúâåäåòå C-x 1 (â ãîðíèÿ ïðîçîðåö), çà äà ìàõíåòå äîëíèÿ ïðîçîðåö.
980 980
@@ -1007,13 +1007,13 @@ C-M-v å ïðèìåð çà çíàê CONTROL-META. Àêî èìàòå èñòèíñêè êëàâèø META,
1007íà ãëàâíèÿ ðåæèì. Íàïðèìåð, ìîæå äà âèäèòå [(Fundamental)] âìåñòî 1007íà ãëàâíèÿ ðåæèì. Íàïðèìåð, ìîæå äà âèäèòå [(Fundamental)] âìåñòî
1008(Fundamental). 1008(Fundamental).
1009 1009
1010Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå <ESC> 1010Çà äà ñå ìàõíåòå îò âëîæåíîòî íèâî íà ðåäàêòèðàíå, âúâåäåòå ESC ESC
1011<ESC> <ESC>. Òîâà å îáùà êîìàíäà çà "èçëèçàíå". Ìîæå è äà ÿ 1011ESC. Òîâà å îáùà êîìàíäà çà "èçëèçàíå". Ìîæå è äà ÿ èçïîëçâàòå çà
1012èçïîëçâàòå çà ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà 1012ìàõàíå (ñêðèâàíå) íà äîïúëíèòåëíè ïðîçîðöè, êàêòî è çà äà ñå ìàõíåòå
1013äà ñå ìàõíåòå îò ìèíèáóôåðà. 1013îò ìèíèáóôåðà.
1014 1014
1015>> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå <ESC> <ESC> 1015>> Âúâåäåòå M-x, çà äà âëåçåòå â ìèíèáóôåð; òîãàâà âúâåäåòå ESC ESC
1016 <ESC>, çà äà èçëåçåòå. 1016 ESC, çà äà èçëåçåòå.
1017 1017
1018Íå ìîæåòå äà èçïîëçâàòå C-g, çà äà èçëåçåòå îò âëîæåíî íèâî íà 1018Íå ìîæåòå äà èçïîëçâàòå C-g, çà äà èçëåçåòå îò âëîæåíî íèâî íà
1019ðåäàêòèðàíå. Òîâà å òàêà, çàùîòî C-g ñå èçïîëçâà çà ïðåêðàòÿâàíå íà 1019ðåäàêòèðàíå. Òîâà å òàêà, çàùîòî C-g ñå èçïîëçâà çà ïðåêðàòÿâàíå íà
@@ -1024,16 +1024,16 @@ C-M-v å ïðèìåð çà çíàê CONTROL-META. Àêî èìàòå èñòèíñêè êëàâèø META,
1024---------------------------------- 1024----------------------------------
1025 1025
1026 òîâà âúâåäåíèå ñå îïèòàõìå äà îñèãóðèì äîñòàòú÷íî èíôîðìàöèÿ, çà äà 1026 òîâà âúâåäåíèå ñå îïèòàõìå äà îñèãóðèì äîñòàòú÷íî èíôîðìàöèÿ, çà äà
1027çàïî÷íåòå äà èçïîëçâàòå Emacs. Èìà òîëêîâà ìíîãî îùå â Emacs, ÷å íå å 1027çàïî÷íåòå äà èçïîëçâàòå Åìàêñ. Èìà òîëêîâà ìíîãî îùå â Åìàêñ, ÷å íå å
1028âúçìîæíî òî äà áúäå îáÿñíåíî âñè÷êîòî òóê. Îáà÷å ìîæå äà ïîèñêàòå äà 1028âúçìîæíî òî äà áúäå îáÿñíåíî âñè÷êîòî òóê. Îáà÷å ìîæå äà ïîèñêàòå äà
1029íàó÷èòå ïîâå÷å çà Emacs, òúé êàòî òîé ïðèòåæàâà îùå ìíîãî ïîëåçíè 1029íàó÷èòå ïîâå÷å çà Åìàêñ, òúé êàòî òîé ïðèòåæàâà îùå ìíîãî ïîëåçíè
1030ñïîñîáíîñòè. Emacs èìà êîìàíäè çà ÷åòåíå íà äîêóìåíòàöèÿòà íà Emacs 1030ñïîñîáíîñòè. Åìàêñ èìà êîìàíäè çà ÷åòåíå íà äîêóìåíòàöèÿòà íà Åìàêñ
1031êîìàíäèòå. Òåçè "ïîìîùíè" êîìàíäè âñè÷êè çàïî÷âàò ñúñ çíàêà 1031êîìàíäèòå. Òåçè "ïîìîùíè" êîìàíäè âñè÷êè çàïî÷âàò ñúñ çíàêà
1032CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù". 1032CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù".
1033 1033
1034Çà äà èçïîëçâàòå âúçìîæíîñòèòå íà òàçè ïîìîù, âúâåäåòå çíàêà C-h è 1034Çà äà èçïîëçâàòå âúçìîæíîñòèòå íà òàçè ïîìîù, âúâåäåòå çíàêà C-h è
1035ñëåä òîâà çíàêà, êàçâàù êàêúâ âèä ïîìîù èñêàòå. Àêî ÍÀÈÑÒÈÍÀ ñòå ñå 1035ñëåä òîâà çíàêà, êàçâàù êàêúâ âèä ïîìîù èñêàòå. Àêî ÍÀÈÑÒÈÍÀ ñòå ñå
1036èçãóáèëè, âúâåäåòå C-h ? è Emacs ùå âè êàæå ñ êàêâî ìîæå äà âè 1036èçãóáèëè, âúâåäåòå C-h ? è Åìàêñ ùå âè êàæå ñ êàêâî ìîæå äà âè
1037ïîìîãíå. Àêî ñòå âúâåëè C-h è ðåøèòå, ÷å íå ñå íóæäàåòå îò ïîìîù, 1037ïîìîãíå. Àêî ñòå âúâåëè C-h è ðåøèòå, ÷å íå ñå íóæäàåòå îò ïîìîù,
1038ïðîñòî âúâåäåòå C-g, çà äà ÿ ïðåêðàòèòå. 1038ïðîñòî âúâåäåòå C-g, çà äà ÿ ïðåêðàòèòå.
1039 1039
@@ -1045,7 +1045,7 @@ CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù".
1045 1045
1046Íàé-îñíîâíîòî ïîìîùíî ñðåäñòâî å C-h c. Âúâåäåòå C-h, çíàêà c è 1046Íàé-îñíîâíîòî ïîìîùíî ñðåäñòâî å C-h c. Âúâåäåòå C-h, çíàêà c è
1047êîìàíäåí çíàê èëè ïîñëåäîâàòåëíîñò îò çíàöè, îáðàçóâàùè êîìàíäà; 1047êîìàíäåí çíàê èëè ïîñëåäîâàòåëíîñò îò çíàöè, îáðàçóâàùè êîìàíäà;
1048òîãàâà Emacs ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà. 1048òîãàâà Åìàêñ ùå èçâåäå ìíîãî êðàòêî îïèñàíèå íà êîìàíäàòà.
1049 1049
1050>> Type C-h c C-p. 1050>> Type C-h c C-p.
1051 1051
@@ -1055,7 +1055,7 @@ CONTROL-h, êîéòî ñå íàðè÷à "çíàêúò çà ïîìîù".
1055 (C-p èçïúëíÿâà êîìàíäàòà ïðåäèøåí-ðåä) 1055 (C-p èçïúëíÿâà êîìàíäàòà ïðåäèøåí-ðåä)
1056 1056
1057Òîâà âè êàçâà "èìåòî íà ôóíêöèÿòà". Èìåíàòà íà ôóíêöèèòå ñå èçïîëçâàò 1057Òîâà âè êàçâà "èìåòî íà ôóíêöèÿòà". Èìåíàòà íà ôóíêöèèòå ñå èçïîëçâàò
1058íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Emacs. Íî òúé êàòî èìåíàòà 1058íàé-âå÷å çà íàñòðîéâàíå è ðàçøèðÿâàíå íà Åìàêñ. Íî òúé êàòî èìåíàòà
1059íà ôóíêöèèòå ñà èçáðàíè òàêà, ÷å äà ïîêàçâàò êàêâî ïðàâè êîìàíäàòà, òå 1059íà ôóíêöèèòå ñà èçáðàíè òàêà, ÷å äà ïîêàçâàò êàêâî ïðàâè êîìàíäàòà, òå
1060ìîãàò äà ñëóæàò è çà ìíîãî êðàòêà äîêóìåíòàöèÿ -- äîñòàòú÷íà, çà äà âè 1060ìîãàò äà ñëóæàò è çà ìíîãî êðàòêà äîêóìåíòàöèÿ -- äîñòàòú÷íà, çà äà âè
1061ïðèïîìíè êîìàíäè, êîèòî âå÷å ñòå ó÷èëè. 1061ïðèïîìíè êîìàíäè, êîèòî âå÷å ñòå ó÷èëè.
@@ -1069,7 +1069,7 @@ c.
1069>> Âúâåäåòå C-h k C-p. 1069>> Âúâåäåòå C-h k C-p.
1070 1070
1071Òîâà èçâåæäà äîêóìåíòàöèÿòà íà ôóíêöèÿòà, êàêòî è íåéíîòî èìå, â 1071Òîâà èçâåæäà äîêóìåíòàöèÿòà íà ôóíêöèÿòà, êàêòî è íåéíîòî èìå, â
1072îòäåëåí Emacs ïðîçîðåö. Êîãàòî ÿ ïðî÷åòåòå, âúâåäåòå C-x 1, çà äà 1072îòäåëåí Åìàêñ ïðîçîðåö. Êîãàòî ÿ ïðî÷åòåòå, âúâåäåòå C-x 1, çà äà
1073ìàõíåòå ïîìîùíèÿ òåêñò. Íå å íóæíî äà ïðàâèòå òîâà òî÷íî ñåãà. Ìîæå 1073ìàõíåòå ïîìîùíèÿ òåêñò. Íå å íóæíî äà ïðàâèòå òîâà òî÷íî ñåãà. Ìîæå
1074äà ðåäàêòèðàòå, äîêàòî ñå îáðúùàòå êúì ïîìîùíèÿ òåêñò çà ñïðàâêà, è 1074äà ðåäàêòèðàòå, äîêàòî ñå îáðúùàòå êúì ïîìîùíèÿ òåêñò çà ñïðàâêà, è
1075ñëåä òîâà äà âúâåäåòå C-x 1. 1075ñëåä òîâà äà âúâåäåòå C-x 1.
@@ -1080,14 +1080,14 @@ c.
1080 ôóíêöèÿòà. 1080 ôóíêöèÿòà.
1081 1081
1082>> Îïèòàéòå ñ âúâåæäàíå íà C-h f previous-line<Return>. 1082>> Îïèòàéòå ñ âúâåæäàíå íà C-h f previous-line<Return>.
1083 Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Emacs çíàå çà ôóíêöèÿòà, 1083 Òîâà èçâåæäà öÿëàòà èíôîðìàöèÿ, êîÿòî Åìàêñ çíàå çà ôóíêöèÿòà,
1084 êîÿòî îñúùåñòâÿâà êîìàíäàòà C-p. 1084 êîÿòî îñúùåñòâÿâà êîìàíäàòà C-p.
1085 1085
1086Ïîäîáíà êîìàíäà, C-h v, èçâåæäà äîêóìåíòàöèÿòà íà ïðîìåíëèâèòå, êîèòî 1086Ïîäîáíà êîìàíäà, C-h v, èçâåæäà äîêóìåíòàöèÿòà íà ïðîìåíëèâèòå, êîèòî
1087ìîæå äà ïðîìåíÿòå, çà äà íàñòðîéâàòå ïîâåäåíèåòî íà Emacs. Òðÿáâà äà 1087ìîæå äà ïðîìåíÿòå, çà äà íàñòðîéâàòå ïîâåäåíèåòî íà Åìàêñ. Òðÿáâà äà
1088âúâåäåòå èìåòî íà ïðîìåíëèâàòà, êîãàòî Emacs âè ïîäñêàæå òîâà. 1088âúâåäåòå èìåòî íà ïðîìåíëèâàòà, êîãàòî Åìàêñ âè ïîäñêàæå òîâà.
1089 1089
1090 C-h a Êîìàíäà Àïðîïîñ. Âúâåäåòå êëþ÷îâà äóìà è Emacs ùå 1090 C-h a Êîìàíäà Àïðîïîñ. Âúâåäåòå êëþ÷îâà äóìà è Åìàêñ ùå
1091 ïîêàæå ñïèñúê íà âñè÷êè êîìàíäè, ÷èåòî èìå ñúäúðæà 1091 ïîêàæå ñïèñúê íà âñè÷êè êîìàíäè, ÷èåòî èìå ñúäúðæà
1092 òàçè êëþ÷îâà äóìà. Òåçè êîìàíäè ìîãàò âñè÷êè äà áúäàò 1092 òàçè êëþ÷îâà äóìà. Òåçè êîìàíäè ìîãàò âñè÷êè äà áúäàò
1093 èçâèêàíè ÷ðåç META-x. Çà íÿêîè êîìàíäè êîìàíäàòà 1093 èçâèêàíè ÷ðåç META-x. Çà íÿêîè êîìàíäè êîìàíäàòà
@@ -1110,18 +1110,18 @@ C-f, èçáðîåíè èçìåæäó ñúîòâåòíèòå èìåíà íà êîìàíäè, êàòî find-file.
1110 ñïåöèàëåí áóôåð, íàðè÷àí "*info*", êúäåòî ìîæå äà 1110 ñïåöèàëåí áóôåð, íàðè÷àí "*info*", êúäåòî ìîæå äà
1111 ÷åòåòå ðúêîâîäñòâàòà íà èíñòàëèðàíèòå âúâ âàøàòà 1111 ÷åòåòå ðúêîâîäñòâàòà íà èíñòàëèðàíèòå âúâ âàøàòà
1112 ñèñòåìà ïàêåòè. Âúâåäåòå m emacs <Return>, çà äà 1112 ñèñòåìà ïàêåòè. Âúâåäåòå m emacs <Return>, çà äà
1113 ÷åòåòå ðúêîâîäñòâîòî íà Emacs. Àêî íèêîãà ïðåäè òîâà 1113 ÷åòåòå ðúêîâîäñòâîòî íà Åìàêñ. Àêî íèêîãà ïðåäè òîâà
1114 íå ñòå èçïîëçâàëè Info, âúâåäåòå ? è Emacs ùå âêëþ÷è 1114 íå ñòå èçïîëçâàëè Info, âúâåäåòå ? è Åìàêñ ùå âêëþ÷è
1115 âúâåäåíèå âúâ âúçìîæíîñòèòå íà ðåæèìà Èíôî. Âåäíúæ 1115 âúâåäåíèå âúâ âúçìîæíîñòèòå íà ðåæèìà Èíôî. Âåäíúæ
1116 ñëåä êàòî ñòå ïðåìèíàëè òîâà âúâåäåíèå, òðÿáâà äà ñå 1116 ñëåä êàòî ñòå ïðåìèíàëè òîâà âúâåäåíèå, òðÿáâà äà ñå
1117 êîíñóëòèðàòå ñ Emacs Èíôî ðúêîâîäñòâîòî êàòî âàøà 1117 êîíñóëòèðàòå ñ Åìàêñ Èíôî ðúêîâîäñòâîòî êàòî âàøà
1118 îñíîâíà äîêóìåíòàöèÿ. 1118 îñíîâíà äîêóìåíòàöèÿ.
1119 1119
1120 1120
1121* ÎÙÅ ÂÚÇÌÎÆÍÎÑÒÈ 1121* ÎÙÅ ÂÚÇÌÎÆÍÎÑÒÈ
1122----------------- 1122-----------------
1123 1123
1124Ìîæå äà íàó÷èòå ïîâå÷å çà Emacs ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè 1124Ìîæå äà íàó÷èòå ïîâå÷å çà Åìàêñ ñ ÷åòåíå íà íåãîâîòî ðúêîâîäñòâî, èëè
1125êàòî êíèãà, èëè â Èíôî (èçïîëçâàéòå ìåíþòî ïîìîù (Help) èëè âúâåäåòå 1125êàòî êíèãà, èëè â Èíôî (èçïîëçâàéòå ìåíþòî ïîìîù (Help) èëè âúâåäåòå
1126F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà 1126F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà
1127äîâúðøâàíå (completion), êîåòî ñïåñòÿâà ïèñàíå, è dired, êîéòî 1127äîâúðøâàíå (completion), êîåòî ñïåñòÿâà ïèñàíå, è dired, êîéòî
@@ -1129,26 +1129,26 @@ F10 h r). Äâå âúçìîæíîñòè, êîèòî ìîæå äà æåëàåòå â íà÷àëîòî, ñà
1129 1129
1130Äîâúðøâàíåòî å íà÷èí äà èçáÿãâàòå íåíóæíî ïèñàíå. Íàïðèìåð, àêî 1130Äîâúðøâàíåòî å íà÷èí äà èçáÿãâàòå íåíóæíî ïèñàíå. Íàïðèìåð, àêî
1131èñêàòå äà ïðåâêëþ÷èòå êúì áóôåðà *Messages*, ìîæå äà âúâåäåòå C-x b 1131èñêàòå äà ïðåâêëþ÷èòå êúì áóôåðà *Messages*, ìîæå äà âúâåäåòå C-x b
1132*M<Tab> è Emacs ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà, 1132*M<Tab> è Åìàêñ ùå çàïúëíè îñòàíàëàòà ÷àñò îò èìåòî íà áóôåðà,
1133äîêîëêîòî ìîæå äà ñå îïðåäåëè îò òîâà, êîåòî ñòå âúâåëè. Äîâúðøâàíåòî 1133äîêîëêîòî ìîæå äà ñå îïðåäåëè îò òîâà, êîåòî ñòå âúâåëè. Äîâúðøâàíåòî
1134å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Emacs â ñòðàíèöàòà "Äîâúðøâàíå" 1134å îïèñàíî â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà "Äîâúðøâàíå"
1135("Completion"). 1135("Completion").
1136 1136
1137Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî 1137Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî
1138âúçìîæíîñò: íåéíèòå ïîääèðåêòîðèè), äà ñå ïðèäâèæâàòå â òîçè ñïèñúê, 1138âúçìîæíîñò: íåéíèòå ïîääèðåêòîðèè), äà ñå ïðèäâèæâàòå â òîçè ñïèñúê,
1139äà ïîñåùàâàòå, ïðåèìåíóâàòå, èçòðèâàòå è èçîáùî äåéñòâàòå âúðõó 1139äà ïîñåùàâàòå, ïðåèìåíóâàòå, èçòðèâàòå è èçîáùî äåéñòâàòå âúðõó
1140ôàéëîâåòå. Dired å îïèñàí â Èíôî-ðúêîâîäñòâîòî íà Emacs â ñòðàíèöàòà 1140ôàéëîâåòå. Dired å îïèñàí â Èíôî-ðúêîâîäñòâîòî íà Åìàêñ â ñòðàíèöàòà
1141"Dired". 1141"Dired".
1142 1142
1143Ðúêîâîäñòâîòî íà Emacs îïèñâà îùå ìíîãî äðóãè âúçìîæíîñòè íà 1143Ðúêîâîäñòâîòî íà Åìàêñ îïèñâà îùå ìíîãî äðóãè âúçìîæíîñòè íà
1144ðåäàêòîðà. 1144ðåäàêòîðà.
1145 1145
1146 1146
1147* ÇÀÊËÞ×ÅÍÈÅ 1147* ÇÀÊËÞ×ÅÍÈÅ
1148------------ 1148------------
1149 1149
1150Çàïîìíåòå: çà äà èçëåçåòå áåçâúçâðàòíî îò Emacs, èçïîëçâàéòå C-x C-c. 1150Çàïîìíåòå: çà äà èçëåçåòå áåçâúçâðàòíî îò Åìàêñ, èçïîëçâàéòå C-x C-c.
1151Çà äà èçëåçåòå âðåìåííî â îáâèâêà, òàêà ÷å äà ñå âúðíåòå â Emacs 1151Çà äà èçëåçåòå âðåìåííî â îáâèâêà, òàêà ÷å äà ñå âúðíåòå â Åìàêñ
1152ïî-êúñíî, èçïîëçâàéòå C-z. 1152ïî-êúñíî, èçïîëçâàéòå C-z.
1153 1153
1154Òîâà âúâåäåíèå å ïðåäâèäåíî äà áúäå ðàçáèðàåìî çà âñè÷êè íîâè 1154Òîâà âúâåäåíèå å ïðåäâèäåíî äà áúäå ðàçáèðàåìî çà âñè÷êè íîâè
@@ -1159,10 +1159,10 @@ Dired âè ïîçâîëÿâà äà ãëåäàòå ñïèñúêà îò ôàéëîâå â äèðåêòîðèÿ (è êàòî
1159* ÊÎÏÈÐÀÍÅ 1159* ÊÎÏÈÐÀÍÅ
1160---------- 1160----------
1161 1161
1162Òîâà âúâåäåíèå ïðîèçëèçà îò äúëãà ïîðåäèöà âúâåäåíèÿ â Emacs, 1162Òîâà âúâåäåíèå ïðîèçëèçà îò äúëãà ïîðåäèöà âúâåäåíèÿ â Åìàêñ,
1163çàïî÷âàéêè îò åäíî, íàïèñàíî îò Ñòþúðò Êðàêðàôò çà íà÷àëíèÿ Emacs. 1163çàïî÷âàéêè îò åäíî, íàïèñàíî îò Ñòþúðò Êðàêðàôò çà íà÷àëíèÿ Åìàêñ.
1164 1164
1165Òàçè âåðñèÿ íà âúâåäåíèåòî, êàêòî è GNU Emacs, å çàùèòåíà ñ àâòîðñêè 1165Òàçè âåðñèÿ íà âúâåäåíèåòî, êàêòî è ÃÍÓ Åìàêñ, å çàùèòåíà ñ àâòîðñêè
1166ïðàâà è èäâà ñ ðàçðåøåíèå äà ðàçïðîñòðàíÿâàòå êîïèÿ ïðè ñëåäíèòå 1166ïðàâà è èäâà ñ ðàçðåøåíèå äà ðàçïðîñòðàíÿâàòå êîïèÿ ïðè ñëåäíèòå
1167óñëîâèÿ: 1167óñëîâèÿ:
1168 1168
@@ -1183,8 +1183,8 @@ Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
1183 under the above conditions, provided also that they 1183 under the above conditions, provided also that they
1184 carry prominent notices stating who last altered them. 1184 carry prominent notices stating who last altered them.
1185 1185
1186Óñëîâèÿòà çà êîïèðàíå íà ñàìèÿ Emacs ñà ïî-ñëîæíè, íî â ñúùèÿ äóõ. 1186Óñëîâèÿòà çà êîïèðàíå íà ñàìèÿ Åìàêñ ñà ïî-ñëîæíè, íî â ñúùèÿ äóõ.
1187Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà GNU Emacs íà 1187Ìîëÿ, ïðî÷åòåòå ôàéëà COPYING è òîãàâà äàâàéòå êîïèÿ íà ÃÍÓ Åìàêñ íà
1188ñâîè ïðèÿòåëè. Ïîìîãíåòå äà ñïðåì çàòâîðåíîñòòà íà ïðîãðàìèòå 1188ñâîè ïðèÿòåëè. Ïîìîãíåòå äà ñïðåì çàòâîðåíîñòòà íà ïðîãðàìèòå
1189("ïðèòåæàíèåòî"), êàòî èçïîëçâàìå, ïèøåì è ñïîäåëÿìå ñâîáîäåí ñîôòóåð! 1189("ïðèòåæàíèåòî"), êàòî èçïîëçâàìå, ïèøåì è ñïîäåëÿìå ñâîáîäåí ñîôòóåð!
1190 1190
diff --git a/leim/ChangeLog b/leim/ChangeLog
index cae118736e9..7a167953f48 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,17 @@
12006-10-12 Kenichi Handa <handa@m17n.org>
2
3 * Makefile.in (install): Be sure to make ${INSTALLDIR} before `cd'
4 to it.
5
62006-10-05 Chong Yidong <cyd@stupidchicken.com>
7
8 * quail/latin-ltx.el: Fix typo in previous change.
9
102006-10-05 Stefan Monnier <monnier@iro.umontreal.ca>
11
12 * quail/latin-ltx.el: Remove rules that start with { since they are
13 redundant and hence impact the { key for no good reason.
14
12006-10-02 Kenichi Handa <handa@m17n.org> 152006-10-02 Kenichi Handa <handa@m17n.org>
2 16
3 * Makefile.in (install): Fix previous change. 17 * Makefile.in (install): Fix previous change.
diff --git a/leim/Makefile.in b/leim/Makefile.in
index 2b6ca8e9c15..1fb6636fbca 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -216,13 +216,12 @@ leim-list.el: ${SUBDIRS} ${NON-TIT-MISC} changed.tit changed.misc ${srcdir}/leim
216 sed -n '/^[^;]/ p' < ${srcdir}/leim-ext.el >> $@ 216 sed -n '/^[^;]/ p' < ${srcdir}/leim-ext.el >> $@
217 217
218install: all 218install: all
219 if [ ! -d ${INSTALLDIR} ] ; then \
220 ${srcdir}/${dot}${dot}/mkinstalldirs ${INSTALLDIR}; \
221 else true; fi
219 if [ x`(cd ${INSTALLDIR} && /bin/pwd)` != x`(/bin/pwd)` ] ; then \ 222 if [ x`(cd ${INSTALLDIR} && /bin/pwd)` != x`(/bin/pwd)` ] ; then \
220 if [ -d ${INSTALLDIR} ] ; then \ 223 rm -rf ${INSTALLDIR}/leim-list.el; \
221 rm -rf ${INSTALLDIR}/leim-list.el; \ 224 rm -rf ${INSTALLDIR}/quail ${INSTALLDIR}/ja-dic ; \
222 rm -rf ${INSTALLDIR}/quail ${INSTALLDIR}/ja-dic ; \
223 else \
224 ${srcdir}/${dot}${dot}/mkinstalldirs ${INSTALLDIR}; \
225 fi; \
226 echo "Copying leim files to ${INSTALLDIR} ..." ; \ 225 echo "Copying leim files to ${INSTALLDIR} ..." ; \
227 if [ x`(cd ${srcdir} && /bin/pwd)` = x`(/bin/pwd)` ] ; then \ 226 if [ x`(cd ${srcdir} && /bin/pwd)` = x`(/bin/pwd)` ] ; then \
228 tar -chf - leim-list.el quail ja-dic \ 227 tar -chf - leim-list.el quail ja-dic \
diff --git a/leim/quail/latin-ltx.el b/leim/quail/latin-ltx.el
index e0cb38ee562..6efdeccad26 100644
--- a/leim/quail/latin-ltx.el
+++ b/leim/quail/latin-ltx.el
@@ -45,17 +45,17 @@ system, including many technical ones. Examples:
45 45
46(quail-define-rules 46(quail-define-rules
47 ("!`" ?¡) 47 ("!`" ?¡)
48 ("{\\pounds}" ?£) ("\\pounds" ?£) 48 ("\\pounds" ?£) ;; ("{\\pounds}" ?£)
49 ("{\\S}" ?§) ("\\S" ?§) 49 ("\\S" ?§) ;; ("{\\S}" ?§)
50 ("\\\"{}" ?¨) 50 ("\\\"{}" ?¨)
51 ("{\\copyright}" ?©) ("\\copyright" ?©) 51 ("\\copyright" ?©) ;; ("{\\copyright}" ?©)
52 ("$^a$" ?ª) 52 ("$^a$" ?ª)
53 ("\\={}" ?¯) 53 ("\\={}" ?¯)
54 ("$\\pm$" ?±) ("\\pm" ?±) 54 ("$\\pm$" ?±) ("\\pm" ?±)
55 ("$^2$" ?²) 55 ("$^2$" ?²)
56 ("$^3$" ?³) 56 ("$^3$" ?³)
57 ("\\'{}" ?´) 57 ("\\'{}" ?´)
58 ("{\\P}" ?¶) ("\\P" ?¶) 58 ("\\P" ?¶) ;; ("{\\P}" ?¶)
59 ;; Fixme: Yudit has the equivalent of ("\\cdot" ?â‹…), for U+22C5, DOT 59 ;; Fixme: Yudit has the equivalent of ("\\cdot" ?â‹…), for U+22C5, DOT
60 ;; OPERATOR, whereas · is MIDDLE DOT. JadeTeX translates both to 60 ;; OPERATOR, whereas · is MIDDLE DOT. JadeTeX translates both to
61 ;; \cdot. 61 ;; \cdot.
@@ -71,8 +71,8 @@ system, including many technical ones. Examples:
71 ("\\~{A}" ?Ã) ("\\~A" ?Ã) 71 ("\\~{A}" ?Ã) ("\\~A" ?Ã)
72 ("\\\"{A}" ?Ä) ("\\\"A" ?Ä) 72 ("\\\"{A}" ?Ä) ("\\\"A" ?Ä)
73 ("\\\k{A}" ?Ä„) 73 ("\\\k{A}" ?Ä„)
74 ("{\\AA}" ?Ã…) ("\\AA" ?Ã…) 74 ("\\AA" ?Ã…) ;; ("{\\AA}" ?Ã…)
75 ("{\\AE}" ?Æ) ("\\AE" ?Æ) 75 ("\\AE" ?Æ) ;; ("{\\AE}" ?Æ)
76 ("\\c{C}" ?Ç) ("\\cC" ?Ç) 76 ("\\c{C}" ?Ç) ("\\cC" ?Ç)
77 ("\\`{E}" ?È) ("\\`E" ?È) 77 ("\\`{E}" ?È) ("\\`E" ?È)
78 ("\\'{E}" ?É) ("\\'E" ?É) 78 ("\\'{E}" ?É) ("\\'E" ?É)
@@ -93,14 +93,14 @@ system, including many technical ones. Examples:
93 ("\\\"{O}" ?Ö) ("\\\"O" ?Ö) 93 ("\\\"{O}" ?Ö) ("\\\"O" ?Ö)
94 ("\\\k{O}" ?Ǫ) 94 ("\\\k{O}" ?Ǫ)
95 ("$\\times$" ?×) ("\\times" ?×) 95 ("$\\times$" ?×) ("\\times" ?×)
96 ("{\\O}" ?Ø) ("\\O" ?Ø) 96 ("\\O" ?Ø) ;; ("{\\O}" ?Ø)
97 ("\\`{U}" ?Ù) ("\\`U" ?Ù) 97 ("\\`{U}" ?Ù) ("\\`U" ?Ù)
98 ("\\'{U}" ?Ú) ("\\'U" ?Ú) 98 ("\\'{U}" ?Ú) ("\\'U" ?Ú)
99 ("\\^{U}" ?Û) ("\\^U" ?Û) 99 ("\\^{U}" ?Û) ("\\^U" ?Û)
100 ("\\\"{U}" ?Ü) ("\\\"U" ?Ü) 100 ("\\\"{U}" ?Ü) ("\\\"U" ?Ü)
101 ("\\\k{U}" ?Ų) 101 ("\\\k{U}" ?Ų)
102 ("\\'{Y}" ?Ã) ("\\'Y" ?Ã) 102 ("\\'{Y}" ?Ã) ("\\'Y" ?Ã)
103 ("{\\ss}" ?ß) ("\\ss" ?ß) 103 ("\\ss" ?ß) ;; ("{\\ss}" ?ß)
104 104
105 ("\\`{a}" ?à) ("\\`a" ?à) 105 ("\\`{a}" ?à) ("\\`a" ?à)
106 ("\\'{a}" ?á) ("\\'a" ?á) 106 ("\\'{a}" ?á) ("\\'a" ?á)
@@ -108,8 +108,8 @@ system, including many technical ones. Examples:
108 ("\\~{a}" ?ã) ("\\~a" ?ã) 108 ("\\~{a}" ?ã) ("\\~a" ?ã)
109 ("\\\"{a}" ?ä) ("\\\"a" ?ä) 109 ("\\\"{a}" ?ä) ("\\\"a" ?ä)
110 ("\\\k{a}" ?Ä…) 110 ("\\\k{a}" ?Ä…)
111 ("{\\aa}" ?Ã¥) ("\\aa" ?Ã¥) 111 ("\\aa" ?Ã¥) ;; ("{\\aa}" ?Ã¥)
112 ("{\\ae}" ?æ) ("\\ae" ?æ) 112 ("\\ae" ?æ) ;; ("{\\ae}" ?æ)
113 ("\\c{c}" ?ç) ("\\cc" ?ç) 113 ("\\c{c}" ?ç) ("\\cc" ?ç)
114 ("\\`{e}" ?è) ("\\`e" ?è) 114 ("\\`{e}" ?è) ("\\`e" ?è)
115 ("\\'{e}" ?é) ("\\'e" ?é) 115 ("\\'{e}" ?é) ("\\'e" ?é)
@@ -130,7 +130,7 @@ system, including many technical ones. Examples:
130 ("\\\"{o}" ?ö) ("\\\"o" ?ö) 130 ("\\\"{o}" ?ö) ("\\\"o" ?ö)
131 ("\\\k{o}" ?Ç«) 131 ("\\\k{o}" ?Ç«)
132 ("$\\div$" ?÷) ("\\div" ?÷) 132 ("$\\div$" ?÷) ("\\div" ?÷)
133 ("{\\o}" ?ø) ("\\o" ?ø) 133 ("\\o" ?ø) ;; ("{\\o}" ?ø)
134 ("\\`{u}" ?ù) ("\\`u" ?ù) 134 ("\\`{u}" ?ù) ("\\`u" ?ù)
135 ("\\'{u}" ?ú) ("\\'u" ?ú) 135 ("\\'{u}" ?ú) ("\\'u" ?ú)
136 ("\\^{u}" ?û) ("\\^u" ?û) 136 ("\\^{u}" ?û) ("\\^u" ?û)
@@ -181,7 +181,7 @@ system, including many technical ones. Examples:
181 ("\\u{\\i}" ?Ä­) ("\\ui" ?Ä­) 181 ("\\u{\\i}" ?Ä­) ("\\ui" ?Ä­)
182 182
183 ("\\.{I}" ?İ) ("\\.I" ?İ) 183 ("\\.{I}" ?İ) ("\\.I" ?İ)
184 ("{\\i}" ?ı) ("\\i" ?ı) 184 ("\\i" ?ı) ;; ("{\\i}" ?ı)
185 ("\\^{J}" ?Ä´) ("\\^J" ?Ä´) 185 ("\\^{J}" ?Ä´) ("\\^J" ?Ä´)
186 ("\\^{\\j}" ?ĵ) ("\\^j" ?ĵ) 186 ("\\^{\\j}" ?ĵ) ("\\^j" ?ĵ)
187 ("\\c{K}" ?Ķ) ("\\cK" ?Ķ) 187 ("\\c{K}" ?Ķ) ("\\cK" ?Ķ)
@@ -191,8 +191,8 @@ system, including many technical ones. Examples:
191 ("\\c{L}" ?Ä») ("\\cL" ?Ä») 191 ("\\c{L}" ?Ä») ("\\cL" ?Ä»)
192 ("\\c{l}" ?ļ) ("\\cl" ?ļ) 192 ("\\c{l}" ?ļ) ("\\cl" ?ļ)
193 193
194 ("{\\L}" ?Å) ("\\L" ?Å) 194 ("\\L" ?Å) ;; ("{\\L}" ?Å)
195 ("{\\l}" ?Å‚) ("\\l" ?Å‚) 195 ("\\l" ?Å‚) ;; ("{\\l}" ?Å‚)
196 ("\\'{N}" ?Ń) ("\\'N" ?Ń) 196 ("\\'{N}" ?Ń) ("\\'N" ?Ń)
197 ("\\'{n}" ?Å„) ("\\'n" ?Å„) 197 ("\\'{n}" ?Å„) ("\\'n" ?Å„)
198 ("\\c{N}" ?Å…) ("\\cN" ?Å…) 198 ("\\c{N}" ?Å…) ("\\cN" ?Å…)
@@ -206,8 +206,8 @@ system, including many technical ones. Examples:
206 206
207 ("\\H{O}" ?Å) ("\\HO" ?Å) 207 ("\\H{O}" ?Å) ("\\HO" ?Å)
208 ("\\U{o}" ?Å‘) ("\\Uo" ?Å‘) 208 ("\\U{o}" ?Å‘) ("\\Uo" ?Å‘)
209 ("{\\OE}" ?Å’) ("\\OE" ?Å’) 209 ("\\OE" ?Å’) ;; ("{\\OE}" ?Å’)
210 ("{\\oe}" ?Å“) ("\\oe" ?Å“) 210 ("\\oe" ?Å“) ;; ("{\\oe}" ?Å“)
211 ("\\'{R}" ?Å”) ("\\'R" ?Å”) 211 ("\\'{R}" ?Å”) ("\\'R" ?Å”)
212 ("\\'{r}" ?Å•) ("\\'r" ?Å•) 212 ("\\'{r}" ?Å•) ("\\'r" ?Å•)
213 ("\\c{R}" ?Å–) ("\\cR" ?Å–) 213 ("\\c{R}" ?Å–) ("\\cR" ?Å–)
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 45fb6d6513e..e78d3fefa48 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,7 @@
12006-10-09 Eli Zaretskii <eliz@gnu.org>
2
3 * makefile.w32-in (../src/config.h): Fix error message.
4
12006-09-30 Eli Zaretskii <eliz@gnu.org> 52006-09-30 Eli Zaretskii <eliz@gnu.org>
2 6
3 * .cvsignore: Add blessmail. 7 * .cvsignore: Add blessmail.
@@ -19,7 +23,7 @@
19 23
202006-08-07 Masatake YAMATO <jet@gyve.org> 242006-08-07 Masatake YAMATO <jet@gyve.org>
21 25
22 * etags.c (TEX_mode): Check getc retruns EOF. 26 * etags.c (TEX_mode): Check getc returns EOF.
23 File ended without newline causes infinite loop. 27 File ended without newline causes infinite loop.
24 28
252002-07-30 Adrian Aichner <adrian@xemacs.org> (tiny change) 292002-07-30 Adrian Aichner <adrian@xemacs.org> (tiny change)
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 564487a5858..5ac6555f46d 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -308,7 +308,7 @@ cleanall: clean
308# Headers we would preprocess if we could. 308# Headers we would preprocess if we could.
309# 309#
310../src/config.h: ../nt/$(CONFIG_H) 310../src/config.h: ../nt/$(CONFIG_H)
311 echo config.h has changed. Re-run configure.bat. 311 echo $(CONFIG_H) has changed. Re-run configure.bat.
312 exit -1 312 exit -1
313 313
314getopt.h: getopt_.h 314getopt.h: getopt_.h
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 49d677c8cfc..6e15b2e24dc 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,538 @@
12006-10-15 Kim F. Storm <storm@cua.dk>
2
3 * filesets.el (filesets-run-cmd--repl-fn): Use shell-quote-argument.
4
52006-10-14 Lennart Borgman <lennart.borgman.073@student.lu.se>
6
7 * filesets.el (filesets-cmd-shell-command): Quote buffer-file-name
8 to protect whitespace and metacharacters from the shell.
9
102006-10-13 Giorgos Keramidas <keramida@ceid.upatras.gr> (tiny change)
11
12 * apropos.el (apropos-pattern-quoted): Fix a typo in a doc
13 string.
14
152006-10-13 Eli Zaretskii <eliz@gnu.org>
16
17 * subr.el (start-process-shell-command): Doc fix.
18
192006-10-13 Andrea Russo <rastandy@salug.it> (tiny change)
20
21 * info-look.el <maxima-mode, inferior-maxima-mode>: Allow [0-9] in
22 the regexp for Maxima symbols.
23
242006-10-13 Stefan Monnier <monnier@iro.umontreal.ca>
25
26 * vc-hooks.el (vc-ignore-dir-regexp): Make it into a defcustom.
27 (vc-find-root): Don't walk higher up than ~.
28
292006-10-12 Chong Yidong <cyd@stupidchicken.com>
30
31 * international/utf-8.el (utf-translate-cjk-load-tables):
32 Avoid clobbering last-coding-system-used during load.
33
342006-10-12 Carsten Dominik <dominik@science.uva.nl>
35
36 * textmodes/reftex-global.el (reftex-create-tags-file): Quote file
37 arguments.
38
392006-10-12 Richard Stallman <rms@gnu.org>
40
41 * files.el (file-name-history): Add defvar.
42 (save-some-buffers-action-alist): Improve description strings.
43
442006-10-12 Andreas Schwab <schwab@suse.de>
45
46 * files.el (auto-mode-alist): Match change log file name also with
47 a dash before a numeric extension.
48
492006-10-11 Ilya Zakharevich <ilyaz@cpan.org>
50
51 * progmodes/cperl-mode.el: Merge from upstream, upto version 5.22.
52 After 5.0:
53 (cperl-add-tags-recurse-noxs-fullpath): New function (for -batch mode).
54
55 After 5.1: Major edit. Summary of most visible changes:
56
57 - Multiple <<HERE per line allowed.
58 - Handles multiline subroutine declaration headers (with comments).
59 (The exception is `cperl-etags' - but it is not used in the rest
60 of the mode.)
61 - Fontifies multiline my/our declarations (even with comments,
62 and with legacy `font-lock').
63 - Major speedup of syntaxification, both immediate and postponed
64 (3.5x to 15x [for different CPUs and versions of Emacs] on the
65 huge real-life document I tested).
66 - New bindings, edits to imenu.
67 - "_" is made into word-char during fontification/syntaxification;
68 some attempts to recognize non-word "_" during other operations too.
69 - Detect bug in Emacs with `looking-at' inside `narrow' and bulk out.
70 - autoload some more perldoc-related stuff
71 - New convenience features: ISpell POD/HEREDOCs, narrow-to-HEREDOC.
72 - Attempt to incorporate XEmacs edits which reached me.
73
74 Fine-grained changelog:
75 (cperl-hook-after-change): New configuration variable.
76 (cperl-vc-sccs-header): Likewise.
77 (cperl-vc-sccs-header): Likewise.
78 (cperl-vc-header-alist): Default via two preceding variables.
79 (cperl-invalid-face): Remove double quoting under XEmacs
80 (still needed under 21.2).
81 (cperl-tips): Update URLs for resources.
82 (cperl-problems): Likewise.
83 (cperl-praise): Mention new features.
84 New C-c key bindings: for `cperl-find-bad-style',
85 `cperl-pod-spell', `cperl-here-doc-spell', `cperl-narrow-to-here-doc',
86 `cperl-perdoc', and `cperl-perldoc-at-point'.
87 CPerl Mode menu changes: "Fix style by spaces", "Imenu on Perl Info"
88 moved, new submenu of Tools with Ispell entries and narrowing.
89 (cperl-after-sub-regexp): New defsubst.
90 (cperl-imenu--function-name-regexp-perl): Use `cperl-after-sub-regexp'.
91 Allows heads up to head4.
92 Allow "package;".
93 (defun-prompt-regexp): Use `cperl-after-sub-regexp'.
94 (paren-backwards-message): ??? Something for XEmacs???
95 (cperl-mode): Never auto-switch abbrev-mode off.
96 Try to allow '_' be non-word char.
97 Do not use `font-lock-unfontify-region-function' on XEmacs.
98 Reset syntax cache on mode start.
99 Support multiline facification (even on legacy `font-lock').
100 (cperl-facemenu-add-face-function): ??? Some contributed code ???
101 (cperl-after-change-function): Since `font-lock' and `lazy-lock'
102 refuse to inform us whether the fontification is due to lazy
103 calling or due to edit to a buffer, install our own hook
104 (controlled by `cperl-hook-after-change').
105 (cperl-electric-pod): =cut may have been recognized as start.
106 (cperl-block-p): Move, updatedfor attributes.
107 (cperl-calculate-indent): Try to allow '_' be non-word char
108 Support subs with attributes.
109 (cperl-where-am-i): Queit (?) a warning.
110 (cperl-cached-syntax-table) New function.
111 (cperl-forward-re): Use `cperl-cached-syntax-table'.
112 (cperl-unwind-to-safe): Recognize `syntax-type' property
113 changing in a middle of line.
114 (cperl-find-sub-attrs): New function.
115 (cperl-find-pods-heres): Allow many <<EOP per line.
116 Allow subs with attributes.
117 Major speedups (3.5x..15x on a real-life test file nph-proxy.pl).
118 Recognize "extproc " (OS/2) case-folded and only at start.
119 /x on s///x with empty replacement was not recognized.
120 Better comments.
121 (cperl-after-block-p): Remarks on diff with `cperl-block-p'.
122 Allow subs with attributes, labels.
123 Do not confuse "else::foo" with "else".
124 Minor optimizations...
125 (cperl-after-expr-p): Try to allow '_' be non-word char.
126 (cperl-fill-paragraph): Try to detect a major bug in Emacs
127 with `looking-at' inside `narrow' and bulk out if found.
128 (cperl-imenu--create-perl-index): Updates for new
129 `cperl-imenu--function-name-regexp-perl'.
130 (cperl-outline-level): Likewise.
131 (cperl-init-faces): Allow multiline subroutine headers
132 and my/our declarations, and ones with comments.
133 Allow subroutine attributes.
134 (cperl-imenu-on-info): Better docstring.
135 (cperl-etags): Rudimentary support for attributes.
136 Support for packages and "package;".
137 (cperl-add-tags-recurse-noxs): Better (?) docstring.
138 (cperl-add-tags-recurse-noxs-fullpath): Likewise.
139 (cperl-tags-hier-init): Misprint for `fboundp' fixed.
140 (cperl-not-bad-style-regexp): Try to allow '_' be non-word char.
141 (cperl-perldoc): Add autoload.
142 (cperl-perldoc-at-point): Likewise.
143 (cperl-here-doc-spell): New function.
144 (cperl-pod-spell): Likewise.
145 (cperl-map-pods-heres): Likewise.
146 (cperl-get-here-doc-region): Likewise.
147 (cperl-font-lock-fontify-region-function): Likewise (backward
148 compatibility for legacy `font-lock').
149 (cperl-font-lock-unfontify-region-function): Fix style.
150 (cperl-fontify-syntaxically): Recognize and optimize away deferred
151 calls with no-change. Governed by `cperl-hook-after-change'.
152 (cperl-fontify-update): Recognize that syntaxification region
153 can be larger than fontification one.
154 XXXX we leave `cperl-postpone' property, so this is quadratic...
155 (cperl-fontify-update-bad): Temporary placeholder until
156 it is clear how to implement `cperl-fontify-update'.
157 (cperl-time-fontification): New function.
158 (attrib-group): New text attribute.
159 (multiline): New value: `syntax-type' text attribute.
160
161 After 5.2:
162 (cperl-emulate-lazy-lock): New function.
163 (cperl-fontify-syntaxically): Would skip large regions.
164 Add `cperl-time-fontification', `cperl-emulate-lazy-lock' to menu.
165 Some globals were declared, but uninitialized.
166
167 After 5.3, 5.4:
168 (cperl-facemenu-add-face-function): Add docs, fix U<>.
169 Copyright message updated.
170 (cperl-init-faces): Work around a bug in `font-lock'. May slow
171 facification down a bit.
172 Misprint for my|our|local for old `font-lock'
173 "our" was not fontified same as "my|local".
174 Highlight variables after "my" etc even in
175 a middle of an expression.
176 Do not facify multiple variables after my etc
177 unless parentheses are present.
178
179 After 5.5, 5.6
180 (cperl-fontify-syntaxically): after-change hook could reset.
181 (cperl-syntax-done-to) to a middle of line; unwind to BOL.
182
183 After 5.7:
184 (cperl-init-faces): Allow highlighting of local ($/).
185 (cperl-problems-old-emaxen): New variable (for the use of DOCSTRING).
186 (cperl-problems): Remove fixed problems.
187 (cperl-find-pods-heres): Recognize #-comments in m##x too.
188 Recognize charclasses (unless delimiter is \).
189 (cperl-fontify-syntaxically): Unwinding to safe was done in wrong order.
190 (cperl-regexp-scan): Update docs.
191 (cperl-beautify-regexp-piece): Use information got from regexp scan.
192
193 After 5.8:
194 Major user visible changes:
195 Recognition and fontification of character classes in RExen.
196 Variable indentation of RExen according to groups.
197
198 (cperl-find-pods-heres): Recognize POSIX classes in REx charclasses.
199 Fontify REx charclasses in variable-name face.
200 Fontify POSIX charclasses in "type" face.
201 Fontify unmatched "]" in function-name face.
202 Mark first-char of HERE-doc as `front-sticky'.
203 Reset `front-sticky' property when needed.
204 (cperl-calculate-indent): Indents //x -RExen accordning to parens level.
205 (cperl-to-comment-or-eol): Recognize ends of `syntax-type' constructs.
206 (cperl-backward-to-noncomment): Recognize stringy `syntax-type'
207 constructs. Support `narrow'ed buffers.
208 (cperl-praise): Remove a reservation.
209 (cperl-make-indent): New function.
210 (cperl-indent-for-comment): Use `cperl-make-indent'.
211 (cperl-indent-line): Likewise.
212 (cperl-lineup): Likewise.
213 (cperl-beautify-regexp-piece): Likewise.
214 (cperl-contract-level): Likewise.
215 (cperl-toggle-set-debug-unwind): New function.
216 New menu entry for this.
217 (fill-paragraph-function): Use when `boundp'.
218 (cperl-calculate-indent): Take into account groups when indenting RExen.
219 (cperl-to-comment-or-eol): Recognize # which end a string.
220 (cperl-modify-syntax-type): Make only syntax-table property non-sticky.
221 (cperl-fill-paragraph): Return t: needed for `fill-paragraph-function'.
222 (cperl-fontify-syntaxically): More clear debugging message.
223 (cperl-pod2man-build-command): Check (XEmacs) `Man-filter-list'.
224 (cperl-init-faces): More complicated highlight even on XEmacs (new).
225 Merge cosmetic changes from XEmacs.
226
227 After 5.9:
228 (cperl-1+): Move to before the first use.
229 (cperl-1-): Likewise.
230
231 After 5.10:
232
233 This code may lock Emacs hard!!! Use on your own risk!
234
235 (cperl-font-locking): New internal variable.
236 (cperl-beginning-of-property): New function.
237 (cperl-calculate-indent): Use `cperl-beginning-of-property'
238 instead of `previous-single-property-change'.
239 (cperl-unwind-to-safe): Likewise.
240 (cperl-after-expr-p): Likewise.
241 (cperl-get-here-doc-region): Likewise.
242 (cperl-font-lock-fontify-region-function): Likewise.
243 (cperl-to-comment-or-eol): Do not call `cperl-update-syntaxification'
244 recursively.
245 Bound `next-single-property-change' via `point-max'.
246 (cperl-unwind-to-safe): Bound likewise
247 (cperl-font-lock-fontify-region-function): Likewise
248 (cperl-find-pods-heres): Mark as recursive for `cperl-to-comment-or-eol'
249 Initialization of `cperl-font-lock-multiline-start' could be
250 missed if the "main" fontification did not run due to the
251 keyword being already fontified.
252 (cperl-pod-spell): Return t from do-one-chunk function.
253 (cperl-map-pods-heres): Stop when the worker returns nil.
254 Call `cperl-update-syntaxification'.
255 (cperl-get-here-doc-region): Call `cperl-update-syntaxification'.
256 (cperl-get-here-doc-delim): Remove unused function.
257
258 After 5.11:
259
260 The possible lockup of Emacs (introduced in 5.10) fixed.
261
262 (cperl-unwind-to-safe): `cperl-beginning-of-property' won't return nil.
263 (cperl-syntaxify-for-menu): New customization variable.
264 (cperl-select-this-pod-or-here-doc): New function.
265 (cperl-get-here-doc-region): Extra argument.
266 Do not adjust pos by 1.
267
268 New menu entries
269 (Perl/Tools): Selection of current POD or HERE-DOC section.
270 (Debugging CPerl:) backtrace on fontification.
271
272 After 5.12:
273 (cperl-cached-syntax-table): Use `car-safe'.
274 (cperl-forward-re): Remove spurious argument SET-ST.
275 Add documentation.
276 (cperl-forward-group-in-re): New function.
277 (cperl-find-pods-heres): Find and highlight (?{}) blocks in RExen
278 (XXXX Temporary (?) hack is to syntax-mark them as comment).
279
280 After 5.13:
281 (cperl-string-syntax-table): Make { and } not-grouping
282 (Sometimes they ARE grouping in RExen, but matching them would only
283 confuse in many situations when they are not)
284 (beginning-of-buffer): Replace two occurences with goto-char...
285 (cperl-calculate-indent): `char-after' could be nil...
286 (cperl-find-pods-heres): REx can start after "[" too.
287 Hightlight (??{}) in RExen too.
288 (cperl-maybe-white-and-comment-rex): New constant
289 (cperl-white-and-comment-rex): Likewise.
290 XXXX Not very efficient, but hard to make
291 better while keeping 1 group.
292
293 After 5.13:
294 (cperl-find-pods-heres): $foo << identifier() is not a HERE-DOC.
295 Likewise for 1 << identifier.
296
297 After 5.14:
298 (cperl-find-pods-heres): Different logic for $foo .= <<EOF etc.
299 Error-less condition-case could fail.
300 (cperl-font-lock-fontify-region-function): Likewise.
301 (cperl-init-faces): Likewise.
302
303 After 5.15:
304 (cperl-find-pods-heres): Support property REx-part2.
305 (cperl-calculate-indent): Likewise.
306 Don't special-case REx with non-empty 1st line.
307 (cperl-find-pods-heres): In RExen, highlight non-literal backslashes.
308 Invert highlighting of charclasses:
309 now the envelop is highlighted.
310 Highlight many others 0-length builtins.
311 (cperl-praise): Mention indenting and highlight in RExen.
312
313 After 5.15:
314 (cperl-find-pods-heres): Highlight capturing parens in REx.
315
316 After 5.16:
317 (cperl-find-pods-heres): Highlight '|' for alternation
318 Initialize `font-lock-warning-face' if not present.
319 (cperl-find-pods-heres): Use `font-lock-warning-face' instead of
320 `font-lock-function-name-face'.
321 (cperl-look-at-leading-count): Likewise.
322 (cperl-find-pods-heres): Localize `font-lock-variable-name-face',
323 `font-lock-keyword-face' (needed for
324 batch processing), etc...
325 Use `font-lock-builtin-face' for builtin in REx
326 Now `font-lock-variable-name-face'
327 is used for interpolated variables
328 Use "talking aliases" for faces inside REx
329 Highlight parts of REx (except in charclasses)
330 according to the syntax and/or semantic
331 Syntax-mark a {}-part of (?{}) as "comment"
332 (it was the ()-part)
333 Better logic to distinguish what is what in REx
334 (cperl-tips-faces): Document REx highlighting
335 (cperl-praise): Mention REx syntax highlight etc.
336
337 After 5.17:
338 (cperl-find-sub-attrs): Would not always manage to print error message.
339 (cperl-find-pods-heres): Localize `font-lock-constant-face'.
340
341 After 5.18:
342 (cperl-find-pods-heres): Misprint in REx for parsing REx.
343 Very minor optimization.
344 `my-cperl-REx-modifiers-face' got quoted.
345 Recognize "print $foo <<END" as HERE-doc.
346 Put `REx-interpolated' text attribute if needed.
347 (cperl-invert-if-unless-modifiers): New function.
348 (cperl-backward-to-start-of-expr): Likewise.
349 (cperl-forward-to-end-of-expr): Likewise.
350 (cperl-invert-if-unless): Works in "the opposite way" too.
351 Cursor position on return is on the switch-word.
352 Indents comments better.
353 (REx-interpolated): New text attribute.
354 (cperl-next-interpolated-REx): New function.
355 (cperl-next-interpolated-REx-0): Likewise.
356 (cperl-next-interpolated-REx-1): Likewise.
357 "\C-c\C-x", "\C-c\C-y", "\C-c\C-v": New keybinding for these functions.
358 Perl/Regexp menu: 3 new entries for `cperl-next-interpolated-REx'.
359 (cperl-praise): Mention finded interpolated RExen.
360
361 After 5.19:
362 (cperl-init-faces): Highlight %$foo, @$foo too.
363 (cperl-short-docs): Better docs for system, exec.
364 (cperl-find-pods-heres): Better detect << after print {FH} <<EOF etc.
365 Would not find HERE-doc ended by EOF without NL.
366 (cperl-short-docs): Correct not-doubled \-escapes.
367 start block: Put some `defvar' for stuff gone from XEmacs.
368
369 After 5.20:
370 initial comment: Extend copyright, fix email address.
371 (cperl-indent-comment-at-column-0): New customization variable.
372 (cperl-comment-indent): Indentation after $#a would increasy by 1.
373 (cperl-mode): Make `defun-prompt-regexp' grok BEGIN/END etc.
374 (cperl-find-pods-heres): Mark CODE of s///e as `syntax-type' `multiline'
375 (cperl-at-end-of-expr): Would fail if @BAR=12 follows after ";".
376 (cperl-init-faces): If `cperl-highlight-variables-indiscriminately'
377 highlight $ in $foo too (UNTESTED).
378 (cperl-set-style): Docstring missed some available styles.
379 toplevel: Menubar/Perl/Indent-Styles had FSF, now K&R.
380 Change "Current" to "Memorize Current".
381 (cperl-indent-wrt-brace): New customization variable; the default is
382 as for pre-5.2 version.
383 (cperl-styles-entries): Keep `cperl-extra-newline-before-brace-multiline'.
384 (cperl-style-alist): Likewise.
385 (cperl-fix-line-spacing): Support `cperl-merge-trailing-else' being nil,
386 and `cperl-extra-newline-before-brace' etc
387 being t
388 (cperl-indent-exp): Plans B and C to find continuation blocks even
389 if `cperl-extra-newline-before-brace' is t.
390
391 After 5.21:
392 Improve some docstrings concerning indentation.
393 (cperl-indent-rules-alist): New variable.
394 (cperl-sniff-for-indent): New function name
395 (separated from `cperl-calculate-indent').
396 (cperl-calculate-indent): Separate the sniffer and the indenter;
397 uses `cperl-sniff-for-indent' now.
398 (cperl-comment-indent): Test for `cperl-indent-comment-at-column-0'
399 was inverted;
400 Support `comment-column' = 0.
401
4022006-10-11 Martin Rudalics <rudalics@gmx.at>
403
404 * dnd.el (dnd-handle-one-url): Fix typo in doc-string.
405 * help-at-pt.el (scan-buf-move-to-region): Likewise.
406 * longlines.el (longlines-window-change-function): Likewise.
407 * simple.el (undo-ask-before-discard): Likewise.
408 * wid-edit.el (widget-field-prompt-internal)
409 (widget-documentation-link-p): Likewise.
410
4112006-10-10 Stefan Monnier <monnier@iro.umontreal.ca>
412
413 * progmodes/sh-script.el (sh-get-kw): | is not among the allowed chars
414 for a keyword.
415
4162006-10-09 Stefan Monnier <monnier@iro.umontreal.ca>
417
418 * newcomment.el (comment-valid-prefix-p): Make the check
419 more thorough. From an idea by Martin Rudalics <rudalics@gmx.at>.
420 (comment-indent-new-line): Adjust call.
421
4222006-10-09 Ken Manheimer <ken.manheimer@gmail.com>
423
424 * allout.el (allout-back-to-current-heading): Base on lower-level
425 routines to get proper disqualification of aberrant topics.
426
4272006-10-09 Richard Stallman <rms@gnu.org>
428
429 * textmodes/two-column.el (2C-two-columns): Doc fix.
430
4312006-10-09 Kim F. Storm <storm@cua.dk>
432
433 * shell.el (explicit-csh-args, explicit-bash-args): Add comment
434 about implicit use.
435
4362006-10-08 Richard Stallman <rms@gnu.org>
437
438 * textmodes/two-column.el (2C-two-columns): Doc fix.
439
4402006-10-08 Reiner Steib <Reiner.Steib@gmx.de>
441
442 * files.el: Mark `buffer-read-only' as safe-local-variable.
443
4442006-10-08 Nick Roberts <nickrob@snap.net.nz>
445
446 * progmodes/gdb-ui.el (gdb-speedbar-expand-node): Burp if
447 GUD buffer has been killed.
448
4492006-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
450
451 * completion.el (add-completions-from-c-buffer):
452 Don't presume an error's second element is a string.
453 Use looking-at rather than buffer-substring + member.
454
4552006-10-07 Eli Zaretskii <eliz@gnu.org>
456
457 * mail/rmail.el (rmail-redecode-body): If the old encoding is
458 `undecided', call find-coding-systems-region to find a proper
459 non-trivial encoding.
460 (rmail-mime-charset-pattern): Allow a TAB between "Content-Type"
461 and "text/plain".
462
4632006-10-07 Kevin Ryde <user42@zip.com.au>
464
465 * textmodes/reftex-vars.el (defgroup reftex): Update home page
466 url-link.
467
468 * strokes.el (defgroup strokes): Remove invalid url-link.
469
4702006-10-07 Magnus Henoch <mange@freemail.hu>
471
472 * autoinsert.el (auto-insert-alist): Doc fix.
473
4742006-10-07 Johan Bockg,be(Brd <bojohan@dd.chalmers.se>
475
476 * mouse-sel.el (mouse-insert-selection-internal):
477 Use insert-for-yank, so that yank handlers are run.
478
4792006-10-07 Kim F. Storm <storm@cua.dk>
480
481 * ido.el (ido-file-extension-aux): Fix comparison.
482
4832006-10-06 Kim F. Storm <storm@cua.dk>
484
485 * ido.el (ido-wide-find-dirs-or-files): Use shell-quote-argument.
486
4872006-10-05 Juanma Barranquero <lekktu@gmail.com>
488
489 * emacs-lisp/advice.el (ad-remove-advice, ad-parse-arglist)
490 (ad-make-mapped-call): Use `let', not `let*'.
491
4922006-10-05 Chong Yidong <cyd@stupidchicken.com>
493
494 * international/mule-cmds.el (coding-system-change-eol-conversion):
495 Ensure the coding system is initialized before calling
496 coding-system-eol-type.
497
4982006-10-04 Carsten Dominik <dominik@science.uva.nl>
499
500 * textmodes/org.el (org-rm-props, org-activate-plain-links)
501 (org-activate-angle-links, org-activate-dates)
502 (org-activate-target-links, org-activate-camels)
503 (org-activate-tags): Add `rear-nonsticky' text property to avoid
504 textproperty keymaps from being active beyond the end of a line.
505 (org-unfontify-region): Also remove `rear-nonsticky' property.
506
5072006-10-04 Kenichi Handa <handa@m17n.org>
508
509 * international/code-pages.el (next): Table fixed.
510
5112006-10-04 Stefan Monnier <monnier@iro.umontreal.ca>
512
513 * progmodes/sh-script.el (sh-prev-thing): Remove (forward-char 1) now
514 that it's been made unnecessary by removing narrowing.
515
5162006-10-03 Stefan Monnier <monnier@iro.umontreal.ca>
517
518 * progmodes/sh-script.el (sh-prev-thing): Massage to untangle the
519 control flow a bit, simplify another bit, and add comments.
520
5212006-10-03 David Kastrup <dak@gnu.org>
522
523 * help.el (describe-mode): For clicks on mode-line, use "@"
524 interactive argument to get the major mode of the click instead of
525 the current buffer.
526
527 * isearch.el (isearch-mouse-2): Use new semantics of `key-binding'
528 in order to better redirect mouse-2 clicks. Also allow default
529 bindings to apply.
530
5312006-10-03 Kim F. Storm <storm@cua.dk>
532
533 * emacs-lisp/cl.el (pushnew-internal): Remove defvar.
534 (pushnew): Fix last change.
535
12006-10-03 Denis St,A|(Bnkel <dstuenkel@googlemail.com> (tiny change) 5362006-10-03 Denis St,A|(Bnkel <dstuenkel@googlemail.com> (tiny change)
2 537
3 * ibuf-ext.el (eval, view-and-eval) <define-ibuffer-op>: 538 * ibuf-ext.el (eval, view-and-eval) <define-ibuffer-op>:
@@ -7,7 +542,7 @@
7 542
8 * progmodes/sh-script.el (sh-prev-thing): Fix last change. 543 * progmodes/sh-script.el (sh-prev-thing): Fix last change.
9 544
102006-10-02 MIYOSHI Masanori <miyoshi@meadowy.org> (tiny change) 5452006-10-02 MIYOSHI Masanori <miyoshi@meadowy.org> (tiny change)
11 546
12 * mail/smtpmail.el (smtpmail-try-auth-methods): Fix typo in 547 * mail/smtpmail.el (smtpmail-try-auth-methods): Fix typo in
13 2006-09-28 commit. 548 2006-09-28 commit.
@@ -16,7 +551,7 @@
16 551
17 * international/code-pages.el (iso-8859-6): Table fixed. 552 * international/code-pages.el (iso-8859-6): Table fixed.
18 553
192006-10-01 Chris Moore <christopher.ian.moore@gmail.com> (tiny change) 5542006-10-01 Chris Moore <christopher.ian.moore@gmail.com> (tiny change)
20 555
21 * dired.el (dired-build-subdir-alist): Fix previous change. 556 * dired.el (dired-build-subdir-alist): Fix previous change.
22 557
@@ -141,7 +676,7 @@
141 * international/mule.el (after-insert-file-set-coding): 676 * international/mule.el (after-insert-file-set-coding):
142 If VISIT, don't let set-buffer-multibyte make undo info. 677 If VISIT, don't let set-buffer-multibyte make undo info.
143 678
1442006-09-28 Osamu Yamane <yamane@green.ocn.ne.jp> (tiny change) 6792006-09-28 Osamu Yamane <yamane@green.ocn.ne.jp> (tiny change)
145 680
146 * mail/smtpmail.el (smtpmail-try-auth-methods): Do not break long 681 * mail/smtpmail.el (smtpmail-try-auth-methods): Do not break long
147 lines in base64-encoded authentication response. 682 lines in base64-encoded authentication response.
@@ -217,7 +752,7 @@
217 * help.el (describe-key-briefly, describe-key): Don't expect an 752 * help.el (describe-key-briefly, describe-key): Don't expect an
218 extra up event if a down-event is generated by a popup menu. 753 extra up event if a down-event is generated by a popup menu.
219 754
2202006-09-23 Michal Nazarewicz <mnazarewicz@gmail.com> (tiny change) 7552006-09-23 Michal Nazarewicz <mnazarewicz@gmail.com> (tiny change)
221 756
222 * textmodes/ispell.el (ispell-change-dictionary): Don't check the 757 * textmodes/ispell.el (ispell-change-dictionary): Don't check the
223 local dictionary when changing the global dictionary. 758 local dictionary when changing the global dictionary.
@@ -265,8 +800,7 @@
265 800
2662006-09-22 Chong Yidong <cyd@stupidchicken.com> 8012006-09-22 Chong Yidong <cyd@stupidchicken.com>
267 802
268 * files.el (save-some-buffers-action-alist): Display diff in 803 * files.el (save-some-buffers-action-alist): Display diff in view-mode.
269 view-mode.
270 804
2712006-09-22 Masatake YAMATO <jet@gyve.org> 8052006-09-22 Masatake YAMATO <jet@gyve.org>
272 806
@@ -284,11 +818,6 @@
284 * mouse.el (mouse-posn-property): Fix typo for `event-start' in 818 * mouse.el (mouse-posn-property): Fix typo for `event-start' in
285 doc string. 819 doc string.
286 820
2872006-09-21 Kim F. Storm <storm@cua.dk>
288
289 * emacs-lisp/cl.el (pushnew-internal): Remove defvar.
290 (pushnew): Fix last change.
291
2922006-09-21 Kenichi Handa <handa@m17n.org> 8212006-09-21 Kenichi Handa <handa@m17n.org>
293 822
294 * language/european.el ("Latin-1"): Add windows-1252 to 823 * language/european.el ("Latin-1"): Add windows-1252 to
@@ -305,8 +834,7 @@
305 834
3062006-09-20 Kenichi Handa <handa@m17n.org> 8352006-09-20 Kenichi Handa <handa@m17n.org>
307 836
308 * isearch.el (isearch-process-search-char): Cancel the previous 837 * isearch.el (isearch-process-search-char): Cancel the previous change.
309 change.
310 (isearch-search-string): New function. 838 (isearch-search-string): New function.
311 (isearch-search): Use isearch-search-string. 839 (isearch-search): Use isearch-search-string.
312 (isearch-lazy-highlight-search): Likewise. 840 (isearch-lazy-highlight-search): Likewise.
@@ -4192,7 +4720,7 @@
4192 compatibility function (Emacs 18/19). 4720 compatibility function (Emacs 18/19).
4193 (idlwave-is-continuation-line): Always return point at start of 4721 (idlwave-is-continuation-line): Always return point at start of
4194 previous non-blank continuation line. 4722 previous non-blank continuation line.
4195 `keyword-parameters': Fix continued comment font-lock matcher. 4723 (keyword-parameters): Fix continued comment font-lock matcher.
4196 (idlwave-font-lock-fontify-region): Written, use as 4724 (idlwave-font-lock-fontify-region): Written, use as
4197 font-lock-fontify-region-function, to fix continued keyword 4725 font-lock-fontify-region-function, to fix continued keyword
4198 fontification issues. 4726 fontification issues.
@@ -4445,7 +4973,7 @@
4445 (mac-TIFF-to-string): New functions. 4973 (mac-TIFF-to-string): New functions.
4446 (x-get-selection, x-selection-value) 4974 (x-get-selection, x-selection-value)
4447 (mac-select-convert-to-string): Use them. 4975 (mac-select-convert-to-string): Use them.
4448 (mac-text-encoding-mac-japanese-basic-variant): New constant. 4976 (mac-text-encoding-mac-japanese-basic-variant): New constant.
4449 (mac-dnd-types-alist): New customization variable. 4977 (mac-dnd-types-alist): New customization variable.
4450 (mac-dnd-handle-furl, mac-dnd-handle-hfs, mac-dnd-insert-utxt) 4978 (mac-dnd-handle-furl, mac-dnd-handle-hfs, mac-dnd-insert-utxt)
4451 (mac-dnd-insert-TEXT, mac-dnd-insert-TIFF, mac-dnd-drop-data) 4979 (mac-dnd-insert-TEXT, mac-dnd-insert-TIFF, mac-dnd-drop-data)
diff --git a/lisp/allout.el b/lisp/allout.el
index 5f59e5e0103..b38d38d9e87 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -2736,24 +2736,22 @@ otherwise skip white space between bullet and ensuing text."
2736 (1- allout-recent-prefix-end))) 2736 (1- allout-recent-prefix-end)))
2737;;;_ > allout-back-to-current-heading () 2737;;;_ > allout-back-to-current-heading ()
2738(defun allout-back-to-current-heading () 2738(defun allout-back-to-current-heading ()
2739 "Move to heading line of current topic, or beginning if already on the line. 2739 "Move to heading line of current topic, or beginning if not in a topic.
2740 2740
2741Return value of point, unless we started outside of (before any) topics, 2741If interactive, we position at the end of the prefix.
2742in which case we return nil." 2742
2743Return value of resulting point, unless we started outside
2744of (before any) topics, in which case we return nil."
2743 2745
2744 (allout-beginning-of-current-line) 2746 (allout-beginning-of-current-line)
2745 (if (or (allout-on-current-heading-p) 2747 (let ((bol-point (point)))
2746 (and (re-search-backward (concat "^\\(" allout-regexp "\\)") 2748 (allout-goto-prefix-doublechecked)
2747 nil 'move) 2749 (if (<= (point) bol-point)
2748 (progn (while (allout-hidden-p) 2750 (if (interactive-p)
2749 (allout-beginning-of-current-line) 2751 (allout-end-of-prefix)
2750 (if (not (looking-at allout-regexp)) 2752 (point))
2751 (re-search-backward allout-regexp 2753 (goto-char (point-min))
2752 nil 'move))) 2754 nil)))
2753 (allout-prefix-data))))
2754 (if (interactive-p)
2755 (allout-end-of-prefix)
2756 (point))))
2757;;;_ > allout-back-to-heading () 2755;;;_ > allout-back-to-heading ()
2758(defalias 'allout-back-to-heading 'allout-back-to-current-heading) 2756(defalias 'allout-back-to-heading 'allout-back-to-current-heading)
2759;;;_ > allout-pre-next-prefix () 2757;;;_ > allout-pre-next-prefix ()
diff --git a/lisp/apropos.el b/lisp/apropos.el
index 3889655ff99..cbe571f8fec 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -142,7 +142,7 @@ If value is `verbose', the computed score is shown for each match."
142 "Apropos pattern as entered by user.") 142 "Apropos pattern as entered by user.")
143 143
144(defvar apropos-pattern-quoted nil 144(defvar apropos-pattern-quoted nil
145 "Apropos pattern passed through `regexp-quoute'.") 145 "Apropos pattern passed through `regexp-quote'.")
146 146
147(defvar apropos-words () 147(defvar apropos-words ()
148 "Current list of apropos words extracted from `apropos-pattern'.") 148 "Current list of apropos words extracted from `apropos-pattern'.")
diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el
index c1a2047a9c6..15a7461d288 100644
--- a/lisp/autoinsert.el
+++ b/lisp/autoinsert.el
@@ -215,7 +215,7 @@ If this contains a %s, that will be replaced by the matching rule."
215;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n")) 215;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n"))
216 "A list specifying text to insert by default into a new file. 216 "A list specifying text to insert by default into a new file.
217Elements look like (CONDITION . ACTION) or ((CONDITION . DESCRIPTION) . ACTION). 217Elements look like (CONDITION . ACTION) or ((CONDITION . DESCRIPTION) . ACTION).
218CONDITION maybe a regexp that must match the new file's name, or it may be 218CONDITION may be a regexp that must match the new file's name, or it may be
219a symbol that must match the major mode for this element to apply. 219a symbol that must match the major mode for this element to apply.
220Only the first matching element is effective. 220Only the first matching element is effective.
221Optional DESCRIPTION is a string for filling `auto-insert-prompt'. 221Optional DESCRIPTION is a string for filling `auto-insert-prompt'.
diff --git a/lisp/completion.el b/lisp/completion.el
index 64bf8026e9d..53dfd7521a5 100644
--- a/lisp/completion.el
+++ b/lisp/completion.el
@@ -1885,7 +1885,7 @@ Prefix args ::
1885 (save-excursion 1885 (save-excursion
1886 (goto-char (point-min)) 1886 (goto-char (point-min))
1887 (catch 'finish-add-completions 1887 (catch 'finish-add-completions
1888 (with-syntax-table completion-c-def-syntax-table 1888 (with-syntax-table completion-c-def-syntax-table
1889 (while t 1889 (while t
1890 ;; we loop here only when scan-sexps fails 1890 ;; we loop here only when scan-sexps fails
1891 ;; (i.e. unbalance exps.) 1891 ;; (i.e. unbalance exps.)
@@ -1895,8 +1895,7 @@ Prefix args ::
1895 (cond 1895 (cond
1896 ((= (preceding-char) ?#) 1896 ((= (preceding-char) ?#)
1897 ;; preprocessor macro, see if it's one we handle 1897 ;; preprocessor macro, see if it's one we handle
1898 (setq string (buffer-substring (point) (+ (point) 6))) 1898 (cond ((looking-at "\\(define\\|ifdef\\)\\>")
1899 (cond ((member string '("define" "ifdef "))
1900 ;; skip forward over definition symbol 1899 ;; skip forward over definition symbol
1901 ;; and add it to database 1900 ;; and add it to database
1902 (and (forward-word 2) 1901 (and (forward-word 2)
@@ -1944,9 +1943,9 @@ Prefix args ::
1944 (throw 'finish-add-completions t)) 1943 (throw 'finish-add-completions t))
1945 (error 1944 (error
1946 ;; Check for failure in scan-sexps 1945 ;; Check for failure in scan-sexps
1947 (if (or (string-equal (nth 1 e) 1946 (if (member (nth 1 e)
1948 "Containing expression ends prematurely") 1947 '("Containing expression ends prematurely"
1949 (string-equal (nth 1 e) "Unbalanced parentheses")) 1948 "Unbalanced parentheses"))
1950 ;; unbalanced paren., keep going 1949 ;; unbalanced paren., keep going
1951 ;;(ding) 1950 ;;(ding)
1952 (forward-line 1) 1951 (forward-line 1)
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 5e7135ec8d6..3b16489da5b 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -91,7 +91,7 @@ The handler is first located by looking at `dnd-protocol-alist'.
91If no match is found here, and the value of `browse-url-browser-function' 91If no match is found here, and the value of `browse-url-browser-function'
92is a pair of (REGEXP . FUNCTION), those regexps are tried for a match. 92is a pair of (REGEXP . FUNCTION), those regexps are tried for a match.
93If no match is found, just call `dnd-insert-text'. 93If no match is found, just call `dnd-insert-text'.
94WINDOW is where the drop happend, ACTION is the action for the drop, 94WINDOW is where the drop happened, ACTION is the action for the drop,
95URL is what has been dropped. 95URL is what has been dropped.
96Returns ACTION." 96Returns ACTION."
97 (require 'browse-url) 97 (require 'browse-url)
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index d03245bf452..5aa8bbd14cc 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -2409,7 +2409,7 @@ If such an advice was found it will be removed from the list of advices
2409in that CLASS." 2409in that CLASS."
2410 (interactive (ad-read-advice-specification "Remove advice of")) 2410 (interactive (ad-read-advice-specification "Remove advice of"))
2411 (if (ad-is-advised function) 2411 (if (ad-is-advised function)
2412 (let* ((advice-to-remove (ad-find-advice function class name))) 2412 (let ((advice-to-remove (ad-find-advice function class name)))
2413 (if advice-to-remove 2413 (if advice-to-remove
2414 (ad-set-advice-info-field 2414 (ad-set-advice-info-field
2415 function class 2415 function class
@@ -2747,7 +2747,7 @@ For that it has to be fbound with a non-autoload definition."
2747A three-element list is returned, where the 1st element is the list of 2747A three-element list is returned, where the 1st element is the list of
2748required arguments, the 2nd is the list of optional arguments, and the 3rd 2748required arguments, the 2nd is the list of optional arguments, and the 3rd
2749is the name of an optional rest parameter (or nil)." 2749is the name of an optional rest parameter (or nil)."
2750 (let* (required optional rest) 2750 (let (required optional rest)
2751 (setq rest (car (cdr (memq '&rest arglist)))) 2751 (setq rest (car (cdr (memq '&rest arglist))))
2752 (if rest (setq arglist (reverse (cdr (memq '&rest (reverse arglist)))))) 2752 (if rest (setq arglist (reverse (cdr (memq '&rest (reverse arglist))))))
2753 (setq optional (cdr (memq '&optional arglist))) 2753 (setq optional (cdr (memq '&optional arglist)))
@@ -2958,7 +2958,7 @@ Example: `(ad-map-arglists '(a &rest args) '(w x y z))' will return
2958 2958
2959(defun ad-make-mapped-call (source-arglist target-arglist target-function) 2959(defun ad-make-mapped-call (source-arglist target-arglist target-function)
2960 "Make form to call TARGET-FUNCTION with args from SOURCE-ARGLIST." 2960 "Make form to call TARGET-FUNCTION with args from SOURCE-ARGLIST."
2961 (let* ((mapped-form (ad-map-arglists source-arglist target-arglist))) 2961 (let ((mapped-form (ad-map-arglists source-arglist target-arglist)))
2962 (if (eq (car mapped-form) 'funcall) 2962 (if (eq (car mapped-form) 'funcall)
2963 (cons target-function (cdr (cdr mapped-form))) 2963 (cons target-function (cdr (cdr mapped-form)))
2964 (prog1 mapped-form 2964 (prog1 mapped-form
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 3399f7e7b20..d2d68189230 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -149,8 +149,6 @@ be a symbol, or any generalized variable allowed by `setf'."
149 (if (symbolp place) (list 'setq place (list 'cons x place)) 149 (if (symbolp place) (list 'setq place (list 'cons x place))
150 (list 'callf2 'cons x place))) 150 (list 'callf2 'cons x place)))
151 151
152(defvar pushnew-internal)
153
154(defmacro pushnew (x place &rest keys) 152(defmacro pushnew (x place &rest keys)
155 "(pushnew X PLACE): insert X at the head of the list if not already there. 153 "(pushnew X PLACE): insert X at the head of the list if not already there.
156Like (push X PLACE), except that the list is unmodified if X is `eql' to 154Like (push X PLACE), except that the list is unmodified if X is `eql' to
@@ -159,7 +157,8 @@ an element already on the list.
159\n(fn X PLACE [KEYWORD VALUE]...)" 157\n(fn X PLACE [KEYWORD VALUE]...)"
160 (if (symbolp place) 158 (if (symbolp place)
161 (if (null keys) 159 (if (null keys)
162 `(if (memql ,x ,place) ,place (setq ,place (cons ,x ,place))) 160 `(let ((x ,x))
161 (if (memql x ,place) ,place (setq ,place (cons x ,place))))
163 (list 'setq place (list* 'adjoin x place keys))) 162 (list 'setq place (list* 'adjoin x place keys)))
164 (list* 'callf2 'adjoin x place keys))) 163 (list* 'callf2 'adjoin x place keys)))
165 164
diff --git a/lisp/files.el b/lisp/files.el
index 3e2cf2ee92d..4b746225f60 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -514,6 +514,9 @@ using \\[toggle-read-only]."
514 :type 'boolean 514 :type 'boolean
515 :group 'view) 515 :group 'view)
516 516
517(defvar file-name-history nil
518 "History list of file names entered in the minibuffer.")
519
517(put 'ange-ftp-completion-hook-function 'safe-magic t) 520(put 'ange-ftp-completion-hook-function 'safe-magic t)
518(defun ange-ftp-completion-hook-function (op &rest args) 521(defun ange-ftp-completion-hook-function (op &rest args)
519 "Provides support for ange-ftp host name completion. 522 "Provides support for ange-ftp host name completion.
@@ -1906,7 +1909,7 @@ in that case, this function acts as if `enable-local-variables' were t."
1906 ("\\.[sS]\\'" . asm-mode) 1909 ("\\.[sS]\\'" . asm-mode)
1907 ("\\.asm\\'" . asm-mode) 1910 ("\\.asm\\'" . asm-mode)
1908 ("[cC]hange\\.?[lL]og?\\'" . change-log-mode) 1911 ("[cC]hange\\.?[lL]og?\\'" . change-log-mode)
1909 ("[cC]hange[lL]og\\.[0-9]+\\'" . change-log-mode) 1912 ("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode)
1910 ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode) 1913 ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
1911 ("\\.scm\\.[0-9]*\\'" . scheme-mode) 1914 ("\\.scm\\.[0-9]*\\'" . scheme-mode)
1912 ("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode) 1915 ("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
@@ -2397,10 +2400,10 @@ asking you for confirmation."
2397;; 2400;;
2398;; For variables defined in the C source code the declaration should go here: 2401;; For variables defined in the C source code the declaration should go here:
2399 2402
2400;; FIXME: Some variables should be moved according to the rules above.
2401(mapc (lambda (pair) 2403(mapc (lambda (pair)
2402 (put (car pair) 'safe-local-variable (cdr pair))) 2404 (put (car pair) 'safe-local-variable (cdr pair)))
2403 '((fill-column . integerp) ;; C source code 2405 '((buffer-read-only . booleanp) ;; C source code
2406 (fill-column . integerp) ;; C source code
2404 (indent-tabs-mode . booleanp) ;; C source code 2407 (indent-tabs-mode . booleanp) ;; C source code
2405 (left-margin . integerp) ;; C source code 2408 (left-margin . integerp) ;; C source code
2406 (no-update-autoloads . booleanp) 2409 (no-update-autoloads . booleanp)
@@ -3730,7 +3733,7 @@ This requires the external program `diff' to be in your `exec-path'."
3730 (recursive-edit) 3733 (recursive-edit)
3731 ;; Return nil to ask about BUF again. 3734 ;; Return nil to ask about BUF again.
3732 nil) 3735 nil)
3733 "view this file") 3736 "view this buffer")
3734 (?d (lambda (buf) 3737 (?d (lambda (buf)
3735 (save-window-excursion 3738 (save-window-excursion
3736 (diff-buffer-with-file buf)) 3739 (diff-buffer-with-file buf))
@@ -3738,7 +3741,7 @@ This requires the external program `diff' to be in your `exec-path'."
3738 (lambda (ignore) (exit-recursive-edit))) 3741 (lambda (ignore) (exit-recursive-edit)))
3739 (recursive-edit) 3742 (recursive-edit)
3740 nil) 3743 nil)
3741 "view changes in file")) 3744 "view changes in this buffer"))
3742 "ACTION-ALIST argument used in call to `map-y-or-n-p'.") 3745 "ACTION-ALIST argument used in call to `map-y-or-n-p'.")
3743 3746
3744(defvar buffer-save-without-query nil 3747(defvar buffer-save-without-query nil
diff --git a/lisp/filesets.el b/lisp/filesets.el
index eb8cdb02617..355c39f8ed7 100644
--- a/lisp/filesets.el
+++ b/lisp/filesets.el
@@ -1603,7 +1603,7 @@ Replace <file-name> or <<file-name>> with filename."
1603 ((equal arg "<file-name>") 1603 ((equal arg "<file-name>")
1604 (buffer-file-name)) 1604 (buffer-file-name))
1605 ((equal arg "<<file-name>>") 1605 ((equal arg "<<file-name>>")
1606 (filesets-quote (buffer-file-name))) 1606 (shell-quote-argument (buffer-file-name)))
1607 (t 1607 (t
1608 arg)))) 1608 arg))))
1609 1609
@@ -1701,7 +1701,7 @@ Replace <file-name> or <<file-name>> with filename."
1701 ok) 1701 ok)
1702 t))) 1702 t)))
1703 (when ok 1703 (when ok
1704 (let ((cmd (format txt (buffer-file-name)))) 1704 (let ((cmd (format txt (shell-quote-argument (buffer-file-name)))))
1705 (message "Filesets: %s" cmd) 1705 (message "Filesets: %s" cmd)
1706 (filesets-cmd-show-result cmd 1706 (filesets-cmd-show-result cmd
1707 (shell-command-to-string cmd)))))) 1707 (shell-command-to-string cmd))))))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index ad3c6ad919e..dba2c407b21 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,56 @@
12006-10-13 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
2
3 * mm-uu.el (mm-uu-pgp-signed-extract-1): Use RFC 2440 definition of
4 "blank line" when searching for end of armor headers.
5
62006-10-11 Katsumi Yamaoka <yamaoka@jpl.org>
7
8 * gmm-utils.el (gmm-write-region): Fix variable name.
9
102006-10-10 Reiner Steib <Reiner.Steib@gmx.de>
11
12 * gmm-utils.el (gmm-write-region): New function based on compatibility
13 code from `mm-make-temp-file'.
14
15 * mm-util.el (mm-make-temp-file): Use `gmm-write-region'.
16
17 * nnmaildir.el (nnmaildir--update-nov)
18 (nnmaildir-request-replace-article, nnmaildir-request-accept-article):
19 Use `gmm-write-region'.
20
212006-10-04 Reiner Steib <Reiner.Steib@gmx.de>
22
23 * gnus-sum.el (gnus-summary-make-menu-bar): Clarify
24 gnus-summary-limit-to-articles.
25
262006-10-04 Romain Francoise <romain@orebokech.com>
27
28 * gnus-util.el (gnus-alist-to-hashtable, gnus-hashtable-to-alist):
29 Moved here (and renamed) from gnus-registry.el.
30
31 * gnus-registry.el: Require gnus-util.
32 Use `gnus-alist-to-hashtable' and `gnus-hashtable-to-alist'.
33
342006-10-04 Reiner Steib <Reiner.Steib@gmx.de>
35
36 * pop3.el (pop3-authentication-scheme): Clarify doc.
37 (pop3-movemail): Warn about pop3-leave-mail-on-server.
38
392006-10-04 Dave Love <fx@gnu.org>
40
41 * pop3.el (pop3-authentication-scheme): Add custom version.
42
432006-10-04 Jesper Harder <harder@ifa.au.dk>
44
45 * pop3.el (pop3-leave-mail-on-server): Don't quote nil in
46 doc string. Improve doc string.
47
482006-10-03 Katsumi Yamaoka <yamaoka@jpl.org>
49
50 * gnus-util.el (gnus-with-local-quit): New macro.
51
52 * gnus-demon.el (gnus-demon): Replace with-local-quit with it.
53
12006-09-28 Reiner Steib <Reiner.Steib@gmx.de> 542006-09-28 Reiner Steib <Reiner.Steib@gmx.de>
2 55
3 * gmm-utils.el (gmm): Adjust custom version. 56 * gmm-utils.el (gmm): Adjust custom version.
@@ -1273,7 +1326,7 @@
1273 as a buffer-local variable. This avoids creating truncated 1326 as a buffer-local variable. This avoids creating truncated
1274 dribble files as a result of a hang up, eg. 1327 dribble files as a result of a hang up, eg.
1275 1328
12762005-11-04 Ken Manheimer <ken.manheimer@gmail.com> 13292005-11-04 Ken Manheimer <ken.manheimer@gmail.com>
1277 1330
1278 * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region) 1331 * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
1279 (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) 1332 (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
@@ -4017,7 +4070,7 @@
4017 4070
4018 * gnus-sum.el (gnus-summary-insert-subject): Remove list identifiers. 4071 * gnus-sum.el (gnus-summary-insert-subject): Remove list identifiers.
4019 4072
40202004-09-03 Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp> (tiny change) 40732004-09-03 Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp> (tiny change)
4021 4074
4022 * spam-stat.el (spam-stat-reduce-size): Set spam-stat-dirty. 4075 * spam-stat.el (spam-stat-reduce-size): Set spam-stat-dirty.
4023 (spam-stat-save): Accept prefix argument. 4076 (spam-stat-save): Accept prefix argument.
@@ -4164,17 +4217,17 @@
4164 4217
4165 * gnus-sum.el (gnus-newsgroup-variables): Doc fix. 4218 * gnus-sum.el (gnus-newsgroup-variables): Doc fix.
4166 4219
41672004-08-26 YAGI Tatsuya <ynyaaa@ybb.ne.jp> (tiny change) 42202004-08-26 YAGI Tatsuya <ynyaaa@ybb.ne.jp> (tiny change)
4168 4221
4169 * gnus-art.el (gnus-article-next-page): Fix the way to find a real 4222 * gnus-art.el (gnus-article-next-page): Fix the way to find a real
4170 end-of-buffer. 4223 end-of-buffer.
4171 4224
41722004-08-26 Stefan Wiens <s.wi@gmx.net> (tiny change) 42252004-08-26 Stefan Wiens <s.wi@gmx.net> (tiny change)
4173 4226
4174 * gnus-sum.el (gnus-read-header): Don't remove a header for the 4227 * gnus-sum.el (gnus-read-header): Don't remove a header for the
4175 parent article of a sparse article in the thread hashtb. 4228 parent article of a sparse article in the thread hashtb.
4176 4229
41772004-08-26 David Hedbor <dhedbor@real.com> (tiny change) 42302004-08-26 David Hedbor <dhedbor@real.com> (tiny change)
4178 4231
4179 * nnmail.el (nnmail-split-lowercase-expanded): New user option. 4232 * nnmail.el (nnmail-split-lowercase-expanded): New user option.
4180 (nnmail-expand-newtext): Lowercase expanded entries if 4233 (nnmail-expand-newtext): Lowercase expanded entries if
@@ -4370,7 +4423,7 @@
4370 * gnus-msg.el (gnus-summary-followup-with-original): 4423 * gnus-msg.el (gnus-summary-followup-with-original):
4371 Document yanking of region when active. 4424 Document yanking of region when active.
4372 4425
43732004-04-13 Kevin Greiner <kgreiner@xpediantsolutions.com> 44262004-04-13 Kevin Greiner <kgreiner@xpediantsolutions.com>
4374 4427
4375 * gnus-agent.el: Merged 7.3 through 7.7 updates into branch. 4428 * gnus-agent.el: Merged 7.3 through 7.7 updates into branch.
4376 Revision 7.2 changes excluded to maintain compatibility with all 4429 Revision 7.2 changes excluded to maintain compatibility with all
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2
index e52c7ed072c..14b4c23c38a 100644
--- a/lisp/gnus/ChangeLog.2
+++ b/lisp/gnus/ChangeLog.2
@@ -1,4 +1,4 @@
12004-01-04 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 12004-01-04 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2 2
3 * gnus.el: Gnus v5.10.6 is released. 3 * gnus.el: Gnus v5.10.6 is released.
4 4
@@ -10,7 +10,7 @@
10 10
11 * gnus.el (gnus-version-number): Bump. 11 * gnus.el (gnus-version-number): Bump.
12 12
132004-01-04 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 132004-01-04 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
14 14
15 * gnus.el: Gnus v5.10.5 is released. 15 * gnus.el: Gnus v5.10.5 is released.
16 16
@@ -58,7 +58,7 @@
58 58
59 * gnus.el (gnus-version-number): Bump. 59 * gnus.el (gnus-version-number): Bump.
60 60
612004-01-03 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 612004-01-03 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
62 62
63 * gnus.el: Gnus v5.10.4 is released. 63 * gnus.el: Gnus v5.10.4 is released.
64 64
@@ -81,10 +81,9 @@
81 * gnus-nocem.el (gnus-nocem-enter-article): Use the real group 81 * gnus-nocem.el (gnus-nocem-enter-article): Use the real group
82 hashtb (tiny patch). 82 hashtb (tiny patch).
83 83
842004-01-02 Kai Grossjohann <kai@emptydomain.de> 842004-01-02 Michael Albinus <Michael.Albinus@alcatel.de>
85 85
86 * nnml.el (nnml-save-mail): Grok compressed articles. From 86 * nnml.el (nnml-save-mail): Grok compressed articles.
87 Michael Albinus <Michael.Albinus@alcatel.de>.
88 87
892004-01-02 Teodor Zlatanov <tzz@lifelogs.com> 882004-01-02 Teodor Zlatanov <tzz@lifelogs.com>
90 89
@@ -144,20 +143,16 @@
144 (gnus-summary-goto-article): Allow `%40'. 143 (gnus-summary-goto-article): Allow `%40'.
145 (gnus-summary-refer-article): Convert `%40' to `@'. 144 (gnus-summary-refer-article): Convert `%40' to `@'.
146 145
1472003-12-30 Simon Josefsson <jas@extundo.com> 1462003-12-30 Arne J,Ax(Brgensen <arne@arnested.dk>
148 147
149 * smime.el (smime-crl-check): New. 148 * smime.el (smime-crl-check): New.
150 (smime-verify-region): Use it. From Arne J,Ax(Brgensen 149 (smime-verify-region): Use it.
151 <arne@arnested.dk> in <87llpk9v5q.fsf@seamus.arnested.dk> (tiny
152 change).
153 150
1542003-12-30 Reiner Steib <Reiner.Steib@gmx.de> 1512003-12-30 Reiner Steib <Reiner.Steib@gmx.de>
155 152
156 * gnus-score.el (gnus-score-edit-file-at-point): Consider the 153 (gnus-score-find-trace): Use gnus-score-edit-file-at-point. Added
157 whole match element. From Karl Pfl,Ad(Bsterer <sigurd@12move.de>. 154 `f' and `t' commands, added quick help. With some suggestions
158 (gnus-score-find-trace): Use it. Added `f' and `t' commands, 155 from Karl Pfl,Ad(Bsterer <sigurd@12move.de>.
159 added quick help. With some suggestions from Karl Pfl,Ad(Bsterer
160 <sigurd@12move.de>.
161 156
162 * gnus-util.el (gnus-emacs-version): Added doc-string. 157 * gnus-util.el (gnus-emacs-version): Added doc-string.
163 158
@@ -165,6 +160,11 @@
165 (mml-attach-file): Use it. 160 (mml-attach-file): Use it.
166 (mml-preview): Added MIME preview to gnus-buffers. 161 (mml-preview): Added MIME preview to gnus-buffers.
167 162
1632003-12-30 Karl Pfl,Ad(Bsterer <sigurd@12move.de>
164
165 * gnus-score.el (gnus-score-edit-file-at-point): Consider the
166 whole match element.
167
1682003-12-30 Jesper Harder <harder@ifa.au.dk> 1682003-12-30 Jesper Harder <harder@ifa.au.dk>
169 169
170 * gnus-sum.el (gnus-summary-make-menu-bar): Add ellipses. 170 * gnus-sum.el (gnus-summary-make-menu-bar): Add ellipses.
@@ -179,7 +179,7 @@
179 (gnus-secondary-method-p): Extend servers to methods before comparing. 179 (gnus-secondary-method-p): Extend servers to methods before comparing.
180 (gnus-secondary-method-p): Revert. 180 (gnus-secondary-method-p): Revert.
181 181
1822003-12-30 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 1822003-12-30 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
183 183
184 * gnus.el: Gnus v5.10.3 is released. 184 * gnus.el: Gnus v5.10.3 is released.
185 185
@@ -189,7 +189,7 @@
189 Suggested by Steinar Bang <sb@dod.no>. 189 Suggested by Steinar Bang <sb@dod.no>.
190 (gnus-agent-auto-agentize-methods): Customize. 190 (gnus-agent-auto-agentize-methods): Customize.
191 191
1922003-12-29 Kevin Greiner <kgreiner@xpediantsolutions.com> 1922003-12-29 Kevin Greiner <kgreiner@xpediantsolutions.com>
193 * gnus.el (gnus-server-to-method): Fixed bug in 2003-12-22 193 * gnus.el (gnus-server-to-method): Fixed bug in 2003-12-22
194 check-in. 194 check-in.
195 195
@@ -210,10 +210,9 @@
210 * mml1991.el (mml1991-pgg-encrypt): Decode according to CTE before 210 * mml1991.el (mml1991-pgg-encrypt): Decode according to CTE before
211 encrypting. 211 encrypting.
212 212
2132003-12-28 Jesper Harder <harder@ifa.au.dk> 2132003-12-28 Ivan Boldyrev <boldyrev@uiggm.nsc.ru> (tiny change).
214 214
215 * mml1991.el (mml1991-pgg-sign): Use unibyte when re-encoding. 215 * mml1991.el (mml1991-pgg-sign): Use unibyte when re-encoding.
216 From Ivan Boldyrev <boldyrev@uiggm.nsc.ru> (tiny change).
217 216
2182003-12-26 Katsumi Yamaoka <yamaoka@jpl.org> 2172003-12-26 Katsumi Yamaoka <yamaoka@jpl.org>
219 218
@@ -243,7 +242,7 @@
243 * dgnushack.el (dgnushack-compile): Increase the value for 242 * dgnushack.el (dgnushack-compile): Increase the value for
244 max-specpdl-size when compiling Gnus with Emacs 20. 243 max-specpdl-size when compiling Gnus with Emacs 20.
245 244
2462003-12-22 Kevin Greiner <kgreiner@xpediantsolutions.com> 2452003-12-22 Kevin Greiner <kgreiner@xpediantsolutions.com>
247 * gnus-int.el (gnus-open-server): Fixed the server status such 246 * gnus-int.el (gnus-open-server): Fixed the server status such
248 that an agentized server, when opened offline, has a status of 247 that an agentized server, when opened offline, has a status of
249 offline. Also fixes bug whereby the agent's backend was called 248 offline. Also fixes bug whereby the agent's backend was called
@@ -268,7 +267,7 @@
268 * gnus-agent.el (gnus-agent-read-agentview): Use 267 * gnus-agent.el (gnus-agent-read-agentview): Use
269 car-less-than-car. 268 car-less-than-car.
270 269
2712003-12-20 Artem Chuprina <ran@ran.pp.ru> (tiny change) 2702003-12-20 Artem Chuprina <ran@ran.pp.ru> (tiny change)
272 271
273 * message.el (message-yank-buffer): Bind message-reply-buffer to 272 * message.el (message-yank-buffer): Bind message-reply-buffer to
274 a buffer rather than a string. 273 a buffer rather than a string.
@@ -379,7 +378,7 @@
379 378
380 * pgg.el (pgg-run-at-time): Ditto. 379 * pgg.el (pgg-run-at-time): Ditto.
381 380
3822003-12-11 Kevin Greiner <kgreiner@xpediantsolutions.com> 3812003-12-11 Kevin Greiner <kgreiner@xpediantsolutions.com>
383 382
384 * gnus-agent.el (gnus-agent-possibly-alter-active): New Function. 383 * gnus-agent.el (gnus-agent-possibly-alter-active): New Function.
385 (gnus-agent-regenerate-group): When necessary, alter the group's 384 (gnus-agent-regenerate-group): When necessary, alter the group's
@@ -401,17 +400,14 @@
401 400
402 * message.el (message-get-reply-headers): Narrow to headers. 401 * message.el (message-get-reply-headers): Narrow to headers.
403 402
4042003-12-10 Teodor Zlatanov <tzz@lifelogs.com> 4032003-12-10 L,Bu(Brentey K,Ba(Broly <lorentey@elte.hu>
405 404
406 * spam.el (spam-disable-spam-split-during-ham-respool): new 405 * spam.el (spam-disable-spam-split-during-ham-respool): New
407 variable. From lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) 406 variable.
408 (spam-ham-copy-or-move-routine): respect 407 (spam-ham-copy-or-move-routine): Respect
409 spam-disable-spam-split-during-ham-respool. From 408 spam-disable-spam-split-during-ham-respool.
410 lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly) 409 (spam-split-disabled): New variable.
411 (spam-split-disabled): new variable. From 410 (spam-split): Respect spam-split-disabled.
412 lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly)
413 (spam-split): respect spam-split-disabled. From
414 lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly)
415 411
4162003-12-10 Katsumi Yamaoka <yamaoka@jpl.org> 4122003-12-10 Katsumi Yamaoka <yamaoka@jpl.org>
417 413
@@ -427,19 +423,21 @@
427 input. 423 input.
428 (pgg-decode-armor-region): Don't parse packet if decoding fail. 424 (pgg-decode-armor-region): Don't parse packet if decoding fail.
429 425
4302003-12-09 Teodor Zlatanov <tzz@lifelogs.com> 4262003-12-09 L,Bu(Brentey K,Ba(Broly <lorentey@elte.hu>
431 427
432 * spam.el (spam-check-bogofilter): run in the correct buffer. 428 * spam.el (spam-check-bogofilter): run in the correct buffer.
433 From lorentey@elte.hu (L,Bu(Brentey K,Ba(Broly). 429
434 (spam-bogofilter-database-directory): correct customization 4302003-12-09 Xavier Maillard <zedek@gnu-rox.org>
435 group. From Xavier Maillard <zedek@gnu-rox.org>. 431
432 * spam.el (spam-bogofilter-database-directory): correct
433 customization group.
436 434
4372003-12-09 Per Abrahamsen <abraham@dina.kvl.dk> 4352003-12-09 Per Abrahamsen <abraham@dina.kvl.dk>
438 436
439 * nnmail.el (nnmail-lazy, nnmail-split-fancy): New widgets. 437 * nnmail.el (nnmail-lazy, nnmail-split-fancy): New widgets.
440 (nnmail-split-fancy): Use it. 438 (nnmail-split-fancy): Use it.
441 439
4422003-12-08 Joel Ray Holveck <joelh@piquan.org> (tiny change) 4402003-12-08 Joel Ray Holveck <joelh@piquan.org> (tiny change)
443 441
444 * gnus-sum.el (gnus-summary-save-parts-1): Consider the "name" 442 * gnus-sum.el (gnus-summary-save-parts-1): Consider the "name"
445 parameter of Content-Type. 443 parameter of Content-Type.
@@ -509,32 +507,32 @@
509 * gnus-util.el: Require alist and provide tm-view when compiling 507 * gnus-util.el: Require alist and provide tm-view when compiling
510 with XEmacs. 508 with XEmacs.
511 509
5122003-12-03 Steve Youngs <sryoungs@bigpond.net.au> 5102003-12-03 Jerry James <james@xemacs.org> (tiny change)
513 511
514 * gnus-xmas.el: Add autoloads for macros defined in gnus.el. 512 * gnus-xmas.el: Add autoloads for macros defined in gnus.el.
515 From Jerry James <james@xemacs.org>.
516 513
517 * gnus-util.el: Get rmail definitions when compiling. 514 * gnus-util.el: Get rmail definitions when compiling.
518 From Jerry James <james@xemacs.org>.
519 515
520 * dns.el: Require gnus-xmas at compile time instead of trying to 516 * dns.el: Require gnus-xmas at compile time instead of trying to
521 autoload `gnus-xmas-open-network-stream' because it wasn't picking 517 autoload `gnus-xmas-open-network-stream' because it wasn't picking
522 up the macro. 518 up the macro.
523 From Jerry James <james@xemacs.org>.
524 519
5252003-12-01 Kevin Greiner <kgreiner@xpediantsolutions.com> 5202003-12-01 Kevin Greiner <kgreiner@xpediantsolutions.com>
521
526 * gnus-agent.el (gnus-agent-consider-all-articles): Updated 522 * gnus-agent.el (gnus-agent-consider-all-articles): Updated
527 docstring. 523 docstring.
528 (gnus-predicate-implies-unread, gnus-predicate-implies-unread-1): 524 (gnus-predicate-implies-unread, gnus-predicate-implies-unread-1):
529 Fixed implementation such that the predicate `true' no longer 525 Fixed implementation such that the predicate `true' no longer
530 evaluates to t. 526 evaluates to t.
531 527
5322003-12-01 Teodor Zlatanov <tzz@lifelogs.com> 5282003-12-01 Adrian Lanz <lanz@fowi.ethz.ch> (tiny change)
533 529
534 * spam.el (spam-check-bogofilter): check the bogofilter headers 530 * spam.el (spam-check-bogofilter): check the bogofilter headers
535 AFTER the save-excursion scope is over. From Adrian Lanz 531 AFTER the save-excursion scope is over.
536 <lanz@fowi.ethz.ch>. 532
537 (spam-fetch-field-message-id-fast): doc fix 5332003-12-01 Teodor Zlatanov <tzz@lifelogs.com>
534
535 * spam.el (spam-fetch-field-message-id-fast): Doc fix
538 536
5392003-12-01 Simon Josefsson <jas@extundo.com> 5372003-12-01 Simon Josefsson <jas@extundo.com>
540 538
@@ -549,24 +547,26 @@
549 (gnus-agent-expire-group-1): Only print a message for an article 547 (gnus-agent-expire-group-1): Only print a message for an article
550 when there actually was something done to it. 548 when there actually was something done to it.
551 549
550 * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Custom fix.
551
5522003-11-30 Kenichi Handa <handa@m17n.org>
553
552 * mm-util.el (mm-enable-multibyte): Call set-buffer-multibyte with 554 * mm-util.el (mm-enable-multibyte): Call set-buffer-multibyte with
553 'to argument. Fixes something or other in Emacs 22, and is 555 'to argument. Fixes something or other in Emacs 22, and is
554 backwards compatible. From Kenichi Handa <handa@m17n.org>. 556 backwards compatible.
555
556 * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Custom fix.
557 557
5582003-11-30 Lars Magne Ingebrigtsen <larsi@gnus.org> 5582003-11-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
559 559
560 * gnus-agent.el (gnus-agent-covered-methods): Remove nil methods. 560 * gnus-agent.el (gnus-agent-covered-methods): Remove nil methods.
561 561
5622003-11-29 Kevin Greiner <kgreiner@xpediantsolutions.com> 5622003-11-29 Kevin Greiner <kgreiner@xpediantsolutions.com>
563 * gnus-start.el (gnus-activate-group): The active range of the 563 * gnus-start.el (gnus-activate-group): The active range of the
564 group must include the articles known to the agent. 564 group must include the articles known to the agent.
565 565
566 * gnus.el (gnus-agent-method-p): Accept a server name as the 566 * gnus.el (gnus-agent-method-p): Accept a server name as the
567 method being tested. 567 method being tested.
568 568
5692003-11-29 Alexander Kreuzer <alex@freesources.org> (tiny change) 5692003-11-29 Alexander Kreuzer <alex@freesources.org> (tiny change)
570 570
571 * nnrss.el (nnrss-check-group): Set xml when nnrss-use-local is t. 571 * nnrss.el (nnrss-check-group): Set xml when nnrss-use-local is t.
572 572
@@ -669,7 +669,7 @@
669 669
670 * dgnushack.el (mapc): Add the compiler macro for Emacs 20. 670 * dgnushack.el (mapc): Add the compiler macro for Emacs 20.
671 671
6722003-11-24 Kevin Greiner <kgreiner@xpediantsolutions.com> 6722003-11-24 Kevin Greiner <kgreiner@xpediantsolutions.com>
673 * gnus-srvr.el (gnus-server-insert-server-line): The server names 673 * gnus-srvr.el (gnus-server-insert-server-line): The server names
674 used in gnus-agent are different (for example, the native server 674 used in gnus-agent are different (for example, the native server
675 uses the alias "native") from the names in gnus-srvr. 675 uses the alias "native") from the names in gnus-srvr.
@@ -681,7 +681,7 @@
681 new gnus-server-named-server function to get gnus-agent compatible 681 new gnus-server-named-server function to get gnus-agent compatible
682 names from the server buffer. 682 names from the server buffer.
683 683
6842003-11-20 Kevin Greiner <kgreiner@xpediantsolutions.com> 6842003-11-20 Kevin Greiner <kgreiner@xpediantsolutions.com>
685 685
686 * gnus.el (gnus-agent-covered-methods): Documented use of 686 * gnus.el (gnus-agent-covered-methods): Documented use of
687 named servers, not methods, to identity agentized groups. 687 named servers, not methods, to identity agentized groups.
@@ -762,12 +762,12 @@
762 * gnus-score.el (gnus-decay-score): Return a surely smaller value 762 * gnus-score.el (gnus-decay-score): Return a surely smaller value
763 than the argument in XEmacs. 763 than the argument in XEmacs.
764 764
7652003-11-18 Reiner Steib <Reiner.Steib@gmx.de> 7652003-11-18 Sam Steingold <sds@gnu.org>
766 766
767 * message.el (message-insert-to): Don't use `gnus-message'. 767 * message.el (message-insert-to): Don't use `gnus-message'.
768 (message-header-synonyms): New variable. 768 (message-header-synonyms): New variable.
769 (message-carefully-insert-headers): Use it (check for synonyms). 769 (message-carefully-insert-headers): Use it (check for synonyms).
770 Added doc-string. From Sam Steingold <sds@gnu.org>. 770 Added doc-string.
771 771
7722003-11-17 Lars Magne Ingebrigtsen <larsi@gnus.org> 7722003-11-17 Lars Magne Ingebrigtsen <larsi@gnus.org>
773 773
@@ -848,13 +848,16 @@
848 848
8492003-11-10 Reiner Steib <Reiner.Steib@gmx.de> 8492003-11-10 Reiner Steib <Reiner.Steib@gmx.de>
850 850
851 * message.el (message-insert-to): Do error out when the user 851 * message.el (message-mode-field-menu): Moved some entries, added
852 requested no Cc. Don't insert empty To. Can be added to
853 `message-setup-hook' now. From Sam Steingold <sds@gnu.org>.
854 (message-mode-field-menu): Moved some entries, added
855 `message-insert-wide-reply'. 852 `message-insert-wide-reply'.
856 (message-change-subject): Fixed comment. 853 (message-change-subject): Fixed comment.
857 854
8552003-11-10 Sam Steingold <sds@gnu.org>
856
857 * message.el (message-insert-to): Do error out when the user
858 requested no Cc. Don't insert empty To. Can be added to
859 `message-setup-hook' now.
860
8582003-11-10 Simon Josefsson <jas@extundo.com> 8612003-11-10 Simon Josefsson <jas@extundo.com>
859 862
860 * pgg-def.el (pgg-encrypt-for-me): Change default from nil to t. 863 * pgg-def.el (pgg-encrypt-for-me): Change default from nil to t.
@@ -870,7 +873,7 @@
870 * pgg-gpg.el (pgg-gpg-all-secret-keys): New variable. 873 * pgg-gpg.el (pgg-gpg-all-secret-keys): New variable.
871 (pgg-gpg-lookup-all-secret-keys): New function. 874 (pgg-gpg-lookup-all-secret-keys): New function.
872 (pgg-gpg-select-matching-key): Likewise. 875 (pgg-gpg-select-matching-key): Likewise.
873 (pgg-gpg-decrypt-region): Use new functions. 876 (pgg-gpg-decrypt-region): Use new functions.
874 877
8752003-11-07 Teodor Zlatanov <tzz@lifelogs.com> 8782003-11-07 Teodor Zlatanov <tzz@lifelogs.com>
876 879
@@ -1321,8 +1324,9 @@
1321 * gnus-sum.el (gnus-summary-respool-query): Don't narrow to head, 1324 * gnus-sum.el (gnus-summary-respool-query): Don't narrow to head,
1322 it's done by nnmail-article-group. 1325 it's done by nnmail-article-group.
1323 1326
13272003-10-12 Mark Hood <markhood@speakeasy.net> (tiny change)
1328
1324 * gnus-uu.el (gnus-uu-grab-articles): Fix misplaced parens. 1329 * gnus-uu.el (gnus-uu-grab-articles): Fix misplaced parens.
1325 From Mark Hood <markhood@speakeasy.net> (tiny change)
1326 1330
13272003-10-10 Jesper Harder <harder@ifa.au.dk> 13312003-10-10 Jesper Harder <harder@ifa.au.dk>
1328 1332
@@ -1386,10 +1390,10 @@
1386 1390
1387 * spam.el (spam-install-hooks-function): Added Autoload cookie. 1391 * spam.el (spam-install-hooks-function): Added Autoload cookie.
1388 1392
13892003-10-02 Jesper Harder <harder@ifa.au.dk> 13932003-10-02 Michael Shields <shields@msrl.com>
1390 1394
1391 * pgg-def.el (pgg-default-keyserver-address): Change to 1395 * pgg-def.el (pgg-default-keyserver-address): Change to
1392 subkeys.pgp.net. From Michael Shields <shields@msrl.com> 1396 subkeys.pgp.net.
1393 1397
13942003-10-01 Simon Josefsson <jas@extundo.com> 13982003-10-01 Simon Josefsson <jas@extundo.com>
1395 1399
@@ -1463,19 +1467,21 @@
1463 1467
1464 * gnus.el (gnus-group-charter-alist): Update. 1468 * gnus.el (gnus-group-charter-alist): Update.
1465 1469
14702003-09-10 Eric Knauel <knauel@informatik.uni-tuebingen.de>
1471
1472 * spam-report.el: Use mm-url.el functions for external URL loading
1473 when the built-in HTTP GET is insufficient (e.g. proxies are in
1474 the way).
1475
14662003-09-10 Teodor Zlatanov <tzz@lifelogs.com> 14762003-09-10 Teodor Zlatanov <tzz@lifelogs.com>
1467 1477
1468 * spam-report.el: use mm-url.el functions for external URL 1478 * spam-report.el (spam-report-url-ping-function): New option,
1469 loading when the built-in HTTP GET is insufficient (e.g. proxies 1479 defaults to the built-in HTTP GET (spam-report-url-ping-plain).
1470 are in the way). From Eric Knauel 1480 (spam-report-url-ping): Call spam-report-url-ping-function.
1471 <knauel@informatik.uni-tuebingen.de>. 1481 (spam-report-url-ping-plain): New function, does what
1472 (spam-report-url-ping-function): new option, defaults to the 1482 spam-report-url-ping used to do.
1473 built-in HTTP GET (spam-report-url-ping-plain) 1483 (spam-report-url-ping-mm-url): Function that delegates to
1474 (spam-report-url-ping): calls spam-report-url-ping-function now 1484 mm-url.el (autoloaded).
1475 (spam-report-url-ping-plain): new function, does what
1476 spam-report-url-ping used to do
1477 (spam-report-url-ping-mm-url): function that delegates to
1478 mm-url.el (autoloaded)
1479 1485
14802003-09-08 Teodor Zlatanov <tzz@lifelogs.com> 14862003-09-08 Teodor Zlatanov <tzz@lifelogs.com>
1481 1487
@@ -1576,12 +1582,11 @@
1576 (mml-insert-mime-headers): Use it. Based on (tiny) patch from 1582 (mml-insert-mime-headers): Use it. Based on (tiny) patch from
1577 Lars Balker Rasmussen <lars@balker.org>. 1583 Lars Balker Rasmussen <lars@balker.org>.
1578 1584
15792003-08-30 Simon Josefsson <jas@extundo.com> 15852003-08-30 Gaute Strokkenes <gs234@srcf.ucam.org> (tiny change)
1580 1586
1581 * mail-source.el (mail-source-fetch-imap): Pass correct buffer to 1587 * mail-source.el (mail-source-fetch-imap): Pass correct buffer to
1582 imap-open, reverts 2003-03-17 change. Reverse remove before 1588 imap-open, reverts 2003-03-17 change. Reverse remove before
1583 calling gnus-compress-sequence. From Gaute Strokkenes 1589 calling gnus-compress-sequence.
1584 <gs234@srcf.ucam.org> (tiny change).
1585 1590
15862003-08-29 Simon Josefsson <jas@extundo.com> 15912003-08-29 Simon Josefsson <jas@extundo.com>
1587 1592
@@ -1601,11 +1606,10 @@
1601 the files it may be using. Reported by David Coe 1606 the files it may be using. Reported by David Coe
1602 <davidc@debian.org>. 1607 <davidc@debian.org>.
1603 1608
16042003-08-27 Jesper Harder <harder@ifa.au.dk> 16092003-08-27 Vagn Johansen <v@johansen.mail.dk> (tiny change)
1605 1610
1606 * gnus-cache.el (gnus-cache-generate-active): Fix bug in 1611 * gnus-cache.el (gnus-cache-generate-active): Fix bug in
1607 replacement. From Vagn Johansen <v@johansen.mail.dk> (tiny 1612 replacement.
1608 change).
1609 1613
16102003-08-25 Katsumi Yamaoka <yamaoka@jpl.org> 16142003-08-25 Katsumi Yamaoka <yamaoka@jpl.org>
1611 1615
@@ -1711,10 +1715,9 @@
1711 * gnus.el (gnus-refer-article-method): Ditto. 1715 * gnus.el (gnus-refer-article-method): Ditto.
1712 * message.el (message-courtesy-message): Ditto. 1716 * message.el (message-courtesy-message): Ditto.
1713 1717
17142003-08-06 Jesper Harder <harder@ifa.au.dk> 17182003-08-06 Chunyu Wang <spr@db.cs.hit.edu.cn> (tiny patch)
1715 1719
1716 * gnus-art.el (gnus-header-face-alist): Fix "Newsgroups" entry. 1720 * gnus-art.el (gnus-header-face-alist): Fix "Newsgroups" entry.
1717 From Chunyu Wang <spr@db.cs.hit.edu.cn> (tiny patch)
1718 1721
17192003-08-05 Katsumi Yamaoka <yamaoka@jpl.org> 17222003-08-05 Katsumi Yamaoka <yamaoka@jpl.org>
1720 1723
@@ -1840,8 +1843,7 @@
1840 * imap.el (imap-arrival-filter): Fix test for missing process 1843 * imap.el (imap-arrival-filter): Fix test for missing process
1841 buffer. 1844 buffer.
1842 1845
18432003-07-09 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 18462003-07-09 Gaute B Strokkenes <gs234@cam.ac.uk> (tiny patch).
1844 From Gaute B Strokkenes <gs234@cam.ac.uk> (tiny patch).
1845 1847
1846 * imap.el (imap-wait-for-tag): Clarify comment. Use timeout zero 1848 * imap.el (imap-wait-for-tag): Clarify comment. Use timeout zero
1847 for second, after-process-has-died, accept-process-output. 1849 for second, after-process-has-died, accept-process-output.
@@ -1897,25 +1899,25 @@
1897 (message-canlock-generate) 1899 (message-canlock-generate)
1898 (message-generate-new-buffer-clone-locals): Docstring fixes. 1900 (message-generate-new-buffer-clone-locals): Docstring fixes.
1899 1901
19002003-07-07 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 19022003-07-07 Gaute B Strokkenes <gs234@cam.ac.uk> (tiny patch)
1901 1903
1902 * imap.el (imap-wait-for-tag): After the process has died, look 1904 * imap.el (imap-wait-for-tag): After the process has died, look
1903 for more output still pending. From Gaute B Strokkenes 1905 for more output still pending.
1904 <gs234@cam.ac.uk> (tiny patch).
1905 1906
19062003-07-07 Teodor Zlatanov <tzz@lifelogs.com> 19072003-07-07 Teodor Zlatanov <tzz@lifelogs.com>
1907 1908
1908 * spam.el (spam-bogofilter-score): redisplay article normally 1909 * spam.el (spam-bogofilter-score): redisplay article normally
1909 after spam-bogofilter-score is called 1910 after spam-bogofilter-score is called
1910 1911
19122003-07-06 Michael Piotrowski <mxp@dynalabs.de> (tiny change)
1913
1914 * gnus-sum.el (gnus-print-buffer): Apply emphasis.
1915
19112003-07-06 Jesper Harder <harder@ifa.au.dk> 19162003-07-06 Jesper Harder <harder@ifa.au.dk>
1912 1917
1913 * message.el (message-send-mail-with-sendmail): Handle 1918 * message.el (message-send-mail-with-sendmail): Handle
1914 non-numeric return values. 1919 non-numeric return values.
1915 1920
1916 * gnus-sum.el (gnus-print-buffer): Apply emphasis.
1917 From Michael Piotrowski <mxp@dynalabs.de> (tiny change).
1918
1919 * gnus-start.el (gnus-clear-system): Revert change from 1921 * gnus-start.el (gnus-clear-system): Revert change from
1920 2003-06-19. 1922 2003-06-19.
1921 1923
@@ -2012,11 +2014,13 @@
2012 2014
20132003-06-20 Jesper Harder <harder@ifa.au.dk> 20152003-06-20 Jesper Harder <harder@ifa.au.dk>
2014 2016
2015 * gnus-msg.el (gnus-configure-posting-styles): Remove unused
2016 variable. From Jan Rychter <jan@rychter.com>.
2017
2018 * spam.el (spam-spamoracle-learn): insert-string is obsolete. 2017 * spam.el (spam-spamoracle-learn): insert-string is obsolete.
2019 2018
20192003-06-20 Jan Rychter <jan@rychter.com>
2020
2021 * gnus-msg.el (gnus-configure-posting-styles): Remove unused
2022 variable.
2023
20202003-06-19 Teodor Zlatanov <tzz@lifelogs.com> 20242003-06-19 Teodor Zlatanov <tzz@lifelogs.com>
2021 2025
2022 * spam.el (spam-enter-list): do not enter duplicate addresses into 2026 * spam.el (spam-enter-list): do not enter duplicate addresses into
@@ -2049,11 +2053,10 @@
2049 * gnus-util.el (gnus-extract-address-components): Added 2053 * gnus-util.el (gnus-extract-address-components): Added
2050 doc-string. 2054 doc-string.
2051 2055
20522003-06-16 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 20562003-06-16 Michael Albinus <Michael.Albinus@alcatel.de>
2053 2057
2054 * nnml.el (nnml-current-group-article-to-file-alist): Don't read 2058 * nnml.el (nnml-current-group-article-to-file-alist): Don't read
2055 overview when using compressed files. From Michael Albinus 2059 overview when using compressed files.
2056 <Michael.Albinus@alcatel.de>.
2057 2060
20582003-06-16 Katsumi Yamaoka <yamaoka@jpl.org> 20612003-06-16 Katsumi Yamaoka <yamaoka@jpl.org>
2059 2062
@@ -2071,8 +2074,7 @@
2071 * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Bind 2074 * gnus-sum.el (gnus-summary-force-verify-and-decrypt): Bind
2072 `gnus-article-emulate-mime'. 2075 `gnus-article-emulate-mime'.
2073 2076
20742003-06-15 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 20772003-06-15 Tommi Vainikainen <thv+gnus@iki.fi>
2075 From Tommi Vainikainen <thv+gnus@iki.fi>.
2076 2078
2077 * message.el (message-is-yours-p): New function. Separated common 2079 * message.el (message-is-yours-p): New function. Separated common
2078 code from message-cancel-news and message-supersede. Added 2080 code from message-cancel-news and message-supersede. Added
@@ -2080,10 +2082,10 @@
2080 resort. 2082 resort.
2081 (message-cancel-news, message-supersede): Use message-is-yours-p. 2083 (message-cancel-news, message-supersede): Use message-is-yours-p.
2082 2084
20832003-06-13 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 20852003-06-13 Niklas Morberg <niklas.morberg@axis.com>
2084 2086
2085 * nnimap.el (nnimap-split-articles): Narrow the right buffer to 2087 * nnimap.el (nnimap-split-articles): Narrow the right buffer to
2086 the headers. From Niklas Morberg <niklas.morberg@axis.com>. 2088 the headers.
2087 2089
20882003-06-12 Dave Love <fx@gnu.org> 20902003-06-12 Dave Love <fx@gnu.org>
2089 2091
@@ -2100,9 +2102,7 @@
2100 * spam.el (spam-check-bogofilter-headers): fix for when the score 2102 * spam.el (spam-check-bogofilter-headers): fix for when the score
2101 is requested but the message is not spam 2103 is requested but the message is not spam
2102 2104
21032003-06-09 Teodor Zlatanov <tzz@lifelogs.com> 21052003-06-09 Eric Knauel <knauel@informatik.uni-tuebingen.de>
2104 From Eric
2105 <knauel@informatik.uni-tuebingen.de>
2106 2106
2107 * spam.el (spam-use-spamoracle): new variable 2107 * spam.el (spam-use-spamoracle): new variable
2108 (spam-install-hooks): add spamoracle to the list of conditions 2108 (spam-install-hooks): add spamoracle to the list of conditions
@@ -2145,8 +2145,7 @@
2145 * gnus-srvr.el (gnus-browse-foreign-server): Parse garbage NNTP 2145 * gnus-srvr.el (gnus-browse-foreign-server): Parse garbage NNTP
2146 groups correctly. 2146 groups correctly.
2147 2147
21482003-06-06 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 21482003-06-06 Benjamin Rutt <rutt+news@cis.ohio-state.edu>.
2149 From Benjamin Rutt <rutt+news@cis.ohio-state.edu>.
2150 2149
2151 * message.el (message-fetch-field): Augment documentation to state 2150 * message.el (message-fetch-field): Augment documentation to state
2152 the narrowed-to-headers restriction. 2151 the narrowed-to-headers restriction.
@@ -2172,11 +2171,9 @@
2172 * rfc2047.el (rfc2047-encode-region): Don't error out on invalid 2171 * rfc2047.el (rfc2047-encode-region): Don't error out on invalid
2173 strings. 2172 strings.
2174 2173
21752003-06-04 Jesper Harder <harder@ifa.au.dk> 21742003-06-04 Ivan Boldyrev <boldyrev+nospam@cgitftp.uiggm.nsc.ru> (tiny change)
2176 2175
2177 * mml1991.el (mml1991-pgg-sign): Insert pgg output as unibyte. 2176 * mml1991.el (mml1991-pgg-sign): Insert pgg output as unibyte.
2178 From: Ivan Boldyrev <boldyrev+nospam@cgitftp.uiggm.nsc.ru> (tiny
2179 change)
2180 2177
21812003-06-03 Dave Love <fx@gnu.org> 21782003-06-03 Dave Love <fx@gnu.org>
2182 2179
@@ -2203,11 +2200,10 @@
2203 * message.el (message-fetch-field): Mention narrow-to-headers 2200 * message.el (message-fetch-field): Mention narrow-to-headers
2204 requirement. 2201 requirement.
2205 2202
22062003-06-03 Jesper Harder <harder@ifa.au.dk> 22032003-06-03 Eric Eide <eeide@cs.utah.edu>
2207 2204
2208 * gnus-xmas.el (gnus-xmas-create-image): Use 2205 * gnus-xmas.el (gnus-xmas-create-image): Use
2209 insert-file-contents-literally. From: Eric Eide 2206 insert-file-contents-literally.
2210 <eeide@cs.utah.edu>
2211 2207
22122003-06-02 Teodor Zlatanov <tzz@lifelogs.com> 22082003-06-02 Teodor Zlatanov <tzz@lifelogs.com>
2213 2209
@@ -2312,7 +2308,7 @@
2312 2308
2313 * dgnushack.el (assq-delete-all): Removed the compiler macro. 2309 * dgnushack.el (assq-delete-all): Removed the compiler macro.
2314 2310
23152003-05-14 Kevin Greiner <kgreiner@xpediantsolutions.com> 23112003-05-14 Kevin Greiner <kgreiner@xpediantsolutions.com>
2316 2312
2317 * gnus-agent.el (gnus-agentize): Updated documentation to match 2313 * gnus-agent.el (gnus-agentize): Updated documentation to match
2318 usage. 2314 usage.
@@ -2325,7 +2321,7 @@
2325 2321
2326 * gnus.el (gnus-version-number): Bump. 2322 * gnus.el (gnus-version-number): Bump.
2327 2323
23282003-05-14 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 23242003-05-14 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2329 2325
2330 * gnus.el: Gnus v5.10.2 is released. 2326 * gnus.el: Gnus v5.10.2 is released.
2331 2327
@@ -2384,7 +2380,7 @@
2384 in message. Suggested by Yoichi NAKAYAMA <yoichi@geiin.org>. 2380 in message. Suggested by Yoichi NAKAYAMA <yoichi@geiin.org>.
2385 * pop3.el (pop3-movemail): Ditto. 2381 * pop3.el (pop3-movemail): Ditto.
2386 2382
23872003-05-12 Colin Marquardt <c.marquardt@alcatel.de> (tiny change) 23832003-05-12 Colin Marquardt <c.marquardt@alcatel.de> (tiny change)
2388 2384
2389 * gnus.el (gnus-agent): Docstring fix. 2385 * gnus.el (gnus-agent): Docstring fix.
2390 2386
@@ -2396,7 +2392,7 @@
2396 (gnus-registry-add-group): add a modification timestamp to each entry 2392 (gnus-registry-add-group): add a modification timestamp to each entry
2397 (gnus-registry-install-hooks): new function 2393 (gnus-registry-install-hooks): new function
2398 2394
23992003-05-12 Kevin Greiner <kgreiner@xpediantsolutions.com> 23952003-05-12 Kevin Greiner <kgreiner@xpediantsolutions.com>
2400 2396
2401 * gnus-agent.el (gnus-agent-cat-name): Eval macro while compiling. 2397 * gnus-agent.el (gnus-agent-cat-name): Eval macro while compiling.
2402 (gnus-agent-cat-disable-undownloaded-faces): New function. 2398 (gnus-agent-cat-disable-undownloaded-faces): New function.
@@ -2494,13 +2490,15 @@
2494 * gnus-registry.el (gnus-registry-cache-file): new file variable 2490 * gnus-registry.el (gnus-registry-cache-file): new file variable
2495 (gnus-registry-cache-read, gnus-registry-cache-save): new 2491 (gnus-registry-cache-read, gnus-registry-cache-save): new
2496 functions 2492 functions
2497 (gnus-registry-cache-whitespace): new function. From Dan
2498 Christensen <jdc@chow.mat.jhu.edu>
2499 (gnus-registry-save, gnus-registry-read): use the new 2493 (gnus-registry-save, gnus-registry-read): use the new
2500 gnus-registry-cache-{read|save} functions, and change the name 2494 gnus-registry-cache-{read|save} functions, and change the name
2501 from gnus-registry-translate-{from|to}-alist 2495 from gnus-registry-translate-{from|to}-alist
2502 (gnus-registry-clear): fixed so it doesn't refer to old function name 2496 (gnus-registry-clear): fixed so it doesn't refer to old function name
2503 2497
24982003-05-09 Dan Christensen <jdc@chow.mat.jhu.edu>
2499
2500 * gnus-registry.el (gnus-registry-cache-whitespace): new function.
2501
25042003-05-09 Jesper Harder <harder@ifa.au.dk> 25022003-05-09 Jesper Harder <harder@ifa.au.dk>
2505 2503
2506 * gnus-picon.el (gnus-picon-transform-address): Parse the encoded 2504 * gnus-picon.el (gnus-picon-transform-address): Parse the encoded
@@ -2515,8 +2513,9 @@
2515 nnmail-split-fancy-with-parent-ignore-groups can be a single regex 2513 nnmail-split-fancy-with-parent-ignore-groups can be a single regex
2516 in addition to a list of regexes. 2514 in addition to a list of regexes.
2517 2515
2518 * spam.el (spam-use-regex-headers): docstring fix. From Niklas 25162003-05-08 Niklas Morberg <niklas.morberg@axis.com>
2519 Morberg <niklas.morberg@axis.com> 2517
2518 * spam.el (spam-use-regex-headers): docstring fix.
2520 2519
25212003-05-08 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 25202003-05-08 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
2522 2521
@@ -2587,7 +2586,7 @@
2587 * mm-bodies.el (mm-decode-coding-region-safely): Remove. 2586 * mm-bodies.el (mm-decode-coding-region-safely): Remove.
2588 (mm-decode-body): Don't use mm-decode-coding-region-safely. 2587 (mm-decode-body): Don't use mm-decode-coding-region-safely.
2589 2588
25902003-05-03 Vasily Korytov <deskpot@despammed.com> (tiny change) 25892003-05-03 Vasily Korytov <deskpot@despammed.com> (tiny change)
2591 2590
2592 * gnus-util.el (gnus-multiple-choice): Add ", ?". 2591 * gnus-util.el (gnus-multiple-choice): Add ", ?".
2593 2592
@@ -2704,13 +2703,13 @@
2704 2703
2705 * gnus.el (gnus-version-number): Bump. 2704 * gnus.el (gnus-version-number): Bump.
2706 2705
27072003-05-01 Teodor Zlatanov <tzz@lifelogs.com> 27062003-05-01 Jon Ericson <Jon.Ericson@jpl.nasa.gov> (tiny change)
2708 2707
2709 * spam-report.el (spam-report-gmane-regex): docstring fix. From 2708 * spam-report.el (spam-report-gmane-regex): docstring fix.
2710 Jon Ericson <Jon.Ericson@jpl.nasa.gov> (tiny change)
2711 2709
2712 * gnus.el (gnus-install-group-spam-parameters): docstring fix. 2710 * gnus.el (gnus-install-group-spam-parameters): docstring fix.
2713 From Jon Ericson <Jon.Ericson@jpl.nasa.gov> (tiny change) 2711
27122003-05-01 Teodor Zlatanov <tzz@lifelogs.com>
2714 2713
2715 * gnus-registry.el (gnus-registry-fetch-extra) 2714 * gnus-registry.el (gnus-registry-fetch-extra)
2716 (gnus-registry-store-extra, gnus-registry-group-count): new functions 2715 (gnus-registry-store-extra, gnus-registry-group-count): new functions
@@ -2718,11 +2717,11 @@
2718 (gnus-registry-add-group): changed to work with extra data element 2717 (gnus-registry-add-group): changed to work with extra data element
2719 if present 2718 if present
2720 2719
27212003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 27202003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2722 2721
2723 * gnus.el: Gnus v5.10.1 is released. 2722 * gnus.el: Gnus v5.10.1 is released.
2724 2723
27252003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 27242003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2726 2725
2727 * gnus.el: Oort Gnus v0.24 is released. 2726 * gnus.el: Oort Gnus v0.24 is released.
2728 2727
@@ -2741,7 +2740,7 @@
2741 2740
2742 * gnus.el: Update copyright for several files. 2741 * gnus.el: Update copyright for several files.
2743 2742
27442003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 27432003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2745 2744
2746 * gnus.el: Oort Gnus v0.23 is released. 2745 * gnus.el: Oort Gnus v0.23 is released.
2747 2746
@@ -2749,7 +2748,7 @@
2749 2748
2750 * spam-stat.el (spam-stat-test-directory): Compare against zero. 2749 * spam-stat.el (spam-stat-test-directory): Compare against zero.
2751 2750
27522003-05-01 Trey Jackson <tjackson@ichips.intel.com> (tiny change) 27512003-05-01 Trey Jackson <tjackson@ichips.intel.com> (tiny change)
2753 2752
2754 * spam-stat.el (spam-stat-test-directory): Skip 0 length files. 2753 * spam-stat.el (spam-stat-test-directory): Skip 0 length files.
2755 2754
@@ -2766,11 +2765,11 @@
2766 2765
2767 * gnus.el (gnus-version-number): Bump. 2766 * gnus.el (gnus-version-number): Bump.
2768 2767
27692003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 27682003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2770 2769
2771 * gnus.el: Oort Gnus v0.22 is released. 2770 * gnus.el: Oort Gnus v0.22 is released.
2772 2771
27732003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 27722003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2774 2773
2775 * gnus.el: Oort Gnus v0.21 is released. 2774 * gnus.el: Oort Gnus v0.21 is released.
2776 2775
@@ -2778,7 +2777,7 @@
2778 2777
2779 * gnus.el (gnus-version-number): Bump. 2778 * gnus.el (gnus-version-number): Bump.
2780 2779
27812003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 27802003-05-01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2782 2781
2783 * gnus.el: Oort Gnus v0.20 is released. 2782 * gnus.el: Oort Gnus v0.20 is released.
2784 2783
@@ -2871,7 +2870,7 @@
2871 * mm-util.el (mm-charset-to-coding-system): Use user specified 2870 * mm-util.el (mm-charset-to-coding-system): Use user specified
2872 charset unless coding-system-get is fboundp. 2871 charset unless coding-system-get is fboundp.
2873 2872
28742003-04-30 Kevin Greiner <kgreiner@xpediantsolutions.com> 28732003-04-30 Kevin Greiner <kgreiner@xpediantsolutions.com>
2875 2874
2876 * gnus-agent.el (gnus-agent-cat-defaccessor, gnus-agent-cat-name): 2875 * gnus-agent.el (gnus-agent-cat-defaccessor, gnus-agent-cat-name):
2877 Wrapped in eval-when-compile. 2876 Wrapped in eval-when-compile.
@@ -2977,7 +2976,7 @@
2977 (gnus-mime-display-multipart-related-as-mixed): Added doc-strings, 2976 (gnus-mime-display-multipart-related-as-mixed): Added doc-strings,
2978 allow customization. 2977 allow customization.
2979 2978
29802003-04-27 Kevin Greiner <kgreiner@xpediantsolutions.com> 29792003-04-27 Kevin Greiner <kgreiner@xpediantsolutions.com>
2981 2980
2982 * dgnushack.el (dgnushack-compile-verbosely): New function. Not 2981 * dgnushack.el (dgnushack-compile-verbosely): New function. Not
2983 currently called (See source for explanation). 2982 currently called (See source for explanation).
@@ -2990,11 +2989,11 @@
2990 2989
2991 * gnus.el (gnus-version-number): Bump. 2990 * gnus.el (gnus-version-number): Bump.
2992 2991
29932003-04-27 06:47:31 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 29922003-04-27 06:47:31 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
2994 2993
2995 * gnus.el: Oort Gnus v0.19 is released. 2994 * gnus.el: Oort Gnus v0.19 is released.
2996 2995
29972003-04-27 Kevin Greiner <kgreiner@xpediantsolutions.com> 29962003-04-27 Kevin Greiner <kgreiner@xpediantsolutions.com>
2998 2997
2999 * gnus-registry.el (gnus-register-spool-action): Replaced literal 2998 * gnus-registry.el (gnus-register-spool-action): Replaced literal
3000 carriage-return character with its escape sequence. 2999 carriage-return character with its escape sequence.
@@ -3140,11 +3139,10 @@
3140 3139
3141 * smime.el (smime-decrypt-region): Insert From header. 3140 * smime.el (smime-decrypt-region): Insert From header.
3142 3141
31432003-04-21 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 31422003-04-21 Gaute B Strokkenes <gs234@cam.ac.uk> (tiny change)
3144 3143
3145 * gnus-fun.el (gnus-face-from-file, gnus-convert-png-to-face): 3144 * gnus-fun.el (gnus-face-from-file, gnus-convert-png-to-face):
3146 Max length of header is 726, not 740. From Gaute B Strokkenes 3145 Max length of header is 726, not 740.
3147 <gs234@cam.ac.uk>.
3148 3146
31492003-04-20 Jesper Harder <harder@ifa.au.dk> 31472003-04-20 Jesper Harder <harder@ifa.au.dk>
3150 3148
@@ -3269,7 +3267,7 @@
3269 (spam-summary-prepare-exit): check the report-gmane spam processor 3267 (spam-summary-prepare-exit): check the report-gmane spam processor
3270 and run spam-report-gmane-register-routine if it's active 3268 and run spam-report-gmane-register-routine if it's active
3271 3269
3272 From John Wiegley <johnw@gnu.org> 32702003-04-16 John Wiegley <johnw@gnu.org>
3273 3271
3274 * spam.el (spam-bogofilter-score): check bogofilter headers before 3272 * spam.el (spam-bogofilter-score): check bogofilter headers before
3275 checking bogofilter itself 3273 checking bogofilter itself
@@ -3302,7 +3300,7 @@
3302 * nndiary.el (nndiary-compute-reminders): Don't use setf with 3300 * nndiary.el (nndiary-compute-reminders): Don't use setf with
3303 nthcdr. 3301 nthcdr.
3304 3302
33052003-04-16 Kevin Greiner <kgreiner@xpediantsolutions.com> 33032003-04-16 Kevin Greiner <kgreiner@xpediantsolutions.com>
3306 3304
3307 * gnus-agent.el (gnus-agent-make-cat): Added optional parameter to 3305 * gnus-agent.el (gnus-agent-make-cat): Added optional parameter to
3308 specify a predicate other than false. 3306 specify a predicate other than false.
@@ -3320,13 +3318,11 @@
3320 3318
3321 * spam.el (spam-split): added save-restriction to save-excursion 3319 * spam.el (spam-split): added save-restriction to save-excursion
3322 3320
33232003-04-15 Reiner Steib <Reiner.Steib@gmx.de> 33212003-04-15 Julien Avarre <julien@avarre.com>
3324 From Julien Avarre <julien@avarre.com>
3325 3322
3326 * gnus-fun.el: Fixed autoload cookie. 3323 * gnus-fun.el: Fixed autoload cookie.
3327 3324
33282003-04-15 Paul Jarc <prj@po.cwru.edu> 33252003-04-15 Remi Letot <remi.letot@easynet.be>
3329 From Remi Letot <remi.letot@easynet.be>
3330 3326
3331 * nnmaildir.el (nnmaildir-request-scan): Use gnus-remove-if 3327 * nnmaildir.el (nnmaildir-request-scan): Use gnus-remove-if
3332 instead of remove-if. 3328 instead of remove-if.
@@ -3380,7 +3376,7 @@
3380 3376
3381 * gnus.el (gnus-group-prefixed-name): Clean up. 3377 * gnus.el (gnus-group-prefixed-name): Clean up.
3382 3378
33832003-04-13 Kevin Greiner <kgreiner@xpediantsolutions.com> 33792003-04-13 Kevin Greiner <kgreiner@xpediantsolutions.com>
3384 3380
3385 * gnus-agent.el (gnus-agent-group-pathname): Bind 3381 * gnus-agent.el (gnus-agent-group-pathname): Bind
3386 gnus-command-method so that gnus-agent-directory will always 3382 gnus-command-method so that gnus-agent-directory will always
@@ -3396,7 +3392,7 @@
3396 3392
3397 * gnus.el (gnus-version-number): Bump. 3393 * gnus.el (gnus-version-number): Bump.
3398 3394
33992003-04-13 01:12:01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 33952003-04-13 01:12:01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
3400 3396
3401 * gnus.el: Oort Gnus v0.18 is released. 3397 * gnus.el: Oort Gnus v0.18 is released.
3402 3398
@@ -3451,7 +3447,7 @@
3451 (mm-encode-body): Don't corrupt UTF-16. 3447 (mm-encode-body): Don't corrupt UTF-16.
3452 (mm-body-encoding): Pay attention to mm-body-charset-encoding-alist. 3448 (mm-body-encoding): Pay attention to mm-body-charset-encoding-alist.
3453 3449
34542003-04-10 Kevin Greiner <kgreiner@xpediantsolutions.com> 34502003-04-10 Kevin Greiner <kgreiner@xpediantsolutions.com>
3455 3451
3456 * gnus-agent.el (gnus-agent-get-undownloaded-list): Articles in 3452 * gnus-agent.el (gnus-agent-get-undownloaded-list): Articles in
3457 the CACHE are now detected and handled the same as an article 3453 the CACHE are now detected and handled the same as an article
@@ -3477,7 +3473,7 @@
3477 * gnus-sum.el (gnus-summary-make-menu-bar): Disable "Import file" 3473 * gnus-sum.el (gnus-summary-make-menu-bar): Disable "Import file"
3478 and "Create article" items in non-editable groups. 3474 and "Create article" items in non-editable groups.
3479 3475
34802003-04-09 Kevin Greiner <kgreiner@xpediantsolutions.com> 34762003-04-09 Kevin Greiner <kgreiner@xpediantsolutions.com>
3481 3477
3482 * gnus-agent.el (gnus-agent-write-active): Added option of 3478 * gnus-agent.el (gnus-agent-write-active): Added option of
3483 replacing, rather than updating, the agent's active file. Do NOT 3479 replacing, rather than updating, the agent's active file. Do NOT
@@ -3590,7 +3586,7 @@
3590 * gnus-sum.el: XEmacs doesn't support the 5th arg to 'load', so 3586 * gnus-sum.el: XEmacs doesn't support the 5th arg to 'load', so
3591 don't use it when loading gnus-sum.el if we're in XEmacs. 3587 don't use it when loading gnus-sum.el if we're in XEmacs.
3592 3588
35932003-04-05 Kevin Greiner <kgreiner@xpediantsolutions.com> 35892003-04-05 Kevin Greiner <kgreiner@xpediantsolutions.com>
3594 3590
3595 * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound 3591 * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound
3596 print-escape-nonascii to fix more characters in compiled format 3592 print-escape-nonascii to fix more characters in compiled format
@@ -3601,7 +3597,7 @@
3601 * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): 3597 * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player):
3602 Fix customization type. 3598 Fix customization type.
3603 3599
36042003-04-04 Kevin Greiner <kgreiner@xpediantsolutions.com> 36002003-04-04 Kevin Greiner <kgreiner@xpediantsolutions.com>
3605 3601
3606 * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound 3602 * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound
3607 print-quoted, print-readably, print-escape-multibyte, and 3603 print-quoted, print-readably, print-escape-multibyte, and
@@ -3661,7 +3657,7 @@
3661 * nntp.el (nntp-via-rlogin-command-switches): Doc fix. 3657 * nntp.el (nntp-via-rlogin-command-switches): Doc fix.
3662 (nntp-open-via-rlogin-and-telnet): Disable the telnet linemode. 3658 (nntp-open-via-rlogin-and-telnet): Disable the telnet linemode.
3663 3659
36642003-03-31 Kevin Greiner <kgreiner@xpediantsolutions.com> 36602003-03-31 Kevin Greiner <kgreiner@xpediantsolutions.com>
3665 3661
3666 * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound 3662 * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Bound
3667 print-escape-newlines to print escape sequences rather than 3663 print-escape-newlines to print escape sequences rather than
@@ -3684,7 +3680,7 @@
3684 3680
3685 * gnus.el (gnus-version-number): Bump. 3681 * gnus.el (gnus-version-number): Bump.
3686 3682
36872003-03-31 20:08:19 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 36832003-03-31 20:08:19 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
3688 3684
3689 * gnus.el: Oort Gnus v0.17 is released. 3685 * gnus.el: Oort Gnus v0.17 is released.
3690 3686
@@ -3767,20 +3763,24 @@
3767 (gnus-read-newsrc-el-file): call the gnus-read-newsrc-el-hook 3763 (gnus-read-newsrc-el-file): call the gnus-read-newsrc-el-hook
3768 3764
3769 * gnus-registry.el (gnus-registry-translate-to-alist) 3765 * gnus-registry.el (gnus-registry-translate-to-alist)
3770 (gnus-registry-translate-from-alist, alist-to-hashtable) 3766 (gnus-registry-translate-from-alist: new functions
3771 (hashtable-to-alist): new functions
3772 (gnus-register-spool-action): add a spool item to the registry 3767 (gnus-register-spool-action): add a spool item to the registry
3773 3768
3774 * gnus.el (gnus-variable-list): added gnus-registry-alist to the 3769 * gnus.el (gnus-variable-list): added gnus-registry-alist to the
3775 list of saved variables 3770 list of saved variables
3776 (gnus-registry-alist): new variable 3771 (gnus-registry-alist): new variable
3777 3772
37732003-03-28 Andreas Fuchs <asf@void.at>
3774
3775 * gnus-registry.el (alist-to-hashtable, hashtable-to-alist): New
3776 functions.
3777
37782003-03-27 Simon Josefsson <jas@extundo.com> 37782003-03-27 Simon Josefsson <jas@extundo.com>
3779 3779
3780 * gnus-art.el (article-decode-group-name): Be correct instead of 3780 * gnus-art.el (article-decode-group-name): Be correct instead of
3781 smart. 3781 smart.
3782 3782
37832003-03-27 Katsumi Yamaoka <yamaoka@jpl.org> 37832003-03-27 Katsumi Yamaoka <yamaoka@jpl.org>
3784 3784
3785 * lpath.el: Bind url-current-object for Emacs; bind 3785 * lpath.el: Bind url-current-object for Emacs; bind
3786 gnus-agent-expire-current-dirs for XEmacs; fbind open-ssl-stream 3786 gnus-agent-expire-current-dirs for XEmacs; fbind open-ssl-stream
@@ -3795,7 +3795,7 @@
3795 * gnus-msg.el (gnus-mailing-list-groups): Fix customize type and 3795 * gnus-msg.el (gnus-mailing-list-groups): Fix customize type and
3796 doc string. 3796 doc string.
3797 3797
37982003-03-26 Kevin Ryde <user42@zip.com.au> 37982003-03-26 Kevin Ryde <user42@zip.com.au>
3799 3799
3800 * gnus-sum.el (gnus-summary-find-for-reselect): Renamed from 3800 * gnus-sum.el (gnus-summary-find-for-reselect): Renamed from
3801 gnus-summary-find-uncancelled, skip temporary articles inserted by 3801 gnus-summary-find-uncancelled, skip temporary articles inserted by
@@ -3805,7 +3805,7 @@
3805 3805
3806 * smiley.el (smiley-buffer): New function. 3806 * smiley.el (smiley-buffer): New function.
3807 3807
38082003-03-26 Kevin Greiner <kgreiner@xpediantsolutions.com> 38082003-03-26 Kevin Greiner <kgreiner@xpediantsolutions.com>
3809 3809
3810 * gnus-agent.el (gnus-agent-fetch-selected-article): Replaced 3810 * gnus-agent.el (gnus-agent-fetch-selected-article): Replaced
3811 gnus-summary-update-line (which updated the article's face) with 3811 gnus-summary-update-line (which updated the article's face) with
@@ -3813,7 +3813,7 @@
3813 face by calling gnus-summary-update-line AND updates the download 3813 face by calling gnus-summary-update-line AND updates the download
3814 mark to show that the article was fetched). 3814 mark to show that the article was fetched).
3815 3815
38162003-03-23 Kevin Greiner <kgreiner@xpediantsolutions.com> 38162003-03-23 Kevin Greiner <kgreiner@xpediantsolutions.com>
3817 3817
3818 * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Provides 3818 * gnus-agent.el (gnus-agent-expire-unagentized-dirs): Provides
3819 option of deleting agent directories for groups/servers that are 3819 option of deleting agent directories for groups/servers that are
@@ -3878,7 +3878,7 @@
3878 * gnus-art.el (gnus-treat-display-xface): Don't enable if 3878 * gnus-art.el (gnus-treat-display-xface): Don't enable if
3879 icontopbm isn't available. 3879 icontopbm isn't available.
3880 3880
38812003-03-21 Kevin Greiner <kgreiner@xpediantsolutions.com> 38812003-03-21 Kevin Greiner <kgreiner@xpediantsolutions.com>
3882 3882
3883 * gnus-int.el (gnus-open-server): Catch errors in backend's 3883 * gnus-int.el (gnus-open-server): Catch errors in backend's
3884 open-server method. Returns nil rather than crashing startup. 3884 open-server method. Returns nil rather than crashing startup.
@@ -3905,7 +3905,7 @@
3905 * message.el (message-split-line): New function. 3905 * message.el (message-split-line): New function.
3906 (message-mode-map): Remap split-line to message-split-line. 3906 (message-mode-map): Remap split-line to message-split-line.
3907 3907
39082003-03-20 Katsumi Yamaoka <yamaoka@jpl.org> 39082003-03-20 Katsumi Yamaoka <yamaoka@jpl.org>
3909 3909
3910 * message.el (message-make-overlay): Defalias it to make-overlay. 3910 * message.el (message-make-overlay): Defalias it to make-overlay.
3911 (message-delete-overlay): Defalias it to delete-overlay. 3911 (message-delete-overlay): Defalias it to delete-overlay.
@@ -3929,7 +3929,7 @@
3929 * nnrss.el (nnrss-fetch): Fetch the local stuff. 3929 * nnrss.el (nnrss-fetch): Fetch the local stuff.
3930 (nnrss-check-group): Use it. 3930 (nnrss-check-group): Use it.
3931 3931
39322003-03-20 Mark A. Hershberger <mah@everybody.org> 39322003-03-20 Mark A. Hershberger <mah@everybody.org>
3933 3933
3934 * nnrss.el: Primitive XML Name-space support. This means that RSS 3934 * nnrss.el: Primitive XML Name-space support. This means that RSS
3935 feeds like Kevin Burton's[1] can now be read in Gnus. 3935 feeds like Kevin Burton's[1] can now be read in Gnus.
@@ -3956,7 +3956,7 @@
3956 3956
3957 * gnus-group.el (gnus-group-make-rss-group): New function. 3957 * gnus-group.el (gnus-group-make-rss-group): New function.
3958 3958
39592003-03-20 Katsumi Yamaoka <yamaoka@jpl.org> 39592003-03-20 Katsumi Yamaoka <yamaoka@jpl.org>
3960 3960
3961 * message.el (message-idna-to-ascii-rhs-1): Don't use replace-* 3961 * message.el (message-idna-to-ascii-rhs-1): Don't use replace-*
3962 for highlight overlays. 3962 for highlight overlays.
@@ -4053,7 +4053,7 @@
4053 4053
4054 * gnus.el (gnus-version-number): Bump. 4054 * gnus.el (gnus-version-number): Bump.
4055 4055
40562003-03-18 00:38:22 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 40562003-03-18 00:38:22 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
4057 4057
4058 * gnus.el: Oort Gnus v0.16 is released. 4058 * gnus.el: Oort Gnus v0.16 is released.
4059 4059
@@ -4533,7 +4533,7 @@
4533 4533
4534 * message.el (message-make-fqdn): Protect against nil user-mail. 4534 * message.el (message-make-fqdn): Protect against nil user-mail.
4535 4535
45362003-02-28 Vasily Korytov <deskpot@myrealbox.com> 45362003-02-28 Vasily Korytov <deskpot@myrealbox.com>
4537 4537
4538 * gnus-art.el (gnus-boring-article-headers): New values: 4538 * gnus-art.el (gnus-boring-article-headers): New values:
4539 'to-list and 'cc-list. 4539 'to-list and 'cc-list.
@@ -4615,10 +4615,11 @@
4615 4615
4616 * gnus-start.el (gnus-backup-startup-file): Fixed custom type. 4616 * gnus-start.el (gnus-backup-startup-file): Fixed custom type.
4617 4617
46182003-02-24 Ted Zlatanov <tzz@lifelogs.com> 46182003-02-24 Ted Zlatanov <tzz@lifelogs.com>
4619
4619 * spam.el: disabled spam-get-article-as-filename 4620 * spam.el: disabled spam-get-article-as-filename
4620 4621
4621 From Michael Shields <shields@msrl.com> 46222003-02-24 Michael Shields <shields@msrl.com>
4622 4623
4623 * gnus-group.el (gnus-group-is-exiting-without-update-p): New. 4624 * gnus-group.el (gnus-group-is-exiting-without-update-p): New.
4624 * gnus-sum.el (gnus-summary-exit-no-update): Use it. 4625 * gnus-sum.el (gnus-summary-exit-no-update): Use it.
@@ -4632,8 +4633,7 @@
4632 no spam. 4633 no spam.
4633 * spam.el (spam-ham-move-routine): New `copy' argument. 4634 * spam.el (spam-ham-move-routine): New `copy' argument.
4634 4635
46352003-02-24 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de> 46362003-02-24 Martin Thornquist <martint@ifi.uio.no>
4636 From Martin Thornquist <martint@ifi.uio.no>
4637 4637
4638 * gnus-topic.el (gnus-topic-select-group): Select last group if 4638 * gnus-topic.el (gnus-topic-select-group): Select last group if
4639 after last group. 4639 after last group.
@@ -4750,16 +4750,19 @@
4750 * gnus-start.el (gnus-get-unread-articles-in-group): Make sure 4750 * gnus-start.el (gnus-get-unread-articles-in-group): Make sure
4751 the entry for the group exists before we alter it. 4751 the entry for the group exists before we alter it.
4752 4752
47532003-02-22 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de> 47532003-02-22 David S Goldberg <david.goldberg6@verizon.net> (tiny change)
4754 4754
4755 * message.el (message-mode): MML tags separate paragraphs. Small 4755 * message.el (message-mode): MML tags separate paragraphs.
4756 change from David S Goldberg <david.goldberg6@verizon.net>. 4756
47572003-02-22 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de>
4757 4758
4758 * gnus-agent.el (gnus-agent-get-undownloaded-list): Sort 4759 * gnus-agent.el (gnus-agent-get-undownloaded-list): Sort
4759 `gnus-newsgroup-headers'. 4760 `gnus-newsgroup-headers'.
4760 4761
47622003-02-22 Karl Pfl,Ad(Bsterer <sigurd@12move.de>
4763
4761 * gnus-art.el (gnus-article-refer-article): Grok more message id 4764 * gnus-art.el (gnus-article-refer-article): Grok more message id
4762 formats. From Karl Pfl,Ad(Bsterer <sigurd@12move.de>. 4765 formats.
4763 4766
47642003-02-22 Jesper Harder <harder@ifa.au.dk> 47672003-02-22 Jesper Harder <harder@ifa.au.dk>
4765 4768
@@ -4776,8 +4779,7 @@
4776 (gnus-register-spool-action): added hashtable of message ID keys 4779 (gnus-register-spool-action): added hashtable of message ID keys
4777 with message motion data 4780 with message motion data
4778 4781
47792003-02-21 Florian Weimer <fw@deneb.enyo.de> 47822003-02-21 Reiner Steib <Reiner.Steib@gmx.de>
4780 From Reiner Steib <Reiner.Steib@gmx.de>.
4781 4783
4782 * gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): New 4784 * gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): New
4783 variable, used in `gnus-button-mid-or-mail-heuristic'. 4785 variable, used in `gnus-button-mid-or-mail-heuristic'.
@@ -4907,11 +4909,11 @@
4907 (spam-mark-spam-as-expired-and-move-routine): made the article 4909 (spam-mark-spam-as-expired-and-move-routine): made the article
4908 move conditional, so it's not called even if there's nothing to move 4910 move conditional, so it's not called even if there's nothing to move
4909 4911
49102003-02-13 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de> 49122003-02-13 Kurt B. Kaiser <kbk@shore.net>
4911 4913
4912 * message.el (message-unix-mail-delimiter): Accept any whitespace 4914 * message.el (message-unix-mail-delimiter): Accept any whitespace
4913 after the email address and before the date; do not require the 4915 after the email address and before the date; do not require the
4914 space character. From Kurt B. Kaiser <kbk@shore.net>. 4916 space character.
4915 4917
49162003-02-13 Katsumi Yamaoka <yamaoka@jpl.org> 49182003-02-13 Katsumi Yamaoka <yamaoka@jpl.org>
4917 4919
@@ -5019,7 +5021,7 @@
5019 5021
5020 * gnus.el (gnus-version-number): Bumped. 5022 * gnus.el (gnus-version-number): Bumped.
5021 5023
50222003-02-08 23:23:27 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 50242003-02-08 23:23:27 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
5023 5025
5024 * gnus.el: Oort Gnus v0.15 is released. 5026 * gnus.el: Oort Gnus v0.15 is released.
5025 5027
@@ -5366,7 +5368,7 @@
5366 5368
5367 * gnus.el (gnus-version-number): Bumped. 5369 * gnus.el (gnus-version-number): Bumped.
5368 5370
53692003-01-24 20:32:44 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 53712003-01-24 20:32:44 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
5370 5372
5371 * gnus.el: Oort Gnus v0.14 is released. 5373 * gnus.el: Oort Gnus v0.14 is released.
5372 5374
@@ -5490,7 +5492,7 @@
5490 5492
5491 * gnus.el (gnus-version-number): Bumped version number. 5493 * gnus.el (gnus-version-number): Bumped version number.
5492 5494
54932003-01-21 07:15:41 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 54952003-01-21 07:15:41 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
5494 5496
5495 * gnus.el: Oort Gnus v0.13 is released. 5497 * gnus.el: Oort Gnus v0.13 is released.
5496 5498
@@ -5671,7 +5673,7 @@
5671 5673
5672 * gnus-audio.el (gnus-audio-au-player): Use executable-find. 5674 * gnus-audio.el (gnus-audio-au-player): Use executable-find.
5673 5675
56742003-01-13 Jhair Tocancipa Triana <jhair_tocancipa@@gmx.net> 56762003-01-13 Jhair Tocancipa Triana <jhair_tocancipa@@gmx.net>
5675 5677
5676 * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): Use 5678 * gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): Use
5677 /usr/bin/play as default player. 5679 /usr/bin/play as default player.
@@ -5753,7 +5755,7 @@
5753 * gnus.el (gnus-version-number): Bumped version. 5755 * gnus.el (gnus-version-number): Bumped version.
5754 (gnus-summary-line-format): Doc fix. 5756 (gnus-summary-line-format): Doc fix.
5755 5757
57562003-01-12 22:02:49 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 57582003-01-12 22:02:49 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
5757 5759
5758 * gnus.el: Oort Gnus v0.12 is released. 5760 * gnus.el: Oort Gnus v0.12 is released.
5759 5761
@@ -5800,7 +5802,7 @@
5800 5802
5801 * gnus.el (gnus-version-number): Bumped version number. 5803 * gnus.el (gnus-version-number): Bumped version number.
5802 5804
58032003-01-12 13:46:20 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 58052003-01-12 13:46:20 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
5804 5806
5805 * gnus.el: Oort Gnus v0.11 is released. 5807 * gnus.el: Oort Gnus v0.11 is released.
5806 5808
@@ -6276,7 +6278,7 @@
6276 6278
6277 * gnus.el (gnus-version-number): Bump version number. 6279 * gnus.el (gnus-version-number): Bump version number.
6278 6280
62792003-01-05 01:53:30 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 62812003-01-05 01:53:30 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
6280 6282
6281 * gnus.el: Oort Gnus v0.10 is released. 6283 * gnus.el: Oort Gnus v0.10 is released.
6282 6284
@@ -6284,7 +6286,7 @@
6284 6286
6285 * gnus.el (gnus-version-number): Fix version number. 6287 * gnus.el (gnus-version-number): Fix version number.
6286 6288
62872003-01-05 01:40:09 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 62892003-01-05 01:40:09 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
6288 6290
6289 * gnus.el: Oort Gnus v0.08 is released. 6291 * gnus.el: Oort Gnus v0.08 is released.
6290 6292
@@ -6788,11 +6790,10 @@
6788 6790
6789 * binhex.el (binhex-decoder-program): Fix docstring. 6791 * binhex.el (binhex-decoder-program): Fix docstring.
6790 6792
67912002-12-21 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de> 67932002-12-21 Laurent Martelli <laurent@bearteam.org>
6792 6794
6793 * mm-decode.el (mm-mailcap-command): Do not backslash-quote 6795 * mm-decode.el (mm-mailcap-command): Do not backslash-quote
6794 special chars if the mailcap file uses single quotes around %s. 6796 special chars if the mailcap file uses single quotes around %s.
6795 From Laurent Martelli <laurent@bearteam.org>.
6796 6797
67972002-12-19 Paul Jarc <prj@po.cwru.edu> 67982002-12-19 Paul Jarc <prj@po.cwru.edu>
6798 6799
@@ -6833,7 +6834,7 @@
6833 * nntp.el (nntp-with-open-group-first-pass): Do not wrap in 6834 * nntp.el (nntp-with-open-group-first-pass): Do not wrap in
6834 eval-when-compile. Suggested by Kevin Greiner. 6835 eval-when-compile. Suggested by Kevin Greiner.
6835 6836
68362002-12-13 Kevin Greiner <kgreiner@xpediantsolutions.com> 68372002-12-13 Kevin Greiner <kgreiner@xpediantsolutions.com>
6837 6838
6838 * gnus-agent.el (gnus-agent-max-fetch-size): New, defcustom. 6839 * gnus-agent.el (gnus-agent-max-fetch-size): New, defcustom.
6839 (gnus-agent-fetch-headers): Initialize gnus-agent-overview-buffer 6840 (gnus-agent-fetch-headers): Initialize gnus-agent-overview-buffer
@@ -6845,13 +6846,13 @@
6845 Multiple chunks in the same group may perform arbitrarily large 6846 Multiple chunks in the same group may perform arbitrarily large
6846 updates. 6847 updates.
6847 6848
68482002-12-12 Kevin Greiner <kgreiner@xpediantsolutions.com> 68492002-12-12 Kevin Greiner <kgreiner@xpediantsolutions.com>
6849 6850
6850 * gnus-agent.el (gnus-agent-fetch-selected-article): Added call to 6851 * gnus-agent.el (gnus-agent-fetch-selected-article): Added call to
6851 gnus-summary-update-download-mark to update the article in the 6852 gnus-summary-update-download-mark to update the article in the
6852 summary. 6853 summary.
6853 6854
68542002-12-11 Kevin Greiner <kgreiner@xpediantsolutions.com> 68552002-12-11 Kevin Greiner <kgreiner@xpediantsolutions.com>
6855 6856
6856 * gnus.el (gnus-summary-high-uncached-face, 6857 * gnus.el (gnus-summary-high-uncached-face,
6857 gnus-summary-normal-uncached-face, gnus-summary-low-uncached-face) 6858 gnus-summary-normal-uncached-face, gnus-summary-low-uncached-face)
@@ -7069,7 +7070,7 @@
7069 * gnus-sum.el (gnus-summary-insert-old-articles): No longer passes 7070 * gnus-sum.el (gnus-summary-insert-old-articles): No longer passes
7070 compressed range to gnus-summary-insert-articles. 7071 compressed range to gnus-summary-insert-articles.
7071 7072
70722002-11-26 Kevin Ryde <user42@zip.com.au> 70732002-11-26 Kevin Ryde <user42@zip.com.au>
7073 7074
7074 * gnus-art.el (gnus-mime-copy-part): Look for filename 7075 * gnus-art.el (gnus-mime-copy-part): Look for filename
7075 parameter under content-disposition, not content-type. 7076 parameter under content-disposition, not content-type.
@@ -7107,7 +7108,7 @@
7107 * gnus-agent.el (gnus-agent-check-overview-buffer): Make debugger 7108 * gnus-agent.el (gnus-agent-check-overview-buffer): Make debugger
7108 print message on entry. 7109 print message on entry.
7109 7110
7110 From Kevin Greiner <kgreiner@xpediantsolutions.com>. 71112002-11-25 Kevin Greiner <kgreiner@xpediantsolutions.com>.
7111 7112
7112 * gnus-range.el (gnus-range-difference): New function. 7113 * gnus-range.el (gnus-range-difference): New function.
7113 * gnus-sum.el (gnus-summary-insert-old-articles): Use it. 7114 * gnus-sum.el (gnus-summary-insert-old-articles): Use it.
@@ -7118,8 +7119,7 @@
7118 gnus-remove-from-range instead of gnus-range-difference which 7119 gnus-remove-from-range instead of gnus-range-difference which
7119 doesn't exist. 7120 doesn't exist.
7120 7121
71212002-11-23 Kai Gro,A_(Bjohann <kai.grossjohann@uni-duisburg.de> 71222002-11-23 Kevin Greiner <kgreiner@xpediantsolutions.com>
7122 From Kevin Greiner <kgreiner@xpediantsolutions.com>.
7123 7123
7124 * gnus-agent.el (gnus-agent-downloaded-article-face): New face, 7124 * gnus-agent.el (gnus-agent-downloaded-article-face): New face,
7125 used for showing which articles have been downloaded. 7125 used for showing which articles have been downloaded.
@@ -7229,7 +7229,7 @@
7229 * nnimap.el (nnimap-request-expire-articles): Compress sequence 7229 * nnimap.el (nnimap-request-expire-articles): Compress sequence
7230 before storing \Deleted mark on expired articles. 7230 before storing \Deleted mark on expired articles.
7231 7231
72322002-11-17 Shenghuo Zhu <zsh@cs.rochester.edu> 72322002-11-17 Shenghuo Zhu <zsh@cs.rochester.edu>
7233 Trivial patch from Markus Rost <rost@math.ohio-state.edu> 7233 Trivial patch from Markus Rost <rost@math.ohio-state.edu>
7234 7234
7235 * gnus-sum.el (gnus-summary-goto-unread): Doc fix - escape open 7235 * gnus-sum.el (gnus-summary-goto-unread): Doc fix - escape open
@@ -7319,19 +7319,18 @@
7319 * gnus-group.el (gnus-group-delete-group): 7319 * gnus-group.el (gnus-group-delete-group):
7320 gnus-cache-active-hashtb might be void. 7320 gnus-cache-active-hashtb might be void.
7321 7321
73222002-11-02 Simon Josefsson <jas@extundo.com> 73222002-11-02 Raymond Scholz <ray-2002@zonix.de>
7323 7323
7324 * pgg-gpg.el (pgg-gpg-encrypt-region): Makes PGG respect the 7324 * pgg-gpg.el (pgg-gpg-encrypt-region): Makes PGG respect the
7325 setting of the default user ID. From Raymond Scholz 7325 setting of the default user ID.
7326 <ray-2002@zonix.de>.
7327 7326
73282002-11-01 Jesper Harder <harder@ifa.au.dk> 73272002-11-01 Jesper Harder <harder@ifa.au.dk>
7329 7328
7330 * mm-bodies.el (mm-body-encoding): Don't return 8bit for 7bit 7329 * mm-bodies.el (mm-body-encoding): Don't return 8bit for 7bit
7331 charset. 7330 charset.
7332 7331
73332002-10-31 Ted Zlatanov <tzz@lifelogs.com> 73322002-10-31 Alex Schroeder <alex@emacswiki.org>
7334 From Alex Schroeder <alex@emacswiki.org> 7333
7335 * spam-stat.el (spam-stat-process-directory): add dir to message 7334 * spam-stat.el (spam-stat-process-directory): add dir to message
7336 (spam-stat-reduce-size): No longer remove words 7335 (spam-stat-reduce-size): No longer remove words
7337 with values close to 0.5, because the default value is 0.2. 7336 with values close to 0.5, because the default value is 0.2.
@@ -7394,8 +7393,7 @@
7394 * mml.el (mml-mode-map): Fixed keybindings for mml-secure-* 7393 * mml.el (mml-mode-map): Fixed keybindings for mml-secure-*
7395 functions. 7394 functions.
7396 7395
73972002-10-28 Katsumi Yamaoka <yamaoka@jpl.org> 73962002-10-28 Mark A. Hershberger <mah@everybody.org>
7398 From mah@everybody.org (Mark A. Hershberger).
7399 7397
7400 * mm-url.el (mm-url-insert-file-contents): Make it return the same 7398 * mm-url.el (mm-url-insert-file-contents): Make it return the same
7401 type values ("url" size) regardless of the values of 7399 type values ("url" size) regardless of the values of
@@ -7643,7 +7641,7 @@
7643 7641
7644 * gnus-spec.el (gnus-pad-form): Use gnus-string-width-function. 7642 * gnus-spec.el (gnus-pad-form): Use gnus-string-width-function.
7645 7643
76462002-10-11 Ted Zlatanov <tzz@lifelogs.com> 76442002-10-11 Ted Zlatanov <tzz@lifelogs.com>
7647 7645
7648 * spam.el (spam-check-ifile): added ifile as a spam checking 7646 * spam.el (spam-check-ifile): added ifile as a spam checking
7649 backend, and spam-use-ifle as the variable to toggle that check. 7647 backend, and spam-use-ifle as the variable to toggle that check.
@@ -7653,7 +7651,7 @@
7653 * message.el (message-beginning-of-line): New variable. 7651 * message.el (message-beginning-of-line): New variable.
7654 (message-beginning-of-line): Use it. 7652 (message-beginning-of-line): Use it.
7655 7653
76562002-10-11 Ted Zlatanov <tzz@lifelogs.com> 76542002-10-11 Ted Zlatanov <tzz@lifelogs.com>
7657 7655
7658 * spam.el: more compilation fixes for BBDB 7656 * spam.el: more compilation fixes for BBDB
7659 7657
@@ -7689,7 +7687,7 @@
7689 (mml2015-unabbrev-trust-alist): New. 7687 (mml2015-unabbrev-trust-alist): New.
7690 (mml2015-gpg-extract-signature-details): Use it. 7688 (mml2015-gpg-extract-signature-details): Use it.
7691 7689
76922002-10-10 Ted Zlatanov <tzz@lifelogs.com> 76902002-10-10 Ted Zlatanov <tzz@lifelogs.com>
7693 7691
7694 * spam.el: compilation fixes, spam-check-bbdb function is nil if no 7692 * spam.el: compilation fixes, spam-check-bbdb function is nil if no
7695 BBDB installed 7693 BBDB installed
@@ -7817,7 +7815,7 @@
7817 7815
7818 * pgg.el, pgg-gpg.el, pgg-pgp5.el: Don't depend on luna.el. 7816 * pgg.el, pgg-gpg.el, pgg-pgp5.el: Don't depend on luna.el.
7819 7817
78202002-09-29 Daiki Ueno <ueno@unixuser.org> 78182002-09-29 Daiki Ueno <ueno@unixuser.org>
7821 7819
7822 * pgg.el: Remove dependency on calist.el. 7820 * pgg.el: Remove dependency on calist.el.
7823 7821
@@ -7858,13 +7856,12 @@
7858 7856
7859 * message.el (message-required-mail-headers): Remove Lines:. 7857 * message.el (message-required-mail-headers): Remove Lines:.
7860 7858
78612002-10-03 Kai Gro,A_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 78592002-10-03 Jesper Harder <harder@ifa.au.dk>
7862 From Jesper Harder.
7863 7860
7864 * gnus-group.el (gnus-group-fetch-charter, 7861 * gnus-group.el (gnus-group-fetch-charter,
7865 gnus-group-fetch-control): Prompt for group if given a prefix 7862 gnus-group-fetch-control): Prompt for group if given a prefix
7866 argument. 7863 argument.
7867 * gnus-sum.el (t): Add gnus-group-fetch-charter and 7864 * gnus-sum.el: Add gnus-group-fetch-charter and
7868 gnus-group-fetch-control to summary key map and menu. 7865 gnus-group-fetch-control to summary key map and menu.
7869 7866
78702002-10-03 Paul Jarc <prj@po.cwru.edu> 78672002-10-03 Paul Jarc <prj@po.cwru.edu>
@@ -7879,13 +7876,12 @@
7879 (gnus-agent-fetch-selected-article): New function for 7876 (gnus-agent-fetch-selected-article): New function for
7880 gnus-select-article-hook or gnus-mark-article-hook. 7877 gnus-select-article-hook or gnus-mark-article-hook.
7881 7878
78822002-10-02 Katsumi Yamaoka <yamaoka@jpl.org> 78792002-10-02 Peter von der Ahe <nospam2159@daimi.au.dk>
7883 From Peter von der Ahe <nospam2159@daimi.au.dk>.
7884 7880
7885 * gnus-ems.el (gnus-x-splash): Set coding-system-for-read to 7881 * gnus-ems.el (gnus-x-splash): Set coding-system-for-read to
7886 raw-text. 7882 raw-text.
7887 7883
78882002-09-30 Ted Zlatanov <tzz@lifelogs.com> 78842002-09-30 Ted Zlatanov <tzz@lifelogs.com>
7889 7885
7890 * spam.el: merged changes from pinard@iro.umontreal.ca (Fran,Ag(Bois 7886 * spam.el: merged changes from pinard@iro.umontreal.ca (Fran,Ag(Bois
7891 Pinard). 7887 Pinard).
@@ -7926,8 +7922,7 @@
7926 7922
7927 * nnimap.el (nnimap-fixup-unread-after-getting-new-news): Remove. 7923 * nnimap.el (nnimap-fixup-unread-after-getting-new-news): Remove.
7928 7924
79292002-09-27 Katsumi Yamaoka <yamaoka@jpl.org> 79252002-09-27 Mats Lidell <matsl@contactor.se>
7930 From Mats Lidell <matsl@contactor.se>.
7931 7926
7932 * gnus-art.el (gnus-article-mode-syntax-table): Replace "-" to " ". 7927 * gnus-art.el (gnus-article-mode-syntax-table): Replace "-" to " ".
7933 7928
@@ -8078,20 +8073,19 @@
8078 * nnmaildir.el (nnmaildir--grp-add-art): fix minimum article 8073 * nnmaildir.el (nnmaildir--grp-add-art): fix minimum article
8079 number when article 1 does not exist. 8074 number when article 1 does not exist.
8080 8075
80812002-09-25 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 80762002-09-25 Reiner Steib <Reiner.Steib@gmx.de>
8082 8077
8083 * gnus-art.el (gnus-button-handle-apropos-variable): Fall back to 8078 * gnus-art.el (gnus-button-handle-apropos-variable): Fall back to
8084 apropos if apropos-variable does not exist. 8079 apropos if apropos-variable does not exist.
8085 (gnus-button-guessed-mid-regexp) 8080 (gnus-button-guessed-mid-regexp)
8086 (gnus-button-handle-describe-prefix, gnus-button-alist): Better 8081 (gnus-button-handle-describe-prefix, gnus-button-alist): Better
8087 regexes. From Reiner Steib. 8082 regexes.
8088 (gnus-button-handle-describe-function) 8083 (gnus-button-handle-describe-function)
8089 (gnus-button-handle-describe-variable): Doc fix. From Reiner Steib. 8084 (gnus-button-handle-describe-variable): Doc fix.
8090 (gnus-button-handle-describe-key, gnus-button-handle-apropos) 8085 (gnus-button-handle-describe-key, gnus-button-handle-apropos)
8091 (gnus-button-handle-apropos-command): Doc fix. From Reiner Steib. 8086 (gnus-button-handle-apropos-command): Doc fix.
8092 8087
80932002-09-25 Mark A. Hershberger <mah@everybody.org> 80882002-09-25 Mark A. Hershberger <mah@everybody.org> (tiny change)
8094 Trivial patch.
8095 8089
8096 * nnrss.el (nnrss-save-server-data): Save nnrss-group-alist in 8090 * nnrss.el (nnrss-save-server-data): Save nnrss-group-alist in
8097 the file. 8091 the file.
@@ -8113,22 +8107,19 @@
8113 (mml2015-pgg-encrypt): New functions. 8107 (mml2015-pgg-encrypt): New functions.
8114 (defvar, autoload): Prevent byte-compile warnings. 8108 (defvar, autoload): Prevent byte-compile warnings.
8115 8109
81162002-09-24 Katsumi Yamaoka <yamaoka@jpl.org> 81102002-09-24 TSUCHIYA Masatoshi <tsuchiya@namazu.org>.
8117 From TSUCHIYA Masatoshi <tsuchiya@namazu.org>.
8118 8111
8119 * gnus-art.el (article-strip-banner): Check for the existence of 8112 * gnus-art.el (article-strip-banner): Check for the existence of
8120 from header. 8113 from header.
8121 8114
81222002-09-23 Kai Gro,b_(Bjohann <grossjoh@ls6.informatik.uni-dortmund.de> 81152002-09-23 Reiner Steib <Reiner.Steib@gmx.de>
8123 8116
8124 * gnus-art.el (gnus-button-guessed-mid-regexp): Improved regexp. 8117 * gnus-art.el (gnus-button-guessed-mid-regexp): Improved regexp.
8125 (gnus-button-alist): Improved regexp for 8118 (gnus-button-alist): Improved regexp for
8126 gnus-button-handle-mid-or-mail (false positives), fixed 8119 gnus-button-handle-mid-or-mail (false positives), fixed
8127 gnus-button-handle-man entries. 8120 gnus-button-handle-man entries.
8128 From Reiner Steib.
8129 8121
81302002-09-23 Paul Jarc <prj@po.cwru.edu> 81222002-09-23 Josh Huber <huber@alum.wpi.edu>
8131 From Josh Huber.
8132 8123
8133 * nnmaildir.el (nnmaildir--update-nov): fix wrong-type error when 8124 * nnmaildir.el (nnmaildir--update-nov): fix wrong-type error when
8134 nnmail-extra-headers is non-nil. 8125 nnmail-extra-headers is non-nil.
@@ -8157,8 +8148,7 @@
8157 8148
8158 * gnus-sum.el (gnus-summary-next-group): Switch to the summary buffer. 8149 * gnus-sum.el (gnus-summary-next-group): Switch to the summary buffer.
8159 8150
81602002-09-20 Kai Gro,b_(Bjohann <grossjoh@ls6.informatik.uni-dortmund.de> 81512002-09-20 Reiner Steib <Reiner.Steib@gmx.de>
8161 From Reiner Steib.
8162 8152
8163 * gnus-art.el (gnus-button-handle-custom, 8153 * gnus-art.el (gnus-button-handle-custom,
8164 gnus-button-handle-mid-or-mail, 8154 gnus-button-handle-mid-or-mail,
@@ -8184,10 +8174,10 @@
8184 8174
8185 * message.el (message-completion-alist): Add Reply-To, From, etc. 8175 * message.el (message-completion-alist): Add Reply-To, From, etc.
8186 8176
81872002-09-18 Simon Josefsson <jas@extundo.com> 81772002-09-18 Nevin Kapur <nevin@jhu.edu>
8188 8178
8189 * nnimap.el (nnimap-request-expire-articles): Make flag setting 8179 * nnimap.el (nnimap-request-expire-articles): Make flag setting
8190 conditional. From Nevin Kapur <nevin@jhu.edu>. 8180 conditional.
8191 8181
81922002-09-17 Simon Josefsson <jas@extundo.com> 81822002-09-17 Simon Josefsson <jas@extundo.com>
8193 8183
@@ -8197,8 +8187,7 @@
8197 when articles are found. Suggested by Nevin Kapur 8187 when articles are found. Suggested by Nevin Kapur
8198 <nevin@jhu.edu>. 8188 <nevin@jhu.edu>.
8199 8189
82002002-09-17 Kai Gro,A_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 81902002-09-17 Reiner Steib <Reiner.Steib@gmx.de>
8201 From Reiner Steib <reiner.steib@gmx.de>.
8202 8191
8203 * message.el (message-strip-subject-trailing-was) 8192 * message.el (message-strip-subject-trailing-was)
8204 (message-change-subject, message-add-archive-header) 8193 (message-change-subject, message-add-archive-header)
@@ -8251,8 +8240,7 @@
8251 8240
8252 * gnus-sum.el (gnus-summary-next-group): Semi-exit only when needed. 8241 * gnus-sum.el (gnus-summary-next-group): Semi-exit only when needed.
8253 8242
82542002-09-12 Katsumi Yamaoka <yamaoka@jpl.org> 82432002-09-12 John Paul Wallington <jpw@shootybangbang.com>.
8255 From John Paul Wallington <jpw@shootybangbang.com>.
8256 8244
8257 * gnus.el (gnus-visual, gnus-meta): Fix typo. 8245 * gnus.el (gnus-visual, gnus-meta): Fix typo.
8258 8246
@@ -8266,8 +8254,7 @@
8266 (nnimap-split-rule): Doc fix. 8254 (nnimap-split-rule): Doc fix.
8267 (nnimap-request-expire-articles): Cleanup code. 8255 (nnimap-request-expire-articles): Cleanup code.
8268 8256
82692002-09-11 Katsumi Yamaoka <yamaoka@jpl.org> 82572002-09-11 TSUCHIYA Masatoshi <tsuchiya@namazu.org>.
8270 From TSUCHIYA Masatoshi <tsuchiya@namazu.org>.
8271 8258
8272 * gnus-art.el (gnus-article-address-banner-alist): New option. 8259 * gnus-art.el (gnus-article-address-banner-alist): New option.
8273 (article-strip-banner): Refer the above option to split banners of 8260 (article-strip-banner): Refer the above option to split banners of
@@ -8347,10 +8334,10 @@
8347 * gnus-util.el (gnus-frame-or-window-display-name): Exclude 8334 * gnus-util.el (gnus-frame-or-window-display-name): Exclude
8348 invalid display names. 8335 invalid display names.
8349 8336
83502002-08-30 Simon Josefsson <jas@extundo.com> 83372002-08-30 Reiner Steib <Reiner.Steib@gmx.de>
8351 8338
8352 * gnus-group.el (gnus-group-fetch-control): Fix typo in last 8339 * gnus-group.el (gnus-group-fetch-control): Fix typo in last
8353 commit. From Reiner Steib <4uce.02.r.steib@gmx.net>. 8340 commit.
8354 8341
83552002-08-26 Jesper Harder <harder@ifa.au.dk> 83422002-08-26 Jesper Harder <harder@ifa.au.dk>
8356 8343
@@ -8361,10 +8348,9 @@
8361 (gnus-group-fetch-control): New function. 8348 (gnus-group-fetch-control): New function.
8362 Add them to the keymap and menu. Require mm-url. 8349 Add them to the keymap and menu. Require mm-url.
8363 8350
83642002-08-30 Katsumi Yamaoka <yamaoka@jpl.org> 83512002-08-30 Alex Schroeder <alex@emacswiki.org>.
8365 8352
8366 * gnus-mlspl.el (gnus-group-split-fancy): Doc fix. 8353 * gnus-mlspl.el (gnus-group-split-fancy): Doc fix.
8367 From Alex Schroeder <alex@emacswiki.org>.
8368 8354
83692002-08-29 Jesper Harder <harder@ifa.au.dk> 83552002-08-29 Jesper Harder <harder@ifa.au.dk>
8370 8356
@@ -8412,10 +8398,10 @@
8412 * lpath.el: Fbind `frame-parameter', `make-frame-on-display', 8398 * lpath.el: Fbind `frame-parameter', `make-frame-on-display',
8413 `device-connection' and `dfw-device'. 8399 `device-connection' and `dfw-device'.
8414 8400
84152002-08-22 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 84012002-08-22 Jochen Hein <jochen@jochen.org> (tiny change)
8416 8402
8417 * gnus-art.el (gnus-emphasis-alist): Strikethru had a lot of false 8403 * gnus-art.el (gnus-emphasis-alist): Strikethru had a lot of false
8418 positives, make it stricter. From Jochen Hein (trivial change). 8404 positives, make it stricter.
8419 8405
84202002-08-21 Katsumi Yamaoka <yamaoka@jpl.org> 84062002-08-21 Katsumi Yamaoka <yamaoka@jpl.org>
8421 8407
@@ -8432,8 +8418,7 @@
8432 8418
8433 * lpath.el: Fbind w32-focus-frame and x-focus-frame. 8419 * lpath.el: Fbind w32-focus-frame and x-focus-frame.
8434 8420
84352002-08-20 Katsumi Yamaoka <yamaoka@jpl.org> 84212002-08-20 $B>.4X(B $B5HB'(B (KOSEKI Yoshinori) <kose@meadowy.org>.
8436 From $B>.4X(B $B5HB'(B (KOSEKI Yoshinori) <kose@meadowy.org>.
8437 8422
8438 * message.el (message-set-auto-save-file-name): Add support for 8423 * message.el (message-set-auto-save-file-name): Add support for
8439 the Cygwin Emacs; the system-type is `cygwin'. 8424 the Cygwin Emacs; the system-type is `cygwin'.
@@ -8543,7 +8528,7 @@
8543 8528
8544 * gnus.el (gnus-version-number): Bumped version number. 8529 * gnus.el (gnus-version-number): Bumped version number.
8545 8530
85462002-08-04 01:48:57 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 85312002-08-04 01:48:57 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
8547 8532
8548 * gnus.el: Oort Gnus v0.07 is released. 8533 * gnus.el: Oort Gnus v0.07 is released.
8549 8534
@@ -8555,18 +8540,17 @@
8555 (gnus-article-sort-by-random): New function. 8540 (gnus-article-sort-by-random): New function.
8556 (gnus-thread-sort-by-random): New function. 8541 (gnus-thread-sort-by-random): New function.
8557 8542
85582002-08-02 Simon Josefsson <jas@extundo.com> 85432002-08-02 Scott A Crosby <scrosby@cs.rice.edu>
8559 8544
8560 * gnus-logic.el (gnus-advanced-integer): Swap arguments in 8545 * gnus-logic.el (gnus-advanced-integer): Swap arguments in
8561 funcall. From Scott A Crosby <scrosby@cs.rice.edu>. 8546 funcall.
8562 8547
85632002-07-31 Danny Siu <dsiu@adobe.com> 85482002-07-31 Danny Siu <dsiu@adobe.com>
8564 8549
8565 * nnimap.el (nnimap-split-articles): do not call nnmail-fetch-field 8550 * nnimap.el (nnimap-split-articles): do not call nnmail-fetch-field
8566 when splitting malformed messages without message-id 8551 when splitting malformed messages without message-id
8567 8552
85682002-07-28 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 85532002-07-28 Niklas Morberg <niklas.morberg@axis.com>.
8569 From Niklas Morberg <niklas.morberg@axis.com>.
8570 8554
8571 * nnweb.el (nnweb-type, nnweb-type-definition) 8555 * nnweb.el (nnweb-type, nnweb-type-definition)
8572 (nnweb-gmane-create-mapping, nnweb-gmane-wash-article) 8556 (nnweb-gmane-create-mapping, nnweb-gmane-wash-article)
@@ -8610,21 +8594,18 @@
8610 nnmail-expiry-target to 'delete, so that absolute deletion 8594 nnmail-expiry-target to 'delete, so that absolute deletion
8611 happens when absolute deletion is requested. 8595 happens when absolute deletion is requested.
8612 8596
86132002-07-21 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 85972002-07-21 Nevin Kapur <nevin@jhu.edu>.
8614 From Nevin Kapur <nevin@jhu.edu>.
8615 8598
8616 * nnmail.el (nnmail-fancy-expiry-target): Treat nonexisting 8599 * nnmail.el (nnmail-fancy-expiry-target): Treat nonexisting
8617 headers as empty headers. 8600 headers as empty headers.
8618 8601
86192002-07-21 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 86022002-07-21 Jochen Hein <jochen@jochen.org>.
8620 From Jochen Hein <jochen@jochen.org>.
8621 8603
8622 * gnus-art.el (gnus-emphasis-alist): Add strikethrough and 8604 * gnus-art.el (gnus-emphasis-alist): Add strikethrough and
8623 correct typo. 8605 correct typo.
8624 (gnus-emphasis-strikethru): New face. 8606 (gnus-emphasis-strikethru): New face.
8625 8607
86262002-07-20 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 86082002-07-20 Jason Merrill <jason@redhat.com>.
8627 From Jason Merrill <jason@redhat.com>.
8628 8609
8629 * nnfolder.el (nnfolder-retrieve-headers): Avoid searching the 8610 * nnfolder.el (nnfolder-retrieve-headers): Avoid searching the
8630 entire file for each of a sequence of missing articles. 8611 entire file for each of a sequence of missing articles.
@@ -8635,8 +8616,7 @@
8635 * gnus-sum.el (gnus-summary-insert-new-articles): Count down to 8616 * gnus-sum.el (gnus-summary-insert-new-articles): Count down to
8636 avoid nreverse. 8617 avoid nreverse.
8637 8618
86382002-07-14 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 86192002-07-14 Ted Zlatanov <teodor.zlatanov@divine.com>
8639 From Ted Zlatanov <teodor.zlatanov@divine.com>.
8640 8620
8641 * gnus-sum.el (gnus-auto-expirable-marks): Remove `spam'. 8621 * gnus-sum.el (gnus-auto-expirable-marks): Remove `spam'.
8642 (gnus-summary-mode-line-format-alist): Add %h for number of 8622 (gnus-summary-mode-line-format-alist): Add %h for number of
@@ -8651,25 +8631,24 @@
8651 (gnus-mark-article-as-read, gnus-mark-article-as-unread) 8631 (gnus-mark-article-as-read, gnus-mark-article-as-unread)
8652 (gnus-mark-article-as-unread, gnus-summary-catchup): Grok spam. 8632 (gnus-mark-article-as-unread, gnus-summary-catchup): Grok spam.
8653 8633
86542002-07-10 Simon Josefsson <jas@extundo.com> 86342002-07-10 KANEMATSU Daiji <kdaiji@bea.com>
8655 8635
8656 * nnimap.el (nnimap-split-to-groups): Allow group string to be a 8636 * nnimap.el (nnimap-split-to-groups): Allow group string to be a
8657 function. From KANEMATSU Daiji <kdaiji@bea.com>. 8637 function.
8658 8638
86592002-07-09 Nevin Kapur <nevin@jhu.edu> 86392002-07-09 Nevin Kapur <nevin@jhu.edu>
8660 8640
8661 * gnus-sum.el (gnus-summary-delete-article): Respect group 8641 * gnus-sum.el (gnus-summary-delete-article): Respect group
8662 parameters while expiring. 8642 parameters while expiring.
8663 8643
86642002-07-08 Simon Josefsson <jas@extundo.com> 86442002-07-08 Henrik Enberg <henrik@enberg.org>
8665 8645
8666 * gnus-art.el (article-make-date-line): Fix string. From Henrik 8646 * gnus-art.el (article-make-date-line): Fix string.
8667 Enberg.
8668 8647
86692002-07-08 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 86482002-07-08 Niklas Morberg <niklas.morberg@axis.com>
8670 8649
8671 * gnus-art.el (article-unsplit-urls): Only display MIME when this 8650 * gnus-art.el (article-unsplit-urls): Only display MIME when this
8672 function is called interactively. From Niklas Morberg. 8651 function is called interactively.
8673 8652
86742002-07-06 ShengHuo ZHU <zsh@cs.rochester.edu> 86532002-07-06 ShengHuo ZHU <zsh@cs.rochester.edu>
8675 8654
@@ -8691,10 +8670,10 @@
8691 8670
8692 * nnmail.el (nnmail-split-methods): fix custom type. 8671 * nnmail.el (nnmail-split-methods): fix custom type.
8693 8672
86942002-07-02 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 86732002-07-02 Niklas Morberg <niklas.morberg@axis.com>
8695 8674
8696 * gnus-art.el (article-unsplit-urls): Keep URL buttonized after 8675 * gnus-art.el (article-unsplit-urls): Keep URL buttonized after
8697 unsplitting. From Niklas Morberg <niklas.morberg@axis.com>. 8676 unsplitting.
8698 8677
86992002-07-01 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 86782002-07-01 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
8700 8679
@@ -8706,13 +8685,12 @@
8706 * nntp.el (nntp-via-rlogin-command-switches): New variable. 8685 * nntp.el (nntp-via-rlogin-command-switches): New variable.
8707 (nntp-open-via-rlogin-and-telnet): Re-revert; use the var above. 8686 (nntp-open-via-rlogin-and-telnet): Re-revert; use the var above.
8708 8687
87092002-06-28 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 86882002-06-28 Katsumi Yamaoka <yamaoka@jpl.org>
8710 8689
8711 * message.el (message-font-lock-keywords): Don't fontify 8690 * message.el (message-font-lock-keywords): Don't fontify
8712 headers in the message body, only in the header. 8691 headers in the message body, only in the header.
8713 (message-font-lock-make-header-matcher): New function, used by 8692 (message-font-lock-make-header-matcher): New function, used by
8714 message-font-lock-keywords. 8693 message-font-lock-keywords.
8715 From Katsumi Yamaoka <yamaoka@jpl.org>.
8716 8694
87172002-06-28 Katsumi Yamaoka <yamaoka@jpl.org> 86952002-06-28 Katsumi Yamaoka <yamaoka@jpl.org>
8718 8696
@@ -8765,24 +8743,22 @@
8765 (last, coerce, subseq): Remove compiler macros for those built-in 8743 (last, coerce, subseq): Remove compiler macros for those built-in
8766 or unused functions. 8744 or unused functions.
8767 8745
87682002-06-17 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 87462002-06-17 Simon Josefsson <jas@extundo.com>
8769 8747
8770 * gnus-start.el (gnus-clear-system, gnus-read-newsrc-file): Make 8748 * gnus-start.el (gnus-clear-system, gnus-read-newsrc-file): Make
8771 sure to write byte-compiled versions of gnus-*-format-alist to 8749 sure to write byte-compiled versions of gnus-*-format-alist to
8772 .newsrc.eld. From Simon Josefsson. 8750 .newsrc.eld.
8773 8751
87742002-06-16 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 87522002-06-16 Bj,Ax(Brn Mork <bmork@dod.no>
8775 8753
8776 * gnus-agent.el (gnus-agent-read-servers) 8754 * gnus-agent.el (gnus-agent-read-servers)
8777 (gnus-agent-write-servers): Put server name (string like 8755 (gnus-agent-write-servers): Put server name (string like
8778 "nnchoke:frumple") in the file instead of a server specification 8756 "nnchoke:frumple") in the file instead of a server specification
8779 (Lisp expression like (nnchoke "frumple" ...parameters...)). 8757 (Lisp expression like (nnchoke "frumple" ...parameters...)).
8780 From Bj,Ax(Brn Mork <bmork@dod.no>.
8781 8758
87822002-06-16 Simon Josefsson <jas@extundo.com> 87592002-06-16 Reiner Steib <Reiner.Steib@gmx.de>
8783 8760
8784 * gnus-cache.el (gnus-cache-remove-article): n is &optional. From 8761 * gnus-cache.el (gnus-cache-remove-article): n is &optional.
8785 Reiner Steib <4uce.02.r.steib@gmx.net>.
8786 8762
87872002-06-15 ShengHuo ZHU <zsh@cs.rochester.edu> 87632002-06-15 ShengHuo ZHU <zsh@cs.rochester.edu>
8788 8764
@@ -8818,8 +8794,10 @@
8818 * gnus-int.el (gnus-request-move-article): Agent expire article if 8794 * gnus-int.el (gnus-request-move-article): Agent expire article if
8819 successfuly moved. 8795 successfuly moved.
8820 8796
87972002-06-11 Niklas Morberg <niklas.morberg@axis.com>
8798
8821 * nnweb.el (nnweb-google-create-mapping): Honors the value of 8799 * nnweb.el (nnweb-google-create-mapping): Honors the value of
8822 nnweb-max-hits. From Niklas Morberg <niklas.morberg@axis.com>. 8800 nnweb-max-hits.
8823 8801
88242002-06-10 Simon Josefsson <jas@extundo.com> 88022002-06-10 Simon Josefsson <jas@extundo.com>
8825 8803
@@ -8868,11 +8846,10 @@
8868 * nnmail.el (nnmail-mail-splitting-decodes): New variable. 8846 * nnmail.el (nnmail-mail-splitting-decodes): New variable.
8869 (nnmail-article-group): Use it. 8847 (nnmail-article-group): Use it.
8870 8848
88712002-05-30 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 88492002-05-30 Jesper Harder <harder@ifa.au.dk>
8872 8850
8873 * gnus-msg.el (gnus-inews-yank-articles): Merge split header lines 8851 * gnus-msg.el (gnus-inews-yank-articles): Merge split header lines
8874 so that code reading them won't be surprised. From Jesper Harder 8852 so that code reading them won't be surprised.
8875 <harder@ifa.au.dk>.
8876 8853
88772002-05-29 Simon Josefsson <jas@extundo.com> 88542002-05-29 Simon Josefsson <jas@extundo.com>
8878 8855
@@ -8889,11 +8866,10 @@
8889 8866
8890 * gnus-group.el (gnus-group-line-format): Doc fix. 8867 * gnus-group.el (gnus-group-line-format): Doc fix.
8891 8868
88922002-05-28 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 88692002-05-28 Jesper Harder <harder@ifa.au.dk>
8893 8870
8894 * gnus-msg.el (gnus-inews-yank-articles): Unfold headers of 8871 * gnus-msg.el (gnus-inews-yank-articles): Unfold headers of
8895 original article before yanking. From Jesper Harder 8872 original article before yanking.
8896 <harder@ifa.au.dk>.
8897 8873
88982002-05-26 Simon Josefsson <jas@extundo.com> 88742002-05-26 Simon Josefsson <jas@extundo.com>
8899 8875
@@ -8919,22 +8895,23 @@
8919 (gnus-summary-prepare-threads): Avoid simplifying every Subject 8895 (gnus-summary-prepare-threads): Avoid simplifying every Subject
8920 twice by saving the simplified subject string in simp-subject. 8896 twice by saving the simplified subject string in simp-subject.
8921 8897
89222002-05-23 Simon Josefsson <jas@extundo.com> 88982002-05-23 Benjamin Rutt <rutt+news@cis.ohio-state.edu> (tiny change)
8899
8900 * gnus-msg.el (gnus-confirm-mail-reply-to-news): Typo.
8923 8901
8924 * gnus-msg.el (gnus-confirm-mail-reply-to-news): Typo. Trivial 89022002-05-23 Niklas Morberg <niklas.morberg@axis.com> (tiny change)
8925 change from Benjamin Rutt <rutt+news@cis.ohio-state.edu>.
8926 8903
8927 * nnweb.el (nnweb-type): Remove dejanewsold. Trivial change from 8904 * nnweb.el (nnweb-type): Remove dejanewsold.
8928 Niklas Morberg <niklas.morberg@axis.com>.
8929 8905
89302002-05-22 Simon Josefsson <jas@extundo.com> 89062002-05-22 Simon Josefsson <jas@extundo.com>
8931 8907
8932 * sieve.el (sieve-change-region): Define it before it is used. 8908 * sieve.el (sieve-change-region): Define it before it is used.
8933 8909
89102002-05-22 Benjamin Rutt <rutt+news@cis.ohio-state.edu>
8911
8934 * gnus-msg.el (gnus-confirm-mail-reply-to-news) 8912 * gnus-msg.el (gnus-confirm-mail-reply-to-news)
8935 (gnus-summary-reply): Ask for confirmation when replying to news. 8913 (gnus-summary-reply): Ask for confirmation when replying to news.
8936 Defaults to not ask. From Benjamin Rutt 8914 Defaults to not ask.
8937 <rutt+news@cis.ohio-state.edu>.
8938 8915
8939 * nnimap.el (nnimap-nov-is-evil): Improve doc. 8916 * nnimap.el (nnimap-nov-is-evil): Improve doc.
8940 8917
@@ -8989,10 +8966,13 @@
8989 * nnmail.el (nnmail-cache-insert): Change group to required, 8966 * nnmail.el (nnmail-cache-insert): Change group to required,
8990 removed code which tried to figure out the group. 8967 removed code which tried to figure out the group.
8991 8968
89922002-05-13 Josh Huber <huber@alum.wpi.edu> 89692002-05-13 Hans de Graaff <hans@degraaff.org>
8993 8970
8994 * mml.el (mml-generate-mime-1): Fix mml generation for signed only 8971 * mml.el (mml-generate-mime-1): Fix mml generation for signed only
8995 messages. From Hans de Graaff <hans@degraaff.org>. 8972 messages.
8973
89742002-05-13 Josh Huber <huber@alum.wpi.edu>
8975
8996 * nnml.el (nnml-request-accept-article): Pass in the group name to 8976 * nnml.el (nnml-request-accept-article): Pass in the group name to
8997 nnmail-cache-insert, since it's available. 8977 nnmail-cache-insert, since it's available.
8998 8978
@@ -9000,8 +8980,7 @@
9000 8980
9001 * nndoc.el (nndoc-mime-digest-type-p): Set proper file-end. 8981 * nndoc.el (nndoc-mime-digest-type-p): Set proper file-end.
9002 8982
90032002-05-08 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 89832002-05-08 Florian Weimer <fw@deneb.enyo.de>
9004 From Florian Weimer <fw@deneb.enyo.de>.
9005 8984
9006 * gnus.el (subscribed): New group parameter. 8985 * gnus.el (subscribed): New group parameter.
9007 (gnus-find-subscribed-addresses): Use it. 8986 (gnus-find-subscribed-addresses): Use it.
@@ -9021,16 +9000,15 @@
9021 parenthesis for "<" and ">". Suggested by Andreas Schwab 9000 parenthesis for "<" and ">". Suggested by Andreas Schwab
9022 <schwab@suse.de>. 9001 <schwab@suse.de>.
9023 9002
90242002-05-07 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 90032002-05-07 Josh Huber <huber@alum.wpi.edu>
9025 9004
9026 * nnmail.el (nnmail-cache-insert): Prefer group-art over group 9005 * nnmail.el (nnmail-cache-insert): Prefer group-art over group
9027 when intuiting the group the message is written to. From Josh 9006 when intuiting the group the message is written to.
9028 Huber <huber@alum.wpi.edu>.
9029 9007
90302002-05-06 Simon Josefsson <jas@extundo.com> 90082002-05-06 Matt Armstrong <matt@lickey.com>
9031 9009
9032 * gnus-topic.el (gnus-group-topic-parameters): Work when group 9010 * gnus-topic.el (gnus-group-topic-parameters): Work when group
9033 buffer doesn't show group. From Matt Armstrong <matt@lickey.com>. 9011 buffer doesn't show group.
9034 9012
90352002-05-06 Josh Huber <huber@alum.wpi.edu> 90132002-05-06 Josh Huber <huber@alum.wpi.edu>
9036 9014
@@ -9077,7 +9055,7 @@
9077 server. 9055 server.
9078 (nnimap-mailbox-info): defvar instead of defvoo. 9056 (nnimap-mailbox-info): defvar instead of defvoo.
9079 9057
90802002-05-01 20:09:21 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 90582002-05-01 20:09:21 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
9081 9059
9082 * gnus.el: Oort Gnus v0.06 is released. 9060 * gnus.el: Oort Gnus v0.06 is released.
9083 9061
@@ -9187,8 +9165,7 @@
9187 9165
9188 * gnus-art.el (article-unsplit-urls): Allow trailing SPC. 9166 * gnus-art.el (article-unsplit-urls): Allow trailing SPC.
9189 9167
91902002-04-24 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 91682002-04-24 Dan Christensen <jdc+news@uwo.ca>
9191 From Dan Christensen <jdc+news@uwo.ca>.
9192 9169
9193 * nndoc.el (nndoc-type-alist, nndoc-lanl-gov-announce-type-p) 9170 * nndoc.el (nndoc-type-alist, nndoc-lanl-gov-announce-type-p)
9194 (nndoc-transform-lanl-gov-announce, nndoc-generate-lanl-gov-head): 9171 (nndoc-transform-lanl-gov-announce, nndoc-generate-lanl-gov-head):
@@ -9210,11 +9187,10 @@
9210 (gnus-netrc-get, gnus-netrc-machine, gnus-parse-netrc): Aliased to 9187 (gnus-netrc-get, gnus-netrc-machine, gnus-parse-netrc): Aliased to
9211 new code in netrc.el. 9188 new code in netrc.el.
9212 9189
92132002-04-23 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 91902002-04-23 Matthieu Moy <Matthieu.Moy@imag.fr>
9214 9191
9215 * gnus-msg.el (gnus-summary-resend-message-edit): Remove 9192 * gnus-msg.el (gnus-summary-resend-message-edit): Remove
9216 message-ignored-resent-headers, too. From Matthieu Moy 9193 message-ignored-resent-headers, too.
9217 <Matthieu.Moy@imag.fr>.
9218 9194
92192002-04-22 Bj,Av(Brn Torkelsson <torkel@acc.umu.se> 91952002-04-22 Bj,Av(Brn Torkelsson <torkel@acc.umu.se>
9220 9196
@@ -9279,8 +9255,7 @@
9279 * message.el (message-gen-unsubscribed-mft): accept a prefix 9255 * message.el (message-gen-unsubscribed-mft): accept a prefix
9280 argument so CC can be included with C-u C-c C-f C-a 9256 argument so CC can be included with C-u C-c C-f C-a
9281 9257
92822002-04-17 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 92582002-04-17 Ted Zlatanov <teodor.zlatanov@divine.com>
9283 From Ted Zlatanov <teodor.zlatanov@divine.com>.
9284 9259
9285 * spam.el (spam-whitelist, spam-blacklist, spam-enter-whitelist): 9260 * spam.el (spam-whitelist, spam-blacklist, spam-enter-whitelist):
9286 Improve docstring. 9261 Improve docstring.
@@ -9317,11 +9292,10 @@
9317 * nnml.el (nnml-save-nov, nnml-generate-nov-file): 9292 * nnml.el (nnml-save-nov, nnml-generate-nov-file):
9318 * pop3.el (pop3-md5): Don't hardcode point-min == 1. 9293 * pop3.el (pop3-md5): Don't hardcode point-min == 1.
9319 9294
93202002-04-12 Katsumi Yamaoka <yamaoka@jpl.org> 92952002-04-12 Daiki Ueno <ueno@unixuser.org>
9321 9296
9322 * gnus-srvr.el (gnus-server-set-info): Clear 9297 * gnus-srvr.el (gnus-server-set-info): Clear
9323 `gnus-server-method-cache' when `gnus-server-alist' is changed. 9298 `gnus-server-method-cache' when `gnus-server-alist' is changed.
9324 From Daiki Ueno <ueno@unixuser.org>.
9325 9299
93262002-04-11 Simon Josefsson <jas@extundo.com> 93002002-04-11 Simon Josefsson <jas@extundo.com>
9327 9301
@@ -9475,20 +9449,18 @@
9475 9449
9476 * message.el (message-mode): Fix doc. 9450 * message.el (message-mode): Fix doc.
9477 9451
94782002-03-25 Simon Josefsson <jas@extundo.com> 94522002-03-25 Matthieu Moy <Matthieu.Moy@imag.fr>
9479 9453
9480 * message.el (message-subject-re-regexp): Skip Re[42]: junk. From 9454 * message.el (message-subject-re-regexp): Skip Re[42]: junk.
9481 Matthieu Moy <Matthieu.Moy@imag.fr>.
9482 9455
94832002-03-24 Jesper Harder <harder@ifa.au.dk> 94562002-03-24 Jesper Harder <harder@ifa.au.dk>
9484 9457
9485 * mml-sec.el (mml-unsecure-message): Add docstring. 9458 * mml-sec.el (mml-unsecure-message): Add docstring.
9486 9459
94872002-03-23 ShengHuo ZHU <zsh@cs.rochester.edu> 94602002-03-23 Andre Srinivasan <andre@slamdunknetworks.com> (tiny change)
9488 9461
9489 * nnmail.el (nnmail-large-newsgroup): Fix doc, allow non-numeric 9462 * nnmail.el (nnmail-large-newsgroup): Fix doc, allow non-numeric
9490 value. 9463 value.
9491 Trivial change from andre@slamdunknetworks.com
9492 9464
94932002-03-22 Josh Huber <huber@alum.wpi.edu> 94652002-03-22 Josh Huber <huber@alum.wpi.edu>
9494 9466
@@ -9516,8 +9488,9 @@
9516 * message.el (message-font-lock-keywords): Support multi-line MML 9488 * message.el (message-font-lock-keywords): Support multi-line MML
9517 tags. 9489 tags.
9518 9490
94912002-03-21 L,Bu(Brentey K,Ba(Broly <lorentey@elte.hu>
9492
9519 * gnus-sum.el (gnus-print-buffer): Remove gnus-decoration. 9493 * gnus-sum.el (gnus-print-buffer): Remove gnus-decoration.
9520 Trivial change from lorentey@elte.hu (L,Bu(Brentey K,Aa(Broly)
9521 9494
95222002-03-20 Katsumi Yamaoka <yamaoka@jpl.org> 94952002-03-20 Katsumi Yamaoka <yamaoka@jpl.org>
9523 9496
@@ -9541,30 +9514,28 @@
9541 (gnus-sum-thread-tree-leaf-with-other) 9514 (gnus-sum-thread-tree-leaf-with-other)
9542 (gnus-sum-thread-tree-single-leaf): Make customizable. 9515 (gnus-sum-thread-tree-single-leaf): Make customizable.
9543 9516
95442002-03-16 Simon Josefsson <jas@extundo.com> 95172002-03-16 Francis Litterio <franl@world.std.com>
9545 9518
9546 * gnus-util.el (gnus-extract-address-components): Don't break on 9519 * gnus-util.el (gnus-extract-address-components): Don't break on
9547 names such as James "Kibo" Parry. From Francis Litterio 9520 names such as James "Kibo" Parry.
9548 <franl@world.std.com>.
9549 9521
95502002-03-13 Simon Josefsson <jas@extundo.com> 95222002-03-13 Pavel Jan,Am(Bk <Pavel@Janik.cz>
9551 9523
9552 * pop3.el (pop3-open-server): Revert multibyte change. From 9524 * pop3.el (pop3-open-server): Revert multibyte change.
9553 Pavel@Janik.cz (Pavel Jan,Am(Bk).
9554 9525
9555 * message.el (message-send-mail-with-qmail): Make it work. From 9526 * message.el (message-send-mail-with-qmail): Make it work.
9556 Pavel@Janik.cz (Pavel Jan,Am(Bk).
9557 9527
95582002-03-13 Josh Huber <huber@alum.wpi.edu> 95282002-03-13 Josh Huber <huber@alum.wpi.edu>
9559 9529
9560 * message.el (message-make-mft): Set case-fold-search while 9530 * message.el (message-make-mft): Set case-fold-search while
9561 generating the MFT. Also, a little cleanup in the MFT code. 9531 generating the MFT. Also, a little cleanup in the MFT code.
9562 9532
95632002-03-12 Simon Josefsson <jas@extundo.com> 95332002-03-12 Faried Nawaz <fn@hungry.org> (tiny change)
9564 9534
9565 * message.el (message-qmail-inject-args): May be function. 9535 * message.el (message-qmail-inject-args): May be function. Adjust
9566 (message-send-mail-with-qmail): Call function if m-q-i-a is 9536 doc string and custom type.
9567 function. From fn@hungry.org (Faried Nawaz). 9537 (message-send-mail-with-qmail): Call function if m-q-i-a is a
9538 function.
9568 9539
95692002-03-12 ShengHuo ZHU <zsh@cs.rochester.edu> 95402002-03-12 ShengHuo ZHU <zsh@cs.rochester.edu>
9570 9541
@@ -9586,26 +9557,26 @@
9586 * nnslashdot.el (nnslashdot-request-article): Remove javascript 9557 * nnslashdot.el (nnslashdot-request-article): Remove javascript
9587 too. 9558 too.
9588 9559
95892002-03-09 ShengHuo ZHU <zsh@cs.rochester.edu> 95602002-03-09 Andre Srinivasan <andre@slamdunknetworks.com> (tiny change)
9590 9561
9591 * gnus-sum.el (gnus-summary-save-parts-default-mime): Remove 9562 * gnus-sum.el (gnus-summary-save-parts-default-mime): Remove
9592 duplication. 9563 duplication.
9593 (gnus-summary-save-parts-type-history): Ditto. 9564 (gnus-summary-save-parts-type-history): Ditto.
9594 (gnus-summary-save-parts-last-directory): Ditto. 9565 (gnus-summary-save-parts-last-directory): Ditto.
9595 Trivial change from andre@slamdunknetworks.com
9596 9566
95972002-03-09 Paul Jarc <prj@po.cwru.edu> 95672002-03-09 Paul Jarc <prj@po.cwru.edu>
9598 9568
9599 * gnus-start.el (gnus-auto-subscribed-groups): Include nnmaildir. 9569 * gnus-start.el (gnus-auto-subscribed-groups): Include nnmaildir.
9600 9570
95712002-03-06 Matthieu Moy <Matthieu.Moy@imag.fr>
9572
9573 * gnus-msg.el (gnus-summary-resend-message-edit): New function.
9574
96012002-03-06 ShengHuo ZHU <zsh@cs.rochester.edu> 95752002-03-06 ShengHuo ZHU <zsh@cs.rochester.edu>
9602 9576
9603 * nnslashdot.el (nnslashdot-request-article): Use "<!-- no ad 6 9577 * nnslashdot.el (nnslashdot-request-article): Use "<!-- no ad 6
9604 -->" as the end of the first article. 9578 -->" as the end of the first article.
9605 9579
9606 * gnus-msg.el (gnus-summary-resend-message-edit): New function.
9607 From Matthieu Moy <Matthieu.Moy@imag.fr>
9608
9609 * message.el (message-add-action): Use add-to-list. 9580 * message.el (message-add-action): Use add-to-list.
9610 (message-delete-action): New function. 9581 (message-delete-action): New function.
9611 9582
@@ -9667,17 +9638,15 @@
9667 completing-read. 9638 completing-read.
9668 (mm-view-pkcs7-decrypt): CRLF->LF. 9639 (mm-view-pkcs7-decrypt): CRLF->LF.
9669 9640
96702002-03-04 Paul Jarc <prj@po.cwru.edu> 96412002-03-04 Teodor Zlatanov <teodor.zlatanov@divine.com>
9671 9642
9672 * message.el (message-hierarchical-addresses): New variable. 9643 * message.el (message-hierarchical-addresses): New variable.
9673 (message-get-reply-headers): Use it. 9644 (message-get-reply-headers): Use it.
9674 From Ted Zlatanov <teodor.zlatanov@divine.com>
9675 9645
96762002-03-03 ShengHuo ZHU <zsh@cs.rochester.edu> 96462002-03-03 Geoff Greene <ggreene@wpi.edu> (tiny change)
9677 9647
9678 * message.el (message-mode): If buffer-file-name, don't set auto 9648 * message.el (message-mode): If buffer-file-name, don't set auto
9679 save file name. 9649 save file name.
9680 Trivial change from Geoff Greene <ggreene@wpi.edu>
9681 9650
96822002-03-02 ShengHuo ZHU <zsh@cs.rochester.edu> 96512002-03-02 ShengHuo ZHU <zsh@cs.rochester.edu>
9683 9652
@@ -9724,11 +9693,12 @@
9724 * gnus-sum.el (gnus-articles-to-read): Use large-newsgroup-initial. 9693 * gnus-sum.el (gnus-articles-to-read): Use large-newsgroup-initial.
9725 (gnus-summary-insert-old-articles): Ditto. 9694 (gnus-summary-insert-old-articles): Ditto.
9726 9695
97272002-02-26 ShengHuo ZHU <zsh@cs.rochester.edu> 96962002-02-26 TSUCHIYA Masatoshi <tsuchiya@namazu.org>
9728 9697
9729 * gnus-sum.el (gnus-articles-to-read): `gnus-large-newsgroup' is 9698 * gnus-sum.el (gnus-articles-to-read): `gnus-large-newsgroup' is
9730 used as the default answer of the question, "How many articles?". 9699 used as the default answer of the question, "How many articles?".
9731 From TSUCHIYA Masatoshi <tsuchiya@namazu.org> 9700
97012002-02-26 ShengHuo ZHU <zsh@cs.rochester.edu>
9732 9702
9733 * nnagent.el (nnagent-retrieve-headers): Remove articles with 9703 * nnagent.el (nnagent-retrieve-headers): Remove articles with
9734 small numbers. 9704 small numbers.
@@ -9737,14 +9707,15 @@
9737 9707
9738 * deuglify.el: Fix comments. 9708 * deuglify.el: Fix comments.
9739 9709
97102002-02-23 Andre Srinivasan <andre@slamdunknetworks.com> (tiny change)
9711
9712 * mml.el (mml-generate-mime-1): Add cdr.
9713
97402002-02-23 ShengHuo ZHU <zsh@cs.rochester.edu> 97142002-02-23 ShengHuo ZHU <zsh@cs.rochester.edu>
9741 9715
9742 * html2text.el (html2text-clean-anchor): If there is no HREF, 9716 * html2text.el (html2text-clean-anchor): If there is no HREF,
9743 insert nothing. 9717 insert nothing.
9744 9718
9745 * mml.el (mml-generate-mime-1): Add cdr.
9746 From: andre@slamdunknetworks.com
9747
9748 * mm-view.el (mm-text-html-renderer-alist): Add html2text. 9719 * mm-view.el (mm-text-html-renderer-alist): Add html2text.
9749 (mm-text-html-washer-alist): Ditto. 9720 (mm-text-html-washer-alist): Ditto.
9750 9721
@@ -9760,11 +9731,15 @@
9760 9731
9761 * deuglify.el: Change copy right. Add autoload. Add coding-system. 9732 * deuglify.el: Change copy right. Add autoload. Add coding-system.
9762 9733
9763 * deuglify.el: New file. The original file name is 97342002-02-22 Raymond Scholz <rscholz@zonix.de>
9764 gnus-outlook-deuglify.el from Raymond Scholz <rscholz@zonix.de>. 9735
9736 * deuglify.el: New file. The original file name is
9737 gnus-outlook-deuglify.el.
9738
97392002-02-22 Andre Srinivasan <andre@slamdunknetworks.com> (tiny change)
9765 9740
9766 * mm-decode.el (mm-display-external): Use 9741 * mm-decode.el (mm-display-external): Use
9767 mm-file-name-rewrite-functions. From <andre@slamdunknetworks.com> 9742 mm-file-name-rewrite-functions.
9768 9743
97692002-02-22 Paul Jarc <prj@po.cwru.edu> 97442002-02-22 Paul Jarc <prj@po.cwru.edu>
9770 9745
@@ -9800,17 +9775,19 @@
9800 9775
9801 * gnus-art.el (gnus-article-edit-done): Widen the buffer. 9776 * gnus-art.el (gnus-article-edit-done): Widen the buffer.
9802 9777
9778 * message.el (message-send-mail): Be talkative.
9779
97802002-02-20 TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp>
9781
9803 * gnus-group.el (gnus-group-name-decode): Don't test 9782 * gnus-group.el (gnus-group-name-decode): Don't test
9804 multibyte-string, because it breaks XEmacs. 9783 multibyte-string, because it breaks XEmacs.
9805 From: TSUCHIYA Masatoshi <tsuchiya@pine.kuee.kyoto-u.ac.jp>
9806 9784
9807 * message.el (message-send-mail): Be talkative. 97852002-02-20 Reiner Steib <Reiner.Steib@gmx.de>
9808 9786
9809 * mm-decode.el (mm-inlined-types): Add application/x-emacs-lisp. 9787 * mm-decode.el (mm-inlined-types): Add application/x-emacs-lisp.
9810 (mm-automatic-display): Ditto. 9788 (mm-automatic-display): Ditto.
9811 9789
9812 * mailcap.el (mailcap-mime-data): Ditto. 9790 * mailcap.el (mailcap-mime-data): Ditto.
9813 From: Reiner Steib <4uce.02.r.steib@gmx.net>
9814 9791
98152002-02-20 Katsumi Yamaoka <yamaoka@jpl.org> 97922002-02-20 Katsumi Yamaoka <yamaoka@jpl.org>
9816 9793
@@ -9852,10 +9829,10 @@
9852 9829
9853 * nnultimate.el (nnultimate-retrieve-headers): Clean up. 9830 * nnultimate.el (nnultimate-retrieve-headers): Clean up.
9854 9831
98552002-02-18 Paul Jarc <prj@po.cwru.edu> 98322002-02-18 Mark Thomas <mthomas@cmu.edu>
9856 9833
9857 * gnus-util.el (gnus-parent-id): Ignore trailing whitespace in the 9834 * gnus-util.el (gnus-parent-id): Ignore trailing whitespace in the
9858 References header field. From Mark Thomas <mthomas@cmu.edu>. 9835 References header field.
9859 9836
98602002-02-18 ShengHuo ZHU <zsh@cs.rochester.edu> 98372002-02-18 ShengHuo ZHU <zsh@cs.rochester.edu>
9861 9838
@@ -9969,8 +9946,9 @@
9969 9946
9970 * message-utils.el: Adopt the file. 9947 * message-utils.el: Adopt the file.
9971 9948
99492002-02-15 Holger Schauer <Holger.Schauer@gmx.de>
9950
9972 * message-utils.el: New file. 9951 * message-utils.el: New file.
9973 From Holger Schauer <Holger.Schauer@gmx.de>
9974 9952
99752002-02-14 ShengHuo ZHU <zsh@cs.rochester.edu> 99532002-02-14 ShengHuo ZHU <zsh@cs.rochester.edu>
9976 9954
@@ -10078,9 +10056,6 @@
10078 gnus-decoration property. 10056 gnus-decoration property.
10079 * gnus-msg.el (gnus-copy-article-buffer): Remove gnus-decoration. 10057 * gnus-msg.el (gnus-copy-article-buffer): Remove gnus-decoration.
10080 10058
10081 * message.el (message-mode): Set local-abbrev-table.
10082 From Matt Armstrong <matt@lickey.com>.
10083
10084 * gnus-art.el (gnus-article-treat-unfold-headers): Don't remove 10059 * gnus-art.el (gnus-article-treat-unfold-headers): Don't remove
10085 too many spaces. 10060 too many spaces.
10086 10061
@@ -10088,8 +10063,13 @@
10088 (rfc2047-decode-region): Don't unfold. Let 10063 (rfc2047-decode-region): Don't unfold. Let
10089 gnus-article-treat-unfold-headers do it. 10064 gnus-article-treat-unfold-headers do it.
10090 10065
100662002-02-07 Matt Armstrong <matt@lickey.com>.
10067
10068 * message.el (message-mode): Set local-abbrev-table.
10069
100702002-02-07 Jesper Harder <harder@ifa.au.dk>
10071
10091 * gnus-sum.el (gnus-dependencies-add-header): Fix typo. 10072 * gnus-sum.el (gnus-dependencies-add-header): Fix typo.
10092 From: Jesper Harder <harder@ifa.au.dk>
10093 10073
100942002-02-06 Lars Magne Ingebrigtsen <larsi@gnus.org> 100742002-02-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
10095 10075
@@ -10116,16 +10096,18 @@
10116 10096
10117 * nnweb.el (nnweb-google-parse-1): Use a correct format of date. 10097 * nnweb.el (nnweb-google-parse-1): Use a correct format of date.
10118 10098
10119 * gnus-agent.el (gnus-agent-summary-make-menu-bar): Fix typo.
10120 From Stefan Reich,Av(Br <xsteve@riic.at>.
10121
10122 * nnagent.el (nnagent-request-expire-articles): Don't delete 10099 * nnagent.el (nnagent-request-expire-articles): Don't delete
10123 files. 10100 files.
10124 10101
101252002-02-05 ShengHuo ZHU <zsh@cs.rochester.edu> 101022002-02-06 Stefan Reich,Av(Br <xsteve@riic.at>
10103
10104 * gnus-agent.el (gnus-agent-summary-make-menu-bar): Fix typo.
10105
101062002-02-05 Sriram Karra <karra@cs.utah.edu>
10126 10107
10127 * message.el (message-gen-unsubscribed-mft): New function. 10108 * message.el (message-gen-unsubscribed-mft): New function.
10128 From Sriram Karra <karra@cs.utah.edu>. 10109
101102002-02-05 ShengHuo ZHU <zsh@cs.rochester.edu>
10129 10111
10130 * gnus.el (gnus-article-unpropagated-mark-lists): Backslash the 10112 * gnus.el (gnus-article-unpropagated-mark-lists): Backslash the
10131 open parenthesis. 10113 open parenthesis.
@@ -10167,17 +10149,17 @@
10167 * gnus-art.el (gnus-treatment-function-alist): Move hide-citation, 10149 * gnus-art.el (gnus-treatment-function-alist): Move hide-citation,
10168 highlight-citation after emphasize. 10150 highlight-citation after emphasize.
10169 10151
101702002-02-04 Simon Josefsson <jas@extundo.com> 101522002-02-04 David Edmondson <dme@sun.com>
10171 10153
10172 * nnfolder.el (nnfolder-open-marks): 10154 * nnfolder.el (nnfolder-open-marks): Message when done.
10173 10155
10174 * nnml.el (nnml-open-marks): Message when done. From David 10156 * nnml.el (nnml-open-marks): Ditto.
10175 Edmondson <dme@sun.com>.
10176 10157
101772002-02-03 ShengHuo ZHU <zsh@cs.rochester.edu> 101582002-02-03 Steinar Bang <sb@dod.no>
10178 10159
10179 * imap.el (imap-anonymous-auth): Fix typo. 10160 * imap.el (imap-anonymous-auth): Fix typo.
10180 From: Steinar Bang <sb@dod.no> 10161
101622002-02-03 ShengHuo ZHU <zsh@cs.rochester.edu>
10181 10163
10182 * gnus-cache.el (gnus-cache-braid-nov): Use set-buffer instead of 10164 * gnus-cache.el (gnus-cache-braid-nov): Use set-buffer instead of
10183 save-excursion. 10165 save-excursion.
@@ -10231,14 +10213,15 @@
10231 10213
10232 * gnus.el (gnus-agent): Make it customizable. 10214 * gnus.el (gnus-agent): Make it customizable.
10233 10215
10234 * gnus-dired.el: New file.
10235 From Benjamin Rutt <brutt@bloomington.in.us>
10236
10237 * gnus-cache.el (gnus-cache-articles-in-group): Remove from active 10216 * gnus-cache.el (gnus-cache-articles-in-group): Remove from active
10238 if no article. 10217 if no article.
10239 (gnus-cache-possibly-remove-article): Ditto. 10218 (gnus-cache-possibly-remove-article): Ditto.
10240 (gnus-cache-possibly-enter-article): Use gnus-add-to-sorted-list. 10219 (gnus-cache-possibly-enter-article): Use gnus-add-to-sorted-list.
10241 10220
102212002-02-02 Benjamin Rutt <brutt@bloomington.in.us>
10222
10223 * gnus-dired.el: New file.
10224
102422002-02-01 Simon Josefsson <jas@extundo.com> 102252002-02-01 Simon Josefsson <jas@extundo.com>
10243 10226
10244 * gnus-int.el (gnus-request-accept-article): Use gnus-get-function. 10227 * gnus-int.el (gnus-request-accept-article): Use gnus-get-function.
@@ -10739,7 +10722,7 @@
10739 10722
10740 * gnus.el (gnus-version-number): Bump version number. 10723 * gnus.el (gnus-version-number): Bump version number.
10741 10724
107422002-01-20 05:33:30 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 107252002-01-20 05:33:30 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
10743 10726
10744 * gnus.el: Oort Gnus v0.05 is released. 10727 * gnus.el: Oort Gnus v0.05 is released.
10745 10728
@@ -10973,8 +10956,9 @@
10973 * message.el (message-newline-and-reformat): Use `newline' instead 10956 * message.el (message-newline-and-reformat): Use `newline' instead
10974 of inserting \n, so that the newline is marked as hard. 10957 of inserting \n, so that the newline is marked as hard.
10975 10958
109592002-01-13 Jesper Harder <harder@ifa.au.dk>
10960
10976 * gnus-spec.el (gnus-pad-form): Don't evaluate EL multiple times. 10961 * gnus-spec.el (gnus-pad-form): Don't evaluate EL multiple times.
10977 From Jesper Harder <harder@ifa.au.dk>.
10978 10962
109792002-01-12 ShengHuo ZHU <zsh@cs.rochester.edu> 109632002-01-12 ShengHuo ZHU <zsh@cs.rochester.edu>
10980 10964
@@ -11198,11 +11182,13 @@
11198 * gnus-group.el (gnus-group-read-ephemeral-group): Restore the old 11182 * gnus-group.el (gnus-group-read-ephemeral-group): Restore the old
11199 behavior of quit-config. 11183 behavior of quit-config.
11200 11184
111852002-01-08 Bj,Ax(Brn Mork <bmork@dod.no> (tiny change)
11186
11201 * message.el (message-make-from): Don't quote fullname. 11187 * message.el (message-make-from): Don't quote fullname.
11202 From: Bj,Ax(Brn Mork <bmork@dod.no> 11188
111892002-01-08 Andre Srinivasan <andre@slamdunknetworks.com> (tiny change)
11203 11190
11204 * gnus-group.el (gnus-group-suspend): Don't kill message buffers. 11191 * gnus-group.el (gnus-group-suspend): Don't kill message buffers.
11205 From: <andre@slamdunknetworks.com>
11206 11192
112072002-01-07 ShengHuo ZHU <zsh@cs.rochester.edu> 111932002-01-07 ShengHuo ZHU <zsh@cs.rochester.edu>
11208 11194
@@ -11485,10 +11471,10 @@
11485 11471
11486 * gnus-agent.el (gnus-agent-fetch-session): Run hook. 11472 * gnus-agent.el (gnus-agent-fetch-session): Run hook.
11487 11473
114882002-01-03 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 114742002-01-03 Dave Love <fx@gnu.org>
11489 11475
11490 * gnus-start.el (gnus-read-init-file): Don't force coding system 11476 * gnus-start.el (gnus-read-init-file): Don't force coding system
11491 for ~/.gnus. From Dave Love <fx@gnu.org>. 11477 for ~/.gnus.
11492 11478
114932002-01-03 ShengHuo ZHU <zsh@cs.rochester.edu> 114792002-01-03 ShengHuo ZHU <zsh@cs.rochester.edu>
11494 11480
@@ -11754,7 +11740,7 @@
11754 (message-fix-before-sending): Highlight invisible text and place 11740 (message-fix-before-sending): Highlight invisible text and place
11755 point there. 11741 point there.
11756 11742
117572002-01-01 02:32:53 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 117432002-01-01 02:32:53 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
11758 11744
11759 * gnus.el: Oort Gnus v0.04 is released. 11745 * gnus.el: Oort Gnus v0.04 is released.
11760 11746
@@ -12093,11 +12079,10 @@
12093 (gnus-update-marks): Use `gnus-range-add' on a uncompressed list 12079 (gnus-update-marks): Use `gnus-range-add' on a uncompressed list
12094 instead, it seems to result in shorter ranges. 12080 instead, it seems to result in shorter ranges.
12095 12081
120962001-12-26 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 120822001-12-26 11:00:00 Jesper Harder <harder@ifa.au.dk>
12097 12083
12098 * mm-util.el (mm-iso-8859-x-to-15-region): Use 12084 * mm-util.el (mm-iso-8859-x-to-15-region): Use
12099 insert-before-markers. 12085 insert-before-markers.
12100 From Jesper Harder <harder@ifa.au.dk>
12101 12086
121022001-12-26 Paul Jarc <prj@po.cwru.edu> 120872001-12-26 Paul Jarc <prj@po.cwru.edu>
12103 12088
@@ -12126,12 +12111,11 @@
12126 (nnmaildir-version): Indicate that nnmaildir is now a standard 12111 (nnmaildir-version): Indicate that nnmaildir is now a standard
12127 part of Gnus, not separately released. 12112 part of Gnus, not separately released.
12128 12113
121292001-12-21 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 121142001-12-21 08:00:00 Pavel Jan,Am(Bk <Pavel@Janik.cz>
12130 12115
12131 * gnus-art.el, gnus-picon.el, gnus-sieve.el, gnus-sum.el: 12116 * gnus-art.el, gnus-picon.el, gnus-sieve.el, gnus-sum.el:
12132 * gnus-xmas.el, imap.el, mailcap.el, mm-util.el, nnfolder.el: 12117 * gnus-xmas.el, imap.el, mailcap.el, mm-util.el, nnfolder.el:
12133 * nnheader.el, nnmail.el: Nil/NIL vs. nil. 12118 * nnheader.el, nnmail.el: Nil/NIL vs. nil.
12134 From Pavel Jan,Am(Bk <Pavel@Janik.cz>
12135 12119
121362001-12-20 15:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 121202001-12-20 15:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
12137 12121
@@ -12144,10 +12128,9 @@
12144 (nnimap-close-group): Don't quote KEYLIST items. Suggested by 12128 (nnimap-close-group): Don't quote KEYLIST items. Suggested by
12145 Brian P Templeton <bpt@tunes.org>. 12129 Brian P Templeton <bpt@tunes.org>.
12146 12130
121472001-12-19 17:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 121312001-12-19 17:00:00 Paul Jarc <prj@po.cwru.edu>
12148 12132
12149 * nnmaildir.el: New file. 12133 * nnmaildir.el: New file.
12150 From Paul Jarc <prj@po.cwru.edu>.
12151 12134
121522001-12-19 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 121352001-12-19 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
12153 12136
@@ -12171,8 +12154,7 @@
12171 12154
12172 * gnus-win.el (gnus-get-buffer-window): Use gnus-delete-if. 12155 * gnus-win.el (gnus-get-buffer-window): Use gnus-delete-if.
12173 12156
121742001-12-18 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 121572001-12-18 11:00:00 Harald Meland <Harald.Meland@usit.uio.no>
12175 From Harald Meland <Harald.Meland@usit.uio.no>
12176 12158
12177 * gnus-win.el (gnus-get-buffer-window): New function. 12159 * gnus-win.el (gnus-get-buffer-window): New function.
12178 (gnus-all-windows-visible-p): Use it. 12160 (gnus-all-windows-visible-p): Use it.
@@ -12247,11 +12229,10 @@
12247 subscribe-level 12229 subscribe-level
12248 * gnus-topic.el (gnus-subscribe-topics): use it. 12230 * gnus-topic.el (gnus-subscribe-topics): use it.
12249 12231
122502001-12-13 22:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 122322001-12-13 22:00:00 Sean Neakums <sneakums@zork.net> (tiny change)
12251 12233
12252 * gnus-msg.el (gnus-summary-mail-forward): Forward all marked 12234 * gnus-msg.el (gnus-summary-mail-forward): Forward all marked
12253 messages. (A small patch with indentation) 12235 messages.
12254 From Sean Neakums <sneakums@zork.net>.
12255 12236
12256 * gnus-uu.el (gnus-uu-grab-articles): Set gnus-current-article to 12237 * gnus-uu.el (gnus-uu-grab-articles): Set gnus-current-article to
12257 nil after shooting down the gnus-original-article-buffer. 12238 nil after shooting down the gnus-original-article-buffer.
@@ -12326,12 +12307,11 @@
12326 12307
12327 * mml.el (mime-to-mml): Remove Content-Disposition too. 12308 * mml.el (mime-to-mml): Remove Content-Disposition too.
12328 12309
123292001-12-09 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 123102001-12-09 08:00:00 TSUCHIYA Masatoshi <tsuchiya@namazu.org>
12330 12311
12331 * gnus-sum.el (gnus-summary-buffer-name): Decode group name. 12312 * gnus-sum.el (gnus-summary-buffer-name): Decode group name.
12332 * gnus-group.el (gnus-group-name-decode): Decode unibyte 12313 * gnus-group.el (gnus-group-name-decode): Decode unibyte
12333 strings only. 12314 strings only.
12334 From TSUCHIYA Masatoshi <tsuchiya@namazu.org>
12335 12315
123362001-12-08 Nevin Kapur <nevin@jhu.edu> 123162001-12-08 Nevin Kapur <nevin@jhu.edu>
12337 12317
@@ -12432,15 +12412,14 @@
12432 the beginning of lines. 12412 the beginning of lines.
12433 (gnus-complex-form-to-spec): Ditto. 12413 (gnus-complex-form-to-spec): Ditto.
12434 12414
124352001-12-01 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 124152001-12-01 08:00:00 Paul Jarc <prj@po.cwru.edu>
12436 12416
12437 * message.el (message-make-mft): Fix the m-s-a-file regexp. 12417 * message.el (message-make-mft): Fix the m-s-a-file regexp.
12438 From Paul Jarc <prj@po.cwru.edu>.
12439 12418
124402001-11-30 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 124192001-11-30 21:00:00 Paul Jarc <prj@po.cwru.edu>
12441 12420
12442 * message.el: New variable message-subscribed-address-file; 12421 * message.el: New variable message-subscribed-address-file;
12443 use it in message-make-mft. From Paul Jarc <prj@po.cwru.edu>. 12422 use it in message-make-mft.
12444 12423
124452001-11-30 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 124242001-11-30 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
12446 12425
@@ -12573,11 +12552,11 @@
12573 12552
12574 * message.el (sha1): eval-and-compile. 12553 * message.el (sha1): eval-and-compile.
12575 12554
125762001-11-20 Simon Josefsson <jas@extundo.com> 125552001-11-20 Paul Jarc <prj@po.cwru.edu>
12577 12556
12578 * message.el (message-allow-no-recipients): New variable. 12557 * message.el (message-allow-no-recipients): New variable.
12579 (message-send): Use it, customize the prompting when posting to 12558 (message-send): Use it, customize the prompting when posting to
12580 Gcc/Fcc alone. From prj@po.cwru.edu (Paul Jarc). 12559 Gcc/Fcc alone.
12581 12560
125822001-11-20 09:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 125612001-11-20 09:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
12583 12562
@@ -12697,14 +12676,17 @@
12697 12676
12698 * mml2015.el: Mention RFC 3156. 12677 * mml2015.el: Mention RFC 3156.
12699 12678
12700 * mml1991.el: New file. From Sascha L,A|(Bdecke <sascha@meta-x.de>. 126792001-11-12 Sascha L,A|(Bdecke <sascha@meta-x.de>
12680
12681 * mml1991.el: New file.
12701 12682
127022001-11-12 13:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 126832001-11-12 13:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
12703 12684
12704 * gnus-start.el (gnus-auto-subscribed-groups): Use ^nnml. 12685 * gnus-start.el (gnus-auto-subscribed-groups): Use ^nnml.
12705 12686
126872001-11-12 Michael Cook <Michael.Cook@cisco.com>
12688
12706 * gnus-sum.el (gnus-summary-move-article): Use number-to-string. 12689 * gnus-sum.el (gnus-summary-move-article): Use number-to-string.
12707 From <Michael.Cook@cisco.com>
12708 12690
127092001-11-11 Simon Josefsson <jas@extundo.com> 126912001-11-11 Simon Josefsson <jas@extundo.com>
12710 12692
@@ -12713,10 +12695,9 @@
12713 canlock, no need to require two different hash algs). Suggested 12695 canlock, no need to require two different hash algs). Suggested
12714 by Ferenc Wagner <wferi@bolyai1.elte.hu>. 12696 by Ferenc Wagner <wferi@bolyai1.elte.hu>.
12715 12697
127162001-11-09 Simon Josefsson <jas@extundo.com> 126982001-11-09 Pavel Jan,Am(Bk <Pavel@Janik.cz>
12717 12699
12718 * gnus.el (gnus-local-domain): Fix doc. From Pavel Jan,Am(Bk 12700 * gnus.el (gnus-local-domain): Fix doc.
12719 <Pavel@Janik.cz>.
12720 12701
127212001-11-09 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 127022001-11-09 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
12722 12703
@@ -12958,7 +12939,7 @@
12958 mm-with-unibyte-current-buffer-mule4): Use them. 12939 mm-with-unibyte-current-buffer-mule4): Use them.
12959 (mm-find-mime-charset-region): Treat iso-2022-jp. 12940 (mm-find-mime-charset-region): Treat iso-2022-jp.
12960 12941
12961 From Dave Love <fx@gnu.org>: 129422001-10-30 Dave Love <fx@gnu.org>
12962 12943
12963 * mm-util.el (mm-mime-mule-charset-alist): Make it correct by 12944 * mm-util.el (mm-mime-mule-charset-alist): Make it correct by
12964 construction. 12945 construction.
@@ -13031,10 +13012,10 @@
13031 13012
13032 * gnus-msg.el (gnus-setup-message): Call post-command-hook. 13013 * gnus-msg.el (gnus-setup-message): Call post-command-hook.
13033 13014
130342001-10-29 Simon Josefsson <jas@extundo.com> 130152001-10-29 Jesper Harder <harder@myrealbox.com>
13035 13016
13036 * mml.el (mml-preview): Bind message-this-is-news if it is 13017 * mml.el (mml-preview): Bind message-this-is-news if it is
13037 news. From Jesper Harder <harder@myrealbox.com>. 13018 news.
13038 13019
130392001-10-28 Simon Josefsson <jas@extundo.com> 130202001-10-28 Simon Josefsson <jas@extundo.com>
13040 13021
@@ -13050,8 +13031,9 @@
13050 * message.el (message-indent-citation): Don't add trailing 13031 * message.el (message-indent-citation): Don't add trailing
13051 whitespace when citing text. 13032 whitespace when citing text.
13052 13033
13053 * gnus.el (gnus-group-faq-directory): Fix. From Jesper Harder 130342001-10-27 Jesper Harder <harder@myrealbox.com>
13054 <harder@ifa.au.dk>. 13035
13036 * gnus.el (gnus-group-faq-directory): Fix.
13055 13037
130562001-10-26 14:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 130382001-10-26 14:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
13057 13039
@@ -13128,22 +13110,23 @@
13128 * message.el (message-do-auto-fill): Avoid calling 13110 * message.el (message-do-auto-fill): Avoid calling
13129 'rfc822-goto-eoh'. 13111 'rfc822-goto-eoh'.
13130 13112
131312001-10-20 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 131132001-10-20 Paul Jarc <prj@po.cwru.edu>
13132 From Paul Jarc <prj@po.cwru.edu>.
13133 13114
13134 * message.el (message-get-reply-headers): Restructure the logic 13115 * message.el (message-get-reply-headers): Restructure the logic
13135 and add comments. From Paul Jarc <prj@po.cwru.edu>. 13116 and add comments.
13136 13117
131372001-10-20 Simon Josefsson <jas@extundo.com> 131182001-10-20 Simon Josefsson <jas@extundo.com>
13138 13119
13139 * message.el (message-cancel-news): Support cancel-locks. 13120 * message.el (message-cancel-news): Support cancel-locks.
13140 Suggested by Per Abrahamsson. 13121 Suggested by Per Abrahamsson.
13141 13122
13142 * nnml.el (nnml-marks-changed-p): Use `equal' when comparing
13143 conses. From David Z Maze <dmaze@MIT.EDU>.
13144
13145 * nnfolder.el (nnfolder-marks-changed-p): Ditto. 13123 * nnfolder.el (nnfolder-marks-changed-p): Ditto.
13146 13124
131252001-10-20 David Z Maze <dmaze@MIT.EDU>
13126
13127 * nnml.el (nnml-marks-changed-p): Use `equal' when comparing
13128 conses.
13129
131472001-10-19 Per Abrahamsen <abraham@dina.kvl.dk> 131302001-10-19 Per Abrahamsen <abraham@dina.kvl.dk>
13148 13131
13149 * mm-decode.el (mm-default-directory): Fix customize type. 13132 * mm-decode.el (mm-default-directory): Fix customize type.
@@ -13173,8 +13156,7 @@
13173 * gnus-sum.el (gnus-group-make-articles-read): Call g-r-set-mark 13156 * gnus-sum.el (gnus-group-make-articles-read): Call g-r-set-mark
13174 when undoing. 13157 when undoing.
13175 13158
131762001-10-18 Simon Josefsson <jas@extundo.com> 131592001-10-18 Frank Schmitt <usereplyto@Frank-Schmitt.net>
13177 From Frank Schmitt <usereplyto@Frank-Schmitt.net>
13178 13160
13179 * gnus-sum.el (gnus-summary-limit-to-display-predicate): Fix typo. 13161 * gnus-sum.el (gnus-summary-limit-to-display-predicate): Fix typo.
13180 (gnus-summary-make-menu-bar): Ditto. 13162 (gnus-summary-make-menu-bar): Ditto.
@@ -13184,11 +13166,10 @@
13184 * nnimap.el (nnimap-expiry-target): Make sure it is back to the 13166 * nnimap.el (nnimap-expiry-target): Make sure it is back to the
13185 server. Suggested by ShengHuo ZHU <zsh@cs.rochester.edu>. 13167 server. Suggested by ShengHuo ZHU <zsh@cs.rochester.edu>.
13186 13168
131872001-10-17 17:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 131692001-10-17 17:00:00 Frank Schmitt <usenet@Frank-Schmitt.net>
13188 13170
13189 * gnus-sum.el (gnus-summary-line-format-alist): user-date entry. 13171 * gnus-sum.el (gnus-summary-line-format-alist): user-date entry.
13190 * gnus-util.el (gnus-user-date): New function. 13172 * gnus-util.el (gnus-user-date): New function.
13191 From Frank Schmitt <usenet@Frank-Schmitt.net>.
13192 13173
131932001-10-17 Per Abrahamsen <abraham@dina.kvl.dk> 131742001-10-17 Per Abrahamsen <abraham@dina.kvl.dk>
13194 13175
@@ -13221,8 +13202,7 @@
13221 * gnus-msg.el (gnus-post-method): Changed two instances of 13202 * gnus-msg.el (gnus-post-method): Changed two instances of
13222 `active' to `current' and one `null' to `not'. 13203 `active' to `current' and one `null' to `not'.
13223 13204
132242001-10-16 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 132052001-10-16 Katsumi Yamaoka <yamaoka@jpl.org>
13225 From Katsumi Yamaoka <yamaoka@jpl.org>.
13226 13206
13227 * message.el (message-setup-fill-variables): Use 13207 * message.el (message-setup-fill-variables): Use
13228 `normal-auto-fill-function' instead of `auto-fill-function'. 13208 `normal-auto-fill-function' instead of `auto-fill-function'.
@@ -13278,10 +13258,9 @@
13278 * gnus-art.el (article-emphasize): Set `g-a-wash-types' after 13258 * gnus-art.el (article-emphasize): Set `g-a-wash-types' after
13279 doing stuff that clears it. 13259 doing stuff that clears it.
13280 13260
132812001-10-12 Simon Josefsson <jas@extundo.com> 132612001-10-12 Eric Marsden <emarsden@laas.fr>
13282 13262
13283 * gnus-cache.el (gnus-summary-limit-include-cached): Rewrite. 13263 * gnus-cache.el (gnus-summary-limit-include-cached): Rewrite.
13284 From Eric Marsden <emarsden@laas.fr>.
13285 13264
132862001-10-12 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 132652001-10-12 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
13287 13266
@@ -13483,20 +13462,17 @@
13483 (gnus-topic-catchup-articles): New function. Suggested by Robin 13462 (gnus-topic-catchup-articles): New function. Suggested by Robin
13484 S. Socha <robin-dated-1001857693.185e29@socha.net>. 13463 S. Socha <robin-dated-1001857693.185e29@socha.net>.
13485 13464
134862001-09-27 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 134652001-09-27 11:00:00 Gerd M,Av(Bllmann <gerd@gnu.org>.
13487 From Gerd M,Av(Bllmann <gerd@gnu.org>.
13488 13466
13489 * gnus-ems.el (gnus-article-display-xface): Insert xface after 13467 * gnus-ems.el (gnus-article-display-xface): Insert xface after
13490 previous ones. 13468 previous ones.
13491 13469
134922001-09-27 07:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 134702001-09-27 07:00:00 Daiki Ueno <ueno@unixuser.org>
13493 From Daiki Ueno <ueno@unixuser.org>
13494 13471
13495 * gnus-sum.el (gnus-summary-show-article): The arglist of 13472 * gnus-sum.el (gnus-summary-show-article): The arglist of
13496 detect-coding-region is incompatible. 13473 detect-coding-region is incompatible.
13497 13474
134982001-09-26 18:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 134752001-09-26 18:00:00 Katsuhiro Hermit Endo <hermit@koka-in.org>
13499 From Katsuhiro Hermit Endo <hermit@koka-in.org>
13500 13476
13501 * gnus-group.el (gnus-group-delete-group): Typo. 13477 * gnus-group.el (gnus-group-delete-group): Typo.
13502 13478
@@ -13579,10 +13555,9 @@
13579 * gnus-srvr.el (gnus-server-insert-server-line): Don't let an 13555 * gnus-srvr.el (gnus-server-insert-server-line): Don't let an
13580 error querying a backend abort the whole process. 13556 error querying a backend abort the whole process.
13581 13557
135822001-09-17 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 135582001-09-17 08:00:00 Gerd M,Av(Bllmann <gerd@gnu.org>
13583 13559
13584 * gnus-srvr.el (gnus-server-mode): Fix bogus fontification. 13560 * gnus-srvr.el (gnus-server-mode): Fix bogus fontification.
13585 From Gerd M,Av(Bllmann <gerd@gnu.org>.
13586 13561
135872001-09-17 Didier Verna <didier@xemacs.org> 135622001-09-17 Didier Verna <didier@xemacs.org>
13588 13563
@@ -13654,7 +13629,7 @@
13654 * gnus-diary.el (message-mode-map): bind the above to `C-c D c'. 13629 * gnus-diary.el (message-mode-map): bind the above to `C-c D c'.
13655 * gnus-diary.el (gnus-article-edit-mode-map): ditto. 13630 * gnus-diary.el (gnus-article-edit-mode-map): ditto.
13656 13631
136572001-09-10 TSUCHIYA Masatoshi <tsuchiya@namazu.org> 136322001-09-10 TSUCHIYA Masatoshi <tsuchiya@namazu.org>
13658 13633
13659 * gnus-sum.el (gnus-select-newsgroup): Make 13634 * gnus-sum.el (gnus-select-newsgroup): Make
13660 `gnus-current-select-method' buffer-local. 13635 `gnus-current-select-method' buffer-local.
@@ -13662,8 +13637,7 @@
13662 * gnus-art.el (gnus-request-article-this-buffer): Refer 13637 * gnus-art.el (gnus-request-article-this-buffer): Refer
13663 `gnus-current-select-method' in the current summary buffer. 13638 `gnus-current-select-method' in the current summary buffer.
13664 13639
136652001-09-10 Simon Josefsson <jas@extundo.com> 136402001-09-10 Daniel Pittman <daniel@rimspace.net>
13666 From Daniel Pittman <daniel@rimspace.net>
13667 13641
13668 * gnus-spec.el (gnus-correct-pad-form): Fix. 13642 * gnus-spec.el (gnus-correct-pad-form): Fix.
13669 13643
@@ -13714,8 +13688,7 @@
13714 * gnus-agent.el (gnus-agent-fetch-group): If online, actually 13688 * gnus-agent.el (gnus-agent-fetch-group): If online, actually
13715 fetch group. 13689 fetch group.
13716 13690
137172001-09-08 Simon Josefsson <jas@extundo.com> 136912001-09-08 Daniel Pittman <daniel@rimspace.net>
13718 From Daniel Pittman <daniel@rimspace.net>
13719 13692
13720 * gnus-spec.el (gnus-correct-pad-form): New function. 13693 * gnus-spec.el (gnus-correct-pad-form): New function.
13721 (gnus-parse-simple-format): Use it. 13694 (gnus-parse-simple-format): Use it.
@@ -13727,7 +13700,7 @@
13727 Putnam <reader@newsguy.com>. 13700 Putnam <reader@newsguy.com>.
13728 (gnus-group-sort-selected-groups): Touch dribble file. 13701 (gnus-group-sort-selected-groups): Touch dribble file.
13729 13702
137302001-09-07 Raja R Harinath <harinath@cs.umn.edu> 137032001-09-07 Raja R Harinath <harinath@cs.umn.edu>
13731 13704
13732 * nnml.el (nnml-filenames-are-evil): New variable. 13705 * nnml.el (nnml-filenames-are-evil): New variable.
13733 (nnml-article-to-file-alist): Rename to ... 13706 (nnml-article-to-file-alist): Rename to ...
@@ -13749,10 +13722,9 @@
13749 * gnus-sum.el (gnus-summary-toggle-smiley): New function. Toggles 13722 * gnus-sum.el (gnus-summary-toggle-smiley): New function. Toggles
13750 display of graphical smilies. 13723 display of graphical smilies.
13751 13724
137522001-09-07 02:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 137252001-09-07 02:00:00 Bill White <billw@wolfram.com>
13753 13726
13754 * gnus-start.el (gnus-setup-news): A typo. 13727 * gnus-start.el (gnus-setup-news): A typo.
13755 From Bill White <billw@wolfram.com>.
13756 13728
137572001-09-06 Simon Josefsson <jas@extundo.com> 137292001-09-06 Simon Josefsson <jas@extundo.com>
13758 13730
@@ -13863,8 +13835,7 @@
13863 * nnfolder.el (nnfolder-save-marks): Don't create directory named 13835 * nnfolder.el (nnfolder-save-marks): Don't create directory named
13864 after group in ~/. 13836 after group in ~/.
13865 13837
138662001-08-25 Simon Josefsson <jas@extundo.com> 138382001-08-25 Andreas Jaeger <aj@suse.de>
13867 From Andreas Jaeger <aj@suse.de>
13868 13839
13869 * nnfolder.el (nnfolder-open-marks): Fix typo. 13840 * nnfolder.el (nnfolder-open-marks): Fix typo.
13870 * nnml.el (nnml-open-marks): Likewise. 13841 * nnml.el (nnml-open-marks): Likewise.
@@ -13918,11 +13889,12 @@
13918 13889
13919 * mml.el (mml-generate-mime-1): Force as multibyte string. 13890 * mml.el (mml-generate-mime-1): Force as multibyte string.
13920 13891
139212001-08-24 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 138922001-08-24 12:00:00 Martin Kretzschmar <Martin.Kretzschmar@inf.tu-dresden.de>
13922 13893
13923 * gnus-sum.el (gnus-summary-insert-line) 13894 * gnus-sum.el (gnus-summary-insert-line)
13924 (gnus-summary-prepare-threads): gnus-tmp-lines should be a string. 13895 (gnus-summary-prepare-threads): gnus-tmp-lines should be a string.
13925 From Martin Kretzschmar <Martin.Kretzschmar@inf.tu-dresden.de> 13896
138972001-08-24 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
13926 13898
13927 * gnus-spec.el (gnus-correct-substring): Take optional END. 13899 * gnus-spec.el (gnus-correct-substring): Take optional END.
13928 13900
@@ -13944,8 +13916,7 @@
13944 * gnus-util.el (gnus-create-info-command): Return an interactive 13916 * gnus-util.el (gnus-create-info-command): Return an interactive
13945 function. 13917 function.
13946 13918
139472001-08-23 19:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 139192001-08-23 19:00:00 Katsumi Yamaoka <yamaoka@jpl.org>
13948 From Katsumi Yamaoka <yamaoka@jpl.org>
13949 13920
13950 * gnus-spec.el (gnus-parse-complex-format): Use equal. 13921 * gnus-spec.el (gnus-parse-complex-format): Use equal.
13951 13922
@@ -14099,8 +14070,7 @@
14099 14070
14100 * gnus.el (gnus-server-visual): Add defgroup. 14071 * gnus.el (gnus-server-visual): Add defgroup.
14101 14072
141022001-08-19 Simon Josefsson <jas@extundo.com> 140732001-08-19 Joe Casadonte <jcasadonte@northbound-train.com>
14103 From Joe Casadonte <jcasadonte@northbound-train.com>
14104 14074
14105 * gnus-srvr.el (gnus-server-opened-face, gnus-server-closed-face, 14075 * gnus-srvr.el (gnus-server-opened-face, gnus-server-closed-face,
14106 gnus-server-denied-face): New. 14076 gnus-server-denied-face): New.
@@ -14260,8 +14230,7 @@
14260 * gnus-delay.el (gnus-delay-article): Allow "01:23" time spec, 14230 * gnus-delay.el (gnus-delay-article): Allow "01:23" time spec,
14261 which specifies a time today or tomorrow. 14231 which specifies a time today or tomorrow.
14262 14232
142632001-08-15 Simon Josefsson <jas@extundo.com> 142332001-08-15 Pavel Jan,Am(Bk <Pavel@Janik.cz>
14264 From Pavel@Janik.cz (Pavel Jan,Am(Bk)
14265 14234
14266 * gnus-agent.el (gnus-agent-make-mode-line-string) 14235 * gnus-agent.el (gnus-agent-make-mode-line-string)
14267 (gnus-agent-toggle-plugged): Use new API. 14236 (gnus-agent-toggle-plugged): Use new API.
@@ -14307,7 +14276,6 @@
14307 * gnus-spec.el (gnus-format-specs): %n is 23 chars. 14276 * gnus-spec.el (gnus-format-specs): %n is 23 chars.
14308 14277
143092001-08-11 09:40:00 Karl Kleinpaste <karl@charcoal.com> 142782001-08-11 09:40:00 Karl Kleinpaste <karl@charcoal.com>
14310 Committed by Kai Gro,b_(Bjohann.
14311 14279
14312 * gnus-score.el (gnus-score-string): Fix `match' regexp 14280 * gnus-score.el (gnus-score-string): Fix `match' regexp
14313 for `extra' header case. 14281 for `extra' header case.
@@ -14388,23 +14356,23 @@
14388 * imap.el (imap-gssapi-auth-p, imap-kerberos4-auth-p): Also check 14356 * imap.el (imap-gssapi-auth-p, imap-kerberos4-auth-p): Also check
14389 whether `imtest' is installed. 14357 whether `imtest' is installed.
14390 14358
143912001-08-04 ShengHuo ZHU <zsh@cs.rochester.edu> 143592001-08-04 Nuutti Kotivuori <nuutti.kotivuori@smarttrust.com>
14392 Trivial patch from Nuutti Kotivuori <nuutti.kotivuori@smarttrust.com>
14393 14360
14394 * gnus-sum.el (gnus-summary-show-article): Call 14361 * gnus-sum.el (gnus-summary-show-article): Call
14395 gnus-summary-update-secondary-secondary-mark. 14362 gnus-summary-update-secondary-secondary-mark.
14396 * gnus-sum.el (gnus-summary-edit-article-done): Ditto. 14363 * gnus-sum.el (gnus-summary-edit-article-done): Ditto.
14397 * gnus-sum.el (gnus-summary-reparent-thread): Ditto. 14364 * gnus-sum.el (gnus-summary-reparent-thread): Ditto.
14398 14365
143662001-08-07 16:00:00 Gerd M,Av(Bllmann <gerd@gnu.org>
14367
14368 * mm-uu.el (mm-uu-dissect): Autoload.
14369
143992001-08-07 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 143702001-08-07 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
14400 14371
14401 * gnus-sum.el (gnus-summary-make-menu-bar): Misc -> Gnus. 14372 * gnus-sum.el (gnus-summary-make-menu-bar): Misc -> Gnus.
14402 14373
14403 * gnus-group.el (gnus-group-make-menu-bar): Ditto. 14374 * gnus-group.el (gnus-group-make-menu-bar): Ditto.
14404 14375
14405 * mm-uu.el (mm-uu-dissect): Autoload. From Gerd M,Av(Bllmann
14406 <gerd@gnu.org>.
14407
14408 * gnus-art.el (gnus-output-to-file): Bind file-name-coding-system. 14376 * gnus-art.el (gnus-output-to-file): Bind file-name-coding-system.
14409 14377
14410 * gnus-util.el (gnus-output-to-rmail): Ditto. 14378 * gnus-util.el (gnus-output-to-rmail): Ditto.
@@ -14526,8 +14494,7 @@
14526 (mm-pkcs7-enveloped-magic): Ditto. 14494 (mm-pkcs7-enveloped-magic): Ditto.
14527 (mm-view-pkcs7-get-type): Don't regexp quote. 14495 (mm-view-pkcs7-get-type): Don't regexp quote.
14528 14496
145292001-08-01 14:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 144972001-08-01 14:00:00 Andreas Fuchs <asf@void.at>
14530 From Andreas Fuchs <asf@void.at>
14531 14498
14532 * mml2015.el (mml2015-trust-boundaries-alist): Typo. 14499 * mml2015.el (mml2015-trust-boundaries-alist): Typo.
14533 14500
@@ -14622,13 +14589,11 @@
14622 (smime-dns-server): Fix customize group. 14589 (smime-dns-server): Fix customize group.
14623 (smime-call-openssl-region): Use `smime-extra-arguments'. 14590 (smime-call-openssl-region): Use `smime-extra-arguments'.
14624 14591
146252001-07-29 Simon Josefsson <jas@extundo.com> 145922001-07-29 Vladimir Volovich <vvv@vsu.ru>
14626 From Vladimir Volovich <vvv@vsu.ru>
14627 14593
14628 * smime.el (smime-call-openssl-region): Ignore stderr. 14594 * smime.el (smime-call-openssl-region): Ignore stderr.
14629 14595
146302001-07-29 Simon Josefsson <jas@extundo.com> 145962001-07-29 Christoph Conrad <christoph.conrad@gmx.de>
14631 From Christoph Conrad <christoph.conrad@gmx.de>
14632 14597
14633 * gnus-agent.el (gnus-agent-save-group-info): Don't destroy active 14598 * gnus-agent.el (gnus-agent-save-group-info): Don't destroy active
14634 file. 14599 file.
@@ -14749,8 +14714,7 @@
14749 14714
14750 * nnimap.el (nnimap-version): Bump version number. 14715 * nnimap.el (nnimap-version): Bump version number.
14751 14716
147522001-07-26 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 147172001-07-26 10:00:00 Steven E. Harris <seh@speakeasy.org>
14753 From Steven E. Harris <seh@speakeasy.org>
14754 14718
14755 * nnheader.el (nnheader-translate-file-chars): cygwin32 is running 14719 * nnheader.el (nnheader-translate-file-chars): cygwin32 is running
14756 in M$Windows too. 14720 in M$Windows too.
@@ -14772,8 +14736,7 @@
14772 * gnus-sum.el (gnus-summary-prepare-threads): Shouldn't do tree 14736 * gnus-sum.el (gnus-summary-prepare-threads): Shouldn't do tree
14773 display (%B) for threads if threading is off. 14737 display (%B) for threads if threading is off.
14774 14738
147752001-07-25 14:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 147392001-07-25 14:00:00 Henrik Enberg <henrik@enberg.org>
14776 From Henrik Enberg <henrik@enberg.org>
14777 14740
14778 * gnus-msg.el: Customization patch. 14741 * gnus-msg.el: Customization patch.
14779 14742
@@ -14843,8 +14806,7 @@
14843 * gnus-delay.el (gnus-delay-default-hour): New variable. 14806 * gnus-delay.el (gnus-delay-default-hour): New variable.
14844 (gnus-delay-article): Allow specific date in YYYY-MM-DD format. 14807 (gnus-delay-article): Allow specific date in YYYY-MM-DD format.
14845 14808
148462001-07-23 22:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 148092001-07-23 22:00:00 Karl Kleinpaste <karl@charcoal.com>
14847 From Karl Kleinpaste <karl@charcoal.com>
14848 14810
14849 * gnus-sum.el (gnus-summary-line-format-alist): Add %B. 14811 * gnus-sum.el (gnus-summary-line-format-alist): Add %B.
14850 (gnus-summary-prepare-threads): Ditto. 14812 (gnus-summary-prepare-threads): Ditto.
@@ -15001,11 +14963,11 @@
15001 * nnrss.el (nnrss-read-group-data): Nuke emacs-lisp-mode-hook. 14963 * nnrss.el (nnrss-read-group-data): Nuke emacs-lisp-mode-hook.
15002 (nnrss-read-server-data): Ditto. 14964 (nnrss-read-server-data): Ditto.
15003 14965
150042001-07-13 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 149662001-07-13 12:00:00 Pavel Jan,Am(Bk <Pavel@Janik.cz>
15005 14967
15006 * gnus-setup.el (gnus-use-installed-gnus): Typo. 14968 * gnus-setup.el (gnus-use-installed-gnus): Typo.
15007 * Cleanup files. 14969 * Cleanup files.
15008 From Pavel@Janik.cz (Pavel Jan,Am(Bk). 14970
15009 14971
150102001-07-13 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 149722001-07-13 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
15011 14973
@@ -15128,8 +15090,7 @@
15128 * nntp.el (nntp-send-command, nntp-send-command-nodelete): 15090 * nntp.el (nntp-send-command, nntp-send-command-nodelete):
15129 (nntp-send-command-and-decode): Use gnus-point-at-bol. 15091 (nntp-send-command-and-decode): Use gnus-point-at-bol.
15130 15092
151312001-07-09 13:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 150932001-07-09 13:00:00 Paul Jarc <prj@po.cwru.edu>
15132 From Paul Jarc <prj@po.cwru.edu>
15133 15094
15134 * message.el (message-use-mail-followup-to): New variable. 15095 * message.el (message-use-mail-followup-to): New variable.
15135 (message-get-reply-headers): Use it. 15096 (message-get-reply-headers): Use it.
@@ -15217,8 +15178,7 @@
15217 * gnus-start.el (gnus-check-first-time-used): Use `if' instead of 15178 * gnus-start.el (gnus-check-first-time-used): Use `if' instead of
15218 `when'. 15179 `when'.
15219 15180
152202001-07-03 Simon Josefsson <jas@extundo.com> 151812001-07-03 Nuutti Kotivuori <nuutti.kotivuori@smarttrust.com>
15221 From Nuutti Kotivuori <nuutti.kotivuori@smarttrust.com>
15222 15182
15223 * flow-fill.el (fill-flowed): Use (1+ (point-at-eol)) instead. 15183 * flow-fill.el (fill-flowed): Use (1+ (point-at-eol)) instead.
15224 15184
@@ -15266,8 +15226,7 @@
15266 (rfc2047-encode-message-header): Fold lines even if 15226 (rfc2047-encode-message-header): Fold lines even if
15267 no QP encoding is done. 15227 no QP encoding is done.
15268 15228
152692001-06-23 Simon Josefsson <jas@extundo.com> 152292001-06-23 Samuel Tardieu <sam@inf.enst.fr>
15270 From Samuel Tardieu <sam@inf.enst.fr>
15271 15230
15272 * smime.el (smime-keys): Support additional certificates. 15231 * smime.el (smime-keys): Support additional certificates.
15273 (smime-make-certfiles): New function. 15232 (smime-make-certfiles): New function.
@@ -15301,8 +15260,7 @@
15301 15260
15302 * message.el (message-goto-body): Return nil if not found. (revert!) 15261 * message.el (message-goto-body): Return nil if not found. (revert!)
15303 15262
153042001-06-21 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 152632001-06-21 10:00:00 John Fremlin <chief@bandits.org> (tiny change)
15305 From Fremlin <chief@bandits.org>
15306 15264
15307 * message.el (message-goto-body): Some messages have no header. 15265 * message.el (message-goto-body): Some messages have no header.
15308 15266
@@ -15384,7 +15342,7 @@
15384 * nnweb.el (nnweb-google-parse-1): Fix Google content regexp. 15342 * nnweb.el (nnweb-google-parse-1): Fix Google content regexp.
15385 (nnweb-google-wash-article): Ditto. 15343 (nnweb-google-wash-article): Ditto.
15386 15344
153872001-06-14 Ferenc Wagner <wferi@bolyai1.elte.hu> 153452001-06-14 Ferenc Wagner <wferi@bolyai1.elte.hu>
15388 15346
15389 * nnweb.el (nnweb-google-parse-1): Fix Google url regexp. 15347 * nnweb.el (nnweb-google-parse-1): Fix Google url regexp.
15390 15348
@@ -15411,17 +15369,20 @@
15411 15369
15412 * nnrss.el (nnrss-group-alist): Use |fr| instead of [fr]. 15370 * nnrss.el (nnrss-group-alist): Use |fr| instead of [fr].
15413 15371
154142001-06-12 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 153722001-06-12 11:00:00 Marc Lefranc <Marc.Lefranc@univ-lille1.fr>
15415 15373
15416 * gnus-art.el (gnus-plain-save-name): Use file-relative-name. 15374 * gnus-art.el (gnus-plain-save-name): Use file-relative-name.
15417 From Marc Lefranc <Marc.Lefranc@univ-lille1.fr>. 15375
153762001-06-12 11:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
15418 15377
15419 * nnrss.el (nnrss-node-text): Node might be nil. 15378 * nnrss.el (nnrss-node-text): Node might be nil.
15420 15379
154212001-06-11 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 153802001-06-11 10:00:00 Katsumi Yamaoka <yamaoka@jpl.org>
15422 15381
15423 * gnus-uu.el (gnus-uu-save-article): Use mml tag instead of 15382 * gnus-uu.el (gnus-uu-save-article): Use mml tag instead of
15424 part. From Katsumi Yamaoka <yamaoka@jpl.org>. 15383 part.
15384
153852001-06-11 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
15425 15386
15426 * nnrss.el (nnrss-group-alist): More items. 15387 * nnrss.el (nnrss-group-alist): More items.
15427 15388
@@ -15435,14 +15396,11 @@
15435 * gnus-mlspl.el (gnus-group-split-fancy): Fix generation of split 15396 * gnus-mlspl.el (gnus-group-split-fancy): Fix generation of split
15436 restrict clauses. 15397 restrict clauses.
15437 15398
154382001-06-07 16:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 153992001-06-07 16:00:00 Benjamin Rutt <brutt+news@bloomington.in.us>
15439
15440 From Benjamin Rutt <brutt+news@bloomington.in.us>
15441 15400
15442 * message.el (message-wide-reply-confirm-recipients): New variable. 15401 * message.el (message-wide-reply-confirm-recipients): New variable.
15443 15402
154442001-06-06 ShengHuo ZHU <zsh@cs.rochester.edu> 154032001-06-06 Mark Thomas <mthomas@edrc.cmu.edu> (tiny change)
15445 Trivial patch from Mark Thomas <mthomas@edrc.cmu.edu>
15446 15404
15447 * nnmail.el (nnmail-fix-eudora-headers): Change the In-Reply-To 15405 * nnmail.el (nnmail-fix-eudora-headers): Change the In-Reply-To
15448 fix so it works with XEmacs. 15406 fix so it works with XEmacs.
@@ -15456,10 +15414,10 @@
15456 15414
15457 * nnrss.el: Fix a few bugs. 15415 * nnrss.el: Fix a few bugs.
15458 15416
154592001-06-05 Simon Josefsson <jas@extundo.com> 154172001-06-05 Alex Schroeder <alex@gnu.org>
15460 15418
15461 * mm-decode.el (mm-handle-set-external-undisplayer): Don't 15419 * mm-decode.el (mm-handle-set-external-undisplayer): Don't
15462 generate compiler warnings. From Alex Schroeder <alex@gnu.org>. 15420 generate compiler warnings.
15463 15421
154642001-06-04 Hrvoje Niksic <hniksic@arsdigita.com> 154222001-06-04 Hrvoje Niksic <hniksic@arsdigita.com>
15465 15423
@@ -15498,20 +15456,17 @@
15498 it is not possible to insert a character after a glyph which is at 15456 it is not possible to insert a character after a glyph which is at
15499 the end of a buffer. Patch by Lloyd Zusman <ljz@asfast.com>. 15457 the end of a buffer. Patch by Lloyd Zusman <ljz@asfast.com>.
15500 15458
155012001-05-28 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 154592001-05-28 Jaap-Henk Hoepman <jhh@xs4all.nl>
15502
15503 From Jaap-Henk Hoepman (jhh@xs4all.nl).
15504 15460
15505 * mm-decode.el (mm-keep-viewer-alive-types): New variable. 15461 * mm-decode.el (mm-keep-viewer-alive-types): New variable.
15506 (mm-keep-viewer-alive-p, mm-handle-set-external-undisplayer, 15462 (mm-keep-viewer-alive-p, mm-handle-set-external-undisplayer,
15507 mm-destroy-postponed-undisplay-list): New functions. 15463 mm-destroy-postponed-undisplay-list): New functions.
15508 (mm-display-external): Use them. 15464 (mm-display-external): Use them.
15509 15465
155102001-05-27 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 154662001-05-27 Raja R. Harinath <harinath@cs.umn.edu>
15511 15467
15512 * gnus-salt.el (gnus-tree-highlight-node): Bind `default-high' and 15468 * gnus-salt.el (gnus-tree-highlight-node): Bind `default-high' and
15513 `default-low' when evaluating `gnus-summary-highlight'. 15469 `default-low' when evaluating `gnus-summary-highlight'.
15514 From Raja R Harinath <harinath@cs.umn.edu>.
15515 15470
155162001-05-27 Simon Josefsson <simon@josefsson.org> 154712001-05-27 Simon Josefsson <simon@josefsson.org>
15517 15472
@@ -15522,8 +15477,7 @@
15522 as details. 15477 as details.
15523 (mml2015-mailcrypt-clear-verify): Ditto. 15478 (mml2015-mailcrypt-clear-verify): Ditto.
15524 15479
155252001-05-24 Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> 154802001-05-24 Nevin Kapur <nevin@jhu.edu>
15526 From Nevin Kapur <nevin@jhu.edu>.
15527 15481
15528 * gnus-sum.el (gnus-summary-default-high-score, 15482 * gnus-sum.el (gnus-summary-default-high-score,
15529 gnus-summary-default-low-score): New variables. 15483 gnus-summary-default-low-score): New variables.
@@ -15534,8 +15488,7 @@
15534 * message.el (message-mail): pass the 'send-actions argument to 15488 * message.el (message-mail): pass the 'send-actions argument to
15535 `message-setup'. 15489 `message-setup'.
15536 15490
155372001-05-16 Simon Josefsson <simon@josefsson.org> 154912001-05-16 Raymond Scholz <ray-2001@zonix.de>
15538 From Raymond Scholz <ray-2001@zonix.de>
15539 15492
15540 * gnus-art.el (gnus-mime-view-part-as-charset): 15493 * gnus-art.el (gnus-mime-view-part-as-charset):
15541 (gnus-mime-internalize-part): Doc fixes. 15494 (gnus-mime-internalize-part): Doc fixes.
@@ -15599,7 +15552,7 @@
15599 correctly. 15552 correctly.
15600 (nnrss-check-group): Use time. 15553 (nnrss-check-group): Use time.
15601 15554
156022001-05-01 19:21:19 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 155552001-05-01 19:21:19 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
15603 15556
15604 * gnus.el: Oort Gnus v0.03 is released. 15557 * gnus.el: Oort Gnus v0.03 is released.
15605 15558
@@ -15671,12 +15624,11 @@
15671 (smime-decrypt-region): Ditto. 15624 (smime-decrypt-region): Ditto.
15672 15625
156732001-04-12 Jason Merrill <jason_merrill@redhat.com> 156262001-04-12 Jason Merrill <jason_merrill@redhat.com>
15674 Committed by Simon Josefsson <simon@josefsson.org>
15675 15627
15676 * imap.el (imap-shell-open): Erase the buffer *after* copying it into 15628 * imap.el (imap-shell-open): Erase the buffer *after* copying it into
15677 the log. 15629 the log.
15678 15630
156792001-04-14 01:14:42 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no> 156312001-04-14 01:14:42 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
15680 15632
15681 * gnus.el: Oort Gnus v0.02 is released. 15633 * gnus.el: Oort Gnus v0.02 is released.
15682 15634
@@ -15704,13 +15656,11 @@
15704 15656
15705 * nnmail.el (nnmail-split-fancy-with-parent): Add docstring. 15657 * nnmail.el (nnmail-split-fancy-with-parent): Add docstring.
15706 15658
157072001-04-12 19:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 156592001-04-12 19:00:00 Jason Merrill <jason_merrill@redhat.com>
15708 From Jason Merrill <jason_merrill@redhat.com>
15709 15660
15710 * gnus-sum.el (gnus-summary-insert-new-articles): Reverse the articles. 15661 * gnus-sum.el (gnus-summary-insert-new-articles): Reverse the articles.
15711 15662
157122001-04-10 08:01:15 Katsumi Yamaoka <yamaoka@jpl.org> 156632001-04-10 08:01:15 Katsumi Yamaoka <yamaoka@jpl.org>
15713 Committed by ShengHuo ZHU <zsh@cs.rochester.edu>
15714 15664
15715 * gnus-msg.el (gnus-post-news): Fill the Newsgroups header by the 15665 * gnus-msg.el (gnus-post-news): Fill the Newsgroups header by the
15716 newsgroup names when the original article is a news message. 15666 newsgroup names when the original article is a news message.
@@ -15721,7 +15671,6 @@
15721 supported. Suggest by Jim Meyering <jim@meyering.net>. 15671 supported. Suggest by Jim Meyering <jim@meyering.net>.
15722 15672
157232001-04-02 Nevin Kapur <nevin@jhu.edu> 156732001-04-02 Nevin Kapur <nevin@jhu.edu>
15724 Committed by Kai Gro,b_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>.
15725 15674
15726 * nnmail.el (nnmail-split-it): Added check for .* at the end of 15675 * nnmail.el (nnmail-split-it): Added check for .* at the end of
15727 regexp in nnmail-split-fancy. 15676 regexp in nnmail-split-fancy.
@@ -15789,13 +15738,11 @@
15789 * qp.el (quoted-printable-decode-region): Just message 15738 * qp.el (quoted-printable-decode-region): Just message
15790 malformation; don't quit. 15739 malformation; don't quit.
15791 15740
157922001-03-31 21:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 157412001-03-31 21:00:00 Gerd Moellmann <gerd@gnu.org>
15793 From Gerd Moellmann <gerd@gnu.org>.
15794 15742
15795 * gnus.el (gnus-interactive): A typo. 15743 * gnus.el (gnus-interactive): A typo.
15796 15744
157972001-03-26 Juanma Barranquero <lektu@uol.com.br> 157452001-03-26 Juanma Barranquero <lektu@uol.com.br>
15798 Committed by ShengHuo ZHU <zsh@cs.rochester.edu>
15799 15746
15800 * gnus-util.el (gnus-delete-alist): Declare it as an alias of 15747 * gnus-util.el (gnus-delete-alist): Declare it as an alias of
15801 `assq-delete-all', if that function exists; otherwise use the old 15748 `assq-delete-all', if that function exists; otherwise use the old
@@ -15913,8 +15860,7 @@
15913 15860
15914 * mml2015.el (mml2015-gpg-extract-from): No error. 15861 * mml2015.el (mml2015-gpg-extract-from): No error.
15915 15862
159162001-03-18 23:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 158632001-03-18 23:00:00 Bj,Ax(Brn Mork <bmork@dod.no>
15917 From Bj,Ax(Brn Mork <bmork@dod.no>.
15918 15864
15919 * mml2015.el (mml2015-gpg-extract-from): New function. 15865 * mml2015.el (mml2015-gpg-extract-from): New function.
15920 (mml2015-gpg-verify): Use it. 15866 (mml2015-gpg-verify): Use it.
@@ -15956,8 +15902,7 @@
15956 * mailcap.el (mailcap-mime-data): Add application/sieve. 15902 * mailcap.el (mailcap-mime-data): Add application/sieve.
15957 (mailcap-mime-extensions): Add .siv, .xls. 15903 (mailcap-mime-extensions): Add .siv, .xls.
15958 15904
159592001-03-14 20:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 159052001-03-14 20:00:00 Christoph Conrad <christoph.conrad@gmx.de>
15960 From Christoph Conrad <christoph.conrad@gmx.de>
15961 15906
15962 * gnus-score.el (gnus-summary-lower-thread): Typo. 15907 * gnus-score.el (gnus-summary-lower-thread): Typo.
15963 15908
@@ -16002,7 +15947,6 @@
16002 * nnrss.el: New file. 15947 * nnrss.el: New file.
16003 15948
160042001-03-08 02:41:36 Katsumi Yamaoka <yamaoka@jpl.org> 159492001-03-08 02:41:36 Katsumi Yamaoka <yamaoka@jpl.org>
16005 Committed by ShengHuo ZHU <zsh@cs.rochester.edu>
16006 15950
16007 * rfc2047.el (rfc2047-unfold-region): Fix arg of 15951 * rfc2047.el (rfc2047-unfold-region): Fix arg of
16008 `skip-chars-forward'. 15952 `skip-chars-forward'.
@@ -16026,9 +15970,10 @@
16026 directory part. 15970 directory part.
16027 (gnus-score-search-global-directories): Use file-directory-p. 15971 (gnus-score-search-global-directories): Use file-directory-p.
16028 15972
159732001-03-06 13:00:00 Adrian Aichner <adrian@xemacs.org>
15974
16029 * gnus-score.el (gnus-score-score-files-1): Use 15975 * gnus-score.el (gnus-score-score-files-1): Use
16030 gnus-kill-files-directory. 15976 gnus-kill-files-directory.
16031 From Adrian Aichner <adrian@xemacs.org>.
16032 15977
160332001-03-05 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 159782001-03-05 08:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
16034 15979
@@ -16053,8 +15998,7 @@
16053 15998
16054 * gnus-sum.el (gnus-summary-limit-include-expunged): Fix. 15999 * gnus-sum.el (gnus-summary-limit-include-expunged): Fix.
16055 16000
160562001-03-01 22:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 160012001-03-01 22:00:00 Katsumi Yamaoka <yamaoka@jpl.org>
16057 From Katsumi Yamaoka <yamaoka@jpl.org>.
16058 16002
16059 * dgnushack.el (coerce, merge, subseq): defmacro. 16003 * dgnushack.el (coerce, merge, subseq): defmacro.
16060 16004
@@ -16065,7 +16009,6 @@
16065 uncompiled versions. 16009 uncompiled versions.
16066 16010
160672001-02-26 11:27:27 Paul Jarc <prj@po.cwru.edu> 160112001-02-26 11:27:27 Paul Jarc <prj@po.cwru.edu>
16068 Committed by ShengHuo ZHU <zsh@cs.rochester.edu>
16069 16012
16070 * gnus-util.el (gnus-split-references): Handle malformed References:. 16013 * gnus-util.el (gnus-split-references): Handle malformed References:.
16071 16014
@@ -16073,8 +16016,7 @@
16073 16016
16074 * gnus-art.el (gnus-article-mime-part-status): 1 part. 16017 * gnus-art.el (gnus-article-mime-part-status): 1 part.
16075 16018
160762001-02-25 10:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 160192001-02-25 10:00:00 NAGY Andras <nagya@inf.elte.hu>
16077 From NAGY Andras <nagya@inf.elte.hu>.
16078 16020
16079 * gnus.el (gnus-parameters): Typo. 16021 * gnus.el (gnus-parameters): Typo.
16080 16022
@@ -16182,13 +16124,11 @@
16182 (gnus-article-sort-functions): Doc fix. Refer to 16124 (gnus-article-sort-functions): Doc fix. Refer to
16183 gnus-thread-sort-functions. 16125 gnus-thread-sort-functions.
16184 16126
161852001-02-18 20:00:00 ShengHuo ZHU <zsh@cs.rochester.edu> 161272001-02-18 20:00:00 Paul Jarc <prj@po.cwru.edu>
16186 From Paul Jarc <prj@po.cwru.edu>.
16187 16128
16188 * message.el (message-get-reply-headers): More fixes. 16129 * message.el (message-get-reply-headers): More fixes.
16189 16130
161902001-02-17 Paul Jarc <prj@po.cwru.edu> 161312001-02-17 Paul Jarc <prj@po.cwru.edu>
16191 Committed by ShengHuo ZHU <zsh@cs.rochester.edu>
16192 16132
16193 * message.el (message-get-reply-headers): Fix bug with 16133 * message.el (message-get-reply-headers): Fix bug with
16194 Mail-Followup-To/to-address interaction. 16134 Mail-Followup-To/to-address interaction.
@@ -16233,7 +16173,6 @@
16233 (nnml-request-regenerate): Use it. Change to deffoo. 16173 (nnml-request-regenerate): Use it. Change to deffoo.
16234 16174
162352001-02-14 Katsumi Yamaoka <yamaoka@jpl.org> 161752001-02-14 Katsumi Yamaoka <yamaoka@jpl.org>
16236 Committed by ShengHuo ZHU <zsh@cs.rochester.edu>
16237 16176
16238 * gnus.el (gnus-define-group-parameter): Fix. 16177 * gnus.el (gnus-define-group-parameter): Fix.
16239 16178
@@ -18186,7 +18125,7 @@
18186 18125
18187 * mml.el (mml-generate-mime-1): Ignore ascii. 18126 * mml.el (mml-generate-mime-1): Ignore ascii.
18188 18127
181892000-11-16 Justin Sheehy <justin@iago.org> 181282000-11-16 Justin Sheehy <justin@iago.org>
18190 18129
18191 * gnus-sum.el (gnus-summary-make-menu-bar): Fix menu items. 18130 * gnus-sum.el (gnus-summary-make-menu-bar): Fix menu items.
18192 18131
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index e773aa3bfac..59d02927008 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -401,6 +401,21 @@ If mode is nil, use `major-mode' of the curent buffer."
401 (string-match "^\\(.+\\)-mode$" mode) 401 (string-match "^\\(.+\\)-mode$" mode)
402 (match-string 1 mode)))))) 402 (match-string 1 mode))))))
403 403
404(defun gmm-write-region (start end filename &optional append visit
405 lockname mustbenew)
406 "Compatibility function for `write-region'.
407
408In XEmacs, the seventh argument of `write-region' specifies the
409coding-system."
410 (if (and mustbenew
411 (or (featurep 'xemacs)
412 (= emacs-major-version 20)))
413 (if (file-exists-p filename)
414 (signal 'file-already-exists
415 (list "File exists" filename))
416 (write-region start end filename append visit lockname))
417 (write-region start end filename append visit lockname mustbenew)))
418
404(provide 'gmm-utils) 419(provide 'gmm-utils)
405 420
406;; arch-tag: e0b60920-2ce6-40c1-bfc0-cadbbe26b602 421;; arch-tag: e0b60920-2ce6-40c1-bfc0-cadbbe26b602
diff --git a/lisp/gnus/gnus-demon.el b/lisp/gnus/gnus-demon.el
index bf35f1ddee7..fb28d6440fd 100644
--- a/lisp/gnus/gnus-demon.el
+++ b/lisp/gnus/gnus-demon.el
@@ -218,7 +218,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
218 (< idle gnus-demon-idle-time)) ; Idle timed out. 218 (< idle gnus-demon-idle-time)) ; Idle timed out.
219 (t (< 0 gnus-demon-idle-time)))) ; Or just need to be idle. 219 (t (< 0 gnus-demon-idle-time)))) ; Or just need to be idle.
220 ;; So we call the handler. 220 ;; So we call the handler.
221 (with-local-quit 221 (gnus-with-local-quit
222 (ignore-errors (funcall (car handler))) 222 (ignore-errors (funcall (car handler)))
223 ;; And reset the timer. 223 ;; And reset the timer.
224 (setcar (nthcdr 1 handler) 224 (setcar (nthcdr 1 handler)
@@ -232,7 +232,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
232 (gnus-demon-is-idle-p)) 232 (gnus-demon-is-idle-p))
233 ;; We want to call this handler each and every time that 233 ;; We want to call this handler each and every time that
234 ;; Emacs is idle. 234 ;; Emacs is idle.
235 (with-local-quit 235 (gnus-with-local-quit
236 (ignore-errors (funcall (car handler))))) 236 (ignore-errors (funcall (car handler)))))
237 (t 237 (t
238 ;; We want to call this handler only if Emacs has been idle 238 ;; We want to call this handler only if Emacs has been idle
@@ -240,7 +240,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
240 (and (not (memq (car handler) gnus-demon-idle-has-been-called)) 240 (and (not (memq (car handler) gnus-demon-idle-has-been-called))
241 (< idle gnus-demon-idle-time) 241 (< idle gnus-demon-idle-time)
242 (gnus-demon-is-idle-p) 242 (gnus-demon-is-idle-p)
243 (with-local-quit 243 (gnus-with-local-quit
244 (ignore-errors (funcall (car handler))) 244 (ignore-errors (funcall (car handler)))
245 ;; Make sure the handler won't be called once more in 245 ;; Make sure the handler won't be called once more in
246 ;; this idle-cycle. 246 ;; this idle-cycle.
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 2e452136f3c..47944aeef41 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -60,6 +60,7 @@
60(require 'gnus) 60(require 'gnus)
61(require 'gnus-int) 61(require 'gnus-int)
62(require 'gnus-sum) 62(require 'gnus-sum)
63(require 'gnus-util)
63(require 'nnmail) 64(require 'nnmail)
64 65
65(defvar gnus-registry-dirty t 66(defvar gnus-registry-dirty t
@@ -243,7 +244,8 @@ way."
243 (gnus-registry-clean-empty-function)) 244 (gnus-registry-clean-empty-function))
244 ;; now trim the registry appropriately 245 ;; now trim the registry appropriately
245 (setq gnus-registry-alist (gnus-registry-trim 246 (setq gnus-registry-alist (gnus-registry-trim
246 (hashtable-to-alist gnus-registry-hashtb))) 247 (gnus-hashtable-to-alist
248 gnus-registry-hashtb)))
247 ;; really save 249 ;; really save
248 (gnus-registry-cache-save) 250 (gnus-registry-cache-save)
249 (setq gnus-registry-entry-caching caching) 251 (setq gnus-registry-entry-caching caching)
@@ -262,7 +264,7 @@ way."
262 264
263(defun gnus-registry-read () 265(defun gnus-registry-read ()
264 (gnus-registry-cache-read) 266 (gnus-registry-cache-read)
265 (setq gnus-registry-hashtb (alist-to-hashtable gnus-registry-alist)) 267 (setq gnus-registry-hashtb (gnus-alist-to-hashtable gnus-registry-alist))
266 (setq gnus-registry-dirty nil)) 268 (setq gnus-registry-dirty nil))
267 269
268(defun gnus-registry-trim (alist) 270(defun gnus-registry-trim (alist)
@@ -290,26 +292,6 @@ way."
290 (cdr (gethash (car a) timehash)) 292 (cdr (gethash (car a) timehash))
291 (cdr (gethash (car b) timehash)))))))))) 293 (cdr (gethash (car b) timehash))))))))))
292 294
293(defun alist-to-hashtable (alist)
294 "Build a hashtable from the values in ALIST."
295 (let ((ht (make-hash-table
296 :size 4096
297 :test 'equal)))
298 (mapc
299 (lambda (kv-pair)
300 (puthash (car kv-pair) (cdr kv-pair) ht))
301 alist)
302 ht))
303
304(defun hashtable-to-alist (hash)
305 "Build an alist from the values in HASH."
306 (let ((list nil))
307 (maphash
308 (lambda (key value)
309 (setq list (cons (cons key value) list)))
310 hash)
311 list))
312
313(defun gnus-registry-action (action data-header from &optional to method) 295(defun gnus-registry-action (action data-header from &optional to method)
314 (let* ((id (mail-header-id data-header)) 296 (let* ((id (mail-header-id data-header))
315 (subject (gnus-registry-simplify-subject 297 (subject (gnus-registry-simplify-subject
@@ -660,7 +642,7 @@ Returns the first place where the trail finds a group name."
660 "Clear the Gnus registry." 642 "Clear the Gnus registry."
661 (interactive) 643 (interactive)
662 (setq gnus-registry-alist nil) 644 (setq gnus-registry-alist nil)
663 (setq gnus-registry-hashtb (alist-to-hashtable gnus-registry-alist)) 645 (setq gnus-registry-hashtb (gnus-alist-to-hashtable gnus-registry-alist))
664 (setq gnus-registry-dirty t)) 646 (setq gnus-registry-dirty t))
665 647
666;;;###autoload 648;;;###autoload
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 7d91d4db5aa..8dcd0753e59 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -2438,7 +2438,7 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
2438 ["Unread" gnus-summary-limit-to-unread t] 2438 ["Unread" gnus-summary-limit-to-unread t]
2439 ["Unseen" gnus-summary-limit-to-unseen t] 2439 ["Unseen" gnus-summary-limit-to-unseen t]
2440 ["Non-dormant" gnus-summary-limit-exclude-dormant t] 2440 ["Non-dormant" gnus-summary-limit-exclude-dormant t]
2441 ["Next articles" gnus-summary-limit-to-articles t] 2441 ["Next or process marked articles" gnus-summary-limit-to-articles t]
2442 ["Pop limit" gnus-summary-pop-limit t] 2442 ["Pop limit" gnus-summary-pop-limit t]
2443 ["Show dormant" gnus-summary-limit-include-dormant t] 2443 ["Show dormant" gnus-summary-limit-include-dormant t]
2444 ["Hide childless dormant" 2444 ["Hide childless dormant"
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 6f706fabce5..09d7ab9432e 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -746,6 +746,28 @@ If there's no subdirectory, delete DIRECTORY as well."
746 (unless dir 746 (unless dir
747 (delete-directory directory))))) 747 (delete-directory directory)))))
748 748
749;; The following two functions are used in gnus-registry.
750;; They were contributed by Andreas Fuchs <asf@void.at>.
751(defun gnus-alist-to-hashtable (alist)
752 "Build a hashtable from the values in ALIST."
753 (let ((ht (make-hash-table
754 :size 4096
755 :test 'equal)))
756 (mapc
757 (lambda (kv-pair)
758 (puthash (car kv-pair) (cdr kv-pair) ht))
759 alist)
760 ht))
761
762(defun gnus-hashtable-to-alist (hash)
763 "Build an alist from the values in HASH."
764 (let ((list nil))
765 (maphash
766 (lambda (key value)
767 (setq list (cons (cons key value) list)))
768 hash)
769 list))
770
749(defun gnus-strip-whitespace (string) 771(defun gnus-strip-whitespace (string)
750 "Return STRING stripped of all whitespace." 772 "Return STRING stripped of all whitespace."
751 (while (string-match "[\r\n\t ]+" string) 773 (while (string-match "[\r\n\t ]+" string)
@@ -1616,6 +1638,25 @@ empty directories from OLD-PATH."
1616 (defalias 'gnus-set-process-query-on-exit-flag 1638 (defalias 'gnus-set-process-query-on-exit-flag
1617 'process-kill-without-query)) 1639 'process-kill-without-query))
1618 1640
1641(if (fboundp 'with-local-quit)
1642 (defalias 'gnus-with-local-quit 'with-local-quit)
1643 (defmacro gnus-with-local-quit (&rest body)
1644 "Execute BODY, allowing quits to terminate BODY but not escape further.
1645When a quit terminates BODY, `gnus-with-local-quit' returns nil but
1646requests another quit. That quit will be processed as soon as quitting
1647is allowed once again. (Immediately, if `inhibit-quit' is nil.)"
1648 ;;(declare (debug t) (indent 0))
1649 `(condition-case nil
1650 (let ((inhibit-quit nil))
1651 ,@body)
1652 (quit (setq quit-flag t)
1653 ;; This call is to give a chance to handle quit-flag
1654 ;; in case inhibit-quit is nil.
1655 ;; Without this, it will not be handled until the next function
1656 ;; call, and that might allow it to exit thru a condition-case
1657 ;; that intends to handle the quit signal next time.
1658 (eval '(ignore nil))))))
1659
1619(provide 'gnus-util) 1660(provide 'gnus-util)
1620 1661
1621;;; arch-tag: f94991af-d32b-4c97-8c26-ca12a934de49 1662;;; arch-tag: f94991af-d32b-4c97-8c26-ca12a934de49
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 8778d0a4b57..07fb73666fa 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -1057,17 +1057,11 @@ If SUFFIX is non-nil, add that at the end of the file name."
1057 (setq file (concat file suffix))) 1057 (setq file (concat file suffix)))
1058 (if dir-flag 1058 (if dir-flag
1059 (make-directory file) 1059 (make-directory file)
1060 (if (or (featurep 'xemacs) 1060 ;; NOTE: This is unsafe if Emacs 20
1061 (= emacs-major-version 20)) 1061 ;; users and XEmacs users don't use
1062 ;; NOTE: This is unsafe if Emacs 20 1062 ;; a secure temp directory.
1063 ;; users and XEmacs users don't use 1063 (gmm-write-region "" nil file nil 'silent
1064 ;; a secure temp directory. 1064 nil 'excl))
1065 (if (file-exists-p file)
1066 (signal 'file-already-exists
1067 (list "File exists" file))
1068 (write-region "" nil file nil 'silent))
1069 (write-region "" nil file nil 'silent
1070 nil 'excl)))
1071 nil) 1065 nil)
1072 (file-already-exists t) 1066 (file-already-exists t)
1073 ;; The Emacs 20 and XEmacs versions of 1067 ;; The Emacs 20 and XEmacs versions of
diff --git a/lisp/gnus/mm-uu.el b/lisp/gnus/mm-uu.el
index 9d9d87a3670..b1ed0b7af4e 100644
--- a/lisp/gnus/mm-uu.el
+++ b/lisp/gnus/mm-uu.el
@@ -373,7 +373,7 @@ Return that buffer."
373 mm-security-handle 'gnus-details 373 mm-security-handle 'gnus-details
374 (format "Clear verification not supported by `%s'.\n" mml2015-use)))) 374 (format "Clear verification not supported by `%s'.\n" mml2015-use))))
375 (goto-char (point-min)) 375 (goto-char (point-min))
376 (if (search-forward "\n\n" nil t) 376 (if (re-search-forward "\n[\t ]*\n" nil t)
377 (delete-region (point-min) (point))) 377 (delete-region (point-min) (point)))
378 (if (re-search-forward mm-uu-pgp-beginning-signature nil t) 378 (if (re-search-forward mm-uu-pgp-beginning-signature nil t)
379 (delete-region (match-beginning 0) (point-max))) 379 (delete-region (match-beginning 0) (point-max)))
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el
index 6024b992061..589c4da8caf 100644
--- a/lisp/gnus/nnmaildir.el
+++ b/lisp/gnus/nnmaildir.el
@@ -428,7 +428,8 @@ by nnmaildir-request-article.")
428 (prin1 (vector storage-version num msgid nov) (current-buffer)) 428 (prin1 (vector storage-version num msgid nov) (current-buffer))
429 (setq file (concat novfile ":")) 429 (setq file (concat novfile ":"))
430 (nnmaildir--unlink file) 430 (nnmaildir--unlink file)
431 (write-region (point-min) (point-max) file nil 'no-message nil 'excl)) 431 (gmm-write-region (point-min) (point-max) file nil 'no-message nil
432 'excl))
432 (rename-file file novfile 'replace) 433 (rename-file file novfile 'replace)
433 (setf (nnmaildir--art-msgid article) msgid) 434 (setf (nnmaildir--art-msgid article) msgid)
434 nov))) 435 nov)))
@@ -1246,8 +1247,8 @@ by nnmaildir-request-article.")
1246 (throw 'return nil)) 1247 (throw 'return nil))
1247 (save-excursion 1248 (save-excursion
1248 (set-buffer buffer) 1249 (set-buffer buffer)
1249 (write-region (point-min) (point-max) tmpfile nil 'no-message nil 1250 (gmm-write-region (point-min) (point-max) tmpfile nil 'no-message nil
1250 'excl)) 1251 'excl))
1251 (unix-sync) ;; no fsync :( 1252 (unix-sync) ;; no fsync :(
1252 (rename-file tmpfile (concat (nnmaildir--cur dir) file suffix) 'replace) 1253 (rename-file tmpfile (concat (nnmaildir--cur dir) file suffix) 'replace)
1253 t))) 1254 t)))
@@ -1341,8 +1342,8 @@ by nnmaildir-request-article.")
1341 (condition-case nil 1342 (condition-case nil
1342 (add-name-to-file nnmaildir--file tmpfile) 1343 (add-name-to-file nnmaildir--file tmpfile)
1343 (error 1344 (error
1344 (write-region (point-min) (point-max) tmpfile nil 'no-message nil 1345 (gmm-write-region (point-min) (point-max) tmpfile nil 'no-message nil
1345 'excl) 1346 'excl)
1346 (unix-sync))) ;; no fsync :( 1347 (unix-sync))) ;; no fsync :(
1347 (nnheader-cancel-timer 24h) 1348 (nnheader-cancel-timer 24h)
1348 (condition-case err 1349 (condition-case err
diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el
index 81ef74c4098..4b376957377 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/gnus/pop3.el
@@ -75,22 +75,22 @@
75 75
76(defcustom pop3-authentication-scheme 'pass 76(defcustom pop3-authentication-scheme 'pass
77 "*POP3 authentication scheme. 77 "*POP3 authentication scheme.
78Defaults to 'pass, for the standard USER/PASS authentication. Other valid 78Defaults to `pass', for the standard USER/PASS authentication. The other
79values are 'apop." 79valid value is 'apop'."
80 :version "22.1" ;; Oort Gnus 80 :type '(choice (const :tag "Normal user/password" pass)
81 :type '(choice (const :tag "USER/PASS" pass)
82 (const :tag "APOP" apop)) 81 (const :tag "APOP" apop))
82 :version "22.1" ;; Oort Gnus
83 :group 'pop3) 83 :group 'pop3)
84 84
85(defcustom pop3-leave-mail-on-server nil 85(defcustom pop3-leave-mail-on-server nil
86 "*Non-nil if the mail is to be left on the POP server after fetching. 86 "*Non-nil if the mail is to be left on the POP server after fetching.
87 87
88If the `pop3-leave-mail-on-server' is non-`nil' the mail is to be 88If `pop3-leave-mail-on-server' is non-nil the mail is to be left
89left on the POP server after fetching. Note that POP servers 89on the POP server after fetching. Note that POP servers maintain
90maintain no state information between sessions, so what the 90no state information between sessions, so what the client
91client believes is there and what is actually there may not match 91believes is there and what is actually there may not match up.
92up. If they do not, then you may get duplicate mails or the 92If they do not, then you may get duplicate mails or the whole
93whole thing can fall apart and leave you with a corrupt mailbox." 93thing can fall apart and leave you with a corrupt mailbox."
94 ;; We can't use the UILD support from XEmacs mail-lib or cvs.m17n.org: 94 ;; We can't use the UILD support from XEmacs mail-lib or cvs.m17n.org:
95 ;; http://thread.gmane.org/v9lld8fml4.fsf@marauder.physik.uni-ulm.de 95 ;; http://thread.gmane.org/v9lld8fml4.fsf@marauder.physik.uni-ulm.de
96 ;; http://thread.gmane.org/b9yy8hzy9ej.fsf@jpl.org 96 ;; http://thread.gmane.org/b9yy8hzy9ej.fsf@jpl.org
@@ -170,11 +170,14 @@ Shorter values mean quicker response, but are more CPU intensive.")
170 (unless pop3-leave-mail-on-server 170 (unless pop3-leave-mail-on-server
171 (pop3-dele process n)) 171 (pop3-dele process n))
172 (setq n (+ 1 n)) 172 (setq n (+ 1 n))
173 (if pop3-debug (sit-for 1) (sit-for 0.1)) 173 (if pop3-debug (sit-for 1) (sit-for 0.1))) ; why?
174 ) 174 (when (and pop3-leave-mail-on-server
175 (> n 1))
176 (message "pop3.el doesn't support UIDL. Setting `pop3-leave-mail-on-server'
177to %s might not give the result you'd expect." pop3-leave-mail-on-server)
178 (sit-for 1))
175 (pop3-quit process)) 179 (pop3-quit process))
176 (kill-buffer crashbuf) 180 (kill-buffer crashbuf))
177 )
178 t) 181 t)
179 182
180(defun pop3-get-message-count () 183(defun pop3-get-message-count ()
@@ -316,6 +319,8 @@ If NOW, use that time instead."
316 ;; Date: 08 Jul 1996 23:22:24 -0400 319 ;; Date: 08 Jul 1996 23:22:24 -0400
317 ;; should be 320 ;; should be
318 ;; Tue Jul 9 09:04:21 1996 321 ;; Tue Jul 9 09:04:21 1996
322
323 ;; Fixme: This should use timezone on the date field contents.
319 (setq date 324 (setq date
320 (cond ((not date) 325 (cond ((not date)
321 "Tue Jan 1 00:00:0 1900") 326 "Tue Jan 1 00:00:0 1900")
diff --git a/lisp/help-at-pt.el b/lisp/help-at-pt.el
index db00fff6c1c..6d33c155c64 100644
--- a/lisp/help-at-pt.el
+++ b/lisp/help-at-pt.el
@@ -246,7 +246,7 @@ properties, to enable buffer local values."
246(defun scan-buf-move-to-region (prop &optional arg hook) 246(defun scan-buf-move-to-region (prop &optional arg hook)
247 "Go to the start of the next region with non-nil PROP property. 247 "Go to the start of the next region with non-nil PROP property.
248Then run HOOK, which should be a quoted symbol that is a normal 248Then run HOOK, which should be a quoted symbol that is a normal
249hook.variable, or an expression evaluating to such a symbol. 249hook variable, or an expression evaluating to such a symbol.
250Adjacent areas with different non-nil PROP properties are 250Adjacent areas with different non-nil PROP properties are
251considered different regions. 251considered different regions.
252 252
diff --git a/lisp/help.el b/lisp/help.el
index b79e028b633..34b1a2fac61 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -764,7 +764,7 @@ descriptions of the minor modes, each on a separate page.
764For this to work correctly for a minor mode, the mode's indicator 764For this to work correctly for a minor mode, the mode's indicator
765variable \(listed in `minor-mode-alist') must also be a function 765variable \(listed in `minor-mode-alist') must also be a function
766whose documentation describes the minor mode." 766whose documentation describes the minor mode."
767 (interactive) 767 (interactive "@")
768 (unless buffer (setq buffer (current-buffer))) 768 (unless buffer (setq buffer (current-buffer)))
769 (help-setup-xref (list #'describe-mode buffer) 769 (help-setup-xref (list #'describe-mode buffer)
770 (interactive-p)) 770 (interactive-p))
diff --git a/lisp/ido.el b/lisp/ido.el
index b68a4622ef8..ff222b2958c 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3084,12 +3084,14 @@ for first matching file."
3084 (let ((oa (ido-file-extension-order a n)) 3084 (let ((oa (ido-file-extension-order a n))
3085 (ob (ido-file-extension-order b n))) 3085 (ob (ido-file-extension-order b n)))
3086 (cond 3086 (cond
3087 ((= oa ob)
3088 lessp)
3089 ((and oa ob) 3087 ((and oa ob)
3090 (if lessp 3088 (cond
3091 (> oa ob) 3089 ((= oa ob)
3092 (< oa ob))) 3090 lessp)
3091 (lessp
3092 (> oa ob))
3093 (t
3094 (< oa ob))))
3093 (oa 3095 (oa
3094 (not lessp)) 3096 (not lessp))
3095 (ob 3097 (ob
@@ -3136,7 +3138,12 @@ for first matching file."
3136 (let ((filenames 3138 (let ((filenames
3137 (split-string 3139 (split-string
3138 (shell-command-to-string 3140 (shell-command-to-string
3139 (concat "find " dir " -name \"" (if prefix "" "*") file "*\" -type " (if finddir "d" "f") " -print")))) 3141 (concat "find "
3142 (shell-quote-argument dir)
3143 " -name "
3144 (shell-quote-argument
3145 (concat (if prefix "" "*") file "*"))
3146 " -type " (if finddir "d" "f") " -print"))))
3140 filename d f 3147 filename d f
3141 res) 3148 res)
3142 (while filenames 3149 (while filenames
diff --git a/lisp/info-look.el b/lisp/info-look.el
index 404eee3f2d0..2ac461aa669 100644
--- a/lisp/info-look.el
+++ b/lisp/info-look.el
@@ -843,12 +843,13 @@ Return nil if there is nothing appropriate in the buffer near point."
843(info-lookup-maybe-add-help 843(info-lookup-maybe-add-help
844 :mode 'maxima-mode 844 :mode 'maxima-mode
845 :ignore-case t 845 :ignore-case t
846 :regexp "[a-zA-Z_%]+" 846 :regexp "[a-zA-Z0-9_%]+"
847 :doc-spec '( ("(maxima)Function and Variable Index" nil 847 :doc-spec '( ("(maxima)Function and Variable Index" nil
848 "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil))) 848 "^ -+ [^:]+:[ ]+\\(\\[[^=]*=[ ]+\\)?" nil)))
849 849
850(info-lookup-maybe-add-help 850(info-lookup-maybe-add-help
851 :mode 'inferior-maxima-mode 851 :mode 'inferior-maxima-mode
852 :regexp "[a-zA-Z0-9_%]+"
852 :other-modes '(maxima-mode)) 853 :other-modes '(maxima-mode))
853 854
854;; coreutils and bash builtins overlap in places, eg. printf, so there's a 855;; coreutils and bash builtins overlap in places, eg. printf, so there's a
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 9694a4e52c8..bbe219745e9 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -219,19 +219,21 @@ They means `unix', `dos', and `mac' respectively."
219 ((eq eol-type 'dos) 1) 219 ((eq eol-type 'dos) 1)
220 ((eq eol-type 'mac) 2) 220 ((eq eol-type 'mac) 2)
221 (t eol-type)))) 221 (t eol-type))))
222 (let ((orig-eol-type (coding-system-eol-type coding-system))) 222 ;; We call `coding-system-base' before `coding-system-eol-type',
223 (if (vectorp orig-eol-type) 223 ;; because the coding-system may not be initialized until then.
224 (if (not eol-type) 224 (let* ((base (coding-system-base coding-system))
225 coding-system 225 (orig-eol-type (coding-system-eol-type coding-system)))
226 (aref orig-eol-type eol-type)) 226 (cond ((vectorp orig-eol-type)
227 (let ((base (coding-system-base coding-system))) 227 (if (not eol-type)
228 (if (not eol-type) 228 coding-system
229 base 229 (aref orig-eol-type eol-type)))
230 (if (= eol-type orig-eol-type) 230 ((not eol-type)
231 coding-system 231 base)
232 (setq orig-eol-type (coding-system-eol-type base)) 232 ((= eol-type orig-eol-type)
233 (if (vectorp orig-eol-type) 233 coding-system)
234 (aref orig-eol-type eol-type)))))))) 234 ((progn (setq orig-eol-type (coding-system-eol-type base))
235 (vectorp orig-eol-type))
236 (aref orig-eol-type eol-type)))))
235 237
236(defun coding-system-change-text-conversion (coding-system coding) 238(defun coding-system-change-text-conversion (coding-system coding)
237 "Return a coding system which differs from CODING-SYSTEM in text conversion. 239 "Return a coding system which differs from CODING-SYSTEM in text conversion.
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 0d253211da4..6e418fc1161 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1289,23 +1289,18 @@ If search string is empty, just beep."
1289(defun isearch-mouse-2 (click) 1289(defun isearch-mouse-2 (click)
1290 "Handle mouse-2 in Isearch mode. 1290 "Handle mouse-2 in Isearch mode.
1291For a click in the echo area, invoke `isearch-yank-x-selection'. 1291For a click in the echo area, invoke `isearch-yank-x-selection'.
1292Otherwise invoke whatever mouse-2 is bound to outside of Isearch." 1292Otherwise invoke whatever the calling mouse-2 command sequence
1293is bound to outside of Isearch."
1293 (interactive "e") 1294 (interactive "e")
1294 (let* ((w (posn-window (event-start click))) 1295 (let* ((w (posn-window (event-start click)))
1295 (overriding-terminal-local-map nil) 1296 (overriding-terminal-local-map nil)
1296 (key (vector (event-basic-type click))) 1297 (binding (key-binding (this-command-keys-vector) t)))
1297 ;; FIXME: `key-binding' should accept an event as argument
1298 ;; and do all the overlay/text-properties lookup etc...
1299 (binding (with-current-buffer
1300 (if (window-live-p w) (window-buffer w) (current-buffer))
1301 (key-binding key))))
1302 (if (and (window-minibuffer-p w) 1298 (if (and (window-minibuffer-p w)
1303 (not (minibuffer-window-active-p w))) ; in echo area 1299 (not (minibuffer-window-active-p w))) ; in echo area
1304 (isearch-yank-x-selection) 1300 (isearch-yank-x-selection)
1305 (when (functionp binding) 1301 (when (functionp binding)
1306 (call-interactively binding))))) 1302 (call-interactively binding)))))
1307 1303
1308
1309(defun isearch-yank-internal (jumpform) 1304(defun isearch-yank-internal (jumpform)
1310 "Pull the text from point to the point reached by JUMPFORM. 1305 "Pull the text from point to the point reached by JUMPFORM.
1311JUMPFORM is a lambda expression that takes no arguments and returns a 1306JUMPFORM is a lambda expression that takes no arguments and returns a
diff --git a/lisp/longlines.el b/lisp/longlines.el
index 77e0b415344..ee469e1be09 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -410,7 +410,7 @@ This is called by `post-command-hook' after each command."
410 410
411(defun longlines-window-change-function () 411(defun longlines-window-change-function ()
412 "Re-wrap the buffer if the window width has changed. 412 "Re-wrap the buffer if the window width has changed.
413This is called by `window-size-change-functions'." 413This is called by `window-configuration-change-hook'."
414 (when (/= fill-column (- (window-width) window-min-width)) 414 (when (/= fill-column (- (window-width) window-min-width))
415 (setq fill-column (- (window-width) window-min-width)) 415 (setq fill-column (- (window-width) window-min-width))
416 (let ((mod (buffer-modified-p))) 416 (let ((mod (buffer-modified-p)))
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 72091a2ecd6..40e611152a1 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -623,7 +623,7 @@ the variable `rmail-mime-feature'.")
623 623
624;;;###autoload 624;;;###autoload
625(defvar rmail-mime-charset-pattern 625(defvar rmail-mime-charset-pattern
626 (concat "^content-type:[ ]*text/plain;" 626 (concat "^content-type:[ \t]*text/plain;"
627 "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*" 627 "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*"
628 "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?") 628 "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?")
629 "Regexp to match MIME-charset specification in a header of message. 629 "Regexp to match MIME-charset specification in a header of message.
@@ -2875,6 +2875,12 @@ iso-8859, koi8-r, etc."
2875 (coding-system-change-eol-conversion 2875 (coding-system-change-eol-conversion
2876 coding 2876 coding
2877 (coding-system-eol-type old-coding))) 2877 (coding-system-eol-type old-coding)))
2878 ;; If old-coding is `undecided', encode-coding-region
2879 ;; will not encode the text at all. Find a proper
2880 ;; non-trivial encoding to use.
2881 (if (memq (coding-system-base old-coding) '(nil undecided))
2882 (setq old-coding
2883 (car (find-coding-systems-region msgbeg msgend))))
2878 (setq x-coding-header (point-marker)) 2884 (setq x-coding-header (point-marker))
2879 (narrow-to-region msgbeg msgend) 2885 (narrow-to-region msgbeg msgend)
2880 (encode-coding-region (point) msgend old-coding) 2886 (encode-coding-region (point) msgend old-coding)
diff --git a/lisp/mouse-sel.el b/lisp/mouse-sel.el
index a327b589f54..a1209f827f1 100644
--- a/lisp/mouse-sel.el
+++ b/lisp/mouse-sel.el
@@ -737,7 +737,8 @@ If `mouse-yank-at-point' is non-nil, insert at point instead."
737 (mouse-set-point event)) 737 (mouse-set-point event))
738 (when mouse-sel-get-selection-function 738 (when mouse-sel-get-selection-function
739 (push-mark (point) 'nomsg) 739 (push-mark (point) 'nomsg)
740 (insert (or (funcall mouse-sel-get-selection-function selection) "")))) 740 (insert-for-yank
741 (or (funcall mouse-sel-get-selection-function selection) ""))))
741 742
742;;=== Handle loss of selections =========================================== 743;;=== Handle loss of selections ===========================================
743 744
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 0cf0160afb1..9d089a2e164 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -238,7 +238,7 @@ behavior for explicit filling, you might as well use \\[newline-and-indent]."
238(defcustom comment-empty-lines nil 238(defcustom comment-empty-lines nil
239 "If nil, `comment-region' does not comment out empty lines. 239 "If nil, `comment-region' does not comment out empty lines.
240If t, it always comments out empty lines. 240If t, it always comments out empty lines.
241if `eol' it only comments out empty lines if comments are 241If `eol' it only comments out empty lines if comments are
242terminated by the end of line (i.e. `comment-end' is empty)." 242terminated by the end of line (i.e. `comment-end' is empty)."
243 :type '(choice (const :tag "Never" nil) 243 :type '(choice (const :tag "Never" nil)
244 (const :tag "Always" t) 244 (const :tag "Always" t)
@@ -1124,12 +1124,44 @@ This has no effect in modes that do not define a comment syntax."
1124 :group 'comment) 1124 :group 'comment)
1125 1125
1126(defun comment-valid-prefix-p (prefix compos) 1126(defun comment-valid-prefix-p (prefix compos)
1127 (or 1127 "Check that the adaptive-fill-prefix is consistent with the context.
1128 ;; Accept any prefix if the current comment is not EOL-terminated. 1128PREFIX is the prefix (presumably guessed by `adaptive-fill-mode').
1129 (save-excursion (goto-char compos) (comment-forward) (not (bolp))) 1129COMPOS is the position of the beginning of the comment we're in, or nil
1130 ;; Accept any prefix that starts with a comment-start marker. 1130if we're not inside a comment."
1131 (string-match (concat "\\`[ \t]*\\(?:" comment-start-skip "\\)") 1131 ;; This consistency checking is mostly needed to workaround the limitation
1132 prefix))) 1132 ;; of auto-fill-mode whose paragraph-determination doesn't pay attention
1133 ;; to comment boundaries.
1134 (if (null compos)
1135 ;; We're not inside a comment: the prefix shouldn't match
1136 ;; a comment-starter.
1137 (not (and comment-start comment-start-skip
1138 (string-match comment-start-skip prefix)))
1139 (or
1140 ;; Accept any prefix if the current comment is not EOL-terminated.
1141 (save-excursion (goto-char compos) (comment-forward) (not (bolp)))
1142 ;; Accept any prefix that starts with the same comment-start marker
1143 ;; as the current one.
1144 (when (string-match (concat "\\`[ \t]*\\(?:" comment-start-skip "\\)")
1145 prefix)
1146 (let ((prefix-com (comment-string-strip (match-string 0 prefix) nil t)))
1147 (string-match "\\`[ \t]*" prefix-com)
1148 (let* ((prefix-space (match-string 0 prefix-com))
1149 (prefix-indent (string-width prefix-space))
1150 (prefix-comstart (substring prefix-com (match-end 0))))
1151 (save-excursion
1152 (goto-char compos)
1153 ;; The comstart marker is the same.
1154 (and (looking-at (regexp-quote prefix-comstart))
1155 ;; The indentation as well.
1156 (or (= prefix-indent
1157 (- (current-column) (current-left-margin)))
1158 ;; Check the indentation in two different ways, just
1159 ;; to try and avoid most of the potential funny cases.
1160 (equal prefix-space
1161 (buffer-substring (point)
1162 (progn (move-to-left-margin)
1163 (point)))))))))))))
1164
1133 1165
1134;;;###autoload 1166;;;###autoload
1135(defun comment-indent-new-line (&optional soft) 1167(defun comment-indent-new-line (&optional soft)
@@ -1182,8 +1214,7 @@ unless optional argument SOFT is non-nil."
1182 ;; If there's an adaptive prefix, use it unless we're inside 1214 ;; If there's an adaptive prefix, use it unless we're inside
1183 ;; a comment and the prefix is not a comment starter. 1215 ;; a comment and the prefix is not a comment starter.
1184 ((and fill-prefix 1216 ((and fill-prefix
1185 (or (not compos) 1217 (comment-valid-prefix-p fill-prefix compos))
1186 (comment-valid-prefix-p fill-prefix compos)))
1187 (indent-to-left-margin) 1218 (indent-to-left-margin)
1188 (insert-and-inherit fill-prefix)) 1219 (insert-and-inherit fill-prefix))
1189 ;; If we're not inside a comment, just try to indent. 1220 ;; If we're not inside a comment, just try to indent.
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 69f4549a0bf..3264e0e72f6 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -5,7 +5,7 @@
5;; Free Software Foundation, Inc. 5;; Free Software Foundation, Inc.
6 6
7;; Author: Ilya Zakharevich and Bob Olson 7;; Author: Ilya Zakharevich and Bob Olson
8;; Maintainer: Ilya Zakharevich <cperl@ilyaz.org> 8;; Maintainer: Ilya Zakharevich <ilyaz@cpan.org>
9;; Keywords: languages, Perl 9;; Keywords: languages, Perl
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -25,7 +25,7 @@
25;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 25;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
26;; Boston, MA 02110-1301, USA. 26;; Boston, MA 02110-1301, USA.
27 27
28;;; Corrections made by Ilya Zakharevich cperl@ilyaz.org 28;;; Corrections made by Ilya Zakharevich ilyaz@cpan.org
29 29
30;;; Commentary: 30;;; Commentary:
31 31
@@ -67,67 +67,89 @@
67;; likewise with m, tr, y, q, qX instead of s 67;; likewise with m, tr, y, q, qX instead of s
68 68
69;;; Code: 69;;; Code:
70 70
71(defvar vc-rcs-header) 71(defvar vc-rcs-header)
72(defvar vc-sccs-header) 72(defvar vc-sccs-header)
73 73
74;; Some macros are needed for `defcustom'
75(eval-when-compile 74(eval-when-compile
76 (condition-case nil 75 (condition-case nil
77 (require 'man) 76 (require 'custom)
78 (error nil)) 77 (error nil))
79 (defconst cperl-xemacs-p (string-match "XEmacs\\|Lucid" emacs-version)) 78 (condition-case nil
80 (defvar cperl-can-font-lock 79 (require 'man)
81 (or cperl-xemacs-p 80 (error nil))
82 (and (boundp 'emacs-major-version) 81 (defconst cperl-xemacs-p (string-match "XEmacs\\|Lucid" emacs-version))
83 (or window-system 82 (defvar cperl-can-font-lock
84 (> emacs-major-version 20))))) 83 (or cperl-xemacs-p
85 (if cperl-can-font-lock 84 (and (boundp 'emacs-major-version)
86 (require 'font-lock)) 85 (or window-system
87 (defvar msb-menu-cond) 86 (> emacs-major-version 20)))))
88 (defvar gud-perldb-history) 87 (if cperl-can-font-lock
89 (defvar font-lock-background-mode) ; not in Emacs 88 (require 'font-lock))
90 (defvar font-lock-display-type) ; ditto 89 (defvar msb-menu-cond)
91 (defmacro cperl-is-face (arg) ; Takes quoted arg 90 (defvar gud-perldb-history)
92 (cond ((fboundp 'find-face) 91 (defvar font-lock-background-mode) ; not in Emacs
93 `(find-face ,arg)) 92 (defvar font-lock-display-type) ; ditto
94 (;;(and (fboundp 'face-list) 93 (defvar paren-backwards-message) ; Not in newer XEmacs?
95 ;; (face-list)) 94 (or (fboundp 'defgroup)
96 (fboundp 'face-list) 95 (defmacro defgroup (name val doc &rest arr)
97 `(member ,arg (and (fboundp 'face-list) 96 nil))
98 (face-list)))) 97 (or (fboundp 'custom-declare-variable)
99 (t 98 (defmacro defcustom (name val doc &rest arr)
100 `(boundp ,arg)))) 99 (` (defvar (, name) (, val) (, doc)))))
101 (defmacro cperl-make-face (arg descr) ; Takes unquoted arg 100 (or (and (fboundp 'custom-declare-variable)
102 (cond ((fboundp 'make-face) 101 (string< "19.31" emacs-version)) ; Checked with 19.30: defface does not work
103 `(make-face (quote ,arg))) 102 (defmacro defface (&rest arr)
104 (t 103 nil))
105 `(defvar ,arg (quote ,arg) ,descr)))) 104 ;; Avoid warning (tmp definitions)
106 (defmacro cperl-force-face (arg descr) ; Takes unquoted arg 105 (or (fboundp 'x-color-defined-p)
107 `(progn 106 (defmacro x-color-defined-p (col)
108 (or (cperl-is-face (quote ,arg)) 107 (cond ((fboundp 'color-defined-p) (` (color-defined-p (, col))))
109 (cperl-make-face ,arg ,descr)) 108 ;; XEmacs >= 19.12
110 (or (boundp (quote ,arg)) ; We use unquoted variants too 109 ((fboundp 'valid-color-name-p) (` (valid-color-name-p (, col))))
111 (defvar ,arg (quote ,arg) ,descr)))) 110 ;; XEmacs 19.11
112 (if cperl-xemacs-p 111 ((fboundp 'x-valid-color-name-p) (` (x-valid-color-name-p (, col))))
113 (defmacro cperl-etags-snarf-tag (file line) 112 (t '(error "Cannot implement color-defined-p")))))
114 `(progn 113 (defmacro cperl-is-face (arg) ; Takes quoted arg
115 (beginning-of-line 2) 114 (cond ((fboundp 'find-face)
116 (list ,file ,line))) 115 (` (find-face (, arg))))
117 (defmacro cperl-etags-snarf-tag (file line) 116 (;;(and (fboundp 'face-list)
118 `(etags-snarf-tag))) 117 ;; (face-list))
119 (if cperl-xemacs-p 118 (fboundp 'face-list)
120 (defmacro cperl-etags-goto-tag-location (elt) 119 (` (member (, arg) (and (fboundp 'face-list)
121 ;;(progn 120 (face-list)))))
122 ;; (switch-to-buffer (get-file-buffer (elt (, elt) 0))) 121 (t
123 ;; (set-buffer (get-file-buffer (elt (, elt) 0))) 122 (` (boundp (, arg))))))
124 ;; Probably will not work due to some save-excursion??? 123 (defmacro cperl-make-face (arg descr) ; Takes unquoted arg
125 ;; Or save-file-position? 124 (cond ((fboundp 'make-face)
126 ;; (message "Did I get to line %s?" (elt (, elt) 1)) 125 (` (make-face (quote (, arg)))))
127 `(goto-line (string-to-number (elt ,elt 1)))) 126 (t
128 ;;) 127 (` (defvar (, arg) (quote (, arg)) (, descr))))))
129 (defmacro cperl-etags-goto-tag-location (elt) 128 (defmacro cperl-force-face (arg descr) ; Takes unquoted arg
130 `(etags-goto-tag-location ,elt)))) 129 (` (progn
130 (or (cperl-is-face (quote (, arg)))
131 (cperl-make-face (, arg) (, descr)))
132 (or (boundp (quote (, arg))) ; We use unquoted variants too
133 (defvar (, arg) (quote (, arg)) (, descr))))))
134 (if cperl-xemacs-p
135 (defmacro cperl-etags-snarf-tag (file line)
136 (` (progn
137 (beginning-of-line 2)
138 (list (, file) (, line)))))
139 (defmacro cperl-etags-snarf-tag (file line)
140 (` (etags-snarf-tag))))
141 (if cperl-xemacs-p
142 (defmacro cperl-etags-goto-tag-location (elt)
143 (`;;(progn
144 ;; (switch-to-buffer (get-file-buffer (elt (, elt) 0)))
145 ;; (set-buffer (get-file-buffer (elt (, elt) 0)))
146 ;; Probably will not work due to some save-excursion???
147 ;; Or save-file-position?
148 ;; (message "Did I get to line %s?" (elt (, elt) 1))
149 (goto-line (string-to-int (elt (, elt) 1)))))
150 ;;)
151 (defmacro cperl-etags-goto-tag-location (elt)
152 (` (etags-goto-tag-location (, elt))))))
131 153
132(defconst cperl-xemacs-p (string-match "XEmacs\\|Lucid" emacs-version)) 154(defconst cperl-xemacs-p (string-match "XEmacs\\|Lucid" emacs-version))
133 155
@@ -251,6 +273,12 @@ This is in addition to cperl-continued-statement-offset."
251 :type 'integer 273 :type 'integer
252 :group 'cperl-indentation-details) 274 :group 'cperl-indentation-details)
253 275
276(defcustom cperl-indent-wrt-brace t
277 "*Non-nil means indent statements in if/etc block relative brace, not if/etc.
278Versions 5.2 ... 5.20 behaved as if this were `nil'."
279 :type 'boolean
280 :group 'cperl-indentation-details)
281
254(defcustom cperl-auto-newline nil 282(defcustom cperl-auto-newline nil
255 "*Non-nil means automatically newline before and after braces, 283 "*Non-nil means automatically newline before and after braces,
256and after colons and semicolons, inserted in CPerl code. The following 284and after colons and semicolons, inserted in CPerl code. The following
@@ -347,20 +375,26 @@ Affects: `cperl-font-lock', `cperl-electric-lbrace-space',
347 :type 'integer 375 :type 'integer
348 :group 'cperl-indentation-details) 376 :group 'cperl-indentation-details)
349 377
350(defvar cperl-vc-header-alist nil) 378(defcustom cperl-indent-comment-at-column-0 nil
351(make-obsolete-variable 379 "*Non-nil means that comment started at column 0 should be indentable."
352 'cperl-vc-header-alist 380 :type 'boolean
353 "use cperl-vc-rcs-header or cperl-vc-sccs-header instead.") 381 :group 'cperl-indentation-details)
354 382
355(defcustom cperl-vc-sccs-header '("($sccs) = ('%W\%' =~ /(\\d+(\\.\\d+)+)/) ;") 383(defcustom cperl-vc-sccs-header '("($sccs) = ('%W\%' =~ /(\\d+(\\.\\d+)+)/) ;")
356 "*Special version of `vc-sccs-header' that is used in CPerl mode buffers." 384 "*Special version of `vc-sccs-header' that is used in CPerl mode buffers."
357 :type '(repeat string) 385 :type '(repeat string)
358 :group 'cperl) 386 :group 'cperl)
359 387
360(defcustom cperl-vc-rcs-header '("($rcs) = (' $Id\$ ' =~ /(\\d+(\\.\\d+)+)/) ;") 388(defcustom cperl-vc-rcs-header '("($rcs) = (' $Id\$ ' =~ /(\\d+(\\.\\d+)+)/);")
361 "*Special version of `vc-rcs-header' that is used in CPerl mode buffers." 389 "*Special version of `vc-rcs-header' that is used in CPerl mode buffers."
362 :type '(repeat string) 390 :type '(repeat string)
363 :group 'cperl) 391 :group 'cperl)
392
393;; This became obsolete...
394(defvar cperl-vc-header-alist nil)
395(make-obsolete-variable
396 'cperl-vc-header-alist
397 "use cperl-vc-rcs-header or cperl-vc-sccs-header instead.")
364 398
365(defcustom cperl-clobber-mode-lists 399(defcustom cperl-clobber-mode-lists
366 (not 400 (not
@@ -408,8 +442,15 @@ Font for POD headers."
408 :type 'face 442 :type 'face
409 :group 'cperl-faces) 443 :group 'cperl-faces)
410 444
411(defcustom cperl-invalid-face 'underline 445;;; Some double-evaluation happened with font-locks... Needed with 21.2...
412 "*Face for highlighting trailing whitespace." 446(defvar cperl-singly-quote-face cperl-xemacs-p)
447
448(defcustom cperl-invalid-face ; Does not customize with '' on XEmacs
449 (if cperl-singly-quote-face
450 'underline ''underline) ; On older Emacsen was evaluated by `font-lock'
451 (if cperl-singly-quote-face
452 "*This face is used for highlighting trailing whitespace."
453 "*Face for highlighting trailing whitespace.")
413 :type 'face 454 :type 'face
414 :version "21.1" 455 :version "21.1"
415 :group 'cperl-faces) 456 :group 'cperl-faces)
@@ -441,7 +482,14 @@ You can always make lookup from menu or using \\[cperl-find-pods-heres]."
441 482
442(defcustom cperl-regexp-scan t 483(defcustom cperl-regexp-scan t
443 "*Not-nil means make marking of regular expression more thorough. 484 "*Not-nil means make marking of regular expression more thorough.
444Effective only with `cperl-pod-here-scan'. Not implemented yet." 485Effective only with `cperl-pod-here-scan'."
486 :type 'boolean
487 :group 'cperl-speed)
488
489(defcustom cperl-hook-after-change t
490 "*Not-nil means install hook to know which regions of buffer are changed.
491May significantly speed up delayed fontification. Changes take effect
492after reload."
445 :type 'boolean 493 :type 'boolean
446 :group 'cperl-speed) 494 :group 'cperl-speed)
447 495
@@ -564,17 +612,25 @@ when syntaxifying a chunk of buffer."
564 :type 'boolean 612 :type 'boolean
565 :group 'cperl-speed) 613 :group 'cperl-speed)
566 614
615(defcustom cperl-syntaxify-for-menu
616 t
617 "*Non-nil means that CPerl syntaxifies up to the point before showing menu.
618This way enabling/disabling of menu items is more correct."
619 :type 'boolean
620 :group 'cperl-speed)
621
567(defcustom cperl-ps-print-face-properties 622(defcustom cperl-ps-print-face-properties
568 '((font-lock-keyword-face nil nil bold shadow) 623 '((font-lock-keyword-face nil nil bold shadow)
569 (font-lock-variable-name-face nil nil bold) 624 (font-lock-variable-name-face nil nil bold)
570 (font-lock-function-name-face nil nil bold italic box) 625 (font-lock-function-name-face nil nil bold italic box)
571 (font-lock-constant-face nil "LightGray" bold) 626 (font-lock-constant-face nil "LightGray" bold)
572 (cperl-array nil "LightGray" bold underline) 627 (cperl-array-face nil "LightGray" bold underline)
573 (cperl-hash nil "LightGray" bold italic underline) 628 (cperl-hash-face nil "LightGray" bold italic underline)
574 (font-lock-comment-face nil "LightGray" italic) 629 (font-lock-comment-face nil "LightGray" italic)
575 (font-lock-string-face nil nil italic underline) 630 (font-lock-string-face nil nil italic underline)
576 (cperl-nonoverridable nil nil italic underline) 631 (cperl-nonoverridable-face nil nil italic underline)
577 (font-lock-type-face nil nil underline) 632 (font-lock-type-face nil nil underline)
633 (font-lock-warning-face nil "LightGray" bold italic box)
578 (underline nil "LightGray" strikeout)) 634 (underline nil "LightGray" strikeout))
579 "List given as an argument to `ps-extend-face-list' in `cperl-ps-print'." 635 "List given as an argument to `ps-extend-face-list' in `cperl-ps-print'."
580 :type '(repeat (cons symbol 636 :type '(repeat (cons symbol
@@ -588,7 +644,7 @@ when syntaxifying a chunk of buffer."
588(defvar cperl-dark-foreground 644(defvar cperl-dark-foreground
589 (cperl-choose-color "orchid1" "orange")) 645 (cperl-choose-color "orchid1" "orange"))
590 646
591(defface cperl-nonoverridable 647(defface cperl-nonoverridable-face
592 `((((class grayscale) (background light)) 648 `((((class grayscale) (background light))
593 (:background "Gray90" :slant italic :underline t)) 649 (:background "Gray90" :slant italic :underline t))
594 (((class grayscale) (background dark)) 650 (((class grayscale) (background dark))
@@ -600,10 +656,8 @@ when syntaxifying a chunk of buffer."
600 (t (:weight bold :underline t))) 656 (t (:weight bold :underline t)))
601 "Font Lock mode face used non-overridable keywords and modifiers of regexps." 657 "Font Lock mode face used non-overridable keywords and modifiers of regexps."
602 :group 'cperl-faces) 658 :group 'cperl-faces)
603;; backward-compatibility alias
604(put 'cperl-nonoverridable-face 'face-alias 'cperl-nonoverridable)
605 659
606(defface cperl-array 660(defface cperl-array-face
607 `((((class grayscale) (background light)) 661 `((((class grayscale) (background light))
608 (:background "Gray90" :weight bold)) 662 (:background "Gray90" :weight bold))
609 (((class grayscale) (background dark)) 663 (((class grayscale) (background dark))
@@ -615,10 +669,8 @@ when syntaxifying a chunk of buffer."
615 (t (:weight bold))) 669 (t (:weight bold)))
616 "Font Lock mode face used to highlight array names." 670 "Font Lock mode face used to highlight array names."
617 :group 'cperl-faces) 671 :group 'cperl-faces)
618;; backward-compatibility alias
619(put 'cperl-array-face 'face-alias 'cperl-array)
620 672
621(defface cperl-hash 673(defface cperl-hash-face
622 `((((class grayscale) (background light)) 674 `((((class grayscale) (background light))
623 (:background "Gray90" :weight bold :slant italic)) 675 (:background "Gray90" :weight bold :slant italic))
624 (((class grayscale) (background dark)) 676 (((class grayscale) (background dark))
@@ -630,8 +682,6 @@ when syntaxifying a chunk of buffer."
630 (t (:weight bold :slant italic))) 682 (t (:weight bold :slant italic)))
631 "Font Lock mode face used to highlight hash names." 683 "Font Lock mode face used to highlight hash names."
632 :group 'cperl-faces) 684 :group 'cperl-faces)
633;; backward-compatibility alias
634(put 'cperl-hash-face 'face-alias 'cperl-hash)
635 685
636 686
637 687
@@ -639,9 +689,7 @@ when syntaxifying a chunk of buffer."
639 689
640(defvar cperl-tips 'please-ignore-this-line 690(defvar cperl-tips 'please-ignore-this-line
641 "Get maybe newer version of this package from 691 "Get maybe newer version of this package from
642 ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs 692 http://ilyaz.org/software/emacs
643and/or
644 ftp://ftp.math.ohio-state.edu/pub/users/ilya/perl
645Subdirectory `cperl-mode' may contain yet newer development releases and/or 693Subdirectory `cperl-mode' may contain yet newer development releases and/or
646patches to related files. 694patches to related files.
647 695
@@ -666,9 +714,9 @@ want it to: put the following into your .emacs file:
666 (defalias 'perl-mode 'cperl-mode) 714 (defalias 'perl-mode 'cperl-mode)
667 715
668Get perl5-info from 716Get perl5-info from
669 $CPAN/doc/manual/info/perl-info.tar.gz 717 $CPAN/doc/manual/info/perl5-old/perl5-info.tar.gz
670older version was on 718Also, one can generate a newer documentation running `pod2texi' converter
671 http://www.metronet.com:70/9/perlinfo/perl5/manual/perl5-info.tar.gz 719 $CPAN/doc/manual/info/perl5/pod2texi-0.1.tar.gz
672 720
673If you use imenu-go, run imenu on perl5-info buffer (you can do it 721If you use imenu-go, run imenu on perl5-info buffer (you can do it
674from Perl menu). If many files are related, generate TAGS files from 722from Perl menu). If many files are related, generate TAGS files from
@@ -700,11 +748,18 @@ micro-docs on what I know about CPerl problems.")
700 "Description of problems in CPerl mode. 748 "Description of problems in CPerl mode.
701Some faces will not be shown on some versions of Emacs unless you 749Some faces will not be shown on some versions of Emacs unless you
702install choose-color.el, available from 750install choose-color.el, available from
703 ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/ 751 http://ilyaz.org/software/emacs
704 752
705`fill-paragraph' on a comment may leave the point behind the 753`fill-paragraph' on a comment may leave the point behind the
706paragraph. Parsing of lines with several <<EOF is not implemented 754paragraph. It also triggers a bug in some versions of Emacs (CPerl tries
707yet. 755to detect it and bulk out).
756
757See documentation of a variable `cperl-problems-old-emaxen' for the
758problems which disappear if you upgrade Emacs to a reasonably new
759version (20.3 for Emacs, and those of 2004 for XEmacs).")
760
761(defvar cperl-problems-old-emaxen 'please-ignore-this-line
762 "Description of problems in CPerl mode specific for older Emacs versions.
708 763
709Emacs had a _very_ restricted syntax parsing engine until version 764Emacs had a _very_ restricted syntax parsing engine until version
71020.1. Most problems below are corrected starting from this version of 76520.1. Most problems below are corrected starting from this version of
@@ -812,6 +867,13 @@ voice);
812 o) Highlights trailing whitespace; 867 o) Highlights trailing whitespace;
813 p) Is able to manipulate Perl Regular Expressions to ease 868 p) Is able to manipulate Perl Regular Expressions to ease
814 conversion to a more readable form. 869 conversion to a more readable form.
870 q) Can ispell POD sections and HERE-DOCs.
871 r) Understands comments and character classes inside regular
872 expressions; can find matching () and [] in a regular expression.
873 s) Allows indentation of //x-style regular expressions;
874 t) Highlights different symbols in regular expressions according
875 to their function; much less problems with backslashitis;
876 u) Allows to find regular expressions which contain interpolated parts.
815 877
8165) The indentation engine was very smart, but most of tricks may be 8785) The indentation engine was very smart, but most of tricks may be
817not needed anymore with the support for `syntax-table' property. Has 879not needed anymore with the support for `syntax-table' property. Has
@@ -829,7 +891,10 @@ the settings present before the switch.
829line-breaks/spacing between elements of the construct. 891line-breaks/spacing between elements of the construct.
830 892
83110) Uses a linear-time algorith for indentation of regions (on Emaxen with 89310) Uses a linear-time algorith for indentation of regions (on Emaxen with
832capable syntax engines).") 894capable syntax engines).
895
89611) Syntax-highlight, indentation, sexp-recognition inside regular expressions.
897")
833 898
834(defvar cperl-speed 'please-ignore-this-line 899(defvar cperl-speed 'please-ignore-this-line
835 "This is an incomplete compendium of what is available in other parts 900 "This is an incomplete compendium of what is available in other parts
@@ -878,19 +943,19 @@ B) Speed of editing operations.
878(defvar cperl-tips-faces 'please-ignore-this-line 943(defvar cperl-tips-faces 'please-ignore-this-line
879 "CPerl mode uses following faces for highlighting: 944 "CPerl mode uses following faces for highlighting:
880 945
881 `cperl-array' Array names 946 `cperl-array-face' Array names
882 `cperl-hash' Hash names 947 `cperl-hash-face' Hash names
883 `font-lock-comment-face' Comments, PODs and whatever is considered 948 `font-lock-comment-face' Comments, PODs and whatever is considered
884 syntaxically to be not code 949 syntaxically to be not code
885 `font-lock-constant-face' HERE-doc delimiters, labels, delimiters of 950 `font-lock-constant-face' HERE-doc delimiters, labels, delimiters of
886 2-arg operators s/y/tr/ or of RExen, 951 2-arg operators s/y/tr/ or of RExen,
887 `font-lock-function-name-face' Special-cased m// and s//foo/, _ as 952 `font-lock-warning-face' Special-cased m// and s//foo/,
888 a target of a file tests, file tests, 953 `font-lock-function-name-face' _ as a target of a file tests, file tests,
889 subroutine names at the moment of definition 954 subroutine names at the moment of definition
890 (except those conflicting with Perl operators), 955 (except those conflicting with Perl operators),
891 package names (when recognized), format names 956 package names (when recognized), format names
892 `font-lock-keyword-face' Control flow switch constructs, declarators 957 `font-lock-keyword-face' Control flow switch constructs, declarators
893 `cperl-nonoverridable' Non-overridable keywords, modifiers of RExen 958 `cperl-nonoverridable-face' Non-overridable keywords, modifiers of RExen
894 `font-lock-string-face' Strings, qw() constructs, RExen, POD sections, 959 `font-lock-string-face' Strings, qw() constructs, RExen, POD sections,
895 literal parts and the terminator of formats 960 literal parts and the terminator of formats
896 and whatever is syntaxically considered 961 and whatever is syntaxically considered
@@ -908,7 +973,25 @@ m// and s/// which do not do what one would expect them to do.
908Help with best setup of these faces for printout requested (for each of 973Help with best setup of these faces for printout requested (for each of
909the faces: please specify bold, italic, underline, shadow and box.) 974the faces: please specify bold, italic, underline, shadow and box.)
910 975
911\(Not finished.)") 976In regular expressions (except character classes):
977 `font-lock-string-face' \"Normal\" stuff and non-0-length constructs
978 `font-lock-constant-face': Delimiters
979 `font-lock-warning-face' Special-cased m// and s//foo/,
980 Mismatched closing delimiters, parens
981 we couldn't match, misplaced quantifiers,
982 unrecognized escape sequences
983 `cperl-nonoverridable-face' Modifiers, as gism in m/REx/gism
984 `font-lock-type-face' POSIX classes inside charclasses,
985 escape sequences with arguments (\x \23 \p \N)
986 and others match-a-char escape sequences
987 `font-lock-keyword-face' Capturing parens, and |
988 `font-lock-function-name-face' Special symbols: $ ^ . [ ] [^ ] (?{ }) (??{ })
989 `font-lock-builtin-face' \"Remaining\" 0-length constructs, executable
990 parts of a REx, not-capturing parens
991 `font-lock-variable-name-face' Interpolated constructs, embedded code
992 `font-lock-comment-face' Embedded comments
993
994")
912 995
913 996
914 997
@@ -985,6 +1068,25 @@ the faces: please specify bold, italic, underline, shadow and box.)
985 (cperl-hairy (or hairy t)) 1068 (cperl-hairy (or hairy t))
986 (t (symbol-value symbol)))) 1069 (t (symbol-value symbol))))
987 1070
1071
1072(defun cperl-make-indent (column &optional minimum keep)
1073 "Makes indent of the current line the requested amount.
1074Unless KEEP, removes the old indentation. Works around a bug in ancient
1075versions of Emacs."
1076 (let ((prop (get-text-property (point) 'syntax-type)))
1077 (or keep
1078 (delete-horizontal-space))
1079 (indent-to column minimum)
1080 ;; In old versions (e.g., 19.33) `indent-to' would not inherit properties
1081 (and prop
1082 (> (current-column) 0)
1083 (save-excursion
1084 (beginning-of-line)
1085 (or (get-text-property (point) 'syntax-type)
1086 (and (looking-at "\\=[ \t]")
1087 (put-text-property (point) (match-end 0)
1088 'syntax-type prop)))))))
1089
988;;; Probably it is too late to set these guys already, but it can help later: 1090;;; Probably it is too late to set these guys already, but it can help later:
989 1091
990;;;(and cperl-clobber-mode-lists 1092;;;(and cperl-clobber-mode-lists
@@ -1035,7 +1137,16 @@ the faces: please specify bold, italic, underline, shadow and box.)
1035 (cperl-define-key "\C-c\C-w" 'cperl-toggle-construct-fix) 1137 (cperl-define-key "\C-c\C-w" 'cperl-toggle-construct-fix)
1036 (cperl-define-key "\C-c\C-f" 'auto-fill-mode) 1138 (cperl-define-key "\C-c\C-f" 'auto-fill-mode)
1037 (cperl-define-key "\C-c\C-e" 'cperl-toggle-electric) 1139 (cperl-define-key "\C-c\C-e" 'cperl-toggle-electric)
1140 (cperl-define-key "\C-c\C-b" 'cperl-find-bad-style)
1141 (cperl-define-key "\C-c\C-p" 'cperl-pod-spell)
1142 (cperl-define-key "\C-c\C-d" 'cperl-here-doc-spell)
1143 (cperl-define-key "\C-c\C-n" 'cperl-narrow-to-here-doc)
1144 (cperl-define-key "\C-c\C-v" 'cperl-next-interpolated-REx)
1145 (cperl-define-key "\C-c\C-x" 'cperl-next-interpolated-REx-0)
1146 (cperl-define-key "\C-c\C-y" 'cperl-next-interpolated-REx-1)
1038 (cperl-define-key "\C-c\C-ha" 'cperl-toggle-autohelp) 1147 (cperl-define-key "\C-c\C-ha" 'cperl-toggle-autohelp)
1148 (cperl-define-key "\C-c\C-hp" 'cperl-perldoc)
1149 (cperl-define-key "\C-c\C-hP" 'cperl-perldoc-at-point)
1039 (cperl-define-key "\e\C-q" 'cperl-indent-exp) ; Usually not bound 1150 (cperl-define-key "\e\C-q" 'cperl-indent-exp) ; Usually not bound
1040 (cperl-define-key [?\C-\M-\|] 'cperl-lineup 1151 (cperl-define-key [?\C-\M-\|] 'cperl-lineup
1041 [(control meta |)]) 1152 [(control meta |)])
@@ -1074,9 +1185,13 @@ the faces: please specify bold, italic, underline, shadow and box.)
1074 (<= emacs-minor-version 11) (<= emacs-major-version 19)) 1185 (<= emacs-minor-version 11) (<= emacs-major-version 19))
1075 (progn 1186 (progn
1076 ;; substitute-key-definition is usefulness-deenhanced... 1187 ;; substitute-key-definition is usefulness-deenhanced...
1077 (cperl-define-key "\M-q" 'cperl-fill-paragraph) 1188 ;;;;;(cperl-define-key "\M-q" 'cperl-fill-paragraph)
1078 (cperl-define-key "\e;" 'cperl-indent-for-comment) 1189 (cperl-define-key "\e;" 'cperl-indent-for-comment)
1079 (cperl-define-key "\e\C-\\" 'cperl-indent-region)) 1190 (cperl-define-key "\e\C-\\" 'cperl-indent-region))
1191 (or (boundp 'fill-paragraph-function)
1192 (substitute-key-definition
1193 'fill-paragraph 'cperl-fill-paragraph
1194 cperl-mode-map global-map))
1080 (substitute-key-definition 1195 (substitute-key-definition
1081 'indent-sexp 'cperl-indent-exp 1196 'indent-sexp 'cperl-indent-exp
1082 cperl-mode-map global-map) 1197 cperl-mode-map global-map)
@@ -1094,52 +1209,101 @@ the faces: please specify bold, italic, underline, shadow and box.)
1094 (progn 1209 (progn
1095 (require 'easymenu) 1210 (require 'easymenu)
1096 (easy-menu-define 1211 (easy-menu-define
1097 cperl-menu cperl-mode-map "Menu for CPerl mode" 1212 cperl-menu cperl-mode-map "Menu for CPerl mode"
1098 '("Perl" 1213 '("Perl"
1099 ["Beginning of function" beginning-of-defun t] 1214 ["Beginning of function" beginning-of-defun t]
1100 ["End of function" end-of-defun t] 1215 ["End of function" end-of-defun t]
1101 ["Mark function" mark-defun t] 1216 ["Mark function" mark-defun t]
1102 ["Indent expression" cperl-indent-exp t] 1217 ["Indent expression" cperl-indent-exp t]
1103 ["Fill paragraph/comment" fill-paragraph t] 1218 ["Fill paragraph/comment" fill-paragraph t]
1219 "----"
1220 ["Line up a construction" cperl-lineup (cperl-use-region-p)]
1221 ["Invert if/unless/while etc" cperl-invert-if-unless t]
1222 ("Regexp"
1223 ["Beautify" cperl-beautify-regexp
1224 cperl-use-syntax-table-text-property]
1225 ["Beautify one level deep" (cperl-beautify-regexp 1)
1226 cperl-use-syntax-table-text-property]
1227 ["Beautify a group" cperl-beautify-level
1228 cperl-use-syntax-table-text-property]
1229 ["Beautify a group one level deep" (cperl-beautify-level 1)
1230 cperl-use-syntax-table-text-property]
1231 ["Contract a group" cperl-contract-level
1232 cperl-use-syntax-table-text-property]
1233 ["Contract groups" cperl-contract-levels
1234 cperl-use-syntax-table-text-property]
1104 "----" 1235 "----"
1105 ["Line up a construction" cperl-lineup (cperl-use-region-p)] 1236 ["Find next interpolated" cperl-next-interpolated-REx
1106 ["Invert if/unless/while etc" cperl-invert-if-unless t] 1237 (next-single-property-change (point-min) 'REx-interpolated)]
1107 ("Regexp" 1238 ["Find next interpolated (no //o)"
1108 ["Beautify" cperl-beautify-regexp 1239 cperl-next-interpolated-REx-0
1109 cperl-use-syntax-table-text-property] 1240 (or (text-property-any (point-min) (point-max) 'REx-interpolated t)
1110 ["Beautify one level deep" (cperl-beautify-regexp 1) 1241 (text-property-any (point-min) (point-max) 'REx-interpolated 1))]
1111 cperl-use-syntax-table-text-property] 1242 ["Find next interpolated (neither //o nor whole-REx)"
1112 ["Beautify a group" cperl-beautify-level 1243 cperl-next-interpolated-REx-1
1113 cperl-use-syntax-table-text-property] 1244 (text-property-any (point-min) (point-max) 'REx-interpolated t)])
1114 ["Beautify a group one level deep" (cperl-beautify-level 1) 1245 ["Insert spaces if needed to fix style" cperl-find-bad-style t]
1115 cperl-use-syntax-table-text-property] 1246 ["Refresh \"hard\" constructions" cperl-find-pods-heres t]
1116 ["Contract a group" cperl-contract-level 1247 "----"
1117 cperl-use-syntax-table-text-property] 1248 ["Indent region" cperl-indent-region (cperl-use-region-p)]
1118 ["Contract groups" cperl-contract-levels 1249 ["Comment region" cperl-comment-region (cperl-use-region-p)]
1119 cperl-use-syntax-table-text-property]) 1250 ["Uncomment region" cperl-uncomment-region (cperl-use-region-p)]
1120 ["Refresh \"hard\" constructions" cperl-find-pods-heres t] 1251 "----"
1252 ["Run" mode-compile (fboundp 'mode-compile)]
1253 ["Kill" mode-compile-kill (and (fboundp 'mode-compile-kill)
1254 (get-buffer "*compilation*"))]
1255 ["Next error" next-error (get-buffer "*compilation*")]
1256 ["Check syntax" cperl-check-syntax (fboundp 'mode-compile)]
1257 "----"
1258 ["Debugger" cperl-db t]
1259 "----"
1260 ("Tools"
1261 ["Imenu" imenu (fboundp 'imenu)]
1262 ["Imenu on Perl Info" cperl-imenu-on-info (featurep 'imenu)]
1121 "----" 1263 "----"
1122 ["Indent region" cperl-indent-region (cperl-use-region-p)] 1264 ["Ispell PODs" cperl-pod-spell
1123 ["Comment region" cperl-comment-region (cperl-use-region-p)] 1265 ;; Better not to update syntaxification here:
1124 ["Uncomment region" cperl-uncomment-region (cperl-use-region-p)] 1266 ;; debugging syntaxificatio can be broken by this???
1267 (or
1268 (get-text-property (point-min) 'in-pod)
1269 (< (progn
1270 (and cperl-syntaxify-for-menu
1271 (cperl-update-syntaxification (point-max) (point-max)))
1272 (next-single-property-change (point-min) 'in-pod nil (point-max)))
1273 (point-max)))]
1274 ["Ispell HERE-DOCs" cperl-here-doc-spell
1275 (< (progn
1276 (and cperl-syntaxify-for-menu
1277 (cperl-update-syntaxification (point-max) (point-max)))
1278 (next-single-property-change (point-min) 'here-doc-group nil (point-max)))
1279 (point-max))]
1280 ["Narrow to this HERE-DOC" cperl-narrow-to-here-doc
1281 (eq 'here-doc (progn
1282 (and cperl-syntaxify-for-menu
1283 (cperl-update-syntaxification (point) (point)))
1284 (get-text-property (point) 'syntax-type)))]
1285 ["Select this HERE-DOC or POD section"
1286 cperl-select-this-pod-or-here-doc
1287 (memq (progn
1288 (and cperl-syntaxify-for-menu
1289 (cperl-update-syntaxification (point) (point)))
1290 (get-text-property (point) 'syntax-type))
1291 '(here-doc pod))]
1125 "----" 1292 "----"
1126 ["Run" mode-compile (fboundp 'mode-compile)] 1293 ["CPerl pretty print (exprmntl)" cperl-ps-print
1127 ["Kill" mode-compile-kill (and (fboundp 'mode-compile-kill) 1294 (fboundp 'ps-extend-face-list)]
1128 (get-buffer "*compilation*"))]
1129 ["Next error" next-error (get-buffer "*compilation*")]
1130 ["Check syntax" cperl-check-syntax (fboundp 'mode-compile)]
1131 "----" 1295 "----"
1132 ["Debugger" cperl-db t] 1296 ["Syntaxify region" cperl-find-pods-heres-region
1297 (cperl-use-region-p)]
1298 ["Profile syntaxification" cperl-time-fontification t]
1299 ["Debug errors in delayed fontification" cperl-emulate-lazy-lock t]
1300 ["Debug unwind for syntactic scan" cperl-toggle-set-debug-unwind t]
1301 ["Debug backtrace on syntactic scan (BEWARE!!!)"
1302 (cperl-toggle-set-debug-unwind nil t) t]
1133 "----" 1303 "----"
1134 ("Tools" 1304 ["Class Hierarchy from TAGS" cperl-tags-hier-init t]
1135 ["Imenu" imenu (fboundp 'imenu)] 1305 ;;["Update classes" (cperl-tags-hier-init t) tags-table-list]
1136 ["Insert spaces if needed" cperl-find-bad-style t] 1306 ("Tags"
1137 ["Class Hierarchy from TAGS" cperl-tags-hier-init t]
1138 ;;["Update classes" (cperl-tags-hier-init t) tags-table-list]
1139 ["CPerl pretty print (exprmntl)" cperl-ps-print
1140 (fboundp 'ps-extend-face-list)]
1141 ["Imenu on info" cperl-imenu-on-info (featurep 'imenu)]
1142 ("Tags"
1143;;; ["Create tags for current file" cperl-etags t] 1307;;; ["Create tags for current file" cperl-etags t]
1144;;; ["Add tags for current file" (cperl-etags t) t] 1308;;; ["Add tags for current file" (cperl-etags t) t]
1145;;; ["Create tags for Perl files in directory" (cperl-etags nil t) t] 1309;;; ["Create tags for Perl files in directory" (cperl-etags nil t) t]
@@ -1186,10 +1350,10 @@ the faces: please specify bold, italic, underline, shadow and box.)
1186 ["PerlStyle" (cperl-set-style "PerlStyle") t] 1350 ["PerlStyle" (cperl-set-style "PerlStyle") t]
1187 ["GNU" (cperl-set-style "GNU") t] 1351 ["GNU" (cperl-set-style "GNU") t]
1188 ["C++" (cperl-set-style "C++") t] 1352 ["C++" (cperl-set-style "C++") t]
1189 ["FSF" (cperl-set-style "FSF") t] 1353 ["K&R" (cperl-set-style "K&R") t]
1190 ["BSD" (cperl-set-style "BSD") t] 1354 ["BSD" (cperl-set-style "BSD") t]
1191 ["Whitesmith" (cperl-set-style "Whitesmith") t] 1355 ["Whitesmith" (cperl-set-style "Whitesmith") t]
1192 ["Current" (cperl-set-style "Current") t] 1356 ["Memorize Current" (cperl-set-style "Current") t]
1193 ["Memorized" (cperl-set-style-back) cperl-old-style]) 1357 ["Memorized" (cperl-set-style-back) cperl-old-style])
1194 ("Micro-docs" 1358 ("Micro-docs"
1195 ["Tips" (describe-variable 'cperl-tips) t] 1359 ["Tips" (describe-variable 'cperl-tips) t]
@@ -1208,12 +1372,73 @@ the faces: please specify bold, italic, underline, shadow and box.)
1208The expansion is entirely correct because it uses the C preprocessor." 1372The expansion is entirely correct because it uses the C preprocessor."
1209 t) 1373 t)
1210 1374
1375;;; These two must be unwound, otherwise take exponential time
1376(defconst cperl-maybe-white-and-comment-rex "[ \t\n]*\\(#[^\n]*\n[ \t\n]*\\)*"
1377"Regular expression to match optional whitespace with interpspersed comments.
1378Should contain exactly one group.")
1379
1380;;; This one is tricky to unwind; still very inefficient...
1381(defconst cperl-white-and-comment-rex "\\([ \t\n]\\|#[^\n]*\n\\)+"
1382"Regular expression to match whitespace with interpspersed comments.
1383Should contain exactly one group.")
1384
1385
1386;;; Is incorporated in `cperl-imenu--function-name-regexp-perl'
1387;;; `cperl-outline-regexp', `defun-prompt-regexp'.
1388;;; Details of groups in this may be used in several functions; see comments
1389;;; near mentioned above variable(s)...
1390;;; sub($$):lvalue{} sub:lvalue{} Both allowed...
1391(defsubst cperl-after-sub-regexp (named attr) ; 9 groups without attr...
1392 "Match the text after `sub' in a subroutine declaration.
1393If NAMED is nil, allows anonymous subroutines. Matches up to the first \":\"
1394of attributes (if present), or end of the name or prototype (whatever is
1395the last)."
1396 (concat ; Assume n groups before this...
1397 "\\(" ; n+1=name-group
1398 cperl-white-and-comment-rex ; n+2=pre-name
1399 "\\(::[a-zA-Z_0-9:']+\\|[a-zA-Z_'][a-zA-Z_0-9:']*\\)" ; n+3=name
1400 "\\)" ; END n+1=name-group
1401 (if named "" "?")
1402 "\\(" ; n+4=proto-group
1403 cperl-maybe-white-and-comment-rex ; n+5=pre-proto
1404 "\\(([^()]*)\\)" ; n+6=prototype
1405 "\\)?" ; END n+4=proto-group
1406 "\\(" ; n+7=attr-group
1407 cperl-maybe-white-and-comment-rex ; n+8=pre-attr
1408 "\\(" ; n+9=start-attr
1409 ":"
1410 (if attr (concat
1411 "\\("
1412 cperl-maybe-white-and-comment-rex ; whitespace-comments
1413 "\\(\\sw\\|_\\)+" ; attr-name
1414 ;; attr-arg (1 level of internal parens allowed!)
1415 "\\((\\(\\\\.\\|[^\\\\()]\\|([^\\\\()]*)\\)*)\\)?"
1416 "\\(" ; optional : (XXX allows trailing???)
1417 cperl-maybe-white-and-comment-rex ; whitespace-comments
1418 ":\\)?"
1419 "\\)+")
1420 "[^:]")
1421 "\\)"
1422 "\\)?" ; END n+6=proto-group
1423 ))
1424
1425;;; Details of groups in this are used in `cperl-imenu--create-perl-index'
1426;;; and `cperl-outline-level'.
1427;;;; Was: 2=sub|package; now 2=package-group, 5=package-name 8=sub-name (+3)
1211(defvar cperl-imenu--function-name-regexp-perl 1428(defvar cperl-imenu--function-name-regexp-perl
1212 (concat 1429 (concat
1213 "^\\(" 1430 "^\\(" ; 1 = all
1214 "[ \t]*\\(sub\\|package\\)[ \t\n]+\\([a-zA-Z_0-9:']+\\)[ \t]*\\(([^()]*)[ \t]*\\)?" 1431 "\\([ \t]*package" ; 2 = package-group
1215 "\\|" 1432 "\\(" ; 3 = package-name-group
1216 "=head\\([12]\\)[ \t]+\\([^\n]+\\)$" 1433 cperl-white-and-comment-rex ; 4 = pre-package-name
1434 "\\([a-zA-Z_0-9:']+\\)\\)?\\)" ; 5 = package-name
1435 "\\|"
1436 "[ \t]*sub"
1437 (cperl-after-sub-regexp 'named nil) ; 8=name 11=proto 14=attr-start
1438 cperl-maybe-white-and-comment-rex ; 15=pre-block
1439 "\\|"
1440 "=head\\([1-4]\\)[ \t]+" ; 16=level
1441 "\\([^\n]+\\)$" ; 17=text
1217 "\\)")) 1442 "\\)"))
1218 1443
1219(defvar cperl-outline-regexp 1444(defvar cperl-outline-regexp
@@ -1225,6 +1450,12 @@ The expansion is entirely correct because it uses the C preprocessor."
1225(defvar cperl-string-syntax-table nil 1450(defvar cperl-string-syntax-table nil
1226 "Syntax table in use in CPerl mode string-like chunks.") 1451 "Syntax table in use in CPerl mode string-like chunks.")
1227 1452
1453(defsubst cperl-1- (p)
1454 (max (point-min) (1- p)))
1455
1456(defsubst cperl-1+ (p)
1457 (min (point-max) (1+ p)))
1458
1228(if cperl-mode-syntax-table 1459(if cperl-mode-syntax-table
1229 () 1460 ()
1230 (setq cperl-mode-syntax-table (make-syntax-table)) 1461 (setq cperl-mode-syntax-table (make-syntax-table))
@@ -1249,6 +1480,8 @@ The expansion is entirely correct because it uses the C preprocessor."
1249 (modify-syntax-entry ?| "." cperl-mode-syntax-table) 1480 (modify-syntax-entry ?| "." cperl-mode-syntax-table)
1250 (setq cperl-string-syntax-table (copy-syntax-table cperl-mode-syntax-table)) 1481 (setq cperl-string-syntax-table (copy-syntax-table cperl-mode-syntax-table))
1251 (modify-syntax-entry ?$ "." cperl-string-syntax-table) 1482 (modify-syntax-entry ?$ "." cperl-string-syntax-table)
1483 (modify-syntax-entry ?\{ "." cperl-string-syntax-table)
1484 (modify-syntax-entry ?\} "." cperl-string-syntax-table)
1252 (modify-syntax-entry ?# "." cperl-string-syntax-table)) ; (?# comment ) 1485 (modify-syntax-entry ?# "." cperl-string-syntax-table)) ; (?# comment )
1253 1486
1254 1487
@@ -1257,6 +1490,10 @@ The expansion is entirely correct because it uses the C preprocessor."
1257;; Fix for msb.el 1490;; Fix for msb.el
1258(defvar cperl-msb-fixed nil) 1491(defvar cperl-msb-fixed nil)
1259(defvar cperl-use-major-mode 'cperl-mode) 1492(defvar cperl-use-major-mode 'cperl-mode)
1493(defvar cperl-font-lock-multiline-start nil)
1494(defvar cperl-font-lock-multiline nil)
1495(defvar cperl-compilation-error-regexp-alist nil)
1496(defvar cperl-font-locking nil)
1260 1497
1261;;;###autoload 1498;;;###autoload
1262(defun cperl-mode () 1499(defun cperl-mode ()
@@ -1402,16 +1639,24 @@ Variables controlling indentation style:
1402 `cperl-min-label-indent' 1639 `cperl-min-label-indent'
1403 Minimal indentation for line that is a label. 1640 Minimal indentation for line that is a label.
1404 1641
1405Settings for K&R and BSD indentation styles are 1642Settings for classic indent-styles: K&R BSD=C++ GNU PerlStyle=Whitesmith
1406 `cperl-indent-level' 5 8 1643 `cperl-indent-level' 5 4 2 4
1407 `cperl-continued-statement-offset' 5 8 1644 `cperl-brace-offset' 0 0 0 0
1408 `cperl-brace-offset' -5 -8 1645 `cperl-continued-brace-offset' -5 -4 0 0
1409 `cperl-label-offset' -5 -8 1646 `cperl-label-offset' -5 -4 -2 -4
1647 `cperl-continued-statement-offset' 5 4 2 4
1410 1648
1411CPerl knows several indentation styles, and may bulk set the 1649CPerl knows several indentation styles, and may bulk set the
1412corresponding variables. Use \\[cperl-set-style] to do this. Use 1650corresponding variables. Use \\[cperl-set-style] to do this. Use
1413\\[cperl-set-style-back] to restore the memorized preexisting values 1651\\[cperl-set-style-back] to restore the memorized preexisting values
1414\(both available from menu). 1652\(both available from menu). See examples in `cperl-style-examples'.
1653
1654Part of the indentation style is how different parts of if/elsif/else
1655statements are broken into lines; in CPerl, this is reflected on how
1656templates for these constructs are created (controlled by
1657`cperl-extra-newline-before-brace'), and how reflow-logic should treat \"continuation\" blocks of else/elsif/continue, controlled by the same variable,
1658and by `cperl-extra-newline-before-brace-multiline',
1659`cperl-merge-trailing-else', `cperl-indent-region-fix-constructs'.
1415 1660
1416If `cperl-indent-level' is 0, the statement after opening brace in 1661If `cperl-indent-level' is 0, the statement after opening brace in
1417column 0 is indented on 1662column 0 is indented on
@@ -1465,8 +1710,12 @@ or as help on variables `cperl-tips', `cperl-problems',
1465 ("head2" "head2" cperl-electric-pod 0))) 1710 ("head2" "head2" cperl-electric-pod 0)))
1466 (setq abbrevs-changed prev-a-c))) 1711 (setq abbrevs-changed prev-a-c)))
1467 (setq local-abbrev-table cperl-mode-abbrev-table) 1712 (setq local-abbrev-table cperl-mode-abbrev-table)
1468 (abbrev-mode (if (cperl-val 'cperl-electric-keywords) 1 0)) 1713 (if (cperl-val 'cperl-electric-keywords)
1714 (abbrev-mode 1))
1469 (set-syntax-table cperl-mode-syntax-table) 1715 (set-syntax-table cperl-mode-syntax-table)
1716 ;; Until Emacs is multi-threaded, we do not actually need it local:
1717 (make-local-variable 'cperl-font-lock-multiline-start)
1718 (make-local-variable 'cperl-font-locking)
1470 (make-local-variable 'outline-regexp) 1719 (make-local-variable 'outline-regexp)
1471 ;; (setq outline-regexp imenu-example--function-name-regexp-perl) 1720 ;; (setq outline-regexp imenu-example--function-name-regexp-perl)
1472 (setq outline-regexp cperl-outline-regexp) 1721 (setq outline-regexp cperl-outline-regexp)
@@ -1478,7 +1727,10 @@ or as help on variables `cperl-tips', `cperl-problems',
1478 (setq paragraph-separate paragraph-start) 1727 (setq paragraph-separate paragraph-start)
1479 (make-local-variable 'paragraph-ignore-fill-prefix) 1728 (make-local-variable 'paragraph-ignore-fill-prefix)
1480 (setq paragraph-ignore-fill-prefix t) 1729 (setq paragraph-ignore-fill-prefix t)
1481 (set (make-local-variable 'fill-paragraph-function) 'cperl-fill-paragraph) 1730 (if cperl-xemacs-p
1731 (progn
1732 (make-local-variable 'paren-backwards-message)
1733 (set 'paren-backwards-message t)))
1482 (make-local-variable 'indent-line-function) 1734 (make-local-variable 'indent-line-function)
1483 (setq indent-line-function 'cperl-indent-line) 1735 (setq indent-line-function 'cperl-indent-line)
1484 (make-local-variable 'require-final-newline) 1736 (make-local-variable 'require-final-newline)
@@ -1492,9 +1744,22 @@ or as help on variables `cperl-tips', `cperl-problems',
1492 (make-local-variable 'comment-start-skip) 1744 (make-local-variable 'comment-start-skip)
1493 (setq comment-start-skip "#+ *") 1745 (setq comment-start-skip "#+ *")
1494 (make-local-variable 'defun-prompt-regexp) 1746 (make-local-variable 'defun-prompt-regexp)
1495 (setq defun-prompt-regexp "^[ \t]*sub[ \t\n]+\\([^ \t\n{(;]+\\)\\([ \t\n]*([^()]*)[ \t\n]*\\)?[ \t\n]*") 1747;;; "[ \t]*sub"
1748;;; (cperl-after-sub-regexp 'named nil) ; 8=name 11=proto 14=attr-start
1749;;; cperl-maybe-white-and-comment-rex ; 15=pre-block
1750 (setq defun-prompt-regexp
1751 (concat "^[ \t]*\\(sub"
1752 (cperl-after-sub-regexp 'named 'attr-groups)
1753 "\\|" ; per toke.c
1754 "\\(BEGIN\\|CHECK\\|INIT\\|END\\|AUTOLOAD\\|DESTROY\\)"
1755 "\\)"
1756 cperl-maybe-white-and-comment-rex))
1496 (make-local-variable 'comment-indent-function) 1757 (make-local-variable 'comment-indent-function)
1497 (setq comment-indent-function 'cperl-comment-indent) 1758 (setq comment-indent-function 'cperl-comment-indent)
1759 (and (boundp 'fill-paragraph-function)
1760 (progn
1761 (make-local-variable 'fill-paragraph-function)
1762 (set 'fill-paragraph-function 'cperl-fill-paragraph)))
1498 (make-local-variable 'parse-sexp-ignore-comments) 1763 (make-local-variable 'parse-sexp-ignore-comments)
1499 (setq parse-sexp-ignore-comments t) 1764 (setq parse-sexp-ignore-comments t)
1500 (make-local-variable 'indent-region-function) 1765 (make-local-variable 'indent-region-function)
@@ -1509,21 +1774,40 @@ or as help on variables `cperl-tips', `cperl-problems',
1509 (set 'vc-rcs-header cperl-vc-rcs-header) 1774 (set 'vc-rcs-header cperl-vc-rcs-header)
1510 (make-local-variable 'vc-sccs-header) 1775 (make-local-variable 'vc-sccs-header)
1511 (set 'vc-sccs-header cperl-vc-sccs-header) 1776 (set 'vc-sccs-header cperl-vc-sccs-header)
1777 ;; This one is obsolete...
1778 (make-local-variable 'vc-header-alist)
1779 (set 'vc-header-alist (or cperl-vc-header-alist ; Avoid warning
1780 (` ((SCCS (, (car cperl-vc-sccs-header)))
1781 (RCS (, (car cperl-vc-rcs-header)))))))
1782 (cond ((boundp 'compilation-error-regexp-alist-alist);; xemacs 20.x
1783 (make-local-variable 'compilation-error-regexp-alist-alist)
1784 (set 'compilation-error-regexp-alist-alist
1785 (cons (cons 'cperl cperl-compilation-error-regexp-alist)
1786 (symbol-value 'compilation-error-regexp-alist-alist)))
1787 (if (fboundp 'compilation-build-compilation-error-regexp-alist)
1788 (let ((f 'compilation-build-compilation-error-regexp-alist))
1789 (funcall f))
1790 (push 'cperl compilation-error-regexp-alist)))
1791 ((boundp 'compilation-error-regexp-alist);; xmeacs 19.x
1792 (make-local-variable 'compilation-error-regexp-alist)
1793 (set 'compilation-error-regexp-alist
1794 (cons cperl-compilation-error-regexp-alist
1795 (symbol-value 'compilation-error-regexp-alist)))))
1512 (make-local-variable 'font-lock-defaults) 1796 (make-local-variable 'font-lock-defaults)
1513 (setq font-lock-defaults 1797 (setq font-lock-defaults
1514 (cond 1798 (cond
1515 ((string< emacs-version "19.30") 1799 ((string< emacs-version "19.30")
1516 '(cperl-font-lock-keywords-2)) 1800 '(cperl-font-lock-keywords-2 nil nil ((?_ . "w"))))
1517 ((string< emacs-version "19.33") ; Which one to use? 1801 ((string< emacs-version "19.33") ; Which one to use?
1518 '((cperl-font-lock-keywords 1802 '((cperl-font-lock-keywords
1519 cperl-font-lock-keywords-1 1803 cperl-font-lock-keywords-1
1520 cperl-font-lock-keywords-2))) 1804 cperl-font-lock-keywords-2) nil nil ((?_ . "w"))))
1521 (t 1805 (t
1522 '((cperl-load-font-lock-keywords 1806 '((cperl-load-font-lock-keywords
1523 cperl-load-font-lock-keywords-1 1807 cperl-load-font-lock-keywords-1
1524 cperl-load-font-lock-keywords-2) 1808 cperl-load-font-lock-keywords-2) nil nil ((?_ . "w"))))))
1525 nil nil ((?_ . "w"))))))
1526 (make-local-variable 'cperl-syntax-state) 1809 (make-local-variable 'cperl-syntax-state)
1810 (setq cperl-syntax-state nil) ; reset syntaxification cache
1527 (if cperl-use-syntax-table-text-property 1811 (if cperl-use-syntax-table-text-property
1528 (progn 1812 (progn
1529 (make-local-variable 'parse-sexp-lookup-properties) 1813 (make-local-variable 'parse-sexp-lookup-properties)
@@ -1533,10 +1817,12 @@ or as help on variables `cperl-tips', `cperl-problems',
1533 (or (boundp 'font-lock-unfontify-region-function) 1817 (or (boundp 'font-lock-unfontify-region-function)
1534 (set 'font-lock-unfontify-region-function 1818 (set 'font-lock-unfontify-region-function
1535 'font-lock-default-unfontify-region)) 1819 'font-lock-default-unfontify-region))
1536 (make-local-variable 'font-lock-unfontify-region-function) 1820 (unless cperl-xemacs-p ; Our: just a plug for wrong font-lock
1537 (set 'font-lock-unfontify-region-function ; not present with old Emacs 1821 (make-local-variable 'font-lock-unfontify-region-function)
1538 'cperl-font-lock-unfontify-region-function) 1822 (set 'font-lock-unfontify-region-function ; not present with old Emacs
1823 'cperl-font-lock-unfontify-region-function))
1539 (make-local-variable 'cperl-syntax-done-to) 1824 (make-local-variable 'cperl-syntax-done-to)
1825 (setq cperl-syntax-done-to nil) ; reset syntaxification cache
1540 (make-local-variable 'font-lock-syntactic-keywords) 1826 (make-local-variable 'font-lock-syntactic-keywords)
1541 (setq font-lock-syntactic-keywords 1827 (setq font-lock-syntactic-keywords
1542 (if cperl-syntaxify-by-font-lock 1828 (if cperl-syntaxify-by-font-lock
@@ -1546,10 +1832,20 @@ or as help on variables `cperl-tips', `cperl-problems',
1546 ;; to make font-lock think that font-lock-syntactic-keywords 1832 ;; to make font-lock think that font-lock-syntactic-keywords
1547 ;; are defined. 1833 ;; are defined.
1548 '(t))))) 1834 '(t)))))
1835 (if (boundp 'font-lock-multiline) ; Newer font-lock; use its facilities
1836 (progn
1837 (setq cperl-font-lock-multiline t) ; Not localized...
1838 (set 'font-lock-multiline t)) ; not present with old Emacs; auto-local
1839 (make-local-variable 'font-lock-fontify-region-function)
1840 (set 'font-lock-fontify-region-function ; not present with old Emacs
1841 'cperl-font-lock-fontify-region-function))
1842 (make-local-variable 'font-lock-fontify-region-function)
1843 (set 'font-lock-fontify-region-function ; not present with old Emacs
1844 'cperl-font-lock-fontify-region-function)
1549 (make-local-variable 'cperl-old-style) 1845 (make-local-variable 'cperl-old-style)
1550 (if (boundp 'normal-auto-fill-function) ; 19.33 and later 1846 (if (boundp 'normal-auto-fill-function) ; 19.33 and later
1551 (set (make-local-variable 'normal-auto-fill-function) 1847 (set (make-local-variable 'normal-auto-fill-function)
1552 'cperl-do-auto-fill) ; RMS has it as #'cperl-do-auto-fill ??? 1848 'cperl-do-auto-fill)
1553 (or (fboundp 'cperl-old-auto-fill-mode) 1849 (or (fboundp 'cperl-old-auto-fill-mode)
1554 (progn 1850 (progn
1555 (fset 'cperl-old-auto-fill-mode (symbol-function 'auto-fill-mode)) 1851 (fset 'cperl-old-auto-fill-mode (symbol-function 'auto-fill-mode))
@@ -1562,12 +1858,18 @@ or as help on variables `cperl-tips', `cperl-problems',
1562 (if (cperl-val 'cperl-font-lock) 1858 (if (cperl-val 'cperl-font-lock)
1563 (progn (or cperl-faces-init (cperl-init-faces)) 1859 (progn (or cperl-faces-init (cperl-init-faces))
1564 (font-lock-mode 1)))) 1860 (font-lock-mode 1))))
1861 (set (make-local-variable 'facemenu-add-face-function)
1862 'cperl-facemenu-add-face-function) ; XXXX What this guy is for???
1565 (and (boundp 'msb-menu-cond) 1863 (and (boundp 'msb-menu-cond)
1566 (not cperl-msb-fixed) 1864 (not cperl-msb-fixed)
1567 (cperl-msb-fix)) 1865 (cperl-msb-fix))
1568 (if (featurep 'easymenu) 1866 (if (featurep 'easymenu)
1569 (easy-menu-add cperl-menu)) ; A NOP in Emacs. 1867 (easy-menu-add cperl-menu)) ; A NOP in Emacs.
1570 (run-mode-hooks 'cperl-mode-hook) 1868 (run-mode-hooks 'cperl-mode-hook)
1869 (if cperl-hook-after-change
1870 (progn
1871 (make-local-hook 'after-change-functions)
1872 (add-hook 'after-change-functions 'cperl-after-change-function nil t)))
1571 ;; After hooks since fontification will break this 1873 ;; After hooks since fontification will break this
1572 (if cperl-pod-here-scan 1874 (if cperl-pod-here-scan
1573 (or cperl-syntaxify-by-font-lock 1875 (or cperl-syntaxify-by-font-lock
@@ -1616,31 +1918,37 @@ or as help on variables `cperl-tips', `cperl-problems',
1616(defvar cperl-st-ket '(5 . ?\<)) 1918(defvar cperl-st-ket '(5 . ?\<))
1617 1919
1618 1920
1619(defun cperl-comment-indent () 1921(defun cperl-comment-indent () ; called at point at supposed comment
1620 (let ((p (point)) (c (current-column)) was phony) 1922 (let ((p (point)) (c (current-column)) was phony)
1621 (if (looking-at "^#") 0 ; Existing comment at bol stays there. 1923 (if (and (not cperl-indent-comment-at-column-0)
1924 (looking-at "^#"))
1925 0 ; Existing comment at bol stays there.
1622 ;; Wrong comment found 1926 ;; Wrong comment found
1623 (save-excursion 1927 (save-excursion
1624 (setq was (cperl-to-comment-or-eol) 1928 (setq was (cperl-to-comment-or-eol)
1625 phony (eq (get-text-property (point) 'syntax-table) 1929 phony (eq (get-text-property (point) 'syntax-table)
1626 cperl-st-cfence)) 1930 cperl-st-cfence))
1627 (if phony 1931 (if phony
1628 (progn 1932 (progn ; Too naive???
1629 (re-search-forward "#\\|$") ; Hmm, what about embedded #? 1933 (re-search-forward "#\\|$") ; Hmm, what about embedded #?
1630 (if (eq (preceding-char) ?\#) 1934 (if (eq (preceding-char) ?\#)
1631 (forward-char -1)) 1935 (forward-char -1))
1632 (setq was nil))) 1936 (setq was nil)))
1633 (if (= (point) p) 1937 (if (= (point) p) ; Our caller found a correct place
1634 (progn 1938 (progn
1635 (skip-chars-backward " \t") 1939 (skip-chars-backward " \t")
1636 (max (1+ (current-column)) ; Else indent at comment column 1940 (setq was (current-column))
1637 comment-column)) 1941 (if (eq was 0)
1942 comment-column
1943 (max (1+ was) ; Else indent at comment column
1944 comment-column)))
1945 ;; No, the caller found a random place; we need to edit ourselves
1638 (if was nil 1946 (if was nil
1639 (insert comment-start) 1947 (insert comment-start)
1640 (backward-char (length comment-start))) 1948 (backward-char (length comment-start)))
1641 (setq cperl-wrong-comment t) 1949 (setq cperl-wrong-comment t)
1642 (indent-to comment-column 1) ; Indent minimum 1 1950 (cperl-make-indent comment-column 1) ; Indent min 1
1643 c))))) ; except leave at least one space. 1951 c)))))
1644 1952
1645;;;(defun cperl-comment-indent-fallback () 1953;;;(defun cperl-comment-indent-fallback ()
1646;;; "Is called if the standard comment-search procedure fails. 1954;;; "Is called if the standard comment-search procedure fails.
@@ -1666,7 +1974,7 @@ or as help on variables `cperl-tips', `cperl-problems',
1666 (interactive) 1974 (interactive)
1667 (let (cperl-wrong-comment) 1975 (let (cperl-wrong-comment)
1668 (indent-for-comment) 1976 (indent-for-comment)
1669 (if cperl-wrong-comment 1977 (if cperl-wrong-comment ; set by `cperl-comment-indent'
1670 (progn (cperl-to-comment-or-eol) 1978 (progn (cperl-to-comment-or-eol)
1671 (forward-char (length comment-start)))))) 1979 (forward-char (length comment-start))))))
1672 1980
@@ -1966,15 +2274,10 @@ to nil."
1966 (or 2274 (or
1967 (get-text-property (point) 'in-pod) 2275 (get-text-property (point) 'in-pod)
1968 (cperl-after-expr-p nil "{;:") 2276 (cperl-after-expr-p nil "{;:")
1969 (and (re-search-backward 2277 (and (re-search-backward "\\(\\`\n?\\|^\n\\)=\\sw+" (point-min) t)
1970 ;; "\\(\\`\n?\\|\n\n\\)=\\sw+" 2278 (not (looking-at "\n*=cut"))
1971 "\\(\\`\n?\\|^\n\\)=\\sw+" 2279 (or (not cperl-use-syntax-table-text-property)
1972 (point-min) t) 2280 (eq (get-text-property (point) 'syntax-type) 'pod))))))
1973 (not (or
1974 (looking-at "=cut")
1975 (and cperl-use-syntax-table-text-property
1976 (not (eq (get-text-property (point) 'syntax-type)
1977 'pod)))))))))
1978 (progn 2281 (progn
1979 (save-excursion 2282 (save-excursion
1980 (setq notlast (re-search-forward "^\n=" nil t))) 2283 (setq notlast (re-search-forward "^\n=" nil t)))
@@ -2252,7 +2555,7 @@ key. Will untabify if `cperl-electric-backspace-untabify' is non-nil."
2252 2555
2253(put 'cperl-electric-backspace 'delete-selection 'supersede) 2556(put 'cperl-electric-backspace 'delete-selection 'supersede)
2254 2557
2255(defun cperl-inside-parens-p () 2558(defun cperl-inside-parens-p () ;; NOT USED????
2256 (condition-case () 2559 (condition-case ()
2257 (save-excursion 2560 (save-excursion
2258 (save-restriction 2561 (save-restriction
@@ -2332,8 +2635,9 @@ Return the amount the indentation changed by."
2332 (zerop shift-amt)) 2635 (zerop shift-amt))
2333 (if (> (- (point-max) pos) (point)) 2636 (if (> (- (point-max) pos) (point))
2334 (goto-char (- (point-max) pos))) 2637 (goto-char (- (point-max) pos)))
2335 (delete-region beg (point)) 2638 ;;;(delete-region beg (point))
2336 (indent-to indent) 2639 ;;;(indent-to indent)
2640 (cperl-make-indent indent)
2337 ;; If initial point was within line's indentation, 2641 ;; If initial point was within line's indentation,
2338 ;; position after the indentation. Else stay at same point in text. 2642 ;; position after the indentation. Else stay at same point in text.
2339 (if (> (- (point-max) pos) (point)) 2643 (if (> (- (point-max) pos) (point))
@@ -2380,63 +2684,55 @@ Return the amount the indentation changed by."
2380 (or state (setq state (parse-partial-sexp start start-point -1 nil start-state))) 2684 (or state (setq state (parse-partial-sexp start start-point -1 nil start-state)))
2381 (list start state depth prestart)))) 2685 (list start state depth prestart))))
2382 2686
2383(defun cperl-block-p () ; Do not C-M-q ! One string contains ";" !
2384 ;; Positions is before ?\{. Checks whether it starts a block.
2385 ;; No save-excursion!
2386 (cperl-backward-to-noncomment (point-min))
2387 (or (memq (preceding-char) (append ";){}$@&%\C-@" nil)) ; Or label! \C-@ at bobp
2388 ; Label may be mixed up with `$blah :'
2389 (save-excursion (cperl-after-label))
2390 (and (memq (char-syntax (preceding-char)) '(?w ?_))
2391 (progn
2392 (backward-sexp)
2393 ;; Need take into account `bless', `return', `tr',...
2394 (or (and (looking-at "[a-zA-Z0-9_:]+[ \t\n\f]*[{#]") ; Method call syntax
2395 (not (looking-at "\\(bless\\|return\\|q[wqrx]?\\|tr\\|[smy]\\)\\>")))
2396 (progn
2397 (skip-chars-backward " \t\n\f")
2398 (and (memq (char-syntax (preceding-char)) '(?w ?_))
2399 (progn
2400 (backward-sexp)
2401 (looking-at
2402 "sub[ \t]+[a-zA-Z0-9_:]+[ \t\n\f]*\\(([^()]*)[ \t\n\f]*\\)?[#{]")))))))))
2403
2404(defvar cperl-look-for-prop '((pod in-pod) (here-doc-delim here-doc-group))) 2687(defvar cperl-look-for-prop '((pod in-pod) (here-doc-delim here-doc-group)))
2405 2688
2406(defun cperl-calculate-indent (&optional parse-data) ; was parse-start 2689(defun cperl-beginning-of-property (p prop &optional lim)
2407 "Return appropriate indentation for current line as Perl code. 2690 "Given that P has a property PROP, find where the property starts.
2408In usual case returns an integer: the column to indent to. 2691Will not look before LIM."
2409Returns nil if line starts inside a string, t if in a comment. 2692 ;;; XXXX What to do at point-max???
2410 2693 (or (previous-single-property-change (cperl-1+ p) prop lim)
2411Will not correct the indentation for labels, but will correct it for braces 2694 (point-min))
2412and closing parentheses and brackets." 2695;;; (cond ((eq p (point-min))
2696;;; p)
2697;;; ((and lim (<= p lim))
2698;;; p)
2699;;; ((not (get-text-property (1- p) prop))
2700;;; p)
2701;;; (t (or (previous-single-property-change p look-prop lim)
2702;;; (point-min))))
2703 )
2704
2705(defun cperl-sniff-for-indent (&optional parse-data) ; was parse-start
2706 ;; Old workhorse for calculation of indentation; the major problem
2707 ;; is that it mixes the sniffer logic to understand what the current line
2708 ;; MEANS with the logic to actually calculate where to indent it.
2709 ;; The latter part should be eventually moved to `cperl-calculate-indent';
2710 ;; actually, this is mostly done now...
2413 (cperl-update-syntaxification (point) (point)) 2711 (cperl-update-syntaxification (point) (point))
2414 (save-excursion 2712 (let ((res (get-text-property (point) 'syntax-type)))
2415 (if (or 2713 (save-excursion
2416 (and (memq (get-text-property (point) 'syntax-type) 2714 (cond
2417 '(pod here-doc here-doc-delim format)) 2715 ((and (memq res '(pod here-doc here-doc-delim format))
2418 (not (get-text-property (point) 'indentable))) 2716 (not (get-text-property (point) 'indentable)))
2419 ;; before start of POD - whitespace found since do not have 'pod! 2717 (vector res))
2420 (and (looking-at "[ \t]*\n=") 2718 ;; before start of POD - whitespace found since do not have 'pod!
2421 (error "Spaces before POD section!")) 2719 ((looking-at "[ \t]*\n=")
2422 (and (not cperl-indent-left-aligned-comments) 2720 (error "Spaces before POD section!"))
2423 (looking-at "^#"))) 2721 ((and (not cperl-indent-left-aligned-comments)
2424 nil 2722 (looking-at "^#"))
2425 (beginning-of-line) 2723 [comment-special:at-beginning-of-line])
2426 (let ((indent-point (point)) 2724 ((get-text-property (point) 'in-pod)
2427 (char-after (save-excursion 2725 [in-pod])
2428 (skip-chars-forward " \t") 2726 (t
2429 (following-char))) 2727 (beginning-of-line)
2430 (in-pod (get-text-property (point) 'in-pod)) 2728 (let* ((indent-point (point))
2431 (pre-indent-point (point)) 2729 (char-after-pos (save-excursion
2432 p prop look-prop is-block delim) 2730 (skip-chars-forward " \t")
2433 (cond 2731 (point)))
2434 (in-pod 2732 (char-after (char-after char-after-pos))
2435 ;; In the verbatim part, probably code example. What to do??? 2733 (pre-indent-point (point))
2436 ) 2734 p prop look-prop is-block delim)
2437 (t 2735 (save-excursion ; Know we are not in POD, find appropriate pos before
2438 (save-excursion
2439 ;; Not in POD
2440 (cperl-backward-to-noncomment nil) 2736 (cperl-backward-to-noncomment nil)
2441 (setq p (max (point-min) (1- (point))) 2737 (setq p (max (point-min) (1- (point)))
2442 prop (get-text-property p 'syntax-type) 2738 prop (get-text-property p 'syntax-type)
@@ -2444,437 +2740,597 @@ and closing parentheses and brackets."
2444 'syntax-type)) 2740 'syntax-type))
2445 (if (memq prop '(pod here-doc format here-doc-delim)) 2741 (if (memq prop '(pod here-doc format here-doc-delim))
2446 (progn 2742 (progn
2447 (goto-char (or (previous-single-property-change p look-prop) 2743 (goto-char (cperl-beginning-of-property p look-prop))
2448 (point-min)))
2449 (beginning-of-line) 2744 (beginning-of-line)
2450 (setq pre-indent-point (point))))))) 2745 (setq pre-indent-point (point)))))
2451 (goto-char pre-indent-point) 2746 (goto-char pre-indent-point) ; Orig line skipping preceeding pod/etc
2452 (let* ((case-fold-search nil) 2747 (let* ((case-fold-search nil)
2453 (s-s (cperl-get-state (car parse-data) (nth 1 parse-data))) 2748 (s-s (cperl-get-state (car parse-data) (nth 1 parse-data)))
2454 (start (or (nth 2 parse-data) 2749 (start (or (nth 2 parse-data) ; last complete sexp terminated
2455 (nth 0 s-s))) 2750 (nth 0 s-s))) ; Good place to start parsing
2456 (state (nth 1 s-s)) 2751 (state (nth 1 s-s))
2457 (containing-sexp (car (cdr state))) 2752 (containing-sexp (car (cdr state)))
2458 old-indent) 2753 old-indent)
2459 (if (and 2754 (if (and
2460 ;;containing-sexp ;; We are buggy at toplevel :-( 2755 ;;containing-sexp ;; We are buggy at toplevel :-(
2461 parse-data) 2756 parse-data)
2462 (progn 2757 (progn
2463 (setcar parse-data pre-indent-point) 2758 (setcar parse-data pre-indent-point)
2464 (setcar (cdr parse-data) state) 2759 (setcar (cdr parse-data) state)
2465 (or (nth 2 parse-data) 2760 (or (nth 2 parse-data)
2466 (setcar (cddr parse-data) start)) 2761 (setcar (cddr parse-data) start))
2467 ;; Before this point: end of statement 2762 ;; Before this point: end of statement
2468 (setq old-indent (nth 3 parse-data)))) 2763 (setq old-indent (nth 3 parse-data))))
2469 (cond ((get-text-property (point) 'indentable) 2764 (cond ((get-text-property (point) 'indentable)
2470 ;; indent to just after the surrounding open, 2765 ;; indent to "after" the surrounding open
2471 ;; skip blanks if we do not close the expression. 2766 ;; (same offset as `cperl-beautify-regexp-piece'),
2472 (goto-char (1+ (previous-single-property-change (point) 'indentable))) 2767 ;; skip blanks if we do not close the expression.
2473 (or (memq char-after (append ")]}" nil)) 2768 (setq delim ; We do not close the expression
2474 (looking-at "[ \t]*\\(#\\|$\\)") 2769 (get-text-property
2475 (skip-chars-forward " \t")) 2770 (cperl-1+ char-after-pos) 'indentable)
2476 (current-column)) 2771 p (1+ (cperl-beginning-of-property
2477 ((or (nth 3 state) (nth 4 state)) 2772 (point) 'indentable))
2478 ;; return nil or t if should not change this line 2773 is-block ; misused for: preceeding line in REx
2479 (nth 4 state)) 2774 (save-excursion ; Find preceeding line
2480 ;; XXXX Do we need to special-case this? 2775 (cperl-backward-to-noncomment p)
2481 ((null containing-sexp) 2776 (beginning-of-line)
2482 ;; Line is at top level. May be data or function definition, 2777 (if (<= (point) p)
2483 ;; or may be function argument declaration. 2778 (progn ; get indent from the first line
2484 ;; Indent like the previous top level line 2779 (goto-char p)
2485 ;; unless that ends in a closeparen without semicolon, 2780 (skip-chars-forward " \t")
2486 ;; in which case this line is the first argument decl. 2781 (if (memq (char-after (point))
2487 (skip-chars-forward " \t") 2782 (append "#\n" nil))
2488 (+ (save-excursion 2783 nil ; Can't use intentation of this line...
2489 (goto-char start) 2784 (point)))
2490 (- (current-indentation) 2785 (skip-chars-forward " \t")
2491 (if (nth 2 s-s) cperl-indent-level 0))) 2786 (point)))
2492 (if (= char-after ?{) cperl-continued-brace-offset 0) 2787 prop (parse-partial-sexp p char-after-pos))
2493 (progn 2788 (cond ((not delim) ; End the REx, ignore is-block
2494 (cperl-backward-to-noncomment (or old-indent (point-min))) 2789 (vector 'indentable 'terminator p is-block))
2495 ;; Look at previous line that's at column 0 2790 (is-block ; Indent w.r.t. preceeding line
2496 ;; to determine whether we are in top-level decls 2791 (vector 'indentable 'cont-line char-after-pos
2497 ;; or function's arg decls. Set basic-indent accordingly. 2792 is-block char-after p))
2498 ;; Now add a little if this is a continuation line. 2793 (t ; No preceeding line...
2499 (if (or (bobp) 2794 (vector 'indentable 'first-line p))))
2500 (eq (point) old-indent) ; old-indent was at comment 2795 ((get-text-property char-after-pos 'REx-part2)
2501 (eq (preceding-char) ?\;) 2796 (vector 'REx-part2 (point)))
2502 ;; Had ?\) too 2797 ((nth 3 state)
2503 (and (eq (preceding-char) ?\}) 2798 [comment])
2504 (cperl-after-block-and-statement-beg 2799 ((nth 4 state)
2505 (point-min))) ; Was start - too close 2800 [string])
2506 (memq char-after (append ")]}" nil)) 2801 ;; XXXX Do we need to special-case this?
2507 (and (eq (preceding-char) ?\:) ; label 2802 ((null containing-sexp)
2508 (progn 2803 ;; Line is at top level. May be data or function definition,
2509 (forward-sexp -1) 2804 ;; or may be function argument declaration.
2510 (skip-chars-backward " \t") 2805 ;; Indent like the previous top level line
2511 (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:"))) 2806 ;; unless that ends in a closeparen without semicolon,
2512 (get-text-property (point) 'first-format-line)) 2807 ;; in which case this line is the first argument decl.
2513 (progn 2808 (skip-chars-forward " \t")
2514 (if (and parse-data 2809 (cperl-backward-to-noncomment (or old-indent (point-min)))
2515 (not (eq char-after ?\C-j))) 2810 (setq state
2516 (setcdr (cddr parse-data) 2811 (or (bobp)
2517 (list pre-indent-point))) 2812 (eq (point) old-indent) ; old-indent was at comment
2518 0) 2813 (eq (preceding-char) ?\;)
2519 cperl-continued-statement-offset)))) 2814 ;; Had ?\) too
2520 ((not 2815 (and (eq (preceding-char) ?\})
2521 (or (setq is-block 2816 (cperl-after-block-and-statement-beg
2522 (and (setq delim (= (char-after containing-sexp) ?{)) 2817 (point-min))) ; Was start - too close
2523 (save-excursion ; Is it a hash? 2818 (memq char-after (append ")]}" nil))
2524 (goto-char containing-sexp) 2819 (and (eq (preceding-char) ?\:) ; label
2525 (cperl-block-p))))
2526 cperl-indent-parens-as-block))
2527 ;; group is an expression, not a block:
2528 ;; indent to just after the surrounding open parens,
2529 ;; skip blanks if we do not close the expression.
2530 (goto-char (1+ containing-sexp))
2531 (or (memq char-after
2532 (append (if delim "}" ")]}") nil))
2533 (looking-at "[ \t]*\\(#\\|$\\)")
2534 (skip-chars-forward " \t"))
2535 (+ (current-column)
2536 (if (and delim
2537 (eq char-after ?\}))
2538 ;; Correct indentation of trailing ?\}
2539 (+ cperl-indent-level cperl-close-paren-offset)
2540 0)))
2541;;; ((and (/= (char-after containing-sexp) ?{)
2542;;; (not cperl-indent-parens-as-block))
2543;;; ;; line is expression, not statement:
2544;;; ;; indent to just after the surrounding open,
2545;;; ;; skip blanks if we do not close the expression.
2546;;; (goto-char (1+ containing-sexp))
2547;;; (or (memq char-after (append ")]}" nil))
2548;;; (looking-at "[ \t]*\\(#\\|$\\)")
2549;;; (skip-chars-forward " \t"))
2550;;; (current-column))
2551;;; ((progn
2552;;; ;; Containing-expr starts with \{. Check whether it is a hash.
2553;;; (goto-char containing-sexp)
2554;;; (and (not (cperl-block-p))
2555;;; (not cperl-indent-parens-as-block)))
2556;;; (goto-char (1+ containing-sexp))
2557;;; (or (eq char-after ?\})
2558;;; (looking-at "[ \t]*\\(#\\|$\\)")
2559;;; (skip-chars-forward " \t"))
2560;;; (+ (current-column) ; Correct indentation of trailing ?\}
2561;;; (if (eq char-after ?\}) (+ cperl-indent-level
2562;;; cperl-close-paren-offset)
2563;;; 0)))
2564 (t
2565 ;; Statement level. Is it a continuation or a new statement?
2566 ;; Find previous non-comment character.
2567 (goto-char pre-indent-point)
2568 (cperl-backward-to-noncomment containing-sexp)
2569 ;; Back up over label lines, since they don't
2570 ;; affect whether our line is a continuation.
2571 ;; (Had \, too)
2572 (while ;;(or (eq (preceding-char) ?\,)
2573 (and (eq (preceding-char) ?:)
2574 (or ;;(eq (char-after (- (point) 2)) ?\') ; ????
2575 (memq (char-syntax (char-after (- (point) 2)))
2576 '(?w ?_))))
2577 ;;)
2578 (if (eq (preceding-char) ?\,)
2579 ;; Will go to beginning of line, essentially.
2580 ;; Will ignore embedded sexpr XXXX.
2581 (cperl-backward-to-start-of-continued-exp containing-sexp))
2582 (beginning-of-line)
2583 (cperl-backward-to-noncomment containing-sexp))
2584 ;; Now we get the answer.
2585 (if (not (or (eq (1- (point)) containing-sexp)
2586 (memq (preceding-char)
2587 (append (if is-block " ;{" " ,;{") '(nil)))
2588 (and (eq (preceding-char) ?\})
2589 (cperl-after-block-and-statement-beg
2590 containing-sexp))
2591 (get-text-property (point) 'first-format-line)))
2592 ;; This line is continuation of preceding line's statement;
2593 ;; indent `cperl-continued-statement-offset' more than the
2594 ;; previous line of the statement.
2595 ;;
2596 ;; There might be a label on this line, just
2597 ;; consider it bad style and ignore it.
2598 (progn
2599 (cperl-backward-to-start-of-continued-exp containing-sexp)
2600 (+ (if (memq char-after (append "}])" nil))
2601 0 ; Closing parenth
2602 cperl-continued-statement-offset)
2603 (if (or is-block
2604 (not delim)
2605 (not (eq char-after ?\})))
2606 0
2607 ;; Now it is a hash reference
2608 (+ cperl-indent-level cperl-close-paren-offset))
2609 (if (looking-at "\\w+[ \t]*:")
2610 (if (> (current-indentation) cperl-min-label-indent)
2611 (- (current-indentation) cperl-label-offset)
2612 ;; Do not move `parse-data', this should
2613 ;; be quick anyway (this comment comes
2614 ;; from different location):
2615 (cperl-calculate-indent))
2616 (current-column))
2617 (if (eq char-after ?\{)
2618 cperl-continued-brace-offset 0)))
2619 ;; This line starts a new statement.
2620 ;; Position following last unclosed open.
2621 (goto-char containing-sexp)
2622 ;; Is line first statement after an open-brace?
2623 (or
2624 ;; If no, find that first statement and indent like
2625 ;; it. If the first statement begins with label, do
2626 ;; not believe when the indentation of the label is too
2627 ;; small.
2628 (save-excursion
2629 (forward-char 1)
2630 (setq old-indent (current-indentation))
2631 (let ((colon-line-end 0))
2632 (while
2633 (progn (skip-chars-forward " \t\n")
2634 (looking-at "#\\|[a-zA-Z0-9_$]*:[^:]\\|=[a-zA-Z]"))
2635 ;; Skip over comments and labels following openbrace.
2636 (cond ((= (following-char) ?\#)
2637 (forward-line 1))
2638 ((= (following-char) ?\=)
2639 (goto-char
2640 (or (next-single-property-change (point) 'in-pod)
2641 (point-max)))) ; do not loop if no syntaxification
2642 ;; label:
2643 (t
2644 (save-excursion (end-of-line)
2645 (setq colon-line-end (point)))
2646 (search-forward ":"))))
2647 ;; The first following code counts
2648 ;; if it is before the line we want to indent.
2649 (and (< (point) indent-point)
2650 (if (> colon-line-end (point)) ; After label
2651 (if (> (current-indentation)
2652 cperl-min-label-indent)
2653 (- (current-indentation) cperl-label-offset)
2654 ;; Do not believe: `max' is involved
2655 (+ old-indent cperl-indent-level))
2656 (current-column)))))
2657 ;; If no previous statement,
2658 ;; indent it relative to line brace is on.
2659 ;; For open brace in column zero, don't let statement
2660 ;; start there too. If cperl-indent-level is zero,
2661 ;; use cperl-brace-offset + cperl-continued-statement-offset instead.
2662 ;; For open-braces not the first thing in a line,
2663 ;; add in cperl-brace-imaginary-offset.
2664
2665 ;; If first thing on a line: ?????
2666 (+ (if (and (bolp) (zerop cperl-indent-level))
2667 (+ cperl-brace-offset cperl-continued-statement-offset)
2668 cperl-indent-level)
2669 (if (or is-block
2670 (not delim)
2671 (not (eq char-after ?\})))
2672 0
2673 ;; Now it is a hash reference
2674 (+ cperl-indent-level cperl-close-paren-offset))
2675 ;; Move back over whitespace before the openbrace.
2676 ;; If openbrace is not first nonwhite thing on the line,
2677 ;; add the cperl-brace-imaginary-offset.
2678 (progn (skip-chars-backward " \t")
2679 (if (bolp) 0 cperl-brace-imaginary-offset))
2680 ;; If the openbrace is preceded by a parenthesized exp,
2681 ;; move to the beginning of that;
2682 ;; possibly a different line
2683 (progn
2684 (if (eq (preceding-char) ?\))
2685 (forward-sexp -1))
2686 ;; In the case it starts a subroutine, indent with
2687 ;; respect to `sub', not with respect to the
2688 ;; first thing on the line, say in the case of
2689 ;; anonymous sub in a hash.
2690 ;;
2691 (skip-chars-backward " \t")
2692 (if (and (eq (preceding-char) ?b)
2693 (progn 2820 (progn
2694 (forward-sexp -1) 2821 (forward-sexp -1)
2695 (looking-at "sub\\>")) 2822 (skip-chars-backward " \t")
2696 (setq old-indent 2823 (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:")))
2697 (nth 1 2824 (get-text-property (point) 'first-format-line)))
2698 (parse-partial-sexp 2825
2699 (save-excursion (beginning-of-line) (point)) 2826 ;; Look at previous line that's at column 0
2700 (point))))) 2827 ;; to determine whether we are in top-level decls
2701 (progn (goto-char (1+ old-indent)) 2828 ;; or function's arg decls. Set basic-indent accordingly.
2702 (skip-chars-forward " \t") 2829 ;; Now add a little if this is a continuation line.
2703 (current-column)) 2830 (and state
2704 ;; Get initial indentation of the line we are on. 2831 parse-data
2705 ;; If line starts with label, calculate label indentation 2832 (not (eq char-after ?\C-j))
2706 (if (save-excursion 2833 (setcdr (cddr parse-data)
2707 (beginning-of-line) 2834 (list pre-indent-point)))
2708 (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*:[^:]")) 2835 (vector 'toplevel start char-after state (nth 2 s-s)))
2709 (if (> (current-indentation) cperl-min-label-indent) 2836 ((not
2710 (- (current-indentation) cperl-label-offset) 2837 (or (setq is-block
2711 ;; Do not move `parse-data', this should 2838 (and (setq delim (= (char-after containing-sexp) ?{))
2712 ;; be quick anyway: 2839 (save-excursion ; Is it a hash?
2713 (cperl-calculate-indent)) 2840 (goto-char containing-sexp)
2714 (current-indentation)))))))))))))) 2841 (cperl-block-p))))
2715 2842 cperl-indent-parens-as-block))
2716;; (defvar cperl-indent-alist 2843 ;; group is an expression, not a block:
2717;; '((string nil) 2844 ;; indent to just after the surrounding open parens,
2718;; (comment nil) 2845 ;; skip blanks if we do not close the expression.
2719;; (toplevel 0) 2846 (goto-char (1+ containing-sexp))
2720;; (toplevel-after-parenth 2) 2847 (or (memq char-after
2721;; (toplevel-continued 2) 2848 (append (if delim "}" ")]}") nil))
2722;; (expression 1)) 2849 (looking-at "[ \t]*\\(#\\|$\\)")
2723;; "Alist of indentation rules for CPerl mode. 2850 (skip-chars-forward " \t"))
2724;; The values mean: 2851 (setq old-indent (point)) ; delim=is-brace
2725;; nil: do not indent; 2852 (vector 'in-parens char-after (point) delim containing-sexp))
2726;; number: add this amount of indentation. 2853 (t
2727 2854 ;; Statement level. Is it a continuation or a new statement?
2728;; Not finished, not used.") 2855 ;; Find previous non-comment character.
2729 2856 (goto-char pre-indent-point) ; Skip one level of POD/etc
2730;; (defun cperl-where-am-i (&optional parse-start start-state) 2857 (cperl-backward-to-noncomment containing-sexp)
2731;; ;; Unfinished 2858 ;; Back up over label lines, since they don't
2732;; "Return a list of lists ((TYPE POS)...) of good points before the point. 2859 ;; affect whether our line is a continuation.
2733;; ;; POS may be nil if it is hard to find, say, when TYPE is `string' or `comment'. 2860 ;; (Had \, too)
2734 2861 (while;;(or (eq (preceding-char) ?\,)
2735;; ;; Not finished, not used." 2862 (and (eq (preceding-char) ?:)
2736;; (save-excursion 2863 (or;;(eq (char-after (- (point) 2)) ?\') ; ????
2737;; (let* ((start-point (point)) 2864 (memq (char-syntax (char-after (- (point) 2)))
2738;; (s-s (cperl-get-state)) 2865 '(?w ?_))))
2739;; (start (nth 0 s-s)) 2866 ;;)
2740;; (state (nth 1 s-s)) 2867 ;; This is always FALSE?
2741;; (prestart (nth 3 s-s)) 2868 (if (eq (preceding-char) ?\,)
2742;; (containing-sexp (car (cdr state))) 2869 ;; Will go to beginning of line, essentially.
2743;; (case-fold-search nil) 2870 ;; Will ignore embedded sexpr XXXX.
2744;; (res (list (list 'parse-start start) (list 'parse-prestart prestart)))) 2871 (cperl-backward-to-start-of-continued-exp containing-sexp))
2745;; (cond ((nth 3 state) ; In string 2872 (beginning-of-line)
2746;; (setq res (cons (list 'string nil (nth 3 state)) res))) ; What started string 2873 (cperl-backward-to-noncomment containing-sexp))
2747;; ((nth 4 state) ; In comment 2874 ;; Now we get non-label preceeding the indent point
2748;; (setq res (cons '(comment) res))) 2875 (if (not (or (eq (1- (point)) containing-sexp)
2749;; ((null containing-sexp) 2876 (memq (preceding-char)
2750;; ;; Line is at top level. 2877 (append (if is-block " ;{" " ,;{") '(nil)))
2751;; ;; Indent like the previous top level line 2878 (and (eq (preceding-char) ?\})
2752;; ;; unless that ends in a closeparen without semicolon, 2879 (cperl-after-block-and-statement-beg
2753;; ;; in which case this line is the first argument decl. 2880 containing-sexp))
2754;; (cperl-backward-to-noncomment (or parse-start (point-min))) 2881 (get-text-property (point) 'first-format-line)))
2755;; ;;(skip-chars-backward " \t\f\n") 2882 ;; This line is continuation of preceding line's statement;
2756;; (cond 2883 ;; indent `cperl-continued-statement-offset' more than the
2757;; ((or (bobp) 2884 ;; previous line of the statement.
2758;; (memq (preceding-char) (append ";}" nil))) 2885 ;;
2759;; (setq res (cons (list 'toplevel start) res))) 2886 ;; There might be a label on this line, just
2760;; ((eq (preceding-char) ?\) ) 2887 ;; consider it bad style and ignore it.
2761;; (setq res (cons (list 'toplevel-after-parenth start) res))) 2888 (progn
2762;; (t 2889 (cperl-backward-to-start-of-continued-exp containing-sexp)
2763;; (setq res (cons (list 'toplevel-continued start) res))))) 2890 (vector 'continuation (point) char-after is-block delim))
2764;; ((/= (char-after containing-sexp) ?{) 2891 ;; This line starts a new statement.
2765;; ;; line is expression, not statement: 2892 ;; Position following last unclosed open brace
2766;; ;; indent to just after the surrounding open. 2893 (goto-char containing-sexp)
2767;; ;; skip blanks if we do not close the expression. 2894 ;; Is line first statement after an open-brace?
2768;; (setq res (cons (list 'expression-blanks 2895 (or
2769;; (progn 2896 ;; If no, find that first statement and indent like
2770;; (goto-char (1+ containing-sexp)) 2897 ;; it. If the first statement begins with label, do
2771;; (or (looking-at "[ \t]*\\(#\\|$\\)") 2898 ;; not believe when the indentation of the label is too
2772;; (skip-chars-forward " \t")) 2899 ;; small.
2773;; (point))) 2900 (save-excursion
2774;; (cons (list 'expression containing-sexp) res)))) 2901 (forward-char 1)
2775;; ((progn 2902 (let ((colon-line-end 0))
2776;; ;; Containing-expr starts with \{. Check whether it is a hash. 2903 (while
2777;; (goto-char containing-sexp) 2904 (progn (skip-chars-forward " \t\n")
2778;; (not (cperl-block-p))) 2905 (looking-at "#\\|[a-zA-Z0-9_$]*:[^:]\\|=[a-zA-Z]"))
2779;; (setq res (cons (list 'expression-blanks 2906 ;; Skip over comments and labels following openbrace.
2780;; (progn 2907 (cond ((= (following-char) ?\#)
2781;; (goto-char (1+ containing-sexp)) 2908 (forward-line 1))
2782;; (or (looking-at "[ \t]*\\(#\\|$\\)") 2909 ((= (following-char) ?\=)
2783;; (skip-chars-forward " \t")) 2910 (goto-char
2784;; (point))) 2911 (or (next-single-property-change (point) 'in-pod)
2785;; (cons (list 'expression containing-sexp) res)))) 2912 (point-max)))) ; do not loop if no syntaxification
2786;; (t 2913 ;; label:
2787;; ;; Statement level. 2914 (t
2788;; (setq res (cons (list 'in-block containing-sexp) res)) 2915 (save-excursion (end-of-line)
2789;; ;; Is it a continuation or a new statement? 2916 (setq colon-line-end (point)))
2790;; ;; Find previous non-comment character. 2917 (search-forward ":"))))
2791;; (cperl-backward-to-noncomment containing-sexp) 2918 ;; We are at beginning of code (NOT label or comment)
2792;; ;; Back up over label lines, since they don't 2919 ;; First, the following code counts
2793;; ;; affect whether our line is a continuation. 2920 ;; if it is before the line we want to indent.
2794;; ;; Back up comma-delimited lines too ????? 2921 (and (< (point) indent-point)
2795;; (while (or (eq (preceding-char) ?\,) 2922 (vector 'have-prev-sibling (point) colon-line-end
2796;; (save-excursion (cperl-after-label))) 2923 containing-sexp))))
2797;; (if (eq (preceding-char) ?\,) 2924 (progn
2798;; ;; Will go to beginning of line, essentially 2925 ;; If no previous statement,
2799;; ;; Will ignore embedded sexpr XXXX. 2926 ;; indent it relative to line brace is on.
2800;; (cperl-backward-to-start-of-continued-exp containing-sexp)) 2927
2801;; (beginning-of-line) 2928 ;; For open-braces not the first thing in a line,
2802;; (cperl-backward-to-noncomment containing-sexp)) 2929 ;; add in cperl-brace-imaginary-offset.
2803;; ;; Now we get the answer. 2930
2804;; (if (not (memq (preceding-char) (append ";}{" '(nil)))) ; Was ?\, 2931 ;; If first thing on a line: ?????
2805;; ;; This line is continuation of preceding line's statement. 2932 ;; Move back over whitespace before the openbrace.
2806;; (list (list 'statement-continued containing-sexp)) 2933 (setq ; brace first thing on a line
2807;; ;; This line starts a new statement. 2934 old-indent (progn (skip-chars-backward " \t") (bolp)))
2808;; ;; Position following last unclosed open. 2935 ;; Should we indent w.r.t. earlier than start?
2809;; (goto-char containing-sexp) 2936 ;; Move to start of control group, possibly on a different line
2810;; ;; Is line first statement after an open-brace? 2937 (or cperl-indent-wrt-brace
2811;; (or 2938 (cperl-backward-to-noncomment (point-min)))
2812;; ;; If no, find that first statement and indent like 2939 ;; If the openbrace is preceded by a parenthesized exp,
2813;; ;; it. If the first statement begins with label, do 2940 ;; move to the beginning of that;
2814;; ;; not believe when the indentation of the label is too 2941 (if (eq (preceding-char) ?\))
2815;; ;; small. 2942 (progn
2816;; (save-excursion 2943 (forward-sexp -1)
2817;; (forward-char 1) 2944 (cperl-backward-to-noncomment (point-min))))
2818;; (let ((colon-line-end 0)) 2945 ;; In the case it starts a subroutine, indent with
2819;; (while (progn (skip-chars-forward " \t\n" start-point) 2946 ;; respect to `sub', not with respect to the
2820;; (and (< (point) start-point) 2947 ;; first thing on the line, say in the case of
2821;; (looking-at 2948 ;; anonymous sub in a hash.
2822;; "#\\|[a-zA-Z_][a-zA-Z0-9_]*:[^:]"))) 2949 (if (and;; Is it a sub in group starting on this line?
2823;; ;; Skip over comments and labels following openbrace. 2950 (cond ((get-text-property (point) 'attrib-group)
2824;; (cond ((= (following-char) ?\#) 2951 (goto-char (cperl-beginning-of-property
2825;; ;;(forward-line 1) 2952 (point) 'attrib-group)))
2826;; (end-of-line)) 2953 ((eq (preceding-char) ?b)
2827;; ;; label: 2954 (forward-sexp -1)
2828;; (t 2955 (looking-at "sub\\>")))
2829;; (save-excursion (end-of-line) 2956 (setq p (nth 1 ; start of innermost containing list
2830;; (setq colon-line-end (point))) 2957 (parse-partial-sexp
2831;; (search-forward ":")))) 2958 (save-excursion (beginning-of-line)
2832;; ;; Now at the point, after label, or at start 2959 (point))
2833;; ;; of first statement in the block. 2960 (point)))))
2834;; (and (< (point) start-point) 2961 (progn
2835;; (if (> colon-line-end (point)) 2962 (goto-char (1+ p)) ; enclosing block on the same line
2836;; ;; Before statement after label 2963 (skip-chars-forward " \t")
2837;; (if (> (current-indentation) 2964 (vector 'code-start-in-block containing-sexp char-after
2838;; cperl-min-label-indent) 2965 (and delim (not is-block)) ; is a HASH
2839;; (list (list 'label-in-block (point))) 2966 old-indent ; brace first thing on a line
2840;; ;; Do not believe: `max' is involved 2967 t (point) ; have something before...
2841;; (list 2968 )
2842;; (list 'label-in-block-min-indent (point)))) 2969 ;;(current-column)
2843;; ;; Before statement 2970 )
2844;; (list 'statement-in-block (point)))))) 2971 ;; Get initial indentation of the line we are on.
2845;; ;; If no previous statement, 2972 ;; If line starts with label, calculate label indentation
2846;; ;; indent it relative to line brace is on. 2973 (vector 'code-start-in-block containing-sexp char-after
2847;; ;; For open brace in column zero, don't let statement 2974 (and delim (not is-block)) ; is a HASH
2848;; ;; start there too. If cperl-indent-level is zero, 2975 old-indent ; brace first thing on a line
2849;; ;; use cperl-brace-offset + cperl-continued-statement-offset instead. 2976 nil (point) ; nothing interesting before
2850;; ;; For open-braces not the first thing in a line, 2977 ))))))))))))))
2851;; ;; add in cperl-brace-imaginary-offset. 2978
2852 2979(defvar cperl-indent-rules-alist
2853;; ;; If first thing on a line: ????? 2980 '((pod nil) ; via `syntax-type' property
2854;; (+ (if (and (bolp) (zerop cperl-indent-level)) 2981 (here-doc nil) ; via `syntax-type' property
2855;; (+ cperl-brace-offset cperl-continued-statement-offset) 2982 (here-doc-delim nil) ; via `syntax-type' property
2856;; cperl-indent-level) 2983 (format nil) ; via `syntax-type' property
2857;; ;; Move back over whitespace before the openbrace. 2984 (in-pod nil) ; via `in-pod' property
2858;; ;; If openbrace is not first nonwhite thing on the line, 2985 (comment-special:at-beginning-of-line nil)
2859;; ;; add the cperl-brace-imaginary-offset. 2986 (string t)
2860;; (progn (skip-chars-backward " \t") 2987 (comment nil))
2861;; (if (bolp) 0 cperl-brace-imaginary-offset)) 2988 "Alist of indentation rules for CPerl mode.
2862;; ;; If the openbrace is preceded by a parenthesized exp, 2989The values mean:
2863;; ;; move to the beginning of that; 2990 nil: do not indent;
2864;; ;; possibly a different line 2991 number: add this amount of indentation.
2865;; (progn 2992
2866;; (if (eq (preceding-char) ?\)) 2993Not finished.")
2867;; (forward-sexp -1)) 2994
2868;; ;; Get initial indentation of the line we are on. 2995(defun cperl-calculate-indent (&optional parse-data) ; was parse-start
2869;; ;; If line starts with label, calculate label indentation 2996 "Return appropriate indentation for current line as Perl code.
2870;; (if (save-excursion 2997In usual case returns an integer: the column to indent to.
2871;; (beginning-of-line) 2998Returns nil if line starts inside a string, t if in a comment.
2872;; (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*:[^:]")) 2999
2873;; (if (> (current-indentation) cperl-min-label-indent) 3000Will not correct the indentation for labels, but will correct it for braces
2874;; (- (current-indentation) cperl-label-offset) 3001and closing parentheses and brackets."
2875;; (cperl-calculate-indent)) 3002 ;; This code is still a broken architecture: in some cases we need to
2876;; (current-indentation)))))))) 3003 ;; compensate for some modifications which `cperl-indent-line' will add later
2877;; res))) 3004 (save-excursion
3005 (let ((i (cperl-sniff-for-indent parse-data)) what p)
3006 (cond
3007 ;;((or (null i) (eq i t) (numberp i))
3008 ;; i)
3009 ((vectorp i)
3010 (setq what (assoc (elt i 0) cperl-indent-rules-alist))
3011 (cond
3012 (what (cadr what)) ; Load from table
3013 ;;
3014 ;; Indenters for regular expressions with //x and qw()
3015 ;;
3016 ((eq 'REx-part2 (elt i 0)) ;; [self start] start of /REP in s//REP/x
3017 (goto-char (elt i 1))
3018 (condition-case nil ; Use indentation of the 1st part
3019 (forward-sexp -1))
3020 (current-column))
3021 ((eq 'indentable (elt i 0)) ; Indenter for REGEXP qw() etc
3022 (cond ;;; [indentable terminator start-pos is-block]
3023 ((eq 'terminator (elt i 1)) ; Lone terminator of "indentable string"
3024 (goto-char (elt i 2)) ; After opening parens
3025 (1- (current-column)))
3026 ((eq 'first-line (elt i 1)); [indentable first-line start-pos]
3027 (goto-char (elt i 2))
3028 (+ (or cperl-regexp-indent-step cperl-indent-level)
3029 -1
3030 (current-column)))
3031 ((eq 'cont-line (elt i 1)); [indentable cont-line pos prev-pos first-char start-pos]
3032 ;; Indent as the level after closing parens
3033 (goto-char (elt i 2)) ; indent line
3034 (skip-chars-forward " \t)") ; Skip closing parens
3035 (setq p (point))
3036 (goto-char (elt i 3)) ; previous line
3037 (skip-chars-forward " \t)") ; Skip closing parens
3038 ;; Number of parens in between:
3039 (setq p (nth 0 (parse-partial-sexp (point) p))
3040 what (elt i 4)) ; First char on current line
3041 (goto-char (elt i 3)) ; previous line
3042 (+ (* p (or cperl-regexp-indent-step cperl-indent-level))
3043 (cond ((eq what ?\) )
3044 (- cperl-close-paren-offset)) ; compensate
3045 ((eq what ?\| )
3046 (- (or cperl-regexp-indent-step cperl-indent-level)))
3047 (t 0))
3048 (if (eq (following-char) ?\| )
3049 (or cperl-regexp-indent-step cperl-indent-level)
3050 0)
3051 (current-column)))
3052 (t
3053 (error "Unrecognized value of indent: %s" i))))
3054 ;;
3055 ;; Indenter for stuff at toplevel
3056 ;;
3057 ((eq 'toplevel (elt i 0)) ;; [toplevel start char-after state immed-after-block]
3058 (+ (save-excursion ; To beg-of-defun, or end of last sexp
3059 (goto-char (elt i 1)) ; start = Good place to start parsing
3060 (- (current-indentation) ;
3061 (if (elt i 4) cperl-indent-level 0))) ; immed-after-block
3062 (if (eq (elt i 2) ?{) cperl-continued-brace-offset 0) ; char-after
3063 ;; Look at previous line that's at column 0
3064 ;; to determine whether we are in top-level decls
3065 ;; or function's arg decls. Set basic-indent accordingly.
3066 ;; Now add a little if this is a continuation line.
3067 (if (elt i 3) ; state (XXX What is the semantic???)
3068 0
3069 cperl-continued-statement-offset)))
3070 ;;
3071 ;; Indenter for stuff in "parentheses" (or brackets, braces-as-hash)
3072 ;;
3073 ((eq 'in-parens (elt i 0))
3074 ;; in-parens char-after old-indent-point is-brace containing-sexp
3075
3076 ;; group is an expression, not a block:
3077 ;; indent to just after the surrounding open parens,
3078 ;; skip blanks if we do not close the expression.
3079 (+ (progn
3080 (goto-char (elt i 2)) ; old-indent-point
3081 (current-column))
3082 (if (and (elt i 3) ; is-brace
3083 (eq (elt i 1) ?\})) ; char-after
3084 ;; Correct indentation of trailing ?\}
3085 (+ cperl-indent-level cperl-close-paren-offset)
3086 0)))
3087 ;;
3088 ;; Indenter for continuation lines
3089 ;;
3090 ((eq 'continuation (elt i 0))
3091 ;; [continuation statement-start char-after is-block is-brace]
3092 (goto-char (elt i 1)) ; statement-start
3093 (+ (if (memq (elt i 2) (append "}])" nil)) ; char-after
3094 0 ; Closing parenth
3095 cperl-continued-statement-offset)
3096 (if (or (elt i 3) ; is-block
3097 (not (elt i 4)) ; is-brace
3098 (not (eq (elt i 2) ?\}))) ; char-after
3099 0
3100 ;; Now it is a hash reference
3101 (+ cperl-indent-level cperl-close-paren-offset))
3102 ;; Labels do not take :: ...
3103 (if (looking-at "\\(\\w\\|_\\)+[ \t]*:")
3104 (if (> (current-indentation) cperl-min-label-indent)
3105 (- (current-indentation) cperl-label-offset)
3106 ;; Do not move `parse-data', this should
3107 ;; be quick anyway (this comment comes
3108 ;; from different location):
3109 (cperl-calculate-indent))
3110 (current-column))
3111 (if (eq (elt i 2) ?\{) ; char-after
3112 cperl-continued-brace-offset 0)))
3113 ;;
3114 ;; Indenter for lines in a block which are not leading lines
3115 ;;
3116 ((eq 'have-prev-sibling (elt i 0))
3117 ;; [have-prev-sibling sibling-beg colon-line-end block-start]
3118 (goto-char (elt i 1))
3119 (if (> (elt i 2) (point)) ; colon-line-end; After-label, same line
3120 (if (> (current-indentation)
3121 cperl-min-label-indent)
3122 (- (current-indentation) cperl-label-offset)
3123 ;; Do not believe: `max' was involved in calculation of indent
3124 (+ cperl-indent-level
3125 (save-excursion
3126 (goto-char (elt i 3)) ; block-start
3127 (current-indentation))))
3128 (current-column)))
3129 ;;
3130 ;; Indenter for the first line in a block
3131 ;;
3132 ((eq 'code-start-in-block (elt i 0))
3133 ;;[code-start-in-block before-brace char-after
3134 ;; is-a-HASH-ref brace-is-first-thing-on-a-line
3135 ;; group-starts-before-start-of-sub start-of-control-group]
3136 (goto-char (elt i 1))
3137 ;; For open brace in column zero, don't let statement
3138 ;; start there too. If cperl-indent-level=0,
3139 ;; use cperl-brace-offset + cperl-continued-statement-offset instead.
3140 (+ (if (and (bolp) (zerop cperl-indent-level))
3141 (+ cperl-brace-offset cperl-continued-statement-offset)
3142 cperl-indent-level)
3143 (if (and (elt i 3) ; is-a-HASH-ref
3144 (eq (elt i 2) ?\})) ; char-after: End of a hash reference
3145 (+ cperl-indent-level cperl-close-paren-offset)
3146 0)
3147 ;; Unless openbrace is the first nonwhite thing on the line,
3148 ;; add the cperl-brace-imaginary-offset.
3149 (if (elt i 4) 0 ; brace-is-first-thing-on-a-line
3150 cperl-brace-imaginary-offset)
3151 (progn
3152 (goto-char (elt i 6)) ; start-of-control-group
3153 (if (elt i 5) ; group-starts-before-start-of-sub
3154 (current-column)
3155 ;; Get initial indentation of the line we are on.
3156 ;; If line starts with label, calculate label indentation
3157 (if (save-excursion
3158 (beginning-of-line)
3159 (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*:[^:]"))
3160 (if (> (current-indentation) cperl-min-label-indent)
3161 (- (current-indentation) cperl-label-offset)
3162 ;; Do not move `parse-data', this should
3163 ;; be quick anyway:
3164 (cperl-calculate-indent))
3165 (current-indentation))))))
3166 (t
3167 (error "Unrecognized value of indent: %s" i))))
3168 (t
3169 (error "Got strange value of indent: %s" i))))))
3170
3171(defvar cperl-indent-alist
3172 '((string nil)
3173 (comment nil)
3174 (toplevel 0)
3175 (toplevel-after-parenth 2)
3176 (toplevel-continued 2)
3177 (expression 1))
3178 "Alist of indentation rules for CPerl mode.
3179The values mean:
3180 nil: do not indent;
3181 number: add this amount of indentation.
3182
3183Not finished, not used.")
3184
3185(defun cperl-where-am-i (&optional parse-start start-state)
3186 ;; Unfinished
3187 "Return a list of lists ((TYPE POS)...) of good points before the point.
3188POS may be nil if it is hard to find, say, when TYPE is `string' or `comment'.
3189
3190Not finished, not used."
3191 (save-excursion
3192 (let* ((start-point (point)) unused
3193 (s-s (cperl-get-state))
3194 (start (nth 0 s-s))
3195 (state (nth 1 s-s))
3196 (prestart (nth 3 s-s))
3197 (containing-sexp (car (cdr state)))
3198 (case-fold-search nil)
3199 (res (list (list 'parse-start start) (list 'parse-prestart prestart))))
3200 (cond ((nth 3 state) ; In string
3201 (setq res (cons (list 'string nil (nth 3 state)) res))) ; What started string
3202 ((nth 4 state) ; In comment
3203 (setq res (cons '(comment) res)))
3204 ((null containing-sexp)
3205 ;; Line is at top level.
3206 ;; Indent like the previous top level line
3207 ;; unless that ends in a closeparen without semicolon,
3208 ;; in which case this line is the first argument decl.
3209 (cperl-backward-to-noncomment (or parse-start (point-min)))
3210 ;;(skip-chars-backward " \t\f\n")
3211 (cond
3212 ((or (bobp)
3213 (memq (preceding-char) (append ";}" nil)))
3214 (setq res (cons (list 'toplevel start) res)))
3215 ((eq (preceding-char) ?\) )
3216 (setq res (cons (list 'toplevel-after-parenth start) res)))
3217 (t
3218 (setq res (cons (list 'toplevel-continued start) res)))))
3219 ((/= (char-after containing-sexp) ?{)
3220 ;; line is expression, not statement:
3221 ;; indent to just after the surrounding open.
3222 ;; skip blanks if we do not close the expression.
3223 (setq res (cons (list 'expression-blanks
3224 (progn
3225 (goto-char (1+ containing-sexp))
3226 (or (looking-at "[ \t]*\\(#\\|$\\)")
3227 (skip-chars-forward " \t"))
3228 (point)))
3229 (cons (list 'expression containing-sexp) res))))
3230 ((progn
3231 ;; Containing-expr starts with \{. Check whether it is a hash.
3232 (goto-char containing-sexp)
3233 (not (cperl-block-p)))
3234 (setq res (cons (list 'expression-blanks
3235 (progn
3236 (goto-char (1+ containing-sexp))
3237 (or (looking-at "[ \t]*\\(#\\|$\\)")
3238 (skip-chars-forward " \t"))
3239 (point)))
3240 (cons (list 'expression containing-sexp) res))))
3241 (t
3242 ;; Statement level.
3243 (setq res (cons (list 'in-block containing-sexp) res))
3244 ;; Is it a continuation or a new statement?
3245 ;; Find previous non-comment character.
3246 (cperl-backward-to-noncomment containing-sexp)
3247 ;; Back up over label lines, since they don't
3248 ;; affect whether our line is a continuation.
3249 ;; Back up comma-delimited lines too ?????
3250 (while (or (eq (preceding-char) ?\,)
3251 (save-excursion (cperl-after-label)))
3252 (if (eq (preceding-char) ?\,)
3253 ;; Will go to beginning of line, essentially
3254 ;; Will ignore embedded sexpr XXXX.
3255 (cperl-backward-to-start-of-continued-exp containing-sexp))
3256 (beginning-of-line)
3257 (cperl-backward-to-noncomment containing-sexp))
3258 ;; Now we get the answer.
3259 (if (not (memq (preceding-char) (append ";}{" '(nil)))) ; Was ?\,
3260 ;; This line is continuation of preceding line's statement.
3261 (list (list 'statement-continued containing-sexp))
3262 ;; This line starts a new statement.
3263 ;; Position following last unclosed open.
3264 (goto-char containing-sexp)
3265 ;; Is line first statement after an open-brace?
3266 (or
3267 ;; If no, find that first statement and indent like
3268 ;; it. If the first statement begins with label, do
3269 ;; not believe when the indentation of the label is too
3270 ;; small.
3271 (save-excursion
3272 (forward-char 1)
3273 (let ((colon-line-end 0))
3274 (while (progn (skip-chars-forward " \t\n" start-point)
3275 (and (< (point) start-point)
3276 (looking-at
3277 "#\\|[a-zA-Z_][a-zA-Z0-9_]*:[^:]")))
3278 ;; Skip over comments and labels following openbrace.
3279 (cond ((= (following-char) ?\#)
3280 ;;(forward-line 1)
3281 (end-of-line))
3282 ;; label:
3283 (t
3284 (save-excursion (end-of-line)
3285 (setq colon-line-end (point)))
3286 (search-forward ":"))))
3287 ;; Now at the point, after label, or at start
3288 ;; of first statement in the block.
3289 (and (< (point) start-point)
3290 (if (> colon-line-end (point))
3291 ;; Before statement after label
3292 (if (> (current-indentation)
3293 cperl-min-label-indent)
3294 (list (list 'label-in-block (point)))
3295 ;; Do not believe: `max' is involved
3296 (list
3297 (list 'label-in-block-min-indent (point))))
3298 ;; Before statement
3299 (list 'statement-in-block (point))))))
3300 ;; If no previous statement,
3301 ;; indent it relative to line brace is on.
3302 ;; For open brace in column zero, don't let statement
3303 ;; start there too. If cperl-indent-level is zero,
3304 ;; use cperl-brace-offset + cperl-continued-statement-offset instead.
3305 ;; For open-braces not the first thing in a line,
3306 ;; add in cperl-brace-imaginary-offset.
3307
3308 ;; If first thing on a line: ?????
3309 (setq unused ; This is not finished...
3310 (+ (if (and (bolp) (zerop cperl-indent-level))
3311 (+ cperl-brace-offset cperl-continued-statement-offset)
3312 cperl-indent-level)
3313 ;; Move back over whitespace before the openbrace.
3314 ;; If openbrace is not first nonwhite thing on the line,
3315 ;; add the cperl-brace-imaginary-offset.
3316 (progn (skip-chars-backward " \t")
3317 (if (bolp) 0 cperl-brace-imaginary-offset))
3318 ;; If the openbrace is preceded by a parenthesized exp,
3319 ;; move to the beginning of that;
3320 ;; possibly a different line
3321 (progn
3322 (if (eq (preceding-char) ?\))
3323 (forward-sexp -1))
3324 ;; Get initial indentation of the line we are on.
3325 ;; If line starts with label, calculate label indentation
3326 (if (save-excursion
3327 (beginning-of-line)
3328 (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*:[^:]"))
3329 (if (> (current-indentation) cperl-min-label-indent)
3330 (- (current-indentation) cperl-label-offset)
3331 (cperl-calculate-indent))
3332 (current-indentation)))))))))
3333 res)))
2878 3334
2879(defun cperl-calculate-indent-within-comment () 3335(defun cperl-calculate-indent-within-comment ()
2880 "Return the indentation amount for line, assuming that 3336 "Return the indentation amount for line, assuming that
@@ -2894,14 +3350,22 @@ the current line is to be regarded as part of a block comment."
2894 3350
2895(defun cperl-to-comment-or-eol () 3351(defun cperl-to-comment-or-eol ()
2896 "Go to position before comment on the current line, or to end of line. 3352 "Go to position before comment on the current line, or to end of line.
2897Returns true if comment is found." 3353Returns true if comment is found. In POD will not move the point."
2898 (let (state stop-in cpoint (lim (progn (end-of-line) (point)))) 3354 ;; If the line is inside other syntax groups (qq-style strings, HERE-docs)
3355 ;; then looks for literal # or end-of-line.
3356 (let (state stop-in cpoint (lim (progn (end-of-line) (point))) pr e)
3357 (or cperl-font-locking
3358 (cperl-update-syntaxification lim lim))
2899 (beginning-of-line) 3359 (beginning-of-line)
2900 (if (or 3360 (if (setq pr (get-text-property (point) 'syntax-type))
2901 (eq (get-text-property (point) 'syntax-type) 'pod) 3361 (setq e (next-single-property-change (point) 'syntax-type nil (point-max))))
2902 (re-search-forward "\\=[ \t]*\\(#\\|$\\)" lim t)) 3362 (if (or (eq pr 'pod)
3363 (if (or (not e) (> e lim)) ; deep inside a group
3364 (re-search-forward "\\=[ \t]*\\(#\\|$\\)" lim t)))
2903 (if (eq (preceding-char) ?\#) (progn (backward-char 1) t)) 3365 (if (eq (preceding-char) ?\#) (progn (backward-char 1) t))
2904 ;; Else 3366 ;; Else - need to do it the hard way
3367 (and (and e (<= e lim))
3368 (goto-char e))
2905 (while (not stop-in) 3369 (while (not stop-in)
2906 (setq state (parse-partial-sexp (point) lim nil nil nil t)) 3370 (setq state (parse-partial-sexp (point) lim nil nil nil t))
2907 ; stop at comment 3371 ; stop at comment
@@ -2933,17 +3397,11 @@ Returns true if comment is found."
2933 (setq stop-in t))) ; Finish 3397 (setq stop-in t))) ; Finish
2934 (nth 4 state)))) 3398 (nth 4 state))))
2935 3399
2936(defsubst cperl-1- (p)
2937 (max (point-min) (1- p)))
2938
2939(defsubst cperl-1+ (p)
2940 (min (point-max) (1+ p)))
2941
2942(defsubst cperl-modify-syntax-type (at how) 3400(defsubst cperl-modify-syntax-type (at how)
2943 (if (< at (point-max)) 3401 (if (< at (point-max))
2944 (progn 3402 (progn
2945 (put-text-property at (1+ at) 'syntax-table how) 3403 (put-text-property at (1+ at) 'syntax-table how)
2946 (put-text-property at (1+ at) 'rear-nonsticky t)))) 3404 (put-text-property at (1+ at) 'rear-nonsticky '(syntax-table)))))
2947 3405
2948(defun cperl-protect-defun-start (s e) 3406(defun cperl-protect-defun-start (s e)
2949 ;; C code looks for "^\\s(" to skip comment backward in "hard" situations 3407 ;; C code looks for "^\\s(" to skip comment backward in "hard" situations
@@ -2978,35 +3436,53 @@ Returns true if comment is found."
2978 ( ?\{ . ?\} ) 3436 ( ?\{ . ?\} )
2979 ( ?\< . ?\> ))) 3437 ( ?\< . ?\> )))
2980 3438
2981(defun cperl-forward-re (lim end is-2arg set-st st-l err-l argument 3439(defun cperl-cached-syntax-table (st)
3440 "Get a syntax table cached in ST, or create and cache into ST a syntax table.
3441All the entries of the syntax table are \".\", except for a backslash, which
3442is quoting."
3443 (if (car-safe st)
3444 (car st)
3445 (setcar st (make-syntax-table))
3446 (setq st (car st))
3447 (let ((i 0))
3448 (while (< i 256)
3449 (modify-syntax-entry i "." st)
3450 (setq i (1+ i))))
3451 (modify-syntax-entry ?\\ "\\" st)
3452 st))
3453
3454(defun cperl-forward-re (lim end is-2arg st-l err-l argument
2982 &optional ostart oend) 3455 &optional ostart oend)
2983 ;; Works *before* syntax recognition is done 3456"Find the end of a regular expression or a stringish construct (q[] etc).
2984 ;; May modify syntax-type text property if the situation is too hard 3457The point should be before the starting delimiter.
2985 (let (b starter ender st i i2 go-forward reset-st) 3458
3459Goes to LIM if none is found. If IS-2ARG is non-nil, assumes that it
3460is s/// or tr/// like expression. If END is nil, generates an error
3461message if needed. If SET-ST is non-nil, will use (or generate) a
3462cached syntax table in ST-L. If ERR-L is non-nil, will store the
3463error message in its CAR (unless it already contains some error
3464message). ARGUMENT should be the name of the construct (used in error
3465messages). OSTART, OEND may be set in recursive calls when processing
3466the second argument of 2ARG construct.
3467
3468Works *before* syntax recognition is done. In IS-2ARG situation may
3469modify syntax-type text property if the situation is too hard."
3470 (let (b starter ender st i i2 go-forward reset-st set-st)
2986 (skip-chars-forward " \t") 3471 (skip-chars-forward " \t")
2987 ;; ender means matching-char matcher. 3472 ;; ender means matching-char matcher.
2988 (setq b (point) 3473 (setq b (point)
2989 starter (if (eobp) 0 (char-after b)) 3474 starter (if (eobp) 0 (char-after b))
2990 ender (cdr (assoc starter cperl-starters))) 3475 ender (cdr (assoc starter cperl-starters)))
2991 ;; What if starter == ?\\ ???? 3476 ;; What if starter == ?\\ ????
2992 (if set-st 3477 (setq st (cperl-cached-syntax-table st-l))
2993 (if (car st-l)
2994 (setq st (car st-l))
2995 (setcar st-l (make-syntax-table))
2996 (setq i 0 st (car st-l))
2997 (while (< i 256)
2998 (modify-syntax-entry i "." st)
2999 (setq i (1+ i)))
3000 (modify-syntax-entry ?\\ "\\" st)))
3001 (setq set-st t) 3478 (setq set-st t)
3002 ;; Whether we have an intermediate point 3479 ;; Whether we have an intermediate point
3003 (setq i nil) 3480 (setq i nil)
3004 ;; Prepare the syntax table: 3481 ;; Prepare the syntax table:
3005 (and set-st 3482 (if (not ender) ; m/blah/, s/x//, s/x/y/
3006 (if (not ender) ; m/blah/, s/x//, s/x/y/ 3483 (modify-syntax-entry starter "$" st)
3007 (modify-syntax-entry starter "$" st) 3484 (modify-syntax-entry starter (concat "(" (list ender)) st)
3008 (modify-syntax-entry starter (concat "(" (list ender)) st) 3485 (modify-syntax-entry ender (concat ")" (list starter)) st))
3009 (modify-syntax-entry ender (concat ")" (list starter)) st)))
3010 (condition-case bb 3486 (condition-case bb
3011 (progn 3487 (progn
3012 ;; We use `$' syntax class to find matching stuff, but $$ 3488 ;; We use `$' syntax class to find matching stuff, but $$
@@ -3053,7 +3529,7 @@ Returns true if comment is found."
3053 (modify-syntax-entry starter (if (eq starter ?\\) "\\" ".") st) 3529 (modify-syntax-entry starter (if (eq starter ?\\) "\\" ".") st)
3054 (if ender (modify-syntax-entry ender "." st)) 3530 (if ender (modify-syntax-entry ender "." st))
3055 (setq set-st nil) 3531 (setq set-st nil)
3056 (setq ender (cperl-forward-re lim end nil t st-l err-l 3532 (setq ender (cperl-forward-re lim end nil st-l err-l
3057 argument starter ender) 3533 argument starter ender)
3058 ender (nth 2 ender))))) 3534 ender (nth 2 ender)))))
3059 (error (goto-char lim) 3535 (error (goto-char lim)
@@ -3078,6 +3554,33 @@ Returns true if comment is found."
3078 ;; go-forward: has 2 args, and the second part is empty 3554 ;; go-forward: has 2 args, and the second part is empty
3079 (list i i2 ender starter go-forward))) 3555 (list i i2 ender starter go-forward)))
3080 3556
3557(defun cperl-forward-group-in-re (&optional st-l)
3558 "Find the end of a group in a REx.
3559Return the error message (if any). Does not work if delimiter is `)'.
3560Works before syntax recognition is done."
3561 ;; Works *before* syntax recognition is done
3562 (or st-l (setq st-l (list nil))) ; Avoid overwriting '()
3563 (let (st b reset-st)
3564 (condition-case b
3565 (progn
3566 (setq st (cperl-cached-syntax-table st-l))
3567 (modify-syntax-entry ?\( "()" st)
3568 (modify-syntax-entry ?\) ")(" st)
3569 (setq reset-st (syntax-table))
3570 (set-syntax-table st)
3571 (forward-sexp 1))
3572 (error (message
3573 "cperl-forward-group-in-re: error %s" b)))
3574 ;; now restore the initial state
3575 (if st
3576 (progn
3577 (modify-syntax-entry ?\( "." st)
3578 (modify-syntax-entry ?\) "." st)))
3579 (if reset-st
3580 (set-syntax-table reset-st))
3581 b))
3582
3583
3081(defvar font-lock-string-face) 3584(defvar font-lock-string-face)
3082;;(defvar font-lock-reference-face) 3585;;(defvar font-lock-reference-face)
3083(defvar font-lock-constant-face) 3586(defvar font-lock-constant-face)
@@ -3103,13 +3606,24 @@ Returns true if comment is found."
3103;; d) 'Q'uoted string: 3606;; d) 'Q'uoted string:
3104;; part between markers inclusive is marked `syntax-type' ==> `string' 3607;; part between markers inclusive is marked `syntax-type' ==> `string'
3105;; part between `q' and the first marker is marked `syntax-type' ==> `prestring' 3608;; part between `q' and the first marker is marked `syntax-type' ==> `prestring'
3609;; second part of s///e is marked `syntax-type' ==> `multiline'
3610;; e) Attributes of subroutines: `attrib-group' ==> t
3611;; (or 0 if declaration); up to `{' or ';': `syntax-type' => `sub-decl'.
3612;; f) Multiline my/our declaration lists etc: `syntax-type' => `multiline'
3613
3614;;; In addition, some parts of RExes may be marked as `REx-interpolated'
3615;;; (value: 0 in //o, 1 if "interpolated variable" is whole-REx, t otherwise).
3106 3616
3107(defun cperl-unwind-to-safe (before &optional end) 3617(defun cperl-unwind-to-safe (before &optional end)
3108 ;; if BEFORE, go to the previous start-of-line on each step of unwinding 3618 ;; if BEFORE, go to the previous start-of-line on each step of unwinding
3109 (let ((pos (point)) opos) 3619 (let ((pos (point)) opos)
3110 (setq opos pos) 3620 (while (and pos (progn
3111 (while (and pos (get-text-property pos 'syntax-type)) 3621 (beginning-of-line)
3112 (setq pos (previous-single-property-change pos 'syntax-type)) 3622 (get-text-property (setq pos (point)) 'syntax-type)))
3623 (setq opos pos
3624 pos (cperl-beginning-of-property pos 'syntax-type))
3625 (if (eq pos (point-min))
3626 (setq pos nil))
3113 (if pos 3627 (if pos
3114 (if before 3628 (if before
3115 (progn 3629 (progn
@@ -3126,32 +3640,117 @@ Returns true if comment is found."
3126 (setq pos (point)) 3640 (setq pos (point))
3127 (if end 3641 (if end
3128 ;; Do the same for end, going small steps 3642 ;; Do the same for end, going small steps
3129 (progn 3643 (save-excursion
3130 (while (and end (get-text-property end 'syntax-type)) 3644 (while (and end (get-text-property end 'syntax-type))
3131 (setq pos end 3645 (setq pos end
3132 end (next-single-property-change end 'syntax-type))) 3646 end (next-single-property-change end 'syntax-type nil (point-max)))
3647 (if end (progn (goto-char end)
3648 (or (bolp) (forward-line 1))
3649 (setq end (point)))))
3133 (or end pos))))) 3650 (or end pos)))))
3134 3651
3652;;; These are needed for byte-compile (at least with v19)
3135(defvar cperl-nonoverridable-face) 3653(defvar cperl-nonoverridable-face)
3654(defvar font-lock-variable-name-face)
3136(defvar font-lock-function-name-face) 3655(defvar font-lock-function-name-face)
3656(defvar font-lock-keyword-face)
3657(defvar font-lock-builtin-face)
3658(defvar font-lock-type-face)
3137(defvar font-lock-comment-face) 3659(defvar font-lock-comment-face)
3660(defvar font-lock-warning-face)
3138 3661
3139(defun cperl-find-pods-heres (&optional min max non-inter end ignore-max) 3662(defun cperl-find-sub-attrs (&optional st-l b-fname e-fname pos)
3663 "Syntaxically mark (and fontify) attributes of a subroutine.
3664Should be called with the point before leading colon of an attribute."
3665 ;; Works *before* syntax recognition is done
3666 (or st-l (setq st-l (list nil))) ; Avoid overwriting '()
3667 (let (st b p reset-st after-first (start (point)) start1 end1)
3668 (condition-case b
3669 (while (looking-at
3670 (concat
3671 "\\(" ; 1=optional? colon
3672 ":" cperl-maybe-white-and-comment-rex ; 2=whitespace/comment?
3673 "\\)"
3674 (if after-first "?" "")
3675 ;; No space between name and paren allowed...
3676 "\\(\\sw+\\)" ; 3=name
3677 "\\((\\)?")) ; 4=optional paren
3678 (and (match-beginning 1)
3679 (cperl-postpone-fontification
3680 (match-beginning 0) (cperl-1+ (match-beginning 0))
3681 'face font-lock-constant-face))
3682 (setq start1 (match-beginning 3) end1 (match-end 3))
3683 (cperl-postpone-fontification start1 end1
3684 'face font-lock-constant-face)
3685 (goto-char end1) ; end or before `('
3686 (if (match-end 4) ; Have attribute arguments...
3687 (progn
3688 (if st nil
3689 (setq st (cperl-cached-syntax-table st-l))
3690 (modify-syntax-entry ?\( "()" st)
3691 (modify-syntax-entry ?\) ")(" st))
3692 (setq reset-st (syntax-table) p (point))
3693 (set-syntax-table st)
3694 (forward-sexp 1)
3695 (set-syntax-table reset-st)
3696 (setq reset-st nil)
3697 (cperl-commentify p (point) t))) ; mark as string
3698 (forward-comment (buffer-size))
3699 (setq after-first t))
3700 (error (message
3701 "L%d: attribute `%s': %s"
3702 (count-lines (point-min) (point))
3703 (and start1 end1 (buffer-substring start1 end1)) b)
3704 (setq start nil)))
3705 (and start
3706 (progn
3707 (put-text-property start (point)
3708 'attrib-group (if (looking-at "{") t 0))
3709 (and pos
3710 (< 1 (count-lines (+ 3 pos) (point))) ; end of `sub'
3711 ;; Apparently, we do not need `multiline': faces added now
3712 (put-text-property (+ 3 pos) (cperl-1+ (point))
3713 'syntax-type 'sub-decl))
3714 (and b-fname ; Fontify here: the following condition
3715 (cperl-postpone-fontification ; is too hard to determine by
3716 b-fname e-fname 'face ; a REx, so do it here
3717 (if (looking-at "{")
3718 font-lock-function-name-face
3719 font-lock-variable-name-face)))))
3720 ;; now restore the initial state
3721 (if st
3722 (progn
3723 (modify-syntax-entry ?\( "." st)
3724 (modify-syntax-entry ?\) "." st)))
3725 (if reset-st
3726 (set-syntax-table reset-st))))
3727
3728(defsubst cperl-look-at-leading-count (is-x-REx e)
3729 (if (re-search-forward (concat "\\=" (if is-x-REx "[ \t\n]*" "") "[{?+*]")
3730 (1- e) t) ; return nil on failure, no moving
3731 (if (eq ?\{ (preceding-char)) nil
3732 (cperl-postpone-fontification
3733 (1- (point)) (point)
3734 'face font-lock-warning-face))))
3735
3736;;; Debugging this may require (setq max-specpdl-size 2000)...
3737(defun cperl-find-pods-heres (&optional min max non-inter end ignore-max end-of-here-doc)
3140 "Scans the buffer for hard-to-parse Perl constructions. 3738 "Scans the buffer for hard-to-parse Perl constructions.
3141If `cperl-pod-here-fontify' is not-nil after evaluation, will fontify 3739If `cperl-pod-here-fontify' is not-nil after evaluation, will fontify
3142the sections using `cperl-pod-head-face', `cperl-pod-face', 3740the sections using `cperl-pod-head-face', `cperl-pod-face',
3143`cperl-here-face'." 3741`cperl-here-face'."
3144 (interactive) 3742 (interactive)
3145 (or min (setq min (point-min) 3743 (or min (setq min (point-min)
3146 cperl-syntax-state nil 3744 cperl-syntax-state nil
3147 cperl-syntax-done-to min)) 3745 cperl-syntax-done-to min))
3148 (or max (setq max (point-max))) 3746 (or max (setq max (point-max)))
3149 (let* ((cperl-pod-here-fontify (eval cperl-pod-here-fontify)) go tmpend 3747 (let* ((cperl-pod-here-fontify (eval cperl-pod-here-fontify)) go tmpend
3150 face head-face here-face b e bb tag qtag b1 e1 argument i c tail tb 3748 face head-face here-face b e bb tag qtag b1 e1 argument i c tail tb
3151 is-REx is-x-REx REx-comment-start REx-comment-end was-comment i2 3749 is-REx is-x-REx REx-subgr-start REx-subgr-end was-subgr i2 hairy-RE
3152 (case-fold-search nil) (inhibit-read-only t) (buffer-undo-list t) 3750 (case-fold-search nil) (inhibit-read-only t) (buffer-undo-list t)
3153 (modified (buffer-modified-p)) 3751 (modified (buffer-modified-p)) overshoot is-o-REx
3154 (after-change-functions nil) 3752 (after-change-functions nil)
3753 (cperl-font-locking t)
3155 (use-syntax-state (and cperl-syntax-state 3754 (use-syntax-state (and cperl-syntax-state
3156 (>= min (car cperl-syntax-state)))) 3755 (>= min (car cperl-syntax-state))))
3157 (state-point (if use-syntax-state 3756 (state-point (if use-syntax-state
@@ -3162,33 +3761,62 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3162 ;; (st-l '(nil)) (err-l '(nil)) ; Would overwrite - propagates from a function call to a function call! 3761 ;; (st-l '(nil)) (err-l '(nil)) ; Would overwrite - propagates from a function call to a function call!
3163 (st-l (list nil)) (err-l (list nil)) 3762 (st-l (list nil)) (err-l (list nil))
3164 ;; Somehow font-lock may be not loaded yet... 3763 ;; Somehow font-lock may be not loaded yet...
3764 ;; (e.g., when building TAGS via command-line call)
3165 (font-lock-string-face (if (boundp 'font-lock-string-face) 3765 (font-lock-string-face (if (boundp 'font-lock-string-face)
3166 font-lock-string-face 3766 font-lock-string-face
3167 'font-lock-string-face)) 3767 'font-lock-string-face))
3168 (font-lock-constant-face (if (boundp 'font-lock-constant-face) 3768 (my-cperl-delimiters-face (if (boundp 'font-lock-constant-face)
3169 font-lock-constant-face 3769 font-lock-constant-face
3170 'font-lock-constant-face)) 3770 'font-lock-constant-face))
3171 (font-lock-function-name-face 3771 (my-cperl-REx-spec-char-face ; [] ^.$ and wrapper-of ({})
3172 (if (boundp 'font-lock-function-name-face) 3772 (if (boundp 'font-lock-function-name-face)
3173 font-lock-function-name-face 3773 font-lock-function-name-face
3174 'font-lock-function-name-face)) 3774 'font-lock-function-name-face))
3775 (font-lock-variable-name-face ; interpolated vars and ({})-code
3776 (if (boundp 'font-lock-variable-name-face)
3777 font-lock-variable-name-face
3778 'font-lock-variable-name-face))
3779 (font-lock-function-name-face ; used in `cperl-find-sub-attrs'
3780 (if (boundp 'font-lock-function-name-face)
3781 font-lock-function-name-face
3782 'font-lock-function-name-face))
3783 (font-lock-constant-face ; used in `cperl-find-sub-attrs'
3784 (if (boundp 'font-lock-constant-face)
3785 font-lock-constant-face
3786 'font-lock-constant-face))
3787 (my-cperl-REx-0length-face ; 0-length, (?:)etc, non-literal \
3788 (if (boundp 'font-lock-builtin-face)
3789 font-lock-builtin-face
3790 'font-lock-builtin-face))
3175 (font-lock-comment-face 3791 (font-lock-comment-face
3176 (if (boundp 'font-lock-comment-face) 3792 (if (boundp 'font-lock-comment-face)
3177 font-lock-comment-face 3793 font-lock-comment-face
3178 'font-lock-comment-face)) 3794 'font-lock-comment-face))
3179 (cperl-nonoverridable-face 3795 (font-lock-warning-face
3796 (if (boundp 'font-lock-warning-face)
3797 font-lock-warning-face
3798 'font-lock-warning-face))
3799 (my-cperl-REx-ctl-face ; (|)
3800 (if (boundp 'font-lock-keyword-face)
3801 font-lock-keyword-face
3802 'font-lock-keyword-face))
3803 (my-cperl-REx-modifiers-face ; //gims
3180 (if (boundp 'cperl-nonoverridable-face) 3804 (if (boundp 'cperl-nonoverridable-face)
3181 cperl-nonoverridable-face 3805 cperl-nonoverridable-face
3182 'cperl-nonoverridable)) 3806 'cperl-nonoverridable-face))
3807 (my-cperl-REx-length1-face ; length=1 escaped chars, POSIX classes
3808 (if (boundp 'font-lock-type-face)
3809 font-lock-type-face
3810 'font-lock-type-face))
3183 (stop-point (if ignore-max 3811 (stop-point (if ignore-max
3184 (point-max) 3812 (point-max)
3185 max)) 3813 max))
3186 (search 3814 (search
3187 (concat 3815 (concat
3188 "\\(\\`\n?\\|^\n\\)=" 3816 "\\(\\`\n?\\|^\n\\)=" ; POD
3189 "\\|" 3817 "\\|"
3190 ;; One extra () before this: 3818 ;; One extra () before this:
3191 "<<" 3819 "<<" ; HERE-DOC
3192 "\\(" ; 1 + 1 3820 "\\(" ; 1 + 1
3193 ;; First variant "BLAH" or just ``. 3821 ;; First variant "BLAH" or just ``.
3194 "[ \t]*" ; Yes, whitespace is allowed! 3822 "[ \t]*" ; Yes, whitespace is allowed!
@@ -3204,36 +3832,44 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3204 "\\)" 3832 "\\)"
3205 "\\|" 3833 "\\|"
3206 ;; 1+6 extra () before this: 3834 ;; 1+6 extra () before this:
3207 "^[ \t]*\\(format\\)[ \t]*\\([a-zA-Z0-9_]+\\)?[ \t]*=[ \t]*$" 3835 "^[ \t]*\\(format\\)[ \t]*\\([a-zA-Z0-9_]+\\)?[ \t]*=[ \t]*$" ;FRMAT
3208 (if cperl-use-syntax-table-text-property 3836 (if cperl-use-syntax-table-text-property
3209 (concat 3837 (concat
3210 "\\|" 3838 "\\|"
3211 ;; 1+6+2=9 extra () before this: 3839 ;; 1+6+2=9 extra () before this:
3212 "\\<\\(q[wxqr]?\\|[msy]\\|tr\\)\\>" 3840 "\\<\\(q[wxqr]?\\|[msy]\\|tr\\)\\>" ; QUOTED CONSTRUCT
3213 "\\|" 3841 "\\|"
3214 ;; 1+6+2+1=10 extra () before this: 3842 ;; 1+6+2+1=10 extra () before this:
3215 "\\([?/<]\\)" ; /blah/ or ?blah? or <file*glob> 3843 "\\([?/<]\\)" ; /blah/ or ?blah? or <file*glob>
3216 "\\|" 3844 "\\|"
3217 ;; 1+6+2+1+1=11 extra () before this: 3845 ;; 1+6+2+1+1=11 extra () before this
3218 "\\<sub\\>[ \t]*\\([a-zA-Z_:'0-9]+[ \t]*\\)?\\(([^()]*)\\)" 3846 "\\<sub\\>" ; sub with proto/attr
3847 "\\("
3848 cperl-white-and-comment-rex
3849 "\\(::[a-zA-Z_:'0-9]*\\|[a-zA-Z_'][a-zA-Z_:'0-9]*\\)\\)?" ; name
3850 "\\("
3851 cperl-maybe-white-and-comment-rex
3852 "\\(([^()]*)\\|:[^:]\\)\\)" ; prototype or attribute start
3219 "\\|" 3853 "\\|"
3220 ;; 1+6+2+1+1+2=13 extra () before this: 3854 ;; 1+6+2+1+1+6=17 extra () before this:
3221 "\\$\\(['{]\\)" 3855 "\\$\\(['{]\\)" ; $' or ${foo}
3222 "\\|" 3856 "\\|"
3223 ;; 1+6+2+1+1+2+1=14 extra () before this: 3857 ;; 1+6+2+1+1+6+1=18 extra () before this (old pack'var syntax;
3858 ;; we do not support intervening comments...):
3224 "\\(\\<sub[ \t\n\f]+\\|[&*$@%]\\)[a-zA-Z0-9_]*'" 3859 "\\(\\<sub[ \t\n\f]+\\|[&*$@%]\\)[a-zA-Z0-9_]*'"
3225 ;; 1+6+2+1+1+2+1+1=15 extra () before this: 3860 ;; 1+6+2+1+1+6+1+1=19 extra () before this:
3226 "\\|" 3861 "\\|"
3227 "__\\(END\\|DATA\\)__" 3862 "__\\(END\\|DATA\\)__" ; __END__ or __DATA__
3228 ;; 1+6+2+1+1+2+1+1+1=16 extra () before this: 3863 ;; 1+6+2+1+1+6+1+1+1=20 extra () before this:
3229 "\\|" 3864 "\\|"
3230 "\\\\\\(['`\"($]\\)") 3865 "\\\\\\(['`\"($]\\)") ; BACKWACKED something-hairy
3231 "")))) 3866 ""))))
3232 (unwind-protect 3867 (unwind-protect
3233 (progn 3868 (progn
3234 (save-excursion 3869 (save-excursion
3235 (or non-inter 3870 (or non-inter
3236 (message "Scanning for \"hard\" Perl constructions...")) 3871 (message "Scanning for \"hard\" Perl constructions..."))
3872 ;;(message "find: %s --> %s" min max)
3237 (and cperl-pod-here-fontify 3873 (and cperl-pod-here-fontify
3238 ;; We had evals here, do not know why... 3874 ;; We had evals here, do not know why...
3239 (setq face cperl-pod-face 3875 (setq face cperl-pod-face
@@ -3241,16 +3877,22 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3241 here-face cperl-here-face)) 3877 here-face cperl-here-face))
3242 (remove-text-properties min max 3878 (remove-text-properties min max
3243 '(syntax-type t in-pod t syntax-table t 3879 '(syntax-type t in-pod t syntax-table t
3880 attrib-group t
3881 REx-interpolated t
3244 cperl-postpone t 3882 cperl-postpone t
3245 syntax-subtype t 3883 syntax-subtype t
3246 rear-nonsticky t 3884 rear-nonsticky t
3885 front-sticky t
3247 here-doc-group t 3886 here-doc-group t
3248 first-format-line t 3887 first-format-line t
3888 REx-part2 t
3249 indentable t)) 3889 indentable t))
3250 ;; Need to remove face as well... 3890 ;; Need to remove face as well...
3251 (goto-char min) 3891 (goto-char min)
3252 (and (eq system-type 'emx) 3892 (and (eq system-type 'emx)
3253 (looking-at "extproc[ \t]") ; Analogue of #! 3893 (eq (point) 1)
3894 (let ((case-fold-search t))
3895 (looking-at "extproc[ \t]")) ; Analogue of #!
3254 (cperl-commentify min 3896 (cperl-commentify min
3255 (save-excursion (end-of-line) (point)) 3897 (save-excursion (end-of-line) (point))
3256 nil)) 3898 nil))
@@ -3258,11 +3900,38 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3258 (< (point) max) 3900 (< (point) max)
3259 (re-search-forward search max t)) 3901 (re-search-forward search max t))
3260 (setq tmpend nil) ; Valid for most cases 3902 (setq tmpend nil) ; Valid for most cases
3903 (setq b (match-beginning 0)
3904 state (save-excursion (parse-partial-sexp
3905 state-point b nil nil state))
3906 state-point b)
3261 (cond 3907 (cond
3908 ;; 1+6+2+1+1+6=17 extra () before this:
3909 ;; "\\$\\(['{]\\)"
3910 ((match-beginning 18) ; $' or ${foo}
3911 (if (eq (preceding-char) ?\') ; $'
3912 (progn
3913 (setq b (1- (point))
3914 state (parse-partial-sexp
3915 state-point (1- b) nil nil state)
3916 state-point (1- b))
3917 (if (nth 3 state) ; in string
3918 (cperl-modify-syntax-type (1- b) cperl-st-punct))
3919 (goto-char (1+ b)))
3920 ;; else: ${
3921 (setq bb (match-beginning 0))
3922 (cperl-modify-syntax-type bb cperl-st-punct)))
3923 ;; No processing in strings/comments beyond this point:
3924 ((or (nth 3 state) (nth 4 state))
3925 t) ; Do nothing in comment/string
3262 ((match-beginning 1) ; POD section 3926 ((match-beginning 1) ; POD section
3263 ;; "\\(\\`\n?\\|^\n\\)=" 3927 ;; "\\(\\`\n?\\|^\n\\)="
3264 (if (looking-at "cut\\>") 3928 (setq b (match-beginning 0)
3265 (if ignore-max 3929 state (parse-partial-sexp
3930 state-point b nil nil state)
3931 state-point b)
3932 (if (or (nth 3 state) (nth 4 state)
3933 (looking-at "cut\\>"))
3934 (if (or (nth 3 state) (nth 4 state) ignore-max)
3266 nil ; Doing a chunk only 3935 nil ; Doing a chunk only
3267 (message "=cut is not preceded by a POD section") 3936 (message "=cut is not preceded by a POD section")
3268 (or (car err-l) (setcar err-l (point)))) 3937 (or (car err-l) (setcar err-l (point))))
@@ -3288,11 +3957,15 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3288 (progn 3957 (progn
3289 (remove-text-properties 3958 (remove-text-properties
3290 max e '(syntax-type t in-pod t syntax-table t 3959 max e '(syntax-type t in-pod t syntax-table t
3960 attrib-group t
3961 REx-interpolated t
3291 cperl-postpone t 3962 cperl-postpone t
3292 syntax-subtype t 3963 syntax-subtype t
3293 here-doc-group t 3964 here-doc-group t
3294 rear-nonsticky t 3965 rear-nonsticky t
3966 front-sticky t
3295 first-format-line t 3967 first-format-line t
3968 REx-part2 t
3296 indentable t)) 3969 indentable t))
3297 (setq tmpend tb))) 3970 (setq tmpend tb)))
3298 (put-text-property b e 'in-pod t) 3971 (put-text-property b e 'in-pod t)
@@ -3335,7 +4008,8 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3335 (or (eq e (point-max)) 4008 (or (eq e (point-max))
3336 (forward-char -1)))) ; Prepare for immediate POD start. 4009 (forward-char -1)))) ; Prepare for immediate POD start.
3337 ;; Here document 4010 ;; Here document
3338 ;; We do only one here-per-line 4011 ;; We can do many here-per-line;
4012 ;; but multiline quote on the same line as <<HERE confuses us...
3339 ;; ;; One extra () before this: 4013 ;; ;; One extra () before this:
3340 ;;"<<" 4014 ;;"<<"
3341 ;; "\\(" ; 1 + 1 4015 ;; "\\(" ; 1 + 1
@@ -3352,21 +4026,42 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3352 ;; "\\(\\)" ; To preserve count of pars :-( 6 + 1 4026 ;; "\\(\\)" ; To preserve count of pars :-( 6 + 1
3353 ;; "\\)" 4027 ;; "\\)"
3354 ((match-beginning 2) ; 1 + 1 4028 ((match-beginning 2) ; 1 + 1
3355 ;; Abort in comment: 4029 (setq b (point)
3356 (setq b (point))
3357 (setq state (parse-partial-sexp state-point b nil nil state)
3358 state-point b
3359 tb (match-beginning 0) 4030 tb (match-beginning 0)
3360 i (or (nth 3 state) (nth 4 state))) 4031 c (and ; not HERE-DOC
3361 (if i 4032 (match-beginning 5)
3362 (setq c t) 4033 (save-match-data
3363 (setq c (and 4034 (or (looking-at "[ \t]*(") ; << function_call()
3364 (match-beginning 5) 4035 (save-excursion ; 1 << func_name, or $foo << 10
3365 (not (match-beginning 6)) ; Empty 4036 (condition-case nil
3366 (looking-at 4037 (progn
3367 "[ \t]*[=0-9$@%&(]")))) 4038 (goto-char tb)
4039 ;;; XXX What to do: foo <<bar ???
4040 ;;; XXX Need to support print {a} <<B ???
4041 (forward-sexp -1)
4042 (save-match-data
4043 ; $foo << b; $f .= <<B;
4044 ; ($f+1) << b; a($f) . <<B;
4045 ; foo 1, <<B; $x{a} <<b;
4046 (cond
4047 ((looking-at "[0-9$({]")
4048 (forward-sexp 1)
4049 (and
4050 (looking-at "[ \t]*<<")
4051 (condition-case nil
4052 ;; print $foo <<EOF
4053 (progn
4054 (forward-sexp -2)
4055 (not
4056 (looking-at "\\(printf?\\|system\\|exec\\|sort\\)\\>")))
4057 (error t)))))))
4058 (error nil))) ; func(<<EOF)
4059 (and (not (match-beginning 6)) ; Empty
4060 (looking-at
4061 "[ \t]*[=0-9$@%&(]"))))))
3368 (if c ; Not here-doc 4062 (if c ; Not here-doc
3369 nil ; Skip it. 4063 nil ; Skip it.
4064 (setq c (match-end 2)) ; 1 + 1
3370 (if (match-beginning 5) ;4 + 1 4065 (if (match-beginning 5) ;4 + 1
3371 (setq b1 (match-beginning 5) ; 4 + 1 4066 (setq b1 (match-beginning 5) ; 4 + 1
3372 e1 (match-end 5)) ; 4 + 1 4067 e1 (match-end 5)) ; 4 + 1
@@ -3376,15 +4071,20 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3376 qtag (regexp-quote tag)) 4071 qtag (regexp-quote tag))
3377 (cond (cperl-pod-here-fontify 4072 (cond (cperl-pod-here-fontify
3378 ;; Highlight the starting delimiter 4073 ;; Highlight the starting delimiter
3379 (cperl-postpone-fontification b1 e1 'face font-lock-constant-face) 4074 (cperl-postpone-fontification
4075 b1 e1 'face my-cperl-delimiters-face)
3380 (cperl-put-do-not-fontify b1 e1 t))) 4076 (cperl-put-do-not-fontify b1 e1 t)))
3381 (forward-line) 4077 (forward-line)
4078 (setq i (point))
4079 (if end-of-here-doc
4080 (goto-char end-of-here-doc))
3382 (setq b (point)) 4081 (setq b (point))
3383 ;; We do not search to max, since we may be called from 4082 ;; We do not search to max, since we may be called from
3384 ;; some hook of fontification, and max is random 4083 ;; some hook of fontification, and max is random
3385 (or (and (re-search-forward (concat "^" qtag "$") 4084 (or (and (re-search-forward (concat "^" qtag "$")
3386 stop-point 'toend) 4085 stop-point 'toend)
3387 (eq (following-char) ?\n)) 4086 ;;;(eq (following-char) ?\n) ; XXXX WHY???
4087 )
3388 (progn ; Pretend we matched at the end 4088 (progn ; Pretend we matched at the end
3389 (goto-char (point-max)) 4089 (goto-char (point-max))
3390 (re-search-forward "\\'") 4090 (re-search-forward "\\'")
@@ -3393,8 +4093,9 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3393 (if cperl-pod-here-fontify 4093 (if cperl-pod-here-fontify
3394 (progn 4094 (progn
3395 ;; Highlight the ending delimiter 4095 ;; Highlight the ending delimiter
3396 (cperl-postpone-fontification (match-beginning 0) (match-end 0) 4096 (cperl-postpone-fontification
3397 'face font-lock-constant-face) 4097 (match-beginning 0) (match-end 0)
4098 'face my-cperl-delimiters-face)
3398 (cperl-put-do-not-fontify b (match-end 0) t) 4099 (cperl-put-do-not-fontify b (match-end 0) t)
3399 ;; Highlight the HERE-DOC 4100 ;; Highlight the HERE-DOC
3400 (cperl-postpone-fontification b (match-beginning 0) 4101 (cperl-postpone-fontification b (match-beginning 0)
@@ -3404,10 +4105,21 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3404 'syntax-type 'here-doc) 4105 'syntax-type 'here-doc)
3405 (put-text-property (match-beginning 0) e1 4106 (put-text-property (match-beginning 0) e1
3406 'syntax-type 'here-doc-delim) 4107 'syntax-type 'here-doc-delim)
3407 (put-text-property b e1 4108 (put-text-property b e1 'here-doc-group t)
3408 'here-doc-group t) 4109 ;; This makes insertion at the start of HERE-DOC update
4110 ;; the whole construct:
4111 (put-text-property b (cperl-1+ b) 'front-sticky '(syntax-type))
3409 (cperl-commentify b e1 nil) 4112 (cperl-commentify b e1 nil)
3410 (cperl-put-do-not-fontify b (match-end 0) t) 4113 (cperl-put-do-not-fontify b (match-end 0) t)
4114 ;; Cache the syntax info...
4115 (setq cperl-syntax-state (cons state-point state))
4116 ;; ... and process the rest of the line...
4117 (setq overshoot
4118 (elt ; non-inter ignore-max
4119 (cperl-find-pods-heres c i t end t e1) 1))
4120 (if (and overshoot (> overshoot (point)))
4121 (goto-char overshoot)
4122 (setq overshoot e1))
3411 (if (> e1 max) 4123 (if (> e1 max)
3412 (setq tmpend tb)))) 4124 (setq tmpend tb))))
3413 ;; format 4125 ;; format
@@ -3462,7 +4174,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3462 (if (> (point) max) 4174 (if (> (point) max)
3463 (setq tmpend tb)) 4175 (setq tmpend tb))
3464 (put-text-property b (point) 'syntax-type 'format)) 4176 (put-text-property b (point) 'syntax-type 'format))
3465 ;; Regexp: 4177 ;; qq-like String or Regexp:
3466 ((or (match-beginning 10) (match-beginning 11)) 4178 ((or (match-beginning 10) (match-beginning 11))
3467 ;; 1+6+2=9 extra () before this: 4179 ;; 1+6+2=9 extra () before this:
3468 ;; "\\<\\(q[wxqr]?\\|[msy]\\|tr\\)\\>" 4180 ;; "\\<\\(q[wxqr]?\\|[msy]\\|tr\\)\\>"
@@ -3471,10 +4183,10 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3471 (setq b1 (if (match-beginning 10) 10 11) 4183 (setq b1 (if (match-beginning 10) 10 11)
3472 argument (buffer-substring 4184 argument (buffer-substring
3473 (match-beginning b1) (match-end b1)) 4185 (match-beginning b1) (match-end b1))
3474 b (point) 4186 b (point) ; end of qq etc
3475 i b 4187 i b
3476 c (char-after (match-beginning b1)) 4188 c (char-after (match-beginning b1))
3477 bb (char-after (1- (match-beginning b1))) ; tmp holder 4189 bb (char-after (1- (match-beginning b1))) ; tmp holder
3478 ;; bb == "Not a stringy" 4190 ;; bb == "Not a stringy"
3479 bb (if (eq b1 10) ; user variables/whatever 4191 bb (if (eq b1 10) ; user variables/whatever
3480 (and (memq bb (append "$@%*#_:-&>" nil)) ; $#y) 4192 (and (memq bb (append "$@%*#_:-&>" nil)) ; $#y)
@@ -3488,7 +4200,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3488 (- (match-beginning b1) 2)) 4200 (- (match-beginning b1) 2))
3489 ?\-)) 4201 ?\-))
3490 ((eq bb ?\&) 4202 ((eq bb ?\&)
3491 (not (eq (char-after ; &&m/blah/ 4203 (not (eq (char-after ; &&m/blah/
3492 (- (match-beginning b1) 2)) 4204 (- (match-beginning b1) 2))
3493 ?\&))) 4205 ?\&)))
3494 (t t))) 4206 (t t)))
@@ -3506,41 +4218,40 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3506 (setq argument "" 4218 (setq argument ""
3507 b1 nil 4219 b1 nil
3508 bb ; Not a regexp? 4220 bb ; Not a regexp?
3509 (progn 4221 (not
3510 (not 4222 ;; What is below: regexp-p?
3511 ;; What is below: regexp-p? 4223 (and
3512 (and 4224 (or (memq (preceding-char)
3513 (or (memq (preceding-char) 4225 (append (if (memq c '(?\? ?\<))
3514 (append (if (memq c '(?\? ?\<)) 4226 ;; $a++ ? 1 : 2
3515 ;; $a++ ? 1 : 2 4227 "~{(=|&*!,;:["
3516 "~{(=|&*!,;:" 4228 "~{(=|&+-*!,;:[") nil))
3517 "~{(=|&+-*!,;:") nil)) 4229 (and (eq (preceding-char) ?\})
3518 (and (eq (preceding-char) ?\}) 4230 (cperl-after-block-p (point-min)))
3519 (cperl-after-block-p (point-min))) 4231 (and (eq (char-syntax (preceding-char)) ?w)
3520 (and (eq (char-syntax (preceding-char)) ?w) 4232 (progn
3521 (progn 4233 (forward-sexp -1)
3522 (forward-sexp -1)
3523;; After these keywords `/' starts a RE. One should add all the 4234;; After these keywords `/' starts a RE. One should add all the
3524;; functions/builtins which expect an argument, but ... 4235;; functions/builtins which expect an argument, but ...
3525 (if (eq (preceding-char) ?-) 4236 (if (eq (preceding-char) ?-)
3526 ;; -d ?foo? is a RE 4237 ;; -d ?foo? is a RE
3527 (looking-at "[a-zA-Z]\\>") 4238 (looking-at "[a-zA-Z]\\>")
3528 (and 4239 (and
3529 (not (memq (preceding-char) 4240 (not (memq (preceding-char)
3530 '(?$ ?@ ?& ?%))) 4241 '(?$ ?@ ?& ?%)))
3531 (looking-at 4242 (looking-at
3532 "\\(while\\|if\\|unless\\|until\\|and\\|or\\|not\\|xor\\|split\\|grep\\|map\\|print\\)\\>"))))) 4243 "\\(while\\|if\\|unless\\|until\\|and\\|or\\|not\\|xor\\|split\\|grep\\|map\\|print\\)\\>")))))
3533 (and (eq (preceding-char) ?.) 4244 (and (eq (preceding-char) ?.)
3534 (eq (char-after (- (point) 2)) ?.)) 4245 (eq (char-after (- (point) 2)) ?.))
3535 (bobp)) 4246 (bobp))
3536 ;; m|blah| ? foo : bar; 4247 ;; m|blah| ? foo : bar;
3537 (not 4248 (not
3538 (and (eq c ?\?) 4249 (and (eq c ?\?)
3539 cperl-use-syntax-table-text-property 4250 cperl-use-syntax-table-text-property
3540 (not (bobp)) 4251 (not (bobp))
3541 (progn 4252 (progn
3542 (forward-char -1) 4253 (forward-char -1)
3543 (looking-at "\\s|"))))))) 4254 (looking-at "\\s|"))))))
3544 b (1- b)) 4255 b (1- b))
3545 ;; s y tr m 4256 ;; s y tr m
3546 ;; Check for $a -> y 4257 ;; Check for $a -> y
@@ -3550,13 +4261,9 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3550 (eq (char-after (- go 2)) ?-)) 4261 (eq (char-after (- go 2)) ?-))
3551 ;; Not a regexp 4262 ;; Not a regexp
3552 (setq bb t)))) 4263 (setq bb t))))
3553 (or bb (setq state (parse-partial-sexp
3554 state-point b nil nil state)
3555 state-point b))
3556 (setq bb (or bb (nth 3 state) (nth 4 state)))
3557 (goto-char b)
3558 (or bb 4264 (or bb
3559 (progn 4265 (progn
4266 (goto-char b)
3560 (if (looking-at "[ \t\n\f]+\\(#[^\n]*\n[ \t\n\f]*\\)+") 4267 (if (looking-at "[ \t\n\f]+\\(#[^\n]*\n[ \t\n\f]*\\)+")
3561 (goto-char (match-end 0)) 4268 (goto-char (match-end 0))
3562 (skip-chars-forward " \t\n\f")) 4269 (skip-chars-forward " \t\n\f"))
@@ -3593,6 +4300,8 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3593 (skip-chars-backward " \t\n\f") 4300 (skip-chars-backward " \t\n\f")
3594 (memq (preceding-char) 4301 (memq (preceding-char)
3595 (append "$@%&*" nil)))) 4302 (append "$@%&*" nil))))
4303 (setq bb t))
4304 ((eobp)
3596 (setq bb t))))) 4305 (setq bb t)))))
3597 (if bb 4306 (if bb
3598 (goto-char i) 4307 (goto-char i)
@@ -3605,15 +4314,16 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3605 ;; qtag means two-arg matcher, may be reset to 4314 ;; qtag means two-arg matcher, may be reset to
3606 ;; 2 or 3 later if some special quoting is needed. 4315 ;; 2 or 3 later if some special quoting is needed.
3607 ;; e1 means matching-char matcher. 4316 ;; e1 means matching-char matcher.
3608 (setq b (point) 4317 (setq b (point) ; before the first delimiter
3609 ;; has 2 args 4318 ;; has 2 args
3610 i2 (string-match "^\\([sy]\\|tr\\)$" argument) 4319 i2 (string-match "^\\([sy]\\|tr\\)$" argument)
3611 ;; We do not search to max, since we may be called from 4320 ;; We do not search to max, since we may be called from
3612 ;; some hook of fontification, and max is random 4321 ;; some hook of fontification, and max is random
3613 i (cperl-forward-re stop-point end 4322 i (cperl-forward-re stop-point end
3614 i2 4323 i2
3615 t st-l err-l argument) 4324 st-l err-l argument)
3616 ;; Note that if `go', then it is considered as 1-arg 4325 ;; If `go', then it is considered as 1-arg, `b1' is nil
4326 ;; as in s/foo//x; the point is before final "slash"
3617 b1 (nth 1 i) ; start of the second part 4327 b1 (nth 1 i) ; start of the second part
3618 tag (nth 2 i) ; ender-char, true if second part 4328 tag (nth 2 i) ; ender-char, true if second part
3619 ; is with matching chars [] 4329 ; is with matching chars []
@@ -3625,13 +4335,18 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3625 (1- e1)) 4335 (1- e1))
3626 e (if i i e1) ; end of the first part 4336 e (if i i e1) ; end of the first part
3627 qtag nil ; need to preserve backslashitis 4337 qtag nil ; need to preserve backslashitis
3628 is-x-REx nil) ; REx has //x modifier 4338 is-x-REx nil is-o-REx nil); REx has //x //o modifiers
4339 ;; If s{} (), then b/b1 are at "{", "(", e1/i after ")", "}"
3629 ;; Commenting \\ is dangerous, what about ( ? 4340 ;; Commenting \\ is dangerous, what about ( ?
3630 (and i tail 4341 (and i tail
3631 (eq (char-after i) ?\\) 4342 (eq (char-after i) ?\\)
3632 (setq qtag t)) 4343 (setq qtag t))
3633 (if (looking-at "\\sw*x") ; qr//x 4344 (and (if go (looking-at ".\\sw*x")
3634 (setq is-x-REx t)) 4345 (looking-at "\\sw*x")) ; qr//x
4346 (setq is-x-REx t))
4347 (and (if go (looking-at ".\\sw*o")
4348 (looking-at "\\sw*o")) ; //o
4349 (setq is-o-REx t))
3635 (if (null i) 4350 (if (null i)
3636 ;; Considered as 1arg form 4351 ;; Considered as 1arg form
3637 (progn 4352 (progn
@@ -3648,9 +4363,11 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3648 (cperl-commentify b i t) 4363 (cperl-commentify b i t)
3649 (if (looking-at "\\sw*e") ; s///e 4364 (if (looking-at "\\sw*e") ; s///e
3650 (progn 4365 (progn
4366 ;; Cache the syntax info...
4367 (setq cperl-syntax-state (cons state-point state))
3651 (and 4368 (and
3652 ;; silent: 4369 ;; silent:
3653 (cperl-find-pods-heres b1 (1- (point)) t end) 4370 (car (cperl-find-pods-heres b1 (1- (point)) t end))
3654 ;; Error 4371 ;; Error
3655 (goto-char (1+ max))) 4372 (goto-char (1+ max)))
3656 (if (and tag (eq (preceding-char) ?\>)) 4373 (if (and tag (eq (preceding-char) ?\>))
@@ -3658,6 +4375,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3658 (cperl-modify-syntax-type (1- (point)) cperl-st-ket) 4375 (cperl-modify-syntax-type (1- (point)) cperl-st-ket)
3659 (cperl-modify-syntax-type i cperl-st-bra))) 4376 (cperl-modify-syntax-type i cperl-st-bra)))
3660 (put-text-property b i 'syntax-type 'string) 4377 (put-text-property b i 'syntax-type 'string)
4378 (put-text-property i (point) 'syntax-type 'multiline)
3661 (if is-x-REx 4379 (if is-x-REx
3662 (put-text-property b i 'indentable t))) 4380 (put-text-property b i 'indentable t)))
3663 (cperl-commentify b1 (point) t) 4381 (cperl-commentify b1 (point) t)
@@ -3673,7 +4391,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3673 (forward-word 1) ; skip modifiers s///s 4391 (forward-word 1) ; skip modifiers s///s
3674 (if tail (cperl-commentify tail (point) t)) 4392 (if tail (cperl-commentify tail (point) t))
3675 (cperl-postpone-fontification 4393 (cperl-postpone-fontification
3676 e1 (point) 'face 'cperl-nonoverridable))) 4394 e1 (point) 'face my-cperl-REx-modifiers-face)))
3677 ;; Check whether it is m// which means "previous match" 4395 ;; Check whether it is m// which means "previous match"
3678 ;; and highlight differently 4396 ;; and highlight differently
3679 (setq is-REx 4397 (setq is-REx
@@ -3691,7 +4409,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3691 (not (looking-at "split\\>"))) 4409 (not (looking-at "split\\>")))
3692 (error t)))) 4410 (error t))))
3693 (cperl-postpone-fontification 4411 (cperl-postpone-fontification
3694 b e 'face font-lock-function-name-face) 4412 b e 'face font-lock-warning-face)
3695 (if (or i2 ; Has 2 args 4413 (if (or i2 ; Has 2 args
3696 (and cperl-fontify-m-as-s 4414 (and cperl-fontify-m-as-s
3697 (or 4415 (or
@@ -3700,135 +4418,417 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3700 (not (eq ?\< (char-after b))))))) 4418 (not (eq ?\< (char-after b)))))))
3701 (progn 4419 (progn
3702 (cperl-postpone-fontification 4420 (cperl-postpone-fontification
3703 b (cperl-1+ b) 'face font-lock-constant-face) 4421 b (cperl-1+ b) 'face my-cperl-delimiters-face)
3704 (cperl-postpone-fontification 4422 (cperl-postpone-fontification
3705 (1- e) e 'face font-lock-constant-face))) 4423 (1- e) e 'face my-cperl-delimiters-face)))
3706 (if (and is-REx cperl-regexp-scan) 4424 (if (and is-REx cperl-regexp-scan)
3707 ;; Process RExen better 4425 ;; Process RExen: embedded comments, charclasses and ]
4426;;;/\3333\xFg\x{FFF}a\ppp\PPP\qqq\C\99f(?{ foo })(??{ foo })/;
4427;;;/a\.b[^a[:ff:]b]x$ab->$[|$,$ab->[cd]->[ef]|$ab[xy].|^${a,b}{c,d}/;
4428;;;/(?<=foo)(?<!bar)(x)(?:$ab|\$\/)$|\\\b\x888\776\[\:$/xxx;
4429;;;m?(\?\?{b,a})? + m/(??{aa})(?(?=xx)aa|bb)(?#aac)/;
4430;;;m$(^ab[c]\$)$ + m+(^ab[c]\$\+)+ + m](^ab[c\]$|.+)] + m)(^ab[c]$|.+\));
4431;;;m^a[\^b]c^ + m.a[^b]\.c.;
3708 (save-excursion 4432 (save-excursion
3709 (goto-char (1+ b)) 4433 (goto-char (1+ b))
4434 ;; First
4435 (cperl-look-at-leading-count is-x-REx e)
4436 (setq hairy-RE
4437 (concat
4438 (if is-x-REx
4439 (if (eq (char-after b) ?\#)
4440 "\\((\\?\\\\#\\)\\|\\(\\\\#\\)"
4441 "\\((\\?#\\)\\|\\(#\\)")
4442 ;; keep the same count: add a fake group
4443 (if (eq (char-after b) ?\#)
4444 "\\((\\?\\\\#\\)\\(\\)"
4445 "\\((\\?#\\)\\(\\)"))
4446 "\\|"
4447 "\\(\\[\\)" ; 3=[
4448 "\\|"
4449 "\\(]\\)" ; 4=]
4450 "\\|"
4451 ;; XXXX Will not be able to use it in s)))
4452 (if (eq (char-after b) ?\) )
4453 "\\())))\\)" ; Will never match
4454 (if (eq (char-after b) ?? )
4455 ;;"\\((\\\\\\?\\(\\\\\\?\\)?{\\)"
4456 "\\((\\\\\\?\\\\\\?{\\|()\\\\\\?{\\)"
4457 "\\((\\?\\??{\\)")) ; 5= (??{ (?{
4458 "\\|" ; 6= 0-length, 7: name, 8,9:code, 10:group
4459 "\\(" ;; XXXX 1-char variables, exc. |()\s
4460 "[$@]"
4461 "\\("
4462 "[_a-zA-Z:][_a-zA-Z0-9:]*"
4463 "\\|"
4464 "{[^{}]*}" ; only one-level allowed
4465 "\\|"
4466 "[^{(|) \t\r\n\f]"
4467 "\\)"
4468 "\\(" ;;8,9:code part of array/hash elt
4469 "\\(" "->" "\\)?"
4470 "\\[[^][]*\\]"
4471 "\\|"
4472 "{[^{}]*}"
4473 "\\)*"
4474 ;; XXXX: what if u is delim?
4475 "\\|"
4476 "[)^|$.*?+]"
4477 "\\|"
4478 "{[0-9]+}"
4479 "\\|"
4480 "{[0-9]+,[0-9]*}"
4481 "\\|"
4482 "\\\\[luLUEQbBAzZG]"
4483 "\\|"
4484 "(" ; Group opener
4485 "\\(" ; 10 group opener follower
4486 "\\?\\((\\?\\)" ; 11: in (?(?=C)A|B)
4487 "\\|"
4488 "\\?[:=!>?{]" ; "?" something
4489 "\\|"
4490 "\\?[-imsx]+[:)]" ; (?i) (?-s:.)
4491 "\\|"
4492 "\\?([0-9]+)" ; (?(1)foo|bar)
4493 "\\|"
4494 "\\?<[=!]"
4495 ;;;"\\|"
4496 ;;; "\\?"
4497 "\\)?"
4498 "\\)"
4499 "\\|"
4500 "\\\\\\(.\\)" ; 12=\SYMBOL
4501 ))
3710 (while 4502 (while
3711 (and (< (point) e) 4503 (and (< (point) (1- e))
3712 (re-search-forward 4504 (re-search-forward hairy-RE (1- e) 'to-end))
3713 (if is-x-REx
3714 (if (eq (char-after b) ?\#)
3715 "\\((\\?\\\\#\\)\\|\\(\\\\#\\)"
3716 "\\((\\?#\\)\\|\\(#\\)")
3717 (if (eq (char-after b) ?\#)
3718 "\\((\\?\\\\#\\)"
3719 "\\((\\?#\\)"))
3720 (1- e) 'to-end))
3721 (goto-char (match-beginning 0)) 4505 (goto-char (match-beginning 0))
3722 (setq REx-comment-start (point) 4506 (setq REx-subgr-start (point)
3723 was-comment t) 4507 was-subgr (following-char))
3724 (if (save-excursion 4508 (cond
3725 (and 4509 ((match-beginning 6) ; 0-length builtins, groups
3726 ;; XXX not working if outside delimiter is # 4510 (goto-char (match-end 0))
3727 (eq (preceding-char) ?\\) 4511 (if (match-beginning 11)
3728 (= (% (skip-chars-backward "$\\\\") 2) -1))) 4512 (goto-char (match-beginning 11)))
3729 ;; Not a comment, avoid loop: 4513 (if (>= (point) e)
3730 (progn (setq was-comment nil) 4514 (goto-char (1- e)))
3731 (forward-char 1)) 4515 (cperl-postpone-fontification
3732 (if (match-beginning 2) 4516 (match-beginning 0) (point)
4517 'face
4518 (cond
4519 ((eq was-subgr ?\) )
4520 (condition-case nil
4521 (save-excursion
4522 (forward-sexp -1)
4523 (if (> (point) b)
4524 (if (if (eq (char-after b) ?? )
4525 (looking-at "(\\\\\\?")
4526 (eq (char-after (1+ (point))) ?\?))
4527 my-cperl-REx-0length-face
4528 my-cperl-REx-ctl-face)
4529 font-lock-warning-face))
4530 (error font-lock-warning-face)))
4531 ((eq was-subgr ?\| )
4532 my-cperl-REx-ctl-face)
4533 ((eq was-subgr ?\$ )
4534 (if (> (point) (1+ REx-subgr-start))
4535 (progn
4536 (put-text-property
4537 (match-beginning 0) (point)
4538 'REx-interpolated
4539 (if is-o-REx 0
4540 (if (and (eq (match-beginning 0)
4541 (1+ b))
4542 (eq (point)
4543 (1- e))) 1 t)))
4544 font-lock-variable-name-face)
4545 my-cperl-REx-spec-char-face))
4546 ((memq was-subgr (append "^." nil) )
4547 my-cperl-REx-spec-char-face)
4548 ((eq was-subgr ?\( )
4549 (if (not (match-beginning 10))
4550 my-cperl-REx-ctl-face
4551 my-cperl-REx-0length-face))
4552 (t my-cperl-REx-0length-face)))
4553 (if (and (memq was-subgr (append "(|" nil))
4554 (not (string-match "(\\?[-imsx]+)"
4555 (match-string 0))))
4556 (cperl-look-at-leading-count is-x-REx e))
4557 (setq was-subgr nil)) ; We do stuff here
4558 ((match-beginning 12) ; \SYMBOL
4559 (forward-char 2)
4560 (if (>= (point) e)
4561 (goto-char (1- e))
4562 ;; How many chars to not highlight:
4563 ;; 0-len special-alnums in other branch =>
4564 ;; Generic: \non-alnum (1), \alnum (1+face)
4565 ;; Is-delim: \non-alnum (1/spec-2) alnum-1 (=what hai)
4566 (setq REx-subgr-start (point)
4567 qtag (preceding-char))
4568 (cperl-postpone-fontification
4569 (- (point) 2) (- (point) 1) 'face
4570 (if (memq qtag
4571 (append "ghijkmoqvFHIJKMORTVY" nil))
4572 font-lock-warning-face
4573 my-cperl-REx-0length-face))
4574 (if (and (eq (char-after b) qtag)
4575 (memq qtag (append ".])^$|*?+" nil)))
4576 (progn
4577 (if (and cperl-use-syntax-table-text-property
4578 (eq qtag ?\) ))
4579 (put-text-property
4580 REx-subgr-start (1- (point))
4581 'syntax-table cperl-st-punct))
4582 (cperl-postpone-fontification
4583 (1- (point)) (point) 'face
4584 ; \] can't appear below
4585 (if (memq qtag (append ".]^$" nil))
4586 'my-cperl-REx-spec-char-face
4587 (if (memq qtag (append "*?+" nil))
4588 'my-cperl-REx-0length-face
4589 'my-cperl-REx-ctl-face))))) ; )|
4590 ;; Test for arguments:
4591 (cond
4592 ;; This is not pretty: the 5.8.7 logic:
4593 ;; \0numx -> octal (up to total 3 dig)
4594 ;; \DIGIT -> backref unless \0
4595 ;; \DIGITs -> backref if legal
4596 ;; otherwise up to 3 -> octal
4597 ;; Do not try to distinguish, we guess
4598 ((or (and (memq qtag (append "01234567" nil))
4599 (re-search-forward
4600 "\\=[01234567]?[01234567]?"
4601 (1- e) 'to-end))
4602 (and (memq qtag (append "89" nil))
4603 (re-search-forward
4604 "\\=[0123456789]*" (1- e) 'to-end))
4605 (and (eq qtag ?x)
4606 (re-search-forward
4607 "\\=[0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}"
4608 (1- e) 'to-end))
4609 (and (memq qtag (append "pPN" nil))
4610 (re-search-forward "\\={[^{}]+}\\|."
4611 (1- e) 'to-end))
4612 (eq (char-syntax qtag) ?w))
4613 (cperl-postpone-fontification
4614 (1- REx-subgr-start) (point)
4615 'face my-cperl-REx-length1-face))))
4616 (setq was-subgr nil)) ; We do stuff here
4617 ((match-beginning 3) ; [charclass]
4618 (forward-char 1)
4619 (if (eq (char-after b) ?^ )
4620 (and (eq (following-char) ?\\ )
4621 (eq (char-after (cperl-1+ (point)))
4622 ?^ )
4623 (forward-char 2))
4624 (and (eq (following-char) ?^ )
4625 (forward-char 1)))
4626 (setq argument b ; continue?
4627 tag nil ; list of POSIX classes
4628 qtag (point))
4629 (if (eq (char-after b) ?\] )
4630 (and (eq (following-char) ?\\ )
4631 (eq (char-after (cperl-1+ (point)))
4632 ?\] )
4633 (setq qtag (1+ qtag))
4634 (forward-char 2))
4635 (and (eq (following-char) ?\] )
4636 (forward-char 1)))
4637 ;; Apparently, I can't put \] into a charclass
4638 ;; in m]]: m][\\\]\]] produces [\\]]
4639;;; POSIX? [:word:] [:^word:] only inside []
4640;;; "\\=\\(\\\\.\\|[^][\\\\]\\|\\[:\\^?\sw+:]\\|\\[[^:]\\)*]")
4641 (while
4642 (and argument
4643 (re-search-forward
4644 (if (eq (char-after b) ?\] )
4645 "\\=\\(\\\\[^]]\\|[^]\\\\]\\)*\\\\]"
4646 "\\=\\(\\\\.\\|[^]\\\\]\\)*]")
4647 (1- e) 'toend))
4648 ;; Is this ] an end of POSIX class?
4649 (if (save-excursion
4650 (and
4651 (search-backward "[" argument t)
4652 (< REx-subgr-start (point))
4653 (not
4654 (and ; Should work with delim = \
4655 (eq (preceding-char) ?\\ )
4656 (= (% (skip-chars-backward
4657 "\\\\") 2) 0)))
4658 (looking-at
4659 (cond
4660 ((eq (char-after b) ?\] )
4661 "\\\\*\\[:\\^?\\sw+:\\\\\\]")
4662 ((eq (char-after b) ?\: )
4663 "\\\\*\\[\\\\:\\^?\\sw+\\\\:]")
4664 ((eq (char-after b) ?^ )
4665 "\\\\*\\[:\\(\\\\\\^\\)?\\sw+:\]")
4666 ((eq (char-syntax (char-after b))
4667 ?w)
4668 (concat
4669 "\\\\*\\[:\\(\\\\\\^\\)?\\(\\\\"
4670 (char-to-string (char-after b))
4671 "\\|\\sw\\)+:\]"))
4672 (t "\\\\*\\[:\\^?\\sw*:]")))
4673 (setq argument (point))))
4674 (setq tag (cons (cons argument (point))
4675 tag)
4676 argument (point)) ; continue
4677 (setq argument nil)))
4678 (and argument
4679 (message "Couldn't find end of charclass in a REx, pos=%s"
4680 REx-subgr-start))
4681 (if (and cperl-use-syntax-table-text-property
4682 (> (- (point) 2) REx-subgr-start))
4683 (put-text-property
4684 (1+ REx-subgr-start) (1- (point))
4685 'syntax-table cperl-st-punct))
4686 (cperl-postpone-fontification
4687 REx-subgr-start qtag
4688 'face my-cperl-REx-spec-char-face)
4689 (cperl-postpone-fontification
4690 (1- (point)) (point) 'face
4691 my-cperl-REx-spec-char-face)
4692 (if (eq (char-after b) ?\] )
4693 (cperl-postpone-fontification
4694 (- (point) 2) (1- (point))
4695 'face my-cperl-REx-0length-face))
4696 (while tag
4697 (cperl-postpone-fontification
4698 (car (car tag)) (cdr (car tag))
4699 'face my-cperl-REx-length1-face)
4700 (setq tag (cdr tag)))
4701 (setq was-subgr nil)) ; did facing already
4702 ;; Now rare stuff:
4703 ((and (match-beginning 2) ; #-comment
4704 (/= (match-beginning 2) (match-end 2)))
4705 (beginning-of-line 2)
4706 (if (> (point) e)
4707 (goto-char (1- e))))
4708 ((match-beginning 4) ; character "]"
4709 (setq was-subgr nil) ; We do stuff here
4710 (goto-char (match-end 0))
4711 (if cperl-use-syntax-table-text-property
4712 (put-text-property
4713 (1- (point)) (point)
4714 'syntax-table cperl-st-punct))
4715 (cperl-postpone-fontification
4716 (1- (point)) (point)
4717 'face font-lock-warning-face))
4718 ((match-beginning 5) ; before (?{}) (??{})
4719 (setq tag (match-end 0))
4720 (if (or (setq qtag
4721 (cperl-forward-group-in-re st-l))
4722 (and (>= (point) e)
4723 (setq qtag "no matching `)' found"))
4724 (and (not (eq (char-after (- (point) 2))
4725 ?\} ))
4726 (setq qtag "Can't find })")))
3733 (progn 4727 (progn
3734 (beginning-of-line 2) 4728 (goto-char (1- e))
3735 (if (> (point) e) 4729 (message qtag))
3736 (goto-char (1- e)))) 4730 (cperl-postpone-fontification
3737 ;; Works also if the outside delimiters are (). 4731 (1- tag) (1- (point))
3738 (or (search-forward ")" (1- e) 'toend) 4732 'face font-lock-variable-name-face)
3739 (message 4733 (cperl-postpone-fontification
3740 "Couldn't find end of (?#...)-comment in a REx, pos=%s" 4734 REx-subgr-start (1- tag)
3741 REx-comment-start)))) 4735 'face my-cperl-REx-spec-char-face)
4736 (cperl-postpone-fontification
4737 (1- (point)) (point)
4738 'face my-cperl-REx-spec-char-face)
4739 (if cperl-use-syntax-table-text-property
4740 (progn
4741 (put-text-property
4742 (- (point) 2) (1- (point))
4743 'syntax-table cperl-st-cfence)
4744 (put-text-property
4745 (+ REx-subgr-start 2)
4746 (+ REx-subgr-start 3)
4747 'syntax-table cperl-st-cfence))))
4748 (setq was-subgr nil))
4749 (t ; (?#)-comment
4750 ;; Inside "(" and "\" arn't special in any way
4751 ;; Works also if the outside delimiters are ().
4752 (or;;(if (eq (char-after b) ?\) )
4753 ;;(re-search-forward
4754 ;; "[^\\\\]\\(\\\\\\\\\\)*\\\\)"
4755 ;; (1- e) 'toend)
4756 (search-forward ")" (1- e) 'toend)
4757 ;;)
4758 (message
4759 "Couldn't find end of (?#...)-comment in a REx, pos=%s"
4760 REx-subgr-start))))
3742 (if (>= (point) e) 4761 (if (>= (point) e)
3743 (goto-char (1- e))) 4762 (goto-char (1- e)))
3744 (if was-comment 4763 (cond
3745 (progn 4764 (was-subgr
3746 (setq REx-comment-end (point)) 4765 (setq REx-subgr-end (point))
3747 (cperl-commentify 4766 (cperl-commentify
3748 REx-comment-start REx-comment-end nil) 4767 REx-subgr-start REx-subgr-end nil)
3749 (cperl-postpone-fontification 4768 (cperl-postpone-fontification
3750 REx-comment-start REx-comment-end 4769 REx-subgr-start REx-subgr-end
3751 'face font-lock-comment-face)))))) 4770 'face font-lock-comment-face))))))
3752 (if (and is-REx is-x-REx) 4771 (if (and is-REx is-x-REx)
3753 (put-text-property (1+ b) (1- e) 4772 (put-text-property (1+ b) (1- e)
3754 'syntax-subtype 'x-REx))) 4773 'syntax-subtype 'x-REx)))
3755 (if i2 4774 (if i2
3756 (progn 4775 (progn
3757 (cperl-postpone-fontification 4776 (cperl-postpone-fontification
3758 (1- e1) e1 'face font-lock-constant-face) 4777 (1- e1) e1 'face my-cperl-delimiters-face)
3759 (if (assoc (char-after b) cperl-starters) 4778 (if (assoc (char-after b) cperl-starters)
3760 (cperl-postpone-fontification 4779 (progn
3761 b1 (1+ b1) 'face font-lock-constant-face)))) 4780 (cperl-postpone-fontification
4781 b1 (1+ b1) 'face my-cperl-delimiters-face)
4782 (put-text-property b1 (1+ b1)
4783 'REx-part2 t)))))
3762 (if (> (point) max) 4784 (if (> (point) max)
3763 (setq tmpend tb)))) 4785 (setq tmpend tb))))
3764 ((match-beginning 13) ; sub with prototypes 4786 ((match-beginning 17) ; sub with prototype or attribute
3765 (setq b (match-beginning 0)) 4787 ;; 1+6+2+1+1=11 extra () before this (sub with proto/attr):
4788 ;;"\\<sub\\>\\(" ;12
4789 ;; cperl-white-and-comment-rex ;13
4790 ;; "\\([a-zA-Z_:'0-9]+\\)\\)?" ; name ;14
4791 ;;"\\(" cperl-maybe-white-and-comment-rex ;15,16
4792 ;; "\\(([^()]*)\\|:[^:]\\)\\)" ; 17:proto or attribute start
4793 (setq b1 (match-beginning 14) e1 (match-end 14))
3766 (if (memq (char-after (1- b)) 4794 (if (memq (char-after (1- b))
3767 '(?\$ ?\@ ?\% ?\& ?\*)) 4795 '(?\$ ?\@ ?\% ?\& ?\*))
3768 nil 4796 nil
3769 (setq state (parse-partial-sexp 4797 (goto-char b)
3770 state-point b nil nil state) 4798 (if (eq (char-after (match-beginning 17)) ?\( )
3771 state-point b) 4799 (progn
3772 (if (or (nth 3 state) (nth 4 state)) 4800 (cperl-commentify ; Prototypes; mark as string
3773 nil 4801 (match-beginning 17) (match-end 17) t)
3774 ;; Mark as string 4802 (goto-char (match-end 0))
3775 (cperl-commentify (match-beginning 13) (match-end 13) t)) 4803 ;; Now look for attributes after prototype:
3776 (goto-char (match-end 0)))) 4804 (forward-comment (buffer-size))
3777 ;; 1+6+2+1+1+2=13 extra () before this: 4805 (and (looking-at ":[^:]")
3778 ;; "\\$\\(['{]\\)" 4806 (cperl-find-sub-attrs st-l b1 e1 b)))
3779 ((and (match-beginning 14) 4807 ;; treat attributes without prototype
3780 (eq (preceding-char) ?\')) ; $' 4808 (goto-char (match-beginning 17))
3781 (setq b (1- (point)) 4809 (cperl-find-sub-attrs st-l b1 e1 b))))
3782 state (parse-partial-sexp 4810 ;; 1+6+2+1+1+6+1=18 extra () before this:
3783 state-point (1- b) nil nil state)
3784 state-point (1- b))
3785 (if (nth 3 state) ; in string
3786 (cperl-modify-syntax-type (1- b) cperl-st-punct))
3787 (goto-char (1+ b)))
3788 ;; 1+6+2+1+1+2=13 extra () before this:
3789 ;; "\\$\\(['{]\\)"
3790 ((match-beginning 14) ; ${
3791 (setq bb (match-beginning 0))
3792 (cperl-modify-syntax-type bb cperl-st-punct))
3793 ;; 1+6+2+1+1+2+1=14 extra () before this:
3794 ;; "\\(\\<sub[ \t\n\f]+\\|[&*$@%]\\)[a-zA-Z0-9_]*'") 4811 ;; "\\(\\<sub[ \t\n\f]+\\|[&*$@%]\\)[a-zA-Z0-9_]*'")
3795 ((match-beginning 15) ; old $abc'efg syntax 4812 ((match-beginning 19) ; old $abc'efg syntax
3796 (setq bb (match-end 0) 4813 (setq bb (match-end 0))
3797 b (match-beginning 0) 4814 ;;;(if (nth 3 state) nil ; in string
3798 state (parse-partial-sexp 4815 (put-text-property (1- bb) bb 'syntax-table cperl-st-word)
3799 state-point b nil nil state)
3800 state-point b)
3801 (if (nth 3 state) ; in string
3802 nil
3803 (put-text-property (1- bb) bb 'syntax-table cperl-st-word))
3804 (goto-char bb)) 4816 (goto-char bb))
3805 ;; 1+6+2+1+1+2+1+1=15 extra () before this: 4817 ;; 1+6+2+1+1+6+1+1=19 extra () before this:
3806 ;; "__\\(END\\|DATA\\)__" 4818 ;; "__\\(END\\|DATA\\)__"
3807 ((match-beginning 16) ; __END__, __DATA__ 4819 ((match-beginning 20) ; __END__, __DATA__
3808 (setq bb (match-end 0) 4820 (setq bb (match-end 0))
3809 b (match-beginning 0) 4821 ;; (put-text-property b (1+ bb) 'syntax-type 'pod) ; Cheat
3810 state (parse-partial-sexp 4822 (cperl-commentify b bb nil)
3811 state-point b nil nil state) 4823 (setq end t))
3812 state-point b) 4824 ;; "\\\\\\(['`\"($]\\)"
3813 (if (or (nth 3 state) (nth 4 state)) 4825 ((match-beginning 21)
3814 nil 4826 ;; Trailing backslash; make non-quoting outside string/comment
3815 ;; (put-text-property b (1+ bb) 'syntax-type 'pod) ; Cheat 4827 (setq bb (match-end 0))
3816 (cperl-commentify b bb nil)
3817 (setq end t))
3818 (goto-char bb))
3819 ((match-beginning 17) ; "\\\\\\(['`\"($]\\)"
3820 ;; Trailing backslash ==> non-quoting outside string/comment
3821 (setq bb (match-end 0)
3822 b (match-beginning 0))
3823 (goto-char b) 4828 (goto-char b)
3824 (skip-chars-backward "\\\\") 4829 (skip-chars-backward "\\\\")
3825 ;;;(setq i2 (= (% (skip-chars-backward "\\\\") 2) -1)) 4830 ;;;(setq i2 (= (% (skip-chars-backward "\\\\") 2) -1))
3826 (setq state (parse-partial-sexp 4831 (cperl-modify-syntax-type b cperl-st-punct)
3827 state-point b nil nil state)
3828 state-point b)
3829 (if (or (nth 3 state) (nth 4 state) )
3830 nil
3831 (cperl-modify-syntax-type b cperl-st-punct))
3832 (goto-char bb)) 4832 (goto-char bb))
3833 (t (error "Error in regexp of the sniffer"))) 4833 (t (error "Error in regexp of the sniffer")))
3834 (if (> (point) stop-point) 4834 (if (> (point) stop-point)
@@ -3839,7 +4839,10 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3839 (or (car err-l) (setcar err-l b))) 4839 (or (car err-l) (setcar err-l b)))
3840 (goto-char stop-point)))) 4840 (goto-char stop-point))))
3841 (setq cperl-syntax-state (cons state-point state) 4841 (setq cperl-syntax-state (cons state-point state)
3842 cperl-syntax-done-to (or tmpend (max (point) max)))) 4842 ;; Do not mark syntax as done past tmpend???
4843 cperl-syntax-done-to (or tmpend (max (point) max)))
4844 ;;(message "state-at=%s, done-to=%s" state-point cperl-syntax-done-to)
4845 )
3843 (if (car err-l) (goto-char (car err-l)) 4846 (if (car err-l) (goto-char (car err-l))
3844 (or non-inter 4847 (or non-inter
3845 (message "Scanning for \"hard\" Perl constructions... done")))) 4848 (message "Scanning for \"hard\" Perl constructions... done"))))
@@ -3851,48 +4854,91 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
3851 ;; cperl-mode-syntax-table. 4854 ;; cperl-mode-syntax-table.
3852 ;; (set-syntax-table cperl-mode-syntax-table) 4855 ;; (set-syntax-table cperl-mode-syntax-table)
3853 ) 4856 )
3854 (car err-l))) 4857 (list (car err-l) overshoot)))
4858
4859(defun cperl-find-pods-heres-region (min max)
4860 (interactive "r")
4861 (cperl-find-pods-heres min max))
3855 4862
3856(defun cperl-backward-to-noncomment (lim) 4863(defun cperl-backward-to-noncomment (lim)
3857 ;; Stops at lim or after non-whitespace that is not in comment 4864 ;; Stops at lim or after non-whitespace that is not in comment
4865 ;; XXXX Wrongly understands end-of-multiline strings with # as comment
3858 (let (stop p pr) 4866 (let (stop p pr)
3859 (while (and (not stop) (> (point) (or lim 1))) 4867 (while (and (not stop) (> (point) (or lim (point-min))))
3860 (skip-chars-backward " \t\n\f" lim) 4868 (skip-chars-backward " \t\n\f" lim)
3861 (setq p (point)) 4869 (setq p (point))
3862 (beginning-of-line) 4870 (beginning-of-line)
3863 (if (memq (setq pr (get-text-property (point) 'syntax-type)) 4871 (if (memq (setq pr (get-text-property (point) 'syntax-type))
3864 '(pod here-doc here-doc-delim)) 4872 '(pod here-doc here-doc-delim))
3865 (cperl-unwind-to-safe nil) 4873 (cperl-unwind-to-safe nil)
3866 (or (looking-at "^[ \t]*\\(#\\|$\\)") 4874 (or (and (looking-at "^[ \t]*\\(#\\|$\\)")
3867 (progn (cperl-to-comment-or-eol) (bolp)) 4875 (not (memq pr '(string prestring))))
3868 (progn 4876 (progn (cperl-to-comment-or-eol) (bolp))
3869 (skip-chars-backward " \t") 4877 (progn
3870 (if (< p (point)) (goto-char p)) 4878 (skip-chars-backward " \t")
3871 (setq stop t))))))) 4879 (if (< p (point)) (goto-char p))
4880 (setq stop t)))))))
3872 4881
4882;; Used only in `cperl-calculate-indent'...
4883(defun cperl-block-p () ; Do not C-M-q ! One string contains ";" !
4884 ;; Positions is before ?\{. Checks whether it starts a block.
4885 ;; No save-excursion! This is more a distinguisher of a block/hash ref...
4886 (cperl-backward-to-noncomment (point-min))
4887 (or (memq (preceding-char) (append ";){}$@&%\C-@" nil)) ; Or label! \C-@ at bobp
4888 ; Label may be mixed up with `$blah :'
4889 (save-excursion (cperl-after-label))
4890 (get-text-property (cperl-1- (point)) 'attrib-group)
4891 (and (memq (char-syntax (preceding-char)) '(?w ?_))
4892 (progn
4893 (backward-sexp)
4894 ;; sub {BLK}, print {BLK} $data, but NOT `bless', `return', `tr'
4895 (or (and (looking-at "[a-zA-Z0-9_:]+[ \t\n\f]*[{#]") ; Method call syntax
4896 (not (looking-at "\\(bless\\|return\\|q[wqrx]?\\|tr\\|[smy]\\)\\>")))
4897 ;; sub bless::foo {}
4898 (progn
4899 (cperl-backward-to-noncomment (point-min))
4900 (and (eq (preceding-char) ?b)
4901 (progn
4902 (forward-sexp -1)
4903 (looking-at "sub[ \t\n\f#]")))))))))
4904
4905;;; What is the difference of (cperl-after-block-p lim t) and (cperl-block-p)?
4906;;; No save-excursion; condition-case ... In (cperl-block-p) the block
4907;;; may be a part of an in-statement construct, such as
4908;;; ${something()}, print {FH} $data.
4909;;; Moreover, one takes positive approach (looks for else,grep etc)
4910;;; another negative (looks for bless,tr etc)
3873(defun cperl-after-block-p (lim &optional pre-block) 4911(defun cperl-after-block-p (lim &optional pre-block)
3874 "Return true if the preceeding } ends a block or a following { starts one. 4912 "Return true if the preceeding } (if PRE-BLOCK, following {) delimits a block.
3875Would not look before LIM. If PRE-BLOCK is nil checks preceeding }. 4913Would not look before LIM. Assumes that LIM is a good place to begin a
3876otherwise following {." 4914statement. The kind of block we treat here is one after which a new
3877 ;; We suppose that the preceding char is }. 4915statement would start; thus the block in ${func()} does not count."
3878 (save-excursion 4916 (save-excursion
3879 (condition-case nil 4917 (condition-case nil
3880 (progn 4918 (progn
3881 (or pre-block (forward-sexp -1)) 4919 (or pre-block (forward-sexp -1))
3882 (cperl-backward-to-noncomment lim) 4920 (cperl-backward-to-noncomment lim)
3883 (or (eq (point) lim) 4921 (or (eq (point) lim)
3884 (eq (preceding-char) ?\) ) ; if () {} sub f () {} 4922 ;; if () {} // sub f () {} // sub f :a(') {}
3885 (if (eq (char-syntax (preceding-char)) ?w) ; else {} 4923 (eq (preceding-char) ?\) )
4924 ;; label: {}
4925 (save-excursion (cperl-after-label))
4926 ;; sub :attr {}
4927 (get-text-property (cperl-1- (point)) 'attrib-group)
4928 (if (memq (char-syntax (preceding-char)) '(?w ?_)) ; else {}
3886 (save-excursion 4929 (save-excursion
3887 (forward-sexp -1) 4930 (forward-sexp -1)
3888 (or (looking-at "\\(else\\|continue\\|grep\\|map\\|BEGIN\\|END\\|CHECK\\|INIT\\)\\>") 4931 ;; else {} but not else::func {}
4932 (or (and (looking-at "\\(else\\|continue\\|grep\\|map\\|BEGIN\\|END\\|CHECK\\|INIT\\)\\>")
4933 (not (looking-at "\\(\\sw\\|_\\)+::")))
3889 ;; sub f {} 4934 ;; sub f {}
3890 (progn 4935 (progn
3891 (cperl-backward-to-noncomment lim) 4936 (cperl-backward-to-noncomment lim)
3892 (and (eq (char-syntax (preceding-char)) ?w) 4937 (and (eq (preceding-char) ?b)
3893 (progn 4938 (progn
3894 (forward-sexp -1) 4939 (forward-sexp -1)
3895 (looking-at "sub\\>")))))) 4940 (looking-at "sub[ \t\n\f#]"))))))
4941 ;; What preceeds is not word... XXXX Last statement in sub???
3896 (cperl-after-expr-p lim)))) 4942 (cperl-after-expr-p lim))))
3897 (error nil)))) 4943 (error nil))))
3898 4944
@@ -3914,14 +4960,12 @@ CHARS is a string that contains good characters to have before us (however,
3914 (if (get-text-property (point) 'here-doc-group) 4960 (if (get-text-property (point) 'here-doc-group)
3915 (progn 4961 (progn
3916 (goto-char 4962 (goto-char
3917 (or (previous-single-property-change (point) 'here-doc-group) 4963 (cperl-beginning-of-property (point) 'here-doc-group))
3918 (point)))
3919 (beginning-of-line 0))) 4964 (beginning-of-line 0)))
3920 (if (get-text-property (point) 'in-pod) 4965 (if (get-text-property (point) 'in-pod)
3921 (progn 4966 (progn
3922 (goto-char 4967 (goto-char
3923 (or (previous-single-property-change (point) 'in-pod) 4968 (cperl-beginning-of-property (point) 'in-pod))
3924 (point)))
3925 (beginning-of-line 0))) 4969 (beginning-of-line 0)))
3926 (if (looking-at "^[ \t]*\\(#\\|$\\)") nil ; Only comment, skip 4970 (if (looking-at "^[ \t]*\\(#\\|$\\)") nil ; Only comment, skip
3927 ;; Else: last iteration, or a label 4971 ;; Else: last iteration, or a label
@@ -3933,7 +4977,7 @@ CHARS is a string that contains good characters to have before us (however,
3933 (progn 4977 (progn
3934 (forward-char -1) 4978 (forward-char -1)
3935 (skip-chars-backward " \t\n\f" lim) 4979 (skip-chars-backward " \t\n\f" lim)
3936 (eq (char-syntax (preceding-char)) ?w))) 4980 (memq (char-syntax (preceding-char)) '(?w ?_))))
3937 (forward-sexp -1) ; Possibly label. Skip it 4981 (forward-sexp -1) ; Possibly label. Skip it
3938 (goto-char p) 4982 (goto-char p)
3939 (setq stop t)))) 4983 (setq stop t))))
@@ -3949,6 +4993,44 @@ CHARS is a string that contains good characters to have before us (however,
3949 (eq (get-text-property (point) 'syntax-type) 4993 (eq (get-text-property (point) 'syntax-type)
3950 'format))))))))) 4994 'format)))))))))
3951 4995
4996(defun cperl-backward-to-start-of-expr (&optional lim)
4997 (condition-case nil
4998 (progn
4999 (while (and (or (not lim)
5000 (> (point) lim))
5001 (not (cperl-after-expr-p lim)))
5002 (forward-sexp -1)
5003 ;; May be after $, @, $# etc of a variable
5004 (skip-chars-backward "$@%#")))
5005 (error nil)))
5006
5007(defun cperl-at-end-of-expr (&optional lim)
5008 ;; Since the SEXP approach below is very fragile, do some overengineering
5009 (or (looking-at (concat cperl-maybe-white-and-comment-rex "[;}]"))
5010 (condition-case nil
5011 (save-excursion
5012 ;; If nothing interesting after, does as (forward-sexp -1);
5013 ;; otherwise fails, or ends at a start of following sexp.
5014 ;; XXXX PROBLEMS: if what follows (after ";") @FOO, or ${bar}
5015 ;; may be stuck after @ or $; just put some stupid workaround now:
5016 (let ((p (point)))
5017 (forward-sexp 1)
5018 (forward-sexp -1)
5019 (while (memq (preceding-char) (append "%&@$*" nil))
5020 (forward-char -1))
5021 (or (< (point) p)
5022 (cperl-after-expr-p lim))))
5023 (error t))))
5024
5025(defun cperl-forward-to-end-of-expr (&optional lim)
5026 (let ((p (point))))
5027 (condition-case nil
5028 (progn
5029 (while (and (< (point) (or lim (point-max)))
5030 (not (cperl-at-end-of-expr)))
5031 (forward-sexp 1)))
5032 (error nil)))
5033
3952(defun cperl-backward-to-start-of-continued-exp (lim) 5034(defun cperl-backward-to-start-of-continued-exp (lim)
3953 (if (memq (preceding-char) (append ")]}\"'`" nil)) 5035 (if (memq (preceding-char) (append ")]}\"'`" nil))
3954 (forward-sexp -1)) 5036 (forward-sexp -1))
@@ -3989,18 +5071,51 @@ conditional/loop constructs."
3989 (beginning-of-line) 5071 (beginning-of-line)
3990 (while (null done) 5072 (while (null done)
3991 (setq top (point)) 5073 (setq top (point))
3992 (while (= (nth 0 (parse-partial-sexp (point) tmp-end 5074 ;; Plan A: if line has an unfinished paren-group, go to end-of-group
3993 -1)) -1) 5075 (while (= -1 (nth 0 (parse-partial-sexp (point) tmp-end -1)))
3994 (setq top (point))) ; Get the outermost parenths in line 5076 (setq top (point))) ; Get the outermost parenths in line
3995 (goto-char top) 5077 (goto-char top)
3996 (while (< (point) tmp-end) 5078 (while (< (point) tmp-end)
3997 (parse-partial-sexp (point) tmp-end nil t) ; To start-sexp or eol 5079 (parse-partial-sexp (point) tmp-end nil t) ; To start-sexp or eol
3998 (or (eolp) (forward-sexp 1))) 5080 (or (eolp) (forward-sexp 1)))
3999 (if (> (point) tmp-end) 5081 (if (> (point) tmp-end) ; Yes, there an unfinished block
4000 (save-excursion 5082 nil
4001 (end-of-line) 5083 (if (eq ?\) (preceding-char))
4002 (setq tmp-end (point))) 5084 (progn ;; Plan B: find by REGEXP block followup this line
4003 (setq done t))) 5085 (setq top (point))
5086 (condition-case nil
5087 (progn
5088 (forward-sexp -2)
5089 (if (eq (following-char) ?$ ) ; for my $var (list)
5090 (progn
5091 (forward-sexp -1)
5092 (if (looking-at "\\(my\\|local\\|our\\)\\>")
5093 (forward-sexp -1))))
5094 (if (looking-at
5095 (concat "\\(\\elsif\\|if\\|unless\\|while\\|until"
5096 "\\|for\\(each\\)?\\>\\(\\("
5097 cperl-maybe-white-and-comment-rex
5098 "\\(my\\|local\\|our\\)\\)?"
5099 cperl-maybe-white-and-comment-rex
5100 "\\$[_a-zA-Z0-9]+\\)?\\)\\>"))
5101 (progn
5102 (goto-char top)
5103 (forward-sexp 1)
5104 (setq top (point)))))
5105 (error (setq done t)))
5106 (goto-char top))
5107 (if (looking-at ; Try Plan C: continuation block
5108 (concat cperl-maybe-white-and-comment-rex
5109 "\\<\\(else\\|elsif\|continue\\)\\>"))
5110 (progn
5111 (goto-char (match-end 0))
5112 (save-excursion
5113 (end-of-line)
5114 (setq tmp-end (point))))
5115 (setq done t))))
5116 (save-excursion
5117 (end-of-line)
5118 (setq tmp-end (point))))
4004 (goto-char tmp-end) 5119 (goto-char tmp-end)
4005 (setq tmp-end (point-marker))) 5120 (setq tmp-end (point-marker)))
4006 (if cperl-indent-region-fix-constructs 5121 (if cperl-indent-region-fix-constructs
@@ -4029,16 +5144,26 @@ Returns some position at the last line."
4029 ;; Looking at: 5144 ;; Looking at:
4030 ;; } 5145 ;; }
4031 ;; else 5146 ;; else
4032 (if (and cperl-merge-trailing-else 5147 (if cperl-merge-trailing-else
4033 (looking-at 5148 (if (looking-at
4034 "[ \t]*}[ \t]*\n[ \t\n]*\\(els\\(e\\|if\\)\\|continue\\)\\>")) 5149 "[ \t]*}[ \t]*\n[ \t\n]*\\(els\\(e\\|if\\)\\|continue\\)\\>")
4035 (progn 5150 (progn
4036 (search-forward "}") 5151 (search-forward "}")
4037 (setq p (point)) 5152 (setq p (point))
4038 (skip-chars-forward " \t\n") 5153 (skip-chars-forward " \t\n")
4039 (delete-region p (point)) 5154 (delete-region p (point))
4040 (insert (make-string cperl-indent-region-fix-constructs ?\s)) 5155 (insert (make-string cperl-indent-region-fix-constructs ?\s))
4041 (beginning-of-line))) 5156 (beginning-of-line)))
5157 (if (looking-at "[ \t]*}[ \t]*\\(els\\(e\\|if\\)\\|continue\\)\\>")
5158 (save-excursion
5159 (search-forward "}")
5160 (delete-horizontal-space)
5161 (insert "\n")
5162 (setq ret (point))
5163 (if (cperl-indent-line parse-data)
5164 (progn
5165 (cperl-fix-line-spacing end parse-data)
5166 (setq ret (point)))))))
4042 ;; Looking at: 5167 ;; Looking at:
4043 ;; } else 5168 ;; } else
4044 (if (looking-at "[ \t]*}\\(\t*\\|[ \t][ \t]+\\)\\<\\(els\\(e\\|if\\)\\|continue\\)\\>") 5169 (if (looking-at "[ \t]*}\\(\t*\\|[ \t][ \t]+\\)\\<\\(els\\(e\\|if\\)\\|continue\\)\\>")
@@ -4075,19 +5200,19 @@ Returns some position at the last line."
4075 (insert 5200 (insert
4076 (make-string cperl-indent-region-fix-constructs ?\s)) 5201 (make-string cperl-indent-region-fix-constructs ?\s))
4077 (beginning-of-line))) 5202 (beginning-of-line)))
4078 ;; Looking at: 5203 ;; Looking at (with or without "}" at start, ending after "({"):
4079 ;; } foreach my $var () { 5204 ;; } foreach my $var () OR {
4080 (if (looking-at 5205 (if (looking-at
4081 "[ \t]*\\(}[ \t]*\\)?\\<\\(\\els\\(e\\|if\\)\\|continue\\|if\\|unless\\|while\\|for\\(each\\)?\\(\\([ \t]+\\(my\\|local\\|our\\)\\)?[ \t]*\\$[_a-zA-Z0-9]+\\)?\\|until\\)\\>\\([ \t]*(\\|[ \t\n]*{\\)\\|[ \t]*{") 5206 "[ \t]*\\(}[ \t]*\\)?\\<\\(\\els\\(e\\|if\\)\\|continue\\|if\\|unless\\|while\\|for\\(each\\)?\\(\\([ \t]+\\(my\\|local\\|our\\)\\)?[ \t]*\\$[_a-zA-Z0-9]+\\)?\\|until\\)\\>\\([ \t]*(\\|[ \t\n]*{\\)\\|[ \t]*{")
4082 (progn 5207 (progn
4083 (setq ml (match-beginning 8)) 5208 (setq ml (match-beginning 8)) ; "(" or "{" after control word
4084 (re-search-forward "[({]") 5209 (re-search-forward "[({]")
4085 (forward-char -1) 5210 (forward-char -1)
4086 (setq p (point)) 5211 (setq p (point))
4087 (if (eq (following-char) ?\( ) 5212 (if (eq (following-char) ?\( )
4088 (progn 5213 (progn
4089 (forward-sexp 1) 5214 (forward-sexp 1)
4090 (setq pp (point))) 5215 (setq pp (point))) ; past parenth-group
4091 ;; after `else' or nothing 5216 ;; after `else' or nothing
4092 (if ml ; after `else' 5217 (if ml ; after `else'
4093 (skip-chars-backward " \t\n") 5218 (skip-chars-backward " \t\n")
@@ -4097,13 +5222,13 @@ Returns some position at the last line."
4097 ;; Multiline expr should be special 5222 ;; Multiline expr should be special
4098 (setq ml (and pp (save-excursion (goto-char p) 5223 (setq ml (and pp (save-excursion (goto-char p)
4099 (search-forward "\n" pp t)))) 5224 (search-forward "\n" pp t))))
4100 (if (and (or (not pp) (< pp end)) 5225 (if (and (or (not pp) (< pp end)) ; Do not go too far...
4101 (looking-at "[ \t\n]*{")) 5226 (looking-at "[ \t\n]*{"))
4102 (progn 5227 (progn
4103 (cond 5228 (cond
4104 ((bolp) ; Were before `{', no if/else/etc 5229 ((bolp) ; Were before `{', no if/else/etc
4105 nil) 5230 nil)
4106 ((looking-at "\\(\t*\\| [ \t]+\\){") 5231 ((looking-at "\\(\t*\\| [ \t]+\\){") ; Not exactly 1 SPACE
4107 (delete-horizontal-space) 5232 (delete-horizontal-space)
4108 (if (if ml 5233 (if (if ml
4109 cperl-extra-newline-before-brace-multiline 5234 cperl-extra-newline-before-brace-multiline
@@ -4126,7 +5251,17 @@ Returns some position at the last line."
4126 (skip-chars-forward " \t\n") 5251 (skip-chars-forward " \t\n")
4127 (delete-region pp (point)) 5252 (delete-region pp (point))
4128 (insert 5253 (insert
4129 (make-string cperl-indent-region-fix-constructs ?\s)))) 5254 (make-string cperl-indent-region-fix-constructs ?\ )))
5255 ((and (looking-at "[\t ]*{")
5256 (if ml cperl-extra-newline-before-brace-multiline
5257 cperl-extra-newline-before-brace))
5258 (delete-horizontal-space)
5259 (insert "\n")
5260 (setq ret (point))
5261 (if (cperl-indent-line parse-data)
5262 (progn
5263 (cperl-fix-line-spacing end parse-data)
5264 (setq ret (point))))))
4130 ;; Now we are before `{' 5265 ;; Now we are before `{'
4131 (if (looking-at "[ \t\n]*{[ \t]*[^ \t\n#]") 5266 (if (looking-at "[ \t\n]*{[ \t]*[^ \t\n#]")
4132 (progn 5267 (progn
@@ -4278,7 +5413,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4278 ;; (interactive "P") ; Only works when called from fill-paragraph. -stef 5413 ;; (interactive "P") ; Only works when called from fill-paragraph. -stef
4279 (let (;; Non-nil if the current line contains a comment. 5414 (let (;; Non-nil if the current line contains a comment.
4280 has-comment 5415 has-comment
4281 5416 fill-paragraph-function ; do not recurse
4282 ;; If has-comment, the appropriate fill-prefix for the comment. 5417 ;; If has-comment, the appropriate fill-prefix for the comment.
4283 comment-fill-prefix 5418 comment-fill-prefix
4284 ;; Line that contains code and comment (or nil) 5419 ;; Line that contains code and comment (or nil)
@@ -4310,7 +5445,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4310 dc (- c (current-column)) len (- start (point)) 5445 dc (- c (current-column)) len (- start (point))
4311 start (point-marker)) 5446 start (point-marker))
4312 (delete-char len) 5447 (delete-char len)
4313 (insert (make-string dc ?-))))) 5448 (insert (make-string dc ?-))))) ; Placeholder (to avoid splitting???)
4314 (if (not has-comment) 5449 (if (not has-comment)
4315 (fill-paragraph justify) ; Do the usual thing outside of comment 5450 (fill-paragraph justify) ; Do the usual thing outside of comment
4316 ;; Narrow to include only the comment, and then fill the region. 5451 ;; Narrow to include only the comment, and then fill the region.
@@ -4332,11 +5467,16 @@ indentation and initial hashes. Behaves usually outside of comment."
4332 (point))) 5467 (point)))
4333 ;; Remove existing hashes 5468 ;; Remove existing hashes
4334 (save-excursion 5469 (save-excursion
4335 (goto-char (point-min)) 5470 (goto-char (point-min))
4336 (while (progn (forward-line 1) (< (point) (point-max))) 5471 (while (progn (forward-line 1) (< (point) (point-max)))
4337 (skip-chars-forward " \t") 5472 (skip-chars-forward " \t")
4338 (and (looking-at "#+") 5473 (if (looking-at "#+")
4339 (delete-char (- (match-end 0) (match-beginning 0)))))) 5474 (progn
5475 (if (and (eq (point) (match-beginning 0))
5476 (not (eq (point) (match-end 0)))) nil
5477 (error
5478 "Bug in Emacs: `looking-at' in `narrow-to-region': match-data is garbage"))
5479 (delete-char (- (match-end 0) (match-beginning 0)))))))
4340 5480
4341 ;; Lines with only hashes on them can be paragraph boundaries. 5481 ;; Lines with only hashes on them can be paragraph boundaries.
4342 (let ((paragraph-start (concat paragraph-start "\\|^[ \t#]*$")) 5482 (let ((paragraph-start (concat paragraph-start "\\|^[ \t#]*$"))
@@ -4352,7 +5492,8 @@ indentation and initial hashes. Behaves usually outside of comment."
4352 (setq comment-column c) 5492 (setq comment-column c)
4353 (indent-for-comment) 5493 (indent-for-comment)
4354 ;; Repeat once more, flagging as iteration 5494 ;; Repeat once more, flagging as iteration
4355 (cperl-fill-paragraph justify t))))))) 5495 (cperl-fill-paragraph justify t))))))
5496 t)
4356 5497
4357(defun cperl-do-auto-fill () 5498(defun cperl-do-auto-fill ()
4358 ;; Break out if the line is short enough 5499 ;; Break out if the line is short enough
@@ -4403,8 +5544,8 @@ indentation and initial hashes. Behaves usually outside of comment."
4403 (let ((index-alist '()) (index-pack-alist '()) (index-pod-alist '()) 5544 (let ((index-alist '()) (index-pack-alist '()) (index-pod-alist '())
4404 (index-unsorted-alist '()) (i-s-f (default-value 'imenu-sort-function)) 5545 (index-unsorted-alist '()) (i-s-f (default-value 'imenu-sort-function))
4405 (index-meth-alist '()) meth 5546 (index-meth-alist '()) meth
4406 packages ends-ranges p marker 5547 packages ends-ranges p marker is-proto
4407 (prev-pos 0) char fchar index index1 name (end-range 0) package) 5548 (prev-pos 0) is-pack index index1 name (end-range 0) package)
4408 (goto-char (point-min)) 5549 (goto-char (point-min))
4409 (cperl-update-syntaxification (point-max) (point-max)) 5550 (cperl-update-syntaxification (point-max) (point-max))
4410 ;; Search for the function 5551 ;; Search for the function
@@ -4412,72 +5553,81 @@ indentation and initial hashes. Behaves usually outside of comment."
4412 (while (re-search-forward 5553 (while (re-search-forward
4413 (or regexp cperl-imenu--function-name-regexp-perl) 5554 (or regexp cperl-imenu--function-name-regexp-perl)
4414 nil t) 5555 nil t)
5556 ;; 2=package-group, 5=package-name 8=sub-name
4415 (cond 5557 (cond
4416 ((and ; Skip some noise if building tags 5558 ((and ; Skip some noise if building tags
4417 (match-beginning 2) ; package or sub 5559 (match-beginning 5) ; package name
4418 (eq (char-after (match-beginning 2)) ?p) ; package 5560 ;;(eq (char-after (match-beginning 2)) ?p) ; package
4419 (not (save-match-data 5561 (not (save-match-data
4420 (looking-at "[ \t\n]*;")))) ; Plain text word 'package' 5562 (looking-at "[ \t\n]*;")))) ; Plain text word 'package'
4421 nil) 5563 nil)
4422 ((and 5564 ((and
4423 (match-beginning 2) ; package or sub 5565 (or (match-beginning 2)
5566 (match-beginning 8)) ; package or sub
4424 ;; Skip if quoted (will not skip multi-line ''-strings :-(): 5567 ;; Skip if quoted (will not skip multi-line ''-strings :-():
4425 (null (get-text-property (match-beginning 1) 'syntax-table)) 5568 (null (get-text-property (match-beginning 1) 'syntax-table))
4426 (null (get-text-property (match-beginning 1) 'syntax-type)) 5569 (null (get-text-property (match-beginning 1) 'syntax-type))
4427 (null (get-text-property (match-beginning 1) 'in-pod))) 5570 (null (get-text-property (match-beginning 1) 'in-pod)))
4428 (save-excursion 5571 (setq is-pack (match-beginning 2))
4429 (goto-char (match-beginning 2))
4430 (setq fchar (following-char)))
4431 ;; (if (looking-at "([^()]*)[ \t\n\f]*") 5572 ;; (if (looking-at "([^()]*)[ \t\n\f]*")
4432 ;; (goto-char (match-end 0))) ; Messes what follows 5573 ;; (goto-char (match-end 0))) ; Messes what follows
4433 (setq char (following-char) ; ?\; for "sub foo () ;" 5574 (setq meth nil
4434 meth nil
4435 p (point)) 5575 p (point))
4436 (while (and ends-ranges (>= p (car ends-ranges))) 5576 (while (and ends-ranges (>= p (car ends-ranges)))
4437 ;; delete obsolete entries 5577 ;; delete obsolete entries
4438 (setq ends-ranges (cdr ends-ranges) packages (cdr packages))) 5578 (setq ends-ranges (cdr ends-ranges) packages (cdr packages)))
4439 (setq package (or (car packages) "") 5579 (setq package (or (car packages) "")
4440 end-range (or (car ends-ranges) 0)) 5580 end-range (or (car ends-ranges) 0))
4441 (if (eq fchar ?p) 5581 (if is-pack ; doing "package"
4442 (setq name (buffer-substring (match-beginning 3) (match-end 3)) 5582 (progn
4443 name (progn 5583 (if (match-beginning 5) ; named package
4444 (set-text-properties 0 (length name) nil name) 5584 (setq name (buffer-substring (match-beginning 5)
4445 name) 5585 (match-end 5))
4446 package (concat name "::") 5586 name (progn
4447 name (concat "package " name) 5587 (set-text-properties 0 (length name) nil name)
4448 end-range 5588 name)
4449 (save-excursion 5589 package (concat name "::")
4450 (parse-partial-sexp (point) (point-max) -1) (point)) 5590 name (concat "package " name))
4451 ends-ranges (cons end-range ends-ranges) 5591 ;; Support nameless packages
4452 packages (cons package packages))) 5592 (setq name "package;" package ""))
4453 ;; ) 5593 (setq end-range
5594 (save-excursion
5595 (parse-partial-sexp (point) (point-max) -1) (point))
5596 ends-ranges (cons end-range ends-ranges)
5597 packages (cons package packages)))
5598 (setq is-proto
5599 (or (eq (following-char) ?\;)
5600 (eq 0 (get-text-property (point) 'attrib-group)))))
4454 ;; Skip this function name if it is a prototype declaration. 5601 ;; Skip this function name if it is a prototype declaration.
4455 (if (and (eq fchar ?s) (eq char ?\;)) nil 5602 (if (and is-proto (not is-pack)) nil
4456 (setq name (buffer-substring (match-beginning 3) (match-end 3)) 5603 (or is-pack
4457 marker (make-marker)) 5604 (setq name
4458 (set-text-properties 0 (length name) nil name) 5605 (buffer-substring (match-beginning 8) (match-end 8)))
4459 (set-marker marker (match-end 3)) 5606 (set-text-properties 0 (length name) nil name))
4460 (if (eq fchar ?p) 5607 (setq marker (make-marker))
4461 (setq name (concat "package " name)) 5608 (set-marker marker (match-end (if is-pack 2 8)))
4462 (cond ((string-match "[:']" name) 5609 (cond (is-pack nil)
4463 (setq meth t)) 5610 ((string-match "[:']" name)
4464 ((> p end-range) nil) 5611 (setq meth t))
4465 (t 5612 ((> p end-range) nil)
4466 (setq name (concat package name) meth t)))) 5613 (t
5614 (setq name (concat package name) meth t)))
4467 (setq index (cons name marker)) 5615 (setq index (cons name marker))
4468 (if (eq fchar ?p) 5616 (if is-pack
4469 (push index index-pack-alist) 5617 (push index index-pack-alist)
4470 (push index index-alist)) 5618 (push index index-alist))
4471 (if meth (push index index-meth-alist)) 5619 (if meth (push index index-meth-alist))
4472 (push index index-unsorted-alist))) 5620 (push index index-unsorted-alist)))
4473 ((match-beginning 5) ; POD section 5621 ((match-beginning 16) ; POD section
4474 ;; (beginning-of-line) 5622 (setq name (buffer-substring (match-beginning 17) (match-end 17))
4475 (setq index (imenu-example--name-and-position) 5623 marker (make-marker))
4476 name (buffer-substring (match-beginning 6) (match-end 6))) 5624 (set-marker marker (match-beginning 17))
4477 (set-text-properties 0 (length name) nil name) 5625 (set-text-properties 0 (length name) nil name)
4478 (if (eq (char-after (match-beginning 5)) ?2) 5626 (setq name (concat (make-string
4479 (setq name (concat " " name))) 5627 (* 3 (- (char-after (match-beginning 16)) ?1))
4480 (setcar index name) 5628 ?\ )
5629 name)
5630 index (cons name marker))
4481 (setq index1 (cons (concat "=" name) (cdr index))) 5631 (setq index1 (cons (concat "=" name) (cdr index)))
4482 (push index index-pod-alist) 5632 (push index index-pod-alist)
4483 (push index1 index-unsorted-alist))))) 5633 (push index1 index-unsorted-alist)))))
@@ -4541,29 +5691,20 @@ indentation and initial hashes. Behaves usually outside of comment."
4541(defun cperl-outline-level () 5691(defun cperl-outline-level ()
4542 (looking-at outline-regexp) 5692 (looking-at outline-regexp)
4543 (cond ((not (match-beginning 1)) 0) ; beginning-of-file 5693 (cond ((not (match-beginning 1)) 0) ; beginning-of-file
4544 ((match-beginning 2) 5694;;;; 2=package-group, 5=package-name 8=sub-name 16=head-level
4545 (if (eq (char-after (match-beginning 2)) ?p) 5695 ((match-beginning 2) 0) ; package
4546 0 ; package 5696 ((match-beginning 8) 1) ; sub
4547 1)) ; sub 5697 ((match-beginning 16)
4548 ((match-beginning 5) 5698 (- (char-after (match-beginning 16)) ?0)) ; headN ==> N
4549 (if (eq (char-after (match-beginning 5)) ?1) 5699 (t 5))) ; should not happen
4550 1 ; head1
4551 2)) ; head2
4552 (t 3))) ; should not happen
4553 5700
4554 5701
4555(defvar cperl-compilation-error-regexp-alist 5702(defvar cperl-compilation-error-regexp-alist
4556 ;; This look like a paranoiac regexp: could anybody find a better one? (which WORK). 5703 ;; This look like a paranoiac regexp: could anybody find a better one? (which WORKS).
4557 '(("^[^\n]* \\(file\\|at\\) \\([^ \t\n]+\\) [^\n]*line \\([0-9]+\\)[\\., \n]" 5704 '(("^[^\n]* \\(file\\|at\\) \\([^ \t\n]+\\) [^\n]*line \\([0-9]+\\)[\\., \n]"
4558 2 3)) 5705 2 3))
4559 "Alist that specifies how to match errors in perl output.") 5706 "Alist that specifies how to match errors in perl output.")
4560 5707
4561(if (fboundp 'eval-after-load)
4562 (eval-after-load
4563 "mode-compile"
4564 '(setq perl-compilation-error-regexp-alist
4565 cperl-compilation-error-regexp-alist)))
4566
4567 5708
4568(defun cperl-windowed-init () 5709(defun cperl-windowed-init ()
4569 "Initialization under windowed version." 5710 "Initialization under windowed version."
@@ -4604,9 +5745,12 @@ indentation and initial hashes. Behaves usually outside of comment."
4604 ;; Allow `cperl-find-pods-heres' to run. 5745 ;; Allow `cperl-find-pods-heres' to run.
4605 (or (boundp 'font-lock-constant-face) 5746 (or (boundp 'font-lock-constant-face)
4606 (cperl-force-face font-lock-constant-face 5747 (cperl-force-face font-lock-constant-face
4607 "Face for constant and label names") 5748 "Face for constant and label names"))
4608 ;;(setq font-lock-constant-face 'font-lock-constant-face) 5749 (or (boundp 'font-lock-warning-face)
4609 )) 5750 (cperl-force-face font-lock-warning-face
5751 "Face for things which should stand out"))
5752 ;;(setq font-lock-constant-face 'font-lock-constant-face)
5753 )
4610 5754
4611(defun cperl-init-faces () 5755(defun cperl-init-faces ()
4612 (condition-case errs 5756 (condition-case errs
@@ -4629,7 +5773,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4629 'identity 5773 'identity
4630 '("if" "until" "while" "elsif" "else" "unless" "for" 5774 '("if" "until" "while" "elsif" "else" "unless" "for"
4631 "foreach" "continue" "exit" "die" "last" "goto" "next" 5775 "foreach" "continue" "exit" "die" "last" "goto" "next"
4632 "redo" "return" "local" "exec" "sub" "do" "dump" "use" 5776 "redo" "return" "local" "exec" "sub" "do" "dump" "use" "our"
4633 "require" "package" "eval" "my" "BEGIN" "END" "CHECK" "INIT") 5777 "require" "package" "eval" "my" "BEGIN" "END" "CHECK" "INIT")
4634 "\\|") ; Flow control 5778 "\\|") ; Flow control
4635 "\\)\\>") 2) ; was "\\)[ \n\t;():,\|&]" 5779 "\\)\\>") 2) ; was "\\)[ \n\t;():,\|&]"
@@ -4713,7 +5857,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4713 ;; "chop" "defined" "delete" "do" "each" "else" "elsif" 5857 ;; "chop" "defined" "delete" "do" "each" "else" "elsif"
4714 ;; "eval" "exists" "for" "foreach" "format" "goto" 5858 ;; "eval" "exists" "for" "foreach" "format" "goto"
4715 ;; "grep" "if" "keys" "last" "local" "map" "my" "next" 5859 ;; "grep" "if" "keys" "last" "local" "map" "my" "next"
4716 ;; "no" "package" "pop" "pos" "print" "printf" "push" 5860 ;; "no" "our" "package" "pop" "pos" "print" "printf" "push"
4717 ;; "q" "qq" "qw" "qx" "redo" "return" "scalar" "shift" 5861 ;; "q" "qq" "qw" "qx" "redo" "return" "scalar" "shift"
4718 ;; "sort" "splice" "split" "study" "sub" "tie" "tr" 5862 ;; "sort" "splice" "split" "study" "sub" "tie" "tr"
4719 ;; "undef" "unless" "unshift" "untie" "until" "use" 5863 ;; "undef" "unless" "unshift" "untie" "until" "use"
@@ -4728,15 +5872,38 @@ indentation and initial hashes. Behaves usually outside of comment."
4728 "u\\(se\\|n\\(shift\\|ti\\(l\\|e\\)\\|def\\|less\\)\\)\\|" 5872 "u\\(se\\|n\\(shift\\|ti\\(l\\|e\\)\\|def\\|less\\)\\)\\|"
4729 "while\\|y\\|__\\(END\\|DATA\\)__" ;__DATA__ added manually 5873 "while\\|y\\|__\\(END\\|DATA\\)__" ;__DATA__ added manually
4730 "\\|[sm]" ; Added manually 5874 "\\|[sm]" ; Added manually
4731 "\\)\\>") 2 'cperl-nonoverridable) 5875 "\\)\\>") 2 'cperl-nonoverridable-face)
4732 ;; (mapconcat 'identity 5876 ;; (mapconcat 'identity
4733 ;; '("#endif" "#else" "#ifdef" "#ifndef" "#if" 5877 ;; '("#endif" "#else" "#ifdef" "#ifndef" "#if"
4734 ;; "#include" "#define" "#undef") 5878 ;; "#include" "#define" "#undef")
4735 ;; "\\|") 5879 ;; "\\|")
4736 '("-[rwxoRWXOezsfdlpSbctugkTBMAC]\\>\\([ \t]+_\\>\\)?" 0 5880 '("-[rwxoRWXOezsfdlpSbctugkTBMAC]\\>\\([ \t]+_\\>\\)?" 0
4737 font-lock-function-name-face keep) ; Not very good, triggers at "[a-z]" 5881 font-lock-function-name-face keep) ; Not very good, triggers at "[a-z]"
4738 '("\\<sub[ \t]+\\([^ \t{;()]+\\)[ \t]*\\(([^()]*)[ \t]*\\)?[#{\n]" 1 5882 ;; This highlights declarations and definitions differenty.
4739 font-lock-function-name-face) 5883 ;; We do not try to highlight in the case of attributes:
5884 ;; it is already done by `cperl-find-pods-heres'
5885 (list (concat "\\<sub"
5886 cperl-white-and-comment-rex ; whitespace/comments
5887 "\\([^ \n\t{;()]+\\)" ; 2=name (assume non-anonymous)
5888 "\\("
5889 cperl-maybe-white-and-comment-rex ;whitespace/comments?
5890 "([^()]*)\\)?" ; prototype
5891 cperl-maybe-white-and-comment-rex ; whitespace/comments?
5892 "[{;]")
5893 2 (if cperl-font-lock-multiline
5894 '(if (eq (char-after (cperl-1- (match-end 0))) ?\{ )
5895 'font-lock-function-name-face
5896 'font-lock-variable-name-face)
5897 ;; need to manually set 'multiline' for older font-locks
5898 '(progn
5899 (if (< 1 (count-lines (match-beginning 0)
5900 (match-end 0)))
5901 (put-text-property
5902 (+ 3 (match-beginning 0)) (match-end 0)
5903 'syntax-type 'multiline))
5904 (if (eq (char-after (cperl-1- (match-end 0))) ?\{ )
5905 'font-lock-function-name-face
5906 'font-lock-variable-name-face))))
4740 '("\\<\\(package\\|require\\|use\\|import\\|no\\|bootstrap\\)[ \t]+\\([a-zA-z_][a-zA-z_0-9:]*\\)[ \t;]" ; require A if B; 5907 '("\\<\\(package\\|require\\|use\\|import\\|no\\|bootstrap\\)[ \t]+\\([a-zA-z_][a-zA-z_0-9:]*\\)[ \t;]" ; require A if B;
4741 2 font-lock-function-name-face) 5908 2 font-lock-function-name-face)
4742 '("^[ \t]*format[ \t]+\\([a-zA-z_][a-zA-z_0-9:]*\\)[ \t]*=[ \t]*$" 5909 '("^[ \t]*format[ \t]+\\([a-zA-z_][a-zA-z_0-9:]*\\)[ \t]*=[ \t]*$"
@@ -4772,12 +5939,56 @@ indentation and initial hashes. Behaves usually outside of comment."
4772 (2 '(restart 2 nil) nil t))) 5939 (2 '(restart 2 nil) nil t)))
4773 nil t))) ; local variables, multiple 5940 nil t))) ; local variables, multiple
4774 (font-lock-anchored 5941 (font-lock-anchored
4775 '("^[ \t{}]*\\(my\\|local\\|our\\)[ \t]*\\(([ \t]*\\)?\\([$@%*][a-zA-Z0-9_:]+\\)" 5942 ;; 1=my_etc, 2=white? 3=(+white? 4=white? 5=var
4776 (3 font-lock-variable-name-face) 5943 (` ((, (concat "\\<\\(my\\|local\\|our\\)"
4777 ("\\=[ \t]*,[ \t]*\\([$@%*][a-zA-Z0-9_:]+\\)" 5944 cperl-maybe-white-and-comment-rex
4778 nil nil 5945 "\\(("
4779 (1 font-lock-variable-name-face)))) 5946 cperl-maybe-white-and-comment-rex
4780 (t '("^[ \t{}]*\\(my\\|local\\our\\)[ \t]*\\(([ \t]*\\)?\\([$@%*][a-zA-Z0-9_:]+\\)" 5947 "\\)?\\([$@%*]\\([a-zA-Z0-9_:]+\\|[^a-zA-Z0-9_]\\)\\)"))
5948 (5 (, (if cperl-font-lock-multiline
5949 'font-lock-variable-name-face
5950 '(progn (setq cperl-font-lock-multiline-start
5951 (match-beginning 0))
5952 'font-lock-variable-name-face))))
5953 ((, (concat "\\="
5954 cperl-maybe-white-and-comment-rex
5955 ","
5956 cperl-maybe-white-and-comment-rex
5957 "\\([$@%*]\\([a-zA-Z0-9_:]+\\|[^a-zA-Z0-9_]\\)\\)"))
5958 ;; Bug in font-lock: limit is used not only to limit
5959 ;; searches, but to set the "extend window for
5960 ;; facification" property. Thus we need to minimize.
5961 (, (if cperl-font-lock-multiline
5962 '(if (match-beginning 3)
5963 (save-excursion
5964 (goto-char (match-beginning 3))
5965 (condition-case nil
5966 (forward-sexp 1)
5967 (error
5968 (condition-case nil
5969 (forward-char 200)
5970 (error nil)))) ; typeahead
5971 (1- (point))) ; report limit
5972 (forward-char -2)) ; disable continued expr
5973 '(if (match-beginning 3)
5974 (point-max) ; No limit for continuation
5975 (forward-char -2)))) ; disable continued expr
5976 (, (if cperl-font-lock-multiline
5977 nil
5978 '(progn ; Do at end
5979 ;; "my" may be already fontified (POD),
5980 ;; so cperl-font-lock-multiline-start is nil
5981 (if (or (not cperl-font-lock-multiline-start)
5982 (> 2 (count-lines
5983 cperl-font-lock-multiline-start
5984 (point))))
5985 nil
5986 (put-text-property
5987 (1+ cperl-font-lock-multiline-start) (point)
5988 'syntax-type 'multiline))
5989 (setq cperl-font-lock-multiline-start nil))))
5990 (3 font-lock-variable-name-face)))))
5991 (t '("^[ \t{}]*\\(my\\|local\\|our\\)[ \t]*\\(([ \t]*\\)?\\([$@%*][a-zA-Z0-9_:]+\\)"
4781 3 font-lock-variable-name-face))) 5992 3 font-lock-variable-name-face)))
4782 '("\\<for\\(each\\)?\\([ \t]+\\(my\\|local\\|our\\)\\)?[ \t]*\\(\\$[a-zA-Z_][a-zA-Z_0-9]*\\)[ \t]*(" 5993 '("\\<for\\(each\\)?\\([ \t]+\\(my\\|local\\|our\\)\\)?[ \t]*\\(\\$[a-zA-Z_][a-zA-Z_0-9]*\\)[ \t]*("
4783 4 font-lock-variable-name-face) 5994 4 font-lock-variable-name-face)
@@ -4787,21 +5998,32 @@ indentation and initial hashes. Behaves usually outside of comment."
4787 (setq 5998 (setq
4788 t-font-lock-keywords-1 5999 t-font-lock-keywords-1
4789 (and (fboundp 'turn-on-font-lock) ; Check for newer font-lock 6000 (and (fboundp 'turn-on-font-lock) ; Check for newer font-lock
4790 (not cperl-xemacs-p) ; not yet as of XEmacs 19.12 6001 ;; not yet as of XEmacs 19.12, works with 21.1.11
6002 (or
6003 (not cperl-xemacs-p)
6004 (string< "21.1.9" emacs-version)
6005 (and (string< "21.1.10" emacs-version)
6006 (string< emacs-version "21.1.2")))
4791 '( 6007 '(
4792 ("\\(\\([@%]\\|\$#\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)" 1 6008 ("\\(\\([@%]\\|\$#\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)" 1
4793 (if (eq (char-after (match-beginning 2)) ?%) 6009 (if (eq (char-after (match-beginning 2)) ?%)
4794 'cperl-hash 6010 'cperl-hash-face
4795 'cperl-array) 6011 'cperl-array-face)
4796 t) ; arrays and hashes 6012 t) ; arrays and hashes
4797 ("\\(\\([$@]+\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)[ \t]*\\([[{]\\)" 6013 ("\\(\\([$@]+\\)[a-zA-Z_:][a-zA-Z0-9_:]*\\)[ \t]*\\([[{]\\)"
4798 1 6014 1
4799 (if (= (- (match-end 2) (match-beginning 2)) 1) 6015 (if (= (- (match-end 2) (match-beginning 2)) 1)
4800 (if (eq (char-after (match-beginning 3)) ?{) 6016 (if (eq (char-after (match-beginning 3)) ?{)
4801 'cperl-hash 6017 'cperl-hash-face
4802 'cperl-array) ; arrays and hashes 6018 'cperl-array-face) ; arrays and hashes
4803 font-lock-variable-name-face) ; Just to put something 6019 font-lock-variable-name-face) ; Just to put something
4804 t) 6020 t)
6021 ("\\(@\\|\\$#\\)\\(\\$+\\([a-zA-Z_:][a-zA-Z0-9_:]*\\|[^ \t\n]\\)\\)"
6022 (1 cperl-array-face)
6023 (2 font-lock-variable-name-face))
6024 ("\\(%\\)\\(\\$+\\([a-zA-Z_:][a-zA-Z0-9_:]*\\|[^ \t\n]\\)\\)"
6025 (1 cperl-hash-face)
6026 (2 font-lock-variable-name-face))
4805 ;;("\\([smy]\\|tr\\)\\([^a-z_A-Z0-9]\\)\\(\\([^\n\\]*||\\)\\)\\2") 6027 ;;("\\([smy]\\|tr\\)\\([^a-z_A-Z0-9]\\)\\(\\([^\n\\]*||\\)\\)\\2")
4806 ;;; Too much noise from \s* @s[ and friends 6028 ;;; Too much noise from \s* @s[ and friends
4807 ;;("\\(\\<\\([msy]\\|tr\\)[ \t]*\\([^ \t\na-zA-Z0-9_]\\)\\|\\(/\\)\\)" 6029 ;;("\\(\\<\\([msy]\\|tr\\)[ \t]*\\([^ \t\na-zA-Z0-9_]\\)\\|\\(/\\)\\)"
@@ -4813,7 +6035,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4813 (if cperl-highlight-variables-indiscriminately 6035 (if cperl-highlight-variables-indiscriminately
4814 (setq t-font-lock-keywords-1 6036 (setq t-font-lock-keywords-1
4815 (append t-font-lock-keywords-1 6037 (append t-font-lock-keywords-1
4816 (list '("[$*]{?\\(\\sw+\\)" 1 6038 (list '("\\([$*]{?\\sw+\\)" 1
4817 font-lock-variable-name-face))))) 6039 font-lock-variable-name-face)))))
4818 (setq cperl-font-lock-keywords-1 6040 (setq cperl-font-lock-keywords-1
4819 (if cperl-syntaxify-by-font-lock 6041 (if cperl-syntaxify-by-font-lock
@@ -4866,27 +6088,35 @@ indentation and initial hashes. Behaves usually outside of comment."
4866 [nil nil t t t] 6088 [nil nil t t t]
4867 nil 6089 nil
4868 [nil nil t t t]) 6090 [nil nil t t t])
6091 (list 'font-lock-warning-face
6092 ["Pink" "Red" "Gray50" "LightGray"]
6093 ["gray20" "gray90"
6094 "gray80" "gray20"]
6095 [nil nil t t t]
6096 nil
6097 [nil nil t t t]
6098 )
4869 (list 'font-lock-constant-face 6099 (list 'font-lock-constant-face
4870 ["CadetBlue" "Aquamarine" "Gray50" "LightGray"] 6100 ["CadetBlue" "Aquamarine" "Gray50" "LightGray"]
4871 nil 6101 nil
4872 [nil nil t t t] 6102 [nil nil t t t]
4873 nil 6103 nil
4874 [nil nil t t t]) 6104 [nil nil t t t])
4875 (list 'cperl-nonoverridable 6105 (list 'cperl-nonoverridable-face
4876 ["chartreuse3" ("orchid1" "orange") 6106 ["chartreuse3" ("orchid1" "orange")
4877 nil "Gray80"] 6107 nil "Gray80"]
4878 [nil nil "gray90"] 6108 [nil nil "gray90"]
4879 [nil nil nil t t] 6109 [nil nil nil t t]
4880 [nil nil t t] 6110 [nil nil t t]
4881 [nil nil t t t]) 6111 [nil nil t t t])
4882 (list 'cperl-array 6112 (list 'cperl-array-face
4883 ["blue" "yellow" nil "Gray80"] 6113 ["blue" "yellow" nil "Gray80"]
4884 ["lightyellow2" ("navy" "os2blue" "darkgreen") 6114 ["lightyellow2" ("navy" "os2blue" "darkgreen")
4885 "gray90"] 6115 "gray90"]
4886 t 6116 t
4887 nil 6117 nil
4888 nil) 6118 nil)
4889 (list 'cperl-hash 6119 (list 'cperl-hash-face
4890 ["red" "red" nil "Gray80"] 6120 ["red" "red" nil "Gray80"]
4891 ["lightyellow2" ("navy" "os2blue" "darkgreen") 6121 ["lightyellow2" ("navy" "os2blue" "darkgreen")
4892 "gray90"] 6122 "gray90"]
@@ -4909,15 +6139,17 @@ indentation and initial hashes. Behaves usually outside of comment."
4909 "Face for variable names") 6139 "Face for variable names")
4910 (cperl-force-face font-lock-type-face 6140 (cperl-force-face font-lock-type-face
4911 "Face for data types") 6141 "Face for data types")
4912 (cperl-force-face cperl-nonoverridable 6142 (cperl-force-face cperl-nonoverridable-face
4913 "Face for data types from another group") 6143 "Face for data types from another group")
6144 (cperl-force-face font-lock-warning-face
6145 "Face for things which should stand out")
4914 (cperl-force-face font-lock-comment-face 6146 (cperl-force-face font-lock-comment-face
4915 "Face for comments") 6147 "Face for comments")
4916 (cperl-force-face font-lock-function-name-face 6148 (cperl-force-face font-lock-function-name-face
4917 "Face for function names") 6149 "Face for function names")
4918 (cperl-force-face cperl-hash 6150 (cperl-force-face cperl-hash-face
4919 "Face for hashes") 6151 "Face for hashes")
4920 (cperl-force-face cperl-array 6152 (cperl-force-face cperl-array-face
4921 "Face for arrays") 6153 "Face for arrays")
4922 ;;(defvar font-lock-constant-face 'font-lock-constant-face) 6154 ;;(defvar font-lock-constant-face 'font-lock-constant-face)
4923 ;;(defvar font-lock-variable-name-face 'font-lock-variable-name-face) 6155 ;;(defvar font-lock-variable-name-face 'font-lock-variable-name-face)
@@ -4927,7 +6159,7 @@ indentation and initial hashes. Behaves usually outside of comment."
4927 ;; "Face to use for data types.")) 6159 ;; "Face to use for data types."))
4928 ;;(or (boundp 'cperl-nonoverridable-face) 6160 ;;(or (boundp 'cperl-nonoverridable-face)
4929 ;; (defconst cperl-nonoverridable-face 6161 ;; (defconst cperl-nonoverridable-face
4930 ;; 'cperl-nonoverridable 6162 ;; 'cperl-nonoverridable-face
4931 ;; "Face to use for data types from another group.")) 6163 ;; "Face to use for data types from another group."))
4932 ;;(if (not cperl-xemacs-p) nil 6164 ;;(if (not cperl-xemacs-p) nil
4933 ;; (or (boundp 'font-lock-comment-face) 6165 ;; (or (boundp 'font-lock-comment-face)
@@ -4943,24 +6175,24 @@ indentation and initial hashes. Behaves usually outside of comment."
4943 ;; 'font-lock-function-name-face 6175 ;; 'font-lock-function-name-face
4944 ;; "Face to use for function names."))) 6176 ;; "Face to use for function names.")))
4945 (if (and 6177 (if (and
4946 (not (cperl-is-face 'cperl-array)) 6178 (not (cperl-is-face 'cperl-array-face))
4947 (cperl-is-face 'font-lock-emphasized-face)) 6179 (cperl-is-face 'font-lock-emphasized-face))
4948 (copy-face 'font-lock-emphasized-face 'cperl-array)) 6180 (copy-face 'font-lock-emphasized-face 'cperl-array-face))
4949 (if (and 6181 (if (and
4950 (not (cperl-is-face 'cperl-hash)) 6182 (not (cperl-is-face 'cperl-hash-face))
4951 (cperl-is-face 'font-lock-other-emphasized-face)) 6183 (cperl-is-face 'font-lock-other-emphasized-face))
4952 (copy-face 'font-lock-other-emphasized-face 'cperl-hash)) 6184 (copy-face 'font-lock-other-emphasized-face 'cperl-hash-face))
4953 (if (and 6185 (if (and
4954 (not (cperl-is-face 'cperl-nonoverridable)) 6186 (not (cperl-is-face 'cperl-nonoverridable-face))
4955 (cperl-is-face 'font-lock-other-type-face)) 6187 (cperl-is-face 'font-lock-other-type-face))
4956 (copy-face 'font-lock-other-type-face 'cperl-nonoverridable)) 6188 (copy-face 'font-lock-other-type-face 'cperl-nonoverridable-face))
4957 ;;(or (boundp 'cperl-hash-face) 6189 ;;(or (boundp 'cperl-hash-face)
4958 ;; (defconst cperl-hash-face 6190 ;; (defconst cperl-hash-face
4959 ;; 'cperl-hash 6191 ;; 'cperl-hash-face
4960 ;; "Face to use for hashes.")) 6192 ;; "Face to use for hashes."))
4961 ;;(or (boundp 'cperl-array-face) 6193 ;;(or (boundp 'cperl-array-face)
4962 ;; (defconst cperl-array-face 6194 ;; (defconst cperl-array-face
4963 ;; 'cperl-array 6195 ;; 'cperl-array-face
4964 ;; "Face to use for arrays.")) 6196 ;; "Face to use for arrays."))
4965 ;; Here we try to guess background 6197 ;; Here we try to guess background
4966 (let ((background 6198 (let ((background
@@ -4999,17 +6231,17 @@ indentation and initial hashes. Behaves usually outside of comment."
4999 "pink"))) 6231 "pink")))
5000 (t 6232 (t
5001 (set-face-background 'font-lock-type-face "gray90")))) 6233 (set-face-background 'font-lock-type-face "gray90"))))
5002 (if (cperl-is-face 'cperl-nonoverridable) 6234 (if (cperl-is-face 'cperl-nonoverridable-face)
5003 nil 6235 nil
5004 (copy-face 'font-lock-type-face 'cperl-nonoverridable) 6236 (copy-face 'font-lock-type-face 'cperl-nonoverridable-face)
5005 (cond 6237 (cond
5006 ((eq background 'light) 6238 ((eq background 'light)
5007 (set-face-foreground 'cperl-nonoverridable 6239 (set-face-foreground 'cperl-nonoverridable-face
5008 (if (x-color-defined-p "chartreuse3") 6240 (if (x-color-defined-p "chartreuse3")
5009 "chartreuse3" 6241 "chartreuse3"
5010 "chartreuse"))) 6242 "chartreuse")))
5011 ((eq background 'dark) 6243 ((eq background 'dark)
5012 (set-face-foreground 'cperl-nonoverridable 6244 (set-face-foreground 'cperl-nonoverridable-face
5013 (if (x-color-defined-p "orchid1") 6245 (if (x-color-defined-p "orchid1")
5014 "orchid1" 6246 "orchid1"
5015 "orange"))))) 6247 "orange")))))
@@ -5061,15 +6293,15 @@ indentation and initial hashes. Behaves usually outside of comment."
5061 '(setq ps-bold-faces 6293 '(setq ps-bold-faces
5062 ;; font-lock-variable-name-face 6294 ;; font-lock-variable-name-face
5063 ;; font-lock-constant-face 6295 ;; font-lock-constant-face
5064 (append '(cperl-array cperl-hash) 6296 (append '(cperl-array-face cperl-hash-face)
5065 ps-bold-faces) 6297 ps-bold-faces)
5066 ps-italic-faces 6298 ps-italic-faces
5067 ;; font-lock-constant-face 6299 ;; font-lock-constant-face
5068 (append '(cperl-nonoverridable cperl-hash) 6300 (append '(cperl-nonoverridable-face cperl-hash-face)
5069 ps-italic-faces) 6301 ps-italic-faces)
5070 ps-underlined-faces 6302 ps-underlined-faces
5071 ;; font-lock-type-face 6303 ;; font-lock-type-face
5072 (append '(cperl-array cperl-hash underline cperl-nonoverridable) 6304 (append '(cperl-array-face cperl-hash-face underline cperl-nonoverridable-face)
5073 ps-underlined-faces)))) 6305 ps-underlined-faces))))
5074 6306
5075(defvar ps-print-face-extension-alist) 6307(defvar ps-print-face-extension-alist)
@@ -5102,27 +6334,27 @@ Style of printout regulated by the variable `cperl-ps-print-face-properties'."
5102;;; (defvar ps-italic-faces nil) 6334;;; (defvar ps-italic-faces nil)
5103;;; (setq ps-bold-faces 6335;;; (setq ps-bold-faces
5104;;; (append '(font-lock-emphasized-face 6336;;; (append '(font-lock-emphasized-face
5105;;; cperl-array 6337;;; cperl-array-face
5106;;; font-lock-keyword-face 6338;;; font-lock-keyword-face
5107;;; font-lock-variable-name-face 6339;;; font-lock-variable-name-face
5108;;; font-lock-constant-face 6340;;; font-lock-constant-face
5109;;; font-lock-reference-face 6341;;; font-lock-reference-face
5110;;; font-lock-other-emphasized-face 6342;;; font-lock-other-emphasized-face
5111;;; cperl-hash) 6343;;; cperl-hash-face)
5112;;; ps-bold-faces)) 6344;;; ps-bold-faces))
5113;;; (setq ps-italic-faces 6345;;; (setq ps-italic-faces
5114;;; (append '(cperl-nonoverridable 6346;;; (append '(cperl-nonoverridable-face
5115;;; font-lock-constant-face 6347;;; font-lock-constant-face
5116;;; font-lock-reference-face 6348;;; font-lock-reference-face
5117;;; font-lock-other-emphasized-face 6349;;; font-lock-other-emphasized-face
5118;;; cperl-hash) 6350;;; cperl-hash-face)
5119;;; ps-italic-faces)) 6351;;; ps-italic-faces))
5120;;; (setq ps-underlined-faces 6352;;; (setq ps-underlined-faces
5121;;; (append '(font-lock-emphasized-face 6353;;; (append '(font-lock-emphasized-face
5122;;; cperl-array 6354;;; cperl-array-face
5123;;; font-lock-other-emphasized-face 6355;;; font-lock-other-emphasized-face
5124;;; cperl-hash 6356;;; cperl-hash-face
5125;;; cperl-nonoverridable font-lock-type-face) 6357;;; cperl-nonoverridable-face font-lock-type-face)
5126;;; ps-underlined-faces)) 6358;;; ps-underlined-faces))
5127;;; (cons 'font-lock-type-face ps-underlined-faces)) 6359;;; (cons 'font-lock-type-face ps-underlined-faces))
5128 6360
@@ -5132,79 +6364,211 @@ Style of printout regulated by the variable `cperl-ps-print-face-properties'."
5132(defconst cperl-styles-entries 6364(defconst cperl-styles-entries
5133 '(cperl-indent-level cperl-brace-offset cperl-continued-brace-offset 6365 '(cperl-indent-level cperl-brace-offset cperl-continued-brace-offset
5134 cperl-label-offset cperl-extra-newline-before-brace 6366 cperl-label-offset cperl-extra-newline-before-brace
6367 cperl-extra-newline-before-brace-multiline
5135 cperl-merge-trailing-else 6368 cperl-merge-trailing-else
5136 cperl-continued-statement-offset)) 6369 cperl-continued-statement-offset))
5137 6370
6371(defconst cperl-style-examples
6372"##### Numbers etc are: cperl-indent-level cperl-brace-offset
6373##### cperl-continued-brace-offset cperl-label-offset
6374##### cperl-continued-statement-offset
6375##### cperl-merge-trailing-else cperl-extra-newline-before-brace
6376
6377########### (Do not forget cperl-extra-newline-before-brace-multiline)
6378
6379### CPerl (=GNU - extra-newline-before-brace + merge-trailing-else) 2/0/0/-2/2/t/nil
6380if (foo) {
6381 bar
6382 baz;
6383 label:
6384 {
6385 boon;
6386 }
6387} else {
6388 stop;
6389}
6390
6391### PerlStyle (=CPerl with 4 as indent) 4/0/0/-4/4/t/nil
6392if (foo) {
6393 bar
6394 baz;
6395 label:
6396 {
6397 boon;
6398 }
6399} else {
6400 stop;
6401}
6402
6403### GNU 2/0/0/-2/2/nil/t
6404if (foo)
6405 {
6406 bar
6407 baz;
6408 label:
6409 {
6410 boon;
6411 }
6412 }
6413else
6414 {
6415 stop;
6416 }
6417
6418### C++ (=PerlStyle with braces aligned with control words) 4/0/-4/-4/4/nil/t
6419if (foo)
6420{
6421 bar
6422 baz;
6423 label:
6424 {
6425 boon;
6426 }
6427}
6428else
6429{
6430 stop;
6431}
6432
6433### BSD (=C++, but will not change preexisting merge-trailing-else
6434### and extra-newline-before-brace ) 4/0/-4/-4/4
6435if (foo)
6436{
6437 bar
6438 baz;
6439 label:
6440 {
6441 boon;
6442 }
6443}
6444else
6445{
6446 stop;
6447}
6448
6449### K&R (=C++ with indent 5 - merge-trailing-else, but will not
6450### change preexisting extra-newline-before-brace) 5/0/-5/-5/5/nil
6451if (foo)
6452{
6453 bar
6454 baz;
6455 label:
6456 {
6457 boon;
6458 }
6459}
6460else
6461{
6462 stop;
6463}
6464
6465### Whitesmith (=PerlStyle, but will not change preexisting
6466### extra-newline-before-brace and merge-trailing-else) 4/0/0/-4/4
6467if (foo)
6468 {
6469 bar
6470 baz;
6471 label:
6472 {
6473 boon;
6474 }
6475 }
6476else
6477 {
6478 stop;
6479 }
6480"
6481"Examples of if/else with different indent styles (with v4.23).")
6482
5138(defconst cperl-style-alist 6483(defconst cperl-style-alist
5139 '(("CPerl" ; =GNU without extra-newline-before-brace 6484 '(("CPerl" ;; =GNU - extra-newline-before-brace + cperl-merge-trailing-else
5140 (cperl-indent-level . 2) 6485 (cperl-indent-level . 2)
5141 (cperl-brace-offset . 0) 6486 (cperl-brace-offset . 0)
5142 (cperl-continued-brace-offset . 0) 6487 (cperl-continued-brace-offset . 0)
5143 (cperl-label-offset . -2) 6488 (cperl-label-offset . -2)
6489 (cperl-continued-statement-offset . 2)
5144 (cperl-extra-newline-before-brace . nil) 6490 (cperl-extra-newline-before-brace . nil)
5145 (cperl-merge-trailing-else . t) 6491 (cperl-extra-newline-before-brace-multiline . nil)
5146 (cperl-continued-statement-offset . 2)) 6492 (cperl-merge-trailing-else . t))
6493
5147 ("PerlStyle" ; CPerl with 4 as indent 6494 ("PerlStyle" ; CPerl with 4 as indent
5148 (cperl-indent-level . 4) 6495 (cperl-indent-level . 4)
5149 (cperl-brace-offset . 0) 6496 (cperl-brace-offset . 0)
5150 (cperl-continued-brace-offset . 0) 6497 (cperl-continued-brace-offset . 0)
5151 (cperl-label-offset . -4) 6498 (cperl-label-offset . -4)
6499 (cperl-continued-statement-offset . 4)
5152 (cperl-extra-newline-before-brace . nil) 6500 (cperl-extra-newline-before-brace . nil)
5153 (cperl-merge-trailing-else . t) 6501 (cperl-extra-newline-before-brace-multiline . nil)
5154 (cperl-continued-statement-offset . 4)) 6502 (cperl-merge-trailing-else . t))
6503
5155 ("GNU" 6504 ("GNU"
5156 (cperl-indent-level . 2) 6505 (cperl-indent-level . 2)
5157 (cperl-brace-offset . 0) 6506 (cperl-brace-offset . 0)
5158 (cperl-continued-brace-offset . 0) 6507 (cperl-continued-brace-offset . 0)
5159 (cperl-label-offset . -2) 6508 (cperl-label-offset . -2)
6509 (cperl-continued-statement-offset . 2)
5160 (cperl-extra-newline-before-brace . t) 6510 (cperl-extra-newline-before-brace . t)
5161 (cperl-merge-trailing-else . nil) 6511 (cperl-extra-newline-before-brace-multiline . t)
5162 (cperl-continued-statement-offset . 2)) 6512 (cperl-merge-trailing-else . nil))
6513
5163 ("K&R" 6514 ("K&R"
5164 (cperl-indent-level . 5) 6515 (cperl-indent-level . 5)
5165 (cperl-brace-offset . 0) 6516 (cperl-brace-offset . 0)
5166 (cperl-continued-brace-offset . -5) 6517 (cperl-continued-brace-offset . -5)
5167 (cperl-label-offset . -5) 6518 (cperl-label-offset . -5)
6519 (cperl-continued-statement-offset . 5)
5168 ;;(cperl-extra-newline-before-brace . nil) ; ??? 6520 ;;(cperl-extra-newline-before-brace . nil) ; ???
5169 (cperl-merge-trailing-else . nil) 6521 ;;(cperl-extra-newline-before-brace-multiline . nil)
5170 (cperl-continued-statement-offset . 5)) 6522 (cperl-merge-trailing-else . nil))
6523
5171 ("BSD" 6524 ("BSD"
5172 (cperl-indent-level . 4) 6525 (cperl-indent-level . 4)
5173 (cperl-brace-offset . 0) 6526 (cperl-brace-offset . 0)
5174 (cperl-continued-brace-offset . -4) 6527 (cperl-continued-brace-offset . -4)
5175 (cperl-label-offset . -4) 6528 (cperl-label-offset . -4)
6529 (cperl-continued-statement-offset . 4)
5176 ;;(cperl-extra-newline-before-brace . nil) ; ??? 6530 ;;(cperl-extra-newline-before-brace . nil) ; ???
5177 (cperl-continued-statement-offset . 4)) 6531 ;;(cperl-extra-newline-before-brace-multiline . nil)
6532 ;;(cperl-merge-trailing-else . nil) ; ???
6533 )
6534
5178 ("C++" 6535 ("C++"
5179 (cperl-indent-level . 4) 6536 (cperl-indent-level . 4)
5180 (cperl-brace-offset . 0) 6537 (cperl-brace-offset . 0)
5181 (cperl-continued-brace-offset . -4) 6538 (cperl-continued-brace-offset . -4)
5182 (cperl-label-offset . -4) 6539 (cperl-label-offset . -4)
5183 (cperl-continued-statement-offset . 4) 6540 (cperl-continued-statement-offset . 4)
5184 (cperl-merge-trailing-else . nil) 6541 (cperl-extra-newline-before-brace . t)
5185 (cperl-extra-newline-before-brace . t)) 6542 (cperl-extra-newline-before-brace-multiline . t)
5186 ("Current") 6543 (cperl-merge-trailing-else . nil))
6544
5187 ("Whitesmith" 6545 ("Whitesmith"
5188 (cperl-indent-level . 4) 6546 (cperl-indent-level . 4)
5189 (cperl-brace-offset . 0) 6547 (cperl-brace-offset . 0)
5190 (cperl-continued-brace-offset . 0) 6548 (cperl-continued-brace-offset . 0)
5191 (cperl-label-offset . -4) 6549 (cperl-label-offset . -4)
6550 (cperl-continued-statement-offset . 4)
5192 ;;(cperl-extra-newline-before-brace . nil) ; ??? 6551 ;;(cperl-extra-newline-before-brace . nil) ; ???
5193 (cperl-continued-statement-offset . 4))) 6552 ;;(cperl-extra-newline-before-brace-multiline . nil)
5194 "(Experimental) list of variables to set to get a particular indentation style. 6553 ;;(cperl-merge-trailing-else . nil) ; ???
5195Should be used via `cperl-set-style' or via Perl menu.") 6554 )
6555 ("Current"))
6556 "List of variables to set to get a particular indentation style.
6557Should be used via `cperl-set-style' or via Perl menu.
6558
6559See examples in `cperl-style-examples'.")
5196 6560
5197(defun cperl-set-style (style) 6561(defun cperl-set-style (style)
5198 "Set CPerl mode variables to use one of several different indentation styles. 6562 "Set CPerl mode variables to use one of several different indentation styles.
5199The arguments are a string representing the desired style. 6563The arguments are a string representing the desired style.
5200The list of styles is in `cperl-style-alist', available styles 6564The list of styles is in `cperl-style-alist', available styles
5201are GNU, K&R, BSD, C++ and Whitesmith. 6565are CPerl, PerlStyle, GNU, K&R, BSD, C++ and Whitesmith.
5202 6566
5203The current value of style is memorized (unless there is a memorized 6567The current value of style is memorized (unless there is a memorized
5204data already), may be restored by `cperl-set-style-back'. 6568data already), may be restored by `cperl-set-style-back'.
5205 6569
5206Chosing \"Current\" style will not change style, so this may be used for 6570Chosing \"Current\" style will not change style, so this may be used for
5207side-effect of memorizing only." 6571side-effect of memorizing only. Examples in `cperl-style-examples'."
5208 (interactive 6572 (interactive
5209 (let ((list (mapcar (function (lambda (elt) (list (car elt)))) 6573 (let ((list (mapcar (function (lambda (elt) (list (car elt))))
5210 cperl-style-alist))) 6574 cperl-style-alist)))
@@ -5375,6 +6739,8 @@ Customized by setting variables `cperl-shrink-wrap-info-frame',
5375 (match-beginning 1) (match-end 1))) 6739 (match-beginning 1) (match-end 1)))
5376 6740
5377(defun cperl-imenu-on-info () 6741(defun cperl-imenu-on-info ()
6742 "Shows imenu for Perl Info Buffer.
6743Opens Perl Info buffer if needed."
5378 (interactive) 6744 (interactive)
5379 (let* ((buffer (current-buffer)) 6745 (let* ((buffer (current-buffer))
5380 imenu-create-index-function 6746 imenu-create-index-function
@@ -5414,7 +6780,7 @@ If STEP is nil, `cperl-lineup-step' will be used
5414\(or `cperl-indent-level', if `cperl-lineup-step' is nil). 6780\(or `cperl-indent-level', if `cperl-lineup-step' is nil).
5415Will not move the position at the start to the left." 6781Will not move the position at the start to the left."
5416 (interactive "r") 6782 (interactive "r")
5417 (let (search col tcol seen b e) 6783 (let (search col tcol seen b)
5418 (save-excursion 6784 (save-excursion
5419 (goto-char end) 6785 (goto-char end)
5420 (end-of-line) 6786 (end-of-line)
@@ -5452,22 +6818,25 @@ Will not move the position at the start to the left."
5452 (if (/= (% col step) 0) (setq step (* step (1+ (/ col step))))) 6818 (if (/= (% col step) 0) (setq step (* step (1+ (/ col step)))))
5453 (while 6819 (while
5454 (progn 6820 (progn
5455 (setq e (point)) 6821 (cperl-make-indent col)
5456 (skip-chars-backward " \t")
5457 (delete-region (point) e)
5458 (indent-to-column col) ;(make-string (- col (current-column)) ?\s))
5459 (beginning-of-line 2) 6822 (beginning-of-line 2)
5460 (and (< (point) end) 6823 (and (< (point) end)
5461 (re-search-forward search end t) 6824 (re-search-forward search end t)
5462 (goto-char (match-beginning 0)))))))) ; No body 6825 (goto-char (match-beginning 0)))))))) ; No body
5463 6826
5464(defun cperl-etags (&optional add all files) 6827(defun cperl-etags (&optional add all files) ;; NOT USED???
5465 "Run etags with appropriate options for Perl files. 6828 "Run etags with appropriate options for Perl files.
5466If optional argument ALL is `recursive', will process Perl files 6829If optional argument ALL is `recursive', will process Perl files
5467in subdirectories too." 6830in subdirectories too."
5468 (interactive) 6831 (interactive)
5469 (let ((cmd "etags") 6832 (let ((cmd "etags")
5470 (args '("-l" "none" "-r" "/\\<\\(package\\|sub\\)[ \\t]+\\(\\([a-zA-Z0-9:_]*::\\)?\\([a-zA-Z0-9_]+\\)[ \\t]*\\(([^()]*)[ \t]*\\)?\\([{#]\\|$\\)\\)/\\4/")) 6833 (args '("-l" "none" "-r"
6834 ;; 1=fullname 2=package? 3=name 4=proto? 5=attrs? (VERY APPROX!)
6835 "/\\<sub[ \\t]+\\(\\([a-zA-Z0-9:_]*::\\)?\\([a-zA-Z0-9_]+\\)\\)[ \\t]*\\(([^()]*)[ \t]*\\)?\\([ \t]*:[^#{;]*\\)?\\([{#]\\|$\\)/\\3/"
6836 "-r"
6837 "/\\<package[ \\t]+\\(\\([a-zA-Z0-9:_]*::\\)?\\([a-zA-Z0-9_]+\\)\\)[ \\t]*\\([#;]\\|$\\)/\\1/"
6838 "-r"
6839 "/\\<\\(package\\)[ \\t]*;/\\1;/"))
5471 res) 6840 res)
5472 (if add (setq args (cons "-a" args))) 6841 (if add (setq args (cons "-a" args)))
5473 (or files (setq files (list buffer-file-name))) 6842 (or files (setq files (list buffer-file-name)))
@@ -5539,6 +6908,29 @@ Delay of auto-help controlled by `cperl-lazy-help-time'."
5539 (message "indent-region/indent-sexp will %sbe automatically fix whitespace." 6908 (message "indent-region/indent-sexp will %sbe automatically fix whitespace."
5540 (if cperl-indent-region-fix-constructs "" "not "))) 6909 (if cperl-indent-region-fix-constructs "" "not ")))
5541 6910
6911(defun cperl-toggle-set-debug-unwind (arg &optional backtrace)
6912 "Toggle (or, with numeric argument, set) debugging state of syntaxification.
6913Nonpositive numeric argument disables debugging messages. The message
6914summarizes which regions it was decided to rescan for syntactic constructs.
6915
6916The message looks like this:
6917
6918 Syxify req=123..138 actual=101..146 done-to: 112=>146 statepos: 73=>117
6919
6920Numbers are character positions in the buffer. REQ provides the range to
6921rescan requested by `font-lock'. ACTUAL is the range actually resyntaxified;
6922for correct operation it should start and end outside any special syntactic
6923construct. DONE-TO and STATEPOS indicate changes to internal caches maintained
6924by CPerl."
6925 (interactive "P")
6926 (or arg
6927 (setq arg (if (eq cperl-syntaxify-by-font-lock
6928 (if backtrace 'backtrace 'message)) 0 1)))
6929 (setq arg (if (> arg 0) (if backtrace 'backtrace 'message) t))
6930 (setq cperl-syntaxify-by-font-lock arg)
6931 (message "Debugging messages of syntax unwind %sabled."
6932 (if (eq arg t) "dis" "en")))
6933
5542;;;; Tags file creation. 6934;;;; Tags file creation.
5543 6935
5544(defvar cperl-tmp-buffer " *cperl-tmp*") 6936(defvar cperl-tmp-buffer " *cperl-tmp*")
@@ -5679,13 +7071,22 @@ Delay of auto-help controlled by `cperl-lazy-help-time'."
5679 ret)))) 7071 ret))))
5680 7072
5681(defun cperl-add-tags-recurse-noxs () 7073(defun cperl-add-tags-recurse-noxs ()
5682 "Add to TAGS data for Perl and XSUB files in the current directory and kids. 7074 "Add to TAGS data for \"pure\" Perl files in the current directory and kids.
5683Use as 7075Use as
5684 emacs -batch -q -no-site-file -l emacs/cperl-mode.el \ 7076 emacs -batch -q -no-site-file -l emacs/cperl-mode.el \
5685 -f cperl-add-tags-recurse 7077 -f cperl-add-tags-recurse-noxs
5686" 7078"
5687 (cperl-write-tags nil nil t t nil t)) 7079 (cperl-write-tags nil nil t t nil t))
5688 7080
7081(defun cperl-add-tags-recurse-noxs-fullpath ()
7082 "Add to TAGS data for \"pure\" Perl in the current directory and kids.
7083Writes down fullpath, so TAGS is relocatable (but if the build directory
7084is relocated, the file TAGS inside it breaks). Use as
7085 emacs -batch -q -no-site-file -l emacs/cperl-mode.el \
7086 -f cperl-add-tags-recurse-noxs-fullpath
7087"
7088 (cperl-write-tags nil nil t t nil t ""))
7089
5689(defun cperl-add-tags-recurse () 7090(defun cperl-add-tags-recurse ()
5690 "Add to TAGS file data for Perl files in the current directory and kids. 7091 "Add to TAGS file data for Perl files in the current directory and kids.
5691Use as 7092Use as
@@ -5855,9 +7256,9 @@ One may build such TAGS files from CPerl mode menu."
5855 (cperl-tags-hier-fill)) 7256 (cperl-tags-hier-fill))
5856 (or tags-table-list 7257 (or tags-table-list
5857 (call-interactively 'visit-tags-table)) 7258 (call-interactively 'visit-tags-table))
5858 (mapcar 7259 (mapcar
5859 (function 7260 (function
5860 (lambda (tagsfile) 7261 (lambda (tagsfile)
5861 (message "Updating list of classes... %s" tagsfile) 7262 (message "Updating list of classes... %s" tagsfile)
5862 (set-buffer (get-file-buffer tagsfile)) 7263 (set-buffer (get-file-buffer tagsfile))
5863 (cperl-tags-hier-fill))) 7264 (cperl-tags-hier-fill)))
@@ -6019,7 +7420,7 @@ One may build such TAGS files from CPerl mode menu."
6019 '("[^-\t <>=+]\\(--\\|\\+\\+\\)" ; var-- var++ 7420 '("[^-\t <>=+]\\(--\\|\\+\\+\\)" ; var-- var++
6020 "[a-zA-Z0-9_][|&][a-zA-Z0-9_$]" ; abc|def abc&def are often used. 7421 "[a-zA-Z0-9_][|&][a-zA-Z0-9_$]" ; abc|def abc&def are often used.
6021 "&[(a-zA-Z0-9_$]" ; &subroutine &(var->field) 7422 "&[(a-zA-Z0-9_$]" ; &subroutine &(var->field)
6022 "<\\$?\\sw+\\(\\.\\sw+\\)?>" ; <IN> <stdin.h> 7423 "<\\$?\\sw+\\(\\.\\(\\sw\\|_\\)+\\)?>" ; <IN> <stdin.h>
6023 "-[a-zA-Z][ \t]+[_$\"'`a-zA-Z]" ; -f file, -t STDIN 7424 "-[a-zA-Z][ \t]+[_$\"'`a-zA-Z]" ; -f file, -t STDIN
6024 "-[0-9]" ; -5 7425 "-[0-9]" ; -5
6025 "\\+\\+" ; ++var 7426 "\\+\\+" ; ++var
@@ -6051,8 +7452,7 @@ Currently it is tuned to C and Perl syntax."
6051 (interactive) 7452 (interactive)
6052 (let (found-bad (p (point))) 7453 (let (found-bad (p (point)))
6053 (setq last-nonmenu-event 13) ; To disable popup 7454 (setq last-nonmenu-event 13) ; To disable popup
6054 (with-no-warnings ; It is useful to push the mark here. 7455 (goto-char (point-min))
6055 (beginning-of-buffer))
6056 (map-y-or-n-p "Insert space here? " 7456 (map-y-or-n-p "Insert space here? "
6057 (lambda (arg) (insert " ")) 7457 (lambda (arg) (insert " "))
6058 'cperl-next-bad-style 7458 'cperl-next-bad-style
@@ -6448,7 +7848,7 @@ endservent
6448eof[([FILEHANDLE])] 7848eof[([FILEHANDLE])]
6449... eq ... String equality. 7849... eq ... String equality.
6450eval(EXPR) or eval { BLOCK } 7850eval(EXPR) or eval { BLOCK }
6451exec(LIST) 7851exec([TRUENAME] ARGV0, ARGVs) or exec(SHELL_COMMAND_LINE)
6452exit(EXPR) 7852exit(EXPR)
6453exp(EXPR) 7853exp(EXPR)
6454fcntl(FILEHANDLE,FUNCTION,SCALAR) 7854fcntl(FILEHANDLE,FUNCTION,SCALAR)
@@ -6584,7 +7984,7 @@ substr(EXPR,OFFSET[,LEN])
6584symlink(OLDFILE,NEWFILE) 7984symlink(OLDFILE,NEWFILE)
6585syscall(LIST) 7985syscall(LIST)
6586sysread(FILEHANDLE,SCALAR,LENGTH[,OFFSET]) 7986sysread(FILEHANDLE,SCALAR,LENGTH[,OFFSET])
6587system(LIST) 7987system([TRUENAME] ARGV0 [,ARGV]) or system(SHELL_COMMAND_LINE)
6588syswrite(FILEHANDLE,SCALAR,LENGTH[,OFFSET]) 7988syswrite(FILEHANDLE,SCALAR,LENGTH[,OFFSET])
6589tell[(FILEHANDLE)] 7989tell[(FILEHANDLE)]
6590telldir(DIRHANDLE) 7990telldir(DIRHANDLE)
@@ -6685,7 +8085,7 @@ prototype \\&SUB Returns prototype of the function given a reference.
6685 ;; b is before the starting delimiter, e before the ending 8085 ;; b is before the starting delimiter, e before the ending
6686 ;; e should be a marker, may be changed, but remains "correct". 8086 ;; e should be a marker, may be changed, but remains "correct".
6687 ;; EMBED is nil iff we process the whole REx. 8087 ;; EMBED is nil iff we process the whole REx.
6688 ;; The REx is guarantied to have //x 8088 ;; The REx is guaranteed to have //x
6689 ;; LEVEL shows how many levels deep to go 8089 ;; LEVEL shows how many levels deep to go
6690 ;; position at enter and at leave is not defined 8090 ;; position at enter and at leave is not defined
6691 (let (s c tmp (m (make-marker)) (m1 (make-marker)) c1 spaces inline code pos) 8091 (let (s c tmp (m (make-marker)) (m1 (make-marker)) c1 spaces inline code pos)
@@ -6714,7 +8114,7 @@ prototype \\&SUB Returns prototype of the function given a reference.
6714 (goto-char e) 8114 (goto-char e)
6715 (delete-horizontal-space) 8115 (delete-horizontal-space)
6716 (insert "\n") 8116 (insert "\n")
6717 (indent-to-column c) 8117 (cperl-make-indent c)
6718 (set-marker e (point)))) 8118 (set-marker e (point))))
6719 (goto-char b) 8119 (goto-char b)
6720 (end-of-line 2) 8120 (end-of-line 2)
@@ -6724,7 +8124,7 @@ prototype \\&SUB Returns prototype of the function given a reference.
6724 inline t) 8124 inline t)
6725 (skip-chars-forward " \t") 8125 (skip-chars-forward " \t")
6726 (delete-region s (point)) 8126 (delete-region s (point))
6727 (indent-to-column c1) 8127 (cperl-make-indent c1)
6728 (while (and 8128 (while (and
6729 inline 8129 inline
6730 (looking-at 8130 (looking-at
@@ -6750,6 +8150,16 @@ prototype \\&SUB Returns prototype of the function given a reference.
6750 (eq (preceding-char) ?\{))) 8150 (eq (preceding-char) ?\{)))
6751 (forward-char -1) 8151 (forward-char -1)
6752 (forward-sexp 1)) 8152 (forward-sexp 1))
8153 ((and ; [], already syntaxified
8154 (match-beginning 6)
8155 cperl-regexp-scan
8156 cperl-use-syntax-table-text-property)
8157 (forward-char -1)
8158 (forward-sexp 1)
8159 (or (eq (preceding-char) ?\])
8160 (error "[]-group not terminated"))
8161 (re-search-forward
8162 "\\=\\([*+?]\\|{[0-9]+\\(,[0-9]*\\)?}\\)\\??" e t))
6753 ((match-beginning 6) ; [] 8163 ((match-beginning 6) ; []
6754 (setq tmp (point)) 8164 (setq tmp (point))
6755 (if (looking-at "\\^?\\]") 8165 (if (looking-at "\\^?\\]")
@@ -6763,12 +8173,8 @@ prototype \\&SUB Returns prototype of the function given a reference.
6763 (setq pos t))) 8173 (setq pos t)))
6764 (or (eq (preceding-char) ?\]) 8174 (or (eq (preceding-char) ?\])
6765 (error "[]-group not terminated")) 8175 (error "[]-group not terminated"))
6766 (if (eq (following-char) ?\{) 8176 (re-search-forward
6767 (progn 8177 "\\=\\([*+?]\\|{[0-9]+\\(,[0-9]*\\)?}\\)\\??" e t))
6768 (forward-sexp 1)
6769 (and (eq (following-char) ??)
6770 (forward-char 1)))
6771 (re-search-forward "\\=\\([*+?]\\??\\)" e t)))
6772 ((match-beginning 7) ; () 8178 ((match-beginning 7) ; ()
6773 (goto-char (match-beginning 0)) 8179 (goto-char (match-beginning 0))
6774 (setq pos (current-column)) 8180 (setq pos (current-column))
@@ -6776,7 +8182,7 @@ prototype \\&SUB Returns prototype of the function given a reference.
6776 (progn 8182 (progn
6777 (delete-horizontal-space) 8183 (delete-horizontal-space)
6778 (insert "\n") 8184 (insert "\n")
6779 (indent-to-column c1))) 8185 (cperl-make-indent c1)))
6780 (setq tmp (point)) 8186 (setq tmp (point))
6781 (forward-sexp 1) 8187 (forward-sexp 1)
6782 ;; (or (forward-sexp 1) 8188 ;; (or (forward-sexp 1)
@@ -6836,7 +8242,7 @@ prototype \\&SUB Returns prototype of the function given a reference.
6836 (insert "\n")) 8242 (insert "\n"))
6837 ;; first at line 8243 ;; first at line
6838 (delete-region (point) tmp)) 8244 (delete-region (point) tmp))
6839 (indent-to-column c) 8245 (cperl-make-indent c)
6840 (forward-char 1) 8246 (forward-char 1)
6841 (skip-chars-forward " \t") 8247 (skip-chars-forward " \t")
6842 (setq spaces nil) 8248 (setq spaces nil)
@@ -6859,10 +8265,7 @@ prototype \\&SUB Returns prototype of the function given a reference.
6859 (/= (current-indentation) c)) 8265 (/= (current-indentation) c))
6860 (progn 8266 (progn
6861 (beginning-of-line) 8267 (beginning-of-line)
6862 (setq s (point)) 8268 (cperl-make-indent c)))))
6863 (skip-chars-forward " \t")
6864 (delete-region s (point))
6865 (indent-to-column c)))))
6866 8269
6867(defun cperl-make-regexp-x () 8270(defun cperl-make-regexp-x ()
6868 ;; Returns position of the start 8271 ;; Returns position of the start
@@ -6931,7 +8334,7 @@ We suppose that the regexp is scanned already."
6931 (interactive) 8334 (interactive)
6932 ;; (save-excursion ; Can't, breaks `cperl-contract-levels' 8335 ;; (save-excursion ; Can't, breaks `cperl-contract-levels'
6933 (cperl-regext-to-level-start) 8336 (cperl-regext-to-level-start)
6934 (let ((b (point)) (e (make-marker)) s c) 8337 (let ((b (point)) (e (make-marker)) c)
6935 (forward-sexp 1) 8338 (forward-sexp 1)
6936 (set-marker e (1- (point))) 8339 (set-marker e (1- (point)))
6937 (goto-char b) 8340 (goto-char b)
@@ -6940,10 +8343,7 @@ We suppose that the regexp is scanned already."
6940 ((match-beginning 1) ; #-comment 8343 ((match-beginning 1) ; #-comment
6941 (or c (setq c (current-indentation))) 8344 (or c (setq c (current-indentation)))
6942 (beginning-of-line 2) ; Skip 8345 (beginning-of-line 2) ; Skip
6943 (setq s (point)) 8346 (cperl-make-indent c))
6944 (skip-chars-forward " \t")
6945 (delete-region s (point))
6946 (indent-to-column c))
6947 (t 8347 (t
6948 (delete-char -1) 8348 (delete-char -1)
6949 (just-one-space)))))) 8349 (just-one-space))))))
@@ -6982,96 +8382,197 @@ We suppose that the regexp is scanned already."
6982 (set-marker e (1- (point))) 8382 (set-marker e (1- (point)))
6983 (cperl-beautify-regexp-piece b e nil deep)))) 8383 (cperl-beautify-regexp-piece b e nil deep))))
6984 8384
8385(defun cperl-invert-if-unless-modifiers ()
8386 "Change `B if A;' into `if (A) {B}' etc if possible.
8387\(Unfinished.)"
8388 (interactive) ;
8389 (let (A B pre-B post-B pre-if post-if pre-A post-A if-string
8390 (w-rex "\\<\\(if\\|unless\\|while\\|until\\|for\\|foreach\\)\\>"))
8391 (and (= (char-syntax (preceding-char)) ?w)
8392 (forward-sexp -1))
8393 (setq pre-if (point))
8394 (cperl-backward-to-start-of-expr)
8395 (setq pre-B (point))
8396 (forward-sexp 1) ; otherwise forward-to-end-of-expr is NOP
8397 (cperl-forward-to-end-of-expr)
8398 (setq post-A (point))
8399 (goto-char pre-if)
8400 (or (looking-at w-rex)
8401 ;; Find the position
8402 (progn (goto-char post-A)
8403 (while (and
8404 (not (looking-at w-rex))
8405 (> (point) pre-B))
8406 (forward-sexp -1))
8407 (setq pre-if (point))))
8408 (or (looking-at w-rex)
8409 (error "Can't find `if', `unless', `while', `until', `for' or `foreach'"))
8410 ;; 1 B 2 ... 3 B-com ... 4 if 5 ... if-com 6 ... 7 A 8
8411 (setq if-string (buffer-substring (match-beginning 0) (match-end 0)))
8412 ;; First, simple part: find code boundaries
8413 (forward-sexp 1)
8414 (setq post-if (point))
8415 (forward-sexp -2)
8416 (forward-sexp 1)
8417 (setq post-B (point))
8418 (cperl-backward-to-start-of-expr)
8419 (setq pre-B (point))
8420 (setq B (buffer-substring pre-B post-B))
8421 (goto-char pre-if)
8422 (forward-sexp 2)
8423 (forward-sexp -1)
8424 ;; May be after $, @, $# etc of a variable
8425 (skip-chars-backward "$@%#")
8426 (setq pre-A (point))
8427 (cperl-forward-to-end-of-expr)
8428 (setq post-A (point))
8429 (setq A (buffer-substring pre-A post-A))
8430 ;; Now modify (from end, to not break the stuff)
8431 (skip-chars-forward " \t;")
8432 (delete-region pre-A (point)) ; we move to pre-A
8433 (insert "\n" B ";\n}")
8434 (and (looking-at "[ \t]*#") (cperl-indent-for-comment))
8435 (delete-region pre-if post-if)
8436 (delete-region pre-B post-B)
8437 (goto-char pre-B)
8438 (insert if-string " (" A ") {")
8439 (setq post-B (point))
8440 (if (looking-at "[ \t]+$")
8441 (delete-horizontal-space)
8442 (if (looking-at "[ \t]*#")
8443 (cperl-indent-for-comment)
8444 (just-one-space)))
8445 (forward-line 1)
8446 (if (looking-at "[ \t]*$")
8447 (progn ; delete line
8448 (delete-horizontal-space)
8449 (delete-region (point) (1+ (point)))))
8450 (cperl-indent-line)
8451 (goto-char (1- post-B))
8452 (forward-sexp 1)
8453 (cperl-indent-line)
8454 (goto-char pre-B)))
8455
6985(defun cperl-invert-if-unless () 8456(defun cperl-invert-if-unless ()
6986 "Change `if (A) {B}' into `B if A;' etc if possible." 8457 "Change `if (A) {B}' into `B if A;' etc (or visa versa) if possible.
8458If the cursor is not on the leading keyword of the BLOCK flavor of
8459construct, will assume it is the STATEMENT flavor, so will try to find
8460the appropriate statement modifier."
6987 (interactive) 8461 (interactive)
6988 (or (looking-at "\\<") 8462 (and (= (char-syntax (preceding-char)) ?w)
6989 (forward-sexp -1)) 8463 (forward-sexp -1))
6990 (if (looking-at "\\<\\(if\\|unless\\|while\\|until\\|for\\|foreach\\)\\>") 8464 (if (looking-at "\\<\\(if\\|unless\\|while\\|until\\|for\\|foreach\\)\\>")
6991 (let ((pos1 (point)) 8465 (let ((pre-if (point))
6992 pos2 pos3 pos4 pos5 s1 s2 state p pos45 8466 pre-A post-A pre-B post-B A B state p end-B-code is-block B-comment
6993 (s0 (buffer-substring (match-beginning 0) (match-end 0)))) 8467 (if-string (buffer-substring (match-beginning 0) (match-end 0))))
6994 (forward-sexp 2) 8468 (forward-sexp 2)
6995 (setq pos3 (point)) 8469 (setq post-A (point))
6996 (forward-sexp -1) 8470 (forward-sexp -1)
6997 (setq pos2 (point)) 8471 (setq pre-A (point))
6998 (if (eq (following-char) ?\( ) 8472 (setq is-block (and (eq (following-char) ?\( )
8473 (save-excursion
8474 (condition-case nil
8475 (progn
8476 (forward-sexp 2)
8477 (forward-sexp -1)
8478 (eq (following-char) ?\{ ))
8479 (error nil)))))
8480 (if is-block
6999 (progn 8481 (progn
7000 (goto-char pos3) 8482 (goto-char post-A)
7001 (forward-sexp 1) 8483 (forward-sexp 1)
7002 (setq pos5 (point)) 8484 (setq post-B (point))
7003 (forward-sexp -1) 8485 (forward-sexp -1)
7004 (setq pos4 (point)) 8486 (setq pre-B (point))
7005 ;; XXXX In fact may be `A if (B); {C}' ...
7006 (if (and (eq (following-char) ?\{ ) 8487 (if (and (eq (following-char) ?\{ )
7007 (progn 8488 (progn
7008 (cperl-backward-to-noncomment pos3) 8489 (cperl-backward-to-noncomment post-A)
7009 (eq (preceding-char) ?\) ))) 8490 (eq (preceding-char) ?\) )))
7010 (if (condition-case nil 8491 (if (condition-case nil
7011 (progn 8492 (progn
7012 (goto-char pos5) 8493 (goto-char post-B)
7013 (forward-sexp 1) 8494 (forward-sexp 1)
7014 (forward-sexp -1) 8495 (forward-sexp -1)
7015 (looking-at "\\<els\\(e\\|if\\)\\>")) 8496 (looking-at "\\<els\\(e\\|if\\)\\>"))
7016 (error nil)) 8497 (error nil))
7017 (error 8498 (error
7018 "`%s' (EXPR) {BLOCK} with `else'/`elsif'" s0) 8499 "`%s' (EXPR) {BLOCK} with `else'/`elsif'" if-string)
7019 (goto-char (1- pos5)) 8500 (goto-char (1- post-B))
7020 (cperl-backward-to-noncomment pos4) 8501 (cperl-backward-to-noncomment pre-B)
7021 (if (eq (preceding-char) ?\;) 8502 (if (eq (preceding-char) ?\;)
7022 (forward-char -1)) 8503 (forward-char -1))
7023 (setq pos45 (point)) 8504 (setq end-B-code (point))
7024 (goto-char pos4) 8505 (goto-char pre-B)
7025 (while (re-search-forward "\\<\\(for\\|foreach\\|if\\|unless\\|while\\|until\\)\\>\\|;" pos45 t) 8506 (while (re-search-forward "\\<\\(for\\|foreach\\|if\\|unless\\|while\\|until\\)\\>\\|;" end-B-code t)
7026 (setq p (match-beginning 0) 8507 (setq p (match-beginning 0)
7027 s1 (buffer-substring p (match-end 0)) 8508 A (buffer-substring p (match-end 0))
7028 state (parse-partial-sexp pos4 p)) 8509 state (parse-partial-sexp pre-B p))
7029 (or (nth 3 state) 8510 (or (nth 3 state)
7030 (nth 4 state) 8511 (nth 4 state)
7031 (nth 5 state) 8512 (nth 5 state)
7032 (error "`%s' inside `%s' BLOCK" s1 s0)) 8513 (error "`%s' inside `%s' BLOCK" A if-string))
7033 (goto-char (match-end 0))) 8514 (goto-char (match-end 0)))
7034 ;; Finally got it 8515 ;; Finally got it
7035 (goto-char (1+ pos4)) 8516 (goto-char (1+ pre-B))
7036 (skip-chars-forward " \t\n") 8517 (skip-chars-forward " \t\n")
7037 (setq s2 (buffer-substring (point) pos45)) 8518 (setq B (buffer-substring (point) end-B-code))
7038 (goto-char pos45) 8519 (goto-char end-B-code)
7039 (or (looking-at ";?[ \t\n]*}") 8520 (or (looking-at ";?[ \t\n]*}")
7040 (progn 8521 (progn
7041 (skip-chars-forward "; \t\n") 8522 (skip-chars-forward "; \t\n")
7042 (setq s2 (concat s2 "\n" (buffer-substring (point) (1- pos5)))))) 8523 (setq B-comment
7043 (and (equal s2 "") 8524 (buffer-substring (point) (1- post-B)))))
7044 (setq s2 "1")) 8525 (and (equal B "")
7045 (goto-char (1- pos3)) 8526 (setq B "1"))
7046 (cperl-backward-to-noncomment pos2) 8527 (goto-char (1- post-A))
8528 (cperl-backward-to-noncomment pre-A)
7047 (or (looking-at "[ \t\n]*)") 8529 (or (looking-at "[ \t\n]*)")
7048 (goto-char (1- pos3))) 8530 (goto-char (1- post-A)))
7049 (setq p (point)) 8531 (setq p (point))
7050 (goto-char (1+ pos2)) 8532 (goto-char (1+ pre-A))
7051 (skip-chars-forward " \t\n") 8533 (skip-chars-forward " \t\n")
7052 (setq s1 (buffer-substring (point) p)) 8534 (setq A (buffer-substring (point) p))
7053 (delete-region pos4 pos5) 8535 (delete-region pre-B post-B)
7054 (delete-region pos2 pos3) 8536 (delete-region pre-A post-A)
7055 (goto-char pos1) 8537 (goto-char pre-if)
7056 (insert s2 " ") 8538 (insert B " ")
8539 (and B-comment (insert B-comment " "))
7057 (just-one-space) 8540 (just-one-space)
7058 (forward-word 1) 8541 (forward-word 1)
7059 (setq pos1 (point)) 8542 (setq pre-A (point))
7060 (insert " " s1 ";") 8543 (insert " " A ";")
7061 (delete-horizontal-space) 8544 (delete-horizontal-space)
8545 (setq post-B (point))
8546 (if (looking-at "#")
8547 (indent-for-comment))
8548 (goto-char post-B)
7062 (forward-char -1) 8549 (forward-char -1)
7063 (delete-horizontal-space) 8550 (delete-horizontal-space)
7064 (goto-char pos1) 8551 (goto-char pre-A)
7065 (just-one-space) 8552 (just-one-space)
7066 (cperl-indent-line)) 8553 (goto-char pre-if)
7067 (error "`%s' (EXPR) not with an {BLOCK}" s0))) 8554 (setq pre-A (set-marker (make-marker) pre-A))
7068 (error "`%s' not with an (EXPR)" s0))) 8555 (while (<= (point) (marker-position pre-A))
7069 (error "Not at `if', `unless', `while', `until', `for' or `foreach'"))) 8556 (cperl-indent-line)
8557 (forward-line 1))
8558 (goto-char (marker-position pre-A))
8559 (if B-comment
8560 (progn
8561 (forward-line -1)
8562 (indent-for-comment)
8563 (goto-char (marker-position pre-A)))))
8564 (error "`%s' (EXPR) not with an {BLOCK}" if-string)))
8565 ;; (error "`%s' not with an (EXPR)" if-string)
8566 (forward-sexp -1)
8567 (cperl-invert-if-unless-modifiers)))
8568 ;;(error "Not at `if', `unless', `while', `until', `for' or `foreach'")
8569 (cperl-invert-if-unless-modifiers)))
7070 8570
7071;;; By Anthony Foiani <afoiani@uswest.com> 8571;;; By Anthony Foiani <afoiani@uswest.com>
7072;;; Getting help on modules in C-h f ? 8572;;; Getting help on modules in C-h f ?
7073;;; This is a modified version of `man'. 8573;;; This is a modified version of `man'.
7074;;; Need to teach it how to lookup functions 8574;;; Need to teach it how to lookup functions
8575;;;###autoload
7075(defun cperl-perldoc (word) 8576(defun cperl-perldoc (word)
7076 "Run `perldoc' on WORD." 8577 "Run `perldoc' on WORD."
7077 (interactive 8578 (interactive
@@ -7103,6 +8604,7 @@ We suppose that the regexp is scanned already."
7103 (t 8604 (t
7104 (Man-getpage-in-background word))))) 8605 (Man-getpage-in-background word)))))
7105 8606
8607;;;###autoload
7106(defun cperl-perldoc-at-point () 8608(defun cperl-perldoc-at-point ()
7107 "Run a `perldoc' on the word around point." 8609 "Run a `perldoc' on the word around point."
7108 (interactive) 8610 (interactive)
@@ -7147,7 +8649,7 @@ We suppose that the regexp is scanned already."
7147(defun cperl-pod2man-build-command () 8649(defun cperl-pod2man-build-command ()
7148 "Builds the entire background manpage and cleaning command." 8650 "Builds the entire background manpage and cleaning command."
7149 (let ((command (concat pod2man-program " %s 2>/dev/null")) 8651 (let ((command (concat pod2man-program " %s 2>/dev/null"))
7150 (flist Man-filter-list)) 8652 (flist (and (boundp 'Man-filter-list) Man-filter-list)))
7151 (while (and flist (car flist)) 8653 (while (and flist (car flist))
7152 (let ((pcom (car (car flist))) 8654 (let ((pcom (car (car flist)))
7153 (pargs (cdr (car flist)))) 8655 (pargs (cdr (car flist))))
@@ -7161,6 +8663,205 @@ We suppose that the regexp is scanned already."
7161 (setq flist (cdr flist)))) 8663 (setq flist (cdr flist))))
7162 command)) 8664 command))
7163 8665
8666
8667(defun cperl-next-interpolated-REx-1 ()
8668 "Move point to next REx which has interpolated parts without //o.
8669Skips RExes consisting of one interpolated variable.
8670
8671Note that skipped RExen are not performance hits."
8672 (interactive "")
8673 (cperl-next-interpolated-REx 1))
8674
8675(defun cperl-next-interpolated-REx-0 ()
8676 "Move point to next REx which has interpolated parts without //o."
8677 (interactive "")
8678 (cperl-next-interpolated-REx 0))
8679
8680(defun cperl-next-interpolated-REx (&optional skip beg limit)
8681 "Move point to next REx which has interpolated parts.
8682SKIP is a list of possible types to skip, BEG and LIMIT are the starting
8683point and the limit of search (default to point and end of buffer).
8684
8685SKIP may be a number, then it behaves as list of numbers up to SKIP; this
8686semantic may be used as a numeric argument.
8687
8688Types are 0 for / $rex /o (interpolated once), 1 for /$rex/ (if $rex is
8689a result of qr//, this is not a performance hit), t for the rest."
8690 (interactive "P")
8691 (if (numberp skip) (setq skip (list 0 skip)))
8692 (or beg (setq beg (point)))
8693 (or limit (setq limit (point-max))) ; needed for n-s-p-c
8694 (let (pp)
8695 (and (eq (get-text-property beg 'syntax-type) 'string)
8696 (setq beg (next-single-property-change beg 'syntax-type nil limit)))
8697 (cperl-map-pods-heres
8698 (function (lambda (s e p)
8699 (if (memq (get-text-property s 'REx-interpolated) skip)
8700 t
8701 (setq pp s)
8702 nil))) ; nil stops
8703 'REx-interpolated beg limit)
8704 (if pp (goto-char pp)
8705 (message "No more interpolated REx"))))
8706
8707;;; Initial version contributed by Trey Belew
8708(defun cperl-here-doc-spell (&optional beg end)
8709 "Spell-check HERE-documents in the Perl buffer.
8710If a region is highlighted, restricts to the region."
8711 (interactive "")
8712 (cperl-pod-spell t beg end))
8713
8714(defun cperl-pod-spell (&optional do-heres beg end)
8715 "Spell-check POD documentation.
8716If invoked with prefix argument, will do HERE-DOCs instead.
8717If a region is highlighted, restricts to the region."
8718 (interactive "P")
8719 (save-excursion
8720 (let (beg end)
8721 (if (cperl-mark-active)
8722 (setq beg (min (mark) (point))
8723 end (max (mark) (point)))
8724 (setq beg (point-min)
8725 end (point-max)))
8726 (cperl-map-pods-heres (function
8727 (lambda (s e p)
8728 (if do-heres
8729 (setq e (save-excursion
8730 (goto-char e)
8731 (forward-line -1)
8732 (point))))
8733 (ispell-region s e)
8734 t))
8735 (if do-heres 'here-doc-group 'in-pod)
8736 beg end))))
8737
8738(defun cperl-map-pods-heres (func &optional prop s end)
8739 "Executes a function over regions of pods or here-documents.
8740PROP is the text-property to search for; default to `in-pod'. Stop when
8741function returns nil."
8742 (let (pos posend has-prop (cont t))
8743 (or prop (setq prop 'in-pod))
8744 (or s (setq s (point-min)))
8745 (or end (setq end (point-max)))
8746 (cperl-update-syntaxification end end)
8747 (save-excursion
8748 (goto-char (setq pos s))
8749 (while (and cont (< pos end))
8750 (setq has-prop (get-text-property pos prop))
8751 (setq posend (next-single-property-change pos prop nil end))
8752 (and has-prop
8753 (setq cont (funcall func pos posend prop)))
8754 (setq pos posend)))))
8755
8756;;; Based on code by Masatake YAMATO:
8757(defun cperl-get-here-doc-region (&optional pos pod)
8758 "Return HERE document region around the point.
8759Return nil if the point is not in a HERE document region. If POD is non-nil,
8760will return a POD section if point is in a POD section."
8761 (or pos (setq pos (point)))
8762 (cperl-update-syntaxification pos pos)
8763 (if (or (eq 'here-doc (get-text-property pos 'syntax-type))
8764 (and pod
8765 (eq 'pod (get-text-property pos 'syntax-type))))
8766 (let ((b (cperl-beginning-of-property pos 'syntax-type))
8767 (e (next-single-property-change pos 'syntax-type)))
8768 (cons b (or e (point-max))))))
8769
8770(defun cperl-narrow-to-here-doc (&optional pos)
8771 "Narrows editing region to the HERE-DOC at POS.
8772POS defaults to the point."
8773 (interactive "d")
8774 (or pos (setq pos (point)))
8775 (let ((p (cperl-get-here-doc-region pos)))
8776 (or p (error "Not inside a HERE document"))
8777 (narrow-to-region (car p) (cdr p))
8778 (message
8779 "When you are finished with narrow editing, type C-x n w")))
8780
8781(defun cperl-select-this-pod-or-here-doc (&optional pos)
8782 "Select the HERE-DOC (or POD section) at POS.
8783POS defaults to the point."
8784 (interactive "d")
8785 (let ((p (cperl-get-here-doc-region pos t)))
8786 (if p
8787 (progn
8788 (goto-char (car p))
8789 (push-mark (cdr p) nil t)) ; Message, activate in transient-mode
8790 (message "I do not think POS is in POD or a HERE-doc..."))))
8791
8792(defun cperl-facemenu-add-face-function (face end)
8793 "A callback to process user-initiated font-change requests.
8794Translates `bold', `italic', and `bold-italic' requests to insertion of
8795corresponding POD directives, and `underline' to C<> POD directive.
8796
8797Such requests are usually bound to M-o LETTER."
8798 (or (get-text-property (point) 'in-pod)
8799 (error "Faces can only be set within POD"))
8800 (setq facemenu-end-add-face (if (eq face 'bold-italic) ">>" ">"))
8801 (cdr (or (assq face '((bold . "B<")
8802 (italic . "I<")
8803 (bold-italic . "B<I<")
8804 (underline . "C<")))
8805 (error "Face %s not configured for cperl-mode"
8806 face))))
8807
8808(defun cperl-time-fontification (&optional l step lim)
8809 "Times how long it takes to do incremental fontification in a region.
8810L is the line to start at, STEP is the number of lines to skip when
8811doing next incremental fontification, LIM is the maximal number of
8812incremental fontification to perform. Messages are accumulated in
8813*Messages* buffer.
8814
8815May be used for pinpointing which construct slows down buffer fontification:
8816start with default arguments, then refine the slowdown regions."
8817 (interactive "nLine to start at: \nnStep to do incremental fontification: ")
8818 (or l (setq l 1))
8819 (or step (setq step 500))
8820 (or lim (setq lim 40))
8821 (let* ((timems (function (lambda ()
8822 (let ((tt (current-time)))
8823 (+ (* 1000 (nth 1 tt)) (/ (nth 2 tt) 1000))))))
8824 (tt (funcall timems)) (c 0) delta tot)
8825 (goto-line l)
8826 (cperl-mode)
8827 (setq tot (- (- tt (setq tt (funcall timems)))))
8828 (message "cperl-mode at %s: %s" l tot)
8829 (while (and (< c lim) (not (eobp)))
8830 (forward-line step)
8831 (setq l (+ l step))
8832 (setq c (1+ c))
8833 (cperl-update-syntaxification (point) (point))
8834 (setq delta (- (- tt (setq tt (funcall timems)))) tot (+ tot delta))
8835 (message "to %s:%6s,%7s" l delta tot))
8836 tot))
8837
8838(defun cperl-emulate-lazy-lock (&optional window-size)
8839 "Emulate `lazy-lock' without `condition-case', so `debug-on-error' works.
8840Start fontifying the buffer from the start (or end) using the given
8841WINDOW-SIZE (units is lines). Negative WINDOW-SIZE starts at end, and
8842goes backwards; default is -50. This function is not CPerl-specific; it
8843may be used to debug problems with delayed incremental fontification."
8844 (interactive
8845 "nSize of window for incremental fontification, negative goes backwards: ")
8846 (or window-size (setq window-size -50))
8847 (let ((pos (if (> window-size 0)
8848 (point-min)
8849 (point-max)))
8850 p)
8851 (goto-char pos)
8852 (normal-mode)
8853 ;; Why needed??? With older font-locks???
8854 (set (make-local-variable 'font-lock-cache-position) (make-marker))
8855 (while (if (> window-size 0)
8856 (< pos (point-max))
8857 (> pos (point-min)))
8858 (setq p (progn
8859 (forward-line window-size)
8860 (point)))
8861 (font-lock-fontify-region (min p pos) (max p pos))
8862 (setq pos p))))
8863
8864
7164(defun cperl-lazy-install ()) ; Avoid a warning 8865(defun cperl-lazy-install ()) ; Avoid a warning
7165(defun cperl-lazy-unstall ()) ; Avoid a warning 8866(defun cperl-lazy-unstall ()) ; Avoid a warning
7166 8867
@@ -7176,7 +8877,7 @@ We suppose that the regexp is scanned already."
7176 "Switches on Auto-Help on Perl constructs (put in the message area). 8877 "Switches on Auto-Help on Perl constructs (put in the message area).
7177Delay of auto-help controlled by `cperl-lazy-help-time'." 8878Delay of auto-help controlled by `cperl-lazy-help-time'."
7178 (interactive) 8879 (interactive)
7179 (make-variable-buffer-local 'cperl-help-shown) 8880 (make-local-variable 'cperl-help-shown)
7180 (if (and (cperl-val 'cperl-lazy-help-time) 8881 (if (and (cperl-val 'cperl-lazy-help-time)
7181 (not cperl-lazy-installed)) 8882 (not cperl-lazy-installed))
7182 (progn 8883 (progn
@@ -7209,48 +8910,109 @@ Delay of auto-help controlled by `cperl-lazy-help-time'."
7209;;; Plug for wrong font-lock: 8910;;; Plug for wrong font-lock:
7210 8911
7211(defun cperl-font-lock-unfontify-region-function (beg end) 8912(defun cperl-font-lock-unfontify-region-function (beg end)
7212 ;; Simplified now that font-lock-unfontify-region uses save-buffer-state. 8913 (let* ((modified (buffer-modified-p)) (buffer-undo-list t)
7213 (let (before-change-functions after-change-functions) 8914 (inhibit-read-only t) (inhibit-point-motion-hooks t)
7214 (remove-text-properties beg end '(face nil)))) 8915 before-change-functions after-change-functions
8916 deactivate-mark buffer-file-name buffer-file-truename)
8917 (remove-text-properties beg end '(face nil))
8918 (if (and (not modified) (buffer-modified-p))
8919 (set-buffer-modified-p nil))))
8920
8921(defun cperl-font-lock-fontify-region-function (beg end loudly)
8922 "Extends the region to safe positions, then calls the default function.
8923Newer `font-lock's can do it themselves.
8924We unwind only as far as needed for fontification. Syntaxification may
8925do extra unwind via `cperl-unwind-to-safe'."
8926 (save-excursion
8927 (goto-char beg)
8928 (while (and beg
8929 (progn
8930 (beginning-of-line)
8931 (eq (get-text-property (setq beg (point)) 'syntax-type)
8932 'multiline)))
8933 (if (setq beg (cperl-beginning-of-property beg 'syntax-type))
8934 (goto-char beg)))
8935 (setq beg (point))
8936 (goto-char end)
8937 (while (and end
8938 (progn
8939 (or (bolp) (condition-case nil
8940 (forward-line 1)
8941 (error nil)))
8942 (eq (get-text-property (setq end (point)) 'syntax-type)
8943 'multiline)))
8944 (setq end (next-single-property-change end 'syntax-type nil (point-max)))
8945 (goto-char end))
8946 (setq end (point)))
8947 (font-lock-default-fontify-region beg end loudly))
7215 8948
7216(defvar cperl-d-l nil) 8949(defvar cperl-d-l nil)
7217(defun cperl-fontify-syntaxically (end) 8950(defun cperl-fontify-syntaxically (end)
7218 ;; Some vars for debugging only 8951 ;; Some vars for debugging only
7219 ;; (message "Syntaxifying...") 8952 ;; (message "Syntaxifying...")
7220 (let ((dbg (point)) (iend end) 8953 (let ((dbg (point)) (iend end) (idone cperl-syntax-done-to)
7221 (istate (car cperl-syntax-state)) 8954 (istate (car cperl-syntax-state))
7222 start) 8955 start from-start edebug-backtrace-buffer)
7223 (and cperl-syntaxify-unwind 8956 (if (eq cperl-syntaxify-by-font-lock 'backtrace)
7224 (setq end (cperl-unwind-to-safe t end))) 8957 (progn
7225 (setq start (point)) 8958 (require 'edebug)
8959 (let ((f 'edebug-backtrace))
8960 (funcall f)))) ; Avoid compile-time warning
7226 (or cperl-syntax-done-to 8961 (or cperl-syntax-done-to
7227 (setq cperl-syntax-done-to (point-min))) 8962 (setq cperl-syntax-done-to (point-min)
7228 (if (or (not (boundp 'font-lock-hot-pass)) 8963 from-start t))
7229 (eval 'font-lock-hot-pass) 8964 (setq start (if (and cperl-hook-after-change
7230 t) ; Not debugged otherwise 8965 (not from-start))
7231 ;; Need to forget what is after `start' 8966 cperl-syntax-done-to ; Fontify without change; ignore start
7232 (setq start (min cperl-syntax-done-to start)) 8967 ;; Need to forget what is after `start'
7233 ;; Fontification without a change 8968 (min cperl-syntax-done-to (point))))
7234 (setq start (max cperl-syntax-done-to start))) 8969 (goto-char start)
8970 (beginning-of-line)
8971 (setq start (point))
8972 (and cperl-syntaxify-unwind
8973 (setq end (cperl-unwind-to-safe t end)
8974 start (point)))
7235 (and (> end start) 8975 (and (> end start)
7236 (setq cperl-syntax-done-to start) ; In case what follows fails 8976 (setq cperl-syntax-done-to start) ; In case what follows fails
7237 (cperl-find-pods-heres start end t nil t)) 8977 (cperl-find-pods-heres start end t nil t))
7238 (if (eq cperl-syntaxify-by-font-lock 'message) 8978 (if (memq cperl-syntaxify-by-font-lock '(backtrace message))
7239 (message "Syntaxified %s..%s from %s to %s(%s), state %s-->%s" 8979 (message "Syxify req=%s..%s actual=%s..%s done-to: %s=>%s statepos: %s=>%s"
7240 dbg iend 8980 dbg iend start end idone cperl-syntax-done-to
7241 start end cperl-syntax-done-to
7242 istate (car cperl-syntax-state))) ; For debugging 8981 istate (car cperl-syntax-state))) ; For debugging
7243 nil)) ; Do not iterate 8982 nil)) ; Do not iterate
7244 8983
7245(defun cperl-fontify-update (end) 8984(defun cperl-fontify-update (end)
7246 (let ((pos (point)) prop posend) 8985 (let ((pos (point-min)) prop posend)
8986 (setq end (point-max))
7247 (while (< pos end) 8987 (while (< pos end)
7248 (setq prop (get-text-property pos 'cperl-postpone)) 8988 (setq prop (get-text-property pos 'cperl-postpone)
7249 (setq posend (next-single-property-change pos 'cperl-postpone nil end)) 8989 posend (next-single-property-change pos 'cperl-postpone nil end))
7250 (and prop (put-text-property pos posend (car prop) (cdr prop))) 8990 (and prop (put-text-property pos posend (car prop) (cdr prop)))
7251 (setq pos posend))) 8991 (setq pos posend)))
7252 nil) ; Do not iterate 8992 nil) ; Do not iterate
7253 8993
8994(defun cperl-fontify-update-bad (end)
8995 ;; Since fontification happens with different region than syntaxification,
8996 ;; do to the end of buffer, not to END;;; likewise, start earlier if needed
8997 (let* ((pos (point)) (prop (get-text-property pos 'cperl-postpone)) posend)
8998 (if prop
8999 (setq pos (or (cperl-beginning-of-property
9000 (cperl-1+ pos) 'cperl-postpone)
9001 (point-min))))
9002 (while (< pos end)
9003 (setq posend (next-single-property-change pos 'cperl-postpone))
9004 (and prop (put-text-property pos posend (car prop) (cdr prop)))
9005 (setq pos posend)
9006 (setq prop (get-text-property pos 'cperl-postpone))))
9007 nil) ; Do not iterate
9008
9009;; Called when any modification is made to buffer text.
9010(defun cperl-after-change-function (beg end old-len)
9011 ;; We should have been informed about changes by `font-lock'. Since it
9012 ;; does not inform as which calls are defered, do it ourselves
9013 (if cperl-syntax-done-to
9014 (setq cperl-syntax-done-to (min cperl-syntax-done-to beg))))
9015
7254(defun cperl-update-syntaxification (from to) 9016(defun cperl-update-syntaxification (from to)
7255 (if (and cperl-use-syntax-table-text-property 9017 (if (and cperl-use-syntax-table-text-property
7256 cperl-syntaxify-by-font-lock 9018 cperl-syntaxify-by-font-lock
@@ -7262,7 +9024,7 @@ Delay of auto-help controlled by `cperl-lazy-help-time'."
7262 (cperl-fontify-syntaxically to))))) 9024 (cperl-fontify-syntaxically to)))))
7263 9025
7264(defvar cperl-version 9026(defvar cperl-version
7265 (let ((v "Revision: 5.0")) 9027 (let ((v "Revision: 5.22"))
7266 (string-match ":\\s *\\([0-9.]+\\)" v) 9028 (string-match ":\\s *\\([0-9.]+\\)" v)
7267 (substring v (match-beginning 1) (match-end 1))) 9029 (substring v (match-beginning 1) (match-end 1)))
7268 "Version of IZ-supported CPerl package this file is based on.") 9030 "Version of IZ-supported CPerl package this file is based on.")
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 3f21e4ac96b..52360a73970 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -902,20 +902,23 @@ Changed values are highlighted with the face `font-lock-warning-face'."
902TEXT is the text of the button we clicked on, a + or - item. 902TEXT is the text of the button we clicked on, a + or - item.
903TOKEN is data related to this node. 903TOKEN is data related to this node.
904INDENT is the current indentation depth." 904INDENT is the current indentation depth."
905 (cond ((string-match "+" text) ;expand this node 905 (if (and gud-comint-buffer (buffer-name gud-comint-buffer))
906 (if (and 906 (progn
907 (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba) 907 (cond ((string-match "+" text) ;expand this node
908 (string-equal gdb-version "pre-6.4")) 908 (if (and (eq (buffer-local-value
909 (gdb-var-list-children token) 909 'gud-minor-mode gud-comint-buffer) 'gdba)
910 (gdb-var-list-children-1 token))) 910 (string-equal gdb-version "pre-6.4"))
911 ((string-match "-" text) ;contract this node 911 (gdb-var-list-children token)
912 (dolist (var gdb-var-list) 912 (gdb-var-list-children-1 token)))
913 (if (string-match (concat token "\\.") (car var)) 913 ((string-match "-" text) ;contract this node
914 (setq gdb-var-list (delq var gdb-var-list)))) 914 (dolist (var gdb-var-list)
915 (speedbar-change-expand-button-char ?+) 915 (if (string-match (concat token "\\.") (car var))
916 (speedbar-delete-subblock indent)) 916 (setq gdb-var-list (delq var gdb-var-list))))
917 (t (error "Ooops... not sure what to do"))) 917 (speedbar-change-expand-button-char ?+)
918 (speedbar-center-buffer-smartly)) 918 (speedbar-delete-subblock indent))
919 (t (error "Ooops... not sure what to do")))
920 (speedbar-center-buffer-smartly))
921 (message-box "GUD session has been killed")))
919 922
920(defun gdb-get-target-string () 923(defun gdb-get-target-string ()
921 (with-current-buffer gud-comint-buffer 924 (with-current-buffer gud-comint-buffer
@@ -1132,7 +1135,7 @@ This filter may simply queue input for a later time."
1132 (if gdb-prompting 1135 (if gdb-prompting
1133 (progn 1136 (progn
1134 (gdb-send-item item) 1137 (gdb-send-item item)
1135 (setq gdb-prompting nil)) 1138 (setq gdb-prompting nil))
1136 (push item gdb-input-queue)))) 1139 (push item gdb-input-queue))))
1137 1140
1138(defun gdb-dequeue-input () 1141(defun gdb-dequeue-input ()
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index ba10393a89f..73957cab8e9 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -2460,55 +2460,45 @@ we go to the end of the previous line and do not check for continuations."
2460 ;; 2460 ;;
2461 (if (bolp) 2461 (if (bolp)
2462 nil 2462 nil
2463 (let (c min-point 2463 (let ((start (point))
2464 (start (point))) 2464 (min-point (if (sh-this-is-a-continuation)
2465 (save-restriction 2465 (sh-prev-line nil)
2466 (narrow-to-region 2466 (line-beginning-position))))
2467 (if (sh-this-is-a-continuation) 2467 (skip-chars-backward " \t;" min-point)
2468 (setq min-point (sh-prev-line nil)) 2468 (if (looking-at "\\s-*;;")
2469 (save-excursion 2469 ;; (message "Found ;; !")
2470 (beginning-of-line) 2470 ";;"
2471 (setq min-point (point)))) 2471 (skip-chars-backward "^)}];\"'`({[" min-point)
2472 (point)) 2472 (let ((c (if (> (point) min-point) (char-before))))
2473 (skip-chars-backward " \t;") 2473 (sh-debug "stopping at %d c is %s start=%d min-point=%d"
2474 (unless (looking-at "\\s-*;;") 2474 (point) c start min-point)
2475 (skip-chars-backward "^)}];\"'`({[") 2475 (if (not (memq c '(?\n nil ?\;)))
2476 (setq c (char-before))) 2476 ;; c -- return a string
2477 (sh-debug "stopping at %d c is %s start=%d min-point=%d" 2477 (char-to-string c)
2478 (point) c start min-point) 2478 ;; Return the leading keyword of the "command" we supposedly
2479 (if (< (point) min-point) 2479 ;; skipped over. Maybe we skipped too far (e.g. past a `do' or
2480 (error "point %d < min-point %d" (point) min-point)) 2480 ;; `then' that precedes the actual command), so check whether
2481 (cond 2481 ;; we're looking at such a keyword and if so, move back forward.
2482 ((looking-at "\\s-*;;") 2482 (let ((boundary (point))
2483 ;; (message "Found ;; !") 2483 kwd next)
2484 ";;") 2484 (while
2485 ((or (eq c ?\n) 2485 (progn
2486 (eq c nil) 2486 ;; Skip forward over white space newline and \ at eol.
2487 (eq c ?\;)) 2487 (skip-chars-forward " \t\n\\\\" start)
2488 (let (done kwd next 2488 (if (>= (point) start)
2489 (boundary (point))) 2489 (progn
2490 (skip-chars-forward " \t\n\\\\") 2490 (sh-debug "point: %d >= start: %d" (point) start)
2491 (while (and (not done) (not (eobp))) 2491 nil)
2492 (if next (setq boundary next)) 2492 (if next (setq boundary next))
2493 ;; skip forward over white space newline and \ at eol 2493 (sh-debug "Now at %d start=%d" (point) start)
2494 (sh-debug "Now at %d start=%d" (point) start) 2494 (setq kwd (sh-get-word))
2495 (if (>= (point) start) 2495 (if (member kwd (sh-feature sh-leading-keywords))
2496 (progn 2496 (progn
2497 (sh-debug "point: %d >= start: %d" (point) start) 2497 (setq next (point))
2498 nil) 2498 t)
2499 (setq kwd (sh-get-word)) 2499 nil))))
2500 (unless (eobp) (forward-char 1)) 2500 (goto-char boundary)
2501 (if (member kwd (sh-feature sh-leading-keywords)) 2501 kwd)))))))
2502 (setq next (point))
2503 (setq done t)))
2504 (skip-chars-forward " \t\n\\\\"))
2505 (goto-char boundary)
2506 kwd))
2507 (t
2508 ;; c -- return a string
2509 (char-to-string c)
2510 ))
2511 ))))
2512 2502
2513 2503
2514(defun sh-this-is-a-continuation () 2504(defun sh-this-is-a-continuation ()
@@ -2527,7 +2517,7 @@ If AND-MOVE is non-nil then move to end of word."
2527 (goto-char where)) 2517 (goto-char where))
2528 (prog1 2518 (prog1
2529 (buffer-substring (point) 2519 (buffer-substring (point)
2530 (progn (skip-chars-forward "^ \t\n;&")(point))) 2520 (progn (skip-chars-forward "^ \t\n;&|()")(point)))
2531 (unless and-move 2521 (unless and-move
2532 (goto-char start))))) 2522 (goto-char start)))))
2533 2523
diff --git a/lisp/shell.el b/lisp/shell.el
index d4791821b5b..2adfc79618a 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -272,6 +272,8 @@ This is effective only if directory tracking is enabled."
272 :type '(choice (const :tag "None" nil) file) 272 :type '(choice (const :tag "None" nil) file)
273 :group 'shell) 273 :group 'shell)
274 274
275;; Note: There are no explicit references to the variable `explicit-csh-args'.
276;; It is used implicitly by M-x shell when the shell is `csh'.
275(defcustom explicit-csh-args 277(defcustom explicit-csh-args
276 (if (eq system-type 'hpux) 278 (if (eq system-type 'hpux)
277 ;; -T persuades HP's csh not to think it is smarter 279 ;; -T persuades HP's csh not to think it is smarter
@@ -283,12 +285,15 @@ Value is a list of strings, which may be nil."
283 :type '(repeat (string :tag "Argument")) 285 :type '(repeat (string :tag "Argument"))
284 :group 'shell) 286 :group 'shell)
285 287
288;; Note: There are no explicit references to the variable `explicit-bash-args'.
289;; It is used implicitly by M-x shell when the interactive shell is `bash'.
286(defcustom explicit-bash-args 290(defcustom explicit-bash-args
287 ;; Tell bash not to use readline, except for bash 1.x which doesn't grook --noediting.
288 ;; Bash 1.x has -nolineediting, but process-send-eof cannot terminate bash if we use it.
289 (let* ((prog (or (and (boundp 'explicit-shell-file-name) explicit-shell-file-name) 291 (let* ((prog (or (and (boundp 'explicit-shell-file-name) explicit-shell-file-name)
290 (getenv "ESHELL") shell-file-name)) 292 (getenv "ESHELL") shell-file-name))
291 (name (file-name-nondirectory prog))) 293 (name (file-name-nondirectory prog)))
294 ;; Tell bash not to use readline, except for bash 1.x which
295 ;; doesn't grook --noediting. Bash 1.x has -nolineediting, but
296 ;; process-send-eof cannot terminate bash if we use it.
292 (if (and (not purify-flag) 297 (if (and (not purify-flag)
293 (equal name "bash") 298 (equal name "bash")
294 (file-executable-p prog) 299 (file-executable-p prog)
diff --git a/lisp/simple.el b/lisp/simple.el
index 55f476213fd..85f43097a1a 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1675,7 +1675,7 @@ is not *inside* the region START...END."
1675Normally, Emacs discards the undo info for the current command if 1675Normally, Emacs discards the undo info for the current command if
1676it exceeds `undo-outer-limit'. But if you set this option 1676it exceeds `undo-outer-limit'. But if you set this option
1677non-nil, it asks in the echo area whether to discard the info. 1677non-nil, it asks in the echo area whether to discard the info.
1678If you answer no, there a slight risk that Emacs might crash, so 1678If you answer no, there is a slight risk that Emacs might crash, so
1679only do it if you really want to undo the command. 1679only do it if you really want to undo the command.
1680 1680
1681This option is mainly intended for debugging. You have to be 1681This option is mainly intended for debugging. You have to be
diff --git a/lisp/strokes.el b/lisp/strokes.el
index bcf7656347e..8d2b021ce61 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -142,6 +142,8 @@
142;; the user to enter strokes which "remove the pencil from the paper" 142;; the user to enter strokes which "remove the pencil from the paper"
143;; so to speak, so one character can have multiple strokes. 143;; so to speak, so one character can have multiple strokes.
144 144
145;; NOTE (Oct 7, 2006): The URLs below seem to be invalid!!!
146
145;; You can read more about strokes at: 147;; You can read more about strokes at:
146 148
147;; http://www.mit.edu/people/cadet/strokes-help.html 149;; http://www.mit.edu/people/cadet/strokes-help.html
@@ -211,7 +213,6 @@ static char * stroke_xpm[] = {
211(defgroup strokes nil 213(defgroup strokes nil
212 "Control Emacs through mouse strokes." 214 "Control Emacs through mouse strokes."
213 :link '(emacs-commentary-link "strokes") 215 :link '(emacs-commentary-link "strokes")
214 :link '(url-link "http://www.mit.edu/people/cadet/strokes-help.html")
215 :group 'mouse) 216 :group 'mouse)
216 217
217(defcustom strokes-modeline-string " Strokes" 218(defcustom strokes-modeline-string " Strokes"
diff --git a/lisp/subr.el b/lisp/subr.el
index 0d0bf7c7cc3..816cf9094e0 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2235,7 +2235,9 @@ BUFFER is the buffer (or buffer name) to associate with the process.
2235 BUFFER may be also nil, meaning that this process is not associated 2235 BUFFER may be also nil, meaning that this process is not associated
2236 with any buffer 2236 with any buffer
2237COMMAND is the name of a shell command. 2237COMMAND is the name of a shell command.
2238Remaining arguments are the arguments for the command. 2238Remaining arguments are the arguments for the command; they are all
2239spliced together with blanks separating between each two of them, before
2240passing the command to the shell.
2239Wildcards and redirection are handled as usual in the shell. 2241Wildcards and redirection are handled as usual in the shell.
2240 2242
2241\(fn NAME BUFFER COMMAND &rest COMMAND-ARGS)" 2243\(fn NAME BUFFER COMMAND &rest COMMAND-ARGS)"
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index c8ecc3df63d..caca6a6ae7d 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -2690,7 +2690,7 @@ Also put tags into group 4 if tags are present.")
2690(make-variable-buffer-local 'org-keyword-time-regexp) 2690(make-variable-buffer-local 'org-keyword-time-regexp)
2691 2691
2692(defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t 2692(defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t
2693 mouse-map t) 2693 rear-nonsticky t mouse-map t)
2694 "Properties to remove when a string without properties is wanted.") 2694 "Properties to remove when a string without properties is wanted.")
2695 2695
2696(defsubst org-match-string-no-properties (num &optional string) 2696(defsubst org-match-string-no-properties (num &optional string)
@@ -3140,6 +3140,7 @@ that will be added to PLIST. Returns the string that was modified."
3140 (progn 3140 (progn
3141 (add-text-properties (match-beginning 0) (match-end 0) 3141 (add-text-properties (match-beginning 0) (match-end 0)
3142 (list 'mouse-face 'highlight 3142 (list 'mouse-face 'highlight
3143 'rear-nonsticky t
3143 'keymap org-mouse-map 3144 'keymap org-mouse-map
3144 )) 3145 ))
3145 t))) 3146 t)))
@@ -3150,6 +3151,7 @@ that will be added to PLIST. Returns the string that was modified."
3150 (progn 3151 (progn
3151 (add-text-properties (match-beginning 0) (match-end 0) 3152 (add-text-properties (match-beginning 0) (match-end 0)
3152 (list 'mouse-face 'highlight 3153 (list 'mouse-face 'highlight
3154 'rear-nonsticky t
3153 'keymap org-mouse-map 3155 'keymap org-mouse-map
3154 )) 3156 ))
3155 t))) 3157 t)))
@@ -3188,6 +3190,7 @@ that will be added to PLIST. Returns the string that was modified."
3188 (progn 3190 (progn
3189 (add-text-properties (match-beginning 0) (match-end 0) 3191 (add-text-properties (match-beginning 0) (match-end 0)
3190 (list 'mouse-face 'highlight 3192 (list 'mouse-face 'highlight
3193 'rear-nonsticky t
3191 'keymap org-mouse-map)) 3194 'keymap org-mouse-map))
3192 t))) 3195 t)))
3193 3196
@@ -3206,6 +3209,7 @@ that will be added to PLIST. Returns the string that was modified."
3206 (progn 3209 (progn
3207 (add-text-properties (match-beginning 0) (match-end 0) 3210 (add-text-properties (match-beginning 0) (match-end 0)
3208 (list 'mouse-face 'highlight 3211 (list 'mouse-face 'highlight
3212 'rear-nonsticky t
3209 'keymap org-mouse-map 3213 'keymap org-mouse-map
3210 'help-echo "Radio target link" 3214 'help-echo "Radio target link"
3211 'org-linked-text t)) 3215 'org-linked-text t))
@@ -3271,6 +3275,7 @@ between words."
3271 (progn 3275 (progn
3272 (add-text-properties (match-beginning 0) (match-end 0) 3276 (add-text-properties (match-beginning 0) (match-end 0)
3273 (list 'mouse-face 'highlight 3277 (list 'mouse-face 'highlight
3278 'rear-nonsticky t
3274 'keymap org-mouse-map)) 3279 'keymap org-mouse-map))
3275 t))) 3280 t)))
3276 3281
@@ -3279,6 +3284,7 @@ between words."
3279 (progn 3284 (progn
3280 (add-text-properties (match-beginning 1) (match-end 1) 3285 (add-text-properties (match-beginning 1) (match-end 1)
3281 (list 'mouse-face 'highlight 3286 (list 'mouse-face 'highlight
3287 'rear-nonsticky t
3282 'keymap org-mouse-map)) 3288 'keymap org-mouse-map))
3283 t))) 3289 t)))
3284 3290
@@ -3380,6 +3386,7 @@ between words."
3380 deactivate-mark buffer-file-name buffer-file-truename) 3386 deactivate-mark buffer-file-name buffer-file-truename)
3381 (remove-text-properties beg end 3387 (remove-text-properties beg end
3382 '(mouse-face nil keymap nil org-linked-text nil 3388 '(mouse-face nil keymap nil org-linked-text nil
3389 rear-nonsticky nil
3383 invisible nil intangible nil)))) 3390 invisible nil intangible nil))))
3384;;; Visibility cycling 3391;;; Visibility cycling
3385 3392
diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el
index e1ae98a59df..b878c288735 100644
--- a/lisp/textmodes/reftex-global.el
+++ b/lisp/textmodes/reftex-global.el
@@ -38,7 +38,8 @@ The TAGS file is also immediately visited with `visit-tags-table'."
38 (reftex-access-scan-info current-prefix-arg) 38 (reftex-access-scan-info current-prefix-arg)
39 (let* ((master (reftex-TeX-master-file)) 39 (let* ((master (reftex-TeX-master-file))
40 (files (reftex-all-document-files)) 40 (files (reftex-all-document-files))
41 (cmd (format "etags %s" (mapconcat 'identity files " ")))) 41 (cmd (format "etags %s" (mapconcat 'shell-quote-argument
42 files " "))))
42 (save-excursion 43 (save-excursion
43 (set-buffer (reftex-get-file-buffer-force master)) 44 (set-buffer (reftex-get-file-buffer-force master))
44 (message "Running etags to create TAGS file...") 45 (message "Running etags to create TAGS file...")
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index f4334fbbd70..0f8a948e363 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -232,7 +232,7 @@ distribution. Mixed-case symbols are convenience aliases.")
232 "LaTeX label and citation support." 232 "LaTeX label and citation support."
233 :tag "RefTeX" 233 :tag "RefTeX"
234 :link '(url-link :tag "Home Page" 234 :link '(url-link :tag "Home Page"
235 "http://zon.astro.uva.nl/~dominik/Tools/") 235 "http://staff.science.uva.nl/~dominik/Tools/reftex/")
236 :link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el") 236 :link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el")
237 :link '(custom-manual "(reftex)Top") 237 :link '(custom-manual "(reftex)Top")
238 :prefix "reftex-" 238 :prefix "reftex-"
diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el
index b8ab100c19d..958ef179b26 100644
--- a/lisp/textmodes/two-column.el
+++ b/lisp/textmodes/two-column.el
@@ -340,9 +340,9 @@ The appearance of the screen can be customized by the variables
340;;;###autoload 340;;;###autoload
341(defun 2C-two-columns (&optional buffer) 341(defun 2C-two-columns (&optional buffer)
342 "Split current window vertically for two-column editing. 342 "Split current window vertically for two-column editing.
343When called the first time, associates a buffer with the current 343\\<global-map>When called the first time, associates a buffer with the current
344buffer in two-column minor mode (see \\[describe-mode] ). 344buffer in two-column minor mode (use \\[describe-mode] once in the mode,
345Runs `2C-other-buffer-hook' in the new buffer. 345for details.). It runs `2C-other-buffer-hook' in the new buffer.
346When called again, restores the screen layout with the current buffer 346When called again, restores the screen layout with the current buffer
347first and the associated buffer to its right." 347first and the associated buffer to its right."
348 (interactive "P") 348 (interactive "P")
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index a6afb0ba20f..2aa14af8983 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,22 @@
12006-10-12 Magnus Henoch <mange@freemail.hu>
2
3 * url-http.el (url-http-find-free-connection): Handle
4 url-open-stream returning nil.
5
62006-10-11 Magnus Henoch <mange@freemail.hu>
7
8 * url-https.el: Remove (clashes with url-http on 8+3 systems).
9
10 * url-http.el: Move contents of url-https.el here. Add autoloads.
11
122006-10-09 Magnus Henoch <mange@freemail.hu>
13
14 * url-parse.el (url-generic-parse-url): Handle URLs with empty
15 path component and non-empty query component. Untangle path,
16 query and fragment parsing code. Add references to RFC 3986 in
17 comments.
18 (url-recreate-url-attributes): Start query string with "?", not ";".
19
12006-09-20 Stefan Monnier <monnier@iro.umontreal.ca> 202006-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
2 21
3 * url-dav.el (url-dav-file-attributes): Simplify. 22 * url-dav.el (url-dav-file-attributes): Simplify.
@@ -420,32 +439,19 @@
420 439
4212004-10-10 Lars Hansen <larsh@math.ku.dk> 4402004-10-10 Lars Hansen <larsh@math.ku.dk>
422 441
423 * url-auth.el: Update header and footer. 442 * url-auth.el:
424 443 * url-cache.el:
425 * url-cache.el: Update header and footer. 444 * url-cid.el:
426 445 * url-dired.el:
427 * url-cid.el: Update header and footer. 446 * url-expand.el:
428 447 * url-ftp.el:
429 * url-dired.el: Update header and footer. 448 * url-gw.el:
430 449 * url-imap.el:
431 * url-expand.el: Update header and footer. 450 * url-irc.el:
432 451 * url-misc.el:
433 * url-ftp.el: Update header and footer. 452 * url-news.el:
434 453 * url-ns.el:
435 * url-gw.el: Update header and footer. 454 * url-privacy.el:
436
437 * url-imap.el: Update header and footer.
438
439 * url-irc.el: Update header and footer.
440
441 * url-misc.el: Update header and footer.
442
443 * url-news.el: Update header and footer.
444
445 * url-ns.el: Update header and footer.
446
447 * url-privacy.el: Update header and footer.
448
449 * url-proxy.el: Update header and footer. 455 * url-proxy.el: Update header and footer.
450 456
451 * url-vars.el: Update header. 457 * url-vars.el: Update header.
@@ -490,42 +496,24 @@
490 496
4912004-10-10 Lars Hansen <larsh@math.ku.dk> 4972004-10-10 Lars Hansen <larsh@math.ku.dk>
492 498
493 * url-auth.el: Fix copyright notice. 499 * url-auth.el:
494 500 * url-cache.el:
495 * url-cache.el: Fix copyright notice. 501 * url-cookie.el:
496 502 * url-dired.el:
497 * url-cookie.el: Fix copyright notice. 503 * url-file.el:
498 504 * url-ftp.el:
499 * url-dired.el: Fix copyright notice. 505 * url-handlers.el:
500 506 * url-history.el:
501 * url-file.el: Fix copyright notice. 507 * url-irc.el:
502 508 * url-mailto.el:
503 * url-ftp.el: Fix copyright notice. 509 * url-methods.el:
504 510 * url-misc.el:
505 * url-handlers.el: Fix copyright notice. 511 * url-news.el:
506 512 * url-nfs.el:
507 * url-history.el: Fix copyright notice. 513 * url-parse.el:
508 514 * url-privacy.el:
509 * url-irc.el: Fix copyright notice. 515 * url-vars.el:
510 516 * url.el:
511 * url-mailto.el: Fix copyright notice.
512
513 * url-methods.el: Fix copyright notice.
514
515 * url-misc.el: Fix copyright notice.
516
517 * url-news.el: Fix copyright notice.
518
519 * url-nfs.el: Fix copyright notice.
520
521 * url-parse.el: Fix copyright notice.
522
523 * url-privacy.el: Fix copyright notice.
524
525 * url-vars.el: Fix copyright notice.
526
527 * url.el: Fix copyright notice.
528
529 * url-util.el: Fix copyright notice. 517 * url-util.el: Fix copyright notice.
530 518
5312004-10-06 Stefan Monnier <monnier@iro.umontreal.ca> 5192004-10-06 Stefan Monnier <monnier@iro.umontreal.ca>
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 1b8bc459f49..bf8069ded7e 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -123,8 +123,10 @@ request.")
123 ;; like authentication. But we use another buffer afterwards. 123 ;; like authentication. But we use another buffer afterwards.
124 (unwind-protect 124 (unwind-protect
125 (let ((proc (url-open-stream host buf host port))) 125 (let ((proc (url-open-stream host buf host port)))
126 ;; Drop the temp buffer link before killing the buffer. 126 ;; url-open-stream might return nil.
127 (set-process-buffer proc nil) 127 (when (processp proc)
128 ;; Drop the temp buffer link before killing the buffer.
129 (set-process-buffer proc nil))
128 proc) 130 proc)
129 (kill-buffer buf))))))) 131 (kill-buffer buf)))))))
130 132
@@ -1245,6 +1247,35 @@ p3p
1245 (if buffer (kill-buffer buffer)) 1247 (if buffer (kill-buffer buffer))
1246 options)) 1248 options))
1247 1249
1250;; HTTPS. This used to be in url-https.el, but that file collides
1251;; with url-http.el on systems with 8-character file names.
1252(require 'tls)
1253
1254;;;###autoload
1255(defconst url-https-default-port 443 "Default HTTPS port.")
1256;;;###autoload
1257(defconst url-https-asynchronous-p t "HTTPS retrievals are asynchronous.")
1258;;;###autoload
1259(defalias 'url-https-expand-file-name 'url-http-expand-file-name)
1260
1261(defmacro url-https-create-secure-wrapper (method args)
1262 `(defun ,(intern (format (if method "url-https-%s" "url-https") method)) ,args
1263 ,(format "HTTPS wrapper around `%s' call." (or method "url-http"))
1264 (let ((url-gateway-method (condition-case ()
1265 (require 'ssl)
1266 (error 'tls))))
1267 (,(intern (format (if method "url-http-%s" "url-http") method))
1268 ,@(remove '&rest (remove '&optional args))))))
1269
1270;;;###autoload (autoload 'url-https "url-http")
1271(url-https-create-secure-wrapper nil (url callback cbargs))
1272;;;###autoload (autoload 'url-https-file-exists-p "url-http")
1273(url-https-create-secure-wrapper file-exists-p (url))
1274;;;###autoload (autoload 'url-https-file-readable-p "url-http")
1275(url-https-create-secure-wrapper file-readable-p (url))
1276;;;###autoload (autoload 'url-https-file-attributes "url-http")
1277(url-https-create-secure-wrapper file-attributes (url &optional id-format))
1278
1248(provide 'url-http) 1279(provide 'url-http)
1249 1280
1250;; arch-tag: ba7c59ae-c0f4-4a31-9617-d85f221732ee 1281;; arch-tag: ba7c59ae-c0f4-4a31-9617-d85f221732ee
diff --git a/lisp/url/url-https.el b/lisp/url/url-https.el
deleted file mode 100644
index a7440a76535..00000000000
--- a/lisp/url/url-https.el
+++ /dev/null
@@ -1,56 +0,0 @@
1;;; url-https.el --- HTTP over SSL/TLS routines
2
3;; Copyright (C) 1999, 2004, 2005, 2006 Free Software Foundation, Inc.
4
5;; Keywords: comm, data, processes
6
7;; This file is part of GNU Emacs.
8;;
9;; GNU Emacs is free software; you can redistribute it and/or modify
10;; it under the terms of the GNU General Public License as published by
11;; the Free Software Foundation; either version 2, or (at your option)
12;; any later version.
13;;
14;; GNU Emacs is distributed in the hope that it will be useful,
15;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;; GNU General Public License for more details.
18;;
19;; You should have received a copy of the GNU General Public License
20;; along with GNU Emacs; see the file COPYING. If not, write to the
21;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22;; Boston, MA 02110-1301, USA.
23
24;;; Commentary:
25
26;;; Code:
27
28(require 'url-gw)
29(require 'url-util)
30(require 'url-parse)
31(require 'url-cookie)
32(require 'url-http)
33(require 'tls)
34
35(defconst url-https-default-port 443 "Default HTTPS port.")
36(defconst url-https-asynchronous-p t "HTTPS retrievals are asynchronous.")
37(defalias 'url-https-expand-file-name 'url-http-expand-file-name)
38
39(defmacro url-https-create-secure-wrapper (method args)
40 `(defun ,(intern (format (if method "url-https-%s" "url-https") method)) ,args
41 ,(format "HTTPS wrapper around `%s' call." (or method "url-http"))
42 (let ((url-gateway-method (condition-case ()
43 (require 'ssl)
44 (error 'tls))))
45 (,(intern (format (if method "url-http-%s" "url-http") method))
46 ,@(remove '&rest (remove '&optional args))))))
47
48(url-https-create-secure-wrapper nil (url callback cbargs))
49(url-https-create-secure-wrapper file-exists-p (url))
50(url-https-create-secure-wrapper file-readable-p (url))
51(url-https-create-secure-wrapper file-attributes (url &optional id-format))
52
53(provide 'url-https)
54
55;; arch-tag: c3645ac5-c248-4d12-ad41-7c4b6f7b6d19
56;;; url-https.el ends here
diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el
index 1e4d93a861e..2e4fc8a9f27 100644
--- a/lisp/url/url-parse.el
+++ b/lisp/url/url-parse.el
@@ -108,7 +108,7 @@
108(defun url-recreate-url-attributes (urlobj) 108(defun url-recreate-url-attributes (urlobj)
109 "Recreate the attributes of an URL string from the parsed URLOBJ." 109 "Recreate the attributes of an URL string from the parsed URLOBJ."
110 (when (url-attributes urlobj) 110 (when (url-attributes urlobj)
111 (concat ";" 111 (concat "?"
112 (mapconcat (lambda (x) 112 (mapconcat (lambda (x)
113 (if (cdr x) 113 (if (cdr x)
114 (concat (car x) "=" (cdr x)) 114 (concat (car x) "=" (cdr x))
@@ -120,11 +120,16 @@
120 "Return a vector of the parts of URL. 120 "Return a vector of the parts of URL.
121Format is: 121Format is:
122\[TYPE USER PASSWORD HOST PORT FILE TARGET ATTRIBUTES FULL\]" 122\[TYPE USER PASSWORD HOST PORT FILE TARGET ATTRIBUTES FULL\]"
123 ;; See RFC 3986.
123 (cond 124 (cond
124 ((null url) 125 ((null url)
125 (make-vector 9 nil)) 126 (make-vector 9 nil))
126 ((or (not (string-match url-nonrelative-link url)) 127 ((or (not (string-match url-nonrelative-link url))
127 (= ?/ (string-to-char url))) 128 (= ?/ (string-to-char url)))
129 ;; This isn't correct, as a relative URL can be a fragment link
130 ;; (e.g. "#foo") and many other things (see section 4.2).
131 ;; However, let's not fix something that isn't broken, especially
132 ;; when close to a release.
128 (let ((retval (make-vector 9 nil))) 133 (let ((retval (make-vector 9 nil)))
129 (url-set-filename retval url) 134 (url-set-filename retval url)
130 (url-set-full retval nil) 135 (url-set-full retval nil)
@@ -148,6 +153,8 @@ Format is:
148 (insert url) 153 (insert url)
149 (goto-char (point-min)) 154 (goto-char (point-min))
150 (setq save-pos (point)) 155 (setq save-pos (point))
156
157 ;; 3.1. Scheme
151 (if (not (looking-at "//")) 158 (if (not (looking-at "//"))
152 (progn 159 (progn
153 (skip-chars-forward "a-zA-Z+.\\-") 160 (skip-chars-forward "a-zA-Z+.\\-")
@@ -156,13 +163,13 @@ Format is:
156 (skip-chars-forward ":") 163 (skip-chars-forward ":")
157 (setq save-pos (point)))) 164 (setq save-pos (point))))
158 165
159 ;; We are doing a fully specified URL, with hostname and all 166 ;; 3.2. Authority
160 (if (looking-at "//") 167 (if (looking-at "//")
161 (progn 168 (progn
162 (setq full t) 169 (setq full t)
163 (forward-char 2) 170 (forward-char 2)
164 (setq save-pos (point)) 171 (setq save-pos (point))
165 (skip-chars-forward "^/") 172 (skip-chars-forward "^/\\?#")
166 (setq host (buffer-substring save-pos (point))) 173 (setq host (buffer-substring save-pos (point)))
167 (if (string-match "^\\([^@]+\\)@" host) 174 (if (string-match "^\\([^@]+\\)@" host)
168 (setq user (match-string 1 host) 175 (setq user (match-string 1 host)
@@ -170,6 +177,7 @@ Format is:
170 (if (and user (string-match "\\([^:]+\\):\\(.*\\)" user)) 177 (if (and user (string-match "\\([^:]+\\):\\(.*\\)" user))
171 (setq pass (match-string 2 user) 178 (setq pass (match-string 2 user)
172 user (match-string 1 user))) 179 user (match-string 1 user)))
180 ;; This gives wrong results for IPv6 literal addresses.
173 (if (string-match ":\\([0-9+]+\\)" host) 181 (if (string-match ":\\([0-9+]+\\)" host)
174 (setq port (string-to-number (match-string 1 host)) 182 (setq port (string-to-number (match-string 1 host))
175 host (substring host 0 (match-beginning 0)))) 183 host (substring host 0 (match-beginning 0))))
@@ -181,29 +189,26 @@ Format is:
181 (if (not port) 189 (if (not port)
182 (setq port (url-scheme-get-property prot 'default-port))) 190 (setq port (url-scheme-get-property prot 'default-port)))
183 191
184 ;; Gross hack to preserve ';' in data URLs 192 ;; 3.3. Path
185
186 (setq save-pos (point)) 193 (setq save-pos (point))
194 (skip-chars-forward "^#?")
195 (setq file (buffer-substring save-pos (point)))
187 196
188 (if (string= "data" prot) 197 ;; 3.4. Query
189 (goto-char (point-max)) 198 (when (looking-at "\\?")
190 ;; Now check for references 199 (forward-char 1)
200 (setq save-pos (point))
191 (skip-chars-forward "^#") 201 (skip-chars-forward "^#")
192 (if (eobp) 202 ;; RFC 3986 specifies no general way of parsing the query
193 nil 203 ;; string, but `url-parse-args' seems universal enough.
194 (delete-region 204 (setq attr (url-parse-args (buffer-substring save-pos (point)) t)
195 (point) 205 attr (nreverse attr)))
196 (progn 206
197 (skip-chars-forward "#") 207 ;; 3.5. Fragment
198 (setq refs (buffer-substring (point) (point-max))) 208 (when (looking-at "#")
199 (point-max)))) 209 (forward-char 1)
200 (goto-char save-pos) 210 (setq refs (buffer-substring (point) (point-max))))
201 (skip-chars-forward "^;")
202 (if (not (eobp))
203 (setq attr (url-parse-args (buffer-substring (point) (point-max)) t)
204 attr (nreverse attr))))
205 211
206 (setq file (buffer-substring save-pos (point)))
207 (if (and host (string-match "%[0-9][0-9]" host)) 212 (if (and host (string-match "%[0-9][0-9]" host))
208 (setq host (url-unhex-string host))) 213 (setq host (url-unhex-string host)))
209 (vector prot user pass host port file refs attr full)))))) 214 (vector prot user pass host port file refs attr full))))))
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el
index 13425391647..8b9973acab1 100644
--- a/lisp/vc-hooks.el
+++ b/lisp/vc-hooks.el
@@ -52,11 +52,13 @@ BACKEND, use `vc-handled-backends'.")
52(defvar vc-header-alist ()) 52(defvar vc-header-alist ())
53(make-obsolete-variable 'vc-header-alist 'vc-BACKEND-header) 53(make-obsolete-variable 'vc-header-alist 'vc-BACKEND-header)
54 54
55(defvar vc-ignore-dir-regexp "\\`\\([\\/][\\/]\\|/net/\\|/afs/\\)\\'" 55(defcustom vc-ignore-dir-regexp "\\`\\([\\/][\\/]\\|/net/\\|/afs/\\)\\'"
56 "Regexp matching directory names that are not under VC's control. 56 "Regexp matching directory names that are not under VC's control.
57The default regexp prevents fruitless and time-consuming attempts 57The default regexp prevents fruitless and time-consuming attempts
58to determine the VC status in directories in which filenames are 58to determine the VC status in directories in which filenames are
59interpreted as hostnames.") 59interpreted as hostnames."
60 :type 'regexp
61 :group 'vc)
60 62
61(defcustom vc-handled-backends '(RCS CVS SVN SCCS Arch MCVS) 63(defcustom vc-handled-backends '(RCS CVS SVN SCCS Arch MCVS)
62 ;; Arch and MCVS come last because they are per-tree rather than per-dir. 64 ;; Arch and MCVS come last because they are per-tree rather than per-dir.
@@ -308,6 +310,9 @@ non-nil if FILE exists and its contents were successfully inserted."
308 "Find the root of a checked out project. 310 "Find the root of a checked out project.
309The function walks up the directory tree from FILE looking for WITNESS. 311The function walks up the directory tree from FILE looking for WITNESS.
310If WITNESS if not found, return nil, otherwise return the root." 312If WITNESS if not found, return nil, otherwise return the root."
313 ;; Represent /home/luser/foo as ~/foo so that we don't try to look for
314 ;; witnesses in /home or in /.
315 (setq file (abbreviate-file-name file))
311 (let ((root nil)) 316 (let ((root nil))
312 (while (not (or root 317 (while (not (or root
313 (equal file (setq file (file-name-directory file))) 318 (equal file (setq file (file-name-directory file)))
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index bef49d71a00..04e6b0751ee 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -1873,7 +1873,7 @@ If END is omitted, it defaults to the length of LIST."
1873 "History of field minibuffer edits.") 1873 "History of field minibuffer edits.")
1874 1874
1875(defun widget-field-prompt-internal (widget prompt initial history) 1875(defun widget-field-prompt-internal (widget prompt initial history)
1876 "Read string for WIDGET promptinhg with PROMPT. 1876 "Read string for WIDGET prompting with PROMPT.
1877INITIAL is the initial input and HISTORY is a symbol containing 1877INITIAL is the initial input and HISTORY is a symbol containing
1878the earlier input." 1878the earlier input."
1879 (read-string prompt initial history)) 1879 (read-string prompt initial history))
@@ -2864,7 +2864,7 @@ The first group should be the link itself."
2864 2864
2865(defcustom widget-documentation-link-p 'intern-soft 2865(defcustom widget-documentation-link-p 'intern-soft
2866 "Predicate used to test if a string is useful as a link. 2866 "Predicate used to test if a string is useful as a link.
2867The value should be a function. The function will be called one 2867The value should be a function. The function will be called with one
2868argument, a string, and should return non-nil if there should be a 2868argument, a string, and should return non-nil if there should be a
2869link for that string." 2869link for that string."
2870 :type 'function 2870 :type 'function
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 109ac9d704e..b059d238cdd 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,21 @@
12006-10-13 Chong Yidong <cyd@stupidchicken.com>
2
3 * frames.texi (Frame Titles): %c and %l are ignored in
4 frame-title-format.
5
62006-10-11 Richard Stallman <rms@gnu.org>
7
8 * keymaps.texi (Key Sequences): Clarify use of kbd.
9
102006-10-10 Kim F. Storm <storm@cua.dk>
11
12 * lists.texi (Sets And Lists): Add memql.
13
142006-10-03 Richard Stallman <rms@gnu.org>
15
16 * searching.texi (Char Classes): Document :multibyte: and :unibyte:.
17 Clarify :ascii: and :nonascii:.
18
12006-09-29 Juri Linkov <juri@jurta.org> 192006-09-29 Juri Linkov <juri@jurta.org>
2 20
3 * modes.texi (%-Constructs): Reorder coding systems in the 21 * modes.texi (%-Constructs): Reorder coding systems in the
@@ -18,10 +36,6 @@
18 * commands.texi (Command Loop Info): Explain how read-event affects 36 * commands.texi (Command Loop Info): Explain how read-event affects
19 this-command-keys. 37 this-command-keys.
20 38
212006-09-21 Kim F. Storm <storm@cua.dk>
22
23 * lists.texi (Sets And Lists): Add memql.
24
252006-09-20 Richard Stallman <rms@gnu.org> 392006-09-20 Richard Stallman <rms@gnu.org>
26 40
27 * os.texi (Timers): Clarify about REPEAT when timer is delayed. 41 * os.texi (Timers): Clarify about REPEAT when timer is delayed.
diff --git a/lispref/frames.texi b/lispref/frames.texi
index 0f243135cbb..617a2a1d05d 100644
--- a/lispref/frames.texi
+++ b/lispref/frames.texi
@@ -899,7 +899,8 @@ frame is redisplayed.
899@defvar frame-title-format 899@defvar frame-title-format
900This variable specifies how to compute a name for a frame when you have 900This variable specifies how to compute a name for a frame when you have
901not explicitly specified one. The variable's value is actually a mode 901not explicitly specified one. The variable's value is actually a mode
902line construct, just like @code{mode-line-format}. @xref{Mode Line 902line construct, just like @code{mode-line-format}, except that the
903@samp{%c} and @samp{%l} constructs are ignored. @xref{Mode Line
903Data}. 904Data}.
904@end defvar 905@end defvar
905 906
diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi
index a3bd320a676..6f4c2d9aceb 100644
--- a/lispref/keymaps.texi
+++ b/lispref/keymaps.texi
@@ -94,6 +94,9 @@ function key names with @samp{<@dots{}>}.
94(kbd "<f1> SPC") @result{} [f1 32] 94(kbd "<f1> SPC") @result{} [f1 32]
95(kbd "C-M-<down>") @result{} [C-M-down] 95(kbd "C-M-<down>") @result{} [C-M-down]
96@end example 96@end example
97
98This macro is not meant for use with arguments that vary---only
99with string constants.
97@end defmac 100@end defmac
98 101
99@node Keymap Basics 102@node Keymap Basics
@@ -169,6 +172,15 @@ keymap.
169This specifies one binding, for events of type @var{type}. Each 172This specifies one binding, for events of type @var{type}. Each
170ordinary binding applies to events of a particular @dfn{event type}, 173ordinary binding applies to events of a particular @dfn{event type},
171which is always a character or a symbol. @xref{Classifying Events}. 174which is always a character or a symbol. @xref{Classifying Events}.
175In this kind of binding, @var{binding} is a command.
176
177@item (@var{type} @var{item-name} .@: @var{binding})
178This specifies a binding which is also a menu item
179named @var{item-name}. @xref{Simple Menu Items}.
180
181@item (@var{type} menu-item .@: @var{details})
182This specifies a binding which is also a menu item and allows use of
183other features. @xref{Extended Menu Items}.
172 184
173@item (t .@: @var{binding}) 185@item (t .@: @var{binding})
174@cindex default key binding 186@cindex default key binding
@@ -1947,6 +1959,13 @@ This function returns the overall prompt string of @var{keymap},
1947or @code{nil} if it has none. 1959or @code{nil} if it has none.
1948@end defun 1960@end defun
1949 1961
1962The menu's items are the bindings in the keymap. Each binding
1963associates an event type to a definition, but the event types have no
1964significance for the menu appearance. (Usually we use pseudo-events,
1965symbols that the keyboard cannot generate, as the event types for menu
1966item bindings.) The menu is generated entirely from the bindings that
1967correspond in the keymap to these events.
1968
1950The order of items in the menu is the same as the order of bindings in 1969The order of items in the menu is the same as the order of bindings in
1951the keymap. Since @code{define-key} puts new bindings at the front, you 1970the keymap. Since @code{define-key} puts new bindings at the front, you
1952should define the menu items starting at the bottom of the menu and 1971should define the menu items starting at the bottom of the menu and
@@ -1967,8 +1986,8 @@ an existing menu, you can specify its position in the menu using
1967@node Simple Menu Items 1986@node Simple Menu Items
1968@subsubsection Simple Menu Items 1987@subsubsection Simple Menu Items
1969 1988
1970 The simpler and older way to define a menu keymap binding 1989 The simpler (and original) way to define a menu item is to bind some
1971looks like this: 1990event type (it doesn't matter what event type) to a binding like this:
1972 1991
1973@example 1992@example
1974(@var{item-string} . @var{real-binding}) 1993(@var{item-string} . @var{real-binding})
@@ -1984,25 +2003,26 @@ built with the Gtk+ toolkit.@footnote{In this case, the text is first
1984encoded using the @code{utf-8} coding system and then rendered by the 2003encoded using the @code{utf-8} coding system and then rendered by the
1985toolkit as it sees fit.} 2004toolkit as it sees fit.}
1986 2005
1987You can also supply a second string, called the help string, as follows: 2006 You can also supply a second string, called the help string, as follows:
1988 2007
1989@example 2008@example
1990(@var{item-string} @var{help} . @var{real-binding}) 2009(@var{item-string} @var{help} . @var{real-binding})
1991@end example 2010@end example
1992 2011
2012@noindent
1993@var{help} specifies a ``help-echo'' string to display while the mouse 2013@var{help} specifies a ``help-echo'' string to display while the mouse
1994is on that item in the same way as @code{help-echo} text properties 2014is on that item in the same way as @code{help-echo} text properties
1995(@pxref{Help display}). 2015(@pxref{Help display}).
1996 2016
1997As far as @code{define-key} is concerned, @var{item-string} and 2017 As far as @code{define-key} is concerned, @var{item-string} and
1998@var{help-string} are part of the event's binding. However, 2018@var{help-string} are part of the event's binding. However,
1999@code{lookup-key} returns just @var{real-binding}, and only 2019@code{lookup-key} returns just @var{real-binding}, and only
2000@var{real-binding} is used for executing the key. 2020@var{real-binding} is used for executing the key.
2001 2021
2002If @var{real-binding} is @code{nil}, then @var{item-string} appears in 2022 If @var{real-binding} is @code{nil}, then @var{item-string} appears in
2003the menu but cannot be selected. 2023the menu but cannot be selected.
2004 2024
2005If @var{real-binding} is a symbol and has a non-@code{nil} 2025 If @var{real-binding} is a symbol and has a non-@code{nil}
2006@code{menu-enable} property, that property is an expression that 2026@code{menu-enable} property, that property is an expression that
2007controls whether the menu item is enabled. Every time the keymap is 2027controls whether the menu item is enabled. Every time the keymap is
2008used to display a menu, Emacs evaluates the expression, and it enables 2028used to display a menu, Emacs evaluates the expression, and it enables
@@ -2010,12 +2030,12 @@ the menu item only if the expression's value is non-@code{nil}. When a
2010menu item is disabled, it is displayed in a ``fuzzy'' fashion, and 2030menu item is disabled, it is displayed in a ``fuzzy'' fashion, and
2011cannot be selected. 2031cannot be selected.
2012 2032
2013The menu bar does not recalculate which items are enabled every time you 2033 The menu bar does not recalculate which items are enabled every time you
2014look at a menu. This is because the X toolkit requires the whole tree 2034look at a menu. This is because the X toolkit requires the whole tree
2015of menus in advance. To force recalculation of the menu bar, call 2035of menus in advance. To force recalculation of the menu bar, call
2016@code{force-mode-line-update} (@pxref{Mode Line Format}). 2036@code{force-mode-line-update} (@pxref{Mode Line Format}).
2017 2037
2018You've probably noticed that menu items show the equivalent keyboard key 2038 You've probably noticed that menu items show the equivalent keyboard key
2019sequence (if any) to invoke the same command. To save time on 2039sequence (if any) to invoke the same command. To save time on
2020recalculation, menu display caches this information in a sublist in the 2040recalculation, menu display caches this information in a sublist in the
2021binding, like this: 2041binding, like this:
@@ -2035,9 +2055,9 @@ the item strings themselves, since that is redundant.
2035@kindex menu-item 2055@kindex menu-item
2036 2056
2037 An extended-format menu item is a more flexible and also cleaner 2057 An extended-format menu item is a more flexible and also cleaner
2038alternative to the simple format. It consists of a list that starts 2058alternative to the simple format. You define an event type with a
2039with the symbol @code{menu-item}. To define a non-selectable string, 2059binding that's a list starting with the symbol @code{menu-item}.
2040the item looks like this: 2060For a non-selectable string, the binding looks like this:
2041 2061
2042@example 2062@example
2043(menu-item @var{item-name}) 2063(menu-item @var{item-name})
@@ -2048,7 +2068,7 @@ A string starting with two or more dashes specifies a separator line;
2048see @ref{Menu Separators}. 2068see @ref{Menu Separators}.
2049 2069
2050 To define a real menu item which can be selected, the extended format 2070 To define a real menu item which can be selected, the extended format
2051item looks like this: 2071binding looks like this:
2052 2072
2053@example 2073@example
2054(menu-item @var{item-name} @var{real-binding} 2074(menu-item @var{item-name} @var{real-binding}
diff --git a/lispref/lists.texi b/lispref/lists.texi
index 1c6247d818c..17ed62a6d6c 100644
--- a/lispref/lists.texi
+++ b/lispref/lists.texi
@@ -1395,6 +1395,27 @@ The function @code{delq} offers a way to perform this operation
1395destructively. See @ref{Sets And Lists}. 1395destructively. See @ref{Sets And Lists}.
1396@end defun 1396@end defun
1397 1397
1398@defun memql object list
1399The function @code{member} tests to see whether @var{object} is a member
1400of @var{list}, comparing members with @var{object} using @code{eql},
1401so floating point elements are compared by value.
1402If @var{object} is a member, @code{memql} returns a list starting with
1403its first occurrence in @var{list}. Otherwise, it returns @code{nil}.
1404
1405Compare this with @code{memq}:
1406
1407@example
1408@group
1409(memql 1.2 '(1.1 1.2 1.3) ; @r{@code{1.2} and @code{1.2} are @code{eql}.}
1410 @result{} (1.2 1.3)
1411@end group
1412@group
1413(memq 1.2 '(1.1 1.2 1.3) ; @r{@code{1.2} and @code{1.2} are not @code{eq}.}
1414 @result{} nil
1415@end group
1416@end example
1417@end defun
1418
1398The following three functions are like @code{memq}, @code{delq} and 1419The following three functions are like @code{memq}, @code{delq} and
1399@code{remq}, but use @code{equal} rather than @code{eq} to compare 1420@code{remq}, but use @code{equal} rather than @code{eq} to compare
1400elements. @xref{Equality Predicates}. 1421elements. @xref{Equality Predicates}.
diff --git a/lispref/searching.texi b/lispref/searching.texi
index e730d3b29ec..204cfa1d319 100644
--- a/lispref/searching.texi
+++ b/lispref/searching.texi
@@ -515,7 +515,7 @@ and what they mean:
515 515
516@table @samp 516@table @samp
517@item [:ascii:] 517@item [:ascii:]
518This matches any @acronym{ASCII} (unibyte) character. 518This matches any @acronym{ASCII} character (codes 0--127).
519@item [:alnum:] 519@item [:alnum:]
520This matches any letter or digit. (At present, for multibyte 520This matches any letter or digit. (At present, for multibyte
521characters, it matches anything that has word syntax.) 521characters, it matches anything that has word syntax.)
@@ -535,8 +535,10 @@ characters, space, and the delete character.
535@item [:lower:] 535@item [:lower:]
536This matches any lower-case letter, as determined by 536This matches any lower-case letter, as determined by
537the current case table (@pxref{Case Tables}). 537the current case table (@pxref{Case Tables}).
538@item [:multibyte:]
539This matches any multibyte character (@pxref{Text Representations}).
538@item [:nonascii:] 540@item [:nonascii:]
539This matches any non-@acronym{ASCII} (multibyte) character. 541This matches any non-@acronym{ASCII} character.
540@item [:print:] 542@item [:print:]
541This matches printing characters---everything except @acronym{ASCII} control 543This matches printing characters---everything except @acronym{ASCII} control
542characters and the delete character. 544characters and the delete character.
@@ -546,6 +548,8 @@ characters, it matches anything that has non-word syntax.)
546@item [:space:] 548@item [:space:]
547This matches any character that has whitespace syntax 549This matches any character that has whitespace syntax
548(@pxref{Syntax Class Table}). 550(@pxref{Syntax Class Table}).
551@item [:unibyte:]
552This matches any unibyte character (@pxref{Text Representations}).
549@item [:upper:] 553@item [:upper:]
550This matches any upper-case letter, as determined by 554This matches any upper-case letter, as determined by
551the current case table (@pxref{Case Tables}). 555the current case table (@pxref{Case Tables}).
diff --git a/man/ChangeLog b/man/ChangeLog
index 5eb8e609c6e..4eb3f6b0018 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,54 @@
12006-10-13 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
2
3 * gnus.texi (Other modes): Fix typo. Add alternative index entry for
4 gnus-dired-attach.
5 (Selecting a Group): Fix typo.
6
72006-10-12 Roberto Rodr,Am(Bguez <lanubeblanca@googlemail.com>
8
9 * widget.texi: Fix typos (tiny change)
10
112006-10-11 Kim F. Storm <storm@cua.dk>
12
13 * emacs.texi (Acknowledgments): Use @dotless{i}.
14
152006-10-08 Nick Roberts <nickrob@snap.net.nz>
16
17 * building.texi (Breakpoints Buffer): Mention catchpoints.
18
192006-10-08 Kim F. Storm <storm@cua.dk>
20
21 * ack.texi (Acknowledgments): Update.
22
23 * emacs.texi (Acknowledgments): Fix bad @/ form.
24
252006-10-06 Reiner Steib <Reiner.Steib@gmx.de>
26
27 * gnus.texi (Image Enhancements): Update for Emacs 22.
28
29 * gnus-faq.texi ([1.3]): Update.
30
312006-10-06 Richard Stallman <rms@gnu.org>
32
33 * faq.texi (Displaying the current line or column):
34 Delete "As of Emacs 20".
35
362006-10-06 Romain Francoise <romain@orebokech.com>
37
38 * faq.texi (VM): VM works with Emacs 22 too.
39
402006-10-06 Richard Stallman <rms@gnu.org>
41
42 * ebrowse.texi: Remove Emacs version "21" from title.
43
442006-10-05 Kim F. Storm <storm@cua.dk>
45
46 * emacs.texi (Acknowledgments): Add more contributors.
47
482006-10-03 Richard Stallman <rms@gnu.org>
49
50 * emacs.texi (Acknowledgments): Update version and edition.
51
12006-10-02 Reiner Steib <Reiner.Steib@gmx.de> 522006-10-02 Reiner Steib <Reiner.Steib@gmx.de>
2 53
3 * gnus.texi (Foreign Groups): Say where change of editing commands are 54 * gnus.texi (Foreign Groups): Say where change of editing commands are
@@ -5,13 +56,13 @@
5 56
62006-10-01 Karl Berry <karl@gnu.org> 572006-10-01 Karl Berry <karl@gnu.org>
7 58
8 * custom.texi (Customization Groups): page break to keep example buffer 59 * custom.texi (Customization Groups): Page break to keep example buffer
9 on one page. 60 on one page.
10 61
112006-09-30 Karl Berry <karl@gnu.org> 622006-09-30 Karl Berry <karl@gnu.org>
12 63
13 * programs.texi (Basic Indent): @need to improve page break. 64 * programs.texi (Basic Indent): @need to improve page break.
14 * text.texi: rewording to improve page breaks, and use @LaTeX{}. 65 * text.texi: Rewording to improve page breaks, and use @LaTeX{}.
15 66
162006-09-29 Glenn Morris <rgm@gnu.org> 672006-09-29 Glenn Morris <rgm@gnu.org>
17 68
@@ -19,11 +70,11 @@
19 70
202006-09-29 Karl Berry <karl@gnu.org> 712006-09-29 Karl Berry <karl@gnu.org>
21 72
22 * windows.texi (Basic Window): remove forced @break, no longer 73 * windows.texi (Basic Window): Remove forced @break, no longer
23 desirable. 74 desirable.
24 * frames.texi (Frame Commands), 75 * frames.texi (Frame Commands),
25 * mark.texi (Marking Objects): reword to avoid bad page break. 76 * mark.texi (Marking Objects): Reword to avoid bad page break.
26 * display.texi (Auto Scrolling): use @tie{} to avoid bad line break. 77 * display.texi (Auto Scrolling): Use @tie{} to avoid bad line break.
27 78
282006-09-19 Richard Stallman <rms@gnu.org> 792006-09-19 Richard Stallman <rms@gnu.org>
29 80
@@ -91,8 +142,8 @@
91 142
922006-09-01 Eli Zaretskii <eliz@gnu.org> 1432006-09-01 Eli Zaretskii <eliz@gnu.org>
93 144
94 * rcirc.texi (Internet Relay Chat, Useful IRC commands): Don't use 145 * rcirc.texi (Internet Relay Chat, Useful IRC commands):
95 @indicateurl. 146 Don't use @indicateurl.
96 147
97 * cc-mode.texi (Subword Movement): Don't use @headitem. 148 * cc-mode.texi (Subword Movement): Don't use @headitem.
98 (Custom Braces, Clean-ups): Don't use @tie. 149 (Custom Braces, Clean-ups): Don't use @tie.
@@ -101,8 +152,8 @@
101 152
102 Sync with Tramp 2.0.54. 153 Sync with Tramp 2.0.54.
103 154
104 * tramp.texi (Bug Reports): The Tramp mailing list is moderated 155 * tramp.texi (Bug Reports): The Tramp mailing list is moderated now.
105 now. Suggested by Adrian Phillips <a.phillips@met.no>. 156 Suggested by Adrian Phillips <a.phillips@met.no>.
106 157
1072006-08-28 Richard Stallman <rms@gnu.org> 1582006-08-28 Richard Stallman <rms@gnu.org>
108 159
diff --git a/man/ack.texi b/man/ack.texi
index 67c731d6174..2b76a7073d8 100644
--- a/man/ack.texi
+++ b/man/ack.texi
@@ -34,6 +34,11 @@ Jay K.@: Adams wrote @file{jka-compr.el}, providing automatic
34decompression and recompression for compressed files. 34decompression and recompression for compressed files.
35 35
36@item 36@item
37Ralf Angeli wrote @file{scroll-lock.el}, a minor mode which keeps the
38point vertically fixed by scrolling the window when moving up and down
39in the buffer.
40
41@item
37Joe Arceneaux wrote the original text property implementation, and 42Joe Arceneaux wrote the original text property implementation, and
38implemented support for X11. 43implemented support for X11.
39 44
@@ -62,6 +67,11 @@ footnotes in email messages, and @file{gnus-audio.el} which provides
62sound effects for Gnus. 67sound effects for Gnus.
63 68
64@item 69@item
70Alexander L. Belikoff, Sergey Berezin, David Edmondson, Andreas
71Fuchs, Mario Lang, Gergely Nagy, Michael Olson, and Alex Schroeder
72contributed ERC, an advanced Internet Relay Chat client.
73
74@item
65Boaz Ben-Zvi wrote @file{profile.el}, to time Emacs Lisp functions. 75Boaz Ben-Zvi wrote @file{profile.el}, to time Emacs Lisp functions.
66 76
67@item 77@item
@@ -173,6 +183,10 @@ Doug Cutting and Jamie Zawinski wrote @file{disass.el}, a disassembler
173for compiled Emacs Lisp code. 183for compiled Emacs Lisp code.
174 184
175@item 185@item
186Mathias Dahl wrote @file{tumme.el}, a package for viewing image files
187as ``thumbnails.''
188
189@item
176Michael DeCorte wrote @file{emacs.csh}, a C-shell script that starts a 190Michael DeCorte wrote @file{emacs.csh}, a C-shell script that starts a
177new Emacs job, or restarts a paused Emacs if one exists. 191new Emacs job, or restarts a paused Emacs if one exists.
178 192
@@ -368,8 +382,9 @@ taking the file name from the buffer.
368Odd Gripenstam wrote @file{dcl-mode.el} for editing DCL command files. 382Odd Gripenstam wrote @file{dcl-mode.el} for editing DCL command files.
369 383
370@item 384@item
371Kai Gro@ss{}johann wrote the Tramp package, which provides transparent 385Kai Gro@ss{}johann and Michael Albinus wrote the Tramp package, which
372remote file editing using rcp, ssh, and other network protocols. 386provides transparent remote file editing using rcp, ssh, ftp, and other
387network protocols.
373 388
374@item 389@item
375Michael Gschwind wrote @file{iso-cvt.el}, a package to convert between 390Michael Gschwind wrote @file{iso-cvt.el}, a package to convert between
@@ -398,6 +413,9 @@ Chris Hanson wrote @file{netuname.el}, a package to use HP-UX's Remote
398File Access facility from Emacs. 413File Access facility from Emacs.
399 414
400@item 415@item
416Jesper Harder wrote @file{yenc.el}, for decoding yenc encoded messages.
417
418@item
401K. Shane Hartman wrote: 419K. Shane Hartman wrote:
402 420
403@itemize @minus 421@itemize @minus
@@ -447,6 +465,8 @@ Tom Houlder wrote @file{mantemp.el}, which generates manual C@t{++}
447template instantiations. 465template instantiations.
448 466
449@item 467@item
468Joakim Hove wrote @file{html2text.el}, a html to plain text converter.
469@item
450Denis Howe wrote @file{browse-url.el}, a package for invoking a WWW 470Denis Howe wrote @file{browse-url.el}, a package for invoking a WWW
451browser to display a URL. 471browser to display a URL.
452 472
@@ -462,7 +482,8 @@ Seiichiro Inoue improved Emacs's XIM support.
462 482
463@item 483@item
464Ulf Jasper wrote @file{icalendar.el}, a package for converting Emacs 484Ulf Jasper wrote @file{icalendar.el}, a package for converting Emacs
465diary entries to and from the iCalendar format. 485diary entries to and from the iCalendar format, and
486@file{newsticker.el}, an RSS and Atom based Newsticker.
466 487
467@item 488@item
468Kyle Jones wrote @file{life.el}, a package to play Conway's ``life'' game, 489Kyle Jones wrote @file{life.el}, a package to play Conway's ``life'' game,
@@ -493,6 +514,10 @@ in messages,
493@end itemize 514@end itemize
494 515
495@item 516@item
517Arne J@/orgensen wrote @file{latexenc.el}, a package to
518automatically guess the correct coding system in LaTeX files.
519
520@item
496Tomoji Kagatani implemented @file{smtpmail.el}, used for sending out 521Tomoji Kagatani implemented @file{smtpmail.el}, used for sending out
497mail with SMTP. 522mail with SMTP.
498 523
@@ -545,7 +570,7 @@ David M.@: Koppelman wrote @file{hi-lock.el}, a minor mode for
545interactive automatic highlighting of parts of the buffer text. 570interactive automatic highlighting of parts of the buffer text.
546 571
547@item 572@item
548Koseki Yoshinori wrote @file{iinline.el}, a minor mode for displaying 573Koseki Yoshinori wrote @file{iimage.el}, a minor mode for displaying
549inline images. 574inline images.
550 575
551@item 576@item
@@ -666,8 +691,16 @@ typical word processors,
666@end itemize 691@end itemize
667 692
668@item 693@item
669Eric Ludlam wrote the Speedbar package and @file{checkdoc.el}, a package 694Eric Ludlam wrote the Speedbar package and the following packages:
670for checking doc strings in Emacs Lisp programs. 695
696@itemize @minus
697@item
698@file{checkdoc.el}, for checking doc strings in Emacs Lisp programs,
699@item
700@file{dframe.el}, providing dedicatd frame support modes, and
701@item
702@file{ezimage.el}, a generalized way to place images over text.
703@end itemize
671 704
672@item 705@item
673Alan Mackenzie wrote the integrated AWK support in CC Mode. 706Alan Mackenzie wrote the integrated AWK support in CC Mode.
@@ -841,6 +874,10 @@ text, and @file{iris-ansi.el}, support for running Emacs on SGI's
841Jurgen Nickelsen wrote @file{ws-mode.el}, providing WordStar emulation. 874Jurgen Nickelsen wrote @file{ws-mode.el}, providing WordStar emulation.
842 875
843@item 876@item
877Hrvoje Niksic wrote @file{savehist.el}, for saving the minibuffer
878history between Emacs sessions.
879
880@item
844Jeff Norden wrote @file{kermit.el}, a package to help the Kermit 881Jeff Norden wrote @file{kermit.el}, a package to help the Kermit
845dialup communications program run comfortably in an Emacs shell buffer. 882dialup communications program run comfortably in an Emacs shell buffer.
846 883
@@ -932,10 +969,18 @@ Christian Plaunt wrote @file{soundex.el}, an implementation of the
932Soundex algorithm for comparing English words by their pronunciation. 969Soundex algorithm for comparing English words by their pronunciation.
933 970
934@item 971@item
935David Ponce wrote @file{recentf.el}, a package that puts a menu of 972David Ponce wrote:
936recently visited files in the Emacs menu bar, and 973
974@itemize @minus
975@item
976@file{recentf.el}, a package that puts a menu of recently visited
977files in the Emacs menu bar,
978@item
937@file{ruler-mode.el}, a minor mode for displaying a ruler in the 979@file{ruler-mode.el}, a minor mode for displaying a ruler in the
938header line. 980header line, and
981@item
982@file{tree-widget.el}, a package to display hierarchical data structures.
983@end itemize
939 984
940@item 985@item
941Francesco A.@: Potorti wrote @file{cmacexp.el}, providing a command which 986Francesco A.@: Potorti wrote @file{cmacexp.el}, providing a command which
@@ -1001,6 +1046,10 @@ Oram contributed to its documentation. Reingold has also contributed to
1001F.@: Schelter, Dick King, Stephen Gildea, Michael Prange, and Jacob Gore. 1046F.@: Schelter, Dick King, Stephen Gildea, Michael Prange, and Jacob Gore.
1002 1047
1003@item 1048@item
1049David Reitter wrote @file{mailclient.el} which can send mail via the
1050system's designated mail client.
1051
1052@item
1004Alex Rezinsky contributed @file{which-func.el}, a mode that shows the 1053Alex Rezinsky contributed @file{which-func.el}, a mode that shows the
1005name of the current function in the mode line. 1054name of the current function in the mode line.
1006 1055
@@ -1239,6 +1288,10 @@ Naoto Takahashi wrote @file{utf-8.el}, support for encoding and
1239decoding UTF-8 data. 1288decoding UTF-8 data.
1240 1289
1241@item 1290@item
1291Luc Teirlinck wrote @file{help-at-pt.el}, providing local help through
1292the keyboard.
1293
1294@item
1242Jean-Philippe Theberge wrote @file{thumbs.el}, a package for viewing 1295Jean-Philippe Theberge wrote @file{thumbs.el}, a package for viewing
1243image files as ``thumbnails.'' 1296image files as ``thumbnails.''
1244 1297
@@ -1262,8 +1315,10 @@ editing Tcl/Tk source files and running a Tcl interpreter as an Emacs
1262subprocess. 1315subprocess.
1263 1316
1264@item 1317@item
1318Eli Tziperman wrote @file{rmail-spam-filter.el}, a spam filter for RMAIL.
1319@item
1265Daiki Ueno wrote @file{starttls.el}, support for Transport Layer 1320Daiki Ueno wrote @file{starttls.el}, support for Transport Layer
1266Security protocol. 1321Security protocol, and the PGG package adding GnuPG and PGP support.
1267 1322
1268@item 1323@item
1269Masanobu Umeda wrote: 1324Masanobu Umeda wrote:
@@ -1422,7 +1477,7 @@ to exit with valuable buffers unsaved.
1422 1477
1423@item 1478@item
1424Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU 1479Masatake Yamato wrote @file{ld-script.el}, an editing mode for GNU
1425linker scripts. 1480linker scripts, and contributed subword handling in CC mode.
1426 1481
1427@item 1482@item
1428Jonathan Yavner wrote @file{testcover.el}, a package for keeping track 1483Jonathan Yavner wrote @file{testcover.el}, a package for keeping track
@@ -1430,6 +1485,8 @@ of the testing status of Emacs Lisp code, and the SES spreadsheet
1430package. 1485package.
1431 1486
1432@item 1487@item
1488Ryan Yeske wrote @file{rcirc.el} a simple Internet Relay Chat client.
1489@item
1433Ilya Zakharevich and Bob Olson contributed @file{cperl-mode.el}, a major 1490Ilya Zakharevich and Bob Olson contributed @file{cperl-mode.el}, a major
1434mode for editing Perl code. Ilya Zakharevich also wrote @file{tmm.el}, 1491mode for editing Perl code. Ilya Zakharevich also wrote @file{tmm.el},
1435a mode for accessing the Emacs menu bar on a text-mode terminal. 1492a mode for accessing the Emacs menu bar on a text-mode terminal.
diff --git a/man/building.texi b/man/building.texi
index 451246ae55d..a92810e617d 100644
--- a/man/building.texi
+++ b/man/building.texi
@@ -964,8 +964,8 @@ for example, when re-setting a breakpoint.
964@node Breakpoints Buffer 964@node Breakpoints Buffer
965@subsubsection Breakpoints Buffer 965@subsubsection Breakpoints Buffer
966 966
967 The breakpoints buffer shows the existing breakpoints and 967 The breakpoints buffer shows the existing breakpoints, watchpoints and
968watchpoints (@pxref{Breakpoints,,, gdb, The GNU debugger}). It has 968catchpoints (@pxref{Breakpoints,,, gdb, The GNU debugger}). It has
969these special commands, which mostly apply to the @dfn{current 969these special commands, which mostly apply to the @dfn{current
970breakpoint}, the breakpoint which point is on. 970breakpoint}, the breakpoint which point is on.
971 971
diff --git a/man/ebrowse.texi b/man/ebrowse.texi
index e1d2a86d387..200b2fe6075 100644
--- a/man/ebrowse.texi
+++ b/man/ebrowse.texi
@@ -41,7 +41,7 @@ license to the document, as described in section 6 of the license.
41@titlepage 41@titlepage
42@title Ebrowse User's Manual 42@title Ebrowse User's Manual
43@sp 4 43@sp 4
44@subtitle Ebrowse/Emacs 21 44@subtitle Ebrowse/Emacs
45@sp 1 45@sp 1
46@subtitle May 2000 46@subtitle May 2000
47@sp 5 47@sp 5
diff --git a/man/emacs.texi b/man/emacs.texi
index 7e84c869d1f..0249cac3cc3 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -4,8 +4,8 @@
4@settitle GNU Emacs Manual 4@settitle GNU Emacs Manual
5 5
6@c The edition number appears in several places in this file 6@c The edition number appears in several places in this file
7@set EDITION Fourteenth 7@set EDITION Sixteenth
8@set EMACSVER 22.0.50 8@set EMACSVER 22.1
9 9
10@copying 10@copying
11This is the @value{EDITION} edition of the @cite{GNU Emacs Manual}, 11This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},
@@ -1023,70 +1023,83 @@ occasionally, or subscribing to periodic updates.
1023@node Acknowledgments, Intro, Distrib, Top 1023@node Acknowledgments, Intro, Distrib, Top
1024@unnumberedsec Acknowledgments 1024@unnumberedsec Acknowledgments
1025 1025
1026Contributors to GNU Emacs include Per Abrahamsen, Tomas Abrahamsson, 1026Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas
1027Jay K.@: Adams, Joe Arceneaux, Miles Bader, David Bakhash, Eli 1027Abrahamsson, Jay K.@: Adams, Michael Albinus, Nagy Andras, Ralf
1028Barzilay, Steven L.@: Baur, Boaz Ben-Zvi, Ray Blaak, Jim Blandy, Per 1028Angeli, Joe Arceneaux, Miles Bader, David Bakhash, Juanma Barranquero,
1029Bothner, Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, 1029Eli Barzilay, Steven L.@: Baur, Jay Belanger, Alexander L.@: Belikoff,
1030Kevin Broadey, Vincent Broman, David M.@: Brown, Georges Brun-Cottan, 1030Boaz Ben-Zvi, Karl Berry, Ray Blaak, Jim Blandy, Johan Bockg@aa{}rd,
1031W@l{}odek Bzyl, Bill Carpenter, Per Cederqvist, Hans Chalupsky, Chris 1031Per Bothner, Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel
1032Chase, Bob Chassell, Andrew Choi, James Clark, Mike Clarkson, Glynn 1032Briot, Kevin Broadey, Vincent Broman, David M.@: Brown, Georges
1033Clements, Andrew Csillag, Doug Cutting, Michael DeCorte, Gary Delp, 1033Brun-Cottan, Joe Buehler, W@l{}odek Bzyl, Bill Carpenter, Per
1034Matthieu Devin, Eri Ding, Jan Dj@"{a}rv, Carsten Dominik, Scott 1034Cederqvist, Hans Chalupsky, Chris Chase, Bob Chassell, Andrew Choi,
1035Draves, Benjamin Drieu, Viktor Dukhovni, John Eaton, Rolf Ebert, 1035Sacha Chua, James Clark, Mike Clarkson, Glynn Clements, Andrew
1036Stephen Eglen, Torbj@"orn Einarsson, Tsugutomo Enami, Hans Henrik 1036Csillag, Doug Cutting, Mathias Dahl, Satyaki Das, Michael DeCorte,
1037Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, Oscar 1037Gary Delp, Matthieu Devin, Eri Ding, Jan Dj@"{a}rv, Carsten Dominik,
1038Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Noah Friedman, 1038Scott Draves, Benjamin Drieu, Viktor Dukhovni, John Eaton, Rolf Ebert,
1039Hallvard Furuseth, Keith Gabryelski, Kevin Gallagher, Kevin Gallo, 1039Paul Eggert, Stephen Eglen, Torbj@"orn Einarsson, Tsugutomo Enami,
1040Juan Le@'{o}n Lahoz Garc@'{i}a, Howard Gayle, Stephen Gildea, Julien 1040Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach,
1041Gilles, David Gillespie, Bob Glickstein, Boris Goldowsky, Michelangelo 1041Oscar Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Romain
1042Grigni, Odd Gripenstam, Kai Gro@ss{}johann, Michael Gschwind, Henry 1042Francoise, Noah Friedman, Andreas Fuchs, Hallvard Furuseth, Keith
1043Guillaume, Doug Gwyn, Ken'ichi Handa, Chris Hanson, K. Shane Hartman, 1043Gabryelski, Peter S.@: Galbraith, Kevin Gallagher, Kevin Gallo, Juan
1044John Heidemann, Jon K.@: Hellan, Markus Heritsch, Karl Heuer, Manabu 1044Le@'{o}n Lahoz Garc@'{@dotless{i}}a, Howard Gayle, Stephen Gildea, Julien
1045Higashida, Anders Holst, Kurt Hornik, Tom Houlder, Denis Howe, Lars 1045Gilles, David Gillespie, Bob Glickstein, Deepak Goel, Boris Goldowsky,
1046Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Ulf Jasper, Michael 1046Michelangelo Grigni, Odd Gripenstam, Kai Gro@ss{}johann, Michael
1047K. Johnson, Kyle Jones, Terry Jones, Simon Josefsson, Tomoji Kagatani, 1047Gschwind, Henry Guillaume, Doug Gwyn, Ken'ichi Handa, Lars Hansen,
1048Brewster Kahle, David Kaufman, Henry Kautz, Taichi Kawabata, Howard 1048Chris Hanson, K. Shane Hartman, John Heidemann, Jon K.@: Hellan,
1049Kaye, Michael Kifer, Richard King, Peter Kleiweg, Larry K.@: Kolodney, 1049Jesper Harder, Markus Heritsch, Karl Heuer, Manabu Higashida, Anders
1050Pavel Kobiakov, Larry K.@: Kolodney, David M.@: Koppelman, Koseki 1050Holst, Jeffrey C.@: Honig, Kurt Hornik, Tom Houlder, Joakim Hove,
1051Yoshinori, Robert Krawitz, Sebastian Kremer, Ryszard Kubiak, Geoff 1051Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Pavel
1052Kuenning, David K@aa{}gedal, Daniel LaLiberte, Aaron Larson, James 1052Janik, Paul Jarc, Ulf Jasper, Michael K. Johnson, Kyle Jones, Terry
1053R.@: Larus, Vinicius Jose Latorre, Frederic Lepied, Peter Liljenberg, 1053Jones, Simon Josefsson, Arne J@/orgensen, Tomoji Kagatani, Brewster
1054Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, Dave 1054Kahle, Lute Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi
1055Love, Eric Ludlam, Alan Mackenzie, Christopher J.@: Madsen, 1055Kawabata, Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg,
1056Neil M.@: Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon 1056Shuhei Kobayashi, Pavel Kobiakov, Larry K.@: Kolodney, David M.@:
1057Marshall, Bengt Martensson, Charlie Martin, Thomas May, Roland McGrath, 1057Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer, Ryszard
1058Will Mengarini, David Megginson, Wayne Mesard, Brad Miller, Richard 1058Kubiak, Geoff Kuenning, David K@aa{}gedal, Daniel LaLiberte, Mario
1059Lang, Aaron Larson, James R.@: Larus, Vinicius Jose Latorre, Werner
1060Lemberg, Frederic Lepied, Peter Liljenberg, Lars Lindberg, Chris
1061Lindblad, Anders Lindgren, Thomas Link, Juri Linkov, Francis Litterio,
1062Emilio C. Lopes, Dave Love, Sascha L@"{u}decke, Eric Ludlam,Alan
1063Mackenzie, Christopher J.@: Madsen, Neil M.@: Mager, Ken Manheimer,
1064Bill Mann, Brian Marick, Simon Marshall, Bengt Martensson, Charlie
1065Martin, Thomas May, Roland McGrath, Will Mengarini, David Megginson,
1066Ben A. Mesander, Wayne Mesard, Brad Miller, Lawrence Mitchell, Richard
1059Mlynarik, Gerd Moellmann, Stefan Monnier, Morioka Tomohiko, Keith 1067Mlynarik, Gerd Moellmann, Stefan Monnier, Morioka Tomohiko, Keith
1060Moore, Sen Nagata, Erik Naggum, Thomas Neumann, Thien-Thi Nguyen, Mike 1068Moore, Glenn Morris, Diane Murray, Sen Nagata, Erik Naggum, Thomas
1061Newton, Jurgen Nickelsen, Dan Nicolaescu, Jeff Norden, Andrew Norman, 1069Neumann, Thien-Thi Nguyen, Mike Newton, Jurgen Nickelsen, Dan
1062Alexandre Oliva, Bob Olson, Takaaki Ota, Pieter E.@: J.@: Pareit, 1070Nicolaescu, Hrvoje Niksic, Jeff Norden, Andrew Norman, Alexandre
1071Oliva, Bob Olson, Michael Olson, Takaaki Ota, Pieter E.@: J.@: Pareit,
1063David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William 1072David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William
1064M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard 1073M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@:
1065L.@: Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco 1074Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco
1066A. Potorti, Michael D. Prange, Mukesh Prasad, Marko Rahamaa, Ashwin 1075A.@: Potorti, Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko
1067Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, Alex Rezinsky, 1076Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold,
1068Rob Riepel, Nick Roberts, Roland B.@: Roberts, John Robinson, Danny 1077Alex Rezinsky, Rob Riepel, David Reitter, Nick Roberts, Roland B.@:
1069Roozendaal, William Rosenblatt, Guillermo J.@: Rozas, Ivar Rummelhoff, 1078Roberts, John Robinson, Danny Roozendaal, William Rosenblatt,
1070Jason Rumney, Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko 1079Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney,
1071Sato, Holger Schauer, William Schelter, Ralph Schleicher, Gregor 1080Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko Sato, Jorgen
1081Schaefer, Holger Schauer, William Schelter, Ralph Schleicher, Gregor
1072Schmid, Michael Schmidt, Ronald S. Schnell, Philippe Schnoebelen, Jan 1082Schmid, Michael Schmidt, Ronald S. Schnell, Philippe Schnoebelen, Jan
1073Schormann, Alex Schroeder, Stephen Schoef, Randal Schwartz, Oliver 1083Schormann, Alex Schroeder, Stephen Schoef, Raymond Scholz, Randal
1074Seidel, Manuel Serrano, Hovav Shacham, Stanislav Shalunov, Mark 1084Schwartz, Oliver Seidel, Manuel Serrano, Hovav Shacham, Stanislav
1075Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund, Rick Sladkey, 1085Shalunov, Mark Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund,
1076Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith, Andre Spiegel, 1086Rick Sladkey, Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith,
1077Michael Staats, William Sommerfeld, Michael Staats, Sam Steingold, Ake 1087Andre Spiegel, Michael Staats, William Sommerfeld, Michael Staats,
1078Stenhoff, Peter Stephenson, Ken Stevens, Jonathan Stigelman, Martin 1088Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken
1079Stjernholm, Kim F.@: Storm, Steve Strassman, Olaf Sylvester, Naoto 1089Stevens, Jonathan Stigelman, Martin Stjernholm, Kim F.@: Storm, Steve
1080Takahashi, Jean-Philippe Theberge, Jens T.@: Berger Thielemann, 1090Strassman, Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jean-Philippe
1081Spencer Thomas, Jim Thompson, Tom Tromey, Daiki Ueno, Masanobu Umeda, 1091Theberge, Jens T.@: Berger Thielemann, Spencer Thomas, Jim Thompson,
1082Rajesh Vaidheeswarran, Neil W.@: Van Dyke, Didier Verna, Ulrik Vieth, 1092Luc Teirlinck, Tom Tromey, Enami Tsugutomo, Eli Tziperman, Daiki Ueno,
1083Geoffrey Voelker, Johan Vromans, Inge Wallin, Colin Walters, Barry 1093Masanobu Umeda, Rajesh Vaidheeswarran, Neil W.@: Van Dyke, Didier
1084Warsaw, Morten Welinder, Joseph Brian Wells, Rodney Whitby, John 1094Verna, Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Inge Wallin, John
1085Wiegley, Ed Wilkinson, Mike Williams, Bill Wohler, Steven A. Wood, 1095Paul Wallington, Colin Walters, Barry Warsaw, Morten Welinder, Joseph
1086Dale R.@: Worley, Francis J.@: Wright, Felix S. T. Wu, Tom Wurgler, 1096Brian Wells, Rodney Whitby, John Wiegley, Ed Wilkinson, Mike Williams,
1087Masatake Yamato, Jonathan Yavner, Ilya Zakharevich, Milan Zamazal, 1097Bill Wohler, Steven A. Wood, Dale R.@: Worley, Francis J.@: Wright,
1088Victor Zandy, Eli Zaretskii, Jamie Zawinski, Shenghuo Zhu, Ian 1098Felix S. T. Wu, Tom Wurgler, Katsumi Yamaoka, Masatake Yamato,
1089T.@: Zimmermann, Reto Zimmermann, Neal Ziring, and Detlev Zundel. 1099Jonathan Yavner, Ryan Yeske, Chong Yidong, Ilya Zakharevich, Milan
1100Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Shenghuo Zhu,
1101Ian T.@: Zimmermann, Reto Zimmermann, Neal Ziring, Teodor Zlatanov,
1102and Detlev Zundel.
1090@end iftex 1103@end iftex
1091 1104
1092@node Intro, Glossary, Distrib, Top 1105@node Intro, Glossary, Distrib, Top
diff --git a/man/faq.texi b/man/faq.texi
index 1230fff62bb..69feaecc2b5 100644
--- a/man/faq.texi
+++ b/man/faq.texi
@@ -1382,7 +1382,7 @@ initialization disables it.) Note that Emacs will not display the line
1382number if the buffer's size in bytes is larger than the value of the 1382number if the buffer's size in bytes is larger than the value of the
1383variable @code{line-number-display-limit}. 1383variable @code{line-number-display-limit}.
1384 1384
1385As of Emacs 20, you can similarly display the current column with 1385You can similarly display the current column with
1386@kbd{M-x column-number-mode}, or by putting the form 1386@kbd{M-x column-number-mode}, or by putting the form
1387 1387
1388@lisp 1388@lisp
@@ -3848,8 +3848,8 @@ Java code. It is distributed with Emacs, but has
3848Or send reports to @email{bug-vm@@wonderworks.com} 3848Or send reports to @email{bug-vm@@wonderworks.com}
3849@end table 3849@end table
3850 3850
3851VM 7 works well with Emacs 21. Older versions of VM suitable for use 3851VM 7 works well with Emacs 21 and Emacs 22. Older versions of VM
3852with older versions of Emacs are available from 3852suitable for use with older versions of Emacs are available from
3853@uref{ftp://ftp.wonderworks.com/pub/vm/, the same FTP site}. 3853@uref{ftp://ftp.wonderworks.com/pub/vm/, the same FTP site}.
3854 3854
3855 3855
diff --git a/man/gnus-faq.texi b/man/gnus-faq.texi
index e94036dc503..861bab438d6 100644
--- a/man/gnus-faq.texi
+++ b/man/gnus-faq.texi
@@ -172,13 +172,14 @@ Where and how to get Gnus?
172 172
173@subsubheading Answer 173@subsubheading Answer
174 174
175The latest released version of Gnus isn't included in 175Gnus is released independent from releases of Emacs and XEmacs.
176Emacs 21, therefor you should get the Gnus tarball from 176Therefore, the version bundled with Emacs or the version in XEmacs'
177@uref{http://www.gnus.org/dist/gnus.tar.gz} 177package system might not be up to date (e.g. Gnus 5.9 bundled with Emacs
178or via anonymous FTP from 17820 is outdated).
179@c
180You can get the latest released version of Gnus from
181@uref{http://www.gnus.org/dist/gnus.tar.gz} or via anonymous FTP from
179@uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}. 182@uref{ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz}.
180If you use XEmacs instead of Emacs you can use XEmacs'
181package system instead.
182 183
183@node [1.4] 184@node [1.4]
184@subsubheading Question 1.4 185@subsubheading Question 1.4
diff --git a/man/gnus.texi b/man/gnus.texi
index 973ba121f6f..a929bb2b208 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -2139,7 +2139,7 @@ If @code{gnus-auto-select-first} is non-@code{nil}, select an article
2139automatically when entering a group with the @kbd{SPACE} command. 2139automatically when entering a group with the @kbd{SPACE} command.
2140Which article this is is controlled by the 2140Which article this is is controlled by the
2141@code{gnus-auto-select-subject} variable. Valid values for this 2141@code{gnus-auto-select-subject} variable. Valid values for this
2142variable is: 2142variable are:
2143 2143
2144@table @code 2144@table @code
2145 2145
@@ -22137,8 +22137,8 @@ It takes the group name as a parameter.
22137@section Image Enhancements 22137@section Image Enhancements
22138 22138
22139XEmacs, as well as Emacs 21@footnote{Emacs 21 on MS Windows doesn't 22139XEmacs, as well as Emacs 21@footnote{Emacs 21 on MS Windows doesn't
22140support images yet.}, is able to display pictures and stuff, so Gnus has 22140support images, Emacs 22 does.} and up, are able to display pictures and
22141taken advantage of that. 22141stuff, so Gnus has taken advantage of that.
22142 22142
22143@menu 22143@menu
22144* X-Face:: Display a funky, teensy black-and-white image. 22144* X-Face:: Display a funky, teensy black-and-white image.
@@ -24471,7 +24471,7 @@ Save table: (spam-stat-save)
24471@subsection Dired 24471@subsection Dired
24472@cindex dired 24472@cindex dired
24473 24473
24474@code{gnus-dired-minor-mode} provided some useful functions for dired 24474@code{gnus-dired-minor-mode} provides some useful functions for dired
24475buffers. It is enabled with 24475buffers. It is enabled with
24476@lisp 24476@lisp
24477(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode) 24477(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
@@ -24480,6 +24480,7 @@ buffers. It is enabled with
24480@table @kbd 24480@table @kbd
24481@item C-c C-m C-a 24481@item C-c C-m C-a
24482@findex gnus-dired-attach 24482@findex gnus-dired-attach
24483@cindex attachments, selection via dired
24483Send dired's marked files as an attachment (@code{gnus-dired-attach}). 24484Send dired's marked files as an attachment (@code{gnus-dired-attach}).
24484You will be prompted for a message buffer. 24485You will be prompted for a message buffer.
24485 24486
diff --git a/man/widget.texi b/man/widget.texi
index 8a49fd3dadd..e273d253fb3 100644
--- a/man/widget.texi
+++ b/man/widget.texi
@@ -158,7 +158,7 @@ it will be autoloaded when needed.
158@comment node-name, next, previous, up 158@comment node-name, next, previous, up
159@section User Interface 159@section User Interface
160 160
161A form consist of read only text for documentation and some fields, 161A form consists of read only text for documentation and some fields,
162where each field contains two parts, a tag and a value. The tags are 162where each field contains two parts, a tag and a value. The tags are
163used to identify the fields, so the documentation can refer to the 163used to identify the fields, so the documentation can refer to the
164@samp{foo field}, meaning the field tagged with @samp{Foo}. Here is an 164@samp{foo field}, meaning the field tagged with @samp{Foo}. Here is an
@@ -195,7 +195,7 @@ Select one:
195@b{[Apply Form]} @b{[Reset Form]} 195@b{[Apply Form]} @b{[Reset Form]}
196@end example 196@end example
197 197
198The top level widgets in is example are tagged @samp{Name}, 198The top level widgets in this example are tagged @samp{Name},
199@samp{Choose}, @samp{Address}, @samp{_other work_}, @samp{Numbers}, 199@samp{Choose}, @samp{Address}, @samp{_other work_}, @samp{Numbers},
200@samp{Select multiple}, @samp{Select one}, @samp{[Apply Form]}, and 200@samp{Select multiple}, @samp{Select one}, @samp{[Apply Form]}, and
201@samp{[Reset Form]}. There are basically two things the user can do 201@samp{[Reset Form]}. There are basically two things the user can do
@@ -277,19 +277,19 @@ The list is created by the @code{editable-list} widget.
277@cindex embedded buttons 277@cindex embedded buttons
278@item Embedded Buttons 278@item Embedded Buttons
279The @samp{@b{_other work_}} is an example of an embedded 279The @samp{@b{_other work_}} is an example of an embedded
280button. Embedded buttons are not associated with a fields, but can serve 280button. Embedded buttons are not associated with any fields, but can serve
281any purpose, such as implementing hypertext references. They are 281any purpose, such as implementing hypertext references. They are
282usually created by the @code{link} widget. 282usually created by the @code{link} widget.
283@item The @samp{@b{[ ]}} and @samp{@b{[X]}} buttons 283@item The @samp{@b{[ ]}} and @samp{@b{[X]}} buttons
284Activating one of these will convert it to the other. This is useful 284Activating one of these will convert it to the other. This is useful
285for implementing multiple-choice fields. You can create it with the 285for implementing multiple-choice fields. You can create them with the
286@code{checkbox} widget. 286@code{checkbox} widget.
287@item The @samp{@b{( )}} and @samp{@b{(*)}} buttons 287@item The @samp{@b{( )}} and @samp{@b{(*)}} buttons
288Only one radio button in a @code{radio-button-choice} widget can be 288Only one radio button in a @code{radio-button-choice} widget can be
289selected at any time. When you invoke one of the unselected radio 289selected at any time. When you invoke one of the unselected radio
290buttons, it will be selected and the previous selected radio button will 290buttons, it will be selected and the previous selected radio button will
291become unselected. 291become unselected.
292@item The @samp{@b{[Apply Form]}} @samp{@b{[Reset Form]}} buttons 292@item The @samp{@b{[Apply Form]}} and @samp{@b{[Reset Form]}} buttons
293These are explicit buttons made with the @code{push-button} widget. The 293These are explicit buttons made with the @code{push-button} widget. The
294main difference from the @code{link} widget is that the buttons will be 294main difference from the @code{link} widget is that the buttons will be
295displayed as GUI buttons when possible. 295displayed as GUI buttons when possible.
@@ -492,7 +492,7 @@ property, @var{argument} is the value of the property, and @var{args}
492are interpreted in a widget specific way. 492are interpreted in a widget specific way.
493 493
494@cindex keyword arguments 494@cindex keyword arguments
495The following keyword arguments that apply to all widgets: 495The following keyword arguments apply to all widgets:
496 496
497@table @code 497@table @code
498@vindex value@r{ keyword} 498@vindex value@r{ keyword}
@@ -807,7 +807,7 @@ TYPE ::= (editable-field [KEYWORD ARGUMENT]... [ VALUE ])
807@end example 807@end example
808 808
809The @var{value}, if present, is used to initialize the @code{:value} 809The @var{value}, if present, is used to initialize the @code{:value}
810property. The value should be a string, which will be inserted in 810property. The value should be a string, which will be inserted in the
811field. This widget will match all string values. 811field. This widget will match all string values.
812 812
813The following extra properties are recognized: 813The following extra properties are recognized:
@@ -1349,7 +1349,7 @@ second component. There must be exactly two components.
1349 1349
1350@deffn Widget list 1350@deffn Widget list
1351The value of a @code{list} widget is a list containing the value of 1351The value of a @code{list} widget is a list containing the value of
1352each of its component. 1352each of its components.
1353@end deffn 1353@end deffn
1354 1354
1355@deffn Widget vector 1355@deffn Widget vector
@@ -1359,11 +1359,11 @@ each of its component.
1359 1359
1360The above suffice for specifying fixed size lists and vectors. To get 1360The above suffice for specifying fixed size lists and vectors. To get
1361variable length lists and vectors, you can use a @code{choice}, 1361variable length lists and vectors, you can use a @code{choice},
1362@code{set}, or @code{repeat} widgets together with the @code{:inline} 1362@code{set}, or @code{repeat} widget together with the @code{:inline}
1363keywords. If any component of a composite widget has the @code{:inline} 1363keyword. If any component of a composite widget has the @code{:inline}
1364keyword set, its value must be a list which will then be spliced into 1364keyword set, its value must be a list which will then be spliced into
1365the composite. For example, to specify a list whose first element must 1365the composite. For example, to specify a list whose first element must
1366be a file name, and whose remaining arguments should either by the 1366be a file name, and whose remaining arguments should either be the
1367symbol @code{t} or two files, you can use the following widget 1367symbol @code{t} or two files, you can use the following widget
1368specification: 1368specification:
1369 1369
@@ -1390,7 +1390,7 @@ and has a similar syntax.
1390 1390
1391@deffn Widget set 1391@deffn Widget set
1392Allows you to specify a type which must be a list whose elements all 1392Allows you to specify a type which must be a list whose elements all
1393belong to given set. The elements of the list are not significant. 1393belong to the given set. The elements of the list are not significant.
1394This is implemented on top of the @code{checklist} basic widget, and has 1394This is implemented on top of the @code{checklist} basic widget, and has
1395a similar syntax. 1395a similar syntax.
1396@end deffn 1396@end deffn
diff --git a/nt/INSTALL b/nt/INSTALL
index 21ee8367a88..8415b1893ff 100644
--- a/nt/INSTALL
+++ b/nt/INSTALL
@@ -103,7 +103,7 @@
103 If you use the MinGW port of GCC and GNU Make to build Emacs, there 103 If you use the MinGW port of GCC and GNU Make to build Emacs, there
104 are some compatibility issues wrt Make and the shell that is run by 104 are some compatibility issues wrt Make and the shell that is run by
105 Make, either the standard COMMAND.COM/CMD.EXE supplied with Windows 105 Make, either the standard COMMAND.COM/CMD.EXE supplied with Windows
106 or sh.exe., a port of a Unixy shell. For reference, here is a list 106 or sh.exe., a port of a Unixy shell. For reference, below is a list
107 of which builds of GNU Make are known to work or not, and whether 107 of which builds of GNU Make are known to work or not, and whether
108 they work in the presence and/or absence of sh.exe, the Cygwin port 108 they work in the presence and/or absence of sh.exe, the Cygwin port
109 of Bash. Note that any version of Make that is compiled with Cygwin 109 of Bash. Note that any version of Make that is compiled with Cygwin
@@ -129,6 +129,8 @@
129 cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5] 129 cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5]
130 cygwin compiled make 3.78.1: fails[5] fails[2, 5] 130 cygwin compiled make 3.78.1: fails[5] fails[2, 5]
131 cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5] 131 cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5]
132 cygwin compiled make 3.80: fails?[6] fails?[6]
133 cygwin compiled make 3.81: fails fails?[6]
132 mingw32 compiled make 3.79.1: okay okay 134 mingw32 compiled make 3.79.1: okay okay
133 mingw32 compiled make 3.80: okay unknown[6] 135 mingw32 compiled make 3.80: okay unknown[6]
134 mingw32 compiled make 3.81: okay okay[7] 136 mingw32 compiled make 3.81: okay okay[7]
diff --git a/src/ChangeLog b/src/ChangeLog
index 79bfe7fe4eb..8590cb57230 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,91 @@
12006-10-14 Richard Stallman <rms@gnu.org>
2
3 * sysdep.c (init_sys_modes): Delete DEFVAR_LISP in the wrong place.
4
52006-10-13 Chong Yidong <cyd@stupidchicken.com>
6
7 * xdisp.c (decode_mode_spec): Ignore %c and %l constructs in frame
8 title.
9
102006-10-12 Chong Yidong <cyd@stupidchicken.com>
11
12 * keymap.c (Fkey_binding): Check Lisp_Object types before doing
13 XCAR and XINT.
14
152006-10-12 Romain Francoise <romain@orebokech.com>
16
17 * image.c (xbm_read_bitmap_data): Delete extra semicolon.
18
192006-10-10 Stefan Monnier <monnier@iro.umontreal.ca>
20
21 * eval.c: Include xterm.h for x_fully_uncatch_errors and friends.
22
23 * dispextern.h: Declare x_create_bitmap_from_xpm_data.
24
25 * xterm.c (x_check_expected_move): Remove unused var `count'.
26
27 * xmenu.c (syms_of_xmenu): Use Ffset rather than Fdefalias, since
28 Fdefalias is not declared in any *.h file.
29
302006-10-09 Chong Yidong <cyd@stupidchicken.com>
31
32 * dispnew.c (sit_for): Sit forever if TIMEOUT is t.
33
34 * keyboard.c (command_loop_1): Handle non-number values of
35 `minibuffer-message-timeout'.
36 (Fexecute_extended_command): Fix typo.
37
38 * minibuf.c (temp_echo_area_glyphs): Sit for
39 `minibuffer-message-timeout' seconds.
40
412006-10-08 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
42
43 * macterm.c (mac_draw_image_string, mac_draw_image_string_16):
44 Add argument OVERSTRIKE_P.
45 (mac_draw_string_common, mac_draw_image_string_cg): Likewise.
46 Support overstrike.
47 (mac_draw_string, mac_draw_string_16): Remove functions.
48 (x_draw_glyph_string_foreground): Use overstrike when needed.
49 (x_draw_composite_glyph_string_foreground): Likewise.
50 Use mac_draw_image_string_16 instead of mac_draw_string_16.
51 (mac_load_query_font): Rename from XLoadQueryFont. Take argument F
52 instead of DPY. All uses changed. Don't save/restore font.
53
542006-10-07 Ralf Angeli <angeli@caeruleus.net>
55
56 * w32fns.c (w32_createwindow): Honour left and top positions if
57 supplied explicitly.
58
592006-10-06 Kim F. Storm <storm@cua.dk>
60
61 * xdisp.c (pos_visible_p): Fix value when EOB is visible.
62
632006-10-05 Chong Yidong <cyd@stupidchicken.com>
64
65 * frame.c (Qinhibit_face_set_after_frame_default): New var.
66 (syms_of_frame): Initialize it.
67 (x_set_frame_parameters): Avoid resetting :font attributes to the
68 new-frame defaults.
69
702006-10-03 Stefan Monnier <monnier@iro.umontreal.ca>
71
72 * lisp.h (clear_regexp_cache): Declare.
73
74 * search.c (compile_pattern): Only check `cp->syntax_table' if needed.
75 (compile_pattern_1): Remember `used_syntax' in `cp->syntax_table'.
76 (clear_regexp_cache): Only flush those regexps which depend on
77 a syntax-table.
78
79 * regex.c (regex_compile): Set the new `used_syntax' bit.
80
81 * regex.h: Remove file local variables.
82 (struct re_pattern_buffer): New field `used_syntax'.
83
842006-10-03 Kim F. Storm <storm@cua.dk>
85
86 * process.c (list_processes_1): Run sentinels before removing dead
87 processes. Also remove `closed' network connections.
88
12006-10-01 Stefan Monnier <monnier@iro.umontreal.ca> 892006-10-01 Stefan Monnier <monnier@iro.umontreal.ca>
2 90
3 * xdisp.c (handle_fontified_prop): Don't fontify at EOB. 91 * xdisp.c (handle_fontified_prop): Don't fontify at EOB.
@@ -52,8 +140,8 @@
52 140
532006-09-24 Eli Zaretskii <eliz@gnu.org> 1412006-09-24 Eli Zaretskii <eliz@gnu.org>
54 142
55 * makefile.w32-in ($(BLD)/fns.$(O), $(BLD)/w32proc.$(O)): Depend 143 * makefile.w32-in ($(BLD)/fns.$(O), $(BLD)/w32proc.$(O)):
56 on nt/inc/langinfo.h and nt/inc/nl_types.h. 144 Depend on nt/inc/langinfo.h and nt/inc/nl_types.h.
57 145
58 * w32proc.c (nl_langinfo): New function. 146 * w32proc.c (nl_langinfo): New function.
59 147
@@ -235,8 +323,7 @@
235 323
2362006-09-15 David Kastrup <dak@gnu.org> 3242006-09-15 David Kastrup <dak@gnu.org>
237 325
238 * Makefile.in (keymap.o): Add "keymap.h" and "window.h" 326 * Makefile.in (keymap.o): Add "keymap.h" and "window.h" dependencies.
239 dependencies.
240 327
241 * keymap.c: include "window.h". 328 * keymap.c: include "window.h".
242 (Fcommand_remapping): New optional POSITION argument. 329 (Fcommand_remapping): New optional POSITION argument.
@@ -1477,7 +1564,7 @@
1477 (x_set_offset, x_check_fullscreen): Extensive changes to make 1564 (x_set_offset, x_check_fullscreen): Extensive changes to make
1478 frame positioning deterministic under X. 1565 frame positioning deterministic under X.
1479 1566
1480 * xterm.h (x_output): Added members left_before_move and 1567 * xterm.h (x_output): Add members left_before_move and
1481 top_before_move. Removed members expected_left and expected_top. 1568 top_before_move. Removed members expected_left and expected_top.
1482 1569
14832006-06-16 Kim F. Storm <storm@cua.dk> 15702006-06-16 Kim F. Storm <storm@cua.dk>
diff --git a/src/dispextern.h b/src/dispextern.h
index 1f768dd323c..5eb7ee11dea 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2794,6 +2794,9 @@ extern void x_reference_bitmap P_ ((struct frame *, int));
2794extern int x_create_bitmap_from_data P_ ((struct frame *, char *, 2794extern int x_create_bitmap_from_data P_ ((struct frame *, char *,
2795 unsigned int, unsigned int)); 2795 unsigned int, unsigned int));
2796extern int x_create_bitmap_from_file P_ ((struct frame *, Lisp_Object)); 2796extern int x_create_bitmap_from_file P_ ((struct frame *, Lisp_Object));
2797#if defined (HAVE_XPM) && defined (HAVE_X_WINDOWS)
2798extern int x_create_bitmap_from_xpm_data P_ ((struct frame *f, char **bits));
2799#endif
2797#ifndef x_destroy_bitmap 2800#ifndef x_destroy_bitmap
2798extern void x_destroy_bitmap P_ ((struct frame *, int)); 2801extern void x_destroy_bitmap P_ ((struct frame *, int));
2799#endif 2802#endif
diff --git a/src/dispnew.c b/src/dispnew.c
index de8f2c1ad38..516f0b54ce6 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -6488,7 +6488,8 @@ Emacs was built without floating point support.
6488/* This is just like wait_reading_process_output, except that 6488/* This is just like wait_reading_process_output, except that
6489 it does redisplay. 6489 it does redisplay.
6490 6490
6491 TIMEOUT is number of seconds to wait (float or integer). 6491 TIMEOUT is number of seconds to wait (float or integer),
6492 or t to wait forever.
6492 READING is 1 if reading input. 6493 READING is 1 if reading input.
6493 If DO_DISPLAY is >0 display process output while waiting. 6494 If DO_DISPLAY is >0 display process output while waiting.
6494 If DO_DISPLAY is >1 perform an initial redisplay before waiting. 6495 If DO_DISPLAY is >1 perform an initial redisplay before waiting.
@@ -6521,10 +6522,15 @@ sit_for (timeout, reading, do_display)
6521 sec = (int) seconds; 6522 sec = (int) seconds;
6522 usec = (int) ((seconds - sec) * 1000000); 6523 usec = (int) ((seconds - sec) * 1000000);
6523 } 6524 }
6525 else if (EQ (timeout, Qt))
6526 {
6527 sec = 0;
6528 usec = 0;
6529 }
6524 else 6530 else
6525 wrong_type_argument (Qnumberp, timeout); 6531 wrong_type_argument (Qnumberp, timeout);
6526 6532
6527 if (sec == 0 && usec == 0) 6533 if (sec == 0 && usec == 0 && !EQ (timeout, Qt))
6528 return Qt; 6534 return Qt;
6529 6535
6530#ifdef SIGIO 6536#ifdef SIGIO
diff --git a/src/eval.c b/src/eval.c
index dbd30eac201..4e04422d2d6 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -28,6 +28,10 @@ Boston, MA 02110-1301, USA. */
28#include "dispextern.h" 28#include "dispextern.h"
29#include <setjmp.h> 29#include <setjmp.h>
30 30
31#if HAVE_X_WINDOWS
32#include "xterm.h"
33#endif
34
31/* This definition is duplicated in alloc.c and keyboard.c */ 35/* This definition is duplicated in alloc.c and keyboard.c */
32/* Putting it in lisp.h makes cc bomb out! */ 36/* Putting it in lisp.h makes cc bomb out! */
33 37
diff --git a/src/frame.c b/src/frame.c
index c57618696eb..f431dc4946d 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -116,6 +116,7 @@ Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth;
116Lisp_Object Qfont_backend; 116Lisp_Object Qfont_backend;
117#endif /* USE_FONT_BACKEND */ 117#endif /* USE_FONT_BACKEND */
118 118
119Lisp_Object Qinhibit_face_set_after_frame_default;
119Lisp_Object Qface_set_after_frame_default; 120Lisp_Object Qface_set_after_frame_default;
120 121
121 122
@@ -2742,12 +2743,20 @@ x_set_frame_parameters (f, alist)
2742 || EQ (prop, Qfullscreen)) 2743 || EQ (prop, Qfullscreen))
2743 { 2744 {
2744 register Lisp_Object param_index, old_value; 2745 register Lisp_Object param_index, old_value;
2746 int count = SPECPDL_INDEX ();
2745 2747
2746 old_value = get_frame_param (f, prop); 2748 old_value = get_frame_param (f, prop);
2747 fullscreen_is_being_set |= EQ (prop, Qfullscreen); 2749 fullscreen_is_being_set |= EQ (prop, Qfullscreen);
2748 2750
2749 if (NILP (Fequal (val, old_value))) 2751 if (NILP (Fequal (val, old_value)))
2750 { 2752 {
2753 /* For :font attributes, the frame_parm_handler
2754 x_set_font calls `face-set-after-frame-default'.
2755 Unless we bind inhibit-face-set-after-frame-default
2756 here, this would reset the :font attribute that we
2757 just applied to the default value for new faces. */
2758 specbind (Qinhibit_face_set_after_frame_default, Qt);
2759
2751 store_frame_param (f, prop, val); 2760 store_frame_param (f, prop, val);
2752 2761
2753 param_index = Fget (prop, Qx_frame_parameter); 2762 param_index = Fget (prop, Qx_frame_parameter);
@@ -2756,6 +2765,8 @@ x_set_frame_parameters (f, alist)
2756 < sizeof (frame_parms)/sizeof (frame_parms[0])) 2765 < sizeof (frame_parms)/sizeof (frame_parms[0]))
2757 && rif->frame_parm_handlers[XINT (param_index)]) 2766 && rif->frame_parm_handlers[XINT (param_index)])
2758 (*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value); 2767 (*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
2768
2769 unbind_to (count, Qnil);
2759 } 2770 }
2760 } 2771 }
2761 } 2772 }
@@ -4112,6 +4123,10 @@ syms_of_frame ()
4112 Qface_set_after_frame_default = intern ("face-set-after-frame-default"); 4123 Qface_set_after_frame_default = intern ("face-set-after-frame-default");
4113 staticpro (&Qface_set_after_frame_default); 4124 staticpro (&Qface_set_after_frame_default);
4114 4125
4126 Qinhibit_face_set_after_frame_default
4127 = intern ("inhibit-face-set-after-frame-default");
4128 staticpro (&Qinhibit_face_set_after_frame_default);
4129
4115 Qfullwidth = intern ("fullwidth"); 4130 Qfullwidth = intern ("fullwidth");
4116 staticpro (&Qfullwidth); 4131 staticpro (&Qfullwidth);
4117 Qfullheight = intern ("fullheight"); 4132 Qfullheight = intern ("fullheight");
diff --git a/src/image.c b/src/image.c
index dac896137c3..30c01702d85 100644
--- a/src/image.c
+++ b/src/image.c
@@ -3151,7 +3151,7 @@ xbm_read_bitmap_data (f, contents, end, width, height, data)
3151 expect_ident ("define"); 3151 expect_ident ("define");
3152 expect (XBM_TK_IDENT); 3152 expect (XBM_TK_IDENT);
3153 3153
3154 if (LA1 == XBM_TK_NUMBER); 3154 if (LA1 == XBM_TK_NUMBER)
3155 { 3155 {
3156 char *p = strrchr (buffer, '_'); 3156 char *p = strrchr (buffer, '_');
3157 p = p ? p + 1 : buffer; 3157 p = p ? p + 1 : buffer;
diff --git a/src/keyboard.c b/src/keyboard.c
index 786b3d9b556..61539a384fd 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1546,15 +1546,17 @@ command_loop_1 ()
1546 1546
1547 if (minibuf_level 1547 if (minibuf_level
1548 && !NILP (echo_area_buffer[0]) 1548 && !NILP (echo_area_buffer[0])
1549 && EQ (minibuf_window, echo_area_window) 1549 && EQ (minibuf_window, echo_area_window))
1550 && NUMBERP (Vminibuffer_message_timeout))
1551 { 1550 {
1552 /* Bind inhibit-quit to t so that C-g gets read in 1551 /* Bind inhibit-quit to t so that C-g gets read in
1553 rather than quitting back to the minibuffer. */ 1552 rather than quitting back to the minibuffer. */
1554 int count = SPECPDL_INDEX (); 1553 int count = SPECPDL_INDEX ();
1555 specbind (Qinhibit_quit, Qt); 1554 specbind (Qinhibit_quit, Qt);
1556 1555
1557 sit_for (Vminibuffer_message_timeout, 0, 2); 1556 if (NUMBERP (Vminibuffer_message_timeout))
1557 sit_for (Vminibuffer_message_timeout, 0, 2);
1558 else
1559 sit_for (Qt, 0, 2);
1558 1560
1559 /* Clear the echo area. */ 1561 /* Clear the echo area. */
1560 message2 (0, 0, 0); 1562 message2 (0, 0, 0);
@@ -9981,7 +9983,7 @@ give to the command you invoke, if it asks for an argument. */)
9981 if (NILP (echo_area_buffer[0])) 9983 if (NILP (echo_area_buffer[0]))
9982 waited = sit_for (make_number (0), 0, 2); 9984 waited = sit_for (make_number (0), 0, 2);
9983 else if (NUMBERP (Vsuggest_key_bindings)) 9985 else if (NUMBERP (Vsuggest_key_bindings))
9984 waited = sit_for (Vminibuffer_message_timeout, 0, 2); 9986 waited = sit_for (Vsuggest_key_bindings, 0, 2);
9985 else 9987 else
9986 waited = sit_for (make_number (2), 0, 2); 9988 waited = sit_for (make_number (2), 0, 2);
9987 9989
diff --git a/src/keymap.c b/src/keymap.c
index 237bc0db9df..f67cc109e87 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1643,13 +1643,12 @@ specified buffer position instead of point are used.
1643 1643
1644 /* We are not interested in locations without event data */ 1644 /* We are not interested in locations without event data */
1645 1645
1646 if (EVENT_HAS_PARAMETERS (event)) { 1646 if (EVENT_HAS_PARAMETERS (event))
1647 Lisp_Object kind; 1647 {
1648 1648 Lisp_Object kind = EVENT_HEAD_KIND (EVENT_HEAD (event));
1649 kind = EVENT_HEAD_KIND (EVENT_HEAD (event)); 1649 if (CONSP (XCDR (event)) && EQ (kind, Qmouse_click))
1650 if (EQ (kind, Qmouse_click)) 1650 position = EVENT_START (event);
1651 position = EVENT_START (event); 1651 }
1652 }
1653 } 1652 }
1654 1653
1655 /* Key sequences beginning with mouse clicks 1654 /* Key sequences beginning with mouse clicks
@@ -1742,7 +1741,8 @@ specified buffer position instead of point are used.
1742 1741
1743 pos = XCDR (string); 1742 pos = XCDR (string);
1744 string = XCAR (string); 1743 string = XCAR (string);
1745 if (XINT (pos) >= 0 1744 if (INTEGERP (pos)
1745 && XINT (pos) >= 0
1746 && XINT (pos) < SCHARS (string)) 1746 && XINT (pos) < SCHARS (string))
1747 { 1747 {
1748 map = Fget_text_property (pos, Qlocal_map, string); 1748 map = Fget_text_property (pos, Qlocal_map, string);
diff --git a/src/lisp.h b/src/lisp.h
index 4421dfedf95..787eface0ee 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2957,6 +2957,7 @@ extern int find_next_newline P_ ((int, int));
2957extern int find_next_newline_no_quit P_ ((int, int)); 2957extern int find_next_newline_no_quit P_ ((int, int));
2958extern int find_before_next_newline P_ ((int, int, int)); 2958extern int find_before_next_newline P_ ((int, int, int));
2959extern void syms_of_search P_ ((void)); 2959extern void syms_of_search P_ ((void));
2960extern void clear_regexp_cache P_ ((void));
2960 2961
2961/* defined in minibuf.c */ 2962/* defined in minibuf.c */
2962 2963
diff --git a/src/macterm.c b/src/macterm.c
index 719b703a77c..126fe513533 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -893,12 +893,13 @@ mac_invert_rectangle (f, x, y, width, height)
893 893
894 894
895static void 895static void
896mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width, bytes_per_char) 896mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width,
897 overstrike_p, bytes_per_char)
897 struct frame *f; 898 struct frame *f;
898 GC gc; 899 GC gc;
899 int x, y; 900 int x, y;
900 char *buf; 901 char *buf;
901 int nchars, bg_width, bytes_per_char; 902 int nchars, bg_width, overstrike_p, bytes_per_char;
902{ 903{
903 SetPortWindowPort (FRAME_MAC_WINDOW (f)); 904 SetPortWindowPort (FRAME_MAC_WINDOW (f));
904 905
@@ -948,6 +949,13 @@ mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width, bytes_per_char)
948 ATSUDrawText (text_layout, 949 ATSUDrawText (text_layout,
949 kATSUFromTextBeginning, kATSUToTextEnd, 950 kATSUFromTextBeginning, kATSUToTextEnd,
950 kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc); 951 kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
952 if (overstrike_p)
953 {
954 MoveTo (x + 1, y);
955 ATSUDrawText (text_layout,
956 kATSUFromTextBeginning, kATSUToTextEnd,
957 kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc);
958 }
951 mac_end_clip (gc); 959 mac_end_clip (gc);
952#ifdef MAC_OSX 960#ifdef MAC_OSX
953 } 961 }
@@ -991,9 +999,15 @@ mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width, bytes_per_char)
991 sizeof (tags) / sizeof (tags[0]), 999 sizeof (tags) / sizeof (tags[0]),
992 tags, sizes, values); 1000 tags, sizes, values);
993 if (err == noErr) 1001 if (err == noErr)
994 ATSUDrawText (text_layout, 1002 {
995 kATSUFromTextBeginning, kATSUToTextEnd, 1003 ATSUDrawText (text_layout,
996 Long2Fix (x), Long2Fix (port_height - y)); 1004 kATSUFromTextBeginning, kATSUToTextEnd,
1005 Long2Fix (x), Long2Fix (port_height - y));
1006 if (overstrike_p)
1007 ATSUDrawText (text_layout,
1008 kATSUFromTextBeginning, kATSUToTextEnd,
1009 Long2Fix (x + 1), Long2Fix (port_height - y));
1010 }
997#if USE_CG_DRAWING 1011#if USE_CG_DRAWING
998 mac_end_cg_clip (f); 1012 mac_end_cg_clip (f);
999 context = NULL; 1013 context = NULL;
@@ -1059,6 +1073,12 @@ mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width, bytes_per_char)
1059 TextFace (GC_FONT (gc)->mac_fontface); 1073 TextFace (GC_FONT (gc)->mac_fontface);
1060 MoveTo (x, y); 1074 MoveTo (x, y);
1061 DrawText (buf, 0, nchars * bytes_per_char); 1075 DrawText (buf, 0, nchars * bytes_per_char);
1076 if (overstrike_p)
1077 {
1078 TextMode (srcOr);
1079 MoveTo (x + 1, y);
1080 DrawText (buf, 0, nchars * bytes_per_char);
1081 }
1062 if (bg_width) 1082 if (bg_width)
1063 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f))); 1083 RGBBackColor (GC_BACK_COLOR (FRAME_NORMAL_GC (f)));
1064 mac_end_clip (gc); 1084 mac_end_clip (gc);
@@ -1071,59 +1091,33 @@ mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width, bytes_per_char)
1071} 1091}
1072 1092
1073 1093
1074/* Mac replacement for XDrawString. */
1075
1076static void
1077mac_draw_string (f, gc, x, y, buf, nchars)
1078 struct frame *f;
1079 GC gc;
1080 int x, y;
1081 char *buf;
1082 int nchars;
1083{
1084 mac_draw_string_common (f, gc, x, y, buf, nchars, 0, 1);
1085}
1086
1087
1088/* Mac replacement for XDrawString16. */
1089
1090static void
1091mac_draw_string_16 (f, gc, x, y, buf, nchars)
1092 struct frame *f;
1093 GC gc;
1094 int x, y;
1095 XChar2b *buf;
1096 int nchars;
1097{
1098 mac_draw_string_common (f, gc, x, y, (char *) buf, nchars, 0, 2);
1099}
1100
1101
1102/* Mac replacement for XDrawImageString. */ 1094/* Mac replacement for XDrawImageString. */
1103 1095
1104static void 1096static void
1105mac_draw_image_string (f, gc, x, y, buf, nchars, bg_width) 1097mac_draw_image_string (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1106 struct frame *f; 1098 struct frame *f;
1107 GC gc; 1099 GC gc;
1108 int x, y; 1100 int x, y;
1109 char *buf; 1101 char *buf;
1110 int nchars, bg_width; 1102 int nchars, bg_width, overstrike_p;
1111{ 1103{
1112 mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width, 1); 1104 mac_draw_string_common (f, gc, x, y, buf, nchars, bg_width,
1105 overstrike_p, 1);
1113} 1106}
1114 1107
1115 1108
1116/* Mac replacement for XDrawString16. */ 1109/* Mac replacement for XDrawImageString16. */
1117 1110
1118static void 1111static void
1119mac_draw_image_string_16 (f, gc, x, y, buf, nchars, bg_width) 1112mac_draw_image_string_16 (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1120 struct frame *f; 1113 struct frame *f;
1121 GC gc; 1114 GC gc;
1122 int x, y; 1115 int x, y;
1123 XChar2b *buf; 1116 XChar2b *buf;
1124 int nchars, bg_width; 1117 int nchars, bg_width, overstrike_p;
1125{ 1118{
1126 mac_draw_string_common (f, gc, x, y, (char *) buf, nchars, bg_width, 2); 1119 mac_draw_string_common (f, gc, x, y, (char *) buf, nchars, bg_width,
1120 overstrike_p, 2);
1127} 1121}
1128 1122
1129 1123
@@ -1297,12 +1291,12 @@ init_cg_text_anti_aliasing_threshold ()
1297} 1291}
1298 1292
1299static int 1293static int
1300mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width) 1294mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width, overstrike_p)
1301 struct frame *f; 1295 struct frame *f;
1302 GC gc; 1296 GC gc;
1303 int x, y; 1297 int x, y;
1304 XChar2b *buf; 1298 XChar2b *buf;
1305 int nchars, bg_width; 1299 int nchars, bg_width, overstrike_p;
1306{ 1300{
1307 CGrafPtr port; 1301 CGrafPtr port;
1308 float port_height, gx, gy; 1302 float port_height, gx, gy;
@@ -1364,10 +1358,17 @@ mac_draw_image_string_cg (f, gc, x, y, buf, nchars, bg_width)
1364#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 1358#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
1365 CGContextSetTextPosition (context, gx, gy); 1359 CGContextSetTextPosition (context, gx, gy);
1366 CGContextShowGlyphsWithAdvances (context, glyphs, advances, nchars); 1360 CGContextShowGlyphsWithAdvances (context, glyphs, advances, nchars);
1361 if (overstrike_p)
1362 {
1363 CGContextSetTextPosition (context, gx + 1.0f, gy);
1364 CGContextShowGlyphsWithAdvances (context, glyphs, advances, nchars);
1365 }
1367#else 1366#else
1368 for (i = 0; i < nchars; i++) 1367 for (i = 0; i < nchars; i++)
1369 { 1368 {
1370 CGContextShowGlyphsAtPoint (context, gx, gy, glyphs + i, 1); 1369 CGContextShowGlyphsAtPoint (context, gx, gy, glyphs + i, 1);
1370 if (overstrike_p)
1371 CGContextShowGlyphsAtPoint (context, gx + 1.0f, gy, glyphs + i, 1);
1371 gx += advances[i].width; 1372 gx += advances[i].width;
1372 } 1373 }
1373#endif 1374#endif
@@ -2773,15 +2774,18 @@ x_draw_glyph_string_foreground (s)
2773#if USE_CG_TEXT_DRAWING 2774#if USE_CG_TEXT_DRAWING
2774 if (!s->two_byte_p 2775 if (!s->two_byte_p
2775 && mac_draw_image_string_cg (s->f, s->gc, x, s->ybase - boff, 2776 && mac_draw_image_string_cg (s->f, s->gc, x, s->ybase - boff,
2776 s->char2b, s->nchars, bg_width)) 2777 s->char2b, s->nchars, bg_width,
2778 s->face->overstrike))
2777 ; 2779 ;
2778 else 2780 else
2779#endif 2781#endif
2780 mac_draw_image_string_16 (s->f, s->gc, x, s->ybase - boff, 2782 mac_draw_image_string_16 (s->f, s->gc, x, s->ybase - boff,
2781 s->char2b, s->nchars, bg_width); 2783 s->char2b, s->nchars, bg_width,
2784 s->face->overstrike);
2782 else 2785 else
2783 mac_draw_image_string (s->f, s->gc, x, s->ybase - boff, 2786 mac_draw_image_string (s->f, s->gc, x, s->ybase - boff,
2784 char1b, s->nchars, bg_width); 2787 char1b, s->nchars, bg_width,
2788 s->face->overstrike);
2785 } 2789 }
2786} 2790}
2787 2791
@@ -2817,10 +2821,10 @@ x_draw_composite_glyph_string_foreground (s)
2817 else 2821 else
2818 { 2822 {
2819 for (i = 0; i < s->nchars; i++, ++s->gidx) 2823 for (i = 0; i < s->nchars; i++, ++s->gidx)
2820 mac_draw_string_16 (s->f, s->gc, 2824 mac_draw_image_string_16 (s->f, s->gc,
2821 x + s->cmp->offsets[s->gidx * 2], 2825 x + s->cmp->offsets[s->gidx * 2],
2822 s->ybase - s->cmp->offsets[s->gidx * 2 + 1], 2826 s->ybase - s->cmp->offsets[s->gidx * 2 + 1],
2823 s->char2b + i, 1); 2827 s->char2b + i, 1, 0, s->face->overstrike);
2824 } 2828 }
2825} 2829}
2826 2830
@@ -7801,14 +7805,16 @@ is_fully_specified_xlfd (char *p)
7801} 7805}
7802 7806
7803 7807
7804/* XLoadQueryFont creates and returns an internal representation for a 7808/* mac_load_query_font creates and returns an internal representation
7805 font in a MacFontStruct struct. There is really no concept 7809 for a font in a MacFontStruct struct. There is really no concept
7806 corresponding to "loading" a font on the Mac. But we check its 7810 corresponding to "loading" a font on the Mac. But we check its
7807 existence and find the font number and all other information for it 7811 existence and find the font number and all other information for it
7808 and store them in the returned MacFontStruct. */ 7812 and store them in the returned MacFontStruct. */
7809 7813
7810static MacFontStruct * 7814static MacFontStruct *
7811XLoadQueryFont (Display *dpy, char *fontname) 7815mac_load_query_font (f, fontname)
7816 struct frame *f;
7817 char *fontname;
7812{ 7818{
7813 int size; 7819 int size;
7814 char *name; 7820 char *name;
@@ -8019,26 +8025,13 @@ XLoadQueryFont (Display *dpy, char *fontname)
8019 else 8025 else
8020#endif 8026#endif
8021 { 8027 {
8022 GrafPtr port;
8023 SInt16 old_fontnum, old_fontsize;
8024 Style old_fontface;
8025 FontInfo the_fontinfo; 8028 FontInfo the_fontinfo;
8026 int is_two_byte_font; 8029 int is_two_byte_font;
8027 8030
8028#if USE_CG_DRAWING 8031#if USE_CG_DRAWING
8029 mac_prepare_for_quickdraw (NULL); 8032 mac_prepare_for_quickdraw (f);
8030#endif
8031 /* Save the current font number used. */
8032 GetPort (&port);
8033#if TARGET_API_MAC_CARBON
8034 old_fontnum = GetPortTextFont (port);
8035 old_fontsize = GetPortTextSize (port);
8036 old_fontface = GetPortTextFace (port);
8037#else
8038 old_fontnum = port->txFont;
8039 old_fontsize = port->txSize;
8040 old_fontface = port->txFace;
8041#endif 8033#endif
8034 SetPortWindowPort (FRAME_MAC_WINDOW (f));
8042 8035
8043 TextFont (fontnum); 8036 TextFont (fontnum);
8044 TextSize (size); 8037 TextSize (size);
@@ -8120,11 +8113,6 @@ XLoadQueryFont (Display *dpy, char *fontname)
8120 for (c = 0x21, pcm = space_bounds + 1; c <= 0xff; c++, pcm++) 8113 for (c = 0x21, pcm = space_bounds + 1; c <= 0xff; c++, pcm++)
8121 mac_query_char_extents (NULL, c, NULL, NULL, pcm, NULL); 8114 mac_query_char_extents (NULL, c, NULL, NULL, pcm, NULL);
8122 } 8115 }
8123
8124 /* Restore previous font number, size and face. */
8125 TextFont (old_fontnum);
8126 TextSize (old_fontsize);
8127 TextFace (old_fontface);
8128 } 8116 }
8129 8117
8130 if (space_bounds) 8118 if (space_bounds)
@@ -8264,7 +8252,7 @@ x_load_font (f, fontname, size)
8264 fontname = (char *) SDATA (XCAR (font_names)); 8252 fontname = (char *) SDATA (XCAR (font_names));
8265 8253
8266 BLOCK_INPUT; 8254 BLOCK_INPUT;
8267 font = (MacFontStruct *) XLoadQueryFont (FRAME_MAC_DISPLAY (f), fontname); 8255 font = mac_load_query_font (f, fontname);
8268 UNBLOCK_INPUT; 8256 UNBLOCK_INPUT;
8269 if (!font) 8257 if (!font)
8270 return NULL; 8258 return NULL;
diff --git a/src/minibuf.c b/src/minibuf.c
index 9505c22d39e..a61d61221a6 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -2683,6 +2683,8 @@ If no minibuffer is active, return nil. */)
2683 that has no possible completions, and other quick, unobtrusive 2683 that has no possible completions, and other quick, unobtrusive
2684 messages. */ 2684 messages. */
2685 2685
2686extern Lisp_Object Vminibuffer_message_timeout;
2687
2686void 2688void
2687temp_echo_area_glyphs (string) 2689temp_echo_area_glyphs (string)
2688 Lisp_Object string; 2690 Lisp_Object string;
@@ -2701,7 +2703,12 @@ temp_echo_area_glyphs (string)
2701 insert_from_string (string, 0, 0, SCHARS (string), SBYTES (string), 0); 2703 insert_from_string (string, 0, 0, SCHARS (string), SBYTES (string), 0);
2702 SET_PT_BOTH (opoint, opoint_byte); 2704 SET_PT_BOTH (opoint, opoint_byte);
2703 Vinhibit_quit = Qt; 2705 Vinhibit_quit = Qt;
2704 sit_for (make_number (2), 0, 2); 2706
2707 if (NUMBERP (Vminibuffer_message_timeout))
2708 sit_for (Vminibuffer_message_timeout, 0, 2);
2709 else
2710 sit_for (Qt, 0, 2);
2711
2705 del_range_both (osize, osize_byte, ZV, ZV_BYTE, 1); 2712 del_range_both (osize, osize_byte, ZV, ZV_BYTE, 1);
2706 SET_PT_BOTH (opoint, opoint_byte); 2713 SET_PT_BOTH (opoint, opoint_byte);
2707 if (!NILP (Vquit_flag)) 2714 if (!NILP (Vquit_flag))
diff --git a/src/process.c b/src/process.c
index c3bbb33509d..4497c1d38c0 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1313,6 +1313,7 @@ list_processes_1 (query_only)
1313 register struct Lisp_Process *p; 1313 register struct Lisp_Process *p;
1314 char tembuf[300]; 1314 char tembuf[300];
1315 int w_proc, w_buffer, w_tty; 1315 int w_proc, w_buffer, w_tty;
1316 int exited = 0;
1316 Lisp_Object i_status, i_buffer, i_tty, i_command; 1317 Lisp_Object i_status, i_buffer, i_tty, i_command;
1317 1318
1318 w_proc = 4; /* Proc */ 1319 w_proc = 4; /* Proc */
@@ -1439,8 +1440,8 @@ list_processes_1 (query_only)
1439 } 1440 }
1440 } 1441 }
1441 1442
1442 if (EQ (symbol, Qsignal) || EQ (symbol, Qexit)) 1443 if (EQ (symbol, Qsignal) || EQ (symbol, Qexit) || EQ (symbol, Qclosed))
1443 remove_process (proc); 1444 exited++;
1444 1445
1445 Findent_to (i_buffer, minspace); 1446 Findent_to (i_buffer, minspace);
1446 if (NILP (p->buffer)) 1447 if (NILP (p->buffer))
@@ -1504,6 +1505,8 @@ list_processes_1 (query_only)
1504 insert_string ("\n"); 1505 insert_string ("\n");
1505 } 1506 }
1506 } 1507 }
1508 if (exited)
1509 status_notify (NULL);
1507 return Qnil; 1510 return Qnil;
1508} 1511}
1509 1512
diff --git a/src/regex.c b/src/regex.c
index 09776848220..2eca58c23e8 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -2589,6 +2589,7 @@ regex_compile (pattern, size, syntax, bufp)
2589 bufp->syntax = syntax; 2589 bufp->syntax = syntax;
2590 bufp->fastmap_accurate = 0; 2590 bufp->fastmap_accurate = 0;
2591 bufp->not_bol = bufp->not_eol = 0; 2591 bufp->not_bol = bufp->not_eol = 0;
2592 bufp->used_syntax = 0;
2592 2593
2593 /* Set `used' to zero, so that if we return an error, the pattern 2594 /* Set `used' to zero, so that if we return an error, the pattern
2594 printer (for debugging) will think there's no pattern. We reset it 2595 printer (for debugging) will think there's no pattern. We reset it
@@ -3014,6 +3015,14 @@ regex_compile (pattern, size, syntax, bufp)
3014 } 3015 }
3015 } 3016 }
3016 3017
3018 /* In most cases the matching rule for char classes
3019 only uses the syntax table for multibyte chars,
3020 so that the content of the syntax-table it is not
3021 hardcoded in the range_table. SPACE and WORD are
3022 the two exceptions. */
3023 if ((1 << cc) & ((1 << RECC_SPACE) | (1 << RECC_WORD)))
3024 bufp->used_syntax = 1;
3025
3017 /* Repeat the loop. */ 3026 /* Repeat the loop. */
3018 continue; 3027 continue;
3019 } 3028 }
diff --git a/src/regex.h b/src/regex.h
index efae7749f31..e065c597d49 100644
--- a/src/regex.h
+++ b/src/regex.h
@@ -392,6 +392,10 @@ struct re_pattern_buffer
392 /* Similarly for an end-of-line anchor. */ 392 /* Similarly for an end-of-line anchor. */
393 unsigned not_eol : 1; 393 unsigned not_eol : 1;
394 394
395 /* If true, the compilation of the pattern had to look up the syntax table,
396 so the compiled pattern is only valid for the current syntax table. */
397 unsigned used_syntax : 1;
398
395#ifdef emacs 399#ifdef emacs
396 /* If true, multi-byte form in the regexp pattern should be 400 /* If true, multi-byte form in the regexp pattern should be
397 recognized as a multibyte character. When the pattern is 401 recognized as a multibyte character. When the pattern is
@@ -620,13 +624,5 @@ extern void re_set_whitespace_regexp (const char *regexp);
620 624
621#endif /* regex.h */ 625#endif /* regex.h */
622 626
623/*
624Local variables:
625make-backup-files: t
626version-control: t
627trim-versions-without-asking: nil
628End:
629*/
630
631/* arch-tag: bda6e3ec-3c02-4237-a55a-01ad2e120083 627/* arch-tag: bda6e3ec-3c02-4237-a55a-01ad2e120083
632 (do not change this comment) */ 628 (do not change this comment) */
diff --git a/src/search.c b/src/search.c
index 5f3f953595b..7c1090aa2bf 100644
--- a/src/search.c
+++ b/src/search.c
@@ -43,7 +43,8 @@ struct regexp_cache
43 struct regexp_cache *next; 43 struct regexp_cache *next;
44 Lisp_Object regexp, whitespace_regexp; 44 Lisp_Object regexp, whitespace_regexp;
45 /* Syntax table for which the regexp applies. We need this because 45 /* Syntax table for which the regexp applies. We need this because
46 of character classes. */ 46 of character classes. If this is t, then the compiled pattern is valid
47 for any syntax-table. */
47 Lisp_Object syntax_table; 48 Lisp_Object syntax_table;
48 struct re_pattern_buffer buf; 49 struct re_pattern_buffer buf;
49 char fastmap[0400]; 50 char fastmap[0400];
@@ -137,7 +138,6 @@ compile_pattern_1 (cp, pattern, translate, regp, posix, multibyte)
137 cp->buf.multibyte = STRING_MULTIBYTE (pattern); 138 cp->buf.multibyte = STRING_MULTIBYTE (pattern);
138 cp->buf.target_multibyte = multibyte; 139 cp->buf.target_multibyte = multibyte;
139 cp->whitespace_regexp = Vsearch_spaces_regexp; 140 cp->whitespace_regexp = Vsearch_spaces_regexp;
140 cp->syntax_table = current_buffer->syntax_table;
141 /* rms: I think BLOCK_INPUT is not needed here any more, 141 /* rms: I think BLOCK_INPUT is not needed here any more,
142 because regex.c defines malloc to call xmalloc. 142 because regex.c defines malloc to call xmalloc.
143 Using BLOCK_INPUT here means the debugger won't run if an error occurs. 143 Using BLOCK_INPUT here means the debugger won't run if an error occurs.
@@ -151,6 +151,10 @@ compile_pattern_1 (cp, pattern, translate, regp, posix, multibyte)
151 val = (char *) re_compile_pattern ((char *) SDATA (pattern), 151 val = (char *) re_compile_pattern ((char *) SDATA (pattern),
152 SBYTES (pattern), &cp->buf); 152 SBYTES (pattern), &cp->buf);
153 153
154 /* If the compiled pattern hard codes some of the contents of the
155 syntax-table, it can only be reused with *this* syntax table. */
156 cp->syntax_table = cp->buf.used_syntax ? current_buffer->syntax_table : Qt;
157
154 re_set_whitespace_regexp (NULL); 158 re_set_whitespace_regexp (NULL);
155 159
156 re_set_syntax (old); 160 re_set_syntax (old);
@@ -178,7 +182,8 @@ shrink_regexp_cache ()
178 } 182 }
179} 183}
180 184
181/* Clear the regexp cache. 185/* Clear the regexp cache w.r.t. a particular syntax table,
186 because it was changed.
182 There is no danger of memory leak here because re_compile_pattern 187 There is no danger of memory leak here because re_compile_pattern
183 automagically manages the memory in each re_pattern_buffer struct, 188 automagically manages the memory in each re_pattern_buffer struct,
184 based on its `allocated' and `buffer' values. */ 189 based on its `allocated' and `buffer' values. */
@@ -188,7 +193,11 @@ clear_regexp_cache ()
188 int i; 193 int i;
189 194
190 for (i = 0; i < REGEXP_CACHE_SIZE; ++i) 195 for (i = 0; i < REGEXP_CACHE_SIZE; ++i)
191 searchbufs[i].regexp = Qnil; 196 /* It's tempting to compare with the syntax-table we've actually changd,
197 but it's not sufficient because char-table inheritance mewans that
198 modifying one syntax-table can change others at the same time. */
199 if (!EQ (searchbufs[i].syntax_table, Qt))
200 searchbufs[i].regexp = Qnil;
192} 201}
193 202
194/* Compile a regexp if necessary, but first check to see if there's one in 203/* Compile a regexp if necessary, but first check to see if there's one in
@@ -227,10 +236,8 @@ compile_pattern (pattern, regp, translate, posix, multibyte)
227 && EQ (cp->buf.translate, (! NILP (translate) ? translate : make_number (0))) 236 && EQ (cp->buf.translate, (! NILP (translate) ? translate : make_number (0)))
228 && cp->posix == posix 237 && cp->posix == posix
229 && cp->buf.target_multibyte == multibyte 238 && cp->buf.target_multibyte == multibyte
230 /* TODO: Strictly speaking, we only need to match syntax 239 && (EQ (cp->syntax_table, Qt)
231 tables when a character class like [[:space:]] occurs in 240 || EQ (cp->syntax_table, current_buffer->syntax_table))
232 the pattern. -- cyd*/
233 && EQ (cp->syntax_table, current_buffer->syntax_table)
234 && !NILP (Fequal (cp->whitespace_regexp, Vsearch_spaces_regexp))) 241 && !NILP (Fequal (cp->whitespace_regexp, Vsearch_spaces_regexp)))
235 break; 242 break;
236 243
diff --git a/src/sysdep.c b/src/sysdep.c
index 307f69290d6..3fd134e476d 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1373,16 +1373,6 @@ init_sys_modes ()
1373{ 1373{
1374 struct emacs_tty tty; 1374 struct emacs_tty tty;
1375 1375
1376#ifdef MAC_OS8
1377/* cus-start.el complains if delete-exited-processes is not defined */
1378#ifndef subprocesses
1379 DEFVAR_BOOL ("delete-exited-processes", &delete_exited_processes,
1380 doc: /* *Non-nil means delete processes immediately when they exit.
1381nil means don't delete them until `list-processes' is run. */);
1382 delete_exited_processes = 0;
1383#endif
1384#endif /* MAC_OS8 */
1385
1386#ifdef VMS 1376#ifdef VMS
1387#if 0 1377#if 0
1388 static int oob_chars[2] = {0, 1 << 7}; /* catch C-g's */ 1378 static int oob_chars[2] = {0, 1 << 7}; /* catch C-g's */
diff --git a/src/w32fns.c b/src/w32fns.c
index f2e456b85bf..1381662c99c 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -2109,7 +2109,12 @@ w32_createwindow (f)
2109 } 2109 }
2110 } 2110 }
2111 2111
2112 if (EQ (left, Qunbound) && EQ (top, Qunbound)) 2112 if (f->size_hint_flags & USPosition || f->size_hint_flags & PPosition)
2113 {
2114 XSETINT (left, f->left_pos);
2115 XSETINT (top, f->top_pos);
2116 }
2117 else if (EQ (left, Qunbound) && EQ (top, Qunbound))
2113 { 2118 {
2114 /* When called with RES_TYPE_NUMBER, w32_get_arg will return zero 2119 /* When called with RES_TYPE_NUMBER, w32_get_arg will return zero
2115 for anything that is not a number and is not Qunbound. */ 2120 for anything that is not a number and is not Qunbound. */
diff --git a/src/xdisp.c b/src/xdisp.c
index 7ca259e2b10..fb30722d8b8 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1355,7 +1355,8 @@ pos_visible_p (w, charpos, x, y, rtop, rbot, rowh, vpos)
1355 it2 = it; 1355 it2 = it;
1356 if (IT_CHARPOS (it) < ZV && FETCH_BYTE (IT_BYTEPOS (it)) != '\n') 1356 if (IT_CHARPOS (it) < ZV && FETCH_BYTE (IT_BYTEPOS (it)) != '\n')
1357 move_it_by_lines (&it, 1, 0); 1357 move_it_by_lines (&it, 1, 0);
1358 if (charpos < IT_CHARPOS (it)) 1358 if (charpos < IT_CHARPOS (it)
1359 || (it.what == IT_EOB && charpos == IT_CHARPOS (it)))
1359 { 1360 {
1360 visible_p = 1; 1361 visible_p = 1;
1361 move_it_to (&it2, charpos, -1, -1, -1, MOVE_TO_POS); 1362 move_it_to (&it2, charpos, -1, -1, -1, MOVE_TO_POS);
@@ -17823,12 +17824,20 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
17823 break; 17824 break;
17824 17825
17825 case 'c': 17826 case 'c':
17826 { 17827 /* %c and %l are ignored in `frame-title-format'.
17827 int col = (int) current_column (); /* iftc */ 17828 (In redisplay_internal, the frame title is drawn _before_ the
17828 w->column_number_displayed = make_number (col); 17829 windows are updated, so the stuff which depends on actual
17829 pint2str (decode_mode_spec_buf, field_width, col); 17830 window contents (such as %l) may fail to render properly, or
17830 return decode_mode_spec_buf; 17831 even crash emacs.) */
17831 } 17832 if (mode_line_target == MODE_LINE_TITLE)
17833 return "";
17834 else
17835 {
17836 int col = (int) current_column (); /* iftc */
17837 w->column_number_displayed = make_number (col);
17838 pint2str (decode_mode_spec_buf, field_width, col);
17839 return decode_mode_spec_buf;
17840 }
17832 17841
17833 case 'e': 17842 case 'e':
17834#ifndef SYSTEM_MALLOC 17843#ifndef SYSTEM_MALLOC
@@ -17870,11 +17879,16 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
17870 17879
17871 case 'l': 17880 case 'l':
17872 { 17881 {
17873 int startpos = XMARKER (w->start)->charpos; 17882 int startpos, startpos_byte, line, linepos, linepos_byte;
17874 int startpos_byte = marker_byte_position (w->start); 17883 int topline, nlines, junk, height;
17875 int line, linepos, linepos_byte, topline; 17884
17876 int nlines, junk; 17885 /* %c and %l are ignored in `frame-title-format'. */
17877 int height = WINDOW_TOTAL_LINES (w); 17886 if (mode_line_target == MODE_LINE_TITLE)
17887 return "";
17888
17889 startpos = XMARKER (w->start)->charpos;
17890 startpos_byte = marker_byte_position (w->start);
17891 height = WINDOW_TOTAL_LINES (w);
17878 17892
17879 /* If we decided that this buffer isn't suitable for line numbers, 17893 /* If we decided that this buffer isn't suitable for line numbers,
17880 don't forget that too fast. */ 17894 don't forget that too fast. */
@@ -24319,9 +24333,10 @@ This variable is not guaranteed to be accurate except while processing
24319 DEFVAR_LISP ("frame-title-format", &Vframe_title_format, 24333 DEFVAR_LISP ("frame-title-format", &Vframe_title_format,
24320 doc: /* Template for displaying the title bar of visible frames. 24334 doc: /* Template for displaying the title bar of visible frames.
24321\(Assuming the window manager supports this feature.) 24335\(Assuming the window manager supports this feature.)
24322This variable has the same structure as `mode-line-format' (which see), 24336
24323and is used only on frames for which no explicit name has been set 24337This variable has the same structure as `mode-line-format', except that
24324\(see `modify-frame-parameters'). */); 24338the %c and %l constructs are ignored. It is used only on frames for
24339which no explicit name has been set \(see `modify-frame-parameters'). */);
24325 24340
24326 DEFVAR_LISP ("icon-title-format", &Vicon_title_format, 24341 DEFVAR_LISP ("icon-title-format", &Vicon_title_format,
24327 doc: /* Template for displaying the title bar of an iconified frame. 24342 doc: /* Template for displaying the title bar of an iconified frame.
diff --git a/src/xmenu.c b/src/xmenu.c
index 080f9e819a2..be77b9fdbd4 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -3776,8 +3776,7 @@ syms_of_xmenu ()
3776 3776
3777#if defined (USE_GTK) || defined (USE_X_TOOLKIT) 3777#if defined (USE_GTK) || defined (USE_X_TOOLKIT)
3778 defsubr (&Smenu_bar_open); 3778 defsubr (&Smenu_bar_open);
3779 Fdefalias (intern ("accelerate-menu"), intern (Smenu_bar_open.symbol_name), 3779 Ffset (intern ("accelerate-menu"), intern (Smenu_bar_open.symbol_name));
3780 Qnil);
3781#endif 3780#endif
3782 3781
3783#ifdef HAVE_MENUS 3782#ifdef HAVE_MENUS
diff --git a/src/xterm.c b/src/xterm.c
index a75140fb9e3..856fbef435b 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8638,7 +8638,7 @@ x_check_expected_move (f, expected_left, expected_top)
8638 int expected_left; 8638 int expected_left;
8639 int expected_top; 8639 int expected_top;
8640{ 8640{
8641 int count = 0, current_left = 0, current_top = 0; 8641 int current_left = 0, current_top = 0;
8642 8642
8643 /* x_real_positions returns the left and top offsets of the outermost 8643 /* x_real_positions returns the left and top offsets of the outermost
8644 window manager window around the frame. */ 8644 window manager window around the frame. */