aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2006-01-25 07:10:04 +0000
committerMiles Bader2006-01-25 07:10:04 +0000
commitb2ba4dcba149f845bf7fcf15b6cede6a6cbcc336 (patch)
treed9ca500b0501201584dbab3b74a83d1ba7e374c9
parent90fc2bc59774318b3db7c3642df00a1297f6b7ff (diff)
parent7347faa822b5ea177df5b2ed7a2b7d79194f0bcc (diff)
downloademacs-b2ba4dcba149f845bf7fcf15b6cede6a6cbcc336.tar.gz
emacs-b2ba4dcba149f845bf7fcf15b6cede6a6cbcc336.zip
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-7
Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 4-14) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (base, patch 1-7) - tag of miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-187 - Update from CVS - Merge from emacs--devo--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10 (patch 187) - Update from CVS
-rw-r--r--admin/FOR-RELEASE2
-rw-r--r--etc/ChangeLog14
-rw-r--r--etc/NEWS3
-rw-r--r--etc/TODO4
-rw-r--r--etc/emacs-buffer.gdb19
-rw-r--r--etc/images/gud/pstar.xpm2
-rw-r--r--etc/orgcard.ps414
-rw-r--r--etc/orgcard.tex4
-rw-r--r--lisp/ChangeLog736
-rw-r--r--lisp/ChangeLog.106
-rw-r--r--lisp/battery.el17
-rw-r--r--lisp/calc/calc-arith.el2
-rw-r--r--lisp/calc/calcalg2.el2
-rw-r--r--lisp/calendar/cal-menu.el46
-rw-r--r--lisp/calendar/calendar.el530
-rw-r--r--lisp/completion.el25
-rw-r--r--lisp/cus-edit.el85
-rw-r--r--lisp/desktop.el2
-rw-r--r--lisp/dired.el20
-rw-r--r--lisp/emacs-lisp/find-func.el49
-rw-r--r--lisp/faces.el22
-rw-r--r--lisp/font-lock.el2
-rw-r--r--lisp/gnus/ChangeLog59
-rw-r--r--lisp/gnus/gnus-art.el21
-rw-r--r--lisp/gnus/mailcap.el7
-rw-r--r--lisp/gnus/mm-bodies.el8
-rw-r--r--lisp/gnus/mm-decode.el10
-rw-r--r--lisp/gnus/mm-uu.el41
-rw-r--r--lisp/gnus/mm-view.el70
-rw-r--r--lisp/gnus/mml.el19
-rw-r--r--lisp/gnus/spam.el47
-rw-r--r--lisp/hl-line.el10
-rw-r--r--lisp/info.el15
-rw-r--r--lisp/international/latexenc.el3
-rw-r--r--lisp/isearch.el4
-rw-r--r--lisp/log-view.el15
-rw-r--r--lisp/mail/rmail.el21
-rw-r--r--lisp/mail/rmailout.el8
-rw-r--r--lisp/net/tramp-ftp.el38
-rw-r--r--lisp/net/tramp-util.el16
-rw-r--r--lisp/net/tramp-vc.el69
-rw-r--r--lisp/net/tramp.el190
-rw-r--r--lisp/net/trampver.el2
-rw-r--r--lisp/outline.el5
-rw-r--r--lisp/play/doctor.el2
-rw-r--r--lisp/progmodes/cpp.el2
-rw-r--r--lisp/progmodes/python.el2
-rw-r--r--lisp/ses.el27
-rw-r--r--lisp/simple.el41
-rw-r--r--lisp/startup.el17
-rw-r--r--lisp/term/w32-win.el4
-rw-r--r--lisp/textmodes/bibtex.el2
-rw-r--r--lisp/textmodes/flyspell.el6
-rw-r--r--lisp/textmodes/org.el277
-rw-r--r--lisp/textmodes/table.el2
-rw-r--r--lisp/thumbs.el362
-rw-r--r--lisp/vc-rcs.el6
-rw-r--r--lisp/vc-sccs.el6
-rw-r--r--lispref/ChangeLog18
-rw-r--r--lispref/commands.texi17
-rw-r--r--lispref/display.texi12
-rw-r--r--lispref/elisp.texi2
-rw-r--r--lispref/markers.texi17
-rw-r--r--lispref/nonascii.texi8
-rw-r--r--man/ChangeLog47
-rw-r--r--man/cc-mode.texi4
-rw-r--r--man/custom.texi39
-rw-r--r--man/ebrowse.texi6
-rw-r--r--man/files.texi19
-rw-r--r--man/killing.texi4
-rw-r--r--man/kmacro.texi4
-rw-r--r--man/org.texi4
-rw-r--r--man/programs.texi2
-rw-r--r--man/ses.texi6
-rw-r--r--man/text.texi4
-rw-r--r--man/tramp.texi96
-rw-r--r--man/trampver.texi2
-rw-r--r--man/vip.texi2
-rw-r--r--man/widget.texi5
-rw-r--r--src/.gdbinit27
-rw-r--r--src/ChangeLog140
-rw-r--r--src/alloc.c23
-rw-r--r--src/dired.c10
-rw-r--r--src/keyboard.c16
-rw-r--r--src/keymap.c6
-rw-r--r--src/lread.c8
-rw-r--r--src/minibuf.c3
-rw-r--r--src/puresize.h2
-rw-r--r--src/regex.c9
-rw-r--r--src/s/irix6-5.h4
-rw-r--r--src/w32.c18
-rw-r--r--src/xdisp.c44
-rw-r--r--src/xterm.c57
93 files changed, 2591 insertions, 1534 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index a9da7abb102..9dc802fb43f 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -50,6 +50,8 @@ invalid pointer from string_free_list.
50 50
51* BUGS 51* BUGS
52 52
53** Roland.Winkler@physik.uni-erlangen.de's Dec 3 bug report for align.el.
54
53** Ronan Keryell's Sep 23 bug about "tramp sudo:: and version control on RCS" 55** Ronan Keryell's Sep 23 bug about "tramp sudo:: and version control on RCS"
54 56
55** TCP server processes do not work on Windows. 57** TCP server processes do not work on Windows.
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 847907bbe73..4ad9924bcc0 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,17 @@
12006-01-25 Nick Roberts <nickrob@snap.net.nz>
2
3 * images/gud/pstar.xpm: Make background transparent.
4
52006-01-24 Noah Friedman <friedman@splode.com>
6
7 * emacs-buffer.gdb: Replace all references to `cdr' field of
8 conses with `u.cdr', per change Andreas Schwab 2005-11-15
9 of src/lisp.h.
10
112006-01-23 Michael Albinus <michael.albinus@gmx.de>
12
13 * NEWS: tramp can be removed by M-x tramp-unload-tramp.
14
12006-01-15 Dan Nicolaescu <dann@ics.uci.edu> 152006-01-15 Dan Nicolaescu <dann@ics.uci.edu>
2 16
3 * e/eterm-color.ti: Re-enable the ri entry. Add kich1. 17 * e/eterm-color.ti: Re-enable the ri entry. Add kich1.
diff --git a/etc/NEWS b/etc/NEWS
index 824539fa462..48316dbfbfa 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1860,6 +1860,9 @@ If you want to disable Tramp you should set
1860 1860
1861 (setq tramp-default-method "ftp") 1861 (setq tramp-default-method "ftp")
1862 1862
1863Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
1864tramp-unload-tramp.
1865
1863--- 1866---
1864** The URL package (which had been part of W3) is now part of Emacs. 1867** The URL package (which had been part of W3) is now part of Emacs.
1865 1868
diff --git a/etc/TODO b/etc/TODO
index ac250e57eda..28aa3df024f 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -9,6 +9,8 @@ to the FSF.
9 9
10* Small but important fixes needed in existing features: 10* Small but important fixes needed in existing features:
11 11
12** buffer-offer-save should be a permanent local.
13
12** revert-buffer should eliminate overlays and the mark. 14** revert-buffer should eliminate overlays and the mark.
13 15
14** erase-buffer should perhaps disregard read-only properties of text. 16** erase-buffer should perhaps disregard read-only properties of text.
@@ -54,6 +56,8 @@ to the FSF.
54 56
55** The toolbar should show keyboard equivalents in its tooltips. 57** The toolbar should show keyboard equivalents in its tooltips.
56 58
59** Modify allout.el to use overlays, like outline.el.
60
57* Important features: 61* Important features:
58 62
59** Provide user-friendly ways to list all available font families, 63** Provide user-friendly ways to list all available font families,
diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb
index c4f8eef481d..7b5f2e51a4d 100644
--- a/etc/emacs-buffer.gdb
+++ b/etc/emacs-buffer.gdb
@@ -1,9 +1,12 @@
1# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps 1# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
2 2
3# Copyright (C) 2005 Free Software Foundation, Inc. 3# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
4 4
5# Maintainer: Noah Friedman <friedman@splode.com> 5# Maintainer: Noah Friedman <friedman@splode.com>
6# Status: tested with Emacs 22 6# Status: Works with Emacs 22.0.51.1 (prerelease) as of 2006-01-12.
7# Older cvs snapshots, and released versions, will not work due to
8# changes in lisp data structures. But there are older versions of
9# this gdb script which work with those versions.
7# Created: 2005-04-28 10# Created: 2005-04-28
8 11
9# This file is part of GNU Emacs. 12# This file is part of GNU Emacs.
@@ -29,8 +32,8 @@
29# an Emacs coredump; they may not always be file-backed or have a recent 32# an Emacs coredump; they may not always be file-backed or have a recent
30# autosave. 33# autosave.
31# 34#
32# The Emacs executable must have debugging symbols for this to work. But 35# The Emacs executable must have debugging symbols for this to work.
33# you never strip Emacs, right? Right! 36# But you never strip Emacs, right?
34# 37#
35# The main commands of interest are `ybuffer-list', `yfile-buffers', 38# The main commands of interest are `ybuffer-list', `yfile-buffers',
36# `ysave-buffer', and `ybuffer-contents'. The `y' prefix avoids any 39# `ysave-buffer', and `ybuffer-contents'. The `y' prefix avoids any
@@ -98,11 +101,11 @@ define ybuffer-list
98 while $alist != Qnil 101 while $alist != Qnil
99 ygetptr $alist 102 ygetptr $alist
100 set $this = ((struct Lisp_Cons *) $ptr)->car 103 set $this = ((struct Lisp_Cons *) $ptr)->car
101 set $alist = ((struct Lisp_Cons *) $ptr)->cdr 104 set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
102 105
103 # Vbuffer_alist elts are pairs of the form (name . buffer) 106 # Vbuffer_alist elts are pairs of the form (name . buffer)
104 ygetptr $this 107 ygetptr $this
105 set $buf = ((struct Lisp_Cons *) $ptr)->cdr 108 set $buf = ((struct Lisp_Cons *) $ptr)->u.cdr
106 ygetptr $buf 109 ygetptr $buf
107 set $buf = (struct buffer *) $ptr 110 set $buf = (struct buffer *) $ptr
108 111
@@ -150,7 +153,7 @@ define yset-buffer
150 set $alist = Vbuffer_alist 153 set $alist = Vbuffer_alist
151 while ($alist != Qnil && $i > 0) 154 while ($alist != Qnil && $i > 0)
152 ygetptr $alist 155 ygetptr $alist
153 set $alist = ((struct Lisp_Cons *) $ptr)->cdr 156 set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
154 set $i-- 157 set $i--
155 end 158 end
156 159
@@ -160,7 +163,7 @@ define yset-buffer
160 163
161 # Get the buffer object 164 # Get the buffer object
162 ygetptr $this 165 ygetptr $this
163 set $this = ((struct Lisp_Cons *) $ptr)->cdr 166 set $this = ((struct Lisp_Cons *) $ptr)->u.cdr
164 167
165 ygetptr $this 168 ygetptr $this
166 set $ycurrent_buffer = (struct buffer *) $ptr 169 set $ycurrent_buffer = (struct buffer *) $ptr
diff --git a/etc/images/gud/pstar.xpm b/etc/images/gud/pstar.xpm
index 4f9ed1b64e8..b7203d3e8fd 100644
--- a/etc/images/gud/pstar.xpm
+++ b/etc/images/gud/pstar.xpm
@@ -1,7 +1,7 @@
1/* XPM */ 1/* XPM */
2static char * pstar_xpm[] = { 2static char * pstar_xpm[] = {
3"24 24 2 1", 3"24 24 2 1",
4" c #BDBDBEBEBDBD", 4" c None",
5". c #000000000000", 5". c #000000000000",
6" ", 6" ",
7" ", 7" ",
diff --git a/etc/orgcard.ps b/etc/orgcard.ps
index 4b0d039d0b8..2b9f953dc61 100644
--- a/etc/orgcard.ps
+++ b/etc/orgcard.ps
@@ -10,7 +10,7 @@
10%DVIPSWebPage: (www.radicaleye.com) 10%DVIPSWebPage: (www.radicaleye.com)
11%DVIPSCommandLine: dvips -t landscape -o orgcard.ps orgcard.dvi 11%DVIPSCommandLine: dvips -t landscape -o orgcard.ps orgcard.dvi
12%DVIPSParameters: dpi=600, compressed 12%DVIPSParameters: dpi=600, compressed
13%DVIPSSource: TeX output 2006.01.13:1223 13%DVIPSSource: TeX output 2006.01.20:1449
14%%BeginProcSet: texc.pro 14%%BeginProcSet: texc.pro
15%! 15%!
16/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S 16/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -352,210 +352,204 @@ B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43 352CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F 3530B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E 35408E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2 355588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C1
356C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A 3563A6757674B84D9B585F981DDFFB42163EADF90346248E014A74E3FB3E6276FC1
357CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F 357B4289FCDB4FDBE9C70CAF38E410965A3610F649DF8F81C73B87FBE27D44A3CA6
358AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C 358D7883821CA22795E3EED184F4F59AC687AC06DC4DE7FD098E0EA61C494A5E960
359C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD 359643D78025B1D18B4B7FBACCE2DEA453E35C08A6AC093F45FA0B1DE132F743CBA
36085D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE 36075F2E7BE0311132C0E63C69D5182B98AEFC610F61D1E1EA51120D8A9F5DFFA8C
36191430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3 36137C0ECCA2120E1DF7A551343BD7573FA24144A8D59CA684FF9FCC1E023A3401E
3622E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76 3629797D658E92CED2255A273E429FAF43B0355E27EC83974BA4675520B2DC70DDA
363342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113 363DF783452C679BB77759479CB02FF3377BCCD8580E3D87D34CD579AA3F89AAB44
364ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1 364E526EE761B0D371E27B5A02A5C494C5169651FA79795D332045B3E7F2CA100FA
365C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720 365FA8ADA74DCA851DA1BC7531E58EE08FC22F2F35E94D5DA013A4C9669B2825D26
36610B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C 366021982566B4347E518E82602B0CE5CBA1CD38E8B3CEBBFDF9E9811C896313F37
3670FAEBF246743F62D280875D052656696AA88DABB918F79279A980754F3DCFBEF 36751D5F7162441E4B2DF18A7A34326114950BE85B3E5AB465D54652575AAC03DF3
3687999E7FB7C9E7F88CB15E1596F08E48FA74F1CB613B587BFE72717437E38D08A 368E50E9FE8D184D33534E12AB92DF20BD72DC129A86CCC24981FF82E297D0B0F9E
369C8B160982A6F92CD0BAD7E033766BB1D92F78F22FE5750D002AB2C7A101A57D6 3690B66137443B501B5FA711C7DF380DB1F64404DA241D1EF5F2D012A0293405302
3703E7ABA9BD4B8C0A4F2820123BBCCD520B9608AFD4372366D876F848ED068245B 370F828BF879F46962DFAF75F44D4A394DB9D42E4874477097FF6F8DB9BC8712BC8
3716BC1DDF4B826E4A9FEC4390CEB2DAAA63D9D013B706059347709F3E996C3682A 371661A95A2467073355FE697CBE1D8E298569935E5405C22555C40DB775A808F54
372F88D827B8B7E1206BF2B2A394AFB00B1207819DAE82D1132989702B219E4EA71 372642939D8E4F76C61B2FE966F4FB55319873127C8EEB05732A1538FE03EC2D8CB
373A2BD6EDA183C552C874DBD142E826B583311784EEBFBE96D3716E0DA9C4B1CD1 3739089DE328A396DAB3908179FEA2FC3F2ECC48593049FD23114A04B474FF4FBED
374C7D649FE269C801411290846EB69BECFA24AACFE8895AC574ED538951B84CDBE 3744D3B8835148CCB742574F4914B7201CE41A57A42EF61099509E5C42B744611C2
3754D935C15DADFFD2179C53655CE2728B017DCBAA14D7B7140AA7B42492E7C568A 375B40581A6BCF6FA223E5B5221B8BB16AC6EEE3774130E121F23A04E1548F58899
376C718B186FE248F58148FBEAC7CF56A67E1B7CF6E5A3D6B5675AA8005BDD71A6F 37641C9DD31E720AE7392E4E2CE0ED4B691620CDB0228D3BEE1F4BA6E289E33B7A5
37740B90E5B304E43F0BCBAE31238B09B65AA17F09B0CEB3A609156CF83E92AB27B 3776DFDA767F5927F00BD22D4BA6397B37BBDE84BF9017C01DD5319AC7D33F8C007
378BD1E80DCCF305D627821FB110676D0BA0F02790A51804686143AB72EAB98AAC7 378AF43EF247FDF67CE6627D4A0B0F00A3E58DF6323BDF1100660FF18496649C2EE
379CB4E052BC8A19362655F0DD0AC4B8578BB227830D9D713116725A3BB05CB2F84 3796BF1D9940404E2E4B7BB00C807808BACEFF0581E38B9A7F03888BA67E73E002F
3809A84884D80116E47E5FA2802EBE7439A8484A9FF18A5F5838731C6C55EF3B749 380871DA37277AB6ED4FB27AF66B9A02C62313495E94113D667CB3FA94DE087C6FA
381ECEDADC2671F81A2787323E372AC20D3E02849D3096C64EB86393B374DB0DFBC 3812481136385B557165CDEA492CE335DB20BFAFE7A3015C95D8C88F6F3065D7F72
382393E9F0364F58CF81BC788C7B779BA0ED32A26389CBDE9E5A96E79D014C0B5F2 3825484F8B665295CAF3E207C758FD9533889D7EE5E16D08577A97185871BAB4CFE
383D57F9B968ED9FE793AA0E1A02432E1A5075947D96909DC06A06C467CB86F428B 383CC58C88B3B0BA4130727C2800D2C305855369729B8CD09AFF83FFFCC3A85014E
384BCFB5149725BAFAD34F733692AD90AFCE2B3A9281CEBDE9EFD67DA0A79BC0AA6 3847358281AD0C842CC1FB985DB59470AE90BE27190DE79134F2C18447150A6706F
385E6C47F2FD4E8698109A28915DAA6CBA5FCBD52EAEAC8087796A4309EBCFB2DE6 3855597A256370F4EFCDF59A7EA8C9BFA2A194DC5F1975D7E875F036BBA686FDC22
386295ED1CE5C51255C05F9258F958E9F7A7A5AD52F8D9715B99CC3CDD77A5212FD 3868E9934A3ECE619598C0CD24B3226D55BDC6BF23ED4659DE24072454622A47FC1
387BFAC311D3E5699D5D5BAD6DE8C425B118D9636F4AD4EEA8FBA4BDF3B15C2A939 387ECDF8D1B202F9178BC1075A4AD29D85545F9C08E16F5BC07C7218FE4C8914D89
388926162F94D522B0990E7204BF3A81E3E72C9A80D7688BA28DEE8F88155F8CB15 388BC259609E90B47B956DE309C40E2943ED6CD471A8506FD38066AB96F573E7922
38902EF6C6BD3C9A961B591DC80C24CE9E9BE24254911D558534A7B4AE0CEB01487 389B77B4386FDFBB8AC7154342C810D452827169AB8FDB73F50AB7EB6E38A930807
390B6451320B37891175CAE2F534828978831AFC6846CDF9A2B86FC209A5DC8983B 390F91212373CDDBE84FFF86ABAFBAE766F519D1DA26404D7EDFFA803DCB8382EFE
3911A6B5BD7D9D33AAF2D7340ACACD7E03CB238D0366E83852B2BBE428063A4FCEF 391DA1C3D22D195805069C848619646B126333D0605BD76497030E0D3E32EFFAD65
392B6E48332E6633F790971A587A3F038A256D181B5584691A9405732D33A2F55FE 392F84003741FCCC4DFF67CA124B41DA9F0CAD27A1A46E38DA588B443C4301216DA
3938BD68E07E6E01A27FC74BCC9946204A478D13C51490E9D76C4EE375190026156 3935DA7A473F9C5F04B2B47446168A2017136ABFA92F6EE9C5DA2B1A92CE664659A
394FD879EBC0A579DBCB69058B252735F3A864B0C42B7555ADD028DCB937087EE86 394027899D7BE0B322ACC0EF38EA681B4D90F5073C4B4064F8053AC54ABC1594883
3957108667781A85ED8A09260BE52B90B1BB8B6A268169D09AFEFD0C58085ED5550 395E4D836FD382F00043D97ECE2DEDDFE704F10CC450E4451679E373041B9814AF1
39658866429B1FFB47465BB91C94DD392DF00A1900E021990C23952430AAC50E079 3960D2FE34CC22F7938562B506BC63C03AC904943C4CDCEE5D25F9B65816561962A
3975685C686685BB26743FCE9E9ED88D3A523AA10E4317703BF7EA74C15B3ECD49E 39768EC20E9BD6E4964226F8C64DC410AEE5DF5F607ACC023BB583D471EAD0B8190
39833216F52B45B23195E133522498B357511593C41D45660503B93A02FE7DFA71B 398912DC0D8BFFA623F944AA1AB0BB1545DFBA26229F161201DADB7E07FBFA9040F
39951FC7E10E28F60367293388C4D143F49AADD411685A9BF60B6D544E32B8C0902 3995D6D30EBAF57A2EF4A82A30D67825A35E24F350F9F700B42BC926ADF418F6375
4008ECA67229D25B79A56639B67A4E40B8A2CEE1B92CEC3121F869520F469BBEA38 400A7C7AE27FF720E9A71817E395F33E8341B70DEF491B6C4AE4051D825B09535D3
401B6E631B249E53EB6A8A886ED97E5C09372B31F724F165A5BEE9385CF89FEFCF9 4014A0E7B0853CC42956A0A2F1A7421FEBB020D1F178371271DA9893AA2082DED36
402F6CD28226E6D60A32A6C2ECFF8E473F816F6CC1A90C1783A3E6303B99B11959B 402F834704E1CDCACEEC30EFC5514FA218E88E8C9EBD5814124D637221AE0D898D1
403510B684B9257617EFBE7DB72BAF6F5756B22110B675CE11A2A88148DE330AD84 4032EFDDF9296D8AD971873D821B5E972F89E24659DADC4D82EE284F6247933EBD6
404C8DBF2C79BB6D2199F42677B85F30C0D6885B0A316B1E53CFB32675179AA088A 404643E846894BF9F2A272965E7D3E1466C1AD086099C214CD475F5191FFA282F92
40545995F1A1D323CF8BDB3E769B851F5BFB6C619CA74CEFE9650F58C96EC512385 4056EE857FE6AFDD3FF7664E82E0E265CD5487389254F38042EBB5F9866C5B24154
406F7A8C8B0CA55F030B7CEB6A7CF577A544744B62424A403A69A4BB6C5EA42375B 406DA003C177D7E9384E8426D7B88D5701AE7C530A50F6D027904C041F690143008
407DDFD2D1D74FFE633474D4ABA14C24EB7F44BB6E69F759E23FF799E07733E4C7A 407D6246306E4644AED88E76F83949352CE1329B1A5D07A1FDA04DA0BBE5F30A925
408F142DD6563A83DB58E7FA1BB7BA82776441875E6B0D44801762E3CA70C8B738A 408740235EAC5DD32F81545836873EC429AD95E7F56BFE4DF70399A7AD2476EF29E
4092B52E48BEC09C29544B6D24513708C7C86AEA3BB56AD0675CBB8CD6E41AD01E4 40945517385D898071118D2DE56D7A2294CB12D3E22EA35234E752DF7F061A5FF8F
410DD6F54B5D6CC95AEB2D7D4C1C45D6274DD3FD7449982BDB5609BD3ADB64A73C4 4105765C7C13FC74144738679B42351E3B82CA2C91F619B5D06C1FD36661F4397B0
4116F9C5897CFF003130758DB267EB173CF4DBF412C3F69012675FDCA9A8E8D2353 4117540457CCB3D2FB735BBD9ADAA24756DAD45CD5921AAB588DCC80103E1C50290
4125C272A4843F249A8CA0E03CB00B503AEB6C1BEC84B87420520EAD65AC7FEF5B9 412204EC4F7F5DF74D8CFF0EEA530CA2D0E88C86431F22062276E9BF9BD68FB8517
4130489D803DCCB72AD4F7875335165467D04BDA6CACADBAF5A8BB8B26C153A491D 4137245261F180FEB9CD574A82A17B8A134BBBDC9B5B7954831DCFA68E0B4266C6C
414AFDBD9695BDA29BC2FEEB2849CEE6F4C22FE5C40044105ED2288FE0C96865CF4 414F99588BF404005CE59C53E94B767B9EFDC1E5674970D097CC221C0C3BC825F17
415093D21C3A6930538DD2ADBFCDF61072F55156267A7069A0E3025090B2CEB4C7D 41562D9F00A1B46B915BC8F0BF7AB31B3F688C9C968F516FC3DEEB149981EED2A47
4169303AC8A31EE3274BAFCF6A1A069D506D4DCE7051C33292C8087DAE14E1D0A9F 416C51C8E8CA61F1744B31F483A52ECBE76606F24D90B13569A546420032EAE0F29
41740293446B6C01DB83E64E57705AF674684C1BE9527F8B4E242B3CAF61C77E3E4 4170A564955B4BE1058A9E6EA3B320A15282EE2449E928C8E405BF3FECE131B30E3
418AB8EF5BC4CCDEFBBFDA737A7931354DB5AB2A94EBF0EF06E535F03CEC3CA2F2A 41877FC3A735A6E2242C1E4A27793A0E1BB63FF7F6958E5312FE1549DDDD8E15BD1
419568426AFB6B49CB5AB4D5571C9BDA39649E652B44A6A2B140B4E33639ED32A6A 4197BB07C6564D029C830B89880B4F49207C1602EE590898896EC49BE45DA8906B7
420ECDBDCD764AE3428091516C10F4F350A801452AE6BB44D990640AB2A54976F26 420380D59CE86D7AAB6B0762F624C88D886488B7F6AE9F1328FC400869CE4EEFD7E
42113780C2757C57691D4F47B2538C532F5769ED5CC1BCD4A9285209B7306109F0F 4217BF55C3DFD059FA20338C9BB33D807236EA2EF6E1C0C1E9EB095DA69FE2831FA
422C864E491D5F0FBEE125BF87807951FBA44D152F99FDB9B79A927AD91C423AEF4 4224A0F750418D935F1F0E45AECAA61ADE9D96012511981710FC4225F5C7660A2F7
4231E7AD1BB32D54808200E350F0F75B2C74574B6A752F3227B2005D768299C755F 4230A417E5910F4F05D43E8AE0872B16F4E46554848927F59BDA1EBC5724ACA6B1B
42407A94926A42A5806B21C44A01983B93B2AF6C916693939A8E917E4CE81A8B007 4246A62FA03E86D85104E88ADCBD253734F9D078543E3A9F1985FA4D4A77DF2C55C
4259475395D9E2D4696D216AB1D23F022DEFDCF1B31CB06045BA1A7545F921F1088 4256F5E9257851A953F1BEF7192B89A409B5566AAC7DDA66F6DE4D89FDF39994611
426B863CD5848A20DEDD289A2D7B05AD6DD68F9FF8F2C4D9145042A1CD985DC1E4E 4265B95857B8B6362BAEA1C939F638E527CA9F58683236B1886E5763B518D5A9F50
427C2F6C2446DE2E7DD577E3E4378DD6180F79444A7DC8A3FAC02970E2009484816 427012A1D991AECF0E327594A12476A68C715130D197C1EE81CEEB4DE9E05F7F4EB
4281E88FB6188486646B178C7119CA520CCA3503481D895D23D73B5598130AF4FF5 4280F06054BA90F9CC30C27BE06803ADBE520115F0FB8BA26B0DA1E5A8D28F1CB00
4295E6ECC3EA740B1030BE7CB8343FB90E0FF74D76FE27AE3B799BE36103748518C 429F7808BD2B0D629A0BE002C11FEAD0A59555E90851E47D466BD87069845B2A6E8
4306CDB243CE716A0CF5FAC0A5F18E2328EC5190B4B00D14A9D71E135E5A13B7DA2 43053E054711A465359DAF057550B8EE9F11F8CA6DEFE6FA70FCAC9856ED992244D
431476FE03E36B5B56E0B561CA963B25CA77DCEAE2952FA2D1EC8CB7DCCD4DA7A35 431B6D8DF2428F1D09C54C41F54F939DB26081DC63D0E8AC0690E72E76EF2F004B3
432485550BD92A50948436E12DD1FB75003B4B851DC45E41A2461FCD300A2811430 4327204E227BD70421CE589A5689FA540C2889BE8B9841193BC020FC07B7B245580
43357EFC3E99C44FB0DD0BAD0B7BA4F97E1B752731C02FAB1CD9038F63A358ED8A2 433996EB478FDB9C2F3F7CF02CAFAF3005F12CC496EA254D56F4A26D841E31B2360
4345BB20E431A2A41731F167962426AA59FC40F87C820F3990557147A24CB69579D 4348A1716DBC1A0312F66A2B19A55399BFD9D80DF17982829C3A5F790634FD86DAB
435ED6E60D5EC6FEDEBBECC5BA12B07D4F72C47D306AE8194791D2EAF9A65457ECF 435542413C0E19CC1F40FBFB296DCF1DAD4135F688AE11C2A5896EF0C8A54F298B8
43663C187646D3A224B810CE2D1BB39FB02FDC1011C1840CB1632B9850E1C562CD1 436B9C21D82E15BE4B03C7F4D0D6861F28E86D25D98292D7C7C38EE483C2D6AE68F
43711F9456D74E001D63E3D5FC3E43B7F063089A5647A9021DD30D44E63933A5F1B 4375CC883C30B92FFDE6D60FD21E9E0E3441C317EE946448D26F8D169A074C92CD7
438607A9BBD0F40DCEC2AEC59D2C408E0BBB369BA8B9893F44A6DC0485EFA64C339 438D2FE4ADA122D99FDBACEC5D884F728266B21A6B5974B74A21884CC847747F648
439352CA32A841600C551C528EF69319293CEF00DE4E2481C98FEAED5E3232F316B 4391CF5A52ADB32B3CA4DF108D086734E7F57E2DD6800F22D73F1A579B06EBE6F81
440564446846604D48232DC65D721F780D0A11154DC5A305366F729782EFFE96B1E 440BD6DBEFF758FC63934F89E8CCE37101AC52AE651F3BD8BC6689297E04D740F6D
441FFF2D987570DB27A22F3322108CF43AD05CF27052FE2B9E964CF01CF5F0B8E19 44156543897EFD747491B65582F6C2896FF3C8521E6948745BA255720AD93C36766
4426E024C1557959972FC95341E057E1659850B20F565FC0EA76C2ADC7FDEBE4F2E 4425669C5C91E00A093608D3376F3107F2536046299BEFE221929CE0414E50D8054
443D4E9001F81BB6A4B8F7351831FF0D5EFB01B298C7E24B2FB493B1BF54875AC38 443F07AA336F93C01F28FFF407F6B726155F48F339D97E10D628DE2D5E0A2ECF9AC
4448D80014166113412DECE47EFBBE682078A1B5E05A6FB2BB3E93364BDB3DB352F 4446E17695CFBEC59A0EAF50110EDE388579FE3C3EEC98A1F0414F2EC9D3A1612E2
445781773B3E905AB5C5AC04D8111E9AAB5A213CE077435090CFB6DDCB3EC0A4DD2 445849A21EB33FFED0B4A753D44B6CCF61D7DA8603513059E5A5523D2FE01D2E970
446F9F946E2EB070E75C0512664014B4E090188526C471DA6F83BBEF74FE52D5597 446EFC7152105BB94A40C08792A75D94EF8333B6A392C51F6FF1BE5904B5877B655
447063400F44E7016615D743E90F10B54336BEF61F5234B1DF4860A4A4074A96263 44728E17551A83463B9DD6D6B2F419BD21119B7A9D14325311066AC1A20DB8986C5
4486854BD1E4AF82CB7D7A8DC04E4FB6C34557C9BA80C8743EF343C404228D71DE0 4484DB51E16782B5AE654F4C0C9A92C5A1555FB54B1B7E70DADF9A303514E7F7E7B
449E5A5A519D3BF01A08A967DCCF44ED06A889FE2107A3DA114E941621D2CB3E8A5 449E99C885DF161FA302CF928BC04535666D5508D2E01514B2DC740E3715BFD603C
450F4E3DA4B76C3D1BAF6A5CDDBC8513AAFF9F1D22E7DF630EBB82116A075F890F9 450D1CEF587FA9AF69D6D8019A2DF5DC33D61F1D324037A06563AE6985CA5DE4C61
451BF73E9777D380CF92C9B1762FA23407E03DD26642FADB9C85944D0E15CA82FDD 45128663AAF1815F8F0B1266C2EDF1A3322FF108170DFCBC13DF794B6A4E64D7202
4525638C26B10B9B94E74DD979BF5A6B6C0AC54C94C6E6716246612627CE4DA4C17 452E4200951568C73DCF0F2153D724DBC35F1EDA6B31FBF8E1E35C6781A47D1899C
4533AE7772E2B93562AEFB3184A7A9F866FA10901DA58E3BEB70831FC9C1C886EE4 4535710361657554359A7B07794967936966E29765A4E2B4741165EABA8A0ED123D
4549DDF0D69B286EB138EE735A382BF96D9B7EC33546F2C788128A3B1ED4CD2AC7D 45413B77EA9CAFD065B3DF2967F1FC142B0435583E6D221FD15307C8A388E2CD9F2
45576C5F3B82DCAFB8AB073256A7F98C1530BE8C94FF9213FDCA56ADC17E6F56552 455F7012BC7BF2D910F639F60F55508AF5A479FA963E7AA049F23A1D8EC24A90BAF
45687D1313366EE7CCC237857C93401628B7A0F4704720FD4966F16AFA4A764358E 4563537A956F8F16D2242300ADCAFE145B44F89DD449B2AE64F41BB4F92DD45F6C3
457EB0AD53B9C8104070E2D23E9AB793E9F67A2313DC6622213DD8E32FF245C6214 457CC091487708BD252CDF835D511714F4B51749BBD34A5D812700EFBDF072A40BD
458FC6D5021A48367398061976699FA83F0FE81854D55204CE03258CB6333231FD5 4586CE38DFC9A196589D6FC09FCCBCB7CA871FCC35B25354537B959F01E84C1F959
4598852B52D255EFA8F6D6527D7F1C900C991026DDEF6E79B74921BB404D4F1410B 4599E8397B308A3BCCDFA304213116594C3D1925A815B57AA7C631773B5FD518EF6
4609D2950BA20EF04FC230CA4E8D6E703F63F3A8207BDCC5D1E9BADF8C6D9E2283C 460238F548ABA462BC1D0A17E76B53CCB2BBF7E8A785620B41C8018109CB45CE895
461A9D500BEF4E00A29D1005B2D5E80C60EE5B35CB347DA7B7973692F41BA6B4C5B 461BDAD0F89B25B81E4A0478D4A242D3A7A4406D932C0E9FD28E65C57CC3F146E1F
46216E0A6B2B96CAE2BB0AC882FFA9DB50247804437B19B05EC3249A8F6C19D1E58 46209867E0FCE83F7C2083ADDA5C5A9FB5BF48F89DA0C4BBD45E7120016314098B4
4634729BBE4925537B69F58ED323A77A860E8ED78D3C4E86C45F8F427EFF375E618 463C6D2C37F5F7709AD5822EAC452FBA28CFEB01E3BF2DAF25C1B559F07152FAEFD
464E4FDBB7CFF3A4E2C9C37EA3004AC75BA08FB2D116455267F37D817AF272C4CF9 46496641B74A4249E88962604CC67F39881A685491DA88705585A7EAA097A2688CB
465A3DB2C3F683E088B4B743220BEB2106E18D8BD9DBFFC1DB72430AD9F641AD4E1 465FC4A8E722D560B2442B3E7EB02F34E30A8A049705DC0C1D181438E85EE53C3D9
4665ACE49F9114948A9C8B48055C969711F3EB2B7F725E6441C7A86E1F0C4E53958 466EB5A320A83315AD4B4D26443754B49EA70A16FFCCF753F7B1E6C7EEAD9F7ED75
467947F12FEE137D5611395B5D4AF05F55BFD8B5D9620580749CC37DD096E7871E3 4677005A52BAC977F57287B77DA642B1467B580E481D97938D1B57519B1970351E6
468B2009A73FE91BC2E23CAC6F815038CBFC911A4B400A30BBE38A7622F51BDA1AF 468A752CE77704369B0E3FA910874DC76415AD1FB4E605F0C806A1A044F300C859C
469893065EAC1AE86A73F22A6E282ED1B46B35CA484748BDEE6C056FF6263920E85 4699A76CFCF2B65CA446AC2CAFF3D9148D662EB88B39D854A4A799DEBB1BF06F120
470EF4A82D8CB9F9BA7D20B11E928EAE18971183438BBAD0041D3A843F019E23173 470D0DF95A54D183ABB65041EBEB986A132B2543EF98EE749F8976279A5448CD151
4713B13DF0B9D24C86693AAA4CDB5FA11C5BAA449F68AE47DDEFB80E99F59B8E7E8 471896074E5140A766A0A9E95B73C737D09FB6DE3EF8E85B87F477935A04476B0E8
4720E8A083E0BBAAB211CF82B37B92B2513FAD2E847FDA67C25305610BB86008BF5 47250CE7A918AB5DEB38BFB8525587CC5B6759CD3C82C2623F628C116A40D3B2AB1
47330D2BBC717E071B373EB848AA0E871A0C09C9488F744AE6A46F3BE82106508FC 473AEC0D515C14191760DFDAC3BC2154A356211A12A7EE704096F258C66F786311C
47450C748514FE65F96F52FA865CA60C831A0F4C11E1C500C6C6113EEDC75AD2051 47403E84B5C05C311B04F1BCBF61FA40B6BB8E2E080B42178F225F37CC1A96CDCC0
47567E4DB9A5B1555F9614B6C0C3D1B12DB6194BE578E985E53679C66AAEDD60C68 4754ACD792C9F0AC7E7E3992238C0E4E88B04A93797E17ACBF04FCE6494299AA9B0
4760E3AC42E06CC5AEF1167DB0002D79973AAFAE17B083ACD5CF95F661054525867 47637A73C4059FFBC949ADDBC0AF181B728AC3369CC6DCE58F7AC4A52A686B74C08
477FEE6E96EBB0FB243371CDB940534214E9C6EB160A18EAD2ADBFBA1CDC709845D 47756C30D0BF291B127F7435F8AA711F98342423BD6DD25D69E3D6E197AEBF90AC5
478FE9DF2ABB313BD9809DC40FE278A7FAA6C61B7E3DBF96EEE2C7F17F20581362C 478E9675FFE7BF93DD5E6C8A89780ECC425B3D735A89C671FA5D70125CFE3B72DF3
479E9EEE3D4E7B3057509F5498AFF226AC267CDD6EFBE12F4573301D4535D0C2AAC 479A54F27293135BD071CA5D2365A135A3395D39A508CD434F45793A610852E3D62
480C82FDD61E39357478A30431CFC9040FE2BFE4509DA82C54241307E5EB39BB22C 4801C717D529A82D93B90E2FF31629413B7AC1DF1EC4D6577980C34357F47899BE2
481D604C6091038278EB66053EDAAF62DFBA92946772C64A12D814D907563C30D50 481CC95866E2140CD64D51AECA4BAF717F4D4BA13F1310F51AE6CF80689F7A1BD04
4825924AD6C0F10DD0F721B91AE8B9654FB5B86375DA94D595AD1999CD46C94E3E1 4821474C8E2B7A640DFCDCDECB7FF9690E8E6FF62FA9842293A1264D9C4AA5FC6DE
483F1DBADA3287C010DBCC163FC68D3584E1067ECD33CBF6C231E27B27BF89548F1 48384C36FB9334F5F9CA1B3DC4516D4CA3BD116605F5C5D0FB2F30FA080F83891DF
48471DE0EDBD2AC2AAEF09A56461F30C2286BF98A49AEE50B9DE275D8D04CAAE61D 4841A23D9C420B3F204085591E4C88C7B26452B329DD0B1F9EDC7B065F21A4B6F60
4853BC5688432C09BBF7673D72D308172D9F04101966E9231A2A19C92DAA8BD21DC 485349D37A85C5985667040DDE858B27C832CB50CCE7BB9E1EC9C2D5C1B0F05D027
486B88284250523E122A154CC8072271F53EE8F4EE562AD06C10D0F5BF0C635DE44 48665A743C13523FFFD455B9C8DE573E76522A8912AF192008DF97D7DED77FB56E6
487D198EB6B947B7DC15465F08C5CA3466339B6FA18F7B95708A9BCF8AB81D1F9C5 487FC220D2E27CA29ABE1A138D3FEF84A0306D4DE8ABA3B65D6AACCF1E456C14293
488570EDF54B50D657A89415719D03B15D582DD66D5FBF26449E4D26DC46ED4F454 48813A2E52EEAD3CE4D2980714C087C0606768FCE35D9F84873379C90A118B9F4D3
4899081D0DB9B054D69874E868E3810D1696D5E381AA4D788154E21B0D28CF90CB7 4896008721909002435E6242C5BDB4F85AD82D5C9D548B5786F50821A59FA41D0CC
490AE0BE0D6F5E62A82BEE840DB125672C93BBCC46632765684444E0FE4B2BEC283 490F096FD004329DDB25C494E4E1D63065EF6CE62C5C59084082182E139109B0E25
491D5075E0E5A34D26250B128F5AB178D11BE1BA8E561276BF49FA3B58C02BF5DB5 49109B500940B0B254F6E76445AB01617C35831FF74DDEA2C582D7E1B736A23322A
4920A505D1F8815F6C7BB7F4774A97B114E89F222A08E5EB8676A320728CD2826C0 4924564662F5D21F638CE58055212A66C29755303AF713D54BC4EF5BDD0AF37FE84
493EA8816874C355C40D0AED9D1CFFACB1501C592678E3C111D94E3F7189CE094AD 49304986F5DB72899B3642B53E80BE87161B5106E8C0114A985CD72DB6E6D3171C0
494B9DFDBB44AA289349CFD2A9993BDDF072B7A3EDAE60531C593453575D9742CED 4948AC789185A6608C45889D19C9574E8B1042846B5E53F303273ACD9985F92874B
495FF2ECF2B12CD59CA4FD7952462303F6081D0232084DA9DB8A4693FD2D3AAFE7D 4950395250173AABA938AF4551E955106AF3D1FAB12AEF599E758278C9C4B0B6EAC
496A2A61015F67FF76683FA6EC38B25198EED132AC393394129BCF0AF0E6F048A09 496346765F34498198FDB4D2ED8EE4399921A3D380DA97F573E76588A46A927E56B
497E5E5D074B2B1C49F9B86DFDD559F243F270A6190816D4E86A11E1BECE43C0E7A 49702EBBE1A628EAD4DCF52726AB2D444450598904C10C0BEEA4D4D313B03ED8BB8
4981BB7E691DC79DB786617EE61B907E4A8DD71BF94B4F032229CB18E1A4A803B38 498D5E1125C7F4A24F3F4757365B838BBBB93E232CEB9E8A02531B4E9D116D56E7D
499D9943851ACA9B591416E20975B8EB628BF751CFC42F929AF5D04813EF388DA71 4995A9D547E7A00301433B3B8906D494A47B358C51E09BF70DCBE06D594E4A27C54
500B23B0AFA8BE1A9B36A19681DD00FEEA84AA6D65CBD7990877D1A4119051B81F3 50083020848F8052038C052AC353AEF3E9D3EBBCD74357873ACDA704659A7962538
5016350A67EF0DFB24F5890D539B63EA6DE95C5583A8320B3924934F9A68C1BF5D3 501B2D7829C4808D58E17B2DB2E20E464B53445674ED6B373CDE6DFC48AF4268447
5026FD4FB3EB40AEAE4B3E85A382AF9735FE1AAE7FC6B66FCB1E33D04E7A89F35E4 5027DA072CB3B480B0D1C26B9753F5A34BAC7380F43ADE718172C399D335A2E88B3
5035D855A455541209543EE482D0ABAAF77D76E4F2278AD4A59EBEB2C921E83C28E 503F14DBF6F091FA427B89FD51C12401441AD767AEEB19CCC2643FEA6BFAF53A057
50438F7BDA6500188BCC8E7B4BDE917FD343B5DC6E74994D8A9332EA7622335BF9D 504F7594CFB89E5DAECDFE36D1CA884C287B5AD943EEC86FB91BCE72693E7586E59
5052CB069AFBAA4E01ECDC4D5DB0B34337A12B6168DD40FAF8801A17BF219A63938 505F594D067F101A95A1CFE062799F9B6AE9E14E1CEE9A9AC23975B534749D9912E
5064779A96B9A7F1E670531956F374C727DD893CDD06C3EBBC48AA8C7FCE062C19E 506B5190AF0CBA729B70BCBF2433BC8C2808CB6A3A64E87A140E4532AF41F55CE51
5076DFF6F14DCB27EE097771E83AC8CCA0BB363FC98ED29DDA10459E5AAD3BC1415 5072BF9B4EF348B1F8CC7500847A076EAA125670223BA1BBDC979707493F7DE73CC
508651C347A04466E35C1B3744ADC671C461120D2359C4DBFD0D243555D9B182CFD 50878D79A4CF61F4AB8A819F9DF633BE00ACFACFC63438BD5F9CB65F7DBE1C1A99E
509189022DED77374687BA5758C88FC19E3A6149E526E11E87A9CAD9B19CB47E00D 509AE9E8141EB065D30C17A79C2FC3686F2D13A187C69353374DDE142619D7C6989
51070CB4E4B0172AA46DDF138EF9A4A94D7B59252D9E8E170CDB048BB7CA28F4538 5109414C36749E400F0D56C0DD786448421F4D638A1D545BDA0DA9637953D299743
511CC3A0B72913DD82E327A3A62E7EE1E950976E5228BAADEA7A1C761175556FA84 5117A4519B437DEAB7461B69C96DC33B3834897568ACF6C66628DEF7AE597ACCFBB
512FAFAFA55C9A9A5F9F2340FDB199105E4CCA0CF364099EB3227BC0A8AA7189DFE 512E273232CC0BFE67E9B89B7F0AC82F5C629E512411A9060D02623BAB507671545
5133CEF5E1B68EBFFA7D8E603A3414CBC37D5E5A1261F66E5B739D6BA2F52877435 51309EA818A7C0A94A01007DD0D7DD286C22B9ED463836B1D328290B3836FAB5F25
514FEB61C789D6CC48482A28679707F9C8E0073B75072B9E10AE09FAA28184A8C00 514380917C153901773BBE997031F8267CC91FE3C1916DF6AC46E44791A0863198F
51566FE6FECC229635097E1E5A8DDF889AC85F6AA555C433A0C7E7A73D2F683D887 5158FB8478724C22BB2732F945B39E4541C0168C45FC18FC7CCAC13FBEA39A93806
51645225F82587B6EDC9F24A18C24699ED304E05F7B0A5C5F20A6DB61EC2F8EE502 5166DEF0FBD7507AD086EA89EB278DB92A9F44D9A8584754643FFFF9C411587D22A
517814CBB41B0481B3BBAC69AA4B4F6A251B41B5ECD0F04E9C256813DAF5374D9D1 517C317E99C08DD469A3A2CB264C3899725338B923F660E1DB69BDC42D5C8BE2193
5188A5057894B93A1F5A9BBC56E63EC2B11B09818D20E984D37943047E7F010FA87 518B3139B8F53777949C20CFFE8918249DA5606C5F826997E18664085BCFC8FE460
51974E4918D3E56679FF00FDC1D94B0C52206B4D570FA3CAC26FCF17FE89D73DA9E 5198D8B5EE4D0EF5D9C2F78246F757F01D2C2CE8EE265DA8038A276EA69BB8651A5
5207AAFE36245EDD811F91D9E83C96704CFE68A29778677A6C02820EF9B09D471F6 5202418E8479CB00E750644F3745408AE4ECF34B6774AA58D43D28C46DF56A9CCE0
521D03191013A6334CDA003270C92CE05DE4B6194BACBFE4CBB80FF15D9A31A4DF9 521D7EB1B3E4010F1914A6AD8B0ED7A9104A16A1B2DED8937A5779B2B7E6F724FCF
52282BC8BFCFCA725B26874D1B26456F6FE83216F677210469963DC5683DB7BBFAC 522FBAFD79D2B7840E3F6E4378CE20185DAF51CD5DCDA7F797E5EF992C9B7BD2089
523ED2DE1ACAC4AB4E24195E19C447EB4744E5026326EEC560DEF375749AEE07A4E 523FEB3A7165FA82A23E5CB0C99003BD75E3B9B00D5308C5C71FA9A4B2E3FC31B84
52478C8FAFB5056731503FBC10F47FB37D49F3855582FDB5F8D1B204AEE50D11458 52435AC901ABEF4AEDBD785E30DEB848014955D1D0B25932AD4420B4FA52830FC10
525CF253A7D990A84F4C89295C72AF21FCEDCA1C0CEAAED6B1DE83FD59573A2A566 525EFDABB03B27E85BBBFA667C76E4B5A68F4BC2D2F0BF631E43DC0A18522911998
52616C90BE27AF719832E6E5A98E9BE7DC65108AD80F40B52EFCEC672D1D94E299E 526834B89CBFE29DEF493B9E87B93D7D9D886FAAC41023231E069E6B0FE3BF904A6
5278EC5DAE81EF454BDE9184A00F5F8BB51BF564603214B23D41C026BD751308706 5277149D092E733AA2CA5442C49CC496662F11EA262C67CD191E9BB8FCDF54DEFC5
5283BD8678F5794641193D38F99EFC088E5C9B5639374951D050D19CB54BDA58EAF 528ABF141056F515EB48AE9DD502F285F2488119652DA821EA3BF2E7D9895601DBA
529636DD6C8B5664EC1529C2E964DB260652DB183CE0887450F1AEDA8D9575C5B32 5290B042D7D2CB609A542734B3F63FC3AF4FDA552BA15DA5E02C23CEB0F0BB14DB5
530EBCB5F71C9C1DBD6341AD5AC442220026A32805085E0BFCAC682C09483AF5CD9 5302100EC71E868218241E86741638AA14DC1FCE8C1CB035D61C1F9F67EE3D85BFD
53147ABE381D20A2F905E533D297BDF5AF066A7925DE0223321DAC4C282C79E1856 531BF9EA07AEC4787D7C40557DCA541E7CBDCCDA950AE2E95ABF82633E20F2A58CF
5323090310656A17D312F7BB259742B7549A27DB6CEDD2803794642BA7C78EC96DD 53214D205265FF7A1A3524562F62C4C3FA62043B4518AFB0616BEA02145B679BEE9
533A8DD2E13E16E81512FF2AD34F123EAC904FE853780C2400234D36FB8ABB07319 533CF367A8E5C053F22A004B8ECC26CE1FD6C425A37F9F7EA73AF4A9E9E2366B573
5340D46D294513300E318D23766FAB236ECFE7A93705FBC960341AA7E2163DC9D81 534BA26C25CA60D1436CB40824EF20C87734EBF7FB87EFE47C0292750EA29667BFC
5355E2A578EB0FDD05E41885E6A5D88A946025B27767CF4F495A787592F0235D22D 5355DA8A01867A94332D779082BDC1114E128ACC6518F8D9B3A21AD8AF7463A42E2
5369923308AADB018D6ED705F29B38EAEB3473BC53BB341DDA4C1D62F5CAD1C22AF 536FB7E29BBBA59189421BAF708893FBB471406F264DEF7F9CA2C42A4956F8CA7D5
537192338BAD441B3B7616D78B717920C005EBBC853612A0A7E41426DD96194BC2C 537BAC73FCB2B21D6F16836D2E5BC7ED04638ED3D0C480B0E057B05075C0A92464C
5383ECD5784183D76AADF3EDE1828165A3A5B8D864CA7DF794C80C40E766C3A6410 5386F6E151C818246B845E5056ABD9DBD8219D4086DF9BE0E13F594450B737C0512
53920DAC3B63B9BC698487D7E1AAC34F10E0799636C45AC6AA60B4CCBF9979D67B0 539DE7BCF813764645FC7696D572A873CF1075B1627279D6E3EC493627E06DBD02B
540F2EBF45561323648A125BDFD4E34B23E9C63CEEF8723A50D35C9DA31F829113B 540C978BB7D39F80CF960354B963F4302281538C6EB420E55E899D9D101798D5CD9
541B3F4E2C999B1A31865E09A9279B006ECDB6613894A2509C19D6AE205BD7E9315 5413E8FC2675D6A5CB2F2423542FB62CDD78A962EB2D63833E6DE848FEE15430A66
5420D973B8E82227C6499A9FFF9AF0F5282812EA44B1BCED229D17590713A2DA5AD 542AD244BD768A3BC8307C833997EFD0735A852B6539E7E873A62461F32820B062E
54330C6C6BDD8D321B17CAC678FE0ED8951B6CFE4AE7FB2FE96594A5086DD767696 543ED77AF1F260D9B4EC55C60C0B2658528C088357C039DF1F3F85AE16917C77273
544CA6DE0CC91DE3A68CE8EDEDE33E4B49E5E0E3B6AD558E7585BD5A1AE4F1D16C3 54455CE42CAC9C5499E07508FEC82BA810C6AF5AB0F597F3174F91DDD9007100491
545202F267953CD390FF26200E172CB890782E0C43B51C95C55EFA95DA98CF4CA5A 5451859D303E60AE00ECED21FF7258B613B342C57C22947D60DA3143C3FBC073FB4
546B189838F3832ADF48D8AEB00909D5C07587B26F63BA03A13B0345E9B99E7B1D0 546E41E8268DA25ED1D3E030915576519155CCDA8053BBA3BDFBA018C368A077545
54747427A74353825472C5AB49DD95A90D253CEB066C49D6A4356E072DF5BBF394F 547DB789190EC4E7D7EB9AAB77E54F49B07783EEF138026C7101CD5315D14E0F9FB
5483FA04F54C4A822DFC7FF45AA337B9006BA63DF5D6AFCC7870B2D1AB4A954DB76 5482BEFC34B5B1A03D2449A1ED3F26DCB75EA542C995EFE140B51B9508737817A9C
549C5B93562408402578D610DD64A09ED30D71D9341F1CFB44922F42DCDACFEE2FE 549962FE2A0B3650F7770C6310F8A0DDD48EC86BA3958F5343C61A2971B413B52F2
550B8E0EA576DC60840FC3269FF313FEBC57C5D958016C859D2D80BB270E6E93738 55038E66EC71F73DBC29E6798DF7CFCB3103F1841A4D8FCE51983F03EA288BC0045
551D314BFD28BDACD48697001CF13E9B29D1D1C5785ECF6040F43DA204FD29A924C 5510D3565C494E7BFF2178F273FD714ECF7DCD6519A9BB36F95E05A3F2449F89DD9
552E32C8A2AA8ED8BA00C16D46A4EED8CCE9AF13393E8FB6F5FFFEC3A421105F8AD 552E564458349C34A3CD770EFF268495183A0
553FF596DA77FAC7567745BFCAAEDE63F080F24AC62A05DD8934D616D1B6A336AE9
554B1ACE43ACBB79549204AC02B7F4ADA2B29E8B081EE02152C7778954F9F61FB67
5556014CF4FFAA5A446334847DBFD348DF16BFFA90B0A8D5E76721E62CC46903CE4
5564C076460459EE651504D119F10D5D046FBF7BCAA97E7D0CCD822A6D442B9BC8B
5579EA43A5BC643998A7FE6C97C967B3AEF0019270BEB8EAB12F396CB363D43F70D
5587AA971F68B33F1158663FA39DD34934884F5DE842F
5590000000000000000000000000000000000000000000000000000000000000000 5530000000000000000000000000000000000000000000000000000000000000000
5600000000000000000000000000000000000000000000000000000000000000000 5540000000000000000000000000000000000000000000000000000000000000000
5610000000000000000000000000000000000000000000000000000000000000000 5550000000000000000000000000000000000000000000000000000000000000000
@@ -2313,8 +2307,8 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi)
2313@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1 2307@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
231449.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34 230849.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
231530 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44 230930 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
23161[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 3[30 1[30 30 23101[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 3[30 1[30 1[30
231730 1[30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41 23111[30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }40
231849.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36 231249.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
23192[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14 23132[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
232066.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45 231466.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
@@ -2353,7 +2347,7 @@ TeXDict begin
2353%%Page: 1 1 2347%%Page: 1 1
2354TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45 2348TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
2355b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h 2349b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2356(4.03\))-150 -39 y Fh(Getting)37 b(Started)-150 89 y 2350(4.04\))-150 -39 y Fh(Getting)37 b(Started)-150 89 y
2357Fg(\(add-to-list)i('auto-mode-alist)h('\("\\\\.org$")e(.)e 2351Fg(\(add-to-list)i('auto-mode-alist)h('\("\\\\.org$")e(.)e
2358(org-mode\)\))-150 172 y(\(define-key)i(global-map)h("\\C-cl")e 2352(org-mode\)\))-150 172 y(\(define-key)i(global-map)h("\\C-cl")e
2359('org-store-link\))1504 148 y Ff(2)-150 254 y Fg(\(define-key)h 2353('org-store-link\))1504 148 y Ff(2)-150 254 y Fg(\(define-key)h
@@ -2566,7 +2560,7 @@ end
2566%%Page: 2 2 2560%%Page: 2 2
2567TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45 2561TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
2568b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h 2562b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
2569(4.03\))-150 -36 y Fh(Agenda)37 b(Views)-150 120 y Fi(add/mo)n(v)n(e)25 2563(4.04\))-150 -36 y Fh(Agenda)37 b(Views)-150 120 y Fi(add/mo)n(v)n(e)25
2570b(curren)n(t)f(\014le)g(to)g(fron)n(t)g(of)f(agenda)197 2564b(curren)n(t)f(\014le)g(to)g(fron)n(t)g(of)f(agenda)197
2571b Fg(C-c)36 b([)-150 190 y Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g 2565b Fg(C-c)36 b([)-150 190 y Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g
2572(from)f(y)n(our)g(agenda)299 b Fg(C-c)36 b(])-150 259 2566(from)f(y)n(our)g(agenda)299 b Fg(C-c)36 b(])-150 259
@@ -2761,7 +2755,7 @@ b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h
2761Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838 2755Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
27623768 y(c)4821 3770 y Fa(\015)d Fb(2006)i(F)-5 b(ree)21 27563768 y(c)4821 3770 y Fa(\015)d Fb(2006)i(F)-5 b(ree)21
2763b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826 2757b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
2764y(v4.03)h(for)h(Org-Mo)r(de)e(4.03,)i(2006)4912 3882 2758y(v4.04)h(for)h(Org-Mo)r(de)e(4.04,)i(2006)4912 3882
2765y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g 2759y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
2766(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242 2760(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
27674022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e 27614022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e
diff --git a/etc/orgcard.tex b/etc/orgcard.tex
index 832e1dd6c85..494ef6b3ae7 100644
--- a/etc/orgcard.tex
+++ b/etc/orgcard.tex
@@ -1,4 +1,4 @@
1% Reference Card for Org Mode 4.03 1% Reference Card for Org Mode 4.04
2% 2%
3%**start of header 3%**start of header
4\newcount\columnsperpage 4\newcount\columnsperpage
@@ -58,7 +58,7 @@
58% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik 58% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
59% for their many good ideas. 59% for their many good ideas.
60 60
61\def\orgversionnumber{4.03} 61\def\orgversionnumber{4.04}
62\def\year{2006} 62\def\year{2006}
63 63
64\def\shortcopyrightnotice{\vskip 1ex plus 2 fill 64\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index a049da097fd..fd04ddce0f0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,9 +1,339 @@
12006-01-24 Luc Teirlinck <teirllm@auburn.edu>
2
3 * completion.el: Minor fixes in introductory comment.
4 (completion-def-wrapper): Fix alist.
5
62006-01-25 Nick Roberts <nickrob@snap.net.nz>
7
8 * thumbs.el (thumbs-new-image-size): New function.
9 (thumbs-increment-image-size-element)
10 (thumbs-decrement-image-size-element, thumbs-increment-image-size)
11 (thumbs-decrement-image-size): Delete.
12 (thumbs-resize-image-1): Rename from thumbs-resize-image. Keep old
13 temp files and use to resize.
14 (thumbs-resize-image): Rename from thumbs-resize-image-interactive.
15 Use increment argument to enlarge/shrink. Preserve point.
16 (thumbs-shrink-image): Rename from thumbs-resize-image-size-down.
17 (thumbs-enlarge-image): Rename from thumbs-resize-image-size-up
18 (thumbs-show-thumbs-list): Set thumbs-buffer to current-buffer.
19 (thumbs-mark, thumbs-unmark): Preserve point.
20 (thumbs-modify-image): Keep old temp files and use to modify.
21 Cleanup old temp files at load time. Preserve point.
22 (thumbs-view-image-mode-map): Use new command names.
23
242006-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
25
26 * log-view.el (log-view-minor-wrap): First rev is the one at point.
27
28 * calendar/cal-menu.el: Avoid macros from calendar.el so as to break
29 the nastiest part of the cyclic dependency.
30 (cal-menu-update): Use dotimes and calendar-increment-month.
31
32 * calendar/calendar.el: Remove unnecessary leading stars in docstrings.
33 (calendar-week-start-day): Add an :initializer.
34 (calendar-mode-map): Use suppress-keymap, and command remapping.
35 (describe-calendar-mode): Setup xref-stack info for the back button.
36 (calendar-star-date): Insert before delete.
37 (calendar-set-mode-line): Add file-modified info if applicable.
38 (calendar-increment-month): New function.
39
402006-01-24 Tobias C. Rittweiler <tcr@freebits.de> (tiny change)
41
42 * font-lock.el (lisp-font-lock-keywords-2):
43 Recognize "& keywords" only at word boundaries.
44
452006-01-24 Nick Roberts <nickrob@snap.net.nz>
46
47 * thumbs.el (thumbs-extra-images): New variable. Make it buffer-local
48 and permanent-local.
49 (thumbs-max-image-number): New variable. Make it
50 (thumbs-do-thumbs-insertion): Use them
51 (thumbs-per-line): Change default to 4.
52 (thumbs-marked-list): Rename from thumbs-markedL.
53 (thumbs-cleanup-thumbsdir, thumbs-delete-images)
54 (thumbs-rename-images): Use -list instead of L for internal variables.
55 (thumbs-call-convert): Use call-process instead of shell-command.
56 (thumbs-insert-thumb): Add filename as help-echo to each image.
57 (thumbs-show-from-dir): Rename from thumbs-show-all-from-dir.
58 Give dir to thumbs-show-thumbs-list.
59 (thumbs-show-thumbs-list): Set default-directory to that of images.
60 (thumbs-dired-show): Rename from thumbs-dired-show-all.
61 (thumbs-display-thumbs-buffer, thumbs-show-more-images): New functions.
62 (thumbs-mode-map): Bind "+" to thumbs-show-more-images.
63 (thumbs-view-image-mode-map): Bind "^" to thumbs-display-thumbs-buffer.
64
652006-01-23 Stefan Monnier <monnier@iro.umontreal.ca>
66
67 * ses.el (ses-read-cell): Provide a default value.
68
692006-01-23 Juanma Barranquero <lekktu@gmail.com>
70
71 * term/w32-win.el (image-library-alist): Add additional names for
72 GIF library.
73
742006-01-23 Arne J,Ax(Brgensen <arne@arnested.dk>
75
76 * international/latexenc.el (latexenc-find-file-coding-system):
77 Add file-regular-p check.
78
792006-01-22 Stefan Monnier <monnier@iro.umontreal.ca>
80
81 * simple.el (clone-buffer): Don't show the new buffer in the same
82 window.
83
842006-01-23 Juri Linkov <juri@jurta.org>
85
86 * faces.el (link, link-visited): New faces based on default values
87 of `info-xref' and `info-xref-visited'.
88
89 * info.el (info-xref): Inherit from `link'.
90 (info-xref-visited): Inherit from `link-visited'.
91
92 * cus-edit.el (custom-buffer-create-internal): Use widget type
93 `custom-manual' instead of `info-link' and don't set properties
94 `button-face' and `mouse-face' explicitly.
95 (custom-browse-group-tag, custom-browse-variable-tag)
96 (custom-browse-face-tag): Inherit from widget class
97 `custom-group-link' instead of `push-button'.
98 (custom-button-unraised): Inherit from `underline' face.
99 (custom-link): Inherit from `link' face. Fix doc and group.
100 (custom-add-parent-links, custom-group-value-create): Don't set
101 properties `button-face' and `mouse-face' explicitly for
102 `custom-group-link' widget.
103 (custom-group-link): Add properties `button-face' and `mouse-face'
104 to widget definition.
105 (custom-field-keymap): New variable. Put `custom-field-keymap' to
106 editable-field's :keymap property.
107 (custom-mode): Fix docstring: substitute keybindings for
108 `widget-forward' and `widget-backward' from `widget-keymap',
109 `widget-complete' from `custom-field-keymap', replace old
110 `Custom-move-and-invoke' with `widget-move-and-invoke'. Untabify.
111
112 * desktop.el (desktop-load-file): Check for `fboundp' before
113 calling `symbol-function'.
114
115 * simple.el (clone-buffer, clone-indirect-buffer)
116 (clone-indirect-buffer-other-window): Use `read-buffer' instead of
117 `read-string'. Fix prompts.
118
119 * play/doctor.el (doctor-mode-map): Rename from `doc-mode-map'.
120
1212006-01-23 Nick Roberts <nickrob@snap.net.nz>
122
123 * thumbs.el (thumbs-file-alist): Avoid creating duplicate entries.
124
1252006-01-22 Luc Teirlinck <teirllm@auburn.edu>
126
127 * startup.el (inhibit-splash-screen, initial-scratch-message):
128 Doc fixes.
129
1302006-01-22 Michael Albinus <michael.albinus@gmx.de>
131
132 Sync with Tramp 2.0.52.
133
134 * net/tramp.el, net/tramp-ftp.el, net/tramp-util.el,
135 net/tramp-vc.el: Add code for unloading Tramp. See comment before
136 `tramp-unload-tramp' for checklist.
137
138 * net/tramp.el: Require `timer-funcs' instead of `timer' if in
139 XEmacs. Contributed by Steve Youngs <steve@sxemacs.org>.
140 (tramp-unload-file-name-handler-alist)
141 (tramp-unload-tramp): New defuns.
142 (tramp-advice-PC-expand-many-files): New defadvice.
143 (tramp-save-PC-expand-many-files, tramp-setup-complete) Defuns
144 removed.
145 (tramp-handle-expand-file-name): Remove double slash.
146 (tramp-handle-file-attributes-with-ls): Return t as 9th attribute.
147 It doesn't matter, because it will be converted later on.
148 (tramp-handle-file-ownership-preserved-p): Rewritten. The old
149 implementation was just heuristic.
150 (tramp-post-connection): Set uid and gid properties.
151 (tramp-convert-file-attributes): Set file's gid change bit.
152 (tramp-get-remote-uid, tramp-get-remote-gid): New defuns.
153 (tramp-handle-expand-file-name): Use "~root" for tilde expansion
154 in case of su(do)? methods. The home directory of the local user
155 will be taken else.
156 (tramp-open-connection-telnet)
157 (tramp-open-connection-rsh, tramp-open-connection-su)
158 (tramp-open-connection-multi): Set PS1 to "$ ". Otherwise, a
159 local shell prompt could hurt. Reported by Romain Francoise
160 <romain@orebokech.com>.
161 (tramp-let-maybe): Add `edebug-form-spec' property.
162 (tramp-handle-expand-file-name): Bind `default-directory' locally
163 to "/" in order to avoid problems with UNC shares or Cygwin
164 mounts.
165 (tramp-md5-function): Fix typo in error message.
166
167 * net/tramp-ftp.el (tramp-ftp-enable-ange-ftp): New defun.
168
169 * net/tramp-util.el (top): Apply `ignore' instead of `identity'
170 for byte-compiler pacification.
171
1722006-01-22 Andre Spiegel <spiegel@gnu.org>
173
174 * vc-rcs.el (vc-rcs-state-heuristic): Use file-attributes with
175 ID-FORMAT `string'. This allows us to get rid of
176 `vc-user-login-name UID'.
177
178 * vc-sccs.el (vc-sccs-state-heuristic): Likewise.
179
1802006-01-22 John Paul Wallington <jpw@pobox.com>
181
182 * hl-line.el (hl-line-highlight, hl-line-move): Doc fixes.
183
1842006-01-21 Martin Rudalics <rudalics@gmx.at>
185
186 * emacs-lisp/find-func.el (find-definition-noselect)
187 (find-variable-noselect): Search variables in C source code too.
188 (find-function-C-source, find-function-noselect, find-function)
189 (find-function-other-frame, find-variable-noselect, find-variable)
190 (find-variable-other-frame, find-variable-at-point):
191 Fix docstrings.
192
1932006-01-21 Francesco Potorti` <pot@gnu.org>
194
195 * mail/rmailout.el (rmail-output): Don't use content-type if it is nil.
196
1972006-01-21 Agustin Martin <agustin.martin@hispalinux.es>
198
199 * textmodes/flyspell.el (flyspell-emacs-popup, flypell-xemacs-popup):
200 Default to disabling the "Save affix" question.
201
2022006-01-21 Marien Zwart <marienz@gentoo.org> (tiny change)
203
204 * progmodes/python.el (python-mode) <eldoc-mode-hook>: Pass nil as
205 the first arg to run-python.
206
2072006-01-21 Eli Zaretskii <eliz@gnu.org>
208
209 * startup.el (command-line-1): Handle --no-desktop if desktop.el
210 is not loaded.
211
2122006-01-20 Jay Belanger <belanger@truman.edu>
213
214 * calc/calcalg2.el (calc-sum-rec): Fix the sum when the lower
215 limit is 0.
216
217 * calc/calc-arith.el (math-add-symb-fancy): Check the length of
218 the correct variable.
219
2202006-01-20 Carsten Dominik <dominik@science.uva.nl>
221
222 * textmodes/org.el (org-open-at-point): Fixed bug with matching a
223 link. Fixed buggy argument sequence in call to `org-view-tags'.
224 (org-compile-prefix-format): Set `org-prefix-has-tag'.
225 (org-prefix-has-tag): New variable.
226 (org-format-agenda-item): Remove tags from headline if
227 appropriate.
228 (org-agenda-remove-tags-when-in-prefix): New option.
229 (org-get-tags-at): New function.
230
2312006-01-20 Nick Roberts <nickrob@snap.net.nz>
232
233 * thumbs.el (thumbs-buffer): New variable. Make it buffer local.
234 (thumbs-find-image): Move image name and number from buffer name
235 to mode name. Set thumbs-buffer. Preserve point so that large
236 images remain visible.
237 (thumbs-file-alist): Construct list in thumbs-buffer and reverse
238 order.
239 (thumbs-show-image-num): Get image from thumbs-file-alist. Set
240 mode name.
241 (thumbs-next-image, thumbs-previous-image): Make them work.
242
2432006-01-19 Luc Teirlinck <teirllm@auburn.edu>
244
245 * cus-edit.el (custom-buffer-create-internal): State in the text above
246 the whole buffer buttons that they do not operate on hidden items.
247 (custom-face-menu): Use `custom-face-save' instead of
248 `custom-face-save-command'.
249 (custom-face-save-command): Make it an alias for `custom-face-save'
250 and declare it obsolete.
251 (custom-face-save): Doc fix.
252
253 * dired.el (dired-no-confirm): Add quote.
254 (dired-subdir-alist-pre-R): Add quote in
255 `make-variable-buffer-local' form and remove unbalanced parenthesis.
256
2572006-01-19 Stefan Monnier <monnier@iro.umontreal.ca>
258
259 * textmodes/table.el (table-mode-indicator): Typo in last change.
260
2612006-01-19 Richard M. Stallman <rms@gnu.org>
262
263 * outline.el (hide-leaves): Don't call outline-end-of-heading.
264 Fixes bug reported in Nov 2005.
265
266 * isearch.el (isearch-forward): Doc fix.
267
268 * dired.el (dired-move-to-filename-regexp): Define as alias.
269 (dired-no-confirm): Use defcustom.
270 (dired-subdir-alist-pre-R): Put defvar at top level.
271
272 * battery.el (battery-linux-proc-acpi): Handle "last full capacity".
273
274 * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys):
275 Mark as risky.
276
277 * simple.el (set-mark-command): Doc fix.
278 (clone-indirect-buffer-other-window):
279 Read arg like clone-indirect-buffer.
280 (move-beginning-of-line): Skip invisible newlines.
281
2822006-01-19 Masatake YAMATO <jet@gyve.org>
283
284 * progmodes/cpp.el (cpp-edit-load): Make the order of
285 listed conditions in a base C code buffer and its associate
286 CPP Edit buffer the same.
287
12006-01-19 Kenichi Handa <handa@m17n.org> 2882006-01-19 Kenichi Handa <handa@m17n.org>
2 289
3 * international/mule.el (auto-coding-regexp-alist-lookup): New 290 * mail/rmail.el (rmail-enable-mime): Docstring fixed.
4 function. 291 (rmail-mime-feature): Likewise.
292 (rmail-require-mime-maybe): Use display-warning to show a warning
293 message.
294
295 * international/mule.el (auto-coding-regexp-alist-lookup): New fun.
5 (find-auto-coding): Use auto-coding-regexp-alist-lookup. 296 (find-auto-coding): Use auto-coding-regexp-alist-lookup.
6 297
2982006-01-18 Stefan Monnier <monnier@iro.umontreal.ca>
299
300 * array.el: Move defvars out of eval-when-compile.
301 (array-make-template): Replace undeclared global var with a local one.
302 (array-mode): Inline initialization functions.
303 (array-init-local-variables, array-init-max-row)
304 (array-init-max-column, array-init-columns-per-line)
305 (array-init-field-width, array-init-rows-numbered)
306 (array-init-line-length, array-init-lines-per-row): Remove.
307
308 * play/doctor.el: Move defvars out of eval-when-compile. Use dolist.
309 (doc-mode-map): Define explicitly.
310 (doctor-txtype): Use mapc.
311
312 * textmodes/table.el: Move defvars out of eval-when-compile.
313 Remove harmful code meant to avoid byte-compiler warnings.
314 (table-fixed-mode-indicator): Remove. Use a more complex mode-line
315 specification that checks table-fixed-width-mode directly.
316 (table-recognize-region, table-recognize-cell):
317 Use restore-buffer-modified-p.
318 (table-fixed-width-mode): Remove code that refreshes
319 table-fixed-mode-indicator.
320 (*table--cell-describe-bindings, *table--cell-describe-mode):
321 Avoid obsolete name print-help-return-message.
322 (table--test-cell-list): Don't use replace-regexp from elisp.
323 (table--point-entered-cell-function, table--point-left-cell-function):
324 Don't set table-fixed-mode-indicator, use force-mode-line-update.
325
326 * textmodes/org.el: Move defvars out of eval-when-compile. Move code
327 that was after the end of file. Use buffer-file-name variable.
328 (org-timestamp-change): Use with-current-buffer.
329 (org-todo-list): Don't unnecessarily define a new buffer-local var.
330 (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused arg
331 `file'.
332
333 * progmodes/fortran.el: Move defvars out of eval-when-compile.
334 (fortran-break-line): Remove unused var `opoint'.
335 (fortran-abbrev-start): Obey help-event-list.
336
72006-01-18 Jesper Harder <harder@phys.au.dk> 3372006-01-18 Jesper Harder <harder@phys.au.dk>
8 338
9 * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-substring. 339 * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-substring.
@@ -11,25 +341,20 @@
112006-01-18 Masatake YAMATO <jet@gyve.org> 3412006-01-18 Masatake YAMATO <jet@gyve.org>
12 342
13 * progmodes/make-mode.el (makefile-imake-mode): New mode 343 * progmodes/make-mode.el (makefile-imake-mode): New mode
14 derived from maiefile-mode. 344 derived from makefile-mode.
15 (makefile-imake-mode-syntax-table): New syntax table 345 (makefile-imake-mode-syntax-table): New syntax table
16 derived from makefile-mode-syntax-table. 346 derived from makefile-mode-syntax-table.
17 (makefile-mode): Write about makefile-imake-mode in 347 (makefile-mode): Write about makefile-imake-mode in doc string.
18 doc string.
19 (makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode. 348 (makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode.
20 (makefile-imake-font-lock-keywords): New font lock keywords. 349 (makefile-imake-font-lock-keywords): New font lock keywords.
21 350
22 * files.el (auto-mode-alist): Added Imakefile. 351 * files.el (auto-mode-alist): Add Imakefile.
23 352
242006-01-17 Agustin Martin <agustin.martin@hispalinux.es> 3532006-01-17 Agustin Martin <agustin.martin@hispalinux.es>
25 354
26 * textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when 355 * textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when
27 loading the file rather than when turning on flyspell-mode. 356 loading the file rather than when turning on flyspell-mode.
28 357
292006-01-13 Richard M. Stallman <rms@gnu.org>
30
31 * font-lock.el (lisp-font-lock-keywords-1): Minor rearrangement.
32
332006-01-16 Luc Teirlinck <teirllm@auburn.edu> 3582006-01-16 Luc Teirlinck <teirllm@auburn.edu>
34 359
35 * cus-edit.el (customize-rogue): Minor doc fix. 360 * cus-edit.el (customize-rogue): Minor doc fix.
@@ -100,9 +425,8 @@
100 (term-mode): Make variables local here instead of doing it in 425 (term-mode): Make variables local here instead of doing it in
101 `term-emulate-terminal'. 426 `term-emulate-terminal'.
102 (term-emulate-terminal): Delete incorrect optimization for cr+lf. 427 (term-emulate-terminal): Delete incorrect optimization for cr+lf.
103 Scroll reverse needs to take into account the scroll 428 Scroll reverse needs to take into account the scroll region.
104 region. Saving and restoring the cursor should save the color 429 Saving and restoring the cursor should save the color attributes too.
105 attributes too.
106 (term-reset-terminal): Reset the scroll region. 430 (term-reset-terminal): Reset the scroll region.
107 (term-handle-ansi-escape): Cursor up and down should take into 431 (term-handle-ansi-escape): Cursor up and down should take into
108 account the scroll region. 432 account the scroll region.
@@ -131,6 +455,10 @@
131 (Custom-reset-saved): Do not ask for confirmation in single option 455 (Custom-reset-saved): Do not ask for confirmation in single option
132 buffers. 456 buffers.
133 457
4582006-01-13 Richard M. Stallman <rms@gnu.org>
459
460 * font-lock.el (lisp-font-lock-keywords-1): Minor rearrangement.
461
1342006-01-13 Romain Francoise <romain@orebokech.com> 4622006-01-13 Romain Francoise <romain@orebokech.com>
135 463
136 * add-log.el (add-change-log-entry, change-log-merge): 464 * add-log.el (add-change-log-entry, change-log-merge):
@@ -167,7 +495,7 @@
167 Use `org-expand-wide-chars'. 495 Use `org-expand-wide-chars'.
168 (org-open-file): Fix bug in program launch. 496 (org-open-file): Fix bug in program launch.
169 (org-get-time-of-day): Fix bug with times before 1am. 497 (org-get-time-of-day): Fix bug with times before 1am.
170 (org-agenda-menu): Addes tags commands. 498 (org-agenda-menu): Add tags commands.
171 499
1722006-01-13 Agustin Martin <agustin.martin@hispalinux.es> 5002006-01-13 Agustin Martin <agustin.martin@hispalinux.es>
173 501
@@ -378,7 +706,7 @@
378 706
379 * emacs-lisp/find-func.el (find-definition-noselect): Fix typo in 707 * emacs-lisp/find-func.el (find-definition-noselect): Fix typo in
380 the doc string: "functoin" => "function". 708 the doc string: "functoin" => "function".
381 ldefs-boot.el: Likewise. 709 * ldefs-boot.el: Likewise.
382 710
383 * textmodes/bibtex.el (bibtex-validate-globally): Fix typo in a 711 * textmodes/bibtex.el (bibtex-validate-globally): Fix typo in a
384 message text: "Duplicat" => "Duplicate". 712 message text: "Duplicat" => "Duplicate".
@@ -691,7 +1019,7 @@
691 that we set completion-ignore-case (i.e., binding via let is not 1019 that we set completion-ignore-case (i.e., binding via let is not
692 sufficient). 1020 sufficient).
693 (bibtex-complete): Always set completion-ignore-case and 1021 (bibtex-complete): Always set completion-ignore-case and
694 choose-completion-string-functions. The latter is needed because 1022 choose-completion-string-functions. The latter is needed because
695 choose-completion-string-functions keeps its value if we quit the 1023 choose-completion-string-functions keeps its value if we quit the
696 *Completions* buffer without requesting a completion. 1024 *Completions* buffer without requesting a completion.
697 1025
@@ -753,7 +1081,7 @@
753 (bibtex-beginning-first-field): New functions. 1081 (bibtex-beginning-first-field): New functions.
754 (bibtex-skip-to-valid-entry): Use bibtex-valid-entry. Fix regexp. 1082 (bibtex-skip-to-valid-entry): Use bibtex-valid-entry. Fix regexp.
755 (bibtex-map-entries): Fix docstring. 1083 (bibtex-map-entries): Fix docstring.
756 (bibtex-flash-head): New arg prompt. Simplify. 1084 (bibtex-flash-head): New arg prompt. Simplify.
757 (bibtex-enclosing-field): Include code of bibtex-inside-field. 1085 (bibtex-enclosing-field): Include code of bibtex-inside-field.
758 (bibtex-insert-kill): Simplify. Always insert text past the 1086 (bibtex-insert-kill): Simplify. Always insert text past the
759 current field or entry. 1087 current field or entry.
@@ -789,7 +1117,7 @@
789 * progmodes/gud.el (gud-tooltip-dereference): Rename from 1117 * progmodes/gud.el (gud-tooltip-dereference): Rename from
790 toggle-gud-tooltip-dereference. 1118 toggle-gud-tooltip-dereference.
791 (gud-tooltip-print-command): Move concatenation of "*" to expr to... 1119 (gud-tooltip-print-command): Move concatenation of "*" to expr to...
792 (gud-tooltip-tips): ...here when dereferencing.. 1120 (gud-tooltip-tips): ...here when dereferencing.
793 1121
7942005-12-28 Bill Wohler <wohler@newt.com> 11222005-12-28 Bill Wohler <wohler@newt.com>
795 1123
@@ -1040,7 +1368,7 @@
1040 * menu-bar.el (menu-find-file-existing): New function. 1368 * menu-bar.el (menu-find-file-existing): New function.
1041 (menu-bar-file-menu): Use menu-find-file-existing for Open. 1369 (menu-bar-file-menu): Use menu-find-file-existing for Open.
1042 1370
1043 * tool-bar.el (tool-bar-setup): open changed to menu-find-file-existing. 1371 * tool-bar.el (tool-bar-setup): Open changed to menu-find-file-existing.
1044 1372
10452005-12-22 Stefan Monnier <monnier@iro.umontreal.ca> 13732005-12-22 Stefan Monnier <monnier@iro.umontreal.ca>
1046 1374
@@ -1301,7 +1629,7 @@
1301 * simple.el (last-buffer): Move here. 1629 * simple.el (last-buffer): Move here.
1302 (get-next-valid-buffer): New function. 1630 (get-next-valid-buffer): New function.
1303 (next-buffer): Use frame-local buffer list, maintain buried buffer list. 1631 (next-buffer): Use frame-local buffer list, maintain buried buffer list.
1304 (prev-buffer): Ditto. Rename to `previous-buffer'. 1632 (prev-buffer): Ditto. Rename to `previous-buffer'.
1305 1633
1306 * menu-bar.el (menu-bar-update-buffers): Update uses of `prev-buffer'. 1634 * menu-bar.el (menu-bar-update-buffers): Update uses of `prev-buffer'.
1307 * bindings.el (global-map): Ditto. 1635 * bindings.el (global-map): Ditto.
@@ -1330,8 +1658,8 @@
1330 (ispell-buffer-local-dict): 1658 (ispell-buffer-local-dict):
1331 Don't set spell-personal-dictionary after killing process. 1659 Don't set spell-personal-dictionary after killing process.
1332 (ispell-buffer-local-words): Don't clear out ispell-buffer-local-name. 1660 (ispell-buffer-local-words): Don't clear out ispell-buffer-local-name.
1333 (ispell-tex-skip-alists) 1661 (ispell-tex-skip-alists, ispell-html-skip-alists)
1334 (ispell-html-skip-alists, ispell-skip-region-alist): Mark as risky. 1662 (ispell-skip-region-alist): Mark as risky.
1335 1663
1336 * net/newsticker.el (newsticker--retrieval-timer-list) 1664 * net/newsticker.el (newsticker--retrieval-timer-list)
1337 (newsticker--display-timer, newsticker-running-p) 1665 (newsticker--display-timer, newsticker-running-p)
@@ -1570,7 +1898,7 @@
1570 * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display): 1898 * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display):
1571 Add the gud groupname. 1899 Add the gud groupname.
1572 (gud-tooltip-mode): Add the tooltip groupname. 1900 (gud-tooltip-mode): Add the tooltip groupname.
1573 (gud-tooltip-echo-area): Add the gud groupname. Remove tag to 1901 (gud-tooltip-echo-area): Add the gud groupname. Remove tag to
1574 avoid conflict with tooltip-use-echo-area. 1902 avoid conflict with tooltip-use-echo-area.
1575 1903
15762005-12-10 Romain Francoise <romain@orebokech.com> 19042005-12-10 Romain Francoise <romain@orebokech.com>
@@ -1593,7 +1921,7 @@
1593 1921
15942005-12-10 David Koppelman <koppel@ece.lsu.edu> 19222005-12-10 David Koppelman <koppel@ece.lsu.edu>
1595 1923
1596 * hi-lock.el: (hi-lock-mode) Renamed from hi-lock-buffer-mode; 1924 * hi-lock.el (hi-lock-mode): Rename from hi-lock-buffer-mode;
1597 react if global-hi-lock-mode seems intended. 1925 react if global-hi-lock-mode seems intended.
1598 (global-hi-lock-mode) Renamed from hi-lock-mode. 1926 (global-hi-lock-mode) Renamed from hi-lock-mode.
1599 (hi-lock-archaic-interface-message-used) 1927 (hi-lock-archaic-interface-message-used)
@@ -1736,8 +2064,8 @@
1736 2064
17372005-12-08 Kim F. Storm <storm@cua.dk> 20652005-12-08 Kim F. Storm <storm@cua.dk>
1738 2066
1739 * emulation/cua-rect.el (cua--rectangle-aux-replace): Fix 2067 * emulation/cua-rect.el (cua--rectangle-aux-replace):
1740 indention of text on right side of replaced rectangle. 2068 Fix indention of text on right side of replaced rectangle.
1741 2069
17422005-12-09 Nick Roberts <nickrob@snap.net.nz> 20702005-12-09 Nick Roberts <nickrob@snap.net.nz>
1743 2071
@@ -1773,7 +2101,7 @@
1773 * progmodes/cc-defs.el: 2101 * progmodes/cc-defs.el:
1774 (i) Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4) 2102 (i) Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4)
1775 2103
1776 * progmodes/cc-cmds.el (c-show-syntactic-information): change the 2104 * progmodes/cc-cmds.el (c-show-syntactic-information): Change the
1777 highlighting mechanism so it will work in XEmacs too. 2105 highlighting mechanism so it will work in XEmacs too.
1778 2106
1779 * progmodes/cc-defs.el: Insert c-int-to-char. 2107 * progmodes/cc-defs.el: Insert c-int-to-char.
@@ -1803,8 +2131,8 @@
1803 2131
1804 * progmodes/cc-mode.el: Bind c-subword-mode to C-c C-w. 2132 * progmodes/cc-mode.el: Bind c-subword-mode to C-c C-w.
1805 2133
1806 * progmodes/cc-subword.el, cc-cmds.el, cc-mode.el: Rename 2134 * progmodes/cc-subword.el, cc-cmds.el, cc-mode.el:
1807 "c-subword-move-mode" as "c-subword-mode". 2135 Rename "c-subword-move-mode" as "c-subword-mode".
1808 2136
1809 * progmodes/cc-mode.el: Added tty suitable bindings for C-c 2137 * progmodes/cc-mode.el: Added tty suitable bindings for C-c
1810 <delete> and C-c C-<delete>. (To the c-hungry- delete functions). 2138 <delete> and C-c C-<delete>. (To the c-hungry- delete functions).
@@ -1836,8 +2164,8 @@
18362005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 21642005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
1837 2165
1838 * progmodes/cc-fonts.el, cc-vars.el 2166 * progmodes/cc-fonts.el, cc-vars.el
1839 (gtkdoc-font-lock-doc-comments, gtkdoc-font-lock-doc-protection, 2167 (gtkdoc-font-lock-doc-comments, gtkdoc-font-lock-doc-protection)
1840 gtkdoc-font-lock-keywords): GtkDoc patterns contributed by 2168 (gtkdoc-font-lock-keywords): GtkDoc patterns contributed by
1841 Masatake YAMATO. 2169 Masatake YAMATO.
1842 2170
1843 (c-doc-comment-style): Made GtkDoc default in C mode. 2171 (c-doc-comment-style): Made GtkDoc default in C mode.
@@ -1861,7 +2189,7 @@
1861 c-syntactic-context for calls to "criteria functions", for 2189 c-syntactic-context for calls to "criteria functions", for
1862 consistency with other calls to user functions. 2190 consistency with other calls to user functions.
1863 2191
1864 * progmodes/cc-cmds.el (c-indent-command): expunge use of 2192 * progmodes/cc-cmds.el (c-indent-command): Expunge use of
1865 `current-prefix-arg', since this might be the prefix arg to a 2193 `current-prefix-arg', since this might be the prefix arg to a
1866 command which calls c-indent-command as a function. Change the 2194 command which calls c-indent-command as a function. Change the
1867 interactive spec from "p" to "P". 2195 interactive spec from "p" to "P".
@@ -1880,14 +2208,14 @@
1880 2208
18812005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 22092005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
1882 2210
1883 * progmodes/cc-cmds.el (c-mask-paragraph): correct, so that 2211 * progmodes/cc-cmds.el (c-mask-paragraph): Correct, so that
1884 auto-fill doesn't split a c-comment's last word from a hanging 2212 auto-fill doesn't split a c-comment's last word from a hanging
1885 "*/" when a space is typed between them after fill-column. 2213 "*/" when a space is typed between them after fill-column.
1886 2214
1887 * progmodes/cc-defs.el: New macro c-delete-and-extract-region. 2215 * progmodes/cc-defs.el: New macro c-delete-and-extract-region.
1888 2216
1889 * progmodes/cc-styles.el (c-set-style, 2217 * progmodes/cc-styles.el (c-set-style)
1890 c-setup-paragraph-variables): Abort the command if we're not in a 2218 (c-setup-paragraph-variables): Abort the command if we're not in a
1891 CC Mode buffer. 2219 CC Mode buffer.
1892 2220
1893 * progmodes/cc-align.el (c-lineup-C-comments): Correct indentation 2221 * progmodes/cc-align.el (c-lineup-C-comments): Correct indentation
@@ -1918,25 +2246,25 @@
1918 2246
19192005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 22472005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
1920 2248
1921 * progmodes/cc-fonts.el (c-basic-matchers-before, 2249 * progmodes/cc-fonts.el (c-basic-matchers-before)
1922 c-complex-decl-matchers): Fixed the "not-arrow-prefix" regexp used 2250 (c-complex-decl-matchers): Fixed the "not-arrow-prefix" regexp used
1923 in Pike. 2251 in Pike.
1924 2252
1925 * progmodes/cc-langs.el (c-other-op-syntax-tokens): Only C++ has 2253 * progmodes/cc-langs.el (c-other-op-syntax-tokens): Only C++ has
1926 digraphs. 2254 digraphs.
1927 2255
1928 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el 2256 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el
1929 (c-cpp-message-directives, c-cpp-include-directives, 2257 (c-cpp-message-directives, c-cpp-include-directives)
1930 c-opt-cpp-macro-define, c-opt-cpp-macro-define-start, 2258 (c-opt-cpp-macro-define, c-opt-cpp-macro-define-start)
1931 c-cpp-expr-directives): Introduced new language constants to 2259 (c-cpp-expr-directives): Introduced new language constants to
1932 control cpp syntax in a cleaner way. 2260 control cpp syntax in a cleaner way.
1933 2261
1934 (c-cpp-expr-functions): Renamed from c-cpp-defined-fns. 2262 (c-cpp-expr-functions): Renamed from c-cpp-defined-fns.
1935 2263
1936 (c-cpp-matchers, c-forward-to-cpp-define-body): Use them. 2264 (c-cpp-matchers, c-forward-to-cpp-define-body): Use them.
1937 2265
1938 * progmodes/cc-langs.el, cc-fonts.el (c-string-escaped-newlines, 2266 * progmodes/cc-langs.el, cc-fonts.el (c-string-escaped-newlines)
1939 c-multiline-string-start-char): New language constants and 2267 (c-multiline-string-start-char): New language constants and
1940 variables to specify how newlines in string literals work. 2268 variables to specify how newlines in string literals work.
1941 2269
1942 (c-font-lock-invalid-string): Use them. 2270 (c-font-lock-invalid-string): Use them.
@@ -1952,15 +2280,15 @@
1952 * progmodes/cc-engine.el, cc-langs.el 2280 * progmodes/cc-engine.el, cc-langs.el
1953 (c-opt-op-identifier-prefix): New language constant and variable. 2281 (c-opt-op-identifier-prefix): New language constant and variable.
1954 2282
1955 (c-just-after-func-arglist-p, c-after-special-operator-id, 2283 (c-just-after-func-arglist-p, c-after-special-operator-id)
1956 c-search-decl-header-end, c-inside-bracelist-p): Use it. 2284 (c-search-decl-header-end, c-inside-bracelist-p): Use it.
1957 2285
1958 * progmodes/cc-align.el, cc-engine.el 2286 * progmodes/cc-align.el, cc-engine.el
1959 (c-after-special-operator-id): New helper to handle C++ operator 2287 (c-after-special-operator-id): New helper to handle C++ operator
1960 identifiers. 2288 identifiers.
1961 2289
1962 (c-lineup-topmost-intro-cont, c-just-after-func-arglist-p, 2290 (c-lineup-topmost-intro-cont, c-just-after-func-arglist-p)
1963 c-guess-basic-syntax): Handle C++ operator identifiers in 2291 (c-guess-basic-syntax): Handle C++ operator identifiers in
1964 declarations. 2292 declarations.
1965 2293
1966 * progmodes/cc-langs.el (c-assignment-operators): Added the 2294 * progmodes/cc-langs.el (c-assignment-operators): Added the
@@ -2030,7 +2358,7 @@
2030 (c-point-syntax): Add a check for "virtual semicolons" in AWK 2358 (c-point-syntax): Add a check for "virtual semicolons" in AWK
2031 mode, so that the tentative extra newline doesn't change the 2359 mode, so that the tentative extra newline doesn't change the
2032 syntax of the following brace. 2360 syntax of the following brace.
2033 (c-electric-brace): restructure by extracting the above functions. 2361 (c-electric-brace): Restructure by extracting the above functions.
2034 Tidy up the coding somewhat. 2362 Tidy up the coding somewhat.
2035 (c-electric-semi&comma, c-electric-colon, c-electric-paren): 2363 (c-electric-semi&comma, c-electric-colon, c-electric-paren):
2036 restructure a bit. 2364 restructure a bit.
@@ -2055,9 +2383,9 @@
2055 * progmodes/cc-subword.el: New functions and minor mode to handle 2383 * progmodes/cc-subword.el: New functions and minor mode to handle
2056 SillyCapsedStyleIndentifiers, contributed by Masatake YAMATO: 2384 SillyCapsedStyleIndentifiers, contributed by Masatake YAMATO:
2057 2385
2058 (c-forward-subword, c-backward-subword, c-mark-subword, 2386 (c-forward-subword, c-backward-subword, c-mark-subword)
2059 c-kill-subword, c-backward-kill-subword, c-transpose-subwords, 2387 (c-kill-subword, c-backward-kill-subword, c-transpose-subwords)
2060 c-capitalize-subword, c-downcase-subword, c-upcase-subword): 2388 (c-capitalize-subword, c-downcase-subword, c-upcase-subword):
2061 Functions corresponding to the standard word handling functions. 2389 Functions corresponding to the standard word handling functions.
2062 2390
2063 (c-subword-move-mode): Minor mode that replaces all the standard 2391 (c-subword-move-mode): Minor mode that replaces all the standard
@@ -2078,7 +2406,7 @@
2078 2406
2079 Introduce an "awk" style, mainly for auto-newline and clean-ups. 2407 Introduce an "awk" style, mainly for auto-newline and clean-ups.
2080 2408
2081 * progmodes/cc-align.el: new function c-snug-1line-defun-close 2409 * progmodes/cc-align.el: New function c-snug-1line-defun-close
2082 2410
2083 * progmodes/cc-cmds.el: In c-electric-brace, add code for new 2411 * progmodes/cc-cmds.el: In c-electric-brace, add code for new
2084 clean-up one-liner-defun. 2412 clean-up one-liner-defun.
@@ -2101,8 +2429,8 @@
2101 * progmodes/cc-defs.el (c-tnt-chng-record-state): Don't signal an 2429 * progmodes/cc-defs.el (c-tnt-chng-record-state): Don't signal an
2102 error if the mark isn't set. 2430 error if the mark isn't set.
2103 2431
2104 * progmodes/cc-engine.el (c-guess-continued-construct, 2432 * progmodes/cc-engine.el (c-guess-continued-construct)
2105 c-guess-basic-syntax): Use `c-forward-decl-or-cast-1' to more 2433 (c-guess-basic-syntax): Use `c-forward-decl-or-cast-1' to more
2106 accurately detect functions inside functions. 2434 accurately detect functions inside functions.
2107 2435
2108 * progmodes/cc-engine.el (c-at-expression-start-p): New function 2436 * progmodes/cc-engine.el (c-at-expression-start-p): New function
@@ -2123,8 +2451,8 @@
2123 (c-forward-objc-directive): New function to move over any ObjC 2451 (c-forward-objc-directive): New function to move over any ObjC
2124 directive. 2452 directive.
2125 2453
2126 (c-just-after-func-arglist-p, c-guess-basic-syntax, 2454 (c-just-after-func-arglist-p, c-guess-basic-syntax)
2127 c-basic-matchers-before): Use it. 2455 (c-basic-matchers-before): Use it.
2128 2456
2129 (c-font-lock-objc-iip-decl): Removed. 2457 (c-font-lock-objc-iip-decl): Removed.
2130 2458
@@ -2134,8 +2462,8 @@
2134 * progmodes/cc-styles.el (c-style-alist): Fixed several 2462 * progmodes/cc-styles.el (c-style-alist): Fixed several
2135 inconsistencies in the Whitesmith style. 2463 inconsistencies in the Whitesmith style.
2136 2464
2137 * progmodes/cc-align.el (c-lineup-after-whitesmith-blocks): New 2465 * progmodes/cc-align.el (c-lineup-after-whitesmith-blocks):
2138 lineup function to get lines after Whitesmith style blocks 2466 New lineup function to get lines after Whitesmith style blocks
2139 correctly indented. 2467 correctly indented.
2140 2468
2141 (c-lineup-whitesmith-in-block): Backed out the compensation for 2469 (c-lineup-whitesmith-in-block): Backed out the compensation for
@@ -2170,10 +2498,10 @@
21702005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 24982005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
2171 2499
2172 * progmodes/cc-awk.el: Change the terminology of regexps: A char 2500 * progmodes/cc-awk.el: Change the terminology of regexps: A char
2173 list is now 2501 list is now [asdf], a char class [:alpha:]. Include code for char
2174 [asdf], a char class [:alpha:]. Include code for char classes. 2502 classes. Set c-awk-NL-prop on lines ending in open strings. (Bug
2175 Set c-awk-NL-prop on lines ending in open strings. (Bug fix.) 2503 fix.) Add character classes (e.g. "[:alpha:]") into AWK Mode's
2176 Add character classes (e.g. "[:alpha:]") into AWK Mode's regexps. 2504 regexps.
2177 2505
2178 Remove (nearly all of) the cruft associated with AWK Mode's former 2506 Remove (nearly all of) the cruft associated with AWK Mode's former
2179 concept of "virtual semicolons": 2507 concept of "virtual semicolons":
@@ -2195,7 +2523,7 @@
2195 adapted for virtual semicolons. 2523 adapted for virtual semicolons.
2196 2524
2197 * progmodes/cc-engine.el: 2525 * progmodes/cc-engine.el:
2198 (c-ws*-string-limit-regexp): new regexp. 2526 (c-ws*-string-limit-regexp): New regexp.
2199 (c-forward-single-comment, c-backward-single-comment): Comment out 2527 (c-forward-single-comment, c-backward-single-comment): Comment out
2200 the (now redundant) "special" AWK stuff. 2528 the (now redundant) "special" AWK stuff.
2201 2529
@@ -2207,9 +2535,8 @@
2207 2535
2208 * progmodes/cc-fonts.el (c-font-lock-declarations): Always narrow 2536 * progmodes/cc-fonts.el (c-font-lock-declarations): Always narrow
2209 to the fontified region so that fontification doesn't occur 2537 to the fontified region so that fontification doesn't occur
2210 outside it 2538 outside it (could happen e.g. when fontifying a line with an
2211 (could happen e.g. when fontifying a line with an unfinished 2539 unfinished declaration).
2212 declaration).
2213 2540
22142005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 25412005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
2215 2542
@@ -2322,7 +2649,7 @@
2322 initialised in c-setup-paragraph-variables, used in string 2649 initialised in c-setup-paragraph-variables, used in string
2323 scanning subroutines of c-beginning-of-statement. 2650 scanning subroutines of c-beginning-of-statement.
2324 2651
2325 * progmodes/cc-cmds.el (c-electric-brace): don't delete a comment 2652 * progmodes/cc-cmds.el (c-electric-brace): Don't delete a comment
2326 which precedes the newly inserted `{'. 2653 which precedes the newly inserted `{'.
2327 2654
23282005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 26552005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
@@ -2358,8 +2685,8 @@
2358 * progmodes/cc-engine.el (c-guess-basic-syntax): Simplified case 2685 * progmodes/cc-engine.el (c-guess-basic-syntax): Simplified case
2359 16D - can't be a class-close at that point. 2686 16D - can't be a class-close at that point.
2360 2687
2361 * progmodes/cc-engine.el (c-guess-basic-syntax, 2688 * progmodes/cc-engine.el (c-guess-basic-syntax)
2362 c-add-class-syntax): Don't narrow out the enclosing declaration 2689 (c-add-class-syntax): Don't narrow out the enclosing declaration
2363 level. This makes everything a lot easier, and it was actually 2690 level. This makes everything a lot easier, and it was actually
2364 only four small places that needed it to work. Some places that 2691 only four small places that needed it to work. Some places that
2365 previously did `widen' are removed now, which has the effect that 2692 previously did `widen' are removed now, which has the effect that
@@ -2385,7 +2712,7 @@
2385 2712
2386 * progmodes/cc-langs.el (c-symbol-start): Include `@' in ObjC. 2713 * progmodes/cc-langs.el (c-symbol-start): Include `@' in ObjC.
2387 2714
2388 (c-decl-start-re): No no longer any need for special treatment of 2715 (c-decl-start-re): No longer any need for special treatment of
2389 ObjC due to the above. 2716 ObjC due to the above.
2390 2717
2391 (c-other-block-decl-kwds): Handle "extern" in ObjC too since it 2718 (c-other-block-decl-kwds): Handle "extern" in ObjC too since it
@@ -2397,8 +2724,8 @@
2397 2724
2398 (c-opt-identifier-prefix-key): New internal language constant. 2725 (c-opt-identifier-prefix-key): New internal language constant.
2399 2726
2400 (c-opt-identifier-concat-key, c-opt-after-id-concat-key, 2727 (c-opt-identifier-concat-key, c-opt-after-id-concat-key)
2401 c-identifier-start, c-identifier-key): Now completely calculated 2728 (c-identifier-start, c-identifier-key): Now completely calculated
2402 from other constants. 2729 from other constants.
2403 2730
2404 (c-identifier-last-sym-match): Decommissioned since it's no longer 2731 (c-identifier-last-sym-match): Decommissioned since it's no longer
@@ -2415,10 +2742,10 @@
2415 * progmodes/cc-langs.el (c-filter-ops): New helper function to 2742 * progmodes/cc-langs.el (c-filter-ops): New helper function to
2416 simplify access to `c-operators' and its likes. 2743 simplify access to `c-operators' and its likes.
2417 2744
2418 (c-operator-list, c-all-op-syntax-tokens, 2745 (c-operator-list, c-all-op-syntax-tokens)
2419 c-nonsymbol-token-regexp, c-<>-multichar-token-regexp, 2746 (c-nonsymbol-token-regexp, c-<>-multichar-token-regexp)
2420 c-<-op-cont-regexp, c->-op-cont-regexp, c-expr-kwds, 2747 (c-<-op-cont-regexp, c->-op-cont-regexp, c-expr-kwds)
2421 c-primary-expr-regexp, c-cast-parens): Use it. 2748 (c-primary-expr-regexp, c-cast-parens): Use it.
2422 2749
2423 * progmodes/cc-defs.el (c-lang-const): Fixes to allow use without 2750 * progmodes/cc-defs.el (c-lang-const): Fixes to allow use without
2424 an explicit language in functions. 2751 an explicit language in functions.
@@ -2432,8 +2759,8 @@
2432 (c-type-decl-prefix-key): Removed some now unnecessary cruft from 2759 (c-type-decl-prefix-key): Removed some now unnecessary cruft from
2433 the Pike value. 2760 the Pike value.
2434 2761
2435 * progmodes/cc-engine.el (c-on-identifier, 2762 * progmodes/cc-engine.el (c-on-identifier)
2436 c-simple-skip-symbol-backward): Small fix for handling "-" 2763 (c-simple-skip-symbol-backward): Small fix for handling "-"
2437 correctly in `skip-chars-backward'. Affected the operator lfun 2764 correctly in `skip-chars-backward'. Affected the operator lfun
2438 syntax in Pike. 2765 syntax in Pike.
2439 2766
@@ -2443,8 +2770,8 @@
2443 * progmodes/cc-langs.el (c-paren-nontype-kwds): The GCC keyword 2770 * progmodes/cc-langs.el (c-paren-nontype-kwds): The GCC keyword
2444 "__attribute__" is followed by a parenthesis. 2771 "__attribute__" is followed by a parenthesis.
2445 2772
2446 (c-type-start-kwds, c-prefix-spec-kwds, c-prefix-spec-kwds-re, 2773 (c-type-start-kwds, c-prefix-spec-kwds, c-prefix-spec-kwds-re)
2447 c-specifier-key, c-not-decl-init-keywords): Some cleanup using new 2774 (c-specifier-key, c-not-decl-init-keywords): Some cleanup using new
2448 language constants `c-type-start-kwds' and `c-prefix-spec-kwds'. 2775 language constants `c-type-start-kwds' and `c-prefix-spec-kwds'.
2449 2776
2450 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el: Internal 2777 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el: Internal
@@ -2455,12 +2782,12 @@
2455 declarations that can start anywhere. Used for class declarations 2782 declarations that can start anywhere. Used for class declarations
2456 in Pike. 2783 in Pike.
2457 2784
2458 (c-specifier-key, c-not-decl-init-keywords, 2785 (c-specifier-key, c-not-decl-init-keywords)
2459 c-decl-prefix-or-start-re, c-find-decl-prefix-search, 2786 (c-decl-prefix-or-start-re, c-find-decl-prefix-search)
2460 c-find-decl-spots): Implement `c-decl-start-kwds'. 2787 (c-find-decl-spots): Implement `c-decl-start-kwds'.
2461 2788
2462 (c-other-decl-kwds, c-postfix-decl-spec-kwds, c-decl-hangon-kwds, 2789 (c-other-decl-kwds, c-postfix-decl-spec-kwds, c-decl-hangon-kwds)
2463 c-decl-hangon-key, c-forward-decl-or-cast-1): Separated the 2790 (c-decl-hangon-key, c-forward-decl-or-cast-1): Separated the
2464 handling of the compiler specific extension keywords into a new 2791 handling of the compiler specific extension keywords into a new
2465 language constant `c-decl-hangon-kwds' that defines keyword 2792 language constant `c-decl-hangon-kwds' that defines keyword
2466 clauses to be ignored in declarations. 2793 clauses to be ignored in declarations.
@@ -2470,10 +2797,10 @@
2470 Necessary to stop at the declared identifier in e.g. IDL valuetype 2797 Necessary to stop at the declared identifier in e.g. IDL valuetype
2471 declarations. 2798 declarations.
2472 2799
2473 (c-typedef-decl-kwds, c-typeless-decl-kwds, c-type-list-kwds, 2800 (c-typedef-decl-kwds, c-typeless-decl-kwds, c-type-list-kwds)
2474 c-prefix-spec-kwds-re, c-postfix-spec-kwds, 2801 (c-prefix-spec-kwds-re, c-postfix-spec-kwds)
2475 c-after-suffixed-type-decl-key, c-opt-postfix-decl-spec-key, 2802 (c-after-suffixed-type-decl-key, c-opt-postfix-decl-spec-key)
2476 c-forward-decl-or-cast-1): Recognize the declared identifier in 2803 (c-forward-decl-or-cast-1): Recognize the declared identifier in
2477 class and enum declarations as such and not as part of the type. 2804 class and enum declarations as such and not as part of the type.
2478 2805
2479 (c-forward-decl-or-cast-1, c-forward-label): Relaxed the 2806 (c-forward-decl-or-cast-1, c-forward-label): Relaxed the
@@ -2489,24 +2816,24 @@
2489 * progmodes/cc-engine.el (c-maybe-labelp): Provide no default 2816 * progmodes/cc-engine.el (c-maybe-labelp): Provide no default
2490 value - this variable is always dynamically bound. 2817 value - this variable is always dynamically bound.
2491 2818
2492 * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el, 2819 * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el
2493 cc-mode.el, cc-styles.el, cc-vars.el, cc-align.el, cc-awk.el, 2820 * cc-mode.el, cc-styles.el, cc-vars.el, cc-align.el, cc-awk.el
2494 cc-cmds.el, cc-defs.el: Changed the policy for marking up 2821 * cc-cmds.el, cc-defs.el: Changed the policy for marking up
2495 functions that might do hidden buffer changes: All such internal 2822 functions that might do hidden buffer changes: All such internal
2496 functions are now marked instead of those that don't. 2823 functions are now marked instead of those that don't.
2497 2824
2498 (c-beginning-of-macro, c-end-of-macro, c-(forward|backward)-comments, 2825 (c-beginning-of-macro, c-end-of-macro, c-(forward|backward)-comments)
2499 c-(forward|backward)-single-comment, c-parse-state, c-on-identifier, 2826 (c-(forward|backward)-single-comment, c-parse-state, c-on-identifier)
2500 c-(fast-|slow-|)in-literal, c-literal-limits, c-collect-line-comments, 2827 (c-(fast-|slow-|)in-literal, c-literal-limits, c-collect-line-comments)
2501 c-literal-type): Allow these functions to make hidden buffer changes, 2828 (c-literal-type): Allow these functions to make hidden buffer changes,
2502 so that they are free to use text property caching later on. 2829 so that they are free to use text property caching later on.
2503 2830
2504 (c-electric-backspace, c-electric-delete-forward, c-electric-pound, 2831 (c-electric-backspace, c-electric-delete-forward, c-electric-pound)
2505 c-electric-brace, c-electric-slash, c-electric-star, 2832 (c-electric-brace, c-electric-slash, c-electric-star)
2506 c-electric-semi&comma, c-electric-colon, c-electric-lt-gt, 2833 (c-electric-semi&comma, c-electric-colon, c-electric-lt-gt)
2507 c-electric-paren, c-electric-continued-statement, c-indent-command, 2834 (c-electric-paren, c-electric-continued-statement, c-indent-command)
2508 c-indent-region, c-mask-paragraph, c-indent-new-comment-line, 2835 (c-indent-region, c-mask-paragraph, c-indent-new-comment-line)
2509 c-context-line-break): Added `c-save-buffer-state' calls to comply 2836 (c-context-line-break): Added `c-save-buffer-state' calls to comply
2510 with the changed semantics of the functions above. 2837 with the changed semantics of the functions above.
2511 2838
2512 * progmodes/cc-engine.el (c-beginning-of-statement-1): Fixed a bug 2839 * progmodes/cc-engine.el (c-beginning-of-statement-1): Fixed a bug
@@ -2521,10 +2848,10 @@
2521 (completed statement) with `}' (statement completed by closing 2848 (completed statement) with `}' (statement completed by closing
2522 brace or semicolon) and `$' (statement completed by EOL). 2849 brace or semicolon) and `$' (statement completed by EOL).
2523 2850
2524 (c-awk-virtual-semicolon-ends-prev-line-p, 2851 (c-awk-virtual-semicolon-ends-prev-line-p)
2525 c-awk-virtual-semicolon-ends-line-p, 2852 (c-awk-virtual-semicolon-ends-line-p)
2526 c-awk-skip-semantic-ws-forward, c-awk-skip-semantic-ws-backward, 2853 (c-awk-skip-semantic-ws-forward, c-awk-skip-semantic-ws-backward)
2527 c-awk-at-statement-end-p): new functions 2854 (c-awk-at-statement-end-p): New functions.
2528 2855
2529 * progmodes/cc-cmds.el: Simplify the structure of functions 2856 * progmodes/cc-cmds.el: Simplify the structure of functions
2530 c-forward-over-illiterals, c-back-over-illiterals. Enhance these 2857 c-forward-over-illiterals, c-back-over-illiterals. Enhance these
@@ -2596,8 +2923,8 @@
2596 * progmodes/cc-align.el (c-lineup-arglist): Fixed bug when the 2923 * progmodes/cc-align.el (c-lineup-arglist): Fixed bug when the
2597 first argument starts with a special brace list. 2924 first argument starts with a special brace list.
2598 2925
2599 * progmodes/cc-engine.el, cc-fonts.el (c-forward-decl-or-cast-1, 2926 * progmodes/cc-engine.el, cc-fonts.el (c-forward-decl-or-cast-1)
2600 c-font-lock-declarations): Broke out the declaration and cast 2927 (c-font-lock-declarations): Broke out the declaration and cast
2601 recognition from `c-font-lock-declarations' to a new function, so 2928 recognition from `c-font-lock-declarations' to a new function, so
2602 that it can be used in the indentation engine. 2929 that it can be used in the indentation engine.
2603 2930
@@ -2606,16 +2933,16 @@
2606 wrong side of the search limit that could happen when the start 2933 wrong side of the search limit that could happen when the start
2607 position is inside a literal. 2934 position is inside a literal.
2608 2935
2609 * progmodes/cc-engine.el (c-parse-state, 2936 * progmodes/cc-engine.el (c-parse-state)
2610 c-invalidate-state-cache): Modified the use of `c-state-cache-end' 2937 (c-invalidate-state-cache): Modified the use of `c-state-cache-end'
2611 so that it's kept a little bit back to increase the hit rate. 2938 so that it's kept a little bit back to increase the hit rate.
2612 2939
2613 (c-parse-state): Changed the macro handling and fixed some 2940 (c-parse-state): Changed the macro handling and fixed some
2614 glitches. Macro context is checked more often than necessary now, 2941 glitches. Macro context is checked more often than necessary now,
2615 but otoh less garbage conses are generated. 2942 but otoh less garbage conses are generated.
2616 2943
2617 * progmodes/cc-engine.el (c-parse-state, 2944 * progmodes/cc-engine.el (c-parse-state)
2618 c-invalidate-state-cache): Cache the last position where 2945 (c-invalidate-state-cache): Cache the last position where
2619 `c-state-cache' applies. This can speed up refontification quite 2946 `c-state-cache' applies. This can speed up refontification quite
2620 a bit in blocks where there are many non-brace parens before the 2947 a bit in blocks where there are many non-brace parens before the
2621 point. 2948 point.
@@ -2640,8 +2967,8 @@
2640 * progmodes/cc-engine.el (c-add-stmt-syntax): Narrowed down the 2967 * progmodes/cc-engine.el (c-add-stmt-syntax): Narrowed down the
2641 special case for "else if" clauses. 2968 special case for "else if" clauses.
2642 2969
2643 * progmodes/cc-engine.el (c-looking-at-inexpr-block, 2970 * progmodes/cc-engine.el (c-looking-at-inexpr-block)
2644 c-add-stmt-syntax): Use `c-recognize-paren-inexpr-blocks'. 2971 (c-add-stmt-syntax): Use `c-recognize-paren-inexpr-blocks'.
2645 2972
2646 * progmodes/cc-langs.el (c-recognize-paren-inexpr-blocks): New 2973 * progmodes/cc-langs.el (c-recognize-paren-inexpr-blocks): New
2647 language variable to recognize the gcc extension with statement 2974 language variable to recognize the gcc extension with statement
@@ -2658,8 +2985,8 @@
2658 `c-beginning-of-statement-1' instead of duplicating parts of it. 2985 `c-beginning-of-statement-1' instead of duplicating parts of it.
2659 This fixes bogus label recognition. 2986 This fixes bogus label recognition.
2660 2987
2661 * progmodes/cc-engine.el (c-add-type, c-check-type, 2988 * progmodes/cc-engine.el (c-add-type, c-check-type)
2662 c-forward-name, c-forward-type): Improved storage of template 2989 (c-forward-name, c-forward-type): Improved storage of template
2663 types in `c-found-types' so that they can be recognized better. 2990 types in `c-found-types' so that they can be recognized better.
2664 2991
2665 (c-syntactic-content): Added option to skip past nested parens. 2992 (c-syntactic-content): Added option to skip past nested parens.
@@ -2672,8 +2999,8 @@
2672 (c-forward-type): Handle that `c-last-identifier-range' might be 2999 (c-forward-type): Handle that `c-last-identifier-range' might be
2673 nil from `c-forward-name'. 3000 nil from `c-forward-name'.
2674 3001
2675 * progmodes/cc-defs.el: (c-safe-scan-lists, 3002 * progmodes/cc-defs.el (c-safe-scan-lists)
2676 c-(go-)?(up|down)-list-(forward|backward)): Added limit arguments. 3003 (c-(go-)?(up|down)-list-(forward|backward)): Added limit arguments.
2677 3004
2678 * progmodes/cc-defs.el (c-save-buffer-state): Use `unwind-protect' 3005 * progmodes/cc-defs.el (c-save-buffer-state): Use `unwind-protect'
2679 to work even if the form fails. 3006 to work even if the form fails.
@@ -2705,20 +3032,20 @@
2705 * progmodes/cc-langs.el (c-unterminated-block-comment-regexp): 3032 * progmodes/cc-langs.el (c-unterminated-block-comment-regexp):
2706 Fixed a bug in the regexp that caused extreme backtracking. 3033 Fixed a bug in the regexp that caused extreme backtracking.
2707 3034
2708 * progmodes/cc-langs.el (c-block-comment-starter, 3035 * progmodes/cc-langs.el (c-block-comment-starter)
2709 c-block-comment-ender): New language constants to specify in a 3036 (c-block-comment-ender): New language constants to specify in a
2710 single place how block comments look. 3037 single place how block comments look.
2711 3038
2712 (c-comment-start-regexp, c-block-comment-start-regexp, 3039 (c-comment-start-regexp, c-block-comment-start-regexp)
2713 comment-start, comment-end, comment-start-skip, 3040 (comment-start, comment-end, comment-start-skip)
2714 c-syntactic-ws-start, c-syntactic-ws-end, c-nonwhite-syntactic-ws, 3041 (c-syntactic-ws-start, c-syntactic-ws-end, c-nonwhite-syntactic-ws)
2715 c-syntactic-ws, c-nonempty-syntactic-ws, 3042 (c-syntactic-ws, c-nonempty-syntactic-ws)
2716 c-single-line-syntactic-ws, c-syntactic-eol): Now built from 3043 (c-single-line-syntactic-ws, c-syntactic-eol): Now built from
2717 `c-line-comment-starter', `c-block-comment-starter' and 3044 `c-line-comment-starter', `c-block-comment-starter' and
2718 `c-block-comment-ender'. 3045 `c-block-comment-ender'.
2719 3046
2720 (c-block-comment-regexp, c-unterminated-block-comment-regexp): New 3047 (c-block-comment-regexp, c-unterminated-block-comment-regexp):
2721 language constants to break up things a bit. 3048 New language constants to break up things a bit.
2722 3049
2723 (c-simple-ws): New language constant for simple whitespace. 3050 (c-simple-ws): New language constant for simple whitespace.
2724 3051
@@ -2910,14 +3237,13 @@
29102005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 32372005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
2911 3238
2912 * progmodes/cc-defs.el, cc-engine.el (c-mode-is-new-awk-p): 3239 * progmodes/cc-defs.el, cc-engine.el (c-mode-is-new-awk-p):
2913 Removed; 3240 Removed; (c-major-mode-is 'awk-mode) can be used instead now.
2914 (c-major-mode-is 'awk-mode) can be used instead now.
2915 3241
2916 * progmodes/cc-mode.el: Always set up AWK mode since emacsen where 3242 * progmodes/cc-mode.el: Always set up AWK mode since emacsen where
2917 it doesn't work no longer are supported. 3243 it doesn't work no longer are supported.
2918 3244
2919 * progmodes/cc-mode.el, cc-styles.el, cc-vars.el, cc-defs.el, 3245 * progmodes/cc-mode.el, cc-styles.el, cc-vars.el, cc-defs.el
2920 cc-engine.el, cc-fonts.el, cc-langs.el, cc-cmds.el: CC Mode now 3246 * cc-engine.el, cc-fonts.el, cc-langs.el, cc-cmds.el: CC Mode now
2921 requires support for the syntax-table' text property, which rules 3247 requires support for the syntax-table' text property, which rules
2922 out Emacs 19 and XEmacs < 21.4. Removed various compatibility 3248 out Emacs 19 and XEmacs < 21.4. Removed various compatibility
2923 cruft associated with those versions. 3249 cruft associated with those versions.
@@ -2934,9 +3260,9 @@
2934 variable and use an extra quoted face name instead. All the 3260 variable and use an extra quoted face name instead. All the
2935 emacsen flavors handle that correctly. 3261 emacsen flavors handle that correctly.
2936 3262
2937 * progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare, 3263 * progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare)
2938 c-font-lock-declarators, c-font-lock-declarations, 3264 (c-font-lock-declarators, c-font-lock-declarations)
2939 c-complex-decl-matchers, c-basic-matchers-after): Use a text 3265 (c-complex-decl-matchers, c-basic-matchers-after): Use a text
2940 property to mark the items in in declarator lists to handle 3266 property to mark the items in in declarator lists to handle
2941 refontification inside multiline declarations better. 3267 refontification inside multiline declarations better.
2942 3268
@@ -3000,7 +3326,7 @@
3000 3326
30012005-12-07 Bill Wohler <wohler@newt.com> 33272005-12-07 Bill Wohler <wohler@newt.com>
3002 3328
3003 * files.el (auto-mode-alist): Remove mh-letter-mode. Unnecessary, 3329 * files.el (auto-mode-alist): Remove mh-letter-mode. Unnecessary,
3004 and causes problems with non-MH users (such as Gnus users). 3330 and causes problems with non-MH users (such as Gnus users).
3005 3331
30062005-12-08 Nick Roberts <nickrob@snap.net.nz> 33322005-12-08 Nick Roberts <nickrob@snap.net.nz>
@@ -3017,12 +3343,12 @@
3017 3343
30182005-12-07 Kim F. Storm <storm@cua.dk> 33442005-12-07 Kim F. Storm <storm@cua.dk>
3019 3345
3020 * ido.el (ido-completion-map): Renamed from ido-mode-map. 3346 * ido.el (ido-completion-map): Rename from ido-mode-map.
3021 (ido-common-completion-map, ido-file-completion-map) 3347 (ido-common-completion-map, ido-file-completion-map)
3022 (ido-file-dir-completion-map, ido-buffer-completion-map): 3348 (ido-file-dir-completion-map, ido-buffer-completion-map):
3023 Renamed from ido-mode-....-map. 3349 Rename from ido-mode-....-map.
3024 (ido-init-completion-maps): Renamed from ido-init-mode-maps. 3350 (ido-init-completion-maps): Rename from ido-init-mode-maps.
3025 (ido-setup-completion-map): Renamed from ido-define-mode-map. 3351 (ido-setup-completion-map): Rename from ido-define-mode-map.
3026 (ido-read-internal): Bind minibuffer-local-filename-completion-map 3352 (ido-read-internal): Bind minibuffer-local-filename-completion-map
3027 to ido-completion-map. 3353 to ido-completion-map.
3028 3354
@@ -3076,7 +3402,7 @@
3076 3402
3077 * progmodes/cc-defs.el (c-emacs-features): Don't assume point-min==1. 3403 * progmodes/cc-defs.el (c-emacs-features): Don't assume point-min==1.
3078 3404
30792005-12-06 Nozomu Ando <nand@mac.com> (tiny patch) 34052005-12-06 Nozomu Ando <nand@mac.com> (tiny patch)
3080 3406
3081 * mail/smtpmail.el (smtpmail-try-auth-methods): Make password 3407 * mail/smtpmail.el (smtpmail-try-auth-methods): Make password
3082 prompts work for AUTH PLAIN. Also reported by Steve Allan 3408 prompts work for AUTH PLAIN. Also reported by Steve Allan
@@ -3115,7 +3441,7 @@
3115 (org-agenda-get-deadlines, org-agenda-get-scheduled) 3441 (org-agenda-get-deadlines, org-agenda-get-scheduled)
3116 (org-agenda-get-blocks): Use `org-get-category'. 3442 (org-agenda-get-blocks): Use `org-get-category'.
3117 (org-context-in-file-links): Rename from 3443 (org-context-in-file-links): Rename from
3118 `org-line-numbers-in-file-links' . 3444 `org-line-numbers-in-file-links'.
3119 3445
31202005-12-06 Romain Francoise <romain@orebokech.com> 34462005-12-06 Romain Francoise <romain@orebokech.com>
3121 3447
@@ -3259,7 +3585,7 @@
3259 3585
32602005-12-02 Ken Manheimer <ken.manheimer@gmail.com> 35862005-12-02 Ken Manheimer <ken.manheimer@gmail.com>
3261 3587
3262 * allout.el:(eval-when-compile): Remove unnecessary load of cl. 3588 * allout.el (eval-when-compile): Remove unnecessary load of cl.
3263 Add fset of allout-real-isearch-abort during compile to fix 3589 Add fset of allout-real-isearch-abort during compile to fix
3264 byte-compilation warnings. 3590 byte-compilation warnings.
3265 (allout-mode-p): Move definition of this macro above all uses, or 3591 (allout-mode-p): Move definition of this macro above all uses, or
@@ -3669,8 +3995,8 @@
3669 3995
3670 (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode. Use new 3996 (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode. Use new
3671 arguments for hi-lock-set-pattern. 3997 arguments for hi-lock-set-pattern.
3672 (hi-lock-unface-buffer, hi-lock-set-file-patterns): Call 3998 (hi-lock-unface-buffer, hi-lock-set-file-patterns):
3673 font-lock-fontify-buffer. 3999 Call font-lock-fontify-buffer.
3674 (hi-lock-find-file-hook, hi-lock-current-line) 4000 (hi-lock-find-file-hook, hi-lock-current-line)
3675 (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions. 4001 (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions.
3676 4002
@@ -3699,8 +4025,8 @@
3699 (org-plain-list-ordered-item-terminator): New options. 4025 (org-plain-list-ordered-item-terminator): New options.
3700 (org-at-item-p, org-beginning-of-item, org-end-of-item) 4026 (org-at-item-p, org-beginning-of-item, org-end-of-item)
3701 (org-get-indentation, org-get-string-indentation) 4027 (org-get-indentation, org-get-string-indentation)
3702 (org-maybe-renumber-ordered-list, org-renumber-ordered-list): New 4028 (org-maybe-renumber-ordered-list, org-renumber-ordered-list):
3703 functions. 4029 New functions.
3704 (org-move-item-down, org-move-item-up): New commands. 4030 (org-move-item-down, org-move-item-up): New commands.
3705 (org-export-as-html): New classes for CSS support. Bug fix in 4031 (org-export-as-html): New classes for CSS support. Bug fix in
3706 regular expression detecting fixed-width regions. Respect 4032 regular expression detecting fixed-width regions. Respect
@@ -3884,7 +4210,7 @@
3884 * man.el (Man-highlight-references): Doc fix. Reformat code in a 4210 * man.el (Man-highlight-references): Doc fix. Reformat code in a
3885 more Lisp-ish way. 4211 more Lisp-ish way.
3886 4212
38872005-11-19 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> (tiny change) 42132005-11-19 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> (tiny change)
3888 4214
3889 * ls-lisp.el (ls-lisp-format-file-size): Format file size with 9 4215 * ls-lisp.el (ls-lisp-format-file-size): Format file size with 9
3890 digits, not 8, to avoid misalignment for files larger than 100MB. 4216 digits, not 8, to avoid misalignment for files larger than 100MB.
@@ -3914,15 +4240,15 @@
3914 (org-export-icalendar): Use `org-icalendar-combined-name'. 4240 (org-export-icalendar): Use `org-icalendar-combined-name'.
3915 (org-cycle-agenda-files, org-agenda-file-to-end) 4241 (org-cycle-agenda-files, org-agenda-file-to-end)
3916 (org-agenda-file-to-front): New commands. 4242 (org-agenda-file-to-front): New commands.
3917 (org-table-tab-jumps-over-hlines,org-export-html-style): New 4243 (org-table-tab-jumps-over-hlines, org-export-html-style):
3918 options. 4244 New options.
3919 (org-table-next-field): Use `org-table-tab-jumps-over-hlines'. 4245 (org-table-next-field): Use `org-table-tab-jumps-over-hlines'.
3920 (org-at-table.el-p, org-set-autofill-regexps,org-html-protect): 4246 (org-at-table.el-p, org-set-autofill-regexps, org-html-protect):
3921 New functions. 4247 New functions.
3922 (org-fill-paragraph): Call `org-table-align' in tables. 4248 (org-fill-paragraph): Call `org-table-align' in tables.
3923 (org-mode): Call `org-set-autofill-regexps'. 4249 (org-mode): Call `org-set-autofill-regexps'.
3924 (org-export-as-html): Support for local handformatted lists. 4250 (org-export-as-html): Support for local handformatted lists.
3925 Modified to produce valid HTML 4.0. Use `org-export-html-style'. 4251 Modified to produce valid HTML 4.0. Use `org-export-html-style'.
3926 (org-export-local-list-max-depth): New option. 4252 (org-export-local-list-max-depth): New option.
3927 (org-html-expand): Use `org-html-protect'. 4253 (org-html-expand): Use `org-html-protect'.
3928 4254
@@ -4370,9 +4696,9 @@
4370 (apropos-variable): Doc fix. Use apropos-read-pattern. 4696 (apropos-variable): Doc fix. Use apropos-read-pattern.
4371 (apropos-command): Doc fix. Use apropos-read-pattern and 4697 (apropos-command): Doc fix. Use apropos-read-pattern and
4372 apropos-parse-pattern. Call apropos-print with nosubst=t. 4698 apropos-parse-pattern. Call apropos-print with nosubst=t.
4373 (apropos, apropos-value): Doc fix. Use apropos-read-pattern and 4699 (apropos, apropos-value): Doc fix. Use apropos-read-pattern and
4374 apropos-parse-pattern. 4700 apropos-parse-pattern.
4375 (apropos-documentation): Doc fix. Use apropos-read-pattern and 4701 (apropos-documentation): Doc fix. Use apropos-read-pattern and
4376 apropos-parse-pattern. Locally bind apropos-sort-by-scores to 4702 apropos-parse-pattern. Locally bind apropos-sort-by-scores to
4377 apropos-documentation-sort-by-scores. Call apropos-print with 4703 apropos-documentation-sort-by-scores. Call apropos-print with
4378 nosubst=t. 4704 nosubst=t.
@@ -4440,7 +4766,7 @@
44402005-11-10 Masatake YAMATO <jet@gyve.org> 47662005-11-10 Masatake YAMATO <jet@gyve.org>
4441 4767
4442 * add-log.el (add-log-current-defun): Handle class::method 4768 * add-log.el (add-log-current-defun): Handle class::method
4443 notation of c++. Fix incorrect comment. 4769 notation of c++. Fix incorrect comment.
4444 4770
44452005-11-10 Alan Mackenzie <acm@muc.de> 47712005-11-10 Alan Mackenzie <acm@muc.de>
4446 4772
@@ -4574,7 +4900,7 @@
4574 4900
4575 * replace.el (occur-engine): Add marker at end of line, too. 4901 * replace.el (occur-engine): Add marker at end of line, too.
4576 4902
45772005-11-04 Ken Manheimer <ken.manheimer@gmail.com> 49032005-11-04 Ken Manheimer <ken.manheimer@gmail.com>
4578 4904
4579 * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region) 4905 * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
4580 (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) 4906 (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
@@ -4599,7 +4925,7 @@
4599 * font-lock.el: Don't deal with font-lock-face-attributes here, 4925 * font-lock.el: Don't deal with font-lock-face-attributes here,
4600 move the code ... 4926 move the code ...
4601 4927
4602 * startup.el (command-line): ... here. Use face-spec-set instead 4928 * startup.el (command-line): ... here. Use face-spec-set instead
4603 of custom-declare-face. 4929 of custom-declare-face.
4604 4930
4605 * faces.el (face-spec-set): Reset the face if spec is not nil. 4931 * faces.el (face-spec-set): Reset the face if spec is not nil.
@@ -4616,7 +4942,7 @@
4616 4942
46172005-11-04 Ulf Jasper <ulf.jasper@web.de> 49432005-11-04 Ulf Jasper <ulf.jasper@web.de>
4618 4944
4619 * newsticker.el: Commentary updated. Code formatting changed. 4945 * newsticker.el: Commentary updated. Code formatting changed.
4620 (newsticker-version): Change to "1.9". 4946 (newsticker-version): Change to "1.9".
4621 (newsticker, newsticker-feed): Doc fix. 4947 (newsticker, newsticker-feed): Doc fix.
4622 (newsticker-url-list): Doc fix. Add option "Weekly". 4948 (newsticker-url-list): Doc fix. Add option "Weekly".
@@ -4636,7 +4962,7 @@
4636 (newsticker-mode): Doc fix. 4962 (newsticker-mode): Doc fix.
4637 (newsticker-mode): Change mode-line-format. 4963 (newsticker-mode): Change mode-line-format.
4638 (newsticker-start): Remove debug output. 4964 (newsticker-start): Remove debug output.
4639 (newsticker-start-ticker): Doc fix. Add Autoload cookie. 4965 (newsticker-start-ticker): Doc fix. Add autoload cookie.
4640 (newsticker-w3m-show-inline-images): Code formatting. 4966 (newsticker-w3m-show-inline-images): Code formatting.
4641 (newsticker-next-item): Call `force-mode-line-update'. 4967 (newsticker-next-item): Call `force-mode-line-update'.
4642 (newsticker-previous-item): Call `force-mode-line-update'. 4968 (newsticker-previous-item): Call `force-mode-line-update'.
@@ -4789,8 +5115,8 @@
47892005-11-04 Henrik Enberg <henrik.enberg@telia.com> 51152005-11-04 Henrik Enberg <henrik.enberg@telia.com>
4790 5116
4791 (rcirc-browse-url-map, rcirc-browse-url-at-point) 5117 (rcirc-browse-url-map, rcirc-browse-url-at-point)
4792 (rcirc-browse-url-at-mouse, rcirc-mangle-text): Make urls 5118 (rcirc-browse-url-at-mouse, rcirc-mangle-text):
4793 mouse and RET clickable. 5119 Make urls mouse and RET clickable.
4794 5120
47952005-11-04 Henrik Enberg <henrik.enberg@telia.com> 51212005-11-04 Henrik Enberg <henrik.enberg@telia.com>
4796 5122
@@ -4941,7 +5267,7 @@
4941 * progmodes/fortran.el (fortran-blink-match): 5267 * progmodes/fortran.el (fortran-blink-match):
4942 Use `blink-matching-delay'. 5268 Use `blink-matching-delay'.
4943 5269
49442005-11-02 John Mongan <jmongan@mccammon.ucsd.edu> (tiny change) 52702005-11-02 John Mongan <jmongan@mccammon.ucsd.edu> (tiny change)
4945 5271
4946 * progmodes/f90.el (f90-match-end): Use `blink-matching-delay'. 5272 * progmodes/f90.el (f90-match-end): Use `blink-matching-delay'.
4947 5273
@@ -4981,7 +5307,7 @@
4981 * vc-sccs.el: Update copyright year. 5307 * vc-sccs.el: Update copyright year.
4982 * ezimage.el: Likewise. 5308 * ezimage.el: Likewise.
4983 5309
49842005-11-01 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change) 53102005-11-01 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change)
4985 5311
4986 * info.el (Info-fontify-node): Use `string-width' for fontifying 5312 * info.el (Info-fontify-node): Use `string-width' for fontifying
4987 underlined titles. 5313 underlined titles.
@@ -5212,7 +5538,7 @@
5212 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region) 5538 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
5213 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region) 5539 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
5214 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional 5540 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
5215 'passphrase' argument, so the passphrase can be managed externally 5541 `passphrase' argument, so the passphrase can be managed externally
5216 and then passed in to the system. 5542 and then passed in to the system.
5217 5543
5218 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache) 5544 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
@@ -5228,7 +5554,7 @@
5228 externally and passed in to the system. 5554 externally and passed in to the system.
5229 5555
5230 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional 5556 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
5231 'notruncate' argument, so the passphrase cache can be used 5557 `notruncate' argument, so the passphrase cache can be used
5232 reliably with identifiers besides a pgp packet's key id. 5558 reliably with identifiers besides a pgp packet's key id.
5233 5559
52342005-10-29 Sascha Wilde <swilde@sha-bang.de> 55602005-10-29 Sascha Wilde <swilde@sha-bang.de>
@@ -5295,12 +5621,12 @@
5295 (pgg-decrypt): Convey provided passphrase in subordinate call to 5621 (pgg-decrypt): Convey provided passphrase in subordinate call to
5296 pgg-decrypt-region. 5622 pgg-decrypt-region.
5297 5623
52982005-10-20 Ken Manheimer <ken.manheimer+emacs@gmail.com> 56242005-10-20 Ken Manheimer <ken.manheimer+emacs@gmail.com>
5299 5625
5300 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region) 5626 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
5301 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region) 5627 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
5302 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional 5628 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
5303 'passphrase' argument, so the passphrase can be managed externally 5629 `passphrase' argument, so the passphrase can be managed externally
5304 and then passed in to the system. 5630 and then passed in to the system.
5305 5631
5306 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache) 5632 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
@@ -5316,7 +5642,7 @@
5316 externally and passed in to the system. 5642 externally and passed in to the system.
5317 5643
5318 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional 5644 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
5319 'notruncate' argument, so the passphrase cache can be used 5645 `notruncate' argument, so the passphrase cache can be used
5320 reliably with identifiers besides a pgp packet's key id. 5646 reliably with identifiers besides a pgp packet's key id.
5321 5647
53222005-10-29 Sascha Wilde <swilde@sha-bang.de> 56482005-10-29 Sascha Wilde <swilde@sha-bang.de>
@@ -5333,7 +5659,7 @@
5333 5659
53342005-10-28 Bill Wohler <wohler@newt.com> 56602005-10-28 Bill Wohler <wohler@newt.com>
5335 5661
5336 * help-mode.el (help-url): New button type. Calls browse-url. 5662 * help-mode.el (help-url): New button type. Calls browse-url.
5337 (help-xref-url-regexp): New regexp to recognize URLs in docstring. 5663 (help-xref-url-regexp): New regexp to recognize URLs in docstring.
5338 Similar to Info nodes: URL `url'. 5664 Similar to Info nodes: URL `url'.
5339 (help-make-xrefs): Create help-url buttons for 5665 (help-make-xrefs): Create help-url buttons for
@@ -5392,7 +5718,7 @@
5392 * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for 5718 * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for
5393 multiplication by an identity matrix; don't turn multiplication by 5719 multiplication by an identity matrix; don't turn multiplication by
5394 an inverse matrix into division. 5720 an inverse matrix into division.
5395 (math-div-symbol-fancy): Replace division by matrices with 5721 (math-div-symbol-fancy): Replace division by matrices with
5396 multiplication by inverse. 5722 multiplication by inverse.
5397 5723
5398 * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices. 5724 * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices.
@@ -5525,7 +5851,7 @@
5525 * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe 5851 * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe
5526 to gdb-mouse-toggle-breakpoint-fringe. 5852 to gdb-mouse-toggle-breakpoint-fringe.
5527 (gdb-mouse-toggle-breakpoint-margin): Rename from 5853 (gdb-mouse-toggle-breakpoint-margin): Rename from
5528 gdb-mouse-toggle-breakpoint. Fix doc. 5854 gdb-mouse-toggle-breakpoint. Fix doc.
5529 (gdb-mouse-toggle-breakpoint-fringe): New defun. 5855 (gdb-mouse-toggle-breakpoint-fringe): New defun.
5530 (gdb-put-string): Add optional SPROPS arg. Add props to string. 5856 (gdb-put-string): Add optional SPROPS arg. Add props to string.
5531 (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled 5857 (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled
@@ -5769,7 +6095,7 @@
5769 (outlineify-sticky, outlinify-sticky): Add autoload cookie. 6095 (outlineify-sticky, outlinify-sticky): Add autoload cookie.
5770 (my-mark-marker): Use `(featurep 'xemacs)'. 6096 (my-mark-marker): Use `(featurep 'xemacs)'.
5771 6097
57722005-10-23 Lars Hansen <larsh@soem.dk> 60982005-10-23 Lars Hansen <larsh@soem.dk>
5773 6099
5774 * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda. 6100 * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda.
5775 (byte-compile-file-form-defmumble, byte-compile-defun) 6101 (byte-compile-file-form-defmumble, byte-compile-defun)
@@ -6057,7 +6383,7 @@
6057 6383
6058 * calc/calc-units.el (math-standard-units): Add units, adjust 6384 * calc/calc-units.el (math-standard-units): Add units, adjust
6059 symbols and update values. 6385 symbols and update values.
6060 (math-unit-prefixes): Add more prefixes. 6386 (math-unit-prefixes): Add more prefixes.
6061 6387
60622005-10-19 Romain Francoise <romain@orebokech.com> 63882005-10-19 Romain Francoise <romain@orebokech.com>
6063 6389
@@ -6136,12 +6462,12 @@
6136 lisp/toolbar/tool-bar to lisp and "delete" lisp/toolbar. Place 6462 lisp/toolbar/tool-bar to lisp and "delete" lisp/toolbar. Place
6137 the low resolution images in their own directory (low-color). 6463 the low resolution images in their own directory (low-color).
6138 6464
6139 * toolbar/attach.*, toolbar/cancel.*, toolbar/close.*, 6465 * toolbar/attach.*, toolbar/cancel.*, toolbar/close.*
6140 * toolbar/copy.*, toolbar/cut.*, toolbar/diropen.*, toolbar/exit.*: 6466 * toolbar/copy.*, toolbar/cut.*, toolbar/diropen.*, toolbar/exit.*
6141 * toolbar/help.*, toolbar/home.*, toolbar/index.*, toolbar/info.*: 6467 * toolbar/help.*, toolbar/home.*, toolbar/index.*, toolbar/info.*
6142 * toolbar/mail.*, toolbar/new.*, toolbar/open.*, toolbar/paste.*: 6468 * toolbar/mail.*, toolbar/new.*, toolbar/open.*, toolbar/paste.*
6143 * toolbar/preferences.*, toolbar/print.*, toolbar/save.*: 6469 * toolbar/preferences.*, toolbar/print.*, toolbar/save.*
6144 * toolbar/saveas.*, toolbar/search.*, toolbar/search-replace.*: 6470 * toolbar/saveas.*, toolbar/search.*, toolbar/search-replace.*
6145 * toolbar/spell.*, toolbar/undo.*: Move to etc/images. 6471 * toolbar/spell.*, toolbar/undo.*: Move to etc/images.
6146 6472
6147 * toolbar/lc-copy.*: Move to etc/images/low-color/copy.*. 6473 * toolbar/lc-copy.*: Move to etc/images/low-color/copy.*.
@@ -6241,7 +6567,7 @@
6241 6567
6242 * diff-mode.el (diff-mode): Doc fix. 6568 * diff-mode.el (diff-mode): Doc fix.
6243 6569
62442005-10-16 David Reitter <david.reitter@gmail.com> 65702005-10-16 David Reitter <david.reitter@gmail.com>
6245 6571
6246 * mail/sendmail.el (send-mail-function): Use mailclient-send-it 6572 * mail/sendmail.el (send-mail-function): Use mailclient-send-it
6247 as default on darwin and windows systems. 6573 as default on darwin and windows systems.
@@ -6433,8 +6759,8 @@
6433 6759
64342005-10-12 Bill Wohler <wohler@newt.com> 67602005-10-12 Bill Wohler <wohler@newt.com>
6435 6761
6436 * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads. 6762 * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads.
6437 (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any 6763 (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any
6438 files in MH-E-SRC have been updated. 6764 files in MH-E-SRC have been updated.
6439 (updates, compile, recompile, bootstrap): Depend on mh-autoloads. 6765 (updates, compile, recompile, bootstrap): Depend on mh-autoloads.
6440 6766
@@ -7073,7 +7399,7 @@
7073 7399
7074 * toolbar/rescan.*: Move and rename to etc/images/refresh.*. 7400 * toolbar/rescan.*: Move and rename to etc/images/refresh.*.
7075 7401
70762005-09-30 Eric M. Ludlam <zappo@gnu.org> 74022005-09-30 Eric M. Ludlam <zappo@gnu.org>
7077 7403
7078 * speedbar.el: New version 1.0pre3. 7404 * speedbar.el: New version 1.0pre3.
7079 7405
@@ -7275,7 +7601,7 @@
7275 color rxvt terminals by using the code xterm.el used to use before 7601 color rxvt terminals by using the code xterm.el used to use before
7276 2005-04-09 in order to match the colors used by rxvt. 7602 2005-04-09 in order to match the colors used by rxvt.
7277 7603
72782005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change) 76042005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change)
7279 7605
7280 * term/rxvt.el (rxvt-register-default-colors): Add support for 88 7606 * term/rxvt.el (rxvt-register-default-colors): Add support for 88
7281 colors rxvt-unicode terminals by using the same code as xterm.el. 7607 colors rxvt-unicode terminals by using the same code as xterm.el.
@@ -8058,7 +8384,7 @@
80582005-09-02 Dan Nicolaescu <dann@ics.uci.edu> 83842005-09-02 Dan Nicolaescu <dann@ics.uci.edu>
8059 8385
8060 * term/xterm.el (terminal-init-xterm): Add eval-when-compile to 8386 * term/xterm.el (terminal-init-xterm): Add eval-when-compile to
8061 fix compilation warning. Reorder the key definitions to group 8387 fix compilation warning. Reorder the key definitions to group
8062 together keys emitted by the current version of xterm. 8388 together keys emitted by the current version of xterm.
8063 8389
8064 * progmodes/vhdl-mode.el (vhdl-highlight-faces) 8390 * progmodes/vhdl-mode.el (vhdl-highlight-faces)
@@ -8140,7 +8466,7 @@
8140 (vhdl-get-visible-signals): Fix signal name searching. 8466 (vhdl-get-visible-signals): Fix signal name searching.
8141 (vhdl-port-flatten, vhdl-port-reverse-direction): Better message. 8467 (vhdl-port-flatten, vhdl-port-reverse-direction): Better message.
8142 (vhdl-fixup-whitespace-region): Fix for character 8468 (vhdl-fixup-whitespace-region): Fix for character
8143 literals (e.g. ':'). 8469 literals (e.g. `:').
8144 8470
81452005-08-31 Juanma Barranquero <lekktu@gmail.com> 84712005-08-31 Juanma Barranquero <lekktu@gmail.com>
8146 8472
@@ -8933,7 +9259,7 @@
89332005-08-10 Lars Hansen <larsh@soem.dk> 92592005-08-10 Lars Hansen <larsh@soem.dk>
8934 9260
8935 * desktop.el (desktop-buffer-mode-handlers): 9261 * desktop.el (desktop-buffer-mode-handlers):
8936 Make non-customizable. Add autoload cookie. Change initial value to 9262 Make non-customizable. Add autoload cookie. Change initial value to
8937 nil; add elements in respective modules instead. Fix doc string. 9263 nil; add elements in respective modules instead. Fix doc string.
8938 (desktop-load-file): New function. 9264 (desktop-load-file): New function.
8939 (desktop-minor-mode-handlers): New autoloaded variable. 9265 (desktop-minor-mode-handlers): New autoloaded variable.
@@ -8949,7 +9275,7 @@
8949 indicate-buffer-boundaries, indicate-empty-lines and 9275 indicate-buffer-boundaries, indicate-empty-lines and
8950 show-trailing-whitespace. 9276 show-trailing-whitespace.
8951 (desktop-clear): Allow desktop-clear-preserve-buffers to contain 9277 (desktop-clear): Allow desktop-clear-preserve-buffers to contain
8952 regexps. Don't use desktop-clear-preserve-buffers-regexp. 9278 regexps. Don't use desktop-clear-preserve-buffers-regexp.
8953 (desktop-clear-preserve-buffers-regexp): Delete. 9279 (desktop-clear-preserve-buffers-regexp): Delete.
8954 (desktop-clear-preserve-buffers): Update initial value and docstring. 9280 (desktop-clear-preserve-buffers): Update initial value and docstring.
8955 (desktop-save-buffer): Fix doc string. 9281 (desktop-save-buffer): Fix doc string.
@@ -9575,7 +9901,7 @@
9575 not `bookmark-exit-hooks'. Fix docstring. 9901 not `bookmark-exit-hooks'. Fix docstring.
9576 (bookmark-bmenu-select): "?\ " -> "?\s". 9902 (bookmark-bmenu-select): "?\ " -> "?\s".
9577 9903
95782005-07-25 Ari Roponen <arjuropo@cc.jyu.fi> (tiny change) 99042005-07-25 Ari Roponen <arjuropo@cc.jyu.fi> (tiny change)
9579 9905
9580 * startup.el (command-line): Fix typo. 9906 * startup.el (command-line): Fix typo.
9581 9907
@@ -9624,7 +9950,7 @@
9624 (xterm-rxvt-set-background-mode): Remove, not used anymore. 9950 (xterm-rxvt-set-background-mode): Remove, not used anymore.
9625 9951
9626 * term/rxvt.el (function-key-map): Use substitute-key-definition 9952 * term/rxvt.el (function-key-map): Use substitute-key-definition
9627 to bind {C,S,C-S}-{f1-f10}. Add a few missing key bindings. 9953 to bind {C,S,C-S}-{f1-f10}. Add a few missing key bindings.
9628 9954
9629 * term/cygwin.el: New file. 9955 * term/cygwin.el: New file.
9630 9956
@@ -10338,7 +10664,7 @@
10338 (mac-services-mail-to): New functions. 10664 (mac-services-mail-to): New functions.
10339 (mac-application-menu-map): Bind them. 10665 (mac-application-menu-map): Bind them.
10340 10666
103412005-07-12 wulei <milton@wulei.net> (tiny change) 106672005-07-12 wulei <milton@wulei.net> (tiny change)
10342 10668
10343 * progmodes/gdb-ui.el: Add note about buffering with Windows. 10669 * progmodes/gdb-ui.el: Add note about buffering with Windows.
10344 10670
@@ -12611,7 +12937,7 @@
12611 12937
12612 * textmodes/ispell.el (ispell-check-version): 12938 * textmodes/ispell.el (ispell-check-version):
12613 Use match-string-no-properties. 12939 Use match-string-no-properties.
12614 (ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict) 12940 (ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict)
12615 (ispell-buffer-local-words): Likewise. 12941 (ispell-buffer-local-words): Likewise.
12616 12942
12617 * progmodes/make-mode.el (makefile-shell-face): Make this a no-op 12943 * progmodes/make-mode.el (makefile-shell-face): Make this a no-op
@@ -14811,12 +15137,12 @@
14811 with mode-require-final-newline. 15137 with mode-require-final-newline.
14812 (mode-require-final-newline): Doc fix. 15138 (mode-require-final-newline): Doc fix.
14813 15139
148142005-05-01 Stefan Monnier <monnier@iro.umontreal.ca> 151402005-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
14815 15141
14816 * international/latexenc.el (latexenc-find-file-coding-system): 15142 * international/latexenc.el (latexenc-find-file-coding-system):
14817 Fix regular expressions. 15143 Fix regular expressions.
14818 15144
148192005-05-01 David Kastrup <dak@gnu.org> 151452005-05-01 David Kastrup <dak@gnu.org>
14820 15146
14821 * international/latexenc.el (latexenc-find-file-coding-system): 15147 * international/latexenc.el (latexenc-find-file-coding-system):
14822 Fix regular expressions. 15148 Fix regular expressions.
@@ -14883,7 +15209,7 @@
14883 (org-prefix-format-compiled): New variable. 15209 (org-prefix-format-compiled): New variable.
14884 (org-compile-prefix-format): New function. 15210 (org-compile-prefix-format): New function.
14885 (org-timeline, org-agenda, org-diary): Call org-compile-prefix-format. 15211 (org-timeline, org-agenda, org-diary): Call org-compile-prefix-format.
14886 (org-agenda-prefix-format,org-timeline-prefix-format): New options. 15212 (org-agenda-prefix-format, org-timeline-prefix-format): New options.
14887 (org-agenda-get-scheduled): Check if file is opened in `org-mode'. 15213 (org-agenda-get-scheduled): Check if file is opened in `org-mode'.
14888 (org-get-entries-from-diary): Use `org-get-time-of-day' for 15214 (org-get-entries-from-diary): Use `org-get-time-of-day' for
14889 consistency with entries from `org-mode' files. 15215 consistency with entries from `org-mode' files.
@@ -15494,7 +15820,7 @@
15494 (org-mode): Insert first line "*-* mode: org-mode -*-" when called 15820 (org-mode): Insert first line "*-* mode: org-mode -*-" when called
15495 interactively in empty file and option 15821 interactively in empty file and option
15496 `org-insert-mode-line-in-empty-file' has been set. 15822 `org-insert-mode-line-in-empty-file' has been set.
15497 (org-agenda-todo,org-agenda-priority): Modify to use 15823 (org-agenda-todo, org-agenda-priority): Modify to use
15498 `org-agenda-change-all-lines'. 15824 `org-agenda-change-all-lines'.
15499 (org-warning-face): Change color on dark background 15825 (org-warning-face): Change color on dark background
15500 15826
@@ -16641,16 +16967,16 @@
16641 16967
166422005-03-25 Werner Lemberg <wl@gnu.org> 169682005-03-25 Werner Lemberg <wl@gnu.org>
16643 16969
16644 * calc/calc-forms.el, calc/calc-sel.el: 16970 * calc/calc-forms.el, calc/calc-sel.el
16645 * midnight.el, vc-cvs.el: 16971 * midnight.el, vc-cvs.el
16646 * emacs-lisp/cl-macs.el: 16972 * emacs-lisp/cl-macs.el
16647 * emulation/vip.el: 16973 * emulation/vip.el
16648 * eshell/esh-io.el, eshell/esh-var.el: 16974 * eshell/esh-io.el, eshell/esh-var.el
16649 * mail/supercite.el: 16975 * mail/supercite.el
16650 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el 16976 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el
16651 * progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-iso.el 16977 * progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-iso.el
16652 * progmodes/ebnf-yac.el, progmodes/ebnf2ps.el, progmodes/idlwave.el 16978 * progmodes/ebnf-yac.el, progmodes/ebnf2ps.el, progmodes/idlwave.el
16653 * progmodes/sh-script.el, progmodes/xscheme.el: 16979 * progmodes/sh-script.el, progmodes/xscheme.el
16654 * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el 16980 * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el
16655 * textmodes/reftex-index.el, textmodes/reftex-parse.el 16981 * textmodes/reftex-index.el, textmodes/reftex-parse.el
16656 * textmodes/reftex-ref.el, textmodes/reftex-vars.el 16982 * textmodes/reftex-ref.el, textmodes/reftex-vars.el
@@ -16767,7 +17093,7 @@
16767 17093
167682005-03-23 David Ponce <david@dponce.com> 170942005-03-23 David Ponce <david@dponce.com>
16769 17095
16770 * recentf.el: (recentf-keep): New option. 17096 * recentf.el (recentf-keep): New option.
16771 (recentf-menu-action): Default to `find-file'. 17097 (recentf-menu-action): Default to `find-file'.
16772 (recentf-keep-non-readable-files-flag) 17098 (recentf-keep-non-readable-files-flag)
16773 (recentf-keep-non-readable-files-p) 17099 (recentf-keep-non-readable-files-p)
@@ -17966,9 +18292,9 @@
179662005-02-19 Michael Kifer <kifer@cs.stonybrook.edu> 182922005-02-19 Michael Kifer <kifer@cs.stonybrook.edu>
17967 18293
17968 * ediff.el (ediff-set-diff-overlays-in-one-buffer) 18294 * ediff.el (ediff-set-diff-overlays-in-one-buffer)
17969 (ediff-set-fine-overlays-in-one-buffer,ediff-goto-word): Make sure 18295 (ediff-set-fine-overlays-in-one-buffer, ediff-goto-word): Make sure
17970 we use the syntax table of the correct buffer. 18296 we use the syntax table of the correct buffer.
17971 (ediff-same-file-contents,ediff-same-contents): Enhancements thanks to 18297 (ediff-same-file-contents, ediff-same-contents): Enhancements thanks to
17972 Felix Gatzemeier. 18298 Felix Gatzemeier.
17973 18299
17974 * ediff-init.el (ediff-hide-face): Check for definedness of functions. 18300 * ediff-init.el (ediff-hide-face): Check for definedness of functions.
@@ -18842,7 +19168,7 @@
18842 (rmail-movemail-variant-in-use): New variables. 19168 (rmail-movemail-variant-in-use): New variables.
18843 (rmail-remote-password, rmail-remote-password-required): 19169 (rmail-remote-password, rmail-remote-password-required):
18844 New customization variables. 19170 New customization variables.
18845 (rmail-probe,rmail-autodetect, rmail-movemail-variant-p): New funs. 19171 (rmail-probe, rmail-autodetect, rmail-movemail-variant-p): New funs.
18846 (rmail-parse-url): New function. 19172 (rmail-parse-url): New function.
18847 (rmail-get-new-mail, rmail-insert-inbox-text): Update for use 19173 (rmail-get-new-mail, rmail-insert-inbox-text): Update for use
18848 with GNU mailutils movemail. 19174 with GNU mailutils movemail.
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10
index 51cda269238..395ba326ce3 100644
--- a/lisp/ChangeLog.10
+++ b/lisp/ChangeLog.10
@@ -19133,6 +19133,10 @@
19133 19133
19134 * menu-bar.el (menu-bar-showhide-menu): Rename functions for toggling. 19134 * menu-bar.el (menu-bar-showhide-menu): Rename functions for toggling.
19135 19135
191362002-02-10 Stephen J. Turnbull <stephen@xemacs.org>
19137
19138 * ediff-init.el (ediff-has-gutter-support): What was this?
19139
191362002-02-10 Michael Kifer <kifer@cs.stonybrook.edu> 191402002-02-10 Michael Kifer <kifer@cs.stonybrook.edu>
19137 19141
19138 * viper-util.el (viper-read-key-sequence): Fix so it'll read 19142 * viper-util.el (viper-read-key-sequence): Fix so it'll read
@@ -19142,8 +19146,6 @@
19142 * viper.el (describe-key, describe-key-briefly): Get rid of 19146 * viper.el (describe-key, describe-key-briefly): Get rid of
19143 viper-events-to-keys. 19147 viper-events-to-keys.
19144 19148
19145 * ediff-init.el (ediff-has-gutter-support): Steven Turnbull's patch.
19146
19147 * ediff-wind.el (ediff-setup-control-frame): 19149 * ediff-wind.el (ediff-setup-control-frame):
19148 Use ediff-has-gutter-support. 19150 Use ediff-has-gutter-support.
19149 19151
diff --git a/lisp/battery.el b/lisp/battery.el
index 710be5a4220..54a0e207ffc 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -271,6 +271,8 @@ The following %-sequences are provided:
271%h Remaining time in hours 271%h Remaining time in hours
272%t Remaining time in the form `h:min'" 272%t Remaining time in the form `h:min'"
273 (let ((design-capacity 0) 273 (let ((design-capacity 0)
274 (last-full-capacity 0)
275 full-capacity
274 (warn 0) 276 (warn 0)
275 (low 0) 277 (low 0)
276 capacity rate rate-type charging-state minutes hours) 278 capacity rate rate-type charging-state minutes hours)
@@ -310,18 +312,25 @@ The following %-sequences are provided:
310 (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$" 312 (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$"
311 nil t) 313 nil t)
312 (incf design-capacity (string-to-number (match-string 1)))) 314 (incf design-capacity (string-to-number (match-string 1))))
315 (when (re-search-forward "last full capacity: +\\([0-9]+\\) m[AW]h$"
316 nil t)
317 (incf last-full-capacity (string-to-number (match-string 1))))
313 (when (re-search-forward 318 (when (re-search-forward
314 "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t) 319 "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t)
315 (incf warn (string-to-number (match-string 1)))) 320 (incf warn (string-to-number (match-string 1))))
316 (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$" 321 (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$"
317 nil t) 322 nil t)
318 (incf low (string-to-number (match-string 1))))))) 323 (incf low (string-to-number (match-string 1)))))))
324 (setq full-capacity (if (> last-full-capacity 0)
325 last-full-capacity design-capacity))
319 (and capacity rate 326 (and capacity rate
320 (setq minutes (if (zerop rate) 0 327 (setq minutes (if (zerop rate) 0
321 (floor (* (/ (float (if (string= charging-state 328 (floor (* (/ (float (if (string= charging-state
322 "charging") 329 "charging")
323 (- design-capacity capacity) 330 (- full-capacity capacity)
324 capacity)) rate) 60))) 331 capacity))
332 rate)
333 60)))
325 hours (/ minutes 60))) 334 hours (/ minutes 60)))
326 (list (cons ?c (or (and capacity (number-to-string capacity)) "N/A")) 335 (list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
327 (cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state") 336 (cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state")
@@ -368,10 +377,10 @@ The following %-sequences are provided:
368 (cons ?t (or (and minutes 377 (cons ?t (or (and minutes
369 (format "%d:%02d" hours (- minutes (* 60 hours)))) 378 (format "%d:%02d" hours (- minutes (* 60 hours))))
370 "N/A")) 379 "N/A"))
371 (cons ?p (or (and design-capacity capacity 380 (cons ?p (or (and full-capacity capacity
372 (number-to-string 381 (number-to-string
373 (floor (/ capacity 382 (floor (/ capacity
374 (/ (float design-capacity) 100))))) 383 (/ (float full-capacity) 100)))))
375 "N/A"))))) 384 "N/A")))))
376 385
377 386
diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el
index dc341cb7aec..64e0b4b7d10 100644
--- a/lisp/calc/calc-arith.el
+++ b/lisp/calc/calc-arith.el
@@ -1201,7 +1201,7 @@
1201 (and (math-known-scalarp b) 1201 (and (math-known-scalarp b)
1202 (math-add (nth 1 a) b)))) 1202 (math-add (nth 1 a) b))))
1203 (and (eq (car-safe b) 'calcFunc-idn) 1203 (and (eq (car-safe b) 'calcFunc-idn)
1204 (= (length a) 2) 1204 (= (length b) 2)
1205 (or (and (math-square-matrixp a) 1205 (or (and (math-square-matrixp a)
1206 (math-add a (math-mimic-ident (nth 1 b) a))) 1206 (math-add a (math-mimic-ident (nth 1 b) a)))
1207 (and (math-known-scalarp a) 1207 (and (math-known-scalarp a)
diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el
index c0fa5310bf4..849ec42c5f6 100644
--- a/lisp/calc/calcalg2.el
+++ b/lisp/calc/calcalg2.el
@@ -2012,7 +2012,7 @@
2012 n (1+ n) 2012 n (1+ n)
2013 t1 (cdr t1))) 2013 t1 (cdr t1)))
2014 (setq n (math-build-polynomial-expr poly high)) 2014 (setq n (math-build-polynomial-expr poly high))
2015 (if (memq low '(0 1)) 2015 (if (= low 1)
2016 n 2016 n
2017 (math-sub n (math-build-polynomial-expr poly 2017 (math-sub n (math-build-polynomial-expr poly
2018 (math-sub low 1)))))) 2018 (math-sub low 1))))))
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 0f8e7295d32..c377bcc8735 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -1,6 +1,6 @@
1;;; cal-menu.el --- calendar functions for menu bar and popup menu support 1;;; cal-menu.el --- calendar functions for menu bar and popup menu support
2 2
3;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005 3;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> 6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
@@ -42,7 +42,9 @@
42(defvar displayed-month) 42(defvar displayed-month)
43(defvar displayed-year) 43(defvar displayed-year)
44 44
45(eval-when-compile (require 'calendar)) 45;; Don't require calendar because calendar requires us.
46;; (eval-when-compile (require 'calendar))
47(defvar calendar-mode-map)
46 48
47(define-key calendar-mode-map [menu-bar edit] 'undefined) 49(define-key calendar-mode-map [menu-bar edit] 'undefined)
48(define-key calendar-mode-map [menu-bar search] 'undefined) 50(define-key calendar-mode-map [menu-bar search] 'undefined)
@@ -211,14 +213,14 @@ not available."
211 (condition-case nil 213 (condition-case nil
212 (if (eq major-mode 'calendar-mode) 214 (if (eq major-mode 'calendar-mode)
213 (let ((l)) 215 (let ((l))
214 (calendar-for-loop;; Show 11 years--5 before, 5 after year of 216 ;; Show 11 years--5 before, 5 after year of middle month
215 ;; middle month 217 (dotimes (i 11)
216 i from (- displayed-year 5) to (+ displayed-year 5) do 218 (let ((y (+ displayed-year -5 i)))
217 (setq l (cons (vector (format "For Year %s" i) 219 (push (vector (format "For Year %s" y)
218 (list (list 'lambda 'nil '(interactive) 220 (list (list 'lambda 'nil '(interactive)
219 (list 'list-holidays i i))) 221 (list 'list-holidays y y)))
220 t) 222 t)
221 l))) 223 l)))
222 (setq l (cons ["Mark Holidays" mark-calendar-holidays t] 224 (setq l (cons ["Mark Holidays" mark-calendar-holidays t]
223 (cons ["Unmark Calendar" calendar-unmark t] 225 (cons ["Unmark Calendar" calendar-unmark t]
224 (cons "--" l)))) 226 (cons "--" l))))
@@ -231,22 +233,18 @@ not available."
231 (calendar-date-string (calendar-current-date) t t)) 233 (calendar-date-string (calendar-current-date) t t))
232 . cal-menu-today-holidays)) 234 . cal-menu-today-holidays))
233 (let ((title 235 (let ((title
234 (let ((m1 displayed-month) 236 (let ((my1 (calendar-increment-month -1))
235 (y1 displayed-year) 237 (my2 (calendar-increment-month 1)))
236 (m2 displayed-month) 238 (if (= (cdr my1) (cdr my2))
237 (y2 displayed-year))
238 (increment-calendar-month m1 y1 -1)
239 (increment-calendar-month m2 y2 1)
240 (if (= y1 y2)
241 (format "%s-%s, %d" 239 (format "%s-%s, %d"
242 (calendar-month-name m1 'abbrev) 240 (calendar-month-name (car my1) 'abbrev)
243 (calendar-month-name m2 'abbrev) 241 (calendar-month-name (car my2) 'abbrev)
244 y2) 242 (cdr my2))
245 (format "%s, %d-%s, %d" 243 (format "%s, %d-%s, %d"
246 (calendar-month-name m1 'abbrev) 244 (calendar-month-name (car my1) 'abbrev)
247 y1 245 (cdr my1)
248 (calendar-month-name m2 'abbrev) 246 (calendar-month-name (car my2) 'abbrev)
249 y2))))) 247 (cdr my2))))))
250 (define-key calendar-mode-map [menu-bar Holidays 3-month] 248 (define-key calendar-mode-map [menu-bar Holidays 3-month]
251 `(,(format "For Window (%s)" title) 249 `(,(format "For Window (%s)" title)
252 . list-calendar-holidays))) 250 . list-calendar-holidays)))
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 1ef8d048c88..f01f4305708 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1,7 +1,7 @@
1;;; calendar.el --- calendar functions 1;;; calendar.el --- calendar functions
2 2
3;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997, 3;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
4;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> 6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
7;; Maintainer: Glenn Morris <rgm@gnu.org> 7;; Maintainer: Glenn Morris <rgm@gnu.org>
@@ -98,11 +98,10 @@
98 98
99;;; Code: 99;;; Code:
100 100
101(eval-when-compile 101(defvar displayed-month)
102 (defvar displayed-month) 102(defvar displayed-year)
103 (defvar displayed-year) 103(defvar calendar-month-name-array)
104 (defvar calendar-month-name-array) 104(defvar calendar-starred-day)
105 (defvar calendar-starred-day))
106 105
107(defun calendar-version () 106(defun calendar-version ()
108 (interactive) 107 (interactive)
@@ -146,7 +145,7 @@
146 145
147;;;###autoload 146;;;###autoload
148(defcustom calendar-offset 0 147(defcustom calendar-offset 0
149 "*The offset of the principal month from the center of the calendar window. 148 "The offset of the principal month from the center of the calendar window.
1500 means the principal month is in the center (default), -1 means on the left, 1490 means the principal month is in the center (default), -1 means on the left,
151+1 means on the right. Larger (or smaller) values push the principal month off 150+1 means on the right. Larger (or smaller) values push the principal month off
152the screen." 151the screen."
@@ -155,7 +154,7 @@ the screen."
155 154
156;;;###autoload 155;;;###autoload
157(defcustom view-diary-entries-initially nil 156(defcustom view-diary-entries-initially nil
158 "*Non-nil means display current date's diary entries on entry to calendar. 157 "Non-nil means display current date's diary entries on entry to calendar.
159The diary is displayed in another window when the calendar is first displayed, 158The diary is displayed in another window when the calendar is first displayed,
160if the current date is visible. The number of days of diary entries displayed 159if the current date is visible. The number of days of diary entries displayed
161is governed by the variable `number-of-diary-entries'. This variable can 160is governed by the variable `number-of-diary-entries'. This variable can
@@ -165,14 +164,14 @@ be overridden by the value of `calendar-setup'."
165 164
166;;;###autoload 165;;;###autoload
167(defcustom mark-diary-entries-in-calendar nil 166(defcustom mark-diary-entries-in-calendar nil
168 "*Non-nil means mark dates with diary entries, in the calendar window. 167 "Non-nil means mark dates with diary entries, in the calendar window.
169The marking symbol is specified by the variable `diary-entry-marker'." 168The marking symbol is specified by the variable `diary-entry-marker'."
170 :type 'boolean 169 :type 'boolean
171 :group 'diary) 170 :group 'diary)
172 171
173;;;###autoload 172;;;###autoload
174(defcustom calendar-remove-frame-by-deleting nil 173(defcustom calendar-remove-frame-by-deleting nil
175 "*Determine how the calendar mode removes a frame no longer needed. 174 "Determine how the calendar mode removes a frame no longer needed.
176If nil, make an icon of the frame. If non-nil, delete the frame." 175If nil, make an icon of the frame. If non-nil, delete the frame."
177 :type 'boolean 176 :type 'boolean
178 :group 'view) 177 :group 'view)
@@ -224,7 +223,7 @@ If nil, make an icon of the frame. If non-nil, delete the frame."
224 (if (not (display-color-p)) 223 (if (not (display-color-p))
225 "+" 224 "+"
226 'diary) 225 'diary)
227 "*How to mark dates that have diary entries. 226 "How to mark dates that have diary entries.
228The value can be either a single-character string or a face." 227The value can be either a single-character string or a face."
229 :type '(choice string face) 228 :type '(choice string face)
230 :group 'diary) 229 :group 'diary)
@@ -233,7 +232,7 @@ The value can be either a single-character string or a face."
233 (if (not (display-color-p)) 232 (if (not (display-color-p))
234 "=" 233 "="
235 'calendar-today) 234 'calendar-today)
236 "*How to mark today's date in the calendar. 235 "How to mark today's date in the calendar.
237The value can be either a single-character string or a face. 236The value can be either a single-character string or a face.
238Marking today's date is done only if you set up `today-visible-calendar-hook' 237Marking today's date is done only if you set up `today-visible-calendar-hook'
239to request that." 238to request that."
@@ -244,14 +243,14 @@ to request that."
244 (if (not (display-color-p)) 243 (if (not (display-color-p))
245 "*" 244 "*"
246 'holiday) 245 'holiday)
247 "*How to mark notable dates in the calendar. 246 "How to mark notable dates in the calendar.
248The value can be either a single-character string or a face." 247The value can be either a single-character string or a face."
249 :type '(choice string face) 248 :type '(choice string face)
250 :group 'calendar) 249 :group 'calendar)
251 250
252;;;###autoload 251;;;###autoload
253(defcustom view-calendar-holidays-initially nil 252(defcustom view-calendar-holidays-initially nil
254 "*Non-nil means display holidays for current three month period on entry. 253 "Non-nil means display holidays for current three month period on entry.
255The holidays are displayed in another window when the calendar is first 254The holidays are displayed in another window when the calendar is first
256displayed." 255displayed."
257 :type 'boolean 256 :type 'boolean
@@ -259,14 +258,14 @@ displayed."
259 258
260;;;###autoload 259;;;###autoload
261(defcustom mark-holidays-in-calendar nil 260(defcustom mark-holidays-in-calendar nil
262 "*Non-nil means mark dates of holidays in the calendar window. 261 "Non-nil means mark dates of holidays in the calendar window.
263The marking symbol is specified by the variable `calendar-holiday-marker'." 262The marking symbol is specified by the variable `calendar-holiday-marker'."
264 :type 'boolean 263 :type 'boolean
265 :group 'holidays) 264 :group 'holidays)
266 265
267;;;###autoload 266;;;###autoload
268(defcustom all-hebrew-calendar-holidays nil 267(defcustom all-hebrew-calendar-holidays nil
269 "*If nil, show only major holidays from the Hebrew calendar. 268 "If nil, show only major holidays from the Hebrew calendar.
270This means only those Jewish holidays that appear on secular calendars. 269This means only those Jewish holidays that appear on secular calendars.
271 270
272If t, show all the holidays that would appear in a complete Hebrew calendar." 271If t, show all the holidays that would appear in a complete Hebrew calendar."
@@ -275,7 +274,7 @@ If t, show all the holidays that would appear in a complete Hebrew calendar."
275 274
276;;;###autoload 275;;;###autoload
277(defcustom all-christian-calendar-holidays nil 276(defcustom all-christian-calendar-holidays nil
278 "*If nil, show only major holidays from the Christian calendar. 277 "If nil, show only major holidays from the Christian calendar.
279This means only those Christian holidays that appear on secular calendars. 278This means only those Christian holidays that appear on secular calendars.
280 279
281If t, show all the holidays that would appear in a complete Christian 280If t, show all the holidays that would appear in a complete Christian
@@ -285,7 +284,7 @@ calendar."
285 284
286;;;###autoload 285;;;###autoload
287(defcustom all-islamic-calendar-holidays nil 286(defcustom all-islamic-calendar-holidays nil
288 "*If nil, show only major holidays from the Islamic calendar. 287 "If nil, show only major holidays from the Islamic calendar.
289This means only those Islamic holidays that appear on secular calendars. 288This means only those Islamic holidays that appear on secular calendars.
290 289
291If t, show all the holidays that would appear in a complete Islamic 290If t, show all the holidays that would appear in a complete Islamic
@@ -294,13 +293,13 @@ calendar."
294 :group 'holidays) 293 :group 'holidays)
295 294
296(defcustom diary-file-name-prefix-function (function (lambda (str) str)) 295(defcustom diary-file-name-prefix-function (function (lambda (str) str))
297 "*The function that will take a diary file name and return the desired prefix." 296 "The function that will take a diary file name and return the desired prefix."
298 :type 'function 297 :type 'function
299 :group 'diary) 298 :group 'diary)
300 299
301;;;###autoload 300;;;###autoload
302(defcustom all-bahai-calendar-holidays nil 301(defcustom all-bahai-calendar-holidays nil
303 "*If nil, show only major holidays from the Baha'i calendar. 302 "If nil, show only major holidays from the Baha'i calendar.
304These are the days on which work and school must be suspended. 303These are the days on which work and school must be suspended.
305 304
306If t, show all the holidays that would appear in a complete Baha'i 305If t, show all the holidays that would appear in a complete Baha'i
@@ -310,14 +309,14 @@ calendar."
310 309
311;;;###autoload 310;;;###autoload
312(defcustom calendar-load-hook nil 311(defcustom calendar-load-hook nil
313 "*List of functions to be called after the calendar is first loaded. 312 "List of functions to be called after the calendar is first loaded.
314This is the place to add key bindings to `calendar-mode-map'." 313This is the place to add key bindings to `calendar-mode-map'."
315 :type 'hook 314 :type 'hook
316 :group 'calendar-hooks) 315 :group 'calendar-hooks)
317 316
318;;;###autoload 317;;;###autoload
319(defcustom initial-calendar-window-hook nil 318(defcustom initial-calendar-window-hook nil
320 "*List of functions to be called when the calendar window is first opened. 319 "List of functions to be called when the calendar window is first opened.
321The functions invoked are called after the calendar window is opened, but 320The functions invoked are called after the calendar window is opened, but
322once opened is never called again. Leaving the calendar with the `q' command 321once opened is never called again. Leaving the calendar with the `q' command
323and reentering it will cause these functions to be called again." 322and reentering it will cause these functions to be called again."
@@ -326,7 +325,7 @@ and reentering it will cause these functions to be called again."
326 325
327;;;###autoload 326;;;###autoload
328(defcustom today-visible-calendar-hook nil 327(defcustom today-visible-calendar-hook nil
329 "*List of functions called whenever the current date is visible. 328 "List of functions called whenever the current date is visible.
330This can be used, for example, to replace today's date with asterisks; a 329This can be used, for example, to replace today's date with asterisks; a
331function `calendar-star-date' is included for this purpose: 330function `calendar-star-date' is included for this purpose:
332 (setq today-visible-calendar-hook 'calendar-star-date) 331 (setq today-visible-calendar-hook 'calendar-star-date)
@@ -346,7 +345,7 @@ functions that move by days and weeks."
346 345
347;;;###autoload 346;;;###autoload
348(defcustom today-invisible-calendar-hook nil 347(defcustom today-invisible-calendar-hook nil
349 "*List of functions called whenever the current date is not visible. 348 "List of functions called whenever the current date is not visible.
350 349
351The corresponding variable `today-visible-calendar-hook' is the list of 350The corresponding variable `today-visible-calendar-hook' is the list of
352functions called when the calendar function was called when the current 351functions called when the calendar function was called when the current
@@ -360,7 +359,7 @@ functions that move by days and weeks."
360 359
361;;;###autoload 360;;;###autoload
362(defcustom calendar-move-hook nil 361(defcustom calendar-move-hook nil
363 "*List of functions called whenever the cursor moves in the calendar. 362 "List of functions called whenever the cursor moves in the calendar.
364 363
365For example, 364For example,
366 365
@@ -372,7 +371,7 @@ redisplays the diary for whatever date the cursor is moved to."
372 371
373;;;###autoload 372;;;###autoload
374(defcustom diary-file "~/diary" 373(defcustom diary-file "~/diary"
375 "*Name of the file in which one's personal diary of dates is kept. 374 "Name of the file in which one's personal diary of dates is kept.
376 375
377The file's entries are lines beginning with any of the forms 376The file's entries are lines beginning with any of the forms
378specified by the variable `american-date-diary-pattern', by default: 377specified by the variable `american-date-diary-pattern', by default:
@@ -480,37 +479,37 @@ details, see the documentation for the variable `list-diary-entries-hook'."
480 479
481;;;###autoload 480;;;###autoload
482(defcustom diary-nonmarking-symbol "&" 481(defcustom diary-nonmarking-symbol "&"
483 "*Symbol indicating that a diary entry is not to be marked in the calendar." 482 "Symbol indicating that a diary entry is not to be marked in the calendar."
484 :type 'string 483 :type 'string
485 :group 'diary) 484 :group 'diary)
486 485
487;;;###autoload 486;;;###autoload
488(defcustom hebrew-diary-entry-symbol "H" 487(defcustom hebrew-diary-entry-symbol "H"
489 "*Symbol indicating a diary entry according to the Hebrew calendar." 488 "Symbol indicating a diary entry according to the Hebrew calendar."
490 :type 'string 489 :type 'string
491 :group 'diary) 490 :group 'diary)
492 491
493;;;###autoload 492;;;###autoload
494(defcustom islamic-diary-entry-symbol "I" 493(defcustom islamic-diary-entry-symbol "I"
495 "*Symbol indicating a diary entry according to the Islamic calendar." 494 "Symbol indicating a diary entry according to the Islamic calendar."
496 :type 'string 495 :type 'string
497 :group 'diary) 496 :group 'diary)
498 497
499;;;###autoload 498;;;###autoload
500(defcustom bahai-diary-entry-symbol "B" 499(defcustom bahai-diary-entry-symbol "B"
501 "*Symbol indicating a diary entry according to the Baha'i calendar." 500 "Symbol indicating a diary entry according to the Baha'i calendar."
502 :type 'string 501 :type 'string
503 :group 'diary) 502 :group 'diary)
504 503
505;;;###autoload 504;;;###autoload
506(defcustom diary-include-string "#include" 505(defcustom diary-include-string "#include"
507 "*The string indicating inclusion of another file of diary entries. 506 "The string indicating inclusion of another file of diary entries.
508See the documentation for the function `include-other-diary-files'." 507See the documentation for the function `include-other-diary-files'."
509 :type 'string 508 :type 'string
510 :group 'diary) 509 :group 'diary)
511 510
512(defcustom diary-glob-file-regexp-prefix "^\\#" 511(defcustom diary-glob-file-regexp-prefix "^\\#"
513 "*The regular expression that gets pre-pended to each of the attribute-regexp's for file-wide specifiers." 512 "The regular expression that gets pre-pended to each of the attribute-regexp's for file-wide specifiers."
514 :type 'regexp 513 :type 'regexp
515 :group 'diary) 514 :group 'diary)
516 515
@@ -531,7 +530,7 @@ See the documentation for the function `include-other-diary-files'."
531;;; (" *\\[box:\\([-a-z]+\\)\\]$" 1 :box) 530;;; (" *\\[box:\\([-a-z]+\\)\\]$" 1 :box)
532;;; (" *\\[stipple:\\([-a-z]+\\)\\]$" 1 :stipple) 531;;; (" *\\[stipple:\\([-a-z]+\\)\\]$" 1 :stipple)
533 ) 532 )
534 "*A list of (regexp regnum attr attrtype) lists where the 533 "A list of (regexp regnum attr attrtype) lists where the
535regexp says how to find the tag, the regnum says which 534regexp says how to find the tag, the regnum says which
536parenthetical sub-regexp this regexp looks for, and the attr says 535parenthetical sub-regexp this regexp looks for, and the attr says
537which attribute of the face (or that this _is_ a face) is being 536which attribute of the face (or that this _is_ a face) is being
@@ -546,14 +545,14 @@ modified."
546 545
547;;;###autoload 546;;;###autoload
548(defcustom sexp-diary-entry-symbol "%%" 547(defcustom sexp-diary-entry-symbol "%%"
549 "*The string used to indicate a sexp diary entry in `diary-file'. 548 "The string used to indicate a sexp diary entry in `diary-file'.
550See the documentation for the function `list-sexp-diary-entries'." 549See the documentation for the function `list-sexp-diary-entries'."
551 :type 'string 550 :type 'string
552 :group 'diary) 551 :group 'diary)
553 552
554;;;###autoload 553;;;###autoload
555(defcustom abbreviated-calendar-year t 554(defcustom abbreviated-calendar-year t
556 "*Interpret a two-digit year DD in a diary entry as either 19DD or 20DD. 555 "Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
557For the Gregorian calendar; similarly for the Hebrew, Islamic and 556For the Gregorian calendar; similarly for the Hebrew, Islamic and
558Baha'i calendars. If this variable is nil, years must be written in 557Baha'i calendars. If this variable is nil, years must be written in
559full." 558full."
@@ -562,7 +561,7 @@ full."
562 561
563;;;###autoload 562;;;###autoload
564(defcustom european-calendar-style nil 563(defcustom european-calendar-style nil
565 "*Use the European style of dates in the diary and in any displays. 564 "Use the European style of dates in the diary and in any displays.
566If this variable is t, a date 1/2/1990 would be interpreted as February 1, 565If this variable is t, a date 1/2/1990 would be interpreted as February 1,
5671990. The default European date styles (see `european-date-diary-pattern') 5661990. The default European date styles (see `european-date-diary-pattern')
568are 567are
@@ -589,7 +588,7 @@ are loaded. Otherwise, use one of the functions `european-calendar' or
589 (monthname " *" day "[^,0-9]") 588 (monthname " *" day "[^,0-9]")
590 (monthname " *" day ", *" year "[^0-9]") 589 (monthname " *" day ", *" year "[^0-9]")
591 (dayname "\\W")) 590 (dayname "\\W"))
592 "*List of pseudo-patterns describing the American patterns of date used. 591 "List of pseudo-patterns describing the American patterns of date used.
593See the documentation of `diary-date-forms' for an explanation." 592See the documentation of `diary-date-forms' for an explanation."
594 :type '(repeat (choice (cons :tag "Backup" 593 :type '(repeat (choice (cons :tag "Backup"
595 :value (backup . nil) 594 :value (backup . nil)
@@ -609,7 +608,7 @@ See the documentation of `diary-date-forms' for an explanation."
609 (backup day " *" monthname "\\W+\\<\\([^*0-9]\\|\\([0-9]+[:aApP]\\)\\)") 608 (backup day " *" monthname "\\W+\\<\\([^*0-9]\\|\\([0-9]+[:aApP]\\)\\)")
610 (day " *" monthname " *" year "[^0-9]") 609 (day " *" monthname " *" year "[^0-9]")
611 (dayname "\\W")) 610 (dayname "\\W"))
612 "*List of pseudo-patterns describing the European patterns of date used. 611 "List of pseudo-patterns describing the European patterns of date used.
613See the documentation of `diary-date-forms' for an explanation." 612See the documentation of `diary-date-forms' for an explanation."
614 :type '(repeat (choice (cons :tag "Backup" 613 :type '(repeat (choice (cons :tag "Backup"
615 :value (backup . nil) 614 :value (backup . nil)
@@ -626,7 +625,7 @@ See the documentation of `diary-date-forms' for an explanation."
626 (if european-calendar-style 625 (if european-calendar-style
627 european-date-diary-pattern 626 european-date-diary-pattern
628 american-date-diary-pattern) 627 american-date-diary-pattern)
629 "*List of pseudo-patterns describing the forms of date used in the diary. 628 "List of pseudo-patterns describing the forms of date used in the diary.
630The patterns on the list must be MUTUALLY EXCLUSIVE and should not match 629The patterns on the list must be MUTUALLY EXCLUSIVE and should not match
631any portion of the diary entry itself, just the date component. 630any portion of the diary entry itself, just the date component.
632 631
@@ -664,7 +663,7 @@ a portion of the first word of the diary entry."
664;;;###autoload 663;;;###autoload
665(defcustom european-calendar-display-form 664(defcustom european-calendar-display-form
666 '((if dayname (concat dayname ", ")) day " " monthname " " year) 665 '((if dayname (concat dayname ", ")) day " " monthname " " year)
667 "*Pseudo-pattern governing the way a date appears in the European style. 666 "Pseudo-pattern governing the way a date appears in the European style.
668See the documentation of `calendar-date-display-form' for an explanation." 667See the documentation of `calendar-date-display-form' for an explanation."
669 :type 'sexp 668 :type 'sexp
670 :group 'calendar) 669 :group 'calendar)
@@ -672,7 +671,7 @@ See the documentation of `calendar-date-display-form' for an explanation."
672;;;###autoload 671;;;###autoload
673(defcustom american-calendar-display-form 672(defcustom american-calendar-display-form
674 '((if dayname (concat dayname ", ")) monthname " " day ", " year) 673 '((if dayname (concat dayname ", ")) monthname " " day ", " year)
675 "*Pseudo-pattern governing the way a date appears in the American style. 674 "Pseudo-pattern governing the way a date appears in the American style.
676See the documentation of `calendar-date-display-form' for an explanation." 675See the documentation of `calendar-date-display-form' for an explanation."
677 :type 'sexp 676 :type 'sexp
678 :group 'calendar) 677 :group 'calendar)
@@ -681,7 +680,7 @@ See the documentation of `calendar-date-display-form' for an explanation."
681 (if european-calendar-style 680 (if european-calendar-style
682 european-calendar-display-form 681 european-calendar-display-form
683 american-calendar-display-form) 682 american-calendar-display-form)
684 "*Pseudo-pattern governing the way a date appears. 683 "Pseudo-pattern governing the way a date appears.
685 684
686Used by the function `calendar-date-string', a pseudo-pattern is a list of 685Used by the function `calendar-date-string', a pseudo-pattern is a list of
687expressions that can involve the keywords `month', `day', and `year', all 686expressions that can involve the keywords `month', `day', and `year', all
@@ -722,7 +721,7 @@ See the documentation of the function `calendar-date-string'."
722 721
723;;;###autoload 722;;;###autoload
724(defcustom print-diary-entries-hook 'lpr-buffer 723(defcustom print-diary-entries-hook 'lpr-buffer
725 "*List of functions called after a temporary diary buffer is prepared. 724 "List of functions called after a temporary diary buffer is prepared.
726The buffer shows only the diary entries currently visible in the diary 725The buffer shows only the diary entries currently visible in the diary
727buffer. The default just does the printing. Other uses might include, for 726buffer. The default just does the printing. Other uses might include, for
728example, rearranging the lines into order by day and time, saving the buffer 727example, rearranging the lines into order by day and time, saving the buffer
@@ -732,7 +731,7 @@ instead of deleting it, or changing the function used to do the printing."
732 731
733;;;###autoload 732;;;###autoload
734(defcustom list-diary-entries-hook nil 733(defcustom list-diary-entries-hook nil
735 "*List of functions called after diary file is culled for relevant entries. 734 "List of functions called after diary file is culled for relevant entries.
736It is to be used for diary entries that are not found in the diary file. 735It is to be used for diary entries that are not found in the diary file.
737 736
738A function `include-other-diary-files' is provided for use as the value of 737A function `include-other-diary-files' is provided for use as the value of
@@ -763,14 +762,14 @@ lexicographic order."
763 762
764;;;###autoload 763;;;###autoload
765(defcustom diary-hook nil 764(defcustom diary-hook nil
766 "*List of functions called after the display of the diary. 765 "List of functions called after the display of the diary.
767Can be used for appointment notification." 766Can be used for appointment notification."
768 :type 'hook 767 :type 'hook
769 :group 'diary) 768 :group 'diary)
770 769
771;;;###autoload 770;;;###autoload
772(defcustom diary-display-hook nil 771(defcustom diary-display-hook nil
773 "*List of functions that handle the display of the diary. 772 "List of functions that handle the display of the diary.
774If nil (the default), `simple-diary-display' is used. Use `ignore' for no 773If nil (the default), `simple-diary-display' is used. Use `ignore' for no
775diary display. 774diary display.
776 775
@@ -796,7 +795,7 @@ diary buffer, set the variable `diary-list-include-blanks' to t."
796 795
797;;;###autoload 796;;;###autoload
798(defcustom nongregorian-diary-listing-hook nil 797(defcustom nongregorian-diary-listing-hook nil
799 "*List of functions called for listing diary file and included files. 798 "List of functions called for listing diary file and included files.
800As the files are processed for diary entries, these functions are used 799As the files are processed for diary entries, these functions are used
801to cull relevant entries. You can use either or both of 800to cull relevant entries. You can use either or both of
802`list-hebrew-diary-entries', `list-islamic-diary-entries' and 801`list-hebrew-diary-entries', `list-islamic-diary-entries' and
@@ -810,7 +809,7 @@ describes the style of such diary entries."
810 809
811;;;###autoload 810;;;###autoload
812(defcustom mark-diary-entries-hook nil 811(defcustom mark-diary-entries-hook nil
813 "*List of functions called after marking diary entries in the calendar. 812 "List of functions called after marking diary entries in the calendar.
814 813
815A function `mark-included-diary-files' is also provided for use as the 814A function `mark-included-diary-files' is also provided for use as the
816`mark-diary-entries-hook'; it enables you to use shared diary files together 815`mark-diary-entries-hook'; it enables you to use shared diary files together
@@ -828,7 +827,7 @@ function `include-other-diary-files' as part of `list-diary-entries-hook'."
828 827
829;;;###autoload 828;;;###autoload
830(defcustom nongregorian-diary-marking-hook nil 829(defcustom nongregorian-diary-marking-hook nil
831 "*List of functions called for marking diary file and included files. 830 "List of functions called for marking diary file and included files.
832As the files are processed for diary entries, these functions are used 831As the files are processed for diary entries, these functions are used
833to cull relevant entries. You can use either or both of 832to cull relevant entries. You can use either or both of
834`mark-hebrew-diary-entries', `mark-islamic-diary-entries' and 833`mark-hebrew-diary-entries', `mark-islamic-diary-entries' and
@@ -842,7 +841,7 @@ describes the style of such diary entries."
842 841
843;;;###autoload 842;;;###autoload
844(defcustom diary-list-include-blanks nil 843(defcustom diary-list-include-blanks nil
845 "*If nil, do not include days with no diary entry in the list of diary entries. 844 "If nil, do not include days with no diary entry in the list of diary entries.
846Such days will then not be shown in the fancy diary buffer, even if they 845Such days will then not be shown in the fancy diary buffer, even if they
847are holidays." 846are holidays."
848 :type 'boolean 847 :type 'boolean
@@ -850,7 +849,7 @@ are holidays."
850 849
851;;;###autoload 850;;;###autoload
852(defcustom holidays-in-diary-buffer t 851(defcustom holidays-in-diary-buffer t
853 "*Non-nil means include holidays in the diary display. 852 "Non-nil means include holidays in the diary display.
854The holidays appear in the mode line of the diary buffer, or in the 853The holidays appear in the mode line of the diary buffer, or in the
855fancy diary buffer next to the date. This slows down the diary functions 854fancy diary buffer next to the date. This slows down the diary functions
856somewhat; setting it to nil makes the diary display faster." 855somewhat; setting it to nil makes the diary display faster."
@@ -880,7 +879,7 @@ somewhat; setting it to nil makes the diary display faster."
880 (holiday-fixed 10 31 "Halloween") 879 (holiday-fixed 10 31 "Halloween")
881 (holiday-fixed 11 11 "Veteran's Day") 880 (holiday-fixed 11 11 "Veteran's Day")
882 (holiday-float 11 4 4 "Thanksgiving")) 881 (holiday-float 11 4 4 "Thanksgiving"))
883 "*General holidays. Default value is for the United States. 882 "General holidays. Default value is for the United States.
884See the documentation for `calendar-holidays' for details." 883See the documentation for `calendar-holidays' for details."
885 :type 'sexp 884 :type 'sexp
886 :group 'holidays) 885 :group 'holidays)
@@ -891,7 +890,7 @@ See the documentation for `calendar-holidays' for details."
891(defcustom oriental-holidays 890(defcustom oriental-holidays
892 '((if (fboundp 'atan) 891 '((if (fboundp 'atan)
893 (holiday-chinese-new-year))) 892 (holiday-chinese-new-year)))
894 "*Oriental holidays. 893 "Oriental holidays.
895See the documentation for `calendar-holidays' for details." 894See the documentation for `calendar-holidays' for details."
896 :type 'sexp 895 :type 'sexp
897 :group 'holidays) 896 :group 'holidays)
@@ -900,7 +899,7 @@ See the documentation for `calendar-holidays' for details."
900(put 'local-holidays 'risky-local-variable t) 899(put 'local-holidays 'risky-local-variable t)
901;;;###autoload 900;;;###autoload
902(defcustom local-holidays nil 901(defcustom local-holidays nil
903 "*Local holidays. 902 "Local holidays.
904See the documentation for `calendar-holidays' for details." 903See the documentation for `calendar-holidays' for details."
905 :type 'sexp 904 :type 'sexp
906 :group 'holidays) 905 :group 'holidays)
@@ -909,7 +908,7 @@ See the documentation for `calendar-holidays' for details."
909(put 'other-holidays 'risky-local-variable t) 908(put 'other-holidays 'risky-local-variable t)
910;;;###autoload 909;;;###autoload
911(defcustom other-holidays nil 910(defcustom other-holidays nil
912 "*User defined holidays. 911 "User defined holidays.
913See the documentation for `calendar-holidays' for details." 912See the documentation for `calendar-holidays' for details."
914 :type 'sexp 913 :type 'sexp
915 :group 'holidays) 914 :group 'holidays)
@@ -1013,7 +1012,7 @@ See the documentation for `calendar-holidays' for details."
1013;;;###autoload 1012;;;###autoload
1014(defcustom hebrew-holidays (append hebrew-holidays-1 hebrew-holidays-2 1013(defcustom hebrew-holidays (append hebrew-holidays-1 hebrew-holidays-2
1015 hebrew-holidays-3 hebrew-holidays-4) 1014 hebrew-holidays-3 hebrew-holidays-4)
1016 "*Jewish holidays. 1015 "Jewish holidays.
1017See the documentation for `calendar-holidays' for details." 1016See the documentation for `calendar-holidays' for details."
1018 :type 'sexp 1017 :type 'sexp
1019 :group 'holidays) 1018 :group 'holidays)
@@ -1064,7 +1063,7 @@ See the documentation for `calendar-holidays' for details."
1064 (holiday-fixed 12 25 "Christmas") 1063 (holiday-fixed 12 25 "Christmas")
1065 (if all-christian-calendar-holidays 1064 (if all-christian-calendar-holidays
1066 (holiday-julian 12 25 "Eastern Orthodox Christmas"))) 1065 (holiday-julian 12 25 "Eastern Orthodox Christmas")))
1067 "*Christian holidays. 1066 "Christian holidays.
1068See the documentation for `calendar-holidays' for details." 1067See the documentation for `calendar-holidays' for details."
1069 :type 'sexp 1068 :type 'sexp
1070 :group 'holidays) 1069 :group 'holidays)
@@ -1099,7 +1098,7 @@ See the documentation for `calendar-holidays' for details."
1099 (holiday-islamic 10 1 "Id-al-Fitr")) 1098 (holiday-islamic 10 1 "Id-al-Fitr"))
1100 (if all-islamic-calendar-holidays 1099 (if all-islamic-calendar-holidays
1101 (holiday-islamic 12 10 "Id-al-Adha"))) 1100 (holiday-islamic 12 10 "Id-al-Adha")))
1102 "*Islamic holidays. 1101 "Islamic holidays.
1103See the documentation for `calendar-holidays' for details." 1102See the documentation for `calendar-holidays' for details."
1104 :type 'sexp 1103 :type 'sexp
1105 :group 'holidays) 1104 :group 'holidays)
@@ -1141,7 +1140,7 @@ See the documentation for `calendar-holidays' for details."
1141 (holiday-fixed 11 26 "Day of the Covenant")) 1140 (holiday-fixed 11 26 "Day of the Covenant"))
1142 (if all-bahai-calendar-holidays 1141 (if all-bahai-calendar-holidays
1143 (holiday-fixed 11 28 "Ascension of `Abdu'l-Baha"))) 1142 (holiday-fixed 11 28 "Ascension of `Abdu'l-Baha")))
1144 "*Baha'i holidays. 1143 "Baha'i holidays.
1145See the documentation for `calendar-holidays' for details." 1144See the documentation for `calendar-holidays' for details."
1146 :type 'sexp 1145 :type 'sexp
1147 :group 'holidays) 1146 :group 'holidays)
@@ -1173,7 +1172,7 @@ See the documentation for `calendar-holidays' for details."
1173 (/ calendar-daylight-savings-ends-time (float 60)) 1172 (/ calendar-daylight-savings-ends-time (float 60))
1174 calendar-daylight-time-zone-name) 1173 calendar-daylight-time-zone-name)
1175 "")))) 1174 ""))))
1176 "*Sun-related holidays. 1175 "Sun-related holidays.
1177See the documentation for `calendar-holidays' for details." 1176See the documentation for `calendar-holidays' for details."
1178 :type 'sexp 1177 :type 'sexp
1179 :group 'holidays) 1178 :group 'holidays)
@@ -1184,7 +1183,7 @@ See the documentation for `calendar-holidays' for details."
1184 (append general-holidays local-holidays other-holidays 1183 (append general-holidays local-holidays other-holidays
1185 christian-holidays hebrew-holidays islamic-holidays 1184 christian-holidays hebrew-holidays islamic-holidays
1186 bahai-holidays oriental-holidays solar-holidays) 1185 bahai-holidays oriental-holidays solar-holidays)
1187 "*List of notable days for the command \\[holidays]. 1186 "List of notable days for the command \\[holidays].
1188 1187
1189Additional holidays are easy to add to the list, just put them in the 1188Additional holidays are easy to add to the list, just put them in the
1190list `other-holidays' in your .emacs file. Similarly, by setting any 1189list `other-holidays' in your .emacs file. Similarly, by setting any
@@ -1304,6 +1303,15 @@ A negative YR is interpreted as BC; -1 being 1 BC, and so on."
1304 (and (< macro-y 0) (> ,mon 1) (setq ,yr (1- ,yr))) 1303 (and (< macro-y 0) (> ,mon 1) (setq ,yr (1- ,yr)))
1305 (if (< ,yr 1) (setq ,yr (1- ,yr))))) ; 0 AD -> -1 BC, etc 1304 (if (< ,yr 1) (setq ,yr (1- ,yr))))) ; 0 AD -> -1 BC, etc
1306 1305
1306(defun calendar-increment-month (n &optional mon yr)
1307 "Return the Nth month after MON/YR.
1308The return value is a pair (MONTH . YEAR).
1309MON defaults to `displayed-month'. YR defaults to `displayed-year'."
1310 (unless mon (setq mon displayed-month))
1311 (unless yr (setq mon displayed-year))
1312 (increment-calendar-month mon yr n)
1313 (cons mon yr))
1314
1307(defmacro calendar-for-loop (var from init to final do &rest body) 1315(defmacro calendar-for-loop (var from init to final do &rest body)
1308 "Execute a for loop." 1316 "Execute a for loop."
1309 (declare (debug (symbolp "from" form "to" form "do" body))) 1317 (declare (debug (symbolp "from" form "to" form "do" body)))
@@ -1313,6 +1321,7 @@ A negative YR is interpreted as BC; -1 being 1 BC, and so on."
1313 1321
1314(defmacro calendar-sum (index initial condition expression) 1322(defmacro calendar-sum (index initial condition expression)
1315 "For INDEX = INITIAL et seq, as long as CONDITION holds, sum EXPRESSION." 1323 "For INDEX = INITIAL et seq, as long as CONDITION holds, sum EXPRESSION."
1324 (declare (debug (symbolp form form form)))
1316 `(let ((,index ,initial) 1325 `(let ((,index ,initial)
1317 (sum 0)) 1326 (sum 0))
1318 (while ,condition 1327 (while ,condition
@@ -2140,7 +2149,7 @@ the inserted text. Value is always t."
2140 2149
2141;;;###autoload 2150;;;###autoload
2142(defcustom calendar-week-start-day 0 2151(defcustom calendar-week-start-day 0
2143 "*The day of the week on which a week in the calendar begins. 2152 "The day of the week on which a week in the calendar begins.
21440 means Sunday (default), 1 means Monday, and so on. 21530 means Sunday (default), 1 means Monday, and so on.
2145 2154
2146If you change this variable directly (without using customize) 2155If you change this variable directly (without using customize)
@@ -2148,160 +2157,159 @@ after starting `calendar', you should call `redraw-calendar' to
2148update the calendar display to reflect the change, otherwise 2157update the calendar display to reflect the change, otherwise
2149movement commands will not work correctly." 2158movement commands will not work correctly."
2150 :type 'integer 2159 :type 'integer
2160 ;; Change the initialize so that if you reload calendar.el, it will not
2161 ;; cause a redraw (which may fail, e.g. with "invalid byte-code in
2162 ;; calendar.elc" because of the "byte-compile-dynamic").
2163 :initialize 'custom-initialize-default
2151 :set (lambda (sym val) 2164 :set (lambda (sym val)
2152 (set sym val) 2165 (set sym val)
2153 (redraw-calendar)) 2166 (redraw-calendar))
2154 :group 'calendar) 2167 :group 'calendar)
2155 2168
2156(defcustom calendar-debug-sexp nil 2169(defcustom calendar-debug-sexp nil
2157 "*Turn debugging on when evaluating a sexp in the diary or holiday list." 2170 "Turn debugging on when evaluating a sexp in the diary or holiday list."
2158 :type 'boolean 2171 :type 'boolean
2159 :group 'calendar) 2172 :group 'calendar)
2160 2173
2161(defvar calendar-mode-map nil) 2174(defvar calendar-mode-map nil)
2162(if calendar-mode-map 2175(if calendar-mode-map
2163 nil 2176 nil
2164 (setq calendar-mode-map (make-sparse-keymap)) 2177 (let ((map (make-keymap)))
2165 (require 'cal-menu) 2178 (suppress-keymap map)
2166 (calendar-for-loop i from 0 to 9 do 2179 (dolist (c '(narrow-to-region mark-word mark-sexp mark-paragraph
2167 (define-key calendar-mode-map (int-to-string i) 'digit-argument)) 2180 mark-defun mark-whole-buffer mark-page
2168 (let ((l (list 'narrow-to-region 'mark-word 'mark-sexp 'mark-paragraph 2181 downcase-region upcase-region kill-region
2169 'mark-defun 'mark-whole-buffer 'mark-page 2182 copy-region-as-kill capitalize-region write-region))
2170 'downcase-region 'upcase-region 'kill-region 2183 (define-key map (vector 'remap c) 'calendar-not-implemented))
2171 'copy-region-as-kill 'capitalize-region 'write-region))) 2184 (define-key map ">" 'scroll-calendar-right)
2172 (while l 2185 (define-key map "\C-x>" 'scroll-calendar-right)
2173 (substitute-key-definition (car l) 'calendar-not-implemented 2186 (define-key map [prior] 'scroll-calendar-right-three-months)
2174 calendar-mode-map global-map) 2187 (define-key map "\ev" 'scroll-calendar-right-three-months)
2175 (setq l (cdr l)))) 2188 (define-key map "<" 'scroll-calendar-left)
2176 (define-key calendar-mode-map "-" 'negative-argument) 2189 (define-key map "\C-x<" 'scroll-calendar-left)
2177 (define-key calendar-mode-map ">" 'scroll-calendar-right) 2190 (define-key map [next] 'scroll-calendar-left-three-months)
2178 (define-key calendar-mode-map "\C-x>" 'scroll-calendar-right) 2191 (define-key map "\C-v" 'scroll-calendar-left-three-months)
2179 (define-key calendar-mode-map [prior] 'scroll-calendar-right-three-months) 2192 (define-key map "\C-b" 'calendar-backward-day)
2180 (define-key calendar-mode-map "\ev" 'scroll-calendar-right-three-months) 2193 (define-key map "\C-p" 'calendar-backward-week)
2181 (define-key calendar-mode-map "<" 'scroll-calendar-left) 2194 (define-key map "\e{" 'calendar-backward-month)
2182 (define-key calendar-mode-map "\C-x<" 'scroll-calendar-left) 2195 (define-key map "\C-x[" 'calendar-backward-year)
2183 (define-key calendar-mode-map [next] 'scroll-calendar-left-three-months) 2196 (define-key map "\C-f" 'calendar-forward-day)
2184 (define-key calendar-mode-map "\C-v" 'scroll-calendar-left-three-months) 2197 (define-key map "\C-n" 'calendar-forward-week)
2185 (define-key calendar-mode-map "\C-b" 'calendar-backward-day) 2198 (define-key map [left] 'calendar-backward-day)
2186 (define-key calendar-mode-map "\C-p" 'calendar-backward-week) 2199 (define-key map [up] 'calendar-backward-week)
2187 (define-key calendar-mode-map "\e{" 'calendar-backward-month) 2200 (define-key map [right] 'calendar-forward-day)
2188 (define-key calendar-mode-map "\C-x[" 'calendar-backward-year) 2201 (define-key map [down] 'calendar-forward-week)
2189 (define-key calendar-mode-map "\C-f" 'calendar-forward-day) 2202 (define-key map "\e}" 'calendar-forward-month)
2190 (define-key calendar-mode-map "\C-n" 'calendar-forward-week) 2203 (define-key map "\C-x]" 'calendar-forward-year)
2191 (define-key calendar-mode-map [left] 'calendar-backward-day) 2204 (define-key map "\C-a" 'calendar-beginning-of-week)
2192 (define-key calendar-mode-map [up] 'calendar-backward-week) 2205 (define-key map "\C-e" 'calendar-end-of-week)
2193 (define-key calendar-mode-map [right] 'calendar-forward-day) 2206 (define-key map "\ea" 'calendar-beginning-of-month)
2194 (define-key calendar-mode-map [down] 'calendar-forward-week) 2207 (define-key map "\ee" 'calendar-end-of-month)
2195 (define-key calendar-mode-map "\e}" 'calendar-forward-month) 2208 (define-key map "\e<" 'calendar-beginning-of-year)
2196 (define-key calendar-mode-map "\C-x]" 'calendar-forward-year) 2209 (define-key map "\e>" 'calendar-end-of-year)
2197 (define-key calendar-mode-map "\C-a" 'calendar-beginning-of-week) 2210 (define-key map "\C-@" 'calendar-set-mark)
2198 (define-key calendar-mode-map "\C-e" 'calendar-end-of-week) 2211 ;; Many people are used to typing C-SPC and getting C-@.
2199 (define-key calendar-mode-map "\ea" 'calendar-beginning-of-month) 2212 (define-key map [?\C- ] 'calendar-set-mark)
2200 (define-key calendar-mode-map "\ee" 'calendar-end-of-month) 2213 (define-key map "\C-x\C-x" 'calendar-exchange-point-and-mark)
2201 (define-key calendar-mode-map "\e<" 'calendar-beginning-of-year) 2214 (define-key map "\e=" 'calendar-count-days-region)
2202 (define-key calendar-mode-map "\e>" 'calendar-end-of-year) 2215 (define-key map "gd" 'calendar-goto-date)
2203 (define-key calendar-mode-map "\C-@" 'calendar-set-mark) 2216 (define-key map "gD" 'calendar-goto-day-of-year)
2204 ;; Many people are used to typing C-SPC and getting C-@. 2217 (define-key map "gj" 'calendar-goto-julian-date)
2205 (define-key calendar-mode-map [?\C- ] 'calendar-set-mark) 2218 (define-key map "ga" 'calendar-goto-astro-day-number)
2206 (define-key calendar-mode-map "\C-x\C-x" 'calendar-exchange-point-and-mark) 2219 (define-key map "gh" 'calendar-goto-hebrew-date)
2207 (define-key calendar-mode-map "\e=" 'calendar-count-days-region) 2220 (define-key map "gi" 'calendar-goto-islamic-date)
2208 (define-key calendar-mode-map "gd" 'calendar-goto-date) 2221 (define-key map "gb" 'calendar-goto-bahai-date)
2209 (define-key calendar-mode-map "gD" 'calendar-goto-day-of-year) 2222 (define-key map "gC" 'calendar-goto-chinese-date)
2210 (define-key calendar-mode-map "gj" 'calendar-goto-julian-date) 2223 (define-key map "gk" 'calendar-goto-coptic-date)
2211 (define-key calendar-mode-map "ga" 'calendar-goto-astro-day-number) 2224 (define-key map "ge" 'calendar-goto-ethiopic-date)
2212 (define-key calendar-mode-map "gh" 'calendar-goto-hebrew-date) 2225 (define-key map "gp" 'calendar-goto-persian-date)
2213 (define-key calendar-mode-map "gi" 'calendar-goto-islamic-date) 2226 (define-key map "gc" 'calendar-goto-iso-date)
2214 (define-key calendar-mode-map "gb" 'calendar-goto-bahai-date) 2227 (define-key map "gw" 'calendar-goto-iso-week)
2215 (define-key calendar-mode-map "gC" 'calendar-goto-chinese-date) 2228 (define-key map "gf" 'calendar-goto-french-date)
2216 (define-key calendar-mode-map "gk" 'calendar-goto-coptic-date) 2229 (define-key map "gml" 'calendar-goto-mayan-long-count-date)
2217 (define-key calendar-mode-map "ge" 'calendar-goto-ethiopic-date) 2230 (define-key map "gmpc" 'calendar-previous-calendar-round-date)
2218 (define-key calendar-mode-map "gp" 'calendar-goto-persian-date) 2231 (define-key map "gmnc" 'calendar-next-calendar-round-date)
2219 (define-key calendar-mode-map "gc" 'calendar-goto-iso-date) 2232 (define-key map "gmph" 'calendar-previous-haab-date)
2220 (define-key calendar-mode-map "gw" 'calendar-goto-iso-week) 2233 (define-key map "gmnh" 'calendar-next-haab-date)
2221 (define-key calendar-mode-map "gf" 'calendar-goto-french-date) 2234 (define-key map "gmpt" 'calendar-previous-tzolkin-date)
2222 (define-key calendar-mode-map "gml" 'calendar-goto-mayan-long-count-date) 2235 (define-key map "gmnt" 'calendar-next-tzolkin-date)
2223 (define-key calendar-mode-map "gmpc" 'calendar-previous-calendar-round-date) 2236 (define-key map "Aa" 'appt-add)
2224 (define-key calendar-mode-map "gmnc" 'calendar-next-calendar-round-date) 2237 (define-key map "Ad" 'appt-delete)
2225 (define-key calendar-mode-map "gmph" 'calendar-previous-haab-date) 2238 (define-key map "S" 'calendar-sunrise-sunset)
2226 (define-key calendar-mode-map "gmnh" 'calendar-next-haab-date) 2239 (define-key map "M" 'calendar-phases-of-moon)
2227 (define-key calendar-mode-map "gmpt" 'calendar-previous-tzolkin-date) 2240 (define-key map " " 'scroll-other-window)
2228 (define-key calendar-mode-map "gmnt" 'calendar-next-tzolkin-date) 2241 (define-key map (kbd "DEL") 'scroll-other-window-down)
2229 (define-key calendar-mode-map "Aa" 'appt-add) 2242 (define-key map "\C-c\C-l" 'redraw-calendar)
2230 (define-key calendar-mode-map "Ad" 'appt-delete) 2243 (define-key map "." 'calendar-goto-today)
2231 (define-key calendar-mode-map "S" 'calendar-sunrise-sunset) 2244 (define-key map "o" 'calendar-other-month)
2232 (define-key calendar-mode-map "M" 'calendar-phases-of-moon) 2245 (define-key map "q" 'exit-calendar)
2233 (define-key calendar-mode-map " " 'scroll-other-window) 2246 (define-key map "a" 'list-calendar-holidays)
2234 (define-key calendar-mode-map (kbd "DEL") 'scroll-other-window-down) 2247 (define-key map "h" 'calendar-cursor-holidays)
2235 (define-key calendar-mode-map "\C-c\C-l" 'redraw-calendar) 2248 (define-key map "x" 'mark-calendar-holidays)
2236 (define-key calendar-mode-map "." 'calendar-goto-today) 2249 (define-key map "u" 'calendar-unmark)
2237 (define-key calendar-mode-map "o" 'calendar-other-month) 2250 (define-key map "m" 'mark-diary-entries)
2238 (define-key calendar-mode-map "q" 'exit-calendar) 2251 (define-key map "d" 'diary-view-entries)
2239 (define-key calendar-mode-map "a" 'list-calendar-holidays) 2252 (define-key map "D" 'view-other-diary-entries)
2240 (define-key calendar-mode-map "h" 'calendar-cursor-holidays) 2253 (define-key map "s" 'show-all-diary-entries)
2241 (define-key calendar-mode-map "x" 'mark-calendar-holidays) 2254 (define-key map "pd" 'calendar-print-day-of-year)
2242 (define-key calendar-mode-map "u" 'calendar-unmark) 2255 (define-key map "pC" 'calendar-print-chinese-date)
2243 (define-key calendar-mode-map "m" 'mark-diary-entries) 2256 (define-key map "pk" 'calendar-print-coptic-date)
2244 (define-key calendar-mode-map "d" 'diary-view-entries) 2257 (define-key map "pe" 'calendar-print-ethiopic-date)
2245 (define-key calendar-mode-map "D" 'view-other-diary-entries) 2258 (define-key map "pp" 'calendar-print-persian-date)
2246 (define-key calendar-mode-map "s" 'show-all-diary-entries) 2259 (define-key map "pc" 'calendar-print-iso-date)
2247 (define-key calendar-mode-map "pd" 'calendar-print-day-of-year) 2260 (define-key map "pj" 'calendar-print-julian-date)
2248 (define-key calendar-mode-map "pC" 'calendar-print-chinese-date) 2261 (define-key map "pa" 'calendar-print-astro-day-number)
2249 (define-key calendar-mode-map "pk" 'calendar-print-coptic-date) 2262 (define-key map "ph" 'calendar-print-hebrew-date)
2250 (define-key calendar-mode-map "pe" 'calendar-print-ethiopic-date) 2263 (define-key map "pi" 'calendar-print-islamic-date)
2251 (define-key calendar-mode-map "pp" 'calendar-print-persian-date) 2264 (define-key map "pb" 'calendar-print-bahai-date)
2252 (define-key calendar-mode-map "pc" 'calendar-print-iso-date) 2265 (define-key map "pf" 'calendar-print-french-date)
2253 (define-key calendar-mode-map "pj" 'calendar-print-julian-date) 2266 (define-key map "pm" 'calendar-print-mayan-date)
2254 (define-key calendar-mode-map "pa" 'calendar-print-astro-day-number) 2267 (define-key map "po" 'calendar-print-other-dates)
2255 (define-key calendar-mode-map "ph" 'calendar-print-hebrew-date) 2268 (define-key map "id" 'insert-diary-entry)
2256 (define-key calendar-mode-map "pi" 'calendar-print-islamic-date) 2269 (define-key map "iw" 'insert-weekly-diary-entry)
2257 (define-key calendar-mode-map "pb" 'calendar-print-bahai-date) 2270 (define-key map "im" 'insert-monthly-diary-entry)
2258 (define-key calendar-mode-map "pf" 'calendar-print-french-date) 2271 (define-key map "iy" 'insert-yearly-diary-entry)
2259 (define-key calendar-mode-map "pm" 'calendar-print-mayan-date) 2272 (define-key map "ia" 'insert-anniversary-diary-entry)
2260 (define-key calendar-mode-map "po" 'calendar-print-other-dates) 2273 (define-key map "ib" 'insert-block-diary-entry)
2261 (define-key calendar-mode-map "id" 'insert-diary-entry) 2274 (define-key map "ic" 'insert-cyclic-diary-entry)
2262 (define-key calendar-mode-map "iw" 'insert-weekly-diary-entry) 2275 (define-key map "ihd" 'insert-hebrew-diary-entry)
2263 (define-key calendar-mode-map "im" 'insert-monthly-diary-entry) 2276 (define-key map "ihm" 'insert-monthly-hebrew-diary-entry)
2264 (define-key calendar-mode-map "iy" 'insert-yearly-diary-entry) 2277 (define-key map "ihy" 'insert-yearly-hebrew-diary-entry)
2265 (define-key calendar-mode-map "ia" 'insert-anniversary-diary-entry) 2278 (define-key map "iid" 'insert-islamic-diary-entry)
2266 (define-key calendar-mode-map "ib" 'insert-block-diary-entry) 2279 (define-key map "iim" 'insert-monthly-islamic-diary-entry)
2267 (define-key calendar-mode-map "ic" 'insert-cyclic-diary-entry) 2280 (define-key map "iiy" 'insert-yearly-islamic-diary-entry)
2268 (define-key calendar-mode-map "ihd" 'insert-hebrew-diary-entry) 2281 (define-key map "iBd" 'insert-bahai-diary-entry)
2269 (define-key calendar-mode-map "ihm" 'insert-monthly-hebrew-diary-entry) 2282 (define-key map "iBm" 'insert-monthly-bahai-diary-entry)
2270 (define-key calendar-mode-map "ihy" 'insert-yearly-hebrew-diary-entry) 2283 (define-key map "iBy" 'insert-yearly-bahai-diary-entry)
2271 (define-key calendar-mode-map "iid" 'insert-islamic-diary-entry) 2284 (define-key map "?" 'calendar-goto-info-node)
2272 (define-key calendar-mode-map "iim" 'insert-monthly-islamic-diary-entry) 2285 (define-key map "tm" 'cal-tex-cursor-month)
2273 (define-key calendar-mode-map "iiy" 'insert-yearly-islamic-diary-entry) 2286 (define-key map "tM" 'cal-tex-cursor-month-landscape)
2274 (define-key calendar-mode-map "iBd" 'insert-bahai-diary-entry) 2287 (define-key map "td" 'cal-tex-cursor-day)
2275 (define-key calendar-mode-map "iBm" 'insert-monthly-bahai-diary-entry) 2288 (define-key map "tw1" 'cal-tex-cursor-week)
2276 (define-key calendar-mode-map "iBy" 'insert-yearly-bahai-diary-entry) 2289 (define-key map "tw2" 'cal-tex-cursor-week2)
2277 (define-key calendar-mode-map "?" 'calendar-goto-info-node) 2290 (define-key map "tw3" 'cal-tex-cursor-week-iso)
2278 (define-key calendar-mode-map "tm" 'cal-tex-cursor-month) 2291 (define-key map "tw4" 'cal-tex-cursor-week-monday)
2279 (define-key calendar-mode-map "tM" 'cal-tex-cursor-month-landscape) 2292 (define-key map "tfd" 'cal-tex-cursor-filofax-daily)
2280 (define-key calendar-mode-map "td" 'cal-tex-cursor-day) 2293 (define-key map "tfw" 'cal-tex-cursor-filofax-2week)
2281 (define-key calendar-mode-map "tw1" 'cal-tex-cursor-week) 2294 (define-key map "tfW" 'cal-tex-cursor-filofax-week)
2282 (define-key calendar-mode-map "tw2" 'cal-tex-cursor-week2) 2295 (define-key map "tfy" 'cal-tex-cursor-filofax-year)
2283 (define-key calendar-mode-map "tw3" 'cal-tex-cursor-week-iso) 2296 (define-key map "ty" 'cal-tex-cursor-year)
2284 (define-key calendar-mode-map "tw4" 'cal-tex-cursor-week-monday) 2297 (define-key map "tY" 'cal-tex-cursor-year-landscape)
2285 (define-key calendar-mode-map "tfd" 'cal-tex-cursor-filofax-daily) 2298 (setq calendar-mode-map map)
2286 (define-key calendar-mode-map "tfw" 'cal-tex-cursor-filofax-2week) 2299 ;; Require cal-menu after initializing calendar-mode-map because it uses it.
2287 (define-key calendar-mode-map "tfW" 'cal-tex-cursor-filofax-week) 2300 (require 'cal-menu)))
2288 (define-key calendar-mode-map "tfy" 'cal-tex-cursor-filofax-year)
2289 (define-key calendar-mode-map "ty" 'cal-tex-cursor-year)
2290 (define-key calendar-mode-map "tY" 'cal-tex-cursor-year-landscape))
2291 2301
2292(defun describe-calendar-mode () 2302(defun describe-calendar-mode ()
2293 "Create a help buffer with a brief description of the `calendar-mode'." 2303 "Create a help buffer with a brief description of the `calendar-mode'."
2294 (interactive) 2304 (interactive)
2295 (with-output-to-temp-buffer "*Help*" 2305 (help-setup-xref (list #'describe-calendar-mode) (interactive-p))
2306 (with-output-to-temp-buffer (help-buffer)
2296 (princ 2307 (princ
2297 (format 2308 (format
2298 "Calendar Mode:\nFor a complete description, type %s\n%s\n" 2309 "Calendar Mode:\nFor a complete description, type %s\n%s\n"
2299 (substitute-command-keys 2310 (substitute-command-keys
2300 "\\<calendar-mode-map>\\[describe-mode] from within the calendar") 2311 "\\<calendar-mode-map>\\[describe-mode] from within the calendar")
2301 (substitute-command-keys "\\{calendar-mode-map}"))) 2312 (substitute-command-keys "\\{calendar-mode-map}")))
2302 (save-excursion
2303 (set-buffer standard-output)
2304 (help-mode))
2305 (print-help-return-message))) 2313 (print-help-return-message)))
2306 2314
2307;; Calendar mode is suitable only for specially formatted data. 2315;; Calendar mode is suitable only for specially formatted data.
@@ -2451,12 +2459,11 @@ the STRINGS are just concatenated and the result truncated."
2451 (s (car strings)) 2459 (s (car strings))
2452 (strings (cdr strings)) 2460 (strings (cdr strings))
2453 (i 0)) 2461 (i 0))
2454 (while strings 2462 (dolist (string strings)
2455 (setq s (concat s 2463 (setq s (concat s
2456 (make-string (max 0 (/ (+ n i) m)) char) 2464 (make-string (max 0 (/ (+ n i) m)) char)
2457 (car strings))) 2465 string))
2458 (setq i (1+ i)) 2466 (setq i (1+ i)))
2459 (setq strings (cdr strings)))
2460 (substring s 0 length))) 2467 (substring s 0 length)))
2461 2468
2462(defun update-calendar-mode-line () 2469(defun update-calendar-mode-line ()
@@ -2478,7 +2485,7 @@ the STRINGS are just concatenated and the result truncated."
2478 list) 2485 list)
2479 (walk-windows (lambda (w) 2486 (walk-windows (lambda (w)
2480 (if (memq (window-buffer w) calendar-buffers) 2487 (if (memq (window-buffer w) calendar-buffers)
2481 (setq list (cons w list)))) 2488 (push w list)))
2482 nil t) 2489 nil t)
2483 list)) 2490 list))
2484 2491
@@ -2488,15 +2495,12 @@ the STRINGS are just concatenated and the result truncated."
2488 (buffers (list "*Yahrzeits*" lunar-phases-buffer holiday-buffer 2495 (buffers (list "*Yahrzeits*" lunar-phases-buffer holiday-buffer
2489 fancy-diary-buffer diary-buffer calendar-buffer 2496 fancy-diary-buffer diary-buffer calendar-buffer
2490 other-calendars-buffer)) 2497 other-calendars-buffer))
2491 (buffer-list nil) 2498 (buffer-list nil))
2492 b) 2499 (dolist (b buffers)
2493 (while buffers
2494 (setq b (car buffers))
2495 (setq b (cond ((stringp b) (get-buffer b)) 2500 (setq b (cond ((stringp b) (get-buffer b))
2496 ((bufferp b) b) 2501 ((bufferp b) b)
2497 (t nil))) 2502 (t nil)))
2498 (if b (setq buffer-list (cons b buffer-list))) 2503 (if b (push b buffer-list)))
2499 (setq buffers (cdr buffers)))
2500 buffer-list)) 2504 buffer-list))
2501 2505
2502(defun exit-calendar () 2506(defun exit-calendar ()
@@ -2642,7 +2646,7 @@ With argument, jump to mark, pop it, and put point at end of ring."
2642 (let ((date (calendar-cursor-to-date t))) 2646 (let ((date (calendar-cursor-to-date t)))
2643 (if (null arg) 2647 (if (null arg)
2644 (progn 2648 (progn
2645 (setq calendar-mark-ring (cons date calendar-mark-ring)) 2649 (push date calendar-mark-ring)
2646 ;; Since the top of the mark ring is the marked date in the 2650 ;; Since the top of the mark ring is the marked date in the
2647 ;; calendar, the mark ring in the calendar is one longer than 2651 ;; calendar, the mark ring in the calendar is one longer than
2648 ;; in other buffers to get the same effect. 2652 ;; in other buffers to get the same effect.
@@ -2949,16 +2953,18 @@ MARK defaults to `diary-entry-marker'."
2949 "Replace the date under the cursor in the calendar window with asterisks. 2953 "Replace the date under the cursor in the calendar window with asterisks.
2950This function can be used with the `today-visible-calendar-hook' run after the 2954This function can be used with the `today-visible-calendar-hook' run after the
2951calendar window has been prepared." 2955calendar window has been prepared."
2952 (let ((inhibit-read-only t)) 2956 (let ((inhibit-read-only t)
2953 (make-local-variable 'calendar-starred-day) 2957 (modified (buffer-modified-p)))
2954 (forward-char 1) 2958 (forward-char 1)
2955 (setq calendar-starred-day 2959 (set (make-local-variable 'calendar-starred-day)
2956 (string-to-number 2960 (string-to-number
2957 (buffer-substring (point) (- (point) 2)))) 2961 (buffer-substring (point) (- (point) 2))))
2958 (delete-char -2) 2962 ;; Insert before deleting, to better preserve markers.
2959 (insert "**") 2963 (insert "**")
2960 (backward-char 1) 2964 (forward-char -2)
2961 (set-buffer-modified-p nil))) 2965 (delete-char -2)
2966 (forward-char 1)
2967 (restore-buffer-modified-p modified)))
2962 2968
2963(defun calendar-mark-today () 2969(defun calendar-mark-today ()
2964 "Mark the date under the cursor in the calendar window. 2970 "Mark the date under the cursor in the calendar window.
@@ -3048,48 +3054,48 @@ Defaults to today's date if DATE is not given."
3048 (interactive) 3054 (interactive)
3049 (let* ((date (calendar-cursor-to-date t))) 3055 (let* ((date (calendar-cursor-to-date t)))
3050 (with-current-buffer (get-buffer-create other-calendars-buffer) 3056 (with-current-buffer (get-buffer-create other-calendars-buffer)
3051 (setq buffer-read-only nil) 3057 (let ((inhibit-read-only t)
3052 (calendar-set-mode-line 3058 (modified (buffer-modified-p)))
3053 (concat (calendar-date-string date) " (Gregorian)")) 3059 (calendar-set-mode-line
3054 (erase-buffer) 3060 (concat (calendar-date-string date) " (Gregorian)"))
3055 (insert 3061 (erase-buffer)
3056 (mapconcat 'identity 3062 (apply
3057 (list (calendar-day-of-year-string date) 3063 'insert
3058 (format "ISO date: %s" (calendar-iso-date-string date)) 3064 (delq nil
3059 (format "Julian date: %s" 3065 (list
3060 (calendar-julian-date-string date)) 3066 (calendar-day-of-year-string date) "\n"
3061 (format 3067 (format "ISO date: %s\n" (calendar-iso-date-string date))
3062 "Astronomical (Julian) day number (at noon UTC): %s.0" 3068 (format "Julian date: %s\n"
3063 (calendar-astro-date-string date)) 3069 (calendar-julian-date-string date))
3064 (format "Fixed (RD) date: %s" 3070 (format "Astronomical (Julian) day number (at noon UTC): %s.0\n"
3065 (calendar-absolute-from-gregorian date)) 3071 (calendar-astro-date-string date))
3066 (format "Hebrew date (before sunset): %s" 3072 (format "Fixed (RD) date: %s\n"
3067 (calendar-hebrew-date-string date)) 3073 (calendar-absolute-from-gregorian date))
3068 (format "Persian date: %s" 3074 (format "Hebrew date (before sunset): %s\n"
3069 (calendar-persian-date-string date)) 3075 (calendar-hebrew-date-string date))
3070 (let ((i (calendar-islamic-date-string date))) 3076 (format "Persian date: %s\n"
3071 (if (not (string-equal i "")) 3077 (calendar-persian-date-string date))
3072 (format "Islamic date (before sunset): %s" i))) 3078 (let ((i (calendar-islamic-date-string date)))
3073 (let ((b (calendar-bahai-date-string date))) 3079 (if (not (string-equal i ""))
3074 (if (not (string-equal b "")) 3080 (format "Islamic date (before sunset): %s\n" i)))
3075 (format "Baha'i date (before sunset): %s" b))) 3081 (let ((b (calendar-bahai-date-string date)))
3076 (format "Chinese date: %s" 3082 (if (not (string-equal b ""))
3077 (calendar-chinese-date-string date)) 3083 (format "Baha'i date (before sunset): %s\n" b)))
3078 (let ((c (calendar-coptic-date-string date))) 3084 (format "Chinese date: %s\n"
3079 (if (not (string-equal c "")) 3085 (calendar-chinese-date-string date))
3080 (format "Coptic date: %s" c))) 3086 (let ((c (calendar-coptic-date-string date)))
3081 (let ((e (calendar-ethiopic-date-string date))) 3087 (if (not (string-equal c ""))
3082 (if (not (string-equal e "")) 3088 (format "Coptic date: %s\n" c)))
3083 (format "Ethiopic date: %s" e))) 3089 (let ((e (calendar-ethiopic-date-string date)))
3084 (let ((f (calendar-french-date-string date))) 3090 (if (not (string-equal e ""))
3085 (if (not (string-equal f "")) 3091 (format "Ethiopic date: %s\n" e)))
3086 (format "French Revolutionary date: %s" f))) 3092 (let ((f (calendar-french-date-string date)))
3087 (format "Mayan date: %s" 3093 (if (not (string-equal f ""))
3088 (calendar-mayan-date-string date))) 3094 (format "French Revolutionary date: %s\n" f)))
3089 "\n")) 3095 (format "Mayan date: %s\n"
3090 (goto-char (point-min)) 3096 (calendar-mayan-date-string date)))))
3091 (set-buffer-modified-p nil) 3097 (goto-char (point-min))
3092 (setq buffer-read-only t) 3098 (restore-buffer-modified-p modified))
3093 (display-buffer other-calendars-buffer)))) 3099 (display-buffer other-calendars-buffer))))
3094 3100
3095(defun calendar-print-day-of-year () 3101(defun calendar-print-day-of-year ()
@@ -3099,11 +3105,15 @@ Defaults to today's date if DATE is not given."
3099 3105
3100(defun calendar-set-mode-line (str) 3106(defun calendar-set-mode-line (str)
3101 "Set mode line to STR, centered, surrounded by dashes." 3107 "Set mode line to STR, centered, surrounded by dashes."
3102 (setq mode-line-format 3108 (let* ((edges (window-edges))
3103 (calendar-string-spread
3104 (list str) ?-
3105 ;; As per doc of window-width, total visible mode-line length. 3109 ;; As per doc of window-width, total visible mode-line length.
3106 (let ((edges (window-edges))) (- (nth 2 edges) (nth 0 edges)))))) 3110 (width (- (nth 2 edges) (nth 0 edges))))
3111 (setq mode-line-format
3112 (if buffer-file-name
3113 `("-" mode-line-modified
3114 ,(calendar-string-spread (list str) ?- (- width 6))
3115 "---")
3116 (calendar-string-spread (list str) ?- width)))))
3107 3117
3108(defun calendar-mod (m n) 3118(defun calendar-mod (m n)
3109 "Non-negative remainder of M/N with N instead of 0." 3119 "Non-negative remainder of M/N with N instead of 0."
diff --git a/lisp/completion.el b/lisp/completion.el
index 28bf1dd10b9..e231906ad27 100644
--- a/lisp/completion.el
+++ b/lisp/completion.el
@@ -82,11 +82,11 @@
82;; SAVING/LOADING COMPLETIONS 82;; SAVING/LOADING COMPLETIONS
83;; Completions are automatically saved from one session to another 83;; Completions are automatically saved from one session to another
84;; (unless save-completions-flag or enable-completion is nil). 84;; (unless save-completions-flag or enable-completion is nil).
85;; Activating this minor-mode calling completion-initialize) causes Emacs 85;; Activating this minor-mode (calling completion-initialize) loads
86;; to load a completions database for a saved completions file 86;; a completions database for a saved completions file
87;; (default: ~/.completions). When you exit, Emacs saves a copy of the 87;; (default: ~/.completions). When you exit, Emacs saves a copy of the
88;; completions that you 88;; completions that you often use. When you next start, Emacs loads in
89;; often use. When you next start, Emacs loads in the saved completion file. 89;; the saved completion file.
90;; 90;;
91;; The number of completions saved depends loosely on 91;; The number of completions saved depends loosely on
92;; *saved-completions-decay-factor*. Completions that have never been 92;; *saved-completions-decay-factor*. Completions that have never been
@@ -2250,13 +2250,14 @@ Patched to remove the most recent completion."
2250TYPE is the type of the wrapper to be added. Can be :before or :under." 2250TYPE is the type of the wrapper to be added. Can be :before or :under."
2251 (put function-name 'completion-function 2251 (put function-name 'completion-function
2252 (cdr (assq type 2252 (cdr (assq type
2253 '((:separator 'use-completion-before-separator) 2253 '((:separator . use-completion-before-separator)
2254 (:before 'use-completion-before-point) 2254 (:before . use-completion-before-point)
2255 (:backward-under 'use-completion-backward-under) 2255 (:backward-under . use-completion-backward-under)
2256 (:backward 'use-completion-backward) 2256 (:backward . use-completion-backward)
2257 (:under 'use-completion-under-point) 2257 (:under . use-completion-under-point)
2258 (:under-or-before 'use-completion-under-or-before-point) 2258 (:under-or-before . use-completion-under-or-before-point)
2259 (:minibuffer-separator 'use-completion-minibuffer-separator)))))) 2259 (:minibuffer-separator
2260 . use-completion-minibuffer-separator))))))
2260 2261
2261(defun use-completion-minibuffer-separator () 2262(defun use-completion-minibuffer-separator ()
2262 (let ((completion-syntax-table completion-standard-syntax-table)) 2263 (let ((completion-syntax-table completion-standard-syntax-table))
@@ -2354,7 +2355,7 @@ TYPE is the type of the wrapper to be added. Can be :before or :under."
2354 (if dynamic-completion-mode 2355 (if dynamic-completion-mode
2355 (add-hook (car x) (cdr x)) 2356 (add-hook (car x) (cdr x))
2356 (remove-hook (car x) (cdr x)))) 2357 (remove-hook (car x) (cdr x))))
2357 2358
2358 ;; "Complete" Key Keybindings. We don't want to use a minor-mode 2359 ;; "Complete" Key Keybindings. We don't want to use a minor-mode
2359 ;; map because these have too high a priority. We could/should 2360 ;; map because these have too high a priority. We could/should
2360 ;; probably change the interpretation of minor-mode-map-alist such 2361 ;; probably change the interpretation of minor-mode-map-alist such
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index a5f9e301946..87dc594b0fe 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1470,22 +1470,19 @@ See "
1470 (if custom-raised-buttons 1470 (if custom-raised-buttons
1471 "`Raised' text indicates" 1471 "`Raised' text indicates"
1472 "Square brackets indicate"))) 1472 "Square brackets indicate")))
1473 (widget-create 'info-link 1473 (widget-create 'custom-manual
1474 :tag "Custom file" 1474 :tag "Custom file"
1475 :button-face 'custom-link
1476 :mouse-face 'highlight
1477 "(emacs)Saving Customizations") 1475 "(emacs)Saving Customizations")
1478 (widget-insert 1476 (widget-insert
1479 " for information on how to save in a different file.\n 1477 " for information on how to save in a different file.\n
1480See ") 1478See ")
1481 (widget-create 'info-link 1479 (widget-create 'custom-manual
1482 :tag "Help" 1480 :tag "Help"
1483 :button-face 'custom-link
1484 :mouse-face 'highlight
1485 :help-echo "Read the online help." 1481 :help-echo "Read the online help."
1486 "(emacs)Easy Customization") 1482 "(emacs)Easy Customization")
1487 (widget-insert " for more information.\n\n") 1483 (widget-insert " for more information.\n\n")
1488 (widget-insert "Operate on everything in this buffer:\n ")) 1484 (widget-insert "Operate on all settings in this buffer that \
1485are not marked HIDDEN:\n "))
1489 (widget-insert " ")) 1486 (widget-insert " "))
1490 (widget-create 'push-button 1487 (widget-create 'push-button
1491 :tag "Set for Current Session" 1488 :tag "Set for Current Session"
@@ -1496,10 +1493,8 @@ Make your editing in this buffer take effect for this session."
1496 (if (not custom-buffer-verbose-help) 1493 (if (not custom-buffer-verbose-help)
1497 (progn 1494 (progn
1498 (widget-insert " ") 1495 (widget-insert " ")
1499 (widget-create 'info-link 1496 (widget-create 'custom-manual
1500 :tag "Help" 1497 :tag "Help"
1501 :button-face 'custom-link
1502 :mouse-face 'highlight
1503 :help-echo "Read the online help." 1498 :help-echo "Read the online help."
1504 "(emacs)Easy Customization"))) 1499 "(emacs)Easy Customization")))
1505 (when (or custom-file user-init-file) 1500 (when (or custom-file user-init-file)
@@ -1647,7 +1642,7 @@ item in another window.\n\n"))
1647 (let ((custom-buffer-style 'tree)) 1642 (let ((custom-buffer-style 'tree))
1648 (custom-toggle-parent widget))) 1643 (custom-toggle-parent widget)))
1649 1644
1650(define-widget 'custom-browse-group-tag 'push-button 1645(define-widget 'custom-browse-group-tag 'custom-group-link
1651 "Show parent in other window when activated." 1646 "Show parent in other window when activated."
1652 :tag "Group" 1647 :tag "Group"
1653 :tag-glyph "folder" 1648 :tag-glyph "folder"
@@ -1657,7 +1652,7 @@ item in another window.\n\n"))
1657 (let ((parent (widget-get widget :parent))) 1652 (let ((parent (widget-get widget :parent)))
1658 (customize-group-other-window (widget-value parent)))) 1653 (customize-group-other-window (widget-value parent))))
1659 1654
1660(define-widget 'custom-browse-variable-tag 'push-button 1655(define-widget 'custom-browse-variable-tag 'custom-group-link
1661 "Show parent in other window when activated." 1656 "Show parent in other window when activated."
1662 :tag "Option" 1657 :tag "Option"
1663 :tag-glyph "option" 1658 :tag-glyph "option"
@@ -1667,7 +1662,7 @@ item in another window.\n\n"))
1667 (let ((parent (widget-get widget :parent))) 1662 (let ((parent (widget-get widget :parent)))
1668 (customize-variable-other-window (widget-value parent)))) 1663 (customize-variable-other-window (widget-value parent))))
1669 1664
1670(define-widget 'custom-browse-face-tag 'push-button 1665(define-widget 'custom-browse-face-tag 'custom-group-link
1671 "Show parent in other window when activated." 1666 "Show parent in other window when activated."
1672 :tag "Face" 1667 :tag "Face"
1673 :tag-glyph "face" 1668 :tag-glyph "face"
@@ -2009,13 +2004,7 @@ and `face'."
2009 :group 'custom-faces) 2004 :group 'custom-faces)
2010 2005
2011(defface custom-button-unraised 2006(defface custom-button-unraised
2012 '((((min-colors 88) 2007 '((t :inherit underline))
2013 (class color) (background light)) :foreground "blue1" :underline t)
2014 (((class color) (background light)) :foreground "blue" :underline t)
2015 (((min-colors 88)
2016 (class color) (background dark)) :foreground "cyan1" :underline t)
2017 (((class color) (background dark)) :foreground "cyan" :underline t)
2018 (t :underline t))
2019 "Face for custom buffer buttons if `custom-raised-buttons' is nil." 2008 "Face for custom buffer buttons if `custom-raised-buttons' is nil."
2020 :version "22.1" 2009 :version "22.1"
2021 :group 'custom-faces) 2010 :group 'custom-faces)
@@ -2070,15 +2059,10 @@ and `face'."
2070(put 'custom-state-face 'face-alias 'custom-state) 2059(put 'custom-state-face 'face-alias 'custom-state)
2071 2060
2072(defface custom-link 2061(defface custom-link
2073 '((((min-colors 88) 2062 '((t :inherit link))
2074 (class color) (background light)) :foreground "blue1" :underline t) 2063 "Face for links in customization buffers."
2075 (((class color) (background light)) :foreground "blue" :underline t) 2064 :version "22.1"
2076 (((min-colors 88) 2065 :group 'custom-faces)
2077 (class color) (background dark)) :foreground "cyan1" :underline t)
2078 (((class color) (background dark)) :foreground "cyan" :underline t)
2079 (t :underline t))
2080 "Face for Info links in customization buffers."
2081 :group 'info)
2082 2066
2083(define-widget 'custom 'default 2067(define-widget 'custom 'default
2084 "Customize a user option." 2068 "Customize a user option."
@@ -2245,8 +2229,6 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
2245 (insert " ") 2229 (insert " ")
2246 (push (widget-create-child-and-convert 2230 (push (widget-create-child-and-convert
2247 widget 'custom-group-link 2231 widget 'custom-group-link
2248 :button-face 'custom-link
2249 :mouse-face 'highlight
2250 :tag (custom-unlispify-tag-name symbol) 2232 :tag (custom-unlispify-tag-name symbol)
2251 symbol) 2233 symbol)
2252 buttons) 2234 buttons)
@@ -3323,7 +3305,7 @@ SPEC must be a full face spec."
3323(defvar custom-face-menu 3305(defvar custom-face-menu
3324 `(("Set for Current Session" custom-face-set) 3306 `(("Set for Current Session" custom-face-set)
3325 ,@(when (or custom-file user-init-file) 3307 ,@(when (or custom-file user-init-file)
3326 '(("Save for Future Sessions" custom-face-save-command))) 3308 '(("Save for Future Sessions" custom-face-save)))
3327 ("Undo Edits" custom-redraw 3309 ("Undo Edits" custom-redraw
3328 (lambda (widget) 3310 (lambda (widget)
3329 (memq (widget-get widget :custom-state) '(modified changed)))) 3311 (memq (widget-get widget :custom-state) '(modified changed))))
@@ -3448,13 +3430,8 @@ Optional EVENT is the location for the menu."
3448 (custom-face-state-set widget) 3430 (custom-face-state-set widget)
3449 (custom-redraw-magic widget))) 3431 (custom-redraw-magic widget)))
3450 3432
3451(defun custom-face-save-command (widget)
3452 "Save in `.emacs' the face attributes in WIDGET."
3453 (custom-face-save widget)
3454 (custom-save-all))
3455
3456(defun custom-face-save (widget) 3433(defun custom-face-save (widget)
3457 "Prepare for saving WIDGET's face attributes, but don't write `.emacs'." 3434 "Save in `.emacs' the face attributes in WIDGET."
3458 (let* ((symbol (widget-value widget)) 3435 (let* ((symbol (widget-value widget))
3459 (child (car (widget-get widget :children))) 3436 (child (car (widget-get widget :children)))
3460 (value (custom-post-filter-face-spec (widget-value child))) 3437 (value (custom-post-filter-face-spec (widget-value child)))
@@ -3480,6 +3457,10 @@ Optional EVENT is the location for the menu."
3480 (custom-face-state-set widget) 3457 (custom-face-state-set widget)
3481 (custom-redraw-magic widget))) 3458 (custom-redraw-magic widget)))
3482 3459
3460;; For backward compatibility.
3461(define-obsolete-function-alias 'custom-face-save-command 'custom-face-save
3462 "22.1")
3463
3483(defun custom-face-reset-saved (widget) 3464(defun custom-face-reset-saved (widget)
3484 "Restore WIDGET to the face's default attributes." 3465 "Restore WIDGET to the face's default attributes."
3485 (let* ((symbol (widget-value widget)) 3466 (let* ((symbol (widget-value widget))
@@ -3607,6 +3588,8 @@ restoring it to the state of a face that has never been customized."
3607 3588
3608(define-widget 'custom-group-link 'link 3589(define-widget 'custom-group-link 'link
3609 "Show parent in other window when activated." 3590 "Show parent in other window when activated."
3591 :button-face 'custom-link
3592 :mouse-face 'highlight
3610 :help-echo "Create customization buffer for this group." 3593 :help-echo "Create customization buffer for this group."
3611 :action 'custom-group-link-action) 3594 :action 'custom-group-link-action)
3612 3595
@@ -3805,8 +3788,6 @@ If GROUPS-ONLY non-nil, return only those members that are groups."
3805 (if (eq custom-buffer-style 'links) 3788 (if (eq custom-buffer-style 'links)
3806 (push (widget-create-child-and-convert 3789 (push (widget-create-child-and-convert
3807 widget 'custom-group-link 3790 widget 'custom-group-link
3808 :button-face 'custom-link
3809 :mouse-face 'highlight
3810 :tag "Go to Group" 3791 :tag "Go to Group"
3811 symbol) 3792 symbol)
3812 buttons) 3793 buttons)
@@ -4400,6 +4381,15 @@ The format is suitable for use with `easy-menu-define'."
4400 ["Erase Customization" Custom-reset-standard t] 4381 ["Erase Customization" Custom-reset-standard t]
4401 ["Info" (info "(emacs)Easy Customization") t])) 4382 ["Info" (info "(emacs)Easy Customization") t]))
4402 4383
4384(defvar custom-field-keymap
4385 (let ((map (copy-keymap widget-field-keymap)))
4386 (define-key map "\C-c\C-c" 'Custom-set)
4387 (define-key map "\C-x\C-s" 'Custom-save)
4388 map)
4389 "Keymap used inside editable fields in customization buffers.")
4390
4391(widget-put (get 'editable-field 'widget-type) :keymap custom-field-keymap)
4392
4403(defun Custom-goto-parent () 4393(defun Custom-goto-parent ()
4404 "Go to the parent group listed at the top of this buffer. 4394 "Go to the parent group listed at the top of this buffer.
4405If several parents are listed, go to the first of them." 4395If several parents are listed, go to the first of them."
@@ -4425,17 +4415,18 @@ If several parents are listed, go to the first of them."
4425 4415
4426The following commands are available: 4416The following commands are available:
4427 4417
4428Move to next button or editable field. \\[widget-forward] 4418\\<widget-keymap>\
4429Move to previous button or editable field. \\[widget-backward] 4419Move to next button, link or editable field. \\[widget-forward]
4430\\<widget-field-keymap>\ 4420Move to previous button, link or editable field. \\[widget-backward]
4421\\<custom-field-keymap>\
4431Complete content of editable text field. \\[widget-complete] 4422Complete content of editable text field. \\[widget-complete]
4432\\<custom-mode-map>\ 4423\\<custom-mode-map>\
4433Invoke button under the mouse pointer. \\[Custom-move-and-invoke] 4424Invoke button under the mouse pointer. \\[widget-move-and-invoke]
4434Invoke button under point. \\[widget-button-press] 4425Invoke button under point. \\[widget-button-press]
4435Set all options from current text. \\[Custom-set] 4426Set all options from current text. \\[Custom-set]
4436Make values in current text permanent. \\[Custom-save] 4427Make values in current text permanent. \\[Custom-save]
4437Make text match actual option values. \\[Custom-reset-current] 4428Make text match actual option values. \\[Custom-reset-current]
4438Reset options to permanent settings. \\[Custom-reset-saved] 4429Reset options to permanent settings. \\[Custom-reset-saved]
4439Erase customizations; set options 4430Erase customizations; set options
4440 and buffer text to the standard values. \\[Custom-reset-standard] 4431 and buffer text to the standard values. \\[Custom-reset-standard]
4441 4432
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 689c541140e..98e31081abf 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -966,7 +966,7 @@ directory DIRNAME."
966(defun desktop-load-file (function) 966(defun desktop-load-file (function)
967 "Load the file where auto loaded FUNCTION is defined." 967 "Load the file where auto loaded FUNCTION is defined."
968 (when function 968 (when function
969 (let ((fcell (symbol-function function))) 969 (let ((fcell (and (fboundp function) (symbol-function function))))
970 (when (and (listp fcell) 970 (when (and (listp fcell)
971 (eq 'autoload (car fcell))) 971 (eq 'autoload (car fcell)))
972 (load (cadr fcell)))))) 972 (load (cadr fcell))))))
diff --git a/lisp/dired.el b/lisp/dired.el
index 3cc83b29fdd..fe8f6996b28 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -286,6 +286,9 @@ In simple cases, this list contains one element.")
286This is an alist of the form (SUBDIR . SWITCHES).") 286This is an alist of the form (SUBDIR . SWITCHES).")
287(make-variable-buffer-local 'dired-switches-alist) 287(make-variable-buffer-local 'dired-switches-alist)
288 288
289(defvaralias 'dired-move-to-filename-regexp
290 'directory-listing-before-filename-regexp)
291
289(defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]" 292(defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]"
290 "Regexp matching a maybe hidden subdirectory line in `ls -lR' output. 293 "Regexp matching a maybe hidden subdirectory line in `ls -lR' output.
291Subexpression 1 is the subdirectory proper, no trailing colon. 294Subexpression 1 is the subdirectory proper, no trailing colon.
@@ -2514,11 +2517,18 @@ if there are no flagged files."
2514 (set-window-start w2 1) 2517 (set-window-start w2 1)
2515 ))) 2518 )))
2516 2519
2517(defvar dired-no-confirm nil 2520(defcustom dired-no-confirm nil
2518 "A list of symbols for commands Dired should not confirm. 2521 "A list of symbols for commands Dired should not confirm.
2519Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress', 2522Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress',
2520`copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink', 2523`copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink',
2521`touch' and `uncompress'.") 2524`touch' and `uncompress'."
2525 :group 'dired
2526 :type '(set (const byte-compile) (const chgrp)
2527 (const chmod) (const chown) (const compress)
2528 (const copy) (const delete) (const hardlink)
2529 (const load) (const move) (const print)
2530 (const shell) (const symlink) (const touch)
2531 (const uncompress)))
2522 2532
2523(defun dired-mark-pop-up (bufname op-symbol files function &rest args) 2533(defun dired-mark-pop-up (bufname op-symbol files function &rest args)
2524 "Return FUNCTION's result on ARGS after showing which files are marked. 2534 "Return FUNCTION's result on ARGS after showing which files are marked.
@@ -3091,9 +3101,9 @@ With optional second arg NO-REVERT, don't refresh the listing afterwards."
3091 (if (eq major-mode 'dired-mode) (dired-sort-set-modeline)) 3101 (if (eq major-mode 'dired-mode) (dired-sort-set-modeline))
3092 (or no-revert (revert-buffer))) 3102 (or no-revert (revert-buffer)))
3093 3103
3094(make-variable-buffer-local 3104(defvar dired-subdir-alist-pre-R nil
3095 (defvar dired-subdir-alist-pre-R nil 3105 "Value of `dired-subdir-alist' before -R switch added.")
3096 "Value of `dired-subdir-alist' before -R switch added.")) 3106(make-variable-buffer-local 'dired-subdir-alist-pre-R)
3097 3107
3098(defun dired-sort-R-check (switches) 3108(defun dired-sort-R-check (switches)
3099 "Additional processing of -R in ls option string SWITCHES. 3109 "Additional processing of -R in ls option string SWITCHES.
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 43e8b917ce8..4c218263a62 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -165,7 +165,7 @@ If nil, do not try to find the source code of functions and variables
165defined in C.") 165defined in C.")
166 166
167(defun find-function-C-source (fun-or-var file type) 167(defun find-function-C-source (fun-or-var file type)
168 "Find the source location where SUBR-OR-VAR is defined in FILE. 168 "Find the source location where FUN-OR-VAR is defined in FILE.
169TYPE should be nil to find a function, or `defvar' to find a variable." 169TYPE should be nil to find a function, or `defvar' to find a variable."
170 (unless find-function-C-source-directory 170 (unless find-function-C-source-directory
171 (setq find-function-C-source-directory 171 (setq find-function-C-source-directory
@@ -243,7 +243,7 @@ The search is done in the source for library LIBRARY."
243(defun find-function-noselect (function) 243(defun find-function-noselect (function)
244 "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION. 244 "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
245 245
246Finds the Emacs Lisp library containing the definition of FUNCTION 246Finds the source file containing the definition of FUNCTION
247in a buffer and the point of the definition. The buffer is 247in a buffer and the point of the definition. The buffer is
248not selected. 248not selected.
249 249
@@ -335,7 +335,7 @@ Set mark before moving, if the buffer already existed."
335(defun find-function (function) 335(defun find-function (function)
336 "Find the definition of the FUNCTION near point. 336 "Find the definition of the FUNCTION near point.
337 337
338Finds the Emacs Lisp library containing the definition of the function 338Finds the source file containing the definition of the function
339near point (selected by `function-called-at-point') in a buffer and 339near point (selected by `function-called-at-point') in a buffer and
340places point before the definition. 340places point before the definition.
341Set mark before moving, if the buffer already existed. 341Set mark before moving, if the buffer already existed.
@@ -356,7 +356,7 @@ See `find-function' for more details."
356 356
357;;;###autoload 357;;;###autoload
358(defun find-function-other-frame (function) 358(defun find-function-other-frame (function)
359 "Find, in ananother frame, the definition of FUNCTION near point. 359 "Find, in another frame, the definition of FUNCTION near point.
360 360
361See `find-function' for more details." 361See `find-function' for more details."
362 (interactive (find-function-read)) 362 (interactive (find-function-read))
@@ -364,24 +364,25 @@ See `find-function' for more details."
364 364
365;;;###autoload 365;;;###autoload
366(defun find-variable-noselect (variable &optional file) 366(defun find-variable-noselect (variable &optional file)
367 "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL. 367 "Return a pair `(BUFFER . POINT)' pointing to the definition of VARIABLE.
368 368
369Finds the Emacs Lisp library containing the definition of SYMBOL 369Finds the library containing the definition of VARIABLE in a buffer and
370in a buffer, and the point of the definition. It does not switch 370the point of the definition. The buffer is not selected.
371to the buffer or display it.
372 371
373The library where VARIABLE is defined is searched for in FILE or 372The library where VARIABLE is defined is searched for in FILE or
374`find-function-source-path', if non nil, otherwise in `load-path'." 373`find-function-source-path', if non nil, otherwise in `load-path'."
375 (if (not variable) 374 (if (not variable)
376 (error "You didn't specify a variable")) 375 (error "You didn't specify a variable")
377 (let ((library (or file (symbol-file variable 'defvar)))) 376 (let ((library (or file
378 (find-function-search-for-symbol variable 'defvar library))) 377 (symbol-file variable 'defvar)
378 (help-C-file-name variable 'var))))
379 (find-function-search-for-symbol variable 'defvar library))))
379 380
380;;;###autoload 381;;;###autoload
381(defun find-variable (variable) 382(defun find-variable (variable)
382 "Find the definition of the VARIABLE near point. 383 "Find the definition of the VARIABLE near point.
383 384
384Finds the Emacs Lisp library containing the definition of the variable 385Finds the library containing the definition of the variable
385near point (selected by `variable-at-point') in a buffer and 386near point (selected by `variable-at-point') in a buffer and
386places point before the definition. 387places point before the definition.
387 388
@@ -403,7 +404,7 @@ See `find-variable' for more details."
403 404
404;;;###autoload 405;;;###autoload
405(defun find-variable-other-frame (variable) 406(defun find-variable-other-frame (variable)
406 "Find, in annother frame, the definition of VARIABLE near point. 407 "Find, in another frame, the definition of VARIABLE near point.
407 408
408See `find-variable' for more details." 409See `find-variable' for more details."
409 (interactive (find-function-read 'defvar)) 410 (interactive (find-function-read 'defvar))
@@ -412,18 +413,22 @@ See `find-variable' for more details."
412;;;###autoload 413;;;###autoload
413(defun find-definition-noselect (symbol type &optional file) 414(defun find-definition-noselect (symbol type &optional file)
414 "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL. 415 "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL.
415TYPE says what type of definition: nil for a function, 416TYPE says what type of definition: nil for a function, `defvar' for a
416`defvar' or `defface' for a variable or face. This function 417variabke, `defface' for a face. This function does not switch to the
417does not switch to the buffer or display it. 418buffer nor display it.
418 419
419The library where SYMBOL is defined is searched for in FILE or 420The library where SYMBOL is defined is searched for in FILE or
420`find-function-source-path', if non nil, otherwise in `load-path'." 421`find-function-source-path', if non nil, otherwise in `load-path'."
421 (if (not symbol) 422 (cond
422 (error "You didn't specify a symbol")) 423 ((not symbol)
423 (if (null type) 424 (error "You didn't specify a symbol"))
424 (find-function-noselect symbol) 425 ((null type)
426 (find-function-noselect symbol))
427 ((eq type 'defvar)
428 (find-variable-noselect symbol file))
429 (t
425 (let ((library (or file (symbol-file symbol type)))) 430 (let ((library (or file (symbol-file symbol type))))
426 (find-function-search-for-symbol symbol type library)))) 431 (find-function-search-for-symbol symbol type library)))))
427 432
428;; For symmetry, this should be called find-face; but some programs 433;; For symmetry, this should be called find-face; but some programs
429;; assume that, if that name is defined, it means something else. 434;; assume that, if that name is defined, it means something else.
@@ -480,7 +485,7 @@ Set mark before moving, if the buffer already existed."
480 485
481;;;###autoload 486;;;###autoload
482(defun find-variable-at-point () 487(defun find-variable-at-point ()
483 "Find directly the function at point in the other window." 488 "Find directly the variable at point in the other window."
484 (interactive) 489 (interactive)
485 (let ((symb (variable-at-point))) 490 (let ((symb (variable-at-point)))
486 (when (and symb (not (equal symb 0))) 491 (when (and symb (not (equal symb 0)))
diff --git a/lisp/faces.el b/lisp/faces.el
index 2bc3d3968e2..14613bec679 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1918,6 +1918,28 @@ created."
1918 :group 'basic-faces 1918 :group 'basic-faces
1919 :version "22.1") 1919 :version "22.1")
1920 1920
1921(defface link
1922 '((((class color) (min-colors 88) (background light))
1923 :foreground "blue1" :underline t)
1924 (((class color) (background light))
1925 :foreground "blue" :underline t)
1926 (((class color) (min-colors 88) (background dark))
1927 :foreground "cyan1" :underline t)
1928 (((class color) (background dark))
1929 :foreground "cyan" :underline t)
1930 (t :inherit underline))
1931 "Basic face for unvisited links."
1932 :group 'basic-faces
1933 :version "22.1")
1934
1935(defface link-visited
1936 '((default :inherit link)
1937 (((class color) (background light)) :foreground "magenta4")
1938 (((class color) (background dark)) :foreground "violet"))
1939 "Basic face for visited links."
1940 :group 'basic-faces
1941 :version "22.1")
1942
1921(defface highlight 1943(defface highlight
1922 '((((class color) (min-colors 88) (background light)) 1944 '((((class color) (min-colors 88) (background light))
1923 :background "darkseagreen2") 1945 :background "darkseagreen2")
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index acdcf68c7dc..f85aa37b3b5 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -2127,7 +2127,7 @@ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
2127 ;; Constant values. 2127 ;; Constant values.
2128 ("\\<:\\sw+\\>" 0 font-lock-builtin-face) 2128 ("\\<:\\sw+\\>" 0 font-lock-builtin-face)
2129 ;; ELisp and CLisp `&' keywords as types. 2129 ;; ELisp and CLisp `&' keywords as types.
2130 ("\\&\\sw+\\>" . font-lock-type-face) 2130 ("\\<\\&\\sw+\\>" . font-lock-type-face)
2131 ;; ELisp regexp grouping constructs 2131 ;; ELisp regexp grouping constructs
2132 ((lambda (bound) 2132 ((lambda (bound)
2133 (catch 'found 2133 (catch 'found
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 6e0405c24eb..fbbf7281b69 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,62 @@
12006-01-25 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * mm-uu.el (mm-uu-dissect-text-parts): Ignore it if a given part
4 is dissected into a single part of which the type is the same as
5 the given one.
6
72006-01-21 Kevin Ryde <user42@zip.com.au>
8
9 * mailcap.el (mailcap-parse-mailcap-extras): "test" key must go
10 into alists as symbol not string, since that's what
11 mailcap-viewer-passes-test and mailcap-mailcap-entry-passes-test
12 look for.
13
142006-01-24 Katsumi Yamaoka <yamaoka@jpl.org>
15
16 * mm-uu.el (mm-uu-dissect-text-parts): Reduce the number of
17 recursive calls.
18
192006-01-24 Katsumi Yamaoka <yamaoka@jpl.org>
20
21 * mm-view.el (mm-w3m-standalone-supports-m17n-p): New variable.
22 (mm-w3m-standalone-supports-m17n-p): New function.
23 (mm-inline-text-html-render-with-w3m-standalone): Use it to alter
24 w3m usage.
25
26 * gnus-art.el (gnus-article-wash-html-with-w3m-standalone): Use
27 mm-w3m-standalone-supports-m17n-p to alter w3m usage.
28
292006-01-23 Katsumi Yamaoka <yamaoka@jpl.org>
30
31 * mm-uu.el (mm-uu-dissect-text-parts): Decode content transfer
32 encoding.
33
342006-01-20 Reiner Steib <Reiner.Steib@gmx.de>
35
36 * mml.el (mml-attach-file): Describe `description' in doc string.
37 (mml-menu): Add Emacs MIME manual and PGG manual.
38
392006-01-19 Reiner Steib <Reiner.Steib@gmx.de>
40
41 * spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p)
42 (spam-group-spam-marks, spam-list-articles, spam-group-ham-marks):
43 Revert 2006-01-08 change because the functions will be used in No
44 Gnus.
45
462006-01-19 Katsumi Yamaoka <yamaoka@jpl.org>
47
48 * mm-bodies.el (mm-decode-body): Don't decode decoded body.
49
50 * mm-uu.el (mm-uu-dissect-text-parts): Dissect dissected parts.
51
522006-01-17 Katsumi Yamaoka <yamaoka@jpl.org>
53
54 * mm-decode.el (mm-inlined-types): Add application/pgp.
55 (mm-automatic-display): Ditto.
56
57 * mm-uu.el (mm-uu-dissect-text-parts): Recognize application/pgp
58 part as text.
59
12006-01-16 Katsumi Yamaoka <yamaoka@jpl.org> 602006-01-16 Katsumi Yamaoka <yamaoka@jpl.org>
2 61
3 * nnrss.el: Update copyright. 62 * nnrss.el: Update copyright.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 92a4f09ded3..b51ceff29a9 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2541,15 +2541,18 @@ charset defined in `gnus-summary-show-article-charset-alist' is used."
2541 2541
2542(defun gnus-article-wash-html-with-w3m-standalone () 2542(defun gnus-article-wash-html-with-w3m-standalone ()
2543 "Wash the current buffer with w3m." 2543 "Wash the current buffer with w3m."
2544 (unless (mm-coding-system-p charset) 2544 (if (mm-w3m-standalone-supports-m17n-p)
2545 ;; The default. 2545 (progn
2546 (setq charset 'iso-8859-1)) 2546 (unless (mm-coding-system-p charset) ;; Bound by `article-wash-html'.
2547 (let ((coding-system-for-write charset) 2547 ;; The default.
2548 (coding-system-for-read charset)) 2548 (setq charset 'iso-8859-1))
2549 (call-process-region 2549 (let ((coding-system-for-write charset)
2550 (point-min) (point-max) 2550 (coding-system-for-read charset))
2551 "w3m" t t nil "-dump" "-T" "text/html" 2551 (call-process-region
2552 "-I" (symbol-name charset) "-O" (symbol-name charset)))) 2552 (point-min) (point-max)
2553 "w3m" t t nil "-dump" "-T" "text/html"
2554 "-I" (symbol-name charset) "-O" (symbol-name charset))))
2555 (mm-inline-wash-with-stdin nil "w3m" "-dump" "-T" "text/html")))
2553 2556
2554(defun article-hide-list-identifiers () 2557(defun article-hide-list-identifiers ()
2555 "Remove list identifies from the Subject header. 2558 "Remove list identifies from the Subject header.
diff --git a/lisp/gnus/mailcap.el b/lisp/gnus/mailcap.el
index 166edb60f7a..80153645819 100644
--- a/lisp/gnus/mailcap.el
+++ b/lisp/gnus/mailcap.el
@@ -528,7 +528,12 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus
528 (skip-chars-forward ";")) 528 (skip-chars-forward ";"))
529 (setq done t)))) 529 (setq done t))))
530 (setq value (buffer-substring val-pos (point)))) 530 (setq value (buffer-substring val-pos (point))))
531 (setq results (cons (cons name value) results)) 531 ;; `test' as symbol, others like "copiousoutput" and "needsx11" as
532 ;; strings
533 (setq results (cons (cons (if (string-equal name "test")
534 'test
535 name)
536 value) results))
532 (skip-chars-forward " \";\n\t")) 537 (skip-chars-forward " \";\n\t"))
533 results))) 538 results)))
534 539
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index ed3dc28253d..7871ca9f253 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -1,7 +1,7 @@
1;;; mm-bodies.el --- Functions for decoding MIME things 1;;; mm-bodies.el --- Functions for decoding MIME things
2 2
3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
7;; MORIOKA Tomohiko <morioka@jaist.ac.jp> 7;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
@@ -248,7 +248,8 @@ decoding. If it is nil, default to `mail-parse-charset'."
248 (save-excursion 248 (save-excursion
249 (when encoding 249 (when encoding
250 (mm-decode-content-transfer-encoding encoding type)) 250 (mm-decode-content-transfer-encoding encoding type))
251 (when (featurep 'mule) ; Fixme: Wrong test for unibyte session. 251 (when (and (featurep 'mule) ;; Fixme: Wrong test for unibyte session.
252 (not (eq charset 'gnus-decoded)))
252 (let ((coding-system (mm-charset-to-coding-system charset))) 253 (let ((coding-system (mm-charset-to-coding-system charset)))
253 (if (and (not coding-system) 254 (if (and (not coding-system)
254 (listp mail-parse-ignored-charsets) 255 (listp mail-parse-ignored-charsets)
@@ -261,8 +262,7 @@ decoding. If it is nil, default to `mail-parse-charset'."
261 ;;in XEmacs 262 ;;in XEmacs
262 (mm-multibyte-p) 263 (mm-multibyte-p)
263 (or (not (eq coding-system 'ascii)) 264 (or (not (eq coding-system 'ascii))
264 (setq coding-system mail-parse-charset)) 265 (setq coding-system mail-parse-charset)))
265 (not (eq coding-system 'gnus-decoded)))
266 (mm-decode-coding-region (point-min) (point-max) 266 (mm-decode-coding-region (point-min) (point-max)
267 coding-system)) 267 coding-system))
268 (setq buffer-file-coding-system 268 (setq buffer-file-coding-system
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 5b55af4d756..b275807c051 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1,7 +1,7 @@
1;;; mm-decode.el --- Functions for decoding MIME things 1;;; mm-decode.el --- Functions for decoding MIME things
2 2
3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
7;; MORIOKA Tomohiko <morioka@jaist.ac.jp> 7;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
@@ -279,7 +279,9 @@ before the external MIME handler is invoked."
279 "application/x-emacs-lisp" 279 "application/x-emacs-lisp"
280 "application/pgp-signature" "application/x-pkcs7-signature" 280 "application/pgp-signature" "application/x-pkcs7-signature"
281 "application/pkcs7-signature" "application/x-pkcs7-mime" 281 "application/pkcs7-signature" "application/x-pkcs7-mime"
282 "application/pkcs7-mime") 282 "application/pkcs7-mime"
283 ;; Mutt still uses this even though it has already been withdrawn.
284 "application/pgp")
283 "List of media types that are to be displayed inline. 285 "List of media types that are to be displayed inline.
284See also `mm-inline-media-tests', which says how to display a media 286See also `mm-inline-media-tests', which says how to display a media
285type inline." 287type inline."
@@ -302,7 +304,9 @@ when selecting a different article."
302 "application/emacs-lisp" "application/x-emacs-lisp" 304 "application/emacs-lisp" "application/x-emacs-lisp"
303 "application/x-pkcs7-signature" 305 "application/x-pkcs7-signature"
304 "application/pkcs7-signature" "application/x-pkcs7-mime" 306 "application/pkcs7-signature" "application/x-pkcs7-mime"
305 "application/pkcs7-mime") 307 "application/pkcs7-mime"
308 ;; Mutt still uses this even though it has already been withdrawn.
309 "application/pgp")
306 "A list of MIME types to be displayed automatically." 310 "A list of MIME types to be displayed automatically."
307 :type '(repeat regexp) 311 :type '(repeat regexp)
308 :group 'mime-display) 312 :group 'mime-display)
diff --git a/lisp/gnus/mm-uu.el b/lisp/gnus/mm-uu.el
index 312c3dd8542..fa36582af01 100644
--- a/lisp/gnus/mm-uu.el
+++ b/lisp/gnus/mm-uu.el
@@ -511,21 +511,40 @@ value of `mm-uu-text-plain-type'."
511 511
512(defun mm-uu-dissect-text-parts (handle) 512(defun mm-uu-dissect-text-parts (handle)
513 "Dissect text parts and put uu handles into HANDLE." 513 "Dissect text parts and put uu handles into HANDLE."
514 (let ((buffer (mm-handle-buffer handle)) 514 (let ((buffer (mm-handle-buffer handle)))
515 type children)
516 (cond ((stringp buffer) 515 (cond ((stringp buffer)
517 (dolist (elem (cdr handle)) 516 (dolist (elem (cdr handle))
518 (mm-uu-dissect-text-parts elem))) 517 (mm-uu-dissect-text-parts elem)))
519 ((bufferp buffer) 518 ((bufferp buffer)
520 (when (and (setq type (mm-handle-media-type handle)) 519 (let ((type (mm-handle-media-type handle))
521 (stringp type) 520 (case-fold-search t) ;; string-match
522 (string-match "\\`text/" type) 521 encoding children)
523 (with-current-buffer buffer 522 (when (and
524 (setq children 523 (stringp type)
525 (mm-uu-dissect t (mm-handle-type handle))))) 524 ;; Mutt still uses application/pgp even though
526 (kill-buffer buffer) 525 ;; it has already been withdrawn.
527 (setcar handle (car children)) 526 (string-match "\\`text/\\|\\`application/pgp\\'" type)
528 (setcdr handle (cdr children)))) 527 (setq children
528 (with-current-buffer buffer
529 (if (setq encoding (mm-handle-encoding handle))
530 ;; Inherit the multibyteness of the `buffer'.
531 (with-temp-buffer
532 (insert-buffer-substring buffer)
533 (mm-decode-content-transfer-encoding
534 encoding type)
535 (mm-uu-dissect t (mm-handle-type handle)))
536 (mm-uu-dissect t (mm-handle-type handle))))))
537 ;; Ignore it if a given part is dissected into a single
538 ;; part of which the type is the same as the given one.
539 (if (and (<= (length children) 2)
540 (string-equal (mm-handle-media-type (cadr children))
541 type))
542 (kill-buffer (mm-handle-buffer (cadr children)))
543 (kill-buffer buffer)
544 (setcdr handle (cdr children))
545 (setcar handle (car children)) ;; "multipart/mixed"
546 (dolist (elem (cdr children))
547 (mm-uu-dissect-text-parts elem))))))
529 (t 548 (t
530 (dolist (elem handle) 549 (dolist (elem handle)
531 (mm-uu-dissect-text-parts elem)))))) 550 (mm-uu-dissect-text-parts elem))))))
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 645e960b535..73cab0a5676 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -262,29 +262,57 @@
262 (delete-region ,(point-min-marker) 262 (delete-region ,(point-min-marker)
263 ,(point-max-marker))))))))) 263 ,(point-max-marker)))))))))
264 264
265(defvar mm-w3m-standalone-supports-m17n-p (if (featurep 'mule) 'undecided)
266 "*T means the w3m command supports the m17n feature.")
267
268(defun mm-w3m-standalone-supports-m17n-p ()
269 "Say whether the w3m command supports the m17n feature."
270 (cond ((eq mm-w3m-standalone-supports-m17n-p t) t)
271 ((eq mm-w3m-standalone-supports-m17n-p nil) nil)
272 ((not (featurep 'mule)) (setq mm-w3m-standalone-supports-m17n-p nil))
273 ((condition-case nil
274 (let ((coding-system-for-write 'iso-2022-jp)
275 (coding-system-for-read 'iso-2022-jp)
276 (str (mm-decode-coding-string "\
277\e$B#D#o#e#s!!#w#3#m!!#s#u#p#p#o#r#t#s!!#m#1#7#n!)\e(B" 'iso-2022-jp)))
278 (mm-with-multibyte-buffer
279 (insert str)
280 (call-process-region
281 (point-min) (point-max) "w3m" t t nil "-dump"
282 "-T" "text/html" "-I" "iso-2022-jp" "-O" "iso-2022-jp")
283 (goto-char (point-min))
284 (search-forward str nil t)))
285 (error nil))
286 (setq mm-w3m-standalone-supports-m17n-p t))
287 (t
288 ;;(message "You had better upgrade your w3m command")
289 (setq mm-w3m-standalone-supports-m17n-p nil))))
290
265(defun mm-inline-text-html-render-with-w3m-standalone (handle) 291(defun mm-inline-text-html-render-with-w3m-standalone (handle)
266 "Render a text/html part using w3m." 292 "Render a text/html part using w3m."
267 (let ((source (mm-get-part handle)) 293 (if (mm-w3m-standalone-supports-m17n-p)
268 (charset (mail-content-type-get (mm-handle-type handle) 'charset)) 294 (let ((source (mm-get-part handle))
269 cs) 295 (charset (mail-content-type-get (mm-handle-type handle) 'charset))
270 (unless (and charset 296 cs)
271 (setq cs (mm-charset-to-coding-system charset)) 297 (unless (and charset
272 (not (eq cs 'ascii))) 298 (setq cs (mm-charset-to-coding-system charset))
273 ;; The default. 299 (not (eq cs 'ascii)))
274 (setq charset "iso-8859-1" 300 ;; The default.
275 cs 'iso-8859-1)) 301 (setq charset "iso-8859-1"
276 (mm-insert-inline 302 cs 'iso-8859-1))
277 handle 303 (mm-insert-inline
278 (mm-with-unibyte-buffer 304 handle
279 (insert source) 305 (mm-with-unibyte-buffer
280 (mm-enable-multibyte) 306 (insert source)
281 (let ((coding-system-for-write 'binary) 307 (mm-enable-multibyte)
282 (coding-system-for-read cs)) 308 (let ((coding-system-for-write 'binary)
283 (call-process-region 309 (coding-system-for-read cs))
284 (point-min) (point-max) 310 (call-process-region
285 "w3m" t t nil "-dump" "-T" "text/html" 311 (point-min) (point-max)
286 "-I" charset "-O" charset)) 312 "w3m" t t nil "-dump" "-T" "text/html"
287 (buffer-string))))) 313 "-I" charset "-O" charset))
314 (buffer-string))))
315 (mm-inline-render-with-stdin handle nil "w3m" "-dump" "-T" "text/html")))
288 316
289(defun mm-links-remove-leading-blank () 317(defun mm-links-remove-leading-blank ()
290 ;; Delete the annoying three spaces preceding each line of links 318 ;; Delete the annoying three spaces preceding each line of links
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index f88276f4e69..7d7ea9e20a1 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -38,6 +38,7 @@
38 (autoload 'gnus-add-minor-mode "gnus-ems") 38 (autoload 'gnus-add-minor-mode "gnus-ems")
39 (autoload 'gnus-make-local-hook "gnus-util") 39 (autoload 'gnus-make-local-hook "gnus-util")
40 (autoload 'message-fetch-field "message") 40 (autoload 'message-fetch-field "message")
41 (autoload 'message-info "message")
41 (autoload 'fill-flowed-encode "flow-fill") 42 (autoload 'fill-flowed-encode "flow-fill")
42 (autoload 'message-posting-charset "message")) 43 (autoload 'message-posting-charset "message"))
43 44
@@ -916,7 +917,14 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
916 ;;["Narrow" mml-narrow-to-part t] 917 ;;["Narrow" mml-narrow-to-part t]
917 ["Quote MML" mml-quote-region t] 918 ["Quote MML" mml-quote-region t]
918 ["Validate MML" mml-validate t] 919 ["Validate MML" mml-validate t]
919 ["Preview" mml-preview t])) 920 ["Preview" mml-preview t]
921 "----"
922 ["Emacs MIME manual" (lambda () (interactive) (message-info 4))
923 ,@(if (featurep 'xemacs) '(t)
924 '(:help "Display the Emacs MIME manual"))]
925 ["PGG manual" (lambda () (interactive) (message-info 16))
926 ,@(if (featurep 'xemacs) '(t)
927 '(:help "Display the PGG manual"))]))
920 928
921(defvar mml-mode nil 929(defvar mml-mode nil
922 "Minor mode for editing MML.") 930 "Minor mode for editing MML.")
@@ -1035,9 +1043,12 @@ See Info node `(emacs-mime)Composing'.
1035The file is not inserted or encoded until you send the message with 1043The file is not inserted or encoded until you send the message with
1036`\\[message-send-and-exit]' or `\\[message-send]'. 1044`\\[message-send-and-exit]' or `\\[message-send]'.
1037 1045
1038FILE is the name of the file to attach. TYPE is its content-type, a 1046FILE is the name of the file to attach. TYPE is its
1039string of the form \"type/subtype\". DESCRIPTION is a one-line 1047content-type, a string of the form \"type/subtype\". DESCRIPTION
1040description of the attachment." 1048is a one-line description of the attachment. The DISPOSITION
1049specifies how the attachment is intended to be displayed. It can
1050be either \"inline\" (displayed automatically within the message
1051body) or \"attachment\" (separate from the body)."
1041 (interactive 1052 (interactive
1042 (let* ((file (mml-minibuffer-read-file "Attach file: ")) 1053 (let* ((file (mml-minibuffer-read-file "Attach file: "))
1043 (type (mml-minibuffer-read-type file)) 1054 (type (mml-minibuffer-read-type file))
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 8b722c95586..32de2f60e22 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -467,14 +467,28 @@ spamoracle database."
467 "Logical exclusive `or'." 467 "Logical exclusive `or'."
468 (and (or a b) (not (and a b)))) 468 (and (or a b) (not (and a b))))
469 469
470(defun spam-group-ham-mark-p (group mark &optional spam)
471 (when (stringp group)
472 (let* ((marks (spam-group-ham-marks group spam))
473 (marks (if (symbolp mark)
474 marks
475 (mapcar 'symbol-value marks))))
476 (memq mark marks))))
477
478(defun spam-group-spam-mark-p (group mark)
479 (spam-group-ham-mark-p group mark t))
480
470(defun spam-group-ham-marks (group &optional spam) 481(defun spam-group-ham-marks (group &optional spam)
471 (when (stringp group) 482 (when (stringp group)
472 (let ((marks (car (if spam 483 (let* ((marks (if spam
473 (gnus-parameter-spam-marks group) 484 (gnus-parameter-spam-marks group)
474 (gnus-parameter-ham-marks group))))) 485 (gnus-parameter-ham-marks group)))
475 (if (listp (car marks)) 486 (marks (car marks))
476 (car marks) 487 (marks (if (listp (car marks)) (car marks) marks)))
477 marks)))) 488 marks)))
489
490(defun spam-group-spam-marks (group)
491 (spam-group-ham-marks group t))
478 492
479(defun spam-group-spam-contents-p (group) 493(defun spam-group-spam-contents-p (group)
480 (if (stringp group) 494 (if (stringp group)
@@ -1036,12 +1050,23 @@ functions")
1036 (nth 2 flist)))) 1050 (nth 2 flist))))
1037 1051
1038(defun spam-list-articles (articles classification) 1052(defun spam-list-articles (articles classification)
1039 (let ((marks (mapcar 'eval (spam-group-ham-marks gnus-newsgroup-name 1053 (let ((mark-check (if (eq classification 'spam)
1040 (eq classification 'spam)))) 1054 'spam-group-spam-mark-p
1041 list) 1055 'spam-group-ham-mark-p))
1056 list mark-cache-yes mark-cache-no)
1042 (dolist (article articles) 1057 (dolist (article articles)
1043 (if (memq (gnus-summary-article-mark article) marks) 1058 (let ((mark (gnus-summary-article-mark article)))
1044 (push article list))) 1059 (unless (memq mark mark-cache-no)
1060 (if (memq mark mark-cache-yes)
1061 (push article list)
1062 ;; else, we have to actually check the mark
1063 (if (funcall mark-check
1064 gnus-newsgroup-name
1065 mark)
1066 (progn
1067 (push article list)
1068 (push mark mark-cache-yes))
1069 (push mark mark-cache-no))))))
1045 list)) 1070 list))
1046 1071
1047(defun spam-register-routine (classification 1072(defun spam-register-routine (classification
diff --git a/lisp/hl-line.el b/lisp/hl-line.el
index 3dd56f2f239..c2d2d293010 100644
--- a/lisp/hl-line.el
+++ b/lisp/hl-line.el
@@ -1,7 +1,7 @@
1;;; hl-line.el --- highlight the current line 1;;; hl-line.el --- highlight the current line
2 2
3;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Dave Love <fx@gnu.org> 6;; Author: Dave Love <fx@gnu.org>
7;; Maintainer: FSF 7;; Maintainer: FSF
@@ -58,7 +58,7 @@
58;; it to nil to avoid highlighting specific buffers, when the global 58;; it to nil to avoid highlighting specific buffers, when the global
59;; mode is used. 59;; mode is used.
60 60
61;; In default whole the line is highlighted. The range of highlighting 61;; By default the whole line is highlighted. The range of highlighting
62;; can be changed by defining an appropriate function as the 62;; can be changed by defining an appropriate function as the
63;; buffer-local value of `hl-line-range-function'. 63;; buffer-local value of `hl-line-range-function'.
64 64
@@ -130,7 +130,7 @@ addition to `hl-line-highlight' on `post-command-hook'."
130 (remove-hook 'pre-command-hook #'hl-line-unhighlight t))) 130 (remove-hook 'pre-command-hook #'hl-line-unhighlight t)))
131 131
132(defun hl-line-highlight () 132(defun hl-line-highlight ()
133 "Active the Hl-Line overlay on the current line." 133 "Activate the Hl-Line overlay on the current line."
134 (if hl-line-mode ; Might be changed outside the mode function. 134 (if hl-line-mode ; Might be changed outside the mode function.
135 (progn 135 (progn
136 (unless hl-line-overlay 136 (unless hl-line-overlay
@@ -179,9 +179,9 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
179 (delete-overlay global-hl-line-overlay))) 179 (delete-overlay global-hl-line-overlay)))
180 180
181(defun hl-line-move (overlay) 181(defun hl-line-move (overlay)
182 "Move the hl-line-mode overlay. 182 "Move the Hl-Line overlay.
183If `hl-line-range-function' is non-nil, move the OVERLAY to the position 183If `hl-line-range-function' is non-nil, move the OVERLAY to the position
184where the function returns. If `hl-line-range-function' is nil, fill 184where the function returns. If `hl-line-range-function' is nil, fill
185the line including the point by OVERLAY." 185the line including the point by OVERLAY."
186 (let (tmp b e) 186 (let (tmp b e)
187 (if hl-line-range-function 187 (if hl-line-range-function
diff --git a/lisp/info.el b/lisp/info.el
index 61d59741078..912e31f62ad 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -129,21 +129,14 @@ The Lisp code is executed when the node is selected.")
129(put 'info-menu-5 'face-alias 'info-menu-star) 129(put 'info-menu-5 'face-alias 'info-menu-star)
130 130
131(defface info-xref 131(defface info-xref
132 '((((min-colors 88) 132 '((t :inherit link))
133 (class color) (background light)) :foreground "blue1" :underline t) 133 "Face for unvisited Info cross-references."
134 (((class color) (background light)) :foreground "blue" :underline t)
135 (((min-colors 88)
136 (class color) (background dark)) :foreground "cyan1" :underline t)
137 (((class color) (background dark)) :foreground "cyan" :underline t)
138 (t :underline t))
139 "Face for Info cross-references."
140 :group 'info) 134 :group 'info)
141 135
142(defface info-xref-visited 136(defface info-xref-visited
143 '((default :inherit info-xref) 137 '((t :inherit link-visited))
144 (((class color) (background light)) :foreground "magenta4")
145 (((class color) (background dark)) :foreground "violet"))
146 "Face for visited Info cross-references." 138 "Face for visited Info cross-references."
139 :version "22.1"
147 :group 'info) 140 :group 'info)
148 141
149(defcustom Info-fontify-visited-nodes t 142(defcustom Info-fontify-visited-nodes t
diff --git a/lisp/international/latexenc.el b/lisp/international/latexenc.el
index 51d70faf76c..17a9df20843 100644
--- a/lisp/international/latexenc.el
+++ b/lisp/international/latexenc.el
@@ -1,6 +1,6 @@
1;;; latexenc.el --- guess correct coding system in LaTeX files 1;;; latexenc.el --- guess correct coding system in LaTeX files
2 2
3;; Copyright (C) 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Arne J,Ax(Brgensen <arne@arnested.dk> 5;; Author: Arne J,Ax(Brgensen <arne@arnested.dk>
6;; Keywords: mule, coding system, latex 6;; Keywords: mule, coding system, latex
@@ -167,6 +167,7 @@ coding system names is determined from `latex-inputenc-coding-alist'."
167 (setq latexenc-main-file (tex-guess-main-file))))) 167 (setq latexenc-main-file (tex-guess-main-file)))))
168 ;; if we found a master/main file get the coding system from it 168 ;; if we found a master/main file get the coding system from it
169 (if (and latexenc-main-file 169 (if (and latexenc-main-file
170 (file-regular-p latexenc-main-file)
170 (file-readable-p latexenc-main-file)) 171 (file-readable-p latexenc-main-file))
171 (let* ((latexenc-dont-use-tex-guess-main-file-flag t) 172 (let* ((latexenc-dont-use-tex-guess-main-file-flag t)
172 (latexenc-dont-use-TeX-master-flag t) 173 (latexenc-dont-use-TeX-master-flag t)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 332b57381c3..ce104f74b11 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -517,8 +517,8 @@ Type \\[isearch-exit] to exit, leaving point at location found.
517Type LFD (C-j) to match end of line. 517Type LFD (C-j) to match end of line.
518Type \\[isearch-repeat-forward] to search again forward,\ 518Type \\[isearch-repeat-forward] to search again forward,\
519 \\[isearch-repeat-backward] to search again backward. 519 \\[isearch-repeat-backward] to search again backward.
520Type \\[isearch-yank-word-or-char] to yank word from buffer onto end of search\ 520Type \\[isearch-yank-word-or-char] to yank next word or character in buffer
521 string and search for it. 521 onto the end of the search string, and search for it.
522Type \\[isearch-del-char] to delete character from end of search string. 522Type \\[isearch-del-char] to delete character from end of search string.
523Type \\[isearch-yank-char] to yank char from buffer onto end of search\ 523Type \\[isearch-yank-char] to yank char from buffer onto end of search\
524 string and search for it. 524 string and search for it.
diff --git a/lisp/log-view.el b/lisp/log-view.el
index 91320f08dd9..e7a58dad8b7 100644
--- a/lisp/log-view.el
+++ b/lisp/log-view.el
@@ -1,7 +1,7 @@
1;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output 1;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output
2 2
3;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
4;; 2005 Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Author: Stefan Monnier <monnier@cs.yale.edu> 6;; Author: Stefan Monnier <monnier@cs.yale.edu>
7;; Keywords: rcs sccs cvs log version-control 7;; Keywords: rcs sccs cvs log version-control
@@ -225,8 +225,8 @@
225 225
226(defun log-view-minor-wrap (buf f) 226(defun log-view-minor-wrap (buf f)
227 (let ((data (with-current-buffer buf 227 (let ((data (with-current-buffer buf
228 (let* ((beg (if mark-active (region-beginning) (point))) 228 (let* ((beg (point))
229 (end (if mark-active (region-end) (point))) 229 (end (if mark-active (mark) (point)))
230 (fr (log-view-current-tag beg)) 230 (fr (log-view-current-tag beg))
231 (to (log-view-current-tag end))) 231 (to (log-view-current-tag end)))
232 (when (string-equal fr to) 232 (when (string-equal fr to)
@@ -235,8 +235,11 @@
235 (log-view-msg-next) 235 (log-view-msg-next)
236 (setq to (log-view-current-tag)))) 236 (setq to (log-view-current-tag))))
237 (cons 237 (cons
238 (cons (log-view-current-file) to) 238 ;; The first revision has to be the one at point, for
239 (cons (log-view-current-file) fr)))))) 239 ;; operations that only take one revision
240 ;; (e.g. cvs-mode-edit).
241 (cons (log-view-current-file) fr)
242 (cons (log-view-current-file) to))))))
240 (let ((cvs-branch-prefix (cdar data)) 243 (let ((cvs-branch-prefix (cdar data))
241 (cvs-secondary-branch-prefix (and (cdar data) (cddr data))) 244 (cvs-secondary-branch-prefix (and (cdar data) (cddr data)))
242 (cvs-minor-current-files 245 (cvs-minor-current-files
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index da801492210..7319589d9f0 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -543,7 +543,11 @@ This is set to nil by default.")
543 "*If non-nil, RMAIL uses MIME feature. 543 "*If non-nil, RMAIL uses MIME feature.
544If the value is t, RMAIL automatically shows MIME decoded message. 544If the value is t, RMAIL automatically shows MIME decoded message.
545If the value is neither t nor nil, RMAIL does not show MIME decoded message 545If the value is neither t nor nil, RMAIL does not show MIME decoded message
546until a user explicitly requires it." 546until a user explicitly requires it.
547
548Even if the value is non-nil, you can't use MIME feature
549if the feature specified by `rmail-mime-feature' is not available
550in your session."
547 :type '(choice (const :tag "on" t) 551 :type '(choice (const :tag "on" t)
548 (const :tag "off" nil) 552 (const :tag "off" nil)
549 (other :tag "when asked" ask)) 553 (other :tag "when asked" ask))
@@ -595,7 +599,10 @@ LIMIT is the position specifying the end of header.")
595(defvar rmail-mime-feature 'rmail-mime 599(defvar rmail-mime-feature 'rmail-mime
596 "Feature to require to load MIME support in Rmail. 600 "Feature to require to load MIME support in Rmail.
597When starting Rmail, if `rmail-enable-mime' is non-nil, 601When starting Rmail, if `rmail-enable-mime' is non-nil,
598this feature is required with `require'.") 602this feature is required with `require'.
603
604The default value is `rmail-mime'. This feature is provided by
605the rmail-mime package available at <http://www.m17n.org/rmail-mime/>.")
599 606
600;;;###autoload 607;;;###autoload
601(defvar rmail-decode-mime-charset t 608(defvar rmail-decode-mime-charset t
@@ -735,8 +742,14 @@ isn't provided."
735 (condition-case err 742 (condition-case err
736 (require rmail-mime-feature) 743 (require rmail-mime-feature)
737 (error 744 (error
738 (message "Feature `%s' not provided" rmail-mime-feature) 745 (display-warning
739 (sit-for 1) 746 :warning
747 (format "Although MIME support is requested
748by setting `rmail-enable-mime' to non-nil, the required feature
749`%s' (the value of `rmail-mime-feature')
750is not available in the current session.
751So, the MIME support is turned off for the moment."
752 rmail-mime-feature))
740 (setq rmail-enable-mime nil))))) 753 (setq rmail-enable-mime nil)))))
741 754
742 755
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index 97654ae92c5..bd37a41aef8 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -349,9 +349,11 @@ The optional fourth argument FROM-GNUS is set when called from GNUS."
349 (mail-fetch-field "sender") 349 (mail-fetch-field "sender")
350 "unknown")) 350 "unknown"))
351 " " (current-time-string) "\n")) 351 " " (current-time-string) "\n"))
352 (if mime-version 352 (when mime-version
353 (insert "MIME-Version: " mime-version 353 (insert "MIME-Version: " mime-version)
354 "\nContent-type: " content-type "\n")) 354 ;; Some malformed MIME messages set content-type to nil.
355 (when content-type
356 (insert "\nContent-type: " content-type "\n")))
355 ;; ``Quote'' "\nFrom " as "\n>From " 357 ;; ``Quote'' "\nFrom " as "\n>From "
356 ;; (note that this isn't really quoting, as there is no requirement 358 ;; (note that this isn't really quoting, as there is no requirement
357 ;; that "\n[>]+From " be quoted in the same transparent way.) 359 ;; that "\n[>]+From " be quoted in the same transparent way.)
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index 53cc392ad7a..dc3742c231a 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -1,6 +1,6 @@
1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*- 1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*-
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Michael Albinus <michael.albinus@gmx.de> 5;; Author: Michael Albinus <michael.albinus@gmx.de>
6;; Keywords: comm, processes 6;; Keywords: comm, processes
@@ -63,8 +63,40 @@ present for backward compatibility."
63 (a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist))) 63 (a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)))
64 (setq file-name-handler-alist 64 (setq file-name-handler-alist
65 (delete a1 (delete a2 file-name-handler-alist))))) 65 (delete a1 (delete a2 file-name-handler-alist)))))
66(tramp-disable-ange-ftp) 66
67(eval-after-load "ange-ftp" '(tramp-disable-ange-ftp)) 67(eval-after-load "ange-ftp"
68 '(when (functionp 'tramp-disable-ange-ftp)
69 (tramp-disable-ange-ftp)))
70
71;;;###autoload
72(defun tramp-ftp-enable-ange-ftp ()
73 ;; The following code is commented out in Ange-FTP.
74
75 ;;; This regexp takes care of real ange-ftp file names (with a slash
76 ;;; and colon).
77 ;;; Don't allow the host name to end in a period--some systems use /.:
78 (or (assoc "^/[^/:]*[^/:.]:" file-name-handler-alist)
79 (setq file-name-handler-alist
80 (cons '("^/[^/:]*[^/:.]:" . ange-ftp-hook-function)
81 file-name-handler-alist)))
82
83 ;;; This regexp recognizes absolute filenames with only one component,
84 ;;; for the sake of hostname completion.
85 (or (assoc "^/[^/:]*\\'" file-name-handler-alist)
86 (setq file-name-handler-alist
87 (cons '("^/[^/:]*\\'" . ange-ftp-completion-hook-function)
88 file-name-handler-alist)))
89
90 ;;; This regexp recognizes absolute filenames with only one component
91 ;;; on Windows, for the sake of hostname completion.
92 (and (memq system-type '(ms-dos windows-nt))
93 (or (assoc "^[a-zA-Z]:/[^/:]*\\'" file-name-handler-alist)
94 (setq file-name-handler-alist
95 (cons '("^[a-zA-Z]:/[^/:]*\\'" .
96 ange-ftp-completion-hook-function)
97 file-name-handler-alist)))))
98
99(add-hook 'tramp-ftp-unload-hook 'tramp-ftp-enable-ange-ftp)
68 100
69;; Define FTP method ... 101;; Define FTP method ...
70(defcustom tramp-ftp-method "ftp" 102(defcustom tramp-ftp-method "ftp"
diff --git a/lisp/net/tramp-util.el b/lisp/net/tramp-util.el
index acb10727d46..666471d6429 100644
--- a/lisp/net/tramp-util.el
+++ b/lisp/net/tramp-util.el
@@ -1,7 +1,8 @@
1;;; -*- coding: iso-2022-7bit; -*- 1;;; -*- coding: iso-2022-7bit; -*-
2;;; tramp-util.el --- Misc utility functions to use with Tramp 2;;; tramp-util.el --- Misc utility functions to use with Tramp
3 3
4;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
5;; 2006 Free Software Foundation, Inc.
5 6
6;; Author: kai.grossjohann@gmx.net 7;; Author: kai.grossjohann@gmx.net
7;; Keywords: comm, extensions, processes 8;; Keywords: comm, extensions, processes
@@ -31,6 +32,10 @@
31(eval-when-compile (require 'cl)) 32(eval-when-compile (require 'cl))
32(require 'compile) 33(require 'compile)
33(require 'tramp) 34(require 'tramp)
35(add-hook 'tramp-util-unload-hook
36 '(lambda ()
37 (when (featurep 'tramp)
38 (unload-feature 'tramp 'force))))
34 39
35;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp 40;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
36;; specific functions, like compilation. 41;; specific functions, like compilation.
@@ -42,7 +47,7 @@
42 (defalias 'define-minor-mode 'identity) 47 (defalias 'define-minor-mode 'identity)
43 (defvar tramp-minor-mode)) 48 (defvar tramp-minor-mode))
44 (unless (featurep 'xemacs) 49 (unless (featurep 'xemacs)
45 (defalias 'add-menu-button 'identity))) 50 (defalias 'add-menu-button 'ignore)))
46 51
47(defvar tramp-minor-mode-map (make-sparse-keymap) 52(defvar tramp-minor-mode-map (make-sparse-keymap)
48 "Keymap for Tramp minor mode.") 53 "Keymap for Tramp minor mode.")
@@ -57,7 +62,14 @@
57 (and tramp-minor-mode (tramp-tramp-file-p default-directory)))) 62 (and tramp-minor-mode (tramp-tramp-file-p default-directory))))
58 63
59(add-hook 'find-file-hooks 'tramp-minor-mode t) 64(add-hook 'find-file-hooks 'tramp-minor-mode t)
65(add-hook 'tramp-util-unload-hook
66 '(lambda ()
67 (remove-hook 'find-file-hooks 'tramp-minor-mode)))
68
60(add-hook 'dired-mode-hook 'tramp-minor-mode t) 69(add-hook 'dired-mode-hook 'tramp-minor-mode t)
70(add-hook 'tramp-util-unload-hook
71 '(lambda ()
72 (remove-hook 'dired-mode-hook 'tramp-minor-mode)))
61 73
62(defun tramp-remap-command (old-command new-command) 74(defun tramp-remap-command (old-command new-command)
63 "Replaces bindings of OLD-COMMAND by NEW-COMMAND. 75 "Replaces bindings of OLD-COMMAND by NEW-COMMAND.
diff --git a/lisp/net/tramp-vc.el b/lisp/net/tramp-vc.el
index c1806a4be24..368d85c8e57 100644
--- a/lisp/net/tramp-vc.el
+++ b/lisp/net/tramp-vc.el
@@ -1,7 +1,7 @@
1;;; tramp-vc.el --- Version control integration for TRAMP.el 1;;; tramp-vc.el --- Version control integration for TRAMP.el
2 2
3;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Daniel Pittman <daniel@danann.net> 6;; Author: Daniel Pittman <daniel@danann.net>
7;; Keywords: comm, processes 7;; Keywords: comm, processes
@@ -220,34 +220,37 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
220;; Daniel Pittman <daniel@danann.net> 220;; Daniel Pittman <daniel@danann.net>
221;;-(if (fboundp 'vc-call-backend) 221;;-(if (fboundp 'vc-call-backend)
222;;- () ;; This is the new VC for which we don't have an appropriate advice yet 222;;- () ;; This is the new VC for which we don't have an appropriate advice yet
223;;-)
223(unless (fboundp 'process-file) 224(unless (fboundp 'process-file)
224(if (fboundp 'vc-call-backend) 225 (if (fboundp 'vc-call-backend)
226 (defadvice vc-do-command
227 (around tramp-advice-vc-do-command
228 (buffer okstatus command file &rest flags)
229 activate)
230 "Invoke tramp-vc-do-command for tramp files."
231 (let ((file (symbol-value 'file))) ;pacify byte-compiler
232 (if (or (and (stringp file) (tramp-tramp-file-p file))
233 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
234 (setq ad-return-value
235 (apply 'tramp-vc-do-command-new buffer okstatus command
236 file ;(or file (buffer-file-name))
237 flags))
238 ad-do-it)))
225 (defadvice vc-do-command 239 (defadvice vc-do-command
226 (around tramp-advice-vc-do-command 240 (around tramp-advice-vc-do-command
227 (buffer okstatus command file &rest flags) 241 (buffer okstatus command file last &rest flags)
228 activate) 242 activate)
229 "Invoke tramp-vc-do-command for tramp files." 243 "Invoke tramp-vc-do-command for tramp files."
230 (let ((file (symbol-value 'file))) ;pacify byte-compiler 244 (let ((file (symbol-value 'file))) ;pacify byte-compiler
231 (if (or (and (stringp file) (tramp-tramp-file-p file)) 245 (if (or (and (stringp file) (tramp-tramp-file-p file))
232 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))) 246 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
233 (setq ad-return-value 247 (setq ad-return-value
234 (apply 'tramp-vc-do-command-new buffer okstatus command 248 (apply 'tramp-vc-do-command buffer okstatus command
235 file ;(or file (buffer-file-name)) 249 (or file (buffer-file-name)) last flags))
236 flags)) 250 ad-do-it))))
237 ad-do-it))) 251
238 (defadvice vc-do-command 252 (add-hook 'tramp-unload-hook
239 (around tramp-advice-vc-do-command 253 '(lambda () (ad-unadvise 'vc-do-command))))
240 (buffer okstatus command file last &rest flags)
241 activate)
242 "Invoke tramp-vc-do-command for tramp files."
243 (let ((file (symbol-value 'file))) ;pacify byte-compiler
244 (if (or (and (stringp file) (tramp-tramp-file-p file))
245 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
246 (setq ad-return-value
247 (apply 'tramp-vc-do-command buffer okstatus command
248 (or file (buffer-file-name)) last flags))
249 ad-do-it)))))
250;;-)
251 254
252 255
253;; XEmacs uses this to do some of its work. Like vc-do-command, we 256;; XEmacs uses this to do some of its work. Like vc-do-command, we
@@ -324,6 +327,9 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
324 (or file (buffer-file-name)) args)) 327 (or file (buffer-file-name)) args))
325 ad-do-it))) 328 ad-do-it)))
326 329
330(add-hook 'tramp-unload-hook
331 '(lambda () (ad-unadvise 'vc-simple-command)))
332
327 333
328;; `vc-workfile-unchanged-p' 334;; `vc-workfile-unchanged-p'
329;; This function does not deal well with remote files, so we do the 335;; This function does not deal well with remote files, so we do the
@@ -364,6 +370,9 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
364 (tramp-vc-workfile-unchanged-p filename want-differences-if-changed)) 370 (tramp-vc-workfile-unchanged-p filename want-differences-if-changed))
365 ad-do-it)) 371 ad-do-it))
366 372
373(add-hook 'tramp-unload-hook
374 '(lambda () (ad-unadvise 'vc-workfile-unchanged-p)))
375
367 376
368;; Redefine a function from vc.el -- allow tramp files. 377;; Redefine a function from vc.el -- allow tramp files.
369;; `save-match-data' seems not to be required -- it isn't in 378;; `save-match-data' seems not to be required -- it isn't in
@@ -445,6 +454,9 @@ filename we are thinking about..."
445 (tramp-handle-vc-user-login-name uid)))) ; get the owner name 454 (tramp-handle-vc-user-login-name uid)))) ; get the owner name
446 ad-do-it))) ; else call the original 455 ad-do-it))) ; else call the original
447 456
457(add-hook 'tramp-unload-hook
458 '(lambda () (ad-unadvise 'vc-user-login-name)))
459
448 460
449;; Determine the name of the user owning a file. 461;; Determine the name of the user owning a file.
450(defun tramp-file-owner (filename) 462(defun tramp-file-owner (filename)
@@ -486,6 +498,9 @@ filename we are thinking about..."
486 (tramp-file-owner filename)))) ; get the owner name 498 (tramp-file-owner filename)))) ; get the owner name
487 ad-do-it))) ; else call the original 499 ad-do-it))) ; else call the original
488 500
501(add-hook 'tramp-unload-hook
502 '(lambda () (ad-unadvise 'vc-file-owner)))
503
489 504
490;; We need to make the version control software backend version 505;; We need to make the version control software backend version
491;; information local to the current buffer. This is because each TRAMP 506;; information local to the current buffer. This is because each TRAMP
@@ -506,7 +521,11 @@ This makes remote VC work correctly at the cost of some processing time."
506 (tramp-tramp-file-p (buffer-file-name))) 521 (tramp-tramp-file-p (buffer-file-name)))
507 (make-local-variable 'vc-rcs-release) 522 (make-local-variable 'vc-rcs-release)
508 (setq vc-rcs-release nil))) 523 (setq vc-rcs-release nil)))
524
509(add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t) 525(add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t)
526(add-hook 'tramp-unload-hook
527 '(lambda ()
528 (remove-hook 'find-file-hooks 'tramp-vc-setup-for-remote)))
510 529
511;; No need to load this again if anyone asks. 530;; No need to load this again if anyone asks.
512(provide 'tramp-vc) 531(provide 'tramp-vc)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 8555c9a83c5..10a5dd9eedf 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2,7 +2,7 @@
2;;; tramp.el --- Transparent Remote Access, Multiple Protocol 2;;; tramp.el --- Transparent Remote Access, Multiple Protocol
3 3
4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
5;; 2005 Free Software Foundation, Inc. 5;; 2005, 2006 Free Software Foundation, Inc.
6 6
7;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 7;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
8;; Michael Albinus <michael.albinus@gmx.de> 8;; Michael Albinus <michael.albinus@gmx.de>
@@ -67,8 +67,15 @@
67 67
68;; The Tramp version number and bug report address, as prepared by configure. 68;; The Tramp version number and bug report address, as prepared by configure.
69(require 'trampver) 69(require 'trampver)
70(add-hook 'tramp-unload-hook
71 '(lambda ()
72 (when (featurep 'trampver)
73 (unload-feature 'trampver 'force))))
74
75(if (featurep 'xemacs)
76 (require 'timer-funcs)
77 (require 'timer))
70 78
71(require 'timer)
72(require 'format-spec) ;from Gnus 5.8, also in tar ball 79(require 'format-spec) ;from Gnus 5.8, also in tar ball
73;; As long as password.el is not part of (X)Emacs, it shouldn't 80;; As long as password.el is not part of (X)Emacs, it shouldn't
74;; be mandatory 81;; be mandatory
@@ -87,6 +94,10 @@
87 94
88(autoload 'tramp-uuencode-region "tramp-uu" 95(autoload 'tramp-uuencode-region "tramp-uu"
89 "Implementation of `uuencode' in Lisp.") 96 "Implementation of `uuencode' in Lisp.")
97(add-hook 'tramp-unload-hook
98 '(lambda ()
99 (when (featurep 'tramp-uu)
100 (unload-feature 'tramp-uu 'force))))
90 101
91(unless (fboundp 'uudecode-decode-region) 102(unless (fboundp 'uudecode-decode-region)
92 (autoload 'uudecode-decode-region "uudecode")) 103 (autoload 'uudecode-decode-region "uudecode"))
@@ -110,10 +121,20 @@ Nil means to use a separate filename syntax for Tramp.")
110;; tramp-ftp supports Ange-FTP only. Not suited for XEmacs therefore. 121;; tramp-ftp supports Ange-FTP only. Not suited for XEmacs therefore.
111(unless (featurep 'xemacs) 122(unless (featurep 'xemacs)
112 (eval-after-load "tramp" 123 (eval-after-load "tramp"
113 '(require 'tramp-ftp))) 124 '(progn
125 (require 'tramp-ftp)
126 (add-hook 'tramp-unload-hook
127 '(lambda ()
128 (when (featurep 'tramp-ftp)
129 (unload-feature 'tramp-ftp 'force)))))))
114(when (and tramp-unified-filenames (featurep 'xemacs)) 130(when (and tramp-unified-filenames (featurep 'xemacs))
115 (eval-after-load "tramp" 131 (eval-after-load "tramp"
116 '(require 'tramp-efs))) 132 '(progn
133 (require 'tramp-efs)
134 (add-hook 'tramp-unload-hook
135 '(lambda ()
136 (when (featurep 'tramp-efs)
137 (unload-feature 'tramp-efs 'force)))))))
117 138
118;; tramp-smb uses "smbclient" from Samba. 139;; tramp-smb uses "smbclient" from Samba.
119;; Not available under Cygwin and Windows, because they don't offer 140;; Not available under Cygwin and Windows, because they don't offer
@@ -121,7 +142,12 @@ Nil means to use a separate filename syntax for Tramp.")
121;; UNC file names like "//host/share/localname". 142;; UNC file names like "//host/share/localname".
122(unless (memq system-type '(cygwin windows-nt)) 143(unless (memq system-type '(cygwin windows-nt))
123 (eval-after-load "tramp" 144 (eval-after-load "tramp"
124 '(require 'tramp-smb))) 145 '(progn
146 (require 'tramp-smb)
147 (add-hook 'tramp-unload-hook
148 '(lambda ()
149 (when (featurep 'tramp-smb)
150 (unload-feature 'tramp-smb 'force)))))))
125 151
126(eval-when-compile 152(eval-when-compile
127 (require 'cl) 153 (require 'cl)
@@ -1445,7 +1471,7 @@ the visited file modtime.")
1445 ((fboundp 'md5-encode) 1471 ((fboundp 'md5-encode)
1446 (lambda (x) (base64-encode-string 1472 (lambda (x) (base64-encode-string
1447 (funcall (symbol-function 'md5-encode) x)))) 1473 (funcall (symbol-function 'md5-encode) x))))
1448 (t (error "Coulnd't find an `md5' function"))) 1474 (t (error "Couldn't find an `md5' function")))
1449 "Function to call for running the MD5 algorithm.") 1475 "Function to call for running the MD5 algorithm.")
1450 1476
1451(defvar tramp-end-of-output 1477(defvar tramp-end-of-output
@@ -2012,6 +2038,7 @@ The intent is to protect against `obsolete variable' warnings."
2012 (let ((,variable ,value)) 2038 (let ((,variable ,value))
2013 ,@body))) 2039 ,@body)))
2014(put 'tramp-let-maybe 'lisp-indent-function 2) 2040(put 'tramp-let-maybe 'lisp-indent-function 2)
2041(put 'tramp-let-maybe 'edebug-form-spec t)
2015 2042
2016;;; Config Manipulation Functions: 2043;;; Config Manipulation Functions:
2017 2044
@@ -2370,8 +2397,8 @@ target of the symlink differ."
2370 ;; 8. File modes, as a string of ten letters or dashes as in ls -l. 2397 ;; 8. File modes, as a string of ten letters or dashes as in ls -l.
2371 res-filemodes 2398 res-filemodes
2372 ;; 9. t iff file's gid would change if file were deleted and 2399 ;; 9. t iff file's gid would change if file were deleted and
2373 ;; recreated. 2400 ;; recreated. Will be set in `tramp-convert-file-attributes'
2374 nil ;hm? 2401 t
2375 ;; 10. inode number. 2402 ;; 10. inode number.
2376 res-inode 2403 res-inode
2377 ;; 11. Device number. Will be replaced by a virtual device number. 2404 ;; 11. Device number. Will be replaced by a virtual device number.
@@ -2627,9 +2654,12 @@ of."
2627(defun tramp-handle-file-ownership-preserved-p (filename) 2654(defun tramp-handle-file-ownership-preserved-p (filename)
2628 "Like `file-ownership-preserved-p' for tramp files." 2655 "Like `file-ownership-preserved-p' for tramp files."
2629 (with-parsed-tramp-file-name filename nil 2656 (with-parsed-tramp-file-name filename nil
2630 (or (not (file-exists-p filename)) 2657 (let ((attributes (file-attributes filename)))
2631 ;; Existing files must be writable. 2658 ;; Return t if the file doesn't exist, since it's true that no
2632 (zerop (tramp-run-test "-O" filename))))) 2659 ;; information would be lost by an (attempted) delete and create.
2660 (or (null attributes)
2661 (= (nth 2 attributes)
2662 (tramp-get-remote-uid multi-method method user host))))))
2633 2663
2634;; Other file name ops. 2664;; Other file name ops.
2635 2665
@@ -3487,6 +3517,17 @@ the result will be a local, non-Tramp, filename."
3487 (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname) 3517 (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
3488 (let ((uname (match-string 1 localname)) 3518 (let ((uname (match-string 1 localname))
3489 (fname (match-string 2 localname))) 3519 (fname (match-string 2 localname)))
3520 ;; We cannot simply apply "~/", because under sudo "~/" is
3521 ;; expanded to the local user home directory but to the
3522 ;; root home directory. On the other hand, using always
3523 ;; the default user name for tilde expansion is not
3524 ;; appropriate either, because ssh and companions might
3525 ;; use a user name from the config file.
3526 (when (and (string-equal uname "~")
3527 (string-match
3528 "\\`su\\(do\\)?\\'"
3529 (tramp-find-method multi-method method user host)))
3530 (setq uname (concat uname (or user "root"))))
3490 ;; CCC fanatic error checking? 3531 ;; CCC fanatic error checking?
3491 (set-buffer (tramp-get-buffer multi-method method user host)) 3532 (set-buffer (tramp-get-buffer multi-method method user host))
3492 (erase-buffer) 3533 (erase-buffer)
@@ -3499,17 +3540,24 @@ the result will be a local, non-Tramp, filename."
3499 (setq uname (buffer-substring (point) (tramp-line-end-position))) 3540 (setq uname (buffer-substring (point) (tramp-line-end-position)))
3500 (setq localname (concat uname fname)) 3541 (setq localname (concat uname fname))
3501 (erase-buffer))) 3542 (erase-buffer)))
3543 ;; There might be a double slash, for example when "~/"
3544 ;; expands to "/". Remove this.
3545 (while (string-match "//" localname)
3546 (setq localname (replace-match "/" t t localname)))
3502 ;; No tilde characters in file name, do normal 3547 ;; No tilde characters in file name, do normal
3503 ;; expand-file-name (this does "/./" and "/../"). We bind 3548 ;; expand-file-name (this does "/./" and "/../"). We bind
3504 ;; directory-sep-char here for XEmacs on Windows, which 3549 ;; directory-sep-char here for XEmacs on Windows, which would
3505 ;; would otherwise use backslash. 3550 ;; otherwise use backslash. `default-directory' is bound to
3551 ;; "/", because on Windows there would be problems with UNC
3552 ;; shares or Cygwin mounts.
3506 (tramp-let-maybe directory-sep-char ?/ 3553 (tramp-let-maybe directory-sep-char ?/
3507 (tramp-make-tramp-file-name 3554 (let ((default-directory "/"))
3508 multi-method (or method (tramp-find-default-method user host)) 3555 (tramp-make-tramp-file-name
3509 user host 3556 multi-method (or method (tramp-find-default-method user host))
3510 (tramp-drop-volume-letter 3557 user host
3511 (tramp-run-real-handler 'expand-file-name 3558 (tramp-drop-volume-letter
3512 (list localname))))))))) 3559 (tramp-run-real-handler 'expand-file-name
3560 (list localname))))))))))
3513 3561
3514;; old version follows. it uses ".." to cross file handler 3562;; old version follows. it uses ".." to cross file handler
3515;; boundaries. 3563;; boundaries.
@@ -4294,6 +4342,17 @@ Falls back to normal file name handler if no tramp file name handler exists."
4294 (cons tramp-completion-file-name-regexp 4342 (cons tramp-completion-file-name-regexp
4295 'tramp-completion-file-name-handler)) 4343 'tramp-completion-file-name-handler))
4296 4344
4345;;;###autoload
4346(defun tramp-unload-file-name-handler-alist ()
4347 (setq file-name-handler-alist
4348 (delete (rassoc 'tramp-file-name-handler
4349 file-name-handler-alist)
4350 (delete (rassoc 'tramp-completion-file-name-handler
4351 file-name-handler-alist)
4352 file-name-handler-alist))))
4353
4354(add-hook 'tramp-unload-hook 'tramp-unload-file-name-handler-alist)
4355
4297(defun tramp-repair-jka-compr () 4356(defun tramp-repair-jka-compr ()
4298 "If jka-compr is already loaded, move it to the front of 4357 "If jka-compr is already loaded, move it to the front of
4299`file-name-handler-alist'. On Emacs 22 or so this will not be 4358`file-name-handler-alist'. On Emacs 22 or so this will not be
@@ -4353,22 +4412,16 @@ necessary anymore."
4353 (read (current-buffer)))))) 4412 (read (current-buffer))))))
4354 (list (expand-file-name name)))))) 4413 (list (expand-file-name name))))))
4355 4414
4356;; Check for complete.el and override PC-expand-many-files if appropriate. 4415(eval-after-load "complete"
4357(eval-and-compile 4416 '(progn
4358 (defun tramp-save-PC-expand-many-files (name))); avoid compiler warning 4417 (defadvice PC-expand-many-files
4359 4418 (around tramp-advice-PC-expand-many-files (name) activate)
4360(defun tramp-setup-complete () 4419 "Invoke `tramp-handle-expand-many-files' for tramp files."
4361 (fset 'tramp-save-PC-expand-many-files 4420 (if (tramp-tramp-file-p name)
4362 (symbol-function 'PC-expand-many-files)) 4421 (setq ad-return-value (tramp-handle-expand-many-files name))
4363 (defun PC-expand-many-files (name) 4422 ad-do-it))
4364 (if (tramp-tramp-file-p name) 4423 (add-hook 'tramp-unload-hook
4365 (funcall (symbol-function 'expand-many-files) name) 4424 '(lambda () (ad-unadvise 'PC-expand-many-files)))))
4366 (tramp-save-PC-expand-many-files name))))
4367
4368;; Why isn't eval-after-load sufficient?
4369(if (fboundp 'PC-expand-many-files)
4370 (tramp-setup-complete)
4371 (eval-after-load "complete" '(tramp-setup-complete)))
4372 4425
4373;;; File name handler functions for completion mode 4426;;; File name handler functions for completion mode
4374 4427
@@ -4940,6 +4993,9 @@ Function may have 0-3 parameters."
4940 auto-save-default) 4993 auto-save-default)
4941 (auto-save-mode 1))) 4994 (auto-save-mode 1)))
4942(add-hook 'find-file-hooks 'tramp-set-auto-save t) 4995(add-hook 'find-file-hooks 'tramp-set-auto-save t)
4996(add-hook 'tramp-unload-hook
4997 '(lambda ()
4998 (remove-hook 'find-file-hooks 'tramp-set-auto-save)))
4943 4999
4944(defun tramp-run-test (switch filename) 5000(defun tramp-run-test (switch filename)
4945 "Run `test' on the remote system, given a SWITCH and a FILENAME. 5001 "Run `test' on the remote system, given a SWITCH and a FILENAME.
@@ -5532,6 +5588,7 @@ Maybe the different regular expressions need to be tuned.
5532 (or user (user-login-name)) host method) 5588 (or user (user-login-name)) host method)
5533 (let ((process-environment (copy-sequence process-environment))) 5589 (let ((process-environment (copy-sequence process-environment)))
5534 (setenv "TERM" tramp-terminal-type) 5590 (setenv "TERM" tramp-terminal-type)
5591 (setenv "PS1" "$ ")
5535 (let* ((default-directory (tramp-temporary-file-directory)) 5592 (let* ((default-directory (tramp-temporary-file-directory))
5536 ;; If we omit the conditional here, then we would use 5593 ;; If we omit the conditional here, then we would use
5537 ;; `undecided-dos' in some cases. With the conditional, 5594 ;; `undecided-dos' in some cases. With the conditional,
@@ -5608,6 +5665,7 @@ arguments, and xx will be used as the host name to connect to.
5608 (setq login-args (cons "-p" (cons (match-string 2 host) login-args))) 5665 (setq login-args (cons "-p" (cons (match-string 2 host) login-args)))
5609 (setq real-host (match-string 1 host))) 5666 (setq real-host (match-string 1 host)))
5610 (setenv "TERM" tramp-terminal-type) 5667 (setenv "TERM" tramp-terminal-type)
5668 (setenv "PS1" "$ ")
5611 (let* ((default-directory (tramp-temporary-file-directory)) 5669 (let* ((default-directory (tramp-temporary-file-directory))
5612 ;; If we omit the conditional, we would use 5670 ;; If we omit the conditional, we would use
5613 ;; `undecided-dos' in some cases. With the conditional, 5671 ;; `undecided-dos' in some cases. With the conditional,
@@ -5659,6 +5717,7 @@ prompt than you do, so it is not at all unlikely that the variable
5659 (or user "<root>") method) 5717 (or user "<root>") method)
5660 (let ((process-environment (copy-sequence process-environment))) 5718 (let ((process-environment (copy-sequence process-environment)))
5661 (setenv "TERM" tramp-terminal-type) 5719 (setenv "TERM" tramp-terminal-type)
5720 (setenv "PS1" "$ ")
5662 (let* ((default-directory (tramp-temporary-file-directory)) 5721 (let* ((default-directory (tramp-temporary-file-directory))
5663 ;; If we omit the conditional, we use `undecided-dos' in 5722 ;; If we omit the conditional, we use `undecided-dos' in
5664 ;; some cases. With the conditional, we use nil in these 5723 ;; some cases. With the conditional, we use nil in these
@@ -5723,6 +5782,7 @@ log in as u2 to h2."
5723 (tramp-message 7 "Opening `%s' connection..." multi-method) 5782 (tramp-message 7 "Opening `%s' connection..." multi-method)
5724 (let ((process-environment (copy-sequence process-environment))) 5783 (let ((process-environment (copy-sequence process-environment)))
5725 (setenv "TERM" tramp-terminal-type) 5784 (setenv "TERM" tramp-terminal-type)
5785 (setenv "PS1" "$ ")
5726 (let* ((default-directory (tramp-temporary-file-directory)) 5786 (let* ((default-directory (tramp-temporary-file-directory))
5727 ;; If we omit the conditional, we use `undecided-dos' in 5787 ;; If we omit the conditional, we use `undecided-dos' in
5728 ;; some cases. With the conditional, we use nil in these 5788 ;; some cases. With the conditional, we use nil in these
@@ -6203,8 +6263,17 @@ locale to C and sets up the remote shell search path."
6203 "ln" tramp-remote-path nil))) 6263 "ln" tramp-remote-path nil)))
6204 (when ln 6264 (when ln
6205 (tramp-set-connection-property "ln" ln multi-method method user host))) 6265 (tramp-set-connection-property "ln" ln multi-method method user host)))
6266 ;; Set uid and gid.
6206 (erase-buffer) 6267 (erase-buffer)
6268 (tramp-send-command multi-method method user host "id -u; id -g")
6269 (tramp-wait-for-output)
6270 (goto-char (point-min))
6271 (tramp-set-connection-property
6272 "uid" (read (current-buffer)) multi-method method user host)
6273 (tramp-set-connection-property
6274 "gid" (read (current-buffer)) multi-method method user host)
6207 ;; Find the right encoding/decoding commands to use. 6275 ;; Find the right encoding/decoding commands to use.
6276 (erase-buffer)
6208 (unless (tramp-method-out-of-band-p multi-method method user host) 6277 (unless (tramp-method-out-of-band-p multi-method method user host)
6209 (tramp-find-inline-encoding multi-method method user host)) 6278 (tramp-find-inline-encoding multi-method method user host))
6210 ;; If encoding/decoding command are given, test to see if they work. 6279 ;; If encoding/decoding command are given, test to see if they work.
@@ -6700,6 +6769,10 @@ Return ATTR."
6700 (unless (stringp (nth 8 attr)) 6769 (unless (stringp (nth 8 attr))
6701 ;; Convert file mode bits to string. 6770 ;; Convert file mode bits to string.
6702 (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr)))) 6771 (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr))))
6772 ;; Set file's gid change bit.
6773 (setcar (nthcdr 9 attr)
6774 (not (= (nth 3 attr)
6775 (tramp-get-remote-gid multi-method method user host))))
6703 ;; Set virtual device number. 6776 ;; Set virtual device number.
6704 (setcar (nthcdr 11 attr) 6777 (setcar (nthcdr 11 attr)
6705 (tramp-get-device multi-method method user host)) 6778 (tramp-get-device multi-method method user host))
@@ -6957,6 +7030,12 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
6957(defun tramp-get-remote-ln (multi-method method user host) 7030(defun tramp-get-remote-ln (multi-method method user host)
6958 (tramp-get-connection-property "ln" nil multi-method method user host)) 7031 (tramp-get-connection-property "ln" nil multi-method method user host))
6959 7032
7033(defun tramp-get-remote-uid (multi-method method user host)
7034 (tramp-get-connection-property "uid" nil multi-method method user host))
7035
7036(defun tramp-get-remote-gid (multi-method method user host)
7037 (tramp-get-connection-property "gid" nil multi-method method user host))
7038
6960;; Get a property of a TRAMP connection. 7039;; Get a property of a TRAMP connection.
6961(defun tramp-get-connection-property 7040(defun tramp-get-connection-property
6962 (property default multi-method method user host) 7041 (property default multi-method method user host)
@@ -6967,7 +7046,7 @@ If the value is not set for the connection, return `default'"
6967 (let (error) 7046 (let (error)
6968 (condition-case nil 7047 (condition-case nil
6969 (symbol-value (intern (concat "tramp-connection-property-" property))) 7048 (symbol-value (intern (concat "tramp-connection-property-" property)))
6970 (error default))))) 7049 (error default)))))
6971 7050
6972;; Set a property of a TRAMP connection. 7051;; Set a property of a TRAMP connection.
6973(defun tramp-set-connection-property 7052(defun tramp-set-connection-property
@@ -7045,7 +7124,9 @@ as default."
7045 "Invoke `tramp-handle-make-auto-save-file-name' for tramp files." 7124 "Invoke `tramp-handle-make-auto-save-file-name' for tramp files."
7046 (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))) 7125 (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))
7047 (setq ad-return-value (tramp-handle-make-auto-save-file-name)) 7126 (setq ad-return-value (tramp-handle-make-auto-save-file-name))
7048 ad-do-it))) 7127 ad-do-it))
7128 (add-hook 'tramp-unload-hook
7129 '(lambda () (ad-unadvise 'make-auto-save-file-name))))
7049 7130
7050;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have 7131;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have
7051;; permission 0666 minus umask. This is a security threat. 7132;; permission 0666 minus umask. This is a security threat.
@@ -7069,7 +7150,10 @@ as default."
7069 (and (featurep 'xemacs) 7150 (and (featurep 'xemacs)
7070 (= emacs-major-version 21) 7151 (= emacs-major-version 21)
7071 (> emacs-minor-version 4))) 7152 (> emacs-minor-version 4)))
7072 (add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes)) 7153 (add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes)
7154 (add-hook 'tramp-unload-hook
7155 '(lambda ()
7156 (remove-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))))
7073 7157
7074(defun tramp-subst-strs-in-string (alist string) 7158(defun tramp-subst-strs-in-string (alist string)
7075 "Replace all occurrences of the string FROM with TO in STRING. 7159 "Replace all occurrences of the string FROM with TO in STRING.
@@ -7296,7 +7380,9 @@ Only works for Bourne-like shells."
7296 (setq ad-return-value (list name)))) 7380 (setq ad-return-value (list name))))
7297 ;; If it is not a Tramp file, just run the original function. 7381 ;; If it is not a Tramp file, just run the original function.
7298 (let ((res ad-do-it)) 7382 (let ((res ad-do-it))
7299 (setq ad-return-value (or res (list name)))))))) 7383 (setq ad-return-value (or res (list name)))))))
7384 (add-hook 'tramp-unload-hook
7385 '(lambda () (ad-unadvise 'file-expand-wildcards))))
7300 7386
7301;; Tramp version is useful in a number of situations. 7387;; Tramp version is useful in a number of situations.
7302 7388
@@ -7521,6 +7607,25 @@ Therefore, the contents of files might be included in the debug buffer(s).")
7521 7607
7522(defalias 'tramp-submit-bug 'tramp-bug) 7608(defalias 'tramp-submit-bug 'tramp-bug)
7523 7609
7610;; Checklist for `tramp-unload-hook'
7611;; - Unload all `tramp-*' packages
7612;; - Reset `file-name-handler-alist'
7613;; - Cleanup hooks where Tramp functions are in
7614;; - Cleanup advised functions
7615;; - Cleanup autoloads
7616;;;###autoload
7617(defun tramp-unload-tramp ()
7618 (interactive)
7619 ;; When Tramp is not loaded yet, its autoloads are still active.
7620 (tramp-unload-file-name-handler-alist)
7621 ;; ange-ftp settings must be enabled.
7622 (when (functionp 'tramp-ftp-enable-ange-ftp)
7623 (funcall (symbol-function 'tramp-ftp-enable-ange-ftp)))
7624 ;; `tramp-util' unloads also `tramp'.
7625 (condition-case nil ;; maybe its not loaded yet.
7626 (unload-feature (if (featurep 'tramp-util) 'tramp-util 'tramp) 'force)
7627 (error nil)))
7628
7524(provide 'tramp) 7629(provide 'tramp)
7525 7630
7526;; Make sure that we get integration with the VC package. 7631;; Make sure that we get integration with the VC package.
@@ -7528,7 +7633,12 @@ Therefore, the contents of files might be included in the debug buffer(s).")
7528;; This must come after (provide 'tramp) because tramp-vc.el 7633;; This must come after (provide 'tramp) because tramp-vc.el
7529;; requires tramp. 7634;; requires tramp.
7530(eval-after-load "vc" 7635(eval-after-load "vc"
7531 '(require 'tramp-vc)) 7636 '(progn
7637 (require 'tramp-vc)
7638 (add-hook 'tramp-unload-hook
7639 '(lambda ()
7640 (when (featurep 'tramp-vc)
7641 (unload-feature 'tramp-vc 'force))))))
7532 7642
7533;;; TODO: 7643;;; TODO:
7534 7644
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index 650f1a727a7..632d958249d 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -30,7 +30,7 @@
30;; are auto-frobbed from configure.ac, so you should edit that file and run 30;; are auto-frobbed from configure.ac, so you should edit that file and run
31;; "autoconf && ./configure" to change them. 31;; "autoconf && ./configure" to change them.
32 32
33(defconst tramp-version "2.0.51" 33(defconst tramp-version "2.0.52"
34 "This version of Tramp.") 34 "This version of Tramp.")
35 35
36(defconst tramp-bug-report-address "tramp-devel@gnu.org" 36(defconst tramp-bug-report-address "tramp-devel@gnu.org"
diff --git a/lisp/outline.el b/lisp/outline.el
index 8a05aaf0cd9..eed84bd61c7 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -803,11 +803,12 @@ Show the heading too, if it is currently invisible."
803 (outline-flag-subtree t)) 803 (outline-flag-subtree t))
804 804
805(defun hide-leaves () 805(defun hide-leaves ()
806 "Hide all body after this heading at deeper levels." 806 "Hide the body after this heading and at deeper levels."
807 (interactive) 807 (interactive)
808 (save-excursion 808 (save-excursion
809 (outline-back-to-heading) 809 (outline-back-to-heading)
810 (outline-end-of-heading) 810;; Turned off to fix bug reported by Otto Maddox on 22 Nov 2005.
811;; (outline-end-of-heading)
811 (hide-region-body (point) (progn (outline-end-of-subtree) (point))))) 812 (hide-region-body (point) (progn (outline-end-of-subtree) (point)))))
812 813
813(defun show-subtree () 814(defun show-subtree ()
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index 85e15470dbc..32dfd6254c3 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -89,7 +89,7 @@
89 (set what ww) 89 (set what ww)
90 first)) 90 first))
91 91
92(defvar doc-mode-map 92(defvar doctor-mode-map
93 (let ((map (make-sparse-keymap))) 93 (let ((map (make-sparse-keymap)))
94 (define-key map "\n" 'doctor-read-print) 94 (define-key map "\n" 'doctor-read-print)
95 (define-key map "\r" 'doctor-ret-or-read) 95 (define-key map "\r" 'doctor-ret-or-read)
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index cf119bde719..06a141016e5 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -526,6 +526,8 @@ You can also use the keyboard accelerators indicated like this: [K]ey."
526 'cpp-edit-toggle-unknown) 526 'cpp-edit-toggle-unknown)
527 (insert (format "\n\n\n%39s: %14s %14s %7s\n\n" "Expression" 527 (insert (format "\n\n\n%39s: %14s %14s %7s\n\n" "Expression"
528 "[T]rue Face" "[F]alse Face" "[W]rite")) 528 "[T]rue Face" "[F]alse Face" "[W]rite"))
529
530 (setq symbols (reverse symbols))
529 (while symbols 531 (while symbols
530 (let* ((symbol (car symbols)) 532 (let* ((symbol (car symbols))
531 (entry (assoc symbol cpp-edit-list)) 533 (entry (assoc symbol cpp-edit-list))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 6ed2e39e4e8..0ed58fd558e 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1743,7 +1743,7 @@ lines count as headers.
1743 (set (make-local-variable 'eldoc-documentation-function) 1743 (set (make-local-variable 'eldoc-documentation-function)
1744 #'python-eldoc-function) 1744 #'python-eldoc-function)
1745 (add-hook 'eldoc-mode-hook 1745 (add-hook 'eldoc-mode-hook
1746 '(lambda () (run-python 0 t)) nil t) ; need it running 1746 '(lambda () (run-python nil t)) nil t) ; need it running
1747 (if (featurep 'hippie-exp) 1747 (if (featurep 'hippie-exp)
1748 (set (make-local-variable 'hippie-expand-try-functions-list) 1748 (set (make-local-variable 'hippie-expand-try-functions-list)
1749 (cons 'python-try-complete hippie-expand-try-functions-list))) 1749 (cons 'python-try-complete hippie-expand-try-functions-list)))
diff --git a/lisp/ses.el b/lisp/ses.el
index 4c959c015a7..debb22d84db 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -1,6 +1,6 @@
1;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*- 1;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*-
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Jonathan Yavner <jyavner@member.fsf.org> 5;; Author: Jonathan Yavner <jyavner@member.fsf.org>
6;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org> 6;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org>
@@ -148,8 +148,7 @@ Each function is called with ARG=1."
148 (newmap (make-sparse-keymap))) 148 (newmap (make-sparse-keymap)))
149 (set-keymap-parent newmap minibuffer-local-map) 149 (set-keymap-parent newmap minibuffer-local-map)
150 (while keys 150 (while keys
151 (define-key newmap (car keys) (cadr keys)) 151 (define-key newmap (pop keys) (pop keys)))
152 (setq keys (cddr keys)))
153 newmap) 152 newmap)
154 "Local keymap for SES minibuffer cell-editing.") 153 "Local keymap for SES minibuffer cell-editing.")
155 154
@@ -1865,20 +1864,20 @@ cell formula was unsafe and user declined confirmation."
1865(defun ses-read-cell (row col newval) 1864(defun ses-read-cell (row col newval)
1866 "Self-insert for initial character of cell function." 1865 "Self-insert for initial character of cell function."
1867 (interactive 1866 (interactive
1868 (let ((initial (this-command-keys)) 1867 (let* ((initial (this-command-keys))
1869 (rowcol (progn (ses-check-curcell) (ses-sym-rowcol ses--curcell)))) 1868 (rowcol (progn (ses-check-curcell) (ses-sym-rowcol ses--curcell)))
1869 (curval (ses-cell-formula (car rowcol) (cdr rowcol))))
1870 (barf-if-buffer-read-only) 1870 (barf-if-buffer-read-only)
1871 (if (string= initial "\"")
1872 (setq initial "\"\"") ;Enter a string
1873 (if (string= initial "(")
1874 (setq initial "()"))) ;Enter a formula list
1875 (list (car rowcol) 1871 (list (car rowcol)
1876 (cdr rowcol) 1872 (cdr rowcol)
1877 (read-from-minibuffer (format "Cell %s: " ses--curcell) 1873 (read-from-minibuffer
1878 (cons initial 2) 1874 (format "Cell %s: " ses--curcell)
1879 ses-mode-edit-map 1875 (cons (if (equal initial "\"") "\"\""
1880 t ;Convert to Lisp object 1876 (if (equal initial "(") "()" initial)) 2)
1881 'ses-read-cell-history)))) 1877 ses-mode-edit-map
1878 t ;Convert to Lisp object
1879 'ses-read-cell-history
1880 (prin1-to-string curval)))))
1882 (when (ses-edit-cell row col newval) 1881 (when (ses-edit-cell row col newval)
1883 (ses-command-hook) ;Update cell widths before movement 1882 (ses-command-hook) ;Update cell widths before movement
1884 (dolist (x ses-after-entry-functions) 1883 (dolist (x ses-after-entry-functions)
diff --git a/lisp/simple.el b/lisp/simple.el
index 1f00d52155e..087961fabac 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1,7 +1,7 @@
1;;; simple.el --- basic editing commands for Emacs 1;;; simple.el --- basic editing commands for Emacs
2 2
3;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Maintainer: FSF 6;; Maintainer: FSF
7;; Keywords: internal 7;; Keywords: internal
@@ -3185,8 +3185,9 @@ for mark off the local mark ring \(this does not affect the global
3185mark ring\). Use \\[pop-global-mark] to jump to a mark off the global 3185mark ring\). Use \\[pop-global-mark] to jump to a mark off the global
3186mark ring \(see `pop-global-mark'\). 3186mark ring \(see `pop-global-mark'\).
3187 3187
3188Repeating the \\[set-mark-command] command without the prefix jumps to 3188If `set-mark-command-repeat-pop' is non-nil, repeating
3189the next position off the local (or global) mark ring. 3189the \\[set-mark-command] command with no prefix pops the next position
3190off the local (or global) mark ring and jumps there.
3190 3191
3191With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \ 3192With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \
3192\\[universal-argument] \\[set-mark-command], unconditionally 3193\\[universal-argument] \\[set-mark-command], unconditionally
@@ -3734,7 +3735,13 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
3734 (or arg (setq arg 1)) 3735 (or arg (setq arg 1))
3735 (if (/= arg 1) 3736 (if (/= arg 1)
3736 (line-move (1- arg) t)) 3737 (line-move (1- arg) t))
3737 (beginning-of-line 1) 3738
3739 ;; Move to beginning-of-line, ignoring fields and invisibles.
3740 (skip-chars-backward "^\n")
3741 (while (and (not (bobp)) (line-move-invisible-p (1- (point))))
3742 (goto-char (previous-char-property-change (1- (point))))
3743 (skip-chars-backward "^\n"))
3744
3738 (let ((orig (point))) 3745 (let ((orig (point)))
3739 (vertical-motion 0) 3746 (vertical-motion 0)
3740 (if (/= orig (point)) 3747 (if (/= orig (point))
@@ -5028,8 +5035,8 @@ select the completion near point.\n\n")))))
5028 (goto-char (point-min)) 5035 (goto-char (point-min))
5029 (search-forward "\n\n") 5036 (search-forward "\n\n")
5030 (forward-line 1)))) 5037 (forward-line 1))))
5031 5038
5032;; Support keyboard commands to turn on various modifiers. 5039;;; Support keyboard commands to turn on various modifiers.
5033 5040
5034;; These functions -- which are not commands -- each add one modifier 5041;; These functions -- which are not commands -- each add one modifier
5035;; to the following event. 5042;; to the following event.
@@ -5094,7 +5101,7 @@ PREFIX is the string that represents this modifier in an event type symbol."
5094(define-key function-key-map [?\C-x ?@ ?a] 'event-apply-alt-modifier) 5101(define-key function-key-map [?\C-x ?@ ?a] 'event-apply-alt-modifier)
5095(define-key function-key-map [?\C-x ?@ ?S] 'event-apply-shift-modifier) 5102(define-key function-key-map [?\C-x ?@ ?S] 'event-apply-shift-modifier)
5096(define-key function-key-map [?\C-x ?@ ?c] 'event-apply-control-modifier) 5103(define-key function-key-map [?\C-x ?@ ?c] 'event-apply-control-modifier)
5097 5104
5098;;;; Keypad support. 5105;;;; Keypad support.
5099 5106
5100;;; Make the keypad keys act like ordinary typing keys. If people add 5107;;; Make the keypad keys act like ordinary typing keys. If people add
@@ -5189,7 +5196,8 @@ after it has been set up properly in other respects."
5189 (error "Cannot clone a file-visiting buffer")) 5196 (error "Cannot clone a file-visiting buffer"))
5190 (if (get major-mode 'no-clone) 5197 (if (get major-mode 'no-clone)
5191 (error "Cannot clone a buffer in %s mode" mode-name)) 5198 (error "Cannot clone a buffer in %s mode" mode-name))
5192 (list (if current-prefix-arg (read-string "Name: ")) 5199 (list (if current-prefix-arg
5200 (read-buffer "Name of new cloned buffer: " (current-buffer)))
5193 t))) 5201 t)))
5194 (if buffer-file-name 5202 (if buffer-file-name
5195 (error "Cannot clone a file-visiting buffer")) 5203 (error "Cannot clone a file-visiting buffer"))
@@ -5236,7 +5244,12 @@ after it has been set up properly in other respects."
5236 ;; Run any hooks (typically set up by the major mode 5244 ;; Run any hooks (typically set up by the major mode
5237 ;; for cloning to work properly). 5245 ;; for cloning to work properly).
5238 (run-hooks 'clone-buffer-hook)) 5246 (run-hooks 'clone-buffer-hook))
5239 (if display-flag (pop-to-buffer new)) 5247 (if display-flag
5248 ;; Presumably the current buffer is shown in the selected frame, so
5249 ;; we want to display the clone elsewhere.
5250 (let ((same-window-regexps nil)
5251 (same-window-buffer-names))
5252 (pop-to-buffer new)))
5240 new)) 5253 new))
5241 5254
5242 5255
@@ -5259,7 +5272,7 @@ front of the list of recently selected ones."
5259 (if (get major-mode 'no-clone-indirect) 5272 (if (get major-mode 'no-clone-indirect)
5260 (error "Cannot indirectly clone a buffer in %s mode" mode-name)) 5273 (error "Cannot indirectly clone a buffer in %s mode" mode-name))
5261 (list (if current-prefix-arg 5274 (list (if current-prefix-arg
5262 (read-string "BName of indirect buffer: ")) 5275 (read-buffer "Name of indirect buffer: " (current-buffer)))
5263 t))) 5276 t)))
5264 (if (get major-mode 'no-clone-indirect) 5277 (if (get major-mode 'no-clone-indirect)
5265 (error "Cannot indirectly clone a buffer in %s mode" mode-name)) 5278 (error "Cannot indirectly clone a buffer in %s mode" mode-name))
@@ -5278,7 +5291,13 @@ front of the list of recently selected ones."
5278Select the new buffer in another window. 5291Select the new buffer in another window.
5279Optional second arg NORECORD non-nil means do not put this buffer at 5292Optional second arg NORECORD non-nil means do not put this buffer at
5280the front of the list of recently selected ones." 5293the front of the list of recently selected ones."
5281 (interactive "bClone buffer in other window: ") 5294 (interactive
5295 (progn
5296 (if (get major-mode 'no-clone-indirect)
5297 (error "Cannot indirectly clone a buffer in %s mode" mode-name))
5298 (list (if current-prefix-arg
5299 (read-buffer "Name of indirect buffer: " (current-buffer)))
5300 t)))
5282 (let ((pop-up-windows t)) 5301 (let ((pop-up-windows t))
5283 (set-buffer buffer) 5302 (set-buffer buffer)
5284 (clone-indirect-buffer nil t norecord))) 5303 (clone-indirect-buffer nil t norecord)))
diff --git a/lisp/startup.el b/lisp/startup.el
index df20bc14685..d2f5de838c8 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -41,7 +41,9 @@
41 :group 'internal) 41 :group 'internal)
42 42
43(defcustom inhibit-splash-screen nil 43(defcustom inhibit-splash-screen nil
44 "*Non-nil inhibits the startup screen. 44 "Non-nil inhibits the startup screen.
45It also inhibits display of the initial message in the *scratch* buffer.
46
45This is for use in your personal init file, once you are familiar 47This is for use in your personal init file, once you are familiar
46with the contents of the startup screen." 48with the contents of the startup screen."
47 :type 'boolean 49 :type 'boolean
@@ -1087,7 +1089,9 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
1087 1089
1088") 1090")
1089 "Initial message displayed in *scratch* buffer at startup. 1091 "Initial message displayed in *scratch* buffer at startup.
1090If this is nil, no message will be displayed." 1092If this is nil, no message will be displayed.
1093If `inhibit-splash-screen' is non-nil, then no message is displayed,
1094regardless of the value of this variable."
1091 :type '(choice (text :tag "Message") 1095 :type '(choice (text :tag "Message")
1092 (const :tag "none" nil)) 1096 (const :tag "none" nil))
1093 :group 'initialization) 1097 :group 'initialization)
@@ -1631,7 +1635,7 @@ normal otherwise."
1631 (longopts 1635 (longopts
1632 (append '(("--funcall") ("--load") ("--insert") ("--kill") 1636 (append '(("--funcall") ("--load") ("--insert") ("--kill")
1633 ("--directory") ("--eval") ("--execute") ("--no-splash") 1637 ("--directory") ("--eval") ("--execute") ("--no-splash")
1634 ("--find-file") ("--visit") ("--file")) 1638 ("--find-file") ("--visit") ("--file") ("--no-desktop"))
1635 (mapcar (lambda (elt) 1639 (mapcar (lambda (elt)
1636 (list (concat "-" (car elt)))) 1640 (list (concat "-" (car elt))))
1637 command-switch-alist))) 1641 command-switch-alist)))
@@ -1731,6 +1735,13 @@ normal otherwise."
1731 ((equal argi "-kill") 1735 ((equal argi "-kill")
1732 (kill-emacs t)) 1736 (kill-emacs t))
1733 1737
1738 ;; This is for when they use --no-desktop with -q, or
1739 ;; don't load Desktop in their .emacs. If desktop.el
1740 ;; _is_ loaded, it will handle this switch, and we
1741 ;; won't see it by the time we get here.
1742 ((equal argi "-no-desktop")
1743 (message "\"--no-desktop\" ignored because the Desktop package is not loaded"))
1744
1734 ((string-match "^\\+[0-9]+\\'" argi) 1745 ((string-match "^\\+[0-9]+\\'" argi)
1735 (setq line (string-to-number argi))) 1746 (setq line (string-to-number argi)))
1736 1747
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index ac067f34fef..a083d308036 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -1,7 +1,7 @@
1;;; w32-win.el --- parse switches controlling interface with W32 window system 1;;; w32-win.el --- parse switches controlling interface with W32 window system
2 2
3;; Copyright (C) 1993, 1994, 2002, 2003, 2004, 3;; Copyright (C) 1993, 1994, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Kevin Gallo 6;; Author: Kevin Gallo
7;; Keywords: terminals 7;; Keywords: terminals
@@ -1232,7 +1232,7 @@ font dialog to get the matching FONTS. Otherwise use a pop-up menu
1232 (png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll") 1232 (png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll")
1233 (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll") 1233 (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
1234 (tiff "libtiff3.dll" "libtiff.dll") 1234 (tiff "libtiff3.dll" "libtiff.dll")
1235 (gif "libungif.dll"))) 1235 (gif "giflib4.dll" "libungif4.dll" "libungif.dll")))
1236 1236
1237;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166 1237;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166
1238;;; w32-win.el ends here 1238;;; w32-win.el ends here
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 6bb3c0d642c..c708355ce7e 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1049,6 +1049,7 @@ At most `bibtex-entry-kill-ring-max' items are kept here.")
1049 "Completion table for BibTeX string keys. 1049 "Completion table for BibTeX string keys.
1050Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.") 1050Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.")
1051(make-variable-buffer-local 'bibtex-strings) 1051(make-variable-buffer-local 'bibtex-strings)
1052(put 'bibtex-strings 'risky-local-variable t)
1052 1053
1053(defvar bibtex-reference-keys 1054(defvar bibtex-reference-keys
1054 (lazy-completion-table bibtex-reference-keys 1055 (lazy-completion-table bibtex-reference-keys
@@ -1056,6 +1057,7 @@ Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.")
1056 "Completion table for BibTeX reference keys. 1057 "Completion table for BibTeX reference keys.
1057The CDRs of the elements are t for header keys and nil for crossref keys.") 1058The CDRs of the elements are t for header keys and nil for crossref keys.")
1058(make-variable-buffer-local 'bibtex-reference-keys) 1059(make-variable-buffer-local 'bibtex-reference-keys)
1060(put 'bibtex-reference-keys 'risky-local-variable t)
1059 1061
1060(defvar bibtex-buffer-last-parsed-tick nil 1062(defvar bibtex-buffer-last-parsed-tick nil
1061 "Value of `buffer-modified-tick' last time buffer was parsed for keys.") 1063 "Value of `buffer-modified-tick' last time buffer was parsed for keys.")
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index a4930324e95..61192bbbe1c 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -2080,7 +2080,8 @@ The word checked is the word at the mouse position."
2080 corrects) 2080 corrects)
2081 '())) 2081 '()))
2082 (affix (car (cdr (cdr (cdr poss))))) 2082 (affix (car (cdr (cdr (cdr poss)))))
2083 (base-menu (let ((save (if (consp affix) 2083 show-affix-info
2084 (base-menu (let ((save (if (and (consp affix) show-affix-info)
2084 (list 2085 (list
2085 (list (concat "Save affix: " (car affix)) 2086 (list (concat "Save affix: " (car affix))
2086 'save) 2087 'save)
@@ -2121,7 +2122,8 @@ The word checked is the word at the mouse position."
2121 corrects) 2122 corrects)
2122 '())) 2123 '()))
2123 (affix (car (cdr (cdr (cdr poss))))) 2124 (affix (car (cdr (cdr (cdr poss)))))
2124 (menu (let ((save (if (consp affix) 2125 show-affix-info
2126 (menu (let ((save (if (and (consp affix) show-affix-info)
2125 (vector 2127 (vector
2126 (concat "Save affix: " (car affix)) 2128 (concat "Save affix: " (car affix))
2127 (list 'flyspell-do-correct 2129 (list 'flyspell-do-correct
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 7c686091319..926cc56bfe9 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 4.03 8;; Version: 4.04
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -81,6 +81,10 @@
81;; 81;;
82;; Changes since version 4.00: 82;; Changes since version 4.00:
83;; --------------------------- 83;; ---------------------------
84;; Version 4.04
85;; - Cleanup tags display in agenda.
86;; - Bug fixes.
87;;
84;; Version 4.03 88;; Version 4.03
85;; - Table alignment fixed for use with wide characters. 89;; - Table alignment fixed for use with wide characters.
86;; - `C-c -' leaves cursor in current table line. 90;; - `C-c -' leaves cursor in current table line.
@@ -111,7 +115,7 @@
111 115
112;;; Customization variables 116;;; Customization variables
113 117
114(defvar org-version "4.03" 118(defvar org-version "4.04"
115 "The version number of the file org.el.") 119 "The version number of the file org.el.")
116(defun org-version () 120(defun org-version ()
117 (interactive) 121 (interactive)
@@ -608,7 +612,8 @@ the prefix, you could use:
608 612
609 (setq org-agenda-prefix-format \" %-11:c% s\") 613 (setq org-agenda-prefix-format \" %-11:c% s\")
610 614
611See also the variable `org-agenda-remove-times-when-in-prefix'." 615See also the variables `org-agenda-remove-times-when-in-prefix' and
616`org-agenda-remove-tags-when-in-prefix'."
612 :type 'string 617 :type 'string
613 :group 'org-agenda) 618 :group 'org-agenda)
614 619
@@ -691,6 +696,16 @@ agenda entries."
691 :group 'org-agenda 696 :group 'org-agenda
692 :type 'boolean) 697 :type 'boolean)
693 698
699(defcustom org-agenda-remove-tags-when-in-prefix nil
700 "Non-nil means, the tags from copy of headline in agenda.
701When this is the symbol `prefix', only remove tags when
702`org-agenda-prefix-format' contains a `%T' specifier."
703 :group 'org-agenda
704 :type '(choice
705 (const :tag "Always" t)
706 (const :tag "Never" nil)
707 (const :tag "When prefix format contains %T" prefix)))
708
694(defgroup org-structure nil 709(defgroup org-structure nil
695 "Options concerning structure editing in Org-mode." 710 "Options concerning structure editing in Org-mode."
696 :tag "Org Structure" 711 :tag "Org Structure"
@@ -1875,42 +1890,43 @@ When this is non-nil, the headline after the keyword is set to the
1875 1890
1876;; Tell the compiler about dynamically scoped variables, 1891;; Tell the compiler about dynamically scoped variables,
1877;; and variables from other packages 1892;; and variables from other packages
1878(defvar zmacs-regions) 1893(eval-when-compile
1879(defvar original-date) 1894 (defvar zmacs-regions)
1880(defvar org-transient-mark-mode) 1895 (defvar original-date)
1881(defvar org-old-auto-fill-inhibit-regexp) 1896 (defvar org-transient-mark-mode)
1882(defvar orgtbl-mode-menu) 1897 (defvar org-old-auto-fill-inhibit-regexp)
1883(defvar org-html-entities) 1898 (defvar orgtbl-mode-menu)
1884(defvar org-goto-start-pos) 1899 (defvar org-html-entities)
1885(defvar org-cursor-color) 1900 (defvar org-goto-start-pos)
1886(defvar org-time-was-given) 1901 (defvar org-cursor-color)
1887(defvar org-ts-what) 1902 (defvar org-time-was-given)
1888(defvar mark-active) 1903 (defvar org-ts-what)
1889(defvar timecnt) 1904 (defvar mark-active)
1890(defvar levels-open) 1905 (defvar timecnt)
1891(defvar title) 1906 (defvar levels-open)
1892(defvar author) 1907 (defvar title)
1893(defvar email) 1908 (defvar author)
1894(defvar text) 1909 (defvar email)
1895(defvar entry) 1910 (defvar text)
1896(defvar date) 1911 (defvar entry)
1897(defvar language) 1912 (defvar date)
1898(defvar options) 1913 (defvar language)
1899(defvar ans1) 1914 (defvar options)
1900(defvar ans2) 1915 (defvar ans1)
1901(defvar starting-day) 1916 (defvar ans2)
1902(defvar include-all-loc) 1917 (defvar starting-day)
1903(defvar vm-message-pointer) 1918 (defvar include-all-loc)
1904(defvar vm-folder-directory) 1919 (defvar vm-message-pointer)
1905(defvar wl-summary-buffer-elmo-folder) 1920 (defvar vm-folder-directory)
1906(defvar wl-summary-buffer-folder-name) 1921 (defvar wl-summary-buffer-elmo-folder)
1907(defvar gnus-group-name) 1922 (defvar wl-summary-buffer-folder-name)
1908(defvar gnus-article-current) 1923 (defvar gnus-group-name)
1909(defvar w3m-current-url) 1924 (defvar gnus-article-current)
1910(defvar org-selected-point) 1925 (defvar w3m-current-url)
1911(defvar calendar-mode-map) 1926 (defvar org-selected-point)
1912(defvar remember-save-after-remembering) 1927 (defvar calendar-mode-map)
1913(defvar remember-data-file) 1928 (defvar remember-save-after-remembering)
1929 (defvar remember-data-file))
1914 1930
1915 1931
1916;;; Define the mode 1932;;; Define the mode
@@ -3100,7 +3116,7 @@ heading be marked DONE, and the current time will be added."
3100 (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location) 3116 (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location)
3101 (progn 3117 (progn
3102 (setq file (format (match-string 1 org-archive-location) 3118 (setq file (format (match-string 1 org-archive-location)
3103 (file-name-nondirectory buffer-file-name)) 3119 (file-name-nondirectory (buffer-file-name)))
3104 heading (match-string 2 org-archive-location))) 3120 heading (match-string 2 org-archive-location)))
3105 (error "Invalid `org-archive-location'")) 3121 (error "Invalid `org-archive-location'"))
3106 (if (> (length file) 0) 3122 (if (> (length file) 0)
@@ -4031,8 +4047,9 @@ in the timestamp determines what will be changed."
4031 (nthcdr 6 time0)))) 4047 (nthcdr 6 time0))))
4032 (if (eq what 'calendar) 4048 (if (eq what 'calendar)
4033 (let ((cal-date 4049 (let ((cal-date
4034 (save-match-data 4050 (save-excursion
4035 (with-current-buffer "*Calendar*" 4051 (save-match-data
4052 (set-buffer "*Calendar*")
4036 (calendar-cursor-to-date))))) 4053 (calendar-cursor-to-date)))))
4037 (setcar (nthcdr 4 time0) (nth 0 cal-date)) ; month 4054 (setcar (nthcdr 4 time0) (nth 0 cal-date)) ; month
4038 (setcar (nthcdr 3 time0) (nth 1 cal-date)) ; day 4055 (setcar (nthcdr 3 time0) (nth 1 cal-date)) ; day
@@ -4285,7 +4302,7 @@ first press `1' to indicate that the agenda should be temporarily (until the
4285next use of \\[org-agenda]) restricted to the current file." 4302next use of \\[org-agenda]) restricted to the current file."
4286 (interactive "P") 4303 (interactive "P")
4287 (catch 'exit 4304 (catch 'exit
4288 (let ((restrict-ok (and buffer-file-name (eq major-mode 'org-mode))) 4305 (let ((restrict-ok (and (buffer-file-name) (eq major-mode 'org-mode)))
4289 (custom org-agenda-custom-commands) 4306 (custom org-agenda-custom-commands)
4290 c entry key type string) 4307 c entry key type string)
4291 (put 'org-agenda-files 'org-restrict nil) 4308 (put 'org-agenda-files 'org-restrict nil)
@@ -4320,7 +4337,7 @@ C Configure your own agenda commands")
4320 (message "") 4337 (message "")
4321 (when (equal c ?1) 4338 (when (equal c ?1)
4322 (if restrict-ok 4339 (if restrict-ok
4323 (put 'org-agenda-files 'org-restrict (list buffer-file-name)) 4340 (put 'org-agenda-files 'org-restrict (list (buffer-file-name)))
4324 (error "Cannot restrict agenda to current buffer")) 4341 (error "Cannot restrict agenda to current buffer"))
4325 (message "Press key for agenda command%s" 4342 (message "Press key for agenda command%s"
4326 (if restrict-ok " (restricted to current file)" "")) 4343 (if restrict-ok " (restricted to current file)" ""))
@@ -4444,8 +4461,8 @@ dates."
4444 (dotodo include-all) 4461 (dotodo include-all)
4445 (doclosed org-agenda-show-log) 4462 (doclosed org-agenda-show-log)
4446 (org-agenda-keep-modes keep-modes) 4463 (org-agenda-keep-modes keep-modes)
4447 (entry buffer-file-name) 4464 (entry (buffer-file-name))
4448 (org-agenda-files (list buffer-file-name)) 4465 (org-agenda-files (list (buffer-file-name)))
4449 (date (calendar-current-date)) 4466 (date (calendar-current-date))
4450 (win (selected-window)) 4467 (win (selected-window))
4451 (pos1 (point)) 4468 (pos1 (point))
@@ -4672,9 +4689,10 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
4672 (erase-buffer) 4689 (erase-buffer)
4673 (org-agenda-mode) (setq buffer-read-only nil) 4690 (org-agenda-mode) (setq buffer-read-only nil)
4674 (set (make-local-variable 'org-agenda-type) 'todo) 4691 (set (make-local-variable 'org-agenda-type) 'todo)
4692 (set (make-local-variable 'last-arg) arg)
4675 (set (make-local-variable 'org-todo-keywords) kwds) 4693 (set (make-local-variable 'org-todo-keywords) kwds)
4676 (set (make-local-variable 'org-agenda-redo-command) 4694 (set (make-local-variable 'org-agenda-redo-command)
4677 `(org-todo-list (or current-prefix-arg ',arg) t)) 4695 '(org-todo-list (or current-prefix-arg last-arg) t))
4678 (setq files (org-agenda-files) 4696 (setq files (org-agenda-files)
4679 rtnall nil) 4697 rtnall nil)
4680 (while (setq file (pop files)) 4698 (while (setq file (pop files))
@@ -4971,7 +4989,7 @@ date. Itt also removes lines that contain only whitespace."
4971 "Make the position visible." 4989 "Make the position visible."
4972 (if (and org-disable-agenda-to-diary ;; called from org-agenda 4990 (if (and org-disable-agenda-to-diary ;; called from org-agenda
4973 (stringp string) 4991 (stringp string)
4974 buffer-file-name) 4992 (buffer-file-name))
4975 (setq string (org-modify-diary-entry-string string)))))) 4993 (setq string (org-modify-diary-entry-string string))))))
4976 4994
4977(defun org-modify-diary-entry-string (string) 4995(defun org-modify-diary-entry-string (string)
@@ -4983,7 +5001,7 @@ date. Itt also removes lines that contain only whitespace."
4983 'help-echo 5001 'help-echo
4984 (format 5002 (format
4985 "mouse-2 or RET jump to diary file %s" 5003 "mouse-2 or RET jump to diary file %s"
4986 (abbreviate-file-name buffer-file-name)) 5004 (abbreviate-file-name (buffer-file-name)))
4987 'org-agenda-diary-link t 5005 'org-agenda-diary-link t
4988 'org-marker (org-agenda-new-marker (point-at-bol))) 5006 'org-marker (org-agenda-new-marker (point-at-bol)))
4989 string) 5007 string)
@@ -5005,7 +5023,7 @@ If the current buffer visits an agenda file, find the next one in the list.
5005If the current buffer does not, find the first agenda file." 5023If the current buffer does not, find the first agenda file."
5006 (interactive) 5024 (interactive)
5007 (let ((files (append org-agenda-files (list (car org-agenda-files)))) 5025 (let ((files (append org-agenda-files (list (car org-agenda-files))))
5008 (tcf (if buffer-file-name (file-truename buffer-file-name))) 5026 (tcf (if (buffer-file-name) (file-truename (buffer-file-name))))
5009 file) 5027 file)
5010 (unless files (error "No agenda files")) 5028 (unless files (error "No agenda files"))
5011 (catch 'exit 5029 (catch 'exit
@@ -5016,28 +5034,30 @@ If the current buffer does not, find the first agenda file."
5016 (throw 'exit t)))) 5034 (throw 'exit t))))
5017 (find-file (car org-agenda-files))))) 5035 (find-file (car org-agenda-files)))))
5018 5036
5019(defun org-agenda-file-to-end () 5037(defun org-agenda-file-to-end (&optional file)
5020 "Move/add the current file to the end of the agenda fiole list. 5038 "Move/add the current file to the end of the agenda fiole list.
5021If the file is not present in the list, append it to the list. If it is 5039I the file is not present in the list, it is appended ot the list. If it is
5022present, move it there." 5040present, it is moved there."
5023 (interactive) 5041 (interactive)
5024 (org-agenda-file-to-front 'to-end)) 5042 (org-agenda-file-to-front 'to-end file))
5025 5043
5026(defun org-agenda-file-to-front (&optional to-end) 5044(defun org-agenda-file-to-front (&optional to-end file)
5027 "Move/add the current file to the top of the agenda file list. 5045 "Move/add the current file to the top of the agenda file list.
5028If the file is not present in the list, add it to the front. If it is 5046If the file is not present in the list, it is added to the front. If it is
5029present, it move it there. With optional argument TO-END, add/move to the 5047present, it is moved there. With optional argument TO-END, add/move to the
5030end of the list." 5048end of the list."
5031 (interactive "P") 5049 (interactive "P")
5032 (let* ((file-alist (mapcar (lambda (x) 5050 (let ((file-alist (mapcar (lambda (x)
5033 (cons (file-truename x) x)) 5051 (cons (file-truename x) x))
5034 org-agenda-files)) 5052 org-agenda-files))
5035 (ctf (file-truename buffer-file-name)) 5053 (ctf (file-truename (buffer-file-name)))
5036 (had (assoc ctf file-alist)) 5054 x had)
5037 (x (or had (cons ctf (abbreviate-file-name buffer-file-name))))) 5055 (setq x (assoc ctf file-alist) had x)
5038 (setq file-alist (if to-end 5056
5039 (append (delq x file-alist) (list x)) 5057 (if (not x) (setq x (cons ctf (abbreviate-file-name (buffer-file-name)))))
5040 (cons x (delq x file-alist)))) 5058 (if to-end
5059 (setq file-alist (append (delq x file-alist) (list x)))
5060 (setq file-alist (cons x (delq x file-alist))))
5041 (setq org-agenda-files (mapcar 'cdr file-alist)) 5061 (setq org-agenda-files (mapcar 'cdr file-alist))
5042 (let ((org-mode-hook nil) (default-major-mode 'fundamental-mode)) 5062 (let ((org-mode-hook nil) (default-major-mode 'fundamental-mode))
5043 (customize-save-variable 'org-agenda-files org-agenda-files)) 5063 (customize-save-variable 'org-agenda-files org-agenda-files))
@@ -5050,7 +5070,7 @@ end of the list."
5050These are the files which are being checked for agenda entries. 5070These are the files which are being checked for agenda entries.
5051Optional argument FILE means, use this file instead of the current." 5071Optional argument FILE means, use this file instead of the current."
5052 (interactive) 5072 (interactive)
5053 (let* ((file (or file buffer-file-name)) 5073 (let* ((file (or file (buffer-file-name)))
5054 (true-file (file-truename file)) 5074 (true-file (file-truename file))
5055 (afile (abbreviate-file-name file)) 5075 (afile (abbreviate-file-name file))
5056 (files (delq nil (mapcar 5076 (files (delq nil (mapcar
@@ -5174,9 +5194,9 @@ function from a program - use `org-agenda-get-day-entries' instead."
5174 (cond 5194 (cond
5175 ((null org-category) 5195 ((null org-category)
5176 (setq org-category 5196 (setq org-category
5177 (if buffer-file-name 5197 (if (buffer-file-name)
5178 (file-name-sans-extension 5198 (file-name-sans-extension
5179 (file-name-nondirectory buffer-file-name)) 5199 (file-name-nondirectory (buffer-file-name)))
5180 "???"))) 5200 "???")))
5181 ((symbolp org-category) (symbol-name org-category)) 5201 ((symbolp org-category) (symbol-name org-category))
5182 (t org-category)) 5202 (t org-category))
@@ -5265,6 +5285,27 @@ the documentation of `org-diary'."
5265 (throw 'exit t))) 5285 (throw 'exit t)))
5266 nil))) 5286 nil)))
5267 5287
5288(defun org-get-tags-at (&optional pos)
5289 "Get a list of all headline targs applicable at POS.
5290POS defaults to point. If tags are inherited, the list contains
5291the targets in the same sequence as the headlines appear, i.e.
5292the tags of the current headline come last."
5293 (interactive)
5294 (let (tags)
5295 (save-excursion
5296 (goto-char (or pos (point)))
5297 (save-match-data
5298 (org-back-to-heading t)
5299 (condition-case nil
5300 (while t
5301 (if (looking-at "[^\r\n]+?:\\([a-zA-Z_:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
5302 (setq tags (append (org-split-string (match-string 1) ":") tags)))
5303 (or org-use-tag-inheritance (error ""))
5304 (org-up-heading-all 1))
5305 (error nil))))
5306 (message "%s" tags)
5307 tags))
5308
5268(defun org-agenda-get-todos () 5309(defun org-agenda-get-todos ()
5269 "Return the TODO information for agenda display." 5310 "Return the TODO information for agenda display."
5270 (let* ((props (list 'face nil 5311 (let* ((props (list 'face nil
@@ -5273,7 +5314,7 @@ the documentation of `org-diary'."
5273 'keymap org-agenda-keymap 5314 'keymap org-agenda-keymap
5274 'help-echo 5315 'help-echo
5275 (format "mouse-2 or RET jump to org file %s" 5316 (format "mouse-2 or RET jump to org file %s"
5276 (abbreviate-file-name buffer-file-name)))) 5317 (abbreviate-file-name (buffer-file-name)))))
5277 (regexp (concat "[\n\r]\\*+ *\\(" 5318 (regexp (concat "[\n\r]\\*+ *\\("
5278 (if org-select-this-todo-keyword 5319 (if org-select-this-todo-keyword
5279 (concat "\\<\\(" org-select-this-todo-keyword 5320 (concat "\\<\\(" org-select-this-todo-keyword
@@ -5315,7 +5356,7 @@ the documentation of `org-diary'."
5315 'keymap org-agenda-keymap 5356 'keymap org-agenda-keymap
5316 'help-echo 5357 'help-echo
5317 (format "mouse-2 or RET jump to org file %s" 5358 (format "mouse-2 or RET jump to org file %s"
5318 (abbreviate-file-name buffer-file-name)))) 5359 (abbreviate-file-name (buffer-file-name)))))
5319 (regexp (regexp-quote 5360 (regexp (regexp-quote
5320 (substring 5361 (substring
5321 (format-time-string 5362 (format-time-string
@@ -5392,7 +5433,7 @@ the documentation of `org-diary'."
5392 'keymap org-agenda-keymap 5433 'keymap org-agenda-keymap
5393 'help-echo 5434 'help-echo
5394 (format "mouse-2 or RET jump to org file %s" 5435 (format "mouse-2 or RET jump to org file %s"
5395 (abbreviate-file-name buffer-file-name)))) 5436 (abbreviate-file-name (buffer-file-name)))))
5396 (regexp (concat 5437 (regexp (concat
5397 "\\<" org-closed-string " *\\[" 5438 "\\<" org-closed-string " *\\["
5398 (regexp-quote 5439 (regexp-quote
@@ -5448,7 +5489,7 @@ the documentation of `org-diary'."
5448 'keymap org-agenda-keymap 5489 'keymap org-agenda-keymap
5449 'help-echo 5490 'help-echo
5450 (format "mouse-2 or RET jump to org file %s" 5491 (format "mouse-2 or RET jump to org file %s"
5451 (abbreviate-file-name buffer-file-name)))) 5492 (abbreviate-file-name (buffer-file-name)))))
5452 (regexp org-deadline-time-regexp) 5493 (regexp org-deadline-time-regexp)
5453 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar 5494 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
5454 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar 5495 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
@@ -5510,7 +5551,7 @@ the documentation of `org-diary'."
5510 'keymap org-agenda-keymap 5551 'keymap org-agenda-keymap
5511 'help-echo 5552 'help-echo
5512 (format "mouse-2 or RET jump to org file %s" 5553 (format "mouse-2 or RET jump to org file %s"
5513 (abbreviate-file-name buffer-file-name)))) 5554 (abbreviate-file-name (buffer-file-name)))))
5514 (regexp org-scheduled-time-regexp) 5555 (regexp org-scheduled-time-regexp)
5515 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar 5556 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
5516 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar 5557 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
@@ -5559,7 +5600,7 @@ the documentation of `org-diary'."
5559 'keymap org-agenda-keymap 5600 'keymap org-agenda-keymap
5560 'help-echo 5601 'help-echo
5561 (format "mouse-2 or RET jump to org file %s" 5602 (format "mouse-2 or RET jump to org file %s"
5562 (abbreviate-file-name buffer-file-name)))) 5603 (abbreviate-file-name (buffer-file-name)))))
5563 (regexp org-tr-regexp) 5604 (regexp org-tr-regexp)
5564 (d0 (calendar-absolute-from-gregorian date)) 5605 (d0 (calendar-absolute-from-gregorian date))
5565 marker hdmarker ee txt d1 d2 s1 s2 timestr category tags) 5606 marker hdmarker ee txt d1 d2 s1 s2 timestr category tags)
@@ -5631,9 +5672,10 @@ After a match, the following groups carry important information:
5631(defvar org-prefix-has-time nil 5672(defvar org-prefix-has-time nil
5632 "A flag, set by `org-compile-prefix-format'. 5673 "A flag, set by `org-compile-prefix-format'.
5633The flag is set if the currently compiled format contains a `%t'.") 5674The flag is set if the currently compiled format contains a `%t'.")
5675(defvar org-prefix-has-tag nil
5676 "A flag, set by `org-compile-prefix-format'.
5677The flag is set if the currently compiled format contains a `%T'.")
5634 5678
5635(defvar time) ;Needed for the eval of the prefix format.
5636(defvar tag) ;Presumably, same thing as above.
5637(defun org-format-agenda-item (extra txt &optional category tags dotime noprefix) 5679(defun org-format-agenda-item (extra txt &optional category tags dotime noprefix)
5638 "Format TXT to be inserted into the agenda buffer. 5680 "Format TXT to be inserted into the agenda buffer.
5639In particular, it adds the prefix and corresponding text properties. EXTRA 5681In particular, it adds the prefix and corresponding text properties. EXTRA
@@ -5651,9 +5693,9 @@ only the correctly processes TXT should be returned - this is used by
5651 (if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt))) 5693 (if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt)))
5652 (let* ((category (or category 5694 (let* ((category (or category
5653 org-category 5695 org-category
5654 (if buffer-file-name 5696 (if (buffer-file-name)
5655 (file-name-sans-extension 5697 (file-name-sans-extension
5656 (file-name-nondirectory buffer-file-name)) 5698 (file-name-nondirectory (buffer-file-name)))
5657 ""))) 5699 "")))
5658 (tag (or (nth (1- (length tags)) tags) "")) 5700 (tag (or (nth (1- (length tags)) tags) ""))
5659 time ;; needed for the eval of the prefix format 5701 time ;; needed for the eval of the prefix format
@@ -5681,6 +5723,12 @@ only the correctly processes TXT should be returned - this is used by
5681 (if s1 (setq s1 (org-get-time-of-day s1 'string))) 5723 (if s1 (setq s1 (org-get-time-of-day s1 'string)))
5682 (if s2 (setq s2 (org-get-time-of-day s2 'string)))) 5724 (if s2 (setq s2 (org-get-time-of-day s2 'string))))
5683 5725
5726 (when (and (or (eq org-agenda-remove-tags-when-in-prefix t)
5727 (and org-agenda-remove-tags-when-in-prefix
5728 org-prefix-has-tag))
5729 (string-match ":[a-zA-Z_:]+:[ \t]*$" txt))
5730 (setq txt (replace-match "" t t txt)))
5731
5684 ;; Create the final string 5732 ;; Create the final string
5685 (if noprefix 5733 (if noprefix
5686 (setq rtn txt) 5734 (setq rtn txt)
@@ -5738,7 +5786,7 @@ only the correctly processes TXT should be returned - this is used by
5738 "Compile the prefix format into a Lisp form that can be evaluated. 5786 "Compile the prefix format into a Lisp form that can be evaluated.
5739The resulting form is returned and stored in the variable 5787The resulting form is returned and stored in the variable
5740`org-prefix-format-compiled'." 5788`org-prefix-format-compiled'."
5741 (setq org-prefix-has-time nil) 5789 (setq org-prefix-has-time nil org-prefix-has-tag nil)
5742 (let ((start 0) varform vars var (s format)e c f opt) 5790 (let ((start 0) varform vars var (s format)e c f opt)
5743 (while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cts]\\)" 5791 (while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cts]\\)"
5744 s start) 5792 s start)
@@ -5749,6 +5797,7 @@ The resulting form is returned and stored in the variable
5749 opt (match-beginning 1) 5797 opt (match-beginning 1)
5750 start (1+ (match-beginning 0))) 5798 start (1+ (match-beginning 0)))
5751 (if (equal var 'time) (setq org-prefix-has-time t)) 5799 (if (equal var 'time) (setq org-prefix-has-time t))
5800 (if (equal var 'tag) (setq org-prefix-has-tag t))
5752 (setq f (concat "%" (match-string 2 s) "s")) 5801 (setq f (concat "%" (match-string 2 s) "s"))
5753 (if opt 5802 (if opt
5754 (setq varform 5803 (setq varform
@@ -5783,7 +5832,7 @@ HH:MM."
5783 (string-to-number (match-string 3 s)) 5832 (string-to-number (match-string 3 s))
5784 0))) 5833 0)))
5785 (t1 (concat " " 5834 (t1 (concat " "
5786 (if (< t0 100) "0" "") (if (< t0 10) "0" "") 5835 (if (< t0 100) "0" "") (if (< t0 10) "0" "")
5787 (int-to-string t0)))) 5836 (int-to-string t0))))
5788 (if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0))))) 5837 (if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0)))))
5789 5838
@@ -5816,9 +5865,6 @@ HH:MM."
5816 ((< tb ta) +1) 5865 ((< tb ta) +1)
5817 (t nil)))) 5866 (t nil))))
5818 5867
5819(defvar time-up) (defvar time-down)
5820(defvar priority-up) (defvar priority-down)
5821(defvar category-up) (defvar category-down) (defvar category-keep)
5822(defun org-entries-lessp (a b) 5868(defun org-entries-lessp (a b)
5823 "Predicate for sorting agenda entries." 5869 "Predicate for sorting agenda entries."
5824 ;; The following variables will be used when the form is evaluated. 5870 ;; The following variables will be used when the form is evaluated.
@@ -6260,7 +6306,7 @@ d are included in the output."
6260 'keymap org-agenda-keymap 6306 'keymap org-agenda-keymap
6261 'help-echo 6307 'help-echo
6262 (format "mouse-2 or RET jump to org file %s" 6308 (format "mouse-2 or RET jump to org file %s"
6263 (abbreviate-file-name buffer-file-name)))) 6309 (abbreviate-file-name (buffer-file-name)))))
6264 lspos 6310 lspos
6265 tags tags-list tags-alist (llast 0) rtn level category i txt 6311 tags tags-list tags-alist (llast 0) rtn level category i txt
6266 todo marker) 6312 todo marker)
@@ -6551,7 +6597,10 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
6551 (skip-chars-backward 6597 (skip-chars-backward
6552 (concat (if org-allow-space-in-links "^" "^ ") 6598 (concat (if org-allow-space-in-links "^" "^ ")
6553 org-non-link-chars)) 6599 org-non-link-chars))
6554 (when (looking-at org-link-regexp) 6600 (when (or (looking-at org-link-regexp)
6601 (and (re-search-forward org-link-regexp (point-at-eol) t)
6602 (<= (match-beginning 0) pos)
6603 (>= (match-end 0) pos)))
6555 (setq type (match-string 1) 6604 (setq type (match-string 1)
6556 path (match-string 2)) 6605 path (match-string 2))
6557 (throw 'match t))) 6606 (throw 'match t)))
@@ -6589,7 +6638,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
6589 (cond 6638 (cond
6590 6639
6591 ((string= type "tags") 6640 ((string= type "tags")
6592 (org-tags-view path in-emacs)) 6641 (org-tags-view in-emacs path))
6593 ((string= type "camel") 6642 ((string= type "camel")
6594 (org-link-search 6643 (org-link-search
6595 path 6644 path
@@ -6862,7 +6911,7 @@ openen in emacs.
6862If the file does not exist, an error is thrown." 6911If the file does not exist, an error is thrown."
6863 (setq in-emacs (or in-emacs line search)) 6912 (setq in-emacs (or in-emacs line search))
6864 (let* ((file (if (equal path "") 6913 (let* ((file (if (equal path "")
6865 buffer-file-name 6914 (buffer-file-name)
6866 (convert-standard-filename (org-expand-file-name path)))) 6915 (convert-standard-filename (org-expand-file-name path))))
6867 (dfile (downcase file)) 6916 (dfile (downcase file))
6868 ext cmd apps) 6917 ext cmd apps)
@@ -6893,7 +6942,7 @@ If the file does not exist, an error is thrown."
6893 (shell-command (concat cmd " &")))) 6942 (shell-command (concat cmd " &"))))
6894 ((or (stringp cmd) 6943 ((or (stringp cmd)
6895 (eq cmd 'emacs)) 6944 (eq cmd 'emacs))
6896 (unless (equal (file-truename file) (file-truename buffer-file-name)) 6945 (unless (equal (file-truename file) (file-truename (buffer-file-name)))
6897 (funcall (cdr (assq 'file org-link-frame-setup)) file)) 6946 (funcall (cdr (assq 'file org-link-frame-setup)) file))
6898 (if line (goto-line line) 6947 (if line (goto-line line)
6899 (if search (org-link-search search)))) 6948 (if search (org-link-search search))))
@@ -6956,7 +7005,7 @@ For file links, arg negates `org-context-in-file-links'."
6956 (save-excursion 7005 (save-excursion
6957 (vm-select-folder-buffer) 7006 (vm-select-folder-buffer)
6958 (let* ((message (car vm-message-pointer)) 7007 (let* ((message (car vm-message-pointer))
6959 (folder buffer-file-name) 7008 (folder (buffer-file-name))
6960 (subject (vm-su-subject message)) 7009 (subject (vm-su-subject message))
6961 (author (vm-su-full-name message)) 7010 (author (vm-su-full-name message))
6962 (message-id (vm-su-message-id message))) 7011 (message-id (vm-su-message-id message)))
@@ -6987,7 +7036,7 @@ For file links, arg negates `org-context-in-file-links'."
6987 (save-excursion 7036 (save-excursion
6988 (save-restriction 7037 (save-restriction
6989 (rmail-narrow-to-non-pruned-header) 7038 (rmail-narrow-to-non-pruned-header)
6990 (let ((folder buffer-file-name) 7039 (let ((folder (buffer-file-name))
6991 (message-id (mail-fetch-field "message-id")) 7040 (message-id (mail-fetch-field "message-id"))
6992 (author (mail-fetch-field "from")) 7041 (author (mail-fetch-field "from"))
6993 (subject (mail-fetch-field "subject"))) 7042 (subject (mail-fetch-field "subject")))
@@ -7041,7 +7090,7 @@ For file links, arg negates `org-context-in-file-links'."
7041 ((eq major-mode 'org-mode) 7090 ((eq major-mode 'org-mode)
7042 ;; Just link to current headline 7091 ;; Just link to current headline
7043 (setq cpltxt (concat "file:" 7092 (setq cpltxt (concat "file:"
7044 (abbreviate-file-name buffer-file-name))) 7093 (abbreviate-file-name (buffer-file-name))))
7045 ;; Add a context search string 7094 ;; Add a context search string
7046 (when (org-xor org-context-in-file-links arg) 7095 (when (org-xor org-context-in-file-links arg)
7047 (if (save-excursion 7096 (if (save-excursion
@@ -7059,10 +7108,10 @@ For file links, arg negates `org-context-in-file-links'."
7059 ))))) 7108 )))))
7060 (setq link (org-make-link cpltxt))) 7109 (setq link (org-make-link cpltxt)))
7061 7110
7062 (buffer-file-name 7111 ((buffer-file-name)
7063 ;; Just link to this file here. 7112 ;; Just link to this file here.
7064 (setq cpltxt (concat "file:" 7113 (setq cpltxt (concat "file:"
7065 (abbreviate-file-name buffer-file-name))) 7114 (abbreviate-file-name (buffer-file-name))))
7066 ;; Add a context string 7115 ;; Add a context string
7067 (when (org-xor org-context-in-file-links arg) 7116 (when (org-xor org-context-in-file-links arg)
7068 (setq cpltxt 7117 (setq cpltxt
@@ -7197,7 +7246,7 @@ is in the current directory or below."
7197 (case-fold-search nil) 7246 (case-fold-search nil)
7198 (search (match-string 2 link))) 7247 (search (match-string 2 link)))
7199 (when (save-match-data 7248 (when (save-match-data
7200 (equal (file-truename buffer-file-name) 7249 (equal (file-truename (buffer-file-name))
7201 (file-truename path))) 7250 (file-truename path)))
7202 (if (save-match-data 7251 (if (save-match-data
7203 (string-match (concat "^" org-camel-regexp "$") search)) 7252 (string-match (concat "^" org-camel-regexp "$") search))
@@ -7356,7 +7405,7 @@ See also the variable `org-reverse-note-order'."
7356 (let ((all org-reverse-note-order) 7405 (let ((all org-reverse-note-order)
7357 entry) 7406 entry)
7358 (while (setq entry (pop all)) 7407 (while (setq entry (pop all))
7359 (if (string-match (car entry) buffer-file-name) 7408 (if (string-match (car entry) (buffer-file-name))
7360 (throw 'exit (cdr entry)))) 7409 (throw 'exit (cdr entry))))
7361 nil))))) 7410 nil)))))
7362 7411
@@ -10010,7 +10059,7 @@ underlined headlines. The default is 3."
10010 (level 0) line txt 10059 (level 0) line txt
10011 (umax nil) 10060 (umax nil)
10012 (case-fold-search nil) 10061 (case-fold-search nil)
10013 (filename (concat (file-name-sans-extension buffer-file-name) 10062 (filename (concat (file-name-sans-extension (buffer-file-name))
10014 ".txt")) 10063 ".txt"))
10015 (buffer (find-file-noselect filename)) 10064 (buffer (find-file-noselect filename))
10016 (levels-open (make-vector org-level-max nil)) 10065 (levels-open (make-vector org-level-max nil))
@@ -10159,7 +10208,7 @@ underlined headlines. The default is 3."
10159Also removes the first line of the buffer if it specifies a mode, 10208Also removes the first line of the buffer if it specifies a mode,
10160and all options lines." 10209and all options lines."
10161 (interactive) 10210 (interactive)
10162 (let* ((filename (concat (file-name-sans-extension buffer-file-name) 10211 (let* ((filename (concat (file-name-sans-extension (buffer-file-name))
10163 ".txt")) 10212 ".txt"))
10164 (buffer (find-file-noselect filename)) 10213 (buffer (find-file-noselect filename))
10165 (ore (concat 10214 (ore (concat
@@ -10233,7 +10282,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
10233 org-export-with-sub-superscripts 10282 org-export-with-sub-superscripts
10234 org-export-with-emphasize 10283 org-export-with-emphasize
10235 org-export-with-TeX-macros 10284 org-export-with-TeX-macros
10236 (file-name-nondirectory buffer-file-name) 10285 (file-name-nondirectory (buffer-file-name))
10237 (if (equal org-todo-interpretation 'sequence) 10286 (if (equal org-todo-interpretation 'sequence)
10238 (mapconcat 'identity org-todo-keywords " ") 10287 (mapconcat 'identity org-todo-keywords " ")
10239 "TODO FEEDBACK VERIFY DONE") 10288 "TODO FEEDBACK VERIFY DONE")
@@ -10306,7 +10355,7 @@ The prefix ARG specifies how many levels of the outline should become
10306headlines. The default is 3. Lower levels will become bulleted lists." 10355headlines. The default is 3. Lower levels will become bulleted lists."
10307 (interactive "P") 10356 (interactive "P")
10308 (org-export-as-html arg 'hidden) 10357 (org-export-as-html arg 'hidden)
10309 (org-open-file buffer-file-name)) 10358 (org-open-file (buffer-file-name)))
10310 10359
10311(defun org-export-as-html-batch () 10360(defun org-export-as-html-batch ()
10312 "Call `org-export-as-html', may be used in batch processing as 10361 "Call `org-export-as-html', may be used in batch processing as
@@ -10336,7 +10385,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
10336 (lines (org-export-find-first-heading-line all_lines)) 10385 (lines (org-export-find-first-heading-line all_lines))
10337 (level 0) (line "") (origline "") txt todo 10386 (level 0) (line "") (origline "") txt todo
10338 (umax nil) 10387 (umax nil)
10339 (filename (concat (file-name-sans-extension buffer-file-name) 10388 (filename (concat (file-name-sans-extension (buffer-file-name))
10340 ".html")) 10389 ".html"))
10341 (buffer (find-file-noselect filename)) 10390 (buffer (find-file-noselect filename))
10342 (levels-open (make-vector org-level-max nil)) 10391 (levels-open (make-vector org-level-max nil))
@@ -10999,7 +11048,7 @@ When LEVEL is non-nil, increase section numbers on that level."
10999The iCalendar file will be located in the same directory as the Org-mode 11048The iCalendar file will be located in the same directory as the Org-mode
11000file, but with extension `.ics'." 11049file, but with extension `.ics'."
11001 (interactive) 11050 (interactive)
11002 (org-export-icalendar nil buffer-file-name)) 11051 (org-export-icalendar nil (buffer-file-name)))
11003 11052
11004;;;###autoload 11053;;;###autoload
11005(defun org-export-icalendar-all-agenda-files () 11054(defun org-export-icalendar-all-agenda-files ()
@@ -11036,7 +11085,7 @@ file and store it under the name `org-combined-agenda-icalendar-file'."
11036 (set-buffer (org-get-agenda-file-buffer file)) 11085 (set-buffer (org-get-agenda-file-buffer file))
11037 (setq category (or org-category 11086 (setq category (or org-category
11038 (file-name-sans-extension 11087 (file-name-sans-extension
11039 (file-name-nondirectory buffer-file-name)))) 11088 (file-name-nondirectory (buffer-file-name)))))
11040 (if (symbolp category) (setq category (symbol-name category))) 11089 (if (symbolp category) (setq category (symbol-name category)))
11041 (let ((standard-output ical-buffer)) 11090 (let ((standard-output ical-buffer))
11042 (if combine 11091 (if combine
@@ -12137,27 +12186,6 @@ Show the heading too, if it is currently invisible."
12137 (org-invisible-p))) 12186 (org-invisible-p)))
12138 (org-show-hierarchy-above))) 12187 (org-show-hierarchy-above)))
12139 12188
12140(defun org-get-tags-at (&optional pos)
12141 "Get a list of all headline targs applicable at POS.
12142POS defaults to point. If tags are inherited, the list contains
12143the targets in the same sequence as the headlines appear, i.e.
12144the tags of the current headline come last."
12145 (interactive)
12146 (let (tags)
12147 (save-excursion
12148 (goto-char (or pos (point)))
12149 (save-match-data
12150 (org-back-to-heading t)
12151 (condition-case nil
12152 (while t
12153 (if (looking-at "[^\r\n]+?:\\([a-zA-Z_:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
12154 (setq tags (append (org-split-string (match-string 1) ":") tags)))
12155 (or org-use-tag-inheritance (error ""))
12156 (org-up-heading-all 1))
12157 (error nil))))
12158 (message "%s" tags)
12159 tags))
12160
12161;;; Finish up 12189;;; Finish up
12162 12190
12163(provide 'org) 12191(provide 'org)
@@ -12166,4 +12194,5 @@ the tags of the current headline come last."
12166 12194
12167;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd 12195;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
12168;;; org.el ends here 12196;;; org.el ends here
12197
12169 12198
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 80f062ae3fe..db8d2c94c46 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -913,7 +913,7 @@ This is always set to nil at the entry to `table-with-cache-buffer' before execu
913 "For mode line indicator") 913 "For mode line indicator")
914;; This is not a real minor-mode but placed in the minor-mode-alist 914;; This is not a real minor-mode but placed in the minor-mode-alist
915;; so that we can show the indicator on the mode line handy. 915;; so that we can show the indicator on the mode line handy.
916(make-variable-buffer-local table-mode-indicator) 916(make-variable-buffer-local 'table-mode-indicator)
917(unless (assq table-mode-indicator minor-mode-alist) 917(unless (assq table-mode-indicator minor-mode-alist)
918 (push '(table-mode-indicator (table-fixed-width-mode " Fixed-Table" " Table")) 918 (push '(table-mode-indicator (table-fixed-width-mode " Fixed-Table" " Table"))
919 minor-mode-alist)) 919 minor-mode-alist))
diff --git a/lisp/thumbs.el b/lisp/thumbs.el
index 2a8f6b217d4..f4b283bf7f2 100644
--- a/lisp/thumbs.el
+++ b/lisp/thumbs.el
@@ -3,6 +3,7 @@
3;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Jean-Philippe Theberge <jphiltheberge@videotron.ca> 5;; Author: Jean-Philippe Theberge <jphiltheberge@videotron.ca>
6;; Maintainer: FSF
6;; Keywords: Multimedia 7;; Keywords: Multimedia
7 8
8;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
@@ -21,23 +22,24 @@
21;; along with GNU Emacs; see the file COPYING. If not, write to the 22;; along with GNU Emacs; see the file COPYING. If not, write to the
22;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 23;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23;; Boston, MA 02110-1301, USA. 24;; Boston, MA 02110-1301, USA.
24;;
25;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some time
26;; The peoples at #emacs@freenode.net for numerous help
27;; RMS for emacs and the GNU project.
28;;
29 25
30;;; Commentary: 26;;; Commentary:
31 27
32;; This package create two new mode: thumbs-mode and 28;; This package create two new modes: thumbs-mode and thumbs-view-image-mode.
33;; thumbs-view-image-mode. It is used for images browsing and viewing 29;; It is used for basic browsing and viewing of images from within Emacs.
34;; from within Emacs. Minimal image manipulation functions are also 30;; Minimal image manipulation functions are also available via external
35;; available via external programs. 31;; programs. If you want to do more complex tasks like categorise and tag
32;; your images, use tumme.el
36;; 33;;
37;; The 'convert' program from 'ImageMagick' 34;; The 'convert' program from 'ImageMagick'
38;; [URL:http://www.imagemagick.org/] is required. 35;; [URL:http://www.imagemagick.org/] is required.
39;; 36;;
37;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some
38;; time. The peoples at #emacs@freenode.net for numerous help. RMS
39;; for emacs and the GNU project.
40;;
40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42;;
41;; CHANGELOG 43;; CHANGELOG
42;; 44;;
43;; This is version 2.0 45;; This is version 2.0
@@ -48,8 +50,8 @@
48;; That should be a directory containing image files. 50;; That should be a directory containing image files.
49;; from dired, C-t m enter in thumbs-mode with all marked files 51;; from dired, C-t m enter in thumbs-mode with all marked files
50;; C-t a enter in thumbs-mode with all files in current-directory 52;; C-t a enter in thumbs-mode with all files in current-directory
51;; In thumbs-mode, pressing <return> on a image will bring you in image view mode 53;; In thumbs-mode, pressing <return> on a image will bring you in image view
52;; for that image. C-h m will give you a list of available keybinding. 54;; mode for that image. C-h m will give you a list of available keybinding.
53 55
54;;; History: 56;;; History:
55;; 57;;
@@ -75,13 +77,18 @@
75 :type 'string 77 :type 'string
76 :group 'thumbs) 78 :group 'thumbs)
77 79
78(defcustom thumbs-per-line 5 80(defcustom thumbs-per-line 4
79 "*Number of thumbnails per line to show in directory." 81 "Number of thumbnails per line to show in directory."
82 :type 'integer
83 :group 'thumbs)
84
85(defcustom thumbs-max-image-number 16
86 "Maximum number of images initially displayed in thumbs buffer."
80 :type 'integer 87 :type 'integer
81 :group 'thumbs) 88 :group 'thumbs)
82 89
83(defcustom thumbs-thumbsdir-max-size 50000000 90(defcustom thumbs-thumbsdir-max-size 50000000
84 "Max size for thumbnails directory. 91 "Maximum size for thumbnails directory.
85When it reaches that size (in bytes), a warning is sent." 92When it reaches that size (in bytes), a warning is sent."
86 :type 'integer 93 :type 'integer
87 :group 'thumbs) 94 :group 'thumbs)
@@ -121,7 +128,7 @@ than `thumbs-thumbsdir-max-size'."
121 :group 'thumbs) 128 :group 'thumbs)
122 129
123(defcustom thumbs-image-resizing-step 10 130(defcustom thumbs-image-resizing-step 10
124 "Step by which to resize image." 131 "Step by which to resize image as a percentage."
125 :type 'integer 132 :type 'integer
126 :group 'thumbs) 133 :group 'thumbs)
127 134
@@ -146,6 +153,11 @@ this value can let another user see some of your images."
146 "Filename of current image.") 153 "Filename of current image.")
147(make-variable-buffer-local 'thumbs-current-image-filename) 154(make-variable-buffer-local 'thumbs-current-image-filename)
148 155
156(defvar thumbs-extra-images 1
157 "Counter for showing extra images in thumbs buffer.")
158(make-variable-buffer-local 'thumbs-extra-images)
159(put 'thumbs-extra-images 'permanent-local t)
160
149(defvar thumbs-current-image-size nil 161(defvar thumbs-current-image-size nil
150 "Size of current image.") 162 "Size of current image.")
151 163
@@ -153,10 +165,14 @@ this value can let another user see some of your images."
153 "Number of current image.") 165 "Number of current image.")
154(make-variable-buffer-local 'thumbs-image-num) 166(make-variable-buffer-local 'thumbs-image-num)
155 167
168(defvar thumbs-buffer nil
169 "Name of buffer containing thumbnails associated with image.")
170(make-variable-buffer-local 'thumbs-buffer)
171
156(defvar thumbs-current-dir nil 172(defvar thumbs-current-dir nil
157 "Current directory.") 173 "Current directory.")
158 174
159(defvar thumbs-markedL nil 175(defvar thumbs-marked-list nil
160 "List of marked files.") 176 "List of marked files.")
161 177
162(defalias 'thumbs-gensym 178(defalias 'thumbs-gensym
@@ -199,21 +215,21 @@ Create the thumbnails directory if it does not exist."
199If the total size of all files in `thumbs-thumbsdir' is bigger than 215If the total size of all files in `thumbs-thumbsdir' is bigger than
200`thumbs-thumbsdir-max-size', files are deleted until the max size is 216`thumbs-thumbsdir-max-size', files are deleted until the max size is
201reached." 217reached."
202 (let* ((filesL 218 (let* ((files-list
203 (sort 219 (sort
204 (mapcar 220 (mapcar
205 (lambda (f) 221 (lambda (f)
206 (let ((fattribsL (file-attributes f))) 222 (let ((fattribs-list (file-attributes f)))
207 `(,(nth 4 fattribsL) ,(nth 7 fattribsL) ,f))) 223 `(,(nth 4 fattribs-list) ,(nth 7 fattribs-list) ,f)))
208 (directory-files (thumbs-thumbsdir) t (image-file-name-regexp))) 224 (directory-files (thumbs-thumbsdir) t (image-file-name-regexp)))
209 '(lambda (l1 l2) (time-less-p (car l1) (car l2))))) 225 '(lambda (l1 l2) (time-less-p (car l1) (car l2)))))
210 (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) filesL)))) 226 (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) files-list))))
211 (while (> dirsize thumbs-thumbsdir-max-size) 227 (while (> dirsize thumbs-thumbsdir-max-size)
212 (progn 228 (progn
213 (message "Deleting file %s" (cadr (cdar filesL)))) 229 (message "Deleting file %s" (cadr (cdar files-list))))
214 (delete-file (cadr (cdar filesL))) 230 (delete-file (cadr (cdar files-list)))
215 (setq dirsize (- dirsize (car (cdar filesL)))) 231 (setq dirsize (- dirsize (car (cdar files-list))))
216 (setq filesL (cdr filesL))))) 232 (setq files-list (cdr files-list)))))
217 233
218;; Check the thumbsnail directory size and clean it if necessary. 234;; Check the thumbsnail directory size and clean it if necessary.
219(when thumbs-thumbsdir-auto-clean 235(when thumbs-thumbsdir-auto-clean
@@ -238,75 +254,47 @@ ACTION-PREFIX is the symbol to place before the ACTION command
238 filein 254 filein
239 (or output-format "jpeg") 255 (or output-format "jpeg")
240 fileout))) 256 fileout)))
241 (shell-command command))) 257 (call-process shell-file-name nil nil nil "-c" command)))
242 258
243(defun thumbs-increment-image-size-element (n d) 259(defun thumbs-new-image-size (s increment)
244 "Increment number N by D percent." 260 "New image (a cons of width x height)."
245 (round (+ n (/ (* d n) 100)))) 261 (let ((d (* increment thumbs-image-resizing-step)))
246 262 (cons
247(defun thumbs-decrement-image-size-element (n d) 263 (round (+ (car s) (/ (* d (car s)) 100)))
248 "Decrement number N by D percent." 264 (round (+ (cdr s) (/ (* d (cdr s)) 100))))))
249 (round (- n (/ (* d n) 100)))) 265
250 266(defun thumbs-resize-image-1 (&optional increment size)
251(defun thumbs-increment-image-size (s)
252 "Increment S (a cons of width x height)."
253 (cons
254 (thumbs-increment-image-size-element (car s)
255 thumbs-image-resizing-step)
256 (thumbs-increment-image-size-element (cdr s)
257 thumbs-image-resizing-step)))
258
259(defun thumbs-decrement-image-size (s)
260 "Decrement S (a cons of width x height)."
261 (cons
262 (thumbs-decrement-image-size-element (car s)
263 thumbs-image-resizing-step)
264 (thumbs-decrement-image-size-element (cdr s)
265 thumbs-image-resizing-step)))
266
267(defun thumbs-resize-image (&optional increment size)
268 "Resize image in current buffer. 267 "Resize image in current buffer.
269If INCREMENT is set, make the image bigger, else smaller. 268If SIZE is specified use it. Otherwise make the image larger or
270Or, alternatively, a SIZE may be specified." 269smaller according to whether INCREMENT is 1 or -1."
271 (interactive) 270 (let* ((buffer-read-only nil)
272 ;; cleaning of old temp file 271 (old thumbs-current-tmp-filename)
273 (condition-case nil 272 (x (or size
274 (apply 'delete-file 273 (thumbs-new-image-size thumbs-current-image-size increment)))
275 (directory-files 274 (tmp (thumbs-temp-file)))
276 (thumbs-temp-dir) t
277 thumbs-temp-prefix))
278 (error nil))
279 (let ((buffer-read-only nil)
280 (x (if size
281 size
282 (if increment
283 (thumbs-increment-image-size
284 thumbs-current-image-size)
285 (thumbs-decrement-image-size
286 thumbs-current-image-size))))
287 (tmp (thumbs-temp-file)))
288 (erase-buffer) 275 (erase-buffer)
289 (thumbs-call-convert thumbs-current-image-filename 276 (thumbs-call-convert (or old thumbs-current-image-filename)
290 tmp "sample" 277 tmp "sample"
291 (concat (number-to-string (car x)) "x" 278 (concat (number-to-string (car x)) "x"
292 (number-to-string (cdr x)))) 279 (number-to-string (cdr x))))
293 (thumbs-insert-image tmp 'jpeg 0) 280 (save-excursion
281 (thumbs-insert-image tmp 'jpeg 0))
294 (setq thumbs-current-tmp-filename tmp))) 282 (setq thumbs-current-tmp-filename tmp)))
295 283
296(defun thumbs-resize-interactive (width height) 284(defun thumbs-resize-image (width height)
297 "Resize image interactively to specified WIDTH and HEIGHT." 285 "Resize image interactively to specified WIDTH and HEIGHT."
298 (interactive "nWidth: \nnHeight: ") 286 (interactive "nWidth: \nnHeight: ")
299 (thumbs-resize-image nil (cons width height))) 287 (thumbs-resize-image-1 nil (cons width height)))
300 288
301(defun thumbs-resize-image-size-down () 289(defun thumbs-shrink-image ()
302 "Resize image (smaller)." 290 "Resize image (smaller)."
303 (interactive) 291 (interactive)
304 (thumbs-resize-image nil)) 292 (thumbs-resize-image-1 -1))
305 293
306(defun thumbs-resize-image-size-up () 294(defun thumbs-enlarge-image ()
307 "Resize image (bigger)." 295 "Resize image (bigger)."
308 (interactive) 296 (interactive)
309 (thumbs-resize-image t)) 297 (thumbs-resize-image-1 1))
310 298
311(defun thumbs-thumbname (img) 299(defun thumbs-thumbname (img)
312 "Return a thumbnail name for the image IMG." 300 "Return a thumbnail name for the image IMG."
@@ -376,70 +364,81 @@ If MARKED is non-nil, the image is marked."
376If MARKED is non-nil, the image is marked." 364If MARKED is non-nil, the image is marked."
377 (thumbs-insert-image 365 (thumbs-insert-image
378 (thumbs-make-thumb img) 'jpeg thumbs-relief marked) 366 (thumbs-make-thumb img) 'jpeg thumbs-relief marked)
379 (put-text-property (1- (point)) (point) 367 (add-text-properties (1- (point)) (point)
380 'thumb-image-file img)) 368 `(thumb-image-file ,img
381 369 help-echo ,(file-name-nondirectory img))))
382(defun thumbs-do-thumbs-insertion (L) 370
383 "Insert all thumbs in list L." 371(defun thumbs-do-thumbs-insertion (list)
384 (let ((i 0)) 372 "Insert all thumbnails into thumbs buffer."
385 (dolist (img L) 373 (let* ((i 0)
374 (length (length list))
375 (diff (- length (* thumbs-max-image-number thumbs-extra-images))))
376 (nbutlast list diff)
377 (dolist (img list)
386 (thumbs-insert-thumb img 378 (thumbs-insert-thumb img
387 (member img thumbs-markedL)) 379 (member img thumbs-marked-list))
388 (when (= 0 (mod (setq i (1+ i)) thumbs-per-line)) 380 (when (= 0 (mod (setq i (1+ i)) thumbs-per-line))
389 (newline))) 381 (newline)))
390 (unless (bobp) (newline)))) 382 (unless (bobp) (newline))
383 (if diff (message "Type + to display more images."))))
391 384
392(defun thumbs-show-thumbs-list (L &optional buffer-name same-window) 385(defun thumbs-show-thumbs-list (list &optional dir same-window)
393 (unless (and (display-images-p) 386 (unless (and (display-images-p)
394 (image-type-available-p 'jpeg)) 387 (image-type-available-p 'jpeg))
395 (error "Required image type is not supported in this Emacs session")) 388 (error "Required image type is not supported in this Emacs session"))
396 (funcall (if same-window 'switch-to-buffer 'pop-to-buffer) 389 (funcall (if same-window 'switch-to-buffer 'pop-to-buffer)
397 (or buffer-name "*THUMB-View*")) 390 (if dir (concat "*Thumbs: " dir) "*THUMB-View*"))
398 (let ((inhibit-read-only t)) 391 (let ((inhibit-read-only t))
399 (erase-buffer) 392 (erase-buffer)
400 (thumbs-mode) 393 (thumbs-mode)
401 (thumbs-do-thumbs-insertion L) 394 (setq thumbs-buffer (current-buffer))
395 (if dir (setq default-directory dir))
396 (thumbs-do-thumbs-insertion list)
402 (goto-char (point-min)) 397 (goto-char (point-min))
403 (set (make-local-variable 'thumbs-current-dir) default-directory))) 398 (set (make-local-variable 'thumbs-current-dir) default-directory)))
404 399
405;;;###autoload 400;;;###autoload
406(defun thumbs-show-all-from-dir (dir &optional reg same-window) 401(defun thumbs-show-from-dir (dir &optional reg same-window)
407 "Make a preview buffer for all images in DIR. 402 "Make a preview buffer for all images in DIR.
408Optional argument REG to select file matching a regexp, 403Optional argument REG to select file matching a regexp,
409and SAME-WINDOW to show thumbs in the same window." 404and SAME-WINDOW to show thumbs in the same window."
410 (interactive "DDir: ") 405 (interactive "DDir: ")
411 (thumbs-show-thumbs-list 406 (thumbs-show-thumbs-list
412 (directory-files dir t 407 (directory-files dir t (or reg (image-file-name-regexp)))
413 (or reg (image-file-name-regexp))) 408 dir same-window))
414 (concat "*Thumbs: " dir) same-window))
415 409
416;;;###autoload 410;;;###autoload
417(defun thumbs-dired-show-marked () 411(defun thumbs-dired-show-marked ()
418 "In dired, make a thumbs buffer with all marked files." 412 "In dired, make a thumbs buffer with marked files."
419 (interactive) 413 (interactive)
420 (thumbs-show-thumbs-list (dired-get-marked-files) nil t)) 414 (thumbs-show-thumbs-list (dired-get-marked-files) nil t))
421 415
422;;;###autoload 416;;;###autoload
423(defun thumbs-dired-show-all () 417(defun thumbs-dired-show ()
424 "In dired, make a thumbs buffer with all files in current directory." 418 "In dired, make a thumbs buffer with all files in current directory."
425 (interactive) 419 (interactive)
426 (thumbs-show-all-from-dir default-directory nil t)) 420 (thumbs-show-from-dir default-directory nil t))
427 421
428;;;###autoload 422;;;###autoload
429(defalias 'thumbs 'thumbs-show-all-from-dir) 423(defalias 'thumbs 'thumbs-show-from-dir)
430 424
431(defun thumbs-find-image (img &optional num otherwin) 425(defun thumbs-find-image (img &optional num otherwin)
432 (funcall 426 (let ((buffer (current-buffer)))
433 (if otherwin 'switch-to-buffer-other-window 'switch-to-buffer) 427 (funcall
434 (concat "*Image: " (file-name-nondirectory img) " - " 428 (if otherwin 'switch-to-buffer-other-window 'switch-to-buffer)
435 (number-to-string (or num 0)) "*")) 429 "*Image*")
436 (thumbs-view-image-mode) 430 (thumbs-view-image-mode)
437 (let ((inhibit-read-only t)) 431 (setq mode-name
438 (setq thumbs-current-image-filename img 432 (concat "image-view-mode: " (file-name-nondirectory img)
439 thumbs-current-tmp-filename nil 433 " - " (number-to-string num)))
440 thumbs-image-num (or num 0)) 434 (setq thumbs-buffer buffer)
441 (delete-region (point-min)(point-max)) 435 (let ((inhibit-read-only t))
442 (thumbs-insert-image img (thumbs-image-type img) 0))) 436 (setq thumbs-current-image-filename img
437 thumbs-current-tmp-filename nil
438 thumbs-image-num (or num 0))
439 (delete-region (point-min)(point-max))
440 (save-excursion
441 (thumbs-insert-image img (thumbs-image-type img) 0)))))
443 442
444(defun thumbs-find-image-at-point (&optional img otherwin) 443(defun thumbs-find-image-at-point (&optional img otherwin)
445 "Display image IMG for thumbnail at point. 444 "Display image IMG for thumbnail at point.
@@ -484,16 +483,18 @@ Open another window."
484 483
485(defun thumbs-file-alist () 484(defun thumbs-file-alist ()
486 "Make an alist of elements (POS . FILENAME) for all images in thumb buffer." 485 "Make an alist of elements (POS . FILENAME) for all images in thumb buffer."
487 (save-excursion 486 (with-current-buffer thumbs-buffer
488 (let (list) 487 (save-excursion
489 (goto-char (point-min)) 488 (let (list)
490 (while (not (eobp)) 489 (goto-char (point-min))
491 (if (thumbs-current-image) 490 (while (not (eobp))
492 (push (cons (point-marker) 491 (unless (= 0 (mod (point) (1+ thumbs-per-line)))
493 (thumbs-current-image)) 492 (if (thumbs-current-image)
494 list)) 493 (push (cons (point-marker)
495 (forward-char 1)) 494 (thumbs-current-image))
496 list))) 495 list)))
496 (forward-char 1))
497 (nreverse list)))))
497 498
498(defun thumbs-file-list () 499(defun thumbs-file-list ()
499 "Make a list of file names for all images in thumb buffer." 500 "Make a list of file names for all images in thumb buffer."
@@ -509,9 +510,9 @@ Open another window."
509(defun thumbs-delete-images () 510(defun thumbs-delete-images ()
510 "Delete the image at point (and its thumbnail) (or marked files if any)." 511 "Delete the image at point (and its thumbnail) (or marked files if any)."
511 (interactive) 512 (interactive)
512 (let ((files (or thumbs-markedL (list (thumbs-current-image))))) 513 (let ((files (or thumbs-marked-list (list (thumbs-current-image)))))
513 (if (yes-or-no-p (format "Really delete %d files? " (length files))) 514 (if (yes-or-no-p (format "Really delete %d files? " (length files)))
514 (let ((thumbs-fileL (thumbs-file-alist)) 515 (let ((thumbs-file-list (thumbs-file-alist))
515 (inhibit-read-only t)) 516 (inhibit-read-only t))
516 (dolist (x files) 517 (dolist (x files)
517 (let (failure) 518 (let (failure)
@@ -521,24 +522,24 @@ Open another window."
521 (delete-file (thumbs-thumbname x))) 522 (delete-file (thumbs-thumbname x)))
522 (file-error (setq failure t))) 523 (file-error (setq failure t)))
523 (unless failure 524 (unless failure
524 (when (rassoc x thumbs-fileL) 525 (when (rassoc x thumbs-file-list)
525 (goto-char (car (rassoc x thumbs-fileL))) 526 (goto-char (car (rassoc x thumbs-file-list)))
526 (delete-region (point) (1+ (point)))) 527 (delete-region (point) (1+ (point))))
527 (setq thumbs-markedL 528 (setq thumbs-marked-list
528 (delq x thumbs-markedL))))))))) 529 (delq x thumbs-marked-list)))))))))
529 530
530(defun thumbs-rename-images (newfile) 531(defun thumbs-rename-images (newfile)
531 "Rename the image at point (and its thumbnail) (or marked files if any)." 532 "Rename the image at point (and its thumbnail) (or marked files if any)."
532 (interactive "FRename to file or directory: ") 533 (interactive "FRename to file or directory: ")
533 (let ((files (or thumbs-markedL (list (thumbs-current-image)))) 534 (let ((files (or thumbs-marked-list (list (thumbs-current-image))))
534 failures) 535 failures)
535 (if (and (not (file-directory-p newfile)) 536 (if (and (not (file-directory-p newfile))
536 thumbs-markedL) 537 thumbs-marked-list)
537 (if (file-exists-p newfile) 538 (if (file-exists-p newfile)
538 (error "Renaming marked files to file name `%s'" newfile) 539 (error "Renaming marked files to file name `%s'" newfile)
539 (make-directory newfile t))) 540 (make-directory newfile t)))
540 (if (yes-or-no-p (format "Really rename %d files? " (length files))) 541 (if (yes-or-no-p (format "Really rename %d files? " (length files)))
541 (let ((thumbs-fileL (thumbs-file-alist)) 542 (let ((thumbs-file-list (thumbs-file-alist))
542 (inhibit-read-only t)) 543 (inhibit-read-only t))
543 (dolist (file files) 544 (dolist (file files)
544 (let (failure) 545 (let (failure)
@@ -552,11 +553,11 @@ Open another window."
552 (file-error (setq failure t) 553 (file-error (setq failure t)
553 (push file failures))) 554 (push file failures)))
554 (unless failure 555 (unless failure
555 (when (rassoc file thumbs-fileL) 556 (when (rassoc file thumbs-file-list)
556 (goto-char (car (rassoc file thumbs-fileL))) 557 (goto-char (car (rassoc file thumbs-file-list)))
557 (delete-region (point) (1+ (point)))) 558 (delete-region (point) (1+ (point))))
558 (setq thumbs-markedL 559 (setq thumbs-marked-list
559 (delq file thumbs-markedL))))))) 560 (delq file thumbs-marked-list)))))))
560 (if failures 561 (if failures
561 (display-warning 'file-error 562 (display-warning 'file-error
562 (format "Rename failures for %s into %s" 563 (format "Rename failures for %s into %s"
@@ -571,31 +572,38 @@ Open another window."
571(defun thumbs-show-image-num (num) 572(defun thumbs-show-image-num (num)
572 "Show the image with number NUM." 573 "Show the image with number NUM."
573 (let ((image-buffer (get-buffer-create "*Image*"))) 574 (let ((image-buffer (get-buffer-create "*Image*")))
574 (let ((i (thumbs-current-image))) 575 (let ((img (cdr (nth (1- num) (thumbs-file-alist)))))
575 (with-current-buffer image-buffer 576 (with-current-buffer image-buffer
576 (thumbs-insert-image i (thumbs-image-type i) 0)) 577 (setq mode-name
578 (concat "image-view-mode: " (file-name-nondirectory img)
579 " - " (number-to-string num)))
580 (let ((inhibit-read-only t))
581 (erase-buffer)
582 (thumbs-insert-image img (thumbs-image-type img) 0)
583 (goto-char (point-min))))
577 (setq thumbs-image-num num 584 (setq thumbs-image-num num
578 thumbs-current-image-filename i)))) 585 thumbs-current-image-filename img))))
586
587(defun thumbs-previous-image ()
588 "Show the previous image."
589 (interactive)
590 (let* ((i (- thumbs-image-num 1))
591 (number (length (thumbs-file-alist))))
592 (if (= i 0) (setq i (1- number)))
593 (thumbs-show-image-num i)))
579 594
580(defun thumbs-next-image () 595(defun thumbs-next-image ()
581 "Show the next image." 596 "Show the next image."
582 (interactive) 597 (interactive)
583 (let* ((i (1+ thumbs-image-num)) 598 (let* ((i (1+ thumbs-image-num))
584 (list (thumbs-file-alist)) 599 (number (length (thumbs-file-alist))))
585 (l (caar list))) 600 (if (= i number) (setq i 1))
586 (while (and (/= i thumbs-image-num) (not (assoc i list)))
587 (setq i (if (>= i l) 1 (1+ i))))
588 (thumbs-show-image-num i))) 601 (thumbs-show-image-num i)))
589 602
590(defun thumbs-previous-image () 603(defun thumbs-display-thumbs-buffer ()
591 "Show the previous image." 604 "Display the associated thumbs buffer."
592 (interactive) 605 (interactive)
593 (let* ((i (- thumbs-image-num 1)) 606 (display-buffer thumbs-buffer))
594 (list (thumbs-file-alist))
595 (l (caar list)))
596 (while (and (/= i thumbs-image-num) (not (assoc i list)))
597 (setq i (if (<= i 1) l (1- i))))
598 (thumbs-show-image-num i)))
599 607
600(defun thumbs-redraw-buffer () 608(defun thumbs-redraw-buffer ()
601 "Redraw the current thumbs buffer." 609 "Redraw the current thumbs buffer."
@@ -612,10 +620,11 @@ Open another window."
612 (let ((elt (thumbs-current-image))) 620 (let ((elt (thumbs-current-image)))
613 (unless elt 621 (unless elt
614 (error "No image here")) 622 (error "No image here"))
615 (push elt thumbs-markedL) 623 (push elt thumbs-marked-list)
616 (let ((inhibit-read-only t)) 624 (let ((inhibit-read-only t))
617 (delete-char 1) 625 (delete-char 1)
618 (thumbs-insert-thumb elt t))) 626 (save-excursion
627 (thumbs-insert-thumb elt t))))
619 (when (eolp) (forward-char))) 628 (when (eolp) (forward-char)))
620 629
621(defun thumbs-unmark () 630(defun thumbs-unmark ()
@@ -624,32 +633,34 @@ Open another window."
624 (let ((elt (thumbs-current-image))) 633 (let ((elt (thumbs-current-image)))
625 (unless elt 634 (unless elt
626 (error "No image here")) 635 (error "No image here"))
627 (setq thumbs-markedL (delete elt thumbs-markedL)) 636 (setq thumbs-marked-list (delete elt thumbs-marked-list))
628 (let ((inhibit-read-only t)) 637 (let ((inhibit-read-only t))
629 (delete-char 1) 638 (delete-char 1)
630 (thumbs-insert-thumb elt nil))) 639 (save-excursion
640 (thumbs-insert-thumb elt nil))))
631 (when (eolp) (forward-char))) 641 (when (eolp) (forward-char)))
632 642
643
644;; cleaning of old temp files
645(mapc 'delete-file
646 (directory-files (thumbs-temp-dir) t thumbs-temp-prefix))
647
633;; Image modification routines 648;; Image modification routines
634 649
635(defun thumbs-modify-image (action &optional arg) 650(defun thumbs-modify-image (action &optional arg)
636 "Call convert to do ACTION on image with argument ARG. 651 "Call convert to do ACTION on image with argument ARG.
637ACTION and ARG should be a valid convert command." 652ACTION and ARG should be a valid convert command."
638 (interactive "sAction: \nsValue: ") 653 (interactive "sAction: \nsValue: ")
639 ;; cleaning of old temp file 654 (let* ((buffer-read-only nil)
640 (mapc 'delete-file 655 (old thumbs-current-tmp-filename)
641 (directory-files 656 (tmp (thumbs-temp-file)))
642 (thumbs-temp-dir)
643 t
644 thumbs-temp-prefix))
645 (let ((buffer-read-only nil)
646 (tmp (thumbs-temp-file)))
647 (erase-buffer) 657 (erase-buffer)
648 (thumbs-call-convert thumbs-current-image-filename 658 (thumbs-call-convert (or old thumbs-current-image-filename)
649 tmp 659 tmp
650 action 660 action
651 (or arg "")) 661 (or arg ""))
652 (thumbs-insert-image tmp 'jpeg 0) 662 (save-excursion
663 (thumbs-insert-image tmp 'jpeg 0))
653 (setq thumbs-current-tmp-filename tmp))) 664 (setq thumbs-current-tmp-filename tmp)))
654 665
655(defun thumbs-emboss-image (emboss) 666(defun thumbs-emboss-image (emboss)
@@ -699,17 +710,24 @@ ACTION and ARG should be a valid convert command."
699 (forward-char -1)) 710 (forward-char -1))
700 (thumbs-show-name)) 711 (thumbs-show-name))
701 712
713(defun thumbs-backward-line ()
714 "Move up one line."
715 (interactive)
716 (forward-line -1)
717 (thumbs-show-name))
718
702(defun thumbs-forward-line () 719(defun thumbs-forward-line ()
703 "Move down one line." 720 "Move down one line."
704 (interactive) 721 (interactive)
705 (forward-line 1) 722 (forward-line 1)
706 (thumbs-show-name)) 723 (thumbs-show-name))
707 724
708(defun thumbs-backward-line () 725(defun thumbs-show-more-images (&optional arg)
709 "Move up one line." 726 "Show more than `thumbs-max-image-number' images, if present."
710 (interactive) 727 (interactive "P")
711 (forward-line -1) 728 (or arg (setq arg 1))
712 (thumbs-show-name)) 729 (setq thumbs-extra-images (+ thumbs-extra-images arg))
730 (thumbs-dired-show))
713 731
714(defun thumbs-show-name () 732(defun thumbs-show-name ()
715 "Show the name of the current file." 733 "Show the name of the current file."
@@ -744,6 +762,7 @@ ACTION and ARG should be a valid convert command."
744 (define-key map [left] 'thumbs-backward-char) 762 (define-key map [left] 'thumbs-backward-char)
745 (define-key map [up] 'thumbs-backward-line) 763 (define-key map [up] 'thumbs-backward-line)
746 (define-key map [down] 'thumbs-forward-line) 764 (define-key map [down] 'thumbs-forward-line)
765 (define-key map "+" 'thumbs-show-more-images)
747 (define-key map "d" 'thumbs-dired) 766 (define-key map "d" 'thumbs-dired)
748 (define-key map "m" 'thumbs-mark) 767 (define-key map "m" 'thumbs-mark)
749 (define-key map "u" 'thumbs-unmark) 768 (define-key map "u" 'thumbs-unmark)
@@ -759,18 +778,19 @@ ACTION and ARG should be a valid convert command."
759 fundamental-mode "thumbs" 778 fundamental-mode "thumbs"
760 "Preview images in a thumbnails buffer" 779 "Preview images in a thumbnails buffer"
761 (setq buffer-read-only t) 780 (setq buffer-read-only t)
762 (set (make-local-variable 'thumbs-markedL) nil)) 781 (set (make-local-variable 'thumbs-marked-list) nil))
763 782
764(defvar thumbs-view-image-mode-map 783(defvar thumbs-view-image-mode-map
765 (let ((map (make-sparse-keymap))) 784 (let ((map (make-sparse-keymap)))
766 (define-key map [prior] 'thumbs-previous-image) 785 (define-key map [prior] 'thumbs-previous-image)
767 (define-key map [next] 'thumbs-next-image) 786 (define-key map [next] 'thumbs-next-image)
768 (define-key map "-" 'thumbs-resize-image-size-down) 787 (define-key map "^" 'thumbs-display-thumbs-buffer)
769 (define-key map "+" 'thumbs-resize-image-size-up) 788 (define-key map "-" 'thumbs-shrink-image)
789 (define-key map "+" 'thumbs-enlarge-image)
770 (define-key map "<" 'thumbs-rotate-left) 790 (define-key map "<" 'thumbs-rotate-left)
771 (define-key map ">" 'thumbs-rotate-right) 791 (define-key map ">" 'thumbs-rotate-right)
772 (define-key map "e" 'thumbs-emboss-image) 792 (define-key map "e" 'thumbs-emboss-image)
773 (define-key map "r" 'thumbs-resize-interactive) 793 (define-key map "r" 'thumbs-resize-image)
774 (define-key map "s" 'thumbs-save-current-image) 794 (define-key map "s" 'thumbs-save-current-image)
775 (define-key map "q" 'thumbs-kill-buffer) 795 (define-key map "q" 'thumbs-kill-buffer)
776 (define-key map "w" 'thumbs-set-root) 796 (define-key map "w" 'thumbs-set-root)
@@ -790,7 +810,7 @@ ACTION and ARG should be a valid convert command."
790 (thumbs-call-setroot-command (dired-get-filename))) 810 (thumbs-call-setroot-command (dired-get-filename)))
791 811
792;; Modif to dired mode map 812;; Modif to dired mode map
793(define-key dired-mode-map "\C-ta" 'thumbs-dired-show-all) 813(define-key dired-mode-map "\C-ta" 'thumbs-dired-show)
794(define-key dired-mode-map "\C-tm" 'thumbs-dired-show-marked) 814(define-key dired-mode-map "\C-tm" 'thumbs-dired-show-marked)
795(define-key dired-mode-map "\C-tw" 'thumbs-dired-setroot) 815(define-key dired-mode-map "\C-tw" 'thumbs-dired-setroot)
796 816
diff --git a/lisp/vc-rcs.el b/lisp/vc-rcs.el
index e301804cf17..0729064c72b 100644
--- a/lisp/vc-rcs.el
+++ b/lisp/vc-rcs.el
@@ -152,8 +152,8 @@ For a description of possible values, see `vc-check-master-templates'."
152 (vc-file-setprop file 'vc-checkout-model 'locking)))) 152 (vc-file-setprop file 'vc-checkout-model 'locking))))
153 state) 153 state)
154 (if (not (vc-mistrust-permissions file)) 154 (if (not (vc-mistrust-permissions file))
155 (let* ((attributes (file-attributes file)) 155 (let* ((attributes (file-attributes file 'string))
156 (owner-uid (nth 2 attributes)) 156 (owner-name (nth 2 attributes))
157 (permissions (nth 8 attributes))) 157 (permissions (nth 8 attributes)))
158 (cond ((string-match ".r-..-..-." permissions) 158 (cond ((string-match ".r-..-..-." permissions)
159 (vc-file-setprop file 'vc-checkout-model 'locking) 159 (vc-file-setprop file 'vc-checkout-model 'locking)
@@ -162,7 +162,7 @@ For a description of possible values, see `vc-check-master-templates'."
162 (if (eq (vc-checkout-model file) 'locking) 162 (if (eq (vc-checkout-model file) 'locking)
163 (if (file-ownership-preserved-p file) 163 (if (file-ownership-preserved-p file)
164 'edited 164 'edited
165 (vc-user-login-name owner-uid)) 165 owner-name)
166 (if (vc-rcs-workfile-is-newer file) 166 (if (vc-rcs-workfile-is-newer file)
167 'edited 167 'edited
168 'up-to-date))) 168 'up-to-date)))
diff --git a/lisp/vc-sccs.el b/lisp/vc-sccs.el
index 8f00e1df627..c4047d1b3ec 100644
--- a/lisp/vc-sccs.el
+++ b/lisp/vc-sccs.el
@@ -122,15 +122,15 @@ For a description of possible values, see `vc-check-master-templates'."
122 ;; We have to be careful not to exclude files with execute bits on; 122 ;; We have to be careful not to exclude files with execute bits on;
123 ;; scripts can be under version control too. Also, we must ignore the 123 ;; scripts can be under version control too. Also, we must ignore the
124 ;; group-read and other-read bits, since paranoid users turn them off. 124 ;; group-read and other-read bits, since paranoid users turn them off.
125 (let* ((attributes (file-attributes file)) 125 (let* ((attributes (file-attributes file 'string))
126 (owner-uid (nth 2 attributes)) 126 (owner-name (nth 2 attributes))
127 (permissions (nth 8 attributes))) 127 (permissions (nth 8 attributes)))
128 (if (string-match ".r-..-..-." permissions) 128 (if (string-match ".r-..-..-." permissions)
129 'up-to-date 129 'up-to-date
130 (if (string-match ".rw..-..-." permissions) 130 (if (string-match ".rw..-..-." permissions)
131 (if (file-ownership-preserved-p file) 131 (if (file-ownership-preserved-p file)
132 'edited 132 'edited
133 (vc-user-login-name owner-uid)) 133 owner-name)
134 ;; Strange permissions. 134 ;; Strange permissions.
135 ;; Fall through to real state computation. 135 ;; Fall through to real state computation.
136 (vc-sccs-state file)))) 136 (vc-sccs-state file))))
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index e6ac498ce3a..ef07c950e09 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,21 @@
12006-01-19 Richard M. Stallman <rms@gnu.org>
2
3 * nonascii.texi (Translation of Characters): Search cmds use
4 translation-table-for-input. Automatically made local.
5
6 * markers.texi (Overview of Markers): Count insertion type
7 as one of a marker's attributes.
8
9 * elisp.texi (Top): Menu clarification.
10
11 * display.texi (Other Display Specs): Delete duplicate entry for
12 just a string as display spec. Move text about recursive display
13 specs on such a string.
14
15 * commands.texi (Key Sequence Input): Clarify.
16 Move num-nonmacro-input-events out.
17 (Reading One Event): num-nonmacro-input-events moved here.
18
12006-01-14 Nick Roberts <nickrob@snap.net.nz> 192006-01-14 Nick Roberts <nickrob@snap.net.nz>
2 20
3 * advice.texi (Simple Advice): Update example to fit argument 21 * advice.texi (Simple Advice): Update example to fit argument
diff --git a/lispref/commands.texi b/lispref/commands.texi
index ed9cb2cf3ca..0d5e8b232ff 100644
--- a/lispref/commands.texi
+++ b/lispref/commands.texi
@@ -2074,6 +2074,9 @@ Otherwise, it returns a vector, since a vector can hold all kinds of
2074events---characters, symbols, and lists. The elements of the string or 2074events---characters, symbols, and lists. The elements of the string or
2075vector are the events in the key sequence. 2075vector are the events in the key sequence.
2076 2076
2077Reading a key sequence includes translating the events in various
2078ways. @xref{Translating Input}.
2079
2077The argument @var{prompt} is either a string to be displayed in the 2080The argument @var{prompt} is either a string to be displayed in the
2078echo area as a prompt, or @code{nil}, meaning not to display a prompt. 2081echo area as a prompt, or @code{nil}, meaning not to display a prompt.
2079The argument @var{continue-echo}, if non-@code{nil}, means to echo 2082The argument @var{continue-echo}, if non-@code{nil}, means to echo
@@ -2097,8 +2100,8 @@ key sequence is being read by something that will read commands one
2097after another. It should be @code{nil} if the caller will read just 2100after another. It should be @code{nil} if the caller will read just
2098one key sequence. 2101one key sequence.
2099 2102
2100In the example below, the prompt @samp{?} is displayed in the echo area, 2103In the following example, Emacs displays the prompt @samp{?} in the
2101and the user types @kbd{C-x C-f}. 2104echo area, and then the user types @kbd{C-x C-f}.
2102 2105
2103@example 2106@example
2104(read-key-sequence "?") 2107(read-key-sequence "?")
@@ -2173,11 +2176,6 @@ this Emacs session. This includes key sequences read from the terminal
2173and key sequences read from keyboard macros being executed. 2176and key sequences read from keyboard macros being executed.
2174@end defvar 2177@end defvar
2175 2178
2176@defvar num-nonmacro-input-events
2177This variable holds the total number of input events received so far
2178from the terminal---not counting those generated by keyboard macros.
2179@end defvar
2180
2181@node Reading One Event 2179@node Reading One Event
2182@subsection Reading One Event 2180@subsection Reading One Event
2183@cindex reading a single event 2181@cindex reading a single event
@@ -2265,6 +2263,11 @@ user generates an event which is not a character,
2265gets a character. The arguments work as in @code{read-event}. 2263gets a character. The arguments work as in @code{read-event}.
2266@end defun 2264@end defun
2267 2265
2266@defvar num-nonmacro-input-events
2267This variable holds the total number of input events received so far
2268from the terminal---not counting those generated by keyboard macros.
2269@end defvar
2270
2268@node Invoking the Input Method 2271@node Invoking the Input Method
2269@subsection Invoking the Input Method 2272@subsection Invoking the Input Method
2270 2273
diff --git a/lispref/display.texi b/lispref/display.texi
index 14d44a1b995..1bd10113ce9 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -3277,6 +3277,9 @@ in the @code{display} text property.
3277@item @var{string} 3277@item @var{string}
3278Display @var{string} instead of the text that has this property. 3278Display @var{string} instead of the text that has this property.
3279 3279
3280Recursive display specifications are not supported---@var{string}'s
3281@code{display} properties, if any, are not used.
3282
3280@item (image . @var{image-props}) 3283@item (image . @var{image-props})
3281This kind of display specification is an image descriptor (@pxref{Images}). 3284This kind of display specification is an image descriptor (@pxref{Images}).
3282When used as a display specification, it means to display the image 3285When used as a display specification, it means to display the image
@@ -3292,14 +3295,11 @@ in the range 0.0--1.0 stands for that fraction of the width or height
3292of the entire image. 3295of the entire image.
3293 3296
3294@item ((margin nil) @var{string}) 3297@item ((margin nil) @var{string})
3295@itemx @var{string}
3296A display specification of this form means to display @var{string} 3298A display specification of this form means to display @var{string}
3297instead of the text that has the display specification, at the same 3299instead of the text that has the display specification, at the same
3298position as that text. This is a special case of marginal display 3300position as that text. It is equivalent to using just @var{string},
3299(@pxref{Display Margins}). 3301but it is done as a special case of marginal display (@pxref{Display
3300 3302Margins}).
3301Recursive display specifications are not supported---string display
3302specifications must not have @code{display} properties themselves.
3303 3303
3304@item (space-width @var{factor}) 3304@item (space-width @var{factor})
3305This display specification affects all the space characters within the 3305This display specification affects all the space characters within the
diff --git a/lispref/elisp.texi b/lispref/elisp.texi
index 79f62112730..1a300c3dd9a 100644
--- a/lispref/elisp.texi
+++ b/lispref/elisp.texi
@@ -123,7 +123,7 @@ Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}.
123 files are made. 123 files are made.
124* Buffers:: Creating and using buffer objects. 124* Buffers:: Creating and using buffer objects.
125* Windows:: Manipulating windows and displaying buffers. 125* Windows:: Manipulating windows and displaying buffers.
126* Frames:: Making multiple X windows. 126* Frames:: Making multiple system-level windows.
127* Positions:: Buffer positions and motion functions. 127* Positions:: Buffer positions and motion functions.
128* Markers:: Markers represent positions and update 128* Markers:: Markers represent positions and update
129 automatically when the text is changed. 129 automatically when the text is changed.
diff --git a/lispref/markers.texi b/lispref/markers.texi
index ab16afc3ac4..aa26a0aa030 100644
--- a/lispref/markers.texi
+++ b/lispref/markers.texi
@@ -36,14 +36,15 @@ way usually points to a position in the buffer that the function
36operates on, but that is entirely the programmer's responsibility. 36operates on, but that is entirely the programmer's responsibility.
37@xref{Positions}, for a complete description of positions. 37@xref{Positions}, for a complete description of positions.
38 38
39 A marker has two attributes: the marker position, and the marker 39 A marker has three attributes: the marker position, the marker
40buffer. The marker position is an integer that is equivalent (at a 40buffer, and the insertion type. The marker position is an integer
41given time) to the marker as a position in that buffer. But the 41that is equivalent (at a given time) to the marker as a position in
42marker's position value can change often during the life of the marker. 42that buffer. But the marker's position value can change often during
43Insertion and deletion of text in the buffer relocate the marker. The 43the life of the marker. Insertion and deletion of text in the buffer
44idea is that a marker positioned between two characters remains between 44relocate the marker. The idea is that a marker positioned between two
45those two characters despite insertion and deletion elsewhere in the 45characters remains between those two characters despite insertion and
46buffer. Relocation changes the integer equivalent of the marker. 46deletion elsewhere in the buffer. Relocation changes the integer
47equivalent of the marker.
47 48
48@cindex marker relocation 49@cindex marker relocation
49 Deleting text around a marker's position leaves the marker between the 50 Deleting text around a marker's position leaves the marker between the
diff --git a/lispref/nonascii.texi b/lispref/nonascii.texi
index 73632e36514..6e41a462934 100644
--- a/lispref/nonascii.texi
+++ b/lispref/nonascii.texi
@@ -578,12 +578,14 @@ coding systems that don't specify any other translation table.
578 578
579@defvar translation-table-for-input 579@defvar translation-table-for-input
580Self-inserting characters are translated through this translation 580Self-inserting characters are translated through this translation
581table before they are inserted. This variable automatically becomes 581table before they are inserted. Search commands also translate their
582buffer-local when set. 582input through this table, so they can compare more reliably with
583what's in the buffer.
583 584
584@code{set-buffer-file-coding-system} sets this variable so that your 585@code{set-buffer-file-coding-system} sets this variable so that your
585keyboard input gets translated into the character sets that the buffer 586keyboard input gets translated into the character sets that the buffer
586is likely to contain. 587is likely to contain. This variable automatically becomes
588buffer-local when set.
587@end defvar 589@end defvar
588 590
589@node Coding Systems 591@node Coding Systems
diff --git a/man/ChangeLog b/man/ChangeLog
index eace76aae1a..3d1dfccff15 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,50 @@
12006-01-23 Juri Linkov <juri@jurta.org>
2
3 * custom.texi (Easy Customization, Customization Groups)
4 (Browsing Custom): Mention links along with buttons.
5
6 * widget.texi (User Interface): Add S-TAB for widget-backward.
7
82006-01-22 Michael Albinus <michael.albinus@gmx.de>
9
10 Sync with Tramp 2.0.52.
11
12 * tramp.texi (Frequently Asked Questions): Remove Ange-FTP item.
13 Add Tramp disabling item. New item for common connection
14 problems.
15 (various): Apply "ftp" as method for the download URL.
16 (Bug Reports): Refer to FAQ for common problems.
17
182006-01-21 Eli Zaretskii <eliz@gnu.org>
19
20 * widget.texi (User Interface): Use @key for TAB.
21
22 * text.texi (TeX Print): Use @key for TAB.
23
24 * ses.texi (Formulas, Printer functions): Use @key for TAB.
25
26 * kmacro.texi (Keyboard Macro Step-Edit): : Use @key for TAB.
27
28 * ebrowse.texi (Switching to Tree, Symbol Completion): : Use @key
29 for TAB.
30
31 * cc-mode.texi (Indentation Calculation): Use @key for TAB.
32
332006-01-15 Sven Joachim <svenjoac@gmx.de> (tiny change)
34
35 * files.texi (File Aliases): Don't claim that usually separate
36 buffers are created for two file names that name the same data.
37 Mention additional situations where different names mean the same
38 file on disk.
39
402006-01-19 Richard M. Stallman <rms@gnu.org>
41
42 * killing.texi (Deletion): Upcase @key argument.
43
44 * custom.texi (Custom Themes): Minor cleanup.
45
46 * programs.texi (Hungry Delete): Upcase @key argument.
47
12006-01-16 Katsumi Yamaoka <yamaoka@jpl.org> 482006-01-16 Katsumi Yamaoka <yamaoka@jpl.org>
2 49
3 * gnus.texi: Update copyright. 50 * gnus.texi: Update copyright.
diff --git a/man/cc-mode.texi b/man/cc-mode.texi
index 0d6e88f20ea..05c4cbf5a3c 100644
--- a/man/cc-mode.texi
+++ b/man/cc-mode.texi
@@ -208,7 +208,7 @@ license to the document, as described in section 6 of the license.
208@vskip 0pt plus 1filll 208@vskip 0pt plus 1filll
209@insertcopying 209@insertcopying
210 210
211This manual was generated from $Revision: 1.32 $ of $RCSfile: cc-mode.texi,v $, which can be 211This manual was generated from $Revision$ of $RCSfile$, which can be
212downloaded from 212downloaded from
213@url{http://cvs.sf.net/viewcvs.py/cc-mode/cc-mode/cc-mode.texi}. 213@url{http://cvs.sf.net/viewcvs.py/cc-mode/cc-mode/cc-mode.texi}.
214@end titlepage 214@end titlepage
@@ -4883,7 +4883,7 @@ our first example again:
4883 6: @} 4883 6: @}
4884@end example 4884@end example
4885 4885
4886Let's say point is on line 3 and we hit the @kbd{TAB} key to reindent 4886Let's say point is on line 3 and we hit the @key{TAB} key to reindent
4887the line. The syntactic context for that line is: 4887the line. The syntactic context for that line is:
4888 4888
4889@example 4889@example
diff --git a/man/custom.texi b/man/custom.texi
index 9b93b56a08f..509a63a4de2 100644
--- a/man/custom.texi
+++ b/man/custom.texi
@@ -202,7 +202,7 @@ and set their values, and to save settings permanently in your
202 202
203 The appearance of the example buffers in this section is typically 203 The appearance of the example buffers in this section is typically
204different under a window system, since faces are then used to indicate 204different under a window system, since faces are then used to indicate
205buttons and editable fields. 205buttons, links and editable fields.
206 206
207@menu 207@menu
208* Groups: Customization Groups. How settings are classified in a structure. 208* Groups: Customization Groups. How settings are classified in a structure.
@@ -256,16 +256,18 @@ line.
256 256
257@cindex editable fields (customization buffer) 257@cindex editable fields (customization buffer)
258@cindex buttons (customization buffer) 258@cindex buttons (customization buffer)
259@cindex links (customization buffer)
259 Most of the text in the customization buffer is read-only, but it 260 Most of the text in the customization buffer is read-only, but it
260typically includes some @dfn{editable fields} that you can edit. 261typically includes some @dfn{editable fields} that you can edit.
261There are also @dfn{buttons}, which do something when you @dfn{invoke} 262There are also @dfn{buttons} and @dfn{links}, which do something when
262them. To invoke a button, either click on it with @kbd{Mouse-1}, or 263you @dfn{invoke} them. To invoke a button or a link, either click on
263move point to it and type @key{RET}. 264it with @kbd{Mouse-1}, or move point to it and type @key{RET}.
264 265
265 For example, the phrase @samp{[Go to Group]} that appears in a 266 For example, the phrase @samp{[State]} that appears in
266second-level group is a button. Invoking it creates a new 267a second-level group is a button. It operates on the same
267customization buffer, which shows that group and its contents. This 268customization buffer. The phrase @samp{[Go to Group]} is a kind
268is a kind of hypertext link to another group. 269of hypertext link to another group. Invoking it creates a new
270customization buffer, which shows that group and its contents.
269 271
270 The @code{Emacs} group includes a few settings, but mainly it 272 The @code{Emacs} group includes a few settings, but mainly it
271contains other groups, which contain more groups, which contain the 273contains other groups, which contain more groups, which contain the
@@ -288,8 +290,8 @@ structure.
288@samp{[+]}. When the group contents are visible, this button changes to 290@samp{[+]}. When the group contents are visible, this button changes to
289@samp{[-]}; invoking that hides the group contents. 291@samp{[-]}; invoking that hides the group contents.
290 292
291 Each setting in this buffer has a button which says @samp{[Group]}, 293 Each setting in this buffer has a link which says @samp{[Group]},
292@samp{[Option]} or @samp{[Face]}. Invoking this button creates an 294@samp{[Option]} or @samp{[Face]}. Invoking this link creates an
293ordinary customization buffer showing just that group and its 295ordinary customization buffer showing just that group and its
294contents, just that user option, or just that face. This is the way 296contents, just that user option, or just that face. This is the way
295to change settings that you find with @kbd{M-x customize-browse}. 297to change settings that you find with @kbd{M-x customize-browse}.
@@ -729,14 +731,15 @@ theme occurring earlier in @code{custom-enabled-themes} takes effect.
729@findex load-theme 731@findex load-theme
730@findex enable-theme 732@findex enable-theme
731@findex disable-theme 733@findex disable-theme
732 You can also enable a Custom theme with @kbd{M-x enable-theme}. 734 You can temporarily enable a Custom theme with @kbd{M-x
733This prompts for a theme name in the minibuffer, loads the theme from 735enable-theme}. This prompts for a theme name in the minibuffer, loads
734the theme file if necessary, and enables the theme. An enabled theme 736the theme from the theme file if necessary, and enables the theme.
735can be @dfn{disabled} with the command @kbd{M-x disable-theme}; this 737You can @dfn{disabled} any enabled theme with the command @kbd{M-x
736returns the options specified in the theme to their original values. 738disable-theme}; this returns the options specified in the theme to
737To re-enable the theme, call @kbd{M-x enable-theme} again. If a theme 739their original values. To re-enable the theme, type @kbd{M-x
738file is changed during your Emacs session, you can reload it by 740enable-theme} again. If a theme file is changed during your Emacs
739calling @kbd{M-x load-theme}. This also enables the theme. 741session, you can reload it by typing @kbd{M-x load-theme}. (This also
742enables the theme.)
740 743
741@node Variables 744@node Variables
742@section Variables 745@section Variables
diff --git a/man/ebrowse.texi b/man/ebrowse.texi
index b48d5c2b987..77e4ad07b45 100644
--- a/man/ebrowse.texi
+++ b/man/ebrowse.texi
@@ -979,11 +979,11 @@ a mouse.
979@cindex switching buffers 979@cindex switching buffers
980 980
981@table @kbd 981@table @kbd
982@item TAB 982@item @key{TAB}
983Pop up the tree buffer to which the member buffer belongs. 983Pop up the tree buffer to which the member buffer belongs.
984 984
985@item t 985@item t
986Do the same as @kbd{TAB} but also position the cursor on the class 986Do the same as @key{TAB} but also position the cursor on the class
987displayed in the member buffer. 987displayed in the member buffer.
988@end table 988@end table
989 989
@@ -1433,7 +1433,7 @@ command @kbd{C-c b f}, for example, to jump to a specific member.
1433@cindex completion 1433@cindex completion
1434@cindex symbol completion 1434@cindex symbol completion
1435 1435
1436The command @kbd{C-c b TAB} completes the symbol in front of point. 1436The command @kbd{C-c b @key{TAB}} completes the symbol in front of point.
1437 1437
1438 1438
1439 1439
diff --git a/man/files.texi b/man/files.texi
index d599e576e94..7b08fc5c791 100644
--- a/man/files.texi
+++ b/man/files.texi
@@ -1150,21 +1150,20 @@ either name to refer to the file, but @file{bar} is the real name, while
1150@file{foo} is just an alias. More complex cases occur when symbolic 1150@file{foo} is just an alias. More complex cases occur when symbolic
1151links point to directories. 1151links point to directories.
1152 1152
1153 If you visit two names for the same file, normally Emacs makes
1154two different buffers, but it warns you about the situation.
1155
1156@vindex find-file-existing-other-name 1153@vindex find-file-existing-other-name
1157@vindex find-file-suppress-same-file-warnings 1154@vindex find-file-suppress-same-file-warnings
1155
1158 Normally, if you visit a file which Emacs is already visiting under 1156 Normally, if you visit a file which Emacs is already visiting under
1159a different name, Emacs displays a message in the echo area and uses 1157a different name, Emacs displays a message in the echo area and uses
1160the existing buffer visiting that file. This can happen on systems 1158the existing buffer visiting that file. This can happen on systems
1161that support symbolic links, or if you use a long file name on a 1159that support hard or symbolic links, or if you use a long file name on
1162system that truncates long file names. You can suppress the message by 1160a system that truncates long file names, or on a case-insensitive file
1163setting the variable @code{find-file-suppress-same-file-warnings} to a 1161system. You can suppress the message by setting the variable
1164non-@code{nil} value. You can disable this feature entirely by setting 1162@code{find-file-suppress-same-file-warnings} to a non-@code{nil}
1165the variable @code{find-file-existing-other-name} to @code{nil}: then 1163value. You can disable this feature entirely by setting the variable
1166if you visit the same file under two different names, you get a separate 1164@code{find-file-existing-other-name} to @code{nil}: then if you visit
1167buffer for each file name. 1165the same file under two different names, you get a separate buffer for
1166each file name.
1168 1167
1169@vindex find-file-visit-truename 1168@vindex find-file-visit-truename
1170@cindex truenames of files 1169@cindex truenames of files
diff --git a/man/killing.texi b/man/killing.texi
index 738043cd61b..9ee6e7e62e3 100644
--- a/man/killing.texi
+++ b/man/killing.texi
@@ -78,9 +78,9 @@ erase just one character or only whitespace.
78 78
79@table @kbd 79@table @kbd
80@item C-d 80@item C-d
81@itemx @key{Delete} 81@itemx @key{DELETE}
82Delete next character (@code{delete-char}). If your keyboard has a 82Delete next character (@code{delete-char}). If your keyboard has a
83@key{Delete} function key (usually located in the edit keypad), Emacs 83@key{DELETE} function key (usually located in the edit keypad), Emacs
84binds it to @code{delete-char} as well. 84binds it to @code{delete-char} as well.
85@item @key{DEL} 85@item @key{DEL}
86@itemx @key{BS} 86@itemx @key{BS}
diff --git a/man/kmacro.texi b/man/kmacro.texi
index 0693eefca54..852f999adac 100644
--- a/man/kmacro.texi
+++ b/man/kmacro.texi
@@ -521,8 +521,8 @@ next command in the keyboard macro.
521@kbd{f} skips the current command in this execution of the keyboard 521@kbd{f} skips the current command in this execution of the keyboard
522macro, but doesn't delete it from the macro. 522macro, but doesn't delete it from the macro.
523@item 523@item
524@kbd{TAB} executes the current command, as well as all similar 524@kbd{@key{TAB}} executes the current command, as well as all similar
525commands immediately following the current command; for example, TAB 525commands immediately following the current command; for example, @key{TAB}
526may be used to insert a sequence of characters (corresponding to a 526may be used to insert a sequence of characters (corresponding to a
527sequence of @code{self-insert-command} commands). 527sequence of @code{self-insert-command} commands).
528@item 528@item
diff --git a/man/org.texi b/man/org.texi
index c73235f3df1..cf096504f40 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -4,7 +4,7 @@
4@setfilename ../info/org 4@setfilename ../info/org
5@settitle Org Mode Manual 5@settitle Org Mode Manual
6 6
7@set VERSION 4.03 7@set VERSION 4.04
8@set DATE January 2006 8@set DATE January 2006
9 9
10@dircategory Emacs 10@dircategory Emacs
@@ -2511,7 +2511,7 @@ original org file.
2511 2511
2512@kindex T 2512@kindex T
2513@item T 2513@item T
2514Show all tags associated with the current item. Because of 2514Show all tags assiciated with the current item. Because of
2515inheritance, this may be more than the tags listed in the line itself. 2515inheritance, this may be more than the tags listed in the line itself.
2516 2516
2517@kindex : 2517@kindex :
diff --git a/man/programs.texi b/man/programs.texi
index e1806488150..dfb1e9c0d85 100644
--- a/man/programs.texi
+++ b/man/programs.texi
@@ -1630,7 +1630,7 @@ following point.
1630delete mode}. When this feature is enabled (indicated by @samp{/h} in 1630delete mode}. When this feature is enabled (indicated by @samp{/h} in
1631the mode line after the mode name), a single @key{BS} command deletes 1631the mode line after the mode name), a single @key{BS} command deletes
1632all preceding whitespace, not just one space, and a single @kbd{C-c 1632all preceding whitespace, not just one space, and a single @kbd{C-c
1633C-d} (but @emph{not} @key{delete}) deletes all following whitespace. 1633C-d} (but @emph{not} @key{DELETE}) deletes all following whitespace.
1634 1634
1635@table @kbd 1635@table @kbd
1636@item M-x c-toggle-hungry-state 1636@item M-x c-toggle-hungry-state
diff --git a/man/ses.texi b/man/ses.texi
index f6977335661..38caa7c830a 100644
--- a/man/ses.texi
+++ b/man/ses.texi
@@ -188,12 +188,12 @@ Self-insert an expression. The right-parenthesis is inserted for you
188(@code{ses-read-cell}). To access another cell's value, just use its 188(@code{ses-read-cell}). To access another cell's value, just use its
189identifier in your expression. Whenever the other cell is changed, 189identifier in your expression. Whenever the other cell is changed,
190this cell's formula will be reevaluated. While typing in the 190this cell's formula will be reevaluated. While typing in the
191expression, you can use @kbd{M-TAB} to complete symbol names. 191expression, you can use @kbd{M-@key{TAB}} to complete symbol names.
192 192
193@item ' @r{(apostrophe)} 193@item ' @r{(apostrophe)}
194Enter a symbol (ses-read-symbol). SES remembers all symbols that have 194Enter a symbol (ses-read-symbol). SES remembers all symbols that have
195been used as formulas, so you can type just the beginning of a symbol 195been used as formulas, so you can type just the beginning of a symbol
196and use @kbd{SPC}, @kbd{TAB}, and @kbd{?} to complete it. 196and use @kbd{@key{SPC}}, @kbd{@key{TAB}}, and @kbd{?} to complete it.
197@end table 197@end table
198 198
199To enter something else (e.g., a vector), begin with a digit, then 199To enter something else (e.g., a vector), begin with a digit, then
@@ -287,7 +287,7 @@ string is right-aligned within the print cell. To get left-alignment,
287use parentheses: @samp{("$%.2f")}. A printer can also be a 287use parentheses: @samp{("$%.2f")}. A printer can also be a
288one-argument function (a symbol or a lambda), whose result is a string 288one-argument function (a symbol or a lambda), whose result is a string
289(right-aligned) or list of one string (left-aligned). While typing in 289(right-aligned) or list of one string (left-aligned). While typing in
290a lambda, you can use @kbd{M-TAB} to complete the names of symbols. 290a lambda, you can use @kbd{M-@key{TAB}} to complete the names of symbols.
291 291
292Each cell has a printer. If @code{nil}, the column-printer for the cell's 292Each cell has a printer. If @code{nil}, the column-printer for the cell's
293column is used. If that is also @code{nil}, the default-printer for the 293column is used. If that is also @code{nil}, the default-printer for the
diff --git a/man/text.texi b/man/text.texi
index 5abb736a891..4470e494daf 100644
--- a/man/text.texi
+++ b/man/text.texi
@@ -1680,12 +1680,12 @@ Variables}.
1680 For La@TeX{} files, you can use Bib@TeX{} to process the auxiliary 1680 For La@TeX{} files, you can use Bib@TeX{} to process the auxiliary
1681file for the current buffer's file. Bib@TeX{} looks up bibliographic 1681file for the current buffer's file. Bib@TeX{} looks up bibliographic
1682citations in a data base and prepares the cited references for the 1682citations in a data base and prepares the cited references for the
1683bibliography section. The command @kbd{C-c TAB} 1683bibliography section. The command @kbd{C-c @key{TAB}}
1684(@code{tex-bibtex-file}) runs the shell command 1684(@code{tex-bibtex-file}) runs the shell command
1685(@code{tex-bibtex-command}) to produce a @samp{.bbl} file for the 1685(@code{tex-bibtex-command}) to produce a @samp{.bbl} file for the
1686current buffer's file. Generally, you need to do @kbd{C-c C-f} 1686current buffer's file. Generally, you need to do @kbd{C-c C-f}
1687(@code{tex-file}) once to generate the @samp{.aux} file, then do 1687(@code{tex-file}) once to generate the @samp{.aux} file, then do
1688@kbd{C-c TAB} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f} 1688@kbd{C-c @key{TAB}} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f}
1689(@code{tex-file}) twice more to get the cross-references correct. 1689(@code{tex-file}) twice more to get the cross-references correct.
1690 1690
1691@findex tex-compile 1691@findex tex-compile
diff --git a/man/tramp.texi b/man/tramp.texi
index ccaa0cd3c61..89773534096 100644
--- a/man/tramp.texi
+++ b/man/tramp.texi
@@ -25,8 +25,8 @@
25@end macro 25@end macro
26 26
27@copying 27@copying
28Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 28Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
29 2005 Free Software Foundation, Inc. 29Free Software Foundation, Inc.
30 30
31@quotation 31@quotation
32Permission is granted to copy, distribute and/or modify this document 32Permission is granted to copy, distribute and/or modify this document
@@ -111,7 +111,7 @@ Japanese translation}.
111@end ifset 111@end ifset
112 112
113The latest release of @value{tramp} is available for 113The latest release of @value{tramp} is available for
114@uref{http://ftp.gnu.org/gnu/tramp/, download}, or you may see 114@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
115@ref{Obtaining Tramp} for more details, including the CVS server 115@ref{Obtaining Tramp} for more details, including the CVS server
116details. 116details.
117 117
@@ -378,7 +378,7 @@ behind the scenes when you open a file with @value{tramp}.
378 378
379@value{tramp} is freely available on the Internet and the latest 379@value{tramp} is freely available on the Internet and the latest
380release may be downloaded from 380release may be downloaded from
381@uref{http://ftp.gnu.org/gnu/tramp/}. This release includes the full 381@uref{ftp://ftp.gnu.org/gnu/tramp/}. This release includes the full
382documentation and code for @value{tramp}, suitable for installation. 382documentation and code for @value{tramp}, suitable for installation.
383But GNU Emacs (22 or later) includes @value{tramp} already, and there 383But GNU Emacs (22 or later) includes @value{tramp} already, and there
384is a @value{tramp} package for XEmacs, as well. So maybe it is easier 384is a @value{tramp} package for XEmacs, as well. So maybe it is easier
@@ -1946,7 +1946,9 @@ will automatically generate a buffer with the details of your system and
1946 1946
1947When submitting a bug report, please try to describe in excruciating 1947When submitting a bug report, please try to describe in excruciating
1948detail the steps required to reproduce the problem, the setup of the 1948detail the steps required to reproduce the problem, the setup of the
1949remote machine and any special conditions that exist. 1949remote machine and any special conditions that exist. You should also
1950check that your problem is not described already in @xref{Frequently
1951Asked Questions}.
1950 1952
1951If you can identify a minimal test case that reproduces the problem, 1953If you can identify a minimal test case that reproduces the problem,
1952include that with your bug report. This will make it much easier for the 1954include that with your bug report. This will make it much easier for the
@@ -1964,7 +1966,7 @@ Where can I get the latest @value{tramp}?
1964@value{tramp} is available under the URL below. 1966@value{tramp} is available under the URL below.
1965 1967
1966@noindent 1968@noindent
1967@uref{http://ftp.gnu.org/gnu/tramp/} 1969@uref{ftp://ftp.gnu.org/gnu/tramp/}
1968 1970
1969@noindent 1971@noindent
1970There is also a Savannah project page. 1972There is also a Savannah project page.
@@ -1972,6 +1974,7 @@ There is also a Savannah project page.
1972@noindent 1974@noindent
1973@uref{http://savannah.gnu.org/projects/tramp/} 1975@uref{http://savannah.gnu.org/projects/tramp/}
1974 1976
1977
1975@item 1978@item
1976Which systems does it work on? 1979Which systems does it work on?
1977 1980
@@ -2003,49 +2006,32 @@ Emacs? I think there was some issue with @command{ssh}?
2003 2006
2004 2007
2005@item 2008@item
2006I can't stop @value{ftppackagename} starting with @value{emacsname} 2009@value{tramp} does not connect to the remote host
2007 2010
2008@ifset emacs 2011When @value{tramp} does not connect to the remote host, there are two
2009@value{ftppackagename} is loaded from @value{tramp} automatically if you 2012reasons heading the bug mailing list:
2010require a file by the ftp method. Unfortunately, there are some Lisp
2011packages which make @value{ftppackagename} file name handlers active.
2012You can see it applying @kbd{C-h v file-name-handler-alist}:
2013 2013
2014@example 2014@itemize @minus
2015file-name-handler-alist's value is
2016(("^/[^/:]*\\'" . ange-ftp-completion-hook-function)
2017 ("^/[^/:]*[^/:.]:" . ange-ftp-hook-function)
2018 ("^/[^/]*$" . tramp-completion-file-name-handler)
2019 ("\\`/[^/:]+:" . tramp-file-name-handler)
2020 ("\\`/:" . file-name-non-special))
2021@end example
2022 2015
2023Please try to find out which package is responsible for loading 2016@item
2024@value{ftppackagename}, and raise a bug report. 2017Unknown characters in the prompt
2025 2018
2026A workaround is to require @value{ftppackagename} before @value{tramp} in 2019@value{tramp} needs to recognize the prompt on the remote machine
2027your @file{~/.emacs}, because @value{tramp} cleans up the entries in 2020after execution any command. This is not possible, when the prompt
2028@code{file-name-handler-alist}: 2021contains unknown characters like escape sequences for coloring. This
2022should be avoided on the remote side. @xref{Remote shell setup}. for
2023setting the regular expression detecting the prompt.
2029 2024
2030@lisp 2025@item
2031;; @value{ftppackagename} temporarily required 2026@value{tramp} doesn't transfer strings with more than 500 characters
2032(require 'ange-ftp) 2027correctly
2033;; @value{tramp} cleans up @code{file-name-handler-alist}
2034(require 'tramp)
2035@end lisp
2036@end ifset
2037 2028
2038@ifset xemacs 2029On some few systems, the implementation of @code{process-send-string}
2039Not all the older versions of @value{tramp} supported @value{emacsname} 2030seems to be broken for longer strings. This case, you should
2040correctly. The first thing to do is to make sure that you have the 2031customize the variable @code{tramp-chunksize} to 500. For a
2041latest version of @value{tramp} installed. 2032description how to determine whether this is necessary see the
2042 2033documentation of @code{tramp-chunksize}.
2043If you do, please try and find out exactly the conditions required for 2034@end itemize
2044the @value{ftppackagename} handlers to fire. If you can, putting a
2045breakpoint on @code{efs-ftp-path} and sending in the stack trace along
2046with your bug report would make it easier for the developers to work out
2047what is going wrong.
2048@end ifset
2049 2035
2050 2036
2051@item 2037@item
@@ -2132,14 +2118,24 @@ fi
2132 2118
2133 2119
2134@item 2120@item
2135@value{tramp} doesn't transfer strings with more than 500 characters 2121How can I disable @value{tramp}?
2136correctly
2137 2122
2138On some few systems, the implementation of @code{process-send-string} 2123Shame on you, why did you read until now?
2139seems to be broken for longer strings. This case, you should 2124
2140customize the variable @code{tramp-chunksize} to 500. For a 2125@ifset emacs
2141description how to determine whether this is necessary see the 2126If you just want to have @value{ftppackagename} as default remote
2142documentation of @code{tramp-chunksize}. 2127files access package, you should apply the following code:
2128
2129@lisp
2130(setq tramp-default-method "ftp")
2131@end lisp
2132@end ifset
2133
2134Unloading @value{tramp} can be achieved by applying @kbd{M-x
2135tramp-unload-tramp}.
2136@ifset emacs
2137This resets also the @value{ftppackagename} plugins.
2138@end ifset
2143@end itemize 2139@end itemize
2144 2140
2145 2141
diff --git a/man/trampver.texi b/man/trampver.texi
index 9f2bb8737f7..625e3869c11 100644
--- a/man/trampver.texi
+++ b/man/trampver.texi
@@ -4,7 +4,7 @@
4@c In the Tramp CVS, the version number is auto-frobbed from 4@c In the Tramp CVS, the version number is auto-frobbed from
5@c configure.ac, so you should edit that file and run 5@c configure.ac, so you should edit that file and run
6@c "autoconf && ./configure" to change the version number. 6@c "autoconf && ./configure" to change the version number.
7@set trampver 2.0.51 7@set trampver 2.0.52
8 8
9@c Other flags from configuration 9@c Other flags from configuration
10@set prefix /usr/local 10@set prefix /usr/local
diff --git a/man/vip.texi b/man/vip.texi
index e98d51aeca1..96d04ef0913 100644
--- a/man/vip.texi
+++ b/man/vip.texi
@@ -1568,7 +1568,7 @@ keymap. See GNU Emacs Manual for details.
1568@kindex 000 @kbd{C-@@} (@code{set-mark-command}) 1568@kindex 000 @kbd{C-@@} (@code{set-mark-command})
1569Set mark and push previous mark on mark ring (@code{set-mark-command}). 1569Set mark and push previous mark on mark ring (@code{set-mark-command}).
1570@item TAB 1570@item TAB
1571@kindex 011 @kbd{TAB} (@code{indent-for-tab-command}) 1571@kindex 011 TAB (@code{indent-for-tab-command})
1572Indent line for current major mode (@code{indent-for-tab-command}). 1572Indent line for current major mode (@code{indent-for-tab-command}).
1573@item C-j 1573@item C-j
1574@kindex 012 @kbd{C-j} (@code{newline-and-indent}) 1574@kindex 012 @kbd{C-j} (@code{newline-and-indent})
diff --git a/man/widget.texi b/man/widget.texi
index 91e74dca01c..cf10e5980b7 100644
--- a/man/widget.texi
+++ b/man/widget.texi
@@ -140,7 +140,7 @@ extended to use the GUI features. This means that your code using the
140widget library will also use the new graphic features automatically. 140widget library will also use the new graphic features automatically.
141@end enumerate 141@end enumerate
142 142
143In order to minimize the code that is loaded by users who does not 143In order to minimize the code that is loaded by users who do not
144create any widgets, the code has been split in two files: 144create any widgets, the code has been split in two files:
145 145
146@cindex widget library, files 146@cindex widget library, files
@@ -315,7 +315,8 @@ buffer, plus you will have these additional commands:
315@deffn Command widget-forward &optional count 315@deffn Command widget-forward &optional count
316Move point @var{count} buttons or editing fields forward. 316Move point @var{count} buttons or editing fields forward.
317@end deffn 317@end deffn
318@item @key{M-TAB} 318@item @kbd{M-@key{TAB}}
319@itemx @kbd{S-@key{TAB}}
319@deffn Command widget-backward &optional count 320@deffn Command widget-backward &optional count
320Move point @var{count} buttons or editing fields backward. 321Move point @var{count} buttons or editing fields backward.
321@end deffn 322@end deffn
diff --git a/src/.gdbinit b/src/.gdbinit
index 6573b86f5da..7c04aae8a78 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -789,18 +789,21 @@ set args -geometry 80x40+0+0
789 789
790# People get bothered when they see messages about non-existent functions... 790# People get bothered when they see messages about non-existent functions...
791xgetptr Vsystem_type 791xgetptr Vsystem_type
792set $tem = (struct Lisp_Symbol *) $ptr 792# $ptr is NULL in temacs
793xgetptr $tem->xname 793if ($ptr != 0)
794set $tem = (struct Lisp_String *) $ptr 794 set $tem = (struct Lisp_Symbol *) $ptr
795set $tem = (char *) $tem->data 795 xgetptr $tem->xname
796 796 set $tem = (struct Lisp_String *) $ptr
797# Don't let abort actually run, as it will make stdio stop working and 797 set $tem = (char *) $tem->data
798# therefore the `pr' command above as well. 798
799if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd' 799 # Don't let abort actually run, as it will make stdio stop working and
800 # The windows-nt build replaces abort with its own function. 800 # therefore the `pr' command above as well.
801 break w32_abort 801 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
802else 802 # The windows-nt build replaces abort with its own function.
803 break abort 803 break w32_abort
804 else
805 break abort
806 end
804end 807end
805 808
806# x_error_quitter is defined only on X. But window-system is set up 809# x_error_quitter is defined only on X. But window-system is set up
diff --git a/src/ChangeLog b/src/ChangeLog
index 607492c5608..0a77c8fff3b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,91 @@
12006-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * regex.c (IMMEDIATE_QUIT_CHECK): Use it with SYNC_INPUT as well.
4 (re_match_2_internal) <on_failure_jump, on_failure_jump_smart>:
5 Don't check for quit, since any loop will go through fail or jump.
6
72006-01-24 Chong Yidong <cyd@stupidchicken.com>
8
9 * alloc.c (allocate_string_data): Update next_free immediately, to
10 reduce risk of memory clobberage.
11
122006-01-24 L$,1 q(Brentey K,Aa(Broly <lorentey@elte.hu>
13
14 * xdisp.c (handle_invisible_prop): Set it->position to fix cursor
15 display when point moves across an ellipsis. If there are
16 adjacent invisible texts, don't lose the second one's ellipsis.
17 (x_produce_glyphs): Doc fix.
18
192006-01-23 Stefan Monnier <monnier@iro.umontreal.ca>
20
21 * xterm.c (x_catch_errors_unwind): Yet another int/Lisp_Object mixup.
22
232006-01-23 Kim F. Storm <storm@cua.dk>
24
25 * xdisp.c (handle_single_display_spec): Fix handling of space
26 property on char from string: set *position rather than
27 it->current.pos.
28 (produce_stretch_glyph): Reduce width of stretch glyphs so they
29 don't get wider than the window (unless truncate-lines is on).
30
312006-01-22 Stefan Monnier <monnier@iro.umontreal.ca>
32
33 * xterm.c: Avoid allocating Lisp data from a signal handler.
34 (x_error_message): New var to replace x_error_message_string.
35 (x_error_catcher, x_catch_errors, x_catch_errors_unwind)
36 (x_check_errors, x_had_errors_p, x_clear_errors, x_error_handler)
37 (syms_of_xterm): Use it instead of x_error_message_string.
38
39 * alloc.c (lisp_align_free): Add an assertion.
40 (make_interval, allocate_string, make_float, Fcons, Fmake_symbol)
41 (allocate_misc): If ENABLE_CHECKING is on, check we're not called from
42 a signal handler.
43
442006-01-21 Luc Teirlinck <teirllm@auburn.edu>
45
46 * dired.c (syms_of_dired) <completion-ignored-extensions>: Doc fix.
47
482006-01-21 Romain Francoise <romain@orebokech.com>
49
50 * xdisp.c (get_window_cursor_type): Fix last change.
51 Update copyright year.
52
532006-01-20 Eli Zaretskii <eliz@gnu.org>
54
55 * lread.c (Fload): Don't leak the file descriptor returned by
56 openp if we are going to signal an error.
57
58 * w32.c (sys_close): If FD is outside [0..MAXDESC) limits, pass it
59 directly to _close.
60 (sys_dup): Protect against new_fd larger than fd_info[] can handle.
61 (sys_read): If FD is outside [0..MAXDESC) limits, pass it directly
62 to _read.
63 (sys_write): If FD is outside [0..MAXDESC) limits, pass it
64 directly to _write.
65
66 * .gdbinit: Don't dereference Vsystem_type's Lisp_Symbol pointer
67 if it is NULL.
68
692006-01-20 Kenichi Handa <handa@m17n.org>
70
71 * puresize.h (BASE_PURESIZE): Increment to 1190000.
72
732006-01-19 Chong Yidong <cyd@stupidchicken.com>
74
75 * xdisp.c (get_window_cursor_type): Use cursor type specified by
76 the selected buffer for the echo area too.
77
782006-01-19 Richard M. Stallman <rms@gnu.org>
79
80 * keymap.c (Fmap_keymap): Doc fix.
81
82 * s/irix6-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): New definitions.
83
84 * keyboard.c (echo_char): Don't omit the space between first two
85 echoed chars.
86
87 * minibuf.c (read_minibuf): Fix previous change.
88
12006-01-19 Kenichi Handa <handa@m17n.org> 892006-01-19 Kenichi Handa <handa@m17n.org>
2 90
3 * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF. 91 * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF.
@@ -571,7 +659,7 @@
571 * w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching 659 * w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching
572 GDB to the abort dialog. 660 GDB to the abort dialog.
573 661
5742005-12-09 Kyotaro HORIGUCHI <horiguti@meadowy.org> (tiny change) 6622005-12-09 Kyotaro HORIGUCHI <horiguti@meadowy.org> (tiny change)
575 663
576 * indent.c (Fvertical_motion): Force move if starting on 664 * indent.c (Fvertical_motion): Force move if starting on
577 stretch glyph. 665 stretch glyph.
@@ -825,7 +913,7 @@
825 913
826 * s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'. 914 * s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'.
827 915
8282005-11-11 David Reitter <david.reitter@gmail.com> 9162005-11-11 David Reitter <david.reitter@gmail.com>
829 917
830 * macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey, 918 * macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey,
831 macMetaKey, macAltKey. Introduce Qctrl, Qmeta, 919 macMetaKey, macAltKey. Introduce Qctrl, Qmeta,
@@ -857,7 +945,7 @@
857 ignore_overlay_strings_at_pos_p if dpvec came from an overlay 945 ignore_overlay_strings_at_pos_p if dpvec came from an overlay
858 string, so we skip those overlay strings at current pos. 946 string, so we skip those overlay strings at current pos.
859 947
8602005-11-10 Lars Hansen <larsh@soem.dk> 9482005-11-10 Lars Hansen <larsh@soem.dk>
861 949
862 * fileio.c (file-regular-p): Doc fix. 950 * fileio.c (file-regular-p): Doc fix.
863 951
@@ -968,7 +1056,7 @@
968 1056
969 * xdisp.c (display_line): Restore it->current_x and call 1057 * xdisp.c (display_line): Restore it->current_x and call
970 extend_face_to_end_of_line when last glyph doesn't fit on line. 1058 extend_face_to_end_of_line when last glyph doesn't fit on line.
971 (set_glyph_string_background_width): Remove specific tests here 1059 (set_glyph_string_background_width): Remove specific tests here
972 to see if face background should extend to end of line. Simplify. 1060 to see if face background should extend to end of line. Simplify.
973 1061
9742005-10-30 Richard M. Stallman <rms@gnu.org> 10622005-10-30 Richard M. Stallman <rms@gnu.org>
@@ -1570,7 +1658,7 @@
1570 1658
1571 * dispextern.h (fatal): Delete prototype. 1659 * dispextern.h (fatal): Delete prototype.
1572 1660
1573 * systime.h: (make_time): Prototype moved from ... 1661 * systime.h (make_time): Prototype moved from ...
1574 * editfns.c (make_time): ... here. 1662 * editfns.c (make_time): ... here.
1575 1663
1576 * editfns.c: Move systime.h include after lisp.h. 1664 * editfns.c: Move systime.h include after lisp.h.
@@ -1804,9 +1892,9 @@
1804 get_current_dir_name. 1892 get_current_dir_name.
1805 (get_current_dir_name): Remove prototype. 1893 (get_current_dir_name): Remove prototype.
1806 1894
1807 * xsmfns.c: (get_current_dir_name): Remove prototype. 1895 * xsmfns.c (get_current_dir_name): Remove prototype.
1808 1896
1809 * lisp.h: (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: 1897 * lisp.h (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
1810 Add prototype. 1898 Add prototype.
1811 1899
1812 * sysdep.c [WINDOWSNT]: Add prototype for getwd. 1900 * sysdep.c [WINDOWSNT]: Add prototype for getwd.
@@ -2497,7 +2585,7 @@
2497 2585
2498 * window.c (window_scroll_pixel_based, window_scroll_line_based): 2586 * window.c (window_scroll_pixel_based, window_scroll_line_based):
2499 Handle `scroll-preserve-screen-position' non-nil, non-t specially. 2587 Handle `scroll-preserve-screen-position' non-nil, non-t specially.
2500 (syms_of_window): <scroll-preserve-screen-position>: Doc fix. 2588 (syms_of_window) <scroll-preserve-screen-position>: Doc fix.
2501 2589
25022005-07-02 Juri Linkov <juri@jurta.org> 25902005-07-02 Juri Linkov <juri@jurta.org>
2503 2591
@@ -7120,7 +7208,7 @@
7120 7208
7121 * config.in: Rebuild. 7209 * config.in: Rebuild.
7122 7210
7123 * Makefile.in: Run setarch i386 ./temacs if exec-shield is present. 7211 * Makefile.in: Run setarch i386 ./temacs if exec-shield is present.
7124 7212
71252004-09-18 Stefan Monnier <monnier@iro.umontreal.ca> 72132004-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
7126 7214
@@ -7700,7 +7788,7 @@
7700 7788
7701 * buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes. 7789 * buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes.
7702 7790
7703 * window.c (Fwindow_buffer, Fother_window, Fget_lru_window) 7791 * window.c (Fwindow_buffer, Fother_window, Fget_lru_window)
7704 (Fget_largest_window, Fget_buffer_window, Fdelete_windows_on) 7792 (Fget_largest_window, Fget_buffer_window, Fdelete_windows_on)
7705 (Freplace_buffer_in_windows, Fset_window_buffer) 7793 (Freplace_buffer_in_windows, Fset_window_buffer)
7706 (Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes. 7794 (Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes.
@@ -9353,7 +9441,7 @@
9353 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) 9441 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
9354 (make_image, free_image, prepare_image_for_display, image_ascent) 9442 (make_image, free_image, prepare_image_for_display, image_ascent)
9355 (four_corners_best, image_background, image_background_transparent) 9443 (four_corners_best, image_background, image_background_transparent)
9356 (x_clear_image_1, x_clear_image, x_alloc_image_color) 9444 (x_clear_image_1, x_clear_image, x_alloc_image_color)
9357 (make_image_cache, free_image_cache, clear_image_cache) 9445 (make_image_cache, free_image_cache, clear_image_cache)
9358 (Fclear_image_cache, postprocess_image, lookup_image, cache_image) 9446 (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
9359 (forall_images_in_image_cache, x_create_x_image_and_pixmap) 9447 (forall_images_in_image_cache, x_create_x_image_and_pixmap)
@@ -9391,7 +9479,7 @@
9391 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) 9479 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
9392 (make_image, free_image, prepare_image_for_display, image_ascent) 9480 (make_image, free_image, prepare_image_for_display, image_ascent)
9393 (four_corners_best, image_background, image_background_transparent) 9481 (four_corners_best, image_background, image_background_transparent)
9394 (x_clear_image_1, x_clear_image, x_alloc_image_color) 9482 (x_clear_image_1, x_clear_image, x_alloc_image_color)
9395 (make_image_cache, free_image_cache, clear_image_cache) 9483 (make_image_cache, free_image_cache, clear_image_cache)
9396 (Fclear_image_cache, postprocess_image, lookup_image, cache_image) 9484 (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
9397 (forall_images_in_image_cache, x_create_x_image_and_pixmap) 9485 (forall_images_in_image_cache, x_create_x_image_and_pixmap)
@@ -9423,7 +9511,7 @@
9423 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) 9511 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
9424 (make_image, free_image, prepare_image_for_display, image_ascent) 9512 (make_image, free_image, prepare_image_for_display, image_ascent)
9425 (four_corners_best, image_background, image_background_transparent) 9513 (four_corners_best, image_background, image_background_transparent)
9426 (x_clear_image_1, x_clear_image, x_alloc_image_color) 9514 (x_clear_image_1, x_clear_image, x_alloc_image_color)
9427 (make_image_cache, free_image_cache, clear_image_cache) 9515 (make_image_cache, free_image_cache, clear_image_cache)
9428 (Fclear_image_cache, postprocess_image, lookup_image, cache_image) 9516 (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
9429 (forall_images_in_image_cache, x_create_x_image_and_pixmap) 9517 (forall_images_in_image_cache, x_create_x_image_and_pixmap)
@@ -9453,7 +9541,7 @@
9453 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) 9541 (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
9454 (make_image, free_image, prepare_image_for_display, image_ascent) 9542 (make_image, free_image, prepare_image_for_display, image_ascent)
9455 (four_corners_best, image_background, image_background_transparent) 9543 (four_corners_best, image_background, image_background_transparent)
9456 (x_clear_image_1, x_clear_image, x_alloc_image_color) 9544 (x_clear_image_1, x_clear_image, x_alloc_image_color)
9457 (make_image_cache, free_image_cache, clear_image_cache) 9545 (make_image_cache, free_image_cache, clear_image_cache)
9458 (Fclear_image_cache, postprocess_image, lookup_image, cache_image) 9546 (Fclear_image_cache, postprocess_image, lookup_image, cache_image)
9459 (forall_images_in_image_cache, x_create_x_image_and_pixmap) 9547 (forall_images_in_image_cache, x_create_x_image_and_pixmap)
@@ -10228,7 +10316,7 @@
10228 (Fx_change_window_property): Add declaration of parameters type and 10316 (Fx_change_window_property): Add declaration of parameters type and
10229 format. Remove unused variable cons. 10317 format. Remove unused variable cons.
10230 10318
10231 * xselect.c: Include stdio,h. 10319 * xselect.c: Include stdio.h.
10232 10320
102332004-02-05 Kenichi Handa <handa@m17n.org> 103212004-02-05 Kenichi Handa <handa@m17n.org>
10234 10322
@@ -11861,7 +11949,7 @@
11861 11949
118622003-07-13 Terje Rosten <terjeros@phys.ntnu.no> 119502003-07-13 Terje Rosten <terjeros@phys.ntnu.no>
11863 11951
11864 * xterm.c (x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask, 11952 * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap): Modify to add mask,
11865 and use the Gtk+ function gtk_window_icon_from_file if available. 11953 and use the Gtk+ function gtk_window_icon_from_file if available.
11866 11954
11867 * xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to 11955 * xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to
@@ -16440,7 +16528,7 @@
164402002-09-08 Kim F. Storm <storm@cua.dk> 165282002-09-08 Kim F. Storm <storm@cua.dk>
16441 16529
16442 * macros.c (executing_macro_index): Change type to EMACS_INT. 16530 * macros.c (executing_macro_index): Change type to EMACS_INT.
16443 (syms_of_macros): DEFVAR_INT it (needed by kmacro). 16531 (syms_of_macros): DEFVAR_INT it (needed by kmacro).
16444 16532
16445 * macros.h (executing_macro_index): Change type to EMACS_INT. 16533 * macros.h (executing_macro_index): Change type to EMACS_INT.
16446 16534
@@ -18928,10 +19016,10 @@
18928 Intern and staticpro QCtype and Qdatagram. 19016 Intern and staticpro QCtype and Qdatagram.
18929 (syms_of_process) [!subprocess]: Intern and staticpro QCtype. 19017 (syms_of_process) [!subprocess]: Intern and staticpro QCtype.
18930 19018
18931 * xfns.c: (QCtype): Remove duplicate declaration and 19019 * xfns.c (QCtype): Remove duplicate declaration and
18932 initialization (is now declared in process.c). 19020 initialization (is now declared in process.c).
18933 19021
18934 * w32fns.c: (QCtype): Remove duplicate declaration and 19022 * w32fns.c (QCtype): Remove duplicate declaration and
18935 initialization (is now declared in process.c). 19023 initialization (is now declared in process.c).
18936 19024
189372002-03-21 Richard M. Stallman <rms@gnu.org> 190252002-03-21 Richard M. Stallman <rms@gnu.org>
@@ -19046,7 +19134,7 @@
19046 Doc fix: Member kill_without_query is inverse of query-on-exit flag. 19134 Doc fix: Member kill_without_query is inverse of query-on-exit flag.
19047 19135
19048 * process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily) 19136 * process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily)
19049 (QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery,QCstop) 19137 (QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery, QCstop)
19050 (QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature): 19138 (QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature):
19051 New variables. 19139 New variables.
19052 (NETCONN1_P): New macro. 19140 (NETCONN1_P): New macro.
@@ -19376,7 +19464,7 @@
19376 19464
193772002-02-28 Kim F. Storm <storm@cua.dk> 194652002-02-28 Kim F. Storm <storm@cua.dk>
19378 19466
19379 * window.c: (minibuf_selected_window): Renamed from 19467 * window.c (minibuf_selected_window): Renamed from
19380 Vminibuf_selected_window. Users changed. 19468 Vminibuf_selected_window. Users changed.
19381 (syms_of_window): Staticpro it. 19469 (syms_of_window): Staticpro it.
19382 19470
@@ -19386,14 +19474,14 @@
19386 which is similar to Vminibuf_scroll_window, but which is only set 19474 which is similar to Vminibuf_scroll_window, but which is only set
19387 on entry to the minibuffer (from a non-minibuffer window): 19475 on entry to the minibuffer (from a non-minibuffer window):
19388 19476
19389 * window.c: (Vminibuf_selected_window): New variable. 19477 * window.c (Vminibuf_selected_window): New variable.
19390 (struct save_window_data): New member minibuf_selected_window. 19478 (struct save_window_data): New member minibuf_selected_window.
19391 (Fset_window_configuration): Restore Vminibuf_selected_window. 19479 (Fset_window_configuration): Restore Vminibuf_selected_window.
19392 (Fcurrent_window_configuration): Save Vminibuf_selected_window. 19480 (Fcurrent_window_configuration): Save Vminibuf_selected_window.
19393 Set minibuf_scroll_window member to nil if minibuf_level is 0. 19481 Set minibuf_scroll_window member to nil if minibuf_level is 0.
19394 (compare_window_configurations): Compare minibuf_selected_window. 19482 (compare_window_configurations): Compare minibuf_selected_window.
19395 19483
19396 * window.h: (Vminibuf_selected_window): Declare extern. 19484 * window.h (Vminibuf_selected_window): Declare extern.
19397 19485
19398 * minibuf.c (read_minibuf): Set Vminibuf_selected_window on first 19486 * minibuf.c (read_minibuf): Set Vminibuf_selected_window on first
19399 entry to minibuffer or on entry from a non-minibuffer window. 19487 entry to minibuffer or on entry from a non-minibuffer window.
@@ -19519,7 +19607,7 @@
19519 19607
195202002-02-22 Eli Zaretskii <eliz@is.elta.co.il> 196082002-02-22 Eli Zaretskii <eliz@is.elta.co.il>
19521 19609
19522 Support for ICCCM Extended Segments in X selections: 19610 Support for ICCCM Extended Segments in X selections:
19523 19611
19524 * xselect.c <Qcompound_text_no_extensions>: New variable. 19612 * xselect.c <Qcompound_text_no_extensions>: New variable.
19525 (syms_of_xselect): Intern and staticpro it. 19613 (syms_of_xselect): Intern and staticpro it.
@@ -19673,7 +19761,7 @@
19673 19761
196742002-02-13 Kim F. Storm <storm@cua.dk> 197622002-02-13 Kim F. Storm <storm@cua.dk>
19675 19763
19676 * window.c: (Vmode_line_in_non_selected_windows): Removed. 19764 * window.c (Vmode_line_in_non_selected_windows): Removed.
19677 (mode_line_in_non_selected_windows): New variable. 19765 (mode_line_in_non_selected_windows): New variable.
19678 (syms_of_window): DEFVAR_BOOL it. 19766 (syms_of_window): DEFVAR_BOOL it.
19679 19767
@@ -19704,7 +19792,7 @@
19704 19792
197052002-02-11 Kim F. Storm <storm@cua.dk> 197932002-02-11 Kim F. Storm <storm@cua.dk>
19706 19794
19707 * window.c: (Vmode_line_in_non_selected_windows): New variable. 19795 * window.c (Vmode_line_in_non_selected_windows): New variable.
19708 (syms_of_window): DEFVAR_LISP it. 19796 (syms_of_window): DEFVAR_LISP it.
19709 19797
19710 * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro. 19798 * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro.
diff --git a/src/alloc.c b/src/alloc.c
index 1ef8f97b040..48065382480 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1,6 +1,6 @@
1/* Storage allocation and gc for GNU Emacs Lisp interpreter. 1/* Storage allocation and gc for GNU Emacs Lisp interpreter.
2 Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999, 2 Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
3 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -1105,6 +1105,9 @@ lisp_align_free (block)
1105 } 1105 }
1106 eassert ((aligned & 1) == aligned); 1106 eassert ((aligned & 1) == aligned);
1107 eassert (i == (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1)); 1107 eassert (i == (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1));
1108#ifdef HAVE_POSIX_MEMALIGN
1109 eassert ((unsigned long)ABLOCKS_BASE (abase) % BLOCK_ALIGN == 0);
1110#endif
1108 free (ABLOCKS_BASE (abase)); 1111 free (ABLOCKS_BASE (abase));
1109 } 1112 }
1110 UNBLOCK_INPUT; 1113 UNBLOCK_INPUT;
@@ -1419,6 +1422,8 @@ make_interval ()
1419{ 1422{
1420 INTERVAL val; 1423 INTERVAL val;
1421 1424
1425 eassert (!handling_signal);
1426
1422 if (interval_free_list) 1427 if (interval_free_list)
1423 { 1428 {
1424 val = interval_free_list; 1429 val = interval_free_list;
@@ -1837,6 +1842,8 @@ allocate_string ()
1837{ 1842{
1838 struct Lisp_String *s; 1843 struct Lisp_String *s;
1839 1844
1845 eassert (!handling_signal);
1846
1840 /* If the free-list is empty, allocate a new string_block, and 1847 /* If the free-list is empty, allocate a new string_block, and
1841 add all the Lisp_Strings in it to the free-list. */ 1848 add all the Lisp_Strings in it to the free-list. */
1842 if (string_free_list == NULL) 1849 if (string_free_list == NULL)
@@ -1971,6 +1978,8 @@ allocate_string_data (s, nchars, nbytes)
1971 old_nbytes = GC_STRING_BYTES (s); 1978 old_nbytes = GC_STRING_BYTES (s);
1972 1979
1973 data = b->next_free; 1980 data = b->next_free;
1981 b->next_free = (struct sdata *) ((char *) data + needed + GC_STRING_EXTRA);
1982
1974 data->string = s; 1983 data->string = s;
1975 s->data = SDATA_DATA (data); 1984 s->data = SDATA_DATA (data);
1976#ifdef GC_CHECK_STRING_BYTES 1985#ifdef GC_CHECK_STRING_BYTES
@@ -1983,7 +1992,6 @@ allocate_string_data (s, nchars, nbytes)
1983 bcopy (string_overrun_cookie, (char *) data + needed, 1992 bcopy (string_overrun_cookie, (char *) data + needed,
1984 GC_STRING_OVERRUN_COOKIE_SIZE); 1993 GC_STRING_OVERRUN_COOKIE_SIZE);
1985#endif 1994#endif
1986 b->next_free = (struct sdata *) ((char *) data + needed + GC_STRING_EXTRA);
1987 1995
1988 /* If S had already data assigned, mark that as free by setting its 1996 /* If S had already data assigned, mark that as free by setting its
1989 string back-pointer to null, and recording the size of the data 1997 string back-pointer to null, and recording the size of the data
@@ -2552,6 +2560,8 @@ make_float (float_value)
2552{ 2560{
2553 register Lisp_Object val; 2561 register Lisp_Object val;
2554 2562
2563 eassert (!handling_signal);
2564
2555 if (float_free_list) 2565 if (float_free_list)
2556 { 2566 {
2557 /* We use the data field for chaining the free list 2567 /* We use the data field for chaining the free list
@@ -2671,6 +2681,8 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
2671{ 2681{
2672 register Lisp_Object val; 2682 register Lisp_Object val;
2673 2683
2684 eassert (!handling_signal);
2685
2674 if (cons_free_list) 2686 if (cons_free_list)
2675 { 2687 {
2676 /* We use the cdr for chaining the free list 2688 /* We use the cdr for chaining the free list
@@ -2852,6 +2864,9 @@ allocate_vectorlike (len, type)
2852 UNBLOCK_INPUT; 2864 UNBLOCK_INPUT;
2853#endif 2865#endif
2854 2866
2867 /* This gets triggered by code which I haven't bothered to fix. --Stef */
2868 /* eassert (!handling_signal); */
2869
2855 nbytes = sizeof *p + (len - 1) * sizeof p->contents[0]; 2870 nbytes = sizeof *p + (len - 1) * sizeof p->contents[0];
2856 p = (struct Lisp_Vector *) lisp_malloc (nbytes, type); 2871 p = (struct Lisp_Vector *) lisp_malloc (nbytes, type);
2857 2872
@@ -3102,6 +3117,8 @@ Its value and function definition are void, and its property list is nil. */)
3102 3117
3103 CHECK_STRING (name); 3118 CHECK_STRING (name);
3104 3119
3120 eassert (!handling_signal);
3121
3105 if (symbol_free_list) 3122 if (symbol_free_list)
3106 { 3123 {
3107 XSETSYMBOL (val, symbol_free_list); 3124 XSETSYMBOL (val, symbol_free_list);
@@ -3182,6 +3199,8 @@ allocate_misc ()
3182{ 3199{
3183 Lisp_Object val; 3200 Lisp_Object val;
3184 3201
3202 eassert (!handling_signal);
3203
3185 if (marker_free_list) 3204 if (marker_free_list)
3186 { 3205 {
3187 XSETMISC (val, marker_free_list); 3206 XSETMISC (val, marker_free_list);
diff --git a/src/dired.c b/src/dired.c
index eca05cde0db..650600b278e 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -1037,11 +1037,11 @@ syms_of_dired ()
1037#endif /* VMS */ 1037#endif /* VMS */
1038 1038
1039 DEFVAR_LISP ("completion-ignored-extensions", &Vcompletion_ignored_extensions, 1039 DEFVAR_LISP ("completion-ignored-extensions", &Vcompletion_ignored_extensions,
1040 doc: /* *Completion ignores filenames ending in any string in this list. 1040 doc: /* Completion ignores file names ending in any string in this list.
1041Directories are ignored if they match any string in this list which 1041It does not ignore them if all possible completions end in one of
1042ends in a slash. 1042these strings or when displaying a list of completions.
1043This variable does not affect lists of possible completions, 1043It ignores directory names if they match any string in this list which
1044but does affect the commands that actually do completions. */); 1044ends in a slash. */);
1045 Vcompletion_ignored_extensions = Qnil; 1045 Vcompletion_ignored_extensions = Qnil;
1046} 1046}
1047 1047
diff --git a/src/keyboard.c b/src/keyboard.c
index 07a0deaf828..8434dbe1d7a 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -790,6 +790,8 @@ echo_char (c)
790 else 790 else
791 echo_string = concat2 (echo_string, build_string (" ")); 791 echo_string = concat2 (echo_string, build_string (" "));
792 } 792 }
793 else if (STRINGP (echo_string))
794 echo_string = concat2 (echo_string, build_string (" "));
793 795
794 current_kboard->echo_string 796 current_kboard->echo_string
795 = concat2 (echo_string, make_string (buffer, ptr - buffer)); 797 = concat2 (echo_string, make_string (buffer, ptr - buffer));
@@ -820,16 +822,16 @@ echo_dash ()
820 /* Do nothing if we have already put a dash at the end. */ 822 /* Do nothing if we have already put a dash at the end. */
821 if (SCHARS (current_kboard->echo_string) > 1) 823 if (SCHARS (current_kboard->echo_string) > 1)
822 { 824 {
823 Lisp_Object last_char, prev_char, idx; 825 Lisp_Object last_char, prev_char, idx;
824 826
825 idx = make_number (SCHARS (current_kboard->echo_string) - 2); 827 idx = make_number (SCHARS (current_kboard->echo_string) - 2);
826 prev_char = Faref (current_kboard->echo_string, idx); 828 prev_char = Faref (current_kboard->echo_string, idx);
827 829
828 idx = make_number (SCHARS (current_kboard->echo_string) - 1); 830 idx = make_number (SCHARS (current_kboard->echo_string) - 1);
829 last_char = Faref (current_kboard->echo_string, idx); 831 last_char = Faref (current_kboard->echo_string, idx);
830 832
831 if (XINT (last_char) == '-' && XINT (prev_char) != ' ') 833 if (XINT (last_char) == '-' && XINT (prev_char) != ' ')
832 return; 834 return;
833 } 835 }
834 836
835 /* Put a dash at the end of the buffer temporarily, 837 /* Put a dash at the end of the buffer temporarily,
diff --git a/src/keymap.c b/src/keymap.c
index 07bf957cdca..31f80a2593a 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -718,8 +718,10 @@ map_keymap_call (key, val, fun, dummy)
718} 718}
719 719
720DEFUN ("map-keymap", Fmap_keymap, Smap_keymap, 2, 3, 0, 720DEFUN ("map-keymap", Fmap_keymap, Smap_keymap, 2, 3, 0,
721 doc: /* Call FUNCTION for every binding in KEYMAP. 721 doc: /* Call FUNCTION once for each binding in KEYMAP.
722FUNCTION is called with two arguments: the event and its binding. 722FUNCTION is called with two arguments: the event that is bound, and
723the definition it is bound to.
724
723If KEYMAP has a parent, the parent's bindings are included as well. 725If KEYMAP has a parent, the parent's bindings are included as well.
724This works recursively: if the parent has itself a parent, then the 726This works recursively: if the parent has itself a parent, then the
725grandparent's bindings are also included and so on. 727grandparent's bindings are also included and so on.
diff --git a/src/lread.c b/src/lread.c
index 7a4437350b1..c035b529ce2 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -982,8 +982,12 @@ Return t if file exists. */)
982 if (!NILP (Fequal (found, XCAR (tem)))) 982 if (!NILP (Fequal (found, XCAR (tem))))
983 count++; 983 count++;
984 if (count > 3) 984 if (count > 3)
985 Fsignal (Qerror, Fcons (build_string ("Recursive load"), 985 {
986 Fcons (found, Vloads_in_progress))); 986 if (fd >= 0)
987 emacs_close (fd);
988 Fsignal (Qerror, Fcons (build_string ("Recursive load"),
989 Fcons (found, Vloads_in_progress)));
990 }
987 record_unwind_protect (record_load_unwind, Vloads_in_progress); 991 record_unwind_protect (record_load_unwind, Vloads_in_progress);
988 Vloads_in_progress = Fcons (found, Vloads_in_progress); 992 Vloads_in_progress = Fcons (found, Vloads_in_progress);
989 } 993 }
diff --git a/src/minibuf.c b/src/minibuf.c
index 9c7542ad090..79b3041c3b2 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -653,7 +653,8 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
653 Lisp_Object root_window = Fframe_root_window (frame); 653 Lisp_Object root_window = Fframe_root_window (frame);
654 Lisp_Object mini_window = XWINDOW (root_window)->next; 654 Lisp_Object mini_window = XWINDOW (root_window)->next;
655 655
656 if (! NILP (mini_window) && !NILP (Fwindow_minibuffer_p (mini_window))) 656 if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
657 && !NILP (Fwindow_minibuffer_p (mini_window)))
657 Fset_window_buffer (mini_window, empty_minibuf, Qnil); 658 Fset_window_buffer (mini_window, empty_minibuf, Qnil);
658 } 659 }
659 660
diff --git a/src/puresize.h b/src/puresize.h
index f82c705265b..e46ca103d7d 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -42,7 +42,7 @@ Boston, MA 02110-1301, USA. */
42#endif 42#endif
43 43
44#ifndef BASE_PURESIZE 44#ifndef BASE_PURESIZE
45#define BASE_PURESIZE (1180000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) 45#define BASE_PURESIZE (1190000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
46#endif 46#endif
47 47
48/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */ 48/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
diff --git a/src/regex.c b/src/regex.c
index 412fd1d524d..3548ad3c048 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -3,7 +3,7 @@
3 internationalization features.) 3 internationalization features.)
4 4
5 Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 5 Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
6 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 6 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
7 7
8 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
@@ -1899,8 +1899,9 @@ typedef struct
1899/* The next available element. */ 1899/* The next available element. */
1900#define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail]) 1900#define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail])
1901 1901
1902/* Explicit quit checking is only used on NTemacs. */ 1902/* Explicit quit checking is only used on NTemacs and whenever we
1903#if defined WINDOWSNT && defined emacs && defined QUIT 1903 use polling to process input events. */
1904#if defined emacs && (defined WINDOWSNT || defined SYNC_INPUT) && defined QUIT
1904extern int immediate_quit; 1905extern int immediate_quit;
1905# define IMMEDIATE_QUIT_CHECK \ 1906# define IMMEDIATE_QUIT_CHECK \
1906 do { \ 1907 do { \
@@ -5770,7 +5771,6 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
5770 the repetition text and either the following jump or 5771 the repetition text and either the following jump or
5771 pop_failure_jump back to this on_failure_jump. */ 5772 pop_failure_jump back to this on_failure_jump. */
5772 case on_failure_jump: 5773 case on_failure_jump:
5773 IMMEDIATE_QUIT_CHECK;
5774 EXTRACT_NUMBER_AND_INCR (mcnt, p); 5774 EXTRACT_NUMBER_AND_INCR (mcnt, p);
5775 DEBUG_PRINT3 ("EXECUTING on_failure_jump %d (to %p):\n", 5775 DEBUG_PRINT3 ("EXECUTING on_failure_jump %d (to %p):\n",
5776 mcnt, p + mcnt); 5776 mcnt, p + mcnt);
@@ -5786,7 +5786,6 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
5786 then we can use a non-backtracking loop based on 5786 then we can use a non-backtracking loop based on
5787 on_failure_keep_string_jump instead of on_failure_jump. */ 5787 on_failure_keep_string_jump instead of on_failure_jump. */
5788 case on_failure_jump_smart: 5788 case on_failure_jump_smart:
5789 IMMEDIATE_QUIT_CHECK;
5790 EXTRACT_NUMBER_AND_INCR (mcnt, p); 5789 EXTRACT_NUMBER_AND_INCR (mcnt, p);
5791 DEBUG_PRINT3 ("EXECUTING on_failure_jump_smart %d (to %p).\n", 5790 DEBUG_PRINT3 ("EXECUTING on_failure_jump_smart %d (to %p).\n",
5792 mcnt, p + mcnt); 5791 mcnt, p + mcnt);
diff --git a/src/s/irix6-5.h b/src/s/irix6-5.h
index c1cc42a8c0e..9df3e0a2ef6 100644
--- a/src/s/irix6-5.h
+++ b/src/s/irix6-5.h
@@ -33,5 +33,9 @@
33 33
34#undef TIOCSIGSEND /* defined in usg5-4.h */ 34#undef TIOCSIGSEND /* defined in usg5-4.h */
35 35
36/* Tested on Irix 6.5. SCM worked on earlier versions. */
37#define GC_SETJMP_WORKS 1
38#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
39
36/* arch-tag: d7ad9ec2-54ad-4b2f-adf2-0070c5c63e83 40/* arch-tag: d7ad9ec2-54ad-4b2f-adf2-0070c5c63e83
37 (do not change this comment) */ 41 (do not change this comment) */
diff --git a/src/w32.c b/src/w32.c
index 9a51233527d..9860a6cc353 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -3426,13 +3426,13 @@ sys_close (int fd)
3426{ 3426{
3427 int rc; 3427 int rc;
3428 3428
3429 if (fd < 0 || fd >= MAXDESC) 3429 if (fd < 0)
3430 { 3430 {
3431 errno = EBADF; 3431 errno = EBADF;
3432 return -1; 3432 return -1;
3433 } 3433 }
3434 3434
3435 if (fd_info[fd].cp) 3435 if (fd < MAXDESC && fd_info[fd].cp)
3436 { 3436 {
3437 child_process * cp = fd_info[fd].cp; 3437 child_process * cp = fd_info[fd].cp;
3438 3438
@@ -3474,7 +3474,7 @@ sys_close (int fd)
3474 because socket handles are fully fledged kernel handles. */ 3474 because socket handles are fully fledged kernel handles. */
3475 rc = _close (fd); 3475 rc = _close (fd);
3476 3476
3477 if (rc == 0) 3477 if (rc == 0 && fd < MAXDESC)
3478 fd_info[fd].flags = 0; 3478 fd_info[fd].flags = 0;
3479 3479
3480 return rc; 3480 return rc;
@@ -3486,7 +3486,7 @@ sys_dup (int fd)
3486 int new_fd; 3486 int new_fd;
3487 3487
3488 new_fd = _dup (fd); 3488 new_fd = _dup (fd);
3489 if (new_fd >= 0) 3489 if (new_fd >= 0 && new_fd < MAXDESC)
3490 { 3490 {
3491 /* duplicate our internal info as well */ 3491 /* duplicate our internal info as well */
3492 fd_info[new_fd] = fd_info[fd]; 3492 fd_info[new_fd] = fd_info[fd];
@@ -3641,13 +3641,13 @@ sys_read (int fd, char * buffer, unsigned int count)
3641 DWORD waiting; 3641 DWORD waiting;
3642 char * orig_buffer = buffer; 3642 char * orig_buffer = buffer;
3643 3643
3644 if (fd < 0 || fd >= MAXDESC) 3644 if (fd < 0)
3645 { 3645 {
3646 errno = EBADF; 3646 errno = EBADF;
3647 return -1; 3647 return -1;
3648 } 3648 }
3649 3649
3650 if (fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET)) 3650 if (fd < MAXDESC && fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET))
3651 { 3651 {
3652 child_process *cp = fd_info[fd].cp; 3652 child_process *cp = fd_info[fd].cp;
3653 3653
@@ -3785,13 +3785,13 @@ sys_write (int fd, const void * buffer, unsigned int count)
3785{ 3785{
3786 int nchars; 3786 int nchars;
3787 3787
3788 if (fd < 0 || fd >= MAXDESC) 3788 if (fd < 0)
3789 { 3789 {
3790 errno = EBADF; 3790 errno = EBADF;
3791 return -1; 3791 return -1;
3792 } 3792 }
3793 3793
3794 if (fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET)) 3794 if (fd < MAXDESC && fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET))
3795 { 3795 {
3796 if ((fd_info[fd].flags & FILE_WRITE) == 0) 3796 if ((fd_info[fd].flags & FILE_WRITE) == 0)
3797 { 3797 {
@@ -3833,7 +3833,7 @@ sys_write (int fd, const void * buffer, unsigned int count)
3833 } 3833 }
3834 3834
3835#ifdef HAVE_SOCKETS 3835#ifdef HAVE_SOCKETS
3836 if (fd_info[fd].flags & FILE_SOCKET) 3836 if (fd < MAXDESC && fd_info[fd].flags & FILE_SOCKET)
3837 { 3837 {
3838 unsigned long nblock = 0; 3838 unsigned long nblock = 0;
3839 if (winsock_lib == NULL) abort (); 3839 if (winsock_lib == NULL) abort ();
diff --git a/src/xdisp.c b/src/xdisp.c
index 3af661108d8..8b1b6f59cf2 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1,7 +1,7 @@
1/* Display generation from window structure and buffer text. 1/* Display generation from window structure and buffer text.
2 Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 2 Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995,
3 1997, 1998, 1999, 2000, 2001, 2002, 2003, 3 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4 2004, 2005 Free Software Foundation, Inc. 4 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6This file is part of GNU Emacs. 6This file is part of GNU Emacs.
7 7
@@ -3617,6 +3617,11 @@ handle_invisible_prop (it)
3617 skip starting with next_stop. */ 3617 skip starting with next_stop. */
3618 if (invis_p) 3618 if (invis_p)
3619 IT_CHARPOS (*it) = next_stop; 3619 IT_CHARPOS (*it) = next_stop;
3620
3621 /* If there are adjacent invisible texts, don't lose the
3622 second one's ellipsis. */
3623 if (invis_p == 2)
3624 display_ellipsis_p = 1;
3620 } 3625 }
3621 while (invis_p); 3626 while (invis_p);
3622 3627
@@ -3637,7 +3642,23 @@ handle_invisible_prop (it)
3637 it->stack[it->sp - 1].display_ellipsis_p = display_ellipsis_p; 3642 it->stack[it->sp - 1].display_ellipsis_p = display_ellipsis_p;
3638 } 3643 }
3639 else if (display_ellipsis_p) 3644 else if (display_ellipsis_p)
3640 setup_for_ellipsis (it, 0); 3645 {
3646 /* Make sure that the glyphs of the ellipsis will get
3647 correct `charpos' values. If we would not update
3648 it->position here, the glyphs would belong to the
3649 last visible character _before_ the invisible
3650 text, which confuses `set_cursor_from_row'.
3651
3652 We use the last invisible position instead of the
3653 first because this way the cursor is always drawn on
3654 the first "." of the ellipsis, whenever PT is inside
3655 the invisible text. Otherwise the cursor would be
3656 placed _after_ the ellipsis when the point is after the
3657 first invisible character. */
3658 it->position.charpos = IT_CHARPOS (*it) - 1;
3659 it->position.bytepos = CHAR_TO_BYTE (it->position.charpos);
3660 setup_for_ellipsis (it, 0);
3661 }
3641 } 3662 }
3642 } 3663 }
3643 3664
@@ -4151,7 +4172,7 @@ handle_single_display_spec (it, spec, object, position,
4151 { 4172 {
4152 it->method = GET_FROM_STRETCH; 4173 it->method = GET_FROM_STRETCH;
4153 it->object = value; 4174 it->object = value;
4154 it->current.pos = it->position = start_pos; 4175 *position = it->position = start_pos;
4155 } 4176 }
4156#ifdef HAVE_WINDOW_SYSTEM 4177#ifdef HAVE_WINDOW_SYSTEM
4157 else 4178 else
@@ -19772,6 +19793,10 @@ produce_stretch_glyph (it)
19772 else 19793 else
19773 ascent = (height * FONT_BASE (font)) / FONT_HEIGHT (font); 19794 ascent = (height * FONT_BASE (font)) / FONT_HEIGHT (font);
19774 19795
19796 if (width > 0 && !it->truncate_lines_p
19797 && it->current_x + width > it->last_visible_x)
19798 width = it->last_visible_x - it->current_x - 1;
19799
19775 if (width > 0 && height > 0 && it->glyph_row) 19800 if (width > 0 && height > 0 && it->glyph_row)
19776 { 19801 {
19777 Lisp_Object object = it->stack[it->sp - 1].string; 19802 Lisp_Object object = it->stack[it->sp - 1].string;
@@ -19912,8 +19937,8 @@ calc_line_height_property (it, val, font, boff, override)
19912 19937
19913/* RIF: 19938/* RIF:
19914 Produce glyphs/get display metrics for the display element IT is 19939 Produce glyphs/get display metrics for the display element IT is
19915 loaded with. See the description of struct display_iterator in 19940 loaded with. See the description of struct it in dispextern.h
19916 dispextern.h for an overview of struct display_iterator. */ 19941 for an overview of struct it. */
19917 19942
19918void 19943void
19919x_produce_glyphs (it) 19944x_produce_glyphs (it)
@@ -20913,8 +20938,13 @@ get_window_cursor_type (w, glyph, width, active_cursor)
20913 { 20938 {
20914 if (w == XWINDOW (echo_area_window)) 20939 if (w == XWINDOW (echo_area_window))
20915 { 20940 {
20916 *width = FRAME_CURSOR_WIDTH (f); 20941 if (EQ (b->cursor_type, Qt) || NILP (b->cursor_type))
20917 return FRAME_DESIRED_CURSOR (f); 20942 {
20943 *width = FRAME_CURSOR_WIDTH (f);
20944 return FRAME_DESIRED_CURSOR (f);
20945 }
20946 else
20947 return get_specified_cursor_type (b->cursor_type, width);
20918 } 20948 }
20919 20949
20920 *active_cursor = 0; 20950 *active_cursor = 0;
diff --git a/src/xterm.c b/src/xterm.c
index f52ff6133fe..0d1ea7636f2 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1,6 +1,6 @@
1/* X Communication module for terminals which understand the X protocol. 1/* X Communication module for terminals which understand the X protocol.
2 Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2 Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
3 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
6 6
@@ -7438,7 +7438,12 @@ x_text_icon (f, icon_name)
7438/* If non-nil, this should be a string. 7438/* If non-nil, this should be a string.
7439 It means catch X errors and store the error message in this string. */ 7439 It means catch X errors and store the error message in this string. */
7440 7440
7441static Lisp_Object x_error_message_string; 7441struct x_error_message_stack {
7442 char string[X_ERROR_MESSAGE_SIZE];
7443 Display *dpy;
7444 struct x_error_message_stack *prev;
7445};
7446static struct x_error_message_stack *x_error_message;
7442 7447
7443/* An X error handler which stores the error message in 7448/* An X error handler which stores the error message in
7444 x_error_message_string. This is called from x_error_handler if 7449 x_error_message_string. This is called from x_error_handler if
@@ -7450,7 +7455,7 @@ x_error_catcher (display, error)
7450 XErrorEvent *error; 7455 XErrorEvent *error;
7451{ 7456{
7452 XGetErrorText (display, error->error_code, 7457 XGetErrorText (display, error->error_code,
7453 SDATA (x_error_message_string), 7458 x_error_message->string,
7454 X_ERROR_MESSAGE_SIZE); 7459 X_ERROR_MESSAGE_SIZE);
7455} 7460}
7456 7461
@@ -7475,16 +7480,23 @@ x_catch_errors (dpy)
7475 Display *dpy; 7480 Display *dpy;
7476{ 7481{
7477 int count = SPECPDL_INDEX (); 7482 int count = SPECPDL_INDEX ();
7483 struct x_error_message_stack *data = malloc (sizeof (*data));
7484 Lisp_Object dummy;
7485#ifdef ENABLE_CHECKING
7486 dummy = make_number ((EMACS_INT)dpy + (EMACS_INT)x_error_message);
7487#else
7488 dummy = Qnil;
7489#endif
7478 7490
7479 /* Make sure any errors from previous requests have been dealt with. */ 7491 /* Make sure any errors from previous requests have been dealt with. */
7480 XSync (dpy, False); 7492 XSync (dpy, False);
7481 7493
7482 record_unwind_protect (x_catch_errors_unwind, 7494 data->dpy = dpy;
7483 Fcons (make_save_value (dpy, 0), 7495 data->string[0] = 0;
7484 x_error_message_string)); 7496 data->prev = x_error_message;
7497 x_error_message = data;
7485 7498
7486 x_error_message_string = make_uninit_string (X_ERROR_MESSAGE_SIZE); 7499 record_unwind_protect (x_catch_errors_unwind, dummy);
7487 SSET (x_error_message_string, 0, 0);
7488 7500
7489 return count; 7501 return count;
7490} 7502}
@@ -7492,11 +7504,11 @@ x_catch_errors (dpy)
7492/* Unbind the binding that we made to check for X errors. */ 7504/* Unbind the binding that we made to check for X errors. */
7493 7505
7494static Lisp_Object 7506static Lisp_Object
7495x_catch_errors_unwind (old_val) 7507x_catch_errors_unwind (dummy)
7496 Lisp_Object old_val; 7508 Lisp_Object dummy;
7497{ 7509{
7498 Lisp_Object first = XCAR (old_val); 7510 Display *dpy = x_error_message->dpy;
7499 Display *dpy = XSAVE_VALUE (first)->pointer; 7511 struct x_error_message_stack *tmp;
7500 7512
7501 /* The display may have been closed before this function is called. 7513 /* The display may have been closed before this function is called.
7502 Check if it is still open before calling XSync. */ 7514 Check if it is still open before calling XSync. */
@@ -7507,7 +7519,13 @@ x_catch_errors_unwind (old_val)
7507 UNBLOCK_INPUT; 7519 UNBLOCK_INPUT;
7508 } 7520 }
7509 7521
7510 x_error_message_string = XCDR (old_val); 7522 tmp = x_error_message;
7523 x_error_message = x_error_message->prev;
7524 free (tmp);
7525
7526 eassert (EQ (dummy,
7527 make_number ((EMACS_INT)dpy + (EMACS_INT)x_error_message)));
7528
7511 return Qnil; 7529 return Qnil;
7512} 7530}
7513 7531
@@ -7523,8 +7541,8 @@ x_check_errors (dpy, format)
7523 /* Make sure to catch any errors incurred so far. */ 7541 /* Make sure to catch any errors incurred so far. */
7524 XSync (dpy, False); 7542 XSync (dpy, False);
7525 7543
7526 if (SREF (x_error_message_string, 0)) 7544 if (x_error_message->string[0])
7527 error (format, SDATA (x_error_message_string)); 7545 error (format, x_error_message->string);
7528} 7546}
7529 7547
7530/* Nonzero if we had any X protocol errors 7548/* Nonzero if we had any X protocol errors
@@ -7537,7 +7555,7 @@ x_had_errors_p (dpy)
7537 /* Make sure to catch any errors incurred so far. */ 7555 /* Make sure to catch any errors incurred so far. */
7538 XSync (dpy, False); 7556 XSync (dpy, False);
7539 7557
7540 return SREF (x_error_message_string, 0) != 0; 7558 return x_error_message->string[0] != 0;
7541} 7559}
7542 7560
7543/* Forget about any errors we have had, since we did x_catch_errors on DPY. */ 7561/* Forget about any errors we have had, since we did x_catch_errors on DPY. */
@@ -7546,7 +7564,7 @@ void
7546x_clear_errors (dpy) 7564x_clear_errors (dpy)
7547 Display *dpy; 7565 Display *dpy;
7548{ 7566{
7549 SSET (x_error_message_string, 0, 0); 7567 x_error_message->string[0] = 0;
7550} 7568}
7551 7569
7552/* Stop catching X protocol errors and let them make Emacs die. 7570/* Stop catching X protocol errors and let them make Emacs die.
@@ -7728,7 +7746,7 @@ x_error_handler (display, error)
7728 Display *display; 7746 Display *display;
7729 XErrorEvent *error; 7747 XErrorEvent *error;
7730{ 7748{
7731 if (! NILP (x_error_message_string)) 7749 if (x_error_message)
7732 x_error_catcher (display, error); 7750 x_error_catcher (display, error);
7733 else 7751 else
7734 x_error_quitter (display, error); 7752 x_error_quitter (display, error);
@@ -10970,8 +10988,7 @@ x_initialize ()
10970void 10988void
10971syms_of_xterm () 10989syms_of_xterm ()
10972{ 10990{
10973 staticpro (&x_error_message_string); 10991 x_error_message = NULL;
10974 x_error_message_string = Qnil;
10975 10992
10976 staticpro (&x_display_name_list); 10993 staticpro (&x_display_name_list);
10977 x_display_name_list = Qnil; 10994 x_display_name_list = Qnil;