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
This commit is contained in:
Miles Bader 2006-01-25 07:10:04 +00:00
commit b2ba4dcba1
93 changed files with 2589 additions and 1532 deletions

View file

@ -50,6 +50,8 @@ invalid pointer from string_free_list.
* BUGS
** Roland.Winkler@physik.uni-erlangen.de's Dec 3 bug report for align.el.
** Ronan Keryell's Sep 23 bug about "tramp sudo:: and version control on RCS"
** TCP server processes do not work on Windows.

View file

@ -1,3 +1,17 @@
2006-01-25 Nick Roberts <nickrob@snap.net.nz>
* images/gud/pstar.xpm: Make background transparent.
2006-01-24 Noah Friedman <friedman@splode.com>
* emacs-buffer.gdb: Replace all references to `cdr' field of
conses with `u.cdr', per change Andreas Schwab 2005-11-15
of src/lisp.h.
2006-01-23 Michael Albinus <michael.albinus@gmx.de>
* NEWS: tramp can be removed by M-x tramp-unload-tramp.
2006-01-15 Dan Nicolaescu <dann@ics.uci.edu>
* e/eterm-color.ti: Re-enable the ri entry. Add kich1.

View file

@ -1860,6 +1860,9 @@ If you want to disable Tramp you should set
(setq tramp-default-method "ftp")
Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
tramp-unload-tramp.
---
** The URL package (which had been part of W3) is now part of Emacs.

View file

@ -9,6 +9,8 @@ to the FSF.
* Small but important fixes needed in existing features:
** buffer-offer-save should be a permanent local.
** revert-buffer should eliminate overlays and the mark.
** erase-buffer should perhaps disregard read-only properties of text.
@ -54,6 +56,8 @@ to the FSF.
** The toolbar should show keyboard equivalents in its tooltips.
** Modify allout.el to use overlays, like outline.el.
* Important features:
** Provide user-friendly ways to list all available font families,

View file

@ -1,9 +1,12 @@
# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
# Copyright (C) 2005 Free Software Foundation, Inc.
# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
# Maintainer: Noah Friedman <friedman@splode.com>
# Status: tested with Emacs 22
# Status: Works with Emacs 22.0.51.1 (prerelease) as of 2006-01-12.
# Older cvs snapshots, and released versions, will not work due to
# changes in lisp data structures. But there are older versions of
# this gdb script which work with those versions.
# Created: 2005-04-28
# This file is part of GNU Emacs.
@ -29,8 +32,8 @@
# an Emacs coredump; they may not always be file-backed or have a recent
# autosave.
#
# The Emacs executable must have debugging symbols for this to work. But
# you never strip Emacs, right? Right!
# The Emacs executable must have debugging symbols for this to work.
# But you never strip Emacs, right?
#
# The main commands of interest are `ybuffer-list', `yfile-buffers',
# `ysave-buffer', and `ybuffer-contents'. The `y' prefix avoids any
@ -98,11 +101,11 @@ define ybuffer-list
while $alist != Qnil
ygetptr $alist
set $this = ((struct Lisp_Cons *) $ptr)->car
set $alist = ((struct Lisp_Cons *) $ptr)->cdr
set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
# Vbuffer_alist elts are pairs of the form (name . buffer)
ygetptr $this
set $buf = ((struct Lisp_Cons *) $ptr)->cdr
set $buf = ((struct Lisp_Cons *) $ptr)->u.cdr
ygetptr $buf
set $buf = (struct buffer *) $ptr
@ -150,7 +153,7 @@ define yset-buffer
set $alist = Vbuffer_alist
while ($alist != Qnil && $i > 0)
ygetptr $alist
set $alist = ((struct Lisp_Cons *) $ptr)->cdr
set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
set $i--
end
@ -160,7 +163,7 @@ define yset-buffer
# Get the buffer object
ygetptr $this
set $this = ((struct Lisp_Cons *) $ptr)->cdr
set $this = ((struct Lisp_Cons *) $ptr)->u.cdr
ygetptr $this
set $ycurrent_buffer = (struct buffer *) $ptr

View file

@ -1,7 +1,7 @@
/* XPM */
static char * pstar_xpm[] = {
"24 24 2 1",
" c #BDBDBEBEBDBD",
" c None",
". c #000000000000",
" ",
" ",

View file

@ -10,7 +10,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -t landscape -o orgcard.ps orgcard.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 2006.01.13:1223
%DVIPSSource: TeX output 2006.01.20:1449
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@ -352,210 +352,204 @@ B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E07BB563C96C0A3E
CCBD1F58ABBF1F53AD21E3BFF25EEEB046F66A924E5F431EBD7228050BE2DF43
0B9B538DAAD511EED97630CD9A9C05CC49DC251325A93EA842C6D07B44BE620F
08E66B611F54314B0177E299304F2294F8DEDE9914736944F125A50B5007373E
588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C2
C87A1A169C5ADE44B561EC1660E617FB39D1B1547B33C0FEB33C3A1D7340A62A
CD9CEFA49481F19B39A704A53A0B98A11744143CDDA0E668E6325935C6497A9F
AFF471194932AFECBF25B441AD55A43751FBAB76F3E544C4254AEC4BEB5CFE4C
C1318C3A0FAD0E8C1BABEE20B203E1DD9412E66BC55BEBD6FBBEBA84F56604FD
85D50F733D9794611F4137EC10ACB4C4ECA5A81CAACC45213E92ED3C26726BBE
91430E7633A2BDB8EA3D0C55259D7DBE468AC0964A63728C9B8EA4E15CF0EEA3
2E754B9170EAE6B8818DCCDDAD643B9F6C91C3C5B245CD442358C60AF390DC76
342E659D4EC45552626F069F346F46B18062CE26D5912336C6B29FCBFA5C3113
ED86E44B529CD95B7B5B934D899762C4F3457F56ACCC763BCCD5BD08975EB5F1
C5216DA4CBF3409EC71054B0145183F7DFB31517D199EB16D4C6DB0AF05E5720
10B06F395BE3C8C59CEEBCEA1E00F9EA3FD880AC197508CEC11E33B6B6EABE3C
0FAEBF246743F62D280875D052656696AA88DABB918F79279A980754F3DCFBEF
7999E7FB7C9E7F88CB15E1596F08E48FA74F1CB613B587BFE72717437E38D08A
C8B160982A6F92CD0BAD7E033766BB1D92F78F22FE5750D002AB2C7A101A57D6
3E7ABA9BD4B8C0A4F2820123BBCCD520B9608AFD4372366D876F848ED068245B
6BC1DDF4B826E4A9FEC4390CEB2DAAA63D9D013B706059347709F3E996C3682A
F88D827B8B7E1206BF2B2A394AFB00B1207819DAE82D1132989702B219E4EA71
A2BD6EDA183C552C874DBD142E826B583311784EEBFBE96D3716E0DA9C4B1CD1
C7D649FE269C801411290846EB69BECFA24AACFE8895AC574ED538951B84CDBE
4D935C15DADFFD2179C53655CE2728B017DCBAA14D7B7140AA7B42492E7C568A
C718B186FE248F58148FBEAC7CF56A67E1B7CF6E5A3D6B5675AA8005BDD71A6F
40B90E5B304E43F0BCBAE31238B09B65AA17F09B0CEB3A609156CF83E92AB27B
BD1E80DCCF305D627821FB110676D0BA0F02790A51804686143AB72EAB98AAC7
CB4E052BC8A19362655F0DD0AC4B8578BB227830D9D713116725A3BB05CB2F84
9A84884D80116E47E5FA2802EBE7439A8484A9FF18A5F5838731C6C55EF3B749
ECEDADC2671F81A2787323E372AC20D3E02849D3096C64EB86393B374DB0DFBC
393E9F0364F58CF81BC788C7B779BA0ED32A26389CBDE9E5A96E79D014C0B5F2
D57F9B968ED9FE793AA0E1A02432E1A5075947D96909DC06A06C467CB86F428B
BCFB5149725BAFAD34F733692AD90AFCE2B3A9281CEBDE9EFD67DA0A79BC0AA6
E6C47F2FD4E8698109A28915DAA6CBA5FCBD52EAEAC8087796A4309EBCFB2DE6
295ED1CE5C51255C05F9258F958E9F7A7A5AD52F8D9715B99CC3CDD77A5212FD
BFAC311D3E5699D5D5BAD6DE8C425B118D9636F4AD4EEA8FBA4BDF3B15C2A939
926162F94D522B0990E7204BF3A81E3E72C9A80D7688BA28DEE8F88155F8CB15
02EF6C6BD3C9A961B591DC80C24CE9E9BE24254911D558534A7B4AE0CEB01487
B6451320B37891175CAE2F534828978831AFC6846CDF9A2B86FC209A5DC8983B
1A6B5BD7D9D33AAF2D7340ACACD7E03CB238D0366E83852B2BBE428063A4FCEF
B6E48332E6633F790971A587A3F038A256D181B5584691A9405732D33A2F55FE
8BD68E07E6E01A27FC74BCC9946204A478D13C51490E9D76C4EE375190026156
FD879EBC0A579DBCB69058B252735F3A864B0C42B7555ADD028DCB937087EE86
7108667781A85ED8A09260BE52B90B1BB8B6A268169D09AFEFD0C58085ED5550
58866429B1FFB47465BB91C94DD392DF00A1900E021990C23952430AAC50E079
5685C686685BB26743FCE9E9ED88D3A523AA10E4317703BF7EA74C15B3ECD49E
33216F52B45B23195E133522498B357511593C41D45660503B93A02FE7DFA71B
51FC7E10E28F60367293388C4D143F49AADD411685A9BF60B6D544E32B8C0902
8ECA67229D25B79A56639B67A4E40B8A2CEE1B92CEC3121F869520F469BBEA38
B6E631B249E53EB6A8A886ED97E5C09372B31F724F165A5BEE9385CF89FEFCF9
F6CD28226E6D60A32A6C2ECFF8E473F816F6CC1A90C1783A3E6303B99B11959B
510B684B9257617EFBE7DB72BAF6F5756B22110B675CE11A2A88148DE330AD84
C8DBF2C79BB6D2199F42677B85F30C0D6885B0A316B1E53CFB32675179AA088A
45995F1A1D323CF8BDB3E769B851F5BFB6C619CA74CEFE9650F58C96EC512385
F7A8C8B0CA55F030B7CEB6A7CF577A544744B62424A403A69A4BB6C5EA42375B
DDFD2D1D74FFE633474D4ABA14C24EB7F44BB6E69F759E23FF799E07733E4C7A
F142DD6563A83DB58E7FA1BB7BA82776441875E6B0D44801762E3CA70C8B738A
2B52E48BEC09C29544B6D24513708C7C86AEA3BB56AD0675CBB8CD6E41AD01E4
DD6F54B5D6CC95AEB2D7D4C1C45D6274DD3FD7449982BDB5609BD3ADB64A73C4
6F9C5897CFF003130758DB267EB173CF4DBF412C3F69012675FDCA9A8E8D2353
5C272A4843F249A8CA0E03CB00B503AEB6C1BEC84B87420520EAD65AC7FEF5B9
0489D803DCCB72AD4F7875335165467D04BDA6CACADBAF5A8BB8B26C153A491D
AFDBD9695BDA29BC2FEEB2849CEE6F4C22FE5C40044105ED2288FE0C96865CF4
093D21C3A6930538DD2ADBFCDF61072F55156267A7069A0E3025090B2CEB4C7D
9303AC8A31EE3274BAFCF6A1A069D506D4DCE7051C33292C8087DAE14E1D0A9F
40293446B6C01DB83E64E57705AF674684C1BE9527F8B4E242B3CAF61C77E3E4
AB8EF5BC4CCDEFBBFDA737A7931354DB5AB2A94EBF0EF06E535F03CEC3CA2F2A
568426AFB6B49CB5AB4D5571C9BDA39649E652B44A6A2B140B4E33639ED32A6A
ECDBDCD764AE3428091516C10F4F350A801452AE6BB44D990640AB2A54976F26
13780C2757C57691D4F47B2538C532F5769ED5CC1BCD4A9285209B7306109F0F
C864E491D5F0FBEE125BF87807951FBA44D152F99FDB9B79A927AD91C423AEF4
1E7AD1BB32D54808200E350F0F75B2C74574B6A752F3227B2005D768299C755F
07A94926A42A5806B21C44A01983B93B2AF6C916693939A8E917E4CE81A8B007
9475395D9E2D4696D216AB1D23F022DEFDCF1B31CB06045BA1A7545F921F1088
B863CD5848A20DEDD289A2D7B05AD6DD68F9FF8F2C4D9145042A1CD985DC1E4E
C2F6C2446DE2E7DD577E3E4378DD6180F79444A7DC8A3FAC02970E2009484816
1E88FB6188486646B178C7119CA520CCA3503481D895D23D73B5598130AF4FF5
5E6ECC3EA740B1030BE7CB8343FB90E0FF74D76FE27AE3B799BE36103748518C
6CDB243CE716A0CF5FAC0A5F18E2328EC5190B4B00D14A9D71E135E5A13B7DA2
476FE03E36B5B56E0B561CA963B25CA77DCEAE2952FA2D1EC8CB7DCCD4DA7A35
485550BD92A50948436E12DD1FB75003B4B851DC45E41A2461FCD300A2811430
57EFC3E99C44FB0DD0BAD0B7BA4F97E1B752731C02FAB1CD9038F63A358ED8A2
5BB20E431A2A41731F167962426AA59FC40F87C820F3990557147A24CB69579D
ED6E60D5EC6FEDEBBECC5BA12B07D4F72C47D306AE8194791D2EAF9A65457ECF
63C187646D3A224B810CE2D1BB39FB02FDC1011C1840CB1632B9850E1C562CD1
11F9456D74E001D63E3D5FC3E43B7F063089A5647A9021DD30D44E63933A5F1B
607A9BBD0F40DCEC2AEC59D2C408E0BBB369BA8B9893F44A6DC0485EFA64C339
352CA32A841600C551C528EF69319293CEF00DE4E2481C98FEAED5E3232F316B
564446846604D48232DC65D721F780D0A11154DC5A305366F729782EFFE96B1E
FFF2D987570DB27A22F3322108CF43AD05CF27052FE2B9E964CF01CF5F0B8E19
6E024C1557959972FC95341E057E1659850B20F565FC0EA76C2ADC7FDEBE4F2E
D4E9001F81BB6A4B8F7351831FF0D5EFB01B298C7E24B2FB493B1BF54875AC38
8D80014166113412DECE47EFBBE682078A1B5E05A6FB2BB3E93364BDB3DB352F
781773B3E905AB5C5AC04D8111E9AAB5A213CE077435090CFB6DDCB3EC0A4DD2
F9F946E2EB070E75C0512664014B4E090188526C471DA6F83BBEF74FE52D5597
063400F44E7016615D743E90F10B54336BEF61F5234B1DF4860A4A4074A96263
6854BD1E4AF82CB7D7A8DC04E4FB6C34557C9BA80C8743EF343C404228D71DE0
E5A5A519D3BF01A08A967DCCF44ED06A889FE2107A3DA114E941621D2CB3E8A5
F4E3DA4B76C3D1BAF6A5CDDBC8513AAFF9F1D22E7DF630EBB82116A075F890F9
BF73E9777D380CF92C9B1762FA23407E03DD26642FADB9C85944D0E15CA82FDD
5638C26B10B9B94E74DD979BF5A6B6C0AC54C94C6E6716246612627CE4DA4C17
3AE7772E2B93562AEFB3184A7A9F866FA10901DA58E3BEB70831FC9C1C886EE4
9DDF0D69B286EB138EE735A382BF96D9B7EC33546F2C788128A3B1ED4CD2AC7D
76C5F3B82DCAFB8AB073256A7F98C1530BE8C94FF9213FDCA56ADC17E6F56552
87D1313366EE7CCC237857C93401628B7A0F4704720FD4966F16AFA4A764358E
EB0AD53B9C8104070E2D23E9AB793E9F67A2313DC6622213DD8E32FF245C6214
FC6D5021A48367398061976699FA83F0FE81854D55204CE03258CB6333231FD5
8852B52D255EFA8F6D6527D7F1C900C991026DDEF6E79B74921BB404D4F1410B
9D2950BA20EF04FC230CA4E8D6E703F63F3A8207BDCC5D1E9BADF8C6D9E2283C
A9D500BEF4E00A29D1005B2D5E80C60EE5B35CB347DA7B7973692F41BA6B4C5B
16E0A6B2B96CAE2BB0AC882FFA9DB50247804437B19B05EC3249A8F6C19D1E58
4729BBE4925537B69F58ED323A77A860E8ED78D3C4E86C45F8F427EFF375E618
E4FDBB7CFF3A4E2C9C37EA3004AC75BA08FB2D116455267F37D817AF272C4CF9
A3DB2C3F683E088B4B743220BEB2106E18D8BD9DBFFC1DB72430AD9F641AD4E1
5ACE49F9114948A9C8B48055C969711F3EB2B7F725E6441C7A86E1F0C4E53958
947F12FEE137D5611395B5D4AF05F55BFD8B5D9620580749CC37DD096E7871E3
B2009A73FE91BC2E23CAC6F815038CBFC911A4B400A30BBE38A7622F51BDA1AF
893065EAC1AE86A73F22A6E282ED1B46B35CA484748BDEE6C056FF6263920E85
EF4A82D8CB9F9BA7D20B11E928EAE18971183438BBAD0041D3A843F019E23173
3B13DF0B9D24C86693AAA4CDB5FA11C5BAA449F68AE47DDEFB80E99F59B8E7E8
0E8A083E0BBAAB211CF82B37B92B2513FAD2E847FDA67C25305610BB86008BF5
30D2BBC717E071B373EB848AA0E871A0C09C9488F744AE6A46F3BE82106508FC
50C748514FE65F96F52FA865CA60C831A0F4C11E1C500C6C6113EEDC75AD2051
67E4DB9A5B1555F9614B6C0C3D1B12DB6194BE578E985E53679C66AAEDD60C68
0E3AC42E06CC5AEF1167DB0002D79973AAFAE17B083ACD5CF95F661054525867
FEE6E96EBB0FB243371CDB940534214E9C6EB160A18EAD2ADBFBA1CDC709845D
FE9DF2ABB313BD9809DC40FE278A7FAA6C61B7E3DBF96EEE2C7F17F20581362C
E9EEE3D4E7B3057509F5498AFF226AC267CDD6EFBE12F4573301D4535D0C2AAC
C82FDD61E39357478A30431CFC9040FE2BFE4509DA82C54241307E5EB39BB22C
D604C6091038278EB66053EDAAF62DFBA92946772C64A12D814D907563C30D50
5924AD6C0F10DD0F721B91AE8B9654FB5B86375DA94D595AD1999CD46C94E3E1
F1DBADA3287C010DBCC163FC68D3584E1067ECD33CBF6C231E27B27BF89548F1
71DE0EDBD2AC2AAEF09A56461F30C2286BF98A49AEE50B9DE275D8D04CAAE61D
3BC5688432C09BBF7673D72D308172D9F04101966E9231A2A19C92DAA8BD21DC
B88284250523E122A154CC8072271F53EE8F4EE562AD06C10D0F5BF0C635DE44
D198EB6B947B7DC15465F08C5CA3466339B6FA18F7B95708A9BCF8AB81D1F9C5
570EDF54B50D657A89415719D03B15D582DD66D5FBF26449E4D26DC46ED4F454
9081D0DB9B054D69874E868E3810D1696D5E381AA4D788154E21B0D28CF90CB7
AE0BE0D6F5E62A82BEE840DB125672C93BBCC46632765684444E0FE4B2BEC283
D5075E0E5A34D26250B128F5AB178D11BE1BA8E561276BF49FA3B58C02BF5DB5
0A505D1F8815F6C7BB7F4774A97B114E89F222A08E5EB8676A320728CD2826C0
EA8816874C355C40D0AED9D1CFFACB1501C592678E3C111D94E3F7189CE094AD
B9DFDBB44AA289349CFD2A9993BDDF072B7A3EDAE60531C593453575D9742CED
FF2ECF2B12CD59CA4FD7952462303F6081D0232084DA9DB8A4693FD2D3AAFE7D
A2A61015F67FF76683FA6EC38B25198EED132AC393394129BCF0AF0E6F048A09
E5E5D074B2B1C49F9B86DFDD559F243F270A6190816D4E86A11E1BECE43C0E7A
1BB7E691DC79DB786617EE61B907E4A8DD71BF94B4F032229CB18E1A4A803B38
D9943851ACA9B591416E20975B8EB628BF751CFC42F929AF5D04813EF388DA71
B23B0AFA8BE1A9B36A19681DD00FEEA84AA6D65CBD7990877D1A4119051B81F3
6350A67EF0DFB24F5890D539B63EA6DE95C5583A8320B3924934F9A68C1BF5D3
6FD4FB3EB40AEAE4B3E85A382AF9735FE1AAE7FC6B66FCB1E33D04E7A89F35E4
5D855A455541209543EE482D0ABAAF77D76E4F2278AD4A59EBEB2C921E83C28E
38F7BDA6500188BCC8E7B4BDE917FD343B5DC6E74994D8A9332EA7622335BF9D
2CB069AFBAA4E01ECDC4D5DB0B34337A12B6168DD40FAF8801A17BF219A63938
4779A96B9A7F1E670531956F374C727DD893CDD06C3EBBC48AA8C7FCE062C19E
6DFF6F14DCB27EE097771E83AC8CCA0BB363FC98ED29DDA10459E5AAD3BC1415
651C347A04466E35C1B3744ADC671C461120D2359C4DBFD0D243555D9B182CFD
189022DED77374687BA5758C88FC19E3A6149E526E11E87A9CAD9B19CB47E00D
70CB4E4B0172AA46DDF138EF9A4A94D7B59252D9E8E170CDB048BB7CA28F4538
CC3A0B72913DD82E327A3A62E7EE1E950976E5228BAADEA7A1C761175556FA84
FAFAFA55C9A9A5F9F2340FDB199105E4CCA0CF364099EB3227BC0A8AA7189DFE
3CEF5E1B68EBFFA7D8E603A3414CBC37D5E5A1261F66E5B739D6BA2F52877435
FEB61C789D6CC48482A28679707F9C8E0073B75072B9E10AE09FAA28184A8C00
66FE6FECC229635097E1E5A8DDF889AC85F6AA555C433A0C7E7A73D2F683D887
45225F82587B6EDC9F24A18C24699ED304E05F7B0A5C5F20A6DB61EC2F8EE502
814CBB41B0481B3BBAC69AA4B4F6A251B41B5ECD0F04E9C256813DAF5374D9D1
8A5057894B93A1F5A9BBC56E63EC2B11B09818D20E984D37943047E7F010FA87
74E4918D3E56679FF00FDC1D94B0C52206B4D570FA3CAC26FCF17FE89D73DA9E
7AAFE36245EDD811F91D9E83C96704CFE68A29778677A6C02820EF9B09D471F6
D03191013A6334CDA003270C92CE05DE4B6194BACBFE4CBB80FF15D9A31A4DF9
82BC8BFCFCA725B26874D1B26456F6FE83216F677210469963DC5683DB7BBFAC
ED2DE1ACAC4AB4E24195E19C447EB4744E5026326EEC560DEF375749AEE07A4E
78C8FAFB5056731503FBC10F47FB37D49F3855582FDB5F8D1B204AEE50D11458
CF253A7D990A84F4C89295C72AF21FCEDCA1C0CEAAED6B1DE83FD59573A2A566
16C90BE27AF719832E6E5A98E9BE7DC65108AD80F40B52EFCEC672D1D94E299E
8EC5DAE81EF454BDE9184A00F5F8BB51BF564603214B23D41C026BD751308706
3BD8678F5794641193D38F99EFC088E5C9B5639374951D050D19CB54BDA58EAF
636DD6C8B5664EC1529C2E964DB260652DB183CE0887450F1AEDA8D9575C5B32
EBCB5F71C9C1DBD6341AD5AC442220026A32805085E0BFCAC682C09483AF5CD9
47ABE381D20A2F905E533D297BDF5AF066A7925DE0223321DAC4C282C79E1856
3090310656A17D312F7BB259742B7549A27DB6CEDD2803794642BA7C78EC96DD
A8DD2E13E16E81512FF2AD34F123EAC904FE853780C2400234D36FB8ABB07319
0D46D294513300E318D23766FAB236ECFE7A93705FBC960341AA7E2163DC9D81
5E2A578EB0FDD05E41885E6A5D88A946025B27767CF4F495A787592F0235D22D
9923308AADB018D6ED705F29B38EAEB3473BC53BB341DDA4C1D62F5CAD1C22AF
192338BAD441B3B7616D78B717920C005EBBC853612A0A7E41426DD96194BC2C
3ECD5784183D76AADF3EDE1828165A3A5B8D864CA7DF794C80C40E766C3A6410
20DAC3B63B9BC698487D7E1AAC34F10E0799636C45AC6AA60B4CCBF9979D67B0
F2EBF45561323648A125BDFD4E34B23E9C63CEEF8723A50D35C9DA31F829113B
B3F4E2C999B1A31865E09A9279B006ECDB6613894A2509C19D6AE205BD7E9315
0D973B8E82227C6499A9FFF9AF0F5282812EA44B1BCED229D17590713A2DA5AD
30C6C6BDD8D321B17CAC678FE0ED8951B6CFE4AE7FB2FE96594A5086DD767696
CA6DE0CC91DE3A68CE8EDEDE33E4B49E5E0E3B6AD558E7585BD5A1AE4F1D16C3
202F267953CD390FF26200E172CB890782E0C43B51C95C55EFA95DA98CF4CA5A
B189838F3832ADF48D8AEB00909D5C07587B26F63BA03A13B0345E9B99E7B1D0
47427A74353825472C5AB49DD95A90D253CEB066C49D6A4356E072DF5BBF394F
3FA04F54C4A822DFC7FF45AA337B9006BA63DF5D6AFCC7870B2D1AB4A954DB76
C5B93562408402578D610DD64A09ED30D71D9341F1CFB44922F42DCDACFEE2FE
B8E0EA576DC60840FC3269FF313FEBC57C5D958016C859D2D80BB270E6E93738
D314BFD28BDACD48697001CF13E9B29D1D1C5785ECF6040F43DA204FD29A924C
E32C8A2AA8ED8BA00C16D46A4EED8CCE9AF13393E8FB6F5FFFEC3A421105F8AD
FF596DA77FAC7567745BFCAAEDE63F080F24AC62A05DD8934D616D1B6A336AE9
B1ACE43ACBB79549204AC02B7F4ADA2B29E8B081EE02152C7778954F9F61FB67
6014CF4FFAA5A446334847DBFD348DF16BFFA90B0A8D5E76721E62CC46903CE4
4C076460459EE651504D119F10D5D046FBF7BCAA97E7D0CCD822A6D442B9BC8B
9EA43A5BC643998A7FE6C97C967B3AEF0019270BEB8EAB12F396CB363D43F70D
7AA971F68B33F1158663FA39DD34934884F5DE842F
588AD80D9983CE7824DA30CEE5DC3114D69D7ACEC0758D8201805B82925EF3C1
3A6757674B84D9B585F981DDFFB42163EADF90346248E014A74E3FB3E6276FC1
B4289FCDB4FDBE9C70CAF38E410965A3610F649DF8F81C73B87FBE27D44A3CA6
D7883821CA22795E3EED184F4F59AC687AC06DC4DE7FD098E0EA61C494A5E960
643D78025B1D18B4B7FBACCE2DEA453E35C08A6AC093F45FA0B1DE132F743CBA
75F2E7BE0311132C0E63C69D5182B98AEFC610F61D1E1EA51120D8A9F5DFFA8C
37C0ECCA2120E1DF7A551343BD7573FA24144A8D59CA684FF9FCC1E023A3401E
9797D658E92CED2255A273E429FAF43B0355E27EC83974BA4675520B2DC70DDA
DF783452C679BB77759479CB02FF3377BCCD8580E3D87D34CD579AA3F89AAB44
E526EE761B0D371E27B5A02A5C494C5169651FA79795D332045B3E7F2CA100FA
FA8ADA74DCA851DA1BC7531E58EE08FC22F2F35E94D5DA013A4C9669B2825D26
021982566B4347E518E82602B0CE5CBA1CD38E8B3CEBBFDF9E9811C896313F37
51D5F7162441E4B2DF18A7A34326114950BE85B3E5AB465D54652575AAC03DF3
E50E9FE8D184D33534E12AB92DF20BD72DC129A86CCC24981FF82E297D0B0F9E
0B66137443B501B5FA711C7DF380DB1F64404DA241D1EF5F2D012A0293405302
F828BF879F46962DFAF75F44D4A394DB9D42E4874477097FF6F8DB9BC8712BC8
661A95A2467073355FE697CBE1D8E298569935E5405C22555C40DB775A808F54
642939D8E4F76C61B2FE966F4FB55319873127C8EEB05732A1538FE03EC2D8CB
9089DE328A396DAB3908179FEA2FC3F2ECC48593049FD23114A04B474FF4FBED
4D3B8835148CCB742574F4914B7201CE41A57A42EF61099509E5C42B744611C2
B40581A6BCF6FA223E5B5221B8BB16AC6EEE3774130E121F23A04E1548F58899
41C9DD31E720AE7392E4E2CE0ED4B691620CDB0228D3BEE1F4BA6E289E33B7A5
6DFDA767F5927F00BD22D4BA6397B37BBDE84BF9017C01DD5319AC7D33F8C007
AF43EF247FDF67CE6627D4A0B0F00A3E58DF6323BDF1100660FF18496649C2EE
6BF1D9940404E2E4B7BB00C807808BACEFF0581E38B9A7F03888BA67E73E002F
871DA37277AB6ED4FB27AF66B9A02C62313495E94113D667CB3FA94DE087C6FA
2481136385B557165CDEA492CE335DB20BFAFE7A3015C95D8C88F6F3065D7F72
5484F8B665295CAF3E207C758FD9533889D7EE5E16D08577A97185871BAB4CFE
CC58C88B3B0BA4130727C2800D2C305855369729B8CD09AFF83FFFCC3A85014E
7358281AD0C842CC1FB985DB59470AE90BE27190DE79134F2C18447150A6706F
5597A256370F4EFCDF59A7EA8C9BFA2A194DC5F1975D7E875F036BBA686FDC22
8E9934A3ECE619598C0CD24B3226D55BDC6BF23ED4659DE24072454622A47FC1
ECDF8D1B202F9178BC1075A4AD29D85545F9C08E16F5BC07C7218FE4C8914D89
BC259609E90B47B956DE309C40E2943ED6CD471A8506FD38066AB96F573E7922
B77B4386FDFBB8AC7154342C810D452827169AB8FDB73F50AB7EB6E38A930807
F91212373CDDBE84FFF86ABAFBAE766F519D1DA26404D7EDFFA803DCB8382EFE
DA1C3D22D195805069C848619646B126333D0605BD76497030E0D3E32EFFAD65
F84003741FCCC4DFF67CA124B41DA9F0CAD27A1A46E38DA588B443C4301216DA
5DA7A473F9C5F04B2B47446168A2017136ABFA92F6EE9C5DA2B1A92CE664659A
027899D7BE0B322ACC0EF38EA681B4D90F5073C4B4064F8053AC54ABC1594883
E4D836FD382F00043D97ECE2DEDDFE704F10CC450E4451679E373041B9814AF1
0D2FE34CC22F7938562B506BC63C03AC904943C4CDCEE5D25F9B65816561962A
68EC20E9BD6E4964226F8C64DC410AEE5DF5F607ACC023BB583D471EAD0B8190
912DC0D8BFFA623F944AA1AB0BB1545DFBA26229F161201DADB7E07FBFA9040F
5D6D30EBAF57A2EF4A82A30D67825A35E24F350F9F700B42BC926ADF418F6375
A7C7AE27FF720E9A71817E395F33E8341B70DEF491B6C4AE4051D825B09535D3
4A0E7B0853CC42956A0A2F1A7421FEBB020D1F178371271DA9893AA2082DED36
F834704E1CDCACEEC30EFC5514FA218E88E8C9EBD5814124D637221AE0D898D1
2EFDDF9296D8AD971873D821B5E972F89E24659DADC4D82EE284F6247933EBD6
643E846894BF9F2A272965E7D3E1466C1AD086099C214CD475F5191FFA282F92
6EE857FE6AFDD3FF7664E82E0E265CD5487389254F38042EBB5F9866C5B24154
DA003C177D7E9384E8426D7B88D5701AE7C530A50F6D027904C041F690143008
D6246306E4644AED88E76F83949352CE1329B1A5D07A1FDA04DA0BBE5F30A925
740235EAC5DD32F81545836873EC429AD95E7F56BFE4DF70399A7AD2476EF29E
45517385D898071118D2DE56D7A2294CB12D3E22EA35234E752DF7F061A5FF8F
5765C7C13FC74144738679B42351E3B82CA2C91F619B5D06C1FD36661F4397B0
7540457CCB3D2FB735BBD9ADAA24756DAD45CD5921AAB588DCC80103E1C50290
204EC4F7F5DF74D8CFF0EEA530CA2D0E88C86431F22062276E9BF9BD68FB8517
7245261F180FEB9CD574A82A17B8A134BBBDC9B5B7954831DCFA68E0B4266C6C
F99588BF404005CE59C53E94B767B9EFDC1E5674970D097CC221C0C3BC825F17
62D9F00A1B46B915BC8F0BF7AB31B3F688C9C968F516FC3DEEB149981EED2A47
C51C8E8CA61F1744B31F483A52ECBE76606F24D90B13569A546420032EAE0F29
0A564955B4BE1058A9E6EA3B320A15282EE2449E928C8E405BF3FECE131B30E3
77FC3A735A6E2242C1E4A27793A0E1BB63FF7F6958E5312FE1549DDDD8E15BD1
7BB07C6564D029C830B89880B4F49207C1602EE590898896EC49BE45DA8906B7
380D59CE86D7AAB6B0762F624C88D886488B7F6AE9F1328FC400869CE4EEFD7E
7BF55C3DFD059FA20338C9BB33D807236EA2EF6E1C0C1E9EB095DA69FE2831FA
4A0F750418D935F1F0E45AECAA61ADE9D96012511981710FC4225F5C7660A2F7
0A417E5910F4F05D43E8AE0872B16F4E46554848927F59BDA1EBC5724ACA6B1B
6A62FA03E86D85104E88ADCBD253734F9D078543E3A9F1985FA4D4A77DF2C55C
6F5E9257851A953F1BEF7192B89A409B5566AAC7DDA66F6DE4D89FDF39994611
5B95857B8B6362BAEA1C939F638E527CA9F58683236B1886E5763B518D5A9F50
012A1D991AECF0E327594A12476A68C715130D197C1EE81CEEB4DE9E05F7F4EB
0F06054BA90F9CC30C27BE06803ADBE520115F0FB8BA26B0DA1E5A8D28F1CB00
F7808BD2B0D629A0BE002C11FEAD0A59555E90851E47D466BD87069845B2A6E8
53E054711A465359DAF057550B8EE9F11F8CA6DEFE6FA70FCAC9856ED992244D
B6D8DF2428F1D09C54C41F54F939DB26081DC63D0E8AC0690E72E76EF2F004B3
7204E227BD70421CE589A5689FA540C2889BE8B9841193BC020FC07B7B245580
996EB478FDB9C2F3F7CF02CAFAF3005F12CC496EA254D56F4A26D841E31B2360
8A1716DBC1A0312F66A2B19A55399BFD9D80DF17982829C3A5F790634FD86DAB
542413C0E19CC1F40FBFB296DCF1DAD4135F688AE11C2A5896EF0C8A54F298B8
B9C21D82E15BE4B03C7F4D0D6861F28E86D25D98292D7C7C38EE483C2D6AE68F
5CC883C30B92FFDE6D60FD21E9E0E3441C317EE946448D26F8D169A074C92CD7
D2FE4ADA122D99FDBACEC5D884F728266B21A6B5974B74A21884CC847747F648
1CF5A52ADB32B3CA4DF108D086734E7F57E2DD6800F22D73F1A579B06EBE6F81
BD6DBEFF758FC63934F89E8CCE37101AC52AE651F3BD8BC6689297E04D740F6D
56543897EFD747491B65582F6C2896FF3C8521E6948745BA255720AD93C36766
5669C5C91E00A093608D3376F3107F2536046299BEFE221929CE0414E50D8054
F07AA336F93C01F28FFF407F6B726155F48F339D97E10D628DE2D5E0A2ECF9AC
6E17695CFBEC59A0EAF50110EDE388579FE3C3EEC98A1F0414F2EC9D3A1612E2
849A21EB33FFED0B4A753D44B6CCF61D7DA8603513059E5A5523D2FE01D2E970
EFC7152105BB94A40C08792A75D94EF8333B6A392C51F6FF1BE5904B5877B655
28E17551A83463B9DD6D6B2F419BD21119B7A9D14325311066AC1A20DB8986C5
4DB51E16782B5AE654F4C0C9A92C5A1555FB54B1B7E70DADF9A303514E7F7E7B
E99C885DF161FA302CF928BC04535666D5508D2E01514B2DC740E3715BFD603C
D1CEF587FA9AF69D6D8019A2DF5DC33D61F1D324037A06563AE6985CA5DE4C61
28663AAF1815F8F0B1266C2EDF1A3322FF108170DFCBC13DF794B6A4E64D7202
E4200951568C73DCF0F2153D724DBC35F1EDA6B31FBF8E1E35C6781A47D1899C
5710361657554359A7B07794967936966E29765A4E2B4741165EABA8A0ED123D
13B77EA9CAFD065B3DF2967F1FC142B0435583E6D221FD15307C8A388E2CD9F2
F7012BC7BF2D910F639F60F55508AF5A479FA963E7AA049F23A1D8EC24A90BAF
3537A956F8F16D2242300ADCAFE145B44F89DD449B2AE64F41BB4F92DD45F6C3
CC091487708BD252CDF835D511714F4B51749BBD34A5D812700EFBDF072A40BD
6CE38DFC9A196589D6FC09FCCBCB7CA871FCC35B25354537B959F01E84C1F959
9E8397B308A3BCCDFA304213116594C3D1925A815B57AA7C631773B5FD518EF6
238F548ABA462BC1D0A17E76B53CCB2BBF7E8A785620B41C8018109CB45CE895
BDAD0F89B25B81E4A0478D4A242D3A7A4406D932C0E9FD28E65C57CC3F146E1F
09867E0FCE83F7C2083ADDA5C5A9FB5BF48F89DA0C4BBD45E7120016314098B4
C6D2C37F5F7709AD5822EAC452FBA28CFEB01E3BF2DAF25C1B559F07152FAEFD
96641B74A4249E88962604CC67F39881A685491DA88705585A7EAA097A2688CB
FC4A8E722D560B2442B3E7EB02F34E30A8A049705DC0C1D181438E85EE53C3D9
EB5A320A83315AD4B4D26443754B49EA70A16FFCCF753F7B1E6C7EEAD9F7ED75
7005A52BAC977F57287B77DA642B1467B580E481D97938D1B57519B1970351E6
A752CE77704369B0E3FA910874DC76415AD1FB4E605F0C806A1A044F300C859C
9A76CFCF2B65CA446AC2CAFF3D9148D662EB88B39D854A4A799DEBB1BF06F120
D0DF95A54D183ABB65041EBEB986A132B2543EF98EE749F8976279A5448CD151
896074E5140A766A0A9E95B73C737D09FB6DE3EF8E85B87F477935A04476B0E8
50CE7A918AB5DEB38BFB8525587CC5B6759CD3C82C2623F628C116A40D3B2AB1
AEC0D515C14191760DFDAC3BC2154A356211A12A7EE704096F258C66F786311C
03E84B5C05C311B04F1BCBF61FA40B6BB8E2E080B42178F225F37CC1A96CDCC0
4ACD792C9F0AC7E7E3992238C0E4E88B04A93797E17ACBF04FCE6494299AA9B0
37A73C4059FFBC949ADDBC0AF181B728AC3369CC6DCE58F7AC4A52A686B74C08
56C30D0BF291B127F7435F8AA711F98342423BD6DD25D69E3D6E197AEBF90AC5
E9675FFE7BF93DD5E6C8A89780ECC425B3D735A89C671FA5D70125CFE3B72DF3
A54F27293135BD071CA5D2365A135A3395D39A508CD434F45793A610852E3D62
1C717D529A82D93B90E2FF31629413B7AC1DF1EC4D6577980C34357F47899BE2
CC95866E2140CD64D51AECA4BAF717F4D4BA13F1310F51AE6CF80689F7A1BD04
1474C8E2B7A640DFCDCDECB7FF9690E8E6FF62FA9842293A1264D9C4AA5FC6DE
84C36FB9334F5F9CA1B3DC4516D4CA3BD116605F5C5D0FB2F30FA080F83891DF
1A23D9C420B3F204085591E4C88C7B26452B329DD0B1F9EDC7B065F21A4B6F60
349D37A85C5985667040DDE858B27C832CB50CCE7BB9E1EC9C2D5C1B0F05D027
65A743C13523FFFD455B9C8DE573E76522A8912AF192008DF97D7DED77FB56E6
FC220D2E27CA29ABE1A138D3FEF84A0306D4DE8ABA3B65D6AACCF1E456C14293
13A2E52EEAD3CE4D2980714C087C0606768FCE35D9F84873379C90A118B9F4D3
6008721909002435E6242C5BDB4F85AD82D5C9D548B5786F50821A59FA41D0CC
F096FD004329DDB25C494E4E1D63065EF6CE62C5C59084082182E139109B0E25
09B500940B0B254F6E76445AB01617C35831FF74DDEA2C582D7E1B736A23322A
4564662F5D21F638CE58055212A66C29755303AF713D54BC4EF5BDD0AF37FE84
04986F5DB72899B3642B53E80BE87161B5106E8C0114A985CD72DB6E6D3171C0
8AC789185A6608C45889D19C9574E8B1042846B5E53F303273ACD9985F92874B
0395250173AABA938AF4551E955106AF3D1FAB12AEF599E758278C9C4B0B6EAC
346765F34498198FDB4D2ED8EE4399921A3D380DA97F573E76588A46A927E56B
02EBBE1A628EAD4DCF52726AB2D444450598904C10C0BEEA4D4D313B03ED8BB8
D5E1125C7F4A24F3F4757365B838BBBB93E232CEB9E8A02531B4E9D116D56E7D
5A9D547E7A00301433B3B8906D494A47B358C51E09BF70DCBE06D594E4A27C54
83020848F8052038C052AC353AEF3E9D3EBBCD74357873ACDA704659A7962538
B2D7829C4808D58E17B2DB2E20E464B53445674ED6B373CDE6DFC48AF4268447
7DA072CB3B480B0D1C26B9753F5A34BAC7380F43ADE718172C399D335A2E88B3
F14DBF6F091FA427B89FD51C12401441AD767AEEB19CCC2643FEA6BFAF53A057
F7594CFB89E5DAECDFE36D1CA884C287B5AD943EEC86FB91BCE72693E7586E59
F594D067F101A95A1CFE062799F9B6AE9E14E1CEE9A9AC23975B534749D9912E
B5190AF0CBA729B70BCBF2433BC8C2808CB6A3A64E87A140E4532AF41F55CE51
2BF9B4EF348B1F8CC7500847A076EAA125670223BA1BBDC979707493F7DE73CC
78D79A4CF61F4AB8A819F9DF633BE00ACFACFC63438BD5F9CB65F7DBE1C1A99E
AE9E8141EB065D30C17A79C2FC3686F2D13A187C69353374DDE142619D7C6989
9414C36749E400F0D56C0DD786448421F4D638A1D545BDA0DA9637953D299743
7A4519B437DEAB7461B69C96DC33B3834897568ACF6C66628DEF7AE597ACCFBB
E273232CC0BFE67E9B89B7F0AC82F5C629E512411A9060D02623BAB507671545
09EA818A7C0A94A01007DD0D7DD286C22B9ED463836B1D328290B3836FAB5F25
380917C153901773BBE997031F8267CC91FE3C1916DF6AC46E44791A0863198F
8FB8478724C22BB2732F945B39E4541C0168C45FC18FC7CCAC13FBEA39A93806
6DEF0FBD7507AD086EA89EB278DB92A9F44D9A8584754643FFFF9C411587D22A
C317E99C08DD469A3A2CB264C3899725338B923F660E1DB69BDC42D5C8BE2193
B3139B8F53777949C20CFFE8918249DA5606C5F826997E18664085BCFC8FE460
8D8B5EE4D0EF5D9C2F78246F757F01D2C2CE8EE265DA8038A276EA69BB8651A5
2418E8479CB00E750644F3745408AE4ECF34B6774AA58D43D28C46DF56A9CCE0
D7EB1B3E4010F1914A6AD8B0ED7A9104A16A1B2DED8937A5779B2B7E6F724FCF
FBAFD79D2B7840E3F6E4378CE20185DAF51CD5DCDA7F797E5EF992C9B7BD2089
FEB3A7165FA82A23E5CB0C99003BD75E3B9B00D5308C5C71FA9A4B2E3FC31B84
35AC901ABEF4AEDBD785E30DEB848014955D1D0B25932AD4420B4FA52830FC10
EFDABB03B27E85BBBFA667C76E4B5A68F4BC2D2F0BF631E43DC0A18522911998
834B89CBFE29DEF493B9E87B93D7D9D886FAAC41023231E069E6B0FE3BF904A6
7149D092E733AA2CA5442C49CC496662F11EA262C67CD191E9BB8FCDF54DEFC5
ABF141056F515EB48AE9DD502F285F2488119652DA821EA3BF2E7D9895601DBA
0B042D7D2CB609A542734B3F63FC3AF4FDA552BA15DA5E02C23CEB0F0BB14DB5
2100EC71E868218241E86741638AA14DC1FCE8C1CB035D61C1F9F67EE3D85BFD
BF9EA07AEC4787D7C40557DCA541E7CBDCCDA950AE2E95ABF82633E20F2A58CF
14D205265FF7A1A3524562F62C4C3FA62043B4518AFB0616BEA02145B679BEE9
CF367A8E5C053F22A004B8ECC26CE1FD6C425A37F9F7EA73AF4A9E9E2366B573
BA26C25CA60D1436CB40824EF20C87734EBF7FB87EFE47C0292750EA29667BFC
5DA8A01867A94332D779082BDC1114E128ACC6518F8D9B3A21AD8AF7463A42E2
FB7E29BBBA59189421BAF708893FBB471406F264DEF7F9CA2C42A4956F8CA7D5
BAC73FCB2B21D6F16836D2E5BC7ED04638ED3D0C480B0E057B05075C0A92464C
6F6E151C818246B845E5056ABD9DBD8219D4086DF9BE0E13F594450B737C0512
DE7BCF813764645FC7696D572A873CF1075B1627279D6E3EC493627E06DBD02B
C978BB7D39F80CF960354B963F4302281538C6EB420E55E899D9D101798D5CD9
3E8FC2675D6A5CB2F2423542FB62CDD78A962EB2D63833E6DE848FEE15430A66
AD244BD768A3BC8307C833997EFD0735A852B6539E7E873A62461F32820B062E
ED77AF1F260D9B4EC55C60C0B2658528C088357C039DF1F3F85AE16917C77273
55CE42CAC9C5499E07508FEC82BA810C6AF5AB0F597F3174F91DDD9007100491
1859D303E60AE00ECED21FF7258B613B342C57C22947D60DA3143C3FBC073FB4
E41E8268DA25ED1D3E030915576519155CCDA8053BBA3BDFBA018C368A077545
DB789190EC4E7D7EB9AAB77E54F49B07783EEF138026C7101CD5315D14E0F9FB
2BEFC34B5B1A03D2449A1ED3F26DCB75EA542C995EFE140B51B9508737817A9C
962FE2A0B3650F7770C6310F8A0DDD48EC86BA3958F5343C61A2971B413B52F2
38E66EC71F73DBC29E6798DF7CFCB3103F1841A4D8FCE51983F03EA288BC0045
0D3565C494E7BFF2178F273FD714ECF7DCD6519A9BB36F95E05A3F2449F89DD9
E564458349C34A3CD770EFF268495183A0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -2313,8 +2307,8 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi)
@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
49.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34
30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44
1[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 3[30 1[30 30
30 1[30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }41
1[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 3[30 1[30 1[30
1[30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }40
49.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36
2[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14
66.4176 /CMTI8 rf /Fd 134[43 43 59 43 45 32 32 34 1[45
@ -2353,7 +2347,7 @@ TeXDict begin
%%Page: 1 1
TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45
b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
(4.03\))-150 -39 y Fh(Getting)37 b(Started)-150 89 y
(4.04\))-150 -39 y Fh(Getting)37 b(Started)-150 89 y
Fg(\(add-to-list)i('auto-mode-alist)h('\("\\\\.org$")e(.)e
(org-mode\)\))-150 172 y(\(define-key)i(global-map)h("\\C-cl")e
('org-store-link\))1504 148 y Ff(2)-150 254 y Fg(\(define-key)h
@ -2566,7 +2560,7 @@ end
%%Page: 2 2
TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45
b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h
(4.03\))-150 -36 y Fh(Agenda)37 b(Views)-150 120 y Fi(add/mo)n(v)n(e)25
(4.04\))-150 -36 y Fh(Agenda)37 b(Views)-150 120 y Fi(add/mo)n(v)n(e)25
b(curren)n(t)f(\014le)g(to)g(fron)n(t)g(of)f(agenda)197
b Fg(C-c)36 b([)-150 190 y Fi(remo)n(v)n(e)24 b(curren)n(t)g(\014le)g
(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
Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838
3768 y(c)4821 3770 y Fa(\015)d Fb(2006)i(F)-5 b(ree)21
b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826
y(v4.03)h(for)h(Org-Mo)r(de)e(4.03,)i(2006)4912 3882
y(v4.04)h(for)h(Org-Mo)r(de)e(4.04,)i(2006)4912 3882
y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g
(design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242
4022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e

View file

@ -1,4 +1,4 @@
% Reference Card for Org Mode 4.03
% Reference Card for Org Mode 4.04
%
%**start of header
\newcount\columnsperpage
@ -58,7 +58,7 @@
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
% for their many good ideas.
\def\orgversionnumber{4.03}
\def\orgversionnumber{4.04}
\def\year{2006}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill

File diff suppressed because it is too large Load diff

View file

@ -19133,6 +19133,10 @@
* menu-bar.el (menu-bar-showhide-menu): Rename functions for toggling.
2002-02-10 Stephen J. Turnbull <stephen@xemacs.org>
* ediff-init.el (ediff-has-gutter-support): What was this?
2002-02-10 Michael Kifer <kifer@cs.stonybrook.edu>
* viper-util.el (viper-read-key-sequence): Fix so it'll read
@ -19142,8 +19146,6 @@
* viper.el (describe-key, describe-key-briefly): Get rid of
viper-events-to-keys.
* ediff-init.el (ediff-has-gutter-support): Steven Turnbull's patch.
* ediff-wind.el (ediff-setup-control-frame):
Use ediff-has-gutter-support.

View file

@ -271,6 +271,8 @@ The following %-sequences are provided:
%h Remaining time in hours
%t Remaining time in the form `h:min'"
(let ((design-capacity 0)
(last-full-capacity 0)
full-capacity
(warn 0)
(low 0)
capacity rate rate-type charging-state minutes hours)
@ -310,18 +312,25 @@ The following %-sequences are provided:
(when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$"
nil t)
(incf design-capacity (string-to-number (match-string 1))))
(when (re-search-forward "last full capacity: +\\([0-9]+\\) m[AW]h$"
nil t)
(incf last-full-capacity (string-to-number (match-string 1))))
(when (re-search-forward
"design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t)
(incf warn (string-to-number (match-string 1))))
(when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$"
nil t)
(incf low (string-to-number (match-string 1)))))))
(setq full-capacity (if (> last-full-capacity 0)
last-full-capacity design-capacity))
(and capacity rate
(setq minutes (if (zerop rate) 0
(floor (* (/ (float (if (string= charging-state
"charging")
(- design-capacity capacity)
capacity)) rate) 60)))
(- full-capacity capacity)
capacity))
rate)
60)))
hours (/ minutes 60)))
(list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
(cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state")
@ -368,10 +377,10 @@ The following %-sequences are provided:
(cons ?t (or (and minutes
(format "%d:%02d" hours (- minutes (* 60 hours))))
"N/A"))
(cons ?p (or (and design-capacity capacity
(cons ?p (or (and full-capacity capacity
(number-to-string
(floor (/ capacity
(/ (float design-capacity) 100)))))
(/ (float full-capacity) 100)))))
"N/A")))))

View file

@ -1201,7 +1201,7 @@
(and (math-known-scalarp b)
(math-add (nth 1 a) b))))
(and (eq (car-safe b) 'calcFunc-idn)
(= (length a) 2)
(= (length b) 2)
(or (and (math-square-matrixp a)
(math-add a (math-mimic-ident (nth 1 b) a)))
(and (math-known-scalarp a)

View file

@ -2012,7 +2012,7 @@
n (1+ n)
t1 (cdr t1)))
(setq n (math-build-polynomial-expr poly high))
(if (memq low '(0 1))
(if (= low 1)
n
(math-sub n (math-build-polynomial-expr poly
(math-sub low 1))))))

View file

@ -1,6 +1,6 @@
;;; cal-menu.el --- calendar functions for menu bar and popup menu support
;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005
;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006
;; Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
@ -42,7 +42,9 @@
(defvar displayed-month)
(defvar displayed-year)
(eval-when-compile (require 'calendar))
;; Don't require calendar because calendar requires us.
;; (eval-when-compile (require 'calendar))
(defvar calendar-mode-map)
(define-key calendar-mode-map [menu-bar edit] 'undefined)
(define-key calendar-mode-map [menu-bar search] 'undefined)
@ -211,14 +213,14 @@ not available."
(condition-case nil
(if (eq major-mode 'calendar-mode)
(let ((l))
(calendar-for-loop;; Show 11 years--5 before, 5 after year of
;; middle month
i from (- displayed-year 5) to (+ displayed-year 5) do
(setq l (cons (vector (format "For Year %s" i)
(list (list 'lambda 'nil '(interactive)
(list 'list-holidays i i)))
t)
l)))
;; Show 11 years--5 before, 5 after year of middle month
(dotimes (i 11)
(let ((y (+ displayed-year -5 i)))
(push (vector (format "For Year %s" y)
(list (list 'lambda 'nil '(interactive)
(list 'list-holidays y y)))
t)
l)))
(setq l (cons ["Mark Holidays" mark-calendar-holidays t]
(cons ["Unmark Calendar" calendar-unmark t]
(cons "--" l))))
@ -231,22 +233,18 @@ not available."
(calendar-date-string (calendar-current-date) t t))
. cal-menu-today-holidays))
(let ((title
(let ((m1 displayed-month)
(y1 displayed-year)
(m2 displayed-month)
(y2 displayed-year))
(increment-calendar-month m1 y1 -1)
(increment-calendar-month m2 y2 1)
(if (= y1 y2)
(let ((my1 (calendar-increment-month -1))
(my2 (calendar-increment-month 1)))
(if (= (cdr my1) (cdr my2))
(format "%s-%s, %d"
(calendar-month-name m1 'abbrev)
(calendar-month-name m2 'abbrev)
y2)
(calendar-month-name (car my1) 'abbrev)
(calendar-month-name (car my2) 'abbrev)
(cdr my2))
(format "%s, %d-%s, %d"
(calendar-month-name m1 'abbrev)
y1
(calendar-month-name m2 'abbrev)
y2)))))
(calendar-month-name (car my1) 'abbrev)
(cdr my1)
(calendar-month-name (car my2) 'abbrev)
(cdr my2))))))
(define-key calendar-mode-map [menu-bar Holidays 3-month]
`(,(format "For Window (%s)" title)
. list-calendar-holidays)))

View file

@ -1,7 +1,7 @@
;;; calendar.el --- calendar functions
;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
;; Maintainer: Glenn Morris <rgm@gnu.org>
@ -98,11 +98,10 @@
;;; Code:
(eval-when-compile
(defvar displayed-month)
(defvar displayed-year)
(defvar calendar-month-name-array)
(defvar calendar-starred-day))
(defvar displayed-month)
(defvar displayed-year)
(defvar calendar-month-name-array)
(defvar calendar-starred-day)
(defun calendar-version ()
(interactive)
@ -146,7 +145,7 @@
;;;###autoload
(defcustom calendar-offset 0
"*The offset of the principal month from the center of the calendar window.
"The offset of the principal month from the center of the calendar window.
0 means the principal month is in the center (default), -1 means on the left,
+1 means on the right. Larger (or smaller) values push the principal month off
the screen."
@ -155,7 +154,7 @@ the screen."
;;;###autoload
(defcustom view-diary-entries-initially nil
"*Non-nil means display current date's diary entries on entry to calendar.
"Non-nil means display current date's diary entries on entry to calendar.
The diary is displayed in another window when the calendar is first displayed,
if the current date is visible. The number of days of diary entries displayed
is governed by the variable `number-of-diary-entries'. This variable can
@ -165,14 +164,14 @@ be overridden by the value of `calendar-setup'."
;;;###autoload
(defcustom mark-diary-entries-in-calendar nil
"*Non-nil means mark dates with diary entries, in the calendar window.
"Non-nil means mark dates with diary entries, in the calendar window.
The marking symbol is specified by the variable `diary-entry-marker'."
:type 'boolean
:group 'diary)
;;;###autoload
(defcustom calendar-remove-frame-by-deleting nil
"*Determine how the calendar mode removes a frame no longer needed.
"Determine how the calendar mode removes a frame no longer needed.
If nil, make an icon of the frame. If non-nil, delete the frame."
:type 'boolean
:group 'view)
@ -224,7 +223,7 @@ If nil, make an icon of the frame. If non-nil, delete the frame."
(if (not (display-color-p))
"+"
'diary)
"*How to mark dates that have diary entries.
"How to mark dates that have diary entries.
The value can be either a single-character string or a face."
:type '(choice string face)
:group 'diary)
@ -233,7 +232,7 @@ The value can be either a single-character string or a face."
(if (not (display-color-p))
"="
'calendar-today)
"*How to mark today's date in the calendar.
"How to mark today's date in the calendar.
The value can be either a single-character string or a face.
Marking today's date is done only if you set up `today-visible-calendar-hook'
to request that."
@ -244,14 +243,14 @@ to request that."
(if (not (display-color-p))
"*"
'holiday)
"*How to mark notable dates in the calendar.
"How to mark notable dates in the calendar.
The value can be either a single-character string or a face."
:type '(choice string face)
:group 'calendar)
;;;###autoload
(defcustom view-calendar-holidays-initially nil
"*Non-nil means display holidays for current three month period on entry.
"Non-nil means display holidays for current three month period on entry.
The holidays are displayed in another window when the calendar is first
displayed."
:type 'boolean
@ -259,14 +258,14 @@ displayed."
;;;###autoload
(defcustom mark-holidays-in-calendar nil
"*Non-nil means mark dates of holidays in the calendar window.
"Non-nil means mark dates of holidays in the calendar window.
The marking symbol is specified by the variable `calendar-holiday-marker'."
:type 'boolean
:group 'holidays)
;;;###autoload
(defcustom all-hebrew-calendar-holidays nil
"*If nil, show only major holidays from the Hebrew calendar.
"If nil, show only major holidays from the Hebrew calendar.
This means only those Jewish holidays that appear on secular calendars.
If 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."
;;;###autoload
(defcustom all-christian-calendar-holidays nil
"*If nil, show only major holidays from the Christian calendar.
"If nil, show only major holidays from the Christian calendar.
This means only those Christian holidays that appear on secular calendars.
If t, show all the holidays that would appear in a complete Christian
@ -285,7 +284,7 @@ calendar."
;;;###autoload
(defcustom all-islamic-calendar-holidays nil
"*If nil, show only major holidays from the Islamic calendar.
"If nil, show only major holidays from the Islamic calendar.
This means only those Islamic holidays that appear on secular calendars.
If t, show all the holidays that would appear in a complete Islamic
@ -294,13 +293,13 @@ calendar."
:group 'holidays)
(defcustom diary-file-name-prefix-function (function (lambda (str) str))
"*The function that will take a diary file name and return the desired prefix."
"The function that will take a diary file name and return the desired prefix."
:type 'function
:group 'diary)
;;;###autoload
(defcustom all-bahai-calendar-holidays nil
"*If nil, show only major holidays from the Baha'i calendar.
"If nil, show only major holidays from the Baha'i calendar.
These are the days on which work and school must be suspended.
If t, show all the holidays that would appear in a complete Baha'i
@ -310,14 +309,14 @@ calendar."
;;;###autoload
(defcustom calendar-load-hook nil
"*List of functions to be called after the calendar is first loaded.
"List of functions to be called after the calendar is first loaded.
This is the place to add key bindings to `calendar-mode-map'."
:type 'hook
:group 'calendar-hooks)
;;;###autoload
(defcustom initial-calendar-window-hook nil
"*List of functions to be called when the calendar window is first opened.
"List of functions to be called when the calendar window is first opened.
The functions invoked are called after the calendar window is opened, but
once opened is never called again. Leaving the calendar with the `q' command
and 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."
;;;###autoload
(defcustom today-visible-calendar-hook nil
"*List of functions called whenever the current date is visible.
"List of functions called whenever the current date is visible.
This can be used, for example, to replace today's date with asterisks; a
function `calendar-star-date' is included for this purpose:
(setq today-visible-calendar-hook 'calendar-star-date)
@ -346,7 +345,7 @@ functions that move by days and weeks."
;;;###autoload
(defcustom today-invisible-calendar-hook nil
"*List of functions called whenever the current date is not visible.
"List of functions called whenever the current date is not visible.
The corresponding variable `today-visible-calendar-hook' is the list of
functions called when the calendar function was called when the current
@ -360,7 +359,7 @@ functions that move by days and weeks."
;;;###autoload
(defcustom calendar-move-hook nil
"*List of functions called whenever the cursor moves in the calendar.
"List of functions called whenever the cursor moves in the calendar.
For example,
@ -372,7 +371,7 @@ redisplays the diary for whatever date the cursor is moved to."
;;;###autoload
(defcustom diary-file "~/diary"
"*Name of the file in which one's personal diary of dates is kept.
"Name of the file in which one's personal diary of dates is kept.
The file's entries are lines beginning with any of the forms
specified by the variable `american-date-diary-pattern', by default:
@ -480,37 +479,37 @@ details, see the documentation for the variable `list-diary-entries-hook'."
;;;###autoload
(defcustom diary-nonmarking-symbol "&"
"*Symbol indicating that a diary entry is not to be marked in the calendar."
"Symbol indicating that a diary entry is not to be marked in the calendar."
:type 'string
:group 'diary)
;;;###autoload
(defcustom hebrew-diary-entry-symbol "H"
"*Symbol indicating a diary entry according to the Hebrew calendar."
"Symbol indicating a diary entry according to the Hebrew calendar."
:type 'string
:group 'diary)
;;;###autoload
(defcustom islamic-diary-entry-symbol "I"
"*Symbol indicating a diary entry according to the Islamic calendar."
"Symbol indicating a diary entry according to the Islamic calendar."
:type 'string
:group 'diary)
;;;###autoload
(defcustom bahai-diary-entry-symbol "B"
"*Symbol indicating a diary entry according to the Baha'i calendar."
"Symbol indicating a diary entry according to the Baha'i calendar."
:type 'string
:group 'diary)
;;;###autoload
(defcustom diary-include-string "#include"
"*The string indicating inclusion of another file of diary entries.
"The string indicating inclusion of another file of diary entries.
See the documentation for the function `include-other-diary-files'."
:type 'string
:group 'diary)
(defcustom diary-glob-file-regexp-prefix "^\\#"
"*The regular expression that gets pre-pended to each of the attribute-regexp's for file-wide specifiers."
"The regular expression that gets pre-pended to each of the attribute-regexp's for file-wide specifiers."
:type 'regexp
:group 'diary)
@ -531,7 +530,7 @@ See the documentation for the function `include-other-diary-files'."
;;; (" *\\[box:\\([-a-z]+\\)\\]$" 1 :box)
;;; (" *\\[stipple:\\([-a-z]+\\)\\]$" 1 :stipple)
)
"*A list of (regexp regnum attr attrtype) lists where the
"A list of (regexp regnum attr attrtype) lists where the
regexp says how to find the tag, the regnum says which
parenthetical sub-regexp this regexp looks for, and the attr says
which attribute of the face (or that this _is_ a face) is being
@ -546,14 +545,14 @@ modified."
;;;###autoload
(defcustom sexp-diary-entry-symbol "%%"
"*The string used to indicate a sexp diary entry in `diary-file'.
"The string used to indicate a sexp diary entry in `diary-file'.
See the documentation for the function `list-sexp-diary-entries'."
:type 'string
:group 'diary)
;;;###autoload
(defcustom abbreviated-calendar-year t
"*Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
"Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
For the Gregorian calendar; similarly for the Hebrew, Islamic and
Baha'i calendars. If this variable is nil, years must be written in
full."
@ -562,7 +561,7 @@ full."
;;;###autoload
(defcustom european-calendar-style nil
"*Use the European style of dates in the diary and in any displays.
"Use the European style of dates in the diary and in any displays.
If this variable is t, a date 1/2/1990 would be interpreted as February 1,
1990. The default European date styles (see `european-date-diary-pattern')
are
@ -589,7 +588,7 @@ are loaded. Otherwise, use one of the functions `european-calendar' or
(monthname " *" day "[^,0-9]")
(monthname " *" day ", *" year "[^0-9]")
(dayname "\\W"))
"*List of pseudo-patterns describing the American patterns of date used.
"List of pseudo-patterns describing the American patterns of date used.
See the documentation of `diary-date-forms' for an explanation."
:type '(repeat (choice (cons :tag "Backup"
:value (backup . nil)
@ -609,7 +608,7 @@ See the documentation of `diary-date-forms' for an explanation."
(backup day " *" monthname "\\W+\\<\\([^*0-9]\\|\\([0-9]+[:aApP]\\)\\)")
(day " *" monthname " *" year "[^0-9]")
(dayname "\\W"))
"*List of pseudo-patterns describing the European patterns of date used.
"List of pseudo-patterns describing the European patterns of date used.
See the documentation of `diary-date-forms' for an explanation."
:type '(repeat (choice (cons :tag "Backup"
:value (backup . nil)
@ -626,7 +625,7 @@ See the documentation of `diary-date-forms' for an explanation."
(if european-calendar-style
european-date-diary-pattern
american-date-diary-pattern)
"*List of pseudo-patterns describing the forms of date used in the diary.
"List of pseudo-patterns describing the forms of date used in the diary.
The patterns on the list must be MUTUALLY EXCLUSIVE and should not match
any portion of the diary entry itself, just the date component.
@ -664,7 +663,7 @@ a portion of the first word of the diary entry."
;;;###autoload
(defcustom european-calendar-display-form
'((if dayname (concat dayname ", ")) day " " monthname " " year)
"*Pseudo-pattern governing the way a date appears in the European style.
"Pseudo-pattern governing the way a date appears in the European style.
See the documentation of `calendar-date-display-form' for an explanation."
:type 'sexp
:group 'calendar)
@ -672,7 +671,7 @@ See the documentation of `calendar-date-display-form' for an explanation."
;;;###autoload
(defcustom american-calendar-display-form
'((if dayname (concat dayname ", ")) monthname " " day ", " year)
"*Pseudo-pattern governing the way a date appears in the American style.
"Pseudo-pattern governing the way a date appears in the American style.
See the documentation of `calendar-date-display-form' for an explanation."
:type 'sexp
:group 'calendar)
@ -681,7 +680,7 @@ See the documentation of `calendar-date-display-form' for an explanation."
(if european-calendar-style
european-calendar-display-form
american-calendar-display-form)
"*Pseudo-pattern governing the way a date appears.
"Pseudo-pattern governing the way a date appears.
Used by the function `calendar-date-string', a pseudo-pattern is a list of
expressions that can involve the keywords `month', `day', and `year', all
@ -722,7 +721,7 @@ See the documentation of the function `calendar-date-string'."
;;;###autoload
(defcustom print-diary-entries-hook 'lpr-buffer
"*List of functions called after a temporary diary buffer is prepared.
"List of functions called after a temporary diary buffer is prepared.
The buffer shows only the diary entries currently visible in the diary
buffer. The default just does the printing. Other uses might include, for
example, 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."
;;;###autoload
(defcustom list-diary-entries-hook nil
"*List of functions called after diary file is culled for relevant entries.
"List of functions called after diary file is culled for relevant entries.
It is to be used for diary entries that are not found in the diary file.
A function `include-other-diary-files' is provided for use as the value of
@ -763,14 +762,14 @@ lexicographic order."
;;;###autoload
(defcustom diary-hook nil
"*List of functions called after the display of the diary.
"List of functions called after the display of the diary.
Can be used for appointment notification."
:type 'hook
:group 'diary)
;;;###autoload
(defcustom diary-display-hook nil
"*List of functions that handle the display of the diary.
"List of functions that handle the display of the diary.
If nil (the default), `simple-diary-display' is used. Use `ignore' for no
diary display.
@ -796,7 +795,7 @@ diary buffer, set the variable `diary-list-include-blanks' to t."
;;;###autoload
(defcustom nongregorian-diary-listing-hook nil
"*List of functions called for listing diary file and included files.
"List of functions called for listing diary file and included files.
As the files are processed for diary entries, these functions are used
to cull relevant entries. You can use either or both of
`list-hebrew-diary-entries', `list-islamic-diary-entries' and
@ -810,7 +809,7 @@ describes the style of such diary entries."
;;;###autoload
(defcustom mark-diary-entries-hook nil
"*List of functions called after marking diary entries in the calendar.
"List of functions called after marking diary entries in the calendar.
A function `mark-included-diary-files' is also provided for use as the
`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'."
;;;###autoload
(defcustom nongregorian-diary-marking-hook nil
"*List of functions called for marking diary file and included files.
"List of functions called for marking diary file and included files.
As the files are processed for diary entries, these functions are used
to cull relevant entries. You can use either or both of
`mark-hebrew-diary-entries', `mark-islamic-diary-entries' and
@ -842,7 +841,7 @@ describes the style of such diary entries."
;;;###autoload
(defcustom diary-list-include-blanks nil
"*If nil, do not include days with no diary entry in the list of diary entries.
"If nil, do not include days with no diary entry in the list of diary entries.
Such days will then not be shown in the fancy diary buffer, even if they
are holidays."
:type 'boolean
@ -850,7 +849,7 @@ are holidays."
;;;###autoload
(defcustom holidays-in-diary-buffer t
"*Non-nil means include holidays in the diary display.
"Non-nil means include holidays in the diary display.
The holidays appear in the mode line of the diary buffer, or in the
fancy diary buffer next to the date. This slows down the diary functions
somewhat; setting it to nil makes the diary display faster."
@ -880,7 +879,7 @@ somewhat; setting it to nil makes the diary display faster."
(holiday-fixed 10 31 "Halloween")
(holiday-fixed 11 11 "Veteran's Day")
(holiday-float 11 4 4 "Thanksgiving"))
"*General holidays. Default value is for the United States.
"General holidays. Default value is for the United States.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -891,7 +890,7 @@ See the documentation for `calendar-holidays' for details."
(defcustom oriental-holidays
'((if (fboundp 'atan)
(holiday-chinese-new-year)))
"*Oriental holidays.
"Oriental holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -900,7 +899,7 @@ See the documentation for `calendar-holidays' for details."
(put 'local-holidays 'risky-local-variable t)
;;;###autoload
(defcustom local-holidays nil
"*Local holidays.
"Local holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -909,7 +908,7 @@ See the documentation for `calendar-holidays' for details."
(put 'other-holidays 'risky-local-variable t)
;;;###autoload
(defcustom other-holidays nil
"*User defined holidays.
"User defined holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -1013,7 +1012,7 @@ See the documentation for `calendar-holidays' for details."
;;;###autoload
(defcustom hebrew-holidays (append hebrew-holidays-1 hebrew-holidays-2
hebrew-holidays-3 hebrew-holidays-4)
"*Jewish holidays.
"Jewish holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -1064,7 +1063,7 @@ See the documentation for `calendar-holidays' for details."
(holiday-fixed 12 25 "Christmas")
(if all-christian-calendar-holidays
(holiday-julian 12 25 "Eastern Orthodox Christmas")))
"*Christian holidays.
"Christian holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -1099,7 +1098,7 @@ See the documentation for `calendar-holidays' for details."
(holiday-islamic 10 1 "Id-al-Fitr"))
(if all-islamic-calendar-holidays
(holiday-islamic 12 10 "Id-al-Adha")))
"*Islamic holidays.
"Islamic holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -1141,7 +1140,7 @@ See the documentation for `calendar-holidays' for details."
(holiday-fixed 11 26 "Day of the Covenant"))
(if all-bahai-calendar-holidays
(holiday-fixed 11 28 "Ascension of `Abdu'l-Baha")))
"*Baha'i holidays.
"Baha'i holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -1173,7 +1172,7 @@ See the documentation for `calendar-holidays' for details."
(/ calendar-daylight-savings-ends-time (float 60))
calendar-daylight-time-zone-name)
""))))
"*Sun-related holidays.
"Sun-related holidays.
See the documentation for `calendar-holidays' for details."
:type 'sexp
:group 'holidays)
@ -1184,7 +1183,7 @@ See the documentation for `calendar-holidays' for details."
(append general-holidays local-holidays other-holidays
christian-holidays hebrew-holidays islamic-holidays
bahai-holidays oriental-holidays solar-holidays)
"*List of notable days for the command \\[holidays].
"List of notable days for the command \\[holidays].
Additional holidays are easy to add to the list, just put them in the
list `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."
(and (< macro-y 0) (> ,mon 1) (setq ,yr (1- ,yr)))
(if (< ,yr 1) (setq ,yr (1- ,yr))))) ; 0 AD -> -1 BC, etc
(defun calendar-increment-month (n &optional mon yr)
"Return the Nth month after MON/YR.
The return value is a pair (MONTH . YEAR).
MON defaults to `displayed-month'. YR defaults to `displayed-year'."
(unless mon (setq mon displayed-month))
(unless yr (setq mon displayed-year))
(increment-calendar-month mon yr n)
(cons mon yr))
(defmacro calendar-for-loop (var from init to final do &rest body)
"Execute a for loop."
(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."
(defmacro calendar-sum (index initial condition expression)
"For INDEX = INITIAL et seq, as long as CONDITION holds, sum EXPRESSION."
(declare (debug (symbolp form form form)))
`(let ((,index ,initial)
(sum 0))
(while ,condition
@ -2140,7 +2149,7 @@ the inserted text. Value is always t."
;;;###autoload
(defcustom calendar-week-start-day 0
"*The day of the week on which a week in the calendar begins.
"The day of the week on which a week in the calendar begins.
0 means Sunday (default), 1 means Monday, and so on.
If you change this variable directly (without using customize)
@ -2148,160 +2157,159 @@ after starting `calendar', you should call `redraw-calendar' to
update the calendar display to reflect the change, otherwise
movement commands will not work correctly."
:type 'integer
;; Change the initialize so that if you reload calendar.el, it will not
;; cause a redraw (which may fail, e.g. with "invalid byte-code in
;; calendar.elc" because of the "byte-compile-dynamic").
:initialize 'custom-initialize-default
:set (lambda (sym val)
(set sym val)
(redraw-calendar))
:group 'calendar)
(defcustom calendar-debug-sexp nil
"*Turn debugging on when evaluating a sexp in the diary or holiday list."
"Turn debugging on when evaluating a sexp in the diary or holiday list."
:type 'boolean
:group 'calendar)
(defvar calendar-mode-map nil)
(if calendar-mode-map
nil
(setq calendar-mode-map (make-sparse-keymap))
(require 'cal-menu)
(calendar-for-loop i from 0 to 9 do
(define-key calendar-mode-map (int-to-string i) 'digit-argument))
(let ((l (list 'narrow-to-region 'mark-word 'mark-sexp 'mark-paragraph
'mark-defun 'mark-whole-buffer 'mark-page
'downcase-region 'upcase-region 'kill-region
'copy-region-as-kill 'capitalize-region 'write-region)))
(while l
(substitute-key-definition (car l) 'calendar-not-implemented
calendar-mode-map global-map)
(setq l (cdr l))))
(define-key calendar-mode-map "-" 'negative-argument)
(define-key calendar-mode-map ">" 'scroll-calendar-right)
(define-key calendar-mode-map "\C-x>" 'scroll-calendar-right)
(define-key calendar-mode-map [prior] 'scroll-calendar-right-three-months)
(define-key calendar-mode-map "\ev" 'scroll-calendar-right-three-months)
(define-key calendar-mode-map "<" 'scroll-calendar-left)
(define-key calendar-mode-map "\C-x<" 'scroll-calendar-left)
(define-key calendar-mode-map [next] 'scroll-calendar-left-three-months)
(define-key calendar-mode-map "\C-v" 'scroll-calendar-left-three-months)
(define-key calendar-mode-map "\C-b" 'calendar-backward-day)
(define-key calendar-mode-map "\C-p" 'calendar-backward-week)
(define-key calendar-mode-map "\e{" 'calendar-backward-month)
(define-key calendar-mode-map "\C-x[" 'calendar-backward-year)
(define-key calendar-mode-map "\C-f" 'calendar-forward-day)
(define-key calendar-mode-map "\C-n" 'calendar-forward-week)
(define-key calendar-mode-map [left] 'calendar-backward-day)
(define-key calendar-mode-map [up] 'calendar-backward-week)
(define-key calendar-mode-map [right] 'calendar-forward-day)
(define-key calendar-mode-map [down] 'calendar-forward-week)
(define-key calendar-mode-map "\e}" 'calendar-forward-month)
(define-key calendar-mode-map "\C-x]" 'calendar-forward-year)
(define-key calendar-mode-map "\C-a" 'calendar-beginning-of-week)
(define-key calendar-mode-map "\C-e" 'calendar-end-of-week)
(define-key calendar-mode-map "\ea" 'calendar-beginning-of-month)
(define-key calendar-mode-map "\ee" 'calendar-end-of-month)
(define-key calendar-mode-map "\e<" 'calendar-beginning-of-year)
(define-key calendar-mode-map "\e>" 'calendar-end-of-year)
(define-key calendar-mode-map "\C-@" 'calendar-set-mark)
;; Many people are used to typing C-SPC and getting C-@.
(define-key calendar-mode-map [?\C- ] 'calendar-set-mark)
(define-key calendar-mode-map "\C-x\C-x" 'calendar-exchange-point-and-mark)
(define-key calendar-mode-map "\e=" 'calendar-count-days-region)
(define-key calendar-mode-map "gd" 'calendar-goto-date)
(define-key calendar-mode-map "gD" 'calendar-goto-day-of-year)
(define-key calendar-mode-map "gj" 'calendar-goto-julian-date)
(define-key calendar-mode-map "ga" 'calendar-goto-astro-day-number)
(define-key calendar-mode-map "gh" 'calendar-goto-hebrew-date)
(define-key calendar-mode-map "gi" 'calendar-goto-islamic-date)
(define-key calendar-mode-map "gb" 'calendar-goto-bahai-date)
(define-key calendar-mode-map "gC" 'calendar-goto-chinese-date)
(define-key calendar-mode-map "gk" 'calendar-goto-coptic-date)
(define-key calendar-mode-map "ge" 'calendar-goto-ethiopic-date)
(define-key calendar-mode-map "gp" 'calendar-goto-persian-date)
(define-key calendar-mode-map "gc" 'calendar-goto-iso-date)
(define-key calendar-mode-map "gw" 'calendar-goto-iso-week)
(define-key calendar-mode-map "gf" 'calendar-goto-french-date)
(define-key calendar-mode-map "gml" 'calendar-goto-mayan-long-count-date)
(define-key calendar-mode-map "gmpc" 'calendar-previous-calendar-round-date)
(define-key calendar-mode-map "gmnc" 'calendar-next-calendar-round-date)
(define-key calendar-mode-map "gmph" 'calendar-previous-haab-date)
(define-key calendar-mode-map "gmnh" 'calendar-next-haab-date)
(define-key calendar-mode-map "gmpt" 'calendar-previous-tzolkin-date)
(define-key calendar-mode-map "gmnt" 'calendar-next-tzolkin-date)
(define-key calendar-mode-map "Aa" 'appt-add)
(define-key calendar-mode-map "Ad" 'appt-delete)
(define-key calendar-mode-map "S" 'calendar-sunrise-sunset)
(define-key calendar-mode-map "M" 'calendar-phases-of-moon)
(define-key calendar-mode-map " " 'scroll-other-window)
(define-key calendar-mode-map (kbd "DEL") 'scroll-other-window-down)
(define-key calendar-mode-map "\C-c\C-l" 'redraw-calendar)
(define-key calendar-mode-map "." 'calendar-goto-today)
(define-key calendar-mode-map "o" 'calendar-other-month)
(define-key calendar-mode-map "q" 'exit-calendar)
(define-key calendar-mode-map "a" 'list-calendar-holidays)
(define-key calendar-mode-map "h" 'calendar-cursor-holidays)
(define-key calendar-mode-map "x" 'mark-calendar-holidays)
(define-key calendar-mode-map "u" 'calendar-unmark)
(define-key calendar-mode-map "m" 'mark-diary-entries)
(define-key calendar-mode-map "d" 'diary-view-entries)
(define-key calendar-mode-map "D" 'view-other-diary-entries)
(define-key calendar-mode-map "s" 'show-all-diary-entries)
(define-key calendar-mode-map "pd" 'calendar-print-day-of-year)
(define-key calendar-mode-map "pC" 'calendar-print-chinese-date)
(define-key calendar-mode-map "pk" 'calendar-print-coptic-date)
(define-key calendar-mode-map "pe" 'calendar-print-ethiopic-date)
(define-key calendar-mode-map "pp" 'calendar-print-persian-date)
(define-key calendar-mode-map "pc" 'calendar-print-iso-date)
(define-key calendar-mode-map "pj" 'calendar-print-julian-date)
(define-key calendar-mode-map "pa" 'calendar-print-astro-day-number)
(define-key calendar-mode-map "ph" 'calendar-print-hebrew-date)
(define-key calendar-mode-map "pi" 'calendar-print-islamic-date)
(define-key calendar-mode-map "pb" 'calendar-print-bahai-date)
(define-key calendar-mode-map "pf" 'calendar-print-french-date)
(define-key calendar-mode-map "pm" 'calendar-print-mayan-date)
(define-key calendar-mode-map "po" 'calendar-print-other-dates)
(define-key calendar-mode-map "id" 'insert-diary-entry)
(define-key calendar-mode-map "iw" 'insert-weekly-diary-entry)
(define-key calendar-mode-map "im" 'insert-monthly-diary-entry)
(define-key calendar-mode-map "iy" 'insert-yearly-diary-entry)
(define-key calendar-mode-map "ia" 'insert-anniversary-diary-entry)
(define-key calendar-mode-map "ib" 'insert-block-diary-entry)
(define-key calendar-mode-map "ic" 'insert-cyclic-diary-entry)
(define-key calendar-mode-map "ihd" 'insert-hebrew-diary-entry)
(define-key calendar-mode-map "ihm" 'insert-monthly-hebrew-diary-entry)
(define-key calendar-mode-map "ihy" 'insert-yearly-hebrew-diary-entry)
(define-key calendar-mode-map "iid" 'insert-islamic-diary-entry)
(define-key calendar-mode-map "iim" 'insert-monthly-islamic-diary-entry)
(define-key calendar-mode-map "iiy" 'insert-yearly-islamic-diary-entry)
(define-key calendar-mode-map "iBd" 'insert-bahai-diary-entry)
(define-key calendar-mode-map "iBm" 'insert-monthly-bahai-diary-entry)
(define-key calendar-mode-map "iBy" 'insert-yearly-bahai-diary-entry)
(define-key calendar-mode-map "?" 'calendar-goto-info-node)
(define-key calendar-mode-map "tm" 'cal-tex-cursor-month)
(define-key calendar-mode-map "tM" 'cal-tex-cursor-month-landscape)
(define-key calendar-mode-map "td" 'cal-tex-cursor-day)
(define-key calendar-mode-map "tw1" 'cal-tex-cursor-week)
(define-key calendar-mode-map "tw2" 'cal-tex-cursor-week2)
(define-key calendar-mode-map "tw3" 'cal-tex-cursor-week-iso)
(define-key calendar-mode-map "tw4" 'cal-tex-cursor-week-monday)
(define-key calendar-mode-map "tfd" 'cal-tex-cursor-filofax-daily)
(define-key calendar-mode-map "tfw" 'cal-tex-cursor-filofax-2week)
(define-key calendar-mode-map "tfW" 'cal-tex-cursor-filofax-week)
(define-key calendar-mode-map "tfy" 'cal-tex-cursor-filofax-year)
(define-key calendar-mode-map "ty" 'cal-tex-cursor-year)
(define-key calendar-mode-map "tY" 'cal-tex-cursor-year-landscape))
(let ((map (make-keymap)))
(suppress-keymap map)
(dolist (c '(narrow-to-region mark-word mark-sexp mark-paragraph
mark-defun mark-whole-buffer mark-page
downcase-region upcase-region kill-region
copy-region-as-kill capitalize-region write-region))
(define-key map (vector 'remap c) 'calendar-not-implemented))
(define-key map ">" 'scroll-calendar-right)
(define-key map "\C-x>" 'scroll-calendar-right)
(define-key map [prior] 'scroll-calendar-right-three-months)
(define-key map "\ev" 'scroll-calendar-right-three-months)
(define-key map "<" 'scroll-calendar-left)
(define-key map "\C-x<" 'scroll-calendar-left)
(define-key map [next] 'scroll-calendar-left-three-months)
(define-key map "\C-v" 'scroll-calendar-left-three-months)
(define-key map "\C-b" 'calendar-backward-day)
(define-key map "\C-p" 'calendar-backward-week)
(define-key map "\e{" 'calendar-backward-month)
(define-key map "\C-x[" 'calendar-backward-year)
(define-key map "\C-f" 'calendar-forward-day)
(define-key map "\C-n" 'calendar-forward-week)
(define-key map [left] 'calendar-backward-day)
(define-key map [up] 'calendar-backward-week)
(define-key map [right] 'calendar-forward-day)
(define-key map [down] 'calendar-forward-week)
(define-key map "\e}" 'calendar-forward-month)
(define-key map "\C-x]" 'calendar-forward-year)
(define-key map "\C-a" 'calendar-beginning-of-week)
(define-key map "\C-e" 'calendar-end-of-week)
(define-key map "\ea" 'calendar-beginning-of-month)
(define-key map "\ee" 'calendar-end-of-month)
(define-key map "\e<" 'calendar-beginning-of-year)
(define-key map "\e>" 'calendar-end-of-year)
(define-key map "\C-@" 'calendar-set-mark)
;; Many people are used to typing C-SPC and getting C-@.
(define-key map [?\C- ] 'calendar-set-mark)
(define-key map "\C-x\C-x" 'calendar-exchange-point-and-mark)
(define-key map "\e=" 'calendar-count-days-region)
(define-key map "gd" 'calendar-goto-date)
(define-key map "gD" 'calendar-goto-day-of-year)
(define-key map "gj" 'calendar-goto-julian-date)
(define-key map "ga" 'calendar-goto-astro-day-number)
(define-key map "gh" 'calendar-goto-hebrew-date)
(define-key map "gi" 'calendar-goto-islamic-date)
(define-key map "gb" 'calendar-goto-bahai-date)
(define-key map "gC" 'calendar-goto-chinese-date)
(define-key map "gk" 'calendar-goto-coptic-date)
(define-key map "ge" 'calendar-goto-ethiopic-date)
(define-key map "gp" 'calendar-goto-persian-date)
(define-key map "gc" 'calendar-goto-iso-date)
(define-key map "gw" 'calendar-goto-iso-week)
(define-key map "gf" 'calendar-goto-french-date)
(define-key map "gml" 'calendar-goto-mayan-long-count-date)
(define-key map "gmpc" 'calendar-previous-calendar-round-date)
(define-key map "gmnc" 'calendar-next-calendar-round-date)
(define-key map "gmph" 'calendar-previous-haab-date)
(define-key map "gmnh" 'calendar-next-haab-date)
(define-key map "gmpt" 'calendar-previous-tzolkin-date)
(define-key map "gmnt" 'calendar-next-tzolkin-date)
(define-key map "Aa" 'appt-add)
(define-key map "Ad" 'appt-delete)
(define-key map "S" 'calendar-sunrise-sunset)
(define-key map "M" 'calendar-phases-of-moon)
(define-key map " " 'scroll-other-window)
(define-key map (kbd "DEL") 'scroll-other-window-down)
(define-key map "\C-c\C-l" 'redraw-calendar)
(define-key map "." 'calendar-goto-today)
(define-key map "o" 'calendar-other-month)
(define-key map "q" 'exit-calendar)
(define-key map "a" 'list-calendar-holidays)
(define-key map "h" 'calendar-cursor-holidays)
(define-key map "x" 'mark-calendar-holidays)
(define-key map "u" 'calendar-unmark)
(define-key map "m" 'mark-diary-entries)
(define-key map "d" 'diary-view-entries)
(define-key map "D" 'view-other-diary-entries)
(define-key map "s" 'show-all-diary-entries)
(define-key map "pd" 'calendar-print-day-of-year)
(define-key map "pC" 'calendar-print-chinese-date)
(define-key map "pk" 'calendar-print-coptic-date)
(define-key map "pe" 'calendar-print-ethiopic-date)
(define-key map "pp" 'calendar-print-persian-date)
(define-key map "pc" 'calendar-print-iso-date)
(define-key map "pj" 'calendar-print-julian-date)
(define-key map "pa" 'calendar-print-astro-day-number)
(define-key map "ph" 'calendar-print-hebrew-date)
(define-key map "pi" 'calendar-print-islamic-date)
(define-key map "pb" 'calendar-print-bahai-date)
(define-key map "pf" 'calendar-print-french-date)
(define-key map "pm" 'calendar-print-mayan-date)
(define-key map "po" 'calendar-print-other-dates)
(define-key map "id" 'insert-diary-entry)
(define-key map "iw" 'insert-weekly-diary-entry)
(define-key map "im" 'insert-monthly-diary-entry)
(define-key map "iy" 'insert-yearly-diary-entry)
(define-key map "ia" 'insert-anniversary-diary-entry)
(define-key map "ib" 'insert-block-diary-entry)
(define-key map "ic" 'insert-cyclic-diary-entry)
(define-key map "ihd" 'insert-hebrew-diary-entry)
(define-key map "ihm" 'insert-monthly-hebrew-diary-entry)
(define-key map "ihy" 'insert-yearly-hebrew-diary-entry)
(define-key map "iid" 'insert-islamic-diary-entry)
(define-key map "iim" 'insert-monthly-islamic-diary-entry)
(define-key map "iiy" 'insert-yearly-islamic-diary-entry)
(define-key map "iBd" 'insert-bahai-diary-entry)
(define-key map "iBm" 'insert-monthly-bahai-diary-entry)
(define-key map "iBy" 'insert-yearly-bahai-diary-entry)
(define-key map "?" 'calendar-goto-info-node)
(define-key map "tm" 'cal-tex-cursor-month)
(define-key map "tM" 'cal-tex-cursor-month-landscape)
(define-key map "td" 'cal-tex-cursor-day)
(define-key map "tw1" 'cal-tex-cursor-week)
(define-key map "tw2" 'cal-tex-cursor-week2)
(define-key map "tw3" 'cal-tex-cursor-week-iso)
(define-key map "tw4" 'cal-tex-cursor-week-monday)
(define-key map "tfd" 'cal-tex-cursor-filofax-daily)
(define-key map "tfw" 'cal-tex-cursor-filofax-2week)
(define-key map "tfW" 'cal-tex-cursor-filofax-week)
(define-key map "tfy" 'cal-tex-cursor-filofax-year)
(define-key map "ty" 'cal-tex-cursor-year)
(define-key map "tY" 'cal-tex-cursor-year-landscape)
(setq calendar-mode-map map)
;; Require cal-menu after initializing calendar-mode-map because it uses it.
(require 'cal-menu)))
(defun describe-calendar-mode ()
"Create a help buffer with a brief description of the `calendar-mode'."
(interactive)
(with-output-to-temp-buffer "*Help*"
(help-setup-xref (list #'describe-calendar-mode) (interactive-p))
(with-output-to-temp-buffer (help-buffer)
(princ
(format
"Calendar Mode:\nFor a complete description, type %s\n%s\n"
(substitute-command-keys
"\\<calendar-mode-map>\\[describe-mode] from within the calendar")
(substitute-command-keys "\\{calendar-mode-map}")))
(save-excursion
(set-buffer standard-output)
(help-mode))
(print-help-return-message)))
;; Calendar mode is suitable only for specially formatted data.
@ -2451,12 +2459,11 @@ the STRINGS are just concatenated and the result truncated."
(s (car strings))
(strings (cdr strings))
(i 0))
(while strings
(dolist (string strings)
(setq s (concat s
(make-string (max 0 (/ (+ n i) m)) char)
(car strings)))
(setq i (1+ i))
(setq strings (cdr strings)))
string))
(setq i (1+ i)))
(substring s 0 length)))
(defun update-calendar-mode-line ()
@ -2478,7 +2485,7 @@ the STRINGS are just concatenated and the result truncated."
list)
(walk-windows (lambda (w)
(if (memq (window-buffer w) calendar-buffers)
(setq list (cons w list))))
(push w list)))
nil t)
list))
@ -2488,15 +2495,12 @@ the STRINGS are just concatenated and the result truncated."
(buffers (list "*Yahrzeits*" lunar-phases-buffer holiday-buffer
fancy-diary-buffer diary-buffer calendar-buffer
other-calendars-buffer))
(buffer-list nil)
b)
(while buffers
(setq b (car buffers))
(buffer-list nil))
(dolist (b buffers)
(setq b (cond ((stringp b) (get-buffer b))
((bufferp b) b)
(t nil)))
(if b (setq buffer-list (cons b buffer-list)))
(setq buffers (cdr buffers)))
(if b (push b buffer-list)))
buffer-list))
(defun exit-calendar ()
@ -2642,7 +2646,7 @@ With argument, jump to mark, pop it, and put point at end of ring."
(let ((date (calendar-cursor-to-date t)))
(if (null arg)
(progn
(setq calendar-mark-ring (cons date calendar-mark-ring))
(push date calendar-mark-ring)
;; Since the top of the mark ring is the marked date in the
;; calendar, the mark ring in the calendar is one longer than
;; in other buffers to get the same effect.
@ -2949,16 +2953,18 @@ MARK defaults to `diary-entry-marker'."
"Replace the date under the cursor in the calendar window with asterisks.
This function can be used with the `today-visible-calendar-hook' run after the
calendar window has been prepared."
(let ((inhibit-read-only t))
(make-local-variable 'calendar-starred-day)
(let ((inhibit-read-only t)
(modified (buffer-modified-p)))
(forward-char 1)
(setq calendar-starred-day
(string-to-number
(buffer-substring (point) (- (point) 2))))
(delete-char -2)
(set (make-local-variable 'calendar-starred-day)
(string-to-number
(buffer-substring (point) (- (point) 2))))
;; Insert before deleting, to better preserve markers.
(insert "**")
(backward-char 1)
(set-buffer-modified-p nil)))
(forward-char -2)
(delete-char -2)
(forward-char 1)
(restore-buffer-modified-p modified)))
(defun calendar-mark-today ()
"Mark the date under the cursor in the calendar window.
@ -3048,48 +3054,48 @@ Defaults to today's date if DATE is not given."
(interactive)
(let* ((date (calendar-cursor-to-date t)))
(with-current-buffer (get-buffer-create other-calendars-buffer)
(setq buffer-read-only nil)
(calendar-set-mode-line
(concat (calendar-date-string date) " (Gregorian)"))
(erase-buffer)
(insert
(mapconcat 'identity
(list (calendar-day-of-year-string date)
(format "ISO date: %s" (calendar-iso-date-string date))
(format "Julian date: %s"
(calendar-julian-date-string date))
(format
"Astronomical (Julian) day number (at noon UTC): %s.0"
(calendar-astro-date-string date))
(format "Fixed (RD) date: %s"
(calendar-absolute-from-gregorian date))
(format "Hebrew date (before sunset): %s"
(calendar-hebrew-date-string date))
(format "Persian date: %s"
(calendar-persian-date-string date))
(let ((i (calendar-islamic-date-string date)))
(if (not (string-equal i ""))
(format "Islamic date (before sunset): %s" i)))
(let ((b (calendar-bahai-date-string date)))
(if (not (string-equal b ""))
(format "Baha'i date (before sunset): %s" b)))
(format "Chinese date: %s"
(calendar-chinese-date-string date))
(let ((c (calendar-coptic-date-string date)))
(if (not (string-equal c ""))
(format "Coptic date: %s" c)))
(let ((e (calendar-ethiopic-date-string date)))
(if (not (string-equal e ""))
(format "Ethiopic date: %s" e)))
(let ((f (calendar-french-date-string date)))
(if (not (string-equal f ""))
(format "French Revolutionary date: %s" f)))
(format "Mayan date: %s"
(calendar-mayan-date-string date)))
"\n"))
(goto-char (point-min))
(set-buffer-modified-p nil)
(setq buffer-read-only t)
(let ((inhibit-read-only t)
(modified (buffer-modified-p)))
(calendar-set-mode-line
(concat (calendar-date-string date) " (Gregorian)"))
(erase-buffer)
(apply
'insert
(delq nil
(list
(calendar-day-of-year-string date) "\n"
(format "ISO date: %s\n" (calendar-iso-date-string date))
(format "Julian date: %s\n"
(calendar-julian-date-string date))
(format "Astronomical (Julian) day number (at noon UTC): %s.0\n"
(calendar-astro-date-string date))
(format "Fixed (RD) date: %s\n"
(calendar-absolute-from-gregorian date))
(format "Hebrew date (before sunset): %s\n"
(calendar-hebrew-date-string date))
(format "Persian date: %s\n"
(calendar-persian-date-string date))
(let ((i (calendar-islamic-date-string date)))
(if (not (string-equal i ""))
(format "Islamic date (before sunset): %s\n" i)))
(let ((b (calendar-bahai-date-string date)))
(if (not (string-equal b ""))
(format "Baha'i date (before sunset): %s\n" b)))
(format "Chinese date: %s\n"
(calendar-chinese-date-string date))
(let ((c (calendar-coptic-date-string date)))
(if (not (string-equal c ""))
(format "Coptic date: %s\n" c)))
(let ((e (calendar-ethiopic-date-string date)))
(if (not (string-equal e ""))
(format "Ethiopic date: %s\n" e)))
(let ((f (calendar-french-date-string date)))
(if (not (string-equal f ""))
(format "French Revolutionary date: %s\n" f)))
(format "Mayan date: %s\n"
(calendar-mayan-date-string date)))))
(goto-char (point-min))
(restore-buffer-modified-p modified))
(display-buffer other-calendars-buffer))))
(defun calendar-print-day-of-year ()
@ -3099,11 +3105,15 @@ Defaults to today's date if DATE is not given."
(defun calendar-set-mode-line (str)
"Set mode line to STR, centered, surrounded by dashes."
(setq mode-line-format
(calendar-string-spread
(list str) ?-
(let* ((edges (window-edges))
;; As per doc of window-width, total visible mode-line length.
(let ((edges (window-edges))) (- (nth 2 edges) (nth 0 edges))))))
(width (- (nth 2 edges) (nth 0 edges))))
(setq mode-line-format
(if buffer-file-name
`("-" mode-line-modified
,(calendar-string-spread (list str) ?- (- width 6))
"---")
(calendar-string-spread (list str) ?- width)))))
(defun calendar-mod (m n)
"Non-negative remainder of M/N with N instead of 0."

View file

@ -82,11 +82,11 @@
;; SAVING/LOADING COMPLETIONS
;; Completions are automatically saved from one session to another
;; (unless save-completions-flag or enable-completion is nil).
;; Activating this minor-mode calling completion-initialize) causes Emacs
;; to load a completions database for a saved completions file
;; Activating this minor-mode (calling completion-initialize) loads
;; a completions database for a saved completions file
;; (default: ~/.completions). When you exit, Emacs saves a copy of the
;; completions that you
;; often use. When you next start, Emacs loads in the saved completion file.
;; completions that you often use. When you next start, Emacs loads in
;; the saved completion file.
;;
;; The number of completions saved depends loosely on
;; *saved-completions-decay-factor*. Completions that have never been
@ -2250,13 +2250,14 @@ Patched to remove the most recent completion."
TYPE is the type of the wrapper to be added. Can be :before or :under."
(put function-name 'completion-function
(cdr (assq type
'((:separator 'use-completion-before-separator)
(:before 'use-completion-before-point)
(:backward-under 'use-completion-backward-under)
(:backward 'use-completion-backward)
(:under 'use-completion-under-point)
(:under-or-before 'use-completion-under-or-before-point)
(:minibuffer-separator 'use-completion-minibuffer-separator))))))
'((:separator . use-completion-before-separator)
(:before . use-completion-before-point)
(:backward-under . use-completion-backward-under)
(:backward . use-completion-backward)
(:under . use-completion-under-point)
(:under-or-before . use-completion-under-or-before-point)
(:minibuffer-separator
. use-completion-minibuffer-separator))))))
(defun use-completion-minibuffer-separator ()
(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."
(if dynamic-completion-mode
(add-hook (car x) (cdr x))
(remove-hook (car x) (cdr x))))
;; "Complete" Key Keybindings. We don't want to use a minor-mode
;; map because these have too high a priority. We could/should
;; probably change the interpretation of minor-mode-map-alist such

View file

@ -1470,22 +1470,19 @@ See "
(if custom-raised-buttons
"`Raised' text indicates"
"Square brackets indicate")))
(widget-create 'info-link
(widget-create 'custom-manual
:tag "Custom file"
:button-face 'custom-link
:mouse-face 'highlight
"(emacs)Saving Customizations")
(widget-insert
" for information on how to save in a different file.\n
See ")
(widget-create 'info-link
(widget-create 'custom-manual
:tag "Help"
:button-face 'custom-link
:mouse-face 'highlight
:help-echo "Read the online help."
"(emacs)Easy Customization")
(widget-insert " for more information.\n\n")
(widget-insert "Operate on everything in this buffer:\n "))
(widget-insert "Operate on all settings in this buffer that \
are not marked HIDDEN:\n "))
(widget-insert " "))
(widget-create 'push-button
:tag "Set for Current Session"
@ -1496,10 +1493,8 @@ Make your editing in this buffer take effect for this session."
(if (not custom-buffer-verbose-help)
(progn
(widget-insert " ")
(widget-create 'info-link
(widget-create 'custom-manual
:tag "Help"
:button-face 'custom-link
:mouse-face 'highlight
:help-echo "Read the online help."
"(emacs)Easy Customization")))
(when (or custom-file user-init-file)
@ -1647,7 +1642,7 @@ item in another window.\n\n"))
(let ((custom-buffer-style 'tree))
(custom-toggle-parent widget)))
(define-widget 'custom-browse-group-tag 'push-button
(define-widget 'custom-browse-group-tag 'custom-group-link
"Show parent in other window when activated."
:tag "Group"
:tag-glyph "folder"
@ -1657,7 +1652,7 @@ item in another window.\n\n"))
(let ((parent (widget-get widget :parent)))
(customize-group-other-window (widget-value parent))))
(define-widget 'custom-browse-variable-tag 'push-button
(define-widget 'custom-browse-variable-tag 'custom-group-link
"Show parent in other window when activated."
:tag "Option"
:tag-glyph "option"
@ -1667,7 +1662,7 @@ item in another window.\n\n"))
(let ((parent (widget-get widget :parent)))
(customize-variable-other-window (widget-value parent))))
(define-widget 'custom-browse-face-tag 'push-button
(define-widget 'custom-browse-face-tag 'custom-group-link
"Show parent in other window when activated."
:tag "Face"
:tag-glyph "face"
@ -2009,13 +2004,7 @@ and `face'."
:group 'custom-faces)
(defface custom-button-unraised
'((((min-colors 88)
(class color) (background light)) :foreground "blue1" :underline t)
(((class color) (background light)) :foreground "blue" :underline t)
(((min-colors 88)
(class color) (background dark)) :foreground "cyan1" :underline t)
(((class color) (background dark)) :foreground "cyan" :underline t)
(t :underline t))
'((t :inherit underline))
"Face for custom buffer buttons if `custom-raised-buttons' is nil."
:version "22.1"
:group 'custom-faces)
@ -2070,15 +2059,10 @@ and `face'."
(put 'custom-state-face 'face-alias 'custom-state)
(defface custom-link
'((((min-colors 88)
(class color) (background light)) :foreground "blue1" :underline t)
(((class color) (background light)) :foreground "blue" :underline t)
(((min-colors 88)
(class color) (background dark)) :foreground "cyan1" :underline t)
(((class color) (background dark)) :foreground "cyan" :underline t)
(t :underline t))
"Face for Info links in customization buffers."
:group 'info)
'((t :inherit link))
"Face for links in customization buffers."
:version "22.1"
:group 'custom-faces)
(define-widget 'custom 'default
"Customize a user option."
@ -2245,8 +2229,6 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
(insert " ")
(push (widget-create-child-and-convert
widget 'custom-group-link
:button-face 'custom-link
:mouse-face 'highlight
:tag (custom-unlispify-tag-name symbol)
symbol)
buttons)
@ -3323,7 +3305,7 @@ SPEC must be a full face spec."
(defvar custom-face-menu
`(("Set for Current Session" custom-face-set)
,@(when (or custom-file user-init-file)
'(("Save for Future Sessions" custom-face-save-command)))
'(("Save for Future Sessions" custom-face-save)))
("Undo Edits" custom-redraw
(lambda (widget)
(memq (widget-get widget :custom-state) '(modified changed))))
@ -3448,13 +3430,8 @@ Optional EVENT is the location for the menu."
(custom-face-state-set widget)
(custom-redraw-magic widget)))
(defun custom-face-save-command (widget)
"Save in `.emacs' the face attributes in WIDGET."
(custom-face-save widget)
(custom-save-all))
(defun custom-face-save (widget)
"Prepare for saving WIDGET's face attributes, but don't write `.emacs'."
"Save in `.emacs' the face attributes in WIDGET."
(let* ((symbol (widget-value widget))
(child (car (widget-get widget :children)))
(value (custom-post-filter-face-spec (widget-value child)))
@ -3480,6 +3457,10 @@ Optional EVENT is the location for the menu."
(custom-face-state-set widget)
(custom-redraw-magic widget)))
;; For backward compatibility.
(define-obsolete-function-alias 'custom-face-save-command 'custom-face-save
"22.1")
(defun custom-face-reset-saved (widget)
"Restore WIDGET to the face's default attributes."
(let* ((symbol (widget-value widget))
@ -3607,6 +3588,8 @@ restoring it to the state of a face that has never been customized."
(define-widget 'custom-group-link 'link
"Show parent in other window when activated."
:button-face 'custom-link
:mouse-face 'highlight
:help-echo "Create customization buffer for this group."
:action 'custom-group-link-action)
@ -3805,8 +3788,6 @@ If GROUPS-ONLY non-nil, return only those members that are groups."
(if (eq custom-buffer-style 'links)
(push (widget-create-child-and-convert
widget 'custom-group-link
:button-face 'custom-link
:mouse-face 'highlight
:tag "Go to Group"
symbol)
buttons)
@ -4400,6 +4381,15 @@ The format is suitable for use with `easy-menu-define'."
["Erase Customization" Custom-reset-standard t]
["Info" (info "(emacs)Easy Customization") t]))
(defvar custom-field-keymap
(let ((map (copy-keymap widget-field-keymap)))
(define-key map "\C-c\C-c" 'Custom-set)
(define-key map "\C-x\C-s" 'Custom-save)
map)
"Keymap used inside editable fields in customization buffers.")
(widget-put (get 'editable-field 'widget-type) :keymap custom-field-keymap)
(defun Custom-goto-parent ()
"Go to the parent group listed at the top of this buffer.
If 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."
The following commands are available:
Move to next button or editable field. \\[widget-forward]
Move to previous button or editable field. \\[widget-backward]
\\<widget-field-keymap>\
\\<widget-keymap>\
Move to next button, link or editable field. \\[widget-forward]
Move to previous button, link or editable field. \\[widget-backward]
\\<custom-field-keymap>\
Complete content of editable text field. \\[widget-complete]
\\<custom-mode-map>\
Invoke button under the mouse pointer. \\[Custom-move-and-invoke]
Invoke button under point. \\[widget-button-press]
Invoke button under the mouse pointer. \\[widget-move-and-invoke]
Invoke button under point. \\[widget-button-press]
Set all options from current text. \\[Custom-set]
Make values in current text permanent. \\[Custom-save]
Make text match actual option values. \\[Custom-reset-current]
Reset options to permanent settings. \\[Custom-reset-saved]
Make text match actual option values. \\[Custom-reset-current]
Reset options to permanent settings. \\[Custom-reset-saved]
Erase customizations; set options
and buffer text to the standard values. \\[Custom-reset-standard]

View file

@ -966,7 +966,7 @@ directory DIRNAME."
(defun desktop-load-file (function)
"Load the file where auto loaded FUNCTION is defined."
(when function
(let ((fcell (symbol-function function)))
(let ((fcell (and (fboundp function) (symbol-function function))))
(when (and (listp fcell)
(eq 'autoload (car fcell)))
(load (cadr fcell))))))

View file

@ -286,6 +286,9 @@ In simple cases, this list contains one element.")
This is an alist of the form (SUBDIR . SWITCHES).")
(make-variable-buffer-local 'dired-switches-alist)
(defvaralias 'dired-move-to-filename-regexp
'directory-listing-before-filename-regexp)
(defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]"
"Regexp matching a maybe hidden subdirectory line in `ls -lR' output.
Subexpression 1 is the subdirectory proper, no trailing colon.
@ -2514,11 +2517,18 @@ if there are no flagged files."
(set-window-start w2 1)
)))
(defvar dired-no-confirm nil
(defcustom dired-no-confirm nil
"A list of symbols for commands Dired should not confirm.
Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress',
`copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink',
`touch' and `uncompress'.")
`touch' and `uncompress'."
:group 'dired
:type '(set (const byte-compile) (const chgrp)
(const chmod) (const chown) (const compress)
(const copy) (const delete) (const hardlink)
(const load) (const move) (const print)
(const shell) (const symlink) (const touch)
(const uncompress)))
(defun dired-mark-pop-up (bufname op-symbol files function &rest args)
"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."
(if (eq major-mode 'dired-mode) (dired-sort-set-modeline))
(or no-revert (revert-buffer)))
(make-variable-buffer-local
(defvar dired-subdir-alist-pre-R nil
"Value of `dired-subdir-alist' before -R switch added."))
(defvar dired-subdir-alist-pre-R nil
"Value of `dired-subdir-alist' before -R switch added.")
(make-variable-buffer-local 'dired-subdir-alist-pre-R)
(defun dired-sort-R-check (switches)
"Additional processing of -R in ls option string SWITCHES.

View file

@ -165,7 +165,7 @@ If nil, do not try to find the source code of functions and variables
defined in C.")
(defun find-function-C-source (fun-or-var file type)
"Find the source location where SUBR-OR-VAR is defined in FILE.
"Find the source location where FUN-OR-VAR is defined in FILE.
TYPE should be nil to find a function, or `defvar' to find a variable."
(unless find-function-C-source-directory
(setq find-function-C-source-directory
@ -243,7 +243,7 @@ The search is done in the source for library LIBRARY."
(defun find-function-noselect (function)
"Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
Finds the Emacs Lisp library containing the definition of FUNCTION
Finds the source file containing the definition of FUNCTION
in a buffer and the point of the definition. The buffer is
not selected.
@ -335,7 +335,7 @@ Set mark before moving, if the buffer already existed."
(defun find-function (function)
"Find the definition of the FUNCTION near point.
Finds the Emacs Lisp library containing the definition of the function
Finds the source file containing the definition of the function
near point (selected by `function-called-at-point') in a buffer and
places point before the definition.
Set mark before moving, if the buffer already existed.
@ -356,7 +356,7 @@ See `find-function' for more details."
;;;###autoload
(defun find-function-other-frame (function)
"Find, in ananother frame, the definition of FUNCTION near point.
"Find, in another frame, the definition of FUNCTION near point.
See `find-function' for more details."
(interactive (find-function-read))
@ -364,24 +364,25 @@ See `find-function' for more details."
;;;###autoload
(defun find-variable-noselect (variable &optional file)
"Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL.
"Return a pair `(BUFFER . POINT)' pointing to the definition of VARIABLE.
Finds the Emacs Lisp library containing the definition of SYMBOL
in a buffer, and the point of the definition. It does not switch
to the buffer or display it.
Finds the library containing the definition of VARIABLE in a buffer and
the point of the definition. The buffer is not selected.
The library where VARIABLE is defined is searched for in FILE or
`find-function-source-path', if non nil, otherwise in `load-path'."
(if (not variable)
(error "You didn't specify a variable"))
(let ((library (or file (symbol-file variable 'defvar))))
(find-function-search-for-symbol variable 'defvar library)))
(error "You didn't specify a variable")
(let ((library (or file
(symbol-file variable 'defvar)
(help-C-file-name variable 'var))))
(find-function-search-for-symbol variable 'defvar library))))
;;;###autoload
(defun find-variable (variable)
"Find the definition of the VARIABLE near point.
Finds the Emacs Lisp library containing the definition of the variable
Finds the library containing the definition of the variable
near point (selected by `variable-at-point') in a buffer and
places point before the definition.
@ -403,7 +404,7 @@ See `find-variable' for more details."
;;;###autoload
(defun find-variable-other-frame (variable)
"Find, in annother frame, the definition of VARIABLE near point.
"Find, in another frame, the definition of VARIABLE near point.
See `find-variable' for more details."
(interactive (find-function-read 'defvar))
@ -412,18 +413,22 @@ See `find-variable' for more details."
;;;###autoload
(defun find-definition-noselect (symbol type &optional file)
"Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL.
TYPE says what type of definition: nil for a function,
`defvar' or `defface' for a variable or face. This function
does not switch to the buffer or display it.
TYPE says what type of definition: nil for a function, `defvar' for a
variabke, `defface' for a face. This function does not switch to the
buffer nor display it.
The library where SYMBOL is defined is searched for in FILE or
`find-function-source-path', if non nil, otherwise in `load-path'."
(if (not symbol)
(error "You didn't specify a symbol"))
(if (null type)
(find-function-noselect symbol)
(cond
((not symbol)
(error "You didn't specify a symbol"))
((null type)
(find-function-noselect symbol))
((eq type 'defvar)
(find-variable-noselect symbol file))
(t
(let ((library (or file (symbol-file symbol type))))
(find-function-search-for-symbol symbol type library))))
(find-function-search-for-symbol symbol type library)))))
;; For symmetry, this should be called find-face; but some programs
;; assume that, if that name is defined, it means something else.
@ -480,7 +485,7 @@ Set mark before moving, if the buffer already existed."
;;;###autoload
(defun find-variable-at-point ()
"Find directly the function at point in the other window."
"Find directly the variable at point in the other window."
(interactive)
(let ((symb (variable-at-point)))
(when (and symb (not (equal symb 0)))

View file

@ -1918,6 +1918,28 @@ created."
:group 'basic-faces
:version "22.1")
(defface link
'((((class color) (min-colors 88) (background light))
:foreground "blue1" :underline t)
(((class color) (background light))
:foreground "blue" :underline t)
(((class color) (min-colors 88) (background dark))
:foreground "cyan1" :underline t)
(((class color) (background dark))
:foreground "cyan" :underline t)
(t :inherit underline))
"Basic face for unvisited links."
:group 'basic-faces
:version "22.1")
(defface link-visited
'((default :inherit link)
(((class color) (background light)) :foreground "magenta4")
(((class color) (background dark)) :foreground "violet"))
"Basic face for visited links."
:group 'basic-faces
:version "22.1")
(defface highlight
'((((class color) (min-colors 88) (background light))
:background "darkseagreen2")

View file

@ -2127,7 +2127,7 @@ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
;; Constant values.
("\\<:\\sw+\\>" 0 font-lock-builtin-face)
;; ELisp and CLisp `&' keywords as types.
("\\&\\sw+\\>" . font-lock-type-face)
("\\<\\&\\sw+\\>" . font-lock-type-face)
;; ELisp regexp grouping constructs
((lambda (bound)
(catch 'found

View file

@ -1,3 +1,62 @@
2006-01-25 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-uu.el (mm-uu-dissect-text-parts): Ignore it if a given part
is dissected into a single part of which the type is the same as
the given one.
2006-01-21 Kevin Ryde <user42@zip.com.au>
* mailcap.el (mailcap-parse-mailcap-extras): "test" key must go
into alists as symbol not string, since that's what
mailcap-viewer-passes-test and mailcap-mailcap-entry-passes-test
look for.
2006-01-24 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-uu.el (mm-uu-dissect-text-parts): Reduce the number of
recursive calls.
2006-01-24 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-view.el (mm-w3m-standalone-supports-m17n-p): New variable.
(mm-w3m-standalone-supports-m17n-p): New function.
(mm-inline-text-html-render-with-w3m-standalone): Use it to alter
w3m usage.
* gnus-art.el (gnus-article-wash-html-with-w3m-standalone): Use
mm-w3m-standalone-supports-m17n-p to alter w3m usage.
2006-01-23 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-uu.el (mm-uu-dissect-text-parts): Decode content transfer
encoding.
2006-01-20 Reiner Steib <Reiner.Steib@gmx.de>
* mml.el (mml-attach-file): Describe `description' in doc string.
(mml-menu): Add Emacs MIME manual and PGG manual.
2006-01-19 Reiner Steib <Reiner.Steib@gmx.de>
* spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p)
(spam-group-spam-marks, spam-list-articles, spam-group-ham-marks):
Revert 2006-01-08 change because the functions will be used in No
Gnus.
2006-01-19 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-bodies.el (mm-decode-body): Don't decode decoded body.
* mm-uu.el (mm-uu-dissect-text-parts): Dissect dissected parts.
2006-01-17 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-decode.el (mm-inlined-types): Add application/pgp.
(mm-automatic-display): Ditto.
* mm-uu.el (mm-uu-dissect-text-parts): Recognize application/pgp
part as text.
2006-01-16 Katsumi Yamaoka <yamaoka@jpl.org>
* nnrss.el: Update copyright.

View file

@ -2541,15 +2541,18 @@ charset defined in `gnus-summary-show-article-charset-alist' is used."
(defun gnus-article-wash-html-with-w3m-standalone ()
"Wash the current buffer with w3m."
(unless (mm-coding-system-p charset)
;; The default.
(setq charset 'iso-8859-1))
(let ((coding-system-for-write charset)
(coding-system-for-read charset))
(call-process-region
(point-min) (point-max)
"w3m" t t nil "-dump" "-T" "text/html"
"-I" (symbol-name charset) "-O" (symbol-name charset))))
(if (mm-w3m-standalone-supports-m17n-p)
(progn
(unless (mm-coding-system-p charset) ;; Bound by `article-wash-html'.
;; The default.
(setq charset 'iso-8859-1))
(let ((coding-system-for-write charset)
(coding-system-for-read charset))
(call-process-region
(point-min) (point-max)
"w3m" t t nil "-dump" "-T" "text/html"
"-I" (symbol-name charset) "-O" (symbol-name charset))))
(mm-inline-wash-with-stdin nil "w3m" "-dump" "-T" "text/html")))
(defun article-hide-list-identifiers ()
"Remove list identifies from the Subject header.

View file

@ -528,7 +528,12 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus
(skip-chars-forward ";"))
(setq done t))))
(setq value (buffer-substring val-pos (point))))
(setq results (cons (cons name value) results))
;; `test' as symbol, others like "copiousoutput" and "needsx11" as
;; strings
(setq results (cons (cons (if (string-equal name "test")
'test
name)
value) results))
(skip-chars-forward " \";\n\t"))
results)))

View file

@ -1,7 +1,7 @@
;;; mm-bodies.el --- Functions for decoding MIME things
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
@ -248,7 +248,8 @@ decoding. If it is nil, default to `mail-parse-charset'."
(save-excursion
(when encoding
(mm-decode-content-transfer-encoding encoding type))
(when (featurep 'mule) ; Fixme: Wrong test for unibyte session.
(when (and (featurep 'mule) ;; Fixme: Wrong test for unibyte session.
(not (eq charset 'gnus-decoded)))
(let ((coding-system (mm-charset-to-coding-system charset)))
(if (and (not coding-system)
(listp mail-parse-ignored-charsets)
@ -261,8 +262,7 @@ decoding. If it is nil, default to `mail-parse-charset'."
;;in XEmacs
(mm-multibyte-p)
(or (not (eq coding-system 'ascii))
(setq coding-system mail-parse-charset))
(not (eq coding-system 'gnus-decoded)))
(setq coding-system mail-parse-charset)))
(mm-decode-coding-region (point-min) (point-max)
coding-system))
(setq buffer-file-coding-system

View file

@ -1,7 +1,7 @@
;;; mm-decode.el --- Functions for decoding MIME things
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
@ -279,7 +279,9 @@ before the external MIME handler is invoked."
"application/x-emacs-lisp"
"application/pgp-signature" "application/x-pkcs7-signature"
"application/pkcs7-signature" "application/x-pkcs7-mime"
"application/pkcs7-mime")
"application/pkcs7-mime"
;; Mutt still uses this even though it has already been withdrawn.
"application/pgp")
"List of media types that are to be displayed inline.
See also `mm-inline-media-tests', which says how to display a media
type inline."
@ -302,7 +304,9 @@ when selecting a different article."
"application/emacs-lisp" "application/x-emacs-lisp"
"application/x-pkcs7-signature"
"application/pkcs7-signature" "application/x-pkcs7-mime"
"application/pkcs7-mime")
"application/pkcs7-mime"
;; Mutt still uses this even though it has already been withdrawn.
"application/pgp")
"A list of MIME types to be displayed automatically."
:type '(repeat regexp)
:group 'mime-display)

View file

@ -511,21 +511,40 @@ value of `mm-uu-text-plain-type'."
(defun mm-uu-dissect-text-parts (handle)
"Dissect text parts and put uu handles into HANDLE."
(let ((buffer (mm-handle-buffer handle))
type children)
(let ((buffer (mm-handle-buffer handle)))
(cond ((stringp buffer)
(dolist (elem (cdr handle))
(mm-uu-dissect-text-parts elem)))
((bufferp buffer)
(when (and (setq type (mm-handle-media-type handle))
(stringp type)
(string-match "\\`text/" type)
(with-current-buffer buffer
(setq children
(mm-uu-dissect t (mm-handle-type handle)))))
(kill-buffer buffer)
(setcar handle (car children))
(setcdr handle (cdr children))))
(let ((type (mm-handle-media-type handle))
(case-fold-search t) ;; string-match
encoding children)
(when (and
(stringp type)
;; Mutt still uses application/pgp even though
;; it has already been withdrawn.
(string-match "\\`text/\\|\\`application/pgp\\'" type)
(setq children
(with-current-buffer buffer
(if (setq encoding (mm-handle-encoding handle))
;; Inherit the multibyteness of the `buffer'.
(with-temp-buffer
(insert-buffer-substring buffer)
(mm-decode-content-transfer-encoding
encoding type)
(mm-uu-dissect t (mm-handle-type handle)))
(mm-uu-dissect t (mm-handle-type handle))))))
;; Ignore it if a given part is dissected into a single
;; part of which the type is the same as the given one.
(if (and (<= (length children) 2)
(string-equal (mm-handle-media-type (cadr children))
type))
(kill-buffer (mm-handle-buffer (cadr children)))
(kill-buffer buffer)
(setcdr handle (cdr children))
(setcar handle (car children)) ;; "multipart/mixed"
(dolist (elem (cdr children))
(mm-uu-dissect-text-parts elem))))))
(t
(dolist (elem handle)
(mm-uu-dissect-text-parts elem))))))

View file

@ -262,29 +262,57 @@
(delete-region ,(point-min-marker)
,(point-max-marker)))))))))
(defvar mm-w3m-standalone-supports-m17n-p (if (featurep 'mule) 'undecided)
"*T means the w3m command supports the m17n feature.")
(defun mm-w3m-standalone-supports-m17n-p ()
"Say whether the w3m command supports the m17n feature."
(cond ((eq mm-w3m-standalone-supports-m17n-p t) t)
((eq mm-w3m-standalone-supports-m17n-p nil) nil)
((not (featurep 'mule)) (setq mm-w3m-standalone-supports-m17n-p nil))
((condition-case nil
(let ((coding-system-for-write 'iso-2022-jp)
(coding-system-for-read 'iso-2022-jp)
(str (mm-decode-coding-string "\
\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)))
(mm-with-multibyte-buffer
(insert str)
(call-process-region
(point-min) (point-max) "w3m" t t nil "-dump"
"-T" "text/html" "-I" "iso-2022-jp" "-O" "iso-2022-jp")
(goto-char (point-min))
(search-forward str nil t)))
(error nil))
(setq mm-w3m-standalone-supports-m17n-p t))
(t
;;(message "You had better upgrade your w3m command")
(setq mm-w3m-standalone-supports-m17n-p nil))))
(defun mm-inline-text-html-render-with-w3m-standalone (handle)
"Render a text/html part using w3m."
(let ((source (mm-get-part handle))
(charset (mail-content-type-get (mm-handle-type handle) 'charset))
cs)
(unless (and charset
(setq cs (mm-charset-to-coding-system charset))
(not (eq cs 'ascii)))
;; The default.
(setq charset "iso-8859-1"
cs 'iso-8859-1))
(mm-insert-inline
handle
(mm-with-unibyte-buffer
(insert source)
(mm-enable-multibyte)
(let ((coding-system-for-write 'binary)
(coding-system-for-read cs))
(call-process-region
(point-min) (point-max)
"w3m" t t nil "-dump" "-T" "text/html"
"-I" charset "-O" charset))
(buffer-string)))))
(if (mm-w3m-standalone-supports-m17n-p)
(let ((source (mm-get-part handle))
(charset (mail-content-type-get (mm-handle-type handle) 'charset))
cs)
(unless (and charset
(setq cs (mm-charset-to-coding-system charset))
(not (eq cs 'ascii)))
;; The default.
(setq charset "iso-8859-1"
cs 'iso-8859-1))
(mm-insert-inline
handle
(mm-with-unibyte-buffer
(insert source)
(mm-enable-multibyte)
(let ((coding-system-for-write 'binary)
(coding-system-for-read cs))
(call-process-region
(point-min) (point-max)
"w3m" t t nil "-dump" "-T" "text/html"
"-I" charset "-O" charset))
(buffer-string))))
(mm-inline-render-with-stdin handle nil "w3m" "-dump" "-T" "text/html")))
(defun mm-links-remove-leading-blank ()
;; Delete the annoying three spaces preceding each line of links

View file

@ -38,6 +38,7 @@
(autoload 'gnus-add-minor-mode "gnus-ems")
(autoload 'gnus-make-local-hook "gnus-util")
(autoload 'message-fetch-field "message")
(autoload 'message-info "message")
(autoload 'fill-flowed-encode "flow-fill")
(autoload 'message-posting-charset "message"))
@ -916,7 +917,14 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
;;["Narrow" mml-narrow-to-part t]
["Quote MML" mml-quote-region t]
["Validate MML" mml-validate t]
["Preview" mml-preview t]))
["Preview" mml-preview t]
"----"
["Emacs MIME manual" (lambda () (interactive) (message-info 4))
,@(if (featurep 'xemacs) '(t)
'(:help "Display the Emacs MIME manual"))]
["PGG manual" (lambda () (interactive) (message-info 16))
,@(if (featurep 'xemacs) '(t)
'(:help "Display the PGG manual"))]))
(defvar mml-mode nil
"Minor mode for editing MML.")
@ -1035,9 +1043,12 @@ See Info node `(emacs-mime)Composing'.
The file is not inserted or encoded until you send the message with
`\\[message-send-and-exit]' or `\\[message-send]'.
FILE is the name of the file to attach. TYPE is its content-type, a
string of the form \"type/subtype\". DESCRIPTION is a one-line
description of the attachment."
FILE is the name of the file to attach. TYPE is its
content-type, a string of the form \"type/subtype\". DESCRIPTION
is a one-line description of the attachment. The DISPOSITION
specifies how the attachment is intended to be displayed. It can
be either \"inline\" (displayed automatically within the message
body) or \"attachment\" (separate from the body)."
(interactive
(let* ((file (mml-minibuffer-read-file "Attach file: "))
(type (mml-minibuffer-read-type file))

View file

@ -467,14 +467,28 @@ spamoracle database."
"Logical exclusive `or'."
(and (or a b) (not (and a b))))
(defun spam-group-ham-mark-p (group mark &optional spam)
(when (stringp group)
(let* ((marks (spam-group-ham-marks group spam))
(marks (if (symbolp mark)
marks
(mapcar 'symbol-value marks))))
(memq mark marks))))
(defun spam-group-spam-mark-p (group mark)
(spam-group-ham-mark-p group mark t))
(defun spam-group-ham-marks (group &optional spam)
(when (stringp group)
(let ((marks (car (if spam
(gnus-parameter-spam-marks group)
(gnus-parameter-ham-marks group)))))
(if (listp (car marks))
(car marks)
marks))))
(let* ((marks (if spam
(gnus-parameter-spam-marks group)
(gnus-parameter-ham-marks group)))
(marks (car marks))
(marks (if (listp (car marks)) (car marks) marks)))
marks)))
(defun spam-group-spam-marks (group)
(spam-group-ham-marks group t))
(defun spam-group-spam-contents-p (group)
(if (stringp group)
@ -1036,12 +1050,23 @@ functions")
(nth 2 flist))))
(defun spam-list-articles (articles classification)
(let ((marks (mapcar 'eval (spam-group-ham-marks gnus-newsgroup-name
(eq classification 'spam))))
list)
(let ((mark-check (if (eq classification 'spam)
'spam-group-spam-mark-p
'spam-group-ham-mark-p))
list mark-cache-yes mark-cache-no)
(dolist (article articles)
(if (memq (gnus-summary-article-mark article) marks)
(push article list)))
(let ((mark (gnus-summary-article-mark article)))
(unless (memq mark mark-cache-no)
(if (memq mark mark-cache-yes)
(push article list)
;; else, we have to actually check the mark
(if (funcall mark-check
gnus-newsgroup-name
mark)
(progn
(push article list)
(push mark mark-cache-yes))
(push mark mark-cache-no))))))
list))
(defun spam-register-routine (classification

View file

@ -1,7 +1,7 @@
;;; hl-line.el --- highlight the current line
;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Dave Love <fx@gnu.org>
;; Maintainer: FSF
@ -58,7 +58,7 @@
;; it to nil to avoid highlighting specific buffers, when the global
;; mode is used.
;; In default whole the line is highlighted. The range of highlighting
;; By default the whole line is highlighted. The range of highlighting
;; can be changed by defining an appropriate function as the
;; buffer-local value of `hl-line-range-function'.
@ -130,7 +130,7 @@ addition to `hl-line-highlight' on `post-command-hook'."
(remove-hook 'pre-command-hook #'hl-line-unhighlight t)))
(defun hl-line-highlight ()
"Active the Hl-Line overlay on the current line."
"Activate the Hl-Line overlay on the current line."
(if hl-line-mode ; Might be changed outside the mode function.
(progn
(unless hl-line-overlay
@ -179,9 +179,9 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
(delete-overlay global-hl-line-overlay)))
(defun hl-line-move (overlay)
"Move the hl-line-mode overlay.
"Move the Hl-Line overlay.
If `hl-line-range-function' is non-nil, move the OVERLAY to the position
where the function returns. If `hl-line-range-function' is nil, fill
where the function returns. If `hl-line-range-function' is nil, fill
the line including the point by OVERLAY."
(let (tmp b e)
(if hl-line-range-function

View file

@ -129,21 +129,14 @@ The Lisp code is executed when the node is selected.")
(put 'info-menu-5 'face-alias 'info-menu-star)
(defface info-xref
'((((min-colors 88)
(class color) (background light)) :foreground "blue1" :underline t)
(((class color) (background light)) :foreground "blue" :underline t)
(((min-colors 88)
(class color) (background dark)) :foreground "cyan1" :underline t)
(((class color) (background dark)) :foreground "cyan" :underline t)
(t :underline t))
"Face for Info cross-references."
'((t :inherit link))
"Face for unvisited Info cross-references."
:group 'info)
(defface info-xref-visited
'((default :inherit info-xref)
(((class color) (background light)) :foreground "magenta4")
(((class color) (background dark)) :foreground "violet"))
'((t :inherit link-visited))
"Face for visited Info cross-references."
:version "22.1"
:group 'info)
(defcustom Info-fontify-visited-nodes t

View file

@ -1,6 +1,6 @@
;;; latexenc.el --- guess correct coding system in LaTeX files
;; Copyright (C) 2005 Free Software Foundation, Inc.
;; Copyright (C) 2005, 2006 Free Software Foundation, Inc.
;; Author: Arne J,Ax(Brgensen <arne@arnested.dk>
;; Keywords: mule, coding system, latex
@ -167,6 +167,7 @@ coding system names is determined from `latex-inputenc-coding-alist'."
(setq latexenc-main-file (tex-guess-main-file)))))
;; if we found a master/main file get the coding system from it
(if (and latexenc-main-file
(file-regular-p latexenc-main-file)
(file-readable-p latexenc-main-file))
(let* ((latexenc-dont-use-tex-guess-main-file-flag t)
(latexenc-dont-use-TeX-master-flag t)

View file

@ -517,8 +517,8 @@ Type \\[isearch-exit] to exit, leaving point at location found.
Type LFD (C-j) to match end of line.
Type \\[isearch-repeat-forward] to search again forward,\
\\[isearch-repeat-backward] to search again backward.
Type \\[isearch-yank-word-or-char] to yank word from buffer onto end of search\
string and search for it.
Type \\[isearch-yank-word-or-char] to yank next word or character in buffer
onto the end of the search string, and search for it.
Type \\[isearch-del-char] to delete character from end of search string.
Type \\[isearch-yank-char] to yank char from buffer onto end of search\
string and search for it.

View file

@ -1,7 +1,7 @@
;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output
;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
;; Free Software Foundation, Inc.
;; Author: Stefan Monnier <monnier@cs.yale.edu>
;; Keywords: rcs sccs cvs log version-control
@ -225,8 +225,8 @@
(defun log-view-minor-wrap (buf f)
(let ((data (with-current-buffer buf
(let* ((beg (if mark-active (region-beginning) (point)))
(end (if mark-active (region-end) (point)))
(let* ((beg (point))
(end (if mark-active (mark) (point)))
(fr (log-view-current-tag beg))
(to (log-view-current-tag end)))
(when (string-equal fr to)
@ -235,8 +235,11 @@
(log-view-msg-next)
(setq to (log-view-current-tag))))
(cons
(cons (log-view-current-file) to)
(cons (log-view-current-file) fr))))))
;; The first revision has to be the one at point, for
;; operations that only take one revision
;; (e.g. cvs-mode-edit).
(cons (log-view-current-file) fr)
(cons (log-view-current-file) to))))))
(let ((cvs-branch-prefix (cdar data))
(cvs-secondary-branch-prefix (and (cdar data) (cddr data)))
(cvs-minor-current-files

View file

@ -543,7 +543,11 @@ This is set to nil by default.")
"*If non-nil, RMAIL uses MIME feature.
If the value is t, RMAIL automatically shows MIME decoded message.
If the value is neither t nor nil, RMAIL does not show MIME decoded message
until a user explicitly requires it."
until a user explicitly requires it.
Even if the value is non-nil, you can't use MIME feature
if the feature specified by `rmail-mime-feature' is not available
in your session."
:type '(choice (const :tag "on" t)
(const :tag "off" nil)
(other :tag "when asked" ask))
@ -595,7 +599,10 @@ LIMIT is the position specifying the end of header.")
(defvar rmail-mime-feature 'rmail-mime
"Feature to require to load MIME support in Rmail.
When starting Rmail, if `rmail-enable-mime' is non-nil,
this feature is required with `require'.")
this feature is required with `require'.
The default value is `rmail-mime'. This feature is provided by
the rmail-mime package available at <http://www.m17n.org/rmail-mime/>.")
;;;###autoload
(defvar rmail-decode-mime-charset t
@ -735,8 +742,14 @@ isn't provided."
(condition-case err
(require rmail-mime-feature)
(error
(message "Feature `%s' not provided" rmail-mime-feature)
(sit-for 1)
(display-warning
:warning
(format "Although MIME support is requested
by setting `rmail-enable-mime' to non-nil, the required feature
`%s' (the value of `rmail-mime-feature')
is not available in the current session.
So, the MIME support is turned off for the moment."
rmail-mime-feature))
(setq rmail-enable-mime nil)))))

View file

@ -349,9 +349,11 @@ The optional fourth argument FROM-GNUS is set when called from GNUS."
(mail-fetch-field "sender")
"unknown"))
" " (current-time-string) "\n"))
(if mime-version
(insert "MIME-Version: " mime-version
"\nContent-type: " content-type "\n"))
(when mime-version
(insert "MIME-Version: " mime-version)
;; Some malformed MIME messages set content-type to nil.
(when content-type
(insert "\nContent-type: " content-type "\n")))
;; ``Quote'' "\nFrom " as "\n>From "
;; (note that this isn't really quoting, as there is no requirement
;; that "\n[>]+From " be quoted in the same transparent way.)

View file

@ -1,6 +1,6 @@
;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*-
;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
@ -63,8 +63,40 @@ present for backward compatibility."
(a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)))
(setq file-name-handler-alist
(delete a1 (delete a2 file-name-handler-alist)))))
(tramp-disable-ange-ftp)
(eval-after-load "ange-ftp" '(tramp-disable-ange-ftp))
(eval-after-load "ange-ftp"
'(when (functionp 'tramp-disable-ange-ftp)
(tramp-disable-ange-ftp)))
;;;###autoload
(defun tramp-ftp-enable-ange-ftp ()
;; The following code is commented out in Ange-FTP.
;;; This regexp takes care of real ange-ftp file names (with a slash
;;; and colon).
;;; Don't allow the host name to end in a period--some systems use /.:
(or (assoc "^/[^/:]*[^/:.]:" file-name-handler-alist)
(setq file-name-handler-alist
(cons '("^/[^/:]*[^/:.]:" . ange-ftp-hook-function)
file-name-handler-alist)))
;;; This regexp recognizes absolute filenames with only one component,
;;; for the sake of hostname completion.
(or (assoc "^/[^/:]*\\'" file-name-handler-alist)
(setq file-name-handler-alist
(cons '("^/[^/:]*\\'" . ange-ftp-completion-hook-function)
file-name-handler-alist)))
;;; This regexp recognizes absolute filenames with only one component
;;; on Windows, for the sake of hostname completion.
(and (memq system-type '(ms-dos windows-nt))
(or (assoc "^[a-zA-Z]:/[^/:]*\\'" file-name-handler-alist)
(setq file-name-handler-alist
(cons '("^[a-zA-Z]:/[^/:]*\\'" .
ange-ftp-completion-hook-function)
file-name-handler-alist)))))
(add-hook 'tramp-ftp-unload-hook 'tramp-ftp-enable-ange-ftp)
;; Define FTP method ...
(defcustom tramp-ftp-method "ftp"

View file

@ -1,7 +1,8 @@
;;; -*- coding: iso-2022-7bit; -*-
;;; tramp-util.el --- Misc utility functions to use with Tramp
;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
;; 2006 Free Software Foundation, Inc.
;; Author: kai.grossjohann@gmx.net
;; Keywords: comm, extensions, processes
@ -31,6 +32,10 @@
(eval-when-compile (require 'cl))
(require 'compile)
(require 'tramp)
(add-hook 'tramp-util-unload-hook
'(lambda ()
(when (featurep 'tramp)
(unload-feature 'tramp 'force))))
;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
;; specific functions, like compilation.
@ -42,7 +47,7 @@
(defalias 'define-minor-mode 'identity)
(defvar tramp-minor-mode))
(unless (featurep 'xemacs)
(defalias 'add-menu-button 'identity)))
(defalias 'add-menu-button 'ignore)))
(defvar tramp-minor-mode-map (make-sparse-keymap)
"Keymap for Tramp minor mode.")
@ -57,7 +62,14 @@
(and tramp-minor-mode (tramp-tramp-file-p default-directory))))
(add-hook 'find-file-hooks 'tramp-minor-mode t)
(add-hook 'tramp-util-unload-hook
'(lambda ()
(remove-hook 'find-file-hooks 'tramp-minor-mode)))
(add-hook 'dired-mode-hook 'tramp-minor-mode t)
(add-hook 'tramp-util-unload-hook
'(lambda ()
(remove-hook 'dired-mode-hook 'tramp-minor-mode)))
(defun tramp-remap-command (old-command new-command)
"Replaces bindings of OLD-COMMAND by NEW-COMMAND.

View file

@ -1,7 +1,7 @@
;;; tramp-vc.el --- Version control integration for TRAMP.el
;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Daniel Pittman <daniel@danann.net>
;; Keywords: comm, processes
@ -220,34 +220,37 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
;; Daniel Pittman <daniel@danann.net>
;;-(if (fboundp 'vc-call-backend)
;;- () ;; This is the new VC for which we don't have an appropriate advice yet
;;-)
(unless (fboundp 'process-file)
(if (fboundp 'vc-call-backend)
(if (fboundp 'vc-call-backend)
(defadvice vc-do-command
(around tramp-advice-vc-do-command
(buffer okstatus command file &rest flags)
activate)
"Invoke tramp-vc-do-command for tramp files."
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command-new buffer okstatus command
file ;(or file (buffer-file-name))
flags))
ad-do-it)))
(defadvice vc-do-command
(around tramp-advice-vc-do-command
(buffer okstatus command file &rest flags)
activate)
(buffer okstatus command file last &rest flags)
activate)
"Invoke tramp-vc-do-command for tramp files."
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command-new buffer okstatus command
file ;(or file (buffer-file-name))
flags))
ad-do-it)))
(defadvice vc-do-command
(around tramp-advice-vc-do-command
(buffer okstatus command file last &rest flags)
activate)
"Invoke tramp-vc-do-command for tramp files."
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command buffer okstatus command
(or file (buffer-file-name)) last flags))
ad-do-it)))))
;;-)
(let ((file (symbol-value 'file))) ;pacify byte-compiler
(if (or (and (stringp file) (tramp-tramp-file-p file))
(and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
(setq ad-return-value
(apply 'tramp-vc-do-command buffer okstatus command
(or file (buffer-file-name)) last flags))
ad-do-it))))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-do-command))))
;; 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."
(or file (buffer-file-name)) args))
ad-do-it)))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-simple-command)))
;; `vc-workfile-unchanged-p'
;; 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."
(tramp-vc-workfile-unchanged-p filename want-differences-if-changed))
ad-do-it))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-workfile-unchanged-p)))
;; Redefine a function from vc.el -- allow tramp files.
;; `save-match-data' seems not to be required -- it isn't in
@ -445,6 +454,9 @@ filename we are thinking about..."
(tramp-handle-vc-user-login-name uid)))) ; get the owner name
ad-do-it))) ; else call the original
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-user-login-name)))
;; Determine the name of the user owning a file.
(defun tramp-file-owner (filename)
@ -486,6 +498,9 @@ filename we are thinking about..."
(tramp-file-owner filename)))) ; get the owner name
ad-do-it))) ; else call the original
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'vc-file-owner)))
;; We need to make the version control software backend version
;; 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."
(tramp-tramp-file-p (buffer-file-name)))
(make-local-variable 'vc-rcs-release)
(setq vc-rcs-release nil)))
(add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t)
(add-hook 'tramp-unload-hook
'(lambda ()
(remove-hook 'find-file-hooks 'tramp-vc-setup-for-remote)))
;; No need to load this again if anyone asks.
(provide 'tramp-vc)

View file

@ -2,7 +2,7 @@
;;; tramp.el --- Transparent Remote Access, Multiple Protocol
;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
;; Michael Albinus <michael.albinus@gmx.de>
@ -67,8 +67,15 @@
;; The Tramp version number and bug report address, as prepared by configure.
(require 'trampver)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'trampver)
(unload-feature 'trampver 'force))))
(if (featurep 'xemacs)
(require 'timer-funcs)
(require 'timer))
(require 'timer)
(require 'format-spec) ;from Gnus 5.8, also in tar ball
;; As long as password.el is not part of (X)Emacs, it shouldn't
;; be mandatory
@ -87,6 +94,10 @@
(autoload 'tramp-uuencode-region "tramp-uu"
"Implementation of `uuencode' in Lisp.")
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-uu)
(unload-feature 'tramp-uu 'force))))
(unless (fboundp 'uudecode-decode-region)
(autoload 'uudecode-decode-region "uudecode"))
@ -110,10 +121,20 @@ Nil means to use a separate filename syntax for Tramp.")
;; tramp-ftp supports Ange-FTP only. Not suited for XEmacs therefore.
(unless (featurep 'xemacs)
(eval-after-load "tramp"
'(require 'tramp-ftp)))
'(progn
(require 'tramp-ftp)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-ftp)
(unload-feature 'tramp-ftp 'force)))))))
(when (and tramp-unified-filenames (featurep 'xemacs))
(eval-after-load "tramp"
'(require 'tramp-efs)))
'(progn
(require 'tramp-efs)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-efs)
(unload-feature 'tramp-efs 'force)))))))
;; tramp-smb uses "smbclient" from Samba.
;; 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.")
;; UNC file names like "//host/share/localname".
(unless (memq system-type '(cygwin windows-nt))
(eval-after-load "tramp"
'(require 'tramp-smb)))
'(progn
(require 'tramp-smb)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-smb)
(unload-feature 'tramp-smb 'force)))))))
(eval-when-compile
(require 'cl)
@ -1445,7 +1471,7 @@ the visited file modtime.")
((fboundp 'md5-encode)
(lambda (x) (base64-encode-string
(funcall (symbol-function 'md5-encode) x))))
(t (error "Coulnd't find an `md5' function")))
(t (error "Couldn't find an `md5' function")))
"Function to call for running the MD5 algorithm.")
(defvar tramp-end-of-output
@ -2012,6 +2038,7 @@ The intent is to protect against `obsolete variable' warnings."
(let ((,variable ,value))
,@body)))
(put 'tramp-let-maybe 'lisp-indent-function 2)
(put 'tramp-let-maybe 'edebug-form-spec t)
;;; Config Manipulation Functions:
@ -2370,8 +2397,8 @@ target of the symlink differ."
;; 8. File modes, as a string of ten letters or dashes as in ls -l.
res-filemodes
;; 9. t iff file's gid would change if file were deleted and
;; recreated.
nil ;hm?
;; recreated. Will be set in `tramp-convert-file-attributes'
t
;; 10. inode number.
res-inode
;; 11. Device number. Will be replaced by a virtual device number.
@ -2627,9 +2654,12 @@ of."
(defun tramp-handle-file-ownership-preserved-p (filename)
"Like `file-ownership-preserved-p' for tramp files."
(with-parsed-tramp-file-name filename nil
(or (not (file-exists-p filename))
;; Existing files must be writable.
(zerop (tramp-run-test "-O" filename)))))
(let ((attributes (file-attributes filename)))
;; Return t if the file doesn't exist, since it's true that no
;; information would be lost by an (attempted) delete and create.
(or (null attributes)
(= (nth 2 attributes)
(tramp-get-remote-uid multi-method method user host))))))
;; Other file name ops.
@ -3487,6 +3517,17 @@ the result will be a local, non-Tramp, filename."
(when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
(let ((uname (match-string 1 localname))
(fname (match-string 2 localname)))
;; We cannot simply apply "~/", because under sudo "~/" is
;; expanded to the local user home directory but to the
;; root home directory. On the other hand, using always
;; the default user name for tilde expansion is not
;; appropriate either, because ssh and companions might
;; use a user name from the config file.
(when (and (string-equal uname "~")
(string-match
"\\`su\\(do\\)?\\'"
(tramp-find-method multi-method method user host)))
(setq uname (concat uname (or user "root"))))
;; CCC fanatic error checking?
(set-buffer (tramp-get-buffer multi-method method user host))
(erase-buffer)
@ -3499,17 +3540,24 @@ the result will be a local, non-Tramp, filename."
(setq uname (buffer-substring (point) (tramp-line-end-position)))
(setq localname (concat uname fname))
(erase-buffer)))
;; There might be a double slash, for example when "~/"
;; expands to "/". Remove this.
(while (string-match "//" localname)
(setq localname (replace-match "/" t t localname)))
;; No tilde characters in file name, do normal
;; expand-file-name (this does "/./" and "/../"). We bind
;; directory-sep-char here for XEmacs on Windows, which
;; would otherwise use backslash.
;; directory-sep-char here for XEmacs on Windows, which would
;; otherwise use backslash. `default-directory' is bound to
;; "/", because on Windows there would be problems with UNC
;; shares or Cygwin mounts.
(tramp-let-maybe directory-sep-char ?/
(tramp-make-tramp-file-name
multi-method (or method (tramp-find-default-method user host))
user host
(tramp-drop-volume-letter
(tramp-run-real-handler 'expand-file-name
(list localname)))))))))
(let ((default-directory "/"))
(tramp-make-tramp-file-name
multi-method (or method (tramp-find-default-method user host))
user host
(tramp-drop-volume-letter
(tramp-run-real-handler 'expand-file-name
(list localname))))))))))
;; old version follows. it uses ".." to cross file handler
;; boundaries.
@ -4294,6 +4342,17 @@ Falls back to normal file name handler if no tramp file name handler exists."
(cons tramp-completion-file-name-regexp
'tramp-completion-file-name-handler))
;;;###autoload
(defun tramp-unload-file-name-handler-alist ()
(setq file-name-handler-alist
(delete (rassoc 'tramp-file-name-handler
file-name-handler-alist)
(delete (rassoc 'tramp-completion-file-name-handler
file-name-handler-alist)
file-name-handler-alist))))
(add-hook 'tramp-unload-hook 'tramp-unload-file-name-handler-alist)
(defun tramp-repair-jka-compr ()
"If jka-compr is already loaded, move it to the front of
`file-name-handler-alist'. On Emacs 22 or so this will not be
@ -4353,22 +4412,16 @@ necessary anymore."
(read (current-buffer))))))
(list (expand-file-name name))))))
;; Check for complete.el and override PC-expand-many-files if appropriate.
(eval-and-compile
(defun tramp-save-PC-expand-many-files (name))); avoid compiler warning
(defun tramp-setup-complete ()
(fset 'tramp-save-PC-expand-many-files
(symbol-function 'PC-expand-many-files))
(defun PC-expand-many-files (name)
(if (tramp-tramp-file-p name)
(funcall (symbol-function 'expand-many-files) name)
(tramp-save-PC-expand-many-files name))))
;; Why isn't eval-after-load sufficient?
(if (fboundp 'PC-expand-many-files)
(tramp-setup-complete)
(eval-after-load "complete" '(tramp-setup-complete)))
(eval-after-load "complete"
'(progn
(defadvice PC-expand-many-files
(around tramp-advice-PC-expand-many-files (name) activate)
"Invoke `tramp-handle-expand-many-files' for tramp files."
(if (tramp-tramp-file-p name)
(setq ad-return-value (tramp-handle-expand-many-files name))
ad-do-it))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'PC-expand-many-files)))))
;;; File name handler functions for completion mode
@ -4940,6 +4993,9 @@ Function may have 0-3 parameters."
auto-save-default)
(auto-save-mode 1)))
(add-hook 'find-file-hooks 'tramp-set-auto-save t)
(add-hook 'tramp-unload-hook
'(lambda ()
(remove-hook 'find-file-hooks 'tramp-set-auto-save)))
(defun tramp-run-test (switch filename)
"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.
(or user (user-login-name)) host method)
(let ((process-environment (copy-sequence process-environment)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional here, then we would use
;; `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.
(setq login-args (cons "-p" (cons (match-string 2 host) login-args)))
(setq real-host (match-string 1 host)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional, we would use
;; `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
(or user "<root>") method)
(let ((process-environment (copy-sequence process-environment)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional, we use `undecided-dos' in
;; some cases. With the conditional, we use nil in these
@ -5723,6 +5782,7 @@ log in as u2 to h2."
(tramp-message 7 "Opening `%s' connection..." multi-method)
(let ((process-environment (copy-sequence process-environment)))
(setenv "TERM" tramp-terminal-type)
(setenv "PS1" "$ ")
(let* ((default-directory (tramp-temporary-file-directory))
;; If we omit the conditional, we use `undecided-dos' in
;; 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."
"ln" tramp-remote-path nil)))
(when ln
(tramp-set-connection-property "ln" ln multi-method method user host)))
;; Set uid and gid.
(erase-buffer)
(tramp-send-command multi-method method user host "id -u; id -g")
(tramp-wait-for-output)
(goto-char (point-min))
(tramp-set-connection-property
"uid" (read (current-buffer)) multi-method method user host)
(tramp-set-connection-property
"gid" (read (current-buffer)) multi-method method user host)
;; Find the right encoding/decoding commands to use.
(erase-buffer)
(unless (tramp-method-out-of-band-p multi-method method user host)
(tramp-find-inline-encoding multi-method method user host))
;; If encoding/decoding command are given, test to see if they work.
@ -6700,6 +6769,10 @@ Return ATTR."
(unless (stringp (nth 8 attr))
;; Convert file mode bits to string.
(setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr))))
;; Set file's gid change bit.
(setcar (nthcdr 9 attr)
(not (= (nth 3 attr)
(tramp-get-remote-gid multi-method method user host))))
;; Set virtual device number.
(setcar (nthcdr 11 attr)
(tramp-get-device multi-method method user host))
@ -6957,6 +7030,12 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
(defun tramp-get-remote-ln (multi-method method user host)
(tramp-get-connection-property "ln" nil multi-method method user host))
(defun tramp-get-remote-uid (multi-method method user host)
(tramp-get-connection-property "uid" nil multi-method method user host))
(defun tramp-get-remote-gid (multi-method method user host)
(tramp-get-connection-property "gid" nil multi-method method user host))
;; Get a property of a TRAMP connection.
(defun tramp-get-connection-property
(property default multi-method method user host)
@ -6967,7 +7046,7 @@ If the value is not set for the connection, return `default'"
(let (error)
(condition-case nil
(symbol-value (intern (concat "tramp-connection-property-" property)))
(error default)))))
(error default)))))
;; Set a property of a TRAMP connection.
(defun tramp-set-connection-property
@ -7045,7 +7124,9 @@ as default."
"Invoke `tramp-handle-make-auto-save-file-name' for tramp files."
(if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))
(setq ad-return-value (tramp-handle-make-auto-save-file-name))
ad-do-it)))
ad-do-it))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'make-auto-save-file-name))))
;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have
;; permission 0666 minus umask. This is a security threat.
@ -7069,7 +7150,10 @@ as default."
(and (featurep 'xemacs)
(= emacs-major-version 21)
(> emacs-minor-version 4)))
(add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))
(add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes)
(add-hook 'tramp-unload-hook
'(lambda ()
(remove-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))))
(defun tramp-subst-strs-in-string (alist string)
"Replace all occurrences of the string FROM with TO in STRING.
@ -7296,7 +7380,9 @@ Only works for Bourne-like shells."
(setq ad-return-value (list name))))
;; If it is not a Tramp file, just run the original function.
(let ((res ad-do-it))
(setq ad-return-value (or res (list name))))))))
(setq ad-return-value (or res (list name)))))))
(add-hook 'tramp-unload-hook
'(lambda () (ad-unadvise 'file-expand-wildcards))))
;; Tramp version is useful in a number of situations.
@ -7521,6 +7607,25 @@ Therefore, the contents of files might be included in the debug buffer(s).")
(defalias 'tramp-submit-bug 'tramp-bug)
;; Checklist for `tramp-unload-hook'
;; - Unload all `tramp-*' packages
;; - Reset `file-name-handler-alist'
;; - Cleanup hooks where Tramp functions are in
;; - Cleanup advised functions
;; - Cleanup autoloads
;;;###autoload
(defun tramp-unload-tramp ()
(interactive)
;; When Tramp is not loaded yet, its autoloads are still active.
(tramp-unload-file-name-handler-alist)
;; ange-ftp settings must be enabled.
(when (functionp 'tramp-ftp-enable-ange-ftp)
(funcall (symbol-function 'tramp-ftp-enable-ange-ftp)))
;; `tramp-util' unloads also `tramp'.
(condition-case nil ;; maybe its not loaded yet.
(unload-feature (if (featurep 'tramp-util) 'tramp-util 'tramp) 'force)
(error nil)))
(provide 'tramp)
;; 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).")
;; This must come after (provide 'tramp) because tramp-vc.el
;; requires tramp.
(eval-after-load "vc"
'(require 'tramp-vc))
'(progn
(require 'tramp-vc)
(add-hook 'tramp-unload-hook
'(lambda ()
(when (featurep 'tramp-vc)
(unload-feature 'tramp-vc 'force))))))
;;; TODO:

View file

@ -30,7 +30,7 @@
;; are auto-frobbed from configure.ac, so you should edit that file and run
;; "autoconf && ./configure" to change them.
(defconst tramp-version "2.0.51"
(defconst tramp-version "2.0.52"
"This version of Tramp.")
(defconst tramp-bug-report-address "tramp-devel@gnu.org"

View file

@ -803,11 +803,12 @@ Show the heading too, if it is currently invisible."
(outline-flag-subtree t))
(defun hide-leaves ()
"Hide all body after this heading at deeper levels."
"Hide the body after this heading and at deeper levels."
(interactive)
(save-excursion
(outline-back-to-heading)
(outline-end-of-heading)
;; Turned off to fix bug reported by Otto Maddox on 22 Nov 2005.
;; (outline-end-of-heading)
(hide-region-body (point) (progn (outline-end-of-subtree) (point)))))
(defun show-subtree ()

View file

@ -89,7 +89,7 @@
(set what ww)
first))
(defvar doc-mode-map
(defvar doctor-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\n" 'doctor-read-print)
(define-key map "\r" 'doctor-ret-or-read)

View file

@ -526,6 +526,8 @@ You can also use the keyboard accelerators indicated like this: [K]ey."
'cpp-edit-toggle-unknown)
(insert (format "\n\n\n%39s: %14s %14s %7s\n\n" "Expression"
"[T]rue Face" "[F]alse Face" "[W]rite"))
(setq symbols (reverse symbols))
(while symbols
(let* ((symbol (car symbols))
(entry (assoc symbol cpp-edit-list))

View file

@ -1743,7 +1743,7 @@ lines count as headers.
(set (make-local-variable 'eldoc-documentation-function)
#'python-eldoc-function)
(add-hook 'eldoc-mode-hook
'(lambda () (run-python 0 t)) nil t) ; need it running
'(lambda () (run-python nil t)) nil t) ; need it running
(if (featurep 'hippie-exp)
(set (make-local-variable 'hippie-expand-try-functions-list)
(cons 'python-try-complete hippie-expand-try-functions-list)))

View file

@ -1,6 +1,6 @@
;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*-
;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Jonathan Yavner <jyavner@member.fsf.org>
;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org>
@ -148,8 +148,7 @@ Each function is called with ARG=1."
(newmap (make-sparse-keymap)))
(set-keymap-parent newmap minibuffer-local-map)
(while keys
(define-key newmap (car keys) (cadr keys))
(setq keys (cddr keys)))
(define-key newmap (pop keys) (pop keys)))
newmap)
"Local keymap for SES minibuffer cell-editing.")
@ -1865,20 +1864,20 @@ cell formula was unsafe and user declined confirmation."
(defun ses-read-cell (row col newval)
"Self-insert for initial character of cell function."
(interactive
(let ((initial (this-command-keys))
(rowcol (progn (ses-check-curcell) (ses-sym-rowcol ses--curcell))))
(let* ((initial (this-command-keys))
(rowcol (progn (ses-check-curcell) (ses-sym-rowcol ses--curcell)))
(curval (ses-cell-formula (car rowcol) (cdr rowcol))))
(barf-if-buffer-read-only)
(if (string= initial "\"")
(setq initial "\"\"") ;Enter a string
(if (string= initial "(")
(setq initial "()"))) ;Enter a formula list
(list (car rowcol)
(cdr rowcol)
(read-from-minibuffer (format "Cell %s: " ses--curcell)
(cons initial 2)
ses-mode-edit-map
t ;Convert to Lisp object
'ses-read-cell-history))))
(read-from-minibuffer
(format "Cell %s: " ses--curcell)
(cons (if (equal initial "\"") "\"\""
(if (equal initial "(") "()" initial)) 2)
ses-mode-edit-map
t ;Convert to Lisp object
'ses-read-cell-history
(prin1-to-string curval)))))
(when (ses-edit-cell row col newval)
(ses-command-hook) ;Update cell widths before movement
(dolist (x ses-after-entry-functions)

View file

@ -1,7 +1,7 @@
;;; simple.el --- basic editing commands for Emacs
;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@ -3185,8 +3185,9 @@ for mark off the local mark ring \(this does not affect the global
mark ring\). Use \\[pop-global-mark] to jump to a mark off the global
mark ring \(see `pop-global-mark'\).
Repeating the \\[set-mark-command] command without the prefix jumps to
the next position off the local (or global) mark ring.
If `set-mark-command-repeat-pop' is non-nil, repeating
the \\[set-mark-command] command with no prefix pops the next position
off the local (or global) mark ring and jumps there.
With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \
\\[universal-argument] \\[set-mark-command], unconditionally
@ -3734,7 +3735,13 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(or arg (setq arg 1))
(if (/= arg 1)
(line-move (1- arg) t))
(beginning-of-line 1)
;; Move to beginning-of-line, ignoring fields and invisibles.
(skip-chars-backward "^\n")
(while (and (not (bobp)) (line-move-invisible-p (1- (point))))
(goto-char (previous-char-property-change (1- (point))))
(skip-chars-backward "^\n"))
(let ((orig (point)))
(vertical-motion 0)
(if (/= orig (point))
@ -5028,8 +5035,8 @@ select the completion near point.\n\n")))))
(goto-char (point-min))
(search-forward "\n\n")
(forward-line 1))))
;; Support keyboard commands to turn on various modifiers.
;;; Support keyboard commands to turn on various modifiers.
;; These functions -- which are not commands -- each add one modifier
;; to the following event.
@ -5094,7 +5101,7 @@ PREFIX is the string that represents this modifier in an event type symbol."
(define-key function-key-map [?\C-x ?@ ?a] 'event-apply-alt-modifier)
(define-key function-key-map [?\C-x ?@ ?S] 'event-apply-shift-modifier)
(define-key function-key-map [?\C-x ?@ ?c] 'event-apply-control-modifier)
;;;; Keypad support.
;;; 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."
(error "Cannot clone a file-visiting buffer"))
(if (get major-mode 'no-clone)
(error "Cannot clone a buffer in %s mode" mode-name))
(list (if current-prefix-arg (read-string "Name: "))
(list (if current-prefix-arg
(read-buffer "Name of new cloned buffer: " (current-buffer)))
t)))
(if buffer-file-name
(error "Cannot clone a file-visiting buffer"))
@ -5236,7 +5244,12 @@ after it has been set up properly in other respects."
;; Run any hooks (typically set up by the major mode
;; for cloning to work properly).
(run-hooks 'clone-buffer-hook))
(if display-flag (pop-to-buffer new))
(if display-flag
;; Presumably the current buffer is shown in the selected frame, so
;; we want to display the clone elsewhere.
(let ((same-window-regexps nil)
(same-window-buffer-names))
(pop-to-buffer new)))
new))
@ -5259,7 +5272,7 @@ front of the list of recently selected ones."
(if (get major-mode 'no-clone-indirect)
(error "Cannot indirectly clone a buffer in %s mode" mode-name))
(list (if current-prefix-arg
(read-string "BName of indirect buffer: "))
(read-buffer "Name of indirect buffer: " (current-buffer)))
t)))
(if (get major-mode 'no-clone-indirect)
(error "Cannot indirectly clone a buffer in %s mode" mode-name))
@ -5278,7 +5291,13 @@ front of the list of recently selected ones."
Select the new buffer in another window.
Optional second arg NORECORD non-nil means do not put this buffer at
the front of the list of recently selected ones."
(interactive "bClone buffer in other window: ")
(interactive
(progn
(if (get major-mode 'no-clone-indirect)
(error "Cannot indirectly clone a buffer in %s mode" mode-name))
(list (if current-prefix-arg
(read-buffer "Name of indirect buffer: " (current-buffer)))
t)))
(let ((pop-up-windows t))
(set-buffer buffer)
(clone-indirect-buffer nil t norecord)))

View file

@ -41,7 +41,9 @@
:group 'internal)
(defcustom inhibit-splash-screen nil
"*Non-nil inhibits the startup screen.
"Non-nil inhibits the startup screen.
It also inhibits display of the initial message in the *scratch* buffer.
This is for use in your personal init file, once you are familiar
with the contents of the startup screen."
:type 'boolean
@ -1087,7 +1089,9 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
")
"Initial message displayed in *scratch* buffer at startup.
If this is nil, no message will be displayed."
If this is nil, no message will be displayed.
If `inhibit-splash-screen' is non-nil, then no message is displayed,
regardless of the value of this variable."
:type '(choice (text :tag "Message")
(const :tag "none" nil))
:group 'initialization)
@ -1631,7 +1635,7 @@ normal otherwise."
(longopts
(append '(("--funcall") ("--load") ("--insert") ("--kill")
("--directory") ("--eval") ("--execute") ("--no-splash")
("--find-file") ("--visit") ("--file"))
("--find-file") ("--visit") ("--file") ("--no-desktop"))
(mapcar (lambda (elt)
(list (concat "-" (car elt))))
command-switch-alist)))
@ -1731,6 +1735,13 @@ normal otherwise."
((equal argi "-kill")
(kill-emacs t))
;; This is for when they use --no-desktop with -q, or
;; don't load Desktop in their .emacs. If desktop.el
;; _is_ loaded, it will handle this switch, and we
;; won't see it by the time we get here.
((equal argi "-no-desktop")
(message "\"--no-desktop\" ignored because the Desktop package is not loaded"))
((string-match "^\\+[0-9]+\\'" argi)
(setq line (string-to-number argi)))

View file

@ -1,7 +1,7 @@
;;; w32-win.el --- parse switches controlling interface with W32 window system
;; Copyright (C) 1993, 1994, 2002, 2003, 2004,
;; 2005 Free Software Foundation, Inc.
;; 2005, 2006 Free Software Foundation, Inc.
;; Author: Kevin Gallo
;; Keywords: terminals
@ -1232,7 +1232,7 @@ font dialog to get the matching FONTS. Otherwise use a pop-up menu
(png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll")
(jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
(tiff "libtiff3.dll" "libtiff.dll")
(gif "libungif.dll")))
(gif "giflib4.dll" "libungif4.dll" "libungif.dll")))
;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166
;;; w32-win.el ends here

View file

@ -1049,6 +1049,7 @@ At most `bibtex-entry-kill-ring-max' items are kept here.")
"Completion table for BibTeX string keys.
Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.")
(make-variable-buffer-local 'bibtex-strings)
(put 'bibtex-strings 'risky-local-variable t)
(defvar bibtex-reference-keys
(lazy-completion-table bibtex-reference-keys
@ -1056,6 +1057,7 @@ Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.")
"Completion table for BibTeX reference keys.
The CDRs of the elements are t for header keys and nil for crossref keys.")
(make-variable-buffer-local 'bibtex-reference-keys)
(put 'bibtex-reference-keys 'risky-local-variable t)
(defvar bibtex-buffer-last-parsed-tick nil
"Value of `buffer-modified-tick' last time buffer was parsed for keys.")

View file

@ -2080,7 +2080,8 @@ The word checked is the word at the mouse position."
corrects)
'()))
(affix (car (cdr (cdr (cdr poss)))))
(base-menu (let ((save (if (consp affix)
show-affix-info
(base-menu (let ((save (if (and (consp affix) show-affix-info)
(list
(list (concat "Save affix: " (car affix))
'save)
@ -2121,7 +2122,8 @@ The word checked is the word at the mouse position."
corrects)
'()))
(affix (car (cdr (cdr (cdr poss)))))
(menu (let ((save (if (consp affix)
show-affix-info
(menu (let ((save (if (and (consp affix) show-affix-info)
(vector
(concat "Save affix: " (car affix))
(list 'flyspell-do-correct

View file

@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
;; Version: 4.03
;; Version: 4.04
;;
;; This file is part of GNU Emacs.
;;
@ -81,6 +81,10 @@
;;
;; Changes since version 4.00:
;; ---------------------------
;; Version 4.04
;; - Cleanup tags display in agenda.
;; - Bug fixes.
;;
;; Version 4.03
;; - Table alignment fixed for use with wide characters.
;; - `C-c -' leaves cursor in current table line.
@ -111,7 +115,7 @@
;;; Customization variables
(defvar org-version "4.03"
(defvar org-version "4.04"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@ -608,7 +612,8 @@ the prefix, you could use:
(setq org-agenda-prefix-format \" %-11:c% s\")
See also the variable `org-agenda-remove-times-when-in-prefix'."
See also the variables `org-agenda-remove-times-when-in-prefix' and
`org-agenda-remove-tags-when-in-prefix'."
:type 'string
:group 'org-agenda)
@ -691,6 +696,16 @@ agenda entries."
:group 'org-agenda
:type 'boolean)
(defcustom org-agenda-remove-tags-when-in-prefix nil
"Non-nil means, the tags from copy of headline in agenda.
When this is the symbol `prefix', only remove tags when
`org-agenda-prefix-format' contains a `%T' specifier."
:group 'org-agenda
:type '(choice
(const :tag "Always" t)
(const :tag "Never" nil)
(const :tag "When prefix format contains %T" prefix)))
(defgroup org-structure nil
"Options concerning structure editing in Org-mode."
:tag "Org Structure"
@ -1875,42 +1890,43 @@ When this is non-nil, the headline after the keyword is set to the
;; Tell the compiler about dynamically scoped variables,
;; and variables from other packages
(defvar zmacs-regions)
(defvar original-date)
(defvar org-transient-mark-mode)
(defvar org-old-auto-fill-inhibit-regexp)
(defvar orgtbl-mode-menu)
(defvar org-html-entities)
(defvar org-goto-start-pos)
(defvar org-cursor-color)
(defvar org-time-was-given)
(defvar org-ts-what)
(defvar mark-active)
(defvar timecnt)
(defvar levels-open)
(defvar title)
(defvar author)
(defvar email)
(defvar text)
(defvar entry)
(defvar date)
(defvar language)
(defvar options)
(defvar ans1)
(defvar ans2)
(defvar starting-day)
(defvar include-all-loc)
(defvar vm-message-pointer)
(defvar vm-folder-directory)
(defvar wl-summary-buffer-elmo-folder)
(defvar wl-summary-buffer-folder-name)
(defvar gnus-group-name)
(defvar gnus-article-current)
(defvar w3m-current-url)
(defvar org-selected-point)
(defvar calendar-mode-map)
(defvar remember-save-after-remembering)
(defvar remember-data-file)
(eval-when-compile
(defvar zmacs-regions)
(defvar original-date)
(defvar org-transient-mark-mode)
(defvar org-old-auto-fill-inhibit-regexp)
(defvar orgtbl-mode-menu)
(defvar org-html-entities)
(defvar org-goto-start-pos)
(defvar org-cursor-color)
(defvar org-time-was-given)
(defvar org-ts-what)
(defvar mark-active)
(defvar timecnt)
(defvar levels-open)
(defvar title)
(defvar author)
(defvar email)
(defvar text)
(defvar entry)
(defvar date)
(defvar language)
(defvar options)
(defvar ans1)
(defvar ans2)
(defvar starting-day)
(defvar include-all-loc)
(defvar vm-message-pointer)
(defvar vm-folder-directory)
(defvar wl-summary-buffer-elmo-folder)
(defvar wl-summary-buffer-folder-name)
(defvar gnus-group-name)
(defvar gnus-article-current)
(defvar w3m-current-url)
(defvar org-selected-point)
(defvar calendar-mode-map)
(defvar remember-save-after-remembering)
(defvar remember-data-file))
;;; Define the mode
@ -3100,7 +3116,7 @@ heading be marked DONE, and the current time will be added."
(if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location)
(progn
(setq file (format (match-string 1 org-archive-location)
(file-name-nondirectory buffer-file-name))
(file-name-nondirectory (buffer-file-name)))
heading (match-string 2 org-archive-location)))
(error "Invalid `org-archive-location'"))
(if (> (length file) 0)
@ -4031,8 +4047,9 @@ in the timestamp determines what will be changed."
(nthcdr 6 time0))))
(if (eq what 'calendar)
(let ((cal-date
(save-match-data
(with-current-buffer "*Calendar*"
(save-excursion
(save-match-data
(set-buffer "*Calendar*")
(calendar-cursor-to-date)))))
(setcar (nthcdr 4 time0) (nth 0 cal-date)) ; month
(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
next use of \\[org-agenda]) restricted to the current file."
(interactive "P")
(catch 'exit
(let ((restrict-ok (and buffer-file-name (eq major-mode 'org-mode)))
(let ((restrict-ok (and (buffer-file-name) (eq major-mode 'org-mode)))
(custom org-agenda-custom-commands)
c entry key type string)
(put 'org-agenda-files 'org-restrict nil)
@ -4320,7 +4337,7 @@ C Configure your own agenda commands")
(message "")
(when (equal c ?1)
(if restrict-ok
(put 'org-agenda-files 'org-restrict (list buffer-file-name))
(put 'org-agenda-files 'org-restrict (list (buffer-file-name)))
(error "Cannot restrict agenda to current buffer"))
(message "Press key for agenda command%s"
(if restrict-ok " (restricted to current file)" ""))
@ -4444,8 +4461,8 @@ dates."
(dotodo include-all)
(doclosed org-agenda-show-log)
(org-agenda-keep-modes keep-modes)
(entry buffer-file-name)
(org-agenda-files (list buffer-file-name))
(entry (buffer-file-name))
(org-agenda-files (list (buffer-file-name)))
(date (calendar-current-date))
(win (selected-window))
(pos1 (point))
@ -4672,9 +4689,10 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
(erase-buffer)
(org-agenda-mode) (setq buffer-read-only nil)
(set (make-local-variable 'org-agenda-type) 'todo)
(set (make-local-variable 'last-arg) arg)
(set (make-local-variable 'org-todo-keywords) kwds)
(set (make-local-variable 'org-agenda-redo-command)
`(org-todo-list (or current-prefix-arg ',arg) t))
'(org-todo-list (or current-prefix-arg last-arg) t))
(setq files (org-agenda-files)
rtnall nil)
(while (setq file (pop files))
@ -4971,7 +4989,7 @@ date. Itt also removes lines that contain only whitespace."
"Make the position visible."
(if (and org-disable-agenda-to-diary ;; called from org-agenda
(stringp string)
buffer-file-name)
(buffer-file-name))
(setq string (org-modify-diary-entry-string string))))))
(defun org-modify-diary-entry-string (string)
@ -4983,7 +5001,7 @@ date. Itt also removes lines that contain only whitespace."
'help-echo
(format
"mouse-2 or RET jump to diary file %s"
(abbreviate-file-name buffer-file-name))
(abbreviate-file-name (buffer-file-name)))
'org-agenda-diary-link t
'org-marker (org-agenda-new-marker (point-at-bol)))
string)
@ -5005,7 +5023,7 @@ If the current buffer visits an agenda file, find the next one in the list.
If the current buffer does not, find the first agenda file."
(interactive)
(let ((files (append org-agenda-files (list (car org-agenda-files))))
(tcf (if buffer-file-name (file-truename buffer-file-name)))
(tcf (if (buffer-file-name) (file-truename (buffer-file-name))))
file)
(unless files (error "No agenda files"))
(catch 'exit
@ -5016,28 +5034,30 @@ If the current buffer does not, find the first agenda file."
(throw 'exit t))))
(find-file (car org-agenda-files)))))
(defun org-agenda-file-to-end ()
(defun org-agenda-file-to-end (&optional file)
"Move/add the current file to the end of the agenda fiole list.
If the file is not present in the list, append it to the list. If it is
present, move it there."
I the file is not present in the list, it is appended ot the list. If it is
present, it is moved there."
(interactive)
(org-agenda-file-to-front 'to-end))
(org-agenda-file-to-front 'to-end file))
(defun org-agenda-file-to-front (&optional to-end)
(defun org-agenda-file-to-front (&optional to-end file)
"Move/add the current file to the top of the agenda file list.
If the file is not present in the list, add it to the front. If it is
present, it move it there. With optional argument TO-END, add/move to the
If the file is not present in the list, it is added to the front. If it is
present, it is moved there. With optional argument TO-END, add/move to the
end of the list."
(interactive "P")
(let* ((file-alist (mapcar (lambda (x)
(cons (file-truename x) x))
org-agenda-files))
(ctf (file-truename buffer-file-name))
(had (assoc ctf file-alist))
(x (or had (cons ctf (abbreviate-file-name buffer-file-name)))))
(setq file-alist (if to-end
(append (delq x file-alist) (list x))
(cons x (delq x file-alist))))
(let ((file-alist (mapcar (lambda (x)
(cons (file-truename x) x))
org-agenda-files))
(ctf (file-truename (buffer-file-name)))
x had)
(setq x (assoc ctf file-alist) had x)
(if (not x) (setq x (cons ctf (abbreviate-file-name (buffer-file-name)))))
(if to-end
(setq file-alist (append (delq x file-alist) (list x)))
(setq file-alist (cons x (delq x file-alist))))
(setq org-agenda-files (mapcar 'cdr file-alist))
(let ((org-mode-hook nil) (default-major-mode 'fundamental-mode))
(customize-save-variable 'org-agenda-files org-agenda-files))
@ -5050,7 +5070,7 @@ end of the list."
These are the files which are being checked for agenda entries.
Optional argument FILE means, use this file instead of the current."
(interactive)
(let* ((file (or file buffer-file-name))
(let* ((file (or file (buffer-file-name)))
(true-file (file-truename file))
(afile (abbreviate-file-name file))
(files (delq nil (mapcar
@ -5174,9 +5194,9 @@ function from a program - use `org-agenda-get-day-entries' instead."
(cond
((null org-category)
(setq org-category
(if buffer-file-name
(if (buffer-file-name)
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
(file-name-nondirectory (buffer-file-name)))
"???")))
((symbolp org-category) (symbol-name org-category))
(t org-category))
@ -5265,6 +5285,27 @@ the documentation of `org-diary'."
(throw 'exit t)))
nil)))
(defun org-get-tags-at (&optional pos)
"Get a list of all headline targs applicable at POS.
POS defaults to point. If tags are inherited, the list contains
the targets in the same sequence as the headlines appear, i.e.
the tags of the current headline come last."
(interactive)
(let (tags)
(save-excursion
(goto-char (or pos (point)))
(save-match-data
(org-back-to-heading t)
(condition-case nil
(while t
(if (looking-at "[^\r\n]+?:\\([a-zA-Z_:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
(setq tags (append (org-split-string (match-string 1) ":") tags)))
(or org-use-tag-inheritance (error ""))
(org-up-heading-all 1))
(error nil))))
(message "%s" tags)
tags))
(defun org-agenda-get-todos ()
"Return the TODO information for agenda display."
(let* ((props (list 'face nil
@ -5273,7 +5314,7 @@ the documentation of `org-diary'."
'keymap org-agenda-keymap
'help-echo
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(abbreviate-file-name (buffer-file-name)))))
(regexp (concat "[\n\r]\\*+ *\\("
(if org-select-this-todo-keyword
(concat "\\<\\(" org-select-this-todo-keyword
@ -5315,7 +5356,7 @@ the documentation of `org-diary'."
'keymap org-agenda-keymap
'help-echo
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(abbreviate-file-name (buffer-file-name)))))
(regexp (regexp-quote
(substring
(format-time-string
@ -5392,7 +5433,7 @@ the documentation of `org-diary'."
'keymap org-agenda-keymap
'help-echo
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(abbreviate-file-name (buffer-file-name)))))
(regexp (concat
"\\<" org-closed-string " *\\["
(regexp-quote
@ -5448,7 +5489,7 @@ the documentation of `org-diary'."
'keymap org-agenda-keymap
'help-echo
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(abbreviate-file-name (buffer-file-name)))))
(regexp org-deadline-time-regexp)
(todayp (equal date (calendar-current-date))) ; DATE bound by calendar
(d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
@ -5510,7 +5551,7 @@ the documentation of `org-diary'."
'keymap org-agenda-keymap
'help-echo
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(abbreviate-file-name (buffer-file-name)))))
(regexp org-scheduled-time-regexp)
(todayp (equal date (calendar-current-date))) ; DATE bound by calendar
(d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
@ -5559,7 +5600,7 @@ the documentation of `org-diary'."
'keymap org-agenda-keymap
'help-echo
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(abbreviate-file-name (buffer-file-name)))))
(regexp org-tr-regexp)
(d0 (calendar-absolute-from-gregorian date))
marker hdmarker ee txt d1 d2 s1 s2 timestr category tags)
@ -5631,9 +5672,10 @@ After a match, the following groups carry important information:
(defvar org-prefix-has-time nil
"A flag, set by `org-compile-prefix-format'.
The flag is set if the currently compiled format contains a `%t'.")
(defvar org-prefix-has-tag nil
"A flag, set by `org-compile-prefix-format'.
The flag is set if the currently compiled format contains a `%T'.")
(defvar time) ;Needed for the eval of the prefix format.
(defvar tag) ;Presumably, same thing as above.
(defun org-format-agenda-item (extra txt &optional category tags dotime noprefix)
"Format TXT to be inserted into the agenda buffer.
In 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
(if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt)))
(let* ((category (or category
org-category
(if buffer-file-name
(if (buffer-file-name)
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
(file-name-nondirectory (buffer-file-name)))
"")))
(tag (or (nth (1- (length tags)) tags) ""))
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
(if s1 (setq s1 (org-get-time-of-day s1 'string)))
(if s2 (setq s2 (org-get-time-of-day s2 'string))))
(when (and (or (eq org-agenda-remove-tags-when-in-prefix t)
(and org-agenda-remove-tags-when-in-prefix
org-prefix-has-tag))
(string-match ":[a-zA-Z_:]+:[ \t]*$" txt))
(setq txt (replace-match "" t t txt)))
;; Create the final string
(if noprefix
(setq rtn txt)
@ -5738,7 +5786,7 @@ only the correctly processes TXT should be returned - this is used by
"Compile the prefix format into a Lisp form that can be evaluated.
The resulting form is returned and stored in the variable
`org-prefix-format-compiled'."
(setq org-prefix-has-time nil)
(setq org-prefix-has-time nil org-prefix-has-tag nil)
(let ((start 0) varform vars var (s format)e c f opt)
(while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cts]\\)"
s start)
@ -5749,6 +5797,7 @@ The resulting form is returned and stored in the variable
opt (match-beginning 1)
start (1+ (match-beginning 0)))
(if (equal var 'time) (setq org-prefix-has-time t))
(if (equal var 'tag) (setq org-prefix-has-tag t))
(setq f (concat "%" (match-string 2 s) "s"))
(if opt
(setq varform
@ -5783,7 +5832,7 @@ HH:MM."
(string-to-number (match-string 3 s))
0)))
(t1 (concat " "
(if (< t0 100) "0" "") (if (< t0 10) "0" "")
(if (< t0 100) "0" "") (if (< t0 10) "0" "")
(int-to-string t0))))
(if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0)))))
@ -5816,9 +5865,6 @@ HH:MM."
((< tb ta) +1)
(t nil))))
(defvar time-up) (defvar time-down)
(defvar priority-up) (defvar priority-down)
(defvar category-up) (defvar category-down) (defvar category-keep)
(defun org-entries-lessp (a b)
"Predicate for sorting agenda entries."
;; The following variables will be used when the form is evaluated.
@ -6260,7 +6306,7 @@ d are included in the output."
'keymap org-agenda-keymap
'help-echo
(format "mouse-2 or RET jump to org file %s"
(abbreviate-file-name buffer-file-name))))
(abbreviate-file-name (buffer-file-name)))))
lspos
tags tags-list tags-alist (llast 0) rtn level category i txt
todo marker)
@ -6551,7 +6597,10 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
(skip-chars-backward
(concat (if org-allow-space-in-links "^" "^ ")
org-non-link-chars))
(when (looking-at org-link-regexp)
(when (or (looking-at org-link-regexp)
(and (re-search-forward org-link-regexp (point-at-eol) t)
(<= (match-beginning 0) pos)
(>= (match-end 0) pos)))
(setq type (match-string 1)
path (match-string 2))
(throw 'match t)))
@ -6589,7 +6638,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
(cond
((string= type "tags")
(org-tags-view path in-emacs))
(org-tags-view in-emacs path))
((string= type "camel")
(org-link-search
path
@ -6862,7 +6911,7 @@ openen in emacs.
If the file does not exist, an error is thrown."
(setq in-emacs (or in-emacs line search))
(let* ((file (if (equal path "")
buffer-file-name
(buffer-file-name)
(convert-standard-filename (org-expand-file-name path))))
(dfile (downcase file))
ext cmd apps)
@ -6893,7 +6942,7 @@ If the file does not exist, an error is thrown."
(shell-command (concat cmd " &"))))
((or (stringp cmd)
(eq cmd 'emacs))
(unless (equal (file-truename file) (file-truename buffer-file-name))
(unless (equal (file-truename file) (file-truename (buffer-file-name)))
(funcall (cdr (assq 'file org-link-frame-setup)) file))
(if line (goto-line line)
(if search (org-link-search search))))
@ -6956,7 +7005,7 @@ For file links, arg negates `org-context-in-file-links'."
(save-excursion
(vm-select-folder-buffer)
(let* ((message (car vm-message-pointer))
(folder buffer-file-name)
(folder (buffer-file-name))
(subject (vm-su-subject message))
(author (vm-su-full-name message))
(message-id (vm-su-message-id message)))
@ -6987,7 +7036,7 @@ For file links, arg negates `org-context-in-file-links'."
(save-excursion
(save-restriction
(rmail-narrow-to-non-pruned-header)
(let ((folder buffer-file-name)
(let ((folder (buffer-file-name))
(message-id (mail-fetch-field "message-id"))
(author (mail-fetch-field "from"))
(subject (mail-fetch-field "subject")))
@ -7041,7 +7090,7 @@ For file links, arg negates `org-context-in-file-links'."
((eq major-mode 'org-mode)
;; Just link to current headline
(setq cpltxt (concat "file:"
(abbreviate-file-name buffer-file-name)))
(abbreviate-file-name (buffer-file-name))))
;; Add a context search string
(when (org-xor org-context-in-file-links arg)
(if (save-excursion
@ -7059,10 +7108,10 @@ For file links, arg negates `org-context-in-file-links'."
)))))
(setq link (org-make-link cpltxt)))
(buffer-file-name
((buffer-file-name)
;; Just link to this file here.
(setq cpltxt (concat "file:"
(abbreviate-file-name buffer-file-name)))
(abbreviate-file-name (buffer-file-name))))
;; Add a context string
(when (org-xor org-context-in-file-links arg)
(setq cpltxt
@ -7197,7 +7246,7 @@ is in the current directory or below."
(case-fold-search nil)
(search (match-string 2 link)))
(when (save-match-data
(equal (file-truename buffer-file-name)
(equal (file-truename (buffer-file-name))
(file-truename path)))
(if (save-match-data
(string-match (concat "^" org-camel-regexp "$") search))
@ -7356,7 +7405,7 @@ See also the variable `org-reverse-note-order'."
(let ((all org-reverse-note-order)
entry)
(while (setq entry (pop all))
(if (string-match (car entry) buffer-file-name)
(if (string-match (car entry) (buffer-file-name))
(throw 'exit (cdr entry))))
nil)))))
@ -10010,7 +10059,7 @@ underlined headlines. The default is 3."
(level 0) line txt
(umax nil)
(case-fold-search nil)
(filename (concat (file-name-sans-extension buffer-file-name)
(filename (concat (file-name-sans-extension (buffer-file-name))
".txt"))
(buffer (find-file-noselect filename))
(levels-open (make-vector org-level-max nil))
@ -10159,7 +10208,7 @@ underlined headlines. The default is 3."
Also removes the first line of the buffer if it specifies a mode,
and all options lines."
(interactive)
(let* ((filename (concat (file-name-sans-extension buffer-file-name)
(let* ((filename (concat (file-name-sans-extension (buffer-file-name))
".txt"))
(buffer (find-file-noselect filename))
(ore (concat
@ -10233,7 +10282,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
org-export-with-sub-superscripts
org-export-with-emphasize
org-export-with-TeX-macros
(file-name-nondirectory buffer-file-name)
(file-name-nondirectory (buffer-file-name))
(if (equal org-todo-interpretation 'sequence)
(mapconcat 'identity org-todo-keywords " ")
"TODO FEEDBACK VERIFY DONE")
@ -10306,7 +10355,7 @@ The prefix ARG specifies how many levels of the outline should become
headlines. The default is 3. Lower levels will become bulleted lists."
(interactive "P")
(org-export-as-html arg 'hidden)
(org-open-file buffer-file-name))
(org-open-file (buffer-file-name)))
(defun org-export-as-html-batch ()
"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."
(lines (org-export-find-first-heading-line all_lines))
(level 0) (line "") (origline "") txt todo
(umax nil)
(filename (concat (file-name-sans-extension buffer-file-name)
(filename (concat (file-name-sans-extension (buffer-file-name))
".html"))
(buffer (find-file-noselect filename))
(levels-open (make-vector org-level-max nil))
@ -10999,7 +11048,7 @@ When LEVEL is non-nil, increase section numbers on that level."
The iCalendar file will be located in the same directory as the Org-mode
file, but with extension `.ics'."
(interactive)
(org-export-icalendar nil buffer-file-name))
(org-export-icalendar nil (buffer-file-name)))
;;;###autoload
(defun org-export-icalendar-all-agenda-files ()
@ -11036,7 +11085,7 @@ file and store it under the name `org-combined-agenda-icalendar-file'."
(set-buffer (org-get-agenda-file-buffer file))
(setq category (or org-category
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))))
(file-name-nondirectory (buffer-file-name)))))
(if (symbolp category) (setq category (symbol-name category)))
(let ((standard-output ical-buffer))
(if combine
@ -12137,27 +12186,6 @@ Show the heading too, if it is currently invisible."
(org-invisible-p)))
(org-show-hierarchy-above)))
(defun org-get-tags-at (&optional pos)
"Get a list of all headline targs applicable at POS.
POS defaults to point. If tags are inherited, the list contains
the targets in the same sequence as the headlines appear, i.e.
the tags of the current headline come last."
(interactive)
(let (tags)
(save-excursion
(goto-char (or pos (point)))
(save-match-data
(org-back-to-heading t)
(condition-case nil
(while t
(if (looking-at "[^\r\n]+?:\\([a-zA-Z_:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
(setq tags (append (org-split-string (match-string 1) ":") tags)))
(or org-use-tag-inheritance (error ""))
(org-up-heading-all 1))
(error nil))))
(message "%s" tags)
tags))
;;; Finish up
(provide 'org)
@ -12166,4 +12194,5 @@ the tags of the current headline come last."
;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
;;; org.el ends here

View file

@ -913,7 +913,7 @@ This is always set to nil at the entry to `table-with-cache-buffer' before execu
"For mode line indicator")
;; This is not a real minor-mode but placed in the minor-mode-alist
;; so that we can show the indicator on the mode line handy.
(make-variable-buffer-local table-mode-indicator)
(make-variable-buffer-local 'table-mode-indicator)
(unless (assq table-mode-indicator minor-mode-alist)
(push '(table-mode-indicator (table-fixed-width-mode " Fixed-Table" " Table"))
minor-mode-alist))

View file

@ -3,6 +3,7 @@
;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
;; Author: Jean-Philippe Theberge <jphiltheberge@videotron.ca>
;; Maintainer: FSF
;; Keywords: Multimedia
;; This file is part of GNU Emacs.
@ -21,23 +22,24 @@
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;
;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some time
;; The peoples at #emacs@freenode.net for numerous help
;; RMS for emacs and the GNU project.
;;
;;; Commentary:
;; This package create two new mode: thumbs-mode and
;; thumbs-view-image-mode. It is used for images browsing and viewing
;; from within Emacs. Minimal image manipulation functions are also
;; available via external programs.
;; This package create two new modes: thumbs-mode and thumbs-view-image-mode.
;; It is used for basic browsing and viewing of images from within Emacs.
;; Minimal image manipulation functions are also available via external
;; programs. If you want to do more complex tasks like categorise and tag
;; your images, use tumme.el
;;
;; The 'convert' program from 'ImageMagick'
;; [URL:http://www.imagemagick.org/] is required.
;;
;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some
;; time. The peoples at #emacs@freenode.net for numerous help. RMS
;; for emacs and the GNU project.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; CHANGELOG
;;
;; This is version 2.0
@ -48,8 +50,8 @@
;; That should be a directory containing image files.
;; from dired, C-t m enter in thumbs-mode with all marked files
;; C-t a enter in thumbs-mode with all files in current-directory
;; In thumbs-mode, pressing <return> on a image will bring you in image view mode
;; for that image. C-h m will give you a list of available keybinding.
;; In thumbs-mode, pressing <return> on a image will bring you in image view
;; mode for that image. C-h m will give you a list of available keybinding.
;;; History:
;;
@ -75,13 +77,18 @@
:type 'string
:group 'thumbs)
(defcustom thumbs-per-line 5
"*Number of thumbnails per line to show in directory."
(defcustom thumbs-per-line 4
"Number of thumbnails per line to show in directory."
:type 'integer
:group 'thumbs)
(defcustom thumbs-max-image-number 16
"Maximum number of images initially displayed in thumbs buffer."
:type 'integer
:group 'thumbs)
(defcustom thumbs-thumbsdir-max-size 50000000
"Max size for thumbnails directory.
"Maximum size for thumbnails directory.
When it reaches that size (in bytes), a warning is sent."
:type 'integer
:group 'thumbs)
@ -121,7 +128,7 @@ than `thumbs-thumbsdir-max-size'."
:group 'thumbs)
(defcustom thumbs-image-resizing-step 10
"Step by which to resize image."
"Step by which to resize image as a percentage."
:type 'integer
:group 'thumbs)
@ -146,6 +153,11 @@ this value can let another user see some of your images."
"Filename of current image.")
(make-variable-buffer-local 'thumbs-current-image-filename)
(defvar thumbs-extra-images 1
"Counter for showing extra images in thumbs buffer.")
(make-variable-buffer-local 'thumbs-extra-images)
(put 'thumbs-extra-images 'permanent-local t)
(defvar thumbs-current-image-size nil
"Size of current image.")
@ -153,10 +165,14 @@ this value can let another user see some of your images."
"Number of current image.")
(make-variable-buffer-local 'thumbs-image-num)
(defvar thumbs-buffer nil
"Name of buffer containing thumbnails associated with image.")
(make-variable-buffer-local 'thumbs-buffer)
(defvar thumbs-current-dir nil
"Current directory.")
(defvar thumbs-markedL nil
(defvar thumbs-marked-list nil
"List of marked files.")
(defalias 'thumbs-gensym
@ -199,21 +215,21 @@ Create the thumbnails directory if it does not exist."
If the total size of all files in `thumbs-thumbsdir' is bigger than
`thumbs-thumbsdir-max-size', files are deleted until the max size is
reached."
(let* ((filesL
(let* ((files-list
(sort
(mapcar
(lambda (f)
(let ((fattribsL (file-attributes f)))
`(,(nth 4 fattribsL) ,(nth 7 fattribsL) ,f)))
(let ((fattribs-list (file-attributes f)))
`(,(nth 4 fattribs-list) ,(nth 7 fattribs-list) ,f)))
(directory-files (thumbs-thumbsdir) t (image-file-name-regexp)))
'(lambda (l1 l2) (time-less-p (car l1) (car l2)))))
(dirsize (apply '+ (mapcar (lambda (x) (cadr x)) filesL))))
(dirsize (apply '+ (mapcar (lambda (x) (cadr x)) files-list))))
(while (> dirsize thumbs-thumbsdir-max-size)
(progn
(message "Deleting file %s" (cadr (cdar filesL))))
(delete-file (cadr (cdar filesL)))
(setq dirsize (- dirsize (car (cdar filesL))))
(setq filesL (cdr filesL)))))
(message "Deleting file %s" (cadr (cdar files-list))))
(delete-file (cadr (cdar files-list)))
(setq dirsize (- dirsize (car (cdar files-list))))
(setq files-list (cdr files-list)))))
;; Check the thumbsnail directory size and clean it if necessary.
(when thumbs-thumbsdir-auto-clean
@ -238,75 +254,47 @@ ACTION-PREFIX is the symbol to place before the ACTION command
filein
(or output-format "jpeg")
fileout)))
(shell-command command)))
(call-process shell-file-name nil nil nil "-c" command)))
(defun thumbs-increment-image-size-element (n d)
"Increment number N by D percent."
(round (+ n (/ (* d n) 100))))
(defun thumbs-new-image-size (s increment)
"New image (a cons of width x height)."
(let ((d (* increment thumbs-image-resizing-step)))
(cons
(round (+ (car s) (/ (* d (car s)) 100)))
(round (+ (cdr s) (/ (* d (cdr s)) 100))))))
(defun thumbs-decrement-image-size-element (n d)
"Decrement number N by D percent."
(round (- n (/ (* d n) 100))))
(defun thumbs-increment-image-size (s)
"Increment S (a cons of width x height)."
(cons
(thumbs-increment-image-size-element (car s)
thumbs-image-resizing-step)
(thumbs-increment-image-size-element (cdr s)
thumbs-image-resizing-step)))
(defun thumbs-decrement-image-size (s)
"Decrement S (a cons of width x height)."
(cons
(thumbs-decrement-image-size-element (car s)
thumbs-image-resizing-step)
(thumbs-decrement-image-size-element (cdr s)
thumbs-image-resizing-step)))
(defun thumbs-resize-image (&optional increment size)
(defun thumbs-resize-image-1 (&optional increment size)
"Resize image in current buffer.
If INCREMENT is set, make the image bigger, else smaller.
Or, alternatively, a SIZE may be specified."
(interactive)
;; cleaning of old temp file
(condition-case nil
(apply 'delete-file
(directory-files
(thumbs-temp-dir) t
thumbs-temp-prefix))
(error nil))
(let ((buffer-read-only nil)
(x (if size
size
(if increment
(thumbs-increment-image-size
thumbs-current-image-size)
(thumbs-decrement-image-size
thumbs-current-image-size))))
(tmp (thumbs-temp-file)))
If SIZE is specified use it. Otherwise make the image larger or
smaller according to whether INCREMENT is 1 or -1."
(let* ((buffer-read-only nil)
(old thumbs-current-tmp-filename)
(x (or size
(thumbs-new-image-size thumbs-current-image-size increment)))
(tmp (thumbs-temp-file)))
(erase-buffer)
(thumbs-call-convert thumbs-current-image-filename
(thumbs-call-convert (or old thumbs-current-image-filename)
tmp "sample"
(concat (number-to-string (car x)) "x"
(number-to-string (cdr x))))
(thumbs-insert-image tmp 'jpeg 0)
(save-excursion
(thumbs-insert-image tmp 'jpeg 0))
(setq thumbs-current-tmp-filename tmp)))
(defun thumbs-resize-interactive (width height)
(defun thumbs-resize-image (width height)
"Resize image interactively to specified WIDTH and HEIGHT."
(interactive "nWidth: \nnHeight: ")
(thumbs-resize-image nil (cons width height)))
(thumbs-resize-image-1 nil (cons width height)))
(defun thumbs-resize-image-size-down ()
(defun thumbs-shrink-image ()
"Resize image (smaller)."
(interactive)
(thumbs-resize-image nil))
(thumbs-resize-image-1 -1))
(defun thumbs-resize-image-size-up ()
(defun thumbs-enlarge-image ()
"Resize image (bigger)."
(interactive)
(thumbs-resize-image t))
(thumbs-resize-image-1 1))
(defun thumbs-thumbname (img)
"Return a thumbnail name for the image IMG."
@ -376,70 +364,81 @@ If MARKED is non-nil, the image is marked."
If MARKED is non-nil, the image is marked."
(thumbs-insert-image
(thumbs-make-thumb img) 'jpeg thumbs-relief marked)
(put-text-property (1- (point)) (point)
'thumb-image-file img))
(add-text-properties (1- (point)) (point)
`(thumb-image-file ,img
help-echo ,(file-name-nondirectory img))))
(defun thumbs-do-thumbs-insertion (L)
"Insert all thumbs in list L."
(let ((i 0))
(dolist (img L)
(defun thumbs-do-thumbs-insertion (list)
"Insert all thumbnails into thumbs buffer."
(let* ((i 0)
(length (length list))
(diff (- length (* thumbs-max-image-number thumbs-extra-images))))
(nbutlast list diff)
(dolist (img list)
(thumbs-insert-thumb img
(member img thumbs-markedL))
(member img thumbs-marked-list))
(when (= 0 (mod (setq i (1+ i)) thumbs-per-line))
(newline)))
(unless (bobp) (newline))))
(unless (bobp) (newline))
(if diff (message "Type + to display more images."))))
(defun thumbs-show-thumbs-list (L &optional buffer-name same-window)
(defun thumbs-show-thumbs-list (list &optional dir same-window)
(unless (and (display-images-p)
(image-type-available-p 'jpeg))
(error "Required image type is not supported in this Emacs session"))
(funcall (if same-window 'switch-to-buffer 'pop-to-buffer)
(or buffer-name "*THUMB-View*"))
(if dir (concat "*Thumbs: " dir) "*THUMB-View*"))
(let ((inhibit-read-only t))
(erase-buffer)
(thumbs-mode)
(thumbs-do-thumbs-insertion L)
(setq thumbs-buffer (current-buffer))
(if dir (setq default-directory dir))
(thumbs-do-thumbs-insertion list)
(goto-char (point-min))
(set (make-local-variable 'thumbs-current-dir) default-directory)))
;;;###autoload
(defun thumbs-show-all-from-dir (dir &optional reg same-window)
(defun thumbs-show-from-dir (dir &optional reg same-window)
"Make a preview buffer for all images in DIR.
Optional argument REG to select file matching a regexp,
and SAME-WINDOW to show thumbs in the same window."
(interactive "DDir: ")
(thumbs-show-thumbs-list
(directory-files dir t
(or reg (image-file-name-regexp)))
(concat "*Thumbs: " dir) same-window))
(directory-files dir t (or reg (image-file-name-regexp)))
dir same-window))
;;;###autoload
(defun thumbs-dired-show-marked ()
"In dired, make a thumbs buffer with all marked files."
"In dired, make a thumbs buffer with marked files."
(interactive)
(thumbs-show-thumbs-list (dired-get-marked-files) nil t))
;;;###autoload
(defun thumbs-dired-show-all ()
(defun thumbs-dired-show ()
"In dired, make a thumbs buffer with all files in current directory."
(interactive)
(thumbs-show-all-from-dir default-directory nil t))
(thumbs-show-from-dir default-directory nil t))
;;;###autoload
(defalias 'thumbs 'thumbs-show-all-from-dir)
(defalias 'thumbs 'thumbs-show-from-dir)
(defun thumbs-find-image (img &optional num otherwin)
(funcall
(if otherwin 'switch-to-buffer-other-window 'switch-to-buffer)
(concat "*Image: " (file-name-nondirectory img) " - "
(number-to-string (or num 0)) "*"))
(thumbs-view-image-mode)
(let ((inhibit-read-only t))
(setq thumbs-current-image-filename img
thumbs-current-tmp-filename nil
thumbs-image-num (or num 0))
(delete-region (point-min)(point-max))
(thumbs-insert-image img (thumbs-image-type img) 0)))
(let ((buffer (current-buffer)))
(funcall
(if otherwin 'switch-to-buffer-other-window 'switch-to-buffer)
"*Image*")
(thumbs-view-image-mode)
(setq mode-name
(concat "image-view-mode: " (file-name-nondirectory img)
" - " (number-to-string num)))
(setq thumbs-buffer buffer)
(let ((inhibit-read-only t))
(setq thumbs-current-image-filename img
thumbs-current-tmp-filename nil
thumbs-image-num (or num 0))
(delete-region (point-min)(point-max))
(save-excursion
(thumbs-insert-image img (thumbs-image-type img) 0)))))
(defun thumbs-find-image-at-point (&optional img otherwin)
"Display image IMG for thumbnail at point.
@ -484,16 +483,18 @@ Open another window."
(defun thumbs-file-alist ()
"Make an alist of elements (POS . FILENAME) for all images in thumb buffer."
(save-excursion
(let (list)
(goto-char (point-min))
(while (not (eobp))
(if (thumbs-current-image)
(push (cons (point-marker)
(thumbs-current-image))
list))
(forward-char 1))
list)))
(with-current-buffer thumbs-buffer
(save-excursion
(let (list)
(goto-char (point-min))
(while (not (eobp))
(unless (= 0 (mod (point) (1+ thumbs-per-line)))
(if (thumbs-current-image)
(push (cons (point-marker)
(thumbs-current-image))
list)))
(forward-char 1))
(nreverse list)))))
(defun thumbs-file-list ()
"Make a list of file names for all images in thumb buffer."
@ -509,9 +510,9 @@ Open another window."
(defun thumbs-delete-images ()
"Delete the image at point (and its thumbnail) (or marked files if any)."
(interactive)
(let ((files (or thumbs-markedL (list (thumbs-current-image)))))
(let ((files (or thumbs-marked-list (list (thumbs-current-image)))))
(if (yes-or-no-p (format "Really delete %d files? " (length files)))
(let ((thumbs-fileL (thumbs-file-alist))
(let ((thumbs-file-list (thumbs-file-alist))
(inhibit-read-only t))
(dolist (x files)
(let (failure)
@ -521,24 +522,24 @@ Open another window."
(delete-file (thumbs-thumbname x)))
(file-error (setq failure t)))
(unless failure
(when (rassoc x thumbs-fileL)
(goto-char (car (rassoc x thumbs-fileL)))
(when (rassoc x thumbs-file-list)
(goto-char (car (rassoc x thumbs-file-list)))
(delete-region (point) (1+ (point))))
(setq thumbs-markedL
(delq x thumbs-markedL)))))))))
(setq thumbs-marked-list
(delq x thumbs-marked-list)))))))))
(defun thumbs-rename-images (newfile)
"Rename the image at point (and its thumbnail) (or marked files if any)."
(interactive "FRename to file or directory: ")
(let ((files (or thumbs-markedL (list (thumbs-current-image))))
(let ((files (or thumbs-marked-list (list (thumbs-current-image))))
failures)
(if (and (not (file-directory-p newfile))
thumbs-markedL)
thumbs-marked-list)
(if (file-exists-p newfile)
(error "Renaming marked files to file name `%s'" newfile)
(make-directory newfile t)))
(if (yes-or-no-p (format "Really rename %d files? " (length files)))
(let ((thumbs-fileL (thumbs-file-alist))
(let ((thumbs-file-list (thumbs-file-alist))
(inhibit-read-only t))
(dolist (file files)
(let (failure)
@ -552,11 +553,11 @@ Open another window."
(file-error (setq failure t)
(push file failures)))
(unless failure
(when (rassoc file thumbs-fileL)
(goto-char (car (rassoc file thumbs-fileL)))
(when (rassoc file thumbs-file-list)
(goto-char (car (rassoc file thumbs-file-list)))
(delete-region (point) (1+ (point))))
(setq thumbs-markedL
(delq file thumbs-markedL)))))))
(setq thumbs-marked-list
(delq file thumbs-marked-list)))))))
(if failures
(display-warning 'file-error
(format "Rename failures for %s into %s"
@ -571,32 +572,39 @@ Open another window."
(defun thumbs-show-image-num (num)
"Show the image with number NUM."
(let ((image-buffer (get-buffer-create "*Image*")))
(let ((i (thumbs-current-image)))
(let ((img (cdr (nth (1- num) (thumbs-file-alist)))))
(with-current-buffer image-buffer
(thumbs-insert-image i (thumbs-image-type i) 0))
(setq mode-name
(concat "image-view-mode: " (file-name-nondirectory img)
" - " (number-to-string num)))
(let ((inhibit-read-only t))
(erase-buffer)
(thumbs-insert-image img (thumbs-image-type img) 0)
(goto-char (point-min))))
(setq thumbs-image-num num
thumbs-current-image-filename i))))
(defun thumbs-next-image ()
"Show the next image."
(interactive)
(let* ((i (1+ thumbs-image-num))
(list (thumbs-file-alist))
(l (caar list)))
(while (and (/= i thumbs-image-num) (not (assoc i list)))
(setq i (if (>= i l) 1 (1+ i))))
(thumbs-show-image-num i)))
thumbs-current-image-filename img))))
(defun thumbs-previous-image ()
"Show the previous image."
(interactive)
(let* ((i (- thumbs-image-num 1))
(list (thumbs-file-alist))
(l (caar list)))
(while (and (/= i thumbs-image-num) (not (assoc i list)))
(setq i (if (<= i 1) l (1- i))))
(number (length (thumbs-file-alist))))
(if (= i 0) (setq i (1- number)))
(thumbs-show-image-num i)))
(defun thumbs-next-image ()
"Show the next image."
(interactive)
(let* ((i (1+ thumbs-image-num))
(number (length (thumbs-file-alist))))
(if (= i number) (setq i 1))
(thumbs-show-image-num i)))
(defun thumbs-display-thumbs-buffer ()
"Display the associated thumbs buffer."
(interactive)
(display-buffer thumbs-buffer))
(defun thumbs-redraw-buffer ()
"Redraw the current thumbs buffer."
(let ((p (point))
@ -612,10 +620,11 @@ Open another window."
(let ((elt (thumbs-current-image)))
(unless elt
(error "No image here"))
(push elt thumbs-markedL)
(push elt thumbs-marked-list)
(let ((inhibit-read-only t))
(delete-char 1)
(thumbs-insert-thumb elt t)))
(save-excursion
(thumbs-insert-thumb elt t))))
(when (eolp) (forward-char)))
(defun thumbs-unmark ()
@ -624,32 +633,34 @@ Open another window."
(let ((elt (thumbs-current-image)))
(unless elt
(error "No image here"))
(setq thumbs-markedL (delete elt thumbs-markedL))
(setq thumbs-marked-list (delete elt thumbs-marked-list))
(let ((inhibit-read-only t))
(delete-char 1)
(thumbs-insert-thumb elt nil)))
(save-excursion
(thumbs-insert-thumb elt nil))))
(when (eolp) (forward-char)))
;; cleaning of old temp files
(mapc 'delete-file
(directory-files (thumbs-temp-dir) t thumbs-temp-prefix))
;; Image modification routines
(defun thumbs-modify-image (action &optional arg)
"Call convert to do ACTION on image with argument ARG.
ACTION and ARG should be a valid convert command."
(interactive "sAction: \nsValue: ")
;; cleaning of old temp file
(mapc 'delete-file
(directory-files
(thumbs-temp-dir)
t
thumbs-temp-prefix))
(let ((buffer-read-only nil)
(tmp (thumbs-temp-file)))
(let* ((buffer-read-only nil)
(old thumbs-current-tmp-filename)
(tmp (thumbs-temp-file)))
(erase-buffer)
(thumbs-call-convert thumbs-current-image-filename
(thumbs-call-convert (or old thumbs-current-image-filename)
tmp
action
(or arg ""))
(thumbs-insert-image tmp 'jpeg 0)
(save-excursion
(thumbs-insert-image tmp 'jpeg 0))
(setq thumbs-current-tmp-filename tmp)))
(defun thumbs-emboss-image (emboss)
@ -699,17 +710,24 @@ ACTION and ARG should be a valid convert command."
(forward-char -1))
(thumbs-show-name))
(defun thumbs-backward-line ()
"Move up one line."
(interactive)
(forward-line -1)
(thumbs-show-name))
(defun thumbs-forward-line ()
"Move down one line."
(interactive)
(forward-line 1)
(thumbs-show-name))
(defun thumbs-backward-line ()
"Move up one line."
(interactive)
(forward-line -1)
(thumbs-show-name))
(defun thumbs-show-more-images (&optional arg)
"Show more than `thumbs-max-image-number' images, if present."
(interactive "P")
(or arg (setq arg 1))
(setq thumbs-extra-images (+ thumbs-extra-images arg))
(thumbs-dired-show))
(defun thumbs-show-name ()
"Show the name of the current file."
@ -744,6 +762,7 @@ ACTION and ARG should be a valid convert command."
(define-key map [left] 'thumbs-backward-char)
(define-key map [up] 'thumbs-backward-line)
(define-key map [down] 'thumbs-forward-line)
(define-key map "+" 'thumbs-show-more-images)
(define-key map "d" 'thumbs-dired)
(define-key map "m" 'thumbs-mark)
(define-key map "u" 'thumbs-unmark)
@ -759,18 +778,19 @@ ACTION and ARG should be a valid convert command."
fundamental-mode "thumbs"
"Preview images in a thumbnails buffer"
(setq buffer-read-only t)
(set (make-local-variable 'thumbs-markedL) nil))
(set (make-local-variable 'thumbs-marked-list) nil))
(defvar thumbs-view-image-mode-map
(let ((map (make-sparse-keymap)))
(define-key map [prior] 'thumbs-previous-image)
(define-key map [next] 'thumbs-next-image)
(define-key map "-" 'thumbs-resize-image-size-down)
(define-key map "+" 'thumbs-resize-image-size-up)
(define-key map "^" 'thumbs-display-thumbs-buffer)
(define-key map "-" 'thumbs-shrink-image)
(define-key map "+" 'thumbs-enlarge-image)
(define-key map "<" 'thumbs-rotate-left)
(define-key map ">" 'thumbs-rotate-right)
(define-key map "e" 'thumbs-emboss-image)
(define-key map "r" 'thumbs-resize-interactive)
(define-key map "r" 'thumbs-resize-image)
(define-key map "s" 'thumbs-save-current-image)
(define-key map "q" 'thumbs-kill-buffer)
(define-key map "w" 'thumbs-set-root)
@ -790,7 +810,7 @@ ACTION and ARG should be a valid convert command."
(thumbs-call-setroot-command (dired-get-filename)))
;; Modif to dired mode map
(define-key dired-mode-map "\C-ta" 'thumbs-dired-show-all)
(define-key dired-mode-map "\C-ta" 'thumbs-dired-show)
(define-key dired-mode-map "\C-tm" 'thumbs-dired-show-marked)
(define-key dired-mode-map "\C-tw" 'thumbs-dired-setroot)

View file

@ -152,8 +152,8 @@ For a description of possible values, see `vc-check-master-templates'."
(vc-file-setprop file 'vc-checkout-model 'locking))))
state)
(if (not (vc-mistrust-permissions file))
(let* ((attributes (file-attributes file))
(owner-uid (nth 2 attributes))
(let* ((attributes (file-attributes file 'string))
(owner-name (nth 2 attributes))
(permissions (nth 8 attributes)))
(cond ((string-match ".r-..-..-." permissions)
(vc-file-setprop file 'vc-checkout-model 'locking)
@ -162,7 +162,7 @@ For a description of possible values, see `vc-check-master-templates'."
(if (eq (vc-checkout-model file) 'locking)
(if (file-ownership-preserved-p file)
'edited
(vc-user-login-name owner-uid))
owner-name)
(if (vc-rcs-workfile-is-newer file)
'edited
'up-to-date)))

View file

@ -122,15 +122,15 @@ For a description of possible values, see `vc-check-master-templates'."
;; We have to be careful not to exclude files with execute bits on;
;; scripts can be under version control too. Also, we must ignore the
;; group-read and other-read bits, since paranoid users turn them off.
(let* ((attributes (file-attributes file))
(owner-uid (nth 2 attributes))
(let* ((attributes (file-attributes file 'string))
(owner-name (nth 2 attributes))
(permissions (nth 8 attributes)))
(if (string-match ".r-..-..-." permissions)
'up-to-date
(if (string-match ".rw..-..-." permissions)
(if (file-ownership-preserved-p file)
'edited
(vc-user-login-name owner-uid))
owner-name)
;; Strange permissions.
;; Fall through to real state computation.
(vc-sccs-state file))))

View file

@ -1,3 +1,21 @@
2006-01-19 Richard M. Stallman <rms@gnu.org>
* nonascii.texi (Translation of Characters): Search cmds use
translation-table-for-input. Automatically made local.
* markers.texi (Overview of Markers): Count insertion type
as one of a marker's attributes.
* elisp.texi (Top): Menu clarification.
* display.texi (Other Display Specs): Delete duplicate entry for
just a string as display spec. Move text about recursive display
specs on such a string.
* commands.texi (Key Sequence Input): Clarify.
Move num-nonmacro-input-events out.
(Reading One Event): num-nonmacro-input-events moved here.
2006-01-14 Nick Roberts <nickrob@snap.net.nz>
* advice.texi (Simple Advice): Update example to fit argument

View file

@ -2074,6 +2074,9 @@ Otherwise, it returns a vector, since a vector can hold all kinds of
events---characters, symbols, and lists. The elements of the string or
vector are the events in the key sequence.
Reading a key sequence includes translating the events in various
ways. @xref{Translating Input}.
The argument @var{prompt} is either a string to be displayed in the
echo area as a prompt, or @code{nil}, meaning not to display a prompt.
The 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
after another. It should be @code{nil} if the caller will read just
one key sequence.
In the example below, the prompt @samp{?} is displayed in the echo area,
and the user types @kbd{C-x C-f}.
In the following example, Emacs displays the prompt @samp{?} in the
echo area, and then the user types @kbd{C-x C-f}.
@example
(read-key-sequence "?")
@ -2173,11 +2176,6 @@ this Emacs session. This includes key sequences read from the terminal
and key sequences read from keyboard macros being executed.
@end defvar
@defvar num-nonmacro-input-events
This variable holds the total number of input events received so far
from the terminal---not counting those generated by keyboard macros.
@end defvar
@node Reading One Event
@subsection Reading One Event
@cindex reading a single event
@ -2265,6 +2263,11 @@ user generates an event which is not a character,
gets a character. The arguments work as in @code{read-event}.
@end defun
@defvar num-nonmacro-input-events
This variable holds the total number of input events received so far
from the terminal---not counting those generated by keyboard macros.
@end defvar
@node Invoking the Input Method
@subsection Invoking the Input Method

View file

@ -3277,6 +3277,9 @@ in the @code{display} text property.
@item @var{string}
Display @var{string} instead of the text that has this property.
Recursive display specifications are not supported---@var{string}'s
@code{display} properties, if any, are not used.
@item (image . @var{image-props})
This kind of display specification is an image descriptor (@pxref{Images}).
When 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
of the entire image.
@item ((margin nil) @var{string})
@itemx @var{string}
A display specification of this form means to display @var{string}
instead of the text that has the display specification, at the same
position as that text. This is a special case of marginal display
(@pxref{Display Margins}).
Recursive display specifications are not supported---string display
specifications must not have @code{display} properties themselves.
position as that text. It is equivalent to using just @var{string},
but it is done as a special case of marginal display (@pxref{Display
Margins}).
@item (space-width @var{factor})
This display specification affects all the space characters within the

View file

@ -123,7 +123,7 @@ Reference Manual, corresponding to GNU Emacs version @value{EMACSVER}.
files are made.
* Buffers:: Creating and using buffer objects.
* Windows:: Manipulating windows and displaying buffers.
* Frames:: Making multiple X windows.
* Frames:: Making multiple system-level windows.
* Positions:: Buffer positions and motion functions.
* Markers:: Markers represent positions and update
automatically when the text is changed.

View file

@ -36,14 +36,15 @@ way usually points to a position in the buffer that the function
operates on, but that is entirely the programmer's responsibility.
@xref{Positions}, for a complete description of positions.
A marker has two attributes: the marker position, and the marker
buffer. The marker position is an integer that is equivalent (at a
given time) to the marker as a position in that buffer. But the
marker's position value can change often during the life of the marker.
Insertion and deletion of text in the buffer relocate the marker. The
idea is that a marker positioned between two characters remains between
those two characters despite insertion and deletion elsewhere in the
buffer. Relocation changes the integer equivalent of the marker.
A marker has three attributes: the marker position, the marker
buffer, and the insertion type. The marker position is an integer
that is equivalent (at a given time) to the marker as a position in
that buffer. But the marker's position value can change often during
the life of the marker. Insertion and deletion of text in the buffer
relocate the marker. The idea is that a marker positioned between two
characters remains between those two characters despite insertion and
deletion elsewhere in the buffer. Relocation changes the integer
equivalent of the marker.
@cindex marker relocation
Deleting text around a marker's position leaves the marker between the

View file

@ -578,12 +578,14 @@ coding systems that don't specify any other translation table.
@defvar translation-table-for-input
Self-inserting characters are translated through this translation
table before they are inserted. This variable automatically becomes
buffer-local when set.
table before they are inserted. Search commands also translate their
input through this table, so they can compare more reliably with
what's in the buffer.
@code{set-buffer-file-coding-system} sets this variable so that your
keyboard input gets translated into the character sets that the buffer
is likely to contain.
is likely to contain. This variable automatically becomes
buffer-local when set.
@end defvar
@node Coding Systems

View file

@ -1,3 +1,50 @@
2006-01-23 Juri Linkov <juri@jurta.org>
* custom.texi (Easy Customization, Customization Groups)
(Browsing Custom): Mention links along with buttons.
* widget.texi (User Interface): Add S-TAB for widget-backward.
2006-01-22 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.0.52.
* tramp.texi (Frequently Asked Questions): Remove Ange-FTP item.
Add Tramp disabling item. New item for common connection
problems.
(various): Apply "ftp" as method for the download URL.
(Bug Reports): Refer to FAQ for common problems.
2006-01-21 Eli Zaretskii <eliz@gnu.org>
* widget.texi (User Interface): Use @key for TAB.
* text.texi (TeX Print): Use @key for TAB.
* ses.texi (Formulas, Printer functions): Use @key for TAB.
* kmacro.texi (Keyboard Macro Step-Edit): : Use @key for TAB.
* ebrowse.texi (Switching to Tree, Symbol Completion): : Use @key
for TAB.
* cc-mode.texi (Indentation Calculation): Use @key for TAB.
2006-01-15 Sven Joachim <svenjoac@gmx.de> (tiny change)
* files.texi (File Aliases): Don't claim that usually separate
buffers are created for two file names that name the same data.
Mention additional situations where different names mean the same
file on disk.
2006-01-19 Richard M. Stallman <rms@gnu.org>
* killing.texi (Deletion): Upcase @key argument.
* custom.texi (Custom Themes): Minor cleanup.
* programs.texi (Hungry Delete): Upcase @key argument.
2006-01-16 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi: Update copyright.

View file

@ -208,7 +208,7 @@ license to the document, as described in section 6 of the license.
@vskip 0pt plus 1filll
@insertcopying
This manual was generated from $Revision: 1.32 $ of $RCSfile: cc-mode.texi,v $, which can be
This manual was generated from $Revision$ of $RCSfile$, which can be
downloaded from
@url{http://cvs.sf.net/viewcvs.py/cc-mode/cc-mode/cc-mode.texi}.
@end titlepage
@ -4883,7 +4883,7 @@ our first example again:
6: @}
@end example
Let's say point is on line 3 and we hit the @kbd{TAB} key to reindent
Let's say point is on line 3 and we hit the @key{TAB} key to reindent
the line. The syntactic context for that line is:
@example

View file

@ -202,7 +202,7 @@ and set their values, and to save settings permanently in your
The appearance of the example buffers in this section is typically
different under a window system, since faces are then used to indicate
buttons and editable fields.
buttons, links and editable fields.
@menu
* Groups: Customization Groups. How settings are classified in a structure.
@ -256,16 +256,18 @@ line.
@cindex editable fields (customization buffer)
@cindex buttons (customization buffer)
@cindex links (customization buffer)
Most of the text in the customization buffer is read-only, but it
typically includes some @dfn{editable fields} that you can edit.
There are also @dfn{buttons}, which do something when you @dfn{invoke}
them. To invoke a button, either click on it with @kbd{Mouse-1}, or
move point to it and type @key{RET}.
There are also @dfn{buttons} and @dfn{links}, which do something when
you @dfn{invoke} them. To invoke a button or a link, either click on
it with @kbd{Mouse-1}, or move point to it and type @key{RET}.
For example, the phrase @samp{[Go to Group]} that appears in a
second-level group is a button. Invoking it creates a new
customization buffer, which shows that group and its contents. This
is a kind of hypertext link to another group.
For example, the phrase @samp{[State]} that appears in
a second-level group is a button. It operates on the same
customization buffer. The phrase @samp{[Go to Group]} is a kind
of hypertext link to another group. Invoking it creates a new
customization buffer, which shows that group and its contents.
The @code{Emacs} group includes a few settings, but mainly it
contains other groups, which contain more groups, which contain the
@ -288,8 +290,8 @@ structure.
@samp{[+]}. When the group contents are visible, this button changes to
@samp{[-]}; invoking that hides the group contents.
Each setting in this buffer has a button which says @samp{[Group]},
@samp{[Option]} or @samp{[Face]}. Invoking this button creates an
Each setting in this buffer has a link which says @samp{[Group]},
@samp{[Option]} or @samp{[Face]}. Invoking this link creates an
ordinary customization buffer showing just that group and its
contents, just that user option, or just that face. This is the way
to 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.
@findex load-theme
@findex enable-theme
@findex disable-theme
You can also enable a Custom theme with @kbd{M-x enable-theme}.
This prompts for a theme name in the minibuffer, loads the theme from
the theme file if necessary, and enables the theme. An enabled theme
can be @dfn{disabled} with the command @kbd{M-x disable-theme}; this
returns the options specified in the theme to their original values.
To re-enable the theme, call @kbd{M-x enable-theme} again. If a theme
file is changed during your Emacs session, you can reload it by
calling @kbd{M-x load-theme}. This also enables the theme.
You can temporarily enable a Custom theme with @kbd{M-x
enable-theme}. This prompts for a theme name in the minibuffer, loads
the theme from the theme file if necessary, and enables the theme.
You can @dfn{disabled} any enabled theme with the command @kbd{M-x
disable-theme}; this returns the options specified in the theme to
their original values. To re-enable the theme, type @kbd{M-x
enable-theme} again. If a theme file is changed during your Emacs
session, you can reload it by typing @kbd{M-x load-theme}. (This also
enables the theme.)
@node Variables
@section Variables

View file

@ -979,11 +979,11 @@ a mouse.
@cindex switching buffers
@table @kbd
@item TAB
@item @key{TAB}
Pop up the tree buffer to which the member buffer belongs.
@item t
Do the same as @kbd{TAB} but also position the cursor on the class
Do the same as @key{TAB} but also position the cursor on the class
displayed in the member buffer.
@end table
@ -1433,7 +1433,7 @@ command @kbd{C-c b f}, for example, to jump to a specific member.
@cindex completion
@cindex symbol completion
The command @kbd{C-c b TAB} completes the symbol in front of point.
The command @kbd{C-c b @key{TAB}} completes the symbol in front of point.

View file

@ -1150,21 +1150,20 @@ either name to refer to the file, but @file{bar} is the real name, while
@file{foo} is just an alias. More complex cases occur when symbolic
links point to directories.
If you visit two names for the same file, normally Emacs makes
two different buffers, but it warns you about the situation.
@vindex find-file-existing-other-name
@vindex find-file-suppress-same-file-warnings
Normally, if you visit a file which Emacs is already visiting under
a different name, Emacs displays a message in the echo area and uses
the existing buffer visiting that file. This can happen on systems
that support symbolic links, or if you use a long file name on a
system that truncates long file names. You can suppress the message by
setting the variable @code{find-file-suppress-same-file-warnings} to a
non-@code{nil} value. You can disable this feature entirely by setting
the variable @code{find-file-existing-other-name} to @code{nil}: then
if you visit the same file under two different names, you get a separate
buffer for each file name.
that support hard or symbolic links, or if you use a long file name on
a system that truncates long file names, or on a case-insensitive file
system. You can suppress the message by setting the variable
@code{find-file-suppress-same-file-warnings} to a non-@code{nil}
value. You can disable this feature entirely by setting the variable
@code{find-file-existing-other-name} to @code{nil}: then if you visit
the same file under two different names, you get a separate buffer for
each file name.
@vindex find-file-visit-truename
@cindex truenames of files

View file

@ -78,9 +78,9 @@ erase just one character or only whitespace.
@table @kbd
@item C-d
@itemx @key{Delete}
@itemx @key{DELETE}
Delete next character (@code{delete-char}). If your keyboard has a
@key{Delete} function key (usually located in the edit keypad), Emacs
@key{DELETE} function key (usually located in the edit keypad), Emacs
binds it to @code{delete-char} as well.
@item @key{DEL}
@itemx @key{BS}

View file

@ -521,8 +521,8 @@ next command in the keyboard macro.
@kbd{f} skips the current command in this execution of the keyboard
macro, but doesn't delete it from the macro.
@item
@kbd{TAB} executes the current command, as well as all similar
commands immediately following the current command; for example, TAB
@kbd{@key{TAB}} executes the current command, as well as all similar
commands immediately following the current command; for example, @key{TAB}
may be used to insert a sequence of characters (corresponding to a
sequence of @code{self-insert-command} commands).
@item

View file

@ -4,7 +4,7 @@
@setfilename ../info/org
@settitle Org Mode Manual
@set VERSION 4.03
@set VERSION 4.04
@set DATE January 2006
@dircategory Emacs
@ -2511,7 +2511,7 @@ original org file.
@kindex T
@item T
Show all tags associated with the current item. Because of
Show all tags assiciated with the current item. Because of
inheritance, this may be more than the tags listed in the line itself.
@kindex :

View file

@ -1630,7 +1630,7 @@ following point.
delete mode}. When this feature is enabled (indicated by @samp{/h} in
the mode line after the mode name), a single @key{BS} command deletes
all preceding whitespace, not just one space, and a single @kbd{C-c
C-d} (but @emph{not} @key{delete}) deletes all following whitespace.
C-d} (but @emph{not} @key{DELETE}) deletes all following whitespace.
@table @kbd
@item M-x c-toggle-hungry-state

View file

@ -188,12 +188,12 @@ Self-insert an expression. The right-parenthesis is inserted for you
(@code{ses-read-cell}). To access another cell's value, just use its
identifier in your expression. Whenever the other cell is changed,
this cell's formula will be reevaluated. While typing in the
expression, you can use @kbd{M-TAB} to complete symbol names.
expression, you can use @kbd{M-@key{TAB}} to complete symbol names.
@item ' @r{(apostrophe)}
Enter a symbol (ses-read-symbol). SES remembers all symbols that have
been used as formulas, so you can type just the beginning of a symbol
and use @kbd{SPC}, @kbd{TAB}, and @kbd{?} to complete it.
and use @kbd{@key{SPC}}, @kbd{@key{TAB}}, and @kbd{?} to complete it.
@end table
To 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,
use parentheses: @samp{("$%.2f")}. A printer can also be a
one-argument function (a symbol or a lambda), whose result is a string
(right-aligned) or list of one string (left-aligned). While typing in
a lambda, you can use @kbd{M-TAB} to complete the names of symbols.
a lambda, you can use @kbd{M-@key{TAB}} to complete the names of symbols.
Each cell has a printer. If @code{nil}, the column-printer for the cell's
column is used. If that is also @code{nil}, the default-printer for the

View file

@ -1680,12 +1680,12 @@ Variables}.
For La@TeX{} files, you can use Bib@TeX{} to process the auxiliary
file for the current buffer's file. Bib@TeX{} looks up bibliographic
citations in a data base and prepares the cited references for the
bibliography section. The command @kbd{C-c TAB}
bibliography section. The command @kbd{C-c @key{TAB}}
(@code{tex-bibtex-file}) runs the shell command
(@code{tex-bibtex-command}) to produce a @samp{.bbl} file for the
current buffer's file. Generally, you need to do @kbd{C-c C-f}
(@code{tex-file}) once to generate the @samp{.aux} file, then do
@kbd{C-c TAB} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f}
@kbd{C-c @key{TAB}} (@code{tex-bibtex-file}), and then repeat @kbd{C-c C-f}
(@code{tex-file}) twice more to get the cross-references correct.
@findex tex-compile

View file

@ -25,8 +25,8 @@
@end macro
@copying
Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004,
2005 Free Software Foundation, Inc.
Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@ -111,7 +111,7 @@ Japanese translation}.
@end ifset
The latest release of @value{tramp} is available for
@uref{http://ftp.gnu.org/gnu/tramp/, download}, or you may see
@uref{ftp://ftp.gnu.org/gnu/tramp/, download}, or you may see
@ref{Obtaining Tramp} for more details, including the CVS server
details.
@ -378,7 +378,7 @@ behind the scenes when you open a file with @value{tramp}.
@value{tramp} is freely available on the Internet and the latest
release may be downloaded from
@uref{http://ftp.gnu.org/gnu/tramp/}. This release includes the full
@uref{ftp://ftp.gnu.org/gnu/tramp/}. This release includes the full
documentation and code for @value{tramp}, suitable for installation.
But GNU Emacs (22 or later) includes @value{tramp} already, and there
is 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
When submitting a bug report, please try to describe in excruciating
detail the steps required to reproduce the problem, the setup of the
remote machine and any special conditions that exist.
remote machine and any special conditions that exist. You should also
check that your problem is not described already in @xref{Frequently
Asked Questions}.
If you can identify a minimal test case that reproduces the problem,
include 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}?
@value{tramp} is available under the URL below.
@noindent
@uref{http://ftp.gnu.org/gnu/tramp/}
@uref{ftp://ftp.gnu.org/gnu/tramp/}
@noindent
There is also a Savannah project page.
@ -1972,6 +1974,7 @@ There is also a Savannah project page.
@noindent
@uref{http://savannah.gnu.org/projects/tramp/}
@item
Which systems does it work on?
@ -2003,49 +2006,32 @@ Emacs? I think there was some issue with @command{ssh}?
@item
I can't stop @value{ftppackagename} starting with @value{emacsname}
@value{tramp} does not connect to the remote host
@ifset emacs
@value{ftppackagename} is loaded from @value{tramp} automatically if you
require a file by the ftp method. Unfortunately, there are some Lisp
packages which make @value{ftppackagename} file name handlers active.
You can see it applying @kbd{C-h v file-name-handler-alist}:
When @value{tramp} does not connect to the remote host, there are two
reasons heading the bug mailing list:
@example
file-name-handler-alist's value is
(("^/[^/:]*\\'" . ange-ftp-completion-hook-function)
("^/[^/:]*[^/:.]:" . ange-ftp-hook-function)
("^/[^/]*$" . tramp-completion-file-name-handler)
("\\`/[^/:]+:" . tramp-file-name-handler)
("\\`/:" . file-name-non-special))
@end example
@itemize @minus
Please try to find out which package is responsible for loading
@value{ftppackagename}, and raise a bug report.
@item
Unknown characters in the prompt
A workaround is to require @value{ftppackagename} before @value{tramp} in
your @file{~/.emacs}, because @value{tramp} cleans up the entries in
@code{file-name-handler-alist}:
@value{tramp} needs to recognize the prompt on the remote machine
after execution any command. This is not possible, when the prompt
contains unknown characters like escape sequences for coloring. This
should be avoided on the remote side. @xref{Remote shell setup}. for
setting the regular expression detecting the prompt.
@lisp
;; @value{ftppackagename} temporarily required
(require 'ange-ftp)
;; @value{tramp} cleans up @code{file-name-handler-alist}
(require 'tramp)
@end lisp
@end ifset
@item
@value{tramp} doesn't transfer strings with more than 500 characters
correctly
@ifset xemacs
Not all the older versions of @value{tramp} supported @value{emacsname}
correctly. The first thing to do is to make sure that you have the
latest version of @value{tramp} installed.
If you do, please try and find out exactly the conditions required for
the @value{ftppackagename} handlers to fire. If you can, putting a
breakpoint on @code{efs-ftp-path} and sending in the stack trace along
with your bug report would make it easier for the developers to work out
what is going wrong.
@end ifset
On some few systems, the implementation of @code{process-send-string}
seems to be broken for longer strings. This case, you should
customize the variable @code{tramp-chunksize} to 500. For a
description how to determine whether this is necessary see the
documentation of @code{tramp-chunksize}.
@end itemize
@item
@ -2132,14 +2118,24 @@ fi
@item
@value{tramp} doesn't transfer strings with more than 500 characters
correctly
How can I disable @value{tramp}?
On some few systems, the implementation of @code{process-send-string}
seems to be broken for longer strings. This case, you should
customize the variable @code{tramp-chunksize} to 500. For a
description how to determine whether this is necessary see the
documentation of @code{tramp-chunksize}.
Shame on you, why did you read until now?
@ifset emacs
If you just want to have @value{ftppackagename} as default remote
files access package, you should apply the following code:
@lisp
(setq tramp-default-method "ftp")
@end lisp
@end ifset
Unloading @value{tramp} can be achieved by applying @kbd{M-x
tramp-unload-tramp}.
@ifset emacs
This resets also the @value{ftppackagename} plugins.
@end ifset
@end itemize

View file

@ -4,7 +4,7 @@
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
@set trampver 2.0.51
@set trampver 2.0.52
@c Other flags from configuration
@set prefix /usr/local

View file

@ -1568,7 +1568,7 @@ keymap. See GNU Emacs Manual for details.
@kindex 000 @kbd{C-@@} (@code{set-mark-command})
Set mark and push previous mark on mark ring (@code{set-mark-command}).
@item TAB
@kindex 011 @kbd{TAB} (@code{indent-for-tab-command})
@kindex 011 TAB (@code{indent-for-tab-command})
Indent line for current major mode (@code{indent-for-tab-command}).
@item C-j
@kindex 012 @kbd{C-j} (@code{newline-and-indent})

View file

@ -140,7 +140,7 @@ extended to use the GUI features. This means that your code using the
widget library will also use the new graphic features automatically.
@end enumerate
In order to minimize the code that is loaded by users who does not
In order to minimize the code that is loaded by users who do not
create any widgets, the code has been split in two files:
@cindex widget library, files
@ -315,7 +315,8 @@ buffer, plus you will have these additional commands:
@deffn Command widget-forward &optional count
Move point @var{count} buttons or editing fields forward.
@end deffn
@item @key{M-TAB}
@item @kbd{M-@key{TAB}}
@itemx @kbd{S-@key{TAB}}
@deffn Command widget-backward &optional count
Move point @var{count} buttons or editing fields backward.
@end deffn

View file

@ -789,18 +789,21 @@ set args -geometry 80x40+0+0
# People get bothered when they see messages about non-existent functions...
xgetptr Vsystem_type
set $tem = (struct Lisp_Symbol *) $ptr
xgetptr $tem->xname
set $tem = (struct Lisp_String *) $ptr
set $tem = (char *) $tem->data
# $ptr is NULL in temacs
if ($ptr != 0)
set $tem = (struct Lisp_Symbol *) $ptr
xgetptr $tem->xname
set $tem = (struct Lisp_String *) $ptr
set $tem = (char *) $tem->data
# Don't let abort actually run, as it will make stdio stop working and
# therefore the `pr' command above as well.
if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
# The windows-nt build replaces abort with its own function.
break w32_abort
else
break abort
# Don't let abort actually run, as it will make stdio stop working and
# therefore the `pr' command above as well.
if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
# The windows-nt build replaces abort with its own function.
break w32_abort
else
break abort
end
end
# x_error_quitter is defined only on X. But window-system is set up

View file

@ -1,3 +1,91 @@
2006-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
* regex.c (IMMEDIATE_QUIT_CHECK): Use it with SYNC_INPUT as well.
(re_match_2_internal) <on_failure_jump, on_failure_jump_smart>:
Don't check for quit, since any loop will go through fail or jump.
2006-01-24 Chong Yidong <cyd@stupidchicken.com>
* alloc.c (allocate_string_data): Update next_free immediately, to
reduce risk of memory clobberage.
2006-01-24 L$,1 q(Brentey K,Aa(Broly <lorentey@elte.hu>
* xdisp.c (handle_invisible_prop): Set it->position to fix cursor
display when point moves across an ellipsis. If there are
adjacent invisible texts, don't lose the second one's ellipsis.
(x_produce_glyphs): Doc fix.
2006-01-23 Stefan Monnier <monnier@iro.umontreal.ca>
* xterm.c (x_catch_errors_unwind): Yet another int/Lisp_Object mixup.
2006-01-23 Kim F. Storm <storm@cua.dk>
* xdisp.c (handle_single_display_spec): Fix handling of space
property on char from string: set *position rather than
it->current.pos.
(produce_stretch_glyph): Reduce width of stretch glyphs so they
don't get wider than the window (unless truncate-lines is on).
2006-01-22 Stefan Monnier <monnier@iro.umontreal.ca>
* xterm.c: Avoid allocating Lisp data from a signal handler.
(x_error_message): New var to replace x_error_message_string.
(x_error_catcher, x_catch_errors, x_catch_errors_unwind)
(x_check_errors, x_had_errors_p, x_clear_errors, x_error_handler)
(syms_of_xterm): Use it instead of x_error_message_string.
* alloc.c (lisp_align_free): Add an assertion.
(make_interval, allocate_string, make_float, Fcons, Fmake_symbol)
(allocate_misc): If ENABLE_CHECKING is on, check we're not called from
a signal handler.
2006-01-21 Luc Teirlinck <teirllm@auburn.edu>
* dired.c (syms_of_dired) <completion-ignored-extensions>: Doc fix.
2006-01-21 Romain Francoise <romain@orebokech.com>
* xdisp.c (get_window_cursor_type): Fix last change.
Update copyright year.
2006-01-20 Eli Zaretskii <eliz@gnu.org>
* lread.c (Fload): Don't leak the file descriptor returned by
openp if we are going to signal an error.
* w32.c (sys_close): If FD is outside [0..MAXDESC) limits, pass it
directly to _close.
(sys_dup): Protect against new_fd larger than fd_info[] can handle.
(sys_read): If FD is outside [0..MAXDESC) limits, pass it directly
to _read.
(sys_write): If FD is outside [0..MAXDESC) limits, pass it
directly to _write.
* .gdbinit: Don't dereference Vsystem_type's Lisp_Symbol pointer
if it is NULL.
2006-01-20 Kenichi Handa <handa@m17n.org>
* puresize.h (BASE_PURESIZE): Increment to 1190000.
2006-01-19 Chong Yidong <cyd@stupidchicken.com>
* xdisp.c (get_window_cursor_type): Use cursor type specified by
the selected buffer for the echo area too.
2006-01-19 Richard M. Stallman <rms@gnu.org>
* keymap.c (Fmap_keymap): Doc fix.
* s/irix6-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): New definitions.
* keyboard.c (echo_char): Don't omit the space between first two
echoed chars.
* minibuf.c (read_minibuf): Fix previous change.
2006-01-19 Kenichi Handa <handa@m17n.org>
* xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF.
@ -571,7 +659,7 @@
* w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching
GDB to the abort dialog.
2005-12-09 Kyotaro HORIGUCHI <horiguti@meadowy.org> (tiny change)
2005-12-09 Kyotaro HORIGUCHI <horiguti@meadowy.org> (tiny change)
* indent.c (Fvertical_motion): Force move if starting on
stretch glyph.
@ -825,7 +913,7 @@
* s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'.
2005-11-11 David Reitter <david.reitter@gmail.com>
2005-11-11 David Reitter <david.reitter@gmail.com>
* macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey,
macMetaKey, macAltKey. Introduce Qctrl, Qmeta,
@ -857,7 +945,7 @@
ignore_overlay_strings_at_pos_p if dpvec came from an overlay
string, so we skip those overlay strings at current pos.
2005-11-10 Lars Hansen <larsh@soem.dk>
2005-11-10 Lars Hansen <larsh@soem.dk>
* fileio.c (file-regular-p): Doc fix.
@ -968,7 +1056,7 @@
* xdisp.c (display_line): Restore it->current_x and call
extend_face_to_end_of_line when last glyph doesn't fit on line.
(set_glyph_string_background_width): Remove specific tests here
(set_glyph_string_background_width): Remove specific tests here
to see if face background should extend to end of line. Simplify.
2005-10-30 Richard M. Stallman <rms@gnu.org>
@ -1570,7 +1658,7 @@
* dispextern.h (fatal): Delete prototype.
* systime.h: (make_time): Prototype moved from ...
* systime.h (make_time): Prototype moved from ...
* editfns.c (make_time): ... here.
* editfns.c: Move systime.h include after lisp.h.
@ -1804,9 +1892,9 @@
get_current_dir_name.
(get_current_dir_name): Remove prototype.
* xsmfns.c: (get_current_dir_name): Remove prototype.
* xsmfns.c (get_current_dir_name): Remove prototype.
* lisp.h: (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
* lisp.h (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]:
Add prototype.
* sysdep.c [WINDOWSNT]: Add prototype for getwd.
@ -2497,7 +2585,7 @@
* window.c (window_scroll_pixel_based, window_scroll_line_based):
Handle `scroll-preserve-screen-position' non-nil, non-t specially.
(syms_of_window): <scroll-preserve-screen-position>: Doc fix.
(syms_of_window) <scroll-preserve-screen-position>: Doc fix.
2005-07-02 Juri Linkov <juri@jurta.org>
@ -7120,7 +7208,7 @@
* config.in: Rebuild.
* Makefile.in: Run setarch i386 ./temacs if exec-shield is present.
* Makefile.in: Run setarch i386 ./temacs if exec-shield is present.
2004-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
@ -7700,7 +7788,7 @@
* buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes.
* window.c (Fwindow_buffer, Fother_window, Fget_lru_window)
* window.c (Fwindow_buffer, Fother_window, Fget_lru_window)
(Fget_largest_window, Fget_buffer_window, Fdelete_windows_on)
(Freplace_buffer_in_windows, Fset_window_buffer)
(Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes.
@ -9353,7 +9441,7 @@
(parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
(make_image, free_image, prepare_image_for_display, image_ascent)
(four_corners_best, image_background, image_background_transparent)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(make_image_cache, free_image_cache, clear_image_cache)
(Fclear_image_cache, postprocess_image, lookup_image, cache_image)
(forall_images_in_image_cache, x_create_x_image_and_pixmap)
@ -9391,7 +9479,7 @@
(parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
(make_image, free_image, prepare_image_for_display, image_ascent)
(four_corners_best, image_background, image_background_transparent)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(make_image_cache, free_image_cache, clear_image_cache)
(Fclear_image_cache, postprocess_image, lookup_image, cache_image)
(forall_images_in_image_cache, x_create_x_image_and_pixmap)
@ -9423,7 +9511,7 @@
(parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
(make_image, free_image, prepare_image_for_display, image_ascent)
(four_corners_best, image_background, image_background_transparent)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(make_image_cache, free_image_cache, clear_image_cache)
(Fclear_image_cache, postprocess_image, lookup_image, cache_image)
(forall_images_in_image_cache, x_create_x_image_and_pixmap)
@ -9453,7 +9541,7 @@
(parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p)
(make_image, free_image, prepare_image_for_display, image_ascent)
(four_corners_best, image_background, image_background_transparent)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(x_clear_image_1, x_clear_image, x_alloc_image_color)
(make_image_cache, free_image_cache, clear_image_cache)
(Fclear_image_cache, postprocess_image, lookup_image, cache_image)
(forall_images_in_image_cache, x_create_x_image_and_pixmap)
@ -10228,7 +10316,7 @@
(Fx_change_window_property): Add declaration of parameters type and
format. Remove unused variable cons.
* xselect.c: Include stdio,h.
* xselect.c: Include stdio.h.
2004-02-05 Kenichi Handa <handa@m17n.org>
@ -11861,7 +11949,7 @@
2003-07-13 Terje Rosten <terjeros@phys.ntnu.no>
* xterm.c (x_bitmap_icon,x_wm_set_icon_pixmap): Modify to add mask,
* xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap): Modify to add mask,
and use the Gtk+ function gtk_window_icon_from_file if available.
* xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to
@ -16440,7 +16528,7 @@
2002-09-08 Kim F. Storm <storm@cua.dk>
* macros.c (executing_macro_index): Change type to EMACS_INT.
(syms_of_macros): DEFVAR_INT it (needed by kmacro).
(syms_of_macros): DEFVAR_INT it (needed by kmacro).
* macros.h (executing_macro_index): Change type to EMACS_INT.
@ -18928,10 +19016,10 @@
Intern and staticpro QCtype and Qdatagram.
(syms_of_process) [!subprocess]: Intern and staticpro QCtype.
* xfns.c: (QCtype): Remove duplicate declaration and
* xfns.c (QCtype): Remove duplicate declaration and
initialization (is now declared in process.c).
* w32fns.c: (QCtype): Remove duplicate declaration and
* w32fns.c (QCtype): Remove duplicate declaration and
initialization (is now declared in process.c).
2002-03-21 Richard M. Stallman <rms@gnu.org>
@ -19046,7 +19134,7 @@
Doc fix: Member kill_without_query is inverse of query-on-exit flag.
* process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily)
(QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery,QCstop)
(QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery, QCstop)
(QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature):
New variables.
(NETCONN1_P): New macro.
@ -19376,7 +19464,7 @@
2002-02-28 Kim F. Storm <storm@cua.dk>
* window.c: (minibuf_selected_window): Renamed from
* window.c (minibuf_selected_window): Renamed from
Vminibuf_selected_window. Users changed.
(syms_of_window): Staticpro it.
@ -19386,14 +19474,14 @@
which is similar to Vminibuf_scroll_window, but which is only set
on entry to the minibuffer (from a non-minibuffer window):
* window.c: (Vminibuf_selected_window): New variable.
* window.c (Vminibuf_selected_window): New variable.
(struct save_window_data): New member minibuf_selected_window.
(Fset_window_configuration): Restore Vminibuf_selected_window.
(Fcurrent_window_configuration): Save Vminibuf_selected_window.
Set minibuf_scroll_window member to nil if minibuf_level is 0.
(compare_window_configurations): Compare minibuf_selected_window.
* window.h: (Vminibuf_selected_window): Declare extern.
* window.h (Vminibuf_selected_window): Declare extern.
* minibuf.c (read_minibuf): Set Vminibuf_selected_window on first
entry to minibuffer or on entry from a non-minibuffer window.
@ -19519,7 +19607,7 @@
2002-02-22 Eli Zaretskii <eliz@is.elta.co.il>
Support for ICCCM Extended Segments in X selections:
Support for ICCCM Extended Segments in X selections:
* xselect.c <Qcompound_text_no_extensions>: New variable.
(syms_of_xselect): Intern and staticpro it.
@ -19673,7 +19761,7 @@
2002-02-13 Kim F. Storm <storm@cua.dk>
* window.c: (Vmode_line_in_non_selected_windows): Removed.
* window.c (Vmode_line_in_non_selected_windows): Removed.
(mode_line_in_non_selected_windows): New variable.
(syms_of_window): DEFVAR_BOOL it.
@ -19704,7 +19792,7 @@
2002-02-11 Kim F. Storm <storm@cua.dk>
* window.c: (Vmode_line_in_non_selected_windows): New variable.
* window.c (Vmode_line_in_non_selected_windows): New variable.
(syms_of_window): DEFVAR_LISP it.
* dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro.

View file

@ -1,6 +1,6 @@
/* Storage allocation and gc for GNU Emacs Lisp interpreter.
Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -1105,6 +1105,9 @@ lisp_align_free (block)
}
eassert ((aligned & 1) == aligned);
eassert (i == (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1));
#ifdef HAVE_POSIX_MEMALIGN
eassert ((unsigned long)ABLOCKS_BASE (abase) % BLOCK_ALIGN == 0);
#endif
free (ABLOCKS_BASE (abase));
}
UNBLOCK_INPUT;
@ -1419,6 +1422,8 @@ make_interval ()
{
INTERVAL val;
eassert (!handling_signal);
if (interval_free_list)
{
val = interval_free_list;
@ -1837,6 +1842,8 @@ allocate_string ()
{
struct Lisp_String *s;
eassert (!handling_signal);
/* If the free-list is empty, allocate a new string_block, and
add all the Lisp_Strings in it to the free-list. */
if (string_free_list == NULL)
@ -1971,6 +1978,8 @@ allocate_string_data (s, nchars, nbytes)
old_nbytes = GC_STRING_BYTES (s);
data = b->next_free;
b->next_free = (struct sdata *) ((char *) data + needed + GC_STRING_EXTRA);
data->string = s;
s->data = SDATA_DATA (data);
#ifdef GC_CHECK_STRING_BYTES
@ -1983,7 +1992,6 @@ allocate_string_data (s, nchars, nbytes)
bcopy (string_overrun_cookie, (char *) data + needed,
GC_STRING_OVERRUN_COOKIE_SIZE);
#endif
b->next_free = (struct sdata *) ((char *) data + needed + GC_STRING_EXTRA);
/* If S had already data assigned, mark that as free by setting its
string back-pointer to null, and recording the size of the data
@ -2552,6 +2560,8 @@ make_float (float_value)
{
register Lisp_Object val;
eassert (!handling_signal);
if (float_free_list)
{
/* We use the data field for chaining the free list
@ -2671,6 +2681,8 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
{
register Lisp_Object val;
eassert (!handling_signal);
if (cons_free_list)
{
/* We use the cdr for chaining the free list
@ -2852,6 +2864,9 @@ allocate_vectorlike (len, type)
UNBLOCK_INPUT;
#endif
/* This gets triggered by code which I haven't bothered to fix. --Stef */
/* eassert (!handling_signal); */
nbytes = sizeof *p + (len - 1) * sizeof p->contents[0];
p = (struct Lisp_Vector *) lisp_malloc (nbytes, type);
@ -3102,6 +3117,8 @@ Its value and function definition are void, and its property list is nil. */)
CHECK_STRING (name);
eassert (!handling_signal);
if (symbol_free_list)
{
XSETSYMBOL (val, symbol_free_list);
@ -3182,6 +3199,8 @@ allocate_misc ()
{
Lisp_Object val;
eassert (!handling_signal);
if (marker_free_list)
{
XSETMISC (val, marker_free_list);

View file

@ -1037,11 +1037,11 @@ syms_of_dired ()
#endif /* VMS */
DEFVAR_LISP ("completion-ignored-extensions", &Vcompletion_ignored_extensions,
doc: /* *Completion ignores filenames ending in any string in this list.
Directories are ignored if they match any string in this list which
ends in a slash.
This variable does not affect lists of possible completions,
but does affect the commands that actually do completions. */);
doc: /* Completion ignores file names ending in any string in this list.
It does not ignore them if all possible completions end in one of
these strings or when displaying a list of completions.
It ignores directory names if they match any string in this list which
ends in a slash. */);
Vcompletion_ignored_extensions = Qnil;
}

View file

@ -790,6 +790,8 @@ echo_char (c)
else
echo_string = concat2 (echo_string, build_string (" "));
}
else if (STRINGP (echo_string))
echo_string = concat2 (echo_string, build_string (" "));
current_kboard->echo_string
= concat2 (echo_string, make_string (buffer, ptr - buffer));
@ -820,16 +822,16 @@ echo_dash ()
/* Do nothing if we have already put a dash at the end. */
if (SCHARS (current_kboard->echo_string) > 1)
{
Lisp_Object last_char, prev_char, idx;
Lisp_Object last_char, prev_char, idx;
idx = make_number (SCHARS (current_kboard->echo_string) - 2);
prev_char = Faref (current_kboard->echo_string, idx);
idx = make_number (SCHARS (current_kboard->echo_string) - 2);
prev_char = Faref (current_kboard->echo_string, idx);
idx = make_number (SCHARS (current_kboard->echo_string) - 1);
last_char = Faref (current_kboard->echo_string, idx);
idx = make_number (SCHARS (current_kboard->echo_string) - 1);
last_char = Faref (current_kboard->echo_string, idx);
if (XINT (last_char) == '-' && XINT (prev_char) != ' ')
return;
if (XINT (last_char) == '-' && XINT (prev_char) != ' ')
return;
}
/* Put a dash at the end of the buffer temporarily,

View file

@ -718,8 +718,10 @@ map_keymap_call (key, val, fun, dummy)
}
DEFUN ("map-keymap", Fmap_keymap, Smap_keymap, 2, 3, 0,
doc: /* Call FUNCTION for every binding in KEYMAP.
FUNCTION is called with two arguments: the event and its binding.
doc: /* Call FUNCTION once for each binding in KEYMAP.
FUNCTION is called with two arguments: the event that is bound, and
the definition it is bound to.
If KEYMAP has a parent, the parent's bindings are included as well.
This works recursively: if the parent has itself a parent, then the
grandparent's bindings are also included and so on.

View file

@ -982,8 +982,12 @@ Return t if file exists. */)
if (!NILP (Fequal (found, XCAR (tem))))
count++;
if (count > 3)
Fsignal (Qerror, Fcons (build_string ("Recursive load"),
Fcons (found, Vloads_in_progress)));
{
if (fd >= 0)
emacs_close (fd);
Fsignal (Qerror, Fcons (build_string ("Recursive load"),
Fcons (found, Vloads_in_progress)));
}
record_unwind_protect (record_load_unwind, Vloads_in_progress);
Vloads_in_progress = Fcons (found, Vloads_in_progress);
}

View file

@ -653,7 +653,8 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
Lisp_Object root_window = Fframe_root_window (frame);
Lisp_Object mini_window = XWINDOW (root_window)->next;
if (! NILP (mini_window) && !NILP (Fwindow_minibuffer_p (mini_window)))
if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
&& !NILP (Fwindow_minibuffer_p (mini_window)))
Fset_window_buffer (mini_window, empty_minibuf, Qnil);
}

View file

@ -42,7 +42,7 @@ Boston, MA 02110-1301, USA. */
#endif
#ifndef BASE_PURESIZE
#define BASE_PURESIZE (1180000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
#define BASE_PURESIZE (1190000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
#endif
/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */

View file

@ -3,7 +3,7 @@
internationalization features.)
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005 Free Software Foundation, Inc.
2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -1899,8 +1899,9 @@ typedef struct
/* The next available element. */
#define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail])
/* Explicit quit checking is only used on NTemacs. */
#if defined WINDOWSNT && defined emacs && defined QUIT
/* Explicit quit checking is only used on NTemacs and whenever we
use polling to process input events. */
#if defined emacs && (defined WINDOWSNT || defined SYNC_INPUT) && defined QUIT
extern int immediate_quit;
# define IMMEDIATE_QUIT_CHECK \
do { \
@ -5770,7 +5771,6 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
the repetition text and either the following jump or
pop_failure_jump back to this on_failure_jump. */
case on_failure_jump:
IMMEDIATE_QUIT_CHECK;
EXTRACT_NUMBER_AND_INCR (mcnt, p);
DEBUG_PRINT3 ("EXECUTING on_failure_jump %d (to %p):\n",
mcnt, p + mcnt);
@ -5786,7 +5786,6 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
then we can use a non-backtracking loop based on
on_failure_keep_string_jump instead of on_failure_jump. */
case on_failure_jump_smart:
IMMEDIATE_QUIT_CHECK;
EXTRACT_NUMBER_AND_INCR (mcnt, p);
DEBUG_PRINT3 ("EXECUTING on_failure_jump_smart %d (to %p).\n",
mcnt, p + mcnt);

View file

@ -33,5 +33,9 @@
#undef TIOCSIGSEND /* defined in usg5-4.h */
/* Tested on Irix 6.5. SCM worked on earlier versions. */
#define GC_SETJMP_WORKS 1
#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
/* arch-tag: d7ad9ec2-54ad-4b2f-adf2-0070c5c63e83
(do not change this comment) */

View file

@ -3426,13 +3426,13 @@ sys_close (int fd)
{
int rc;
if (fd < 0 || fd >= MAXDESC)
if (fd < 0)
{
errno = EBADF;
return -1;
}
if (fd_info[fd].cp)
if (fd < MAXDESC && fd_info[fd].cp)
{
child_process * cp = fd_info[fd].cp;
@ -3474,7 +3474,7 @@ sys_close (int fd)
because socket handles are fully fledged kernel handles. */
rc = _close (fd);
if (rc == 0)
if (rc == 0 && fd < MAXDESC)
fd_info[fd].flags = 0;
return rc;
@ -3486,7 +3486,7 @@ sys_dup (int fd)
int new_fd;
new_fd = _dup (fd);
if (new_fd >= 0)
if (new_fd >= 0 && new_fd < MAXDESC)
{
/* duplicate our internal info as well */
fd_info[new_fd] = fd_info[fd];
@ -3641,13 +3641,13 @@ sys_read (int fd, char * buffer, unsigned int count)
DWORD waiting;
char * orig_buffer = buffer;
if (fd < 0 || fd >= MAXDESC)
if (fd < 0)
{
errno = EBADF;
return -1;
}
if (fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET))
if (fd < MAXDESC && fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET))
{
child_process *cp = fd_info[fd].cp;
@ -3785,13 +3785,13 @@ sys_write (int fd, const void * buffer, unsigned int count)
{
int nchars;
if (fd < 0 || fd >= MAXDESC)
if (fd < 0)
{
errno = EBADF;
return -1;
}
if (fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET))
if (fd < MAXDESC && fd_info[fd].flags & (FILE_PIPE | FILE_SOCKET))
{
if ((fd_info[fd].flags & FILE_WRITE) == 0)
{
@ -3833,7 +3833,7 @@ sys_write (int fd, const void * buffer, unsigned int count)
}
#ifdef HAVE_SOCKETS
if (fd_info[fd].flags & FILE_SOCKET)
if (fd < MAXDESC && fd_info[fd].flags & FILE_SOCKET)
{
unsigned long nblock = 0;
if (winsock_lib == NULL) abort ();

View file

@ -1,7 +1,7 @@
/* Display generation from window structure and buffer text.
Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995,
1997, 1998, 1999, 2000, 2001, 2002, 2003,
2004, 2005 Free Software Foundation, Inc.
2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -3617,6 +3617,11 @@ handle_invisible_prop (it)
skip starting with next_stop. */
if (invis_p)
IT_CHARPOS (*it) = next_stop;
/* If there are adjacent invisible texts, don't lose the
second one's ellipsis. */
if (invis_p == 2)
display_ellipsis_p = 1;
}
while (invis_p);
@ -3637,7 +3642,23 @@ handle_invisible_prop (it)
it->stack[it->sp - 1].display_ellipsis_p = display_ellipsis_p;
}
else if (display_ellipsis_p)
setup_for_ellipsis (it, 0);
{
/* Make sure that the glyphs of the ellipsis will get
correct `charpos' values. If we would not update
it->position here, the glyphs would belong to the
last visible character _before_ the invisible
text, which confuses `set_cursor_from_row'.
We use the last invisible position instead of the
first because this way the cursor is always drawn on
the first "." of the ellipsis, whenever PT is inside
the invisible text. Otherwise the cursor would be
placed _after_ the ellipsis when the point is after the
first invisible character. */
it->position.charpos = IT_CHARPOS (*it) - 1;
it->position.bytepos = CHAR_TO_BYTE (it->position.charpos);
setup_for_ellipsis (it, 0);
}
}
}
@ -4151,7 +4172,7 @@ handle_single_display_spec (it, spec, object, position,
{
it->method = GET_FROM_STRETCH;
it->object = value;
it->current.pos = it->position = start_pos;
*position = it->position = start_pos;
}
#ifdef HAVE_WINDOW_SYSTEM
else
@ -19772,6 +19793,10 @@ produce_stretch_glyph (it)
else
ascent = (height * FONT_BASE (font)) / FONT_HEIGHT (font);
if (width > 0 && !it->truncate_lines_p
&& it->current_x + width > it->last_visible_x)
width = it->last_visible_x - it->current_x - 1;
if (width > 0 && height > 0 && it->glyph_row)
{
Lisp_Object object = it->stack[it->sp - 1].string;
@ -19912,8 +19937,8 @@ calc_line_height_property (it, val, font, boff, override)
/* RIF:
Produce glyphs/get display metrics for the display element IT is
loaded with. See the description of struct display_iterator in
dispextern.h for an overview of struct display_iterator. */
loaded with. See the description of struct it in dispextern.h
for an overview of struct it. */
void
x_produce_glyphs (it)
@ -20913,8 +20938,13 @@ get_window_cursor_type (w, glyph, width, active_cursor)
{
if (w == XWINDOW (echo_area_window))
{
*width = FRAME_CURSOR_WIDTH (f);
return FRAME_DESIRED_CURSOR (f);
if (EQ (b->cursor_type, Qt) || NILP (b->cursor_type))
{
*width = FRAME_CURSOR_WIDTH (f);
return FRAME_DESIRED_CURSOR (f);
}
else
return get_specified_cursor_type (b->cursor_type, width);
}
*active_cursor = 0;

View file

@ -1,6 +1,6 @@
/* X Communication module for terminals which understand the X protocol.
Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005 Free Software Foundation, Inc.
2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -7438,7 +7438,12 @@ x_text_icon (f, icon_name)
/* If non-nil, this should be a string.
It means catch X errors and store the error message in this string. */
static Lisp_Object x_error_message_string;
struct x_error_message_stack {
char string[X_ERROR_MESSAGE_SIZE];
Display *dpy;
struct x_error_message_stack *prev;
};
static struct x_error_message_stack *x_error_message;
/* An X error handler which stores the error message in
x_error_message_string. This is called from x_error_handler if
@ -7450,7 +7455,7 @@ x_error_catcher (display, error)
XErrorEvent *error;
{
XGetErrorText (display, error->error_code,
SDATA (x_error_message_string),
x_error_message->string,
X_ERROR_MESSAGE_SIZE);
}
@ -7475,16 +7480,23 @@ x_catch_errors (dpy)
Display *dpy;
{
int count = SPECPDL_INDEX ();
struct x_error_message_stack *data = malloc (sizeof (*data));
Lisp_Object dummy;
#ifdef ENABLE_CHECKING
dummy = make_number ((EMACS_INT)dpy + (EMACS_INT)x_error_message);
#else
dummy = Qnil;
#endif
/* Make sure any errors from previous requests have been dealt with. */
XSync (dpy, False);
record_unwind_protect (x_catch_errors_unwind,
Fcons (make_save_value (dpy, 0),
x_error_message_string));
data->dpy = dpy;
data->string[0] = 0;
data->prev = x_error_message;
x_error_message = data;
x_error_message_string = make_uninit_string (X_ERROR_MESSAGE_SIZE);
SSET (x_error_message_string, 0, 0);
record_unwind_protect (x_catch_errors_unwind, dummy);
return count;
}
@ -7492,11 +7504,11 @@ x_catch_errors (dpy)
/* Unbind the binding that we made to check for X errors. */
static Lisp_Object
x_catch_errors_unwind (old_val)
Lisp_Object old_val;
x_catch_errors_unwind (dummy)
Lisp_Object dummy;
{
Lisp_Object first = XCAR (old_val);
Display *dpy = XSAVE_VALUE (first)->pointer;
Display *dpy = x_error_message->dpy;
struct x_error_message_stack *tmp;
/* The display may have been closed before this function is called.
Check if it is still open before calling XSync. */
@ -7507,7 +7519,13 @@ x_catch_errors_unwind (old_val)
UNBLOCK_INPUT;
}
x_error_message_string = XCDR (old_val);
tmp = x_error_message;
x_error_message = x_error_message->prev;
free (tmp);
eassert (EQ (dummy,
make_number ((EMACS_INT)dpy + (EMACS_INT)x_error_message)));
return Qnil;
}
@ -7523,8 +7541,8 @@ x_check_errors (dpy, format)
/* Make sure to catch any errors incurred so far. */
XSync (dpy, False);
if (SREF (x_error_message_string, 0))
error (format, SDATA (x_error_message_string));
if (x_error_message->string[0])
error (format, x_error_message->string);
}
/* Nonzero if we had any X protocol errors
@ -7537,7 +7555,7 @@ x_had_errors_p (dpy)
/* Make sure to catch any errors incurred so far. */
XSync (dpy, False);
return SREF (x_error_message_string, 0) != 0;
return x_error_message->string[0] != 0;
}
/* Forget about any errors we have had, since we did x_catch_errors on DPY. */
@ -7546,7 +7564,7 @@ void
x_clear_errors (dpy)
Display *dpy;
{
SSET (x_error_message_string, 0, 0);
x_error_message->string[0] = 0;
}
/* Stop catching X protocol errors and let them make Emacs die.
@ -7728,7 +7746,7 @@ x_error_handler (display, error)
Display *display;
XErrorEvent *error;
{
if (! NILP (x_error_message_string))
if (x_error_message)
x_error_catcher (display, error);
else
x_error_quitter (display, error);
@ -10970,8 +10988,7 @@ x_initialize ()
void
syms_of_xterm ()
{
staticpro (&x_error_message_string);
x_error_message_string = Qnil;
x_error_message = NULL;
staticpro (&x_display_name_list);
x_display_name_list = Qnil;