Mercurial > emacs
changeset 83395:b31326248cf6
Merged from miles@gnu.org--gnu-2005 (patch 142-148, 615-628)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-615
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-616
Add lisp/mh-e/.arch-inventory
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-617
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-618
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-619
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-620
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-621
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-622
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-623
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-624
Update from CVS: lisp/smerge-mode.el: Add 'tools' to file keywords.
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-625
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-626
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-627
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-628
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-142
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-143
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-144
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-145
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-146
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-147
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-148
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-435
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Tue, 01 Nov 2005 06:23:08 +0000 |
parents | 7d093d9d4479 (current diff) 02b974c70179 (diff) |
children | 201f610eb492 |
files | ChangeLog admin/FOR-RELEASE configure configure.in etc/TODO lisp/ChangeLog lisp/allout.el lisp/emacs-lisp/bytecomp.el lisp/faces.el lisp/files.el lisp/font-lock.el lisp/gnus/pgg-def.el lisp/gnus/pgg-gpg.el lisp/gnus/pgg-parse.el lisp/gnus/pgg-pgp.el lisp/gnus/pgg-pgp5.el lisp/gnus/pgg.el lisp/help-fns.el lisp/international/mule.el lisp/ldefs-boot.el lisp/mh-e/.arch-inventory lisp/progmodes/gdb-ui.el lisp/server.el lisp/simple.el lisp/smerge-mode.el lisp/subr.el lisp/term/x-win.el lisp/vc.el lisp/whitespace.el lispref/ChangeLog man/ChangeLog man/newsticker.texi src/coding.h src/data.c src/fringe.c src/lread.c src/macterm.c src/minibuf.c src/xterm.c |
diffstat | 143 files changed, 7610 insertions(+), 5427 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,12 @@ +2005-10-24 Steven Tamm <steventamm@mac.com> + + * configure.in: Fix darwin386 configuration issue + * configure: Regenerate + +2005-10-22 Eli Zaretskii <eliz@gnu.org> + + * INSTALL.CVS: Add mh-autoloads to the partial rebuild procedure. + 2005-10-17 Bill Wohler <wohler@newt.com> * make-dist: Create and populate etc/images/low-color.
--- a/INSTALL.CVS Sat Oct 29 11:50:12 2005 +0000 +++ b/INSTALL.CVS Tue Nov 01 06:23:08 2005 +0000 @@ -25,24 +25,27 @@ (If you want to install the Emacs binary, type "make install" instead of "make" in the last command.) -Occasionally the file "lisp/loaddefs.el" will need be updated to reflect -new autoloaded functions. If you see errors about undefined lisp -functions during compilation, that may be the reason. Another symptom -may be an error saying that "loaddefs.el" could not be found; this is -due to a change in the way loaddefs.el was handled in CVS, and should -only happen once, for users that are updating old CVS trees. +Occasionally the files "lisp/loaddefs.el" or lisp/mh-e/mh-loaddefs.el +will need be updated to reflect new autoloaded functions. If you see +errors about undefined lisp functions during compilation, that may be +the reason. Another symptom may be an error saying that "loaddefs.el" +could not be found; this is due to a change in the way loaddefs.el was +handled in CVS, and should only happen once, for users that are +updating old CVS trees. -To update loaddefs.el, do: +To update loaddefs.el and mh-loaddefs.el, do: $ cd lisp - $ make autoloads EMACS=../src/emacs + $ make autoloads mh-autoloads EMACS=../src/emacs -If either of above procedures fails, try "make bootstrap". +If either of the above partial procedures fails, try "make bootstrap". Users of non-Posix systems (MS-Windows etc.) should run the platform-specific configuration scripts (nt/configure.bat, config.bat, etc.) before "make bootstrap" or "make"; the rest of the procedure is -applicable to those systems as well. +applicable to those systems as well, except that the value of the +EMACS variable on the Make command line might be different, e.g., +../bin/emacs.exe or some such. Questions, requests, and bug reports about the CVS versions of Emacs should be sent to emacs-pretest-bug@gnu.org rather than gnu.emacs.help
--- a/admin/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/admin/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,7 @@ +2005-10-27 Chong Yidong <cyd@stupidchicken.com> + + * FOR-RELEASE: Fringe angle bitmap at eob fixed. + 2005-10-19 Chong Yidong <cyd@stupidchicken.com> * FOR-RELEASE (New features): max-image-size implemented.
--- a/admin/FOR-RELEASE Sat Oct 29 11:50:12 2005 +0000 +++ b/admin/FOR-RELEASE Tue Nov 01 06:23:08 2005 +0000 @@ -27,9 +27,7 @@ * NEW FEATURES -** Rework how the fringe "angle" bitmap at at bottom of buffer is -shown to include an indication of whether the last line has a NL or not. -[Assigned to KFS] +** Change .emacs.d/.emacs to .emacs.d/emacs. ** Rework how fringe bitmaps are defined and used. Currently, bitmap usage and bitmap appearence are "mixed-up" in a @@ -48,6 +46,8 @@ * BUGS +** VC bug report from Peter Milliken on Sep 21 (emacs-pretest-bug). + ** TCP server processes do not work on Windows. TCP/IP server processes created with `make-network-process' consume
--- a/configure Sat Oct 29 11:50:12 2005 +0000 +++ b/configure Tue Nov 01 06:23:08 2005 +0000 @@ -2571,7 +2571,7 @@ machine=intel386 case "${canonical}" in *-cygwin ) opsys=cygwin ;; - *-darwin ) opsys=darwin + *-darwin* ) opsys=darwin CPP="${CC-cc} -E -no-cpp-precomp" ;; *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; @@ -2629,12 +2629,6 @@ machine=powermac opsys=darwin # Define CPP as follows to make autoconf work correctly. CPP="${CC-cc} -E -no-cpp-precomp" - # Use fink packages if available. - if test -d /sw/include && test -d /sw/lib; then - GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib" - CPP="${CPP} ${GCC_TEST_OPTIONS}" - NON_GCC_TEST_OPTIONS=${GCC_TEST_OPTIONS} - fi ;; ## AMD x86-64 Linux-based GNU system
--- a/configure.in Sat Oct 29 11:50:12 2005 +0000 +++ b/configure.in Tue Nov 01 06:23:08 2005 +0000 @@ -1089,7 +1089,7 @@ machine=intel386 case "${canonical}" in *-cygwin ) opsys=cygwin ;; - *-darwin ) opsys=darwin + *-darwin* ) opsys=darwin CPP="${CC-cc} -E -no-cpp-precomp" ;; *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;;
--- a/etc/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/etc/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,18 @@ +2005-10-27 Dan Nicolaescu <dann@ics.uci.edu> + + * e/eterm-color.ti (el1): Undo 2005-10-23 change. + Add some comments on how to update this file. Add ri + capability that has long been supported by term.el. + +2005-10-25 Nick Roberts <nickrob@snap.net.nz> + + * images/gud/until.xpm: Colour correction. + +2005-10-23 Richard M. Stallman <rms@gnu.org> + + * e/eterm-color.ti (el1): Capability deleted, + since term.el doesn't implement it. + 2005-10-20 Dan Nicolaescu <dann@ics.uci.edu> * e/eterm-color.ti: Change the terminal name to eterm-color.
--- a/etc/NEWS Sat Oct 29 11:50:12 2005 +0000 +++ b/etc/NEWS Tue Nov 01 06:23:08 2005 +0000 @@ -1284,8 +1284,8 @@ part of a prompt is deleted, then the entire prompt must be deleted and that all prompts must stay at the beginning of a line. If this is not the case, then `comint-kill-region' behaves just like -`kill-region' if read-only are involved: it copies the text to the -kill-ring, but does not delete it. +`kill-region' if read-only properties are involved: it copies the text +to the kill-ring, but does not delete it. +++ *** The new command `comint-insert-previous-argument' in comint-derived @@ -1522,6 +1522,7 @@ +++ ** savehist saves minibuffer histories between sessions. +To use this feature, put (savehist-load) in your `.emacs' file. +++ ** Filesets are collections of files. You can define a fileset in @@ -1823,15 +1824,16 @@ *** many substantial fixes and refinements, including: - - repaired inhibition of inadvertant edits to concealed text + - repaired inhibition of inadvertent edits to concealed text - repaired retention of topic body hanging indent upon topic depth shifts - prevent "containment discontinuities" where a topic is shifted deeper - than the offspring-depth of its' container + than the offspring-depth of its container - easy to adopt the distinctive bullet of a topic in a topic created relative to it, or select a new one, or use the common topic bullet - plain bullets, by default, now alternate between only two characters - ('.' and ','), yielding less cluttered outlines. - - many internal fixes. + ('.' and ','), yielding less cluttered outlines + - many internal fixes + - version number incremented to 2.1 ** The variable `woman-topic-at-point' was renamed to `woman-use-topic-at-point' and behaves differently: if this @@ -3475,6 +3477,13 @@ dangerous; otherwise it returns a reason why the form might be unsafe (calls unknown function, alters global variable, etc). ++++ +*** New macro `eval-at-startup' specifies expressions to +evaluate when Emacs starts up. If this is done after startup, +it evaluates those expressions immediately. + +This is useful in packages that can be preloaded. + *** `list-faces-display' takes an optional argument, REGEXP. If it is non-nil, the function lists only faces matching this regexp.
--- a/etc/PROBLEMS Sat Oct 29 11:50:12 2005 +0000 +++ b/etc/PROBLEMS Tue Nov 01 06:23:08 2005 +0000 @@ -2007,7 +2007,13 @@ Supposedly the newer 32-bit version of this server doesn't have the problem. -** Known problems with the MS-Windows port of Emacs 21.2. +** Known problems with the MS-Windows port of Emacs 22.1 + +Using create-fontset-from-ascii-font or the --font startup parameter +with a Chinese, Japanese or Korean font leads to display problems. +Use a Latin-only font as your default font. If you want control over +which font is used to display Chinese, Japanese or Korean character, +use create-fontset-from-fontset-spec to define a fontset. Frames are not refreshed while the File or Font dialog or a pop-up menu is displayed. This also means help text for pop-up menus is not @@ -2027,13 +2033,10 @@ Some minor flickering still persists during mouse-tracking, although not as severely as in 21.1. -Emacs can sometimes abort when non-ASCII text, possibly with null -characters, is copied and pasted into a buffer. - An inactive cursor remains in an active window after the Windows Manager driven switch of the focus, until a key is pressed. -Windows input methods are not recognized by Emacs (as of v21.2). Some +Windows input methods are not recognized by Emacs. Some of these input methods cause the keyboard to send characters encoded in the appropriate coding system (e.g., ISO 8859-1 for Latin-1 characters, ISO 8859-8 for Hebrew characters, etc.). To make this
--- a/etc/TODO Sat Oct 29 11:50:12 2005 +0000 +++ b/etc/TODO Tue Nov 01 06:23:08 2005 +0000 @@ -37,8 +37,8 @@ * Important features: ** Provide user-friendly ways to list all available font families, - display a font as a sample, etc. [fx is looking at multilingual - font selection for Emacs 22.] + list fonts, display a font as a sample, etc. [fx is looking at + multilingual font selection for Emacs 22.] ** Program Enriched mode to read and save in RTF. [Is there actually a decent single definition of RTF? Maybe see info at @@ -146,6 +146,10 @@ Bison input files, for instance, or other kinds of text where one language is embedded in another language. +** Arrange a way for an input method to return the first character + immediately, then replace it later. So that C-s a with + input method latin-1-postfix would immediately search for an a. + ** Give start-process the ability to direct standard-error output to a different filter. @@ -230,7 +234,7 @@ ** Investigate using the language environment (or locale?) to set up more things, such as the default Ispell dictionary, calendar - holidays, quoting characters?,... + holidays, quoting characters, space after periods and colons, ... ** Improve the GC (generational, incremental). (We may be able to use the Boehm collector.) [See the Boehm-GC branch in CVS for work on @@ -243,8 +247,6 @@ ** Provide an optional feature which computes a scroll bar slider's size and its position from lines instead of characters. -** Make the Custom themes support do useful things. - ** Add support for SVG (Scalable Vector Graphics) rendering to Emacs.
--- a/etc/e/eterm-color.ti Sat Oct 29 11:50:12 2005 +0000 +++ b/etc/e/eterm-color.ti Tue Nov 01 06:23:08 2005 +0000 @@ -1,4 +1,9 @@ eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96, +# When updating this file, etc/e/eterm-color should be regenerated by +# running "make e/eterm-color" in the etc directory. +# Any change to this file should be done at the same time with a +# corresponding change to the TERMCAP evironment variable in term.el. +# Comments in term.el specify where each of these capabilities is implemented. colors#8, cols#80, lines#24, @@ -47,6 +52,7 @@ op=\E[39;49m, rc=\E8, rev=\E[7m, + ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
--- a/etc/images/gud/until.xpm Sat Oct 29 11:50:12 2005 +0000 +++ b/etc/images/gud/until.xpm Tue Nov 01 06:23:08 2005 +0000 @@ -2,7 +2,7 @@ static char * goto_xpm[] = { "24 24 6 1", " c None", -". c #ff0000", +". c #cc0033", "X c #616161", "o c #2a1f55", "O c #adadad",
--- a/leim/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/leim/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,24 @@ +2005-10-28 Juri Linkov <juri@jurta.org> + + * quail/symbol-ksc.el: Add missing characters from 1st pos of + every table of [korean-ksc5601], and swap incorrectly ordered + characters at pos 91 and 90. + +2005-10-26 Torsten Bronger <bronger@physik.rwth-aachen.de> (tiny change) + + * quail/latin-ltx.el ("TeX"): Change "\," mapping to U+202F (not + U+2006). Add more mappings from TeX's textcomp package. + +2005-10-25 Juri Linkov <juri@jurta.org> + + * quail/cyrillic.el ("cyrillic-translit"): Set 4th arg `guidance' + to t for this multi-key input method. + +2005-10-24 Kenichi Handa <handa@m17n.org> + + * quail/uni-input.el (ucs-input-activate): Don't add + quail-kill-guidance-buf to kill-buffer-hook. + 2005-07-08 Kenichi Handa <handa@m17n.org> * quail/japanese.el (quail-japanese-kanji-kkc): Fix order of
--- a/leim/quail/cyrillic.el Sat Oct 29 11:50:12 2005 +0000 +++ b/leim/quail/cyrillic.el Tue Nov 01 06:23:08 2005 +0000 @@ -997,7 +997,7 @@ ;; language-independent and universal. It should be able to generate all ;; Cyrillic symbols. (quail-define-package - "cyrillic-translit" "Cyrillic" ",L6(Bt" nil + "cyrillic-translit" "Cyrillic" ",L6(Bt" t "Intuitively transliterated keyboard layout. Most convenient for entering Russian, but all Cyrillic characters are included. Should handle most cases. However:
--- a/leim/quail/latin-ltx.el Sat Oct 29 11:50:12 2005 +0000 +++ b/leim/quail/latin-ltx.el Tue Nov 01 06:23:08 2005 +0000 @@ -299,7 +299,7 @@ ("\\'m" ?ḿ) ("\\'p" ?ṕ) ("\\'w" ?ẃ) - ("\\," ? ) + ("\\," ? ) ("\\." ?̇) ("\\.B" ?Ḃ) ("\\.D" ?Ḋ) @@ -960,6 +960,31 @@ ("\\frq" ?›) ("\\flqq" ?\«) ("\\\"<" ?\«) ("\\frqq" ?\») ("\\\">" ?\») + + ("\\-" ?Â) ;; soft hyphen + + ("\\textmu" ?µ) + ("\\textfractionsolidus" ?â„) + ("\\textbigcircle" ?âƒ) + ("\\textmusicalnote" ?♪) + ("\\textdied" ?âœ) + ("\\textcolonmonetary" ?â‚¡) + ("\\textwon" ?â‚©) + ("\\textnaira" ?₦) + ("\\textpeso" ?₱) + ("\\textlira" ?₤) + ("\\textrecipe" ?â„ž) + ("\\textinterrobang" ?‽) + ("\\textpertenthousand" ?‱) + ("\\textbaht" ?฿) + ("\\textnumero" ?â„–) + ("\\textdiscount" ?â’) + ("\\textestimated" ?â„®) + ("\\textopenbullet" ?â—¦) + ("\\textlquill" ?â…) + ("\\textrquill" ?â†) + ("\\textcircledP" ?â„—) + ("\\textreferencemark" ?※) ) ;; arch-tag: 3daae613-2c53-446e-a0a1-ee2e1ebed15f
--- a/leim/quail/symbol-ksc.el Sat Oct 29 11:50:12 2005 +0000 +++ b/leim/quail/symbol-ksc.el Tue Nov 01 06:23:08 2005 +0000 @@ -42,10 +42,10 @@ $(C!<(Bunit$(C!=4\@'(B $(C!<(Bfrac$(C!=:P<v(B $(C!<(Btextline$(C!=!)!*!+!,!-(B $(C!<(Bwn$(C!="_!<(Bks$(C!="^!<(BNo$(C!="`!<"a!="a(B $(C!<(Bdag$(C!="S(B $(C!<(Bddag$(C!="T!<(Bpercent$(C!="6(B $(C!<(Bam$(C!="c!<(Bpm$(C!="d!<"b!="b!<(BTel$(C!="e!<(Bwon$(C!=#\(B $(C!<(Byen$(C!=!M(B $(C!<(Bpound$(C!=!L(B - $(C!<(BEng$(C!=#A#B#C!&(B $(C!<(Benum$(C!=#0#1#2!&(B $(C!<(BRuss$(C!=,",#,$!&!<(BGreek$(C!=%A%B%C!&(B + $(C!<(BEng$(C!=#A#B#C!&(B $(C!<(Benum$(C!=#0#1#2!&(B $(C!<(BRuss$(C!=,!,",#!&!<(BGreek$(C!=%A%B%C!&(B $(C!<(Beng$(C!=#a#b#c!&(B $(C!<(Beasc$(C!=?5>n(BASCII$(C!<(Bruss$(C!=,Q,R,S!&!<(Bgreek$(C!=%a%b%c!&(B - $(C!<(BRom$(C!=%0%1%2!&(B $(C!<(BScan$(C!=("(#($!&(B $(C!<(Bhira$(C!=*"*#*$(B - $(C!<(Brom$(C!=%!%"%#!&(B $(C!<(Bscan$(C!=)")#)$!&(B $(C!<(Bkata$(C!=+"+#+$(B + $(C!<(BRom$(C!=%0%1%2!&(B $(C!<(BScan$(C!=(!("(#!&(B $(C!<(Bhira$(C!=*!*"*#(B + $(C!<(Brom$(C!=%!%"%#!&(B $(C!<(Bscan$(C!=)!)")#!&(B $(C!<(Bkata$(C!=+!+"+#(B $(C!<(Bojaso$(C!=(1!-(>!<(Bpjaso$(C!=)1!-)>!<(Boeng$(C!=(M!-(f!<(Bpeng$(C!=)M!-)f(B $(C!<(Bogana$(C!=(?!-(L!<(Bpgana$(C!=)?!-)L!<(Bonum$(C!=(g!-(u!<(Bpnum$(C!=)g!-)u(B $(C!<@Z<R!=(B2$(C9z=D(B + $(C$U(B(S) $(C$o(B(t_) $(C$q(B(D) $(C$p(B(DD) $(C$a(B(aD) $(C$v(B(_d) $(C$u(B(G) $(C$}(B(uk)") @@ -53,10 +53,10 @@ (quail-define-rules ("(" "$(C!2!4!6!8!:!<(B") (")" "$(C!3!5!7!9!;!=(B") - ("math" "$(C!>!?!@!A!B!C!D!E!P!Q!R!S!T!U!V!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~"""#"$"1"2"3(B") - ("pic" "$(C!Y![!Z!\!]!^!_!`!a!b!c!d!e"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"4(B") + ("math" "$(C!>!?!@!A!B!C!D!E!P!Q!R!S!T!U!V!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~"!"""#"$"1"2"3(B") + ("pic" "$(C!Y!Z![!\!]!^!_!`!a!b!c!d!e"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"4(B") ("arrow" "$(C!f!g!h!i!j"U"V"W"X"Y(B") - ("music" "$(C"["Z"\"](B") + ("music" "$(C"Z"["\"](B") ("won" "$(C#\(B") ("yen" "$(C!M(B") ("pound" "$(C!L(B") @@ -78,7 +78,7 @@ ("am" "$(C"c(B") ("pm" "$(C"d(B") ("Tel" "$(C"e(B") - ("easc" "$(C#"###$#%#&#'#(#)#*#+#,#-#.#/#:#;#<#=#>#?#@#[#]#^#_#`#{#|#}#~(B") + ("easc" "$(C#!#"###$#%#&#'#(#)#*#+#,#-#.#/#:#;#<#=#>#?#@#[#]#^#_#`#{#|#}#~(B") ("enum" "$(C#0#1#2#3#4#5#6#7#8#9(B") ("Eng" "$(C#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z(B") ("eng" "$(C#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z(B") @@ -179,24 +179,24 @@ ("rom" "$(C%!%"%#%$%%%&%'%(%)%*(B") ("Greek" "$(C%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X(B") ("greek" "$(C%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x(B") - ("line" "$(C&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&[&Z&\&]&^&_&`&a&b&c&d(B") - ("unit" "$(C'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'['Z'\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o(B") - ("Scan" "$(C("(#($(&((()(*(+(,(-(.(/(B") + ("line" "$(C&!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d(B") + ("unit" "$(C'!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o(B") + ("Scan" "$(C(!("(#($(&((()(*(+(,(-(.(/(B") ("ojaso" "$(C(1(2(3(4(5(6(7(8(9(:(;(<(=(>(B") ("ogana" "$(C(?(@(A(B(C(D(E(F(G(H(I(J(K(L(B") ("oeng" "$(C(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(B") ("onum" "$(C(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(B") ("frac" "$(C(v(w(x(y(z({(|(}(~(B") - ("scan" "$(C)")#)$)%)&)')()))*)+),)-).)/)0(B") + ("scan" "$(C)!)")#)$)%)&)')()))*)+),)-).)/)0(B") ("pjaso" "$(C)1)2)3)4)5)6)7)8)9):);)<)=)>(B>") ("pgana" "$(C)?)@)A)B)C)D)E)F)G)H)I)J)K)L(B") ("peng" "$(C)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f(B") ("pnum" "$(C)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u(B") ("index" "$(C)v)w)x)y)z){)|)})~(B") - ("hira" "$(C*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*[*Z*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s(B") - ("kata" "$(C+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+[+Z+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v(B") - ("Russ" "$(C,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A(B") - ("russ" "$(C,Q,R,S,T,U,V,W,X,Y,[,Z,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q(B")) + ("hira" "$(C*!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s(B") + ("kata" "$(C+!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v(B") + ("Russ" "$(C,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A(B") + ("russ" "$(C,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q(B")) ;;; arch-tag: a77d89b9-9847-41d2-8e3a-7cce841ebb3b ;;; symbol-ksc.el ends here
--- a/leim/quail/uni-input.el Sat Oct 29 11:50:12 2005 +0000 +++ b/leim/quail/uni-input.el Tue Nov 01 06:23:08 2005 +0000 @@ -139,7 +139,6 @@ (quail-delete-overlays) (if (eq (selected-window) (minibuffer-window)) (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer)) - (add-hook 'kill-buffer-hook 'quail-kill-guidance-buf nil t) (set (make-local-variable 'input-method-function) 'ucs-input-method)))
--- a/lisp/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,425 @@ +2005-10-28 Juri Linkov <juri@jurta.org> + + * international/quail.el (quail-get-current-str): Translate last + raw character for deterministic input methods. + +2005-10-27 Jay Belanger <belanger@truman.edu> + + * calc/calc-ext.el: Add functions to autoloads. + (math-identity-matrix-p, math-ident-row-p): New functions. + + * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for + multiplication by an identity matrix; don't turn multiplication by + an inverse matrix into division. + (math-div-symbol-fancy): Replace division by matrices with + multiplication by inverse. + + * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices. + + * calc/calc-alg.el (calcFunc-writeoutpower, math-write-out-power) + (calc-writeoutpower): New functions. + +2005-10-27 Romain Francoise <romain@orebokech.com> + + * replace.el (occur-engine): Include colon in mouse-face highlight. + + * dired-x.el: Change Maintainer field. + +2005-10-26 Chong Yidong <cyd@stupidchicken.com> + + * longlines.el (longlines-mode): Bind after-change-functions to + nil during initial decoding and final encoding. + +2005-10-26 Dan Nicolaescu <dann@ics.uci.edu> + + * term.el (term-emulate-terminal, term-handle-colors-array) + (term-handle-ansi-escape): Specify the terminfo capabilities + implemented. + +2005-10-26 Richard M. Stallman <rms@gnu.org> + + * info.el (Info-fontify-node): Fix detection of sentence-break + before *Note. + +2005-10-26 Romain Francoise <romain@orebokech.com> + + * smerge-mode.el: Add `tools' to file keywords. + +2005-10-26 Nick Roberts <nickrob@snap.net.nz> + + * progmodes/gud.el (gud-menu-map): Only display gud-until icon + when the fringe is not available. + + * progmodes/gdb-ui.el (def-gdb-auto-updated-buffer) + (def-gdb-auto-update-trigger): Simplify construction. + (gdb-locals-buffer): Use def-gdb-auto-update-trigger instead of + def-gdb-auto-updated-buffer as gdb-info-locals-handler is + defined explicitly. + (gdb-assembler-buffer): Use def-gdb-auto-update-handler instead of + def-gdb-auto-updated-buffer as gdb-invalidate-assembler is + defined explicitly. + (gdb-info-locals-custom): Remove as it's a no-op. + +2005-10-25 Chong Yidong <cyd@stupidchicken.com> + + * longlines.el (longlines-mode): Remove narrowing before + performing the initial decoding or final encoding. + +2005-10-25 Romain Francoise <romain@orebokech.com> + + * emacs-lisp/find-func.el (find-library-name): Also strip + extension if library name ends in .el, to take advantage of + `find-library-suffixes'. + +2005-10-25 Richard M. Stallman <rms@gnu.org> + + * menu-bar.el (menu-bar-help-menu): Say which kind of therapist. + +2005-10-25 Juri Linkov <juri@jurta.org> + + * textmodes/texinfo.el (texinfo-mode): Change charset of one + quotation mark from [mule-unicode-0100-24ff] to [japanese-jisx0208]. + +2005-10-25 Stefan Monnier <monnier@iro.umontreal.ca> + + * play/blackbox.el (blackbox-mode-map): Move init into declaration. + (blackbox-redefine-key): Add argument `map'. + + * jit-lock.el (jit-lock-fontify-now): Be careful not to skip multiline + regions when moving the jit-lock-context-unfontify-pos boundary. + +2005-10-25 Reiner Steib <Reiner.Steib@gmx.de> + + * net/browse-url.el (browse-url-of-buffer): Add ".html" to + filename. + +2005-10-25 Masatake YAMATO <jet@gyve.org> + + * dired-x.el (dired-virtual): Don't use `dired-insert-headerline'. + +2005-10-25 Michael Cadilhac <michael.cadilhac-@t-lrde.epita.fr> (tiny change) + + * play/blackbox.el (blackbox-redefine-key): New function. + (blackbox-mode-map): Use it to remap existing bindings for cursor + motion instead of binding literal keys. + +2005-10-25 Glenn Morris <rgm@gnu.org> + + * calendar/diary-lib.el (diary-list-entries): Prevent infloop when + diary does not end in a newline. Do not assume a blank line at + the start of the diary file. + +2005-10-25 Kenichi Handa <handa@m17n.org> + + * international/quail.el (quail-translate-key): If the input + method is deterministic and failed to handle the last key, restart + the key handling loop from an appropriate key. + +2005-10-25 Michael Albinus <michael.albinus@gmx.de> + + * vc.el (vc-dired-mode): Extend comment for binding of + `directory-listing-before-filename-regexp'. + +2005-10-25 Stefan Monnier <monnier@iro.umontreal.ca> + + * textmodes/texinfo.el (texinfo-mode): + * textmodes/paragraphs.el (sentence-end-base): Use real chars, so as + not to unnecessarily expose emacs-mule's internal char codes. + +2005-10-25 Nick Roberts <nickrob@snap.net.nz> + + * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Correct help-echo. + Display hand pointer and help-echo on disabled icon too. + (gdb-mouse-until): New function. + (gdb-ann3): Bind it to mouse-2 and drag-mouse-1 in left fringe. + +2005-10-24 Chong Yidong <cyd@stupidchicken.com> + + * menu-bar.el (menu-bar-help-menu): Rename "psychiatrist", in line + with 2005-10-23 change to doctor.el. + + * finder.el (finder-mode-map): Add follow-link binding. + +2005-10-25 Kim F. Storm <storm@cua.dk> + + * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe + to gdb-mouse-toggle-breakpoint-fringe. + (gdb-mouse-toggle-breakpoint-margin): Rename from + gdb-mouse-toggle-breakpoint. Fix doc. + (gdb-mouse-toggle-breakpoint-fringe): New defun. + (gdb-put-string): Add optional SPROPS arg. Add props to string. + (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled + string properties also for fringe breakpoint bitmaps. + +2005-10-24 Carsten Dominik <dominik@science.uva.nl> + + * textmodes/org.el (org-start-icalendar-file): Fix format form. + +2005-10-25 Masatake YAMATO <jet@gyve.org> + + * simple.el (completion-common-substring): + Use `completion-common-substring' prior to `completion-base-size'. + +2005-10-24 Hrvoje Niksic <hniksic@xemacs.org> + + * savehist.el: Require CL while compiling. + (savehist-history-variables): Remove. + (savehist-save-minibuffer-history, savehist-additional-variables) + (savehist-minibuffer-history-variables): New vars. + (savehist-save): Use them. + (savehist-uninstall, savehist-minibuffer-hook): New funs. + (savehist-install): New fun, extracted from savehist-load. + (savehist-load): Use them. + +2005-10-24 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/lisp-mode.el (easy-mmode-define-global-mode): Don't add + a dummy doc-string-elt property. + (defalias, defvaralias, define-category): Add a docstring property. + + * image.el (defimage): + * widget.el (define-widget): + * custom.el (defface, defcustom): Add `doc-string' declaration. + + * emacs-lisp/advice.el (ad-make-advised-definition): Fix arg-order. + (defadvice): Add `doc-string' declaration. + + * emacs-lisp/byte-run.el (macro-declaration-function): + Handle `doc-string' declarations. + (define-obsolete-function-alias, define-obsolete-variable-alias): + Add `doc-string' declaration. + +2005-10-24 Kenichi Handa <handa@m17n.org> + + * international/utf-7.el (utf-7): Add autoload cookie. + + * term/x-win.el: Register more Cyrillic characters in x-keysym-table. + +2005-10-24 Eli Zaretskii <eliz@gnu.org> + + * makefile.w32-in (autoloads): Use "." instead of $(lisp) in the + list of directories passed to batch-update-autoloads. Add "." to + the list of the echoed directories. + + * pgg-def.el: + * pgg-gpg.el: + * pgg-parse.el: + * pgg-pgp.el: + * pgg-pgp5.el: + * pgg.el: Moved here from the gnus subdirectory. + +2005-10-24 Nick Roberts <nickrob@snap.net.nz> + + * progmodes/gud.el (gud-filter): Bind inhibit-read-only to t + in case comint-prompt-read-only is set to t. + + * progmodes/gdb-ui.el (gdb-send): Bind inhibit-read-only to t + in case comint-prompt-read-only is set to t. + +2005-10-24 Ulf Jasper <ulf.jasper@web.de> + + * calendar/icalendar.el (icalendar-version): Increase to 0.13. + Now a string. + (icalendar-import-format): Handle CLASS, STATUS, URL. + Rename `subject' to `summary'. + (icalendar-import-format-summary): Rename from + `icalendar-import-format-subject'. + (icalendar-import-format-url, icalendar-import-format-status) + (icalendar-import-format-class): New variables. + (icalendar--rris): Take variable argument list. + (icalendar--datestring-to-isodate): Remove unnecessary + calendar-style check when converting dates with explicit month names. + (icalendar-export-region): Change return type of conversion + subroutines. Bury current buffer unless error occurred. + (icalendar--convert-to-ical) + (icalendar--parse-summary-and-rest): New functions. + (icalendar--convert-ordinary-to-ical) + (icalendar--convert-weekly-to-ical) + (icalendar--convert-yearly-to-ical) + (icalendar--convert-block-to-ical) + (icalendar--convert-cyclic-to-ical) + (icalendar--convert-anniversary-to-ical): Change return type. + Strip trailing blanks from subject. + (icalendar--convert-sexp-to-ical): Change return type. + Strip trailing blanks from subject. Handle simple sexp + entries as generated by icalendar.el. + (icalendar--convert-float-to-ical) + (icalendar--convert-date-to-ical): Strip trailing blanks from subject. + (icalendar-import-file): Doc fix. + (icalendar--format-ical-event): Handle CLASS, STATUS, URL. + Correct call to icalendar--rris. + (icalendar--convert-ical-to-diary): Doc fix. Rename `subject' to + `summary'. + (icalendar--add-diary-entry): Rename `subject' to `summary'. + +2005-10-24 Romain Francoise <romain@orebokech.com> + + * server.el (server-sentinel): Set query-on-exit flag to nil on + new client processes (it isn't inherited from the server process). + + * replace.el (occur-engine): Rearrange text properties. + +2005-10-23 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/debug.el (debugger-make-xrefs): Don't assume + case-fold-search is nil. + (debug-help-follow): Use help-xref-interned directly. + +2005-10-23 Chong Yidong <cyd@stupidchicken.com> + + * thumbs.el (thumbs-image-type): Add .pbm. + +2005-10-23 Richard M. Stallman <rms@gnu.org> + + * faces.el (inhibit-face-set-after-frame-default): New variable. + (set-face-attribute): Bind it. + (face-set-after-frame-default): Test it. + + * help-fns.el (describe-simplify-lib-file-name): New function. + (describe-function-1, describe-variable): Use it. + + * faces.el (describe-face): Use describe-simplify-lib-file-name. + + * tooltip.el (tooltip-x-offset, tooltip-y-offset): Change defaults. + Eliminate nil as possible value. + (tooltip-hide-delay): Reduce internal-border-width. + + * menu-bar.el (menu-bar-file-menu) <dired>: Change help-echo string. + (menu-bar-file-menu) <new-file>: Likewise. + + * simple.el (line-move-finish): Ignore fields computing LINE-END. + + * international/mule.el (load-with-code-conversion): + Pass full file name to `eval-buffer' unless preloading. + + * textmodes/flyspell.el (flyspell-large-region): + Call ispell-check-version. + + * textmodes/ispell.el (ispell-local-dictionary-overridden): + Fix the make-variable-buffer-local call that was supposed + to be for this variable. + (ispell-aspell-supports-utf8): Doc fix. + (ispell-find-aspell-dictionaries): Preserve elements of + ispell-dictionary-alist for dictionaries that aspell doesn't report. + (ispell-aspell-find-dictionary): Return nil on error. + + * play/doctor.el (doctor-doc): Don't say "psychiatrist". + (doctor-symptoms): Likewise. + + * add-log.el (add-log-current-defun): Clean up handling of DEFUNs. + +2005-10-23 Chong Yidong <cyd@stupidchicken.com> + + * cus-edit.el (custom-button, custom-button-pressed): New vars. + (custom-raised-buttons): Add :set spec. + (custom-button-unraised, custom-button-pressed-unraised): + New faces, so that custom-raised-buttons actually does something. + (custom-mode): Use custom-button and custom-button-pressed. + + * wid-edit.el (widget-specify-button): Don't ignore + widget-mouse-face on graphic terminals. + (widget-move-and-invoke): Cleanup. + +2005-10-23 Thien-Thi Nguyen <ttn@gnu.org> + + * whitespace.el (whitespace-cleanup): Doc fix. + +2005-10-23 Romain Francoise <romain@orebokech.com> + + * emulation/viper.el (viper-set-hooks): Quote forms passed to + `eval-after-load' to avoid evaluating their result. + +2005-10-23 Michael Albinus <michael.albinus@gmx.de> + + * files.el (directory-listing-before-filename-regexp): + New defvar. Replaces `dired-move-to-filename-regexp' from dired.el. + + * dired.el (dired-move-to-filename-regexp): Remove. + All occurences replaced by `directory-listing-before-filename-regexp'. + + * dired-x.el, locate.el, vc.el: + Replace `dired-move-to-filename-regexp' by + `directory-listing-before-filename-regexp'. In vc.el it is + overwritten locally; maybe this can be handled in files.el too. + + * net/ange-ftp.el (ange-ftp-date-regexp): Remove. All occurences + replaced by `directory-listing-before-filename-regexp'. + +2005-10-23 Andreas Schwab <schwab@suse.de> + + * font-lock.el (lisp-font-lock-keywords-2): Add eval-at-startup + and eval-next-after-load. + +2005-10-23 MIYOSHI Masanori <miyoshi@meadowy.org> (tiny change) + + * mouse.el (mouse-drag-region): If the *Messages* buffer doesn't + exist, create it. + +2005-10-23 Ken Manheimer <ken.manheimer@gmail.com> + + * allout.el: Remove autoloads for mailcrypt and crypt++. + Require pgg, pgg-gpg during compilation. + (allout-version): Increment version number to 2.1, and use a literal + rather than RCS Id. + (allout-default-encryption-scheme): Remove. + (allout-passphrase-verifier-handling) + (allout-passphrase-verifier-string) + (allout-file-passphrase-verifier-string) + (allout-passphrase-hint-string): Rename -key- to -passphrase-. + (allout-passphrase-hint-handling): Rename and simplify. + (allout-init): Use `find-file-hook' if available, otherwise + `find-file-hooks'. + (allout-mode): Use `write-file-functions' if available, otherwise + `local-write-file-hooks' and, instead of making auto-save-hook + buffer local, make the write-file-hook activity contingent to + allout-mode. + (allout-mode): Use key-binding substitution in the docstring. + (allout-kill-line): Spell-out kill ring data structure mutation + instead of using byte-compiler-complaint-provoking `pop'. + (allout-insert-listified): Use `insert' rather than `insert-string' + (allout-toggle-current-subtree-encryption): Update docstring, adjust + to new gpp-based encryption, use new `allout-encrypted-topic-p'. + (allout-encrypt-string): Totally revamped vis new underlying + encryption facilities. + (allout-mc-activate-passwd): Remove. + (allout-obtain-passphrase): New, more or less replaces + allout-mc-activate-passwd. + (allout-encrypted-key-info): More or less replaces + allout-encrypted-text-type. + (outlineify-sticky, outlinify-sticky): Add autoload cookie. + (my-mark-marker): Use `(featurep 'xemacs)'. + +2005-10-23 Lars Hansen <larsh@soem.dk> + + * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda. + (byte-compile-file-form-defmumble, byte-compile-defun) + (byte-compile-defmacro): Use it. + (byte-compile-form): Don't call byte-compile-set-symbol-position + when a byte-compile handler is called. + +2005-10-22 Romain Francoise <romain@orebokech.com> + + * savehist.el (savehist-history-variables): Add `grep-find-history'. + + * subr.el (eval-after-load): Convert library name to an absolute + file name using locate-library, since load-history no longer has + library names in it. + +2005-10-22 Richard M. Stallman <rms@gnu.org> + + * files.el (make-temp-file): Move from subr.el. + * subr.el (make-temp-file): Move to files.el. + + * window.el (get-buffer-window-list): Move from subr.el. + * subr.el (get-buffer-window-list): Move to window.el. + + * image.el (image-load-path): Use eval-at-startup to initialize. + + * subr.el (eval-at-startup): New macro. + + * subr.el: Much rearrangement of functions and division + into pages. No code changes. + 2005-10-22 Kenichi Handa <handa@m17n.org> * tar-mode.el (tar-extract): Be sure to call @@ -14,8 +436,8 @@ (image-type-from-file-header): Use it instead of image-type-from-data. Use image-search-load-path instead of only looking in data-directory. (image-type-from-file-name): New defun. - (image-search-load-path): Make PATH arg optional, default to image-load-path. - Change `pathname' to `filename'. + (image-search-load-path): Change `pathname' to `filename'. + Make PATH arg optional, default to image-load-path. 2005-10-21 Richard M. Stallman <rms@gnu.org>
--- a/lisp/add-log.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/add-log.el Tue Nov 01 06:23:08 2005 +0000 @@ -826,31 +826,28 @@ ;; If the desired position is within the defun we found, ;; find the function name. (when (< location (point)) + ;; Move back over function body. (backward-sexp 1) - (let (beg tem) - + (let (beg) + ;; Skip back over typedefs and arglist. + ;; Stop at the function definition itself + ;; or at the line that follows end of function doc string. (forward-line -1) - ;; Skip back over typedefs of arglist. (while (and (not (bobp)) - (looking-at "[ \t\n]")) + (looking-at "[ \t\n]") + (not (looking-back "[*]/)\n" (- (point) 4)))) (forward-line -1)) - ;; See if this is using the DEFUN macro used in Emacs, - ;; or the DEFUN macro used by the C library: - (if (condition-case nil - (and (save-excursion - (end-of-line) - (while (= (preceding-char) ?\\) - (end-of-line 2)) - (backward-sexp 1) - (beginning-of-line) - (setq tem (point)) - (looking-at "DEFUN\\b")) - (>= location tem)) - (error nil)) + ;; If we found a doc string, this must be the DEFUN macro + ;; used in Emacs. Move back to the DEFUN line. + (when (looking-back "[*]/)\n" (- (point) 4)) + (backward-sexp 1) + (beginning-of-line)) + ;; Is this a DEFUN construct? And is LOCATION in it? + (if (and (looking-at "DEFUN\\b") + (>= location (point))) ;; DEFUN ("file-name-directory", Ffile_name_directory, Sfile_name_directory, ...) ==> Ffile_name_directory ;; DEFUN(POSIX::STREAM-LOCK, stream lockp &key BLOCK SHARED START LENGTH) ==> POSIX::STREAM-LOCK (progn - (goto-char tem) (down-list 1) (when (= (char-after (point)) ?\") (forward-sexp 1) @@ -863,6 +860,7 @@ (skip-syntax-backward " ") (point)))) (if (looking-at "^[+-]") + ;; C++. (change-log-get-method-definition) ;; Ordinary C function syntax. (setq beg (point))
--- a/lisp/allout.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/allout.el Tue Nov 01 06:23:08 2005 +0000 @@ -6,6 +6,7 @@ ;; Author: Ken Manheimer <ken dot manheimer at gmail dot com> ;; Maintainer: Ken Manheimer <ken dot manheimer at gmail dot com> ;; Created: Dec 1991 - first release to usenet +;; Version: 2.1 ;; Keywords: outlines wp languages ;; This file is part of GNU Emacs. @@ -45,9 +46,10 @@ ;; formatted as an outline - do ESC-x eval-current-buffer in allout.el ;; to try it out.) ;; - configurable per-file initial exposure settings -;; - symmetric-key and key-pair topic encryption, plus reliable key -;; verification and user-supplied hint maintenance. (see -;; allout-toggle-current-subtree-encryption docstring.) +;; - symmetric-key and key-pair topic encryption, plus symmetric passphrase +;; mnemonic support, with verification against an established passphrase +;; (using a stashed encrypted dummy string) and user-supplied hint +;; maintenance. (see allout-toggle-current-subtree-encryption docstring.) ;; - automatic topic-number maintenance ;; - "hot-spot" operation, for single-keystroke maneuvering and ;; exposure control (see the allout-mode docstring) @@ -79,17 +81,10 @@ ;;;_* Dependency autoloads (eval-when-compile 'cl) ; otherwise, flet compilation fouls -(autoload 'crypt-encrypt-buffer "crypt++") -(setq-default crypt-encryption-type 'gpg) - -(autoload 'mc-encrypt "mailcrypt" - "*Encrypt the current buffer") -(autoload 'mc-activate-passwd "mailcrypt" - "Activate the passphrase matching ID, using PROMPT for a prompt. -Return the passphrase. If PROMPT is nil, only return value if cached.") -(autoload 'mc-gpg-process-region "mc-gpg") -(autoload 'mc-dectivate-passwd "mailcrypt" - "*Deactivate the passphrase cache.") +(eval-when-compile (progn (require 'pgg) + (require 'pgg-gpg))) +(autoload 'pgg-gpg-symmetric-key-p "pgg-gpg" + "True if decoded armor MESSAGE-KEYS has symmetric encryption indicator.") ;;;_* USER CUSTOMIZATION VARIABLES: (defgroup allout nil @@ -428,55 +423,30 @@ "*Bullet signifying encryption of the entry's body." :type '(choice (const nil) string) :group 'allout) -;;;_ = allout-default-encryption-scheme -(defcustom allout-default-encryption-scheme 'mc-scheme-gpg - "*Default allout outline topic encryption mode. - -See mailcrypt variable `mc-schemes' and mailcrypt docs for encryption schemes." - :type 'symbol - :group 'allout) -;;;_ = allout-key-verifier-handling -(defcustom allout-key-verifier-handling 'situate - "*Dictate outline encryption key verifier handling. - -The key verifier is string associated with a file that is encrypted with -the file's current symmetric encryption key. It is used, if present, to -confirm that the key entered by the user is the same as the established -one, or explicitly presenting the user with the choice to go with a -new key when a difference is encountered. - -The range of values are: - - situate - include key verifier string as text in the file's local-vars - section - transient - establish the value as a variable in the file's buffer, but - don't preserve it as a file variable. - disabled - don't establish or do verification. +;;;_ = allout-passphrase-verifier-handling +(defcustom allout-passphrase-verifier-handling t + "*Enable use of symmetric encryption passphrase verifier if non-nil. See the docstring for the `allout-enable-file-variable-adjustment' variable for details about allout ajustment of file variables." - :type '(choice (const situate) - (const transient) - (const disabled)) + :type 'boolean :group 'allout) -(make-variable-buffer-local 'allout-key-verifier-handling) -;;;_ = allout-key-hint-handling -(defcustom allout-key-hint-handling 'always - "*Dictate outline encryption key reminder handling: +(make-variable-buffer-local 'allout-passphrase-verifier-handling) +;;;_ = allout-passphrase-hint-handling +(defcustom allout-passphrase-hint-handling 'always + "*Dictate outline encryption passphrase reminder handling: always - always show reminder when prompting - needed - show reminder on key entry failure - manage - never present reminder, but still manage a file-var entry for it - disabled - don't even manage the file variable entry + needed - show reminder on passphrase entry failure + disabled - never present or adjust reminder See the docstring for the `allout-enable-file-variable-adjustment' variable for details about allout ajustment of file variables." :type '(choice (const always) (const needed) - (const manage) (const disabled)) :group 'allout) -(make-variable-buffer-local 'allout-key-hint-handling) +(make-variable-buffer-local 'allout-passphrase-hint-handling) ;;;_ = allout-encrypt-unencrypted-on-saves (defcustom allout-encrypt-unencrypted-on-saves 'except-current "*When saving, should topics pending encryption be encrypted? @@ -494,14 +464,14 @@ - All except current topic: skip the topic currently being edited, even if it's pending encryption. This may expose the current topic on the file sytem, but avoids the nuisance of prompts for the encryption - key in the middle of editing for, eg, autosaves. + passphrase in the middle of editing for, eg, autosaves. This mode is used for auto-saves for both this option and \"Yes\". - No: leave it to the user to encrypt any unencrypted topics. For practical reasons, auto-saves always use the 'except-current policy -when auto-encryption is enabled. \(Otherwise, spurious key prompts and -unavoidable timing collisions are too disruptive.) If security for a file -requires that even the current topic is never auto-saved in the clear, +when auto-encryption is enabled. \(Otherwise, spurious passphrase prompts +and unavoidable timing collisions are too disruptive.) If security for a +file requires that even the current topic is never auto-saved in the clear, disable auto-saves for that file." :type '(choice (const :tag "Yes" t) @@ -606,7 +576,7 @@ ;;;_ = allout-enable-file-variable-adjustment (defcustom allout-enable-file-variable-adjustment t - "*If non-nil, some allout outline actions can edit Emacs file variables text. + "*If non-nil, some allout outline actions edit Emacs local file var text. This can range from changes to existing entries, addition of new ones, and creation of a new local variables section when necessary. @@ -626,14 +596,8 @@ ;;;_ #1 Internal Outline Formatting and Configuration ;;;_ : Version ;;;_ = allout-version -(defvar allout-version - (let ((rcs-rev "$Revision$")) - (condition-case err - (save-match-data - (string-match "Revision: \\([0-9]+\\.[0-9]+\\)" rcs-rev) - (substring rcs-rev (match-beginning 1) (match-end 1))) - ('error rcs-rev))) - "Revision number of currently loaded outline package. \(allout.el)") +(defvar allout-version "2.1" + "Version of currently loaded outline package. \(allout.el)") ;;;_ > allout-version (defun allout-version (&optional here) "Return string describing the loaded outline version." @@ -1027,45 +991,38 @@ "Horrible hack used to prevent invalid multiple triggering of outline mode from prop-line file-var activation. Used by `allout-mode' function to track repeats.") -;;;_ = allout-file-key-verifier-string -(defvar allout-file-key-verifier-string nil - "Name for use as a file variable for verifying encryption key across -sessions.") -(make-variable-buffer-local 'allout-file-key-verifier-string) -;;;_ = allout-encryption-scheme -(defvar allout-encryption-scheme nil - "*Allout outline topic encryption scheme pending for the current buffer. - -Intended as a file-specific (buffer local) setting, it defaults to the -value of allout-default-encryption-scheme if nil.") -(make-variable-buffer-local 'allout-encryption-scheme) -;;;_ = allout-key-verifier-string -(defvar allout-key-verifier-string nil - "Setting used to test solicited encryption keys against that already -associated with a file. - -It consists of an encrypted random string useful only to verify that a key -entered by the user is effective for decryption. The key itself is \*not* -recorded in the file anywhere, and the encrypted contents are random binary -characters to avoid exposing greater susceptibility to search attacks. +;;;_ = allout-file-passphrase-verifier-string +(defvar allout-file-passphrase-verifier-string nil + "Name for use as a file variable for verifying encryption passphrase +across sessions.") +(make-variable-buffer-local 'allout-file-passphrase-verifier-string) +;;;_ = allout-passphrase-verifier-string +(defvar allout-passphrase-verifier-string nil + "Setting used to test solicited encryption passphrases against the one +already associated with a file. + +It consists of an encrypted random string useful only to verify that a +passphrase entered by the user is effective for decryption. The passphrase +itself is \*not* recorded in the file anywhere, and the encrypted contents +are random binary characters to avoid exposing greater susceptibility to +search attacks. The verifier string is retained as an Emacs file variable, as well as in the emacs buffer state, if file variable adjustments are enabled. See `allout-enable-file-variable-adjustment' for details about that.") -(make-variable-buffer-local 'allout-key-verifier-string) -(setq-default allout-key-verifier-string nil) -;;;_ = allout-key-hint-string -(defvar allout-key-hint-string "" - "Variable used to retain a reminder string for a file's encryption key. - -See the description of `allout-key-hint-handling' for details about how +(make-variable-buffer-local 'allout-passphrase-verifier-string) +;;;_ = allout-passphrase-hint-string +(defvar allout-passphrase-hint-string "" + "Variable used to retain reminder string for file's encryption passphrase. + +See the description of `allout-passphrase-hint-handling' for details about how the reminder is deployed. The hint is retained as an Emacs file variable, as well as in the emacs buffer state, if file variable adjustments are enabled. See `allout-enable-file-variable-adjustment' for details about that.") -(make-variable-buffer-local 'allout-key-hint-string) -(setq-default allout-key-hint-string "") +(make-variable-buffer-local 'allout-passphrase-hint-string) +(setq-default allout-passphrase-hint-string "") ;;;_ = allout-after-save-decrypt (defvar allout-after-save-decrypt nil "Internal variable, is nil or has the value of two points: @@ -1080,7 +1037,8 @@ (defun allout-write-file-hook-handler () "Implement `allout-encrypt-unencrypted-on-saves' policy for file writes." - (if (or (not (boundp 'allout-encrypt-unencrypted-on-saves)) + (if (or (not (allout-mode-p)) + (not (boundp 'allout-encrypt-unencrypted-on-saves)) (not allout-encrypt-unencrypted-on-saves)) nil (let ((except-mark (and (equal allout-encrypt-unencrypted-on-saves @@ -1105,7 +1063,7 @@ (defun allout-auto-save-hook-handler () "Implement `allout-encrypt-unencrypted-on-saves' policy for auto saves." - (if allout-encrypt-unencrypted-on-saves + (if (and (allout-mode-p) allout-encrypt-unencrypted-on-saves) ;; Always implement 'except-current policy when enabled. (let ((allout-encrypt-unencrypted-on-saves 'except-current)) (allout-write-file-hook-handler)))) @@ -1190,18 +1148,22 @@ (let ;; convenience aliases, for consistent ref to respective vars: ((hook 'allout-find-file-hook) + (find-file-hook-var-name (if (boundp 'find-file-hook) + 'find-file-hook + 'find-file-hooks)) (curr-mode 'allout-auto-activation)) (cond ((not mode) - (setq find-file-hooks (delq hook find-file-hooks)) + (set find-file-hook-var-name + (delq hook (symbol-value find-file-hook-var-name))) (if (interactive-p) (message "Allout outline mode auto-activation inhibited."))) ((eq mode 'report) - (if (not (memq hook find-file-hooks)) + (if (not (memq hook (symbol-value find-file-hook-var-name))) (allout-init nil) ;; Just punt and use the reports from each of the modes: (allout-init (symbol-value curr-mode)))) - (t (add-hook 'find-file-hooks hook) + (t (add-hook find-file-hook-var-name hook) (set curr-mode ; `set', not `setq'! (cond ((eq mode 'activate) (message @@ -1233,6 +1195,7 @@ (easy-menu-add cur)))) ;;;_ > allout-mode (&optional toggle) ;;;_ : Defun: +;;;###autoload (defun allout-mode (&optional toggle) ;;;_ . Doc string: "Toggle minor mode for controlling exposure and editing of text outlines. @@ -1271,53 +1234,53 @@ Navigation: Exposure Control: ---------- ---------------- -C-c C-n allout-next-visible-heading | C-c C-h allout-hide-current-subtree -C-c C-p allout-previous-visible-heading | C-c C-i allout-show-children -C-c C-u allout-up-current-level | C-c C-s allout-show-current-subtree -C-c C-f allout-forward-current-level | C-c C-o allout-show-current-entry -C-c C-b allout-backward-current-level | ^U C-c C-s allout-show-all -C-c C-e allout-end-of-entry | allout-hide-current-leaves -C-c C-a allout-beginning-of-current-entry, alternately, goes to hot-spot +\\[allout-next-visible-heading] allout-next-visible-heading | \\[allout-hide-current-subtree] allout-hide-current-subtree +\\[allout-previous-visible-heading] allout-previous-visible-heading | \\[allout-show-children] allout-show-children +\\[allout-up-current-level] allout-up-current-level | \\[allout-show-current-subtree] allout-show-current-subtree +\\[allout-forward-current-level] allout-forward-current-level | \\[allout-show-current-entry] allout-show-current-entry +\\[allout-backward-current-level] allout-backward-current-level | \\[allout-show-all] allout-show-all +\\[allout-end-of-entry] allout-end-of-entry +\\[allout-beginning-of-current-entry,] allout-beginning-of-current-entry, alternately, goes to hot-spot Topic Header Production: ----------------------- -C-c<SP> allout-open-sibtopic Create a new sibling after current topic. -C-c . allout-open-subtopic ... an offspring of current topic. -C-c , allout-open-supertopic ... a sibling of the current topic's parent. +\\[allout-open-sibtopic] allout-open-sibtopic Create a new sibling after current topic. +\\[allout-open-subtopic] allout-open-subtopic ... an offspring of current topic. +\\[allout-open-supertopic] allout-open-supertopic ... a sibling of the current topic's parent. Topic Level and Prefix Adjustment: --------------------------------- -C-c > allout-shift-in Shift current topic and all offspring deeper. -C-c < allout-shift-out ... less deep. -C-c<CR> allout-rebullet-topic Reconcile bullets of topic and its offspring +\\[allout-shift-in] allout-shift-in Shift current topic and all offspring deeper. +\\[allout-shift-out] allout-shift-out ... less deep. +\\[allout-rebullet-current-heading] allout-rebullet-current-heading Prompt for alternate bullet for + current topic. +\\[allout-rebullet-topic] allout-rebullet-topic Reconcile bullets of topic and its offspring - distinctive bullets are not changed, others alternated according to nesting depth. -C-c b allout-rebullet-current-heading Prompt for alternate bullet for - current topic. -C-c # allout-number-siblings Number bullets of topic and siblings - the +\\[allout-number-siblings] allout-number-siblings Number bullets of topic and siblings - the offspring are not affected. With repeat count, revoke numbering. Topic-oriented Killing and Yanking: ---------------------------------- -C-c C-k allout-kill-topic Kill current topic, including offspring. -C-k allout-kill-line Like kill-line, but reconciles numbering, etc. -C-y allout-yank Yank, adjusting depth of yanked topic to +\\[allout-kill-topic] allout-kill-topic Kill current topic, including offspring. +\\[allout-kill-line] allout-kill-line Like kill-line, but reconciles numbering, etc. +\\[allout-yank] allout-yank Yank, adjusting depth of yanked topic to depth of heading if yanking into bare topic heading (ie, prefix sans text). -M-y allout-yank-pop Is to allout-yank as yank-pop is to yank +\\[allout-yank-pop] allout-yank-pop Is to allout-yank as yank-pop is to yank Misc commands: ------------- M-x outlineify-sticky Activate outline mode for current buffer, and establish a default file-var setting for `allout-layout'. -C-c C-SPC allout-mark-topic -C-c = c allout-copy-exposed-to-buffer +\\[allout-mark-topic] allout-mark-topic +\\[allout-copy-exposed-to-buffer] allout-copy-exposed-to-buffer Duplicate outline, sans concealed text, to buffer with name derived from derived from that of current buffer - \"*BUFFERNAME exposed*\". -C-c = p allout-flatten-exposed-to-buffer +\\[allout-flatten-exposed-to-buffer] allout-flatten-exposed-to-buffer Like above 'copy-exposed', but convert topic prefixes to section.subsection... numeric format. @@ -1327,12 +1290,12 @@ Encrypted Entries Outline mode supports easily togglable gpg encryption of topics, with -niceities like support for symmetric and key-pair modes, key timeout, key -consistency checking, user-provided hinting for symmetric key mode, and -auto-encryption of topics pending encryption on save. The aim is to enable -reliable topic privacy while preventing accidents like neglected -encryption, encryption with a mistaken key, forgetting which key was used, -and other practical pitfalls. +niceties like support for symmetric and key-pair modes, passphrase timeout, +passphrase consistency checking, user-provided hinting for symmetric key +mode, and auto-encryption of topics pending encryption on save. The aim is +to enable reliable topic privacy while preventing accidents like neglected +encryption, encryption with a mistaken passphrase, forgetting which +passphrase was used, and other practical pitfalls. See the `allout-toggle-current-subtree-encryption' function and `allout-encrypt-unencrypted-on-saves' customization variable for details. @@ -1450,6 +1413,9 @@ ;; allout-mode already called once during this complex command? (same-complex-command (eq allout-v18/19-file-var-hack (car command-history))) + (write-file-hook-var-name (if (boundp 'write-file-functions) + 'write-file-functions + 'local-write-file-hooks)) do-layout ) @@ -1500,9 +1466,9 @@ (allout-resumptions 'selective-display) (if (and (boundp 'before-change-functions) before-change-functions) (allout-resumptions 'before-change-functions)) - (setq local-write-file-hooks + (set write-file-hook-var-name (delq 'allout-write-file-hook-handler - local-write-file-hooks)) + (symbol-value write-file-hook-var-name))) (setq auto-save-hook (delq 'allout-auto-save-hook-handler auto-save-hook)) @@ -1563,8 +1529,7 @@ (allout-resumptions 'selective-display '(t)) (add-hook 'pre-command-hook 'allout-pre-command-business) (add-hook 'post-command-hook 'allout-post-command-business) - (add-hook 'local-write-file-hooks 'allout-write-file-hook-handler) - (make-variable-buffer-local 'auto-save-hook) + (add-hook write-file-hook-var-name 'allout-write-file-hook-handler) (add-hook 'auto-save-hook 'allout-auto-save-hook-handler) ; Custom auto-fill func, to support ; respect for topic headline, @@ -2501,8 +2466,9 @@ last-command-char) ;; Only xemacs has characterp. ((and (fboundp 'characterp) - (characterp last-command-char)) - (char-to-int last-command-char)) + (apply 'characterp + (list last-command-char))) + (apply 'char-to-int (list last-command-char))) (t 0))) mapped-binding) (if (zerop this-key-num) @@ -3506,7 +3472,9 @@ ;; ensure prior kill-ring leader is properly restored: (if (eq leading-kill-ring-entry (cadr kill-ring)) ;; Aborted kill got pushed on front - ditch it: - (pop kill-ring) + (let ((got (car kill-ring))) + (setq kill-ring (cdr kill-ring)) + got) ;; Aborted kill got appended to prior - resurrect prior: (setcar kill-ring leading-kill-ring-entry)) ;; make last-command skip this failed command, so kill-appending @@ -4608,7 +4576,7 @@ (while text (insert (car text)) (if (setq text (cdr text)) - (insert-string "\n"))) + (insert "\n"))) (insert "\n"))) ;;;_ > allout-copy-exposed-to-buffer (&optional arg tobuf format) (defun allout-copy-exposed-to-buffer (&optional arg tobuf format) @@ -4881,11 +4849,15 @@ (goto-char start-pt))) ;;;_ #8 Encryption -;;;_ > allout-toggle-current-subtree-encryption (&optional fetch-key) -(defun allout-toggle-current-subtree-encryption (&optional fetch-key) - "Encrypt clear text or decrypt encoded contents of a topic. - -Contents includes body and subtopics. +;;;_ > allout-toggle-current-subtree-encryption (&optional fetch-pass) +(defun allout-toggle-current-subtree-encryption (&optional fetch-pass) + "Encrypt clear text or decrypt encoded topic contents \(body and subtopics.) + +Optional FETCH-PASS universal argument provokes key-pair encryption with +single universal argument. With doubled universal argument \(value = 16), +it forces prompting for the passphrase regardless of availability from the +passphrase cache. With no universal argument, the appropriate passphrase +for the is obtained from the cache, if available, else from the user. Currently only GnuPG encryption is supported. @@ -4897,67 +4869,52 @@ Encrypted topic's bullet is set to a `~' to signal that the contents of the topic \(body and subtopics, but not heading) is pending encryption or -encrypted. An `*' asterisk immediately after the bullet signals that the -body is encrypted, its absence means it's meant to be encrypted but is not -- it's \"disclosed\". When a file with disclosed topics is saved, the user -prompted for an ok to \(symmetric-key) encrypt the disclosed topics. NOTE -WELL that you must explicitly \(re)encrypt key-pair encrypted topics if you -want them to continue to be in key-pair mode. +encrypted. `*' asterisk immediately after the bullet signals that the body +is encrypted, its' absence means the topic is meant to be encrypted but is +not. When a file with topics pending encryption is saved, topics pending +encryption are encrypted. See allout-encrypt-unencrypted-on-saves for +auto-encryption specifics. + +\**NOTE WELL** that automatic encryption that happens during saves will +default to symmetric encryption - you must manually \(re)encrypt key-pair +encrypted topics if you want them to continue to use the key-pair cipher. Level-1 topics, with prefix consisting solely of an `*' asterisk, cannot be encrypted. If you want to encrypt the contents of a top-level topic, use \\[allout-shift-in] to increase its depth. -Failed transformation does not change the an entry being encrypted - -instead, the key is re-solicited and the transformation is retried. -\\[keyboard-quit] to abort. - -Decryption does symmetric or key-pair key mode depending on how the text -was encrypted. The encryption key is solicited if not currently available -from the key cache from a recent prior encryption action. - -Optional FETCH-KEY universal argument is used for two purposes - to provoke -key-pair instead of symmetric encryption, or to provoke clearing of the key -cache so keys are freshly fetched. - - - Without any universal arguments, then the appropriate key for the is - obtained from the cache, if available, else from the user. - - - If FETCH-KEY is the result of one universal argument - ie, equal to 4 - - then key-pair encryption is used. - - - With repeated universal argument - equal to 16 - then the key cache is - cleared before any encryption transformations, to force prompting of the - user for the key. - -The solicited key is retained for reuse in a buffer-specific cache for some -set period of time \(default, 60 seconds), after which the string is -nulled. `mailcrypt' provides the key caching functionality. You can -adjust the key cache timeout by ajdusting the setting of the elisp variable -`mc-passwd-timeout'. - -If the file previously had no associated key, or had a different key than -specified, the user is prompted to repeat the new one for corroboration. A -random string encrypted by the new key is set on the buffer-specific -variable `allout-key-verifier-string', for confirmation of the key when -next obtained, before encrypting or decrypting anything with it. This -helps avoid mistakenly shifting between keys. - -If allout customization var `allout-key-verifier-handling' is non-nil, an -entry for `allout-key-verifier-string' and its value is added to an Emacs -'local variables' section at the end of the file, which is created if -necessary. That setting is for retention of the key verifier across emacs -sessions. - -Similarly, `allout-key-hint-string' stores a user-provided reminder about -their key, and `allout-key-hint-handling' specifies when the hint is -presented, or if key hints are disabled. If enabled \(see the -`allout-key-hint-handling' docstring for details), the hint string is -stored in the local-variables section of the file, and solicited whenever -the key is changed." - -;;; This routine handles allout-specific business, dispatching -;;; encryption-specific business to allout-encrypt-string. + Passphrase Caching + +The encryption passphrase is solicited if not currently available in the +passphrase cache from a recent encryption action. + +The solicited passphrase is retained for reuse in a buffer-specific cache +for some set period of time \(default, 60 seconds), after which the string +is nulled. The passphrase cache timeout is customized by setting +`pgg-passphrase-cache-expiry'. + + Symmetric Passphrase Hinting and Verification + +If the file previously had no associated passphrase, or had a different +passphrase than specified, the user is prompted to repeat the new one for +corroboration. A random string encrypted by the new passphrase is set on +the buffer-specific variable `allout-passphrase-verifier-string', for +confirmation of the passphrase when next obtained, before encrypting or +decrypting anything with it. This helps avoid mistakenly shifting between +keys. + +If allout customization var `allout-passphrase-verifier-handling' is +non-nil, an entry for `allout-passphrase-verifier-string' and its value is +added to an Emacs 'local variables' section at the end of the file, which +is created if necessary. That setting is for retention of the passphrase +verifier across emacs sessions. + +Similarly, `allout-passphrase-hint-string' stores a user-provided reminder +about their passphrase, and `allout-passphrase-hint-handling' specifies +when the hint is presented, or if passphrase hints are disabled. If +enabled \(see the `allout-passphrase-hint-handling' docstring for details), +the hint string is stored in the local-variables section of the file, and +solicited whenever the passphrase is changed." (interactive "P") (save-excursion @@ -4967,17 +4924,13 @@ (error (concat "Cannot encrypt or decrypt level 1 topics -" " shift it in to make it encryptable"))) - (if (and fetch-key - (not (equal fetch-key '(4)))) - (mc-deactivate-passwd)) - (let* ((allout-buffer (current-buffer)) ;; Asses location: (after-bullet-pos (point)) (was-encrypted (progn (if (= (point-max) after-bullet-pos) (error "no body to encrypt")) - (looking-at "\\*"))) + (allout-encrypted-topic-p))) (was-collapsed (if (not (re-search-forward "[\n\r]" nil t)) nil (backward-char 1) @@ -4993,20 +4946,22 @@ (error "No topic contents to %scrypt" (if was-encrypted "de" "en")))) ;; Assess key parameters: - (key-type (or + (key-info (or ;; detect the type by which it is already encrypted (and was-encrypted - (allout-encrypted-text-type subject-text)) - (and (member fetch-key '(4 (4))) - (yes-or-no-p "Use key-pair encryption instead? ") - 'keypair) - 'symmetric)) - (fetch-key (and fetch-key (not (member fetch-key '(16 (16)))))) + (allout-encrypted-key-info subject-text)) + (and (member fetch-pass '(4 (4))) + '(keypair nil)) + '(symmetric nil))) + (for-key-type (car key-info)) + (for-key-identity (cadr key-info)) + (fetch-pass (and fetch-pass (member fetch-pass '(16 (16))))) result-text) (setq result-text (allout-encrypt-string subject-text was-encrypted - (current-buffer) key-type fetch-key)) + (current-buffer) + for-key-type for-key-identity fetch-pass)) ;; Replace the subtree with the processed product. (allout-unprotected @@ -5040,251 +4995,285 @@ ) ) ) -;;;_ > allout-encrypt-string (text decrypt allout-buffer key-type rekey -;;; &optional retried verifying) -(defun allout-encrypt-string (text decrypt allout-buffer key-type rekey - &optional retried verifying) - "Encrypt or decrypt a string TEXT using KEY. - -If optional DECRYPT is true (default false), then decrypt instead of -encrypt. - -Optional REKEY (default false) provokes clearing of the key cache to force -fresh prompting for the key. - -Optional RETRIED is for internal use - conveys the number of failed keys have -been solicited in sequence leading to this current call. - -Optional VERIFYING is for internal use, signifying processing of text -solely for verification of the cached key. +;;;_ > allout-encrypt-string (text decrypt allout-buffer key-type for-key +;;; fetch-pass &optional retried verifying +;;; passphrase) +(defun allout-encrypt-string (text decrypt allout-buffer key-type for-key + fetch-pass &optional retried verifying + passphrase) + "Encrypt or decrypt message TEXT. + +If DECRYPT is true (default false), then decrypt instead of encrypt. + +FETCH-PASS (default false) forces fresh prompting for the passphrase. + +KEY-TYPE indicates whether to use a 'symmetric or 'keypair cipher. + +FOR-KEY is human readable identification of the first of the user's +eligible secret keys a keypair decryption targets, or else nil. + +Optional RETRIED is for internal use - conveys the number of failed keys +that have been solicited in sequence leading to this current call. + +Optional PASSPHRASE enables explicit delivery of the decryption passphrase, +for verification purposes. Returns the resulting string, or nil if the transformation fails." - ;; Ensure that we have an alternate handle on the real mc-activate-passwd: - (if (not (fboundp 'real-mc-activate-passwd)) - ;; Force loads of the primary mailcrypt packages, so flet below holds. - (progn (require 'mailcrypt) - (load "mc-toplev") - (fset 'real-mc-activate-passwd - (symbol-function 'mc-activate-passwd)))) - - (if (and rekey (not verifying)) (mc-deactivate-passwd)) - - (catch 'encryption-failed + (require 'pgg) + + (let* ((scheme (upcase + (format "%s" (or pgg-scheme pgg-default-scheme "GPG")))) + (for-key (and (equal key-type 'keypair) + (or for-key + (split-string (read-string + (format "%s message recipients: " + scheme)) + "[ \t,]+")))) + (target-prompt-id (if (equal key-type 'keypair) + (if (= (length for-key) 1) + (car for-key) for-key) + (buffer-name allout-buffer))) + (target-cache-id (format "%s-%s" + key-type + (if (equal key-type 'keypair) + target-prompt-id + (or (buffer-file-name allout-buffer) + target-prompt-id)))) + (comment "Processed by allout driving pgg") + work-buffer result result-text status) + + (if (and fetch-pass (not passphrase)) + ;; Force later fetch by evicting passphrase from the cache. + (pgg-remove-passphrase-from-cache target-cache-id t)) + + (catch 'encryption-failed + + ;; Obtain the passphrase if we don't already have one and we're not + ;; doing a keypair encryption: + (if (not (or passphrase + (and (equal key-type 'keypair) + (not decrypt)))) + + (setq passphrase (allout-obtain-passphrase for-key + target-cache-id + target-prompt-id + key-type + allout-buffer + retried fetch-pass))) + (with-temp-buffer + + (insert (subst-char-in-string ?\r ?\n text)) + + (cond + + ;; symmetric: + ((equal key-type 'symmetric) + (setq status + (if decrypt + + (pgg-decrypt (point-min) (point-max) passphrase) + + (pgg-encrypt-symmetric (point-min) (point-max) + passphrase))) + + (if status + (pgg-situate-output (point-min) (point-max)) + ;; failed - handle passphrase caching + (if verifying + (throw 'encryption-failed nil) + (pgg-remove-passphrase-from-cache target-cache-id t) + (error "Symmetric-cipher encryption failed - %s" + "try again with different passphrase.")))) + + ;; encrypt 'keypair: + ((not decrypt) + + (setq status + + (pgg-encrypt for-key + nil (point-min) (point-max) passphrase)) + + (if status + (pgg-situate-output (point-min) (point-max)) + (error (pgg-remove-passphrase-from-cache target-cache-id t) + (error "encryption failed")))) + + ;; decrypt 'keypair: + (t + + (setq status + (pgg-decrypt (point-min) (point-max) passphrase)) + + (if status + (pgg-situate-output (point-min) (point-max)) + (error (pgg-remove-passphrase-from-cache target-cache-id t) + (error "decryption failed")))) + ) + + (setq result-text + (buffer-substring 1 (- (point-max) (if decrypt 0 1)))) + + ;; validate result - non-empty + (cond ((not result-text) + (if verifying + nil + ;; transform was fruitless, retry w/new passphrase. + (pgg-remove-passphrase-from-cache target-cache-id t) + (allout-encrypt-string text allout-buffer decrypt nil + (if retried (1+ retried) 1) + passphrase))) + + ;; Barf if encryption yields extraordinary control chars: + ((and (not decrypt) + (string-match "[\C-a\C-k\C-o-\C-z\C-@]" + result-text)) + (error (concat "encryption produced unusable" + " non-armored text - reconfigure!"))) + + ;; valid result and just verifying or non-symmetric: + ((or verifying (not (equal key-type 'symmetric))) + (if (or verifying decrypt) + (pgg-add-passphrase-to-cache target-cache-id + passphrase t)) + result-text) + + ;; valid result and regular symmetric - "register" + ;; passphrase with mnemonic aids/cache. + (t + (set-buffer allout-buffer) + (if passphrase + (pgg-add-passphrase-to-cache target-cache-id + passphrase t)) + (allout-update-passphrase-mnemonic-aids for-key passphrase + allout-buffer) + result-text) + ) + ) + ) + ) + ) +;;;_ > allout-obtain-passphrase (for-key cache-id prompt-id key-type +;;; allout-buffer retried fetch-pass) +(defun allout-obtain-passphrase (for-key cache-id prompt-id key-type + allout-buffer retried fetch-pass) + "Obtain passphrase for a key from the cache or else from the user. + +When obtaining from the user, symmetric-cipher passphrases are verified +against either, if available and enabled, a random string that was +encrypted against the passphrase, or else against repeated entry by the +user for corroboration. + +FOR-KEY is the key for which the passphrase is being obtained. + +CACHE-ID is the cache id of the key for the passphrase. + +PROMPT-ID is the id for use when prompting the user. + +KEY-TYPE is either 'symmetric or 'keypair. + +ALLOUT-BUFFER is the buffer containing the entry being en/decrypted. + +RETRIED is the number of this attempt to obtain this passphrase. + +FETCH-PASS causes the passphrase to be solicited from the user, regardless +of the availability of a cached copy." + + (if (not (equal key-type 'symmetric)) + ;; do regular passphrase read on non-symmetric passphrase: + (pgg-read-passphrase (format "%s passphrase%s: " + (upcase (format "%s" (or pgg-scheme + pgg-default-scheme + "GPG"))) + (if prompt-id + (format " for %s" prompt-id) + "")) + cache-id t) + + ;; Symmetric hereon: + (save-excursion - - (let* ((mc-default-scheme (or allout-encryption-scheme - allout-default-encryption-scheme)) - (id (format "%s-%s" key-type - (or (buffer-file-name allout-buffer) - (buffer-name allout-buffer)))) - (cached (real-mc-activate-passwd id nil)) - (comment "Processed by allout driving mailcrypt") - key work-buffer result result-text encryption-process-status) - - (unwind-protect - - ;; Interject our mc-activate-passwd wrapper: - (flet ((mc-activate-passwd (id &optional prompt) - (allout-mc-activate-passwd id prompt))) - - (setq work-buffer - (set-buffer (allout-encryption-produce-work-buffer text))) - - (cond - - ;; symmetric: - ((equal key-type 'symmetric) - (setq key (if verifying - (real-mc-activate-passwd id nil) - (allout-mc-activate-passwd id))) - (setq encryption-process-status - (crypt-encrypt-buffer key decrypt)) - (if (zerop encryption-process-status) - t - (if verifying - (throw 'encryption-failed nil) - (mc-deactivate-passwd) - (error "Symmetric-key encryption failed (%s) - wrong key?" - encryption-process-status)))) - - ;; encrypt 'keypair: - ((not decrypt) - (condition-case result - (mailcrypt-encrypt 1) - (error (mc-deactivate-passwd) - (error "encryption failed: %s" - (cadr result))))) - - ;; decrypt 'keypair: - (t (condition-case result - (mc-decrypt) - (error (mc-deactivate-passwd) - (error "decryption failed: %s" - (cadr result)))))) - - (setq result-text (if (or (equal key-type 'keypair) - (not decrypt)) - (buffer-substring 1 (1- (point-max))) - (buffer-string))) - ;; validate result - non-empty - (cond ((not result-text) - (if verifying - nil - ;; Transformation was fruitless - retry with new key. - (mc-deactivate-passwd) - (allout-encrypt-string text allout-buffer decrypt nil - (if retried (1+ retried) 1) - verifying))) - - ;; Barf if encryption yields extraordinary control chars: - ((and (not decrypt) - (string-match "[\C-a\C-k\C-o-\C-z\C-@]" result-text)) - (error (concat "encryption produced unusable" - " non-armored text - reconfigure!"))) - - ;; valid result and just verifying or non-symmetric: - ((or verifying (not (equal key-type 'symmetric))) - result-text) - - ;; valid result and regular symmetric - situate validator: - (t - ;; valid result and verifier needs to be situated in - ;; allout-buffer: - (set-buffer allout-buffer) - (if (and (or rekey (not cached)) - (not (allout-verify-key key allout-buffer))) - (allout-situate-encryption-key-verifier key id)) - result-text) - ) - ) - - ;; unwind-protect emergence: - (if work-buffer - (kill-buffer work-buffer)) + (set-buffer allout-buffer) + (let* ((hint (if (and (not (string= allout-passphrase-hint-string "")) + (or (equal allout-passphrase-hint-handling 'always) + (and (equal allout-passphrase-hint-handling + 'needed) + retried))) + (format " [%s]" allout-passphrase-hint-string) + "")) + (retry-message (if retried (format " (%s retry)" retried) "")) + (prompt-sans-hint (format "'%s' symmetric passphrase%s: " + prompt-id retry-message)) + (full-prompt (format "'%s' symmetric passphrase%s%s: " + prompt-id hint retry-message)) + (prompt full-prompt) + (verifier-string (allout-get-encryption-passphrase-verifier)) + + (cached (and (not fetch-pass) + (pgg-read-passphrase-from-cache cache-id t))) + (got-pass (or cached + (pgg-read-passphrase full-prompt cache-id t))) + + confirmation) + + (if (not got-pass) + nil + + ;; Duplicate our handle on the passphrase so it's not clobbered by + ;; deactivate-passwd memory clearing: + (setq got-pass (format "%s" got-pass)) + + (cond (verifier-string + (save-window-excursion + (if (allout-encrypt-string verifier-string 'decrypt + allout-buffer 'symmetric + for-key nil 0 'verifying + got-pass) + (setq confirmation (format "%s" got-pass)))) + + (if (and (not confirmation) + (if (yes-or-no-p + (concat "Passphrase differs from established" + " - use new one instead? ")) + ;; deactivate password for subsequent + ;; confirmation: + (progn + (pgg-remove-passphrase-from-cache cache-id t) + (setq prompt prompt-sans-hint) + nil) + t)) + (progn (pgg-remove-passphrase-from-cache cache-id t) + (error "Wrong passphrase.")))) + ;; No verifier string - force confirmation by repetition of + ;; (new) passphrase: + ((or fetch-pass (not cached)) + (pgg-remove-passphrase-from-cache cache-id t)))) + ;; confirmation vs new input - doing pgg-read-passphrase will do the + ;; right thing, in either case: + (if (not confirmation) + (setq confirmation + (pgg-read-passphrase (concat prompt + " ... confirm spelling: ") + cache-id t))) + (prog1 + (if (equal got-pass confirmation) + confirmation + (if (yes-or-no-p (concat "spelling of original and" + " confirmation differ - retry? ")) + (progn (setq retried (if retried (1+ retried) 1)) + (pgg-remove-passphrase-from-cache cache-id t) + ;; recurse to this routine: + (pgg-read-passphrase prompt-sans-hint cache-id t)) + (pgg-remove-passphrase-from-cache cache-id t) + (error "Confirmation failed."))) + ;; reduce opportunity for memory cherry-picking by zeroing duplicate: + (dotimes (i (length got-pass)) + (aset got-pass i 0)) ) ) ) ) ) -;;;_ > allout-mc-activate-passwd (id &optional prompt) -(defun allout-mc-activate-passwd (id &optional prompt) - "Substituted for mc-activate-passwd during allout outline encryption. - -We add key-verification to vanilla mc-activate-passwd. - -We depend in some cases on values of the following allout-encrypt-string -internal or prevailing variables: - - key-type - 'symmetric or 'keypair - - id - id associated with current key in key cache - - allout-buffer - where subject text resides - - retried - number of current attempts to obtain this key - - rekey - user asked to present a new key - needs to be confirmed" - -;; - if we're doing non-symmetric key, just do normal mc-activate-passwd -;; - otherwise, if we are have a cached version of the key, then assume -;; it's verified and return it -;; - otherwise, prompt for a key, and: -;; - if we have a key verifier \(a string value which should decrypt -;; against a symmetric key), validate against the verifier -;; - if successful, return the verified key -;; - if unsuccessful: -;; - offer to use the new key -;; - if accepted, do confirm process -;; - if refused, try again until we get a correctly spelled one or the -;; user quits -;; - if no key verifier, resolicit the key to get corroboration and return -;; the corroborated key if spelled identically, or error if not. - - (if (not (equal key-type 'symmetric)) - ;; do regular mc-activate-passwd on non-symmetric key - (real-mc-activate-passwd id prompt) - - ;; Symmetric hereon: - - (save-excursion - (set-buffer allout-buffer) - (let* ((hint (if (and (not (string= allout-key-hint-string "")) - (or (equal allout-key-hint-handling 'always) - (and (equal allout-key-hint-handling 'needed) - retried))) - (format " [%s]" allout-key-hint-string) - "")) - (retry-message (if retried (format " (%s retry)" retried) "")) - (prompt-sans-hint (format "'%s' symmetric key%s: " - (buffer-name allout-buffer) - retry-message)) - (full-prompt (format "'%s' symmetric key%s%s: " - (buffer-name allout-buffer) - hint retry-message)) - (prompt full-prompt) - (verifier-string (allout-get-encryption-key-verifier)) - ;; force retention of cached passwords for five minutes while - ;; we're in this particular routine: - (mc-passwd-timeout 300) - (cached (real-mc-activate-passwd id nil)) - (got (or cached (real-mc-activate-passwd id full-prompt))) - confirmation) - - (if (not got) - nil - - ;; Duplicate our handle on the key so it's not clobbered by - ;; deactivate-passwd memory clearing: - (setq got (format "%s" got)) - - (cond (verifier-string - (if (and (not (allout-encrypt-string - verifier-string 'decrypt allout-buffer - 'symmetric nil 0 'verifying)) - (if (yes-or-no-p - (concat "Key differs from established" - " - use new one instead? ")) - ;; deactivate password for subsequent - ;; confirmation: - (progn (mc-deactivate-passwd) - (setq prompt prompt-sans-hint) - nil) - t)) - (progn (mc-deactivate-passwd) - (error "Wrong key.")))) - ;; Force confirmation by repetition for new key: - ((or rekey (not cached)) (mc-deactivate-passwd)))) - ;; we have a key and it's either verified and cached. - ;; confirmation vs new input - doing mc-activate-passwd will do the - ;; right thing, in either case: - (setq confirmation - (real-mc-activate-passwd id (concat prompt - " ... confirm spelling: "))) - (prog1 - (if (equal got confirmation) - confirmation - (if (yes-or-no-p (concat "spelling of original and" - " confirmation differ - retry? ")) - (progn (setq retried (if retried (1+ retried) 1)) - (mc-deactivate-passwd) - ;; recurse to this routine: - (mc-activate-passwd id prompt-sans-hint)) - (mc-deactivate-passwd) - (error "Confirmation failed."))) - ;; reduce opportunity for memory cherry-picking by zeroing duplicate: - (dotimes (i (length got)) - (aset got i 0)) - ) - ) - ) - ) - ) -;;;_ > allout-encryption-produce-work-buffer (text) -(defun allout-encryption-produce-work-buffer (text) - "Establish a new buffer filled with TEXT, for outline encrypion processing. - -TEXT is massaged so outline collapsing, if any, is removed." - (let ((work-buffer (generate-new-buffer " *allout encryption*"))) - (save-excursion - (set-buffer work-buffer) - (insert (subst-char-in-string ?\r ?\n text))) - work-buffer)) ;;;_ > allout-encrypted-topic-p () (defun allout-encrypted-topic-p () "True if the current topic is encryptable and encrypted." @@ -5295,96 +5284,128 @@ (looking-at "\\*")) ) ) -;;;_ > allout-encrypted-text-type (text) -;;; XXX gpg-specific, not generic! -(defun allout-encrypted-text-type (text) - "For gpg encrypted text, return 'symmetric or 'keypair." - - ;; Ensure mc-gpg-path has a value: - (if (not (boundp 'mc-gpg-path)) - (load-library "mc-gpg")) - +;;;_ > allout-encrypted-key-info (text) +;; XXX gpg-specific, alas +(defun allout-encrypted-key-info (text) + "Return a pair of the key type and identity of a recipient's secret key. + +The key type is one of 'symmetric or 'keypair. + +if 'keypair, and some of the user's secret keys are among those for which +the message was encoded, return the identity of the first. otherwise, +return nil for the second item of the pair. + +An error is raised if the text is not encrypted." + (require 'pgg-parse) (save-excursion - (let* ((work-buffer (set-buffer - (allout-encryption-produce-work-buffer text))) - (result (mc-gpg-process-region (point-min) (point-max) - nil mc-gpg-path - '("--batch" "--decrypt") - 'mc-gpg-decrypt-parser - work-buffer nil))) - (cond ((equal (nth 0 result) 'symmetric) - 'symmetric) - ((equal (nth 0 result) t) - 'keypair) - (t (error "Unrecognized/unsupported encryption type %S" - (nth 0 result)))) + (with-temp-buffer + (insert (subst-char-in-string ?\r ?\n text)) + (let* ((parsed-armor (pgg-parse-armor-region (point-min) (point-max))) + (type (if (pgg-gpg-symmetric-key-p parsed-armor) + 'symmetric + 'keypair)) + secret-keys first-secret-key for-key-owner) + (if (equal type 'keypair) + (setq secret-keys (pgg-gpg-lookup-all-secret-keys) + first-secret-key (pgg-gpg-select-matching-key parsed-armor + secret-keys) + for-key-owner (and first-secret-key + (pgg-gpg-lookup-key-owner + first-secret-key)))) + (list type (pgg-gpg-key-id-from-key-owner for-key-owner)) + ) ) ) ) -;;;_ > allout-create-encryption-key-verifier (key id) -(defun allout-create-encryption-key-verifier (key id) - "Encrypt a random message for later validation of symmetric key." +;;;_ > allout-create-encryption-passphrase-verifier (passphrase) +(defun allout-create-encryption-passphrase-verifier (passphrase) + "Encrypt random message for later validation of symmetric key's passphrase." ;; use 20 random ascii characters, across the entire ascii range. (random t) (let ((spew (make-string 20 ?\0))) (dotimes (i (length spew)) (aset spew i (1+ (random 254)))) - (allout-encrypt-string spew nil nil 'symmetric nil nil t)) + (allout-encrypt-string spew nil (current-buffer) 'symmetric + nil nil 0 passphrase)) ) -;;;_ > allout-situate-encryption-key-verifier (key id) -(defun allout-situate-encryption-key-verifier (key id) - "Establish key verifier string on file variable. - -We also prompt for and situate a new reminder, if reminders are enabled. - -We massage the string to simplify programmatic adjustment. File variable -is `allout-file-key-verifier-string'." - (let ((verifier-string - ;; Collapse to a single line and enclose in string quotes: - (subst-char-in-string ?\n ?\C-a - (allout-create-encryption-key-verifier - key id))) - (reminder (if (not (equal allout-key-hint-handling 'disabled)) - (read-from-minibuffer - "Key hint to jog your memory next time: " - allout-key-hint-string)))) - (setq allout-key-verifier-string verifier-string) - (allout-adjust-file-variable "allout-key-verifier-string" - verifier-string) - (cond ((equal allout-key-hint-handling 'disabled) - nil) - ((not (string= reminder allout-key-hint-string)) - (setq allout-key-hint-string reminder) - (allout-adjust-file-variable "allout-key-hint-string" - reminder))) +;;;_ > allout-update-passphrase-mnemonic-aids (for-key passphrase +;;; outline-buffer) +(defun allout-update-passphrase-mnemonic-aids (for-key passphrase + outline-buffer) + "Update passphrase verifier and hint strings if necessary. + +See `allout-passphrase-verifier-string' and `allout-passphrase-hint-string' +settings. + +PASSPHRASE is the passphrase being mnemonicized + +OUTLINE-BUFFER is the buffer of the outline being adjusted. + +These are used to help the user keep track of the passphrase they use for +symmetric encryption in the file. + +Behavior is governed by `allout-passphrase-verifier-handling', +`allout-passphrase-hint-handling', and also, controlling whether the values +are preserved on Emacs local file variables, +`allout-enable-file-variable-adjustment'." + + ;; If passphrase doesn't agree with current verifier: + ;; - adjust the verifier + ;; - if passphrase hint handling is enabled, adjust the passphrase hint + ;; - if file var settings are enabled, adjust the file vars + + (let* ((new-verifier-needed (not (allout-verify-passphrase + for-key passphrase outline-buffer))) + (new-verifier-string + (if new-verifier-needed + ;; Collapse to a single line and enclose in string quotes: + (subst-char-in-string + ?\n ?\C-a (allout-create-encryption-passphrase-verifier + passphrase)))) + new-hint) + (when new-verifier-string + ;; do the passphrase hint first, since it's interactive + (when (and allout-passphrase-hint-handling + (not (equal allout-passphrase-hint-handling 'disabled))) + (setq new-hint + (read-from-minibuffer "Passphrase hint to jog your memory: " + allout-passphrase-hint-string)) + (when (not (string= new-hint allout-passphrase-hint-string)) + (setq allout-passphrase-hint-string new-hint) + (allout-adjust-file-variable "allout-passphrase-hint-string" + allout-passphrase-hint-string))) + (when allout-passphrase-verifier-handling + (setq allout-passphrase-verifier-string new-verifier-string) + (allout-adjust-file-variable "allout-passphrase-verifier-string" + allout-passphrase-verifier-string)) + ) ) ) -;;;_ > allout-get-encryption-key-verifier () -(defun allout-get-encryption-key-verifier () - "Return the text of the encrypt key verifier, unmassaged, or nil if none. - -Derived from value of `allout-file-key-verifier-string'." - - (let ((verifier-string (and (boundp 'allout-key-verifier-string) - allout-key-verifier-string))) +;;;_ > allout-get-encryption-passphrase-verifier () +(defun allout-get-encryption-passphrase-verifier () + "Return text of the encrypt passphrase verifier, unmassaged, or nil if none. + +Derived from value of `allout-file-passphrase-verifier-string'." + + (let ((verifier-string (and (boundp 'allout-passphrase-verifier-string) + allout-passphrase-verifier-string))) (if verifier-string ;; Return it uncollapsed - (subst-char-in-string ?\C-a ?\n verifier-string) - nil) + (subst-char-in-string ?\C-a ?\n verifier-string)) ) ) -;;;_ > allout-verify-key (key) -(defun allout-verify-key (key allout-buffer) - "True if key successfully decrypts key verifier, nil otherwise. - -\"Otherwise\" includes absence of key verifier." +;;;_ > allout-verify-passphrase (key passphrase allout-buffer) +(defun allout-verify-passphrase (key passphrase allout-buffer) + "True if passphrase successfully decrypts verifier, nil otherwise. + +\"Otherwise\" includes absence of passphrase verifier." (save-excursion (set-buffer allout-buffer) - (and (boundp 'allout-key-verifier-string) - allout-key-verifier-string - (allout-encrypt-string (allout-get-encryption-key-verifier) + (and (boundp 'allout-passphrase-verifier-string) + allout-passphrase-verifier-string + (allout-encrypt-string (allout-get-encryption-passphrase-verifier) 'decrypt allout-buffer 'symmetric - nil nil 'verifying) + key nil 0 'verifying passphrase) t))) ;;;_ > allout-next-topic-pending-encryption (&optional except-mark) (defun allout-next-topic-pending-encryption (&optional except-mark) @@ -5500,7 +5521,9 @@ (exchange-point-and-mark)) ;;;_ > outlineify-sticky () ;; outlinify-sticky is correct spelling; provide this alias for sticklers: +;;;###autoload (defalias 'outlinify-sticky 'outlineify-sticky) +;;;###autoload (defun outlineify-sticky (&optional arg) "Activate outline mode and establish file var so it is started subsequently. @@ -5699,15 +5722,14 @@ (if (eq (aref newstr i) fromchar) (aset newstr i tochar))) newstr))) - ;;;_ : my-mark-marker to accommodate divergent emacsen: (defun my-mark-marker (&optional force buffer) "Accommodate the different signature for `mark-marker' across Emacsen. XEmacs takes two optional args, while mainline GNU Emacs does not, so pass them along when appropriate." - (if (string-match " XEmacs " emacs-version) - (mark-marker force buffer) + (if (featurep 'xemacs) + (apply 'mark-marker force buffer) (mark-marker))) ;;;_ #10 Under development
--- a/lisp/calc/calc-alg.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/calc/calc-alg.el Tue Nov 01 06:23:08 2005 +0000 @@ -91,6 +91,32 @@ (calc-top-n 1)) (and n (list (prefix-numeric-value n))))))) +;;; Write out powers (a*b*...)^n as a*b*...*a*b*... +(defun calcFunc-writeoutpower (expr) + (math-normalize (math-map-tree 'math-write-out-power expr))) + +(defun math-write-out-power (expr) + (if (eq (car-safe expr) '^) + (let ((a (nth 1 expr)) + (n (nth 2 expr)) + (prod (nth 1 expr)) + (i 1)) + (if (and (integerp n) + (> n 0)) + (progn + (while (< i n) + (setq prod (math-mul prod a)) + (setq i (1+ i))) + prod) + expr)) + expr)) + +(defun calc-writeoutpower () + (interactive) + (calc-slow-wrapper + (calc-enter-result 1 "expp" + (calcFunc-writeoutpower (calc-top-n 1))))) + (defun calc-collect (&optional var) (interactive "sCollect terms involving: ") (calc-slow-wrapper
--- a/lisp/calc/calc-arith.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/calc/calc-arith.el Tue Nov 01 06:23:08 2005 +0000 @@ -1386,6 +1386,7 @@ (and (eq (car-safe b) '^) (Math-looks-negp (nth 2 b)) (not (and (eq (car-safe a) '^) (Math-looks-negp (nth 2 a)))) + (not (math-known-matrixp (nth 1 b))) (math-div a (math-normalize (list '^ (nth 1 b) (math-neg (nth 2 b)))))) (and (eq (car-safe a) '/) @@ -1427,6 +1428,30 @@ (list 'calcFunc-idn (math-mul a (nth 1 b)))) (and (math-known-matrixp a) (math-mul a (nth 1 b))))) + (and (math-identity-matrix-p a t) + (or (and (eq (car-safe b) 'calcFunc-idn) + (= (length b) 2) + (list 'calcFunc-idn (math-mul + (nth 1 (nth 1 a)) + (nth 1 b)) + (1- (length a)))) + (and (math-known-scalarp b) + (list 'calcFunc-idn (math-mul + (nth 1 (nth 1 a)) b) + (1- (length a)))) + (and (math-known-matrixp b) + (math-mul (nth 1 (nth 1 a)) b)))) + (and (math-identity-matrix-p b t) + (or (and (eq (car-safe a) 'calcFunc-idn) + (= (length a) 2) + (list 'calcFunc-idn (math-mul (nth 1 a) + (nth 1 (nth 1 b))) + (1- (length b)))) + (and (math-known-scalarp a) + (list 'calcFunc-idn (math-mul a (nth 1 (nth 1 b))) + (1- (length b)))) + (and (math-known-matrixp a) + (math-mul a (nth 1 (nth 1 b)))))) (and (math-looks-negp b) (math-mul (math-neg a) (math-neg b))) (and (eq (car-safe b) '-) @@ -1706,7 +1731,9 @@ (math-div-new-non-trig term)))) (defun math-div-symb-fancy (a b) - (or (and math-simplify-only + (or (and (math-known-matrixp b) + (math-mul a (math-pow b -1))) + (and math-simplify-only (not (equal a math-simplify-only)) (list '/ a b)) (and (Math-equal-int b 1) a)
--- a/lisp/calc/calc-ext.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/calc/calc-ext.el Tue Nov 01 06:23:08 2005 +0000 @@ -659,7 +659,7 @@ ("calc-alg" calc-has-rules math-defsimplify calc-modify-simplify-mode calcFunc-collect calcFunc-esimplify calcFunc-islin calcFunc-islinnt calcFunc-lin calcFunc-linnt -calcFunc-simplify calcFunc-subst math-beforep +calcFunc-simplify calcFunc-subst calcFunc-writeoutpower math-beforep math-build-polynomial-expr math-expand-formula math-expr-contains math-expr-contains-count math-expr-depends math-expr-height math-expr-subst math-expr-weight math-integer-plus math-is-linear @@ -923,7 +923,7 @@ ("calc-alg" calc-alg-evaluate calc-apart calc-collect calc-expand calc-expand-formula calc-factor calc-normalize-rat calc-poly-div calc-poly-div-rem calc-poly-gcd calc-poly-rem calc-simplify -calc-simplify-extended calc-substitute) +calc-simplify-extended calc-substitute calc-writeoutpower) ("calcalg2" calc-alt-summation calc-derivative calc-dump-integral-cache calc-integral calc-num-integral @@ -2107,6 +2107,35 @@ (and (cdr dims) (= (car dims) (nth 1 dims))))) +;;; True if MAT is an identity matrix. +(defun math-identity-matrix-p (mat &optional mul) + (if (math-square-matrixp mat) + (let ((a (if mul + (nth 1 (nth 1 mat)) + 1)) + (n (1- (length mat))) + (i 1)) + (while (and (<= i n) + (math-ident-row-p (nth i mat) i a)) + (setq i (1+ i))) + (if (> i n) + a + nil)))) + +(defun math-ident-row-p (row n &optional a) + (unless a + (setq a 1)) + (and + (not (memq nil (mapcar + (lambda (x) (eq x 0)) + (nthcdr (1+ n) row)))) + (not (memq nil (mapcar + (lambda (x) (eq x 0)) + (butlast + (cdr row) + (- (length row) n))))) + (eq (elt row n) a))) + ;;; True if A is any scalar data object. [P x] (defun math-objectp (a) ; [Public] (or (integerp a)
--- a/lisp/calc/calc-misc.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/calc/calc-misc.el Tue Nov 01 06:23:08 2005 +0000 @@ -646,8 +646,11 @@ (or (math-with-extra-prec 2 (math-matrix-inv-raw m)) (math-reject-arg m "*Singular matrix")) (math-reject-arg m 'square-matrixp))) - (math-div 1 m))) - + (if (and + (require 'calc-arith) + (math-known-matrixp m)) + (math-pow m -1) + (math-div 1 m)))) (defun math-do-working (msg arg) (or executing-kbd-macro
--- a/lisp/calendar/diary-lib.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/calendar/diary-lib.el Tue Nov 01 06:23:08 2005 +0000 @@ -439,10 +439,20 @@ date-start temp) (re-search-backward "\^M\\|\n\\|\\`") (setq date-start (point)) - (re-search-forward "\^M\\|\n" nil t 2) + ;; When selective display (rather than + ;; overlays) was used, diary file used to + ;; start in a blank line and end in a + ;; newline. Now that neither of these + ;; need be true, 'move handles the latter + ;; and 1/2 kludge the former. + (re-search-forward + "\^M\\|\n" nil 'move + (if (and (bobp) (not (looking-at "\^M\\|\n"))) + 1 + 2)) (while (looking-at " \\|\^I") - (re-search-forward "\^M\\|\n" nil t)) - (backward-char 1) + (re-search-forward "\^M\\|\n" nil 'move)) + (unless (eobp) (backward-char 1)) (unless list-only (remove-overlays date-start (point) 'invisible 'diary))
--- a/lisp/calendar/icalendar.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/calendar/icalendar.el Tue Nov 01 06:23:08 2005 +0000 @@ -97,7 +97,7 @@ ;;; Code: -(defconst icalendar-version 0.12 +(defconst icalendar-version "0.13" "Version number of icalendar.el.") ;; ====================================================================== @@ -113,18 +113,21 @@ "Format string for importing events from iCalendar into Emacs diary. This string defines how iCalendar events are inserted into diary file. Meaning of the specifiers: +%c Class, see `icalendar-import-format-class' %d Description, see `icalendar-import-format-description' %l Location, see `icalendar-import-format-location' %o Organizer, see `icalendar-import-format-organizer' -%s Subject, see `icalendar-import-format-subject'" +%s Summary, see `icalendar-import-format-summary' +%t Status, see `icalendar-import-format-status' +%u URL, see `icalendar-import-format-url'" :type 'string :group 'icalendar) -(defcustom icalendar-import-format-subject +(defcustom icalendar-import-format-summary "%s" - "Format string defining how the subject element is formatted. -This applies only if the subject is not empty! `%s' is replaced -by the subject." + "Format string defining how the summary element is formatted. +This applies only if the summary is not empty! `%s' is replaced +by the summary." :type 'string :group 'icalendar) @@ -152,6 +155,30 @@ :type 'string :group 'icalendar) +(defcustom icalendar-import-format-url + "\n URL: %s" + "Format string defining how the URL element is formatted. +This applies only if the URL is not empty! `%s' is replaced by +the URL." + :type 'string + :group 'icalendar) + +(defcustom icalendar-import-format-status + "\n Status: %s" + "Format string defining how the status element is formatted. +This applies only if the status is not empty! `%s' is replaced by +the status." + :type 'string + :group 'icalendar) + +(defcustom icalendar-import-format-class + "\n Class: %s" + "Format string defining how the class element is formatted. +This applies only if the class is not empty! `%s' is replaced by +the class." + :type 'string + :group 'icalendar) + (defvar icalendar-debug nil "Enable icalendar debug messages.") @@ -195,15 +222,16 @@ (replace-match "" nil nil))) unfolded-buffer)) -(defsubst icalendar--rris (re rp st) - "Replace regexp RE with RP in string ST and return the new string. -This is here for compatibility with XEmacs." +(defsubst icalendar--rris (&rest args) + "Replace regular expression in string. +Pass ARGS to `replace-regexp-in-string' (Emacs) or to +`replace-in-string' (XEmacs)." ;; XEmacs: (if (fboundp 'replace-in-string) (save-match-data ;; apparently XEmacs needs save-match-data - (replace-in-string st re rp)) + (apply 'replace-in-string args)) ;; Emacs: - (replace-regexp-in-string re rp st))) + (apply 'replace-regexp-in-string args))) (defun icalendar--read-element (invalue inparams) "Recursively read the next iCalendar element in the current buffer. @@ -609,12 +637,11 @@ (setq month day) (setq day x)))) ( ;; date contains month names -- european-style - (and european-calendar-style - (string-match (concat "\\s-*" - "0?\\([123]?[0-9]\\)[ \t/]\\s-*" - "\\([A-Za-z][^ ]+\\)[ \t/]\\s-*" - "\\([0-9]\\{4\\}\\)") - datestring)) + (string-match (concat "\\s-*" + "0?\\([123]?[0-9]\\)[ \t/]\\s-*" + "\\([A-Za-z][^ ]+\\)[ \t/]\\s-*" + "\\([0-9]\\{4\\}\\)") + datestring) (setq day (read (substring datestring (match-beginning 1) (match-end 1)))) (setq month (icalendar--get-month-number @@ -623,12 +650,11 @@ (setq year (read (substring datestring (match-beginning 3) (match-end 3))))) ( ;; date contains month names -- non-european-style - (and (not european-calendar-style) - (string-match (concat "\\s-*" - "\\([A-Za-z][^ ]+\\)[ \t/]\\s-*" - "0?\\([123]?[0-9]\\),?[ \t/]\\s-*" - "\\([0-9]\\{4\\}\\)") - datestring)) + (string-match (concat "\\s-*" + "\\([A-Za-z][^ ]+\\)[ \t/]\\s-*" + "0?\\([123]?[0-9]\\),?[ \t/]\\s-*" + "\\([0-9]\\{4\\}\\)") + datestring) (setq day (read (substring datestring (match-beginning 2) (match-end 2)))) (setq month (icalendar--get-month-number @@ -704,10 +730,12 @@ (entry-main "") (entry-rest "") (header "") + (contents-n-summary) (contents) (found-error nil) (nonmarker (concat "^" (regexp-quote diary-nonmarking-symbol) - "?"))) + "?")) + (other-elements nil)) ;; prepare buffer with error messages (save-current-buffer (set-buffer (get-buffer-create "*icalendar-errors*")) @@ -728,36 +756,33 @@ (car (cddr (current-time))))) (condition-case error-val (progn - (setq contents - (or - ;; anniversaries -- %%(diary-anniversary ...) - (icalendar--convert-anniversary-to-ical nonmarker - entry-main) - ;; cyclic events -- %%(diary-cyclic ...) - (icalendar--convert-cyclic-to-ical nonmarker entry-main) - ;; diary-date -- %%(diary-date ...) - (icalendar--convert-date-to-ical nonmarker entry-main) - ;; float events -- %%(diary-float ...) - (icalendar--convert-float-to-ical nonmarker entry-main) - ;; block events -- %%(diary-block ...) - (icalendar--convert-block-to-ical nonmarker entry-main) - ;; other sexp diary entries - (icalendar--convert-sexp-to-ical nonmarker entry-main) - ;; weekly by day -- Monday 8:30 Team meeting - (icalendar--convert-weekly-to-ical nonmarker entry-main) - ;; yearly by day -- 1 May Tag der Arbeit - (icalendar--convert-yearly-to-ical nonmarker entry-main) - ;; "ordinary" events, start and end time given - ;; 1 Feb 2003 blah - (icalendar--convert-ordinary-to-ical nonmarker entry-main) - ;; everything else - ;; Oops! what's that? - (error "Could not parse entry"))) - (unless (string= entry-rest "") - (setq contents - (concat contents "\nDESCRIPTION:" - (icalendar--convert-string-for-export - entry-rest)))) + (setq contents-n-summary + (icalendar--convert-to-ical nonmarker entry-main)) + (setq other-elements (icalendar--parse-summary-and-rest + (concat entry-main entry-rest))) + (setq contents (concat (car contents-n-summary) + "\nSUMMARY:" (cadr contents-n-summary))) + (let ((cla (cdr (assoc 'cla other-elements))) + (des (cdr (assoc 'des other-elements))) + (loc (cdr (assoc 'loc other-elements))) + (org (cdr (assoc 'org other-elements))) + (sta (cdr (assoc 'sta other-elements))) + (sum (cdr (assoc 'sum other-elements))) + (url (cdr (assoc 'url other-elements)))) + (if cla + (setq contents (concat contents "\nCLASS:" cla))) + (if des + (setq contents (concat contents "\nDESCRIPTION:" des))) + (if loc + (setq contents (concat contents "\nLOCATION:" loc))) + (if org + (setq contents (concat contents "\nORGANIZER:" org))) + (if sta + (setq contents (concat contents "\nSTATUS:" sta))) + ;;(if sum + ;; (setq contents (concat contents "\nSUMMARY:" sum))) + (if url + (setq contents (concat contents "\nURL:" url)))) (setq result (concat result header contents "\nEND:VEVENT"))) ;; handle errors (error @@ -780,13 +805,127 @@ (insert result) (insert "\nEND:VCALENDAR\n") ;; save the diary file - (save-buffer)))) + (save-buffer) + (unless found-error + (bury-buffer))))) found-error)) -;; subroutines +(defun icalendar--convert-to-ical (nonmarker entry-main) + "Convert a diary entry to icalendar format. +NONMARKER is a regular expression matching the start of non-marking +entries. ENTRY-MAIN is the first line of the diary entry." + (or + ;; anniversaries -- %%(diary-anniversary ...) + (icalendar--convert-anniversary-to-ical nonmarker entry-main) + ;; cyclic events -- %%(diary-cyclic ...) + (icalendar--convert-cyclic-to-ical nonmarker entry-main) + ;; diary-date -- %%(diary-date ...) + (icalendar--convert-date-to-ical nonmarker entry-main) + ;; float events -- %%(diary-float ...) + (icalendar--convert-float-to-ical nonmarker entry-main) + ;; block events -- %%(diary-block ...) + (icalendar--convert-block-to-ical nonmarker entry-main) + ;; other sexp diary entries + (icalendar--convert-sexp-to-ical nonmarker entry-main) + ;; weekly by day -- Monday 8:30 Team meeting + (icalendar--convert-weekly-to-ical nonmarker entry-main) + ;; yearly by day -- 1 May Tag der Arbeit + (icalendar--convert-yearly-to-ical nonmarker entry-main) + ;; "ordinary" events, start and end time given + ;; 1 Feb 2003 blah + (icalendar--convert-ordinary-to-ical nonmarker entry-main) + ;; everything else + ;; Oops! what's that? + (error "Could not parse entry"))) + +(defun icalendar--parse-summary-and-rest (summary-and-rest) + "Parse SUMMARY-AND-REST from a diary to fill iCalendar properties." + (save-match-data + (let* ((s icalendar-import-format) + (p-cla (or (string-match "%c" icalendar-import-format) -1)) + (p-des (or (string-match "%d" icalendar-import-format) -1)) + (p-loc (or (string-match "%l" icalendar-import-format) -1)) + (p-org (or (string-match "%o" icalendar-import-format) -1)) + (p-sum (or (string-match "%s" icalendar-import-format) -1)) + (p-sta (or (string-match "%t" icalendar-import-format) -1)) + (p-url (or (string-match "%u" icalendar-import-format) -1)) + (p-list (sort (list p-cla p-des p-loc p-org p-sta p-sum p-url) '<)) + pos-cla pos-des pos-loc pos-org pos-sta pos-sum pos-url) + (dotimes (i (length p-list)) + (cond ((and (>= p-cla 0) (= (nth i p-list) p-cla)) + (setq pos-cla (+ 2 (* 2 i)))) + ((and (>= p-des 0) (= (nth i p-list) p-des)) + (setq pos-des (+ 2 (* 2 i)))) + ((and (>= p-loc 0) (= (nth i p-list) p-loc)) + (setq pos-loc (+ 2 (* 2 i)))) + ((and (>= p-org 0) (= (nth i p-list) p-org)) + (setq pos-org (+ 2 (* 2 i)))) + ((and (>= p-sta 0) (= (nth i p-list) p-sta)) + (setq pos-sta (+ 2 (* 2 i)))) + ((and (>= p-sum 0) (= (nth i p-list) p-sum)) + (setq pos-sum (+ 2 (* 2 i)))) + ((and (>= p-url 0) (= (nth i p-list) p-url)) + (setq pos-url (+ 2 (* 2 i)))))) + (mapc (lambda (ij) + (setq s (icalendar--rris (car ij) (cadr ij) s t t))) + (list + ;; summary must be first! because of %s + (list "%s" + (concat "\\(" icalendar-import-format-summary "\\)?")) + (list "%c" + (concat "\\(" icalendar-import-format-class "\\)?")) + (list "%d" + (concat "\\(" icalendar-import-format-description "\\)?")) + (list "%l" + (concat "\\(" icalendar-import-format-location "\\)?")) + (list "%o" + (concat "\\(" icalendar-import-format-organizer "\\)?")) + (list "%t" + (concat "\\(" icalendar-import-format-status "\\)?")) + (list "%u" + (concat "\\(" icalendar-import-format-url "\\)?")))) + (setq s (concat (icalendar--rris "%s" "\\(.*\\)" s nil t) " ")) + (if (string-match s summary-and-rest) + (let (cla des loc org sta sum url) + (if (and pos-sum (match-beginning pos-sum)) + (setq sum (substring summary-and-rest + (match-beginning pos-sum) + (match-end pos-sum)))) + (if (and pos-cla (match-beginning pos-cla)) + (setq cla (substring summary-and-rest + (match-beginning pos-cla) + (match-end pos-cla)))) + (if (and pos-des (match-beginning pos-des)) + (setq des (substring summary-and-rest + (match-beginning pos-des) + (match-end pos-des)))) + (if (and pos-loc (match-beginning pos-loc)) + (setq loc (substring summary-and-rest + (match-beginning pos-loc) + (match-end pos-loc)))) + (if (and pos-org (match-beginning pos-org)) + (setq org (substring summary-and-rest + (match-beginning pos-org) + (match-end pos-org)))) + (if (and pos-sta (match-beginning pos-sta)) + (setq sta (substring summary-and-rest + (match-beginning pos-sta) + (match-end pos-sta)))) + (if (and pos-url (match-beginning pos-url)) + (setq url (substring summary-and-rest + (match-beginning pos-url) + (match-end pos-url)))) + (list (if cla (cons 'cla cla) nil) + (if des (cons 'des des) nil) + (if loc (cons 'loc loc) nil) + (if org (cons 'org org) nil) + (if sta (cons 'sta sta) nil) + ;;(if sum (cons 'sum sum) nil) + (if url (cons 'url url) nil))))))) + +;; subroutines for icalendar-export-region (defun icalendar--convert-ordinary-to-ical (nonmarker entry-main) "Convert \"ordinary\" diary entry to icalendar format. - NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker @@ -795,7 +934,7 @@ "\\(" "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" - "\\s-*\\(.*\\)") + "\\s-*\\(.*?\\) ?$") entry-main) (let* ((datetime (substring entry-main (match-beginning 1) (match-end 1))) @@ -839,26 +978,24 @@ starttimestring)))) (setq endtimestring (format "T%06d" (+ 10000 time)))))) - (concat "\nDTSTART;" - (if starttimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - startisostring - (or starttimestring "") - "\nDTEND;" - (if endtimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - (if starttimestring - startisostring - endisostring) - (or endtimestring "") - "\nSUMMARY:" - summary)) + (list (concat "\nDTSTART;" + (if starttimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + startisostring + (or starttimestring "") + "\nDTEND;" + (if endtimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + (if starttimestring + startisostring + endisostring) + (or endtimestring "")) + summary)) ;; no match nil)) (defun icalendar--convert-weekly-to-ical (nonmarker entry-main) "Convert weekly diary entry to icalendar format. - NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (and (string-match (concat nonmarker @@ -869,7 +1006,7 @@ "\\([1-9][0-9]?:[0-9][0-9]\\)" "\\([ap]m\\)?\\)?" "\\)?" - "\\s-*\\(.*\\)$") + "\\s-*\\(.*?\\) ?$") entry-main) (icalendar--get-weekday-abbrev (substring entry-main (match-beginning 1) @@ -911,35 +1048,34 @@ starttimestring)))) (setq endtimestring (format "T%06d" (+ 10000 time)))))) - (concat "\nDTSTART;" - (if starttimestring - "VALUE=DATE-TIME:" - "VALUE=DATE:") - ;; find the correct week day, - ;; 1st january 2000 was a saturday - (format - "200001%02d" - (+ (icalendar--get-weekday-number day) 2)) - (or starttimestring "") - "\nDTEND;" - (if endtimestring - "VALUE=DATE-TIME:" - "VALUE=DATE:") - (format - "200001%02d" - ;; end is non-inclusive! - (+ (icalendar--get-weekday-number day) - (if endtimestring 2 3))) - (or endtimestring "") - "\nSUMMARY:" summary - "\nRRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=" - day)) + (list (concat "\nDTSTART;" + (if starttimestring + "VALUE=DATE-TIME:" + "VALUE=DATE:") + ;; find the correct week day, + ;; 1st january 2000 was a saturday + (format + "200001%02d" + (+ (icalendar--get-weekday-number day) 2)) + (or starttimestring "") + "\nDTEND;" + (if endtimestring + "VALUE=DATE-TIME:" + "VALUE=DATE:") + (format + "200001%02d" + ;; end is non-inclusive! + (+ (icalendar--get-weekday-number day) + (if endtimestring 2 3))) + (or endtimestring "") + "\nRRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=" + day) + summary)) ;; no match nil)) (defun icalendar--convert-yearly-to-ical (nonmarker entry-main) "Convert yearly diary entry to icalendar format. - NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker @@ -951,7 +1087,7 @@ "\\(" "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" - "\\s-*\\([^0-9]+.*\\)$" ; must not match years + "\\s-*\\([^0-9]+.*?\\) ?$" ; must not match years ) entry-main) (let* ((daypos (if european-calendar-style 1 2)) @@ -997,25 +1133,24 @@ starttimestring)))) (setq endtimestring (format "T%06d" (+ 10000 time)))))) - (concat "\nDTSTART;" - (if starttimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - (format "1900%02d%02d" month day) - (or starttimestring "") - "\nDTEND;" - (if endtimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - ;; end is not included! shift by one day - (icalendar--date-to-isodate - (list month day 1900) - (if endtimestring 0 1)) - (or endtimestring "") - "\nSUMMARY:" - summary - "\nRRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=" - (format "%2d" month) - ";BYMONTHDAY=" - (format "%2d" day))) + (list (concat "\nDTSTART;" + (if starttimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + (format "1900%02d%02d" month day) + (or starttimestring "") + "\nDTEND;" + (if endtimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + ;; end is not included! shift by one day + (icalendar--date-to-isodate + (list month day 1900) + (if endtimestring 0 1)) + (or endtimestring "") + "\nRRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=" + (format "%2d" month) + ";BYMONTHDAY=" + (format "%2d" day)) + summary)) ;; no match nil)) @@ -1026,18 +1161,28 @@ NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." - (if (string-match (concat nonmarker - "%%(\\([^)]+\\))\\s-*\\(.*\\)") - entry-main) - (progn - (icalendar--dmsg "diary-sexp %s" entry-main) - (error "Sexp-entries are not supported yet")) - ;; no match - nil)) + (cond ((string-match (concat nonmarker + "%%(and \\(([^)]+)\\))\\(\\s-*.*?\\) ?$") + entry-main) + ;; simple sexp entry as generated by icalendar.el: strip off the + ;; unnecessary (and) + (icalendar--dmsg "diary-sexp from icalendar.el %s" entry-main) + (icalendar--convert-to-ical + nonmarker + (concat "%%" + (substring entry-main (match-beginning 1) (match-end 1)) + (substring entry-main (match-beginning 2) (match-end 2))))) + ((string-match (concat nonmarker + "%%([^)]+)\\s-*.*") + entry-main) + (icalendar--dmsg "diary-sexp %s" entry-main) + (error "Sexp-entries are not supported yet")) + (t + ;; no match + nil))) (defun icalendar--convert-block-to-ical (nonmarker entry-main) "Convert block diary entry to icalendar format. - NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker @@ -1047,7 +1192,7 @@ "\\(" "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" - "\\s-*\\(.*\\)") + "\\s-*\\(.*?\\) ?$") entry-main) (let* ((startstring (substring entry-main (match-beginning 1) @@ -1096,20 +1241,19 @@ (+ 10000 time)))))) (if starttimestring ;; with time -> write rrule - (concat "\nDTSTART;VALUE=DATE-TIME:" - startisostring - starttimestring - "\nDTEND;VALUE=DATE-TIME:" - startisostring - endtimestring - "\nSUMMARY:" - summary - "\nRRULE:FREQ=DAILY;INTERVAL=1;UNTIL=" - endisostring) + (list (concat "\nDTSTART;VALUE=DATE-TIME:" + startisostring + starttimestring + "\nDTEND;VALUE=DATE-TIME:" + startisostring + endtimestring + "\nRRULE:FREQ=DAILY;INTERVAL=1;UNTIL=" + endisostring) + summary) ;; no time -> write long event - (concat "\nDTSTART;VALUE=DATE:" startisostring - "\nDTEND;VALUE=DATE:" endisostring+1 - "\nSUMMARY:" summary))) + (list (concat "\nDTSTART;VALUE=DATE:" startisostring + "\nDTEND;VALUE=DATE:" endisostring+1) + summary))) ;; no match nil)) @@ -1121,7 +1265,7 @@ NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker - "%%(diary-float \\([^)]+\\))\\s-*\\(.*\\)") + "%%(diary-float \\([^)]+\\))\\s-*\\(.*?\\) ?$") entry-main) (progn (icalendar--dmsg "diary-float %s" entry-main) @@ -1137,7 +1281,7 @@ NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker - "%%(diary-date \\([^)]+\\))\\s-*\\(.*\\)") + "%%(diary-date \\([^)]+\\))\\s-*\\(.*?\\) ?$") entry-main) (progn (icalendar--dmsg "diary-date %s" entry-main) @@ -1147,7 +1291,6 @@ (defun icalendar--convert-cyclic-to-ical (nonmarker entry-main) "Convert `diary-cyclic' diary entry to icalendar format. - NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker @@ -1157,7 +1300,7 @@ "\\(" "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" - "\\s-*\\(.*\\)") + "\\s-*\\(.*?\\) ?$") entry-main) (let* ((frequency (substring entry-main (match-beginning 1) (match-end 1))) @@ -1202,27 +1345,26 @@ starttimestring)))) (setq endtimestring (format "T%06d" (+ 10000 time)))))) - (concat "\nDTSTART;" - (if starttimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - startisostring - (or starttimestring "") - "\nDTEND;" - (if endtimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - (if endtimestring endisostring endisostring+1) - (or endtimestring "") - "\nSUMMARY:" summary - "\nRRULE:FREQ=DAILY;INTERVAL=" frequency - ;; strange: korganizer does not expect - ;; BYSOMETHING here... - )) + (list (concat "\nDTSTART;" + (if starttimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + startisostring + (or starttimestring "") + "\nDTEND;" + (if endtimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + (if endtimestring endisostring endisostring+1) + (or endtimestring "") + "\nRRULE:FREQ=DAILY;INTERVAL=" frequency + ;; strange: korganizer does not expect + ;; BYSOMETHING here... + ) + summary)) ;; no match nil)) (defun icalendar--convert-anniversary-to-ical (nonmarker entry-main) "Convert `diary-anniversary' diary entry to icalendar format. - NONMARKER is a regular expression matching the start of non-marking entries. ENTRY-MAIN is the first line of the diary entry." (if (string-match (concat nonmarker @@ -1231,7 +1373,7 @@ "\\(" "-0?\\([1-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" - "\\s-*\\(.*\\)") + "\\s-*\\(.*?\\) ?$") entry-main) (let* ((datetime (substring entry-main (match-beginning 1) (match-end 1))) @@ -1272,26 +1414,26 @@ starttimestring)))) (setq endtimestring (format "T%06d" (+ 10000 time)))))) - (concat "\nDTSTART;" - (if starttimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - startisostring - (or starttimestring "") - "\nDTEND;" - (if endtimestring "VALUE=DATE-TIME:" - "VALUE=DATE:") - endisostring - (or endtimestring "") - "\nSUMMARY:" summary - "\nRRULE:FREQ=YEARLY;INTERVAL=1" - ;; the following is redundant, - ;; but korganizer seems to expect this... ;( - ;; and evolution doesn't understand it... :( - ;; so... who is wrong?! - ";BYMONTH=" - (substring startisostring 4 6) - ";BYMONTHDAY=" - (substring startisostring 6 8))) + (list (concat "\nDTSTART;" + (if starttimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + startisostring + (or starttimestring "") + "\nDTEND;" + (if endtimestring "VALUE=DATE-TIME:" + "VALUE=DATE:") + endisostring + (or endtimestring "") + "\nRRULE:FREQ=YEARLY;INTERVAL=1" + ;; the following is redundant, + ;; but korganizer seems to expect this... ;( + ;; and evolution doesn't understand it... :( + ;; so... who is wrong?! + ";BYMONTH=" + (substring startisostring 4 6) + ";BYMONTHDAY=" + (substring startisostring 6 8)) + summary)) ;; no match nil)) @@ -1302,7 +1444,7 @@ ;;;###autoload (defun icalendar-import-file (ical-filename diary-filename &optional non-marking) - "Import a iCalendar file and append to a diary file. + "Import an iCalendar file and append to a diary file. Argument ICAL-FILENAME output iCalendar file. Argument DIARY-FILENAME input `diary-file'. Optional argument NON-MARKING determines whether events are created as @@ -1376,10 +1518,13 @@ "Create a string representation of an iCalendar EVENT." (let ((string icalendar-import-format) (conversion-list - '(("%d" DESCRIPTION icalendar-import-format-description) - ("%s" SUMMARY icalendar-import-format-subject) + '(("%c" CLASS icalendar-import-format-class) + ("%d" DESCRIPTION icalendar-import-format-description) ("%l" LOCATION icalendar-import-format-location) - ("%o" ORGANIZER icalendar-import-format-organizer)))) + ("%o" ORGANIZER icalendar-import-format-organizer) + ("%s" SUMMARY icalendar-import-format-summary) + ("%t" STATUS icalendar-import-format-status) + ("%u" URL icalendar-import-format-url)))) ;; convert the specifiers in the format string (mapcar (lambda (i) (let* ((spec (car i)) @@ -1392,17 +1537,19 @@ (icalendar--rris "%s" (icalendar--convert-string-for-import contents) - (symbol-value format)))) + (symbol-value format) + t t))) (setq string (icalendar--rris spec formatted-contents - string)))) + string + t t)))) conversion-list) string)) (defun icalendar--convert-ical-to-diary (ical-list diary-file &optional do-not-ask non-marking) - "Convert an iCalendar file to an Emacs diary file. + "Convert Calendar data to an Emacs diary file. Import VEVENTS from the iCalendar object ICAL-LIST and saves them to a DIARY-FILE. If DO-NOT-ASK is nil the user is asked for each event whether to actually import it. NON-MARKING determines whether diary @@ -1432,13 +1579,13 @@ end-d end-1-d end-t - (subject (icalendar--convert-string-for-import + (summary (icalendar--convert-string-for-import (or (icalendar--get-event-property e 'SUMMARY) - "No Subject"))) + "No summary"))) (rrule (icalendar--get-event-property e 'RRULE)) (rdate (icalendar--get-event-property e 'RDATE)) (duration (icalendar--get-event-property e 'DURATION))) - (icalendar--dmsg "%s: `%s'" start-d subject) + (icalendar--dmsg "%s: `%s'" start-d summary) ;; check whether start-time is missing (if (and dtstart (string= @@ -1456,7 +1603,7 @@ t)))) (if (and dtend-dec (not (eq dtend-dec dtend-dec-d))) (message "Inconsistent endtime and duration for %s" - subject)) + summary)) (setq dtend-dec dtend-dec-d) (setq dtend-1-dec dtend-1-dec-d))) (setq end-d (if dtend-dec @@ -1517,9 +1664,9 @@ (setq diary-string (concat diary-string " " (icalendar--format-ical-event e))) - (if do-not-ask (setq subject nil)) + (if do-not-ask (setq summary nil)) (icalendar--add-diary-entry diary-string diary-file - non-marking subject)) + non-marking summary)) ;; event was not ok (setq found-error t) (setq error-string @@ -1570,7 +1717,7 @@ (let ((until-1 0)) (cond ((string-equal frequency "DAILY") (setq until (icalendar--add-decoded-times - dtstart-dec + dtstart-dec (list 0 0 0 (* (read count) interval) 0 0))) (setq until-1 (icalendar--add-decoded-times dtstart-dec @@ -1767,23 +1914,24 @@ start-t)))) (defun icalendar--add-diary-entry (string diary-file non-marking - &optional subject) + &optional summary) "Add STRING to the diary file DIARY-FILE. STRING must be a properly formatted valid diary entry. NON-MARKING determines whether diary events are created as non-marking. If -SUBJECT is not nil it must be a string that gives the subject of the +SUMMARY is not nil it must be a string that gives the summary of the entry. In this case the user will be asked whether he wants to insert the entry." - (when (or (not subject) + (when (or (not summary) (y-or-n-p (format "Add appointment for `%s' to diary? " - subject))) - (when subject + summary))) + (when summary (setq non-marking (y-or-n-p (format "Make appointment non-marking? ")))) (save-window-excursion (unless diary-file (setq diary-file (read-file-name "Add appointment to this diary file: "))) + ;; Note: make-diary-entry will add a trailing blank char.... :( (make-diary-entry string non-marking diary-file)))) (provide 'icalendar)
--- a/lisp/cus-edit.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/cus-edit.el Tue Nov 01 06:23:08 2005 +0000 @@ -1377,13 +1377,27 @@ (interactive) (quit-window custom-buffer-done-kill)) +(defvar custom-button nil + "Face used for buttons in customization buffers.") + +(defvar custom-button-pressed nil + "Face used for pressed buttons in customization buffers.") + (defcustom custom-raised-buttons (not (equal (face-valid-attribute-values :box) '(("unspecified" . unspecified)))) "If non-nil, indicate active buttons in a `raised-button' style. Otherwise use brackets." :type 'boolean :version "21.1" - :group 'custom-buffer) + :group 'custom-buffer + :set (lambda (variable value) + (custom-set-default variable value) + (setq custom-button + (if value 'custom-button 'custom-button-unraised)) + (setq custom-button-pressed + (if value + 'custom-button-pressed + 'custom-button-pressed-unraised)))) (defun custom-buffer-create-internal (options &optional description) (custom-mode) @@ -1896,24 +1910,52 @@ :background "lightgrey" :foreground "black")) (t nil)) - "Face used for buttons in customization buffers." + "Face for custom buffer buttons if `custom-raised-buttons' is non-nil." :version "21.1" :group 'custom-faces) ;; backward-compatibility alias (put 'custom-button-face 'face-alias 'custom-button) +(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)) + "Face for custom buffer buttons if `custom-raised-buttons' is nil." + :version "22.1" + :group 'custom-faces) + +(setq custom-button + (if custom-raised-buttons 'custom-button 'custom-button-unraised)) + (defface custom-button-pressed '((((type x w32 mac) (class color)) (:box (:line-width 2 :style pressed-button) :background "lightgrey" :foreground "black")) (t (:inverse-video t))) - "Face used for buttons in customization buffers." + "Face for pressed custom buttons if `custom-raised-buttons' is non-nil." :version "21.1" :group 'custom-faces) ;; backward-compatibility alias (put 'custom-button-pressed-face 'face-alias 'custom-button-pressed) +(defface custom-button-pressed-unraised + '((default :inherit custom-button-unraised) + (((class color) (background light)) :foreground "magenta4") + (((class color) (background dark)) :foreground "violet")) + "Face for pressed custom buttons if `custom-raised-buttons' is nil." + :version "22.1" + :group 'custom-faces) + +(setq custom-button-pressed + (if custom-raised-buttons + 'custom-button-pressed + 'custom-button-pressed-unraised)) + (defface custom-documentation nil "Face used for documentation strings in customization buffers." :group 'custom-faces) @@ -4311,10 +4353,11 @@ (make-local-variable 'widget-documentation-face) (setq widget-documentation-face 'custom-documentation) (make-local-variable 'widget-button-face) - (setq widget-button-face 'custom-button) - (set (make-local-variable 'widget-button-pressed-face) 'custom-button-pressed) - (set (make-local-variable 'widget-mouse-face) - 'custom-button-pressed) ; buttons `depress' when moused + (setq widget-button-face custom-button) + (set (make-local-variable 'widget-button-pressed-face) custom-button-pressed) + (if custom-raised-buttons + (set (make-local-variable 'widget-mouse-face) custom-button)) + ;; When possible, use relief for buttons, not bracketing. This test ;; may not be optimal. (when custom-raised-buttons
--- a/lisp/custom.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/custom.el Tue Nov 01 06:23:08 2005 +0000 @@ -272,6 +272,7 @@ Read the section about customization in the Emacs Lisp manual for more information." + (declare (doc-string 3)) ;; It is better not to use backquote in this file, ;; because that makes a bootstrapping problem ;; if you need to recompile all the Lisp files using interpreted code. @@ -353,6 +354,7 @@ Read the section about customization in the Emacs Lisp manual for more information." + (declare (doc-string 3)) ;; It is better not to use backquote in this file, ;; because that makes a bootstrapping problem ;; if you need to recompile all the Lisp files using interpreted code.
--- a/lisp/dired-x.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/dired-x.el Tue Nov 01 06:23:08 2005 +0000 @@ -2,7 +2,7 @@ ;; Author: Sebastian Kremer <sk@thp.uni-koeln.de> ;; Lawrence R. Dodd <dodd@roebling.poly.edu> -;; Maintainer: nobody (want to volunteer?) +;; Maintainer: Romain Francoise <rfrancoise@gnu.org> ;; Version: 2.37+ ;; Date: 1994/08/18 19:27:42 ;; Keywords: dired extensions files @@ -678,7 +678,9 @@ ;; decent subdir headerline: (goto-char (point-min)) (or (looking-at dired-subdir-regexp) - (dired-insert-headerline default-directory)) + (insert " " + (directory-file-name (file-name-directory default-directory)) + ":\n")) (dired-mode dirname (or switches dired-listing-switches)) (setq mode-name "Virtual Dired" revert-buffer-function 'dired-virtual-revert) @@ -1517,7 +1519,7 @@ ;; Karsten Wenger <kw@cis.uni-muenchen.de> fixed uid. (setq uid (buffer-substring (+ (point) 1) (progn (forward-word 1) (point)))) - (re-search-forward dired-move-to-filename-regexp) + (re-search-forward directory-listing-before-filename-regexp) (goto-char (match-beginning 1)) (forward-char -1) (setq size (string-to-number (buffer-substring (save-excursion @@ -1716,5 +1718,5 @@ ;; As Barry Warsaw would say: "This might be useful..." (provide 'dired-x) -;;; arch-tag: 71a43ba2-7a00-4793-a028-0613dd7765ae +;; arch-tag: 71a43ba2-7a00-4793-a028-0613dd7765ae ;;; dired-x.el ends here
--- a/lisp/dired.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/dired.el Tue Nov 01 06:23:08 2005 +0000 @@ -842,16 +842,17 @@ ;; line, the alignment if this line w.r.t the rest is messed up because ;; the fields of that one line will generally be smaller. ;; - ;; To work around this problem, we here add spaces to try and re-align the - ;; fields as needed. Since this is purely aesthetic, it is of utmost - ;; importance that it doesn't mess up anything like - ;; `dired-move-to-filename'. To this end, we limit ourselves to adding - ;; spaces only, and to only add them at places where there was already at - ;; least one space. This way, as long as `dired-move-to-filename-regexp' - ;; always matches spaces with "*" or "+", we know we haven't made anything - ;; worse. There is one spot where the exact number of spaces is - ;; important, which is just before the actual filename, so we refrain from - ;; adding spaces there (and within the filename as well, of course). + ;; To work around this problem, we here add spaces to try and + ;; re-align the fields as needed. Since this is purely aesthetic, + ;; it is of utmost importance that it doesn't mess up anything like + ;; `dired-move-to-filename'. To this end, we limit ourselves to + ;; adding spaces only, and to only add them at places where there + ;; was already at least one space. This way, as long as + ;; `directory-listing-before-filename-regexp' always matches spaces + ;; with "*" or "+", we know we haven't made anything worse. There + ;; is one spot where the exact number of spaces is important, which + ;; is just before the actual filename, so we refrain from adding + ;; spaces there (and within the filename as well, of course). (save-excursion (let (file file-col other other-col) ;; Check the there is indeed a file, and that there is anoter adjacent @@ -953,7 +954,7 @@ (setq switches (concat "--dired " switches))) ;; We used to specify the C locale here, to force English month names; ;; but this should not be necessary any more, - ;; with the new value of dired-move-to-filename-regexp. + ;; with the new value of `directory-listing-before-filename-regexp'. (if file-list (dolist (f file-list) (let ((beg (point))) @@ -1837,50 +1838,6 @@ ;;; Functions for finding the file name in a dired buffer line. -(defvar dired-move-to-filename-regexp - (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)") - (l-or-quote "\\([A-Za-z']\\|[^\0-\177]\\)") - ;; In some locales, month abbreviations are as short as 2 letters, - ;; and they can be followed by ".". - ;; In Breton, a month name can include a quote character. - (month (concat l-or-quote l-or-quote "+\\.?")) - (s " ") - (yyyy "[0-9][0-9][0-9][0-9]") - (dd "[ 0-3][0-9]") - (HH:MM "[ 0-2][0-9][:.][0-5][0-9]") - (seconds "[0-6][0-9]\\([.,][0-9]+\\)?") - (zone "[-+][0-2][0-9][0-5][0-9]") - (iso-mm-dd "[01][0-9]-[0-3][0-9]") - (iso-time (concat HH:MM "\\(:" seconds "\\( ?" zone "\\)?\\)?")) - (iso (concat "\\(\\(" yyyy "-\\)?" iso-mm-dd "[ T]" iso-time - "\\|" yyyy "-" iso-mm-dd "\\)")) - (western (concat "\\(" month s "+" dd "\\|" dd "\\.?" s month "\\)" - s "+" - "\\(" HH:MM "\\|" yyyy "\\)")) - (western-comma (concat month s "+" dd "," s "+" yyyy)) - ;; Japanese MS-Windows ls-lisp has one-digit months, and - ;; omits the Kanji characters after month and day-of-month. - ;; On Mac OS X 10.3, the date format in East Asian locales is - ;; day-of-month digits followed by month digits. - (mm "[ 0-1]?[0-9]") - (east-asian - (concat "\\(" mm l "?" s dd l "?" s "+" - "\\|" dd s mm s "+" "\\)" - "\\(" HH:MM "\\|" yyyy l "?" "\\)"))) - ;; The "[0-9]" below requires the previous column to end in a digit. - ;; This avoids recognizing `1 may 1997' as a date in the line: - ;; -r--r--r-- 1 may 1997 1168 Oct 19 16:49 README - ;; The "[BkKMGTPEZY]?" below supports "ls -alh" output. - ;; The ".*" below finds the last match if there are multiple matches. - ;; This avoids recognizing `jservice 10 1024' as a date in the line: - ;; drwxr-xr-x 3 jservice 10 1024 Jul 2 1997 esg-host - (concat ".*[0-9][BkKMGTPEZY]?" s - "\\(" western "\\|" western-comma "\\|" east-asian "\\|" iso "\\)" - s "+")) - "Regular expression to match up to the file name in a directory listing. -The default value is designed to recognize dates and times -regardless of the language.") - (defvar dired-permission-flags-regexp "\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)[-r][-w]\\([^ ]\\)" "Regular expression to match the permission flags in `ls -l'.") @@ -1898,12 +1855,12 @@ (cond ((and change (< change eol)) (goto-char change)) - ((re-search-forward dired-move-to-filename-regexp eol t) + ((re-search-forward directory-listing-before-filename-regexp eol t) (goto-char (match-end 0))) ((re-search-forward dired-permission-flags-regexp eol t) ;; Ha! There *is* a file. Our regexp-from-hell just failed to find it. (if raise-error - (error "Unrecognized line! Check dired-move-to-filename-regexp")) + (error "Unrecognized line! Check directory-listing-before-filename-regexp")) (beginning-of-line) nil) (raise-error
--- a/lisp/emacs-lisp/advice.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/emacs-lisp/advice.el Tue Nov 01 06:23:08 2005 +0000 @@ -3109,8 +3109,8 @@ ;; in order to do proper prompting: `(if (called-interactively-p) (call-interactively ',origname) - ,(ad-make-mapped-call orig-arglist - advised-arglist + ,(ad-make-mapped-call advised-arglist + orig-arglist origname))) ;; And now for normal functions and non-interactive subrs ;; (or subrs whose interactive behavior was advised): @@ -3812,6 +3812,7 @@ during preloading. See Info node `(elisp)Advising Functions' for comprehensive documentation." + (declare (doc-string 3)) (if (not (ad-name-p function)) (error "defadvice: Invalid function name: %s" function)) (let* ((class (car args)) @@ -3986,5 +3987,5 @@ (provide 'advice) -;;; arch-tag: 29f8c9a1-8c88-471f-95d7-e28541c6b7c0 +;; arch-tag: 29f8c9a1-8c88-471f-95d7-e28541c6b7c0 ;;; advice.el ends here
--- a/lisp/emacs-lisp/byte-run.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/emacs-lisp/byte-run.el Tue Nov 01 06:23:08 2005 +0000 @@ -50,6 +50,8 @@ (put macro 'lisp-indent-function (car (cdr d)))) ((and (consp d) (eq (car d) 'debug)) (put macro 'edebug-form-spec (car (cdr d)))) + ((and (consp d) (eq (car d) 'doc-string)) + (put macro 'doc-string-elt (car (cdr d)))) (t (message "Unknown declaration %s" d)))))) @@ -126,6 +128,7 @@ \(make-obsolete 'old-fun 'new-fun \"22.1\") See the docstrings of `defalias' and `make-obsolete' for more details." + (declare (doc-string 4)) `(progn (defalias ,obsolete-name ,current-name ,docstring) (make-obsolete ,obsolete-name ,current-name ,when))) @@ -158,9 +161,10 @@ See the docstrings of `defvaralias' and `make-obsolete-variable' or Info node `(elisp)Variable Aliases' for more details." + (declare (doc-string 4)) `(progn (defvaralias ,obsolete-name ,current-name ,docstring) - (make-obsolete-variable ,obsolete-name ,current-name ,when))) + (make-obsolete-variable ,obsolete-name ,current-name ,when))) (defmacro dont-compile (&rest body) "Like `progn', but the body always runs interpreted (not compiled). @@ -169,10 +173,10 @@ (list 'eval (list 'quote (if (cdr body) (cons 'progn body) (car body))))) -;;; interface to evaluating things at compile time and/or load time -;;; these macro must come after any uses of them in this file, as their -;;; definition in the file overrides the magic definitions on the -;;; byte-compile-macro-environment. +;; interface to evaluating things at compile time and/or load time +;; these macro must come after any uses of them in this file, as their +;; definition in the file overrides the magic definitions on the +;; byte-compile-macro-environment. (defmacro eval-when-compile (&rest body) "Like `progn', but evaluates the body at compile time if you're compiling. @@ -196,12 +200,12 @@ (car (last body))) -;;; I nuked this because it's not a good idea for users to think of using it. -;;; These options are a matter of installation preference, and have nothing to -;;; with particular source files; it's a mistake to suggest to users -;;; they should associate these with particular source files. -;;; There is hardly any reason to change these parameters, anyway. -;;; --rms. +;; I nuked this because it's not a good idea for users to think of using it. +;; These options are a matter of installation preference, and have nothing to +;; with particular source files; it's a mistake to suggest to users +;; they should associate these with particular source files. +;; There is hardly any reason to change these parameters, anyway. +;; --rms. ;; (put 'byte-compiler-options 'lisp-indent-function 0) ;; (defmacro byte-compiler-options (&rest args) @@ -227,5 +231,5 @@ ;; (file-format emacs19))" ;; nil) -;;; arch-tag: 76f8328a-1f66-4df2-9b6d-5c3666dc05e9 +;; arch-tag: 76f8328a-1f66-4df2-9b6d-5c3666dc05e9 ;;; byte-run.el ends here
--- a/lisp/emacs-lisp/bytecomp.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Tue Nov 01 06:23:08 2005 +0000 @@ -908,6 +908,13 @@ ;; list. If our current position is after the symbol's position, we ;; assume we've already passed that point, and look for the next ;; occurrence of the symbol. +;; +;; This function should not be called twice for the same occurrence of +;; a symbol, and it should not be called for symbols generated by the +;; byte compiler itself; because rather than just fail looking up the +;; symbol, we may find an occurrence of the symbol further ahead, and +;; then `byte-compile-last-position' as advanced too far. +;; ;; So your're probably asking yourself: Isn't this function a ;; gross hack? And the answer, of course, would be yes. (defun byte-compile-set-symbol-position (sym &optional allow-previous) @@ -2304,7 +2311,7 @@ ',name ',declaration)) outbuffer))))) - (let* ((new-one (byte-compile-lambda (cons 'lambda (nthcdr 2 form)))) + (let* ((new-one (byte-compile-lambda (nthcdr 2 form) t)) (code (byte-compile-byte-code-maker new-one))) (if this-one (setcdr this-one new-one) @@ -2500,10 +2507,16 @@ ;; Byte-compile a lambda-expression and return a valid function. ;; The value is usually a compiled function but may be the original ;; lambda-expression. -(defun byte-compile-lambda (fun) - (unless (eq 'lambda (car-safe fun)) - (error "Not a lambda list: %S" fun)) - (byte-compile-set-symbol-position 'lambda) +;; When ADD-LAMBDA is non-nil, the symbol `lambda' is added as head +;; of the list FUN and `byte-compile-set-symbol-position' is not called. +;; Use this feature to avoid calling `byte-compile-set-symbol-position' +;; for symbols generated by the byte compiler itself. +(defun byte-compile-lambda (fun &optional add-lambda) + (if add-lambda + (setq fun (cons 'lambda fun)) + (unless (eq 'lambda (car-safe fun)) + (error "Not a lambda list: %S" fun)) + (byte-compile-set-symbol-position 'lambda)) (byte-compile-check-lambda-list (nth 1 fun)) (let* ((arglist (nth 1 fun)) (byte-compile-bound-variables @@ -2755,9 +2768,7 @@ (or (not (byte-compile-version-cond byte-compile-compatibility)) (not (get (get fn 'byte-opcode) 'emacs19-opcode)))) - (progn - (byte-compile-set-symbol-position fn) - (funcall handler form)) + (funcall handler form) (when (memq 'callargs byte-compile-warnings) (if (memq fn '(custom-declare-group custom-declare-variable custom-declare-face)) (byte-compile-nogroup-warn form)) @@ -3671,7 +3682,7 @@ (list 'fset (list 'quote (nth 1 form)) (byte-compile-byte-code-maker - (byte-compile-lambda (cons 'lambda (cdr (cdr form))))))) + (byte-compile-lambda (cdr (cdr form)) t)))) (byte-compile-discard)) ;; We prefer to generate a defalias form so it will record the function ;; definition just like interpreting a defun. @@ -3679,7 +3690,7 @@ (list 'defalias (list 'quote (nth 1 form)) (byte-compile-byte-code-maker - (byte-compile-lambda (cons 'lambda (cdr (cdr form)))))) + (byte-compile-lambda (cdr (cdr form)) t))) t)) (byte-compile-constant (nth 1 form))) @@ -3688,8 +3699,7 @@ (byte-compile-body-do-effect (list (list 'fset (list 'quote (nth 1 form)) (let ((code (byte-compile-byte-code-maker - (byte-compile-lambda - (cons 'lambda (cdr (cdr form))))))) + (byte-compile-lambda (cdr (cdr form)) t)))) (if (eq (car-safe code) 'make-byte-code) (list 'cons ''macro code) (list 'quote (cons 'macro (eval code))))))
--- a/lisp/emacs-lisp/debug.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/emacs-lisp/debug.el Tue Nov 01 06:23:08 2005 +0000 @@ -353,9 +353,10 @@ (forward-line -1) (setq new-start (point))) (if (not (zerop - (compare-buffer-substrings - (current-buffer) old-start old-end - buffer new-start new-end))) + (let ((case-fold-search nil)) + (compare-buffer-substrings + (current-buffer) old-start old-end + buffer new-start new-end)))) (setq all-match nil)))) ;; Now new-end is the position of the start of the ;; unchanged part in the current buffer, and old-end is @@ -659,6 +660,9 @@ For the cross-reference format, see `help-make-xrefs'." (interactive "d") (require 'help-mode) + ;; Ideally we'd just do (call-interactively 'help-follow) except that this + ;; assumes we're already in a *Help* buffer and reuses it, so it ends up + ;; incorrectly "reusing" the *Backtrace* buffer to show the help info. (unless pos (setq pos (point))) (unless (push-button pos) @@ -671,8 +675,7 @@ (progn (skip-syntax-forward "w_") (point))))))) (when (or (boundp sym) (fboundp sym) (facep sym)) - (switch-to-buffer-other-window (generate-new-buffer "*Help*")) - (help-do-xref pos #'help-xref-interned (list sym)))))) + (help-xref-interned sym))))) ;; When you change this, you may also need to change the number of ;; frames that the debugger skips.
--- a/lisp/emacs-lisp/find-func.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/emacs-lisp/find-func.el Tue Nov 01 06:23:08 2005 +0000 @@ -142,9 +142,9 @@ (defun find-library-name (library) "Return the absolute file name of the Lisp source of LIBRARY." - ;; If the library is byte-compiled, try to find a source library by - ;; the same name. - (if (string-match "\\.el\\(c\\(\\..*\\)?\\)\\'" library) + ;; Strip off the extension to take advantage of library suffixes in + ;; the call to `locate-file'. + (if (string-match "\\.el\\(c\\(\\..*\\)?\\)?\\'" library) (setq library (replace-match "" t t library))) (or (locate-file library (or find-function-source-path load-path)
--- a/lisp/emacs-lisp/lisp-mode.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Tue Nov 01 06:23:08 2005 +0000 @@ -142,12 +142,13 @@ (put 'easy-mmode-define-minor-mode 'doc-string-elt 2) (put 'define-minor-mode 'doc-string-elt 2) (put 'define-generic-mode 'doc-string-elt 7) -;; define-global-mode has no explicit docstring. -(put 'easy-mmode-define-global-mode 'doc-string-elt 0) (put 'define-ibuffer-filter 'doc-string-elt 2) (put 'define-ibuffer-op 'doc-string-elt 3) (put 'define-ibuffer-sorter 'doc-string-elt 2) (put 'lambda 'doc-string-elt 2) +(put 'defalias 'doc-string-elt 3) +(put 'defvaralias 'doc-string-elt 3) +(put 'define-category 'doc-string-elt 2) (defvar lisp-doc-string-elt-property 'doc-string-elt "The symbol property that holds the docstring position info.")
--- a/lisp/emulation/viper.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/emulation/viper.el Tue Nov 01 06:23:08 2005 +0000 @@ -942,55 +942,55 @@ ;; the advice. (eval-after-load "iso-acc" - (defadvice iso-accents-mode (around viper-iso-accents-advice activate) - "Set viper-automatic-iso-accents to iso-accents-mode." - (let ((arg (ad-get-arg 0))) - ad-do-it - (setq viper-automatic-iso-accents - (if (eq viper-current-state 'vi-state) - (if arg - ;; if iso-accents-mode was called with positive arg, turn - ;; accents on - (> (prefix-numeric-value arg) 0) - ;; else: toggle viper-automatic-iso-accents - (not viper-automatic-iso-accents)) - ;; other states: accept what iso-accents-mode has done - iso-accents-mode)) - ;; turn off ISO accents in vi-state - (if (eq viper-current-state 'vi-state) - (viper-set-iso-accents-mode nil)) - (if (memq viper-current-state '(vi-state insert-state replace-state)) - (message "Viper ISO accents mode: %s" - (if viper-automatic-iso-accents "on" "off"))) - ))) + '(defadvice iso-accents-mode (around viper-iso-accents-advice activate) + "Set viper-automatic-iso-accents to iso-accents-mode." + (let ((arg (ad-get-arg 0))) + ad-do-it + (setq viper-automatic-iso-accents + (if (eq viper-current-state 'vi-state) + (if arg + ;; if iso-accents-mode was called with positive arg, turn + ;; accents on + (> (prefix-numeric-value arg) 0) + ;; else: toggle viper-automatic-iso-accents + (not viper-automatic-iso-accents)) + ;; other states: accept what iso-accents-mode has done + iso-accents-mode)) + ;; turn off ISO accents in vi-state + (if (eq viper-current-state 'vi-state) + (viper-set-iso-accents-mode nil)) + (if (memq viper-current-state '(vi-state insert-state replace-state)) + (message "Viper ISO accents mode: %s" + (if viper-automatic-iso-accents "on" "off"))) + ))) ;; International input methods (if viper-emacs-p (eval-after-load "mule-cmds" - (progn - (defadvice inactivate-input-method (after viper-mule-advice activate) - "Set viper-special-input-method to disable intl. input methods." - (viper-inactivate-input-method-action)) - (defadvice activate-input-method (after viper-mule-advice activate) - "Set viper-special-input-method to enable intl. input methods." - (viper-activate-input-method-action)) - )) + '(progn + (defadvice inactivate-input-method (after viper-mule-advice activate) + "Set viper-special-input-method to disable intl. input methods." + (viper-inactivate-input-method-action)) + (defadvice activate-input-method (after viper-mule-advice activate) + "Set viper-special-input-method to enable intl. input methods." + (viper-activate-input-method-action)) + )) ;; XEmacs Although these hooks exist in Emacs, they don't seem to be always ;; called on input-method activation/deactivation, so we the above advise ;; functions instead. (eval-after-load "mule-cmds" - (progn - (add-hook 'input-method-activate-hook - 'viper-activate-input-method-action t) - (add-hook 'input-method-inactivate-hook - 'viper-inactivate-input-method-action t))) + '(progn + (add-hook 'input-method-activate-hook + 'viper-activate-input-method-action t) + (add-hook 'input-method-inactivate-hook + 'viper-inactivate-input-method-action t))) ) (eval-after-load "mule-cmds" - (defadvice toggle-input-method (around viper-mule-advice activate) - "Adjust input-method toggling in vi-state." - (if (and viper-special-input-method (eq viper-current-state 'vi-state)) - (viper-inactivate-input-method) - ad-do-it))) + '(defadvice toggle-input-method (around viper-mule-advice activate) + "Adjust input-method toggling in vi-state." + (if (and viper-special-input-method (eq viper-current-state 'vi-state)) + (viper-inactivate-input-method) + ad-do-it))) ) ; viper-set-hooks
--- a/lisp/faces.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/faces.el Tue Nov 01 06:23:08 2005 +0000 @@ -33,7 +33,6 @@ (autoload 'xw-defined-colors "x-win")) (defvar help-xref-stack-item) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Font selection. @@ -547,6 +546,9 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defvar inhibit-face-set-after-frame-default nil + "If non-nil, that tells `face-set-after-frame-default' to do nothing.") + (defun set-face-attribute (face frame &rest args) "Set attributes of FACE on FRAME from ARGS. @@ -677,9 +679,12 @@ (if (memq where '(0 t)) (put (or (get face 'face-alias) face) 'face-modified t)) (while args - (internal-set-lisp-face-attribute face (car args) - (purecopy (cadr args)) - where) + ;; Don't recursively set the attributes from the frame's font param + ;; when we update the frame's font param fro the attributes. + (let ((inhibit-face-set-after-frame-default t)) + (internal-set-lisp-face-attribute face (car args) + (purecopy (cadr args)) + where)) (setq args (cdr (cdr args)))))) @@ -1297,6 +1302,7 @@ ;; The next 4 sexps are copied from describe-function-1 ;; and simplified. (setq file-name (symbol-file f 'defface)) + (setq file-name (describe-simplify-lib-file-name file-name)) (when file-name (princ "Defined in `") (princ file-name) @@ -1738,23 +1744,23 @@ (delete-frame frame))) frame)) - (defun face-set-after-frame-default (frame) "Set frame-local faces of FRAME from face specs and resources. Initialize colors of certain faces from frame parameters." - (if (face-attribute 'default :font t) - (set-face-attribute 'default frame :font - (face-attribute 'default :font t)) - (set-face-attribute 'default frame :family - (face-attribute 'default :family t)) - (set-face-attribute 'default frame :height - (face-attribute 'default :height t)) - (set-face-attribute 'default frame :slant - (face-attribute 'default :slant t)) - (set-face-attribute 'default frame :weight - (face-attribute 'default :weight t)) - (set-face-attribute 'default frame :width - (face-attribute 'default :width t))) + (unless inhibit-face-set-after-frame-default + (if (face-attribute 'default :font t) + (set-face-attribute 'default frame :font + (face-attribute 'default :font t)) + (set-face-attribute 'default frame :family + (face-attribute 'default :family t)) + (set-face-attribute 'default frame :height + (face-attribute 'default :height t)) + (set-face-attribute 'default frame :slant + (face-attribute 'default :slant t)) + (set-face-attribute 'default frame :weight + (face-attribute 'default :weight t)) + (set-face-attribute 'default frame :width + (face-attribute 'default :width t)))) (dolist (face (face-list)) ;; Don't let frame creation fail because of an invalid face spec. (condition-case ()
--- a/lisp/files.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/files.el Tue Nov 01 06:23:08 2005 +0000 @@ -861,6 +861,43 @@ (setq count (1+ count)))) newname)) +(defun make-temp-file (prefix &optional dir-flag suffix) + "Create a temporary file. +The returned file name (created by appending some random characters at the end +of PREFIX, and expanding against `temporary-file-directory' if necessary), +is guaranteed to point to a newly created empty file. +You can then use `write-region' to write new data into the file. + +If DIR-FLAG is non-nil, create a new empty directory instead of a file. + +If SUFFIX is non-nil, add that at the end of the file name." + (let ((umask (default-file-modes)) + file) + (unwind-protect + (progn + ;; Create temp files with strict access rights. It's easy to + ;; loosen them later, whereas it's impossible to close the + ;; time-window of loose permissions otherwise. + (set-default-file-modes ?\700) + (while (condition-case () + (progn + (setq file + (make-temp-name + (expand-file-name prefix temporary-file-directory))) + (if suffix + (setq file (concat file suffix))) + (if dir-flag + (make-directory file) + (write-region "" nil file nil 'silent nil 'excl)) + nil) + (file-already-exists t)) + ;; the file was somehow created by someone else between + ;; `make-temp-name' and `write-region', let's try again. + nil) + file) + ;; Reset the umask. + (set-default-file-modes umask)))) + (defun recode-file-name (file coding new-coding &optional ok-if-already-exists) "Change the encoding of FILE's name from CODING to NEW-CODING. The value is a new name of FILE. @@ -4438,6 +4475,57 @@ (forward-word -1) (buffer-substring (point) end))))))))) +;; The following expression replaces `dired-move-to-filename-regexp'. +(defvar directory-listing-before-filename-regexp + (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)") + (l-or-quote "\\([A-Za-z']\\|[^\0-\177]\\)") + ;; In some locales, month abbreviations are as short as 2 letters, + ;; and they can be followed by ".". + ;; In Breton, a month name can include a quote character. + (month (concat l-or-quote l-or-quote "+\\.?")) + (s " ") + (yyyy "[0-9][0-9][0-9][0-9]") + (dd "[ 0-3][0-9]") + (HH:MM "[ 0-2][0-9][:.][0-5][0-9]") + (seconds "[0-6][0-9]\\([.,][0-9]+\\)?") + (zone "[-+][0-2][0-9][0-5][0-9]") + (iso-mm-dd "[01][0-9]-[0-3][0-9]") + (iso-time (concat HH:MM "\\(:" seconds "\\( ?" zone "\\)?\\)?")) + (iso (concat "\\(\\(" yyyy "-\\)?" iso-mm-dd "[ T]" iso-time + "\\|" yyyy "-" iso-mm-dd "\\)")) + (western (concat "\\(" month s "+" dd "\\|" dd "\\.?" s month "\\)" + s "+" + "\\(" HH:MM "\\|" yyyy "\\)")) + (western-comma (concat month s "+" dd "," s "+" yyyy)) + ;; Japanese MS-Windows ls-lisp has one-digit months, and + ;; omits the Kanji characters after month and day-of-month. + ;; On Mac OS X 10.3, the date format in East Asian locales is + ;; day-of-month digits followed by month digits. + (mm "[ 0-1]?[0-9]") + (east-asian + (concat "\\(" mm l "?" s dd l "?" s "+" + "\\|" dd s mm s "+" "\\)" + "\\(" HH:MM "\\|" yyyy l "?" "\\)"))) + ;; The "[0-9]" below requires the previous column to end in a digit. + ;; This avoids recognizing `1 may 1997' as a date in the line: + ;; -r--r--r-- 1 may 1997 1168 Oct 19 16:49 README + + ;; The "[BkKMGTPEZY]?" below supports "ls -alh" output. + ;; The ".*" below finds the last match if there are multiple matches. + ;; This avoids recognizing `jservice 10 1024' as a date in the line: + ;; drwxr-xr-x 3 jservice 10 1024 Jul 2 1997 esg-host + + ;; vc dired listings provide the state or blanks between file + ;; permissions and date. The state is always surrounded by + ;; parantheses: + ;; -rw-r--r-- (modified) 2005-10-22 21:25 files.el + ;; This is not supported yet. + (concat ".*[0-9][BkKMGTPEZY]?" s + "\\(" western "\\|" western-comma "\\|" east-asian "\\|" iso "\\)" + s "+")) + "Regular expression to match up to the file name in a directory listing. +The default value is designed to recognize dates and times +regardless of the language.") (defvar insert-directory-ls-version 'unknown)
--- a/lisp/finder.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/finder.el Tue Nov 01 06:23:08 2005 +0000 @@ -100,6 +100,7 @@ (let ((map (make-sparse-keymap))) (define-key map " " 'finder-select) (define-key map "f" 'finder-select) + (define-key map [follow-link] 'mouse-face) (define-key map [mouse-2] 'finder-mouse-select) (define-key map "\C-m" 'finder-select) (define-key map "?" 'finder-summary)
--- a/lisp/font-lock.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/font-lock.el Tue Nov 01 06:23:08 2005 +0000 @@ -2035,7 +2035,7 @@ "save-match-data" "save-current-buffer" "unwind-protect" "condition-case" "track-mouse" "eval-after-load" "eval-and-compile" "eval-when-compile" - "eval-when" + "eval-when" "eval-at-startup" "eval-next-after-load" "with-category-table" "with-current-buffer" "with-electric-help" "with-local-quit" "with-no-warnings"
--- a/lisp/gnus/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,67 @@ +2005-10-24 Eli Zaretskii <eliz@gnu.org> + + * pgg-def.el: + * pgg-gpg.el: + * pgg-parse.el: + * pgg-pgp.el: + * pgg-pgp5.el: + * pgg.el: Move to the parent lisp directory. + +2005-10-23 Chong Yidong <cyd@stupidchicken.com> + + * gnus-sum.el (gnus-ignored-from-addresses): Handle case where + user-mail-name is an empty string. + +2005-10-25 Reiner Steib <Reiner.Steib@gmx.de> + + * gnus-score.el (gnus-default-adaptive-score-alist): Set defaults + depending on gnus-score-decay-constant. + +2005-10-25 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * nnslashdot.el (nnslashdot-request-article) + (nnslashdot-retrieve-headers-1): Update to new HTML. + +2005-10-23 Simon Josefsson <jas@extundo.com> + + * imap.el (imap-gssapi-program): Align command line parameters + with latest GNU SASL. + (imap-gssapi-open): Ignore 'Trying ...' messages from GNU SASL. + +2005-10-20 Hiroshi Fujishima <hiroshi.fujishima@gmail.com> (tiny change) + + * mail-source.el (mail-source-fetch-pop): Require pop3. + (mail-source-check-pop): Ditto. + +2005-10-20 Katsumi Yamaoka <yamaoka@jpl.org> + + * rfc2047.el (rfc2047-decode-encoded-words): Fix the handling of + errors. + +2005-10-19 Reiner Steib <Reiner.Steib@gmx.de> + + * gnus-art.el (gnus-treat-strip-trailing-blank-lines) + (gnus-treat-strip-leading-blank-lines): Improve doc string. + + * message.el (message-tool-bar-local-item-from-menu): Fix comment. + +2005-10-19 Katsumi Yamaoka <yamaoka@jpl.org> + + * rfc2047.el (rfc2047-allow-incomplete-encoded-text): New variable. + (rfc2047-charset-to-coding-system): New function. + (rfc2047-decode-encoded-words): New function. + (rfc2047-decode-region): Use them. + (rfc2047-decode-cte): Remove. + (rfc2047-parse-and-decode): Remove. + (rfc2047-decode): Remove. + +2005-10-15 Kenichi Handa <handa@m17n.org> + + * rfc2047.el (rfc2047-decode-cte): New function. + (rfc2047-decode-region): Change the way to decode successive + encoded-words: decode B- or Q-encoding in each encoded-word, + concatenate them, and decode it as charset. + 2005-10-17 Chong Yidong <cyd@stupidchicken.com> * gnus-cus.el (gnus-custom-map): New variable. Bind mouse-1 to
--- a/lisp/gnus/gnus-art.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/gnus-art.el Tue Nov 01 06:23:08 2005 +0000 @@ -1181,7 +1181,10 @@ (defcustom gnus-treat-strip-trailing-blank-lines nil "Strip trailing blank lines. Valid values are nil, t, `head', `last', an integer or a predicate. -See Info node `(gnus)Customizing Articles' for details." +See Info node `(gnus)Customizing Articles' for details. + +When set to t, it also strips trailing blanks in all MIME parts. +Consider to use `last' instead." :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -1189,7 +1192,9 @@ (defcustom gnus-treat-strip-leading-blank-lines nil "Strip leading blank lines. Valid values are nil, t, `head', `last', an integer or a predicate. -See Info node `(gnus)Customizing Articles' for details." +See Info node `(gnus)Customizing Articles' for details. + +When set to t, it also strips trailing blanks in all MIME parts." :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom)
--- a/lisp/gnus/gnus-score.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/gnus-score.el Tue Nov 01 06:23:08 2005 +0000 @@ -221,13 +221,22 @@ (function :value fun))) (defcustom gnus-default-adaptive-score-alist - '((gnus-kill-file-mark) + `((gnus-kill-file-mark) (gnus-unread-mark) - (gnus-read-mark (from 3) (subject 30)) - (gnus-catchup-mark (subject -10)) - (gnus-killed-mark (from -1) (subject -20)) - (gnus-del-mark (from -2) (subject -15))) - "*Alist of marks and scores." + (gnus-read-mark + (from , (+ 2 gnus-score-decay-constant)) + (subject , (+ 27 gnus-score-decay-constant))) + (gnus-catchup-mark + (subject , (+ -7 (* -1 gnus-score-decay-constant)))) + (gnus-killed-mark + (from , (- -1 gnus-score-decay-constant)) + (subject , (+ -17 (* -1 gnus-score-decay-constant)))) + (gnus-del-mark + (from , (- -1 gnus-score-decay-constant)) + (subject , (+ -12 (* -1 gnus-score-decay-constant))))) + "Alist of marks and scores. +If you use score decays, you might want to set values higher than +`gnus-score-decay-constant'." :group 'gnus-score-adapt :type '(repeat (cons (symbol :tag "Mark") (repeat (list (choice :tag "Header"
--- a/lisp/gnus/gnus-sum.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/gnus-sum.el Tue Nov 01 06:23:08 2005 +0000 @@ -1000,7 +1000,9 @@ :type '(repeat symbol)) (defcustom gnus-ignored-from-addresses - (and user-mail-address (regexp-quote user-mail-address)) + (and user-mail-address + (not (string= user-mail-address "")) + (regexp-quote user-mail-address)) "*Regexp of From headers that may be suppressed in favor of To headers." :version "21.1" :group 'gnus-summary
--- a/lisp/gnus/imap.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/imap.el Tue Nov 01 06:23:08 2005 +0000 @@ -182,8 +182,7 @@ :type '(repeat string)) (defcustom imap-gssapi-program (list - (concat "gsasl --client --connect %s:%p " - "--imap --application-data " + (concat "gsasl %s %p " "--mechanism GSSAPI " "--authentication-id %l") "imtest -m gssapi -u %l -p %p %s") @@ -600,6 +599,10 @@ (or (not (looking-at "S: ")) (forward-char 3) t) + ;; GNU SASL may print 'Trying ...' first. + (or (not (looking-at "Trying ")) + (forward-line) + t) (not (and (imap-parse-greeting) ;; success in imtest 1.6: (re-search-forward
--- a/lisp/gnus/mail-source.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/mail-source.el Tue Nov 01 06:23:08 2005 +0000 @@ -740,6 +740,7 @@ (funcall function mail-source-crash-box)) ;; The default is to use pop3.el. (t + (require 'pop3) (let ((pop3-password password) (pop3-maildrop user) (pop3-mailhost server) @@ -801,6 +802,7 @@ (function) ;; The default is to use pop3.el. (t + (require 'pop3) (let ((pop3-password password) (pop3-maildrop user) (pop3-mailhost server)
--- a/lisp/gnus/message.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/message.el Tue Nov 01 06:23:08 2005 +0000 @@ -6565,9 +6565,8 @@ (defun message-tool-bar-local-item-from-menu (command icon in-map &optional from-map &rest props) ;; We need to make tool bar entries in local keymaps with - ;; `tool-bar-local-item-from-menu' in Emacs > 21.3 + ;; `tool-bar-local-item-from-menu' in Emacs >= 22 (if (fboundp 'tool-bar-local-item-from-menu) - ;; This is for Emacs 21.3 (tool-bar-local-item-from-menu command icon in-map from-map props) (tool-bar-add-item-from-menu command icon from-map props)))
--- a/lisp/gnus/nnslashdot.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/nnslashdot.el Tue Nov 01 06:23:08 2005 +0000 @@ -87,7 +87,7 @@ (nnslashdot-possibly-change-server group server) (condition-case why (unless gnus-nov-is-evil - (nnslashdot-retrieve-headers-1 articles group)) + (nnslashdot-retrieve-headers-1 articles group)) (search-failed (nnslashdot-lose why)))) (deffoo nnslashdot-retrieve-headers-1 (articles group) @@ -142,41 +142,30 @@ (setq article (if (and article (< start article)) article start)) (goto-char point) (while (re-search-forward - "<a name=\"\\([0-9]+\\)\"><\\(b\\|H4\\)>\\([^<]+\\)</\\(b\\|H4\\)>.*score:\\([^)]+\\))" + "<a name=\"\\([0-9]+\\)\">\\([^<]+\\)</a>.*\n.*score:\\([^)]+\\))" nil t) (setq cid (match-string 1) - subject (match-string 3) - score (match-string 5)) + subject (match-string 2) + score (match-string 3)) (unless (assq article (nth 4 entry)) (setcar (nthcdr 4 entry) (cons (cons article cid) (nth 4 entry))) (setq changed t)) (when (string-match "^Re: *" subject) (setq subject (concat "Re: " (substring subject (match-end 0))))) - (setq subject (mm-url-decode-entities-string subject)) - (search-forward "<BR>") - (cond - ((looking-at - "by[ \t\n]+<a[^>]+>\\([^<]+\\)</a>[ \t\n]*(\\(<[^>]+>\\)*\\([^<>)]+\\))") - (goto-char (- (match-end 0) 5)) - (setq from (concat - (mm-url-decode-entities-string (match-string 1)) - " <" (match-string 3) ">"))) - ((looking-at "by[ \t\n]+<a[^>]+>\\([^<(]+\\) (\\([0-9]+\\))</a>") - (goto-char (- (match-end 0) 5)) - (setq from (concat - (mm-url-decode-entities-string (match-string 1)) - " <" (match-string 2) ">"))) - ((looking-at "by \\([^<>]*\\)[\t\n\r ]+on ") - (goto-char (- (match-end 0) 5)) - (setq from (mm-url-decode-entities-string (match-string 1)))) - (t - (setq from ""))) + (setq subject (mm-url-decode-entities-string subject) + from "") + (when (re-search-forward "by[ \t\n]+<[^>]+>\\([^<(]+\\)" nil t) + (setq from + (concat + (mm-url-decode-entities-string (match-string 1)) + " <nobody@slashdot.org>"))) (search-forward "on ") (setq date (nnslashdot-date-to-date - (buffer-substring (point) (progn (skip-chars-forward "^()<>\n\r") (point))))) - (setq lines (/ (abs (- (search-forward "<td") - (search-forward "</td>"))) + (buffer-substring + (point) (progn (skip-chars-forward "^()<>\n\r") (point))))) + (setq lines (/ (abs (- (search-forward "<div") + (search-forward "</div>"))) 70)) (if (not (re-search-forward ".*cid=\\([0-9]+\\)\">Parent</A>" nil t)) @@ -255,23 +244,21 @@ (when (numberp article) (if (= article 1) (progn - (re-search-forward - "Posted by") - (search-forward "<BR>") + (search-forward "Posted by") + (search-forward "<div class=\"intro\">") (setq contents (buffer-substring (point) (progn - (re-search-forward - "<IFRAME\\|<SCRIPT LANGUAGE=\"JAVASCRIPT\">\\|<!-- no ad 6 -->\\|< [ \t\r\n]*<A HREF=\"\\(\\(http:\\)?//slashdot\\.org\\)?/article") + (search-forward "commentwrap") (match-beginning 0))))) (setq cid (cdr (assq article (nth 4 (assoc group nnslashdot-groups))))) (search-forward (format "<a name=\"%s\">" cid)) (setq contents (buffer-substring - (re-search-forward "<td[^>]*>") - (search-forward "</td>"))))))) + (search-forward "<div class=\"commentBody\">") + (search-forward "</div>"))))))) (search-failed (nnslashdot-lose why))) (when contents
--- a/lisp/gnus/pgg-def.el Sat Oct 29 11:50:12 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -;;; pgg-def.el --- functions/macros for defining PGG functions - -;; Copyright (C) 1999, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -;; Author: Daiki Ueno <ueno@unixuser.org> -;; Created: 1999/11/02 -;; Keywords: PGP, OpenPGP, GnuPG - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; 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. - -;;; Code: - -(defgroup pgg () - "Glue for the various PGP implementations." - :group 'mime - :version "22.1") - -(defcustom pgg-default-scheme 'gpg - "Default PGP scheme." - :group 'pgg - :type '(choice (const :tag "GnuPG" gpg) - (const :tag "PGP 5" pgp5) - (const :tag "PGP" pgp))) - -(defcustom pgg-default-user-id (user-login-name) - "User ID of your default identity." - :group 'pgg - :type 'string) - -(defcustom pgg-default-keyserver-address "subkeys.pgp.net" - "Host name of keyserver." - :group 'pgg - :type 'string) - -(defcustom pgg-query-keyserver nil - "Whether PGG queries keyservers for missing keys when verifying messages." - :version "22.1" - :group 'pgg - :type 'boolean) - -(defcustom pgg-encrypt-for-me t - "If t, encrypt all outgoing messages with user's public key." - :group 'pgg - :type 'boolean) - -(defcustom pgg-cache-passphrase t - "If t, cache passphrase." - :group 'pgg - :type 'boolean) - -(defcustom pgg-passphrase-cache-expiry 16 - "How many seconds the passphrase is cached. -Whether the passphrase is cached at all is controlled by -`pgg-cache-passphrase'." - :group 'pgg - :type 'integer) - -(defvar pgg-messages-coding-system nil - "Coding system used when reading from a PGP external process.") - -(defvar pgg-status-buffer " *PGG status*") -(defvar pgg-errors-buffer " *PGG errors*") -(defvar pgg-output-buffer " *PGG output*") - -(defvar pgg-echo-buffer "*PGG-echo*") - -(defvar pgg-scheme nil - "Current scheme of PGP implementation.") - -(defmacro pgg-truncate-key-identifier (key) - `(if (> (length ,key) 8) (substring ,key 8) ,key)) - -(provide 'pgg-def) - -;;; arch-tag: c425f3ab-ed75-4055-bb46-431a418c94b7 -;;; pgg-def.el ends here
--- a/lisp/gnus/pgg-gpg.el Sat Oct 29 11:50:12 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,275 +0,0 @@ -;;; pgg-gpg.el --- GnuPG support for PGG. - -;; Copyright (C) 1999, 2000, 2002, 2003, 2004, -;; 2005 Free Software Foundation, Inc. - -;; Author: Daiki Ueno <ueno@unixuser.org> -;; Created: 1999/10/28 -;; Keywords: PGP, OpenPGP, GnuPG - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; 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. - -;;; Code: - -(eval-when-compile - (require 'cl) ; for gpg macros - (require 'pgg)) - -(defgroup pgg-gpg () - "GnuPG interface." - :group 'pgg) - -(defcustom pgg-gpg-program "gpg" - "The GnuPG executable." - :group 'pgg-gpg - :type 'string) - -(defcustom pgg-gpg-extra-args nil - "Extra arguments for every GnuPG invocation." - :group 'pgg-gpg - :type '(repeat (string :tag "Argument"))) - -(defcustom pgg-gpg-recipient-argument "--recipient" - "GnuPG option to specify recipient." - :group 'pgg-gpg - :type '(choice (const :tag "New `--recipient' option" "--recipient") - (const :tag "Old `--remote-user' option" "--remote-user"))) - -(defvar pgg-gpg-user-id nil - "GnuPG ID of your default identity.") - -(defun pgg-gpg-process-region (start end passphrase program args) - (let* ((output-file-name (pgg-make-temp-file "pgg-output")) - (args - `("--status-fd" "2" - ,@(if passphrase '("--passphrase-fd" "0")) - "--yes" ; overwrite - "--output" ,output-file-name - ,@pgg-gpg-extra-args ,@args)) - (output-buffer pgg-output-buffer) - (errors-buffer pgg-errors-buffer) - (orig-mode (default-file-modes)) - (process-connection-type nil) - exit-status) - (with-current-buffer (get-buffer-create errors-buffer) - (buffer-disable-undo) - (erase-buffer)) - (unwind-protect - (progn - (set-default-file-modes 448) - (let ((coding-system-for-write 'binary) - (input (buffer-substring-no-properties start end)) - (default-enable-multibyte-characters nil)) - (with-temp-buffer - (when passphrase - (insert passphrase "\n")) - (insert input) - (setq exit-status - (apply #'call-process-region (point-min) (point-max) program - nil errors-buffer nil args)))) - (with-current-buffer (get-buffer-create output-buffer) - (buffer-disable-undo) - (erase-buffer) - (if (file-exists-p output-file-name) - (let ((coding-system-for-read 'raw-text-dos)) - (insert-file-contents output-file-name))) - (set-buffer errors-buffer) - (if (not (equal exit-status 0)) - (insert (format "\n%s exited abnormally: '%s'\n" - program exit-status))))) - (if (file-exists-p output-file-name) - (delete-file output-file-name)) - (set-default-file-modes orig-mode)))) - -(defun pgg-gpg-possibly-cache-passphrase (passphrase &optional key) - (if (and pgg-cache-passphrase - (progn - (goto-char (point-min)) - (re-search-forward "^\\[GNUPG:] \\(GOOD_PASSPHRASE\\>\\)\\|\\(SIG_CREATED\\)" nil t))) - (pgg-add-passphrase-cache - (or key - (progn - (goto-char (point-min)) - (if (re-search-forward - "^\\[GNUPG:] NEED_PASSPHRASE\\(_PIN\\)? \\w+ ?\\w*" nil t) - (substring (match-string 0) -8)))) - passphrase))) - -(defvar pgg-gpg-all-secret-keys 'unknown) - -(defun pgg-gpg-lookup-all-secret-keys () - "Return all secret keys present in secret key ring." - (when (eq pgg-gpg-all-secret-keys 'unknown) - (setq pgg-gpg-all-secret-keys '()) - (let ((args (list "--with-colons" "--no-greeting" "--batch" - "--list-secret-keys"))) - (with-temp-buffer - (apply #'call-process pgg-gpg-program nil t nil args) - (goto-char (point-min)) - (while (re-search-forward - "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" nil t) - (push (substring (match-string 2) 8) - pgg-gpg-all-secret-keys))))) - pgg-gpg-all-secret-keys) - -(defun pgg-gpg-lookup-key (string &optional type) - "Search keys associated with STRING." - (let ((args (list "--with-colons" "--no-greeting" "--batch" - (if type "--list-secret-keys" "--list-keys") - string))) - (with-temp-buffer - (apply #'call-process pgg-gpg-program nil t nil args) - (goto-char (point-min)) - (if (re-search-forward "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" - nil t) - (substring (match-string 2) 8))))) - -(defun pgg-gpg-encrypt-region (start end recipients &optional sign) - "Encrypt the current region between START and END. -If optional argument SIGN is non-nil, do a combined sign and encrypt." - (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id)) - (passphrase - (when sign - (pgg-read-passphrase - (format "GnuPG passphrase for %s: " pgg-gpg-user-id) - pgg-gpg-user-id))) - (args - (append - (list "--batch" "--armor" "--always-trust" "--encrypt") - (if sign (list "--sign" "--local-user" pgg-gpg-user-id)) - (if recipients - (apply #'nconc - (mapcar (lambda (rcpt) - (list pgg-gpg-recipient-argument rcpt)) - (append recipients - (if pgg-encrypt-for-me - (list pgg-gpg-user-id))))))))) - (pgg-as-lbt start end 'CRLF - (pgg-gpg-process-region start end passphrase pgg-gpg-program args)) - (when sign - (with-current-buffer pgg-errors-buffer - ;; Possibly cache passphrase under, e.g. "jas", for future sign. - (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id) - ;; Possibly cache passphrase under, e.g. B565716F, for future decrypt. - (pgg-gpg-possibly-cache-passphrase passphrase))) - (pgg-process-when-success))) - -(defun pgg-gpg-decrypt-region (start end) - "Decrypt the current region between START and END." - (let* ((current-buffer (current-buffer)) - (message-keys (with-temp-buffer - (insert-buffer-substring current-buffer) - (pgg-decode-armor-region (point-min) (point-max)))) - (secret-keys (pgg-gpg-lookup-all-secret-keys)) - (key (pgg-gpg-select-matching-key message-keys secret-keys)) - (pgg-gpg-user-id (or key pgg-gpg-user-id pgg-default-user-id)) - (passphrase - (pgg-read-passphrase - (format "GnuPG passphrase for %s: " pgg-gpg-user-id) - pgg-gpg-user-id)) - (args '("--batch" "--decrypt"))) - (pgg-gpg-process-region start end passphrase pgg-gpg-program args) - (with-current-buffer pgg-errors-buffer - (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id) - (goto-char (point-min)) - (re-search-forward "^\\[GNUPG:] DECRYPTION_OKAY\\>" nil t)))) - -(defun pgg-gpg-select-matching-key (message-keys secret-keys) - "Choose a key from MESSAGE-KEYS that matches one of the keys in SECRET-KEYS." - (loop for message-key in message-keys - for message-key-id = (and (equal (car message-key) 1) - (cdr (assq 'key-identifier message-key))) - for key = (and message-key-id (pgg-lookup-key message-key-id 'encrypt)) - when (and key (member key secret-keys)) return key)) - -(defun pgg-gpg-sign-region (start end &optional cleartext) - "Make detached signature from text between START and END." - (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id)) - (passphrase - (pgg-read-passphrase - (format "GnuPG passphrase for %s: " pgg-gpg-user-id) - pgg-gpg-user-id)) - (args - (list (if cleartext "--clearsign" "--detach-sign") - "--armor" "--batch" "--verbose" - "--local-user" pgg-gpg-user-id)) - (inhibit-read-only t) - buffer-read-only) - (pgg-as-lbt start end 'CRLF - (pgg-gpg-process-region start end passphrase pgg-gpg-program args)) - (with-current-buffer pgg-errors-buffer - ;; Possibly cache passphrase under, e.g. "jas", for future sign. - (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id) - ;; Possibly cache passphrase under, e.g. B565716F, for future decrypt. - (pgg-gpg-possibly-cache-passphrase passphrase)) - (pgg-process-when-success))) - -(defun pgg-gpg-verify-region (start end &optional signature) - "Verify region between START and END as the detached signature SIGNATURE." - (let ((args '("--batch" "--verify"))) - (when (stringp signature) - (setq args (append args (list signature)))) - (setq args (append args '("-"))) - (pgg-gpg-process-region start end nil pgg-gpg-program args) - (with-current-buffer pgg-errors-buffer - (goto-char (point-min)) - (while (re-search-forward "^gpg: \\(.*\\)\n" nil t) - (with-current-buffer pgg-output-buffer - (insert-buffer-substring pgg-errors-buffer - (match-beginning 1) (match-end 0))) - (delete-region (match-beginning 0) (match-end 0))) - (goto-char (point-min)) - (re-search-forward "^\\[GNUPG:] GOODSIG\\>" nil t)))) - -(defun pgg-gpg-insert-key () - "Insert public key at point." - (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id)) - (args (list "--batch" "--export" "--armor" - pgg-gpg-user-id))) - (pgg-gpg-process-region (point)(point) nil pgg-gpg-program args) - (insert-buffer-substring pgg-output-buffer))) - -(defun pgg-gpg-snarf-keys-region (start end) - "Add all public keys in region between START and END to the keyring." - (let ((args '("--import" "--batch" "-")) status) - (pgg-gpg-process-region start end nil pgg-gpg-program args) - (set-buffer pgg-errors-buffer) - (goto-char (point-min)) - (when (re-search-forward "^\\[GNUPG:] IMPORT_RES\\>" nil t) - (setq status (buffer-substring (match-end 0) - (progn (end-of-line)(point))) - status (vconcat (mapcar #'string-to-number (split-string status)))) - (erase-buffer) - (insert (format "Imported %d key(s). -\tArmor contains %d key(s) [%d bad, %d old].\n" - (+ (aref status 2) - (aref status 10)) - (aref status 0) - (aref status 1) - (+ (aref status 4) - (aref status 11))) - (if (zerop (aref status 9)) - "" - "\tSecret keys are imported.\n"))) - (append-to-buffer pgg-output-buffer (point-min)(point-max)) - (pgg-process-when-success))) - -(provide 'pgg-gpg) - -;;; arch-tag: 2aa5d5d8-93a0-4865-9312-33e29830e000 -;;; pgg-gpg.el ends here
--- a/lisp/gnus/pgg-parse.el Sat Oct 29 11:50:12 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,515 +0,0 @@ -;;; pgg-parse.el --- OpenPGP packet parsing - -;; Copyright (C) 1999, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -;; Author: Daiki Ueno <ueno@unixuser.org> -;; Created: 1999/10/28 -;; Keywords: PGP, OpenPGP, GnuPG - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; 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. - -;;; Commentary: - -;; This module is based on - -;; [OpenPGP] RFC 2440: "OpenPGP Message Format" -;; by John W. Noerenberg, II <jwn2@qualcomm.com>, -;; Jon Callas <jon@pgp.com>, Lutz Donnerhacke <lutz@iks-jena.de>, -;; Hal Finney <hal@pgp.com> and Rodney Thayer <rodney@unitran.com> -;; (1998/11) - -;;; Code: - -(eval-when-compile (require 'cl)) - -(defgroup pgg-parse () - "OpenPGP packet parsing." - :group 'pgg) - -(defcustom pgg-parse-public-key-algorithm-alist - '((1 . RSA) (2 . RSA-E) (3 . RSA-S) (16 . ELG-E) (17 . DSA) (20 . ELG)) - "Alist of the assigned number to the public key algorithm." - :group 'pgg-parse - :type '(repeat - (cons (sexp :tag "Number") (sexp :tag "Type")))) - -(defcustom pgg-parse-symmetric-key-algorithm-alist - '((1 . IDEA) (2 . 3DES) (4 . CAST5) (5 . SAFER-SK128)) - "Alist of the assigned number to the simmetric key algorithm." - :group 'pgg-parse - :type '(repeat - (cons (sexp :tag "Number") (sexp :tag "Type")))) - -(defcustom pgg-parse-hash-algorithm-alist - '((1 . MD5) (2 . SHA1) (3 . RIPEMD160) (5 . MD2) (8 . SHA256) (9 . SHA384) - (10 . SHA512)) - "Alist of the assigned number to the cryptographic hash algorithm." - :group 'pgg-parse - :type '(repeat - (cons (sexp :tag "Number") (sexp :tag "Type")))) - -(defcustom pgg-parse-compression-algorithm-alist - '((0 . nil); Uncompressed - (1 . ZIP) - (2 . ZLIB)) - "Alist of the assigned number to the compression algorithm." - :group 'pgg-parse - :type '(repeat - (cons (sexp :tag "Number") (sexp :tag "Type")))) - -(defcustom pgg-parse-signature-type-alist - '((0 . "Signature of a binary document") - (1 . "Signature of a canonical text document") - (2 . "Standalone signature") - (16 . "Generic certification of a User ID and Public Key packet") - (17 . "Persona certification of a User ID and Public Key packet") - (18 . "Casual certification of a User ID and Public Key packet") - (19 . "Positive certification of a User ID and Public Key packet") - (24 . "Subkey Binding Signature") - (31 . "Signature directly on a key") - (32 . "Key revocation signature") - (40 . "Subkey revocation signature") - (48 . "Certification revocation signature") - (64 . "Timestamp signature.")) - "Alist of the assigned number to the signature type." - :group 'pgg-parse - :type '(repeat - (cons (sexp :tag "Number") (sexp :tag "Type")))) - -(defcustom pgg-ignore-packet-checksum t; XXX - "If non-nil checksum of each ascii armored packet will be ignored." - :group 'pgg-parse - :type 'boolean) - -(defvar pgg-armor-header-lines - '("^-----BEGIN PGP MESSAGE\\(, PART [0-9]+\\(/[0-9]+\\)?\\)?-----\r?$" - "^-----BEGIN PGP PUBLIC KEY BLOCK-----\r?$" - "^-----BEGIN PGP PRIVATE KEY BLOCK-----\r?$" - "^-----BEGIN PGP SIGNATURE-----\r?$") - "Armor headers.") - -(eval-and-compile - (defalias 'pgg-char-int (if (fboundp 'char-int) - 'char-int - 'identity))) - -(defmacro pgg-format-key-identifier (string) - `(mapconcat (lambda (c) (format "%02X" (pgg-char-int c))) - ,string "") - ;; `(upcase (apply #'format "%02x%02x%02x%02x%02x%02x%02x%02x" - ;; (string-to-number-list ,string))) - ) - -(defmacro pgg-parse-time-field (bytes) - `(list (logior (lsh (car ,bytes) 8) - (nth 1 ,bytes)) - (logior (lsh (nth 2 ,bytes) 8) - (nth 3 ,bytes)) - 0)) - -(defmacro pgg-byte-after (&optional pos) - `(pgg-char-int (char-after ,(or pos `(point))))) - -(defmacro pgg-read-byte () - `(pgg-char-int (char-after (prog1 (point) (forward-char))))) - -(defmacro pgg-read-bytes-string (nbytes) - `(buffer-substring - (point) (prog1 (+ ,nbytes (point)) - (forward-char ,nbytes)))) - -(defmacro pgg-read-bytes (nbytes) - `(mapcar #'pgg-char-int (pgg-read-bytes-string ,nbytes)) - ;; `(string-to-number-list (pgg-read-bytes-string ,nbytes)) - ) - -(defmacro pgg-read-body-string (ptag) - `(if (nth 1 ,ptag) - (pgg-read-bytes-string (nth 1 ,ptag)) - (pgg-read-bytes-string (- (point-max) (point))))) - -(defmacro pgg-read-body (ptag) - `(mapcar #'pgg-char-int (pgg-read-body-string ,ptag)) - ;; `(string-to-number-list (pgg-read-body-string ,ptag)) - ) - -(defalias 'pgg-skip-bytes 'forward-char) - -(defmacro pgg-skip-header (ptag) - `(pgg-skip-bytes (nth 2 ,ptag))) - -(defmacro pgg-skip-body (ptag) - `(pgg-skip-bytes (nth 1 ,ptag))) - -(defmacro pgg-set-alist (alist key value) - `(setq ,alist (nconc ,alist (list (cons ,key ,value))))) - -(when (fboundp 'define-ccl-program) - - (define-ccl-program pgg-parse-crc24 - '(1 - ((loop - (read r0) (r1 ^= r0) (r2 ^= 0) - (r5 = 0) - (loop - (r1 <<= 1) - (r1 += ((r2 >> 15) & 1)) - (r2 <<= 1) - (if (r1 & 256) - ((r1 ^= 390) (r2 ^= 19707))) - (if (r5 < 7) - ((r5 += 1) - (repeat)))) - (repeat))))) - - (defun pgg-parse-crc24-string (string) - (let ((h (vector nil 183 1230 nil nil nil nil nil nil))) - (ccl-execute-on-string pgg-parse-crc24 h string) - (format "%c%c%c" - (logand (aref h 1) 255) - (logand (lsh (aref h 2) -8) 255) - (logand (aref h 2) 255))))) - -(defmacro pgg-parse-length-type (c) - `(cond - ((< ,c 192) (cons ,c 1)) - ((< ,c 224) - (cons (+ (lsh (- ,c 192) 8) - (pgg-byte-after (+ 2 (point))) - 192) - 2)) - ((= ,c 255) - (cons (cons (logior (lsh (pgg-byte-after (+ 2 (point))) 8) - (pgg-byte-after (+ 3 (point)))) - (logior (lsh (pgg-byte-after (+ 4 (point))) 8) - (pgg-byte-after (+ 5 (point))))) - 5)) - (t;partial body length - '(0 . 0)))) - -(defun pgg-parse-packet-header () - (let ((ptag (pgg-byte-after)) - length-type content-tag packet-bytes header-bytes) - (if (zerop (logand 64 ptag));Old format - (progn - (setq length-type (logand ptag 3) - length-type (if (= 3 length-type) 0 (lsh 1 length-type)) - content-tag (logand 15 (lsh ptag -2)) - packet-bytes 0 - header-bytes (1+ length-type)) - (dotimes (i length-type) - (setq packet-bytes - (logior (lsh packet-bytes 8) - (pgg-byte-after (+ 1 i (point))))))) - (setq content-tag (logand 63 ptag) - length-type (pgg-parse-length-type - (pgg-byte-after (1+ (point)))) - packet-bytes (car length-type) - header-bytes (1+ (cdr length-type)))) - (list content-tag packet-bytes header-bytes))) - -(defun pgg-parse-packet (ptag) - (case (car ptag) - (1 ;Public-Key Encrypted Session Key Packet - (pgg-parse-public-key-encrypted-session-key-packet ptag)) - (2 ;Signature Packet - (pgg-parse-signature-packet ptag)) - (3 ;Symmetric-Key Encrypted Session Key Packet - (pgg-parse-symmetric-key-encrypted-session-key-packet ptag)) - ;; 4 -- One-Pass Signature Packet - ;; 5 -- Secret Key Packet - (6 ;Public Key Packet - (pgg-parse-public-key-packet ptag)) - ;; 7 -- Secret Subkey Packet - ;; 8 -- Compressed Data Packet - (9 ;Symmetrically Encrypted Data Packet - (pgg-read-body-string ptag)) - (10 ;Marker Packet - (pgg-read-body-string ptag)) - (11 ;Literal Data Packet - (pgg-read-body-string ptag)) - ;; 12 -- Trust Packet - (13 ;User ID Packet - (pgg-read-body-string ptag)) - ;; 14 -- Public Subkey Packet - ;; 60 .. 63 -- Private or Experimental Values - )) - -(defun pgg-parse-packets (&optional header-parser body-parser) - (let ((header-parser - (or header-parser - (function pgg-parse-packet-header))) - (body-parser - (or body-parser - (function pgg-parse-packet))) - result ptag) - (while (> (point-max) (1+ (point))) - (setq ptag (funcall header-parser)) - (pgg-skip-header ptag) - (push (cons (car ptag) - (save-excursion - (funcall body-parser ptag))) - result) - (if (zerop (nth 1 ptag)) - (goto-char (point-max)) - (forward-char (nth 1 ptag)))) - result)) - -(defun pgg-parse-signature-subpacket-header () - (let ((length-type (pgg-parse-length-type (pgg-byte-after)))) - (list (pgg-byte-after (+ (cdr length-type) (point))) - (1- (car length-type)) - (1+ (cdr length-type))))) - -(defun pgg-parse-signature-subpacket (ptag) - (case (car ptag) - (2 ;signature creation time - (cons 'creation-time - (let ((bytes (pgg-read-bytes 4))) - (pgg-parse-time-field bytes)))) - (3 ;signature expiration time - (cons 'signature-expiry - (let ((bytes (pgg-read-bytes 4))) - (pgg-parse-time-field bytes)))) - (4 ;exportable certification - (cons 'exportability (pgg-read-byte))) - (5 ;trust signature - (cons 'trust-level (pgg-read-byte))) - (6 ;regular expression - (cons 'regular-expression - (pgg-read-body-string ptag))) - (7 ;revocable - (cons 'revocability (pgg-read-byte))) - (9 ;key expiration time - (cons 'key-expiry - (let ((bytes (pgg-read-bytes 4))) - (pgg-parse-time-field bytes)))) - ;; 10 = placeholder for backward compatibility - (11 ;preferred symmetric algorithms - (cons 'preferred-symmetric-key-algorithm - (cdr (assq (pgg-read-byte) - pgg-parse-symmetric-key-algorithm-alist)))) - (12 ;revocation key - ) - (16 ;issuer key ID - (cons 'key-identifier - (pgg-format-key-identifier (pgg-read-body-string ptag)))) - (20 ;notation data - (pgg-skip-bytes 4) - (cons 'notation - (let ((name-bytes (pgg-read-bytes 2)) - (value-bytes (pgg-read-bytes 2))) - (cons (pgg-read-bytes-string - (logior (lsh (car name-bytes) 8) - (nth 1 name-bytes))) - (pgg-read-bytes-string - (logior (lsh (car value-bytes) 8) - (nth 1 value-bytes))))))) - (21 ;preferred hash algorithms - (cons 'preferred-hash-algorithm - (cdr (assq (pgg-read-byte) - pgg-parse-hash-algorithm-alist)))) - (22 ;preferred compression algorithms - (cons 'preferred-compression-algorithm - (cdr (assq (pgg-read-byte) - pgg-parse-compression-algorithm-alist)))) - (23 ;key server preferences - (cons 'key-server-preferences - (pgg-read-body ptag))) - (24 ;preferred key server - (cons 'preferred-key-server - (pgg-read-body-string ptag))) - ;; 25 = primary user id - (26 ;policy URL - (cons 'policy-url (pgg-read-body-string ptag))) - ;; 27 = key flags - ;; 28 = signer's user id - ;; 29 = reason for revocation - ;; 100 to 110 = internal or user-defined - )) - -(defun pgg-parse-signature-packet (ptag) - (let* ((signature-version (pgg-byte-after)) - (result (list (cons 'version signature-version))) - hashed-material field n) - (cond - ((= signature-version 3) - (pgg-skip-bytes 2) - (setq hashed-material (pgg-read-bytes 5)) - (pgg-set-alist result - 'signature-type - (cdr (assq (pop hashed-material) - pgg-parse-signature-type-alist))) - (pgg-set-alist result - 'creation-time - (pgg-parse-time-field hashed-material)) - (pgg-set-alist result - 'key-identifier - (pgg-format-key-identifier - (pgg-read-bytes-string 8))) - (pgg-set-alist result - 'public-key-algorithm (pgg-read-byte)) - (pgg-set-alist result - 'hash-algorithm (pgg-read-byte))) - ((= signature-version 4) - (pgg-skip-bytes 1) - (pgg-set-alist result - 'signature-type - (cdr (assq (pgg-read-byte) - pgg-parse-signature-type-alist))) - (pgg-set-alist result - 'public-key-algorithm - (pgg-read-byte)) - (pgg-set-alist result - 'hash-algorithm (pgg-read-byte)) - (when (>= 10000 (setq n (pgg-read-bytes 2) - n (logior (lsh (car n) 8) - (nth 1 n)))) - (save-restriction - (narrow-to-region (point)(+ n (point))) - (nconc result - (mapcar (function cdr) ;remove packet types - (pgg-parse-packets - #'pgg-parse-signature-subpacket-header - #'pgg-parse-signature-subpacket))) - (goto-char (point-max)))) - (when (>= 10000 (setq n (pgg-read-bytes 2) - n (logior (lsh (car n) 8) - (nth 1 n)))) - (save-restriction - (narrow-to-region (point)(+ n (point))) - (nconc result - (mapcar (function cdr) ;remove packet types - (pgg-parse-packets - #'pgg-parse-signature-subpacket-header - #'pgg-parse-signature-subpacket))))))) - - (setcdr (setq field (assq 'public-key-algorithm - result)) - (cdr (assq (cdr field) - pgg-parse-public-key-algorithm-alist))) - (setcdr (setq field (assq 'hash-algorithm - result)) - (cdr (assq (cdr field) - pgg-parse-hash-algorithm-alist))) - result)) - -(defun pgg-parse-public-key-encrypted-session-key-packet (ptag) - (let (result) - (pgg-set-alist result - 'version (pgg-read-byte)) - (pgg-set-alist result - 'key-identifier - (pgg-format-key-identifier - (pgg-read-bytes-string 8))) - (pgg-set-alist result - 'public-key-algorithm - (cdr (assq (pgg-read-byte) - pgg-parse-public-key-algorithm-alist))) - result)) - -(defun pgg-parse-symmetric-key-encrypted-session-key-packet (ptag) - (let (result) - (pgg-set-alist result - 'version - (pgg-read-byte)) - (pgg-set-alist result - 'symmetric-key-algorithm - (cdr (assq (pgg-read-byte) - pgg-parse-symmetric-key-algorithm-alist))) - result)) - -(defun pgg-parse-public-key-packet (ptag) - (let* ((key-version (pgg-read-byte)) - (result (list (cons 'version key-version))) - field) - (cond - ((= 3 key-version) - (pgg-set-alist result - 'creation-time - (let ((bytes (pgg-read-bytes 4))) - (pgg-parse-time-field bytes))) - (pgg-set-alist result - 'key-expiry (pgg-read-bytes 2)) - (pgg-set-alist result - 'public-key-algorithm (pgg-read-byte))) - ((= 4 key-version) - (pgg-set-alist result - 'creation-time - (let ((bytes (pgg-read-bytes 4))) - (pgg-parse-time-field bytes))) - (pgg-set-alist result - 'public-key-algorithm (pgg-read-byte)))) - - (setcdr (setq field (assq 'public-key-algorithm - result)) - (cdr (assq (cdr field) - pgg-parse-public-key-algorithm-alist))) - result)) - -(defun pgg-decode-packets () - (if (re-search-forward "^=\\([A-Za-z0-9+/]\\{4\\}\\)$" nil t) - (let ((p (match-beginning 0)) - (checksum (match-string 1))) - (delete-region p (point-max)) - (if (ignore-errors (base64-decode-region (point-min) p)) - (or (not (fboundp 'pgg-parse-crc24-string)) - pgg-ignore-packet-checksum - (string-equal (base64-encode-string (pgg-parse-crc24-string - (buffer-string))) - checksum) - (progn - (message "PGP packet checksum does not match") - nil)) - (message "PGP packet contain invalid base64") - nil)) - (message "PGP packet checksum not found") - nil)) - -(defun pgg-decode-armor-region (start end) - (save-restriction - (narrow-to-region start end) - (goto-char (point-min)) - (re-search-forward "^-+BEGIN PGP" nil t) - (delete-region (point-min) - (and (search-forward "\n\n") - (match-end 0))) - (when (pgg-decode-packets) - (goto-char (point-min)) - (pgg-parse-packets)))) - -(defun pgg-parse-armor (string) - (with-temp-buffer - (buffer-disable-undo) - (if (fboundp 'set-buffer-multibyte) - (set-buffer-multibyte nil)) - (insert string) - (pgg-decode-armor-region (point-min)(point)))) - -(eval-and-compile - (defalias 'pgg-string-as-unibyte (if (fboundp 'string-as-unibyte) - 'string-as-unibyte - 'identity))) - -(defun pgg-parse-armor-region (start end) - (pgg-parse-armor (pgg-string-as-unibyte (buffer-substring start end)))) - -(provide 'pgg-parse) - -;;; arch-tag: 16c2eb82-1313-4a7c-a70f-420709b5b43e -;;; pgg-parse.el ends here
--- a/lisp/gnus/pgg-pgp.el Sat Oct 29 11:50:12 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,245 +0,0 @@ -;;; pgg-pgp.el --- PGP 2.* and 6.* support for PGG. - -;; Copyright (C) 1999, 2000, 2002, 2003, 2004, -;; 2005 Free Software Foundation, Inc. - -;; Author: Daiki Ueno <ueno@unixuser.org> -;; Created: 1999/11/02 -;; Keywords: PGP, OpenPGP - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; 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. - -;;; Code: - -(eval-when-compile - (require 'cl) ; for pgg macros - (require 'pgg)) - -(defgroup pgg-pgp () - "PGP 2.* and 6.* interface." - :group 'pgg) - -(defcustom pgg-pgp-program "pgp" - "PGP 2.* and 6.* executable." - :group 'pgg-pgp - :type 'string) - -(defcustom pgg-pgp-shell-file-name "/bin/sh" - "File name to load inferior shells from. -Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"." - :group 'pgg-pgp - :type 'string) - -(defcustom pgg-pgp-shell-command-switch "-c" - "Switch used to have the shell execute its command line argument." - :group 'pgg-pgp - :type 'string) - -(defcustom pgg-pgp-extra-args nil - "Extra arguments for every PGP invocation." - :group 'pgg-pgp - :type '(choice - (const :tag "None" nil) - (string :tag "Arguments"))) - -(defvar pgg-pgp-user-id nil - "PGP ID of your default identity.") - -(defun pgg-pgp-process-region (start end passphrase program args) - (let* ((errors-file-name (pgg-make-temp-file "pgg-errors")) - (args - (append args - pgg-pgp-extra-args - (list (concat "2>" errors-file-name)))) - (shell-file-name pgg-pgp-shell-file-name) - (shell-command-switch pgg-pgp-shell-command-switch) - (process-environment process-environment) - (output-buffer pgg-output-buffer) - (errors-buffer pgg-errors-buffer) - (process-connection-type nil) - process status exit-status) - (with-current-buffer (get-buffer-create output-buffer) - (buffer-disable-undo) - (erase-buffer)) - (when passphrase - (setenv "PGPPASSFD" "0")) - (unwind-protect - (progn - (let ((coding-system-for-read 'binary) - (coding-system-for-write 'binary)) - (setq process - (apply #'funcall - #'start-process-shell-command "*PGP*" output-buffer - program args))) - (set-process-sentinel process #'ignore) - (when passphrase - (process-send-string process (concat passphrase "\n"))) - (process-send-region process start end) - (process-send-eof process) - (while (eq 'run (process-status process)) - (accept-process-output process 5)) - (setq status (process-status process) - exit-status (process-exit-status process)) - (delete-process process) - (with-current-buffer output-buffer - (pgg-convert-lbt-region (point-min)(point-max) 'LF) - - (if (memq status '(stop signal)) - (error "%s exited abnormally: '%s'" program exit-status)) - (if (= 127 exit-status) - (error "%s could not be found" program)) - - (set-buffer (get-buffer-create errors-buffer)) - (buffer-disable-undo) - (erase-buffer) - (insert-file-contents errors-file-name))) - (if (and process (eq 'run (process-status process))) - (interrupt-process process)) - (condition-case nil - (delete-file errors-file-name) - (file-error nil))))) - -(defun pgg-pgp-lookup-key (string &optional type) - "Search keys associated with STRING." - (let ((args (list "+batchmode" "+language=en" "-kv" string))) - (with-current-buffer (get-buffer-create pgg-output-buffer) - (buffer-disable-undo) - (erase-buffer) - (apply #'call-process pgg-pgp-program nil t nil args) - (goto-char (point-min)) - (cond - ((re-search-forward "^pub\\s +[0-9]+/" nil t);PGP 2.* - (buffer-substring (point)(+ 8 (point)))) - ((re-search-forward "^Type" nil t);PGP 6.* - (beginning-of-line 2) - (substring - (nth 2 (split-string - (buffer-substring (point)(progn (end-of-line) (point))))) - 2)))))) - -(defun pgg-pgp-encrypt-region (start end recipients) - "Encrypt the current region between START and END." - (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) - (args - `("+encrypttoself=off +verbose=1" "+batchmode" - "+language=us" "-fate" - ,@(if recipients - (mapcar (lambda (rcpt) (concat "\"" rcpt "\"")) - (append recipients - (if pgg-encrypt-for-me - (list pgg-pgp-user-id)))))))) - (pgg-pgp-process-region start end nil pgg-pgp-program args) - (pgg-process-when-success nil))) - -(defun pgg-pgp-decrypt-region (start end) - "Decrypt the current region between START and END." - (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) - (key (pgg-pgp-lookup-key pgg-pgp-user-id 'encrypt)) - (passphrase - (pgg-read-passphrase - (format "PGP passphrase for %s: " pgg-pgp-user-id) key)) - (args - '("+verbose=1" "+batchmode" "+language=us" "-f"))) - (pgg-pgp-process-region start end passphrase pgg-pgp-program args) - (pgg-process-when-success - (if pgg-cache-passphrase - (pgg-add-passphrase-cache key passphrase))))) - -(defun pgg-pgp-sign-region (start end &optional clearsign) - "Make detached signature from text between START and END." - (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) - (passphrase - (pgg-read-passphrase - (format "PGP passphrase for %s: " pgg-pgp-user-id) - (pgg-pgp-lookup-key pgg-pgp-user-id 'sign))) - (args - (list (if clearsign "-fast" "-fbast") - "+verbose=1" "+language=us" "+batchmode" - "-u" pgg-pgp-user-id))) - (pgg-pgp-process-region start end passphrase pgg-pgp-program args) - (pgg-process-when-success - (goto-char (point-min)) - (when (re-search-forward "^-+BEGIN PGP" nil t);XXX - (let ((packet - (cdr (assq 2 (pgg-parse-armor-region - (progn (beginning-of-line 2) - (point)) - (point-max)))))) - (if pgg-cache-passphrase - (pgg-add-passphrase-cache - (cdr (assq 'key-identifier packet)) - passphrase))))))) - -(defun pgg-pgp-verify-region (start end &optional signature) - "Verify region between START and END as the detached signature SIGNATURE." - (let* ((orig-file (pgg-make-temp-file "pgg")) - (args '("+verbose=1" "+batchmode" "+language=us")) - (orig-mode (default-file-modes))) - (unwind-protect - (progn - (set-default-file-modes 448) - (let ((coding-system-for-write 'binary) - jka-compr-compression-info-list jam-zcat-filename-list) - (write-region start end orig-file))) - (set-default-file-modes orig-mode)) - (if (stringp signature) - (progn - (copy-file signature (setq signature (concat orig-file ".asc"))) - (setq args (append args (list signature orig-file)))) - (setq args (append args (list orig-file)))) - (pgg-pgp-process-region (point)(point) nil pgg-pgp-program args) - (delete-file orig-file) - (if signature (delete-file signature)) - (pgg-process-when-success - (goto-char (point-min)) - (let ((case-fold-search t)) - (while (re-search-forward "^warning: " nil t) - (delete-region (match-beginning 0) - (progn (beginning-of-line 2) (point))))) - (goto-char (point-min)) - (when (re-search-forward "^\\.$" nil t) - (delete-region (point-min) - (progn (beginning-of-line 2) - (point))))))) - -(defun pgg-pgp-insert-key () - "Insert public key at point." - (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) - (args - (list "+verbose=1" "+batchmode" "+language=us" "-kxaf" - (concat "\"" pgg-pgp-user-id "\"")))) - (pgg-pgp-process-region (point)(point) nil pgg-pgp-program args) - (insert-buffer-substring pgg-output-buffer))) - -(defun pgg-pgp-snarf-keys-region (start end) - "Add all public keys in region between START and END to the keyring." - (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) - (key-file (pgg-make-temp-file "pgg")) - (args - (list "+verbose=1" "+batchmode" "+language=us" "-kaf" - key-file))) - (let ((coding-system-for-write 'raw-text-dos)) - (write-region start end key-file)) - (pgg-pgp-process-region start end nil pgg-pgp-program args) - (delete-file key-file) - (pgg-process-when-success nil))) - -(provide 'pgg-pgp) - -;;; arch-tag: 076b7801-37b2-49a6-97c3-218fdecde33c -;;; pgg-pgp.el ends here
--- a/lisp/gnus/pgg-pgp5.el Sat Oct 29 11:50:12 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,250 +0,0 @@ -;;; pgg-pgp5.el --- PGP 5.* support for PGG. - -;; Copyright (C) 1999, 2000, 2002, 2003, 2004, -;; 2005 Free Software Foundation, Inc. - -;; Author: Daiki Ueno <ueno@unixuser.org> -;; Created: 1999/11/02 -;; Keywords: PGP, OpenPGP - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; 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. - -;;; Code: - -(eval-when-compile - (require 'cl) ; for pgg macros - (require 'pgg)) - -(defgroup pgg-pgp5 () - "PGP 5.* interface." - :group 'pgg) - -(defcustom pgg-pgp5-pgpe-program "pgpe" - "PGP 5.* 'pgpe' executable." - :group 'pgg-pgp5 - :type 'string) - -(defcustom pgg-pgp5-pgps-program "pgps" - "PGP 5.* 'pgps' executable." - :group 'pgg-pgp5 - :type 'string) - -(defcustom pgg-pgp5-pgpk-program "pgpk" - "PGP 5.* 'pgpk' executable." - :group 'pgg-pgp5 - :type 'string) - -(defcustom pgg-pgp5-pgpv-program "pgpv" - "PGP 5.* 'pgpv' executable." - :group 'pgg-pgp5 - :type 'string) - -(defcustom pgg-pgp5-shell-file-name "/bin/sh" - "File name to load inferior shells from. -Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"." - :group 'pgg-pgp5 - :type 'string) - -(defcustom pgg-pgp5-shell-command-switch "-c" - "Switch used to have the shell execute its command line argument." - :group 'pgg-pgp5 - :type 'string) - -(defcustom pgg-pgp5-extra-args nil - "Extra arguments for every PGP 5.* invocation." - :group 'pgg-pgp5 - :type '(choice - (const :tag "None" nil) - (string :tag "Arguments"))) - -(defvar pgg-pgp5-user-id nil - "PGP 5.* ID of your default identity.") - -(defun pgg-pgp5-process-region (start end passphrase program args) - (let* ((errors-file-name (pgg-make-temp-file "pgg-errors")) - (args - (append args - pgg-pgp5-extra-args - (list (concat "2>" errors-file-name)))) - (shell-file-name pgg-pgp5-shell-file-name) - (shell-command-switch pgg-pgp5-shell-command-switch) - (process-environment process-environment) - (output-buffer pgg-output-buffer) - (errors-buffer pgg-errors-buffer) - (process-connection-type nil) - process status exit-status) - (with-current-buffer (get-buffer-create output-buffer) - (buffer-disable-undo) - (erase-buffer)) - (when passphrase - (setenv "PGPPASSFD" "0")) - (unwind-protect - (progn - (let ((coding-system-for-read 'binary) - (coding-system-for-write 'binary)) - (setq process - (apply #'funcall - #'start-process-shell-command "*PGP*" output-buffer - program args))) - (set-process-sentinel process #'ignore) - (when passphrase - (process-send-string process (concat passphrase "\n"))) - (process-send-region process start end) - (process-send-eof process) - (while (eq 'run (process-status process)) - (accept-process-output process 5)) - (setq status (process-status process) - exit-status (process-exit-status process)) - (delete-process process) - (with-current-buffer output-buffer - (pgg-convert-lbt-region (point-min)(point-max) 'LF) - - (if (memq status '(stop signal)) - (error "%s exited abnormally: '%s'" program exit-status)) - (if (= 127 exit-status) - (error "%s could not be found" program)) - - (set-buffer (get-buffer-create errors-buffer)) - (buffer-disable-undo) - (erase-buffer) - (insert-file-contents errors-file-name))) - (if (and process (eq 'run (process-status process))) - (interrupt-process process)) - (condition-case nil - (delete-file errors-file-name) - (file-error nil))))) - -(defun pgg-pgp5-lookup-key (string &optional type) - "Search keys associated with STRING." - (let ((args (list "+language=en" "-l" string))) - (with-current-buffer (get-buffer-create pgg-output-buffer) - (buffer-disable-undo) - (erase-buffer) - (apply #'call-process pgg-pgp5-pgpk-program nil t nil args) - (goto-char (point-min)) - (when (re-search-forward "^sec" nil t) - (substring - (nth 2 (split-string - (buffer-substring (match-end 0)(progn (end-of-line)(point))))) - 2))))) - -(defun pgg-pgp5-encrypt-region (start end recipients &optional sign) - "Encrypt the current region between START and END." - (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) - (args - `("+NoBatchInvalidKeys=off" "-fat" "+batchmode=1" - ,@(if recipients - (apply #'append - (mapcar (lambda (rcpt) - (list "-r" - (concat "\"" rcpt "\""))) - (append recipients - (if pgg-encrypt-for-me - (list pgg-pgp5-user-id))))))))) - (pgg-pgp5-process-region start end nil pgg-pgp5-pgpe-program args) - (pgg-process-when-success nil))) - -(defun pgg-pgp5-decrypt-region (start end) - "Decrypt the current region between START and END." - (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) - (passphrase - (pgg-read-passphrase - (format "PGP passphrase for %s: " pgg-pgp5-user-id) - (pgg-pgp5-lookup-key pgg-pgp5-user-id 'encrypt))) - (args - '("+verbose=1" "+batchmode=1" "+language=us" "-f"))) - (pgg-pgp5-process-region start end passphrase pgg-pgp5-pgpv-program args) - (pgg-process-when-success nil))) - -(defun pgg-pgp5-sign-region (start end &optional clearsign) - "Make detached signature from text between START and END." - (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) - (passphrase - (pgg-read-passphrase - (format "PGP passphrase for %s: " pgg-pgp5-user-id) - (pgg-pgp5-lookup-key pgg-pgp5-user-id 'sign))) - (args - (list (if clearsign "-fat" "-fbat") - "+verbose=1" "+language=us" "+batchmode=1" - "-u" pgg-pgp5-user-id))) - (pgg-pgp5-process-region start end passphrase pgg-pgp5-pgps-program args) - (pgg-process-when-success - (when (re-search-forward "^-+BEGIN PGP SIGNATURE" nil t);XXX - (let ((packet - (cdr (assq 2 (pgg-parse-armor-region - (progn (beginning-of-line 2) - (point)) - (point-max)))))) - (if pgg-cache-passphrase - (pgg-add-passphrase-cache - (cdr (assq 'key-identifier packet)) - passphrase))))))) - -(defun pgg-pgp5-verify-region (start end &optional signature) - "Verify region between START and END as the detached signature SIGNATURE." - (let ((orig-file (pgg-make-temp-file "pgg")) - (args '("+verbose=1" "+batchmode=1" "+language=us")) - (orig-mode (default-file-modes))) - (unwind-protect - (progn - (set-default-file-modes 448) - (let ((coding-system-for-write 'binary) - jka-compr-compression-info-list jam-zcat-filename-list) - (write-region start end orig-file))) - (set-default-file-modes orig-mode)) - (when (stringp signature) - (copy-file signature (setq signature (concat orig-file ".asc"))) - (setq args (append args (list signature)))) - (pgg-pgp5-process-region (point)(point) nil pgg-pgp5-pgpv-program args) - (delete-file orig-file) - (if signature (delete-file signature)) - (with-current-buffer pgg-errors-buffer - (goto-char (point-min)) - (if (re-search-forward "^Good signature" nil t) - (progn - (set-buffer pgg-output-buffer) - (insert-buffer-substring pgg-errors-buffer) - t) - nil)))) - -(defun pgg-pgp5-insert-key () - "Insert public key at point." - (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) - (args - (list "+verbose=1" "+batchmode=1" "+language=us" "-x" - (concat "\"" pgg-pgp5-user-id "\"")))) - (pgg-pgp5-process-region (point)(point) nil pgg-pgp5-pgpk-program args) - (insert-buffer-substring pgg-output-buffer))) - -(defun pgg-pgp5-snarf-keys-region (start end) - "Add all public keys in region between START and END to the keyring." - (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) - (key-file (pgg-make-temp-file "pgg")) - (args - (list "+verbose=1" "+batchmode=1" "+language=us" "-a" - key-file))) - (let ((coding-system-for-write 'raw-text-dos)) - (write-region start end key-file)) - (pgg-pgp5-process-region start end nil pgg-pgp5-pgpk-program args) - (delete-file key-file) - (pgg-process-when-success nil))) - -(provide 'pgg-pgp5) - -;;; arch-tag: 3dbd1073-6b3a-466c-9f55-5c587ffa6d7b -;;; pgg-pgp5.el ends here
--- a/lisp/gnus/pgg.el Sat Oct 29 11:50:12 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,453 +0,0 @@ -;;; pgg.el --- glue for the various PGP implementations. - -;; Copyright (C) 1999, 2000, 2002, 2003, 2004, -;; 2005 Free Software Foundation, Inc. - -;; Author: Daiki Ueno <ueno@unixuser.org> -;; Created: 1999/10/28 -;; Keywords: PGP - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; 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. - -;;; Commentary: - -;;; Code: - -(require 'pgg-def) -(require 'pgg-parse) -(autoload 'run-at-time "timer") - -;; Don't merge these two `eval-when-compile's. -(eval-when-compile - (require 'cl)) - -;;; @ utility functions -;;; - -(defun pgg-invoke (func scheme &rest args) - (progn - (require (intern (format "pgg-%s" scheme))) - (apply 'funcall (intern (format "pgg-%s-%s" scheme func)) args))) - -(put 'pgg-save-coding-system 'lisp-indent-function 2) - -(defmacro pgg-save-coding-system (start end &rest body) - `(if (interactive-p) - (let ((buffer (current-buffer))) - (with-temp-buffer - (let (buffer-undo-list) - (insert-buffer-substring buffer ,start ,end) - (encode-coding-region (point-min)(point-max) - buffer-file-coding-system) - (prog1 (save-excursion ,@body) - (push nil buffer-undo-list) - (ignore-errors (undo)))))) - (save-restriction - (narrow-to-region ,start ,end) - ,@body))) - -(defun pgg-temp-buffer-show-function (buffer) - (let ((window (or (get-buffer-window buffer 'visible) - (split-window-vertically)))) - (set-window-buffer window buffer) - (shrink-window-if-larger-than-buffer window))) - -(defun pgg-display-output-buffer (start end status) - (if status - (progn - (delete-region start end) - (insert-buffer-substring pgg-output-buffer) - (decode-coding-region start (point) buffer-file-coding-system)) - (let ((temp-buffer-show-function - (function pgg-temp-buffer-show-function))) - (with-output-to-temp-buffer pgg-echo-buffer - (set-buffer standard-output) - (insert-buffer-substring pgg-errors-buffer))))) - -(defvar pgg-passphrase-cache (make-vector 7 0)) - -(defun pgg-read-passphrase (prompt &optional key) - (or (and pgg-cache-passphrase - key (setq key (pgg-truncate-key-identifier key)) - (symbol-value (intern-soft key pgg-passphrase-cache))) - (read-passwd prompt))) - -(eval-when-compile - (defmacro pgg-run-at-time-1 (time repeat function args) - (when (featurep 'xemacs) - (if (condition-case nil - (let ((delete-itimer 'delete-itimer) - (itimer-driver-start 'itimer-driver-start) - (itimer-value 'itimer-value) - (start-itimer 'start-itimer)) - (unless (or (symbol-value 'itimer-process) - (symbol-value 'itimer-timer)) - (funcall itimer-driver-start)) - ;; Check whether there is a bug to which the difference of - ;; the present time and the time when the itimer driver was - ;; woken up is subtracted from the initial itimer value. - (let* ((inhibit-quit t) - (ctime (current-time)) - (itimer-timer-last-wakeup - (prog1 - ctime - (setcar ctime (1- (car ctime))))) - (itimer-list nil) - (itimer (funcall start-itimer "pgg-run-at-time" - 'ignore 5))) - (sleep-for 0.1) ;; Accept the timeout interrupt. - (prog1 - (> (funcall itimer-value itimer) 0) - (funcall delete-itimer itimer)))) - (error nil)) - `(let ((time ,time)) - (apply #'start-itimer "pgg-run-at-time" - ,function (if time (max time 1e-9) 1e-9) - ,repeat nil t ,args))) - `(let ((time ,time) - (itimers (list nil))) - (setcar - itimers - (apply #'start-itimer "pgg-run-at-time" - (lambda (itimers repeat function &rest args) - (let ((itimer (car itimers))) - (if repeat - (progn - (set-itimer-function - itimer - (lambda (itimer repeat function &rest args) - (set-itimer-restart itimer repeat) - (set-itimer-function itimer function) - (set-itimer-function-arguments itimer args) - (apply function args))) - (set-itimer-function-arguments - itimer - (append (list itimer repeat function) args))) - (set-itimer-function - itimer - (lambda (itimer function &rest args) - (delete-itimer itimer) - (apply function args))) - (set-itimer-function-arguments - itimer - (append (list itimer function) args))))) - 1e-9 (if time (max time 1e-9) 1e-9) - nil t itimers ,repeat ,function ,args)))))) - -(eval-and-compile - (if (featurep 'xemacs) - (defun pgg-run-at-time (time repeat function &rest args) - "Emulating function run as `run-at-time'. -TIME should be nil meaning now, or a number of seconds from now. -Return an itimer object which can be used in either `delete-itimer' -or `cancel-timer'." - (pgg-run-at-time-1 time repeat function args)) - (defalias 'pgg-run-at-time 'run-at-time))) - -(defun pgg-add-passphrase-cache (key passphrase) - (setq key (pgg-truncate-key-identifier key)) - (set (intern key pgg-passphrase-cache) - passphrase) - (pgg-run-at-time pgg-passphrase-cache-expiry nil - #'pgg-remove-passphrase-cache - key)) - -(defun pgg-remove-passphrase-cache (key) - (let ((passphrase (symbol-value (intern-soft key pgg-passphrase-cache)))) - (when passphrase - (fillarray passphrase ?_) - (unintern key pgg-passphrase-cache)))) - -(defmacro pgg-convert-lbt-region (start end lbt) - `(let ((pgg-conversion-end (set-marker (make-marker) ,end))) - (goto-char ,start) - (case ,lbt - (CRLF - (while (progn - (end-of-line) - (> (marker-position pgg-conversion-end) (point))) - (insert "\r") - (forward-line 1))) - (LF - (while (re-search-forward "\r$" pgg-conversion-end t) - (replace-match "")))))) - -(put 'pgg-as-lbt 'lisp-indent-function 3) - -(defmacro pgg-as-lbt (start end lbt &rest body) - `(let ((inhibit-read-only t) - buffer-read-only - buffer-undo-list) - (pgg-convert-lbt-region ,start ,end ,lbt) - (let ((,end (point))) - ,@body) - (push nil buffer-undo-list) - (ignore-errors (undo)))) - -(put 'pgg-process-when-success 'lisp-indent-function 0) - -(defmacro pgg-process-when-success (&rest body) - `(with-current-buffer pgg-output-buffer - (if (zerop (buffer-size)) nil ,@body t))) - -(defalias 'pgg-make-temp-file - (if (fboundp 'make-temp-file) - 'make-temp-file - (lambda (prefix &optional dir-flag) - (let ((file (expand-file-name - (make-temp-name prefix) - (if (fboundp 'temp-directory) - (temp-directory) - temporary-file-directory)))) - (if dir-flag - (make-directory file)) - file)))) - -;;; @ interface functions -;;; - -;;;###autoload -(defun pgg-encrypt-region (start end rcpts &optional sign) - "Encrypt the current region between START and END for RCPTS. -If optional argument SIGN is non-nil, do a combined sign and encrypt." - (interactive - (list (region-beginning)(region-end) - (split-string (read-string "Recipients: ") "[ \t,]+"))) - (let ((status - (pgg-save-coding-system start end - (pgg-invoke "encrypt-region" (or pgg-scheme pgg-default-scheme) - (point-min) (point-max) rcpts sign)))) - (when (interactive-p) - (pgg-display-output-buffer start end status)) - status)) - -;;;###autoload -(defun pgg-encrypt (rcpts &optional sign start end) - "Encrypt the current buffer for RCPTS. -If optional argument SIGN is non-nil, do a combined sign and encrypt. -If optional arguments START and END are specified, only encrypt within -the region." - (interactive (list (split-string (read-string "Recipients: ") "[ \t,]+"))) - (let* ((start (or start (point-min))) - (end (or end (point-max))) - (status (pgg-encrypt-region start end rcpts sign))) - (when (interactive-p) - (pgg-display-output-buffer start end status)) - status)) - -;;;###autoload -(defun pgg-decrypt-region (start end) - "Decrypt the current region between START and END." - (interactive "r") - (let* ((buf (current-buffer)) - (status - (pgg-save-coding-system start end - (pgg-invoke "decrypt-region" (or pgg-scheme pgg-default-scheme) - (point-min) (point-max))))) - (when (interactive-p) - (pgg-display-output-buffer start end status)) - status)) - -;;;###autoload -(defun pgg-decrypt (&optional start end) - "Decrypt the current buffer. -If optional arguments START and END are specified, only decrypt within -the region." - (interactive "") - (let* ((start (or start (point-min))) - (end (or end (point-max))) - (status (pgg-decrypt-region start end))) - (when (interactive-p) - (pgg-display-output-buffer start end status)) - status)) - -;;;###autoload -(defun pgg-sign-region (start end &optional cleartext) - "Make the signature from text between START and END. -If the optional 3rd argument CLEARTEXT is non-nil, it does not create -a detached signature. -If this function is called interactively, CLEARTEXT is enabled -and the the output is displayed." - (interactive "r") - (let ((status (pgg-save-coding-system start end - (pgg-invoke "sign-region" (or pgg-scheme pgg-default-scheme) - (point-min) (point-max) - (or (interactive-p) cleartext))))) - (when (interactive-p) - (pgg-display-output-buffer start end status)) - status)) - -;;;###autoload -(defun pgg-sign (&optional cleartext start end) - "Sign the current buffer. -If the optional argument CLEARTEXT is non-nil, it does not create a -detached signature. -If optional arguments START and END are specified, only sign data -within the region. -If this function is called interactively, CLEARTEXT is enabled -and the the output is displayed." - (interactive "") - (let* ((start (or start (point-min))) - (end (or end (point-max))) - (status (pgg-sign-region start end (or (interactive-p) cleartext)))) - (when (interactive-p) - (pgg-display-output-buffer start end status)) - status)) - -;;;###autoload -(defun pgg-verify-region (start end &optional signature fetch) - "Verify the current region between START and END. -If the optional 3rd argument SIGNATURE is non-nil, it is treated as -the detached signature of the current region. - -If the optional 4th argument FETCH is non-nil, we attempt to fetch the -signer's public key from `pgg-default-keyserver-address'." - (interactive "r") - (let* ((packet - (if (null signature) nil - (with-temp-buffer - (buffer-disable-undo) - (if (fboundp 'set-buffer-multibyte) - (set-buffer-multibyte nil)) - (insert-file-contents signature) - (cdr (assq 2 (pgg-decode-armor-region - (point-min)(point-max))))))) - (key (cdr (assq 'key-identifier packet))) - status keyserver) - (and (stringp key) - pgg-query-keyserver - (setq key (concat "0x" (pgg-truncate-key-identifier key))) - (null (pgg-lookup-key key)) - (or fetch (interactive-p)) - (y-or-n-p (format "Key %s not found; attempt to fetch? " key)) - (setq keyserver - (or (cdr (assq 'preferred-key-server packet)) - pgg-default-keyserver-address)) - (pgg-fetch-key keyserver key)) - (setq status - (pgg-save-coding-system start end - (pgg-invoke "verify-region" (or pgg-scheme pgg-default-scheme) - (point-min) (point-max) signature))) - (when (interactive-p) - (let ((temp-buffer-show-function - (function pgg-temp-buffer-show-function))) - (with-output-to-temp-buffer pgg-echo-buffer - (set-buffer standard-output) - (insert-buffer-substring (if status pgg-output-buffer - pgg-errors-buffer))))) - status)) - -;;;###autoload -(defun pgg-verify (&optional signature fetch start end) - "Verify the current buffer. -If the optional argument SIGNATURE is non-nil, it is treated as -the detached signature of the current region. -If the optional argument FETCH is non-nil, we attempt to fetch the -signer's public key from `pgg-default-keyserver-address'. -If optional arguments START and END are specified, only verify data -within the region." - (interactive "") - (let* ((start (or start (point-min))) - (end (or end (point-max))) - (status (pgg-verify-region start end signature fetch))) - (when (interactive-p) - (let ((temp-buffer-show-function - (function pgg-temp-buffer-show-function))) - (with-output-to-temp-buffer pgg-echo-buffer - (set-buffer standard-output) - (insert-buffer-substring (if status pgg-output-buffer - pgg-errors-buffer))))) - status)) - -;;;###autoload -(defun pgg-insert-key () - "Insert the ASCII armored public key." - (interactive) - (pgg-invoke "insert-key" (or pgg-scheme pgg-default-scheme))) - -;;;###autoload -(defun pgg-snarf-keys-region (start end) - "Import public keys in the current region between START and END." - (interactive "r") - (pgg-save-coding-system start end - (pgg-invoke "snarf-keys-region" (or pgg-scheme pgg-default-scheme) - start end))) - -;;;###autoload -(defun pgg-snarf-keys () - "Import public keys in the current buffer." - (interactive "") - (pgg-snarf-keys-region (point-min) (point-max))) - -(defun pgg-lookup-key (string &optional type) - (pgg-invoke "lookup-key" (or pgg-scheme pgg-default-scheme) string type)) - -(defvar pgg-insert-url-function (function pgg-insert-url-with-w3)) - -(defun pgg-insert-url-with-w3 (url) - (ignore-errors - (require 'url) - (let (buffer-file-name) - (url-insert-file-contents url)))) - -(defvar pgg-insert-url-extra-arguments nil) -(defvar pgg-insert-url-program nil) - -(defun pgg-insert-url-with-program (url) - (let ((args (copy-sequence pgg-insert-url-extra-arguments)) - process) - (insert - (with-temp-buffer - (setq process - (apply #'start-process " *PGG url*" (current-buffer) - pgg-insert-url-program (nconc args (list url)))) - (set-process-sentinel process #'ignore) - (while (eq 'run (process-status process)) - (accept-process-output process 5)) - (delete-process process) - (if (and process (eq 'run (process-status process))) - (interrupt-process process)) - (buffer-string))))) - -(defun pgg-fetch-key (keyserver key) - "Attempt to fetch a KEY from KEYSERVER for addition to PGP or GnuPG keyring." - (with-current-buffer (get-buffer-create pgg-output-buffer) - (buffer-disable-undo) - (erase-buffer) - (let ((proto (if (string-match "^[a-zA-Z\\+\\.\\\\-]+:" keyserver) - (substring keyserver 0 (1- (match-end 0)))))) - (save-excursion - (funcall pgg-insert-url-function - (if proto keyserver - (format "http://%s:11371/pks/lookup?op=get&search=%s" - keyserver key)))) - (when (re-search-forward "^-+BEGIN" nil 'last) - (delete-region (point-min) (match-beginning 0)) - (when (re-search-forward "^-+END" nil t) - (delete-region (progn (end-of-line) (point)) - (point-max))) - (insert "\n") - (with-temp-buffer - (insert-buffer-substring pgg-output-buffer) - (pgg-snarf-keys-region (point-min)(point-max))))))) - - -(provide 'pgg) - -;;; arch-tag: 9cc705dd-1e6a-4c90-8dce-c3561f9a2cf4 -;;; pgg.el ends here
--- a/lisp/gnus/rfc2047.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/gnus/rfc2047.el Tue Nov 01 06:23:08 2005 +0000 @@ -812,6 +812,85 @@ (defvar rfc2047-quote-decoded-words-containing-tspecials nil "If non-nil, quote decoded words containing special characters.") +(defvar rfc2047-allow-incomplete-encoded-text t + "*Non-nil means allow incomplete encoded-text in successive encoded-words. +Dividing of encoded-text in the place other than character boundaries +violates RFC2047 section 5, while we have a capability to decode it. +If it is non-nil, the decoder will decode B- or Q-encoding in each +encoded-word, concatenate them, and decode it by charset. Otherwise, +the decoder will fully decode each encoded-word before concatenating +them.") + +(defun rfc2047-charset-to-coding-system (charset) + "Return coding-system corresponding to MIME CHARSET. +If your Emacs implementation can't decode CHARSET, return nil." + (when (stringp charset) + (setq charset (intern (downcase charset)))) + (when (or (not charset) + (eq 'gnus-all mail-parse-ignored-charsets) + (memq 'gnus-all mail-parse-ignored-charsets) + (memq charset mail-parse-ignored-charsets)) + (setq charset mail-parse-charset)) + (let ((cs (mm-coding-system-p (mm-charset-to-coding-system charset)))) + (cond ((eq cs 'ascii) + (setq cs (or (mm-charset-to-coding-system mail-parse-charset) + 'raw-text))) + (cs) + ((and charset + (listp mail-parse-ignored-charsets) + (memq 'gnus-unknown mail-parse-ignored-charsets)) + (setq cs (mm-charset-to-coding-system mail-parse-charset)))) + (if (eq cs 'ascii) + 'raw-text + cs))) + +(defun rfc2047-decode-encoded-words (words) + "Decode successive encoded-words in WORDS and return a decoded string. +Each element of WORDS looks like (CHARSET ENCODING ENCODED-TEXT +ENCODED-WORD)." + (let (word charset cs encoding text rest) + (while words + (setq word (pop words)) + (if (and (or (setq cs (rfc2047-charset-to-coding-system + (setq charset (car word)))) + (progn + (message "Unknown charset: %s" charset) + nil)) + (condition-case code + (cond ((char-equal ?B (nth 1 word)) + (setq text (base64-decode-string + (rfc2047-pad-base64 (nth 2 word))))) + ((char-equal ?Q (nth 1 word)) + (setq text (quoted-printable-decode-string + (mm-subst-char-in-string + ?_ ? (nth 2 word) t))))) + (error + (message "%s" (error-message-string code)) + nil))) + (if (and rfc2047-allow-incomplete-encoded-text + (eq cs (caar rest))) + ;; Concatenate text of which the charset is the same. + (setcdr (car rest) (concat (cdar rest) text)) + (push (cons cs text) rest)) + ;; Don't decode encoded-word. + (push (cons nil (nth 3 word)) rest))) + (while rest + (setq words (concat + (or (and (setq cs (caar rest)) + (condition-case code + (mm-decode-coding-string (cdar rest) cs) + (error + (message "%s" (error-message-string code)) + nil))) + (concat (when (cdr rest) " ") + (cdar rest) + (when (and words + (not (eq (string-to-char words) ? ))) + " "))) + words) + rest (cdr rest))) + words)) + ;; Fixme: This should decode in place, not cons intermediate strings. ;; Also check whether it needs to worry about delimiting fields like ;; encoding. @@ -826,32 +905,32 @@ "Decode MIME-encoded words in region between START and END." (interactive "r") (let ((case-fold-search t) - b e) + (eword-regexp (eval-when-compile + ;; Ignore whitespace between encoded-words. + (concat "[\n\t ]*\\(" rfc2047-encoded-word-regexp + "\\)"))) + b e match words) (save-excursion (save-restriction (narrow-to-region start end) - (goto-char (point-min)) - ;; Remove whitespace between encoded words. - (while (re-search-forward - (eval-when-compile - (concat "\\(" rfc2047-encoded-word-regexp "\\)" - "\\(\n?[ \t]\\)+" - "\\(" rfc2047-encoded-word-regexp "\\)")) - nil t) - (delete-region (goto-char (match-end 1)) (match-beginning 7))) - ;; Decode the encoded words. - (setq b (goto-char (point-min))) - (while (re-search-forward rfc2047-encoded-word-regexp nil t) - (setq e (match-beginning 0)) - (insert (rfc2047-parse-and-decode - (prog1 - (match-string 0) - (delete-region e (match-end 0))))) - (while (looking-at rfc2047-encoded-word-regexp) - (insert (rfc2047-parse-and-decode - (prog1 - (match-string 0) - (delete-region (point) (match-end 0)))))) + (goto-char (setq b start)) + ;; Look for the encoded-words. + (while (setq match (re-search-forward eword-regexp nil t)) + (setq e (match-beginning 1) + end (match-end 0) + words nil) + (while match + (push (list (match-string 2) ;; charset + (char-after (match-beginning 4)) ;; encoding + (match-string 5) ;; encoded-text + (match-string 1)) ;; encoded-word + words) + ;; Look for the subsequent encoded-words. + (when (setq match (looking-at eword-regexp)) + (goto-char (setq end (match-end 0))))) + ;; Replace the encoded-words with the decoded one. + (delete-region e end) + (insert (rfc2047-decode-encoded-words (nreverse words))) (save-restriction (narrow-to-region e (point)) (goto-char e) @@ -957,21 +1036,6 @@ (mm-decode-coding-string string mail-parse-charset)) (mm-string-as-multibyte string))))) -(defun rfc2047-parse-and-decode (word) - "Decode WORD and return it if it is an encoded word. -Return WORD if it is not not an encoded word or if the charset isn't -decodable." - (if (not (string-match rfc2047-encoded-word-regexp word)) - word - (or - (condition-case nil - (rfc2047-decode - (match-string 1 word) - (string-to-char (match-string 3 word)) - (match-string 4 word)) - (error word)) - word))) ; un-decodable - (defun rfc2047-pad-base64 (string) "Pad STRING to quartets." ;; Be more liberal to accept buggy base64 strings. If @@ -987,36 +1051,6 @@ (2 (concat string "==")) (3 (concat string "="))))) -(defun rfc2047-decode (charset encoding string) - "Decode STRING from the given MIME CHARSET in the given ENCODING. -Valid ENCODINGs are the characters \"B\" and \"Q\". -If your Emacs implementation can't decode CHARSET, return nil." - (if (stringp charset) - (setq charset (intern (downcase charset)))) - (if (or (not charset) - (eq 'gnus-all mail-parse-ignored-charsets) - (memq 'gnus-all mail-parse-ignored-charsets) - (memq charset mail-parse-ignored-charsets)) - (setq charset mail-parse-charset)) - (let ((cs (mm-charset-to-coding-system charset))) - (if (and (not cs) charset - (listp mail-parse-ignored-charsets) - (memq 'gnus-unknown mail-parse-ignored-charsets)) - (setq cs (mm-charset-to-coding-system mail-parse-charset))) - (when cs - (when (eq cs 'ascii) - (setq cs (or mail-parse-charset 'raw-text))) - (mm-decode-coding-string - (cond - ((char-equal ?B encoding) - (base64-decode-string - (rfc2047-pad-base64 string))) - ((char-equal ?Q encoding) - (quoted-printable-decode-string - (mm-subst-char-in-string ?_ ? string t))) - (t (error "Invalid encoding: %c" encoding))) - cs)))) - (provide 'rfc2047) ;;; arch-tag: a07fe3d4-22b5-4c4a-bd89-b1f82d5d36f6
--- a/lisp/help-fns.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/help-fns.el Tue Nov 01 06:23:08 2005 +0000 @@ -311,6 +311,19 @@ ;; Return value is like the one from help-split-fundoc, but highlighted (cons usage doc)) +(defun describe-simplify-lib-file-name (file) + "Simplify a library name FILE to a relative name, and make it a source file." + (if file + ;; Try converting the absolute file name to a library name. + (let ((libname (file-name-nondirectory file))) + ;; Now convert that back to a file name and see if we get + ;; the original one. If so, they are equivalent. + (if (equal file (locate-file libname load-path '(""))) + (if (string-match "[.]elc?\\'" libname) + (substring libname 0 -1) + libname) + file)))) + ;;;###autoload (defun describe-function-1 (function) (let* ((def (if (symbolp function) @@ -363,6 +376,7 @@ (help-xref-button 1 'help-function def))))) (or file-name (setq file-name (symbol-file function 'defun))) + (setq file-name (describe-simplify-lib-file-name file-name)) (when (equal file-name "loaddefs.el") ;; Find the real def site of the preloaded function. ;; This is necessary only for defaliases. @@ -537,6 +551,7 @@ ;; change the format of the buffer's initial line in case ;; anything expects the current format.) (let ((file-name (symbol-file variable 'defvar))) + (setq file-name (describe-simplify-lib-file-name file-name)) (when (equal file-name "loaddefs.el") ;; Find the real def site of the preloaded variable. (let ((location
--- a/lisp/image.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/image.el Tue Nov 01 06:23:08 2005 +0000 @@ -64,9 +64,7 @@ be of image type IMAGE-TYPE.") -(defvar image-load-path - (list (file-name-as-directory (expand-file-name "images" data-directory)) - 'data-directory 'load-path) +(defvar image-load-path nil "List of locations in which to search for image files. If an element is a string, it defines a directory to search. If an element is a variable symbol whose value is a string, that @@ -74,6 +72,11 @@ If an element is a variable symbol whose value is a list, the value is used as a list of directories to search.") +(eval-at-startup + (setq image-load-path + (list (file-name-as-directory (expand-file-name "images" data-directory)) + 'data-directory 'load-path))) + (defun image-jpeg-p (data) "Value is non-nil if DATA, a string, consists of JFIF image data. We accept the tag Exif because that is the same format." @@ -427,10 +430,11 @@ (defimage test-image ((:type xpm :file \"~/test1.xpm\") (:type xbm :file \"~/test1.xbm\")))" + (declare (doc-string 3)) `(defvar ,symbol (find-image ',specs) ,doc)) (provide 'image) -;;; arch-tag: 8e76a07b-eb48-4f3e-a7a0-1a7ba9f096b3 +;; arch-tag: 8e76a07b-eb48-4f3e-a7a0-1a7ba9f096b3 ;;; image.el ends here
--- a/lisp/info.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/info.el Tue Nov 01 06:23:08 2005 +0000 @@ -3736,20 +3736,18 @@ ;; *Note is often used where *note should have been (goto-char start) (skip-syntax-backward " ") + (when (memq (char-before) '(?\( ?\[ ?\{)) + ;; Check whether the paren is preceded by + ;; an end of sentence + (skip-syntax-backward " (")) (setq other-tag (cond ((memq (char-before) '(nil ?\. ?! ??)) "See ") - ((memq (char-before) '(?\, ?\; ?\: ?-)) - "see ") - ((memq (char-before) '(?\( ?\[ ?\{)) - ;; Check whether the paren is preceded by - ;; an end of sentence - (skip-syntax-backward " (") - (if (memq (char-before) '(nil ?\. ?! ??)) - "See " - "see ")) - ((save-match-data (looking-at "\n\n")) - "See ")))) + ((save-match-data + (save-excursion + (search-forward "\n\n" start t))) + "See ") + (t "see ")))) (goto-char next) (add-text-properties (match-beginning 1)
--- a/lisp/international/mule.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/international/mule.el Tue Nov 01 06:23:08 2005 +0000 @@ -85,7 +85,9 @@ ;; Make `kill-buffer' quiet. (set-buffer-modified-p nil)) ;; Have the original buffer current while we eval. - (eval-buffer buffer nil file + (eval-buffer buffer nil + ;; This is compatible with what `load' does. + (if purify-flag file fullname) ;; If this Emacs is running with --unibyte, ;; convert multibyte strings to unibyte ;; after reading them.
--- a/lisp/international/quail.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/international/quail.el Tue Nov 01 06:23:08 2005 +0000 @@ -1598,13 +1598,21 @@ (or (and (consp def) (aref (cdr def) (car (car def)))) def (and (> len 1) - (let ((str (quail-get-current-str - (1- len) - (quail-map-definition (quail-lookup-key - quail-current-key (1- len)))))) + (let* ((str (quail-get-current-str + (1- len) + (quail-map-definition (quail-lookup-key + quail-current-key (1- len))))) + (substr1 (substring quail-current-key (1- len) len)) + (str1 (and (quail-deterministic) + (quail-get-current-str + 1 + (quail-map-definition (quail-lookup-key + substr1 1)))))) (if str (concat (if (stringp str) str (char-to-string str)) - (substring quail-current-key (1- len) len))))))) + (if str1 + (if (stringp str1) str1 (char-to-string str1)) + substr1))))))) (defvar quail-guidance-translations-starting-column 20) @@ -1720,6 +1728,20 @@ ;; And, we can terminate the current translation. t) + ((quail-deterministic) + ;; No way to handle the last character in this context. + ;; Commit the longest successfully translated characters, and + ;; handle the remaining characters in a new loop. + (setq def nil) + (while (and (not def) (> len 1)) + (setq len (1- len)) + (setq def (quail-map-definition + (quail-lookup-key quail-current-key len)))) + (if def (setq quail-current-str + (quail-get-current-str len def)) + (setq quail-current-str (aref quail-current-key 0))) + len) + (t ;; No way to handle the last character in this context. (setq def (quail-map-definition
--- a/lisp/international/utf-7.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/international/utf-7.el Tue Nov 01 06:23:08 2005 +0000 @@ -36,6 +36,7 @@ ;;; Code: +;;;###autoload(autoload-coding-system 'utf-7 '(require 'utf-7)) (make-coding-system 'utf-7 0 ?U "UTF-7 encoding of Unicode (RFC 2152)"
--- a/lisp/jit-lock.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/jit-lock.el Tue Nov 01 06:23:08 2005 +0000 @@ -353,7 +353,12 @@ ;; what's already been refontified. (when (and jit-lock-context-unfontify-pos (< jit-lock-context-unfontify-pos next) - (>= jit-lock-context-unfontify-pos start)) + (>= jit-lock-context-unfontify-pos start) + ;; Don't move boundary forward if we have to + ;; refontify previous text. Otherwise, we risk moving + ;; it past the end of the multiline property and thus + ;; forget about this multiline region altogether. + (not (get-text-property start 'jit-lock-defer-multiline))) (setq jit-lock-context-unfontify-pos next)) ;; Fontify the chunk, and mark it as fontified.
--- a/lisp/ldefs-boot.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/ldefs-boot.el Tue Nov 01 06:23:08 2005 +0000 @@ -4,7 +4,7 @@ ;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best ;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5" -;;;;;; "play/5x5.el" (17178 22152)) +;;;;;; "play/5x5.el" (17187 59902)) ;;; Generated autoloads from play/5x5.el (autoload (quote 5x5) "5x5" "\ @@ -64,7 +64,7 @@ ;;;*** ;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el" -;;;;;; (17178 22152)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/ada-mode.el (autoload (quote ada-add-extensions) "ada-mode" "\ @@ -125,7 +125,7 @@ ;;;*** ;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/ada-stmt.el (autoload (quote ada-header) "ada-stmt" "\ @@ -136,7 +136,7 @@ ;;;*** ;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el" -;;;;;; (17178 22152)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/ada-xref.el (autoload (quote ada-find-file) "ada-xref" "\ @@ -151,7 +151,7 @@ ;;;;;; change-log-mode add-change-log-entry-other-window add-change-log-entry ;;;;;; find-change-log prompt-for-change-log-name add-log-mailing-address ;;;;;; add-log-full-name add-log-current-defun-function) "add-log" -;;;;;; "add-log.el" (17178 22141)) +;;;;;; "add-log.el" (17254 63790)) ;;; Generated autoloads from add-log.el (defvar add-log-current-defun-function nil "\ @@ -288,8 +288,8 @@ ;;;*** ;;;### (autoloads (defadvice ad-add-advice ad-default-compilation-action -;;;;;; ad-redefinition-action) "advice" "emacs-lisp/advice.el" (17178 -;;;;;; 22143)) +;;;;;; ad-redefinition-action) "advice" "emacs-lisp/advice.el" (17226 +;;;;;; 24574)) ;;; Generated autoloads from emacs-lisp/advice.el (defvar ad-redefinition-action (quote warn) "\ @@ -388,7 +388,7 @@ ;;;### (autoloads (align-newline-and-indent align-unhighlight-rule ;;;;;; align-highlight-rule align-current align-entire align-regexp -;;;;;; align) "align" "align.el" (17178 22141)) +;;;;;; align) "align" "align.el" (17187 59901)) ;;; Generated autoloads from align.el (autoload (quote align) "align" "\ @@ -477,43 +477,224 @@ ;;;*** -;;;### (autoloads (allout-init) "allout" "allout.el" (17178 22141)) +;;;### (autoloads (outlineify-sticky allout-mode) "allout" "allout.el" +;;;;;; (17254 63790)) ;;; Generated autoloads from allout.el -(autoload (quote allout-init) "allout" "\ -Prime `allout-mode' to enable/disable auto-activation, wrt `allout-layout'. - -MODE is one of the following symbols: - - - nil (or no argument) deactivate auto-activation/layout; - - `activate', enable auto-activation only; - - `ask', enable auto-activation, and enable auto-layout but with - confirmation for layout operation solicited from user each time; - - `report', just report and return the current auto-activation state; - - anything else (eg, t) for auto-activation and auto-layout, without - any confirmation check. - -Use this function to setup your Emacs session for automatic activation -of allout outline mode, contingent to the buffer-specific setting of -the `allout-layout' variable. (See `allout-layout' and -`allout-expose-topic' docstrings for more details on auto layout). - -`allout-init' works by setting up (or removing) -`allout-find-file-hook' in `find-file-hook', and giving -`allout-auto-activation' a suitable setting. - -To prime your Emacs session for full auto-outline operation, include -the following two lines in your Emacs init file: - -\(require 'allout) -\(allout-init t) - -\(fn &optional MODE)" t nil) +(autoload (quote allout-mode) "allout" "\ +Toggle minor mode for controlling exposure and editing of text outlines. + +Optional arg forces mode to re-initialize iff arg is positive num or +symbol. Allout outline mode always runs as a minor mode. + +Allout outline mode provides extensive outline oriented formatting and +manipulation. It enables structural editing of outlines, as well as +navigation and exposure. It also is specifically aimed at +accommodating syntax-sensitive text like programming languages. (For +an example, see the allout code itself, which is organized as an allout +outline.) + +In addition to outline navigation and exposure, allout includes: + + - topic-oriented repositioning, promotion/demotion, cut, and paste + - integral outline exposure-layout + - incremental search with dynamic exposure and reconcealment of hidden text + - automatic topic-number maintenance + - easy topic encryption and decryption + - \"Hot-spot\" operation, for single-keystroke maneuvering and + exposure control. (See the allout-mode docstring.) + +and many other features. + +Below is a description of the bindings, and then explanation of +special `allout-mode' features and terminology. See also the outline +menubar additions for quick reference to many of the features, and see +the docstring of the function `allout-init' for instructions on +priming your emacs session for automatic activation of `allout-mode'. + + +The bindings are dictated by the `allout-keybindings-list' and +`allout-command-prefix' variables. + + Navigation: Exposure Control: + ---------- ---------------- +\\[allout-next-visible-heading] allout-next-visible-heading | \\[allout-hide-current-subtree] allout-hide-current-subtree +\\[allout-previous-visible-heading] allout-previous-visible-heading | \\[allout-show-children] allout-show-children +\\[allout-up-current-level] allout-up-current-level | \\[allout-show-current-subtree] allout-show-current-subtree +\\[allout-forward-current-level] allout-forward-current-level | \\[allout-show-current-entry] allout-show-current-entry +\\[allout-backward-current-level] allout-backward-current-level | \\[allout-show-all] allout-show-all +\\[allout-end-of-entry] allout-end-of-entry +\\[allout-beginning-of-current-entry,] allout-beginning-of-current-entry, alternately, goes to hot-spot + + Topic Header Production: + ----------------------- +\\[allout-open-sibtopic] allout-open-sibtopic Create a new sibling after current topic. +\\[allout-open-subtopic] allout-open-subtopic ... an offspring of current topic. +\\[allout-open-supertopic] allout-open-supertopic ... a sibling of the current topic's parent. + + Topic Level and Prefix Adjustment: + --------------------------------- +\\[allout-shift-in] allout-shift-in Shift current topic and all offspring deeper. +\\[allout-shift-out] allout-shift-out ... less deep. +\\[allout-rebullet-current-heading] allout-rebullet-current-heading Prompt for alternate bullet for + current topic. +\\[allout-rebullet-topic] allout-rebullet-topic Reconcile bullets of topic and its offspring + - distinctive bullets are not changed, others + alternated according to nesting depth. +\\[allout-number-siblings] allout-number-siblings Number bullets of topic and siblings - the + offspring are not affected. With repeat + count, revoke numbering. + + Topic-oriented Killing and Yanking: + ---------------------------------- +\\[allout-kill-topic] allout-kill-topic Kill current topic, including offspring. +\\[allout-kill-line] allout-kill-line Like kill-line, but reconciles numbering, etc. +\\[allout-yank] allout-yank Yank, adjusting depth of yanked topic to + depth of heading if yanking into bare topic + heading (ie, prefix sans text). +\\[allout-yank-pop] allout-yank-pop Is to allout-yank as yank-pop is to yank + + Misc commands: + ------------- +M-x outlineify-sticky Activate outline mode for current buffer, + and establish a default file-var setting + for `allout-layout'. +\\[allout-mark-topic] allout-mark-topic +\\[allout-copy-exposed-to-buffer] allout-copy-exposed-to-buffer + Duplicate outline, sans concealed text, to + buffer with name derived from derived from that + of current buffer - \"*BUFFERNAME exposed*\". +\\[allout-flatten-exposed-to-buffer] allout-flatten-exposed-to-buffer + Like above 'copy-exposed', but convert topic + prefixes to section.subsection... numeric + format. +ESC ESC (allout-init t) Setup Emacs session for outline mode + auto-activation. + + Encrypted Entries + +Outline mode supports easily togglable gpg encryption of topics, with +niceties like support for symmetric and key-pair modes, passphrase timeout, +passphrase consistency checking, user-provided hinting for symmetric key +mode, and auto-encryption of topics pending encryption on save. The aim is +to enable reliable topic privacy while preventing accidents like neglected +encryption, encryption with a mistaken passphrase, forgetting which +passphrase was used, and other practical pitfalls. + +See the `allout-toggle-current-subtree-encryption' function and +`allout-encrypt-unencrypted-on-saves' customization variable for details. + + HOT-SPOT Operation + +Hot-spot operation provides a means for easy, single-keystroke outline +navigation and exposure control. + +\\<allout-mode-map> +When the text cursor is positioned directly on the bullet character of +a topic, regular characters (a to z) invoke the commands of the +corresponding allout-mode keymap control chars. For example, \"f\" +would invoke the command typically bound to \"C-c C-f\" +\(\\[allout-forward-current-level] `allout-forward-current-level'). + +Thus, by positioning the cursor on a topic bullet, you can execute +the outline navigation and manipulation commands with a single +keystroke. Non-literal chars never get this special translation, so +you can use them to get away from the hot-spot, and back to normal +operation. + +Note that the command `allout-beginning-of-current-entry' (\\[allout-beginning-of-current-entry]) +will move to the hot-spot when the cursor is already located at the +beginning of the current entry, so you can simply hit \\[allout-beginning-of-current-entry] +twice in a row to get to the hot-spot. + + Terminology + +Topic hierarchy constituents - TOPICS and SUBTOPICS: + +TOPIC: A basic, coherent component of an Emacs outline. It can + contain other topics, and it can be subsumed by other topics, +CURRENT topic: + The visible topic most immediately containing the cursor. +DEPTH: The degree of nesting of a topic; it increases with + containment. Also called the: +LEVEL: The same as DEPTH. + +ANCESTORS: + The topics that contain a topic. +PARENT: A topic's immediate ancestor. It has a depth one less than + the topic. +OFFSPRING: + The topics contained by a topic; +SUBTOPIC: + An immediate offspring of a topic; +CHILDREN: + The immediate offspring of a topic. +SIBLINGS: + Topics having the same parent and depth. + +Topic text constituents: + +HEADER: The first line of a topic, include the topic PREFIX and header + text. +PREFIX: The leading text of a topic which distinguishes it from normal + text. It has a strict form, which consists of a prefix-lead + string, padding, and a bullet. The bullet may be followed by a + number, indicating the ordinal number of the topic among its + siblings, a space, and then the header text. + + The relative length of the PREFIX determines the nesting depth + of the topic. +PREFIX-LEAD: + The string at the beginning of a topic prefix, normally a `.'. + It can be customized by changing the setting of + `allout-header-prefix' and then reinitializing `allout-mode'. + + By setting the prefix-lead to the comment-string of a + programming language, you can embed outline structuring in + program code without interfering with the language processing + of that code. See `allout-use-mode-specific-leader' + docstring for more detail. +PREFIX-PADDING: + Spaces or asterisks which separate the prefix-lead and the + bullet, according to the depth of the topic. +BULLET: A character at the end of the topic prefix, it must be one of + the characters listed on `allout-plain-bullets-string' or + `allout-distinctive-bullets-string'. (See the documentation + for these variables for more details.) The default choice of + bullet when generating varies in a cycle with the depth of the + topic. +ENTRY: The text contained in a topic before any offspring. +BODY: Same as ENTRY. + + +EXPOSURE: + The state of a topic which determines the on-screen visibility + of its offspring and contained text. +CONCEALED: + Topics and entry text whose display is inhibited. Contiguous + units of concealed text is represented by `...' ellipses. + (Ref the `selective-display' var.) + + Concealed topics are effectively collapsed within an ancestor. +CLOSED: A topic whose immediate offspring and body-text is concealed. +OPEN: A topic that is not closed, though its offspring or body may be. + +\(fn &optional TOGGLE)" t nil) + +(defalias (quote outlinify-sticky) (quote outlineify-sticky)) + +(autoload (quote outlineify-sticky) "allout" "\ +Activate outline mode and establish file var so it is started subsequently. + +See doc-string for `allout-layout' and `allout-init' for details on +setup for auto-startup. + +\(fn &optional ARG)" t nil) ;;;*** ;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp" -;;;;;; "net/ange-ftp.el" (17178 22151)) +;;;;;; "net/ange-ftp.el" (17254 63791)) ;;; Generated autoloads from net/ange-ftp.el (defalias (quote ange-ftp-re-read-dir) (quote ange-ftp-reread-dir)) @@ -535,7 +716,7 @@ ;;;*** ;;;### (autoloads (animate-birthday-present animate-sequence animate-string) -;;;;;; "animate" "play/animate.el" (17178 22152)) +;;;;;; "animate" "play/animate.el" (17226 24576)) ;;; Generated autoloads from play/animate.el (autoload (quote animate-string) "animate" "\ @@ -563,7 +744,7 @@ ;;;*** ;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on) -;;;;;; "ansi-color" "ansi-color.el" (17178 22141)) +;;;;;; "ansi-color" "ansi-color.el" (17187 59901)) ;;; Generated autoloads from ansi-color.el (autoload (quote ansi-color-for-comint-mode-on) "ansi-color" "\ @@ -589,7 +770,7 @@ ;;;*** ;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules) -;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (17178 22152)) +;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (17187 59902)) ;;; Generated autoloads from progmodes/antlr-mode.el (autoload (quote antlr-show-makefile-rules) "antlr-mode" "\ @@ -628,7 +809,7 @@ ;;;### (autoloads (appt-activate appt-make-list appt-delete appt-add ;;;;;; appt-display-diary appt-display-duration appt-display-mode-line ;;;;;; appt-msg-window appt-visible appt-audible appt-message-warning-time -;;;;;; appt-issue-message) "appt" "calendar/appt.el" (17178 20480)) +;;;;;; appt-issue-message) "appt" "calendar/appt.el" (17229 28052)) ;;; Generated autoloads from calendar/appt.el (defvar appt-issue-message t "\ @@ -716,7 +897,7 @@ ;;;### (autoloads (apropos-documentation apropos-value apropos apropos-documentation-property ;;;;;; apropos-command apropos-variable) "apropos" "apropos.el" -;;;;;; (17178 22141)) +;;;;;; (17226 24570)) ;;; Generated autoloads from apropos.el (autoload (quote apropos-variable) "apropos" "\ @@ -770,8 +951,8 @@ ;;;*** -;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (17178 -;;;;;; 22141)) +;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (17238 +;;;;;; 21257)) ;;; Generated autoloads from arc-mode.el (autoload (quote archive-mode) "arc-mode" "\ @@ -791,7 +972,7 @@ ;;;*** -;;;### (autoloads (array-mode) "array" "array.el" (17178 22141)) +;;;### (autoloads (array-mode) "array" "array.el" (17187 59901)) ;;; Generated autoloads from array.el (autoload (quote array-mode) "array" "\ @@ -862,8 +1043,8 @@ ;;;*** -;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (17178 -;;;;;; 22154)) +;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (17229 +;;;;;; 28057)) ;;; Generated autoloads from textmodes/artist.el (autoload (quote artist-mode) "artist" "\ @@ -1068,8 +1249,8 @@ ;;;*** -;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from progmodes/asm-mode.el (autoload (quote asm-mode) "asm-mode" "\ @@ -1097,7 +1278,7 @@ ;;;*** ;;;### (autoloads (auto-show-mode auto-show-mode) "auto-show" "obsolete/auto-show.el" -;;;;;; (17178 20481)) +;;;;;; (17187 59881)) ;;; Generated autoloads from obsolete/auto-show.el (defvar auto-show-mode nil "\ @@ -1113,7 +1294,7 @@ ;;;*** ;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el" -;;;;;; (17178 22141)) +;;;;;; (17187 59901)) ;;; Generated autoloads from autoarg.el (defvar autoarg-mode nil "\ @@ -1170,7 +1351,7 @@ ;;;*** ;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/autoconf.el (autoload (quote autoconf-mode) "autoconf" "\ @@ -1181,7 +1362,7 @@ ;;;*** ;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert) -;;;;;; "autoinsert" "autoinsert.el" (17178 22141)) +;;;;;; "autoinsert" "autoinsert.el" (17187 59901)) ;;; Generated autoloads from autoinsert.el (autoload (quote auto-insert) "autoinsert" "\ @@ -1221,7 +1402,7 @@ ;;;### (autoloads (batch-update-autoloads update-directory-autoloads ;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el" -;;;;;; (17178 22143)) +;;;;;; (17229 28053)) ;;; Generated autoloads from emacs-lisp/autoload.el (autoload (quote update-file-autoloads) "autoload" "\ @@ -1236,7 +1417,7 @@ (autoload (quote update-directory-autoloads) "autoload" "\ Update loaddefs.el with all the current autoloads from DIRS, and no old ones. -This uses `update-file-autoloads' (which see) do its work. +This uses `update-file-autoloads' (which see) to do its work. In an interactive call, you must give one argument, the name of a single directory. In a call from Lisp, you can supply multiple directories as separate arguments, but this usage is discouraged. @@ -1256,7 +1437,7 @@ ;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode ;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode) -;;;;;; "autorevert" "autorevert.el" (17178 22141)) +;;;;;; "autorevert" "autorevert.el" (17187 59901)) ;;; Generated autoloads from autorevert.el (autoload (quote auto-revert-mode) "autorevert" "\ @@ -1326,7 +1507,7 @@ ;;;*** ;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid" -;;;;;; "avoid.el" (17178 22141)) +;;;;;; "avoid.el" (17187 59901)) ;;; Generated autoloads from avoid.el (defvar mouse-avoidance-mode nil "\ @@ -1367,7 +1548,7 @@ ;;;*** ;;;### (autoloads (backquote) "backquote" "emacs-lisp/backquote.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/backquote.el (autoload (quote backquote) "backquote" "\ @@ -1392,7 +1573,7 @@ ;;;*** ;;;### (autoloads (display-battery-mode battery) "battery" "battery.el" -;;;;;; (17178 22141)) +;;;;;; (17187 59901)) ;;; Generated autoloads from battery.el (put 'battery-mode-line-string 'risky-local-variable t) @@ -1425,7 +1606,7 @@ ;;;*** ;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run) -;;;;;; "benchmark" "emacs-lisp/benchmark.el" (17178 22143)) +;;;;;; "benchmark" "emacs-lisp/benchmark.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/benchmark.el (autoload (quote benchmark-run) "benchmark" "\ @@ -1457,8 +1638,8 @@ ;;;*** -;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (17178 -;;;;;; 22154)) +;;;### (autoloads (bibtex-mode) "bibtex" "textmodes/bibtex.el" (17238 +;;;;;; 21257)) ;;; Generated autoloads from textmodes/bibtex.el (autoload (quote bibtex-mode) "bibtex" "\ @@ -1520,7 +1701,7 @@ ;;;### (autoloads (binhex-decode-region binhex-decode-region-external ;;;;;; binhex-decode-region-internal) "binhex" "gnus/binhex.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/binhex.el (defconst binhex-begin-line "^:...............................................................$") @@ -1543,8 +1724,8 @@ ;;;*** -;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from play/blackbox.el (autoload (quote blackbox) "blackbox" "\ @@ -1666,7 +1847,7 @@ ;;;### (autoloads (bookmark-bmenu-list bookmark-load bookmark-save ;;;;;; bookmark-write bookmark-delete bookmark-insert bookmark-rename ;;;;;; bookmark-insert-location bookmark-relocate bookmark-jump -;;;;;; bookmark-set) "bookmark" "bookmark.el" (17178 22141)) +;;;;;; bookmark-set) "bookmark" "bookmark.el" (17244 4913)) ;;; Generated autoloads from bookmark.el (define-key ctl-x-map "rb" 'bookmark-jump) (define-key ctl-x-map "rm" 'bookmark-set) @@ -1856,7 +2037,7 @@ ;;;;;; browse-url browse-url-of-region browse-url-of-dired-file ;;;;;; browse-url-of-buffer browse-url-of-file browse-url-url-at-point ;;;;;; browse-url-galeon-program browse-url-firefox-program browse-url-browser-function) -;;;;;; "browse-url" "net/browse-url.el" (17178 22151)) +;;;;;; "browse-url" "net/browse-url.el" (17187 59902)) ;;; Generated autoloads from net/browse-url.el (defvar browse-url-browser-function (cond ((memq system-type (quote (windows-nt ms-dos cygwin))) (quote browse-url-default-windows-browser)) ((memq system-type (quote (darwin))) (quote browse-url-default-macosx-browser)) (t (quote browse-url-default-browser))) "\ @@ -2187,8 +2368,8 @@ ;;;*** -;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from play/bruce.el (autoload (quote bruce) "bruce" "\ @@ -2204,7 +2385,7 @@ ;;;*** ;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next) -;;;;;; "bs" "bs.el" (17178 22141)) +;;;;;; "bs" "bs.el" (17187 59901)) ;;; Generated autoloads from bs.el (autoload (quote bs-cycle-next) "bs" "\ @@ -2245,8 +2426,8 @@ ;;;*** ;;;### (autoloads (insert-text-button make-text-button insert-button -;;;;;; make-button define-button-type) "button" "button.el" (17178 -;;;;;; 22141)) +;;;;;; make-button define-button-type) "button" "button.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from button.el (defvar button-map (let ((map (make-sparse-keymap))) (define-key map " " (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\ @@ -2334,7 +2515,7 @@ ;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile ;;;;;; compile-defun byte-compile-file byte-recompile-directory ;;;;;; byte-force-recompile) "bytecomp" "emacs-lisp/bytecomp.el" -;;;;;; (17178 22144)) +;;;;;; (17254 63790)) ;;; Generated autoloads from emacs-lisp/bytecomp.el (autoload (quote byte-force-recompile) "bytecomp" "\ @@ -2426,7 +2607,7 @@ ;;;*** -;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (17178 20480)) +;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (17187 59880)) ;;; Generated autoloads from calendar/cal-dst.el (put (quote calendar-daylight-savings-starts) (quote risky-local-variable) t) @@ -2436,7 +2617,7 @@ ;;;*** ;;;### (autoloads (list-yahrzeit-dates) "cal-hebrew" "calendar/cal-hebrew.el" -;;;;;; (17178 22142)) +;;;;;; (17187 59901)) ;;; Generated autoloads from calendar/cal-hebrew.el (autoload (quote list-yahrzeit-dates) "cal-hebrew" "\ @@ -2451,7 +2632,7 @@ ;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle ;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc ;;;;;; full-calc calc calc-dispatch calc-settings-file) "calc" "calc/calc.el" -;;;;;; (17178 22142)) +;;;;;; (17229 28052)) ;;; Generated autoloads from calc/calc.el (defvar calc-settings-file (convert-standard-filename "~/.calc.el") "\ @@ -2529,8 +2710,8 @@ ;;;*** -;;;### (autoloads (calculator) "calculator" "calculator.el" (17178 -;;;;;; 22142)) +;;;### (autoloads (calculator) "calculator" "calculator.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from calculator.el (autoload (quote calculator) "calculator" "\ @@ -2557,8 +2738,8 @@ ;;;;;; all-christian-calendar-holidays all-hebrew-calendar-holidays ;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially ;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar -;;;;;; number-of-diary-entries view-diary-entries-initially calendar-offset) -;;;;;; "calendar" "calendar/calendar.el" (17178 22143)) +;;;;;; view-diary-entries-initially calendar-offset) "calendar" +;;;;;; "calendar/calendar.el" (17229 28052)) ;;; Generated autoloads from calendar/calendar.el (defvar calendar-offset 0 "\ @@ -2578,26 +2759,6 @@ (custom-autoload (quote view-diary-entries-initially) "calendar") -(defvar number-of-diary-entries 1 "\ -*Specifies how many days of diary entries are to be displayed initially. -This variable affects the diary display when the command \\[diary] is used, -or if the value of the variable `view-diary-entries-initially' is t. For -example, if the default value 1 is used, then only the current day's diary -entries will be displayed. If the value 2 is used, then both the current -day's and the next day's entries will be displayed. - -The value can also be a vector such as [0 2 2 2 2 4 1]; this value -says to display no diary entries on Sunday, the display the entries -for the current date and the day after on Monday through Thursday, -display Friday through Monday's entries on Friday, and display only -Saturday's entries on Saturday. - -This variable does not affect the diary display with the `d' command -from the calendar; in that case, the prefix argument controls the -number of days of diary entries displayed.") - -(custom-autoload (quote number-of-diary-entries) "calendar") - (defvar mark-diary-entries-in-calendar nil "\ *Non-nil means mark dates with diary entries, in the calendar window. The marking symbol is specified by the variable `diary-entry-marker'.") @@ -2709,7 +2870,7 @@ For example, - (add-hook 'calendar-move-hook (lambda () (view-diary-entries 1))) + (add-hook 'calendar-move-hook (lambda () (diary-view-entries 1))) redisplays the diary for whatever date the cursor is moved to.") @@ -3149,7 +3310,7 @@ ;;;*** ;;;### (autoloads (canlock-verify canlock-insert-header) "canlock" -;;;;;; "gnus/canlock.el" (17178 22145)) +;;;;;; "gnus/canlock.el" (17187 59901)) ;;; Generated autoloads from gnus/canlock.el (autoload (quote canlock-insert-header) "canlock" "\ @@ -3167,7 +3328,7 @@ ;;;*** ;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/cc-engine.el (autoload (quote c-guess-basic-syntax) "cc-engine" "\ @@ -3180,7 +3341,7 @@ ;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode ;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el" -;;;;;; (17178 22152)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/cc-mode.el (autoload (quote c-initialize-cc-mode) "cc-mode" "\ @@ -3338,7 +3499,7 @@ ;;;*** ;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles" -;;;;;; "progmodes/cc-styles.el" (17178 22152)) +;;;;;; "progmodes/cc-styles.el" (17226 24577)) ;;; Generated autoloads from progmodes/cc-styles.el (autoload (quote c-set-style) "cc-styles" "\ @@ -3395,7 +3556,7 @@ ;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program ;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el" -;;;;;; (17178 20480)) +;;;;;; (17187 59880)) ;;; Generated autoloads from international/ccl.el (autoload (quote ccl-compile) "ccl" "\ @@ -3654,7 +3815,7 @@ ;;;*** ;;;### (autoloads (cfengine-mode) "cfengine" "progmodes/cfengine.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/cfengine.el (autoload (quote cfengine-mode) "cfengine" "\ @@ -3676,7 +3837,7 @@ ;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer ;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive ;;;;;; checkdoc-interactive checkdoc) "checkdoc" "emacs-lisp/checkdoc.el" -;;;;;; (17178 22144)) +;;;;;; (17226 24574)) ;;; Generated autoloads from emacs-lisp/checkdoc.el (autoload (quote checkdoc) "checkdoc" "\ @@ -3859,8 +4020,8 @@ ;;;*** ;;;### (autoloads (encode-hz-buffer encode-hz-region decode-hz-buffer -;;;;;; decode-hz-region) "china-util" "language/china-util.el" (17178 -;;;;;; 20481)) +;;;;;; decode-hz-region) "china-util" "language/china-util.el" (17187 +;;;;;; 59881)) ;;; Generated autoloads from language/china-util.el (autoload (quote decode-hz-region) "china-util" "\ @@ -3888,7 +4049,7 @@ ;;;*** ;;;### (autoloads (command-history list-command-history repeat-matching-complex-command) -;;;;;; "chistory" "chistory.el" (17178 22143)) +;;;;;; "chistory" "chistory.el" (17187 59901)) ;;; Generated autoloads from chistory.el (autoload (quote repeat-matching-complex-command) "chistory" "\ @@ -3927,7 +4088,7 @@ ;;;*** -;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (17178 22144)) +;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/cl.el (defvar custom-print-functions nil "\ @@ -3943,7 +4104,7 @@ ;;;*** ;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/cl-indent.el (autoload (quote common-lisp-indent-function) "cl-indent" "\ @@ -3954,7 +4115,7 @@ ;;;*** ;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el" -;;;;;; (17178 22153)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/cmacexp.el (autoload (quote c-macro-expand) "cmacexp" "\ @@ -3974,8 +4135,8 @@ ;;;*** -;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (17178 -;;;;;; 22143)) +;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from cmuscheme.el (autoload (quote run-scheme) "cmuscheme" "\ @@ -3996,7 +4157,7 @@ ;;;*** ;;;### (autoloads (cp-make-coding-system) "code-pages" "international/code-pages.el" -;;;;;; (17178 22146)) +;;;;;; (17226 24576)) ;;; Generated autoloads from international/code-pages.el (autoload (quote cp-make-coding-system) "code-pages" "\ @@ -4049,7 +4210,7 @@ ;;;### (autoloads (codepage-setup cp-supported-codepages cp-offset-for-codepage ;;;;;; cp-language-for-codepage cp-charset-for-codepage cp-make-coding-systems-for-codepage) -;;;;;; "codepage" "international/codepage.el" (17178 20480)) +;;;;;; "codepage" "international/codepage.el" (17226 24576)) ;;; Generated autoloads from international/codepage.el (autoload (quote cp-make-coding-systems-for-codepage) "codepage" "\ @@ -4108,7 +4269,7 @@ ;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list ;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command ;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" -;;;;;; (17178 22143)) +;;;;;; (17226 24571)) ;;; Generated autoloads from comint.el (defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\ @@ -4198,8 +4359,8 @@ ;;;*** -;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17178 -;;;;;; 22143)) +;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from compare-w.el (autoload (quote compare-windows) "compare-w" "\ @@ -4234,9 +4395,9 @@ ;;;### (autoloads (compilation-next-error-function compilation-minor-mode ;;;;;; compilation-shell-minor-mode compilation-mode compilation-start -;;;;;; compile compilation-search-path compilation-ask-about-save -;;;;;; compilation-window-height compilation-mode-hook) "compile" -;;;;;; "progmodes/compile.el" (17178 22153)) +;;;;;; compile compilation-disable-input compile-command compilation-search-path +;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook) +;;;;;; "compile" "progmodes/compile.el" (17238 21257)) ;;; Generated autoloads from progmodes/compile.el (defvar compilation-mode-hook nil "\ @@ -4286,6 +4447,29 @@ (custom-autoload (quote compilation-search-path) "compile") +(defvar compile-command "make -k " "\ +*Last shell command used to do a compilation; default for next compilation. + +Sometimes it is useful for files to supply local values for this variable. +You might also use mode hooks to specify it in certain modes, like this: + + (add-hook 'c-mode-hook + (lambda () + (unless (or (file-exists-p \"makefile\") + (file-exists-p \"Makefile\")) + (set (make-local-variable 'compile-command) + (concat \"make -k \" + (file-name-sans-extension buffer-file-name))))))") + +(custom-autoload (quote compile-command) "compile") + +(defvar compilation-disable-input nil "\ +*If non-nil, send end-of-file as compilation process input. +This only affects platforms that support asynchronous processes (see +`start-process'); synchronous compilation processes never accept input.") + +(custom-autoload (quote compilation-disable-input) "compile") + (autoload (quote compile) "compile" "\ Compile the program including the current buffer. Default: run `make'. Runs COMMAND, a shell command, in a separate process asynchronously @@ -4374,7 +4558,7 @@ ;;;*** ;;;### (autoloads (partial-completion-mode) "complete" "complete.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59901)) ;;; Generated autoloads from complete.el (defvar partial-completion-mode nil "\ @@ -4411,7 +4595,7 @@ ;;;*** ;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el" -;;;;;; (17178 22143)) +;;;;;; (17226 24571)) ;;; Generated autoloads from completion.el (autoload (quote dynamic-completion-mode) "completion" "\ @@ -4424,7 +4608,7 @@ ;;;### (autoloads (decompose-composite-char compose-last-chars compose-chars-after ;;;;;; find-composition compose-chars decompose-string compose-string ;;;;;; decompose-region compose-region encode-composition-rule) -;;;;;; "composite" "composite.el" (17178 22143)) +;;;;;; "composite" "composite.el" (17187 59901)) ;;; Generated autoloads from composite.el (defconst reference-point-alist (quote ((tl . 0) (tc . 1) (tr . 2) (Bl . 3) (Bc . 4) (Br . 5) (bl . 6) (bc . 7) (br . 8) (cl . 9) (cc . 10) (cr . 11) (top-left . 0) (top-center . 1) (top-right . 2) (base-left . 3) (base-center . 4) (base-right . 5) (bottom-left . 6) (bottom-center . 7) (bottom-right . 8) (center-left . 9) (center-center . 10) (center-right . 11) (ml . 3) (mc . 10) (mr . 5) (mid-left . 3) (mid-center . 10) (mid-right . 5))) "\ @@ -4645,7 +4829,7 @@ ;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode ;;;;;; conf-space-mode conf-javaprop-mode conf-windows-mode conf-unix-mode -;;;;;; conf-mode) "conf-mode" "textmodes/conf-mode.el" (17178 22154)) +;;;;;; conf-mode) "conf-mode" "textmodes/conf-mode.el" (17238 21257)) ;;; Generated autoloads from textmodes/conf-mode.el (autoload (quote conf-mode) "conf-mode" "\ @@ -4686,7 +4870,7 @@ Comments start with `#'. For details see `conf-mode'. Example: -# Conf mode font-locks this right on Unix and with C-c C-u +# Conf mode font-locks this right on Unix and with \\[conf-unix-mode] \[Desktop Entry] Encoding=UTF-8 @@ -4701,7 +4885,7 @@ Comments start with `;'. For details see `conf-mode'. Example: -; Conf mode font-locks this right on Windows and with C-c C-w +; Conf mode font-locks this right on Windows and with \\[conf-windows-mode] \[ExtShellFolderViews] Default={5984FFE0-28D4-11CF-AE66-08002B2E1262} @@ -4718,7 +4902,7 @@ between `/*' and `*/'. For details see `conf-mode'. Example: -# Conf mode font-locks this right with C-c C-j (Java properties) +# Conf mode font-locks this right with \\[conf-javaprop-mode] (Java properties) // another kind of comment /* yet another */ @@ -4742,7 +4926,7 @@ For details see `conf-mode'. Example: -# Conf mode font-locks this right with C-c C-s (space separated) +# Conf mode font-locks this right with \\[conf-space-mode] (space separated) image/jpeg jpeg jpg jpe image/png png @@ -4761,7 +4945,7 @@ \"Assignments\" are with `:'. For details see `conf-mode'. Example: -# Conf mode font-locks this right with C-c C-c (colon) +# Conf mode font-locks this right with \\[conf-colon-mode] (colon) <Multi_key> <exclam> <exclam> : \"\\241\" exclamdown <Multi_key> <c> <slash> : \"\\242\" cent @@ -4773,7 +4957,7 @@ Comments start with `*%' and \"assignments\" are with `:'. For details see `conf-mode'. Example: -*% Conf mode font-locks this right with C-c C-p (PPD) +*% Conf mode font-locks this right with \\[conf-ppd-mode] (PPD) *DefaultTransfer: Null *Transfer Null.Inverse: \"{ 1 exch sub }\" @@ -4785,7 +4969,7 @@ Comments start with `!' and \"assignments\" are with `:'. For details see `conf-mode'. Example: -! Conf mode font-locks this right with C-c C-x (.Xdefaults) +! Conf mode font-locks this right with \\[conf-xdefaults-mode] (.Xdefaults) *background: gray99 *foreground: black @@ -4795,7 +4979,7 @@ ;;;*** ;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) -;;;;;; "cookie1" "play/cookie1.el" (17178 22152)) +;;;;;; "cookie1" "play/cookie1.el" (17187 59902)) ;;; Generated autoloads from play/cookie1.el (autoload (quote cookie) "cookie1" "\ @@ -4827,7 +5011,7 @@ ;;;*** ;;;### (autoloads (copyright copyright-fix-years copyright-update) -;;;;;; "copyright" "emacs-lisp/copyright.el" (17178 22144)) +;;;;;; "copyright" "emacs-lisp/copyright.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/copyright.el (autoload (quote copyright-update) "copyright" "\ @@ -4855,7 +5039,7 @@ ;;;*** ;;;### (autoloads (cperl-mode) "cperl-mode" "progmodes/cperl-mode.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/cperl-mode.el (autoload (quote cperl-mode) "cperl-mode" "\ @@ -5028,7 +5212,7 @@ ;;;*** ;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/cpp.el (autoload (quote cpp-highlight-buffer) "cpp" "\ @@ -5047,7 +5231,7 @@ ;;;*** ;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emulation/crisp.el (defvar crisp-mode nil "\ @@ -5071,7 +5255,7 @@ ;;;*** ;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/crm.el (autoload (quote completing-read-multiple) "crm" "\ @@ -5107,7 +5291,7 @@ ;;;*** ;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el" -;;;;;; (17178 24780)) +;;;;;; (17251 25141)) ;;; Generated autoloads from emulation/cua-base.el (defvar cua-mode nil "\ @@ -5169,7 +5353,7 @@ ;;;;;; customize-face customize-changed-options customize-option-other-window ;;;;;; customize-option customize-group-other-window customize-group ;;;;;; customize-mode customize customize-save-variable customize-set-variable -;;;;;; customize-set-value) "cus-edit" "cus-edit.el" (17178 22143)) +;;;;;; customize-set-value) "cus-edit" "cus-edit.el" (17254 63790)) ;;; Generated autoloads from cus-edit.el (add-hook 'same-window-regexps "\\`\\*Customiz.*\\*\\'") @@ -5424,7 +5608,7 @@ ;;;*** ;;;### (autoloads (custom-reset-faces custom-theme-reset-faces custom-set-faces -;;;;;; custom-declare-face) "cus-face" "cus-face.el" (17178 22143)) +;;;;;; custom-declare-face) "cus-face" "cus-face.el" (17244 4913)) ;;; Generated autoloads from cus-face.el (autoload (quote custom-declare-face) "cus-face" "\ @@ -5494,7 +5678,7 @@ ;;;*** ;;;### (autoloads (customize-create-theme) "cus-theme" "cus-theme.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59914)) ;;; Generated autoloads from cus-theme.el (autoload (quote customize-create-theme) "cus-theme" "\ @@ -5505,7 +5689,7 @@ ;;;*** ;;;### (autoloads (cvs-status-mode) "cvs-status" "cvs-status.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59901)) ;;; Generated autoloads from cvs-status.el (autoload (quote cvs-status-mode) "cvs-status" "\ @@ -5516,7 +5700,7 @@ ;;;*** ;;;### (autoloads (global-cwarn-mode turn-on-cwarn-mode cwarn-mode) -;;;;;; "cwarn" "progmodes/cwarn.el" (17178 22153)) +;;;;;; "cwarn" "progmodes/cwarn.el" (17187 59902)) ;;; Generated autoloads from progmodes/cwarn.el (autoload (quote cwarn-mode) "cwarn" "\ @@ -5560,7 +5744,7 @@ ;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char ;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el" -;;;;;; (17178 20481)) +;;;;;; (17187 59881)) ;;; Generated autoloads from language/cyril-util.el (autoload (quote cyrillic-encode-koi8-r-char) "cyril-util" "\ @@ -5589,7 +5773,7 @@ ;;;*** ;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el" -;;;;;; (17178 22143)) +;;;;;; (17238 21257)) ;;; Generated autoloads from dabbrev.el (define-key esc-map "/" 'dabbrev-expand) (define-key esc-map [?\C-/] 'dabbrev-completion) @@ -5636,8 +5820,8 @@ ;;;*** -;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from progmodes/dcl-mode.el (autoload (quote dcl-mode) "dcl-mode" "\ @@ -5764,7 +5948,7 @@ ;;;*** ;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug" -;;;;;; "emacs-lisp/debug.el" (17178 22144)) +;;;;;; "emacs-lisp/debug.el" (17254 63790)) ;;; Generated autoloads from emacs-lisp/debug.el (setq debugger (quote debug)) @@ -5808,7 +5992,7 @@ ;;;*** ;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el" -;;;;;; (17178 22152)) +;;;;;; (17226 24576)) ;;; Generated autoloads from play/decipher.el (autoload (quote decipher) "decipher" "\ @@ -5837,8 +6021,8 @@ ;;;*** ;;;### (autoloads (delimit-columns-rectangle delimit-columns-region -;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (17178 -;;;;;; 22143)) +;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from delim-col.el (autoload (quote delimit-columns-customize) "delim-col" "\ @@ -5862,8 +6046,8 @@ ;;;*** -;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (17187 +;;;;;; 59914)) ;;; Generated autoloads from progmodes/delphi.el (autoload (quote delphi-mode) "delphi" "\ @@ -5913,8 +6097,8 @@ ;;;*** -;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (17178 -;;;;;; 22143)) +;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from delsel.el (defalias (quote pending-delete-mode) (quote delete-selection-mode)) @@ -5944,7 +6128,7 @@ ;;;*** ;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode) -;;;;;; "derived" "emacs-lisp/derived.el" (17178 22144)) +;;;;;; "derived" "emacs-lisp/derived.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/derived.el (autoload (quote define-derived-mode) "derived" "\ @@ -6009,7 +6193,7 @@ ;;;*** ;;;### (autoloads (describe-char describe-text-properties) "descr-text" -;;;;;; "descr-text.el" (17178 22143)) +;;;;;; "descr-text.el" (17187 59914)) ;;; Generated autoloads from descr-text.el (autoload (quote describe-text-properties) "descr-text" "\ @@ -6034,7 +6218,7 @@ ;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir ;;;;;; desktop-load-default desktop-read desktop-locals-to-save -;;;;;; desktop-save-mode) "desktop" "desktop.el" (17178 22143)) +;;;;;; desktop-save-mode) "desktop" "desktop.el" (17244 4913)) ;;; Generated autoloads from desktop.el (defvar desktop-save-mode nil "\ @@ -6199,7 +6383,7 @@ ;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines ;;;;;; gnus-outlook-display-hook gnus-outlook-deuglify-unwrap-max ;;;;;; gnus-outlook-deuglify-unwrap-min) "deuglify" "gnus/deuglify.el" -;;;;;; (17178 20480)) +;;;;;; (17187 59879)) ;;; Generated autoloads from gnus/deuglify.el (defvar gnus-outlook-deuglify-unwrap-min 45 "\ @@ -6248,7 +6432,7 @@ ;;;*** ;;;### (autoloads (devanagari-post-read-conversion devanagari-compose-region) -;;;;;; "devan-util" "language/devan-util.el" (17178 20481)) +;;;;;; "devan-util" "language/devan-util.el" (17187 59881)) ;;; Generated autoloads from language/devan-util.el (defconst devanagari-consonant "[\x51ad5-\x51af9\x51b38-\x51b3f]") @@ -6266,7 +6450,7 @@ ;;;*** ;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" -;;;;;; "calendar/diary-lib.el" (17178 22143)) +;;;;;; "calendar/diary-lib.el" (17229 28052)) ;;; Generated autoloads from calendar/diary-lib.el (autoload (quote diary) "diary-lib" "\ @@ -6312,7 +6496,7 @@ ;;;*** ;;;### (autoloads (diff-backup diff diff-command diff-switches) "diff" -;;;;;; "diff.el" (17178 22143)) +;;;;;; "diff.el" (17226 24572)) ;;; Generated autoloads from diff.el (defvar diff-switches "-c" "\ @@ -6346,7 +6530,7 @@ ;;;*** ;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el" -;;;;;; (17178 22143)) +;;;;;; (17238 21257)) ;;; Generated autoloads from diff-mode.el (autoload (quote diff-mode) "diff-mode" "\ @@ -6358,7 +6542,7 @@ headers for you on-the-fly. You can also switch between context diff and unified diff with \\[diff-context->unified], -or vice versa with \\[diff-unified->context] and you can also revert the direction of +or vice versa with \\[diff-unified->context] and you can also reverse the direction of a diff with \\[diff-reverse-direction]. \(fn)" t nil) @@ -6375,7 +6559,7 @@ ;;;;;; dired dired-copy-preserve-time dired-dwim-target dired-keep-marker-symlink ;;;;;; dired-keep-marker-hardlink dired-keep-marker-copy dired-keep-marker-rename ;;;;;; dired-trivial-filenames dired-ls-F-marks-symlinks dired-listing-switches) -;;;;;; "dired" "dired.el" (17178 22143)) +;;;;;; "dired" "dired.el" (17254 63790)) ;;; Generated autoloads from dired.el (defvar dired-listing-switches "-al" "\ @@ -6580,7 +6764,7 @@ ;;;;;; dired-run-shell-command dired-do-shell-command dired-clean-directory ;;;;;; dired-do-print dired-do-touch dired-do-chown dired-do-chgrp ;;;;;; dired-do-chmod dired-compare-directories dired-backup-diff -;;;;;; dired-diff) "dired-aux" "dired-aux.el" (17178 22143)) +;;;;;; dired-diff) "dired-aux" "dired-aux.el" (17226 24572)) ;;; Generated autoloads from dired-aux.el (autoload (quote dired-diff) "dired-aux" "\ @@ -6988,7 +7172,7 @@ ;;;*** -;;;### (autoloads (dired-jump) "dired-x" "dired-x.el" (17178 22143)) +;;;### (autoloads (dired-jump) "dired-x" "dired-x.el" (17254 63790)) ;;; Generated autoloads from dired-x.el (autoload (quote dired-jump) "dired-x" "\ @@ -7002,7 +7186,7 @@ ;;;*** -;;;### (autoloads (dirtrack) "dirtrack" "dirtrack.el" (17178 22143)) +;;;### (autoloads (dirtrack) "dirtrack" "dirtrack.el" (17187 59901)) ;;; Generated autoloads from dirtrack.el (autoload (quote dirtrack) "dirtrack" "\ @@ -7021,8 +7205,8 @@ ;;;*** -;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from emacs-lisp/disass.el (autoload (quote disassemble) "disass" "\ @@ -7040,7 +7224,7 @@ ;;;;;; standard-display-graphic standard-display-g1 standard-display-ascii ;;;;;; standard-display-default standard-display-8bit describe-current-display-table ;;;;;; describe-display-table set-display-table-slot display-table-slot -;;;;;; make-display-table) "disp-table" "disp-table.el" (17178 22143)) +;;;;;; make-display-table) "disp-table" "disp-table.el" (17244 4913)) ;;; Generated autoloads from disp-table.el (autoload (quote make-display-table) "disp-table" "\ @@ -7141,7 +7325,7 @@ ;;;*** ;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from play/dissociate.el (autoload (quote dissociated-press) "dissociate" "\ @@ -7157,7 +7341,7 @@ ;;;*** -;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (17178 22143)) +;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (17226 24572)) ;;; Generated autoloads from dnd.el (defvar dnd-protocol-alist (quote (("^file:///" . dnd-open-local-file) ("^file://" . dnd-open-file) ("^file:" . dnd-open-local-file))) "\ @@ -7178,7 +7362,7 @@ ;;;*** ;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode" -;;;;;; "textmodes/dns-mode.el" (17178 22154)) +;;;;;; "textmodes/dns-mode.el" (17187 59902)) ;;; Generated autoloads from textmodes/dns-mode.el (autoload (quote dns-mode) "dns-mode" "\ @@ -7201,7 +7385,7 @@ ;;;*** -;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17178 22152)) +;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17254 63791)) ;;; Generated autoloads from play/doctor.el (autoload (quote doctor) "doctor" "\ @@ -7212,7 +7396,7 @@ ;;;*** ;;;### (autoloads (double-mode double-mode) "double" "double.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59901)) ;;; Generated autoloads from double.el (defvar double-mode nil "\ @@ -7233,7 +7417,7 @@ ;;;*** -;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (17178 22152)) +;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (17187 59902)) ;;; Generated autoloads from play/dunnet.el (autoload (quote dunnet) "dunnet" "\ @@ -7244,7 +7428,7 @@ ;;;*** ;;;### (autoloads (gnus-earcon-display) "earcon" "gnus/earcon.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/earcon.el (autoload (quote gnus-earcon-display) "earcon" "\ @@ -7256,7 +7440,7 @@ ;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap ;;;;;; define-global-minor-mode define-minor-mode) "easy-mmode" -;;;;;; "emacs-lisp/easy-mmode.el" (17178 22144)) +;;;;;; "emacs-lisp/easy-mmode.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/easy-mmode.el (defalias (quote easy-mmode-define-minor-mode) (quote define-minor-mode)) @@ -7342,8 +7526,8 @@ ;;;*** ;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define -;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (17178 -;;;;;; 22144)) +;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from emacs-lisp/easymenu.el (put (quote easy-menu-define) (quote lisp-indent-function) (quote defun)) @@ -7488,7 +7672,7 @@ ;;;;;; ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ebnf-spool-file ;;;;;; ebnf-spool-directory ebnf-print-region ebnf-print-buffer ;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps" -;;;;;; "progmodes/ebnf2ps.el" (17178 20481)) +;;;;;; "progmodes/ebnf2ps.el" (17226 24577)) ;;; Generated autoloads from progmodes/ebnf2ps.el (autoload (quote ebnf-customize) "ebnf2ps" "\ @@ -7747,8 +7931,8 @@ ;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition ;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration ;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree -;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (17178 -;;;;;; 22153)) +;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (17226 +;;;;;; 24577)) ;;; Generated autoloads from progmodes/ebrowse.el (autoload (quote ebrowse-tree-mode) "ebrowse" "\ @@ -7899,7 +8083,7 @@ ;;;*** ;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59901)) ;;; Generated autoloads from ebuff-menu.el (autoload (quote electric-buffer-list) "ebuff-menu" "\ @@ -7924,7 +8108,7 @@ ;;;*** ;;;### (autoloads (Electric-command-history-redo-expression) "echistory" -;;;;;; "echistory.el" (17178 22143)) +;;;;;; "echistory.el" (17226 24572)) ;;; Generated autoloads from echistory.el (autoload (quote Electric-command-history-redo-expression) "echistory" "\ @@ -7936,7 +8120,7 @@ ;;;*** ;;;### (autoloads (edebug-eval-top-level-form def-edebug-spec edebug-all-forms -;;;;;; edebug-all-defs) "edebug" "emacs-lisp/edebug.el" (17178 22144)) +;;;;;; edebug-all-defs) "edebug" "emacs-lisp/edebug.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/edebug.el (defvar edebug-all-defs nil "\ @@ -7999,7 +8183,7 @@ ;;;;;; ediff-merge-directory-revisions ediff-merge-directories-with-ancestor ;;;;;; ediff-merge-directories ediff-directories3 ediff-directory-revisions ;;;;;; ediff-directories ediff-buffers3 ediff-buffers ediff-backup -;;;;;; ediff-files3 ediff-files) "ediff" "ediff.el" (17178 22143)) +;;;;;; ediff-files3 ediff-files) "ediff" "ediff.el" (17229 28053)) ;;; Generated autoloads from ediff.el (autoload (quote ediff-files) "ediff" "\ @@ -8237,7 +8421,7 @@ ;;;*** ;;;### (autoloads (ediff-customize) "ediff-help" "ediff-help.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59901)) ;;; Generated autoloads from ediff-help.el (autoload (quote ediff-customize) "ediff-help" "\ @@ -8247,7 +8431,7 @@ ;;;*** -;;;### (autoloads nil "ediff-hook" "ediff-hook.el" (17178 22143)) +;;;### (autoloads nil "ediff-hook" "ediff-hook.el" (17187 59901)) ;;; Generated autoloads from ediff-hook.el (defvar ediff-window-setup-function) @@ -8260,7 +8444,7 @@ ;;;*** ;;;### (autoloads (ediff-show-registry) "ediff-mult" "ediff-mult.el" -;;;;;; (17178 22143)) +;;;;;; (17229 28052)) ;;; Generated autoloads from ediff-mult.el (autoload (quote ediff-show-registry) "ediff-mult" "\ @@ -8273,7 +8457,7 @@ ;;;*** ;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe) -;;;;;; "ediff-util" "ediff-util.el" (17178 22143)) +;;;;;; "ediff-util" "ediff-util.el" (17229 28052)) ;;; Generated autoloads from ediff-util.el (autoload (quote ediff-toggle-multiframe) "ediff-util" "\ @@ -8294,7 +8478,7 @@ ;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro ;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el" -;;;;;; (17178 22143)) +;;;;;; (17251 25141)) ;;; Generated autoloads from edmacro.el (defvar edmacro-eight-bits nil "\ @@ -8347,7 +8531,7 @@ ;;;*** ;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt" -;;;;;; "emulation/edt.el" (17178 22144)) +;;;;;; "emulation/edt.el" (17187 59901)) ;;; Generated autoloads from emulation/edt.el (autoload (quote edt-set-scroll-margins) "edt" "\ @@ -8365,7 +8549,7 @@ ;;;*** ;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el" -;;;;;; (17178 22143)) +;;;;;; (17187 59901)) ;;; Generated autoloads from ehelp.el (autoload (quote with-electric-help) "ehelp" "\ @@ -8403,7 +8587,7 @@ ;;;*** ;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string) -;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17178 22144)) +;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17226 24574)) ;;; Generated autoloads from emacs-lisp/eldoc.el (defvar eldoc-minor-mode-string " ElDoc" "\ @@ -8441,8 +8625,8 @@ ;;;*** -;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (17178 -;;;;;; 22143)) +;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from elide-head.el (autoload (quote elide-head) "elide-head" "\ @@ -8458,7 +8642,7 @@ ;;;*** ;;;### (autoloads (elint-initialize) "elint" "emacs-lisp/elint.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/elint.el (autoload (quote elint-initialize) "elint" "\ @@ -8469,8 +8653,8 @@ ;;;*** ;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list -;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (17178 -;;;;;; 22144)) +;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from emacs-lisp/elp.el (autoload (quote elp-instrument-function) "elp" "\ @@ -8504,7 +8688,7 @@ ;;;*** ;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el" -;;;;;; (17178 22150)) +;;;;;; (17187 59901)) ;;; Generated autoloads from mail/emacsbug.el (autoload (quote report-emacs-bug) "emacsbug" "\ @@ -8519,7 +8703,7 @@ ;;;;;; emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote ;;;;;; emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor ;;;;;; emerge-buffers emerge-files-with-ancestor emerge-files) "emerge" -;;;;;; "emerge.el" (17178 22144)) +;;;;;; "emerge.el" (17187 59901)) ;;; Generated autoloads from emerge.el (defvar menu-bar-emerge-menu (make-sparse-keymap "Emerge")) @@ -8597,7 +8781,7 @@ ;;;*** ;;;### (autoloads (encoded-kbd-setup-display) "encoded-kb" "international/encoded-kb.el" -;;;;;; (17178 21353)) +;;;;;; (17251 25141)) ;;; Generated autoloads from international/encoded-kb.el (autoload (quote encoded-kbd-setup-display) "encoded-kb" "\ @@ -8610,7 +8794,7 @@ ;;;*** ;;;### (autoloads (enriched-decode enriched-encode enriched-mode) -;;;;;; "enriched" "textmodes/enriched.el" (17178 22154)) +;;;;;; "enriched" "textmodes/enriched.el" (17187 59902)) ;;; Generated autoloads from textmodes/enriched.el (autoload (quote enriched-mode) "enriched" "\ @@ -8640,8 +8824,8 @@ ;;;*** -;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from eshell/esh-mode.el (autoload (quote eshell-mode) "esh-mode" "\ @@ -8653,8 +8837,8 @@ ;;;*** -;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from eshell/esh-test.el (autoload (quote eshell-test) "esh-test" "\ @@ -8665,7 +8849,7 @@ ;;;*** ;;;### (autoloads (eshell-report-bug eshell-command-result eshell-command -;;;;;; eshell) "eshell" "eshell/eshell.el" (17178 22144)) +;;;;;; eshell) "eshell" "eshell/eshell.el" (17187 59901)) ;;; Generated autoloads from eshell/eshell.el (autoload (quote eshell) "eshell" "\ @@ -8708,10 +8892,10 @@ ;;;;;; tags-query-replace tags-search tags-loop-continue next-file ;;;;;; pop-tag-mark find-tag-regexp find-tag-other-frame find-tag-other-window ;;;;;; find-tag find-tag-noselect tags-table-files visit-tags-table-buffer -;;;;;; visit-tags-table find-tag-default-function find-tag-hook -;;;;;; tags-add-tables tags-compression-info-list tags-table-list -;;;;;; tags-case-fold-search) "etags" "progmodes/etags.el" (17178 -;;;;;; 22153)) +;;;;;; visit-tags-table tags-table-mode find-tag-default-function +;;;;;; find-tag-hook tags-add-tables tags-compression-info-list +;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el" +;;;;;; (17244 4914)) ;;; Generated autoloads from progmodes/etags.el (defvar tags-file-name nil "\ @@ -8769,6 +8953,11 @@ (custom-autoload (quote find-tag-default-function) "etags") +(autoload (quote tags-table-mode) "etags" "\ +Major mode for tags table file buffers. + +\(fn)" t nil) + (autoload (quote visit-tags-table) "etags" "\ Tell tags commands to use tags table file FILE. FILE should be the name of a file created with the `etags' program. @@ -9008,7 +9197,7 @@ ;;;;;; ethio-fidel-to-sera-buffer ethio-fidel-to-sera-region ethio-sera-to-fidel-marker ;;;;;; ethio-sera-to-fidel-mail ethio-sera-to-fidel-mail-or-marker ;;;;;; ethio-sera-to-fidel-buffer ethio-sera-to-fidel-region setup-ethiopic-environment-internal) -;;;;;; "ethio-util" "language/ethio-util.el" (17178 22147)) +;;;;;; "ethio-util" "language/ethio-util.el" (17187 59901)) ;;; Generated autoloads from language/ethio-util.el (autoload (quote setup-ethiopic-environment-internal) "ethio-util" "\ @@ -9203,7 +9392,7 @@ ;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline ;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from net/eudc.el (autoload (quote eudc-set-server) "eudc" "\ @@ -9259,7 +9448,7 @@ ;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline ;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary) -;;;;;; "eudc-bob" "net/eudc-bob.el" (17178 22151)) +;;;;;; "eudc-bob" "net/eudc-bob.el" (17187 59902)) ;;; Generated autoloads from net/eudc-bob.el (autoload (quote eudc-display-generic-binary) "eudc-bob" "\ @@ -9295,7 +9484,7 @@ ;;;*** ;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb) -;;;;;; "eudc-export" "net/eudc-export.el" (17178 22151)) +;;;;;; "eudc-export" "net/eudc-export.el" (17187 59902)) ;;; Generated autoloads from net/eudc-export.el (autoload (quote eudc-insert-record-at-point-into-bbdb) "eudc-export" "\ @@ -9312,7 +9501,7 @@ ;;;*** ;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from net/eudc-hotlist.el (autoload (quote eudc-edit-hotlist) "eudc-hotlist" "\ @@ -9325,7 +9514,7 @@ ;;;### (autoloads (executable-make-buffer-file-executable-if-script-p ;;;;;; executable-self-display executable-set-magic executable-interpret ;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/executable.el (autoload (quote executable-command-find-posix-p) "executable" "\ @@ -9367,7 +9556,7 @@ ;;;*** ;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot -;;;;;; expand-add-abbrevs) "expand" "expand.el" (17178 22144)) +;;;;;; expand-add-abbrevs) "expand" "expand.el" (17187 59901)) ;;; Generated autoloads from expand.el (autoload (quote expand-add-abbrevs) "expand" "\ @@ -9410,7 +9599,7 @@ ;;;*** -;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (17178 22153)) +;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (17229 28054)) ;;; Generated autoloads from progmodes/f90.el (autoload (quote f90-mode) "f90" "\ @@ -9465,8 +9654,6 @@ The possibilities are 'downcase-word, 'upcase-word, 'capitalize-word. `f90-leave-line-no' Do not left-justify line numbers (default nil). -`f90-keywords-re' - List of keywords used for highlighting/upcase-keywords etc. Turning on F90 mode calls the value of the variable `f90-mode-hook' with no args, if that value is non-nil. @@ -9479,7 +9666,7 @@ ;;;;;; facemenu-remove-all facemenu-remove-face-props facemenu-set-read-only ;;;;;; facemenu-set-intangible facemenu-set-invisible facemenu-set-face-from-menu ;;;;;; facemenu-set-background facemenu-set-foreground facemenu-set-face) -;;;;;; "facemenu" "facemenu.el" (17178 22144)) +;;;;;; "facemenu" "facemenu.el" (17187 59901)) ;;; Generated autoloads from facemenu.el (define-key global-map "\M-o" 'facemenu-keymap) (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap) @@ -9642,7 +9829,7 @@ ;;;*** ;;;### (autoloads (turn-on-fast-lock fast-lock-mode) "fast-lock" -;;;;;; "obsolete/fast-lock.el" (17178 22151)) +;;;;;; "obsolete/fast-lock.el" (17226 24576)) ;;; Generated autoloads from obsolete/fast-lock.el (autoload (quote fast-lock-mode) "fast-lock" "\ @@ -9683,7 +9870,7 @@ ;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue ;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts -;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (17178 20480)) +;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (17226 24576)) ;;; Generated autoloads from mail/feedmail.el (autoload (quote feedmail-send-it) "feedmail" "\ @@ -9737,7 +9924,7 @@ ;;;*** ;;;### (autoloads (ffap-bindings dired-at-point ffap-at-mouse ffap-menu -;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (17178 22144)) +;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (17238 21257)) ;;; Generated autoloads from ffap.el (autoload (quote ffap-next) "ffap" "\ @@ -9758,8 +9945,6 @@ See also the variables `ffap-dired-wildcards', `ffap-newfile-prompt', and the functions `ffap-file-at-point' and `ffap-url-at-point'. -See <ftp://ftp.mathcs.emory.edu/pub/mic/emacs/> for latest version. - \(fn &optional FILENAME)" t nil) (defalias (quote ffap) (quote find-file-at-point)) @@ -9796,7 +9981,7 @@ ;;;*** ;;;### (autoloads (file-cache-minibuffer-complete) "filecache" "filecache.el" -;;;;;; (17178 22144)) +;;;;;; (17238 21257)) ;;; Generated autoloads from filecache.el (autoload (quote file-cache-minibuffer-complete) "filecache" "\ @@ -9814,8 +9999,8 @@ ;;;*** -;;;### (autoloads (filesets-init) "filesets" "filesets.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (filesets-init) "filesets" "filesets.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from filesets.el (autoload (quote filesets-init) "filesets" "\ @@ -9828,7 +10013,7 @@ ;;;### (autoloads (find-grep-dired find-name-dired find-dired find-grep-options ;;;;;; find-ls-subdir-switches find-ls-option) "find-dired" "find-dired.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from find-dired.el (defvar find-ls-option (if (eq system-type (quote berkeley-unix)) (quote ("-ls" . "-gilsb")) (quote ("-exec ls -ld {} \\;" . "-ld"))) "\ @@ -9889,7 +10074,7 @@ ;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file ;;;;;; ff-find-other-file ff-get-other-file) "find-file" "find-file.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from find-file.el (defvar ff-special-constructs (quote (("^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]" lambda nil (setq fname (buffer-substring (match-beginning 2) (match-end 2)))))) "\ @@ -9981,7 +10166,7 @@ ;;;;;; find-variable find-variable-noselect find-function-other-frame ;;;;;; find-function-other-window find-function find-function-noselect ;;;;;; find-function-search-for-symbol find-library) "find-func" -;;;;;; "emacs-lisp/find-func.el" (17178 22144)) +;;;;;; "emacs-lisp/find-func.el" (17244 4913)) ;;; Generated autoloads from emacs-lisp/find-func.el (autoload (quote find-library) "find-func" "\ @@ -10130,7 +10315,7 @@ ;;;*** ;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories -;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (17178 22144)) +;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (17187 59901)) ;;; Generated autoloads from find-lisp.el (autoload (quote find-lisp-find-dired) "find-lisp" "\ @@ -10151,7 +10336,7 @@ ;;;*** ;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords) -;;;;;; "finder" "finder.el" (17178 22144)) +;;;;;; "finder" "finder.el" (17187 59901)) ;;; Generated autoloads from finder.el (autoload (quote finder-list-keywords) "finder" "\ @@ -10173,7 +10358,7 @@ ;;;*** ;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" -;;;;;; "flow-ctrl.el" (17178 22144)) +;;;;;; "flow-ctrl.el" (17187 59901)) ;;; Generated autoloads from flow-ctrl.el (autoload (quote enable-flow-control) "flow-ctrl" "\ @@ -10195,7 +10380,7 @@ ;;;*** ;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/flow-fill.el (autoload (quote fill-flowed-encode) "flow-fill" "\ @@ -10211,7 +10396,7 @@ ;;;*** ;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode) -;;;;;; "flymake" "progmodes/flymake.el" (17178 22153)) +;;;;;; "flymake" "progmodes/flymake.el" (17226 24577)) ;;; Generated autoloads from progmodes/flymake.el (autoload (quote flymake-mode) "flymake" "\ @@ -10235,7 +10420,7 @@ ;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off ;;;;;; flyspell-mode flyspell-prog-mode) "flyspell" "textmodes/flyspell.el" -;;;;;; (17178 22154)) +;;;;;; (17254 63791)) ;;; Generated autoloads from textmodes/flyspell.el (autoload (quote flyspell-prog-mode) "flyspell" "\ @@ -10294,7 +10479,7 @@ ;;;### (autoloads (follow-delete-other-windows-and-split follow-mode ;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el" -;;;;;; (17178 22144)) +;;;;;; (17196 27217)) ;;; Generated autoloads from follow.el (autoload (quote turn-on-follow-mode) "follow" "\ @@ -10370,9 +10555,129 @@ ;;;### (autoloads (font-lock-fontify-buffer font-lock-remove-keywords ;;;;;; font-lock-add-keywords font-lock-mode-internal) "font-lock" -;;;;;; "font-lock.el" (17178 22144)) +;;;;;; "font-lock.el" (17254 63790)) ;;; Generated autoloads from font-lock.el +(defvar font-lock-keywords nil "\ +A list of the keywords to highlight. +There are two kinds of values: user-level, and compiled. + +A user-level keywords list is what a major mode or the user would +set up. Normally the list would come from `font-lock-defaults'. +through selection of a fontification level and evaluation of any +contained expressions. You can also alter it by calling +`font-lock-add-keywords' or `font-lock-remove-keywords' with MODE = nil. + +Each element in a user-level keywords list should have one of these forms: + + MATCHER + (MATCHER . SUBEXP) + (MATCHER . FACENAME) + (MATCHER . HIGHLIGHT) + (MATCHER HIGHLIGHT ...) + (eval . FORM) + +where MATCHER can be either the regexp to search for, or the function name to +call to make the search (called with one argument, the limit of the search; +it should return non-nil, move point, and set `match-data' appropriately iff +it succeeds; like `re-search-forward' would). +MATCHER regexps can be generated via the function `regexp-opt'. + +FORM is an expression, whose value should be a keyword element, evaluated when +the keyword is (first) used in a buffer. This feature can be used to provide a +keyword that can only be generated when Font Lock mode is actually turned on. + +HIGHLIGHT should be either MATCH-HIGHLIGHT or MATCH-ANCHORED. + +For highlighting single items, for example each instance of the word \"foo\", +typically only MATCH-HIGHLIGHT is required. +However, if an item or (typically) items are to be highlighted following the +instance of another item (the anchor), for example each instance of the +word \"bar\" following the word \"anchor\" then MATCH-ANCHORED may be required. + +MATCH-HIGHLIGHT should be of the form: + + (SUBEXP FACENAME [OVERRIDE [LAXMATCH]]) + +SUBEXP is the number of the subexpression of MATCHER to be highlighted. + +FACENAME is an expression whose value is the face name to use. +Instead of a face, FACENAME can evaluate to a property list +of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) +in which case all the listed text-properties will be set rather than +just FACE. In such a case, you will most likely want to put those +properties in `font-lock-extra-managed-props' or to override +`font-lock-unfontify-region-function'. + +OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification can +be overwritten. If `keep', only parts not already fontified are highlighted. +If `prepend' or `append', existing fontification is merged with the new, in +which the new or existing fontification, respectively, takes precedence. +If LAXMATCH is non-nil, that means don't signal an error if there is +no match for SUBEXP in MATCHER. + +For example, an element of the form highlights (if not already highlighted): + + \"\\\\\\=<foo\\\\\\=>\" discrete occurrences of \"foo\" in the value of the + variable `font-lock-keyword-face'. + (\"fu\\\\(bar\\\\)\" . 1) substring \"bar\" within all occurrences of \"fubar\" in + the value of `font-lock-keyword-face'. + (\"fubar\" . fubar-face) Occurrences of \"fubar\" in the value of `fubar-face'. + (\"foo\\\\|bar\" 0 foo-bar-face t) + occurrences of either \"foo\" or \"bar\" in the value + of `foo-bar-face', even if already highlighted. + (fubar-match 1 fubar-face) + the first subexpression within all occurrences of + whatever the function `fubar-match' finds and matches + in the value of `fubar-face'. + +MATCH-ANCHORED should be of the form: + + (MATCHER PRE-MATCH-FORM POST-MATCH-FORM MATCH-HIGHLIGHT ...) + +where MATCHER is a regexp to search for or the function name to call to make +the search, as for MATCH-HIGHLIGHT above, but with one exception; see below. +PRE-MATCH-FORM and POST-MATCH-FORM are evaluated before the first, and after +the last, instance MATCH-ANCHORED's MATCHER is used. Therefore they can be +used to initialize before, and cleanup after, MATCHER is used. Typically, +PRE-MATCH-FORM is used to move to some position relative to the original +MATCHER, before starting with MATCH-ANCHORED's MATCHER. POST-MATCH-FORM might +be used to move back, before resuming with MATCH-ANCHORED's parent's MATCHER. + +For example, an element of the form highlights (if not already highlighted): + + (\"\\\\\\=<anchor\\\\\\=>\" (0 anchor-face) (\"\\\\\\=<item\\\\\\=>\" nil nil (0 item-face))) + + discrete occurrences of \"anchor\" in the value of `anchor-face', and subsequent + discrete occurrences of \"item\" (on the same line) in the value of `item-face'. + (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil. Therefore \"item\" is + initially searched for starting from the end of the match of \"anchor\", and + searching for subsequent instances of \"anchor\" resumes from where searching + for \"item\" concluded.) + +The above-mentioned exception is as follows. The limit of the MATCHER search +defaults to the end of the line after PRE-MATCH-FORM is evaluated. +However, if PRE-MATCH-FORM returns a position greater than the position after +PRE-MATCH-FORM is evaluated, that position is used as the limit of the search. +It is generally a bad idea to return a position greater than the end of the +line, i.e., cause the MATCHER search to span lines. + +These regular expressions can match text which spans lines, although +it is better to avoid it if possible since updating them while editing +text is slower, and it is not guaranteed to be always correct when using +support modes like jit-lock or lazy-lock. + +This variable is set by major modes via the variable `font-lock-defaults'. +Be careful when composing regexps for this list; a poorly written pattern can +dramatically slow things down! + +A compiled keywords list starts with t. It is produced internal +by `font-lock-compile-keywords' from a user-level keywords list. +Its second element is the user-level keywords list that was +compiled. The remaining elements have the same form as +user-level keywords, but normally their values have been +optimized.") + (autoload (quote font-lock-mode-internal) "font-lock" "\ Not documented @@ -10442,8 +10747,8 @@ ;;;*** -;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (17178 -;;;;;; 22150)) +;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from mail/footnote.el (autoload (quote footnote-mode) "footnote" "\ @@ -10464,7 +10769,7 @@ ;;;*** ;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode) -;;;;;; "forms" "forms.el" (17178 22144)) +;;;;;; "forms" "forms.el" (17226 24575)) ;;; Generated autoloads from forms.el (autoload (quote forms-mode) "forms" "\ @@ -10501,7 +10806,7 @@ ;;;*** ;;;### (autoloads (fortran-mode fortran-tab-mode-default) "fortran" -;;;;;; "progmodes/fortran.el" (17178 22153)) +;;;;;; "progmodes/fortran.el" (17229 28054)) ;;; Generated autoloads from progmodes/fortran.el (defvar fortran-tab-mode-default nil "\ @@ -10587,7 +10892,7 @@ ;;;*** ;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region -;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (17178 22152)) +;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (17187 59902)) ;;; Generated autoloads from play/fortune.el (autoload (quote fortune-add-fortune) "fortune" "\ @@ -10637,7 +10942,7 @@ ;;;*** ;;;### (autoloads (set-fringe-style fringe-mode fringe-mode) "fringe" -;;;;;; "fringe.el" (17178 22144)) +;;;;;; "fringe.el" (17187 59901)) ;;; Generated autoloads from fringe.el (defvar fringe-mode nil "\ @@ -10708,7 +11013,7 @@ ;;;*** ;;;### (autoloads (gdb-enable-debug-log gdba) "gdb-ui" "progmodes/gdb-ui.el" -;;;;;; (17178 22153)) +;;;;;; (17254 64068)) ;;; Generated autoloads from progmodes/gdb-ui.el (autoload (quote gdba) "gdb-ui" "\ @@ -10738,28 +11043,28 @@ detailed description of this mode. ---------------------------------------------------------------------- - GDB Toolbar ---------------------------------------------------------------------- - GUD buffer (I/O of GDB) | Locals buffer - | - | - | ---------------------------------------------------------------------- - Source buffer | Input/Output (of inferior) buffer - | (comint-mode) - | - | - | - | - | - | ---------------------------------------------------------------------- - Stack buffer | Breakpoints buffer - RET gdb-frames-select | SPC gdb-toggle-breakpoint - | RET gdb-goto-breakpoint - | d gdb-delete-breakpoint ---------------------------------------------------------------------- ++--------------------------------------------------------------+ +| GDB Toolbar | ++-------------------------------+------------------------------+ +| GUD buffer (I/O of GDB) | Locals buffer | +| | | +| | | +| | | ++-------------------------------+------------------------------+ +| Source buffer | I/O buffer (of inferior) | +| | (comint-mode) | +| | | +| | | +| | | +| | | +| | | +| | | ++-------------------------------+------------------------------+ +| Stack buffer | Breakpoints buffer | +| RET gdb-frames-select | SPC gdb-toggle-breakpoint | +| | RET gdb-goto-breakpoint | +| | d gdb-delete-breakpoint | ++-------------------------------+------------------------------+ \(fn COMMAND-LINE)" t nil) @@ -10771,8 +11076,8 @@ ;;;*** ;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal -;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (17178 -;;;;;; 22144)) +;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from emacs-lisp/generic.el (defvar generic-mode-list nil "\ @@ -10847,7 +11152,7 @@ ;;;*** ;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el" -;;;;;; (17178 20481)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/glasses.el (autoload (quote glasses-mode) "glasses" "\ @@ -10860,7 +11165,7 @@ ;;;*** ;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server -;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (17178 22145)) +;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (17226 24575)) ;;; Generated autoloads from gnus/gnus.el (autoload (quote gnus-slave-no-server) "gnus" "\ @@ -10911,7 +11216,7 @@ ;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group ;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize ;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent" -;;;;;; "gnus/gnus-agent.el" (17178 22145)) +;;;;;; "gnus/gnus-agent.el" (17226 24575)) ;;; Generated autoloads from gnus/gnus-agent.el (autoload (quote gnus-unplugged) "gnus-agent" "\ @@ -10998,7 +11303,7 @@ ;;;*** ;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" -;;;;;; (17178 22145)) +;;;;;; (17254 63788)) ;;; Generated autoloads from gnus/gnus-art.el (autoload (quote gnus-article-prepare-display) "gnus-art" "\ @@ -11009,7 +11314,7 @@ ;;;*** ;;;### (autoloads (gnus-audio-play) "gnus-audio" "gnus/gnus-audio.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-audio.el (autoload (quote gnus-audio-play) "gnus-audio" "\ @@ -11021,8 +11326,8 @@ ;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group ;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active -;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (17178 -;;;;;; 22145)) +;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from gnus/gnus-cache.el (autoload (quote gnus-jog-cache) "gnus-cache" "\ @@ -11060,7 +11365,7 @@ ;;;*** ;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article) -;;;;;; "gnus-delay" "gnus/gnus-delay.el" (17178 22145)) +;;;;;; "gnus-delay" "gnus/gnus-delay.el" (17187 59901)) ;;; Generated autoloads from gnus/gnus-delay.el (defgroup gnus-delay nil "Arrange for sending postings later." :version "22.1" :group (quote gnus)) @@ -11098,7 +11403,7 @@ ;;;*** ;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-dired.el (autoload (quote turn-on-gnus-dired-mode) "gnus-dired" "\ @@ -11109,7 +11414,7 @@ ;;;*** ;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-draft.el (autoload (quote gnus-draft-reminder) "gnus-draft" "\ @@ -11121,8 +11426,8 @@ ;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png ;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header -;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (17178 -;;;;;; 22145)) +;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (17187 +;;;;;; 59914)) ;;; Generated autoloads from gnus/gnus-fun.el (autoload (quote gnus-random-x-face) "gnus-fun" "\ @@ -11141,7 +11446,7 @@ \(fn FILE)" t nil) (autoload (quote gnus-face-from-file) "gnus-fun" "\ -Return an Face header based on an image file. +Return a Face header based on an image file. \(fn FILE)" t nil) @@ -11161,7 +11466,7 @@ ;;;*** ;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group) -;;;;;; "gnus-group" "gnus/gnus-group.el" (17178 22145)) +;;;;;; "gnus-group" "gnus/gnus-group.el" (17187 59901)) ;;; Generated autoloads from gnus/gnus-group.el (autoload (quote gnus-fetch-group) "gnus-group" "\ @@ -11178,7 +11483,7 @@ ;;;*** ;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-kill.el (defalias (quote gnus-batch-kill) (quote gnus-batch-score)) @@ -11193,7 +11498,7 @@ ;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate ;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-ml.el (autoload (quote turn-on-gnus-mailing-list-mode) "gnus-ml" "\ @@ -11218,7 +11523,7 @@ ;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update ;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-mlspl.el (autoload (quote gnus-group-split-setup) "gnus-mlspl" "\ @@ -11319,7 +11624,7 @@ ;;;*** ;;;### (autoloads (gnus-change-server) "gnus-move" "gnus/gnus-move.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-move.el (autoload (quote gnus-change-server) "gnus-move" "\ @@ -11331,7 +11636,7 @@ ;;;*** ;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) -;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17178 22145)) +;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17187 59914)) ;;; Generated autoloads from gnus/gnus-msg.el (autoload (quote gnus-msg-mail) "gnus-msg" "\ @@ -11357,7 +11662,7 @@ ;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon ;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-picon.el (autoload (quote gnus-treat-from-picon) "gnus-picon" "\ @@ -11384,7 +11689,7 @@ ;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection ;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement ;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range" -;;;;;; "gnus/gnus-range.el" (17178 22145)) +;;;;;; "gnus/gnus-range.el" (17187 59901)) ;;; Generated autoloads from gnus/gnus-range.el (autoload (quote gnus-sorted-difference) "gnus-range" "\ @@ -11452,7 +11757,7 @@ ;;;*** ;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) -;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17178 22145)) +;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17187 59901)) ;;; Generated autoloads from gnus/gnus-registry.el (autoload (quote gnus-registry-initialize) "gnus-registry" "\ @@ -11468,8 +11773,8 @@ ;;;*** ;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate -;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (17178 -;;;;;; 22145)) +;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from gnus/gnus-sieve.el (autoload (quote gnus-sieve-update) "gnus-sieve" "\ @@ -11497,7 +11802,7 @@ ;;;*** ;;;### (autoloads (gnus-batch-brew-soup) "gnus-soup" "gnus/gnus-soup.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-soup.el (autoload (quote gnus-batch-brew-soup) "gnus-soup" "\ @@ -11517,7 +11822,7 @@ ;;;*** ;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-spec.el (autoload (quote gnus-update-format) "gnus-spec" "\ @@ -11528,8 +11833,8 @@ ;;;*** ;;;### (autoloads (gnus-fixup-nnimap-unread-after-getting-new-news -;;;;;; gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" (17178 -;;;;;; 22145)) +;;;;;; gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" (17226 +;;;;;; 24575)) ;;; Generated autoloads from gnus/gnus-start.el (autoload (quote gnus-declare-backend) "gnus-start" "\ @@ -11545,7 +11850,7 @@ ;;;*** ;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el" -;;;;;; (17178 22145)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/gnus-win.el (autoload (quote gnus-add-configuration) "gnus-win" "\ @@ -11555,7 +11860,7 @@ ;;;*** -;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17178 22152)) +;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17226 24576)) ;;; Generated autoloads from play/gomoku.el (autoload (quote gomoku) "gomoku" "\ @@ -11582,7 +11887,7 @@ ;;;*** ;;;### (autoloads (goto-address goto-address-at-point) "goto-addr" -;;;;;; "net/goto-addr.el" (17178 22151)) +;;;;;; "net/goto-addr.el" (17187 59902)) ;;; Generated autoloads from net/goto-addr.el (define-obsolete-function-alias (quote goto-address-at-mouse) (quote goto-address-at-point) "22.1") @@ -11610,7 +11915,7 @@ ;;;### (autoloads (grep-tree grep-find grep-mode grep grep-compute-defaults ;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command -;;;;;; grep-window-height) "grep" "progmodes/grep.el" (17178 22153)) +;;;;;; grep-window-height) "grep" "progmodes/grep.el" (17187 59902)) ;;; Generated autoloads from progmodes/grep.el (defvar grep-window-height nil "\ @@ -11734,7 +12039,7 @@ ;;;*** -;;;### (autoloads (gs-load-image) "gs" "gs.el" (17178 22146)) +;;;### (autoloads (gs-load-image) "gs" "gs.el" (17187 59901)) ;;; Generated autoloads from gs.el (autoload (quote gs-load-image) "gs" "\ @@ -11748,7 +12053,7 @@ ;;;*** ;;;### (autoloads (gud-tooltip-mode gdb-script-mode bashdb jdb pdb -;;;;;; perldb xdb dbx sdb gdb) "gud" "progmodes/gud.el" (17178 22153)) +;;;;;; perldb xdb dbx sdb gdb) "gud" "progmodes/gud.el" (17254 64068)) ;;; Generated autoloads from progmodes/gud.el (autoload (quote gdb) "gud" "\ @@ -11844,8 +12149,8 @@ ;;;*** -;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from play/handwrite.el (autoload (quote handwrite) "handwrite" "\ @@ -11863,7 +12168,7 @@ ;;;*** ;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el" -;;;;;; (17178 20480)) +;;;;;; (17187 59879)) ;;; Generated autoloads from play/hanoi.el (autoload (quote hanoi) "hanoi" "\ @@ -11893,7 +12198,7 @@ ;;;### (autoloads (scan-buf-previous-region scan-buf-next-region ;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer ;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string -;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (17178 22146)) +;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (17187 59901)) ;;; Generated autoloads from help-at-pt.el (autoload (quote help-at-pt-string) "help-at-pt" "\ @@ -12023,7 +12328,7 @@ ;;;### (autoloads (describe-categories describe-syntax describe-variable ;;;;;; variable-at-point describe-function-1 help-C-file-name describe-function ;;;;;; locate-library help-with-tutorial) "help-fns" "help-fns.el" -;;;;;; (17178 22146)) +;;;;;; (17254 63790)) ;;; Generated autoloads from help-fns.el (autoload (quote help-with-tutorial) "help-fns" "\ @@ -12103,7 +12408,7 @@ ;;;*** ;;;### (autoloads (three-step-help) "help-macro" "help-macro.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from help-macro.el (defvar three-step-help nil "\ @@ -12119,7 +12424,7 @@ ;;;### (autoloads (help-xref-on-pp help-insert-xref-button help-xref-button ;;;;;; help-make-xrefs help-setup-xref help-mode-finish help-mode-setup -;;;;;; help-mode) "help-mode" "help-mode.el" (17178 22146)) +;;;;;; help-mode) "help-mode" "help-mode.el" (17187 59901)) ;;; Generated autoloads from help-mode.el (autoload (quote help-mode) "help-mode" "\ @@ -12202,7 +12507,7 @@ ;;;*** ;;;### (autoloads (Helper-help Helper-describe-bindings) "helper" -;;;;;; "emacs-lisp/helper.el" (17178 22144)) +;;;;;; "emacs-lisp/helper.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/helper.el (autoload (quote Helper-describe-bindings) "helper" "\ @@ -12218,7 +12523,7 @@ ;;;*** ;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl" -;;;;;; "hexl.el" (17178 22146)) +;;;;;; "hexl.el" (17187 59901)) ;;; Generated autoloads from hexl.el (autoload (quote hexl-mode) "hexl" "\ @@ -12313,8 +12618,8 @@ ;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer ;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer -;;;;;; hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" (17178 -;;;;;; 22146)) +;;;;;; hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" (17226 +;;;;;; 24576)) ;;; Generated autoloads from hi-lock.el (defvar hi-lock-mode nil "\ @@ -12425,7 +12730,7 @@ ;;;*** ;;;### (autoloads (hide-ifdef-lines hide-ifdef-read-only hide-ifdef-initially -;;;;;; hide-ifdef-mode) "hideif" "progmodes/hideif.el" (17178 22153)) +;;;;;; hide-ifdef-mode) "hideif" "progmodes/hideif.el" (17187 59902)) ;;; Generated autoloads from progmodes/hideif.el (autoload (quote hide-ifdef-mode) "hideif" "\ @@ -12479,15 +12784,10 @@ ;;;*** -;;;### (autoloads (hs-minor-mode hs-hide-comments-when-hiding-all) -;;;;;; "hideshow" "progmodes/hideshow.el" (17178 22153)) +;;;### (autoloads (hs-minor-mode) "hideshow" "progmodes/hideshow.el" +;;;;;; (17196 27217)) ;;; Generated autoloads from progmodes/hideshow.el -(defvar hs-hide-comments-when-hiding-all t "\ -*Hide the comments too when you do an `hs-hide-all'.") - -(custom-autoload (quote hs-hide-comments-when-hiding-all) "hideshow") - (defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\ *Alist for initializing the hideshow variables for different modes. Each element has the form @@ -12543,7 +12843,7 @@ ;;;;;; highlight-compare-buffers highlight-changes-rotate-faces ;;;;;; highlight-changes-previous-change highlight-changes-next-change ;;;;;; highlight-changes-mode highlight-changes-remove-highlight) -;;;;;; "hilit-chg" "hilit-chg.el" (17178 22146)) +;;;;;; "hilit-chg" "hilit-chg.el" (17187 59901)) ;;; Generated autoloads from hilit-chg.el (autoload (quote highlight-changes-remove-highlight) "hilit-chg" "\ @@ -12673,7 +12973,7 @@ ;;;;;; hippie-expand-ignore-buffers hippie-expand-max-buffers hippie-expand-no-restriction ;;;;;; hippie-expand-dabbrev-as-symbol hippie-expand-dabbrev-skip-space ;;;;;; hippie-expand-verbose hippie-expand-try-functions-list) "hippie-exp" -;;;;;; "hippie-exp.el" (17178 22146)) +;;;;;; "hippie-exp.el" (17187 59901)) ;;; Generated autoloads from hippie-exp.el (defvar hippie-expand-try-functions-list (quote (try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol)) "\ @@ -12746,7 +13046,7 @@ ;;;*** ;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from hl-line.el (autoload (quote hl-line-mode) "hl-line" "\ @@ -12788,7 +13088,7 @@ ;;;*** ;;;### (autoloads (list-holidays holidays) "holidays" "calendar/holidays.el" -;;;;;; (17178 20480)) +;;;;;; (17229 28052)) ;;; Generated autoloads from calendar/holidays.el (autoload (quote holidays) "holidays" "\ @@ -12812,7 +13112,7 @@ ;;;*** ;;;### (autoloads (hscroll-global-mode hscroll-mode turn-on-hscroll) -;;;;;; "hscroll" "obsolete/hscroll.el" (17178 22152)) +;;;;;; "hscroll" "obsolete/hscroll.el" (17187 59902)) ;;; Generated autoloads from obsolete/hscroll.el (autoload (quote turn-on-hscroll) "hscroll" "\ @@ -12838,8 +13138,8 @@ ;;;*** -;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (17178 -;;;;;; 22145)) +;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from gnus/html2text.el (autoload (quote html2text) "html2text" "\ @@ -12870,7 +13170,7 @@ ;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group ;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group ;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode -;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" (17178 22146)) +;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" (17229 28053)) ;;; Generated autoloads from ibuf-ext.el (autoload (quote ibuffer-auto-mode) "ibuf-ext" "\ @@ -12908,17 +13208,17 @@ Move point backwards by COUNT filtering groups. \(fn &optional COUNT)" t nil) - (autoload 'ibuffer-do-shell-command-pipe "ibuf-ext.el") - (autoload 'ibuffer-do-shell-command-pipe-replace "ibuf-ext.el") - (autoload 'ibuffer-do-shell-command-file "ibuf-ext.el") - (autoload 'ibuffer-do-eval "ibuf-ext.el") - (autoload 'ibuffer-do-view-and-eval "ibuf-ext.el") - (autoload 'ibuffer-do-rename-uniquely "ibuf-ext.el") - (autoload 'ibuffer-do-revert "ibuf-ext.el") - (autoload 'ibuffer-do-replace-regexp "ibuf-ext.el") - (autoload 'ibuffer-do-query-replace "ibuf-ext.el") - (autoload 'ibuffer-do-query-replace-regexp "ibuf-ext.el") - (autoload 'ibuffer-do-print "ibuf-ext.el") + (autoload 'ibuffer-do-shell-command-pipe "ibuf-ext") + (autoload 'ibuffer-do-shell-command-pipe-replace "ibuf-ext") + (autoload 'ibuffer-do-shell-command-file "ibuf-ext") + (autoload 'ibuffer-do-eval "ibuf-ext") + (autoload 'ibuffer-do-view-and-eval "ibuf-ext") + (autoload 'ibuffer-do-rename-uniquely "ibuf-ext") + (autoload 'ibuffer-do-revert "ibuf-ext") + (autoload 'ibuffer-do-replace-regexp "ibuf-ext") + (autoload 'ibuffer-do-query-replace "ibuf-ext") + (autoload 'ibuffer-do-query-replace-regexp "ibuf-ext") + (autoload 'ibuffer-do-print "ibuf-ext") (autoload (quote ibuffer-included-in-filters-p) "ibuf-ext" "\ Not documented @@ -13056,14 +13356,14 @@ of replacing the current filters. \(fn NAME)" t nil) - (autoload 'ibuffer-filter-by-mode "ibuf-ext.el") - (autoload 'ibuffer-filter-by-used-mode "ibuf-ext.el") - (autoload 'ibuffer-filter-by-name "ibuf-ext.el") - (autoload 'ibuffer-filter-by-filename "ibuf-ext.el") - (autoload 'ibuffer-filter-by-size-gt "ibuf-ext.el") - (autoload 'ibuffer-filter-by-size-lt "ibuf-ext.el") - (autoload 'ibuffer-filter-by-content "ibuf-ext.el") - (autoload 'ibuffer-filter-by-predicate "ibuf-ext.el") + (autoload 'ibuffer-filter-by-mode "ibuf-ext") + (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") + (autoload 'ibuffer-filter-by-name "ibuf-ext") + (autoload 'ibuffer-filter-by-filename "ibuf-ext") + (autoload 'ibuffer-filter-by-size-gt "ibuf-ext") + (autoload 'ibuffer-filter-by-size-lt "ibuf-ext") + (autoload 'ibuffer-filter-by-content "ibuf-ext") + (autoload 'ibuffer-filter-by-predicate "ibuf-ext") (autoload (quote ibuffer-toggle-sorting-mode) "ibuf-ext" "\ Toggle the current sorting mode. @@ -13079,10 +13379,10 @@ Toggle whether or not sorting is in reverse order. \(fn)" t nil) - (autoload 'ibuffer-do-sort-by-major-mode "ibuf-ext.el") - (autoload 'ibuffer-do-sort-by-mode-name "ibuf-ext.el") - (autoload 'ibuffer-do-sort-by-alphabetic "ibuf-ext.el") - (autoload 'ibuffer-do-sort-by-size "ibuf-ext.el") + (autoload 'ibuffer-do-sort-by-major-mode "ibuf-ext") + (autoload 'ibuffer-do-sort-by-mode-name "ibuf-ext") + (autoload 'ibuffer-do-sort-by-alphabetic "ibuf-ext") + (autoload 'ibuffer-do-sort-by-size "ibuf-ext") (autoload (quote ibuffer-bs-show) "ibuf-ext" "\ Emulate `bs-show' from the bs.el package. @@ -13231,8 +13531,8 @@ ;;;*** ;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter -;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (17178 -;;;;;; 22146)) +;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (17226 +;;;;;; 24576)) ;;; Generated autoloads from ibuf-macs.el (autoload (quote define-ibuffer-column) "ibuf-macs" "\ @@ -13318,7 +13618,7 @@ ;;;*** ;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) -;;;;;; "ibuffer" "ibuffer.el" (17178 22146)) +;;;;;; "ibuffer" "ibuffer.el" (17187 59901)) ;;; Generated autoloads from ibuffer.el (autoload (quote ibuffer-list-buffers) "ibuffer" "\ @@ -13359,7 +13659,7 @@ ;;;### (autoloads (icalendar-import-buffer icalendar-import-file ;;;;;; icalendar-export-region icalendar-export-file) "icalendar" -;;;;;; "calendar/icalendar.el" (17178 22143)) +;;;;;; "calendar/icalendar.el" (17254 64014)) ;;; Generated autoloads from calendar/icalendar.el (autoload (quote icalendar-export-file) "icalendar" "\ @@ -13381,7 +13681,7 @@ \(fn MIN MAX ICAL-FILENAME)" t nil) (autoload (quote icalendar-import-file) "icalendar" "\ -Import a iCalendar file and append to a diary file. +Import an iCalendar file and append to a diary file. Argument ICAL-FILENAME output iCalendar file. Argument DIARY-FILENAME input `diary-file'. Optional argument NON-MARKING determines whether events are created as @@ -13411,8 +13711,8 @@ ;;;*** -;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (17178 -;;;;;; 22146)) +;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from icomplete.el (defvar icomplete-mode nil "\ @@ -13433,7 +13733,7 @@ ;;;*** -;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (17178 22153)) +;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (17187 59902)) ;;; Generated autoloads from progmodes/icon.el (autoload (quote icon-mode) "icon" "\ @@ -13474,7 +13774,7 @@ ;;;*** ;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el" -;;;;;; (17178 22153)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/idlw-shell.el (autoload (quote idlwave-shell) "idlw-shell" "\ @@ -13500,7 +13800,7 @@ ;;;*** ;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el" -;;;;;; (17178 20481)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/idlwave.el (autoload (quote idlwave-mode) "idlwave" "\ @@ -13636,8 +13936,8 @@ ;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file ;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer ;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window -;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17178 -;;;;;; 22146)) +;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17244 +;;;;;; 4913)) ;;; Generated autoloads from ido.el (defvar ido-mode nil "\ @@ -13898,7 +14198,7 @@ ;;;*** -;;;### (autoloads (ielm) "ielm" "ielm.el" (17178 22146)) +;;;### (autoloads (ielm) "ielm" "ielm.el" (17187 59901)) ;;; Generated autoloads from ielm.el (add-hook 'same-window-buffer-names "*ielm*") @@ -13911,7 +14211,7 @@ ;;;*** ;;;### (autoloads (iimage-mode turn-on-iimage-mode) "iimage" "iimage.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from iimage.el (autoload (quote turn-on-iimage-mode) "iimage" "\ @@ -13928,8 +14228,8 @@ ;;;### (autoloads (defimage find-image remove-images insert-sliced-image ;;;;;; insert-image put-image create-image image-type-available-p -;;;;;; image-type-from-file-header image-type-from-data) "image" -;;;;;; "image.el" (17178 22146)) +;;;;;; image-type-from-file-name image-type-from-file-header image-type-from-buffer +;;;;;; image-type-from-data) "image" "image.el" (17254 63790)) ;;; Generated autoloads from image.el (autoload (quote image-type-from-data) "image" "\ @@ -13939,6 +14239,13 @@ \(fn DATA)" nil nil) +(autoload (quote image-type-from-buffer) "image" "\ +Determine the image type from data in the current buffer. +Value is a symbol specifying the image type or nil if type cannot +be determined. + +\(fn)" nil nil) + (autoload (quote image-type-from-file-header) "image" "\ Determine the type of image file FILE from its first few bytes. Value is a symbol specifying the image type, or nil if type cannot @@ -13946,6 +14253,13 @@ \(fn FILE)" nil nil) +(autoload (quote image-type-from-file-name) "image" "\ +Determine the type of image file FILE from its name. +Value is a symbol specifying the image type, or nil if type cannot +be determined. + +\(fn FILE)" nil nil) + (autoload (quote image-type-available-p) "image" "\ Return non-nil if image type TYPE is available. Image types are symbols like `xbm' or `jpeg'. @@ -13964,6 +14278,8 @@ like, e.g. `:mask MASK'. Value is the image created, or nil if images of type TYPE are not supported. +Images should not be larger than specified by `max-image-size'. + \(fn FILE-OR-DATA &optional TYPE DATA-P &rest PROPS)" nil nil) (autoload (quote put-image) "image" "\ @@ -14032,7 +14348,9 @@ specification to be returned. Return nil if no specification is satisfied. -The image is looked for first on `load-path' and then in `data-directory'. +The image is looked for in `image-load-path'. + +Image files should not be larger than specified by `max-image-size'. \(fn SPECS)" nil nil) @@ -14062,7 +14380,7 @@ ;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp ;;;;;; image-file-name-regexps image-file-name-extensions) "image-file" -;;;;;; "image-file.el" (17178 22146)) +;;;;;; "image-file.el" (17187 59901)) ;;; Generated autoloads from image-file.el (defvar image-file-name-extensions (quote ("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm")) "\ @@ -14125,7 +14443,7 @@ ;;;*** ;;;### (autoloads (image-mode-maybe image-minor-mode image-mode) -;;;;;; "image-mode" "image-mode.el" (17178 20481)) +;;;;;; "image-mode" "image-mode.el" (17226 24576)) ;;; Generated autoloads from image-mode.el (push '("\\.jpe?g\\'" . image-mode) auto-mode-alist) (push '("\\.png\\'" . image-mode) auto-mode-alist) @@ -14163,7 +14481,7 @@ ;;;*** ;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar -;;;;;; imenu-sort-function) "imenu" "imenu.el" (17178 22146)) +;;;;;; imenu-sort-function) "imenu" "imenu.el" (17187 59901)) ;;; Generated autoloads from imenu.el (defvar imenu-sort-function nil "\ @@ -14283,7 +14601,7 @@ ;;;### (autoloads (indian-char-glyph indian-glyph-char in-is13194-pre-write-conversion ;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region) -;;;;;; "ind-util" "language/ind-util.el" (17178 20481)) +;;;;;; "ind-util" "language/ind-util.el" (17187 59881)) ;;; Generated autoloads from language/ind-util.el (autoload (quote indian-compose-region) "ind-util" "\ @@ -14326,7 +14644,7 @@ ;;;### (autoloads (inferior-lisp inferior-lisp-prompt inferior-lisp-load-command ;;;;;; inferior-lisp-program inferior-lisp-filter-regexp) "inf-lisp" -;;;;;; "progmodes/inf-lisp.el" (17178 22153)) +;;;;;; "progmodes/inf-lisp.el" (17187 59902)) ;;; Generated autoloads from progmodes/inf-lisp.el (defvar inferior-lisp-filter-regexp "\\`\\s *\\(:\\(\\w\\|\\s_\\)\\)?\\s *\\'" "\ @@ -14393,7 +14711,7 @@ ;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node ;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index ;;;;;; Info-directory info-standalone info-emacs-manual info info-other-window) -;;;;;; "info" "info.el" (17178 22146)) +;;;;;; "info" "info.el" (17244 4913)) ;;; Generated autoloads from info.el (autoload (quote info-other-window) "info" "\ @@ -14478,18 +14796,17 @@ \\[Info-menu] Pick menu item specified by name (or abbreviation). Picking a menu item causes another node to be selected. \\[Info-directory] Go to the Info directory node. +\\[Info-top-node] Go to the Top node of this file. +\\[Info-final-node] Go to the final node in this file. +\\[Info-backward-node] Go backward one node, considering all nodes as forming one sequence. +\\[Info-forward-node] Go forward one node, considering all nodes as forming one sequence. +\\[Info-next-reference] Move cursor to next cross-reference or menu item. +\\[Info-prev-reference] Move cursor to previous cross-reference or menu item. \\[Info-follow-reference] Follow a cross reference. Reads name of reference. \\[Info-history-back] Move back in history to the last node you were at. \\[Info-history-forward] Move forward in history to the node you returned from after using \\[Info-history-back]. \\[Info-history] Go to menu of visited nodes. \\[Info-toc] Go to table of contents of the current Info file. -\\[Info-top-node] Go to the Top node of this file. -\\[Info-final-node] Go to the final node in this file. -\\[Info-backward-node] Go backward one node, considering all nodes as forming one sequence. -\\[Info-forward-node] Go forward one node, considering all nodes as forming one sequence. -\\[Info-index] Look up a topic in this file's Index and move to that node. -\\[Info-index-next] (comma) Move to the next match from a previous \\<Info-mode-map>\\[Info-index] command. -\\[info-apropos] Look for a string in the indices of all manuals. Moving within a node: \\[Info-scroll-up] Normally, scroll forward a full screen. @@ -14503,22 +14820,22 @@ \\[beginning-of-buffer] Go to beginning of node. Advanced commands: -\\[Info-copy-current-node-name] Put name of current Info node in the kill ring. -\\[clone-buffer] Select a new cloned Info buffer in another window. -\\[Info-edit] Edit contents of selected node. -1 .. 9 Pick first ... ninth item in node's menu. - Every third `*' is highlighted to help pick the right number. -\\[Info-goto-node] Move to node specified by name. - You may include a filename as well, as (FILENAME)NODENAME. -\\[universal-argument] \\[info] Move to new Info file with completion. -\\[universal-argument] N \\[info] Select Info buffer with prefix number in the name *info*<N>. \\[Info-search] Search through this Info file for specified regexp, and select the node in which the next occurrence is found. \\[Info-search-case-sensitively] Search through this Info file for specified regexp case-sensitively. \\[Info-search-next] Search for another occurrence of regexp from a previous \\<Info-mode-map>\\[Info-search] command. -\\[Info-next-reference] Move cursor to next cross-reference or menu item. -\\[Info-prev-reference] Move cursor to previous cross-reference or menu item. +\\[Info-index] Look up a topic in this file's Index and move to that node. +\\[Info-index-next] (comma) Move to the next match from a previous \\<Info-mode-map>\\[Info-index] command. +\\[info-apropos] Look for a string in the indices of all manuals. +\\[Info-goto-node] Move to node specified by name. + You may include a filename as well, as (FILENAME)NODENAME. +1 .. 9 Pick first ... ninth item in node's menu. + Every third `*' is highlighted to help pick the right number. +\\[Info-copy-current-node-name] Put name of current Info node in the kill ring. +\\[clone-buffer] Select a new cloned Info buffer in another window. +\\[universal-argument] \\[info] Move to new Info file with completion. +\\[universal-argument] N \\[info] Select Info buffer with prefix number in the name *info*<N>. \(fn)" nil nil) (put 'Info-goto-emacs-command-node 'info-file "emacs") @@ -14553,7 +14870,7 @@ ;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file ;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from info-look.el (autoload (quote info-lookup-reset) "info-look" "\ @@ -14601,7 +14918,7 @@ ;;;*** ;;;### (autoloads (info-xref-check-all-custom info-xref-check-all -;;;;;; info-xref-check) "info-xref" "info-xref.el" (17178 22146)) +;;;;;; info-xref-check) "info-xref" "info-xref.el" (17187 59901)) ;;; Generated autoloads from info-xref.el (autoload (quote info-xref-check) "info-xref" "\ @@ -14628,7 +14945,7 @@ ;;;*** ;;;### (autoloads (batch-info-validate Info-validate Info-split Info-tagify) -;;;;;; "informat" "informat.el" (17178 22146)) +;;;;;; "informat" "informat.el" (17187 59901)) ;;; Generated autoloads from informat.el (autoload (quote Info-tagify) "informat" "\ @@ -14669,7 +14986,7 @@ ;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method ;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from international/isearch-x.el (autoload (quote isearch-toggle-specified-input-method) "isearch-x" "\ @@ -14689,8 +15006,8 @@ ;;;*** -;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (17178 -;;;;;; 22147)) +;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from isearchb.el (autoload (quote isearchb-activate) "isearchb" "\ @@ -14704,7 +15021,7 @@ ;;;*** ;;;### (autoloads (iso-accents-mode) "iso-acc" "obsolete/iso-acc.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from obsolete/iso-acc.el (autoload (quote iso-accents-mode) "iso-acc" "\ @@ -14737,7 +15054,7 @@ ;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only ;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso ;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt" -;;;;;; "international/iso-cvt.el" (17178 20480)) +;;;;;; "international/iso-cvt.el" (17187 59880)) ;;; Generated autoloads from international/iso-cvt.el (autoload (quote iso-spanish) "iso-cvt" "\ @@ -14821,7 +15138,7 @@ ;;;*** ;;;### (autoloads nil "iso-transl" "international/iso-transl.el" -;;;;;; (17178 20504)) +;;;;;; (17187 59894)) ;;; Generated autoloads from international/iso-transl.el (or key-translation-map (setq key-translation-map (make-sparse-keymap))) (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map) @@ -14834,7 +15151,7 @@ ;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell ;;;;;; ispell-help ispell-pdict-save ispell-word ispell-local-dictionary-alist ;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el" -;;;;;; (17178 22154)) +;;;;;; (17254 63791)) ;;; Generated autoloads from textmodes/ispell.el (defvar ispell-personal-dictionary nil "\ @@ -15120,8 +15437,8 @@ ;;;*** -;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (17178 -;;;;;; 22147)) +;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (17226 +;;;;;; 24576)) ;;; Generated autoloads from iswitchb.el (defvar iswitchb-mode nil "\ @@ -15147,7 +15464,7 @@ ;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region ;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku ;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal) -;;;;;; "japan-util" "language/japan-util.el" (17178 20481)) +;;;;;; "japan-util" "language/japan-util.el" (17187 59881)) ;;; Generated autoloads from language/japan-util.el (autoload (quote setup-japanese-environment-internal) "japan-util" "\ @@ -15224,8 +15541,8 @@ ;;;*** -;;;### (autoloads (jit-lock-register) "jit-lock" "jit-lock.el" (17178 -;;;;;; 22147)) +;;;### (autoloads (jit-lock-register) "jit-lock" "jit-lock.el" (17238 +;;;;;; 21257)) ;;; Generated autoloads from jit-lock.el (autoload (quote jit-lock-register) "jit-lock" "\ @@ -15239,7 +15556,7 @@ ;;;*** ;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr" -;;;;;; "jka-compr.el" (17178 22147)) +;;;;;; "jka-compr.el" (17187 59901)) ;;; Generated autoloads from jka-compr.el (defvar jka-compr-inhibit nil "\ @@ -15264,7 +15581,7 @@ ;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup ;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emulation/keypad.el (defvar keypad-setup nil "\ @@ -15320,7 +15637,7 @@ ;;;*** ;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el" -;;;;;; (17178 20480)) +;;;;;; (17187 59880)) ;;; Generated autoloads from international/kinsoku.el (autoload (quote kinsoku) "kinsoku" "\ @@ -15341,8 +15658,8 @@ ;;;*** -;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (17178 -;;;;;; 20480)) +;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (17187 +;;;;;; 59880)) ;;; Generated autoloads from international/kkc.el (defvar kkc-after-update-conversion-functions nil "\ @@ -15367,7 +15684,7 @@ ;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro ;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter ;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro) "kmacro" -;;;;;; "kmacro.el" (17178 22147)) +;;;;;; "kmacro.el" (17187 59901)) ;;; Generated autoloads from kmacro.el (global-set-key "\C-x(" 'kmacro-start-macro) (global-set-key "\C-x)" 'kmacro-end-macro) @@ -15474,7 +15791,7 @@ ;;;### (autoloads (kannada-post-read-conversion kannada-compose-string ;;;;;; kannada-compose-region) "knd-util" "language/knd-util.el" -;;;;;; (17178 20481)) +;;;;;; (17187 59881)) ;;; Generated autoloads from language/knd-util.el (defconst kannada-consonant "[\x51f75-\x51fb9]") @@ -15497,7 +15814,7 @@ ;;;*** ;;;### (autoloads (setup-korean-environment-internal) "korea-util" -;;;;;; "language/korea-util.el" (17178 20481)) +;;;;;; "language/korea-util.el" (17187 59881)) ;;; Generated autoloads from language/korea-util.el (defvar default-korean-keyboard (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "") "\ @@ -15512,7 +15829,7 @@ ;;;*** ;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el" -;;;;;; (17178 22152)) +;;;;;; (17226 24576)) ;;; Generated autoloads from play/landmark.el (defalias (quote landmark-repeat) (quote lm-test-run)) @@ -15546,8 +15863,8 @@ ;;;### (autoloads (lao-compose-region lao-composition-function lao-post-read-conversion ;;;;;; lao-transcribe-roman-to-lao-string lao-transcribe-single-roman-syllable-to-lao -;;;;;; lao-compose-string) "lao-util" "language/lao-util.el" (17178 -;;;;;; 20481)) +;;;;;; lao-compose-string) "lao-util" "language/lao-util.el" (17187 +;;;;;; 59881)) ;;; Generated autoloads from language/lao-util.el (autoload (quote lao-compose-string) "lao-util" "\ @@ -15596,7 +15913,7 @@ ;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc ;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist) -;;;;;; "latexenc" "international/latexenc.el" (17178 20480)) +;;;;;; "latexenc" "international/latexenc.el" (17187 59880)) ;;; Generated autoloads from international/latexenc.el (defvar latex-inputenc-coding-alist (quote (("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\ @@ -15627,7 +15944,7 @@ ;;;*** ;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display) -;;;;;; "latin1-disp" "international/latin1-disp.el" (17178 20480)) +;;;;;; "latin1-disp" "international/latin1-disp.el" (17187 59880)) ;;; Generated autoloads from international/latin1-disp.el (defvar latin1-display nil "\ @@ -15671,7 +15988,7 @@ ;;;*** ;;;### (autoloads (turn-on-lazy-lock lazy-lock-mode) "lazy-lock" -;;;;;; "obsolete/lazy-lock.el" (17178 22152)) +;;;;;; "obsolete/lazy-lock.el" (17187 59902)) ;;; Generated autoloads from obsolete/lazy-lock.el (autoload (quote lazy-lock-mode) "lazy-lock" "\ @@ -15739,7 +16056,7 @@ ;;;*** ;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/ld-script.el (add-to-list (quote auto-mode-alist) (quote ("\\.lds" . ld-script-mode))) @@ -15752,7 +16069,7 @@ ;;;*** ;;;### (autoloads (ledit-from-lisp-mode ledit-mode) "ledit" "ledit.el" -;;;;;; (17178 22149)) +;;;;;; (17187 59901)) ;;; Generated autoloads from ledit.el (defconst ledit-save-files t "\ @@ -15786,7 +16103,7 @@ ;;;*** -;;;### (autoloads (life) "life" "play/life.el" (17178 22152)) +;;;### (autoloads (life) "life" "play/life.el" (17187 59902)) ;;; Generated autoloads from play/life.el (autoload (quote life) "life" "\ @@ -15799,8 +16116,8 @@ ;;;*** -;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (17178 -;;;;;; 22150)) +;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (17244 +;;;;;; 4913)) ;;; Generated autoloads from loadhist.el (autoload (quote unload-feature) "loadhist" "\ @@ -15823,7 +16140,7 @@ ;;;*** ;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches) -;;;;;; "locate" "locate.el" (17178 22150)) +;;;;;; "locate" "locate.el" (17254 63790)) ;;; Generated autoloads from locate.el (defvar locate-ls-subdir-switches "-al" "\ @@ -15848,7 +16165,7 @@ ;;;*** -;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (17178 22150)) +;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (17226 24576)) ;;; Generated autoloads from log-edit.el (autoload (quote log-edit) "log-edit" "\ @@ -15869,8 +16186,8 @@ ;;;*** -;;;### (autoloads (log-view-mode) "log-view" "log-view.el" (17178 -;;;;;; 22150)) +;;;### (autoloads (log-view-mode) "log-view" "log-view.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from log-view.el (autoload (quote log-view-mode) "log-view" "\ @@ -15880,8 +16197,8 @@ ;;;*** -;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17178 -;;;;;; 22150)) +;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17238 +;;;;;; 21257)) ;;; Generated autoloads from longlines.el (autoload (quote longlines-mode) "longlines" "\ @@ -15902,8 +16219,8 @@ ;;;*** ;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer -;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (17178 -;;;;;; 22150)) +;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from lpr.el (defvar lpr-windows-system (memq system-type (quote (emx win32 w32 mswindows ms-dos windows-nt)))) @@ -15997,7 +16314,7 @@ ;;;*** ;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el" -;;;;;; (17178 22150)) +;;;;;; (17187 59901)) ;;; Generated autoloads from ls-lisp.el (defvar ls-lisp-support-shell-wildcards t "\ @@ -16008,8 +16325,8 @@ ;;;*** -;;;### (autoloads (phases-of-moon) "lunar" "calendar/lunar.el" (17178 -;;;;;; 22143)) +;;;### (autoloads (phases-of-moon) "lunar" "calendar/lunar.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from calendar/lunar.el (autoload (quote phases-of-moon) "lunar" "\ @@ -16022,8 +16339,8 @@ ;;;*** -;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from progmodes/m4-mode.el (autoload (quote m4-mode) "m4-mode" "\ @@ -16035,7 +16352,7 @@ ;;;*** ;;;### (autoloads (macroexpand-all) "macroexp" "emacs-lisp/macroexp.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/macroexp.el (autoload (quote macroexpand-all) "macroexp" "\ @@ -16049,7 +16366,7 @@ ;;;*** ;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro -;;;;;; name-last-kbd-macro) "macros" "macros.el" (17178 22150)) +;;;;;; name-last-kbd-macro) "macros" "macros.el" (17187 59901)) ;;; Generated autoloads from macros.el (autoload (quote name-last-kbd-macro) "macros" "\ @@ -16138,7 +16455,7 @@ ;;;*** ;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr" -;;;;;; "mail/mail-extr.el" (17178 22150)) +;;;;;; "mail/mail-extr.el" (17187 59901)) ;;; Generated autoloads from mail/mail-extr.el (autoload (quote mail-extract-address-components) "mail-extr" "\ @@ -16169,7 +16486,7 @@ ;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history ;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el" -;;;;;; (17178 22150)) +;;;;;; (17187 59901)) ;;; Generated autoloads from mail/mail-hist.el (autoload (quote mail-hist-define-keys) "mail-hist" "\ @@ -16200,8 +16517,8 @@ ;;;### (autoloads (mail-fetch-field mail-unquote-printable-region ;;;;;; mail-unquote-printable mail-quote-printable mail-file-babyl-p -;;;;;; mail-use-rfc822) "mail-utils" "mail/mail-utils.el" (17178 -;;;;;; 22150)) +;;;;;; mail-use-rfc822) "mail-utils" "mail/mail-utils.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from mail/mail-utils.el (defvar mail-use-rfc822 nil "\ @@ -16253,7 +16570,7 @@ ;;;*** ;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup) -;;;;;; "mailabbrev" "mail/mailabbrev.el" (17178 22150)) +;;;;;; "mailabbrev" "mail/mailabbrev.el" (17238 21257)) ;;; Generated autoloads from mail/mailabbrev.el (autoload (quote mail-abbrevs-setup) "mailabbrev" "\ @@ -16276,8 +16593,8 @@ ;;;*** ;;;### (autoloads (mail-complete define-mail-alias expand-mail-aliases -;;;;;; mail-complete-style) "mailalias" "mail/mailalias.el" (17178 -;;;;;; 22150)) +;;;;;; mail-complete-style) "mailalias" "mail/mailalias.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from mail/mailalias.el (defvar mail-complete-style (quote angles) "\ @@ -16322,9 +16639,22 @@ ;;;*** +;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el" +;;;;;; (17226 24564)) +;;; Generated autoloads from mail/mailclient.el + +(autoload (quote mailclient-send-it) "mailclient" "\ +Pass current buffer on to the system's mail client. +Suitable value for `send-mail-function'. +The mail client is taken to be the handler of mailto URLs. + +\(fn)" nil nil) + +;;;*** + ;;;### (autoloads (makefile-bsdmake-mode makefile-makepp-mode makefile-gmake-mode ;;;;;; makefile-automake-mode makefile-mode) "make-mode" "progmodes/make-mode.el" -;;;;;; (17178 22153)) +;;;;;; (17238 21257)) ;;; Generated autoloads from progmodes/make-mode.el (autoload (quote makefile-mode) "make-mode" "\ @@ -16436,8 +16766,8 @@ ;;;*** -;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (17178 -;;;;;; 22151)) +;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from makesum.el (autoload (quote make-command-summary) "makesum" "\ @@ -16448,7 +16778,7 @@ ;;;*** -;;;### (autoloads (man-follow man) "man" "man.el" (17178 22151)) +;;;### (autoloads (man-follow man) "man" "man.el" (17238 21257)) ;;; Generated autoloads from man.el (defalias (quote manual-entry) (quote man)) @@ -16475,7 +16805,7 @@ ;;;*** -;;;### (autoloads (master-mode) "master" "master.el" (17178 22151)) +;;;### (autoloads (master-mode) "master" "master.el" (17187 59902)) ;;; Generated autoloads from master.el (autoload (quote master-mode) "master" "\ @@ -16497,8 +16827,8 @@ ;;;*** -;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (17178 -;;;;;; 22151)) +;;;### (autoloads (menu-bar-mode) "menu-bar" "menu-bar.el" (17254 +;;;;;; 63790)) ;;; Generated autoloads from menu-bar.el (put (quote menu-bar-mode) (quote standard-value) (quote (t))) @@ -16529,15 +16859,12 @@ ;;;;;; message-bounce message-resend message-insinuate-rmail message-forward-rmail-make-body ;;;;;; message-forward-make-body message-forward message-recover ;;;;;; message-supersede message-cancel-news message-followup message-wide-reply -;;;;;; message-reply message-news message-mail message-mode message-reduce-to-to-cc -;;;;;; message-cross-post-followup-to message-cross-post-insert-note -;;;;;; message-cross-post-followup-to-header message-add-archive-header -;;;;;; message-mark-insert-file message-mark-inserted-region message-change-subject -;;;;;; message-signature-insert-empty-line message-signature-file -;;;;;; message-signature message-indent-citation-function message-cite-function -;;;;;; message-yank-prefix message-citation-line-function message-send-mail-function -;;;;;; message-user-organization-file message-signature-separator -;;;;;; message-from-style) "message" "gnus/message.el" (17178 22145)) +;;;;;; message-reply message-news message-mail message-mode message-signature-insert-empty-line +;;;;;; message-signature-file message-signature message-indent-citation-function +;;;;;; message-cite-function message-yank-prefix message-citation-line-function +;;;;;; message-send-mail-function message-user-organization-file +;;;;;; message-signature-separator message-from-style) "message" +;;;;;; "gnus/message.el" (17254 63788)) ;;; Generated autoloads from gnus/message.el (defvar message-from-style (quote default) "\ @@ -16633,58 +16960,6 @@ (define-mail-user-agent (quote message-user-agent) (quote message-mail) (quote message-send-and-exit) (quote message-kill-buffer) (quote message-send-hook)) -(autoload (quote message-change-subject) "message" "\ -Ask for NEW-SUBJECT header, append (was: <Old Subject>). - -\(fn NEW-SUBJECT)" t nil) - -(autoload (quote message-mark-inserted-region) "message" "\ -Mark some region in the current article with enclosing tags. -See `message-mark-insert-begin' and `message-mark-insert-end'. - -\(fn BEG END)" t nil) - -(autoload (quote message-mark-insert-file) "message" "\ -Insert FILE at point, marking it with enclosing tags. -See `message-mark-insert-begin' and `message-mark-insert-end'. - -\(fn FILE)" t nil) - -(autoload (quote message-add-archive-header) "message" "\ -Insert \"X-No-Archive: Yes\" in the header and a note in the body. -The note can be customized using `message-archive-note'. When called with a -prefix argument, ask for a text to insert. If you don't want the note in the -body, set `message-archive-note' to nil. - -\(fn)" t nil) - -(autoload (quote message-cross-post-followup-to-header) "message" "\ -Mangles FollowUp-To and Newsgroups header to point to TARGET-GROUP. -With prefix-argument just set Follow-Up, don't cross-post. - -\(fn TARGET-GROUP)" t nil) - -(autoload (quote message-cross-post-insert-note) "message" "\ -Insert a in message body note about a set Followup or Crosspost. -If there have been previous notes, delete them. TARGET-GROUP specifies the -group to Followup-To. When CROSS-POST is t, insert note about -crossposting. IN-OLD specifies whether TARGET-GROUP is a member of -OLD-GROUPS. OLD-GROUPS lists the old-groups the posting would have -been made to before the user asked for a Crosspost. - -\(fn TARGET-GROUP CROSS-POST IN-OLD OLD-GROUPS)" nil nil) - -(autoload (quote message-cross-post-followup-to) "message" "\ -Crossposts message and set Followup-To to TARGET-GROUP. -With prefix-argument just set Follow-Up, don't cross-post. - -\(fn TARGET-GROUP)" t nil) - -(autoload (quote message-reduce-to-to-cc) "message" "\ -Replace contents of To: header with contents of Cc: or Bcc: header. - -\(fn)" t nil) - (autoload (quote message-mode) "message" "\ Major mode for editing mail and news to be sent. Like Text Mode but with these additional commands:\\<message-mode-map> @@ -16843,7 +17118,7 @@ ;;;*** ;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el" -;;;;;; (17178 22153)) +;;;;;; (17238 21257)) ;;; Generated autoloads from progmodes/meta-mode.el (autoload (quote metafont-mode) "meta-mode" "\ @@ -16870,7 +17145,7 @@ ;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body ;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el" -;;;;;; (17178 22150)) +;;;;;; (17187 59902)) ;;; Generated autoloads from mail/metamail.el (autoload (quote metamail-interpret-header) "metamail" "\ @@ -16914,8 +17189,8 @@ ;;;*** ;;;### (autoloads (mh-letter-mode mh-smail-other-window mh-user-agent-compose -;;;;;; mh-smail-batch mh-smail) "mh-comp" "mh-e/mh-comp.el" (17178 -;;;;;; 20480)) +;;;;;; mh-smail-batch mh-smail) "mh-comp" "mh-e/mh-comp.el" (17254 +;;;;;; 63790)) ;;; Generated autoloads from mh-e/mh-comp.el (autoload (quote mh-smail) "mh-comp" "\ @@ -16969,16 +17244,13 @@ When you have finished composing, type \\[mh-send-letter] to send the message using the MH mail handling system. -There are two types of MIME directives used by MH-E: Gnus and MH. The option -`mh-compose-insertion' controls what type of directives are inserted by MH-E -commands. These directives can be converted to MIME body parts by running -\\[mh-edit-mhn] for mhn directives or \\[mh-mml-to-mime] for Gnus directives. -This step is mandatory if these directives are added manually. If the -directives are inserted with MH-E commands such as \\[mh-compose-insertion], -the directives are expanded automatically when the letter is sent. - -Options that control this mode can be changed with -\\[customize-group]; specify the \"mh-compose\" group. +There are two types of tags used by MH-E when composing MIME messages: MML and +MH. The option `mh-compose-insertion' controls what type of tags are inserted +by MH-E commands. These tags can be converted to MIME body parts by running +\\[mh-mh-to-mime] for MH-style directives or \\[mh-mml-to-mime] for MML tags. + +Options that control this mode can be changed with \\[customize-group]; +specify the \"mh-compose\" group. When a message is composed, the hooks `text-mode-hook' and `mh-letter-mode-hook' are run. @@ -16990,7 +17262,7 @@ ;;;*** ;;;### (autoloads (mh-folder-mode mh-version mh-nmail mh-rmail) "mh-e" -;;;;;; "mh-e/mh-e.el" (17178 22151)) +;;;;;; "mh-e/mh-e.el" (17254 63790)) ;;; Generated autoloads from mh-e/mh-e.el (autoload (quote mh-rmail) "mh-e" "\ @@ -17068,7 +17340,7 @@ ;;;*** -;;;### (autoloads nil "mh-init" "mh-e/mh-init.el" (17178 20480)) +;;;### (autoloads nil "mh-init" "mh-e/mh-init.el" (17238 21257)) ;;; Generated autoloads from mh-e/mh-init.el (put (quote mh-progs) (quote risky-local-variable) t) @@ -17080,7 +17352,7 @@ ;;;*** ;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight" -;;;;;; "midnight.el" (17178 22151)) +;;;;;; "midnight.el" (17187 59902)) ;;; Generated autoloads from midnight.el (autoload (quote clean-buffer-list) "midnight" "\ @@ -17107,7 +17379,7 @@ ;;;*** ;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef" -;;;;;; "minibuf-eldef.el" (17178 22151)) +;;;;;; "minibuf-eldef.el" (17187 59902)) ;;; Generated autoloads from minibuf-eldef.el (defvar minibuffer-electric-default-mode nil "\ @@ -17136,7 +17408,7 @@ ;;;*** ;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el" -;;;;;; (17178 22153)) +;;;;;; (17238 21095)) ;;; Generated autoloads from progmodes/mixal-mode.el (autoload (quote mixal-mode) "mixal-mode" "\ @@ -17151,7 +17423,7 @@ ;;;### (autoloads (malayalam-composition-function malayalam-post-read-conversion ;;;;;; malayalam-compose-region) "mlm-util" "language/mlm-util.el" -;;;;;; (17178 20481)) +;;;;;; (17187 59881)) ;;; Generated autoloads from language/mlm-util.el (autoload (quote malayalam-compose-region) "mlm-util" "\ @@ -17174,7 +17446,7 @@ ;;;*** ;;;### (autoloads (mm-inline-external-body) "mm-extern" "gnus/mm-extern.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/mm-extern.el (autoload (quote mm-inline-external-body) "mm-extern" "\ @@ -17188,7 +17460,7 @@ ;;;*** ;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/mm-partial.el (autoload (quote mm-inline-partial) "mm-partial" "\ @@ -17202,7 +17474,7 @@ ;;;*** ;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents) -;;;;;; "mm-url" "gnus/mm-url.el" (17178 22146)) +;;;;;; "mm-url" "gnus/mm-url.el" (17226 24575)) ;;; Generated autoloads from gnus/mm-url.el (autoload (quote mm-url-insert-file-contents) "mm-url" "\ @@ -17218,8 +17490,8 @@ ;;;*** -;;;### (autoloads (mm-uu-dissect) "mm-uu" "gnus/mm-uu.el" (17178 -;;;;;; 22146)) +;;;### (autoloads (mm-uu-dissect) "mm-uu" "gnus/mm-uu.el" (17226 +;;;;;; 24575)) ;;; Generated autoloads from gnus/mm-uu.el (autoload (quote mm-uu-dissect) "mm-uu" "\ @@ -17230,7 +17502,7 @@ ;;;*** ;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/mml1991.el (autoload (quote mml1991-encrypt) "mml1991" "\ @@ -17247,7 +17519,7 @@ ;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt ;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt) -;;;;;; "mml2015" "gnus/mml2015.el" (17178 22146)) +;;;;;; "mml2015" "gnus/mml2015.el" (17187 59901)) ;;; Generated autoloads from gnus/mml2015.el (autoload (quote mml2015-decrypt) "mml2015" "\ @@ -17288,7 +17560,7 @@ ;;;*** ;;;### (autoloads (modula-2-mode) "modula2" "progmodes/modula2.el" -;;;;;; (17178 20481)) +;;;;;; (17187 59880)) ;;; Generated autoloads from progmodes/modula2.el (autoload (quote modula-2-mode) "modula2" "\ @@ -17320,7 +17592,7 @@ ;;;*** ;;;### (autoloads (unmorse-region morse-region) "morse" "play/morse.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from play/morse.el (autoload (quote morse-region) "morse" "\ @@ -17335,8 +17607,8 @@ ;;;*** -;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (17178 -;;;;;; 22151)) +;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from mouse-sel.el (defvar mouse-sel-mode nil "\ @@ -17389,7 +17661,7 @@ ;;;*** -;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (17178 22152)) +;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (17226 24576)) ;;; Generated autoloads from play/mpuz.el (autoload (quote mpuz) "mpuz" "\ @@ -17399,7 +17671,7 @@ ;;;*** -;;;### (autoloads (msb-mode) "msb" "msb.el" (17178 22151)) +;;;### (autoloads (msb-mode) "msb" "msb.el" (17187 59914)) ;;; Generated autoloads from msb.el (defvar msb-mode nil "\ @@ -17427,7 +17699,7 @@ ;;;;;; describe-current-coding-system describe-current-coding-system-briefly ;;;;;; describe-coding-system describe-character-set list-charset-chars ;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el" -;;;;;; (17178 20480)) +;;;;;; (17226 24576)) ;;; Generated autoloads from international/mule-diag.el (defvar non-iso-charset-alist (\` ((mac-roman (ascii latin-iso8859-1 mule-unicode-2500-33ff mule-unicode-0100-24ff mule-unicode-e000-ffff) mac-roman-decoder ((0 255))) (viscii (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-viscii-nonascii-translation-table ((0 255))) (vietnamese-tcvn (ascii vietnamese-viscii-lower vietnamese-viscii-upper) viet-tcvn-nonascii-translation-table ((0 255))) (koi8-r (ascii cyrillic-iso8859-5) cyrillic-koi8-r-nonascii-translation-table ((32 255))) (alternativnyj (ascii cyrillic-iso8859-5) cyrillic-alternativnyj-nonascii-translation-table ((32 255))) (koi8-u (ascii cyrillic-iso8859-5 mule-unicode-0100-24ff) cyrillic-koi8-u-nonascii-translation-table ((32 255))) (big5 (ascii chinese-big5-1 chinese-big5-2) decode-big5-char ((32 127) ((161 254) 64 126 161 254))) (sjis (ascii katakana-jisx0201 japanese-jisx0208) decode-sjis-char ((32 127 161 223) ((129 159 224 239) 64 126 128 252))))) "\ @@ -17600,7 +17872,7 @@ ;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion ;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist ;;;;;; truncate-string-to-width store-substring string-to-sequence) -;;;;;; "mule-util" "international/mule-util.el" (17178 20480)) +;;;;;; "mule-util" "international/mule-util.el" (17187 59880)) ;;; Generated autoloads from international/mule-util.el (autoload (quote string-to-sequence) "mule-util" "\ @@ -17729,7 +18001,7 @@ ;;;*** ;;;### (autoloads (mwheel-install mouse-wheel-mode) "mwheel" "mwheel.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from mwheel.el (defvar mouse-wheel-mode nil "\ @@ -17759,7 +18031,7 @@ ;;;### (autoloads (network-connection network-connection-to-service ;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host ;;;;;; nslookup nslookup-host route arp netstat ipconfig ping traceroute) -;;;;;; "net-utils" "net/net-utils.el" (17178 22151)) +;;;;;; "net-utils" "net/net-utils.el" (17187 59902)) ;;; Generated autoloads from net/net-utils.el (autoload (quote traceroute) "net-utils" "\ @@ -17855,7 +18127,7 @@ ;;;;;; comment-kill comment-set-column comment-indent comment-indent-default ;;;;;; comment-normalize-vars comment-multi-line comment-padding ;;;;;; comment-style comment-column) "newcomment" "newcomment.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from newcomment.el (defalias (quote indent-for-comment) (quote comment-indent)) @@ -18036,8 +18308,28 @@ ;;;*** +;;;### (autoloads (newsticker-show-news newsticker-start) "newsticker" +;;;;;; "net/newsticker.el" (17229 28054)) +;;; Generated autoloads from net/newsticker.el + +(autoload (quote newsticker-start) "newsticker" "\ +Start the newsticker. +Start the timers for display and retrieval. If the newsticker, i.e. the +timers, are running already a warning message is printed unless +DO-NOT-COMPLAIN-IF-RUNNING is not nil. +Run `newsticker-start-hook' if newsticker was not running already. + +\(fn &optional DO-NOT-COMPLAIN-IF-RUNNING)" t nil) + +(autoload (quote newsticker-show-news) "newsticker" "\ +Switch to newsticker buffer. You may want to bind this to a key. + +\(fn)" t nil) + +;;;*** + ;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/nndiary.el (autoload (quote nndiary-generate-nov-databases) "nndiary" "\ @@ -18047,8 +18339,8 @@ ;;;*** -;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (17178 -;;;;;; 22146)) +;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from gnus/nndoc.el (autoload (quote nndoc-add-type) "nndoc" "\ @@ -18063,7 +18355,7 @@ ;;;*** ;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/nnfolder.el (autoload (quote nnfolder-generate-active-file) "nnfolder" "\ @@ -18075,7 +18367,7 @@ ;;;*** ;;;### (autoloads (nnkiboze-generate-groups) "nnkiboze" "gnus/nnkiboze.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/nnkiboze.el (autoload (quote nnkiboze-generate-groups) "nnkiboze" "\ @@ -18087,7 +18379,7 @@ ;;;*** ;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/nnml.el (autoload (quote nnml-generate-nov-databases) "nnml" "\ @@ -18098,7 +18390,7 @@ ;;;*** ;;;### (autoloads (nnsoup-revert-variables nnsoup-set-variables nnsoup-pack-replies) -;;;;;; "nnsoup" "gnus/nnsoup.el" (17178 22146)) +;;;;;; "nnsoup" "gnus/nnsoup.el" (17187 59901)) ;;; Generated autoloads from gnus/nnsoup.el (autoload (quote nnsoup-pack-replies) "nnsoup" "\ @@ -18119,7 +18411,7 @@ ;;;*** ;;;### (autoloads (disable-command enable-command disabled-command-function) -;;;;;; "novice" "novice.el" (17178 22151)) +;;;;;; "novice" "novice.el" (17187 59902)) ;;; Generated autoloads from novice.el (defvar disabled-command-function (quote disabled-command-function) "\ @@ -18152,7 +18444,7 @@ ;;;*** ;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el" -;;;;;; (17178 22154)) +;;;;;; (17187 59902)) ;;; Generated autoloads from textmodes/nroff-mode.el (autoload (quote nroff-mode) "nroff-mode" "\ @@ -18167,7 +18459,7 @@ ;;;*** ;;;### (autoloads (octave-help) "octave-hlp" "progmodes/octave-hlp.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/octave-hlp.el (autoload (quote octave-help) "octave-hlp" "\ @@ -18181,7 +18473,7 @@ ;;;*** ;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59926)) ;;; Generated autoloads from progmodes/octave-inf.el (autoload (quote inferior-octave) "octave-inf" "\ @@ -18204,7 +18496,7 @@ ;;;*** ;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el" -;;;;;; (17178 22153)) +;;;;;; (17238 21257)) ;;; Generated autoloads from progmodes/octave-mod.el (autoload (quote octave-mode) "octave-mod" "\ @@ -18303,7 +18595,7 @@ ;;;*** ;;;### (autoloads (edit-options list-options) "options" "obsolete/options.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from obsolete/options.el (autoload (quote list-options) "options" "\ @@ -18324,10 +18616,10 @@ ;;;*** -;;;### (autoloads (orgtbl-mode turn-on-orgtbl org-remember-handler -;;;;;; org-remember-annotation org-store-link org-diary org-agenda -;;;;;; org-agenda-mode org-mode) "org" "textmodes/org.el" (17178 -;;;;;; 22154)) +;;;### (autoloads (org-export-icalendar-combine-agenda-files org-export-icalendar-all-agenda-files +;;;;;; orgtbl-mode turn-on-orgtbl org-remember-handler org-remember-annotation +;;;;;; org-store-link org-diary org-agenda org-agenda-mode org-mode) +;;;;;; "org" "textmodes/org.el" (17244 4914)) ;;; Generated autoloads from textmodes/org.el (autoload (quote org-mode) "org" "\ @@ -18482,10 +18774,23 @@ \(fn &optional ARG)" t nil) +(autoload (quote org-export-icalendar-all-agenda-files) "org" "\ +Export all files in `org-agenda-files' to iCalendar .ics files. +Each iCalendar file will be located in the same directory as the Org-mode +file, but with extension `.ics'. + +\(fn)" t nil) + +(autoload (quote org-export-icalendar-combine-agenda-files) "org" "\ +Export all files in `org-agenda-files' to a single combined iCalendar file. +The file is stored under the name `org-combined-agenda-icalendar-file'. + +\(fn)" t nil) + ;;;*** ;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" -;;;;;; (17178 22152)) +;;;;;; (17226 24576)) ;;; Generated autoloads from outline.el (autoload (quote outline-mode) "outline" "\ @@ -18540,7 +18845,7 @@ ;;;*** -;;;### (autoloads (show-paren-mode) "paren" "paren.el" (17178 22152)) +;;;### (autoloads (show-paren-mode) "paren" "paren.el" (17187 59902)) ;;; Generated autoloads from paren.el (defvar show-paren-mode nil "\ @@ -18566,7 +18871,7 @@ ;;;*** ;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el" -;;;;;; (17178 20480)) +;;;;;; (17187 59880)) ;;; Generated autoloads from calendar/parse-time.el (autoload (quote parse-time-string) "parse-time" "\ @@ -18578,8 +18883,8 @@ ;;;*** -;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (17238 +;;;;;; 21257)) ;;; Generated autoloads from progmodes/pascal.el (autoload (quote pascal-mode) "pascal" "\ @@ -18599,7 +18904,7 @@ \\[pascal-beg-of-defun] - Move to beginning of current function. \\[pascal-end-of-defun] - Move to end of current function. \\[pascal-goto-defun] - Goto function prompted for in the minibuffer. -\\[pascal-outline] - Enter pascal-outline-mode (see also pascal-outline). +\\[pascal-outline-mode] - Enter `pascal-outline-mode'. Variables controlling indentation/edit style: @@ -18632,7 +18937,7 @@ ;;;*** ;;;### (autoloads (pc-bindings-mode) "pc-mode" "emulation/pc-mode.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emulation/pc-mode.el (autoload (quote pc-bindings-mode) "pc-mode" "\ @@ -18650,7 +18955,7 @@ ;;;*** ;;;### (autoloads (pc-selection-mode pc-selection-mode) "pc-select" -;;;;;; "emulation/pc-select.el" (17178 22144)) +;;;;;; "emulation/pc-select.el" (17187 59901)) ;;; Generated autoloads from emulation/pc-select.el (defvar pc-selection-mode nil "\ @@ -18727,8 +19032,8 @@ ;;;*** -;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from pcmpl-cvs.el (autoload (quote pcomplete/cvs) "pcmpl-cvs" "\ @@ -18739,7 +19044,7 @@ ;;;*** ;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip) -;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (17178 22152)) +;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (17187 59902)) ;;; Generated autoloads from pcmpl-gnu.el (autoload (quote pcomplete/gzip) "pcmpl-gnu" "\ @@ -18767,7 +19072,7 @@ ;;;*** ;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill) -;;;;;; "pcmpl-linux" "pcmpl-linux.el" (17178 22152)) +;;;;;; "pcmpl-linux" "pcmpl-linux.el" (17187 59902)) ;;; Generated autoloads from pcmpl-linux.el (autoload (quote pcomplete/kill) "pcmpl-linux" "\ @@ -18787,8 +19092,8 @@ ;;;*** -;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from pcmpl-rpm.el (autoload (quote pcomplete/rpm) "pcmpl-rpm" "\ @@ -18804,7 +19109,7 @@ ;;;### (autoloads (pcomplete/chgrp pcomplete/chown pcomplete/which ;;;;;; pcomplete/xargs pcomplete/rm pcomplete/rmdir pcomplete/cd) -;;;;;; "pcmpl-unix" "pcmpl-unix.el" (17178 22152)) +;;;;;; "pcmpl-unix" "pcmpl-unix.el" (17187 59902)) ;;; Generated autoloads from pcmpl-unix.el (autoload (quote pcomplete/cd) "pcmpl-unix" "\ @@ -18850,8 +19155,8 @@ ;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list ;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete -;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (17178 -;;;;;; 22152)) +;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (17226 +;;;;;; 24576)) ;;; Generated autoloads from pcomplete.el (autoload (quote pcomplete) "pcomplete" "\ @@ -18910,7 +19215,7 @@ ;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status ;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs" -;;;;;; "pcvs.el" (17178 22152)) +;;;;;; "pcvs.el" (17238 21257)) ;;; Generated autoloads from pcvs.el (autoload (quote cvs-checkout) "pcvs" "\ @@ -18987,7 +19292,7 @@ ;;;*** -;;;### (autoloads nil "pcvs-defs" "pcvs-defs.el" (17178 22152)) +;;;### (autoloads nil "pcvs-defs" "pcvs-defs.el" (17196 27217)) ;;; Generated autoloads from pcvs-defs.el (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] (quote (menu-item "Directory Status" cvs-status :help "A more verbose status of a workarea"))) (define-key m [checkout] (quote (menu-item "Checkout Module" cvs-checkout :help "Check out a module from the repository"))) (define-key m [update] (quote (menu-item "Update Directory" cvs-update :help "Fetch updates from the repository"))) (define-key m [examine] (quote (menu-item "Examine Directory" cvs-examine :help "Examine the current state of a workarea"))) (fset (quote cvs-global-menu) m))) @@ -18995,7 +19300,7 @@ ;;;*** ;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59914)) ;;; Generated autoloads from progmodes/perl-mode.el (autoload (quote perl-mode) "perl-mode" "\ @@ -19053,8 +19358,8 @@ ;;;### (autoloads (pgg-snarf-keys pgg-snarf-keys-region pgg-insert-key ;;;;;; pgg-verify pgg-verify-region pgg-sign pgg-sign-region pgg-decrypt ;;;;;; pgg-decrypt-region pgg-encrypt pgg-encrypt-region) "pgg" -;;;;;; "gnus/pgg.el" (17178 22146)) -;;; Generated autoloads from gnus/pgg.el +;;;;;; "pgg.el" (17187 59901)) +;;; Generated autoloads from pgg.el (autoload (quote pgg-encrypt-region) "pgg" "\ Encrypt the current region between START and END for RCPTS. @@ -19141,7 +19446,7 @@ ;;;*** ;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el" -;;;;;; (17178 22154)) +;;;;;; (17187 59902)) ;;; Generated autoloads from textmodes/picture.el (autoload (quote picture-mode) "picture" "\ @@ -19213,7 +19518,7 @@ ;;;*** ;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el" -;;;;;; (17178 22154)) +;;;;;; (17187 59902)) ;;; Generated autoloads from textmodes/po.el (autoload (quote po-find-file-coding-system) "po" "\ @@ -19224,7 +19529,7 @@ ;;;*** -;;;### (autoloads (pong) "pong" "play/pong.el" (17178 22152)) +;;;### (autoloads (pong) "pong" "play/pong.el" (17187 59902)) ;;; Generated autoloads from play/pong.el (autoload (quote pong) "pong" "\ @@ -19241,7 +19546,7 @@ ;;;*** ;;;### (autoloads (pp-eval-last-sexp pp-eval-expression pp pp-buffer -;;;;;; pp-to-string) "pp" "emacs-lisp/pp.el" (17178 22144)) +;;;;;; pp-to-string) "pp" "emacs-lisp/pp.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/pp.el (autoload (quote pp-to-string) "pp" "\ @@ -19299,7 +19604,7 @@ ;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview ;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript ;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el" -;;;;;; (17178 22152)) +;;;;;; (17226 24577)) ;;; Generated autoloads from printing.el (autoload (quote pr-interface) "printing" "\ @@ -19887,7 +20192,7 @@ ;;;*** ;;;### (autoloads (run-prolog prolog-mode) "prolog" "progmodes/prolog.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/prolog.el (autoload (quote prolog-mode) "prolog" "\ @@ -19907,7 +20212,7 @@ ;;;*** -;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (17178 22153)) +;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (17187 59902)) ;;; Generated autoloads from ps-bdf.el (defvar bdf-directory-list (if (memq system-type (quote (ms-dos windows-nt))) (list (expand-file-name "fonts/bdf" installation-directory)) (quote ("/usr/local/share/emacs/fonts/bdf"))) "\ @@ -19916,8 +20221,8 @@ ;;;*** -;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (17226 +;;;;;; 24577)) ;;; Generated autoloads from progmodes/ps-mode.el (autoload (quote ps-mode) "ps-mode" "\ @@ -19966,7 +20271,7 @@ ;;;### (autoloads (ps-mule-begin-page ps-mule-begin-job ps-mule-encode-header-string ;;;;;; ps-mule-initialize ps-mule-plot-composition ps-mule-plot-string ;;;;;; ps-mule-set-ascii-font ps-mule-prepare-ascii-font ps-multibyte-buffer) -;;;;;; "ps-mule" "ps-mule.el" (17178 22153)) +;;;;;; "ps-mule" "ps-mule.el" (17226 24577)) ;;; Generated autoloads from ps-mule.el (defvar ps-multibyte-buffer nil "\ @@ -20087,8 +20392,8 @@ ;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer ;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces ;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type -;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (17178 -;;;;;; 22153)) +;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (17226 +;;;;;; 24577)) ;;; Generated autoloads from ps-print.el (defvar ps-page-dimensions-database (list (list (quote a4) (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list (quote a3) (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list (quote letter) (* 72 8.5) (* 72 11.0) "Letter") (list (quote legal) (* 72 8.5) (* 72 14.0) "Legal") (list (quote letter-small) (* 72 7.68) (* 72 10.16) "LetterSmall") (list (quote tabloid) (* 72 11.0) (* 72 17.0) "Tabloid") (list (quote ledger) (* 72 17.0) (* 72 11.0) "Ledger") (list (quote statement) (* 72 5.5) (* 72 8.5) "Statement") (list (quote executive) (* 72 7.5) (* 72 10.0) "Executive") (list (quote a4small) (* 72 7.47) (* 72 10.85) "A4Small") (list (quote b4) (* 72 10.125) (* 72 14.33) "B4") (list (quote b5) (* 72 7.16) (* 72 10.125) "B5")) "\ @@ -20285,7 +20590,7 @@ ;;;*** ;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el" -;;;;;; (17178 22153)) +;;;;;; (17238 21257)) ;;; Generated autoloads from progmodes/python.el (add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode))) @@ -20349,7 +20654,7 @@ ;;;*** ;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/qp.el (autoload (quote quoted-printable-decode-region) "qp" "\ @@ -20372,7 +20677,7 @@ ;;;;;; quail-defrule quail-install-decode-map quail-install-map ;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout ;;;;;; quail-define-package quail-use-package quail-title) "quail" -;;;;;; "international/quail.el" (17178 20480)) +;;;;;; "international/quail.el" (17226 24576)) ;;; Generated autoloads from international/quail.el (autoload (quote quail-title) "quail" "\ @@ -20603,8 +20908,8 @@ ;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls ;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url -;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (17178 -;;;;;; 22151)) +;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from net/quickurl.el (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ @@ -20675,8 +20980,25 @@ ;;;*** -;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (17178 -;;;;;; 22151)) +;;;### (autoloads (rcirc) "rcirc" "net/rcirc.el" (17244 4913)) +;;; Generated autoloads from net/rcirc.el + +(autoload (quote rcirc) "rcirc" "\ +Connect to IRC. + +If any of the the optional SERVER, PORT, NICK or CHANNELS are not +supplied, they are taken from the variables `rcirc-server', +`rcirc-port', `rcirc-nick', and `rcirc-startup-channels', +respectively. + +\(fn &optional SERVER PORT NICK CHANNELS)" t nil) + +(defalias (quote irc) (quote rcirc)) + +;;;*** + +;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (17226 +;;;;;; 24576)) ;;; Generated autoloads from net/rcompile.el (autoload (quote remote-compile) "rcompile" "\ @@ -20688,7 +21010,7 @@ ;;;*** ;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/re-builder.el (defalias (quote regexp-builder) (quote re-builder)) @@ -20700,7 +21022,7 @@ ;;;*** -;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17178 22153)) +;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17238 21257)) ;;; Generated autoloads from recentf.el (defvar recentf-mode nil "\ @@ -20721,6 +21043,8 @@ When recentf mode is enabled, it maintains a menu for visiting files that were operated on recently. +\\{recentf-mode-map} + \(fn &optional ARG)" t nil) ;;;*** @@ -20728,8 +21052,8 @@ ;;;### (autoloads (clear-rectangle string-insert-rectangle string-rectangle ;;;;;; delete-whitespace-rectangle open-rectangle insert-rectangle ;;;;;; yank-rectangle kill-rectangle extract-rectangle delete-extract-rectangle -;;;;;; delete-rectangle move-to-column-force) "rect" "rect.el" (17178 -;;;;;; 22153)) +;;;;;; delete-rectangle move-to-column-force) "rect" "rect.el" (17226 +;;;;;; 24577)) ;;; Generated autoloads from rect.el (autoload (quote move-to-column-force) "rect" "\ @@ -20851,8 +21175,8 @@ ;;;*** -;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (17178 -;;;;;; 22154)) +;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from textmodes/refill.el (autoload (quote refill-mode) "refill" "\ @@ -20868,7 +21192,7 @@ ;;;*** ;;;### (autoloads (reftex-reset-scanning-information reftex-mode -;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17178 22154)) +;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17226 24578)) ;;; Generated autoloads from textmodes/reftex.el (autoload (quote turn-on-reftex) "reftex" "\ @@ -20918,7 +21242,7 @@ ;;;*** ;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" -;;;;;; (17178 22154)) +;;;;;; (17226 24577)) ;;; Generated autoloads from textmodes/reftex-cite.el (autoload (quote reftex-citation) "reftex-cite" "\ @@ -20948,7 +21272,7 @@ ;;;*** ;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el" -;;;;;; (17178 22154)) +;;;;;; (17226 24577)) ;;; Generated autoloads from textmodes/reftex-global.el (autoload (quote reftex-isearch-minor-mode) "reftex-global" "\ @@ -20965,7 +21289,7 @@ ;;;*** ;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el" -;;;;;; (17178 22154)) +;;;;;; (17226 24577)) ;;; Generated autoloads from textmodes/reftex-index.el (autoload (quote reftex-index-phrases-mode) "reftex-index" "\ @@ -20998,7 +21322,7 @@ ;;;*** ;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" -;;;;;; (17178 22154)) +;;;;;; (17226 24578)) ;;; Generated autoloads from textmodes/reftex-parse.el (autoload (quote reftex-all-document-files) "reftex-parse" "\ @@ -21011,7 +21335,7 @@ ;;;*** ;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/regexp-opt.el (autoload (quote regexp-opt) "regexp-opt" "\ @@ -21038,7 +21362,7 @@ ;;;*** -;;;### (autoloads (repeat) "repeat" "repeat.el" (17178 22153)) +;;;### (autoloads (repeat) "repeat" "repeat.el" (17187 59902)) ;;; Generated autoloads from repeat.el (autoload (quote repeat) "repeat" "\ @@ -21056,7 +21380,7 @@ ;;;*** ;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el" -;;;;;; (17178 22150)) +;;;;;; (17187 59902)) ;;; Generated autoloads from mail/reporter.el (autoload (quote reporter-submit-bug-report) "reporter" "\ @@ -21088,7 +21412,7 @@ ;;;*** ;;;### (autoloads (reposition-window) "reposition" "reposition.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from reposition.el (autoload (quote reposition-window) "reposition" "\ @@ -21115,8 +21439,8 @@ ;;;*** -;;;### (autoloads (resume-suspend-hook) "resume" "resume.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (resume-suspend-hook) "resume" "resume.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from resume.el (autoload (quote resume-suspend-hook) "resume" "\ @@ -21127,7 +21451,7 @@ ;;;*** ;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from reveal.el (autoload (quote reveal-mode) "reveal" "\ @@ -21164,7 +21488,7 @@ ;;;### (autoloads (file-name-shadow-mode file-name-shadow-tty-properties ;;;;;; file-name-shadow-properties) "rfn-eshadow" "rfn-eshadow.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from rfn-eshadow.el (defvar file-name-shadow-properties (quote (face file-name-shadow field shadow)) "\ @@ -21209,7 +21533,7 @@ ;;;*** ;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/ring.el (autoload (quote ring-p) "ring" "\ @@ -21224,7 +21548,7 @@ ;;;*** -;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (17178 22151)) +;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (17187 59902)) ;;; Generated autoloads from net/rlogin.el (add-hook 'same-window-regexps "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)") @@ -21275,8 +21599,8 @@ ;;;;;; rmail-mail-new-frame rmail-primary-inbox-list rmail-delete-after-output ;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers ;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names -;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17178 -;;;;;; 22151)) +;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17226 +;;;;;; 24576)) ;;; Generated autoloads from mail/rmail.el (autoload (quote rmail-movemail-variant-p) "rmail" "\ @@ -21534,7 +21858,7 @@ ;;;*** ;;;### (autoloads (rmail-edit-current-message) "rmailedit" "mail/rmailedit.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from mail/rmailedit.el (autoload (quote rmail-edit-current-message) "rmailedit" "\ @@ -21546,7 +21870,7 @@ ;;;### (autoloads (rmail-next-labeled-message rmail-previous-labeled-message ;;;;;; rmail-read-label rmail-kill-label rmail-add-label) "rmailkwd" -;;;;;; "mail/rmailkwd.el" (17178 22151)) +;;;;;; "mail/rmailkwd.el" (17187 59902)) ;;; Generated autoloads from mail/rmailkwd.el (autoload (quote rmail-add-label) "rmailkwd" "\ @@ -21585,7 +21909,7 @@ ;;;*** ;;;### (autoloads (set-rmail-inbox-list) "rmailmsc" "mail/rmailmsc.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from mail/rmailmsc.el (autoload (quote set-rmail-inbox-list) "rmailmsc" "\ @@ -21599,7 +21923,7 @@ ;;;### (autoloads (rmail-output-body-to-file rmail-output rmail-fields-not-to-output ;;;;;; rmail-output-to-rmail-file rmail-output-file-alist) "rmailout" -;;;;;; "mail/rmailout.el" (17178 22151)) +;;;;;; "mail/rmailout.el" (17226 24576)) ;;; Generated autoloads from mail/rmailout.el (defvar rmail-output-file-alist nil "\ @@ -21666,8 +21990,8 @@ ;;;### (autoloads (rmail-sort-by-labels rmail-sort-by-lines rmail-sort-by-correspondent ;;;;;; rmail-sort-by-recipient rmail-sort-by-author rmail-sort-by-subject -;;;;;; rmail-sort-by-date) "rmailsort" "mail/rmailsort.el" (17178 -;;;;;; 22151)) +;;;;;; rmail-sort-by-date) "rmailsort" "mail/rmailsort.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from mail/rmailsort.el (autoload (quote rmail-sort-by-date) "rmailsort" "\ @@ -21719,7 +22043,7 @@ ;;;;;; rmail-summary-by-senders rmail-summary-by-topic rmail-summary-by-regexp ;;;;;; rmail-summary-by-recipients rmail-summary-by-labels rmail-summary ;;;;;; rmail-summary-line-count-flag rmail-summary-scroll-between-messages) -;;;;;; "rmailsum" "mail/rmailsum.el" (17178 22151)) +;;;;;; "rmailsum" "mail/rmailsum.el" (17226 24576)) ;;; Generated autoloads from mail/rmailsum.el (defvar rmail-summary-scroll-between-messages t "\ @@ -21801,7 +22125,7 @@ ;;;*** ;;;### (autoloads (news-post-news) "rnewspost" "obsolete/rnewspost.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from obsolete/rnewspost.el (autoload (quote news-post-news) "rnewspost" "\ @@ -21814,7 +22138,7 @@ ;;;*** ;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region -;;;;;; rot13-string rot13) "rot13" "rot13.el" (17178 22153)) +;;;;;; rot13-string rot13) "rot13" "rot13.el" (17187 59902)) ;;; Generated autoloads from rot13.el (autoload (quote rot13) "rot13" "\ @@ -21855,7 +22179,7 @@ ;;;;;; resize-minibuffer-frame-max-height resize-minibuffer-frame ;;;;;; resize-minibuffer-window-exactly resize-minibuffer-window-max-height ;;;;;; resize-minibuffer-mode) "rsz-mini" "obsolete/rsz-mini.el" -;;;;;; (17178 22152)) +;;;;;; (17187 59902)) ;;; Generated autoloads from obsolete/rsz-mini.el (defvar resize-minibuffer-mode nil "\ @@ -21895,8 +22219,8 @@ ;;;*** -;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from ruler-mode.el (autoload (quote ruler-mode) "ruler-mode" "\ @@ -21906,8 +22230,8 @@ ;;;*** -;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from emacs-lisp/rx.el (autoload (quote rx-to-string) "rx" "\ @@ -22214,8 +22538,34 @@ ;;;*** +;;;### (autoloads (savehist-save savehist-load) "savehist" "savehist.el" +;;;;;; (17254 63791)) +;;; Generated autoloads from savehist.el + +(autoload (quote savehist-load) "savehist" "\ +Load the minibuffer histories from `savehist-file'. +Unless NO-HOOK is specified, the function will also add the save function +to `kill-emacs-hook' and on a timer, ensuring that the minibuffer contents +will be saved before leaving Emacs. + +This function should be normally used from your Emacs init file. Since it +removes your current minibuffer histories, it is unwise to call it at any +other time. + +\(fn &optional NO-HOOK)" t nil) + +(autoload (quote savehist-save) "savehist" "\ +Save the histories from `savehist-history-variables' to `savehist-file'. +Unbound symbols referenced in `savehist-history-variables' are ignored. +If AUTO-SAVE is non-nil, compare the saved contents to the one last saved, + and don't save the buffer if they are the same. + +\(fn &optional AUTO-SAVE)" t nil) + +;;;*** + ;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el" -;;;;;; (17178 22153)) +;;;;;; (17226 24577)) ;;; Generated autoloads from progmodes/scheme.el (autoload (quote scheme-mode) "scheme" "\ @@ -22257,7 +22607,7 @@ ;;;*** ;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/score-mode.el (autoload (quote gnus-score-mode) "score-mode" "\ @@ -22270,8 +22620,8 @@ ;;;*** -;;;### (autoloads (scribe-mode) "scribe" "obsolete/scribe.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (scribe-mode) "scribe" "obsolete/scribe.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from obsolete/scribe.el (autoload (quote scribe-mode) "scribe" "\ @@ -22296,7 +22646,7 @@ ;;;*** ;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from scroll-all.el (defvar scroll-all-mode nil "\ @@ -22320,7 +22670,7 @@ ;;;*** ;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el" -;;;;;; (17178 22134)) +;;;;;; (17187 59900)) ;;; Generated autoloads from scroll-lock.el (autoload (quote scroll-lock-mode) "scroll-lock" "\ @@ -22335,12 +22685,14 @@ ;;;*** ;;;### (autoloads (mail-other-frame mail-other-window mail mail-mailing-lists -;;;;;; mail-mode mail-default-directory mail-signature mail-citation-hook -;;;;;; mail-personal-alias-file mail-alias-file mail-default-reply-to -;;;;;; mail-archive-file-name mail-header-separator send-mail-function -;;;;;; mail-yank-ignored-headers mail-interactive mail-self-blind -;;;;;; mail-specify-envelope-from mail-from-style) "sendmail" "mail/sendmail.el" -;;;;;; (17178 22151)) +;;;;;; mail-mode mail-send-nonascii mail-bury-selects-summary mail-default-headers +;;;;;; mail-default-directory mail-signature-file mail-signature +;;;;;; mail-citation-prefix-regexp mail-citation-hook mail-indentation-spaces +;;;;;; mail-yank-prefix mail-setup-hook mail-personal-alias-file +;;;;;; mail-alias-file mail-default-reply-to mail-archive-file-name +;;;;;; mail-header-separator send-mail-function mail-yank-ignored-headers +;;;;;; mail-interactive mail-self-blind mail-specify-envelope-from +;;;;;; mail-from-style) "sendmail" "mail/sendmail.el" (17244 4913)) ;;; Generated autoloads from mail/sendmail.el (defvar mail-from-style (quote angles) "\ @@ -22392,7 +22744,7 @@ (custom-autoload (quote mail-yank-ignored-headers) "sendmail") -(defvar send-mail-function (quote sendmail-send-it) "\ +(defvar send-mail-function (if (and window-system (memq system-type (quote (darwin windows-nt)))) (quote mailclient-send-it) (quote sendmail-send-it)) "\ Function to call to send the current buffer as mail. The headers should be delimited by a line which is not a valid RFC822 header or continuation line, @@ -22436,6 +22788,32 @@ (custom-autoload (quote mail-personal-alias-file) "sendmail") +(defvar mail-setup-hook nil "\ +Normal hook, run each time a new outgoing mail message is initialized. +The function `mail-setup' runs this hook.") + +(custom-autoload (quote mail-setup-hook) "sendmail") + +(defvar mail-aliases t "\ +Alist of mail address aliases, +or t meaning should be initialized from your mail aliases file. +\(The file's name is normally `~/.mailrc', but `mail-personal-alias-file' +can specify a different file name.) +The alias definitions in the file have this form: + alias ALIAS MEANING") + +(defvar mail-yank-prefix nil "\ +*Prefix insert on lines of yanked message being replied to. +nil means use indentation.") + +(custom-autoload (quote mail-yank-prefix) "sendmail") + +(defvar mail-indentation-spaces 3 "\ +*Number of spaces to insert at the beginning of each cited line. +Used by `mail-yank-original' via `mail-indent-citation'.") + +(custom-autoload (quote mail-indentation-spaces) "sendmail") + (defvar mail-citation-hook nil "\ *Hook for modifying a citation just inserted in the mail buffer. Each hook function can find the citation between (point) and (mark t), @@ -22449,6 +22827,14 @@ (custom-autoload (quote mail-citation-hook) "sendmail") +(defvar mail-citation-prefix-regexp "[ ]*[-a-z0-9A-Z]*>+[ ]*\\|[ ]*" "\ +*Regular expression to match a citation prefix plus whitespace. +It should match whatever sort of citation prefixes you want to handle, +with whitespace before and after; it should also match just whitespace. +The default value matches citations like `foo-bar>' plus whitespace.") + +(custom-autoload (quote mail-citation-prefix-regexp) "sendmail") + (defvar mail-signature nil "\ *Text inserted at end of mail buffer when a message is initialized. If t, it means to insert the contents of the file `mail-signature-file'. @@ -22460,6 +22846,11 @@ (custom-autoload (quote mail-signature) "sendmail") +(defvar mail-signature-file "~/.signature" "\ +*File containing the text inserted at end of mail buffer.") + +(custom-autoload (quote mail-signature-file) "sendmail") + (defvar mail-default-directory "~/" "\ *Directory for mail buffers. Value of `default-directory' for mail buffers. @@ -22467,6 +22858,32 @@ (custom-autoload (quote mail-default-directory) "sendmail") +(defvar mail-default-headers nil "\ +*A string containing header lines, to be inserted in outgoing messages. +It is inserted before you edit the message, +so you can edit or delete these lines.") + +(custom-autoload (quote mail-default-headers) "sendmail") + +(defvar mail-bury-selects-summary t "\ +*If non-nil, try to show RMAIL summary buffer after returning from mail. +The functions \\[mail-send-on-exit] or \\[mail-dont-send] select +the RMAIL summary buffer before returning, if it exists and this variable +is non-nil.") + +(custom-autoload (quote mail-bury-selects-summary) "sendmail") + +(defvar mail-send-nonascii (quote mime) "\ +*Specify whether to allow sending non-ASCII characters in mail. +If t, that means do allow it. nil means don't allow it. +`query' means ask the user each time. +`mime' means add an appropriate MIME header if none already present. +The default is `mime'. +Including non-ASCII characters in a mail message can be problematical +for the recipient, who may not know how to decode them properly.") + +(custom-autoload (quote mail-send-nonascii) "sendmail") + (autoload (quote mail-mode) "sendmail" "\ Major mode for editing mail to be sent. Like Text Mode but with these additional commands: @@ -22506,9 +22923,9 @@ Default coding system for encoding the outgoing mail. This variable is used only when `sendmail-coding-system' is nil. -This variable is set/changed by the command set-language-environment. +This variable is set/changed by the command `set-language-environment'. User should not set this variable manually, -instead use sendmail-coding-system to get a constant encoding +instead use `sendmail-coding-system' to get a constant encoding of outgoing mails regardless of the current language environment. See also the function `select-message-coding-system'.") (add-hook 'same-window-buffer-names "*mail*") @@ -22540,8 +22957,13 @@ The normal hook `mail-setup-hook' is run after the message is initialized. It can add more default fields to the message. -When calling from a program, the first argument if non-nil says -not to erase the existing contents of the `*mail*' buffer. +The first argument, NOERASE, determines what to do when there is +an existing modified `*mail*' buffer. If NOERASE is nil, the +existing mail buffer is used, and the user is prompted whether to +keep the old contents or to erase them. If NOERASE has the value +`new', a new mail buffer will be created instead of using the old +one. Any other non-nil value means to always select the old +buffer without erasing the contents. The second through fifth arguments, TO, SUBJECT, IN-REPLY-TO and CC, specify if non-nil @@ -22571,7 +22993,7 @@ ;;;*** ;;;### (autoloads (server-mode server-start server-getenv) "server" -;;;;;; "server.el" (17178 22153)) +;;;;;; "server.el" (17254 64443)) ;;; Generated autoloads from server.el (autoload (quote server-getenv) "server" "\ @@ -22619,7 +23041,7 @@ ;;;*** -;;;### (autoloads (ses-mode) "ses" "ses.el" (17178 22153)) +;;;### (autoloads (ses-mode) "ses" "ses.el" (17226 24577)) ;;; Generated autoloads from ses.el (autoload (quote ses-mode) "ses" "\ @@ -22638,7 +23060,7 @@ ;;;*** ;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el" -;;;;;; (17178 22154)) +;;;;;; (17187 59902)) ;;; Generated autoloads from textmodes/sgml-mode.el (autoload (quote sgml-mode) "sgml-mode" "\ @@ -22706,7 +23128,7 @@ ;;;*** ;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" -;;;;;; (17178 22153)) +;;;;;; (17244 4914)) ;;; Generated autoloads from progmodes/sh-script.el (autoload (quote sh-mode) "sh-script" "\ @@ -22769,7 +23191,7 @@ ;;;*** -;;;### (autoloads (sha1) "sha1" "gnus/sha1.el" (17178 22146)) +;;;### (autoloads (sha1) "sha1" "gnus/sha1.el" (17187 59901)) ;;; Generated autoloads from gnus/sha1.el (autoload (quote sha1) "sha1" "\ @@ -22784,7 +23206,7 @@ ;;;*** ;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/shadow.el (autoload (quote list-load-path-shadows) "shadow" "\ @@ -22831,8 +23253,8 @@ ;;;*** ;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group -;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (17178 -;;;;;; 22153)) +;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (17226 +;;;;;; 24577)) ;;; Generated autoloads from shadowfile.el (autoload (quote shadow-define-cluster) "shadowfile" "\ @@ -22871,7 +23293,7 @@ ;;;*** ;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el" -;;;;;; (17178 22153)) +;;;;;; (17226 24577)) ;;; Generated autoloads from shell.el (defvar shell-dumb-shell-regexp "cmd\\(proxy\\)?\\.exe" "\ @@ -22918,7 +23340,7 @@ ;;;*** ;;;### (autoloads (sieve-upload-and-bury sieve-upload sieve-manage) -;;;;;; "sieve" "gnus/sieve.el" (17178 22146)) +;;;;;; "sieve" "gnus/sieve.el" (17226 24575)) ;;; Generated autoloads from gnus/sieve.el (autoload (quote sieve-manage) "sieve" "\ @@ -22939,7 +23361,7 @@ ;;;*** ;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/sieve-mode.el (autoload (quote sieve-mode) "sieve-mode" "\ @@ -22954,8 +23376,8 @@ ;;;*** -;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from progmodes/simula.el (autoload (quote simula-mode) "simula" "\ @@ -23004,7 +23426,7 @@ ;;;*** ;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new -;;;;;; define-skeleton) "skeleton" "skeleton.el" (17178 22153)) +;;;;;; define-skeleton) "skeleton" "skeleton.el" (17187 59902)) ;;; Generated autoloads from skeleton.el (defvar skeleton-filter (quote identity) "\ @@ -23114,7 +23536,7 @@ ;;;*** ;;;### (autoloads (smerge-mode smerge-ediff) "smerge-mode" "smerge-mode.el" -;;;;;; (17178 22153)) +;;;;;; (17226 24577)) ;;; Generated autoloads from smerge-mode.el (autoload (quote smerge-ediff) "smerge-mode" "\ @@ -23133,7 +23555,7 @@ ;;;*** ;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/smiley.el (autoload (quote smiley-region) "smiley" "\ @@ -23151,7 +23573,7 @@ ;;;*** ;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" -;;;;;; "mail/smtpmail.el" (17178 22151)) +;;;;;; "mail/smtpmail.el" (17187 59902)) ;;; Generated autoloads from mail/smtpmail.el (autoload (quote smtpmail-send-it) "smtpmail" "\ @@ -23166,7 +23588,7 @@ ;;;*** -;;;### (autoloads (snake) "snake" "play/snake.el" (17178 22152)) +;;;### (autoloads (snake) "snake" "play/snake.el" (17187 59902)) ;;; Generated autoloads from play/snake.el (autoload (quote snake) "snake" "\ @@ -23190,7 +23612,7 @@ ;;;*** ;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from net/snmp-mode.el (autoload (quote snmp-mode) "snmp-mode" "\ @@ -23221,7 +23643,7 @@ ;;;### (autoloads (solar-equinoxes-solstices sunrise-sunset calendar-location-name ;;;;;; calendar-longitude calendar-latitude calendar-time-display-form) -;;;;;; "solar" "calendar/solar.el" (17178 22143)) +;;;;;; "solar" "calendar/solar.el" (17229 28052)) ;;; Generated autoloads from calendar/solar.el (defvar calendar-time-display-form (quote (12-hours ":" minutes am-pm (if time-zone " (") time-zone (if time-zone ")"))) "\ @@ -23292,8 +23714,8 @@ ;;;*** -;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from play/solitaire.el (autoload (quote solitaire) "solitaire" "\ @@ -23370,7 +23792,7 @@ ;;;### (autoloads (reverse-region sort-columns sort-regexp-fields ;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs -;;;;;; sort-lines sort-subr) "sort" "sort.el" (17178 22153)) +;;;;;; sort-lines sort-subr) "sort" "sort.el" (17187 59902)) ;;; Generated autoloads from sort.el (autoload (quote sort-subr) "sort" "\ @@ -23512,8 +23934,8 @@ ;;;*** -;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (17178 -;;;;;; 22146)) +;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from gnus/spam.el (autoload (quote spam-initialize) "spam" "\ @@ -23525,7 +23947,7 @@ ;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file ;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report" -;;;;;; "gnus/spam-report.el" (17178 22146)) +;;;;;; "gnus/spam-report.el" (17226 24576)) ;;; Generated autoloads from gnus/spam-report.el (autoload (quote spam-report-process-queue) "spam-report" "\ @@ -23568,7 +23990,7 @@ ;;;*** ;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar" -;;;;;; "speedbar.el" (17178 22153)) +;;;;;; "speedbar.el" (17238 21257)) ;;; Generated autoloads from speedbar.el (defalias (quote speedbar) (quote speedbar-frame-mode)) @@ -23593,7 +24015,7 @@ ;;;*** ;;;### (autoloads (spell-string spell-region spell-word spell-buffer) -;;;;;; "spell" "textmodes/spell.el" (17178 22154)) +;;;;;; "spell" "textmodes/spell.el" (17187 59902)) ;;; Generated autoloads from textmodes/spell.el (put (quote spell-filter) (quote risky-local-variable) t) @@ -23629,8 +24051,8 @@ ;;;*** -;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (17178 -;;;;;; 22152)) +;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from play/spook.el (autoload (quote spook) "spook" "\ @@ -23648,8 +24070,8 @@ ;;;### (autoloads (sql-linter sql-db2 sql-interbase sql-postgres ;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix ;;;;;; sql-sybase sql-oracle sql-product-interactive sql-mode sql-help -;;;;;; sql-add-product-keywords) "sql" "progmodes/sql.el" (17178 -;;;;;; 22153)) +;;;;;; sql-add-product-keywords) "sql" "progmodes/sql.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from progmodes/sql.el (autoload (quote sql-add-product-keywords) "sql" "\ @@ -24080,8 +24502,8 @@ ;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes ;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke ;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke -;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (17178 -;;;;;; 22153)) +;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (17226 +;;;;;; 24577)) ;;; Generated autoloads from strokes.el (autoload (quote strokes-global-set-stroke) "strokes" "\ @@ -24192,7 +24614,7 @@ ;;;*** ;;;### (autoloads (studlify-buffer studlify-word studlify-region) -;;;;;; "studly" "play/studly.el" (17178 20480)) +;;;;;; "studly" "play/studly.el" (17187 59879)) ;;; Generated autoloads from play/studly.el (autoload (quote studlify-region) "studly" "\ @@ -24213,7 +24635,7 @@ ;;;*** ;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el" -;;;;;; (17178 22151)) +;;;;;; (17229 28053)) ;;; Generated autoloads from mail/supercite.el (autoload (quote sc-cite-original) "supercite" "\ @@ -24245,8 +24667,8 @@ ;;;*** -;;;### (autoloads (syntax-ppss) "syntax" "emacs-lisp/syntax.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (syntax-ppss) "syntax" "emacs-lisp/syntax.el" (17244 +;;;;;; 4913)) ;;; Generated autoloads from emacs-lisp/syntax.el (autoload (quote syntax-ppss) "syntax" "\ @@ -24259,7 +24681,7 @@ ;;;*** -;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (17178 22153)) +;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (17187 59902)) ;;; Generated autoloads from tabify.el (autoload (quote untabify) "tabify" "\ @@ -24294,7 +24716,7 @@ ;;;;;; table-recognize table-insert-row-column table-insert-column ;;;;;; table-insert-row table-insert table-point-left-cell-hook ;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook) -;;;;;; "table" "textmodes/table.el" (17178 22154)) +;;;;;; "table" "textmodes/table.el" (17187 59902)) ;;; Generated autoloads from textmodes/table.el (defvar table-cell-map-hook nil "\ @@ -24882,7 +25304,7 @@ ;;;*** -;;;### (autoloads (talk talk-connect) "talk" "talk.el" (17178 22153)) +;;;### (autoloads (talk talk-connect) "talk" "talk.el" (17187 59902)) ;;; Generated autoloads from talk.el (autoload (quote talk-connect) "talk" "\ @@ -24897,7 +25319,7 @@ ;;;*** -;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (17178 22153)) +;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (17244 4914)) ;;; Generated autoloads from tar-mode.el (autoload (quote tar-mode) "tar-mode" "\ @@ -24921,7 +25343,7 @@ ;;;*** ;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl" -;;;;;; "progmodes/tcl.el" (17178 20481)) +;;;;;; "progmodes/tcl.el" (17187 59880)) ;;; Generated autoloads from progmodes/tcl.el (autoload (quote tcl-mode) "tcl" "\ @@ -24972,7 +25394,7 @@ ;;;*** -;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (17178 22151)) +;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (17187 59902)) ;;; Generated autoloads from net/telnet.el (add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)") @@ -24999,8 +25421,8 @@ ;;;*** -;;;### (autoloads (ansi-term term make-term) "term" "term.el" (17178 -;;;;;; 22153)) +;;;### (autoloads (ansi-term term make-term) "term" "term.el" (17244 +;;;;;; 4914)) ;;; Generated autoloads from term.el (autoload (quote make-term) "term" "\ @@ -25028,8 +25450,8 @@ ;;;*** -;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (17178 -;;;;;; 22154)) +;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (17226 +;;;;;; 24577)) ;;; Generated autoloads from terminal.el (autoload (quote terminal-emulator) "terminal" "\ @@ -25066,7 +25488,7 @@ ;;;*** ;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/testcover.el (autoload (quote testcover-this-defun) "testcover" "\ @@ -25076,7 +25498,7 @@ ;;;*** -;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17178 22152)) +;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17187 59902)) ;;; Generated autoloads from play/tetris.el (autoload (quote tetris) "tetris" "\ @@ -25107,7 +25529,7 @@ ;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command ;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp ;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el" -;;;;;; (17178 22154)) +;;;;;; (17238 21257)) ;;; Generated autoloads from textmodes/tex-mode.el (defvar tex-shell-file-name nil "\ @@ -25409,7 +25831,7 @@ ;;;*** ;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer) -;;;;;; "texinfmt" "textmodes/texinfmt.el" (17178 22154)) +;;;;;; "texinfmt" "textmodes/texinfmt.el" (17187 59902)) ;;; Generated autoloads from textmodes/texinfmt.el (autoload (quote texinfo-format-buffer) "texinfmt" "\ @@ -25449,7 +25871,7 @@ ;;;*** ;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote) -;;;;;; "texinfo" "textmodes/texinfo.el" (17178 22154)) +;;;;;; "texinfo" "textmodes/texinfo.el" (17244 4914)) ;;; Generated autoloads from textmodes/texinfo.el (defvar texinfo-open-quote "``" "\ @@ -25536,7 +25958,7 @@ ;;;### (autoloads (thai-auto-composition-mode thai-composition-function ;;;;;; thai-post-read-conversion thai-compose-buffer thai-compose-string ;;;;;; thai-compose-region) "thai-util" "language/thai-util.el" -;;;;;; (17178 22147)) +;;;;;; (17187 59901)) ;;; Generated autoloads from language/thai-util.el (autoload (quote thai-compose-region) "thai-util" "\ @@ -25580,7 +26002,7 @@ ;;;### (autoloads (list-at-point number-at-point symbol-at-point ;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing) -;;;;;; "thingatpt" "thingatpt.el" (17178 22154)) +;;;;;; "thingatpt" "thingatpt.el" (17187 59902)) ;;; Generated autoloads from thingatpt.el (autoload (quote forward-thing) "thingatpt" "\ @@ -25637,7 +26059,7 @@ ;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show-all thumbs-dired-show-marked ;;;;;; thumbs-show-all-from-dir thumbs-find-thumb) "thumbs" "thumbs.el" -;;;;;; (17178 22154)) +;;;;;; (17187 59902)) ;;; Generated autoloads from thumbs.el (autoload (quote thumbs-find-thumb) "thumbs" "\ @@ -25676,7 +26098,7 @@ ;;;;;; tibetan-composition-function tibetan-decompose-string tibetan-decompose-region ;;;;;; tibetan-compose-region tibetan-compose-string tibetan-transcription-to-tibetan ;;;;;; tibetan-tibetan-to-transcription tibetan-char-p) "tibet-util" -;;;;;; "language/tibet-util.el" (17178 20481)) +;;;;;; "language/tibet-util.el" (17187 59881)) ;;; Generated autoloads from language/tibet-util.el (autoload (quote tibetan-char-p) "tibet-util" "\ @@ -25755,7 +26177,7 @@ ;;;*** ;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el" -;;;;;; (17178 22154)) +;;;;;; (17226 24578)) ;;; Generated autoloads from textmodes/tildify.el (autoload (quote tildify-region) "tildify" "\ @@ -25779,7 +26201,7 @@ ;;;*** ;;;### (autoloads (display-time-mode display-time display-time-day-and-date) -;;;;;; "time" "time.el" (17178 22154)) +;;;;;; "time" "time.el" (17187 59902)) ;;; Generated autoloads from time.el (defvar display-time-day-and-date nil "\ @@ -25822,8 +26244,8 @@ ;;;### (autoloads (safe-date-to-time time-to-days time-to-day-in-year ;;;;;; date-leap-year-p days-between date-to-day time-add time-subtract ;;;;;; time-since days-to-time time-less-p seconds-to-time time-to-seconds -;;;;;; date-to-time) "time-date" "calendar/time-date.el" (17178 -;;;;;; 20480)) +;;;;;; date-to-time) "time-date" "calendar/time-date.el" (17226 +;;;;;; 24571)) ;;; Generated autoloads from calendar/time-date.el (autoload (quote date-to-time) "time-date" "\ @@ -25909,7 +26331,7 @@ ;;;*** ;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp" -;;;;;; "time-stamp.el" (17178 22154)) +;;;;;; "time-stamp.el" (17196 26624)) ;;; Generated autoloads from time-stamp.el (autoload (quote time-stamp) "time-stamp" "\ @@ -25925,10 +26347,11 @@ The time stamp is written between the brackets or quotes: Time-stamp: <2001-02-18 10:20:51 gildea> The time stamp is updated only if the variable `time-stamp-active' is non-nil. -The format of the time stamp is set by the variable `time-stamp-format'. -The variables `time-stamp-line-limit', `time-stamp-start', `time-stamp-end', -`time-stamp-count', and `time-stamp-inserts-lines' control finding the -template. +The format of the time stamp is set by the variable `time-stamp-pattern' or +`time-stamp-format'. The variables `time-stamp-pattern', +`time-stamp-line-limit', `time-stamp-start', `time-stamp-end', +`time-stamp-count', and `time-stamp-inserts-lines' control finding +the template. \(fn)" t nil) @@ -25944,7 +26367,7 @@ ;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out ;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in ;;;;;; timeclock-modeline-display) "timeclock" "calendar/timeclock.el" -;;;;;; (17178 20480)) +;;;;;; (17226 24571)) ;;; Generated autoloads from calendar/timeclock.el (autoload (quote timeclock-modeline-display) "timeclock" "\ @@ -26045,7 +26468,7 @@ ;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer ;;;;;; run-at-time cancel-function-timers cancel-timer) "timer" -;;;;;; "emacs-lisp/timer.el" (17178 22144)) +;;;;;; "emacs-lisp/timer.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/timer.el (defalias (quote disable-timeout) (quote cancel-timer)) @@ -26116,7 +26539,7 @@ ;;;*** ;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv" -;;;;;; "international/titdic-cnv.el" (17178 20480)) +;;;;;; "international/titdic-cnv.el" (17187 59880)) ;;; Generated autoloads from international/titdic-cnv.el (autoload (quote titdic-convert) "titdic-cnv" "\ @@ -26139,8 +26562,8 @@ ;;;*** ;;;### (autoloads (tamil-composition-function tamil-post-read-conversion -;;;;;; tamil-compose-region) "tml-util" "language/tml-util.el" (17178 -;;;;;; 20481)) +;;;;;; tamil-compose-region) "tml-util" "language/tml-util.el" (17187 +;;;;;; 59881)) ;;; Generated autoloads from language/tml-util.el (autoload (quote tamil-compose-region) "tml-util" "\ @@ -26163,7 +26586,7 @@ ;;;*** ;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" -;;;;;; "tmm.el" (17178 22155)) +;;;;;; "tmm.el" (17187 59902)) ;;; Generated autoloads from tmm.el (define-key global-map "\M-`" 'tmm-menubar) (define-key global-map [f10] 'tmm-menubar) @@ -26204,7 +26627,7 @@ ;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities ;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category) -;;;;;; "todo-mode" "calendar/todo-mode.el" (17178 20480)) +;;;;;; "todo-mode" "calendar/todo-mode.el" (17187 59880)) ;;; Generated autoloads from calendar/todo-mode.el (autoload (quote todo-add-category) "todo-mode" "\ @@ -26265,8 +26688,8 @@ ;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu ;;;;;; tool-bar-local-item tool-bar-add-item tool-bar-mode) "tool-bar" -;;;;;; "toolbar/tool-bar.el" (17178 22155)) -;;; Generated autoloads from toolbar/tool-bar.el +;;;;;; "tool-bar.el" (17238 21257)) +;;; Generated autoloads from tool-bar.el (defvar tool-bar-mode nil "\ Non-nil if Tool-Bar mode is enabled. @@ -26297,7 +26720,7 @@ Info node `(elisp)Tool Bar'. Items are added from left to right. ICON is the base name of a file containing the image to use. The -function will first try to use lc-ICON.xpm if display-color-cells +function will first try to use low-color/ICON.xpm if display-color-cells is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally ICON.xbm, using `find-image'. @@ -26314,7 +26737,7 @@ Info node `(elisp)Tool Bar'. Items are added from left to right. ICON is the base name of a file containing the image to use. The -function will first try to use lc-ICON.xpm if display-color-cells +function will first try to use low-color/ICON.xpm if display-color-cells is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally ICON.xbm, using `find-image'. @@ -26350,7 +26773,7 @@ ;;;*** ;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emulation/tpu-edt.el (defvar tpu-edt-mode nil "\ @@ -26378,7 +26801,7 @@ ;;;*** ;;;### (autoloads (tpu-set-cursor-bound tpu-set-cursor-free tpu-set-scroll-margins) -;;;;;; "tpu-extras" "emulation/tpu-extras.el" (17178 22144)) +;;;;;; "tpu-extras" "emulation/tpu-extras.el" (17187 59901)) ;;; Generated autoloads from emulation/tpu-extras.el (autoload (quote tpu-set-scroll-margins) "tpu-extras" "\ @@ -26398,7 +26821,7 @@ ;;;*** -;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (17178 22144)) +;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/tq.el (autoload (quote tq-create) "tq" "\ @@ -26412,7 +26835,7 @@ ;;;*** ;;;### (autoloads (trace-function-background trace-function trace-buffer) -;;;;;; "trace" "emacs-lisp/trace.el" (17178 22144)) +;;;;;; "trace" "emacs-lisp/trace.el" (17187 59901)) ;;; Generated autoloads from emacs-lisp/trace.el (defvar trace-buffer "*trace-output*" "\ @@ -26445,7 +26868,7 @@ ;;;### (autoloads (tramp-completion-file-name-handler tramp-file-name-handler ;;;;;; tramp-completion-file-name-regexp tramp-file-name-regexp) -;;;;;; "tramp" "net/tramp.el" (17178 22151)) +;;;;;; "tramp" "net/tramp.el" (17238 21257)) ;;; Generated autoloads from net/tramp.el (defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\ @@ -26522,7 +26945,7 @@ ;;;*** ;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column" -;;;;;; "textmodes/two-column.el" (17178 22154)) +;;;;;; "textmodes/two-column.el" (17187 59902)) ;;; Generated autoloads from textmodes/two-column.el (autoload '2C-command "two-column" () t 'keymap) (global-set-key "\C-x6" '2C-command) @@ -26573,7 +26996,7 @@ ;;;;;; type-break type-break-mode type-break-keystroke-threshold ;;;;;; type-break-good-break-interval type-break-good-rest-interval ;;;;;; type-break-interval type-break-mode) "type-break" "type-break.el" -;;;;;; (17178 22155)) +;;;;;; (17187 59902)) ;;; Generated autoloads from type-break.el (defvar type-break-mode nil "\ @@ -26756,7 +27179,7 @@ ;;;*** ;;;### (autoloads (ununderline-region underline-region) "underline" -;;;;;; "textmodes/underline.el" (17178 22154)) +;;;;;; "textmodes/underline.el" (17187 59902)) ;;; Generated autoloads from textmodes/underline.el (autoload (quote underline-region) "underline" "\ @@ -26777,7 +27200,7 @@ ;;;*** ;;;### (autoloads (unforward-rmail-message undigestify-rmail-message) -;;;;;; "undigest" "mail/undigest.el" (17178 22151)) +;;;;;; "undigest" "mail/undigest.el" (17187 59902)) ;;; Generated autoloads from mail/undigest.el (autoload (quote undigestify-rmail-message) "undigest" "\ @@ -26796,7 +27219,7 @@ ;;;*** ;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el" -;;;;;; (17178 22151)) +;;;;;; (17187 59902)) ;;; Generated autoloads from mail/unrmail.el (autoload (quote batch-unrmail) "unrmail" "\ @@ -26815,8 +27238,8 @@ ;;;*** -;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (17187 +;;;;;; 59901)) ;;; Generated autoloads from emacs-lisp/unsafep.el (autoload (quote unsafep) "unsafep" "\ @@ -26828,7 +27251,7 @@ ;;;*** -;;;### (autoloads nil "url" "url/url.el" (17178 22157)) +;;;### (autoloads nil "url" "url/url.el" (17238 21257)) ;;; Generated autoloads from url/url.el (defvar url-configuration-directory "~/.url") @@ -26836,7 +27259,7 @@ ;;;*** ;;;### (autoloads (url-register-auth-scheme url-get-authentication) -;;;;;; "url-auth" "url/url-auth.el" (17178 22155)) +;;;;;; "url-auth" "url/url-auth.el" (17187 59902)) ;;; Generated autoloads from url/url-auth.el (autoload (quote url-get-authentication) "url-auth" "\ @@ -26878,8 +27301,8 @@ ;;;*** ;;;### (autoloads (url-cache-expired url-cache-extract url-is-cached -;;;;;; url-store-in-cache) "url-cache" "url/url-cache.el" (17178 -;;;;;; 22156)) +;;;;;; url-store-in-cache) "url-cache" "url/url-cache.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from url/url-cache.el (autoload (quote url-store-in-cache) "url-cache" "\ @@ -26904,7 +27327,7 @@ ;;;*** -;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (17178 22156)) +;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (17187 59902)) ;;; Generated autoloads from url/url-cid.el (autoload (quote url-cid) "url-cid" "\ @@ -26916,8 +27339,8 @@ ;;;### (autoloads (url-cookie-setup-save-timer url-cookie-handle-set-cookie ;;;;;; url-cookie-generate-header-lines url-cookie-retrieve url-cookie-write-file -;;;;;; url-cookie-parse-file) "url-cookie" "url/url-cookie.el" (17178 -;;;;;; 22156)) +;;;;;; url-cookie-parse-file) "url-cookie" "url/url-cookie.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from url/url-cookie.el (autoload (quote url-cookie-parse-file) "url-cookie" "\ @@ -26953,7 +27376,7 @@ ;;;*** ;;;### (autoloads (url-dav-vc-registered url-dav-supported-p) "url-dav" -;;;;;; "url/url-dav.el" (17178 22156)) +;;;;;; "url/url-dav.el" (17187 59902)) ;;; Generated autoloads from url/url-dav.el (autoload (quote url-dav-supported-p) "url-dav" "\ @@ -26968,8 +27391,8 @@ ;;;*** -;;;### (autoloads (url-file) "url-file" "url/url-file.el" (17178 -;;;;;; 22156)) +;;;### (autoloads (url-file) "url-file" "url/url-file.el" (17244 +;;;;;; 4914)) ;;; Generated autoloads from url/url-file.el (autoload (quote url-file) "url-file" "\ @@ -26980,7 +27403,7 @@ ;;;*** ;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" -;;;;;; "url/url-gw.el" (17178 22156)) +;;;;;; "url/url-gw.el" (17187 59902)) ;;; Generated autoloads from url/url-gw.el (autoload (quote url-gateway-nslookup-host) "url-gw" "\ @@ -26998,8 +27421,8 @@ ;;;*** ;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file -;;;;;; url-handler-mode) "url-handlers" "url/url-handlers.el" (17178 -;;;;;; 22156)) +;;;;;; url-handler-mode) "url-handlers" "url/url-handlers.el" (17244 +;;;;;; 4914)) ;;; Generated autoloads from url/url-handlers.el (defvar url-handler-mode nil "\ @@ -27045,7 +27468,7 @@ ;;;### (autoloads (url-history-save-history url-history-parse-history ;;;;;; url-history-setup-save-timer) "url-history" "url/url-history.el" -;;;;;; (17178 22156)) +;;;;;; (17187 59902)) ;;; Generated autoloads from url/url-history.el (autoload (quote url-history-setup-save-timer) "url-history" "\ @@ -27069,7 +27492,7 @@ ;;;*** ;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p -;;;;;; url-http) "url-http" "url/url-http.el" (17178 22156)) +;;;;;; url-http) "url-http" "url/url-http.el" (17244 4914)) ;;; Generated autoloads from url/url-http.el (autoload (quote url-http) "url-http" "\ @@ -27122,7 +27545,7 @@ ;;;*** -;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (17178 22156)) +;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (17187 59902)) ;;; Generated autoloads from url/url-irc.el (autoload (quote url-irc) "url-irc" "\ @@ -27132,8 +27555,8 @@ ;;;*** -;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (17178 -;;;;;; 22156)) +;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from url/url-ldap.el (autoload (quote url-ldap) "url-ldap" "\ @@ -27147,7 +27570,7 @@ ;;;*** ;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el" -;;;;;; (17178 22156)) +;;;;;; (17226 24578)) ;;; Generated autoloads from url/url-mailto.el (autoload (quote url-mail) "url-mailto" "\ @@ -27163,7 +27586,7 @@ ;;;*** ;;;### (autoloads (url-data url-generic-emulator-loader url-info -;;;;;; url-man) "url-misc" "url/url-misc.el" (17178 22156)) +;;;;;; url-man) "url-misc" "url/url-misc.el" (17187 59902)) ;;; Generated autoloads from url/url-misc.el (autoload (quote url-man) "url-misc" "\ @@ -27195,7 +27618,7 @@ ;;;*** ;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el" -;;;;;; (17178 22156)) +;;;;;; (17187 59902)) ;;; Generated autoloads from url/url-news.el (autoload (quote url-news) "url-news" "\ @@ -27212,7 +27635,7 @@ ;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable ;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el" -;;;;;; (17178 22156)) +;;;;;; (17187 59902)) ;;; Generated autoloads from url/url-ns.el (autoload (quote isPlainHostName) "url-ns" "\ @@ -27253,7 +27676,7 @@ ;;;*** ;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" -;;;;;; "url/url-parse.el" (17178 22156)) +;;;;;; "url/url-parse.el" (17187 59902)) ;;; Generated autoloads from url/url-parse.el (autoload (quote url-recreate-url) "url-parse" "\ @@ -27271,7 +27694,7 @@ ;;;*** ;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el" -;;;;;; (17178 22156)) +;;;;;; (17187 59902)) ;;; Generated autoloads from url/url-privacy.el (autoload (quote url-setup-privacy-info) "url-privacy" "\ @@ -27287,7 +27710,7 @@ ;;;;;; url-strip-leading-spaces url-eat-trailing-space url-get-normalized-date ;;;;;; url-lazy-message url-normalize-url url-insert-entities-in-string ;;;;;; url-parse-args url-debug url-debug) "url-util" "url/url-util.el" -;;;;;; (17178 22157)) +;;;;;; (17187 59902)) ;;; Generated autoloads from url/url-util.el (defvar url-debug nil "\ @@ -27412,7 +27835,7 @@ ;;;*** ;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) -;;;;;; "userlock" "userlock.el" (17178 22157)) +;;;;;; "userlock" "userlock.el" (17187 59902)) ;;; Generated autoloads from userlock.el (autoload (quote ask-user-about-lock) "userlock" "\ @@ -27440,9 +27863,15 @@ ;;;*** +;;;### (autoloads nil "utf-7" "international/utf-7.el" (17254 64062)) +;;; Generated autoloads from international/utf-7.el +(autoload-coding-system 'utf-7 '(require 'utf-7)) + +;;;*** + ;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal ;;;;;; uudecode-decode-region-external) "uudecode" "gnus/uudecode.el" -;;;;;; (17178 22146)) +;;;;;; (17187 59901)) ;;; Generated autoloads from gnus/uudecode.el (autoload (quote uudecode-decode-region-external) "uudecode" "\ @@ -27472,7 +27901,7 @@ ;;;;;; vc-directory vc-merge vc-insert-headers vc-version-other-window ;;;;;; vc-diff vc-register vc-next-action vc-do-command edit-vc-file ;;;;;; with-vc-file vc-branch-part vc-trunk-p vc-before-checkin-hook -;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17178 22157)) +;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17254 63791)) ;;; Generated autoloads from vc.el (defvar vc-checkout-hook nil "\ @@ -27759,7 +28188,7 @@ ;;;*** -;;;### (autoloads nil "vc-arch" "vc-arch.el" (17178 22157)) +;;;### (autoloads nil "vc-arch" "vc-arch.el" (17187 59902)) ;;; Generated autoloads from vc-arch.el (defun vc-arch-registered (file) (if (vc-find-root file "{arch}/=tagging-method") @@ -27769,7 +28198,7 @@ ;;;*** -;;;### (autoloads nil "vc-cvs" "vc-cvs.el" (17178 22157)) +;;;### (autoloads nil "vc-cvs" "vc-cvs.el" (17187 59902)) ;;; Generated autoloads from vc-cvs.el (defun vc-cvs-registered (f) (when (file-readable-p (expand-file-name @@ -27779,7 +28208,7 @@ ;;;*** -;;;### (autoloads nil "vc-mcvs" "vc-mcvs.el" (17178 22157)) +;;;### (autoloads nil "vc-mcvs" "vc-mcvs.el" (17226 24578)) ;;; Generated autoloads from vc-mcvs.el (defun vc-mcvs-registered (file) (if (vc-find-root file "MCVS/CVS") @@ -27790,7 +28219,7 @@ ;;;*** ;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el" -;;;;;; (17178 22157)) +;;;;;; (17187 59902)) ;;; Generated autoloads from vc-rcs.el (defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ @@ -27803,7 +28232,7 @@ ;;;*** ;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc-sccs.el" -;;;;;; (17178 22157)) +;;;;;; (17187 59902)) ;;; Generated autoloads from vc-sccs.el (defvar vc-sccs-master-templates (quote ("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ @@ -27820,7 +28249,7 @@ ;;;*** -;;;### (autoloads nil "vc-svn" "vc-svn.el" (17178 22157)) +;;;### (autoloads nil "vc-svn" "vc-svn.el" (17187 59902)) ;;; Generated autoloads from vc-svn.el (defun vc-svn-registered (f) (when (file-readable-p (expand-file-name @@ -27833,7 +28262,7 @@ ;;;*** ;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el" -;;;;;; (17178 22153)) +;;;;;; (17229 28055)) ;;; Generated autoloads from progmodes/vhdl-mode.el (autoload (quote vhdl-mode) "vhdl-mode" "\ @@ -28089,16 +28518,16 @@ outputs from this component -> output port created - signals that are inputs to AND outputs from subcomponents are considered as internal connections -> internal signal created - + Purpose: With appropriate naming conventions it is possible to create higher design levels with only a few mouse clicks or key strokes. A new design level can be created by simply generating a new component, placing the required subcomponents from the hierarchy browser, and wiring everything automatically. - + Note: Automatic wiring only works reliably on templates of new components and component instantiations that were created by VHDL mode. - + Component declarations can be placed in a components package (option `vhdl-use-components-package') which can be automatically generated for an entire directory or project (`C-c C-c M-p'). The VHDL'93 direct @@ -28120,7 +28549,7 @@ | Note: Configurations of subcomponents (i.e. hierarchical configuration | declarations) are currently not considered when displaying | configurations in speedbar. - + See the options group `vhdl-compose' for all relevant user options. @@ -28374,7 +28803,7 @@ ;;;*** -;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (17178 20480)) +;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (17187 59879)) ;;; Generated autoloads from emulation/vi.el (autoload (quote vi-mode) "vi" "\ @@ -28429,7 +28858,7 @@ ;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion ;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer ;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util" -;;;;;; "language/viet-util.el" (17178 20481)) +;;;;;; "language/viet-util.el" (17187 59881)) ;;; Generated autoloads from language/viet-util.el (autoload (quote viet-encode-viscii-char) "viet-util" "\ @@ -28475,8 +28904,8 @@ ;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame ;;;;;; view-buffer-other-window view-buffer view-file-other-frame -;;;;;; view-file-other-window view-file) "view" "view.el" (17178 -;;;;;; 22157)) +;;;;;; view-file-other-window view-file) "view" "view.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from view.el (defvar view-mode nil "\ @@ -28683,8 +29112,8 @@ ;;;*** -;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (17178 -;;;;;; 22144)) +;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (17226 +;;;;;; 24575)) ;;; Generated autoloads from emulation/vip.el (autoload (quote vip-setup) "vip" "\ @@ -28700,7 +29129,7 @@ ;;;*** ;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el" -;;;;;; (17178 22144)) +;;;;;; (17254 63790)) ;;; Generated autoloads from emulation/viper.el (autoload (quote toggle-viper-mode) "viper" "\ @@ -28717,7 +29146,7 @@ ;;;*** ;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el" -;;;;;; (17178 22144)) +;;;;;; (17187 59901)) ;;; Generated autoloads from emacs-lisp/warnings.el (defvar warning-prefix-function nil "\ @@ -28805,7 +29234,7 @@ ;;;*** ;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" -;;;;;; (17178 22157)) +;;;;;; (17226 24579)) ;;; Generated autoloads from wdired.el (autoload (quote wdired-change-to-wdired-mode) "wdired" "\ @@ -28821,7 +29250,7 @@ ;;;*** -;;;### (autoloads (webjump) "webjump" "net/webjump.el" (17178 22151)) +;;;### (autoloads (webjump) "webjump" "net/webjump.el" (17187 59902)) ;;; Generated autoloads from net/webjump.el (autoload (quote webjump) "webjump" "\ @@ -28838,7 +29267,7 @@ ;;;*** ;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el" -;;;;;; (17178 22153)) +;;;;;; (17187 59902)) ;;; Generated autoloads from progmodes/which-func.el (put 'which-func-format 'risky-local-variable t) (put 'which-func-current 'risky-local-variable t) @@ -28872,7 +29301,7 @@ ;;;;;; whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check ;;;;;; whitespace-toggle-indent-check whitespace-toggle-trailing-check ;;;;;; whitespace-toggle-leading-check) "whitespace" "whitespace.el" -;;;;;; (17178 22157)) +;;;;;; (17254 63791)) ;;; Generated autoloads from whitespace.el (autoload (quote whitespace-toggle-leading-check) "whitespace" "\ @@ -28923,9 +29352,7 @@ (autoload (quote whitespace-cleanup) "whitespace" "\ Cleanup the five different kinds of whitespace problems. - -Use \\[describe-function] whitespace-describe to read a summary of the -whitespace problems. +See `whitespace-buffer' docstring for a summary of the problems. \(fn)" t nil) @@ -28964,7 +29391,7 @@ ;;;*** ;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse -;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (17178 22157)) +;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (17187 59902)) ;;; Generated autoloads from wid-browse.el (autoload (quote widget-browse-at) "wid-browse" "\ @@ -28991,8 +29418,8 @@ ;;;*** ;;;### (autoloads (widget-setup widget-insert widget-delete widget-create -;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (17178 -;;;;;; 22157)) +;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (17254 +;;;;;; 63791)) ;;; Generated autoloads from wid-edit.el (autoload (quote widgetp) "wid-edit" "\ @@ -29034,8 +29461,8 @@ ;;;*** ;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right -;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (17178 -;;;;;; 22157)) +;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (17187 +;;;;;; 59902)) ;;; Generated autoloads from windmove.el (autoload (quote windmove-left) "windmove" "\ @@ -29088,7 +29515,7 @@ ;;;*** ;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el" -;;;;;; (17178 22157)) +;;;;;; (17187 59902)) ;;; Generated autoloads from winner.el (defvar winner-mode nil "\ @@ -29107,7 +29534,7 @@ ;;;*** ;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman" -;;;;;; "woman.el" (17178 22157)) +;;;;;; "woman.el" (17238 21257)) ;;; Generated autoloads from woman.el (autoload (quote woman) "woman" "\ @@ -29143,7 +29570,7 @@ ;;;*** ;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el" -;;;;;; (17178 22144)) +;;;;;; (17226 24575)) ;;; Generated autoloads from emulation/ws-mode.el (autoload (quote wordstar-mode) "ws-mode" "\ @@ -29256,7 +29683,7 @@ ;;;*** ;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el" -;;;;;; (17178 22157)) +;;;;;; (17187 59902)) ;;; Generated autoloads from xml.el (autoload (quote xml-parse-file) "xml" "\ @@ -29281,8 +29708,8 @@ ;;;*** -;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17178 -;;;;;; 22157)) +;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17187 +;;;;;; 59919)) ;;; Generated autoloads from xt-mouse.el (defvar xterm-mouse-mode nil "\ @@ -29311,7 +29738,7 @@ ;;;*** ;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc" -;;;;;; "gnus/yenc.el" (17178 22146)) +;;;;;; "gnus/yenc.el" (17187 59901)) ;;; Generated autoloads from gnus/yenc.el (autoload (quote yenc-decode-region) "yenc" "\ @@ -29327,7 +29754,7 @@ ;;;*** ;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism -;;;;;; yow) "yow" "play/yow.el" (17178 22152)) +;;;;;; yow) "yow" "play/yow.el" (17187 59902)) ;;; Generated autoloads from play/yow.el (autoload (quote yow) "yow" "\ @@ -29353,7 +29780,7 @@ ;;;*** -;;;### (autoloads (zone) "zone" "play/zone.el" (17178 22152)) +;;;### (autoloads (zone) "zone" "play/zone.el" (17229 28054)) ;;; Generated autoloads from play/zone.el (autoload (quote zone) "zone" "\ @@ -29364,7 +29791,7 @@ ;;;*** ;;;### (autoloads (zone-mode zone-mode-update-serial-hook) "zone-mode" -;;;;;; "net/zone-mode.el" (17178 22151)) +;;;;;; "net/zone-mode.el" (17187 59902)) ;;; Generated autoloads from net/zone-mode.el (autoload (quote zone-mode-update-serial-hook) "zone-mode" "\ @@ -29406,9 +29833,9 @@ ;;;;;; "calendar/cal-menu.el" "calendar/cal-move.el" "calendar/cal-persia.el" ;;;;;; "calendar/cal-tex.el" "calendar/cal-x.el" "case-table.el" ;;;;;; "cdl.el" "cus-dep.el" "cus-load.el" "cus-start.el" "custom.el" -;;;;;; "dos-fns.el" "dos-vars.el" "dos-w32.el" "ediff-diff.el" "ediff-init.el" -;;;;;; "ediff-merg.el" "ediff-ptch.el" "ediff-vers.el" "ediff-wind.el" -;;;;;; "electric.el" "emacs-lisp/assoc.el" "emacs-lisp/authors.el" +;;;;;; "dframe.el" "dos-fns.el" "dos-vars.el" "dos-w32.el" "ediff-diff.el" +;;;;;; "ediff-init.el" "ediff-merg.el" "ediff-ptch.el" "ediff-vers.el" +;;;;;; "ediff-wind.el" "electric.el" "emacs-lisp/assoc.el" "emacs-lisp/authors.el" ;;;;;; "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" "emacs-lisp/byte-run.el" ;;;;;; "emacs-lisp/cl-compat.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-macs.el" ;;;;;; "emacs-lisp/cl-seq.el" "emacs-lisp/cl-specs.el" "emacs-lisp/cust-print.el" @@ -29431,7 +29858,7 @@ ;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-groups.el" ;;;;;; "eshell/esh-io.el" "eshell/esh-maint.el" "eshell/esh-module.el" ;;;;;; "eshell/esh-opt.el" "eshell/esh-proc.el" "eshell/esh-util.el" -;;;;;; "eshell/esh-var.el" "faces.el" "files.el" "finder-inf.el" +;;;;;; "eshell/esh-var.el" "ezimage.el" "faces.el" "files.el" "finder-inf.el" ;;;;;; "foldout.el" "font-core.el" "format.el" "forms-d2.el" "forms-pass.el" ;;;;;; "frame.el" "generic-x.el" "gnus/compface.el" "gnus/dig.el" ;;;;;; "gnus/dns.el" "gnus/format-spec.el" "gnus/gnus-async.el" @@ -29453,59 +29880,59 @@ ;;;;;; "gnus/nnmail.el" "gnus/nnmaildir.el" "gnus/nnmbox.el" "gnus/nnmh.el" ;;;;;; "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnrss.el" "gnus/nnslashdot.el" ;;;;;; "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnultimate.el" "gnus/nnvirtual.el" -;;;;;; "gnus/nnwarchive.el" "gnus/nnweb.el" "gnus/nnwfm.el" "gnus/pgg-def.el" -;;;;;; "gnus/pgg-gpg.el" "gnus/pgg-parse.el" "gnus/pgg-pgp.el" "gnus/pgg-pgp5.el" -;;;;;; "gnus/pop3.el" "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" -;;;;;; "gnus/rfc2104.el" "gnus/rfc2231.el" "gnus/sieve-manage.el" -;;;;;; "gnus/smime.el" "gnus/spam-stat.el" "gnus/starttls.el" "gnus/utf7.el" -;;;;;; "gnus/webmail.el" "help.el" "indent.el" "international/characters.el" -;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/iso-insert.el" -;;;;;; "international/ja-dic-cnv.el" "international/ja-dic-utl.el" -;;;;;; "international/latin-1.el" "international/latin-2.el" "international/latin-3.el" -;;;;;; "international/latin-4.el" "international/latin-5.el" "international/latin-8.el" -;;;;;; "international/latin-9.el" "international/mule-cmds.el" "international/mule-conf.el" +;;;;;; "gnus/nnwarchive.el" "gnus/nnweb.el" "gnus/nnwfm.el" "gnus/pop3.el" +;;;;;; "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" "gnus/rfc2104.el" +;;;;;; "gnus/rfc2231.el" "gnus/sieve-manage.el" "gnus/smime.el" +;;;;;; "gnus/spam-stat.el" "gnus/starttls.el" "gnus/utf7.el" "gnus/webmail.el" +;;;;;; "help.el" "indent.el" "international/characters.el" "international/fontset.el" +;;;;;; "international/iso-ascii.el" "international/ja-dic-cnv.el" +;;;;;; "international/ja-dic-utl.el" "international/latin-1.el" +;;;;;; "international/latin-2.el" "international/latin-3.el" "international/latin-4.el" +;;;;;; "international/latin-5.el" "international/latin-8.el" "international/latin-9.el" +;;;;;; "international/mule-cmds.el" "international/mule-conf.el" ;;;;;; "international/mule.el" "international/ogonek.el" "international/subst-big5.el" ;;;;;; "international/subst-gb2312.el" "international/subst-jis.el" ;;;;;; "international/subst-ksc.el" "international/ucs-tables.el" -;;;;;; "international/utf-16.el" "international/utf-7.el" "international/utf-8.el" -;;;;;; "isearch.el" "jka-cmpr-hook.el" "kermit.el" "language/chinese.el" -;;;;;; "language/cyrillic.el" "language/czech.el" "language/devanagari.el" -;;;;;; "language/english.el" "language/ethiopic.el" "language/european.el" -;;;;;; "language/georgian.el" "language/greek.el" "language/hebrew.el" -;;;;;; "language/indian.el" "language/japanese.el" "language/kannada.el" -;;;;;; "language/korean.el" "language/lao.el" "language/malayalam.el" -;;;;;; "language/misc-lang.el" "language/romanian.el" "language/slovak.el" -;;;;;; "language/tamil.el" "language/thai-word.el" "language/thai.el" -;;;;;; "language/tibetan.el" "language/utf-8-lang.el" "language/vietnamese.el" -;;;;;; "ldefs-boot.el" "loadup.el" "mail/blessmail.el" "mail/mailheader.el" -;;;;;; "mail/mailpost.el" "mail/mspools.el" "mail/rfc2368.el" "mail/rfc822.el" -;;;;;; "mail/rmail-spam-filter.el" "mail/uce.el" "mail/vms-pmail.el" -;;;;;; "mh-e/mh-acros.el" "mh-e/mh-alias.el" "mh-e/mh-customize.el" -;;;;;; "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" "mh-e/mh-identity.el" -;;;;;; "mh-e/mh-inc.el" "mh-e/mh-index.el" "mh-e/mh-junk.el" "mh-e/mh-loaddefs.el" -;;;;;; "mh-e/mh-mime.el" "mh-e/mh-pick.el" "mh-e/mh-print.el" "mh-e/mh-seq.el" -;;;;;; "mh-e/mh-speed.el" "mh-e/mh-utils.el" "misc.el" "mouse-copy.el" -;;;;;; "mouse-drag.el" "mouse.el" "net/eudc-vars.el" "net/eudcb-bbdb.el" -;;;;;; "net/eudcb-ldap.el" "net/eudcb-ph.el" "net/ldap.el" "net/netrc.el" -;;;;;; "net/tls.el" "net/tramp-ftp.el" "net/tramp-smb.el" "net/tramp-util.el" +;;;;;; "international/utf-16.el" "international/utf-8.el" "isearch.el" +;;;;;; "jka-cmpr-hook.el" "kermit.el" "language/chinese.el" "language/cyrillic.el" +;;;;;; "language/czech.el" "language/devanagari.el" "language/english.el" +;;;;;; "language/ethiopic.el" "language/european.el" "language/georgian.el" +;;;;;; "language/greek.el" "language/hebrew.el" "language/indian.el" +;;;;;; "language/japanese.el" "language/kannada.el" "language/korean.el" +;;;;;; "language/lao.el" "language/malayalam.el" "language/misc-lang.el" +;;;;;; "language/romanian.el" "language/slovak.el" "language/tamil.el" +;;;;;; "language/thai-word.el" "language/thai.el" "language/tibetan.el" +;;;;;; "language/utf-8-lang.el" "language/vietnamese.el" "ldefs-boot.el" +;;;;;; "loadup.el" "mail/blessmail.el" "mail/mailheader.el" "mail/mailpost.el" +;;;;;; "mail/mspools.el" "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el" +;;;;;; "mail/uce.el" "mail/vms-pmail.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el" +;;;;;; "mh-e/mh-customize.el" "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" +;;;;;; "mh-e/mh-identity.el" "mh-e/mh-inc.el" "mh-e/mh-index.el" +;;;;;; "mh-e/mh-junk.el" "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" +;;;;;; "mh-e/mh-pick.el" "mh-e/mh-print.el" "mh-e/mh-seq.el" "mh-e/mh-speed.el" +;;;;;; "mh-e/mh-utils.el" "misc.el" "mouse-copy.el" "mouse-drag.el" +;;;;;; "mouse.el" "net/eudc-vars.el" "net/eudcb-bbdb.el" "net/eudcb-ldap.el" +;;;;;; "net/eudcb-ph.el" "net/ldap.el" "net/netrc.el" "net/tls.el" +;;;;;; "net/tramp-ftp.el" "net/tramp-smb.el" "net/tramp-util.el" ;;;;;; "net/tramp-uu.el" "net/tramp-vc.el" "net/trampver.el" "obsolete/awk-mode.el" ;;;;;; "obsolete/bg-mouse.el" "obsolete/float.el" "obsolete/hilit19.el" -;;;;;; "obsolete/iso-swed.el" "obsolete/keyswap.el" "obsolete/mlsupport.el" -;;;;;; "obsolete/ooutline.el" "obsolete/profile.el" "obsolete/rnews.el" -;;;;;; "obsolete/sc.el" "obsolete/sun-curs.el" "obsolete/sun-fns.el" -;;;;;; "obsolete/swedish.el" "obsolete/uncompress.el" "obsolete/x-apollo.el" -;;;;;; "obsolete/x-menu.el" "patcomp.el" "paths.el" "pcvs-info.el" -;;;;;; "pcvs-parse.el" "pcvs-util.el" "play/gamegrid.el" "play/gametree.el" -;;;;;; "play/meese.el" "progmodes/ada-prj.el" "progmodes/cc-align.el" -;;;;;; "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" "progmodes/cc-cmds.el" -;;;;;; "progmodes/cc-compat.el" "progmodes/cc-defs.el" "progmodes/cc-fonts.el" -;;;;;; "progmodes/cc-langs.el" "progmodes/cc-menus.el" "progmodes/cc-vars.el" -;;;;;; "progmodes/ebnf-abn.el" "progmodes/ebnf-bnf.el" "progmodes/ebnf-dtd.el" -;;;;;; "progmodes/ebnf-ebx.el" "progmodes/ebnf-iso.el" "progmodes/ebnf-otz.el" -;;;;;; "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el" +;;;;;; "obsolete/iso-insert.el" "obsolete/iso-swed.el" "obsolete/keyswap.el" +;;;;;; "obsolete/mlsupport.el" "obsolete/ooutline.el" "obsolete/profile.el" +;;;;;; "obsolete/rnews.el" "obsolete/sc.el" "obsolete/sun-curs.el" +;;;;;; "obsolete/sun-fns.el" "obsolete/swedish.el" "obsolete/uncompress.el" +;;;;;; "obsolete/x-apollo.el" "obsolete/x-menu.el" "patcomp.el" +;;;;;; "paths.el" "pcvs-info.el" "pcvs-parse.el" "pcvs-util.el" +;;;;;; "pgg-def.el" "pgg-gpg.el" "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el" +;;;;;; "play/gamegrid.el" "play/gametree.el" "play/meese.el" "progmodes/ada-prj.el" +;;;;;; "progmodes/cc-align.el" "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" +;;;;;; "progmodes/cc-cmds.el" "progmodes/cc-compat.el" "progmodes/cc-defs.el" +;;;;;; "progmodes/cc-fonts.el" "progmodes/cc-langs.el" "progmodes/cc-menus.el" +;;;;;; "progmodes/cc-vars.el" "progmodes/ebnf-abn.el" "progmodes/ebnf-bnf.el" +;;;;;; "progmodes/ebnf-dtd.el" "progmodes/ebnf-ebx.el" "progmodes/ebnf-iso.el" +;;;;;; "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el" ;;;;;; "progmodes/idlw-help.el" "progmodes/idlw-rinfo.el" "progmodes/idlw-toolbar.el" ;;;;;; "progmodes/mantemp.el" "progmodes/xscheme.el" "register.el" -;;;;;; "replace.el" "s-region.el" "saveplace.el" "scroll-bar.el" +;;;;;; "replace.el" "s-region.el" "saveplace.el" "sb-image.el" "scroll-bar.el" ;;;;;; "select.el" "simple.el" "soundex.el" "startup.el" "subdirs.el" ;;;;;; "subr.el" "tempo.el" "term/AT386.el" "term/apollo.el" "term/bobcat.el" ;;;;;; "term/cygwin.el" "term/internal.el" "term/iris-ansi.el" "term/linux.el" @@ -29521,13 +29948,13 @@ ;;;;;; "textmodes/reftex-auc.el" "textmodes/reftex-dcr.el" "textmodes/reftex-ref.el" ;;;;;; "textmodes/reftex-sel.el" "textmodes/reftex-toc.el" "textmodes/reftex-vars.el" ;;;;;; "textmodes/texnfo-upd.el" "textmodes/text-mode.el" "timezone.el" -;;;;;; "tree-widget.el" "uniquify.el" "url/url-about.el" "url/url-dired.el" -;;;;;; "url/url-expand.el" "url/url-ftp.el" "url/url-https.el" "url/url-imap.el" -;;;;;; "url/url-methods.el" "url/url-nfs.el" "url/url-proxy.el" +;;;;;; "tooltip.el" "tree-widget.el" "uniquify.el" "url/url-about.el" +;;;;;; "url/url-dired.el" "url/url-expand.el" "url/url-ftp.el" "url/url-https.el" +;;;;;; "url/url-imap.el" "url/url-methods.el" "url/url-nfs.el" "url/url-proxy.el" ;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el" ;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el" ;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el" -;;;;;; "x-dnd.el") (17178 25595 473948)) +;;;;;; "x-dnd.el") (17254 64782 199896)) ;;;***
--- a/lisp/locate.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/locate.el Tue Nov 01 06:23:08 2005 +0000 @@ -376,13 +376,13 @@ (set (make-local-variable 'dired-directory) "/") (set (make-local-variable 'dired-subdir-switches) locate-ls-subdir-switches) (setq dired-switches-alist nil) - (make-local-variable 'dired-move-to-filename-regexp) + (make-local-variable 'directory-listing-before-filename-regexp) ;; This should support both Unix and Windoze style names - (setq dired-move-to-filename-regexp + (setq directory-listing-before-filename-regexp (concat "^." (make-string (1- locate-filename-indentation) ?\ ) "\\(/\\|[A-Za-z]:\\)\\|" - (default-value 'dired-move-to-filename-regexp))) + (default-value 'directory-listing-before-filename-regexp))) (make-local-variable 'dired-actual-switches) (setq dired-actual-switches "") (make-local-variable 'dired-permission-flags-regexp)
--- a/lisp/longlines.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/longlines.el Tue Nov 01 06:23:08 2005 +0000 @@ -6,7 +6,7 @@ ;; Alex Schroeder <alex@gnu.org> ;; Chong Yidong <cyd@stupidchicken.com> ;; Maintainer: Chong Yidong <cyd@stupidchicken.com> -;; Keywords: convenience +;; Keywords: convenience, wp ;; This file is part of GNU Emacs. @@ -119,11 +119,14 @@ 'longlines-window-change-function nil t)) (let ((buffer-undo-list t) (inhibit-read-only t) + (after-change-functions nil) (mod (buffer-modified-p))) ;; Turning off undo is OK since (spaces + newlines) is ;; conserved, except for a corner case in ;; longlines-wrap-lines that we'll never encounter from here - (longlines-decode-region (point-min) (point-max)) + (save-restriction + (widen) + (longlines-decode-region (point-min) (point-max))) (longlines-wrap-region (point-min) (point-max)) (set-buffer-modified-p mod)) (when (and longlines-show-hard-newlines @@ -140,8 +143,11 @@ (if longlines-showing (longlines-unshow-hard-newlines)) (let ((buffer-undo-list t) + (after-change-functions nil) (inhibit-read-only t)) - (longlines-encode-region (point-min) (point-max))) + (save-restriction + (widen) + (longlines-encode-region (point-min) (point-max)))) (remove-hook 'change-major-mode-hook 'longlines-mode-off t) (remove-hook 'before-kill-functions 'longlines-encode-region t) (remove-hook 'after-change-functions 'longlines-after-change-function t)
--- a/lisp/makefile.w32-in Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/makefile.w32-in Tue Nov 01 06:23:08 2005 +0000 @@ -146,14 +146,18 @@ echo ;;; End:>> $@ echo ;;; loaddefs.el ends here>> $@ +# Use . instead of $(lisp) because $(lisp) is an absolute file name, +# including a drive letter and any leading directories, so the generated +# loaddefs.el will mention file names that on other machine reference +# possibly non-existent directories. autoloads: $(lisp)/loaddefs.el doit - @echo Directories: $(WINS) + @echo Directories: . $(WINS) $(emacs) -l autoload \ --eval $(ARGQUOTE)(setq find-file-hook nil \ find-file-suppress-same-file-warnings t \ generated-autoload-file \ $(DQUOTE)$(lisp)/loaddefs.el$(DQUOTE))$(ARGQUOTE) \ - -f batch-update-autoloads $(lisp) $(WINS) + -f batch-update-autoloads . $(WINS) $(lisp)/subdirs.el: $(MAKE) $(MFLAGS) update-subdirs
--- a/lisp/menu-bar.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/menu-bar.el Tue Nov 01 06:23:08 2005 +0000 @@ -189,7 +189,7 @@ (define-key menu-bar-file-menu [dired] '(menu-item "Open Directory..." dired :enable (menu-bar-non-minibuffer-window-p) - :help "Read a directory, operate on its files")) + :help "Read a directory, to operate on its files")) (define-key menu-bar-file-menu [open-file] '(menu-item "Open File..." find-file-existing :enable (menu-bar-non-minibuffer-window-p) @@ -197,7 +197,7 @@ (define-key menu-bar-file-menu [new-file] '(menu-item "Visit New File..." find-file :enable (menu-bar-non-minibuffer-window-p) - :help "Read or create a file and edit it")) + :help "Specify a new file's name, to edit the file")) ;; The "Edit" menu items @@ -1342,7 +1342,7 @@ :help "Display manual section that describes a key")) (define-key menu-bar-help-menu [eliza] - '(menu-item "Emacs Psychiatrist" doctor + '(menu-item "Emacs Psychotherapist" doctor :help "Our doctor will help you feel better")) (define-key menu-bar-help-menu [sep4] '("--"))
--- a/lisp/mh-e/.arch-inventory Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/.arch-inventory Tue Nov 01 06:23:08 2005 +0000 @@ -1,1 +1,4 @@ -precious ^mh-loaddefs\.el$ +# Auto-generated lisp files, which ignore +precious ^(mh-loaddefs)\.el$ + +# arch-tag: 03c1cf02-6c80-44af-b4ec-b41b53fbf8f2
--- a/lisp/mh-e/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,211 @@ +2005-10-27 Bill Wohler <wohler@newt.com> + + * mh-customize.el (mh-adaptive-cmd-note-flag) + (mh-scan-format-file, mh-scan-prog): Sync docstrings with manual. + + * mh-e.el (mh-scan-format-mh, mh-note-deleted, mh-note-refiled) + (mh-note-cur, mh-scan-good-msg-regexp) + (mh-scan-deleted-msg-regexp, mh-scan-refiled-msg-regexp) + (mh-scan-valid-regexp, mh-scan-cur-msg-number-regexp) + (mh-scan-date-regexp, mh-scan-rcpt-regexp, mh-scan-body-regexp) + (mh-scan-subject-regexp, mh-scan-format-regexp) + (mh-folder-font-lock-keywords, mh-set-cmd-note): Sync docstrings + with manual. + + * mh-funcs.el (mh-note-copied): Sync docstrings with manual. + + * mh-utils.el (mh-goto-msg): Use mh-scan-msg-search-regexp instead + of hard-coded string. + (mh-mail-header-separator, mh-signature-separator-regexp): Use + "regular expression" in docstring instead of regexp. + (mh-scan-msg-number-regexp) + (mh-scan-msg-overflow-regexp, mh-scan-msg-format-regexp) + (mh-scan-msg-format-string, mh-scan-msg-search-regexp) + (mh-cmd-note): Sync docstrings with manual. + + * mh-comp.el (mh-insert-signature, mh-insert-auto-fields): + Checkdoc fixes. + + * mh-customize.el (mh-compose-insertion, mh-x-face-file): Ditto. + + * mh-mime.el (mh-mh-to-mime, mh-mml-attach-file) + (mh-mml-secure-message-sign, mh-mml-secure-message-encrypt) + (mh-mml-secure-message-signencrypt): Ditto + +2005-10-24 Bill Wohler <wohler@newt.com> + + * mh-gnus.el: Load mml.el in order to see if + mml-minibuffer-read-disposition is defined or not. + + * mh-mime.el: Now that mh-gnus.el loads mml, we shouldn't need the + mml autoloads. + +2005-10-23 Miles Bader <miles@gnu.org> + + * .arch-inventory: New file. + +2005-10-23 Bill Wohler <wohler@newt.com> + + * mh-customize.el (mh-interpret-number-as-range-flag): Sync + docstring with manual. + + * mh-identity.el (mh-assoc-ignore-case): Merge with version in + mh-alias.el and move to mh-acros.el + + * mh-alias.el (mh-assoc-ignore-case): Merge with version in + mh-identity.el and move to mh-acros.el + + * mh-acros.el (mh-assoc-ignore-case): Merge of function from + mh-identity.el and mh-alias.el. + + * mh-mime.el: Autoload mm-uu for mm-uu-dissect to avoid compiler + warning in Emacs 22. + +2005-10-23 Satyaki Das <satyaki@theforce.stanford.edu> + + * mh-identity.el (mh-assoc-ignore-case): New macro that uses + assoc-string (if the function is available) and falls back on + assoc-ignore-case if assoc-string is not found. + (mh-identity-field-handler): Use mh-assoc-ignore-case since + assoc-ignore-case is a obsolete function in Emacs 22. + + * mh-e.el (mh-folder-buttons-init-flag): New variable that keeps + track of whether the tool-bar in mh-folder-mode has been + initialized yet. + (mh-folder-mode): Initialize the tool-bar for folders the first + time we get into mh-letter-mode. + + * mh-customize.el (mh-buffer-exists-p): New function which tests + presence of buffers of a given mode. + (mh-tool-bar-define): New functions + mh-tool-bar-folder-buttons-init and + mh-tool-bar-letter-buttons-init are defined. These functions are + used to create the tool-bar from the corresponding customizable + variables. + + * mh-comp.el (mh-letter-buttons-init-flag): New variable that + keeps track of whether the tool-bar in mh-letter-mode has been + initialized yet. + (mh-letter-mode): Initialize the tool-bar for drafts the first + time we get into mh-letter-mode. + +2005-10-23 Bill Wohler <wohler@newt.com> + + * mh-comp.el (mh-letter-menu): Rename + mh-mhn-compose-external-compressed-tar to + mh-mh-compose-external-compressed-tar. Rename + mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename + mh-edit-mhn to mh-mh-to-mime. Rename mh-mhn-directive-present-p to + mh-mh-directive-present-p. Rename mh-revert-mhn-edit to + mh-mh-to-mime-undo. Rename mh-gnus-pgp-support-flag to + mh-pgp-support-flag. Rename mh-compose-insertion value from 'mhn + to 'mh. + (mh-insert-signature): Rename mh-mhn-directive-present-p to + mh-mh-directive-present-p. + (mh-send-letter): Rename mh-mhn-directive-present-p to + mh-mh-directive-present-p. Rename mh-edit-mhn to mh-mh-to-mime. + (mh-letter-mode-map): Rename mh-edit-mhn to mh-mh-to-mime. Rename + mh-mhn-compose-anon-ftp to mh-mh-compose-anon-ftp. Rename + mh-mhn-compose-external-compressed-tar to + mh-mh-compose-external-compressed-tar. Rename mh-revert-mhn-edit + to mh-mh-to-mime-undo. Rename mh-mhn-compose-external-type to + mh-mh-compose-external-type. Rename mh-mhn-compose-anon-ftp to + mh-mh-compose-anon-ftp. Rename + mh-mhn-compose-external-compressed-tar to + mh-mh-compose-external-compressed-tar. Rename mh-revert-mhn-edit + to mh-mh-to-mime-undo. Rename mh-mhn-compose-external-type to + mh-mh-compose-external-type. + (mh-send-letter, mh-letter-mode-map): Rename mh-edit-mhn to + mh-mh-to-mime, mh-revert-mhn-edit to mh-mh-to-mime-undo. + (mh-reply, mh-yank-cur-msg, mh-insert-prefix-string): Rename + mh-yank-from-start-of-msg to mh-yank-behavior. + (mh-letter-mode, mh-to-field, mh-to-fcc, mh-insert-signature) + (mh-check-whom, mh-insert-auto-fields, mh-send-letter) + (mh-insert-letter, mh-yank-cur-msg, mh-insert-prefix-string) + (mh-fully-kill-draft, mh-open-line, mh-letter-complete) + (mh-letter-complete-or-space, mh-letter-confirm-address) + (mh-letter-next-header-field-or-indent) + (mh-letter-previous-header-field) + (mh-letter-toggle-header-field-display): Sync docstrings with + manual. + + * mh-customize.el (mh-edit-mhn-hook): Rename to + mh-mh-to-mime-hook. + (mh-yank-from-start-of-msg): Rename to mh-yank-behavior. + (mh-compose-insertion): Rename values from 'gnus and 'mhn to 'mh + and user-visible values from mhn and Gnus to MH and MML. + (mh-before-send-letter-hook): Added 'ispell-message option. + (mh-mml-method-default): Rename mh-gnus-pgp-support-flag to + mh-pgp-support-flag. + (mh-compose-insertion, mh-compose-space-does-completion-flag) + (mh-delete-yanked-msg-window-flag) + (mh-extract-from-attribution-verb, mh-ins-buf-prefix) + (mh-letter-complete-function, mh-letter-fill-column) + (mh-mml-method-default, mh-signature-file-name) + (mh-signature-separator-flag, mh-x-face-file) + (mh-yank-behavior, mail-citation-hook) + (mh-before-send-letter-hook, mh-mh-to-mime-hook): Sync docstrings + with manual. + + * mh-gnus.el (mml-minibuffer-read-disposition): New function + provided for Emacs 21 environments that lack it. + + * mh-mime.el (mh-mml-query-cryptographic-method): Use default + prompt convention. + (mh-compose-forward): mh-mh-forward-message requires string arg. + (mh-minibuffer-read-type): New function. + (mh-mhn-args): Rename to mh-mh-to-mime-args. + (mh-mhn-compose-insertion): Rename to mh-mh-attach-file. + (mh-mhn-compose-forw): Rename to mh-mh-forward-message. + (mh-mhn-compose-type): Rename to mh-mh-compose-type. + (mh-mhn-compose-anon-ftp): Rename to mh-mh-compose-anon-ftp. + Rename mh-mhn-compose-external-type to + mh-mh-compose-external-type. + (mh-mhn-compose-external-compressed-tar): Rename to + mh-mh-compose-external-compressed-tar. Rename + mh-mhn-compose-external-type to mh-mh-compose-external-type. + (mh-mhn-compose-external-type): Rename to + mh-mh-compose-external-type. + (mh-edit-mhn): Rename to mh-mh-to-mime. Rename mh-mhn-args to + mh-mh-to-mime-args. Rename mh-edit-mhn-hook to mh-mh-to-mime-hook. + Use correct program in message. + (mh-mhn-directive-present-p): Rename to mh-mh-directive-present-p. + (mh-mml-directive-present-p): Rename to mh-mml-tag-present-p. + (mh-compose-forward, mh-mh-attach-file) + (mh-mh-compose-anon-ftp, mh-mh-compose-external-compressed-tar) + (mh-mh-compose-external-type, mh-mh-forward-message) + (mh-mml-attach-file): Use mml-minibuffer-read-description, + mh-minibuffer-read-type. + (mh-mime-content-types): Moved comment about only being used in + Emacs 20 to docstring. + (mh-mh-compose-external-type): Rename extra-param argument to + parameters. + (mh-mml-to-mime, mh-secure-message) + (mh-mml-unsecure-message, mh-mime-display-part) + (mh-mime-display-single): Rename mh-gnus-pgp-support-flag to + mh-pgp-support-flag. + (mh-compose-insertion): Rename mh-mhn-compose-insertion to + mh-mh-attach-file. + (mh-compose-forward): Rename mh-mhn-compose-forw to + mh-mh-forward-message. + (mh-mhn-compose-insertion): Rename mh-mhn-compose-type to + mh-mh-compose-type. + (mh-compose-insertion, mh-compose-forward, mh-mh-to-mime-args) + (mh-mh-attach-file, mh-mh-compose-type) + (mh-mh-compose-anon-ftp, mh-mh-compose-external-compressed-tar) + (mh-mh-compose-external-compressed-tar) + (mh-mh-compose-external-type, mh-mh-forward-message) + (mh-mh-to-mime, mh-mh-quote-unescaped-sharp, + (mh-mh-to-mime-undo, mh-mh-directive-present-p, mh-mml-to-mime) + (mh-mml-attach-file, mh-secure-message, mh-mml-unsecure-message) + (mh-mml-secure-message-sign, mh-mml-secure-message-encrypt) + (mh-mml-directive-present-p, mh-destroy-postponed-handles) + (mh-display-smileys, mh-display-emphasis, mh-mime-save-parts): + Sync docstrings with manual. + + * mh-utils.el (mh-gnus-pgp-support-flag): Rename to + mh-pgp-support-flag. + 2005-10-17 Peter S Galbraith <psg@debian.org> * mh-identity.el (mh-identity-field-handler): Use
--- a/lisp/mh-e/mh-acros.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-acros.el Tue Nov 01 06:23:08 2005 +0000 @@ -134,6 +134,14 @@ (load (format "%s.el" (ad-get-arg 0)) t t)) ad-do-it)) +(defmacro mh-assoc-ignore-case (key alist) + "Check if KEY is present in ALIST while ignoring case to do the comparison. +Compatibility macro for Emacs versions that lack `assoc-string', introduced in +Emacs 22." + (if (fboundp 'assoc-string) + `(assoc-string ,key ,alist t) + `(assoc-ignore-case ,key ,alist))) + (provide 'mh-acros) ;;; Local Variables:
--- a/lisp/mh-e/mh-alias.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-alias.el Tue Nov 01 06:23:08 2005 +0000 @@ -73,14 +73,6 @@ ;;; Alias Loading -(defmacro mh-assoc-ignore-case (key alist) - "Search for string KEY in ALIST. -This is a wrapper around `assoc-string' or `assoc-ignore-case'. Avoid -`assoc-ignore-case' which is now an obsolete function." - (cond ((fboundp 'assoc-string) `(assoc-string ,key ,alist t)) - ((fboundp 'assoc-ignore-case) `(assoc-ignore-case ,key ,alist)) - (t (error "The macro mh-assoc-ignore-case not implemented properly")))) - (defun mh-alias-tstamp (arg) "Check whether alias files have been modified. Return t if any file listed in the Aliasfile MH profile component has been
--- a/lisp/mh-e/mh-comp.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-comp.el Tue Nov 01 06:23:08 2005 +0000 @@ -350,8 +350,8 @@ (mh-forwarded-letter-subject orig-from orig-subject))) (mh-insert-fields "Subject:" forw-subject) (goto-char (point-min)) - ;; If using MML, translate mhn - (if (equal mh-compose-insertion 'gnus) + ;; If using MML, translate MH-style directive + (if (equal mh-compose-insertion 'mml) (save-excursion (goto-char (mh-mail-header-end)) (while @@ -527,8 +527,8 @@ (group-reply (if (mh-variant-p 'nmh 'mu-mh) '("-group" "-nocc" "me") '("-cc" "all" "-nocc" "me")))) - (cond ((or (eq mh-yank-from-start-of-msg 'autosupercite) - (eq mh-yank-from-start-of-msg 'autoattrib)) + (cond ((or (eq mh-yank-behavior 'autosupercite) + (eq mh-yank-behavior 'autoattrib)) '("-noformat")) (includep '("-filter" "mhl.reply")) (t '()))) @@ -551,8 +551,8 @@ (message "Composing a reply...done") (mh-compose-and-send-mail draft "" folder message to subject cc mh-note-repl "Replied:" config)) - (when (and (or (eq 'autosupercite mh-yank-from-start-of-msg) - (eq 'autoattrib mh-yank-from-start-of-msg)) + (when (and (or (eq 'autosupercite mh-yank-behavior) + (eq 'autoattrib mh-yank-behavior)) (eq (mh-show-buffer-message-number) mh-sent-from-msg)) (undo-boundary) (mh-yank-cur-msg)) @@ -788,13 +788,13 @@ ["Insert Signature" mh-insert-signature t] ("Encrypt/Sign Message" ["Sign Message" - mh-mml-secure-message-sign mh-gnus-pgp-support-flag] + mh-mml-secure-message-sign mh-pgp-support-flag] ["Encrypt Message" - mh-mml-secure-message-encrypt mh-gnus-pgp-support-flag] + mh-mml-secure-message-encrypt mh-pgp-support-flag] ["Sign+Encrypt Message" - mh-mml-secure-message-signencrypt mh-gnus-pgp-support-flag] + mh-mml-secure-message-signencrypt mh-pgp-support-flag] ["Disable Security" - mh-mml-unsecure-message mh-gnus-pgp-support-flag] + mh-mml-unsecure-message mh-pgp-support-flag] "--" "Security Method" ["PGP (MIME)" (setq mh-mml-method-default "pgpmime") @@ -810,19 +810,19 @@ ["Save Method as Default" (customize-save-variable 'mh-mml-method-default mh-mml-method-default) t] ) - ["Compose Insertion (MIME)..." mh-compose-insertion t] - ["Compose Compressed tar (MIME)..." - mh-mhn-compose-external-compressed-tar t] - ["Compose Get File (MIME)..." mh-mhn-compose-anon-ftp t] - ["Compose Forward (MIME)..." mh-compose-forward t] + ["Compose Insertion..." mh-compose-insertion t] + ["Compose Compressed tar (MH)..." + mh-mh-compose-external-compressed-tar t] + ["Compose Get File (MH)..." mh-mh-compose-anon-ftp t] + ["Compose Forward..." mh-compose-forward t] ;; The next two will have to be merged. But I also need to make sure the - ;; user can't mix directives of both types. - ["Pull in All Compositions (mhn)" - mh-edit-mhn (mh-mhn-directive-present-p)] - ["Pull in All Compositions (gnus)" - mh-mml-to-mime (mh-mml-directive-present-p)] - ["Revert to Non-MIME Edit (mhn)" - mh-revert-mhn-edit (equal mh-compose-insertion 'mhn)] + ;; user can't mix tags of both types. + ["Pull in All Compositions (MH)" + mh-mh-to-mime (mh-mh-directive-present-p)] + ["Pull in All Compositions (MML)" + mh-mml-to-mime (mh-mml-tag-present-p)] + ["Revert to Non-MIME Edit (MH)" + mh-mh-to-mime-undo (equal mh-compose-insertion 'mh)] ["Kill This Draft" mh-fully-kill-draft t])) ;;; Help Messages @@ -871,6 +871,8 @@ (defvar tool-bar-mode) (defvar tool-bar-map)) +(defvar mh-letter-buttons-init-flag nil) + ;;;###autoload (define-derived-mode mh-letter-mode text-mode "MH-Letter" "Mode for composing letters in MH-E.\\<mh-letter-mode-map> @@ -878,16 +880,13 @@ When you have finished composing, type \\[mh-send-letter] to send the message using the MH mail handling system. -There are two types of MIME directives used by MH-E: Gnus and MH. The option -`mh-compose-insertion' controls what type of directives are inserted by MH-E -commands. These directives can be converted to MIME body parts by running -\\[mh-edit-mhn] for mhn directives or \\[mh-mml-to-mime] for Gnus directives. -This step is mandatory if these directives are added manually. If the -directives are inserted with MH-E commands such as \\[mh-compose-insertion], -the directives are expanded automatically when the letter is sent. +There are two types of tags used by MH-E when composing MIME messages: MML and +MH. The option `mh-compose-insertion' controls what type of tags are inserted +by MH-E commands. These tags can be converted to MIME body parts by running +\\[mh-mh-to-mime] for MH-style directives or \\[mh-mml-to-mime] for MML tags. -Options that control this mode can be changed with -\\[customize-group]; specify the \"mh-compose\" group. +Options that control this mode can be changed with \\[customize-group]; +specify the \"mh-compose\" group. When a message is composed, the hooks `text-mode-hook' and `mh-letter-mode-hook' are run. @@ -900,6 +899,10 @@ (make-local-variable 'mh-previous-window-config) (make-local-variable 'mh-sent-from-folder) (make-local-variable 'mh-sent-from-msg) + (mh-do-in-gnu-emacs + (unless mh-letter-buttons-init-flag + (mh-tool-bar-letter-buttons-init) + (setq mh-letter-buttons-init-flag t))) ;; Set the local value of mh-mail-header-separator according to what is ;; present in the buffer... (set (make-local-variable 'mh-mail-header-separator) @@ -1016,7 +1019,7 @@ ;;;###mh-autoload (defun mh-to-field () - "Move point to the end of a specified header field. + "Move to specified header field. The field is indicated by the previous keystroke (the last keystroke of the command) according to the list in the variable `mh-to-field-choices'. Create the field if it does not exist. Set the mark to point before moving." @@ -1047,8 +1050,9 @@ ;;;###mh-autoload (defun mh-to-fcc (&optional folder) - "Insert an Fcc: FOLDER field in the current message. -Prompt for the field name with a completion list of the current folders." + "Move to \"Fcc:\" header field. +This command will prompt you for the FOLDER name in which to file a copy of +the draft." (interactive) (or folder (setq folder (mh-prompt-for-folder @@ -1080,23 +1084,33 @@ ;;;###mh-autoload (defun mh-insert-signature (&optional file) - "Insert the signature specified by `mh-signature-file-name' or FILE at point. -A signature separator (`-- ') will be added if the signature block does not + "Insert signature in message. +This command inserts your signature at the current cursor location. + +By default, the text of your signature is taken from the file +\"~/.signature\". You can read from other sources by changing the option +`mh-signature-file-name' or passing in a signature FILE. + +A signature separator (\"-- \") will be added if the signature block does not contain one and `mh-signature-separator-flag' is on. + The value of `mh-letter-insert-signature-hook' is a list of functions to be -called, with no arguments, after the signature is inserted. -The signature can also be inserted with `mh-identity-list'." -(interactive) +called, with no arguments, after the signature is inserted. These functions +may access the actual name of the file or the function used to insert the +signature with `mh-signature-file-name'. + +The signature can also be inserted using Identities (see `mh-identity-list')" + (interactive) (save-excursion (insert "\n") (let ((mh-signature-file-name (or file mh-signature-file-name)) - (mh-mhn-p (mh-mhn-directive-present-p)) - (mh-mml-p (mh-mml-directive-present-p))) + (mh-mh-p (mh-mh-directive-present-p)) + (mh-mml-p (mh-mml-tag-present-p))) (save-restriction (narrow-to-region (point) (point)) (cond ((mh-file-is-vcard-p mh-signature-file-name) - (if (equal mh-compose-insertion 'gnus) + (if (equal mh-compose-insertion 'mml) (insert "<#part type=\"text/x-vcard\" filename=\"" mh-signature-file-name "\" disposition=inline description=VCard>\n<#/part>") @@ -1105,7 +1119,7 @@ "\" [VCard] " (expand-file-name mh-signature-file-name)))) (t (cond - (mh-mhn-p + (mh-mh-p (insert "#\n" "Content-Description: Signature\n")) (mh-mml-p (mml-insert-tag 'part 'type "text/plain" 'disposition "inline" @@ -1124,7 +1138,7 @@ mh-signature-separator-flag (> (point-max) (point-min)) (not (mh-signature-separator-p))) - (cond (mh-mhn-p + (cond (mh-mh-p (forward-line 2)) (mh-mml-p (forward-line 1))) @@ -1135,7 +1149,10 @@ ;;;###mh-autoload (defun mh-check-whom () - "Verify recipients of the current letter, showing expansion of any aliases." + "Verify recipients, showing expansion of any aliases. +This command expands aliases so you can check the actual address(es) in the +alias. A new buffer named \"*MH-E Recipients*\" is created with the output of +\"whom\"." (interactive) (let ((file-name buffer-file-name)) (save-buffer) @@ -1215,7 +1232,7 @@ ;;;###mh-autoload (defun mh-insert-auto-fields (&optional non-interactive) - "Insert custom fields if To or Cc match `mh-auto-fields-list'. + "Insert custom fields if recipient is found in `mh-auto-fields-list'. Sets buffer-local `mh-insert-auto-fields-done-local' when done and inserted something. If NON-INTERACTIVE is non-nil, do not be verbose and only attempt matches if `mh-insert-auto-fields-done-local' is nil. @@ -1348,12 +1365,17 @@ ;;;###mh-autoload (defun mh-send-letter (&optional arg) - "Send the draft letter in the current buffer. -If optional prefix argument ARG is provided, monitor delivery. -The value of `mh-before-send-letter-hook' is a list of functions to be called, -with no arguments, before doing anything. -Run `\\[mh-edit-mhn]' if mhn directives are present; otherwise -run `\\[mh-mml-to-mime]' if mml directives are present." + "Save draft and send message. +When you are all through editing a message, you send it with this command. You +can give an argument ARG to monitor the first stage of the delivery\; this +output can be found in a buffer called \"*MH-E Mail Delivery*\". + +The value of `mh-before-send-letter-hook' is a list of functions to be called +at the beginning of this command. For example, if you want to check your +spelling in your message before sending, add the `ispell-message' function. + +In case the MH \"send\" program is installed under a different name, use +`mh-send-prog' to tell MH-E the name." (interactive "P") (run-hooks 'mh-before-send-letter-hook) (if (and (mh-insert-auto-fields t) @@ -1361,9 +1383,9 @@ (goto-char (point-min))) (if (not (y-or-n-p "Auto fields inserted, send? ")) (error "Send aborted"))) - (cond ((mh-mhn-directive-present-p) - (mh-edit-mhn)) - ((or (mh-mml-directive-present-p) (not (mh-ascii-buffer-p))) + (cond ((mh-mh-directive-present-p) + (mh-mh-to-mime)) + ((or (mh-mml-tag-present-p) (not (mh-ascii-buffer-p))) (mh-mml-to-mime))) (save-buffer) (message "Sending...") @@ -1419,15 +1441,16 @@ ;;;###mh-autoload (defun mh-insert-letter (folder message verbatim) - "Insert a message into the current letter. -Removes the header fields according to the variable -`mh-invisible-header-fields-compiled'. -Prefixes each non-blank line with `mh-ins-buf-prefix', unless -`mh-yank-from-start-of-msg' is set for supercite in which case supercite is -used to format the message. -Prompts for FOLDER and MESSAGE. If prefix argument VERBATIM provided, do -not indent and do not delete headers. Leaves the mark before the letter -and point after it." + "Insert a message. +This command prompts you for the FOLDER and MESSAGE number and inserts the +message, indented by `mh-ins-buf-prefix' (\"> \") unless `mh-yank-behavior' is +set to one of the supercite flavors in which case supercite is used to format +the message. Certain undesirable header fields (see +`mh-invisible-header-fields-compiled') are removed before insertion. + +If given a prefix argument VERBATIM, the header is left intact, the message is +not indented, and \"> \" is not inserted before each line. This command leaves +the mark before the letter and point after it." (interactive (list (mh-prompt-for-folder "Message from" mh-sent-from-folder nil) (read-string (concat "Message number" @@ -1468,13 +1491,25 @@ ;;;###mh-autoload (defun mh-yank-cur-msg () "Insert the current message into the draft buffer. -Prefix each non-blank line in the message with the string in -`mh-ins-buf-prefix'. If a region is set in the message's buffer, then -only the region will be inserted. Otherwise, the entire message will -be inserted if `mh-yank-from-start-of-msg' is non-nil. If this variable -is nil, the portion of the message following the point will be yanked. -If `mh-delete-yanked-msg-window-flag' is non-nil, any window displaying the -yanked message will be deleted." + +It is often useful to insert a snippet of text from a letter that someone +mailed to provide some context for your reply. This command does this by +adding an attribution, yanking a portion of text from the message to which +you're replying, and inserting `mh-ins-buf-prefix' (`> ') before each line. + +The attribution consists of the sender's name and email address +followed by the content of the `mh-extract-from-attribution-verb' +option. + +You can also turn on the `mh-delete-yanked-msg-window-flag' option to delete +the window containing the original message after yanking it to make more room +on your screen for your reply. + +You can control how the message to which you are replying is yanked +into your reply using `mh-yank-behavior'. + +If this isn't enough, you can gain full control over the appearance of the +included text by setting `mail-citation-hook' to a function that modifies it." (interactive) (if (and mh-sent-from-folder (save-excursion (set-buffer mh-sent-from-folder) mh-show-buffer) @@ -1491,9 +1526,9 @@ (yank-region (mh-mark-active-p nil)) (mh-ins-str (cond ((and yank-region - (or (eq 'supercite mh-yank-from-start-of-msg) - (eq 'autosupercite mh-yank-from-start-of-msg) - (eq t mh-yank-from-start-of-msg))) + (or (eq 'supercite mh-yank-behavior) + (eq 'autosupercite mh-yank-behavior) + (eq t mh-yank-behavior))) ;; supercite needs the full header (concat (buffer-substring (point-min) (mh-mail-header-end)) @@ -1501,20 +1536,18 @@ (buffer-substring (region-beginning) (region-end)))) (yank-region (buffer-substring (region-beginning) (region-end))) - ((or (eq 'body mh-yank-from-start-of-msg) - (eq 'attribution - mh-yank-from-start-of-msg) - (eq 'autoattrib - mh-yank-from-start-of-msg)) + ((or (eq 'body mh-yank-behavior) + (eq 'attribution mh-yank-behavior) + (eq 'autoattrib mh-yank-behavior)) (buffer-substring (save-excursion (goto-char (point-min)) (mh-goto-header-end 1) (point)) (point-max))) - ((or (eq 'supercite mh-yank-from-start-of-msg) - (eq 'autosupercite mh-yank-from-start-of-msg) - (eq t mh-yank-from-start-of-msg)) + ((or (eq 'supercite mh-yank-behavior) + (eq 'autosupercite mh-yank-behavior) + (eq t mh-yank-behavior)) (buffer-substring (point-min) (point-max))) (t (buffer-substring (point) (point-max)))))) @@ -1526,8 +1559,8 @@ (push-mark) ;Needed for sc-cite-original (goto-char (point-min)) ;Needed for sc-cite-original (mh-insert-prefix-string mh-ins-buf-prefix) - (when (or (eq 'attribution mh-yank-from-start-of-msg) - (eq 'autoattrib mh-yank-from-start-of-msg)) + (when (or (eq 'attribution mh-yank-behavior) + (eq 'autoattrib mh-yank-behavior)) (insert from-attr) (mh-identity-insert-attribution-verb nil) (insert "\n\n")) @@ -1569,12 +1602,12 @@ (defun mh-insert-prefix-string (mh-ins-string) "Insert prefix string before each line in buffer. -The inserted letter is cited using `sc-cite-original' if -`mh-yank-from-start-of-msg' is one of 'supercite or 'autosupercite. Otherwise, -simply insert MH-INS-STRING before each line." +The inserted letter is cited using `sc-cite-original' if `mh-yank-behavior' is +one of 'supercite or 'autosupercite. Otherwise, simply insert MH-INS-STRING +before each line." (goto-char (point-min)) - (cond ((or (eq mh-yank-from-start-of-msg 'supercite) - (eq mh-yank-from-start-of-msg 'autosupercite)) + (cond ((or (eq mh-yank-behavior 'supercite) + (eq mh-yank-behavior 'autosupercite)) (sc-cite-original)) (mail-citation-hook (run-hooks 'mail-citation-hook)) @@ -1589,8 +1622,10 @@ ;;;###mh-autoload (defun mh-fully-kill-draft () - "Kill the draft message file and the draft message buffer. -Use \\[kill-buffer] if you don't want to delete the draft message file." + "Quit editing and delete draft message. +If for some reason you are not happy with the draft, you can use the this +command to kill the draft buffer and delete the draft message. Use the +\\[kill-buffer] command if you don't want to delete the draft message." (interactive) (if (y-or-n-p "Kill draft message? ") (let ((config mh-previous-window-config)) @@ -1618,8 +1653,10 @@ ;;;###mh-autoload (defun mh-open-line () "Insert a newline and leave point after it. -In addition, insert newline and quoting characters before text after point. -This is useful in breaking up paragraphs in replies." +This command is similar to the \\[open-line] command in that it inserts a +newline after point. It differs in that it also inserts the right number of +quoting characters and spaces so that the next line begins in the same column +as it was. This is useful when breaking up paragraphs in replies." (interactive) (let ((column (current-column)) (prefix (mh-current-fill-prefix))) @@ -1707,10 +1744,12 @@ (defun mh-letter-complete (arg) "Perform completion on header field or word preceding point. -If the field contains addresses (for example, `To:' or `Cc:') or folders (for -example, `Fcc:') then this function will provide alias completion. Elsewhere, -this function runs `mh-letter-complete-function' instead and passes the prefix -ARG, if present." +If the field contains addresses (for example, \"To:\" or \"Cc:\") or folders +\(for example, \"Fcc:\") then this command will provide alias completion. In +the body of the message, this command runs `mh-letter-complete-function' +instead, which is set to \"'ispell-complete-word\" by default. This command +takes a prefix argument ARG that is passed to the +`mh-letter-complete-function'." (interactive "P") (let ((func nil)) (cond ((not (mh-in-header-p)) @@ -1722,11 +1761,8 @@ (defun mh-letter-complete-or-space (arg) "Perform completion or insert space. -If `mh-compose-space-does-completion-flag' is nil (the default) a space is -inserted. - -Otherwise, if point is in the message header and the preceding character is -not whitespace then do completion. Otherwise insert a space character. +Turn on the `mh-compose-space-does-completion-flag' option to use this command +to perform completion in the header. Otherwise, a space is inserted. ARG is the number of spaces inserted." (interactive "p") @@ -1744,7 +1780,10 @@ (t (self-insert-command arg))))) (defun mh-letter-confirm-address () - "Flash alias expansion if `mh-alias-flash-on-comma' is non-nil." + "Flash alias expansion. +Addresses are separated by a comma\; and when you press the comma, this +command flashes the alias expansion in the minibuffer if +`mh-alias-flash-on-comma' is turned on." (interactive) (cond ((not (mh-in-header-p)) (self-insert-command 1)) ((eq (cdr (assoc (mh-letter-header-field-at-point) @@ -1768,8 +1807,12 @@ ;;;###mh-autoload (defun mh-letter-next-header-field-or-indent (arg) "Move to next field or indent depending on point. -In the message header, go to the next field. Elsewhere call -`indent-relative' as usual with optional prefix ARG." +Within the header of the message, this command moves between fields, but skips +those fields listed in `mh-compose-skipped-header-fields'. After the last +field, this command then moves point to the message body before cycling back +to the first field. If point is already past the first line of the message +body, then this command indents by calling `indent-relative' with the given +prefix argument ARG." (interactive "P") (let ((header-end (save-excursion (goto-char (mh-mail-header-end)) @@ -1801,7 +1844,10 @@ ;;;###mh-autoload (defun mh-letter-previous-header-field () "Cycle to the previous header field. -If we are at the first header field go to the start of the message body." +This command moves backwards between the fields and cycles to the body of the +message after the first field. Unlike the +\\[mh-letter-next-header-field-or-indent] command, it will always take point +to the last field from anywhere in the body." (interactive) (let ((header-end (mh-mail-header-end))) (if (>= (point) header-end) @@ -1851,11 +1897,11 @@ (defun mh-letter-toggle-header-field-display (arg) "Toggle display of header field at point. -If the header is long or spread over multiple lines then hiding it will show -the first few characters and replace the rest with an ellipsis. -If ARG is negative then header is hidden, if positive it is displayed. If ARG -is the symbol `long' then keep at most the first 4 lines." +Use this command to display ellipsed header fields. This command is a toggle +so entering it again will hide the field. This command takes a prefix argument +ARG: if negative then the field is hidden, if positive then the field is +displayed." (interactive (list nil)) (when (and (mh-in-header-p) (progn @@ -1881,6 +1927,8 @@ (remove-text-properties begin end '(invisible nil)) (search-forward ":" (line-end-position) t) (mh-letter-skip-leading-whitespace-in-header-field)) + ;; XXX Redesign to make usable by user. Perhaps use a positive + ;; numeric prefix to make that many lines visible. ((eq arg 'long) (end-of-line 4) (mh-letter-truncate-header-field end) @@ -1939,7 +1987,7 @@ "\C-c\C-^" mh-insert-signature ;if no C-s "\C-c\C-c" mh-send-letter "\C-c\C-d" mh-insert-identity - "\C-c\C-e" mh-edit-mhn + "\C-c\C-e" mh-mh-to-mime "\C-c\C-f\C-b" mh-to-field "\C-c\C-f\C-c" mh-to-field "\C-c\C-f\C-d" mh-to-field @@ -1957,26 +2005,26 @@ "\C-c\C-i" mh-insert-letter "\C-c\C-m\C-e" mh-mml-secure-message-encrypt "\C-c\C-m\C-f" mh-compose-forward - "\C-c\C-m\C-g" mh-mhn-compose-anon-ftp + "\C-c\C-m\C-g" mh-mh-compose-anon-ftp "\C-c\C-m\C-i" mh-compose-insertion "\C-c\C-m\C-m" mh-mml-to-mime "\C-c\C-m\C-n" mh-mml-unsecure-message "\C-c\C-m\C-s" mh-mml-secure-message-sign - "\C-c\C-m\C-t" mh-mhn-compose-external-compressed-tar - "\C-c\C-m\C-u" mh-revert-mhn-edit - "\C-c\C-m\C-x" mh-mhn-compose-external-type + "\C-c\C-m\C-t" mh-mh-compose-external-compressed-tar + "\C-c\C-m\C-u" mh-mh-to-mime-undo + "\C-c\C-m\C-x" mh-mh-compose-external-type "\C-c\C-mee" mh-mml-secure-message-encrypt "\C-c\C-mes" mh-mml-secure-message-signencrypt "\C-c\C-mf" mh-compose-forward - "\C-c\C-mg" mh-mhn-compose-anon-ftp + "\C-c\C-mg" mh-mh-compose-anon-ftp "\C-c\C-mi" mh-compose-insertion "\C-c\C-mm" mh-mml-to-mime "\C-c\C-mn" mh-mml-unsecure-message "\C-c\C-mse" mh-mml-secure-message-signencrypt "\C-c\C-mss" mh-mml-secure-message-sign - "\C-c\C-mt" mh-mhn-compose-external-compressed-tar - "\C-c\C-mu" mh-revert-mhn-edit - "\C-c\C-mx" mh-mhn-compose-external-type + "\C-c\C-mt" mh-mh-compose-external-compressed-tar + "\C-c\C-mu" mh-mh-to-mime-undo + "\C-c\C-mx" mh-mh-compose-external-type "\C-c\C-o" mh-open-line "\C-c\C-q" mh-fully-kill-draft "\C-c\C-s" mh-insert-signature
--- a/lisp/mh-e/mh-customize.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-customize.el Tue Nov 01 06:23:08 2005 +0000 @@ -762,13 +762,15 @@ ;;; Editing a Draft (:group 'mh-letter) -(defcustom mh-compose-insertion (if (locate-library "mml") 'gnus 'mhn) - "Type of MIME message directives in messages. - -By default, this option is set to `Gnus' if it is supported. This option can -also be set manually to `mhn' if mhn directives are preferred." - :type '(choice (const :tag "Gnus" gnus) - (const :tag "mhn" mhn)) +(defcustom mh-compose-insertion (if (locate-library "mml") 'mml 'mh) + "Type of tags used when composing MIME messages. +In addition to MH-style directives, MH-E also supports MML (MIME Meta +Language) tags. (see Info node `(emacs-mime)Composing'). This option can be +used to choose between them. By default, this option is set to \"MML\" if it +is supported since it provides a lot more functionality. This option can also +be set to \"MH\" if MH-style directives are preferred." + :type '(choice (const :tag "MML" mml) + (const :tag "MH" mh)) :group 'mh-letter) (defcustom mh-compose-skipped-header-fields @@ -779,20 +781,24 @@ :group 'mh-letter) (defcustom mh-compose-space-does-completion-flag nil - "*Non-nil means that <SPC> does completion in message header." + "*On means \\<mh-letter-mode-map>\\[mh-letter-complete-or-space] does completion in message header." :type 'boolean :group 'mh-letter) (defcustom mh-delete-yanked-msg-window-flag nil - "*Non-nil means delete any window displaying the message. -If this option is on, yanking the current message into a draft letter with -\\<mh-letter-mode-map>\\[mh-yank-cur-msg] deletes any windows displaying the -message." + "*On means delete any window displaying the message. +This deletes the window containing the original message after yanking it with +\\<mh-letter-mode-map>\\[mh-yank-cur-msg] to make more room on your screen for +your reply." :type 'boolean :group 'mh-letter) (defcustom mh-extract-from-attribution-verb "wrote:" - "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]." + "*Verb to use for attribution when a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]. +The attribution consists of the sender's name and email address followed by +the content of this option. This option can be set to \"wrote:\", \"a +écrit:\", and \"schrieb:\". You can also use the \"Custom String\" menu item +to enter your own verb." :type '(choice (const "wrote:") (const "a écrit:") (const "schrieb:") @@ -800,28 +806,41 @@ :group 'mh-letter) (defcustom mh-ins-buf-prefix "> " - "*String to put before each non-blank line of a yanked or inserted message. -Used when the message is inserted into an outgoing letter -by \\<mh-letter-mode-map>\\[mh-insert-letter] or \\[mh-yank-cur-msg]." + "*String to put before each line of a yanked or inserted message. +The prefix \"> \" is the default setting of this option. I suggest that you +not modify this option since it is used by many mailers and news readers: +messages are far easier to read if several included messages have all been +indented by the same string." :type 'string :group 'mh-letter) (defcustom mh-letter-complete-function 'ispell-complete-word "*Function to call when completing outside of address or folder fields. -By default, this is set to `ispell-complete-word'." +In the body of the message, \\<mh-letter-mode-map>\\[mh-letter-complete] runs +this function, which is set to \"ispell-complete-word\" by default." :type '(choice function (const nil)) :group 'mh-letter) (defcustom mh-letter-fill-column 72 - "*Fill column to use in `mh-letter-mode'. -This is usually less than in other text modes because email messages get -quoted by some prefix (sometimes many times) when they are replied to, -and it's best to avoid quoted lines that span more than 80 columns." + "*Fill column to use in MH Letter mode. +By default, this option is 72 to allow others to quote your message without +line wrapping." :type 'integer :group 'mh-letter) -(defcustom mh-mml-method-default (if mh-gnus-pgp-support-flag "pgpmime" "none") - "Default method to use in security directives." +(defcustom mh-mml-method-default (if mh-pgp-support-flag "pgpmime" "none") + "Default method to use in security tags. +This option is used to select between a variety of mail security mechanisms. +The default is \"PGP (MIME)\" if it is supported\; otherwise, the default is +\"None\". Other mechanisms include vanilla \"PGP\" and \"S/MIME\". + +The `pgg' customization group may have some settings which may interest you +\(see Info node `(pgg)'). + +In particular, I set the option `pgg-encrypt-for-me' to t so that all messages +I encrypt are encrypted with my public key as well. If you keep a copy of all +of your outgoing mail with a \"Fcc:\" header field, this setting is vital so +that you can read the mail you write!" :type '(choice (const :tag "PGP (MIME)" "pgpmime") (const :tag "PGP" "pgp") (const :tag "S/MIME" "smime") @@ -831,13 +850,13 @@ (defcustom mh-signature-file-name "~/.signature" "*Source of user's signature. -By default, the text of your signature is taken from the file `~/.signature'. +By default, the text of your signature is taken from the file \"~/.signature\". You can read from other files by changing this option. This file may contain a vCard in which case an attachment is added with the vCard. This option may also be a symbol, in which case that function is called. You may not want a signature separator to be added for you; instead you may want -to insert one yourself. Variables that you may find useful to do this include +to insert one yourself. Options that you may find useful to do this include `mh-signature-separator' (when inserting a signature separator) and `mh-signature-separator-regexp' (for finding said separator). The function `mh-signature-separator-p', which reports t if the buffer contains a @@ -850,7 +869,7 @@ :group 'mh-letter) (defcustom mh-signature-separator-flag t - "*Non-nil means a signature separator should be inserted. + "*On means a signature separator should be inserted. It is not recommended that you change this option since various mail user agents, including MH-E, use the separator to present the signature differently, and to suppress the signature when replying or yanking a letter @@ -861,21 +880,21 @@ (defcustom mh-x-face-file "~/.face" "*File containing face header field to insert in outgoing mail. -If the file starts with either of the strings `X-Face:', `Face:' or -`X-Image-URL:' then the contents are added to the message header verbatim. -Otherwise it is assumed that the file contains the value of the `X-Face:' +If the file starts with either of the strings \"X-Face:\", \"Face:\" or +\"X-Image-URL:\" then the contents are added to the message header verbatim. +Otherwise it is assumed that the file contains the value of the \"X-Face:\" header field. -The `X-Face:' header field, which is a low-resolution, black and white image, -can be generated using the `compface' command, which can be obtained from -ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z. The \"Online -X-Face Convertor\" at http://www.dairiki.org/xface/ is a useful resource for -quick conversion of images into `X-Face:' header fields. +The \"X-Face:\" header field, which is a low-resolution, black and white +image, can be generated using the \"compface\" +\(ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.Z) command. The +\"Online X-Face Converter\" (http://www.dairiki.org/xface/) is a useful +resource for quick conversion of images into \"X-Face:\" header fields. -Use the `make-face' script (http://quimby.gnus.org/circus/face/make-face) to -convert a JPEG image to the higher resolution, color, `Face:' header field. +Use the \"make-face\" (http://quimby.gnus.org/circus/face/make-face) script to +convert a JPEG image to the higher resolution, color, \"Face:\" header field. -The URL of any image can be used for the `X-Image-URL:' field and no +The URL of any image can be used for the \"X-Image-URL:\" field and no processing of the image is required. To prevent the setting of any of these header fields, either set @@ -884,39 +903,34 @@ :type 'file :group 'mh-letter) -(defcustom mh-yank-from-start-of-msg 'attribution +(defcustom mh-yank-behavior 'attribution "*Controls which part of a message is yanked by \\<mh-letter-mode-map>\\[mh-yank-cur-msg]. -If t, include the entire message, with full headers. This is historically -here for use with supercite, but is now deprecated in favor of the setting -`supercite' below. - -If the symbol `body', then yank the message minus the header. -If the symbol `supercite', include the entire message, with full headers. -This also causes the invocation of `sc-cite-original' without the setting -of `mail-citation-hook', now deprecated practice. +To include the entire message, including the entire header, use \"Body and +Header\". Use \"Body\" to yank just the body without the header. To yank only +the portion of the message following the point, set this option to \"Below +Point\". -If the symbol `autosupercite', do as for `supercite' automatically when -show buffer matches the message being replied-to. When this option is used, -the -noformat switch is passed to the repl program to override a -filter or --format switch. +Choose \"Invoke supercite\" to pass the entire message and header through +supercite. -If the symbol `attribution', then yank the message minus the header and add -a simple attribution line at the top. +If the \"Body With Attribution\" setting is used, then the message minus the +header is yanked and a simple attribution line is added at the top using the +value of the `mh-extract-from-attribution-verb' option. This is the default. -If the symbol `autoattrib', do as for `attribution' automatically when show -buffer matches the message being replied-to. You can make sure this is -always the case by setting `mh-reply-show-message-flag' to t (which is the -default) and optionally `mh-delete-yanked-msg-window-flag' to t as well such -that the show window is never displayed. When the `autoattrib' option is -used, the -noformat switch is passed to the repl program to override a --filter or -format switch. +If the \"Invoke supercite\" or \"Body With Attribution\" settings are used, +the \"-noformat\" argument is passed to the \"repl\" program to override a +\"-filter\" or \"-format\" argument. These settings also have +\"Automatically\" variants that perform the action automatically when you +reply so that you don't need to use \\[mh-yank-cur-msg] at all. Note that this +automatic action is only performed if the show buffer matches the message +being replied to. People who use the automatic variants tend to turn on the +`mh-delete-yanked-msg-window-flag' option as well so that the show window is +never displayed. -If nil, yank only the portion of the message following the point. - -If the show buffer has a region, this variable is ignored unless its value is -one of `attribution' or `autoattrib' in which case the attribution is added -to the yanked region." +If the show buffer has a region, the `mh-yank-behavior' option is ignored +unless its value is one of Attribution variants in which case the attribution +is added to the yanked region." :type '(choice (const :tag "Body and Header" t) (const :tag "Body" body) (const :tag "Below Point" nil) @@ -932,9 +946,11 @@ ;;; Ranges (:group 'mh-ranges) (defcustom mh-interpret-number-as-range-flag t - "Non-nil means interpret a number as a range. -If the variable is non-nil, and you use an integer, N, when asked for a -range to scan, then MH-E uses the range \"last:N\"." + "On means interpret a number as a range. +Since one of the most frequent ranges used is \"last:N\", MH-E will interpret +input such as \"200\" as \"last:200\" if this option is on (which is the +default). If you need to scan just the message 200, then use the range +\"200:200\"." :type 'boolean :group 'mh-ranges) @@ -943,38 +959,48 @@ ;;; Scan Line Formats (:group 'mh-scan-line-formats) (defcustom mh-adaptive-cmd-note-flag t - "*Non-nil means that the message number width is determined dynamically. -This is done once when a folder is first opened by running scan on the last -message of the folder. The message number for the last message is extracted -and its width calculated. This width is used when calling `mh-set-cmd-note'. + "*On means that the message number width is determined dynamically. +If you've created your own format to handle long message numbers, you'll be +pleased to know you no longer need it since MH-E adapts its internal format +based upon the largest message number if this option is on (the default). -If you prefer fixed-width message numbers, set this variable to nil and call -`mh-set-cmd-note' with the width specified by the scan format in -`mh-scan-format-file'. For example, the default width is 4, so you would use -\"(mh-set-cmd-note 4)\" if `mh-scan-format-file' were nil." +If you prefer fixed-width message numbers, turn off this option and call +`mh-set-cmd-note' with the width specified by your format file (see +`mh-scan-format-file'). For example, the default width is 4, so you would use +\"(mh-set-cmd-note 4)\"." :type 'boolean :group 'mh-scan-line-formats) (defcustom mh-scan-format-file t "Specifies the format file to pass to the scan program. -If t, the format string will be taken from the either `mh-scan-format-mh' -or `mh-scan-format-nmh' depending on whether MH or nmh is in use. -If nil, the default scan output will be used. + +The default setting for this option is \"Use MH-E scan Format\". This means +that the format string will be taken from the either `mh-scan-format-mh' or +`mh-scan-format-nmh' depending on whether MH or nmh (or GNU mailutils) is in +use. You can also set this option to \"Use Default scan Format\" to get the +same output as you would get if you ran \"scan\" from the shell. If you have a +format file that you want MH-E to use but not MH, you can set this option to +\"Specify a scan Format File\" and enter the name of your format file. -If you customize the scan format, you may need to modify a few variables -containing regexps that MH-E uses to identify specific portions of the output. -Use `M-x apropos RET mh-scan.*regexp' to obtain a list of these variables. You -may also have to call `mh-set-cmd-note' with the width of your message -numbers. See also `mh-adaptive-cmd-note-flag'." +If you change the format of the scan lines you'll need to tell MH-E how to +parse the new format. As you will see, quite a lot of variables are involved +to do that. Use \"M-x apropos RET mh-scan.*regexp\" to obtain a list of these +variables. You may also have to call `mh-set-cmd-note' to modify `mh-cmd-note' +with the column for your notations if you turn off +`mh-adaptive-cmd-note-flag'. However, you will need to set the `mh-cmd-note' +variable manually with `setq' if `mh-scan-format-file' is set to anything +other than \"Use MH-E scan Format\"." :type '(choice (const :tag "Use MH-E scan Format" t) (const :tag "Use Default scan Format" nil) (file :tag "Specify a scan Format File")) :group 'mh-scan-line-formats) (defcustom mh-scan-prog "scan" - "*Program to run to generate one-line-per-message listing of a folder. -Normally \"scan\" or a file name linked to scan. This file is searched -for relative to the `mh-progs' directory unless it is an absolute pathname." + "*Program used to scan messages. +The name of the program that generates a listing of one line per message is +held in this option. Unless this variable contains an absolute pathname, it is +assumed to be in the `mh-progs' directory. You may link another program to +`scan' (see \"mh-profile(5)\") to produce a different type of listing." :type 'string :group 'mh-scan-line-formats) (make-variable-buffer-local 'mh-scan-prog) @@ -1659,6 +1685,14 @@ (const :tag "Don't use a toolbar" nil)) :group 'mh-toolbar)) +(defun mh-buffer-exists-p (mode) + "Test whether a buffer with major mode MODE is present." + (loop for buf in (buffer-list) + when (save-excursion + (set-buffer buf) + (eq major-mode mode)) + return t)) + (defmacro mh-tool-bar-define (defaults &rest buttons) "Define a tool bar for MH-E. DEFAULTS is the list of buttons that are present by default. It is a list of @@ -1790,33 +1824,42 @@ (defvar mh-letter-tool-bar-map nil) ;; GNU Emacs tool bar specific code (mh-do-in-gnu-emacs + ;; Tool bar initialization functions + (defun mh-tool-bar-folder-buttons-init () + (when (mh-buffer-exists-p 'mh-folder-mode) + (mh-image-load-path) + (setq mh-folder-tool-bar-map + (let ((tool-bar-map (make-sparse-keymap))) + ,@(nreverse folder-button-setter) + tool-bar-map)) + (setq mh-show-tool-bar-map + (let ((tool-bar-map (make-sparse-keymap))) + ,@(nreverse show-button-setter) + tool-bar-map)) + (setq mh-show-seq-tool-bar-map + (let ((tool-bar-map (copy-keymap mh-show-tool-bar-map))) + ,@(nreverse show-seq-button-setter) + tool-bar-map)) + (setq mh-folder-seq-tool-bar-map + (let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map))) + ,@(nreverse sequence-button-setter) + tool-bar-map)))) + (defun mh-tool-bar-letter-buttons-init () + (when (mh-buffer-exists-p 'mh-letter-mode) + (mh-image-load-path) + (setq mh-letter-tool-bar-map + (let ((tool-bar-map (make-sparse-keymap))) + ,@(nreverse letter-button-setter) + tool-bar-map)))) ;; Custom setter functions (defun mh-tool-bar-folder-buttons-set (symbol value) "Construct toolbar for `mh-folder-mode' and `mh-show-mode'." (set-default symbol value) - (setq mh-folder-tool-bar-map - (let ((tool-bar-map (make-sparse-keymap))) - ,@(nreverse folder-button-setter) - tool-bar-map)) - (setq mh-show-tool-bar-map - (let ((tool-bar-map (make-sparse-keymap))) - ,@(nreverse show-button-setter) - tool-bar-map)) - (setq mh-show-seq-tool-bar-map - (let ((tool-bar-map (copy-keymap mh-show-tool-bar-map))) - ,@(nreverse show-seq-button-setter) - tool-bar-map)) - (setq mh-folder-seq-tool-bar-map - (let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map))) - ,@(nreverse sequence-button-setter) - tool-bar-map))) + (mh-tool-bar-folder-buttons-init)) (defun mh-tool-bar-letter-buttons-set (symbol value) "Construct toolbar for `mh-letter-mode'." (set-default symbol value) - (setq mh-letter-tool-bar-map - (let ((tool-bar-map (make-sparse-keymap))) - ,@(nreverse letter-button-setter) - tool-bar-map)))) + (mh-tool-bar-letter-buttons-init))) ;; XEmacs specific code (mh-do-in-xemacs (defvar mh-toolbar-folder-vector-map @@ -1983,26 +2026,17 @@ (defcustom mail-citation-hook nil "*Hook for modifying a citation just inserted in the mail buffer. -Each hook function can find the citation between point and mark. -And each hook function should leave point and mark around the citation -text as modified. - -If this hook is entirely empty (nil), the text of the message is inserted -with `mh-ins-buf-prefix' prefixed to each line. - -See also the variable `mh-yank-from-start-of-msg', which controls how -much of the message passed to the hook. +You can gain full control over the appearance of the included text by setting +this hook to a function that modifies it. This hook is ignored if the option +`mh-yank-behavior' is set to one of the supercite flavors. Otherwise, this +option controls how much of the message is passed to the hook. The function +can find the citation between point and mark and it should leave point and +mark around the modified citation text for the next hook function. The +standard prefix `mh-ins-buf-prefix' is not added if this hook is set. -This hook was historically provided to set up supercite. You may now leave -this nil and set up supercite by setting the variable -`mh-yank-from-start-of-msg' to 'supercite or, for more automatic insertion, -to 'autosupercite. - -The hook 'trivial-cite is NOT part of Emacs. It is provided from tc.el, -available here: - http://shasta.cs.uiuc.edu/~lrclause/tc.html -If you use it, customize `mh-yank-from-start-of-msg' to - \"Entire message with headers\"." +For example, if you use the hook function trivial-cite +\(http://shasta.cs.uiuc.edu/~lrclause/tc.html) (which is NOT part of Emacs), +set `mh-yank-behavior' to \"Body and Header\"." :type 'hook :options '(trivial-cite) :group 'mh-hooks @@ -2022,8 +2056,11 @@ :group 'mh-show) (defcustom mh-before-send-letter-hook nil - "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command." + "Invoked at the beginning of the \\<mh-letter-mode-map>\\[mh-send-letter] command. +For example, if you want to check your spelling in your message before +sending, add the `ispell-message' function." :type 'hook + :options '(ispell-message) :group 'mh-hooks :group 'mh-letter) @@ -2033,8 +2070,8 @@ :group 'mh-hooks :group 'mh-show) -(defcustom mh-edit-mhn-hook nil - "Invoked on the formatted letter by \\<mh-letter-mode-map>\\[mh-edit-mhn]." +(defcustom mh-mh-to-mime-hook nil + "Invoked on the formatted letter by \\<mh-letter-mode-map>\\[mh-mh-to-mime]." :type 'hook :group 'mh-hooks :group 'mh-letter)
--- a/lisp/mh-e/mh-e.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-e.el Tue Nov 01 06:23:08 2005 +0000 @@ -131,7 +131,8 @@ "%<(mymbox{from})%<{to}To:%14(friendly{to})%>%>" "%<(zero)%17(friendly{from})%> " "%{subject}%<{body}<<%{body}%>") - "*Scan format string for MH, provided to the scan program via the -format arg. + "*Scan format string for MH. +This string is passed to the scan program via the -format arg. This format is identical to the default except that additional hints for fontification have been added to the fifth column (remember that in Emacs, the first column is 0). @@ -167,88 +168,106 @@ field matches, and `n' if a non-empty Newsgroups: field is present.") (defvar mh-note-deleted ?D - "Deleted messages are marked by this character. + "Messages that have been deleted are marked by this character. See also `mh-scan-deleted-msg-regexp'.") (defvar mh-note-refiled ?^ - "Refiled messages are marked by this character. + "Messages that have been refiled are marked by this character. See also `mh-scan-refiled-msg-regexp'.") (defvar mh-note-cur ?+ - "The current message (in MH) is marked by this character. + "The current message (in MH, not in MH-E) is marked by this character. See also `mh-scan-cur-msg-number-regexp'.") (defvar mh-scan-good-msg-regexp "^\\( *[0-9]+\\)[^D^0-9]" - "This regexp specifies the scan lines that are 'good' messages. -Note that the default setting of `mh-folder-font-lock-keywords' expects this -expression to contain at least one parenthesized expression which matches the -message number as in the default of \"^\\\\( *[0-9]+\\\\)[^D^0-9]\".") + "This regular expression matches \"good\" messages. +It must match from the beginning of the line. Note that the default setting of +`mh-folder-font-lock-keywords' expects this expression to contain at least one +parenthesized expression which matches the message number as in the default of +\"^\\\\( *[0-9]+\\\\)[^D^0-9]\". This regular expression should be correct as +it is needed by non-fontifying functions.") (defvar mh-scan-deleted-msg-regexp "^\\( *[0-9]+\\)D" - "This regexp matches deleted messages. -Note that the default setting of `mh-folder-font-lock-keywords' expects this -expression to contain at least one parenthesized expression which matches the -message number as in the default of \"^\\\\( *[0-9]+\\\\)D\". -See also `mh-note-deleted'.") + "This regular expression matches deleted messages. +It must match from the beginning of the line. Note that the default setting of +`mh-folder-font-lock-keywords' expects this expression to contain at least one +parenthesized expression which matches the message number as in the default of +\"^\\\\( *[0-9]+\\\\)D\". This regular expression should be correct as it is +needed by non-fontifying functions. See also `mh-note-deleted'.") (defvar mh-scan-refiled-msg-regexp "^\\( *[0-9]+\\)\\^" - "This regexp matches refiled messages. -Note that the default setting of `mh-folder-font-lock-keywords' expects this -expression to contain at least one parenthesized expression which matches the -message number as in the default of \"^\\\\( *[0-9]+\\\\)\\\\^\". -See also `mh-note-refiled'.") + "This regular expression matches refiled messages. +It must match from the beginning of the line. Note that the default setting of +`mh-folder-font-lock-keywords' expects this expression to contain at least one +parenthesized expression which matches the message number as in the default of +\"^\\\\( *[0-9]+\\\\)\\\\^\". This regular expression should be correct as it +is needed by non-fontifying functions. See also `mh-note-refiled'.") (defvar mh-scan-valid-regexp "^ *[0-9]" - "This regexp matches scan lines for messages (not error messages).") + "This regular expression describes a valid scan line. +This is used to eliminate error messages that are occasionally produced by +\"inc\".") (defvar mh-scan-cur-msg-number-regexp "^\\( *[0-9]+\\+\\).*" - "This regexp matches the current message. -Note that the default setting of `mh-folder-font-lock-keywords' expects this -expression to contain at least one parenthesized expression which matches the -message number as in the default of \"^\\\\( *[0-9]+\\\\+\\\\).*\". Don't -disable this regexp as it's needed by non-fontifying functions. -See also `mh-note-cur'.") + "This regular expression matches the current message. +It must match from the beginning of the line. Note that the default setting of +`mh-folder-font-lock-keywords' expects this expression to contain at least one +parenthesized expression which matches the message number as in the default of +\"^\\\\( *[0-9]+\\\\+\\\\).*\". This regular expression should be correct as +it is needed by non-fontifying functions. See also `mh-note-cur'.") (defvar mh-scan-date-regexp "\\([0-9][0-9]/[0-9][0-9]\\)" - "This regexp matches a valid date. -Note that the default setting of `mh-folder-font-lock-keywords' expects this -expression to contain only one parenthesized expression which matches the date -field as in the default of \"\\\\([0-9][0-9]/[0-9][0-9]\\\\)\"}. -See also `mh-scan-format-regexp'.") + "This regular expression matches a valid date. +It must not be anchored to the beginning or the end of the line. Note that the +default setting of `mh-folder-font-lock-keywords' expects this expression to +contain only one parenthesized expression which matches the date field as in +the default of \"\\\\([0-9][0-9]/[0-9][0-9]\\\\)\"}. If this regular +expression is not correct, the date will not be highlighted. See also +`mh-scan-format-regexp'.") (defvar mh-scan-rcpt-regexp "\\(To:\\)\\(..............\\)" - "This regexp specifies the recipient in messages you sent. + "This regular expression specifies the recipient in messages you sent. Note that the default setting of `mh-folder-font-lock-keywords' expects this expression to contain two parenthesized expressions. The first is expected to match the `To:' that the default scan format file generates. The second is expected to match the recipient's name -as in the default of \"\\\\(To:\\\\)\\\\(..............\\\\)\".") +as in the default of \"\\\\(To:\\\\)\\\\(..............\\\\)\". If this +regular expression is not correct, the recipient will not be highlighted.") (defvar mh-scan-body-regexp "\\(<<\\([^\n]+\\)?\\)" - "This regexp matches the message body fragment displayed in scan lines. + "This regular expression matches the message body fragment. Note that the default setting of `mh-folder-font-lock-keywords' expects this expression to contain at least one parenthesized expression which matches the -body text as in the default of \"\\\\(<<\\\\([^\\n]+\\\\)?\\\\)\".") +body text as in the default of \"\\\\(<<\\\\([^\\n]+\\\\)?\\\\)\". If this +regular expression is not correct, the body fragment will not be highlighted.") (defvar mh-scan-subject-regexp "^ *[0-9]+........[ ]*...................\\([Rr][Ee]\\(\\[[0-9]+\\]\\)?:\\s-*\\)*\\([^<\n]*\\)" - "This regexp matches the subject. -Note that the default setting of `mh-folder-font-lock-keywords' expects this -expression to contain at least three parenthesized expressions. The first is -expected to match the `Re:' string, if any. The second matches an optional -bracketed number after `Re:', such as in `Re[2]:' (and is thus a -sub-expression of the first expression) and the third is expected to match -the subject line itself as in the default of \"^ *[0-9]+........[ ]*...................\\\\([Rr][Ee]\\\\(\\\\\\=[[0-9]+\\\\]\\\\)?:\\\\s-*\\\\)*\\\\([^<\\n]*\\\\)\".") + "This regular expression matches the subject. +It must match from the beginning of the line. Note that the default setting +of `mh-folder-font-lock-keywords' expects this expression to contain at least +three parenthesized expressions. The first is expected to match the `Re:' +string, if any. The second matches an optional bracketed number after `Re:', +such as in `Re[2]:' (and is thus a sub-expression of the first expression) and +the third is expected to match the subject line itself as in the default of +\(broken on multiple lines for readability): + ^ *[0-9]+........[ ]*................... + \\\\([Rr][Ee]\\\\(\\\\\\=[[0-9]+\\\\]\\\\)?:\\\\s-*\\\\)* + \\\\([^<\\n]*\\\\) +This regular expression should be correct as it is needed by non-fontifying +functions.") (defvar mh-scan-format-regexp (concat "\\([bct]\\)" mh-scan-date-regexp " *\\(..................\\)") - "This regexp matches the output of scan. + "This regular expression matches the output of scan. Note that the default setting of `mh-folder-font-lock-keywords' expects this expression to contain at least three parenthesized expressions. The first -should match the fontification hint, the second is found in -`mh-scan-date-regexp', and the third should match the user name as in the -default of \"(concat \"\\\\([bct]\\\\)\" mh-scan-date-regexp - \"*\\\\(..................\\\\)\")\".") +should match the fontification hint (see `mh-scan-format-nmh'), the second is +found in `mh-scan-date-regexp', and the third should match the user name as in +the default of \"(concat \"\\\\([bct]\\\\)\" mh-scan-date-regexp + \"*\\\\(..................\\\\)\")\". +If this regular expression is not correct, the notation hints and the sender +will not be highlighted.") @@ -281,7 +300,7 @@ (list mh-scan-format-regexp '(1 mh-folder-date-face) '(3 mh-folder-scan-format-face))) - "Regexp keywords used to fontify the MH-Folder buffer.") + "Keywords (regular expressions) used to fontify the MH-Folder buffer.") (defvar mh-scan-cmd-note-width 1 "Number of columns consumed by the cmd-note field in `mh-scan-format'. @@ -1507,6 +1526,8 @@ (not (member 'mh-folder-mode which-func-modes))) (push 'mh-folder-mode which-func-modes)) +(defvar mh-folder-buttons-init-flag nil) + ;; Autoload cookie needed by desktop.el ;;;###autoload (define-derived-mode mh-folder-mode fundamental-mode "MH-Folder" @@ -1560,8 +1581,10 @@ messages in that region. \\{mh-folder-mode-map}" - - (mh-image-load-path) + (mh-do-in-gnu-emacs + (unless mh-folder-buttons-init-flag + (mh-tool-bar-folder-buttons-init) + (setq mh-folder-buttons-init-flag t))) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(mh-folder-font-lock-keywords t)) (make-local-variable 'desktop-save-buffer) @@ -1697,10 +1720,13 @@ (mh-notate-deleted-and-refiled))) (defun mh-set-cmd-note (width) - "Set `mh-cmd-note' to WIDTH characters (minimum of 2). + "Set `mh-cmd-note' to WIDTH (minimum of 2). -If `mh-scan-format-file' specifies nil or a filename, then this function -will NOT update `mh-cmd-note'." +If `mh-scan-format-file' is set to \"Use Default scan Format\" or \"Specify a +scan Format File\", then this function will NOT update `mh-cmd-note'. In these +cases, the user should change `mh-cmd-note' with `setq' if necessary. + +Note that columns in Emacs start with 0." ;; Add one to the width to always have whitespace in column zero. (setq width (max (1+ width) 2)) (if (and (equal mh-scan-format-file t)
--- a/lisp/mh-e/mh-funcs.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-funcs.el Tue Nov 01 06:23:08 2005 +0000 @@ -51,7 +51,7 @@ ;;; Scan Line Formats (defvar mh-note-copied "C" - "Copied messages are marked by this character.") + "Messages that have been copied are marked by this character.") (defvar mh-note-printed "P" "Messages that have been printed are marked by this character.")
--- a/lisp/mh-e/mh-gnus.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-gnus.el Tue Nov 01 06:23:08 2005 +0000 @@ -30,11 +30,14 @@ ;;; Code: -(load "mm-decode" t t) ; Non-fatal dependency -(load "mm-uu" t t) ; Non-fatal dependency -(load "mailcap" t t) ; Non-fatal dependency -(load "smiley" t t) ; Non-fatal dependency +;;; Load libraries in a non-fatal way in order to see if certain functions are +;;; pre-defined. (load "mailabbrev" t t) +(load "mailcap" t t) +(load "mm-decode" t t) +(load "mm-uu" t t) +(load "mml" t t) +(load "smiley" t t) (defmacro mh-defun-compat (function arg-list &rest body) "This is a macro to define functions which are not defined. @@ -56,26 +59,26 @@ `(defmacro ,function ,arg-list ,@body)))) (put 'mh-defmacro-compat 'lisp-indent-function 'defun) -;; Copy of original function from gnus-util.el +;; Copy of original function from gnus-util.el. (mh-defun-compat gnus-local-map-property (map) "Return a list suitable for a text property list specifying keymap MAP." (cond (mh-xemacs-flag (list 'keymap map)) ((>= emacs-major-version 21) (list 'keymap map)) (t (list 'local-map map)))) -;; Copy of original function from mm-decode.el +;; Copy of original function from mm-decode.el. (mh-defun-compat mm-merge-handles (handles1 handles2) (append (if (listp (car handles1)) handles1 (list handles1)) (if (listp (car handles2)) handles2 (list handles2)))) -;; Copy of function from mm-decode.el +;; Copy of function from mm-decode.el. (mh-defun-compat mm-set-handle-multipart-parameter (handle parameter value) ;; HANDLE could be a CTL. (if handle (put-text-property 0 (length (car handle)) parameter value (car handle)))) -;; Copy of function from mm-view.el +;; Copy of function from mm-view.el. (mh-defun-compat mm-inline-text-vcard (handle) (let (buffer-read-only) (mm-insert-inline @@ -89,15 +92,15 @@ 'vcard-standard-filter)))))))) ;; Function from mm-decode.el used in PGP messages. Just define it with older -;; gnus to avoid compiler warning. +;; Gnus to avoid compiler warning. (mh-defun-compat mm-possibly-verify-or-decrypt (parts ctl) nil) -;; Copy of original macro is in mm-decode.el +;; Copy of original macro is in mm-decode.el. (mh-defmacro-compat mm-handle-multipart-ctl-parameter (handle parameter) `(get-text-property 0 ,parameter (car ,handle))) -;; Copy of original function in mm-decode.el +;; Copy of original function in mm-decode.el. (mh-defun-compat mm-readable-p (handle) "Say whether the content of HANDLE is readable." (and (< (with-current-buffer (mm-handle-buffer handle) @@ -107,7 +110,7 @@ (and (eq (mm-body-7-or-8) '7bit) (not (mm-long-lines-p 76)))))) -;; Copy of original function in mm-bodies.el +;; Copy of original function in mm-bodies.el. (mh-defun-compat mm-long-lines-p (length) "Say whether any of the lines in the buffer is longer than LENGTH." (save-excursion @@ -126,10 +129,25 @@ nil) (mh-defun-compat mm-destroy-parts (list) - "Older emacs don't have this function." + "Older versions of Emacs don't have this function." nil) -;;; This is mm-save-part from gnus 5.10 since that function in emacs21.2 is +;; Copy of original function in mml.el. +(mh-defun-compat mml-minibuffer-read-disposition (type &optional default) + (unless default (setq default + (if (and (string-match "\\`text/" type) + (not (string-match "\\`text/rtf\\'" type))) + "inline" + "attachment"))) + (let ((disposition (completing-read + (format "Disposition (default %s): " default) + '(("attachment") ("inline") ("")) + nil t nil nil default))) + (if (not (equal disposition "")) + disposition + default))) + +;;; This is mm-save-part from Gnus 5.10 since that function in emacs21.2 is ;;; buggy (the args to read-file-name are incorrect). When all supported ;;; versions of Emacs come with at least Gnus 5.10, we can delete this ;;; function and rename calls to mh-mm-save-part to mm-save-part. @@ -152,7 +170,7 @@ (mm-save-part-to-file handle file)))) (defun mh-mm-text-html-renderer () - "Find the renderer gnus is using to display text/html MIME parts." + "Find the renderer Gnus is using to display text/html MIME parts." (or (and (boundp 'mm-inline-text-html-renderer) mm-inline-text-html-renderer) (and (boundp 'mm-text-html-renderer) mm-text-html-renderer)))
--- a/lisp/mh-e/mh-identity.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-identity.el Tue Nov 01 06:23:08 2005 +0000 @@ -124,7 +124,7 @@ `:', then it must have a special handler defined in `mh-identity-handlers', else return an error since it is not a valid header field." - (or (cdr (assoc-ignore-case field mh-identity-handlers)) + (or (cdr (mh-assoc-ignore-case field mh-identity-handlers)) (and (eq (aref field 0) ?:) (error "Field %s - unknown mh-identity-handler" field)) (cdr (assoc ":default" mh-identity-handlers))
--- a/lisp/mh-e/mh-mime.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-mime.el Tue Nov 01 06:23:08 2005 +0000 @@ -28,8 +28,9 @@ ;;; Commentary: ;; Internal support for MH-E package. -;; Support for generating an mhn composition file. -;; MIME is supported only by MH 6.8 or later. +;; Support for generating MH-style directives for mhn or mhbuild as well as +;; MML (MIME Meta Language) tags. MH-style directives are supported by MH 6.8 +;; or later. ;;; Change Log: @@ -41,45 +42,41 @@ (require 'gnus-util) (require 'mh-gnus) +(autoload 'article-emphasize "gnus-art") (autoload 'gnus-article-goto-header "gnus-art") -(autoload 'article-emphasize "gnus-art") +(autoload 'gnus-eval-format "gnus-spec") (autoload 'gnus-get-buffer-create "gnus") -(autoload 'gnus-eval-format "gnus-spec") -(autoload 'widget-convert-button "wid-edit") (autoload 'message-options-set-recipient "message") +(autoload 'mm-uu-dissect "mm-uu") (autoload 'mml-unsecure-message "mml-sec") -(autoload 'mml-minibuffer-read-file "mml") -(autoload 'mml-minibuffer-read-description "mml") -(autoload 'mml-insert-empty-tag "mml") -(autoload 'mml-to-mime "mml") -(autoload 'mml-attach-file "mml") (autoload 'rfc2047-decode-region "rfc2047") +(autoload 'widget-convert-button "wid-edit") ;;;###mh-autoload (defun mh-compose-insertion (&optional inline) - "Add a directive to insert a MIME part from a file, using mhn or gnus. -If the variable `mh-compose-insertion' is set to 'mhn, then that will be used. -If it is set to 'gnus, then that will be used instead. + "Add tag to include a file such as an image or sound. +You are prompted for the filename containing the object, the media type if it +cannot be determined automatically, and a content description. If you're using +MH-style directives, you will also be prompted for additional attributes. + +The option `mh-compose-insertion' controls what type of tags are inserted. Optional argument INLINE means make it an inline attachment." (interactive "P") - (if (equal mh-compose-insertion 'gnus) + (if (equal mh-compose-insertion 'mml) (if inline (mh-mml-attach-file "inline") (mh-mml-attach-file)) - (call-interactively 'mh-mhn-compose-insertion))) + (call-interactively 'mh-mh-attach-file))) ;;;###mh-autoload (defun mh-compose-forward (&optional description folder messages) - "Add a MIME directive to forward a message, using mhn or gnus. -If the variable `mh-compose-insertion' is set to 'mhn, then that will be used. -If it is set to 'gnus, then that will be used instead. -Optional argument DESCRIPTION is a description of the attachment. -Optional argument FOLDER is the folder from which the forwarded message should -come. -Optional argument MESSAGES is the range of messages to forward. -If any of the optional arguments are absent, they are prompted for." + "Add tag to forward a message. +You are prompted for a content DESCRIPTION, the name of the FOLDER in which +the messages to forward are located, and the MESSAGES' numbers. + +The option `mh-compose-insertion' controls what type of tags are inserted." (interactive (let* - ((description (read-string "Forw Content-description: ")) + ((description (mml-minibuffer-read-description)) (folder (mh-prompt-for-folder "Message from" mh-sent-from-folder nil)) (messages (let ((default-message @@ -105,24 +102,24 @@ (if (null range) (error "No messages in specified range")) (dolist (message range) - (if (equal mh-compose-insertion 'gnus) + (if (equal mh-compose-insertion 'mml) (mh-mml-forward-message description folder (format "%s" message)) - (mh-mhn-compose-forw description folder message))))) + (mh-mh-forward-message description folder (format "%s" message)))))) ;; To do: ;; paragraph code should not fill # lines if MIME enabled. -;; implement mh-auto-edit-mhn (if non-nil, \\[mh-send-letter] -;; invokes mh-edit-mhn automatically before sending.) -;; actually, instead of mh-auto-edit-mhn, +;; implement mh-auto-mh-to-mime (if non-nil, \\[mh-send-letter] +;; invokes mh-mh-to-mime automatically before sending.) +;; actually, instead of mh-auto-mh-to-mime, ;; should read automhnproc from profile ;; MIME option to mh-forward ;; command to move to content-description insertion point -(defvar mh-mhn-args nil - "Extra arguments to have \\[mh-edit-mhn] pass to the \"mhn\" command. -The arguments are passed to mhn if \\[mh-edit-mhn] is given a -prefix argument. Normally default arguments to mhn are specified in the -MH profile.") +(defvar mh-mh-to-mime-args nil + "Extra arguments for \\[mh-mh-to-mime] to pass to the \"mhbuild\" command. +The arguments are passed to \"mhbuild\" if \\[mh-mh-to-mime] is given a prefix +argument. Normally default arguments to \"mhbuild\" are specified in the MH +profile.") (defvar mh-media-type-regexp (concat (regexp-opt '("text" "image" "audio" "video" "application" @@ -196,7 +193,6 @@ (mh-file-mime-type-substitute (match-string 0) filename))) (kill-buffer tmp-buffer))))))) -;;; This is needed for Emacs20 which doesn't have mailcap-mime-types. (defvar mh-mime-content-types '(("application/mac-binhex40") ("application/msword") ("application/octet-stream") ("application/pdf") ("application/pgp-keys") @@ -218,8 +214,34 @@ ("text/richtext") ("text/x-vcard") ("text/xml") ("video/mpeg") ("video/quicktime")) - "Valid MIME content types. -See documentation for \\[mh-edit-mhn].") + "Valid MIME content types for Emacs 20. +Obsolete; use `mailcap-mime-types'. + +See also \\[mh-mh-to-mime].") + +;;; Delete mh-minibuffer-read-type and mh-mime-content-types and use +;;; mml-minibuffer-read-type when Emacs20 is no longer supported unless we +;;; think (mh-file-mime-type) is better than (mm-default-file-encoding). + +(defun mh-minibuffer-read-type (filename &optional default) + "Return the content type associated with the given FILENAME. +If the \"file\" command exists and recognizes the given file, then its value +is returned\; otherwise, the user is prompted for a type (see +`mailcap-mime-types' and for Emacs 20, `mh-mime-content-types'). +Optional argument DEFAULT is returned if a type isn't entered." + (mailcap-parse-mimetypes) + (let* ((default (or default + (mm-default-file-encoding filename) + "application/octet-stream")) + (type (or (mh-file-mime-type filename) + (completing-read + (format "Content type (default %s): " default) + (if (fboundp 'mailcap-mime-types) + (mapcar 'list (mailcap-mime-types)) + mh-mime-content-types))))) + (if (not (equal type "")) + type + default))) ;; RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One: ;; Format of Internet Message Bodies. @@ -248,35 +270,27 @@ "Valid MIME access-type values.") ;;;###mh-autoload -(defun mh-mhn-compose-insertion (filename type description attributes) - "Add a directive to insert a MIME message part from a file. -This is the typical way to insert non-text parts in a message. +(defun mh-mh-attach-file (filename type description attributes) + "Add a tag to insert a MIME message part from a file. +You are prompted for the FILENAME containing the object, the media TYPE if it +cannot be determined automatically, and a content DESCRIPTION. In addition, +you are also prompted for additional ATTRIBUTES. -Arguments are FILENAME, which tells where to find the file, TYPE, the MIME -content type, DESCRIPTION, a line of text for the Content-Description field. -ATTRIBUTES is a comma separated list of name=value pairs that is appended to -the Content-Type field of the attachment. - -See also \\[mh-edit-mhn]." - (interactive (let ((filename (read-file-name "Insert contents of: "))) +See also \\[mh-mh-to-mime]." + (interactive (let ((filename (mml-minibuffer-read-file "Attach file: "))) (list filename - (or (mh-file-mime-type filename) - (completing-read "Content-Type: " - (if (fboundp 'mailcap-mime-types) - (mapcar 'list (mailcap-mime-types)) - mh-mime-content-types))) - (read-string "Content-Description: ") - (read-string "Content-Attributes: " + (mh-minibuffer-read-type filename) + (mml-minibuffer-read-description) + (read-string "Attributes: " (concat "name=\"" (file-name-nondirectory filename) "\""))))) - (mh-mhn-compose-type filename type description attributes )) + (mh-mh-compose-type filename type description attributes)) -(defun mh-mhn-compose-type (filename type +(defun mh-mh-compose-type (filename type &optional description attributes comment) - "Insert a mhn directive to insert a file. - + "Insert an MH-style directive to insert a file. The file specified by FILENAME is encoded as TYPE. An optional DESCRIPTION is used as the Content-Description field, optional set of ATTRIBUTES and an optional COMMENT can also be included." @@ -292,75 +306,62 @@ (insert "] " (expand-file-name filename)) (insert "\n")) +;;;###mh-autoload +(defun mh-mh-compose-anon-ftp (host filename type description) + "Add tag to include anonymous ftp reference to a file. +You can even have your message initiate an \"ftp\" transfer when the +recipient reads the message. You are prompted for the remote +HOST and FILENAME, the media TYPE, and the content DESCRIPTION. + +See also \\[mh-mh-to-mime]." + (interactive (list + (read-string "Remote host: ") + (read-string "Remote filename: ") + (mh-minibuffer-read-type "DUMMY-FILENAME") + (mml-minibuffer-read-description))) + (mh-mh-compose-external-type "anon-ftp" host filename + type description)) ;;;###mh-autoload -(defun mh-mhn-compose-anon-ftp (host filename type description) - "Add a directive for a MIME anonymous ftp external body part. -This directive tells MH to include a reference to a message/external-body part -retrievable by anonymous FTP. +(defun mh-mh-compose-external-compressed-tar (host filename description) + "Add tag to include anonymous ftp reference to a compressed tar file. +In addition to retrieving the file via anonymous \"ftp\" as per the +\\[mh-mh-compose-anon-ftp] command, the file will also be uncompressed and +untarred. You are prompted for the remote HOST and FILENAME and the content +DESCRIPTION. -Arguments are HOST and FILENAME, which tell where to find the file, TYPE, the -MIME content type, and DESCRIPTION, a line of text for the Content-description -header. - -See also \\[mh-edit-mhn]." +See also \\[mh-mh-to-mime]." (interactive (list (read-string "Remote host: ") (read-string "Remote filename: ") - (completing-read "External Content-Type: " - (if (fboundp 'mailcap-mime-types) - (mapcar 'list (mailcap-mime-types)) - mh-mime-content-types)) - (read-string "External Content-Description: "))) - (mh-mhn-compose-external-type "anon-ftp" host filename - type description)) + (mml-minibuffer-read-description))) + (mh-mh-compose-external-type "anon-ftp" host filename + "application/octet-stream" + description + "type=tar; conversions=x-compress" + "mode=image")) ;;;###mh-autoload -(defun mh-mhn-compose-external-compressed-tar (host filename description) - "Add a directive to include a MIME reference to a compressed tar file. -The file should be available via anonymous ftp. This directive tells MH to -include a reference to a message/external-body part. +(defun mh-mh-compose-external-type (access-type host filename type + &optional description + attributes parameters + comment) + "Add tag to refer to a remote file. +This command is a general utility for referencing external files. In fact, all +of the other commands that insert directives to access external files call +this command. You are prompted for the ACCESS-TYPE, remote HOST and FILENAME, +and content TYPE. If you provide a prefix argument, you are also prompted for +a content DESCRIPTION, ATTRIBUTES, PARAMETERS, and a COMMENT. -Arguments are HOST and FILENAME, which tell where to find the file, and -DESCRIPTION, a line of text for the Content-description header. - -See also \\[mh-edit-mhn]." +See also \\[mh-mh-to-mime]." (interactive (list + (completing-read "Access type: " mh-access-types) (read-string "Remote host: ") (read-string "Remote filename: ") - (read-string "Tar file Content-description: "))) - (mh-mhn-compose-external-type "anon-ftp" host filename - "application/octet-stream" - description - "type=tar; conversions=x-compress" - "mode=image")) - -;;;###mh-autoload -(defun mh-mhn-compose-external-type (access-type host filename type - &optional description - attributes extra-params - comment) - "Add a directive to include a MIME reference to a remote file. -The file should be available via anonymous ftp. This directive tells MH to -include a reference to a message/external-body part. - -Arguments are ACCESS-TYPE, HOST and FILENAME, which tell where to find the -file and TYPE which is the MIME Content-Type. Optional arguments include -DESCRIPTION, a line of text for the Content-description header, ATTRIBUTES, -EXTRA-PARAMS, and COMMENT. - -See also \\[mh-edit-mhn]." - (interactive (list - (completing-read "Access Type: " mh-access-types) - (read-string "Remote host: ") - (read-string "Remote url-path: ") - (completing-read "Content-Type: " - (if (fboundp 'mailcap-mime-types) - (mapcar 'list (mailcap-mime-types)) - mh-mime-content-types)) - (if current-prefix-arg (read-string "Content-description: ")) + (mh-minibuffer-read-type "DUMMY-FILENAME") + (if current-prefix-arg (mml-minibuffer-read-description)) (if current-prefix-arg (read-string "Attributes: ")) - (if current-prefix-arg (read-string "Extra Parameters: ")) + (if current-prefix-arg (read-string "Parameters: ")) (if current-prefix-arg (read-string "Comment: ")))) (beginning-of-line) (insert "#@" type) @@ -378,25 +379,24 @@ (let ((directory (file-name-directory filename))) (and directory (insert "; directory=\"" directory "\""))) - (and extra-params - (insert "; " extra-params)) + (and parameters + (insert "; " parameters)) (insert "\n")) ;;;###mh-autoload -(defun mh-mhn-compose-forw (&optional description folder messages) - "Add a forw directive to this message, to forward a message with MIME. -This directive tells MH to include the named messages in this one. +(defun mh-mh-forward-message (&optional description folder messages) + "Add tag to forward a message. +You are prompted for a content DESCRIPTION, the name of the FOLDER in which +the messages to forward are located, and the MESSAGES' numbers. -Arguments are DESCRIPTION, a line of text for the Content-description header, -and FOLDER and MESSAGES, which name the message(s) to be forwarded. - -See also \\[mh-edit-mhn]." +See also \\[mh-mh-to-mime]." (interactive (list - (read-string "Forw Content-description: ") + (mml-minibuffer-read-description) (mh-prompt-for-folder "Message from" mh-sent-from-folder nil) (read-string (concat "Messages" (if (numberp mh-sent-from-msg) - (format " (default %d): " mh-sent-from-msg) + (format " (default %d): " + mh-sent-from-msg) ": "))))) (beginning-of-line) (insert "#forw [") @@ -417,62 +417,59 @@ (insert "\n")) ;;;###mh-autoload -(defun mh-edit-mhn (&optional extra-args) - "Format the current draft for MIME, expanding any mhn directives. - -Process the current draft with the mhn program, which, using directives -already inserted in the draft, fills in all the MIME components and header -fields. - -This step is performed automatically when sending the message, but this -function may be called manually before sending the draft as well. - -The `\\[mh-revert-mhn-edit]' command undoes this command. The arguments in the -list `mh-mhn-args' are passed to mhn if this function is passed an optional -prefix argument EXTRA-ARGS. +(defun mh-mh-to-mime (&optional extra-args) + "Compose MIME message from MH-style directives. +Typically, you send a message with attachments just like any other message. +However, you may take a sneak preview of the MIME encoding if you wish by +running this command. -For assistance with creating mhn directives to insert various types of -components in a message, see \\[mh-mhn-compose-insertion] (generic insertion -from a file), \\[mh-mhn-compose-anon-ftp] (external reference to file via -anonymous ftp), \\[mh-mhn-compose-external-compressed-tar] \ \(reference to -compressed tar file via anonymous ftp), and \\[mh-mhn-compose-forw] (forward -message). +If you wish to pass additional arguments to \"mhbuild\" (\"mhn\") to affect +how it builds your message, use the `mh-mh-to-mime-args' option. For example, +you can build a consistency check into the message by setting +`mh-mh-to-mime-args' to \"-check\". The recipient of your message can then run +\"mhbuild -check\" on the message--\"mhbuild\" (\"mhn\") will complain if the +message has been corrupted on the way. This command only consults this option +when given a prefix argument EXTRA-ARGS. -The value of `mh-edit-mhn-hook' is a list of functions to be called, with no -arguments, after performing the conversion. +The value of `mh-mh-to-mime-hook' is a list of functions to be called after +the message has been formatted. -The mhn program is part of MH version 6.8 or later." +The effects of this command can be undone by running \\[mh-mh-to-mime-undo]." (interactive "*P") - (mh-mhn-quote-unescaped-sharp) + (mh-mh-quote-unescaped-sharp) (save-buffer) - (message "mhn editing...") + (message "Running %s..." (if (mh-variant-p 'nmh) "mhbuild" "mhn")) (cond ((mh-variant-p 'nmh) (mh-exec-cmd-error nil - "mhbuild" (if extra-args mh-mhn-args) buffer-file-name)) + "mhbuild" + (if extra-args mh-mh-to-mime-args) + buffer-file-name)) (t (mh-exec-cmd-error (format "mhdraft=%s" buffer-file-name) - "mhn" (if extra-args mh-mhn-args) buffer-file-name))) + "mhn" + (if extra-args mh-mh-to-mime-args) + buffer-file-name))) (revert-buffer t t) - (message "mhn editing...done") - (run-hooks 'mh-edit-mhn-hook)) + (message "Running %s...done" (if (mh-variant-p 'nmh) "mhbuild" "mhn")) + (run-hooks 'mh-mh-to-mime-hook)) -(defun mh-mhn-quote-unescaped-sharp () - "Quote `#' characters that haven't been quoted for `mhbuild'. +(defun mh-mh-quote-unescaped-sharp () + "Quote `#' characters that haven't been quoted for \"mhbuild\". If the `#' character is present in the first column, but it isn't part of a -MHN directive then `mhbuild' gives an error. This function will quote all such -characters." +MH-style directive then \"mhbuild\" gives an error. This function will quote +all such characters." (save-excursion (goto-char (point-min)) (while (re-search-forward "^#" nil t) (beginning-of-line) - (unless (mh-mhn-directive-present-p (point) (line-end-position)) + (unless (mh-mh-directive-present-p (point) (line-end-position)) (insert "#")) (goto-char (line-end-position))))) ;;;###mh-autoload -(defun mh-revert-mhn-edit (noconfirm) - "Undo the effect of \\[mh-edit-mhn] by reverting to the backup file. +(defun mh-mh-to-mime-undo (noconfirm) + "Undo effects of \\[mh-mh-to-mime]. Optional non-nil argument NOCONFIRM means don't ask for confirmation." (interactive "*P") (if (null buffer-file-name) @@ -499,25 +496,25 @@ (after-find-file nil))) ;;;###mh-autoload -(defun mh-mhn-directive-present-p (&optional begin end) - "Check if the text between BEGIN and END might be a MHN directive. +(defun mh-mh-directive-present-p (&optional begin end) + "Check if the text between BEGIN and END might be a MH-style directive. The optional argument BEGIN defaults to the beginning of the buffer, while END defaults to the the end of the buffer." (unless begin (setq begin (point-min))) (unless end (setq end (point-max))) (save-excursion - (block 'search-for-mhn-directive + (block 'search-for-mh-directive (goto-char begin) (while (re-search-forward "^#" end t) (let ((s (buffer-substring-no-properties (point) (line-end-position)))) (cond ((equal s "")) ((string-match "^forw[ \t\n]+" s) - (return-from 'search-for-mhn-directive t)) + (return-from 'search-for-mh-directive t)) (t (let ((first-token (car (split-string s "[ \t;@]")))) (when (and first-token (string-match mh-media-type-regexp first-token)) - (return-from 'search-for-mhn-directive t))))))) + (return-from 'search-for-mh-directive t))))))) nil))) @@ -526,12 +523,15 @@ ;;;###mh-autoload (defun mh-mml-to-mime () - "Compose MIME message from mml directives. -This step is performed automatically when sending the message, but this -function may be called manually before sending the draft as well." + "Compose MIME message from MML tags. +Typically, you send a message with attachments just like any other message. +However, you may take a sneak preview of the MIME encoding if you wish by +running this command. + +This action can be undone by running \\[undo]." (interactive) (require 'message) - (when mh-gnus-pgp-support-flag ;; This is only needed for PGP + (when mh-pgp-support-flag ;; This is only needed for PGP (message-options-set-recipient)) (let ((saved-text (buffer-string)) (buffer (current-buffer)) @@ -573,53 +573,45 @@ (if current-prefix-arg (let ((def (or (car mh-mml-cryptographic-method-history) mh-mml-method-default))) - (completing-read (format "Method: [%s] " def) + (completing-read (format "Method (default %s): " def) '(("pgp") ("pgpmime") ("smime")) nil t nil 'mh-mml-cryptographic-method-history def)) mh-mml-method-default)) ;;;###mh-autoload (defun mh-mml-attach-file (&optional disposition) - "Attach a file to the outgoing MIME message. -The file is not inserted or encoded until you send the message with -`\\[mh-send-letter]'. -Message disposition is \"inline\" or \"attachment\" and is prompted for if -DISPOSITION is nil. + "Add a tag to insert a MIME message part from a file. +You are prompted for the filename containing the object, the media type if it +cannot be determined automatically, a content description and the DISPOSITION +of the attachment. -This is basically `mml-attach-file' from gnus, modified such that a prefix +This is basically `mml-attach-file' from Gnus, modified such that a prefix argument yields an `inline' disposition and Content-Type is determined automatically." (let* ((file (mml-minibuffer-read-file "Attach file: ")) - (type (or (mh-file-mime-type file) - (completing-read "Content-Type: " - (if (fboundp 'mailcap-mime-types) - (mapcar 'list (mailcap-mime-types)) - mh-mime-content-types)))) + (type (mh-minibuffer-read-type file)) (description (mml-minibuffer-read-description)) (dispos (or disposition - (completing-read "Disposition: [attachment] " - '(("attachment")("inline")) - nil t nil nil - "attachment")))) + (mml-minibuffer-read-disposition type)))) (mml-insert-empty-tag 'part 'type type 'filename file 'disposition dispos 'description description))) (defvar mh-identity-pgg-default-user-id) (defun mh-secure-message (method mode &optional identity) - "Add directive to Encrypt/Sign an entire message. + "Add tag to encrypt or sign message. METHOD should be one of: \"pgpmime\", \"pgp\", \"smime\". MODE should be one of: \"sign\", \"encrypt\", \"signencrypt\", \"none\". IDENTITY is optionally the default-user-id to use." - (if (not mh-gnus-pgp-support-flag) - (error "Sorry. Your version of gnus does not support PGP/GPG") + (if (not mh-pgp-support-flag) + (error "Your version of Gnus does not support PGP/GPG") ;; Check the arguments (let ((valid-methods (list "pgpmime" "pgp" "smime")) (valid-modes (list "sign" "encrypt" "signencrypt" "none"))) (if (not (member method valid-methods)) - (error "Sorry. METHOD \"%s\" is invalid" method)) + (error "Method \"%s\" is invalid" method)) (if (not (member mode valid-modes)) - (error "Sorry. MODE \"%s\" is invalid" mode)) + (error "Mode \"%s\" is invalid" mode)) (mml-unsecure-message) (if (not (string= mode "none")) (save-excursion @@ -632,34 +624,46 @@ ;;;###mh-autoload (defun mh-mml-unsecure-message (&optional ignore) - "Remove any secure message directives. -The IGNORE argument is not used." + "Remove any secure message tags. +The argument IGNORE is not used." (interactive "P") - (if (not mh-gnus-pgp-support-flag) - (error "Sorry. Your version of gnus does not support PGP/GPG") + (if (not mh-pgp-support-flag) + (error "Your version of Gnus does not support PGP/GPG") (mml-unsecure-message))) ;;;###mh-autoload (defun mh-mml-secure-message-sign (method) - "Add security directive to sign the entire message using METHOD." + "Add tag to sign the message. +A proper multipart message is created for you when you send the message. Use +the \\[mh-mml-unsecure-message] command to remove this tag. Use a prefix +argument METHOD to be prompted for one of the possible security methods +\(see `mh-mml-method-default')." (interactive (list (mh-mml-query-cryptographic-method))) (mh-secure-message method "sign" mh-identity-pgg-default-user-id)) ;;;###mh-autoload (defun mh-mml-secure-message-encrypt (method) - "Add security directive to encrypt the entire message using METHOD." + "Add tag to encrypt the message. +A proper multipart message is created for you when you send the message. Use +the \\[mh-mml-unsecure-message] command to remove this tag. Use a prefix +argument METHOD to be prompted for one of the possible security methods +\(see `mh-mml-method-default')." (interactive (list (mh-mml-query-cryptographic-method))) (mh-secure-message method "encrypt" mh-identity-pgg-default-user-id)) ;;;###mh-autoload (defun mh-mml-secure-message-signencrypt (method) - "Add security directive to encrypt and sign the entire message using METHOD." + "Add tag to encrypt and sign the message. +A proper multipart message is created for you when you send the message. Use +the \\[mh-mml-unsecure-message] command to remove this tag. Use a prefix +argument METHOD to be prompted for one of the possible security methods +\(see `mh-mml-method-default')." (interactive (list (mh-mml-query-cryptographic-method))) (mh-secure-message method "signencrypt" mh-identity-pgg-default-user-id)) ;;;###mh-autoload -(defun mh-mml-directive-present-p () - "Check if the current buffer has text which may be an MML directive." +(defun mh-mml-tag-present-p () + "Check if the current buffer has text which may be a MML tag." (save-excursion (goto-char (point-min)) (re-search-forward @@ -682,7 +686,7 @@ ;;;###mh-autoload (defun mh-destroy-postponed-handles () - "Free MIME data for externally displayed mime parts." + "Free MIME data for externally displayed MIME parts." (let ((mime-data (mh-buffer-data))) (when mime-data (mm-destroy-parts (mh-mime-handles mime-data))) @@ -736,13 +740,13 @@ ;;;###mh-autoload (defun mh-display-smileys () - "Function to display smileys." + "Display smileys." (when (and mh-graphical-smileys-flag (mh-small-show-buffer-p)) (mh-funcall-if-exists smiley-region (point-min) (point-max)))) ;;;###mh-autoload (defun mh-display-emphasis () - "Function to display graphical emphasis." + "Display graphical emphasis." (when (and mh-graphical-emphasis-flag (mh-small-show-buffer-p)) (flet ((article-goto-body ())) ; shadow this function to do nothing (save-excursion @@ -799,8 +803,7 @@ "Store the MIME parts of the current message. If ARG, prompt for directory, else use that specified by the variable `mh-mime-save-parts-default-directory'. These directories may be superseded by -mh_profile directives, since this function calls on mhstore or mhn to do the -actual storing." +MH profile components, since this function calls on mhstore to do the work." (interactive "P") (let ((msg (if (eq major-mode 'mh-show-mode) (mh-show-buffer-message-number) @@ -940,7 +943,7 @@ (mh-mime-display-single handle)) ((equal (car handle) "multipart/alternative") (mh-mime-display-alternative (cdr handle))) - ((and mh-gnus-pgp-support-flag + ((and mh-pgp-support-flag (or (equal (car handle) "multipart/signed") (equal (car handle) "multipart/encrypted"))) (mh-mime-display-security handle)) @@ -1047,7 +1050,7 @@ (mm-inlined-p handle))))))) (save-restriction (narrow-to-region (point) (if (eobp) (point) (1+ (point)))) - (cond ((and mh-gnus-pgp-support-flag + (cond ((and mh-pgp-support-flag (equal type "application/pgp-signature")) nil) ; skip signatures as they are already handled... ((not displayp)
--- a/lisp/mh-e/mh-utils.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mh-e/mh-utils.el Tue Nov 01 06:23:08 2005 +0000 @@ -86,32 +86,37 @@ ;;; Scan Line Formats (defvar mh-scan-msg-number-regexp "^ *\\([0-9]+\\)" - "This regexp is used to extract the message number from a scan line. -Note that the message number must be placed in a parenthesized expression as -in the default of \"^ *\\\\([0-9]+\\\\)\".") + "This regular expression extracts the message number. +It must match from the beginning of the line. Note that the message number +must be placed in a parenthesized expression as in the default of +\"^ *\\\\([0-9]+\\\\)\".") (defvar mh-scan-msg-overflow-regexp "^[?0-9][0-9]" - "This regexp matches scan lines in which the message number overflowed.") + "This regular expression matches overflowed message numbers.") (defvar mh-scan-msg-format-regexp "%\\([0-9]*\\)(msg)" - "This regexp is used to find the message number width in a scan format. + "This regular expression finds the message number width in a scan format. Note that the message number must be placed in a parenthesized expression as -in the default of \"%\\\\([0-9]*\\\\)(msg)\".") +in the default of \"%\\\\([0-9]*\\\\)(msg)\". This variable is only consulted +if `mh-scan-format-file' is set to \"Use MH-E scan Format\".") (defvar mh-scan-msg-format-string "%d" "This is a format string for width of the message number in a scan format. -Use `0%d' for zero-filled message numbers.") +Use `0%d' for zero-filled message numbers. This variable is only consulted if +`mh-scan-format-file' is set to \"Use MH-E scan Format\".") (defvar mh-scan-msg-search-regexp "^[^0-9]*%d[^0-9]" - "This format string regexp matches the scan line for a particular message. -Use `%d' to represent the location of the message number within the -expression as in the default of \"^[^0-9]*%d[^0-9]\".") + "This regular expression matches a particular message. +It is a format string; use `%d' to represent the location of the message +number within the expression as in the default of \"^[^0-9]*%d[^0-9]\".") (defvar mh-cmd-note 4 - "This is the number of characters to skip over before inserting notation. + "Column where notations begin. This variable should be set with the function `mh-set-cmd-note'. This variable -may be updated dynamically if `mh-adaptive-cmd-note-flag' is non-nil and -`mh-scan-format-file' is t.") +may be updated dynamically if `mh-adaptive-cmd-note-flag' is on and +`mh-scan-format-file' is set to \"Use MH-E scan Format\". + +Note that columns in Emacs start with 0.") (make-variable-buffer-local 'mh-cmd-note) (defvar mh-note-seq ?% @@ -133,12 +138,12 @@ `mh-mail-header-separator' in `mh-letter-mode'; in other contexts, you may have to perform this initialization yourself. -Do not make this a regexp as it may be the argument to `insert' and it is -passed through `regexp-quote' before being used by functions like +Do not make this a regular expression as it may be the argument to `insert' +and it is passed through `regexp-quote' before being used by functions like `re-search-forward'.") (defvar mh-signature-separator-regexp "^-- $" - "Regexp used to find signature separator. + "This regular expression matches the signature separator. See `mh-signature-separator'.") (defvar mh-signature-separator "-- \n" @@ -175,8 +180,8 @@ (defvar mh-globals-hash (make-hash-table) "Keeps track of MIME data on a per buffer basis.") -(defvar mh-gnus-pgp-support-flag (not (not (locate-library "mml2015"))) - "Non-nil means installed Gnus has PGP support.") +(defvar mh-pgp-support-flag (not (not (locate-library "mml2015"))) + "Non-nil means PGP support is available.") (defvar mh-mm-inline-media-tests `(("image/jpeg" @@ -410,10 +415,10 @@ (defun mh-show-font-lock-fontify-region (beg end loudly) "Limit font-lock in `mh-show-mode' to the header. -Used when `mh-highlight-citation-p' is set to gnus, leaving the body to be -dealt with by gnus highlighting. The region between BEG and END is -given over to be fontified and LOUDLY controls if a user sees a -message about the fontification operation." +Used when `mh-highlight-citation-p' is set to \"'gnus\", leaving the body to +be dealt with by gnus highlighting. The region between BEG and END is given +over to be fontified and LOUDLY controls if a user sees a message about the +fontification operation." (let ((header-end (mh-mail-header-end))) (cond ((and (< beg header-end)(< end header-end)) @@ -432,7 +437,7 @@ (require 'gnus-cite)))) (defun mh-gnus-article-highlight-citation () - "Highlight cited text in current buffer using gnus." + "Highlight cited text in current buffer using Gnus." (interactive) ;; Requiring gnus-cite should have been sufficient. However for Emacs21.1, ;; recursive-load-depth-limit is only 10, so an error occurs. Also it may be @@ -1853,7 +1858,7 @@ (let ((point (point)) (return-value t)) (goto-char (point-min)) - (unless (re-search-forward (format "^[ ]*%s[^0-9]+" number) nil t) + (unless (re-search-forward (format mh-scan-msg-search-regexp number) nil t) (goto-char point) (unless no-error-if-no-message (error "No message %d" number))
--- a/lisp/mouse.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/mouse.el Tue Nov 01 06:23:08 2005 +0000 @@ -768,7 +768,7 @@ (save-excursion ;; Swallow the up-event. (read-event) - (set-buffer "*Messages*") + (set-buffer (get-buffer-create "*Messages*")) (goto-char (point-max)) (display-buffer (current-buffer))) ;; Give temporary modes such as isearch a chance to turn off.
--- a/lisp/net/ange-ftp.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/net/ange-ftp.el Tue Nov 01 06:23:08 2005 +0000 @@ -2666,36 +2666,6 @@ ;;;; Directory information caching support. ;;;; ------------------------------------------------------------ -(defconst ange-ftp-date-regexp - (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)") - ;; In some locales, month abbreviations are as short as 2 letters, - ;; and they can be padded on the right with spaces. - ;; weiand: changed: month ends with . or , or ., -;;old (month (concat l l "+ *")) - (month (concat l l "+[.]?,? *")) - ;; Recognize any non-ASCII character. - ;; The purpose is to match a Kanji character. - (k "[^\0-\177]") - (s " ") - (mm "[ 0-1][0-9]") - ;; weiand: changed: day ends with . -;;old (dd "[ 0-3][0-9]") - (dd "[ 0-3][0-9][.]?") - (western (concat "\\(" month s dd "\\|" dd s month "\\)")) - (japanese (concat mm k s dd k))) - ;; Require the previous column to end in a digit. - ;; This avoids recognizing `1 may 1997' as a date in the line: - ;; -r--r--r-- 1 may 1997 1168 Oct 19 16:49 README - ;; albinus: - ;; Require also the following column to start in a digit. - ;; This avoids recognizing `kfs 10' as a date in the line: - ;; -rw------- 1 kfs 10 May 27 2003 .autorun.lck -;; (concat "[0-9]" s "\\(" western "\\|" japanese "\\)" s)) - (concat "[0-9]" s "\\(" western "\\|" japanese "\\)" s "+[0-9]")) - "Regular expression to match up to the column before the file name in a -directory listing. This regular expression is designed to recognize dates -regardless of the language.") - (defvar ange-ftp-add-file-entry-alist nil "Alist saying how to add file entries on certain OS types. Association list of pairs \( TYPE \. FUNC \), where FUNC @@ -2730,13 +2700,8 @@ ;;Extract the filename from the current line of a dired-like listing. `(let ((eol (progn (end-of-line) (point)))) (beginning-of-line) - (if (re-search-forward ange-ftp-date-regexp eol t) - (progn - (skip-chars-forward " ") - (skip-chars-forward "^ " eol) - (skip-chars-forward " " eol) - ;; We bomb on filenames starting with a space. - (buffer-substring (point) eol))))) + (if (re-search-forward directory-listing-before-filename-regexp eol t) + (buffer-substring (point) eol)))) ;; This deals with the F switch. Should also do something about ;; unquoting names obtained with the SysV b switch and the GNU Q @@ -2851,7 +2816,7 @@ ;; (3) The twilight zone. ;; We'll assume (1) for now. nil) - ((re-search-forward ange-ftp-date-regexp nil t) + ((re-search-forward directory-listing-before-filename-regexp nil t) (beginning-of-line) (ange-ftp-ls-parser switches)) ((re-search-forward "^[^ \n\t]+ +\\([0-9]+\\|-\\|=\\) " nil t) @@ -5532,7 +5497,7 @@ (let ((tbl (make-hash-table :test 'equal))) (goto-char (point-min)) (save-match-data - (while (re-search-forward ange-ftp-date-regexp nil t) + (while (re-search-forward directory-listing-before-filename-regexp nil t) (end-of-line) (skip-chars-backward " ") (let ((end (point)))
--- a/lisp/net/browse-url.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/net/browse-url.el Tue Nov 01 06:23:08 2005 +0000 @@ -713,7 +713,8 @@ (setq browse-url-temp-file-name (convert-standard-filename (make-temp-file - (expand-file-name "burl" browse-url-temp-dir))))) + (expand-file-name "burl" browse-url-temp-dir) + nil ".html")))) (setq file-name browse-url-temp-file-name) (write-region (point-min) (point-max) file-name nil 'no-message))) (browse-url-of-file file-name))))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/pgg-def.el Tue Nov 01 06:23:08 2005 +0000 @@ -0,0 +1,91 @@ +;;; pgg-def.el --- functions/macros for defining PGG functions + +;; Copyright (C) 1999, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +;; Author: Daiki Ueno <ueno@unixuser.org> +;; Created: 1999/11/02 +;; Keywords: PGP, OpenPGP, GnuPG + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; 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. + +;;; Code: + +(defgroup pgg () + "Glue for the various PGP implementations." + :group 'mime + :version "22.1") + +(defcustom pgg-default-scheme 'gpg + "Default PGP scheme." + :group 'pgg + :type '(choice (const :tag "GnuPG" gpg) + (const :tag "PGP 5" pgp5) + (const :tag "PGP" pgp))) + +(defcustom pgg-default-user-id (user-login-name) + "User ID of your default identity." + :group 'pgg + :type 'string) + +(defcustom pgg-default-keyserver-address "subkeys.pgp.net" + "Host name of keyserver." + :group 'pgg + :type 'string) + +(defcustom pgg-query-keyserver nil + "Whether PGG queries keyservers for missing keys when verifying messages." + :version "22.1" + :group 'pgg + :type 'boolean) + +(defcustom pgg-encrypt-for-me t + "If t, encrypt all outgoing messages with user's public key." + :group 'pgg + :type 'boolean) + +(defcustom pgg-cache-passphrase t + "If t, cache passphrase." + :group 'pgg + :type 'boolean) + +(defcustom pgg-passphrase-cache-expiry 16 + "How many seconds the passphrase is cached. +Whether the passphrase is cached at all is controlled by +`pgg-cache-passphrase'." + :group 'pgg + :type 'integer) + +(defvar pgg-messages-coding-system nil + "Coding system used when reading from a PGP external process.") + +(defvar pgg-status-buffer " *PGG status*") +(defvar pgg-errors-buffer " *PGG errors*") +(defvar pgg-output-buffer " *PGG output*") + +(defvar pgg-echo-buffer "*PGG-echo*") + +(defvar pgg-scheme nil + "Current scheme of PGP implementation.") + +(defmacro pgg-truncate-key-identifier (key) + `(if (> (length ,key) 8) (substring ,key 8) ,key)) + +(provide 'pgg-def) + +;;; arch-tag: c425f3ab-ed75-4055-bb46-431a418c94b7 +;;; pgg-def.el ends here
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/pgg-gpg.el Tue Nov 01 06:23:08 2005 +0000 @@ -0,0 +1,275 @@ +;;; pgg-gpg.el --- GnuPG support for PGG. + +;; Copyright (C) 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + +;; Author: Daiki Ueno <ueno@unixuser.org> +;; Created: 1999/10/28 +;; Keywords: PGP, OpenPGP, GnuPG + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; 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. + +;;; Code: + +(eval-when-compile + (require 'cl) ; for gpg macros + (require 'pgg)) + +(defgroup pgg-gpg () + "GnuPG interface." + :group 'pgg) + +(defcustom pgg-gpg-program "gpg" + "The GnuPG executable." + :group 'pgg-gpg + :type 'string) + +(defcustom pgg-gpg-extra-args nil + "Extra arguments for every GnuPG invocation." + :group 'pgg-gpg + :type '(repeat (string :tag "Argument"))) + +(defcustom pgg-gpg-recipient-argument "--recipient" + "GnuPG option to specify recipient." + :group 'pgg-gpg + :type '(choice (const :tag "New `--recipient' option" "--recipient") + (const :tag "Old `--remote-user' option" "--remote-user"))) + +(defvar pgg-gpg-user-id nil + "GnuPG ID of your default identity.") + +(defun pgg-gpg-process-region (start end passphrase program args) + (let* ((output-file-name (pgg-make-temp-file "pgg-output")) + (args + `("--status-fd" "2" + ,@(if passphrase '("--passphrase-fd" "0")) + "--yes" ; overwrite + "--output" ,output-file-name + ,@pgg-gpg-extra-args ,@args)) + (output-buffer pgg-output-buffer) + (errors-buffer pgg-errors-buffer) + (orig-mode (default-file-modes)) + (process-connection-type nil) + exit-status) + (with-current-buffer (get-buffer-create errors-buffer) + (buffer-disable-undo) + (erase-buffer)) + (unwind-protect + (progn + (set-default-file-modes 448) + (let ((coding-system-for-write 'binary) + (input (buffer-substring-no-properties start end)) + (default-enable-multibyte-characters nil)) + (with-temp-buffer + (when passphrase + (insert passphrase "\n")) + (insert input) + (setq exit-status + (apply #'call-process-region (point-min) (point-max) program + nil errors-buffer nil args)))) + (with-current-buffer (get-buffer-create output-buffer) + (buffer-disable-undo) + (erase-buffer) + (if (file-exists-p output-file-name) + (let ((coding-system-for-read 'raw-text-dos)) + (insert-file-contents output-file-name))) + (set-buffer errors-buffer) + (if (not (equal exit-status 0)) + (insert (format "\n%s exited abnormally: '%s'\n" + program exit-status))))) + (if (file-exists-p output-file-name) + (delete-file output-file-name)) + (set-default-file-modes orig-mode)))) + +(defun pgg-gpg-possibly-cache-passphrase (passphrase &optional key) + (if (and pgg-cache-passphrase + (progn + (goto-char (point-min)) + (re-search-forward "^\\[GNUPG:] \\(GOOD_PASSPHRASE\\>\\)\\|\\(SIG_CREATED\\)" nil t))) + (pgg-add-passphrase-cache + (or key + (progn + (goto-char (point-min)) + (if (re-search-forward + "^\\[GNUPG:] NEED_PASSPHRASE\\(_PIN\\)? \\w+ ?\\w*" nil t) + (substring (match-string 0) -8)))) + passphrase))) + +(defvar pgg-gpg-all-secret-keys 'unknown) + +(defun pgg-gpg-lookup-all-secret-keys () + "Return all secret keys present in secret key ring." + (when (eq pgg-gpg-all-secret-keys 'unknown) + (setq pgg-gpg-all-secret-keys '()) + (let ((args (list "--with-colons" "--no-greeting" "--batch" + "--list-secret-keys"))) + (with-temp-buffer + (apply #'call-process pgg-gpg-program nil t nil args) + (goto-char (point-min)) + (while (re-search-forward + "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" nil t) + (push (substring (match-string 2) 8) + pgg-gpg-all-secret-keys))))) + pgg-gpg-all-secret-keys) + +(defun pgg-gpg-lookup-key (string &optional type) + "Search keys associated with STRING." + (let ((args (list "--with-colons" "--no-greeting" "--batch" + (if type "--list-secret-keys" "--list-keys") + string))) + (with-temp-buffer + (apply #'call-process pgg-gpg-program nil t nil args) + (goto-char (point-min)) + (if (re-search-forward "^\\(sec\\|pub\\):[^:]*:[^:]*:[^:]*:\\([^:]*\\)" + nil t) + (substring (match-string 2) 8))))) + +(defun pgg-gpg-encrypt-region (start end recipients &optional sign) + "Encrypt the current region between START and END. +If optional argument SIGN is non-nil, do a combined sign and encrypt." + (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id)) + (passphrase + (when sign + (pgg-read-passphrase + (format "GnuPG passphrase for %s: " pgg-gpg-user-id) + pgg-gpg-user-id))) + (args + (append + (list "--batch" "--armor" "--always-trust" "--encrypt") + (if sign (list "--sign" "--local-user" pgg-gpg-user-id)) + (if recipients + (apply #'nconc + (mapcar (lambda (rcpt) + (list pgg-gpg-recipient-argument rcpt)) + (append recipients + (if pgg-encrypt-for-me + (list pgg-gpg-user-id))))))))) + (pgg-as-lbt start end 'CRLF + (pgg-gpg-process-region start end passphrase pgg-gpg-program args)) + (when sign + (with-current-buffer pgg-errors-buffer + ;; Possibly cache passphrase under, e.g. "jas", for future sign. + (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id) + ;; Possibly cache passphrase under, e.g. B565716F, for future decrypt. + (pgg-gpg-possibly-cache-passphrase passphrase))) + (pgg-process-when-success))) + +(defun pgg-gpg-decrypt-region (start end) + "Decrypt the current region between START and END." + (let* ((current-buffer (current-buffer)) + (message-keys (with-temp-buffer + (insert-buffer-substring current-buffer) + (pgg-decode-armor-region (point-min) (point-max)))) + (secret-keys (pgg-gpg-lookup-all-secret-keys)) + (key (pgg-gpg-select-matching-key message-keys secret-keys)) + (pgg-gpg-user-id (or key pgg-gpg-user-id pgg-default-user-id)) + (passphrase + (pgg-read-passphrase + (format "GnuPG passphrase for %s: " pgg-gpg-user-id) + pgg-gpg-user-id)) + (args '("--batch" "--decrypt"))) + (pgg-gpg-process-region start end passphrase pgg-gpg-program args) + (with-current-buffer pgg-errors-buffer + (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id) + (goto-char (point-min)) + (re-search-forward "^\\[GNUPG:] DECRYPTION_OKAY\\>" nil t)))) + +(defun pgg-gpg-select-matching-key (message-keys secret-keys) + "Choose a key from MESSAGE-KEYS that matches one of the keys in SECRET-KEYS." + (loop for message-key in message-keys + for message-key-id = (and (equal (car message-key) 1) + (cdr (assq 'key-identifier message-key))) + for key = (and message-key-id (pgg-lookup-key message-key-id 'encrypt)) + when (and key (member key secret-keys)) return key)) + +(defun pgg-gpg-sign-region (start end &optional cleartext) + "Make detached signature from text between START and END." + (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id)) + (passphrase + (pgg-read-passphrase + (format "GnuPG passphrase for %s: " pgg-gpg-user-id) + pgg-gpg-user-id)) + (args + (list (if cleartext "--clearsign" "--detach-sign") + "--armor" "--batch" "--verbose" + "--local-user" pgg-gpg-user-id)) + (inhibit-read-only t) + buffer-read-only) + (pgg-as-lbt start end 'CRLF + (pgg-gpg-process-region start end passphrase pgg-gpg-program args)) + (with-current-buffer pgg-errors-buffer + ;; Possibly cache passphrase under, e.g. "jas", for future sign. + (pgg-gpg-possibly-cache-passphrase passphrase pgg-gpg-user-id) + ;; Possibly cache passphrase under, e.g. B565716F, for future decrypt. + (pgg-gpg-possibly-cache-passphrase passphrase)) + (pgg-process-when-success))) + +(defun pgg-gpg-verify-region (start end &optional signature) + "Verify region between START and END as the detached signature SIGNATURE." + (let ((args '("--batch" "--verify"))) + (when (stringp signature) + (setq args (append args (list signature)))) + (setq args (append args '("-"))) + (pgg-gpg-process-region start end nil pgg-gpg-program args) + (with-current-buffer pgg-errors-buffer + (goto-char (point-min)) + (while (re-search-forward "^gpg: \\(.*\\)\n" nil t) + (with-current-buffer pgg-output-buffer + (insert-buffer-substring pgg-errors-buffer + (match-beginning 1) (match-end 0))) + (delete-region (match-beginning 0) (match-end 0))) + (goto-char (point-min)) + (re-search-forward "^\\[GNUPG:] GOODSIG\\>" nil t)))) + +(defun pgg-gpg-insert-key () + "Insert public key at point." + (let* ((pgg-gpg-user-id (or pgg-gpg-user-id pgg-default-user-id)) + (args (list "--batch" "--export" "--armor" + pgg-gpg-user-id))) + (pgg-gpg-process-region (point)(point) nil pgg-gpg-program args) + (insert-buffer-substring pgg-output-buffer))) + +(defun pgg-gpg-snarf-keys-region (start end) + "Add all public keys in region between START and END to the keyring." + (let ((args '("--import" "--batch" "-")) status) + (pgg-gpg-process-region start end nil pgg-gpg-program args) + (set-buffer pgg-errors-buffer) + (goto-char (point-min)) + (when (re-search-forward "^\\[GNUPG:] IMPORT_RES\\>" nil t) + (setq status (buffer-substring (match-end 0) + (progn (end-of-line)(point))) + status (vconcat (mapcar #'string-to-number (split-string status)))) + (erase-buffer) + (insert (format "Imported %d key(s). +\tArmor contains %d key(s) [%d bad, %d old].\n" + (+ (aref status 2) + (aref status 10)) + (aref status 0) + (aref status 1) + (+ (aref status 4) + (aref status 11))) + (if (zerop (aref status 9)) + "" + "\tSecret keys are imported.\n"))) + (append-to-buffer pgg-output-buffer (point-min)(point-max)) + (pgg-process-when-success))) + +(provide 'pgg-gpg) + +;;; arch-tag: 2aa5d5d8-93a0-4865-9312-33e29830e000 +;;; pgg-gpg.el ends here
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/pgg-parse.el Tue Nov 01 06:23:08 2005 +0000 @@ -0,0 +1,515 @@ +;;; pgg-parse.el --- OpenPGP packet parsing + +;; Copyright (C) 1999, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +;; Author: Daiki Ueno <ueno@unixuser.org> +;; Created: 1999/10/28 +;; Keywords: PGP, OpenPGP, GnuPG + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; 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. + +;;; Commentary: + +;; This module is based on + +;; [OpenPGP] RFC 2440: "OpenPGP Message Format" +;; by John W. Noerenberg, II <jwn2@qualcomm.com>, +;; Jon Callas <jon@pgp.com>, Lutz Donnerhacke <lutz@iks-jena.de>, +;; Hal Finney <hal@pgp.com> and Rodney Thayer <rodney@unitran.com> +;; (1998/11) + +;;; Code: + +(eval-when-compile (require 'cl)) + +(defgroup pgg-parse () + "OpenPGP packet parsing." + :group 'pgg) + +(defcustom pgg-parse-public-key-algorithm-alist + '((1 . RSA) (2 . RSA-E) (3 . RSA-S) (16 . ELG-E) (17 . DSA) (20 . ELG)) + "Alist of the assigned number to the public key algorithm." + :group 'pgg-parse + :type '(repeat + (cons (sexp :tag "Number") (sexp :tag "Type")))) + +(defcustom pgg-parse-symmetric-key-algorithm-alist + '((1 . IDEA) (2 . 3DES) (4 . CAST5) (5 . SAFER-SK128)) + "Alist of the assigned number to the simmetric key algorithm." + :group 'pgg-parse + :type '(repeat + (cons (sexp :tag "Number") (sexp :tag "Type")))) + +(defcustom pgg-parse-hash-algorithm-alist + '((1 . MD5) (2 . SHA1) (3 . RIPEMD160) (5 . MD2) (8 . SHA256) (9 . SHA384) + (10 . SHA512)) + "Alist of the assigned number to the cryptographic hash algorithm." + :group 'pgg-parse + :type '(repeat + (cons (sexp :tag "Number") (sexp :tag "Type")))) + +(defcustom pgg-parse-compression-algorithm-alist + '((0 . nil); Uncompressed + (1 . ZIP) + (2 . ZLIB)) + "Alist of the assigned number to the compression algorithm." + :group 'pgg-parse + :type '(repeat + (cons (sexp :tag "Number") (sexp :tag "Type")))) + +(defcustom pgg-parse-signature-type-alist + '((0 . "Signature of a binary document") + (1 . "Signature of a canonical text document") + (2 . "Standalone signature") + (16 . "Generic certification of a User ID and Public Key packet") + (17 . "Persona certification of a User ID and Public Key packet") + (18 . "Casual certification of a User ID and Public Key packet") + (19 . "Positive certification of a User ID and Public Key packet") + (24 . "Subkey Binding Signature") + (31 . "Signature directly on a key") + (32 . "Key revocation signature") + (40 . "Subkey revocation signature") + (48 . "Certification revocation signature") + (64 . "Timestamp signature.")) + "Alist of the assigned number to the signature type." + :group 'pgg-parse + :type '(repeat + (cons (sexp :tag "Number") (sexp :tag "Type")))) + +(defcustom pgg-ignore-packet-checksum t; XXX + "If non-nil checksum of each ascii armored packet will be ignored." + :group 'pgg-parse + :type 'boolean) + +(defvar pgg-armor-header-lines + '("^-----BEGIN PGP MESSAGE\\(, PART [0-9]+\\(/[0-9]+\\)?\\)?-----\r?$" + "^-----BEGIN PGP PUBLIC KEY BLOCK-----\r?$" + "^-----BEGIN PGP PRIVATE KEY BLOCK-----\r?$" + "^-----BEGIN PGP SIGNATURE-----\r?$") + "Armor headers.") + +(eval-and-compile + (defalias 'pgg-char-int (if (fboundp 'char-int) + 'char-int + 'identity))) + +(defmacro pgg-format-key-identifier (string) + `(mapconcat (lambda (c) (format "%02X" (pgg-char-int c))) + ,string "") + ;; `(upcase (apply #'format "%02x%02x%02x%02x%02x%02x%02x%02x" + ;; (string-to-number-list ,string))) + ) + +(defmacro pgg-parse-time-field (bytes) + `(list (logior (lsh (car ,bytes) 8) + (nth 1 ,bytes)) + (logior (lsh (nth 2 ,bytes) 8) + (nth 3 ,bytes)) + 0)) + +(defmacro pgg-byte-after (&optional pos) + `(pgg-char-int (char-after ,(or pos `(point))))) + +(defmacro pgg-read-byte () + `(pgg-char-int (char-after (prog1 (point) (forward-char))))) + +(defmacro pgg-read-bytes-string (nbytes) + `(buffer-substring + (point) (prog1 (+ ,nbytes (point)) + (forward-char ,nbytes)))) + +(defmacro pgg-read-bytes (nbytes) + `(mapcar #'pgg-char-int (pgg-read-bytes-string ,nbytes)) + ;; `(string-to-number-list (pgg-read-bytes-string ,nbytes)) + ) + +(defmacro pgg-read-body-string (ptag) + `(if (nth 1 ,ptag) + (pgg-read-bytes-string (nth 1 ,ptag)) + (pgg-read-bytes-string (- (point-max) (point))))) + +(defmacro pgg-read-body (ptag) + `(mapcar #'pgg-char-int (pgg-read-body-string ,ptag)) + ;; `(string-to-number-list (pgg-read-body-string ,ptag)) + ) + +(defalias 'pgg-skip-bytes 'forward-char) + +(defmacro pgg-skip-header (ptag) + `(pgg-skip-bytes (nth 2 ,ptag))) + +(defmacro pgg-skip-body (ptag) + `(pgg-skip-bytes (nth 1 ,ptag))) + +(defmacro pgg-set-alist (alist key value) + `(setq ,alist (nconc ,alist (list (cons ,key ,value))))) + +(when (fboundp 'define-ccl-program) + + (define-ccl-program pgg-parse-crc24 + '(1 + ((loop + (read r0) (r1 ^= r0) (r2 ^= 0) + (r5 = 0) + (loop + (r1 <<= 1) + (r1 += ((r2 >> 15) & 1)) + (r2 <<= 1) + (if (r1 & 256) + ((r1 ^= 390) (r2 ^= 19707))) + (if (r5 < 7) + ((r5 += 1) + (repeat)))) + (repeat))))) + + (defun pgg-parse-crc24-string (string) + (let ((h (vector nil 183 1230 nil nil nil nil nil nil))) + (ccl-execute-on-string pgg-parse-crc24 h string) + (format "%c%c%c" + (logand (aref h 1) 255) + (logand (lsh (aref h 2) -8) 255) + (logand (aref h 2) 255))))) + +(defmacro pgg-parse-length-type (c) + `(cond + ((< ,c 192) (cons ,c 1)) + ((< ,c 224) + (cons (+ (lsh (- ,c 192) 8) + (pgg-byte-after (+ 2 (point))) + 192) + 2)) + ((= ,c 255) + (cons (cons (logior (lsh (pgg-byte-after (+ 2 (point))) 8) + (pgg-byte-after (+ 3 (point)))) + (logior (lsh (pgg-byte-after (+ 4 (point))) 8) + (pgg-byte-after (+ 5 (point))))) + 5)) + (t;partial body length + '(0 . 0)))) + +(defun pgg-parse-packet-header () + (let ((ptag (pgg-byte-after)) + length-type content-tag packet-bytes header-bytes) + (if (zerop (logand 64 ptag));Old format + (progn + (setq length-type (logand ptag 3) + length-type (if (= 3 length-type) 0 (lsh 1 length-type)) + content-tag (logand 15 (lsh ptag -2)) + packet-bytes 0 + header-bytes (1+ length-type)) + (dotimes (i length-type) + (setq packet-bytes + (logior (lsh packet-bytes 8) + (pgg-byte-after (+ 1 i (point))))))) + (setq content-tag (logand 63 ptag) + length-type (pgg-parse-length-type + (pgg-byte-after (1+ (point)))) + packet-bytes (car length-type) + header-bytes (1+ (cdr length-type)))) + (list content-tag packet-bytes header-bytes))) + +(defun pgg-parse-packet (ptag) + (case (car ptag) + (1 ;Public-Key Encrypted Session Key Packet + (pgg-parse-public-key-encrypted-session-key-packet ptag)) + (2 ;Signature Packet + (pgg-parse-signature-packet ptag)) + (3 ;Symmetric-Key Encrypted Session Key Packet + (pgg-parse-symmetric-key-encrypted-session-key-packet ptag)) + ;; 4 -- One-Pass Signature Packet + ;; 5 -- Secret Key Packet + (6 ;Public Key Packet + (pgg-parse-public-key-packet ptag)) + ;; 7 -- Secret Subkey Packet + ;; 8 -- Compressed Data Packet + (9 ;Symmetrically Encrypted Data Packet + (pgg-read-body-string ptag)) + (10 ;Marker Packet + (pgg-read-body-string ptag)) + (11 ;Literal Data Packet + (pgg-read-body-string ptag)) + ;; 12 -- Trust Packet + (13 ;User ID Packet + (pgg-read-body-string ptag)) + ;; 14 -- Public Subkey Packet + ;; 60 .. 63 -- Private or Experimental Values + )) + +(defun pgg-parse-packets (&optional header-parser body-parser) + (let ((header-parser + (or header-parser + (function pgg-parse-packet-header))) + (body-parser + (or body-parser + (function pgg-parse-packet))) + result ptag) + (while (> (point-max) (1+ (point))) + (setq ptag (funcall header-parser)) + (pgg-skip-header ptag) + (push (cons (car ptag) + (save-excursion + (funcall body-parser ptag))) + result) + (if (zerop (nth 1 ptag)) + (goto-char (point-max)) + (forward-char (nth 1 ptag)))) + result)) + +(defun pgg-parse-signature-subpacket-header () + (let ((length-type (pgg-parse-length-type (pgg-byte-after)))) + (list (pgg-byte-after (+ (cdr length-type) (point))) + (1- (car length-type)) + (1+ (cdr length-type))))) + +(defun pgg-parse-signature-subpacket (ptag) + (case (car ptag) + (2 ;signature creation time + (cons 'creation-time + (let ((bytes (pgg-read-bytes 4))) + (pgg-parse-time-field bytes)))) + (3 ;signature expiration time + (cons 'signature-expiry + (let ((bytes (pgg-read-bytes 4))) + (pgg-parse-time-field bytes)))) + (4 ;exportable certification + (cons 'exportability (pgg-read-byte))) + (5 ;trust signature + (cons 'trust-level (pgg-read-byte))) + (6 ;regular expression + (cons 'regular-expression + (pgg-read-body-string ptag))) + (7 ;revocable + (cons 'revocability (pgg-read-byte))) + (9 ;key expiration time + (cons 'key-expiry + (let ((bytes (pgg-read-bytes 4))) + (pgg-parse-time-field bytes)))) + ;; 10 = placeholder for backward compatibility + (11 ;preferred symmetric algorithms + (cons 'preferred-symmetric-key-algorithm + (cdr (assq (pgg-read-byte) + pgg-parse-symmetric-key-algorithm-alist)))) + (12 ;revocation key + ) + (16 ;issuer key ID + (cons 'key-identifier + (pgg-format-key-identifier (pgg-read-body-string ptag)))) + (20 ;notation data + (pgg-skip-bytes 4) + (cons 'notation + (let ((name-bytes (pgg-read-bytes 2)) + (value-bytes (pgg-read-bytes 2))) + (cons (pgg-read-bytes-string + (logior (lsh (car name-bytes) 8) + (nth 1 name-bytes))) + (pgg-read-bytes-string + (logior (lsh (car value-bytes) 8) + (nth 1 value-bytes))))))) + (21 ;preferred hash algorithms + (cons 'preferred-hash-algorithm + (cdr (assq (pgg-read-byte) + pgg-parse-hash-algorithm-alist)))) + (22 ;preferred compression algorithms + (cons 'preferred-compression-algorithm + (cdr (assq (pgg-read-byte) + pgg-parse-compression-algorithm-alist)))) + (23 ;key server preferences + (cons 'key-server-preferences + (pgg-read-body ptag))) + (24 ;preferred key server + (cons 'preferred-key-server + (pgg-read-body-string ptag))) + ;; 25 = primary user id + (26 ;policy URL + (cons 'policy-url (pgg-read-body-string ptag))) + ;; 27 = key flags + ;; 28 = signer's user id + ;; 29 = reason for revocation + ;; 100 to 110 = internal or user-defined + )) + +(defun pgg-parse-signature-packet (ptag) + (let* ((signature-version (pgg-byte-after)) + (result (list (cons 'version signature-version))) + hashed-material field n) + (cond + ((= signature-version 3) + (pgg-skip-bytes 2) + (setq hashed-material (pgg-read-bytes 5)) + (pgg-set-alist result + 'signature-type + (cdr (assq (pop hashed-material) + pgg-parse-signature-type-alist))) + (pgg-set-alist result + 'creation-time + (pgg-parse-time-field hashed-material)) + (pgg-set-alist result + 'key-identifier + (pgg-format-key-identifier + (pgg-read-bytes-string 8))) + (pgg-set-alist result + 'public-key-algorithm (pgg-read-byte)) + (pgg-set-alist result + 'hash-algorithm (pgg-read-byte))) + ((= signature-version 4) + (pgg-skip-bytes 1) + (pgg-set-alist result + 'signature-type + (cdr (assq (pgg-read-byte) + pgg-parse-signature-type-alist))) + (pgg-set-alist result + 'public-key-algorithm + (pgg-read-byte)) + (pgg-set-alist result + 'hash-algorithm (pgg-read-byte)) + (when (>= 10000 (setq n (pgg-read-bytes 2) + n (logior (lsh (car n) 8) + (nth 1 n)))) + (save-restriction + (narrow-to-region (point)(+ n (point))) + (nconc result + (mapcar (function cdr) ;remove packet types + (pgg-parse-packets + #'pgg-parse-signature-subpacket-header + #'pgg-parse-signature-subpacket))) + (goto-char (point-max)))) + (when (>= 10000 (setq n (pgg-read-bytes 2) + n (logior (lsh (car n) 8) + (nth 1 n)))) + (save-restriction + (narrow-to-region (point)(+ n (point))) + (nconc result + (mapcar (function cdr) ;remove packet types + (pgg-parse-packets + #'pgg-parse-signature-subpacket-header + #'pgg-parse-signature-subpacket))))))) + + (setcdr (setq field (assq 'public-key-algorithm + result)) + (cdr (assq (cdr field) + pgg-parse-public-key-algorithm-alist))) + (setcdr (setq field (assq 'hash-algorithm + result)) + (cdr (assq (cdr field) + pgg-parse-hash-algorithm-alist))) + result)) + +(defun pgg-parse-public-key-encrypted-session-key-packet (ptag) + (let (result) + (pgg-set-alist result + 'version (pgg-read-byte)) + (pgg-set-alist result + 'key-identifier + (pgg-format-key-identifier + (pgg-read-bytes-string 8))) + (pgg-set-alist result + 'public-key-algorithm + (cdr (assq (pgg-read-byte) + pgg-parse-public-key-algorithm-alist))) + result)) + +(defun pgg-parse-symmetric-key-encrypted-session-key-packet (ptag) + (let (result) + (pgg-set-alist result + 'version + (pgg-read-byte)) + (pgg-set-alist result + 'symmetric-key-algorithm + (cdr (assq (pgg-read-byte) + pgg-parse-symmetric-key-algorithm-alist))) + result)) + +(defun pgg-parse-public-key-packet (ptag) + (let* ((key-version (pgg-read-byte)) + (result (list (cons 'version key-version))) + field) + (cond + ((= 3 key-version) + (pgg-set-alist result + 'creation-time + (let ((bytes (pgg-read-bytes 4))) + (pgg-parse-time-field bytes))) + (pgg-set-alist result + 'key-expiry (pgg-read-bytes 2)) + (pgg-set-alist result + 'public-key-algorithm (pgg-read-byte))) + ((= 4 key-version) + (pgg-set-alist result + 'creation-time + (let ((bytes (pgg-read-bytes 4))) + (pgg-parse-time-field bytes))) + (pgg-set-alist result + 'public-key-algorithm (pgg-read-byte)))) + + (setcdr (setq field (assq 'public-key-algorithm + result)) + (cdr (assq (cdr field) + pgg-parse-public-key-algorithm-alist))) + result)) + +(defun pgg-decode-packets () + (if (re-search-forward "^=\\([A-Za-z0-9+/]\\{4\\}\\)$" nil t) + (let ((p (match-beginning 0)) + (checksum (match-string 1))) + (delete-region p (point-max)) + (if (ignore-errors (base64-decode-region (point-min) p)) + (or (not (fboundp 'pgg-parse-crc24-string)) + pgg-ignore-packet-checksum + (string-equal (base64-encode-string (pgg-parse-crc24-string + (buffer-string))) + checksum) + (progn + (message "PGP packet checksum does not match") + nil)) + (message "PGP packet contain invalid base64") + nil)) + (message "PGP packet checksum not found") + nil)) + +(defun pgg-decode-armor-region (start end) + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (re-search-forward "^-+BEGIN PGP" nil t) + (delete-region (point-min) + (and (search-forward "\n\n") + (match-end 0))) + (when (pgg-decode-packets) + (goto-char (point-min)) + (pgg-parse-packets)))) + +(defun pgg-parse-armor (string) + (with-temp-buffer + (buffer-disable-undo) + (if (fboundp 'set-buffer-multibyte) + (set-buffer-multibyte nil)) + (insert string) + (pgg-decode-armor-region (point-min)(point)))) + +(eval-and-compile + (defalias 'pgg-string-as-unibyte (if (fboundp 'string-as-unibyte) + 'string-as-unibyte + 'identity))) + +(defun pgg-parse-armor-region (start end) + (pgg-parse-armor (pgg-string-as-unibyte (buffer-substring start end)))) + +(provide 'pgg-parse) + +;;; arch-tag: 16c2eb82-1313-4a7c-a70f-420709b5b43e +;;; pgg-parse.el ends here
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/pgg-pgp.el Tue Nov 01 06:23:08 2005 +0000 @@ -0,0 +1,245 @@ +;;; pgg-pgp.el --- PGP 2.* and 6.* support for PGG. + +;; Copyright (C) 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + +;; Author: Daiki Ueno <ueno@unixuser.org> +;; Created: 1999/11/02 +;; Keywords: PGP, OpenPGP + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; 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. + +;;; Code: + +(eval-when-compile + (require 'cl) ; for pgg macros + (require 'pgg)) + +(defgroup pgg-pgp () + "PGP 2.* and 6.* interface." + :group 'pgg) + +(defcustom pgg-pgp-program "pgp" + "PGP 2.* and 6.* executable." + :group 'pgg-pgp + :type 'string) + +(defcustom pgg-pgp-shell-file-name "/bin/sh" + "File name to load inferior shells from. +Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"." + :group 'pgg-pgp + :type 'string) + +(defcustom pgg-pgp-shell-command-switch "-c" + "Switch used to have the shell execute its command line argument." + :group 'pgg-pgp + :type 'string) + +(defcustom pgg-pgp-extra-args nil + "Extra arguments for every PGP invocation." + :group 'pgg-pgp + :type '(choice + (const :tag "None" nil) + (string :tag "Arguments"))) + +(defvar pgg-pgp-user-id nil + "PGP ID of your default identity.") + +(defun pgg-pgp-process-region (start end passphrase program args) + (let* ((errors-file-name (pgg-make-temp-file "pgg-errors")) + (args + (append args + pgg-pgp-extra-args + (list (concat "2>" errors-file-name)))) + (shell-file-name pgg-pgp-shell-file-name) + (shell-command-switch pgg-pgp-shell-command-switch) + (process-environment process-environment) + (output-buffer pgg-output-buffer) + (errors-buffer pgg-errors-buffer) + (process-connection-type nil) + process status exit-status) + (with-current-buffer (get-buffer-create output-buffer) + (buffer-disable-undo) + (erase-buffer)) + (when passphrase + (setenv "PGPPASSFD" "0")) + (unwind-protect + (progn + (let ((coding-system-for-read 'binary) + (coding-system-for-write 'binary)) + (setq process + (apply #'funcall + #'start-process-shell-command "*PGP*" output-buffer + program args))) + (set-process-sentinel process #'ignore) + (when passphrase + (process-send-string process (concat passphrase "\n"))) + (process-send-region process start end) + (process-send-eof process) + (while (eq 'run (process-status process)) + (accept-process-output process 5)) + (setq status (process-status process) + exit-status (process-exit-status process)) + (delete-process process) + (with-current-buffer output-buffer + (pgg-convert-lbt-region (point-min)(point-max) 'LF) + + (if (memq status '(stop signal)) + (error "%s exited abnormally: '%s'" program exit-status)) + (if (= 127 exit-status) + (error "%s could not be found" program)) + + (set-buffer (get-buffer-create errors-buffer)) + (buffer-disable-undo) + (erase-buffer) + (insert-file-contents errors-file-name))) + (if (and process (eq 'run (process-status process))) + (interrupt-process process)) + (condition-case nil + (delete-file errors-file-name) + (file-error nil))))) + +(defun pgg-pgp-lookup-key (string &optional type) + "Search keys associated with STRING." + (let ((args (list "+batchmode" "+language=en" "-kv" string))) + (with-current-buffer (get-buffer-create pgg-output-buffer) + (buffer-disable-undo) + (erase-buffer) + (apply #'call-process pgg-pgp-program nil t nil args) + (goto-char (point-min)) + (cond + ((re-search-forward "^pub\\s +[0-9]+/" nil t);PGP 2.* + (buffer-substring (point)(+ 8 (point)))) + ((re-search-forward "^Type" nil t);PGP 6.* + (beginning-of-line 2) + (substring + (nth 2 (split-string + (buffer-substring (point)(progn (end-of-line) (point))))) + 2)))))) + +(defun pgg-pgp-encrypt-region (start end recipients) + "Encrypt the current region between START and END." + (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) + (args + `("+encrypttoself=off +verbose=1" "+batchmode" + "+language=us" "-fate" + ,@(if recipients + (mapcar (lambda (rcpt) (concat "\"" rcpt "\"")) + (append recipients + (if pgg-encrypt-for-me + (list pgg-pgp-user-id)))))))) + (pgg-pgp-process-region start end nil pgg-pgp-program args) + (pgg-process-when-success nil))) + +(defun pgg-pgp-decrypt-region (start end) + "Decrypt the current region between START and END." + (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) + (key (pgg-pgp-lookup-key pgg-pgp-user-id 'encrypt)) + (passphrase + (pgg-read-passphrase + (format "PGP passphrase for %s: " pgg-pgp-user-id) key)) + (args + '("+verbose=1" "+batchmode" "+language=us" "-f"))) + (pgg-pgp-process-region start end passphrase pgg-pgp-program args) + (pgg-process-when-success + (if pgg-cache-passphrase + (pgg-add-passphrase-cache key passphrase))))) + +(defun pgg-pgp-sign-region (start end &optional clearsign) + "Make detached signature from text between START and END." + (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) + (passphrase + (pgg-read-passphrase + (format "PGP passphrase for %s: " pgg-pgp-user-id) + (pgg-pgp-lookup-key pgg-pgp-user-id 'sign))) + (args + (list (if clearsign "-fast" "-fbast") + "+verbose=1" "+language=us" "+batchmode" + "-u" pgg-pgp-user-id))) + (pgg-pgp-process-region start end passphrase pgg-pgp-program args) + (pgg-process-when-success + (goto-char (point-min)) + (when (re-search-forward "^-+BEGIN PGP" nil t);XXX + (let ((packet + (cdr (assq 2 (pgg-parse-armor-region + (progn (beginning-of-line 2) + (point)) + (point-max)))))) + (if pgg-cache-passphrase + (pgg-add-passphrase-cache + (cdr (assq 'key-identifier packet)) + passphrase))))))) + +(defun pgg-pgp-verify-region (start end &optional signature) + "Verify region between START and END as the detached signature SIGNATURE." + (let* ((orig-file (pgg-make-temp-file "pgg")) + (args '("+verbose=1" "+batchmode" "+language=us")) + (orig-mode (default-file-modes))) + (unwind-protect + (progn + (set-default-file-modes 448) + (let ((coding-system-for-write 'binary) + jka-compr-compression-info-list jam-zcat-filename-list) + (write-region start end orig-file))) + (set-default-file-modes orig-mode)) + (if (stringp signature) + (progn + (copy-file signature (setq signature (concat orig-file ".asc"))) + (setq args (append args (list signature orig-file)))) + (setq args (append args (list orig-file)))) + (pgg-pgp-process-region (point)(point) nil pgg-pgp-program args) + (delete-file orig-file) + (if signature (delete-file signature)) + (pgg-process-when-success + (goto-char (point-min)) + (let ((case-fold-search t)) + (while (re-search-forward "^warning: " nil t) + (delete-region (match-beginning 0) + (progn (beginning-of-line 2) (point))))) + (goto-char (point-min)) + (when (re-search-forward "^\\.$" nil t) + (delete-region (point-min) + (progn (beginning-of-line 2) + (point))))))) + +(defun pgg-pgp-insert-key () + "Insert public key at point." + (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) + (args + (list "+verbose=1" "+batchmode" "+language=us" "-kxaf" + (concat "\"" pgg-pgp-user-id "\"")))) + (pgg-pgp-process-region (point)(point) nil pgg-pgp-program args) + (insert-buffer-substring pgg-output-buffer))) + +(defun pgg-pgp-snarf-keys-region (start end) + "Add all public keys in region between START and END to the keyring." + (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) + (key-file (pgg-make-temp-file "pgg")) + (args + (list "+verbose=1" "+batchmode" "+language=us" "-kaf" + key-file))) + (let ((coding-system-for-write 'raw-text-dos)) + (write-region start end key-file)) + (pgg-pgp-process-region start end nil pgg-pgp-program args) + (delete-file key-file) + (pgg-process-when-success nil))) + +(provide 'pgg-pgp) + +;;; arch-tag: 076b7801-37b2-49a6-97c3-218fdecde33c +;;; pgg-pgp.el ends here
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/pgg-pgp5.el Tue Nov 01 06:23:08 2005 +0000 @@ -0,0 +1,250 @@ +;;; pgg-pgp5.el --- PGP 5.* support for PGG. + +;; Copyright (C) 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + +;; Author: Daiki Ueno <ueno@unixuser.org> +;; Created: 1999/11/02 +;; Keywords: PGP, OpenPGP + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; 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. + +;;; Code: + +(eval-when-compile + (require 'cl) ; for pgg macros + (require 'pgg)) + +(defgroup pgg-pgp5 () + "PGP 5.* interface." + :group 'pgg) + +(defcustom pgg-pgp5-pgpe-program "pgpe" + "PGP 5.* 'pgpe' executable." + :group 'pgg-pgp5 + :type 'string) + +(defcustom pgg-pgp5-pgps-program "pgps" + "PGP 5.* 'pgps' executable." + :group 'pgg-pgp5 + :type 'string) + +(defcustom pgg-pgp5-pgpk-program "pgpk" + "PGP 5.* 'pgpk' executable." + :group 'pgg-pgp5 + :type 'string) + +(defcustom pgg-pgp5-pgpv-program "pgpv" + "PGP 5.* 'pgpv' executable." + :group 'pgg-pgp5 + :type 'string) + +(defcustom pgg-pgp5-shell-file-name "/bin/sh" + "File name to load inferior shells from. +Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"." + :group 'pgg-pgp5 + :type 'string) + +(defcustom pgg-pgp5-shell-command-switch "-c" + "Switch used to have the shell execute its command line argument." + :group 'pgg-pgp5 + :type 'string) + +(defcustom pgg-pgp5-extra-args nil + "Extra arguments for every PGP 5.* invocation." + :group 'pgg-pgp5 + :type '(choice + (const :tag "None" nil) + (string :tag "Arguments"))) + +(defvar pgg-pgp5-user-id nil + "PGP 5.* ID of your default identity.") + +(defun pgg-pgp5-process-region (start end passphrase program args) + (let* ((errors-file-name (pgg-make-temp-file "pgg-errors")) + (args + (append args + pgg-pgp5-extra-args + (list (concat "2>" errors-file-name)))) + (shell-file-name pgg-pgp5-shell-file-name) + (shell-command-switch pgg-pgp5-shell-command-switch) + (process-environment process-environment) + (output-buffer pgg-output-buffer) + (errors-buffer pgg-errors-buffer) + (process-connection-type nil) + process status exit-status) + (with-current-buffer (get-buffer-create output-buffer) + (buffer-disable-undo) + (erase-buffer)) + (when passphrase + (setenv "PGPPASSFD" "0")) + (unwind-protect + (progn + (let ((coding-system-for-read 'binary) + (coding-system-for-write 'binary)) + (setq process + (apply #'funcall + #'start-process-shell-command "*PGP*" output-buffer + program args))) + (set-process-sentinel process #'ignore) + (when passphrase + (process-send-string process (concat passphrase "\n"))) + (process-send-region process start end) + (process-send-eof process) + (while (eq 'run (process-status process)) + (accept-process-output process 5)) + (setq status (process-status process) + exit-status (process-exit-status process)) + (delete-process process) + (with-current-buffer output-buffer + (pgg-convert-lbt-region (point-min)(point-max) 'LF) + + (if (memq status '(stop signal)) + (error "%s exited abnormally: '%s'" program exit-status)) + (if (= 127 exit-status) + (error "%s could not be found" program)) + + (set-buffer (get-buffer-create errors-buffer)) + (buffer-disable-undo) + (erase-buffer) + (insert-file-contents errors-file-name))) + (if (and process (eq 'run (process-status process))) + (interrupt-process process)) + (condition-case nil + (delete-file errors-file-name) + (file-error nil))))) + +(defun pgg-pgp5-lookup-key (string &optional type) + "Search keys associated with STRING." + (let ((args (list "+language=en" "-l" string))) + (with-current-buffer (get-buffer-create pgg-output-buffer) + (buffer-disable-undo) + (erase-buffer) + (apply #'call-process pgg-pgp5-pgpk-program nil t nil args) + (goto-char (point-min)) + (when (re-search-forward "^sec" nil t) + (substring + (nth 2 (split-string + (buffer-substring (match-end 0)(progn (end-of-line)(point))))) + 2))))) + +(defun pgg-pgp5-encrypt-region (start end recipients &optional sign) + "Encrypt the current region between START and END." + (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) + (args + `("+NoBatchInvalidKeys=off" "-fat" "+batchmode=1" + ,@(if recipients + (apply #'append + (mapcar (lambda (rcpt) + (list "-r" + (concat "\"" rcpt "\""))) + (append recipients + (if pgg-encrypt-for-me + (list pgg-pgp5-user-id))))))))) + (pgg-pgp5-process-region start end nil pgg-pgp5-pgpe-program args) + (pgg-process-when-success nil))) + +(defun pgg-pgp5-decrypt-region (start end) + "Decrypt the current region between START and END." + (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) + (passphrase + (pgg-read-passphrase + (format "PGP passphrase for %s: " pgg-pgp5-user-id) + (pgg-pgp5-lookup-key pgg-pgp5-user-id 'encrypt))) + (args + '("+verbose=1" "+batchmode=1" "+language=us" "-f"))) + (pgg-pgp5-process-region start end passphrase pgg-pgp5-pgpv-program args) + (pgg-process-when-success nil))) + +(defun pgg-pgp5-sign-region (start end &optional clearsign) + "Make detached signature from text between START and END." + (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) + (passphrase + (pgg-read-passphrase + (format "PGP passphrase for %s: " pgg-pgp5-user-id) + (pgg-pgp5-lookup-key pgg-pgp5-user-id 'sign))) + (args + (list (if clearsign "-fat" "-fbat") + "+verbose=1" "+language=us" "+batchmode=1" + "-u" pgg-pgp5-user-id))) + (pgg-pgp5-process-region start end passphrase pgg-pgp5-pgps-program args) + (pgg-process-when-success + (when (re-search-forward "^-+BEGIN PGP SIGNATURE" nil t);XXX + (let ((packet + (cdr (assq 2 (pgg-parse-armor-region + (progn (beginning-of-line 2) + (point)) + (point-max)))))) + (if pgg-cache-passphrase + (pgg-add-passphrase-cache + (cdr (assq 'key-identifier packet)) + passphrase))))))) + +(defun pgg-pgp5-verify-region (start end &optional signature) + "Verify region between START and END as the detached signature SIGNATURE." + (let ((orig-file (pgg-make-temp-file "pgg")) + (args '("+verbose=1" "+batchmode=1" "+language=us")) + (orig-mode (default-file-modes))) + (unwind-protect + (progn + (set-default-file-modes 448) + (let ((coding-system-for-write 'binary) + jka-compr-compression-info-list jam-zcat-filename-list) + (write-region start end orig-file))) + (set-default-file-modes orig-mode)) + (when (stringp signature) + (copy-file signature (setq signature (concat orig-file ".asc"))) + (setq args (append args (list signature)))) + (pgg-pgp5-process-region (point)(point) nil pgg-pgp5-pgpv-program args) + (delete-file orig-file) + (if signature (delete-file signature)) + (with-current-buffer pgg-errors-buffer + (goto-char (point-min)) + (if (re-search-forward "^Good signature" nil t) + (progn + (set-buffer pgg-output-buffer) + (insert-buffer-substring pgg-errors-buffer) + t) + nil)))) + +(defun pgg-pgp5-insert-key () + "Insert public key at point." + (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) + (args + (list "+verbose=1" "+batchmode=1" "+language=us" "-x" + (concat "\"" pgg-pgp5-user-id "\"")))) + (pgg-pgp5-process-region (point)(point) nil pgg-pgp5-pgpk-program args) + (insert-buffer-substring pgg-output-buffer))) + +(defun pgg-pgp5-snarf-keys-region (start end) + "Add all public keys in region between START and END to the keyring." + (let* ((pgg-pgp5-user-id (or pgg-pgp5-user-id pgg-default-user-id)) + (key-file (pgg-make-temp-file "pgg")) + (args + (list "+verbose=1" "+batchmode=1" "+language=us" "-a" + key-file))) + (let ((coding-system-for-write 'raw-text-dos)) + (write-region start end key-file)) + (pgg-pgp5-process-region start end nil pgg-pgp5-pgpk-program args) + (delete-file key-file) + (pgg-process-when-success nil))) + +(provide 'pgg-pgp5) + +;;; arch-tag: 3dbd1073-6b3a-466c-9f55-5c587ffa6d7b +;;; pgg-pgp5.el ends here
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/pgg.el Tue Nov 01 06:23:08 2005 +0000 @@ -0,0 +1,453 @@ +;;; pgg.el --- glue for the various PGP implementations. + +;; Copyright (C) 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + +;; Author: Daiki Ueno <ueno@unixuser.org> +;; Created: 1999/10/28 +;; Keywords: PGP + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; 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. + +;;; Commentary: + +;;; Code: + +(require 'pgg-def) +(require 'pgg-parse) +(autoload 'run-at-time "timer") + +;; Don't merge these two `eval-when-compile's. +(eval-when-compile + (require 'cl)) + +;;; @ utility functions +;;; + +(defun pgg-invoke (func scheme &rest args) + (progn + (require (intern (format "pgg-%s" scheme))) + (apply 'funcall (intern (format "pgg-%s-%s" scheme func)) args))) + +(put 'pgg-save-coding-system 'lisp-indent-function 2) + +(defmacro pgg-save-coding-system (start end &rest body) + `(if (interactive-p) + (let ((buffer (current-buffer))) + (with-temp-buffer + (let (buffer-undo-list) + (insert-buffer-substring buffer ,start ,end) + (encode-coding-region (point-min)(point-max) + buffer-file-coding-system) + (prog1 (save-excursion ,@body) + (push nil buffer-undo-list) + (ignore-errors (undo)))))) + (save-restriction + (narrow-to-region ,start ,end) + ,@body))) + +(defun pgg-temp-buffer-show-function (buffer) + (let ((window (or (get-buffer-window buffer 'visible) + (split-window-vertically)))) + (set-window-buffer window buffer) + (shrink-window-if-larger-than-buffer window))) + +(defun pgg-display-output-buffer (start end status) + (if status + (progn + (delete-region start end) + (insert-buffer-substring pgg-output-buffer) + (decode-coding-region start (point) buffer-file-coding-system)) + (let ((temp-buffer-show-function + (function pgg-temp-buffer-show-function))) + (with-output-to-temp-buffer pgg-echo-buffer + (set-buffer standard-output) + (insert-buffer-substring pgg-errors-buffer))))) + +(defvar pgg-passphrase-cache (make-vector 7 0)) + +(defun pgg-read-passphrase (prompt &optional key) + (or (and pgg-cache-passphrase + key (setq key (pgg-truncate-key-identifier key)) + (symbol-value (intern-soft key pgg-passphrase-cache))) + (read-passwd prompt))) + +(eval-when-compile + (defmacro pgg-run-at-time-1 (time repeat function args) + (when (featurep 'xemacs) + (if (condition-case nil + (let ((delete-itimer 'delete-itimer) + (itimer-driver-start 'itimer-driver-start) + (itimer-value 'itimer-value) + (start-itimer 'start-itimer)) + (unless (or (symbol-value 'itimer-process) + (symbol-value 'itimer-timer)) + (funcall itimer-driver-start)) + ;; Check whether there is a bug to which the difference of + ;; the present time and the time when the itimer driver was + ;; woken up is subtracted from the initial itimer value. + (let* ((inhibit-quit t) + (ctime (current-time)) + (itimer-timer-last-wakeup + (prog1 + ctime + (setcar ctime (1- (car ctime))))) + (itimer-list nil) + (itimer (funcall start-itimer "pgg-run-at-time" + 'ignore 5))) + (sleep-for 0.1) ;; Accept the timeout interrupt. + (prog1 + (> (funcall itimer-value itimer) 0) + (funcall delete-itimer itimer)))) + (error nil)) + `(let ((time ,time)) + (apply #'start-itimer "pgg-run-at-time" + ,function (if time (max time 1e-9) 1e-9) + ,repeat nil t ,args))) + `(let ((time ,time) + (itimers (list nil))) + (setcar + itimers + (apply #'start-itimer "pgg-run-at-time" + (lambda (itimers repeat function &rest args) + (let ((itimer (car itimers))) + (if repeat + (progn + (set-itimer-function + itimer + (lambda (itimer repeat function &rest args) + (set-itimer-restart itimer repeat) + (set-itimer-function itimer function) + (set-itimer-function-arguments itimer args) + (apply function args))) + (set-itimer-function-arguments + itimer + (append (list itimer repeat function) args))) + (set-itimer-function + itimer + (lambda (itimer function &rest args) + (delete-itimer itimer) + (apply function args))) + (set-itimer-function-arguments + itimer + (append (list itimer function) args))))) + 1e-9 (if time (max time 1e-9) 1e-9) + nil t itimers ,repeat ,function ,args)))))) + +(eval-and-compile + (if (featurep 'xemacs) + (defun pgg-run-at-time (time repeat function &rest args) + "Emulating function run as `run-at-time'. +TIME should be nil meaning now, or a number of seconds from now. +Return an itimer object which can be used in either `delete-itimer' +or `cancel-timer'." + (pgg-run-at-time-1 time repeat function args)) + (defalias 'pgg-run-at-time 'run-at-time))) + +(defun pgg-add-passphrase-cache (key passphrase) + (setq key (pgg-truncate-key-identifier key)) + (set (intern key pgg-passphrase-cache) + passphrase) + (pgg-run-at-time pgg-passphrase-cache-expiry nil + #'pgg-remove-passphrase-cache + key)) + +(defun pgg-remove-passphrase-cache (key) + (let ((passphrase (symbol-value (intern-soft key pgg-passphrase-cache)))) + (when passphrase + (fillarray passphrase ?_) + (unintern key pgg-passphrase-cache)))) + +(defmacro pgg-convert-lbt-region (start end lbt) + `(let ((pgg-conversion-end (set-marker (make-marker) ,end))) + (goto-char ,start) + (case ,lbt + (CRLF + (while (progn + (end-of-line) + (> (marker-position pgg-conversion-end) (point))) + (insert "\r") + (forward-line 1))) + (LF + (while (re-search-forward "\r$" pgg-conversion-end t) + (replace-match "")))))) + +(put 'pgg-as-lbt 'lisp-indent-function 3) + +(defmacro pgg-as-lbt (start end lbt &rest body) + `(let ((inhibit-read-only t) + buffer-read-only + buffer-undo-list) + (pgg-convert-lbt-region ,start ,end ,lbt) + (let ((,end (point))) + ,@body) + (push nil buffer-undo-list) + (ignore-errors (undo)))) + +(put 'pgg-process-when-success 'lisp-indent-function 0) + +(defmacro pgg-process-when-success (&rest body) + `(with-current-buffer pgg-output-buffer + (if (zerop (buffer-size)) nil ,@body t))) + +(defalias 'pgg-make-temp-file + (if (fboundp 'make-temp-file) + 'make-temp-file + (lambda (prefix &optional dir-flag) + (let ((file (expand-file-name + (make-temp-name prefix) + (if (fboundp 'temp-directory) + (temp-directory) + temporary-file-directory)))) + (if dir-flag + (make-directory file)) + file)))) + +;;; @ interface functions +;;; + +;;;###autoload +(defun pgg-encrypt-region (start end rcpts &optional sign) + "Encrypt the current region between START and END for RCPTS. +If optional argument SIGN is non-nil, do a combined sign and encrypt." + (interactive + (list (region-beginning)(region-end) + (split-string (read-string "Recipients: ") "[ \t,]+"))) + (let ((status + (pgg-save-coding-system start end + (pgg-invoke "encrypt-region" (or pgg-scheme pgg-default-scheme) + (point-min) (point-max) rcpts sign)))) + (when (interactive-p) + (pgg-display-output-buffer start end status)) + status)) + +;;;###autoload +(defun pgg-encrypt (rcpts &optional sign start end) + "Encrypt the current buffer for RCPTS. +If optional argument SIGN is non-nil, do a combined sign and encrypt. +If optional arguments START and END are specified, only encrypt within +the region." + (interactive (list (split-string (read-string "Recipients: ") "[ \t,]+"))) + (let* ((start (or start (point-min))) + (end (or end (point-max))) + (status (pgg-encrypt-region start end rcpts sign))) + (when (interactive-p) + (pgg-display-output-buffer start end status)) + status)) + +;;;###autoload +(defun pgg-decrypt-region (start end) + "Decrypt the current region between START and END." + (interactive "r") + (let* ((buf (current-buffer)) + (status + (pgg-save-coding-system start end + (pgg-invoke "decrypt-region" (or pgg-scheme pgg-default-scheme) + (point-min) (point-max))))) + (when (interactive-p) + (pgg-display-output-buffer start end status)) + status)) + +;;;###autoload +(defun pgg-decrypt (&optional start end) + "Decrypt the current buffer. +If optional arguments START and END are specified, only decrypt within +the region." + (interactive "") + (let* ((start (or start (point-min))) + (end (or end (point-max))) + (status (pgg-decrypt-region start end))) + (when (interactive-p) + (pgg-display-output-buffer start end status)) + status)) + +;;;###autoload +(defun pgg-sign-region (start end &optional cleartext) + "Make the signature from text between START and END. +If the optional 3rd argument CLEARTEXT is non-nil, it does not create +a detached signature. +If this function is called interactively, CLEARTEXT is enabled +and the the output is displayed." + (interactive "r") + (let ((status (pgg-save-coding-system start end + (pgg-invoke "sign-region" (or pgg-scheme pgg-default-scheme) + (point-min) (point-max) + (or (interactive-p) cleartext))))) + (when (interactive-p) + (pgg-display-output-buffer start end status)) + status)) + +;;;###autoload +(defun pgg-sign (&optional cleartext start end) + "Sign the current buffer. +If the optional argument CLEARTEXT is non-nil, it does not create a +detached signature. +If optional arguments START and END are specified, only sign data +within the region. +If this function is called interactively, CLEARTEXT is enabled +and the the output is displayed." + (interactive "") + (let* ((start (or start (point-min))) + (end (or end (point-max))) + (status (pgg-sign-region start end (or (interactive-p) cleartext)))) + (when (interactive-p) + (pgg-display-output-buffer start end status)) + status)) + +;;;###autoload +(defun pgg-verify-region (start end &optional signature fetch) + "Verify the current region between START and END. +If the optional 3rd argument SIGNATURE is non-nil, it is treated as +the detached signature of the current region. + +If the optional 4th argument FETCH is non-nil, we attempt to fetch the +signer's public key from `pgg-default-keyserver-address'." + (interactive "r") + (let* ((packet + (if (null signature) nil + (with-temp-buffer + (buffer-disable-undo) + (if (fboundp 'set-buffer-multibyte) + (set-buffer-multibyte nil)) + (insert-file-contents signature) + (cdr (assq 2 (pgg-decode-armor-region + (point-min)(point-max))))))) + (key (cdr (assq 'key-identifier packet))) + status keyserver) + (and (stringp key) + pgg-query-keyserver + (setq key (concat "0x" (pgg-truncate-key-identifier key))) + (null (pgg-lookup-key key)) + (or fetch (interactive-p)) + (y-or-n-p (format "Key %s not found; attempt to fetch? " key)) + (setq keyserver + (or (cdr (assq 'preferred-key-server packet)) + pgg-default-keyserver-address)) + (pgg-fetch-key keyserver key)) + (setq status + (pgg-save-coding-system start end + (pgg-invoke "verify-region" (or pgg-scheme pgg-default-scheme) + (point-min) (point-max) signature))) + (when (interactive-p) + (let ((temp-buffer-show-function + (function pgg-temp-buffer-show-function))) + (with-output-to-temp-buffer pgg-echo-buffer + (set-buffer standard-output) + (insert-buffer-substring (if status pgg-output-buffer + pgg-errors-buffer))))) + status)) + +;;;###autoload +(defun pgg-verify (&optional signature fetch start end) + "Verify the current buffer. +If the optional argument SIGNATURE is non-nil, it is treated as +the detached signature of the current region. +If the optional argument FETCH is non-nil, we attempt to fetch the +signer's public key from `pgg-default-keyserver-address'. +If optional arguments START and END are specified, only verify data +within the region." + (interactive "") + (let* ((start (or start (point-min))) + (end (or end (point-max))) + (status (pgg-verify-region start end signature fetch))) + (when (interactive-p) + (let ((temp-buffer-show-function + (function pgg-temp-buffer-show-function))) + (with-output-to-temp-buffer pgg-echo-buffer + (set-buffer standard-output) + (insert-buffer-substring (if status pgg-output-buffer + pgg-errors-buffer))))) + status)) + +;;;###autoload +(defun pgg-insert-key () + "Insert the ASCII armored public key." + (interactive) + (pgg-invoke "insert-key" (or pgg-scheme pgg-default-scheme))) + +;;;###autoload +(defun pgg-snarf-keys-region (start end) + "Import public keys in the current region between START and END." + (interactive "r") + (pgg-save-coding-system start end + (pgg-invoke "snarf-keys-region" (or pgg-scheme pgg-default-scheme) + start end))) + +;;;###autoload +(defun pgg-snarf-keys () + "Import public keys in the current buffer." + (interactive "") + (pgg-snarf-keys-region (point-min) (point-max))) + +(defun pgg-lookup-key (string &optional type) + (pgg-invoke "lookup-key" (or pgg-scheme pgg-default-scheme) string type)) + +(defvar pgg-insert-url-function (function pgg-insert-url-with-w3)) + +(defun pgg-insert-url-with-w3 (url) + (ignore-errors + (require 'url) + (let (buffer-file-name) + (url-insert-file-contents url)))) + +(defvar pgg-insert-url-extra-arguments nil) +(defvar pgg-insert-url-program nil) + +(defun pgg-insert-url-with-program (url) + (let ((args (copy-sequence pgg-insert-url-extra-arguments)) + process) + (insert + (with-temp-buffer + (setq process + (apply #'start-process " *PGG url*" (current-buffer) + pgg-insert-url-program (nconc args (list url)))) + (set-process-sentinel process #'ignore) + (while (eq 'run (process-status process)) + (accept-process-output process 5)) + (delete-process process) + (if (and process (eq 'run (process-status process))) + (interrupt-process process)) + (buffer-string))))) + +(defun pgg-fetch-key (keyserver key) + "Attempt to fetch a KEY from KEYSERVER for addition to PGP or GnuPG keyring." + (with-current-buffer (get-buffer-create pgg-output-buffer) + (buffer-disable-undo) + (erase-buffer) + (let ((proto (if (string-match "^[a-zA-Z\\+\\.\\\\-]+:" keyserver) + (substring keyserver 0 (1- (match-end 0)))))) + (save-excursion + (funcall pgg-insert-url-function + (if proto keyserver + (format "http://%s:11371/pks/lookup?op=get&search=%s" + keyserver key)))) + (when (re-search-forward "^-+BEGIN" nil 'last) + (delete-region (point-min) (match-beginning 0)) + (when (re-search-forward "^-+END" nil t) + (delete-region (progn (end-of-line) (point)) + (point-max))) + (insert "\n") + (with-temp-buffer + (insert-buffer-substring pgg-output-buffer) + (pgg-snarf-keys-region (point-min)(point-max))))))) + + +(provide 'pgg) + +;;; arch-tag: 9cc705dd-1e6a-4c90-8dce-c3561f9a2cf4 +;;; pgg.el ends here
--- a/lisp/play/blackbox.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/play/blackbox.el Tue Nov 01 06:23:08 2005 +0000 @@ -51,11 +51,11 @@ ;; 2 H 4 H ;; ;; Rays which enter and exit are numbered. You can see that rays 1 & 5 pass -;; thru the box undisturbed. Ray 2 is deflected by the northwesternmost +;; thru the box undisturbed. Ray 2 is deflected by the northwesternmost ;; ball. Likewise rays 3 and 4. Rays which hit balls and are absorbed are ;; marked with H. The bottom of the left and the right of the bottom hit ;; the southeastern ball directly. Rays may also hit balls after being -;; reflected. Consider the H on the bottom next to the 4. It bounces off +;; reflected. Consider the H on the bottom next to the 4. It bounces off ;; the NW-ern most ball and hits the central ball. A ray shot from above ;; the right side 5 would hit the SE-ern most ball. The R beneath the 5 ;; is because the ball is returned instantly. It is not allowed into @@ -69,8 +69,6 @@ ;;; Code: -(defvar blackbox-mode-map nil "") - (defvar bb-board nil "Blackbox board.") @@ -89,23 +87,28 @@ (defvar bb-balls-placed nil "List of already placed balls.") -(unless blackbox-mode-map - (setq blackbox-mode-map (make-keymap)) - (suppress-keymap blackbox-mode-map t) - (define-key blackbox-mode-map "\C-f" 'bb-right) - (define-key blackbox-mode-map [right] 'bb-right) - (define-key blackbox-mode-map "\C-b" 'bb-left) - (define-key blackbox-mode-map [left] 'bb-left) - (define-key blackbox-mode-map "\C-p" 'bb-up) - (define-key blackbox-mode-map [up] 'bb-up) - (define-key blackbox-mode-map "\C-n" 'bb-down) - (define-key blackbox-mode-map [down] 'bb-down) - (define-key blackbox-mode-map "\C-e" 'bb-eol) - (define-key blackbox-mode-map "\C-a" 'bb-bol) - (define-key blackbox-mode-map " " 'bb-romp) - (define-key blackbox-mode-map [insert] 'bb-romp) - (define-key blackbox-mode-map "\C-m" 'bb-done) - (define-key blackbox-mode-map [kp-enter] 'bb-done)) +;; This is used below to remap existing bindings for cursor motion to +;; blackbox-specific bindings in blackbox-mode-map. This is so that +;; users who prefer non-default key bindings for cursor motion don't +;; lose that when they play Blackbox. +(defun blackbox-redefine-key (map oldfun newfun) + "Redefine keys that run the function OLDFUN to run NEWFUN instead." + (define-key map (vector 'remap oldfun) newfun)) + + +(defvar blackbox-mode-map + (let ((map (make-keymap))) + (suppress-keymap map t) + (blackbox-redefine-key map 'backward-char 'bb-left) + (blackbox-redefine-key map 'forward-char 'bb-right) + (blackbox-redefine-key map 'previous-line 'bb-up) + (blackbox-redefine-key map 'next-line 'bb-down) + (blackbox-redefine-key map 'move-end-of-line 'bb-eol) + (blackbox-redefine-key map 'move-beginning-of-line 'bb-bol) + (define-key map " " 'bb-romp) + (define-key map [insert] 'bb-romp) + (blackbox-redefine-key map 'newline 'bb-done) + map)) ;; Blackbox mode is suitable only for specially formatted data. (put 'blackbox-mode 'mode-class 'special) @@ -431,5 +434,5 @@ (provide 'blackbox) -;;; arch-tag: 6c474c62-5617-4b10-9b44-ac430168c0e2 +;; arch-tag: 6c474c62-5617-4b10-9b44-ac430168c0e2 ;;; blackbox.el ends here
--- a/lisp/play/doctor.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/play/doctor.el Tue Nov 01 06:23:08 2005 +0000 @@ -954,7 +954,7 @@ (doctor-type '(are you (doc$ afraidof) that \?))) ((zerop (random 2)) (doctor-type '(don\'t tell me what to do \. i am the - psychiatrist here!)) + doctor here!)) (doctor-rthing)) (t (doctor-type '((doc$ whysay) that i shouldn\'t @@ -1552,8 +1552,8 @@ (t (doctor-type '((doc$ whysay)(list subj verb obj)))))) (defun doctor-symptoms () - (doctor-type '((doc$ maybe) you should consult a doctor of medicine\, - i am a psychiatrist \.))) + (doctor-type '((doc$ maybe) you should consult a medical doctor\; + i am a psychotherapist. \.))) (defun doctor-hates () (doctor-svo sent found 1 t)
--- a/lisp/progmodes/gdb-ui.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/progmodes/gdb-ui.el Tue Nov 01 06:23:08 2005 +0000 @@ -349,11 +349,14 @@ 'gdb-mouse-set-clear-breakpoint) (define-key gud-minor-mode-map [left-fringe mouse-1] 'gdb-mouse-set-clear-breakpoint) + (define-key gud-minor-mode-map [left-fringe mouse-2] + 'gdb-mouse-until) + (define-key gud-minor-mode-map [left-fringe drag-mouse-1] + 'gdb-mouse-until) (define-key gud-minor-mode-map [left-margin mouse-3] - 'gdb-mouse-toggle-breakpoint) -; Currently only works in margin. -; (define-key gud-minor-mode-map [left-fringe mouse-3] -; 'gdb-mouse-toggle-breakpoint) + 'gdb-mouse-toggle-breakpoint-margin) + (define-key gud-minor-mode-map [left-fringe mouse-3] + 'gdb-mouse-toggle-breakpoint-fringe) (setq comint-input-sender 'gdb-send) ;; @@ -397,6 +400,21 @@ (gdb-set-gud-minor-mode-existing-buffers) (run-hooks 'gdba-mode-hook)) +(defun gdb-mouse-until (event) + "Execute source lines by dragging the overlay arrow (fringe) with the mouse." + (interactive "e") + (if gud-overlay-arrow-position + (let ((start (event-start event)) + (end (event-end event)) + (buffer (marker-buffer gud-overlay-arrow-position)) (line)) + (if (equal buffer (window-buffer (posn-window end))) + (with-current-buffer buffer + (when (or (equal start end) + (equal (posn-point start) + (marker-position gud-overlay-arrow-position))) + (setq line (line-number-at-pos (posn-point end))) + (gud-call (concat "until " (number-to-string line))))))))) + (defcustom gdb-use-colon-colon-notation nil "If non-nil use FUN::VAR format to display variables in the speedbar." :type 'boolean @@ -802,7 +820,8 @@ "A comint send filter for gdb. This filter may simply queue input for a later time." (with-current-buffer gud-comint-buffer - (remove-text-properties (point-min) (point-max) '(face))) + (let ((inhibit-read-only t)) + (remove-text-properties (point-min) (point-max) '(face)))) (let ((item (concat string "\n"))) (if gud-running (progn @@ -1181,7 +1200,7 @@ (defmacro def-gdb-auto-update-trigger (name demand-predicate gdb-command output-handler) `(defun ,name (&optional ignored) - (if (and (,demand-predicate) + (if (and ,demand-predicate (not (member ',name gdb-pending-triggers))) (progn @@ -1213,7 +1232,7 @@ `(progn (def-gdb-auto-update-trigger ,trigger-name ;; The demand predicate: - (lambda () (gdb-get-buffer ',buffer-key)) + (gdb-get-buffer ',buffer-key) ,gdb-command ,output-handler-name) (def-gdb-auto-update-handler ,output-handler-name @@ -1399,8 +1418,8 @@ (gud-remove nil) (gud-break nil))))))) -(defun gdb-mouse-toggle-breakpoint (event) - "Enable/disable breakpoint in left fringe/margin with mouse click." +(defun gdb-mouse-toggle-breakpoint-margin (event) + "Enable/disable breakpoint in left margin with mouse click." (interactive "e") (mouse-minibuffer-check event) (let ((posn (event-end event))) @@ -1418,7 +1437,33 @@ 0 'gdb-enabled (car (posn-string posn))) "disable " "enable ") - bptno "\n")) 'ignore)))))))) + bptno "\n")) + 'ignore)))))))) + +(defun gdb-mouse-toggle-breakpoint-fringe (event) + "Enable/disable breakpoint in left fringe with mouse click." + (interactive "e") + (mouse-minibuffer-check event) + (let* ((posn (event-end event)) + (pos (posn-point posn)) + obj) + (when (numberp pos) + (with-selected-window (posn-window posn) + (save-excursion + (set-buffer (window-buffer (selected-window))) + (goto-char pos) + (dolist (overlay (overlays-in pos pos)) + (when (overlay-get overlay 'put-break) + (setq obj (overlay-get overlay 'before-string)))) + (when (stringp obj) + (gdb-enqueue-input + (list + (concat + (if (get-text-property 0 'gdb-enabled obj) + "disable " + "enable ") + (get-text-property 0 'gdb-bptno obj) "\n") + 'ignore)))))))) (defun gdb-breakpoints-buffer-name () (with-current-buffer gud-comint-buffer @@ -2108,11 +2153,10 @@ 'gdb-locals-buffer-name 'gdb-locals-mode) -(def-gdb-auto-updated-buffer gdb-locals-buffer - gdb-invalidate-locals +(def-gdb-auto-update-trigger gdb-invalidate-locals + (gdb-get-buffer 'gdb-locals-buffer) "server info locals\n" - gdb-info-locals-handler - gdb-info-locals-custom) + gdb-info-locals-handler) ;; Abbreviate for arrays and structures. ;; These can be expanded using gud-display. @@ -2142,9 +2186,6 @@ (set-window-point window p))))) (run-hooks 'gdb-info-locals-hook)) -(defun gdb-info-locals-custom () - nil) - (defvar gdb-locals-mode-map (let ((map (make-sparse-keymap))) (suppress-keymap map) @@ -2455,7 +2496,7 @@ (error (setq gdb-find-file-unhook t))))) ;;from put-image -(defun gdb-put-string (putstring pos &optional dprop) +(defun gdb-put-string (putstring pos &optional dprop &rest sprops) "Put string PUTSTRING in front of POS in the current buffer. PUTSTRING is displayed by putting an overlay into the current buffer with a `before-string' string that has a `display' property whose value is @@ -2466,7 +2507,9 @@ (let ((overlay (make-overlay pos pos buffer)) (prop (or dprop (list (list 'margin 'left-margin) putstring)))) - (put-text-property 0 (length string) 'display prop string) + (put-text-property 0 1 'display prop string) + (if sprops + (add-text-properties 0 1 sprops string)) (overlay-put overlay 'put-break t) (overlay-put overlay 'before-string string)))) @@ -2487,23 +2530,26 @@ (putstring (if enabled "B" "b")) (source-window (get-buffer-window (current-buffer) 0))) (add-text-properties - 0 1 '(help-echo "mouse-1: set/clear bkpt, mouse-3: enable/disable bkpt") + 0 1 '(help-echo "mouse-1: clear bkpt, mouse-3: enable/disable bkpt") putstring) - (if enabled (add-text-properties - 0 1 `(gdb-bptno ,bptno gdb-enabled t) putstring) + (if enabled + (add-text-properties + 0 1 `(gdb-bptno ,bptno gdb-enabled t) putstring) (add-text-properties 0 1 `(gdb-bptno ,bptno gdb-enabled nil) putstring)) (gdb-remove-breakpoint-icons start end) (if (display-images-p) (if (>= (or left-fringe-width - (if source-window (car (window-fringes source-window))) - gdb-buffer-fringe-width) 8) + (if source-window (car (window-fringes source-window))) + gdb-buffer-fringe-width) 8) (gdb-put-string nil (1+ start) `(left-fringe breakpoint ,(if enabled 'breakpoint-enabled - 'breakpoint-disabled))) + 'breakpoint-disabled)) + 'gdb-bptno bptno + 'gdb-enabled enabled) (when (< left-margin-width 2) (save-current-buffer (setq left-margin-width 2) @@ -2526,10 +2572,10 @@ (find-image `((:type xpm :data ,breakpoint-xpm-data :conversion disabled - :ascent 100) + :ascent 100 :pointer hand) (:type pbm :data ,breakpoint-disabled-pbm-data - :ascent 100)))))) + :ascent 100 :pointer hand)))))) (+ start 1) putstring 'left-margin)) @@ -2564,12 +2610,9 @@ 'gdb-assembler-buffer-name 'gdb-assembler-mode) -(def-gdb-auto-updated-buffer gdb-assembler-buffer +(def-gdb-auto-update-handler gdb-assembler-handler gdb-invalidate-assembler - (concat gdb-server-prefix "disassemble " - (if (member gdb-frame-address '(nil "main")) nil "0x") - gdb-frame-address "\n") - gdb-assembler-handler + gdb-assembler-buffer gdb-assembler-custom) (defun gdb-assembler-custom ()
--- a/lisp/progmodes/gud.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/progmodes/gud.el Tue Nov 01 06:23:08 2005 +0000 @@ -135,13 +135,16 @@ (memq gud-minor-mode '(gdbmi gdba gdb dbx jdb)))) ([until] menu-item "Continue to selection" gud-until :enable (and (not gud-running) - (memq gud-minor-mode '(gdbmi gdba gdb perldb)))) + (memq gud-minor-mode '(gdbmi gdba gdb perldb))) + :visible (not (and (memq gud-minor-mode '(gdbmi gdba)) + (> (car (window-fringes)) 0)))) ([remove] menu-item "Remove Breakpoint" gud-remove :enable (not gud-running) :visible (not (and (memq gud-minor-mode '(gdbmi gdba)) (> (car (window-fringes)) 0)))) ([tbreak] menu-item "Temporary Breakpoint" gud-tbreak - :enable (memq gud-minor-mode '(gdbmi gdba gdb sdb xdb bashdb))) + :enable (memq gud-minor-mode + '(gdbmi gdba gdb sdb xdb bashdb))) ([break] menu-item "Set Breakpoint" gud-break :enable (not gud-running) :visible (not (and (memq gud-minor-mode '(gdbmi gdba)) @@ -2530,7 +2533,7 @@ (save-restriction (widen) (if (marker-buffer gud-delete-prompt-marker) - (progn + (let ((inhibit-read-only t)) (delete-region (process-mark proc) gud-delete-prompt-marker) (set-marker gud-delete-prompt-marker nil)))
--- a/lisp/replace.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/replace.el Tue Nov 01 06:23:08 2005 +0000 @@ -1129,11 +1129,17 @@ (append (when prefix-face `(font-lock-face prefix-face)) - '(occur-prefix t))) + `(occur-prefix t mouse-face (highlight) + occur-target ,marker follow-link t + help-echo "mouse-2: go to this occurrence"))) ;; We don't put `mouse-face' on the newline, ;; because that loses. And don't put it ;; on context lines to reduce flicker. - (propertize curstring 'mouse-face 'highlight) + (propertize curstring 'mouse-face (list 'highlight) + 'occur-target marker + 'follow-link t + 'help-echo + "mouse-2: go to this occurrence") "\n")) (data (if (= nlines 0) @@ -1154,11 +1160,7 @@ (let ((beg (point)) (end (progn (insert data) (point)))) (unless (= nlines 0) - (insert "-------\n")) - (add-text-properties - beg end - `(occur-target ,marker follow-link t - help-echo "mouse-2: go to this occurrence"))))) + (insert "-------\n"))))) (goto-char endpt)) (if endpt (progn
--- a/lisp/savehist.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/savehist.el Tue Nov 01 06:23:08 2005 +0000 @@ -1,10 +1,10 @@ ;;; savehist.el --- Save minibuffer history. -;; Copyright (C) 1997, 2005 Free Software Foundation +;; Copyright (C) 1997,2005 Free Software Foundation ;; Author: Hrvoje Niksic <hniksic@xemacs.org> ;; Keywords: minibuffer -;; Version: 7 +;; Version: 9 ;; This file is part of GNU Emacs. @@ -27,24 +27,25 @@ ;; Many editors (e.g. Vim) have the feature of saving minibuffer ;; history to an external file after exit. This package provides the -;; same feature in Emacs. When Emacs is about the exit, -;; `savehist-save' will dump the contents of various minibuffer -;; histories (as determined by `savehist-history-variables') to a save -;; file (`~/.emacs-history' by default). Although the package was -;; designed for saving the minibuffer histories, any variables can be -;; saved that way. +;; same feature in Emacs. When set up, it saves recorded minibuffer +;; histories to a file (`~/.emacs-history' by default). Additional +;; variables may be specified by customizing +;; `savehist-additional-variables'. ;; To use savehist, put the following to `~/.emacs': ;; ;; (require 'savehist) ;; (savehist-load) -;; Be sure to have `savehist.el' in a directory that is in your -;; load-path, and byte-compile it. +;; If you are using a version of Emacs that does not ship with this +;; package, be sure to have `savehist.el' in a directory that is in +;; your load-path, and to byte-compile it. ;;; Code: (require 'custom) +(eval-when-compile + (require 'cl)) ;; User variables @@ -52,65 +53,25 @@ "Save minibuffer history." :group 'minibuffer) -(defcustom savehist-history-variables - '( - ;; Catch-all minibuffer history - minibuffer-history - ;; File-oriented commands - file-name-history - ;; Regexp-related reads - regexp-history - ;; Searches in minibuffer (via `M-r' and such) - minibuffer-history-search-history - ;; Query replace - query-replace-history - ;; eval-expression (`M-:') - read-expression-history - ;; shell-command (`M-!') - shell-command-history - ;; compile - compile-history - ;; find-tag (`M-.') - find-tag-history - ;; grep - grep-history - ;; Viper stuff - vip-ex-history vip-search-history - vip-replace1-history vip-replace2-history - vip-shell-history vip-search-history +(defcustom savehist-save-minibuffer-history t + "If non-nil, save all recorded minibuffer histories." + :type 'boolean + :group 'savehist) - ;; XEmacs-specific: - ;; Buffer-related commands - buffer-history - ;; Reads of variables and functions - variable-history function-history - ;; Extended commands - read-command-history - - ;; Info, lookup, and bookmark historys - Info-minibuffer-history - Info-search-history - Manual-page-minibuffer-history +(defcustom savehist-additional-variables () + "List of additional variables to save. +Each element is a symbol whose value will be persisted across Emacs +sessions that use savehist. The contents of variables should be +printable with the Lisp printer. If the variable's value is a list, +it will be trimmed to `savehist-length' elements. - ;; Emacs-specific: - ;; Extended commands - extended-command-history) - "*List of symbols to be saved. -Every symbol should refer to a variable. The variable will be saved -only if it is bound and has a non-nil value. Thus it is safe to -specify a superset of the variables a user is expected to want to -save. - -Default value contains minibuffer history variables used by Emacs, XEmacs, -and Viper (uh-oh). Note that, if you customize this variable, you -can lose the benefit of future versions of Emacs adding new values to -the list. Because of that it might be more useful to add values using -`add-to-list'." +You don't need to add minibuffer history variables to this list. All +minibuffer histories will be saved automatically." :type '(repeat (symbol :tag "Variable")) :group 'savehist) (defcustom savehist-file "~/.emacs-history" - "*File name to save minibuffer history to. + "File name to save minibuffer history to. The minibuffer history is a series of Lisp expressions, which should be loaded using `savehist-load' from your .emacs. See `savehist-load' for more details." @@ -118,14 +79,15 @@ :group 'savehist) (defcustom savehist-length 100 - "*Maximum length of a minibuffer list. -If set to nil, the length is unlimited." + "Maximum length of a minibuffer list. +Minibuffer histories with more entries are trimmed when saved, the older +entries being removed first. If set to nil, the length is unlimited." :type '(choice integer (const :tag "Unlimited" nil)) :group 'savehist) (defcustom savehist-modes #o600 - "*Default permissions of the history file. + "Default permissions of the history file. This is decimal, not octal. The default is 384 (0600 in octal). Set to nil to use the default permissions that Emacs uses, typically mandated by umask. The default is a bit more restrictive to protect @@ -134,7 +96,7 @@ :group 'savehist) (defcustom savehist-autosave-interval (* 5 60) - "*The interval during which savehist should autosave the history buffer." + "The interval during which savehist should autosave the history buffer." :type 'integer :group 'savehist) @@ -154,46 +116,65 @@ (defvar savehist-last-checksum nil) +(defvar savehist-minibuffer-history-variables nil) + (defconst savehist-no-conversion (if (featurep 'xemacs) 'binary 'no-conversion) - ;; FIXME: Why not use savehist-coding-system? - "Coding system without conversion, only used for calculating checksums.") + "Coding system without conversion, only used for calculating checksums. +It should be as discriminating as `savehist-coding-system' but faster.") -;; Functions +;; Functions. + +(defun savehist-install () + "Hook savehist into Emacs. +This will install `savehist-autosave' in `kill-emacs-hook' and on a timer. +To undo this, call `savehist-uninstall'." + (add-hook 'minibuffer-setup-hook 'savehist-minibuffer-hook) + (add-hook 'kill-emacs-hook 'savehist-autosave) + ;; Install an invocation of savehist-autosave on a timer. This + ;; should not cause noticeable delays for users -- savehist-autosave + ;; executes in under 5 ms on my system. + (unless savehist-timer + (setq savehist-timer + (if (featurep 'xemacs) + (start-itimer + "savehist" 'savehist-autosave savehist-autosave-interval + savehist-autosave-interval) + (run-with-timer savehist-autosave-interval savehist-autosave-interval + 'savehist-autosave))))) + +(defun savehist-uninstall () + "Undo installing savehist." + (remove-hook 'minibuffer-setup-hook 'savehist-minibuffer-hook) + (remove-hook 'kill-emacs-hook 'savehist-autosave) + (when savehist-timer + (if (featurep 'xemacs) + (delete-itimer savehist-timer) + (cancel-timer savehist-timer)) + (setq savehist-timer nil))) ;;;###autoload -(defun savehist-load (&optional no-hook) +(defun savehist-load (&optional no-install) "Load the minibuffer histories from `savehist-file'. -Unless NO-HOOK is specified, the function will also add the save function -to `kill-emacs-hook' and on a timer, ensuring that the minibuffer contents -will be saved before leaving Emacs. +Unless NO-INSTALL is present and non-nil, the function will also install +`savehist-autosave' in `kill-emacs-hook' and on a timer, ensuring that +history is saved before leaving Emacs. -This function should be normally used from your Emacs init file. Since it -removes your current minibuffer histories, it is unwise to call it at any -other time." +This function should be normally used from your Emacs init file. Since +it removes your current minibuffer histories, it is unwise to call it at +any other time." (interactive "P") - (unless no-hook - (add-hook 'kill-emacs-hook 'savehist-autosave) - ;; Install an invocation of savehist-autosave on a timer. This - ;; should not cause a noticeable delay -- savehist-autosave - ;; executes in under 5 ms on my system. - (unless savehist-timer - (setq savehist-timer - (if (featurep 'xemacs) - (start-itimer - "savehist" 'savehist-autosave savehist-autosave-interval - savehist-autosave-interval) - (run-with-idle-timer savehist-autosave-interval savehist-autosave-interval - 'savehist-autosave))))) ;; Don't set coding-system-for-read here. We rely on autodetection ;; and the coding cookie to convey that information. That way, if ;; the user changes the value of savehist-coding-system, we can ;; still correctly load the old file. - (load savehist-file t (not (interactive-p)))) + (load savehist-file t (not (interactive-p))) + (unless no-install + (savehist-install))) ;;;###autoload (defun savehist-save (&optional auto-save) - "Save the histories from `savehist-history-variables' to `savehist-file'. -Unbound symbols referenced in `savehist-history-variables' are ignored. + "Save the values of minibuffer history variables. +Unbound symbols referenced in `savehist-additional-variables' are ignored. If AUTO-SAVE is non-nil, compare the saved contents to the one last saved, and don't save the buffer if they are the same." (interactive) @@ -205,8 +186,13 @@ (print-string-length nil) (print-level nil) (print-readably t) - (print-quoted t)) - (dolist (sym savehist-history-variables) + (print-quoted t) + (symbol-list (append + (and savehist-save-minibuffer-history + (cons 'savehist-minibuffer-history-variables + savehist-minibuffer-history-variables)) + savehist-additional-variables))) + (dolist (sym symbol-list) (when (boundp sym) (let ((value (savehist-process-for-saving (symbol-value sym)))) (prin1 `(setq ,sym ',value) (current-buffer)) @@ -217,8 +203,9 @@ (unless (and auto-save (equal checksum savehist-last-checksum)) ;; Set file-precious-flag when saving the buffer because we ;; don't want a half-finished write ruining the entire - ;; history. (Remember that this is run from a timer and from - ;; kill-emacs-hook.) + ;; history. Remember that this is run from a timer and from + ;; kill-emacs-hook, and also that multiple Emacs instances + ;; could write to this file at once. (let ((file-precious-flag t) (coding-system-for-write savehist-coding-system)) (write-region (point-min) (point-max) savehist-file nil @@ -269,6 +256,10 @@ ;; The attempt failed: the object is not printable. (error nil))))) +(defun savehist-minibuffer-hook () + (add-to-list 'savehist-minibuffer-history-variables + minibuffer-history-variable)) + (provide 'savehist) ;; arch-tag: b3ce47f4-c5ad-4ebc-ad02-73aba705cf9f
--- a/lisp/server.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/server.el Tue Nov 01 06:23:08 2005 +0000 @@ -308,6 +308,11 @@ (defun server-sentinel (proc msg) "The process sentinel for Emacs server connections." + ;; If this is a new client process, set the query-on-exit flag to nil + ;; for this process (it isn't inherited from the server process). + (when (and (eq (process-status proc) 'open) + (process-query-on-exit-flag proc)) + (set-process-query-on-exit-flag proc nil)) (server-log (format "Status changed to %s: %s" (process-status proc) msg) proc) (server-delete-client proc))
--- a/lisp/simple.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/simple.el Tue Nov 01 06:23:08 2005 +0000 @@ -3545,10 +3545,11 @@ ;; Compute the end of the line ;; ignoring effectively invisible newlines. (save-excursion - (end-of-line) + ;; Like end-of-line but ignores fields. + (skip-chars-forward "^\n") (while (and (not (eobp)) (line-move-invisible-p (point))) (goto-char (next-char-property-change (point))) - (end-of-line)) + (skip-chars-forward "^\n")) (point)))) ;; Move to the desired column. @@ -4924,11 +4925,11 @@ (funcall (get minibuffer-completion-table 'completion-base-size-function))) (setq completion-base-size 0)))) ;; Put faces on first uncommon characters and common parts. - (when (or completion-base-size completion-common-substring) + (when (or completion-common-substring completion-base-size) (let* ((common-string-length - (if completion-base-size - (- (length mbuf-contents) completion-base-size) - (length completion-common-substring))) + (if completion-common-substring + (length completion-common-substring) + (- (length mbuf-contents) completion-base-size))) (element-start (next-single-property-change (point-min) 'mouse-face))
--- a/lisp/smerge-mode.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/smerge-mode.el Tue Nov 01 06:23:08 2005 +0000 @@ -4,7 +4,7 @@ ;; 2004, 2005 Free Software Foundation, Inc. ;; Author: Stefan Monnier <monnier@cs.yale.edu> -;; Keywords: revision-control merge diff3 cvs conflict +;; Keywords: tools revision-control merge diff3 cvs conflict ;; This file is part of GNU Emacs.
--- a/lisp/subr.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/subr.el Tue Nov 01 06:23:08 2005 +0000 @@ -37,7 +37,7 @@ (cons arguments custom-declare-variable-list))) -;;;; Lisp language features. +;;;; Basic Lisp macros. (defalias 'not 'null) @@ -144,6 +144,47 @@ Treated as a declaration when used at the right place in a `defmacro' form. \(See Info anchor `(elisp)Definition of declare'.)" nil) + +;;;; Basic Lisp functions. + +(defun ignore (&rest ignore) + "Do nothing and return nil. +This function accepts any number of arguments, but ignores them." + (interactive) + nil) + +(defun error (&rest args) + "Signal an error, making error message by passing all args to `format'. +In Emacs, the convention is that error messages start with a capital +letter but *do not* end with a period. Please follow this convention +for the sake of consistency." + (while t + (signal 'error (list (apply 'format args))))) + +;; We put this here instead of in frame.el so that it's defined even on +;; systems where frame.el isn't loaded. +(defun frame-configuration-p (object) + "Return non-nil if OBJECT seems to be a frame configuration. +Any list whose car is `frame-configuration' is assumed to be a frame +configuration." + (and (consp object) + (eq (car object) 'frame-configuration))) + +(defun functionp (object) + "Non-nil if OBJECT is any kind of function or a special form. +Also non-nil if OBJECT is a symbol and its function definition is +\(recursively) a function or special form. This does not include +macros." + (or (and (symbolp object) (fboundp object) + (condition-case nil + (setq object (indirect-function object)) + (error nil)) + (eq (car-safe object) 'autoload) + (not (car-safe (cdr-safe (cdr-safe (cdr-safe (cdr-safe object))))))) + (subrp object) (byte-code-function-p object) + (eq (car-safe object) 'lambda))) + +;;;; List functions. (defsubst caar (x) "Return the car of the car of X." @@ -240,23 +281,6 @@ next (+ from (* n inc))))) (nreverse seq)))) -(defun remove (elt seq) - "Return a copy of SEQ with all occurrences of ELT removed. -SEQ must be a list, vector, or string. The comparison is done with `equal'." - (if (nlistp seq) - ;; If SEQ isn't a list, there's no need to copy SEQ because - ;; `delete' will return a new object. - (delete elt seq) - (delete elt (copy-sequence seq)))) - -(defun remq (elt list) - "Return LIST with all occurrences of ELT removed. -The comparison is done with `eq'. Contrary to `delq', this does not use -side-effects, and the argument LIST is not modified." - (if (memq elt list) - (delq elt (copy-sequence list)) - list)) - (defun copy-tree (tree &optional vecp) "Make a copy of TREE. If TREE is a cons cell, this recursively copies both its car and its cdr. @@ -277,6 +301,8 @@ (aset tree i (copy-tree (aref tree i) vecp))) tree) tree))) + +;;;; Various list-search functions. (defun assoc-default (key alist &optional test default) "Find object KEY in a pseudo-alist ALIST. @@ -321,15 +347,67 @@ (setq list (cdr list))) list) +(defun assq-delete-all (key alist) + "Delete from ALIST all elements whose car is `eq' to KEY. +Return the modified alist. +Elements of ALIST that are not conses are ignored." + (while (and (consp (car alist)) + (eq (car (car alist)) key)) + (setq alist (cdr alist))) + (let ((tail alist) tail-cdr) + (while (setq tail-cdr (cdr tail)) + (if (and (consp (car tail-cdr)) + (eq (car (car tail-cdr)) key)) + (setcdr tail (cdr tail-cdr)) + (setq tail tail-cdr)))) + alist) + +(defun rassq-delete-all (value alist) + "Delete from ALIST all elements whose cdr is `eq' to VALUE. +Return the modified alist. +Elements of ALIST that are not conses are ignored." + (while (and (consp (car alist)) + (eq (cdr (car alist)) value)) + (setq alist (cdr alist))) + (let ((tail alist) tail-cdr) + (while (setq tail-cdr (cdr tail)) + (if (and (consp (car tail-cdr)) + (eq (cdr (car tail-cdr)) value)) + (setcdr tail (cdr tail-cdr)) + (setq tail tail-cdr)))) + alist) + +(defun remove (elt seq) + "Return a copy of SEQ with all occurrences of ELT removed. +SEQ must be a list, vector, or string. The comparison is done with `equal'." + (if (nlistp seq) + ;; If SEQ isn't a list, there's no need to copy SEQ because + ;; `delete' will return a new object. + (delete elt seq) + (delete elt (copy-sequence seq)))) + +(defun remq (elt list) + "Return LIST with all occurrences of ELT removed. +The comparison is done with `eq'. Contrary to `delq', this does not use +side-effects, and the argument LIST is not modified." + (if (memq elt list) + (delq elt (copy-sequence list)) + list)) ;;;; Keymap support. +(defmacro kbd (keys) + "Convert KEYS to the internal Emacs key representation. +KEYS should be a string constant in the format used for +saving keyboard macros (see `edmacro-mode')." + (read-kbd-macro keys)) + (defun undefined () (interactive) (ding)) -;Prevent the \{...} documentation construct -;from mentioning keys that run this command. +;; Prevent the \{...} documentation construct +;; from mentioning keys that run this command. (put 'undefined 'suppress-keymap t) (defun suppress-keymap (map &optional nodigits) @@ -346,6 +424,136 @@ (define-key map (char-to-string loop) 'digit-argument) (setq loop (1+ loop)))))) +(defun define-key-after (keymap key definition &optional after) + "Add binding in KEYMAP for KEY => DEFINITION, right after AFTER's binding. +This is like `define-key' except that the binding for KEY is placed +just after the binding for the event AFTER, instead of at the beginning +of the map. Note that AFTER must be an event type (like KEY), NOT a command +\(like DEFINITION). + +If AFTER is t or omitted, the new binding goes at the end of the keymap. +AFTER should be a single event type--a symbol or a character, not a sequence. + +Bindings are always added before any inherited map. + +The order of bindings in a keymap matters when it is used as a menu." + (unless after (setq after t)) + (or (keymapp keymap) + (signal 'wrong-type-argument (list 'keymapp keymap))) + (setq key + (if (<= (length key) 1) (aref key 0) + (setq keymap (lookup-key keymap + (apply 'vector + (butlast (mapcar 'identity key))))) + (aref key (1- (length key))))) + (let ((tail keymap) done inserted) + (while (and (not done) tail) + ;; Delete any earlier bindings for the same key. + (if (eq (car-safe (car (cdr tail))) key) + (setcdr tail (cdr (cdr tail)))) + ;; If we hit an included map, go down that one. + (if (keymapp (car tail)) (setq tail (car tail))) + ;; When we reach AFTER's binding, insert the new binding after. + ;; If we reach an inherited keymap, insert just before that. + ;; If we reach the end of this keymap, insert at the end. + (if (or (and (eq (car-safe (car tail)) after) + (not (eq after t))) + (eq (car (cdr tail)) 'keymap) + (null (cdr tail))) + (progn + ;; Stop the scan only if we find a parent keymap. + ;; Keep going past the inserted element + ;; so we can delete any duplications that come later. + (if (eq (car (cdr tail)) 'keymap) + (setq done t)) + ;; Don't insert more than once. + (or inserted + (setcdr tail (cons (cons key definition) (cdr tail)))) + (setq inserted t))) + (setq tail (cdr tail))))) + +(defun map-keymap-internal (function keymap &optional sort-first) + "Implement `map-keymap' with sorting. +Don't call this function; it is for internal use only." + (if sort-first + (let (list) + (map-keymap (lambda (a b) (push (cons a b) list)) + keymap) + (setq list (sort list + (lambda (a b) + (setq a (car a) b (car b)) + (if (integerp a) + (if (integerp b) (< a b) + t) + (if (integerp b) t + (string< a b)))))) + (dolist (p list) + (funcall function (car p) (cdr p)))) + (map-keymap function keymap))) + +(put 'keyboard-translate-table 'char-table-extra-slots 0) + +(defun keyboard-translate (from to) + "Translate character FROM to TO at a low level. +This function creates a `keyboard-translate-table' if necessary +and then modifies one entry in it." + (or (char-table-p keyboard-translate-table) + (setq keyboard-translate-table + (make-char-table 'keyboard-translate-table nil))) + (aset keyboard-translate-table from to)) + +;;;; Key binding commands. + +(defun global-set-key (key command) + "Give KEY a global binding as COMMAND. +COMMAND is the command definition to use; usually it is +a symbol naming an interactively-callable function. +KEY is a key sequence; noninteractively, it is a string or vector +of characters or event types, and non-ASCII characters with codes +above 127 (such as ISO Latin-1) can be included if you use a vector. + +Note that if KEY has a local binding in the current buffer, +that local binding will continue to shadow any global binding +that you make with this function." + (interactive "KSet key globally: \nCSet key %s to command: ") + (or (vectorp key) (stringp key) + (signal 'wrong-type-argument (list 'arrayp key))) + (define-key (current-global-map) key command)) + +(defun local-set-key (key command) + "Give KEY a local binding as COMMAND. +COMMAND is the command definition to use; usually it is +a symbol naming an interactively-callable function. +KEY is a key sequence; noninteractively, it is a string or vector +of characters or event types, and non-ASCII characters with codes +above 127 (such as ISO Latin-1) can be included if you use a vector. + +The binding goes in the current buffer's local map, +which in most cases is shared with all other buffers in the same major mode." + (interactive "KSet key locally: \nCSet key %s locally to command: ") + (let ((map (current-local-map))) + (or map + (use-local-map (setq map (make-sparse-keymap)))) + (or (vectorp key) (stringp key) + (signal 'wrong-type-argument (list 'arrayp key))) + (define-key map key command))) + +(defun global-unset-key (key) + "Remove global binding of KEY. +KEY is a string or vector representing a sequence of keystrokes." + (interactive "kUnset key globally: ") + (global-set-key key nil)) + +(defun local-unset-key (key) + "Remove local binding of KEY. +KEY is a string or vector representing a sequence of keystrokes." + (interactive "kUnset key locally: ") + (if (current-local-map) + (local-set-key key nil)) + nil) + +;;;; substitute-key-definition and its subroutines. + (defvar key-substitution-in-progress nil "Used internally by `substitute-key-definition'.") @@ -416,89 +624,6 @@ ;; If this one isn't being scanned already, scan it now. (substitute-key-definition olddef newdef keymap inner-def prefix))))) -(defun define-key-after (keymap key definition &optional after) - "Add binding in KEYMAP for KEY => DEFINITION, right after AFTER's binding. -This is like `define-key' except that the binding for KEY is placed -just after the binding for the event AFTER, instead of at the beginning -of the map. Note that AFTER must be an event type (like KEY), NOT a command -\(like DEFINITION). - -If AFTER is t or omitted, the new binding goes at the end of the keymap. -AFTER should be a single event type--a symbol or a character, not a sequence. - -Bindings are always added before any inherited map. - -The order of bindings in a keymap matters when it is used as a menu." - (unless after (setq after t)) - (or (keymapp keymap) - (signal 'wrong-type-argument (list 'keymapp keymap))) - (setq key - (if (<= (length key) 1) (aref key 0) - (setq keymap (lookup-key keymap - (apply 'vector - (butlast (mapcar 'identity key))))) - (aref key (1- (length key))))) - (let ((tail keymap) done inserted) - (while (and (not done) tail) - ;; Delete any earlier bindings for the same key. - (if (eq (car-safe (car (cdr tail))) key) - (setcdr tail (cdr (cdr tail)))) - ;; If we hit an included map, go down that one. - (if (keymapp (car tail)) (setq tail (car tail))) - ;; When we reach AFTER's binding, insert the new binding after. - ;; If we reach an inherited keymap, insert just before that. - ;; If we reach the end of this keymap, insert at the end. - (if (or (and (eq (car-safe (car tail)) after) - (not (eq after t))) - (eq (car (cdr tail)) 'keymap) - (null (cdr tail))) - (progn - ;; Stop the scan only if we find a parent keymap. - ;; Keep going past the inserted element - ;; so we can delete any duplications that come later. - (if (eq (car (cdr tail)) 'keymap) - (setq done t)) - ;; Don't insert more than once. - (or inserted - (setcdr tail (cons (cons key definition) (cdr tail)))) - (setq inserted t))) - (setq tail (cdr tail))))) - -(defun map-keymap-internal (function keymap &optional sort-first) - "Implement `map-keymap' with sorting. -Don't call this function; it is for internal use only." - (if sort-first - (let (list) - (map-keymap (lambda (a b) (push (cons a b) list)) - keymap) - (setq list (sort list - (lambda (a b) - (setq a (car a) b (car b)) - (if (integerp a) - (if (integerp b) (< a b) - t) - (if (integerp b) t - (string< a b)))))) - (dolist (p list) - (funcall function (car p) (cdr p)))) - (map-keymap function keymap))) - -(defmacro kbd (keys) - "Convert KEYS to the internal Emacs key representation. -KEYS should be a string constant in the format used for -saving keyboard macros (see `edmacro-mode')." - (read-kbd-macro keys)) - -(put 'keyboard-translate-table 'char-table-extra-slots 0) - -(defun keyboard-translate (from to) - "Translate character FROM to TO at a low level. -This function creates a `keyboard-translate-table' if necessary -and then modifies one entry in it." - (or (char-table-p keyboard-translate-table) - (setq keyboard-translate-table (make-char-table 'keyboard-translate-table nil))) - (aset keyboard-translate-table from to)) - ;;;; The global keymap tree. @@ -641,6 +766,8 @@ "Return the multi-click count of EVENT, a click or drag event. The return value is a positive integer." (if (and (consp event) (integerp (nth 2 event))) (nth 2 event) 1)) + +;;;; Extracting fields of the positions in an event. (defsubst posn-window (position) "Return the window in POSITION. @@ -830,6 +957,8 @@ (defalias 'point-at-eol 'line-end-position) (defalias 'point-at-bol 'line-beginning-position) +(defalias 'user-original-login-name 'user-login-name) + ;;;; Hook manipulation functions. @@ -990,7 +1119,143 @@ (if (and oa ob) (< oa ob) oa))))))) - + +;;;; Mode hooks. + +(defvar delay-mode-hooks nil + "If non-nil, `run-mode-hooks' should delay running the hooks.") +(defvar delayed-mode-hooks nil + "List of delayed mode hooks waiting to be run.") +(make-variable-buffer-local 'delayed-mode-hooks) +(put 'delay-mode-hooks 'permanent-local t) + +(defvar after-change-major-mode-hook nil + "Normal hook run at the very end of major mode functions.") + +(defun run-mode-hooks (&rest hooks) + "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS. +Execution is delayed if `delay-mode-hooks' is non-nil. +If `delay-mode-hooks' is nil, run `after-change-major-mode-hook' +after running the mode hooks. +Major mode functions should use this." + (if delay-mode-hooks + ;; Delaying case. + (dolist (hook hooks) + (push hook delayed-mode-hooks)) + ;; Normal case, just run the hook as before plus any delayed hooks. + (setq hooks (nconc (nreverse delayed-mode-hooks) hooks)) + (setq delayed-mode-hooks nil) + (apply 'run-hooks hooks) + (run-hooks 'after-change-major-mode-hook))) + +(defmacro delay-mode-hooks (&rest body) + "Execute BODY, but delay any `run-mode-hooks'. +These hooks will be executed by the first following call to +`run-mode-hooks' that occurs outside any `delayed-mode-hooks' form. +Only affects hooks run in the current buffer." + (declare (debug t) (indent 0)) + `(progn + (make-local-variable 'delay-mode-hooks) + (let ((delay-mode-hooks t)) + ,@body))) + +;; PUBLIC: find if the current mode derives from another. + +(defun derived-mode-p (&rest modes) + "Non-nil if the current major mode is derived from one of MODES. +Uses the `derived-mode-parent' property of the symbol to trace backwards." + (let ((parent major-mode)) + (while (and (not (memq parent modes)) + (setq parent (get parent 'derived-mode-parent)))) + parent)) + +;;;; Minor modes. + +;; If a minor mode is not defined with define-minor-mode, +;; add it here explicitly. +;; isearch-mode is deliberately excluded, since you should +;; not call it yourself. +(defvar minor-mode-list '(auto-save-mode auto-fill-mode abbrev-mode + overwrite-mode view-mode + hs-minor-mode) + "List of all minor mode functions.") + +(defun add-minor-mode (toggle name &optional keymap after toggle-fun) + "Register a new minor mode. + +This is an XEmacs-compatibility function. Use `define-minor-mode' instead. + +TOGGLE is a symbol which is the name of a buffer-local variable that +is toggled on or off to say whether the minor mode is active or not. + +NAME specifies what will appear in the mode line when the minor mode +is active. NAME should be either a string starting with a space, or a +symbol whose value is such a string. + +Optional KEYMAP is the keymap for the minor mode that will be added +to `minor-mode-map-alist'. + +Optional AFTER specifies that TOGGLE should be added after AFTER +in `minor-mode-alist'. + +Optional TOGGLE-FUN is an interactive function to toggle the mode. +It defaults to (and should by convention be) TOGGLE. + +If TOGGLE has a non-nil `:included' property, an entry for the mode is +included in the mode-line minor mode menu. +If TOGGLE has a `:menu-tag', that is used for the menu item's label." + (unless (memq toggle minor-mode-list) + (push toggle minor-mode-list)) + + (unless toggle-fun (setq toggle-fun toggle)) + (unless (eq toggle-fun toggle) + (put toggle :minor-mode-function toggle-fun)) + ;; Add the name to the minor-mode-alist. + (when name + (let ((existing (assq toggle minor-mode-alist))) + (if existing + (setcdr existing (list name)) + (let ((tail minor-mode-alist) found) + (while (and tail (not found)) + (if (eq after (caar tail)) + (setq found tail) + (setq tail (cdr tail)))) + (if found + (let ((rest (cdr found))) + (setcdr found nil) + (nconc found (list (list toggle name)) rest)) + (setq minor-mode-alist (cons (list toggle name) + minor-mode-alist))))))) + ;; Add the toggle to the minor-modes menu if requested. + (when (get toggle :included) + (define-key mode-line-mode-menu + (vector toggle) + (list 'menu-item + (concat + (or (get toggle :menu-tag) + (if (stringp name) name (symbol-name toggle))) + (let ((mode-name (if (symbolp name) (symbol-value name)))) + (if (and (stringp mode-name) (string-match "[^ ]+" mode-name)) + (concat " (" (match-string 0 mode-name) ")")))) + toggle-fun + :button (cons :toggle toggle)))) + + ;; Add the map to the minor-mode-map-alist. + (when keymap + (let ((existing (assq toggle minor-mode-map-alist))) + (if existing + (setcdr existing keymap) + (let ((tail minor-mode-map-alist) found) + (while (and tail (not found)) + (if (eq after (caar tail)) + (setq found tail) + (setq tail (cdr tail)))) + (if found + (let ((rest (cdr found))) + (setcdr found nil) + (nconc found (list (cons toggle keymap)) rest)) + (setq minor-mode-map-alist (cons (cons toggle keymap) + minor-mode-map-alist)))))))) ;;; Load history @@ -1045,7 +1310,23 @@ file))) -;;;; Specifying things to do after certain files are loaded. +;;;; Specifying things to do later. + +(defmacro eval-at-startup (&rest body) + "Make arrangements to evaluate BODY when Emacs starts up. +If this is run after Emacs startup, evaluate BODY immediately. +Always returns nil. + +This works by adding a function to `before-init-hook'. +That function's doc string says which file created it." + `(progn + (if command-line-processed + (progn . ,body) + (add-hook 'before-init-hook + '(lambda () ,(concat "From " (or load-file-name "no file")) + . ,body) + t)) + nil)) (defun eval-after-load (file form) "Arrange that, if FILE is ever loaded, FORM will be run at that time. @@ -1069,7 +1350,8 @@ ;; Make sure `load-history' contains the files dumped with ;; Emacs for the case that FILE is one of them. ;; (load-symbol-file-load-history) - (assoc file load-history)) + (when (locate-library file) + (assoc (locate-library file) load-history))) (eval form)))) form) @@ -1079,7 +1361,9 @@ FILE should be the name of a library, with no directory name." (eval-after-load file (read))) -;;; open-network-stream is a wrapper around make-network-process. +;;;; Process stuff. + +;; open-network-stream is a wrapper around make-network-process. (when (featurep 'make-network-process) (defun open-network-stream (name buffer host service) @@ -1379,6 +1663,8 @@ ;; Revert the undo info to what it was when we grabbed the state. (setq buffer-undo-list elt))))) +;;;; Display-related functions. + ;; For compatibility. (defalias 'redraw-modeline 'force-mode-line-update) @@ -1516,34 +1802,85 @@ This variable is meaningful on MS-DOG and Windows NT. On those systems, it is automatically local in every buffer. On other systems, this variable is normally always nil.") - -;; This should probably be written in C (i.e., without using `walk-windows'). -(defun get-buffer-window-list (buffer &optional minibuf frame) - "Return list of all windows displaying BUFFER, or nil if none. -BUFFER can be a buffer or a buffer name. -See `walk-windows' for the meaning of MINIBUF and FRAME." - (let ((buffer (if (bufferp buffer) buffer (get-buffer buffer))) windows) - (walk-windows (function (lambda (window) - (if (eq (window-buffer window) buffer) - (setq windows (cons window windows))))) - minibuf frame) - windows)) - -(defun ignore (&rest ignore) - "Do nothing and return nil. -This function accepts any number of arguments, but ignores them." - (interactive) - nil) - -(defun error (&rest args) - "Signal an error, making error message by passing all args to `format'. -In Emacs, the convention is that error messages start with a capital -letter but *do not* end with a period. Please follow this convention -for the sake of consistency." - (while t - (signal 'error (list (apply 'format args))))) - -(defalias 'user-original-login-name 'user-login-name) + +;;;; Misc. useful functions. + +(defun find-tag-default () + "Determine default tag to search for, based on text at point. +If there is no plausible default, return nil." + (save-excursion + (while (looking-at "\\sw\\|\\s_") + (forward-char 1)) + (if (or (re-search-backward "\\sw\\|\\s_" + (save-excursion (beginning-of-line) (point)) + t) + (re-search-forward "\\(\\sw\\|\\s_\\)+" + (save-excursion (end-of-line) (point)) + t)) + (progn + (goto-char (match-end 0)) + (condition-case nil + (buffer-substring-no-properties + (point) + (progn (forward-sexp -1) + (while (looking-at "\\s'") + (forward-char 1)) + (point))) + (error nil))) + nil))) + +(defun play-sound (sound) + "SOUND is a list of the form `(sound KEYWORD VALUE...)'. +The following keywords are recognized: + + :file FILE - read sound data from FILE. If FILE isn't an +absolute file name, it is searched in `data-directory'. + + :data DATA - read sound data from string DATA. + +Exactly one of :file or :data must be present. + + :volume VOL - set volume to VOL. VOL must an integer in the +range 0..100 or a float in the range 0..1.0. If not specified, +don't change the volume setting of the sound device. + + :device DEVICE - play sound on DEVICE. If not specified, +a system-dependent default device name is used." + (if (fboundp 'play-sound-internal) + (play-sound-internal sound) + (error "This Emacs binary lacks sound support"))) + +(defun shell-quote-argument (argument) + "Quote an argument for passing as argument to an inferior shell." + (if (eq system-type 'ms-dos) + ;; Quote using double quotes, but escape any existing quotes in + ;; the argument with backslashes. + (let ((result "") + (start 0) + end) + (if (or (null (string-match "[^\"]" argument)) + (< (match-end 0) (length argument))) + (while (string-match "[\"]" argument start) + (setq end (match-beginning 0) + result (concat result (substring argument start end) + "\\" (substring argument end (1+ end))) + start (1+ end)))) + (concat "\"" result (substring argument start) "\"")) + (if (eq system-type 'windows-nt) + (concat "\"" argument "\"") + (if (equal argument "") + "''" + ;; Quote everything except POSIX filename characters. + ;; This should be safe enough even for really weird shells. + (let ((result "") (start 0) end) + (while (string-match "[^-0-9a-zA-Z_./]" argument start) + (setq end (match-beginning 0) + result (concat result (substring argument start end) + "\\" (substring argument end (1+ end))) + start (1+ end))) + (concat result (substring argument start))))))) + +;;;; Support for yanking and text properties. (defvar yank-excluded-properties) @@ -1649,7 +1986,7 @@ (remove-yank-excluded-properties opoint (point)))) -;; Synchronous shell commands. +;;;; Synchronous shell commands. (defun start-process-shell-command (name buffer &rest args) "Start a program in a subprocess. Return the process object for it. @@ -1705,6 +2042,8 @@ shell-command-switch (mapconcat 'identity (cons command args) " "))))) +;;;; Lisp macros to do various things temporarily. + (defmacro with-current-buffer (buffer &rest body) "Execute the forms in BODY with BUFFER as the current buffer. The value returned is the value of the last form in BODY. @@ -1869,96 +2208,8 @@ (let ((combine-after-change-calls t)) . ,body) (combine-after-change-execute))) - - -(defvar delay-mode-hooks nil - "If non-nil, `run-mode-hooks' should delay running the hooks.") -(defvar delayed-mode-hooks nil - "List of delayed mode hooks waiting to be run.") -(make-variable-buffer-local 'delayed-mode-hooks) -(put 'delay-mode-hooks 'permanent-local t) - -(defvar after-change-major-mode-hook nil - "Normal hook run at the very end of major mode functions.") - -(defun run-mode-hooks (&rest hooks) - "Run mode hooks `delayed-mode-hooks' and HOOKS, or delay HOOKS. -Execution is delayed if `delay-mode-hooks' is non-nil. -If `delay-mode-hooks' is nil, run `after-change-major-mode-hook' -after running the mode hooks. -Major mode functions should use this." - (if delay-mode-hooks - ;; Delaying case. - (dolist (hook hooks) - (push hook delayed-mode-hooks)) - ;; Normal case, just run the hook as before plus any delayed hooks. - (setq hooks (nconc (nreverse delayed-mode-hooks) hooks)) - (setq delayed-mode-hooks nil) - (apply 'run-hooks hooks) - (run-hooks 'after-change-major-mode-hook))) - -(defmacro delay-mode-hooks (&rest body) - "Execute BODY, but delay any `run-mode-hooks'. -These hooks will be executed by the first following call to -`run-mode-hooks' that occurs outside any `delayed-mode-hooks' form. -Only affects hooks run in the current buffer." - (declare (debug t) (indent 0)) - `(progn - (make-local-variable 'delay-mode-hooks) - (let ((delay-mode-hooks t)) - ,@body))) - -;; PUBLIC: find if the current mode derives from another. - -(defun derived-mode-p (&rest modes) - "Non-nil if the current major mode is derived from one of MODES. -Uses the `derived-mode-parent' property of the symbol to trace backwards." - (let ((parent major-mode)) - (while (and (not (memq parent modes)) - (setq parent (get parent 'derived-mode-parent)))) - parent)) - -(defun find-tag-default () - "Determine default tag to search for, based on text at point. -If there is no plausible default, return nil." - (save-excursion - (while (looking-at "\\sw\\|\\s_") - (forward-char 1)) - (if (or (re-search-backward "\\sw\\|\\s_" - (save-excursion (beginning-of-line) (point)) - t) - (re-search-forward "\\(\\sw\\|\\s_\\)+" - (save-excursion (end-of-line) (point)) - t)) - (progn - (goto-char (match-end 0)) - (condition-case nil - (buffer-substring-no-properties - (point) - (progn (forward-sexp -1) - (while (looking-at "\\s'") - (forward-char 1)) - (point))) - (error nil))) - nil))) - -(defmacro with-syntax-table (table &rest body) - "Evaluate BODY with syntax table of current buffer set to TABLE. -The syntax table of the current buffer is saved, BODY is evaluated, and the -saved table is restored, even in case of an abnormal exit. -Value is what BODY returns." - (declare (debug t)) - (let ((old-table (make-symbol "table")) - (old-buffer (make-symbol "buffer"))) - `(let ((,old-table (syntax-table)) - (,old-buffer (current-buffer))) - (unwind-protect - (progn - (set-syntax-table ,table) - ,@body) - (save-current-buffer - (set-buffer ,old-buffer) - (set-syntax-table ,old-table)))))) + +;;;; Constructing completion tables. (defmacro dynamic-completion-table (fun) "Use function FUN as a dynamic completion table. @@ -2018,7 +2269,7 @@ (or (test-completion string ,a predicate) (test-completion string ,b predicate)))))) -;;; Matching and substitution +;;; Matching and match data. (defvar save-match-data-internal) @@ -2093,6 +2344,47 @@ (looking-at (concat "\\(?:" regexp "\\)\\'"))))) (not (null pos)))) +(defun subregexp-context-p (regexp pos &optional start) + "Return non-nil if POS is in a normal subregexp context in REGEXP. +A subregexp context is one where a sub-regexp can appear. +A non-subregexp context is for example within brackets, or within a +repetition bounds operator `\\=\\{...\\}', or right after a `\\'. +If START is non-nil, it should be a position in REGEXP, smaller +than POS, and known to be in a subregexp context." + ;; Here's one possible implementation, with the great benefit that it + ;; reuses the regexp-matcher's own parser, so it understands all the + ;; details of the syntax. A disadvantage is that it needs to match the + ;; error string. + (condition-case err + (progn + (string-match (substring regexp (or start 0) pos) "") + t) + (invalid-regexp + (not (member (cadr err) '("Unmatched [ or [^" + "Unmatched \\{" + "Trailing backslash"))))) + ;; An alternative implementation: + ;; (defconst re-context-re + ;; (let* ((harmless-ch "[^\\[]") + ;; (harmless-esc "\\\\[^{]") + ;; (class-harmless-ch "[^][]") + ;; (class-lb-harmless "[^]:]") + ;; (class-lb-colon-maybe-charclass ":\\([a-z]+:]\\)?") + ;; (class-lb (concat "\\[\\(" class-lb-harmless + ;; "\\|" class-lb-colon-maybe-charclass "\\)")) + ;; (class + ;; (concat "\\[^?]?" + ;; "\\(" class-harmless-ch + ;; "\\|" class-lb "\\)*" + ;; "\\[?]")) ; special handling for bare [ at end of re + ;; (braces "\\\\{[0-9,]+\\\\}")) + ;; (concat "\\`\\(" harmless-ch "\\|" harmless-esc + ;; "\\|" class "\\|" braces "\\)*\\'")) + ;; "Matches any prefix that corresponds to a normal subregexp context.") + ;; (string-match re-context-re (substring regexp (or start 0) pos)) + ) + +;;;; split-string (defconst split-string-default-separators "[ \f\t\n\r\v]+" "The default value of separators for `split-string'. @@ -2153,6 +2445,8 @@ (cons (substring string start) list))) (nreverse list))) + +;;;; Replacement in strings. (defun subst-char-in-string (fromchar tochar string &optional inplace) "Replace FROMCHAR with TOCHAR in STRING each time it occurs. @@ -2222,76 +2516,42 @@ ;; Reconstruct a string from the pieces. (setq matches (cons (substring string start l) matches)) ; leftover (apply #'concat (nreverse matches))))) - -(defun subregexp-context-p (regexp pos &optional start) - "Return non-nil if POS is in a normal subregexp context in REGEXP. -A subregexp context is one where a sub-regexp can appear. -A non-subregexp context is for example within brackets, or within a -repetition bounds operator `\\=\\{...\\}', or right after a `\\'. -If START is non-nil, it should be a position in REGEXP, smaller -than POS, and known to be in a subregexp context." - ;; Here's one possible implementation, with the great benefit that it - ;; reuses the regexp-matcher's own parser, so it understands all the - ;; details of the syntax. A disadvantage is that it needs to match the - ;; error string. - (condition-case err - (progn - (string-match (substring regexp (or start 0) pos) "") - t) - (invalid-regexp - (not (member (cadr err) '("Unmatched [ or [^" - "Unmatched \\{" - "Trailing backslash"))))) - ;; An alternative implementation: - ;; (defconst re-context-re - ;; (let* ((harmless-ch "[^\\[]") - ;; (harmless-esc "\\\\[^{]") - ;; (class-harmless-ch "[^][]") - ;; (class-lb-harmless "[^]:]") - ;; (class-lb-colon-maybe-charclass ":\\([a-z]+:]\\)?") - ;; (class-lb (concat "\\[\\(" class-lb-harmless - ;; "\\|" class-lb-colon-maybe-charclass "\\)")) - ;; (class - ;; (concat "\\[^?]?" - ;; "\\(" class-harmless-ch - ;; "\\|" class-lb "\\)*" - ;; "\\[?]")) ; special handling for bare [ at end of re - ;; (braces "\\\\{[0-9,]+\\\\}")) - ;; (concat "\\`\\(" harmless-ch "\\|" harmless-esc - ;; "\\|" class "\\|" braces "\\)*\\'")) - ;; "Matches any prefix that corresponds to a normal subregexp context.") - ;; (string-match re-context-re (substring regexp (or start 0) pos)) - ) + +;;;; invisibility specs + +(defun add-to-invisibility-spec (element) + "Add ELEMENT to `buffer-invisibility-spec'. +See documentation for `buffer-invisibility-spec' for the kind of elements +that can be added." + (if (eq buffer-invisibility-spec t) + (setq buffer-invisibility-spec (list t))) + (setq buffer-invisibility-spec + (cons element buffer-invisibility-spec))) + +(defun remove-from-invisibility-spec (element) + "Remove ELEMENT from `buffer-invisibility-spec'." + (if (consp buffer-invisibility-spec) + (setq buffer-invisibility-spec (delete element buffer-invisibility-spec)))) -(defun shell-quote-argument (argument) - "Quote an argument for passing as argument to an inferior shell." - (if (eq system-type 'ms-dos) - ;; Quote using double quotes, but escape any existing quotes in - ;; the argument with backslashes. - (let ((result "") - (start 0) - end) - (if (or (null (string-match "[^\"]" argument)) - (< (match-end 0) (length argument))) - (while (string-match "[\"]" argument start) - (setq end (match-beginning 0) - result (concat result (substring argument start end) - "\\" (substring argument end (1+ end))) - start (1+ end)))) - (concat "\"" result (substring argument start) "\"")) - (if (eq system-type 'windows-nt) - (concat "\"" argument "\"") - (if (equal argument "") - "''" - ;; Quote everything except POSIX filename characters. - ;; This should be safe enough even for really weird shells. - (let ((result "") (start 0) end) - (while (string-match "[^-0-9a-zA-Z_./]" argument start) - (setq end (match-beginning 0) - result (concat result (substring argument start end) - "\\" (substring argument end (1+ end))) - start (1+ end))) - (concat result (substring argument start))))))) +;;;; Syntax tables. + +(defmacro with-syntax-table (table &rest body) + "Evaluate BODY with syntax table of current buffer set to TABLE. +The syntax table of the current buffer is saved, BODY is evaluated, and the +saved table is restored, even in case of an abnormal exit. +Value is what BODY returns." + (declare (debug t)) + (let ((old-table (make-symbol "table")) + (old-buffer (make-symbol "buffer"))) + `(let ((,old-table (syntax-table)) + (,old-buffer (current-buffer))) + (unwind-protect + (progn + (set-syntax-table ,table) + ,@body) + (save-current-buffer + (set-buffer ,old-buffer) + (set-syntax-table ,old-table)))))) (defun make-syntax-table (&optional oldtable) "Return a new syntax table. @@ -2314,247 +2574,8 @@ "Return the syntax class part of the syntax descriptor SYNTAX. If SYNTAX is nil, return nil." (and syntax (logand (car syntax) 65535))) - -(defun add-to-invisibility-spec (element) - "Add ELEMENT to `buffer-invisibility-spec'. -See documentation for `buffer-invisibility-spec' for the kind of elements -that can be added." - (if (eq buffer-invisibility-spec t) - (setq buffer-invisibility-spec (list t))) - (setq buffer-invisibility-spec - (cons element buffer-invisibility-spec))) - -(defun remove-from-invisibility-spec (element) - "Remove ELEMENT from `buffer-invisibility-spec'." - (if (consp buffer-invisibility-spec) - (setq buffer-invisibility-spec (delete element buffer-invisibility-spec)))) -(defun global-set-key (key command) - "Give KEY a global binding as COMMAND. -COMMAND is the command definition to use; usually it is -a symbol naming an interactively-callable function. -KEY is a key sequence; noninteractively, it is a string or vector -of characters or event types, and non-ASCII characters with codes -above 127 (such as ISO Latin-1) can be included if you use a vector. - -Note that if KEY has a local binding in the current buffer, -that local binding will continue to shadow any global binding -that you make with this function." - (interactive "KSet key globally: \nCSet key %s to command: ") - (or (vectorp key) (stringp key) - (signal 'wrong-type-argument (list 'arrayp key))) - (define-key (current-global-map) key command)) - -(defun local-set-key (key command) - "Give KEY a local binding as COMMAND. -COMMAND is the command definition to use; usually it is -a symbol naming an interactively-callable function. -KEY is a key sequence; noninteractively, it is a string or vector -of characters or event types, and non-ASCII characters with codes -above 127 (such as ISO Latin-1) can be included if you use a vector. - -The binding goes in the current buffer's local map, -which in most cases is shared with all other buffers in the same major mode." - (interactive "KSet key locally: \nCSet key %s locally to command: ") - (let ((map (current-local-map))) - (or map - (use-local-map (setq map (make-sparse-keymap)))) - (or (vectorp key) (stringp key) - (signal 'wrong-type-argument (list 'arrayp key))) - (define-key map key command))) - -(defun global-unset-key (key) - "Remove global binding of KEY. -KEY is a string or vector representing a sequence of keystrokes." - (interactive "kUnset key globally: ") - (global-set-key key nil)) - -(defun local-unset-key (key) - "Remove local binding of KEY. -KEY is a string or vector representing a sequence of keystrokes." - (interactive "kUnset key locally: ") - (if (current-local-map) - (local-set-key key nil)) - nil) - -;; We put this here instead of in frame.el so that it's defined even on -;; systems where frame.el isn't loaded. -(defun frame-configuration-p (object) - "Return non-nil if OBJECT seems to be a frame configuration. -Any list whose car is `frame-configuration' is assumed to be a frame -configuration." - (and (consp object) - (eq (car object) 'frame-configuration))) - -(defun functionp (object) - "Non-nil if OBJECT is any kind of function or a special form. -Also non-nil if OBJECT is a symbol and its function definition is -\(recursively) a function or special form. This does not include -macros." - (or (and (symbolp object) (fboundp object) - (condition-case nil - (setq object (indirect-function object)) - (error nil)) - (eq (car-safe object) 'autoload) - (not (car-safe (cdr-safe (cdr-safe (cdr-safe (cdr-safe object))))))) - (subrp object) (byte-code-function-p object) - (eq (car-safe object) 'lambda))) - -(defun assq-delete-all (key alist) - "Delete from ALIST all elements whose car is `eq' to KEY. -Return the modified alist. -Elements of ALIST that are not conses are ignored." - (while (and (consp (car alist)) - (eq (car (car alist)) key)) - (setq alist (cdr alist))) - (let ((tail alist) tail-cdr) - (while (setq tail-cdr (cdr tail)) - (if (and (consp (car tail-cdr)) - (eq (car (car tail-cdr)) key)) - (setcdr tail (cdr tail-cdr)) - (setq tail tail-cdr)))) - alist) - -(defun rassq-delete-all (value alist) - "Delete from ALIST all elements whose cdr is `eq' to VALUE. -Return the modified alist. -Elements of ALIST that are not conses are ignored." - (while (and (consp (car alist)) - (eq (cdr (car alist)) value)) - (setq alist (cdr alist))) - (let ((tail alist) tail-cdr) - (while (setq tail-cdr (cdr tail)) - (if (and (consp (car tail-cdr)) - (eq (cdr (car tail-cdr)) value)) - (setcdr tail (cdr tail-cdr)) - (setq tail tail-cdr)))) - alist) - -(defun make-temp-file (prefix &optional dir-flag suffix) - "Create a temporary file. -The returned file name (created by appending some random characters at the end -of PREFIX, and expanding against `temporary-file-directory' if necessary), -is guaranteed to point to a newly created empty file. -You can then use `write-region' to write new data into the file. - -If DIR-FLAG is non-nil, create a new empty directory instead of a file. - -If SUFFIX is non-nil, add that at the end of the file name." - (let ((umask (default-file-modes)) - file) - (unwind-protect - (progn - ;; Create temp files with strict access rights. It's easy to - ;; loosen them later, whereas it's impossible to close the - ;; time-window of loose permissions otherwise. - (set-default-file-modes ?\700) - (while (condition-case () - (progn - (setq file - (make-temp-name - (expand-file-name prefix temporary-file-directory))) - (if suffix - (setq file (concat file suffix))) - (if dir-flag - (make-directory file) - (write-region "" nil file nil 'silent nil 'excl)) - nil) - (file-already-exists t)) - ;; the file was somehow created by someone else between - ;; `make-temp-name' and `write-region', let's try again. - nil) - file) - ;; Reset the umask. - (set-default-file-modes umask)))) - - -;; If a minor mode is not defined with define-minor-mode, -;; add it here explicitly. -;; isearch-mode is deliberately excluded, since you should -;; not call it yourself. -(defvar minor-mode-list '(auto-save-mode auto-fill-mode abbrev-mode - overwrite-mode view-mode - hs-minor-mode) - "List of all minor mode functions.") - -(defun add-minor-mode (toggle name &optional keymap after toggle-fun) - "Register a new minor mode. - -This is an XEmacs-compatibility function. Use `define-minor-mode' instead. - -TOGGLE is a symbol which is the name of a buffer-local variable that -is toggled on or off to say whether the minor mode is active or not. - -NAME specifies what will appear in the mode line when the minor mode -is active. NAME should be either a string starting with a space, or a -symbol whose value is such a string. - -Optional KEYMAP is the keymap for the minor mode that will be added -to `minor-mode-map-alist'. - -Optional AFTER specifies that TOGGLE should be added after AFTER -in `minor-mode-alist'. - -Optional TOGGLE-FUN is an interactive function to toggle the mode. -It defaults to (and should by convention be) TOGGLE. - -If TOGGLE has a non-nil `:included' property, an entry for the mode is -included in the mode-line minor mode menu. -If TOGGLE has a `:menu-tag', that is used for the menu item's label." - (unless (memq toggle minor-mode-list) - (push toggle minor-mode-list)) - - (unless toggle-fun (setq toggle-fun toggle)) - (unless (eq toggle-fun toggle) - (put toggle :minor-mode-function toggle-fun)) - ;; Add the name to the minor-mode-alist. - (when name - (let ((existing (assq toggle minor-mode-alist))) - (if existing - (setcdr existing (list name)) - (let ((tail minor-mode-alist) found) - (while (and tail (not found)) - (if (eq after (caar tail)) - (setq found tail) - (setq tail (cdr tail)))) - (if found - (let ((rest (cdr found))) - (setcdr found nil) - (nconc found (list (list toggle name)) rest)) - (setq minor-mode-alist (cons (list toggle name) - minor-mode-alist))))))) - ;; Add the toggle to the minor-modes menu if requested. - (when (get toggle :included) - (define-key mode-line-mode-menu - (vector toggle) - (list 'menu-item - (concat - (or (get toggle :menu-tag) - (if (stringp name) name (symbol-name toggle))) - (let ((mode-name (if (symbolp name) (symbol-value name)))) - (if (and (stringp mode-name) (string-match "[^ ]+" mode-name)) - (concat " (" (match-string 0 mode-name) ")")))) - toggle-fun - :button (cons :toggle toggle)))) - - ;; Add the map to the minor-mode-map-alist. - (when keymap - (let ((existing (assq toggle minor-mode-map-alist))) - (if existing - (setcdr existing keymap) - (let ((tail minor-mode-map-alist) found) - (while (and tail (not found)) - (if (eq after (caar tail)) - (setq found tail) - (setq tail (cdr tail)))) - (if found - (let ((rest (cdr found))) - (setcdr found nil) - (nconc found (list (cons toggle keymap)) rest)) - (setq minor-mode-map-alist (cons (cons toggle keymap) - minor-mode-map-alist)))))))) - -;; Clones ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;; Text clones (defun text-clone-maintain (ol1 after beg end &optional len) "Propagate the changes made under the overlay OL1 to the other clones. @@ -2648,27 +2669,11 @@ ;;(overlay-put ol2 'face 'underline) (overlay-put ol2 'evaporate t) (overlay-put ol2 'text-clones dups))) - -(defun play-sound (sound) - "SOUND is a list of the form `(sound KEYWORD VALUE...)'. -The following keywords are recognized: - - :file FILE - read sound data from FILE. If FILE isn't an -absolute file name, it is searched in `data-directory'. - - :data DATA - read sound data from string DATA. - -Exactly one of :file or :data must be present. - - :volume VOL - set volume to VOL. VOL must an integer in the -range 0..100 or a float in the range 0..1.0. If not specified, -don't change the volume setting of the sound device. - - :device DEVICE - play sound on DEVICE. If not specified, -a system-dependent default device name is used." - (if (fboundp 'play-sound-internal) - (play-sound-internal sound) - (error "This Emacs binary lacks sound support"))) + +;;;; Mail user agents. + +;; Here we include just enough for other packages to be able +;; to define them. (defun define-mail-user-agent (symbol composefunc sendfunc &optional abortfunc hookvar) @@ -2704,8 +2709,8 @@ (put symbol 'sendfunc sendfunc) (put symbol 'abortfunc (or abortfunc 'kill-buffer)) (put symbol 'hookvar (or hookvar 'mail-send-hook))) - -;; Standardized progress reporting + +;;;; Progress reporters. ;; Progress reporter has the following structure: ;; @@ -2862,7 +2867,7 @@ nil ,@(cdr (cdr spec))))) -;;;; Compare Version Strings +;;;; Comparing version strings. (defvar version-separator "." "*Specify the string used to separate the version elements.
--- a/lisp/term.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/term.el Tue Nov 01 06:23:08 2005 +0000 @@ -1221,6 +1221,7 @@ ;; Which would be better: "\e[A" or "\eOA"? readline accepts either. ;; For my configuration it's definitely better \eOA but YMMV. -mm ;; For example: vi works with \eOA while elm wants \e[A ... +;;; (terminfo: kcuu1, kcud1, kcuf1, kcub1, khome, kend, kpp, knp, kdch1, kbs) (defun term-send-up () (interactive) (term-send-raw-string "\eOA")) (defun term-send-down () (interactive) (term-send-raw-string "\eOB")) (defun term-send-right () (interactive) (term-send-raw-string "\eOC")) @@ -2819,7 +2820,7 @@ (1- (- term-width (term-current-column))))) (when (= term-width (term-current-column)) (term-move-columns -1)))) - ((eq char ?\r) + ((eq char ?\r) ;; (terminfo: cr) ;; Optimize CRLF at end of buffer: (cond ((and (< (setq temp (1+ i)) str-length) (eq (aref str temp) ?\n) @@ -2835,7 +2836,7 @@ (t ;; Not followed by LF or can't optimize: (term-vertical-motion 0) (setq term-current-column term-start-line-column)))) - ((eq char ?\n) + ((eq char ?\n) ;; (terminfo: cud1, ind) (if (not (and term-kill-echo-list (term-check-kill-echo-list))) (term-down 1 t))) @@ -2846,16 +2847,15 @@ ((eq char 0)) ; NUL: Do nothing ((eq char ?\016)) ; Shift Out - ignored ((eq char ?\017)) ; Shift In - ignored - ((eq char ?\^G) - (beep t)) ; Bell + ((eq char ?\^G) ;; (terminfo: bel) + (beep t)) ((eq char ?\032) (let ((end (string-match "\r?$" str i))) (if end (funcall term-command-hook (prog1 (substring str (1+ i) end) (setq i (match-end 0)))) - (setq term-terminal-parameter - (substring str i)) + (setq term-terminal-parameter (substring str i)) (setq term-terminal-state 4) (setq i str-length)))) (t ; insert char FIXME: Should never happen @@ -3072,7 +3072,7 @@ ((eq parameter 5) (setq term-ansi-current-bold t)) -;;; Reverse +;;; Reverse (terminfo: smso) ((eq parameter 7) (setq term-ansi-current-reverse t)) @@ -3080,11 +3080,11 @@ ((eq parameter 8) (setq term-ansi-current-invisible t)) -;;; Reset underline (i.e. terminfo rmul) +;;; Reset underline (terminfo: rmul) ((eq parameter 24) (setq term-ansi-current-underline nil)) -;;; Reset reverse (i.e. terminfo rmso) +;;; Reset reverse (terminfo: rmso) ((eq parameter 27) (setq term-ansi-current-reverse nil)) @@ -3189,7 +3189,7 @@ (defun term-handle-ansi-escape (proc char) (cond - ((or (eq char ?H) ; cursor motion (terminfo: cup) + ((or (eq char ?H) ; cursor motion (terminfo: cup,home) ;; (eq char ?f) ; xterm seems to handle this sequence too, not ;; needed for now ) @@ -3211,7 +3211,7 @@ ;; \E[B - cursor down (terminfo: cud) ((eq char ?B) (term-down (max 1 term-terminal-parameter) t)) - ;; \E[C - cursor right (terminfo: cuf) + ;; \E[C - cursor right (terminfo: cuf, cuf1) ((eq char ?C) (term-move-columns (max 1 @@ -3230,14 +3230,14 @@ ;; \E[L - insert lines (terminfo: il, il1) ((eq char ?L) (term-insert-lines (max 1 term-terminal-parameter))) - ;; \E[M - delete lines + ;; \E[M - delete lines (terminfo: dl, dl1) ((eq char ?M) (term-delete-lines (max 1 term-terminal-parameter))) - ;; \E[P - delete chars + ;; \E[P - delete chars (terminfo: dch, dch1) ((eq char ?P) (term-delete-chars (max 1 term-terminal-parameter))) - ;; \E[@ - insert spaces - ((eq char ?@) ;; (terminfo: ich) + ;; \E[@ - insert spaces (terminfo: ich) + ((eq char ?@) (term-insert-spaces (max 1 term-terminal-parameter))) ;; \E[?h - DEC Private Mode Set ((eq char ?h)
--- a/lisp/term/x-win.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/term/x-win.el Tue Nov 01 06:23:08 2005 +0000 @@ -1513,6 +1513,36 @@ (#x5f1 . ?,Gq(B) (#x5f2 . ?,Gr(B) ;; Cyrillic + (#x680 . ?$,1)R(B) + (#x681 . ?$,1)V(B) + (#x682 . ?$,1)Z(B) + (#x683 . ?$,1)\(B) + (#x684 . ?$,1)b(B) + (#x685 . ?$,1)n(B) + (#x686 . ?$,1)p(B) + (#x687 . ?$,1)r(B) + (#x688 . ?$,1)v(B) + (#x689 . ?$,1)x(B) + (#x68a . ?$,1)z(B) + (#x68c . ?$,1*8(B) + (#x68d . ?$,1*B(B) + (#x68e . ?$,1*H(B) + (#x68f . ?$,1*N(B) + (#x690 . ?$,1)S(B) + (#x691 . ?$,1)W(B) + (#x692 . ?$,1)[(B) + (#x693 . ?$,1)](B) + (#x694 . ?$,1)c(B) + (#x695 . ?$,1)o(B) + (#x696 . ?$,1)q(B) + (#x697 . ?$,1)s(B) + (#x698 . ?$,1)w(B) + (#x699 . ?$,1)y(B) + (#x69a . ?$,1){(B) + (#x69c . ?$,1*9(B) + (#x69d . ?$,1*C(B) + (#x69e . ?$,1*I(B) + (#x69f . ?$,1*O(B) (#x6a1 . ?,Lr(B) (#x6a2 . ?,Ls(B) (#x6a3 . ?,Lq(B)
--- a/lisp/textmodes/flyspell.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/textmodes/flyspell.el Tue Nov 01 06:23:08 2005 +0000 @@ -1333,7 +1333,7 @@ ;; Loop over incorrect words. (while (re-search-forward "\\([^\n]+\\)\n" (point-max) t) ;; Bind WORD to the next one. - (let ((word (match-string 1))) + (let ((word (match-string 1)) (wordpos (point))) ;; Here there used to be code to see if WORD is the same ;; as the previous iteration, and count the number of consecutive ;; identical words, and the loop below would search for that many. @@ -1350,11 +1350,15 @@ (with-current-buffer flyspell-large-region-buffer (goto-char flyspell-large-region-beg) (let ((keep t)) - (while (and keep - (search-forward word flyspell-large-region-end t)) - (goto-char (- (point) 1)) - (setq keep (flyspell-word))) - (setq flyspell-large-region-beg (point)))))) + (while keep + (if (search-forward word + flyspell-large-region-end t) + (progn + (setq flyspell-large-region-beg (point)) + (goto-char (- (point) 1)) + (setq keep (flyspell-word))) + (error "Bug: misspelled word `%s' (output pos %d) not found in buffer" + word wordpos))))))) ;; we are done (if flyspell-issue-message-flag (message "Spell Checking completed."))) ;; Kill and forget the buffer with the list of incorrect words. @@ -1376,6 +1380,7 @@ ;; this is done, we can start checking... (if flyspell-issue-message-flag (message "Checking region...")) (set-buffer curbuf) + (ispell-check-version) (let ((c (apply 'call-process-region beg end ispell-program-name @@ -1388,6 +1393,8 @@ (if ispell-local-dictionary (setq ispell-dictionary ispell-local-dictionary)) (setq args (ispell-get-ispell-args)) + (if (eq ispell-parser 'tex) + (setq args (cons "-t" args))) (if ispell-dictionary ; use specified dictionary (setq args (append (list "-d" ispell-dictionary) args)))
--- a/lisp/textmodes/ispell.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/textmodes/ispell.el Tue Nov 01 06:23:08 2005 +0000 @@ -445,7 +445,7 @@ (defvar ispell-local-dictionary-overridden nil "Non-nil means the user has explicitly set this buffer's Ispell dictionary.") -(make-variable-buffer-local 'ispell-local-dictionary) +(make-variable-buffer-local 'ispell-local-dictionary-overridden) (defcustom ispell-local-dictionary nil "If non-nil, the dictionary to be used for Ispell commands in this buffer. @@ -721,7 +721,7 @@ (defvar ispell-aspell-supports-utf8 nil "Non-nil means to try to automatically find aspell dictionaries. -This is set to t in ispell-check-version for aspell >= 0.60. +This is set to t in `ispell-check-version' for aspell >= 0.60. Earlier aspell versions do not consistently support UTF-8. Handling this would require some extra guessing in `ispell-aspell-find-dictionary'.") @@ -894,13 +894,22 @@ "Find Aspell's dictionaries, and record in `ispell-dictionary-alist'." (unless ispell-really-aspell (error "This function only works with aspell")) - (let ((dictionaries - (split-string - (with-temp-buffer - (call-process ispell-program-name nil t nil "dicts") - (buffer-string))))) - (setq ispell-dictionary-alist - (mapcar #'ispell-aspell-find-dictionary dictionaries)) + (let* ((dictionaries + (split-string + (with-temp-buffer + (call-process ispell-program-name nil t nil "dicts") + (buffer-string)))) + ;; Search for the named dictionaries. + (found + (delq nil + (mapcar #'ispell-aspell-find-dictionary dictionaries)))) + ;; Merge into FOUND any elements from the standard ispell-dictionary-alist + ;; which have no element in FOUND at all. + (dolist (dict ispell-dictionary-alist) + (unless (assoc (car dict) found) + (setq found (nconc found (list dict))))) + (setq ispell-dictionary-alist found) + (ispell-aspell-add-aliases) ;; Add a default entry (let* ((english-dict (assoc "en" ispell-dictionary-alist)) @@ -922,6 +931,9 @@ (car (split-string (buffer-string))))) (defun ispell-aspell-find-dictionary (dict-name) + ;; This returns nil if the data file does not exist. + ;; Can someone please explain the return value format when the + ;; file does exist -- rms? (let* ((lang ;; Strip out region, variant, etc. (and (string-match "^[[:alpha:]]+" dict-name) (match-string 0 dict-name))) @@ -931,35 +943,37 @@ (ispell-get-aspell-config-value "data-dir"))) "/" lang ".dat")) otherchars) - ;; This file really should exist; there is no sensible recovery. - (with-temp-buffer - (insert-file-contents data-file) - ;; There is zero or one line with special characters declarations. - (when (search-forward-regexp "^special" nil t) - (let ((specials (split-string - (buffer-substring (point) - (progn (end-of-line) (point)))))) - ;; The line looks like: special ' -** - -** . -** : -*- - ;; -** means that this character - ;; - doesn't appear at word start - ;; * may appear in the middle of a word - ;; * may appear at word end - ;; `otherchars' is about the middle case. - (while specials - (when (eq (aref (cadr specials) 1) ?*) - (push (car specials) otherchars)) - (setq specials (cddr specials)))))) - (list dict-name - "[[:alpha:]]" - "[^[:alpha:]]" - (regexp-opt otherchars) - t ; We can't tell, so set this to t - (list "-d" dict-name "--encoding=utf-8") - nil ; aspell doesn't support this - ;; Here we specify the encoding to use while communicating with - ;; aspell. This doesn't apply to command line arguments, so - ;; just don't pass words to spellcheck as arguments... - 'utf-8))) + (condition-case () + (with-temp-buffer + (insert-file-contents data-file) + ;; There is zero or one line with special characters declarations. + (when (search-forward-regexp "^special" nil t) + (let ((specials (split-string + (buffer-substring (point) + (progn (end-of-line) (point)))))) + ;; The line looks like: special ' -** - -** . -** : -*- + ;; -** means that this character + ;; - doesn't appear at word start + ;; * may appear in the middle of a word + ;; * may appear at word end + ;; `otherchars' is about the middle case. + (while specials + (when (eq (aref (cadr specials) 1) ?*) + (push (car specials) otherchars)) + (setq specials (cddr specials))))) + (list dict-name + "[[:alpha:]]" + "[^[:alpha:]]" + (regexp-opt otherchars) + t ; We can't tell, so set this to t + (list "-d" dict-name "--encoding=utf-8") + nil ; aspell doesn't support this + ;; Here we specify the encoding to use while communicating with + ;; aspell. This doesn't apply to command line arguments, so + ;; just don't pass words to spellcheck as arguments... + 'utf-8)) + (file-error + nil)))) (defun ispell-aspell-add-aliases () "Find aspell's dictionary aliases and add them to `ispell-dictionary-alist'."
--- a/lisp/textmodes/org.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/textmodes/org.el Tue Nov 01 06:23:08 2005 +0000 @@ -9574,13 +9574,13 @@ (let ((user user-full-name) (calname "something") (name (or name "unknown")) - (timezone "FIXME")) + (timezone "Europe/Amsterdam")) ;; FIXME: How to get the real timezone? (princ (format "BEGIN:VCALENDAR VERSION:2.0 X-WR-CALNAME:%s PRODID:-//%s//Emacs with Org-mode//EN -X-WR-TIMEZONE:Europe/Amsterdam +X-WR-TIMEZONE:Europe/%s CALSCALE:GREGORIAN\n" name user timezone)))) (defun org-finish-icalendar-file ()
--- a/lisp/textmodes/paragraphs.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/textmodes/paragraphs.el Tue Nov 01 06:23:08 2005 +0000 @@ -159,7 +159,7 @@ :group 'paragraphs :type '(choice regexp (const :tag "Use default value" nil))) -(defcustom sentence-end-base "[.?!][]\"'\xd0c9\x5397d)}]*" +(defcustom sentence-end-base "[.?!][]\"'$B!I$,1r}(B)}]*" "*Regexp matching the basic end of a sentence, not including following space." :group 'paragraphs :type 'string @@ -502,9 +502,9 @@ (interactive "*p") (transpose-subr 'forward-sentence arg)) -;;; Local Variables: -;;; coding: iso-2022-7bit -;;; End: +;; Local Variables: +;; coding: iso-2022-7bit +;; End: -;;; arch-tag: e727eb1a-527a-4464-b9d7-9d3ec0d1a575 +;; arch-tag: e727eb1a-527a-4464-b9d7-9d3ec0d1a575 ;;; paragraphs.el ends here
--- a/lisp/textmodes/texinfo.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/textmodes/texinfo.el Tue Nov 01 06:23:08 2005 +0000 @@ -1,4 +1,4 @@ -;;; texinfo.el --- major mode for editing Texinfo files +;;; texinfo.el --- major mode for editing Texinfo files -*- coding: iso-2022-7bit -*- ;; Copyright (C) 1985, 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1997, ;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. @@ -595,7 +595,7 @@ (setq paragraph-start (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-start)) (make-local-variable 'sentence-end-base) (setq sentence-end-base - "\\(@\\(end\\)?dots{}\\|[.?!]\\)[]\"'\xd0c9\x5397d)}]*") + "\\(@\\(end\\)?dots{}\\|[.?!]\\)[]\"'$B!I$,1r}(B)}]*") (make-local-variable 'adaptive-fill-mode) (setq adaptive-fill-mode nil) (make-local-variable 'fill-column) @@ -1059,5 +1059,5 @@ (provide 'texinfo) -;;; arch-tag: 005d7c38-43b9-4b7d-aa1d-aea69bae73e1 +;; arch-tag: 005d7c38-43b9-4b7d-aa1d-aea69bae73e1 ;;; texinfo.el ends here
--- a/lisp/thumbs.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/thumbs.el Tue Nov 01 06:23:08 2005 +0000 @@ -339,6 +339,7 @@ (cond ((string-match ".*\\.jpe?g\\'" img) 'jpeg) ((string-match ".*\\.xpm\\'" img) 'xpm) ((string-match ".*\\.xbm\\'" img) 'xbm) + ((string-match ".*\\.pbm\\'" img) 'pbm) ((string-match ".*\\.gif\\'" img) 'gif) ((string-match ".*\\.bmp\\'" img) 'bmp) ((string-match ".*\\.png\\'" img) 'png)
--- a/lisp/tooltip.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/tooltip.el Tue Nov 01 06:23:08 2005 +0000 @@ -65,37 +65,33 @@ :type 'number :group 'tooltip) -(defcustom tooltip-x-offset nil +(defcustom tooltip-x-offset 5 "X offset, in pixels, for the display of tooltips. The offset is relative to the position of the mouse. It must be chosen so that the tooltip window doesn't contain the mouse -when it pops up. If the value is nil, the default offset is 5 -pixels. +when it pops up. If `tooltip-frame-parameters' includes the `left' parameter, the value of `tooltip-x-offset' is ignored." :tag "X offset" - :type '(choice (const :tag "Default" nil) - (integer :tag "Offset" :value 1)) + :type 'integer :group 'tooltip) -(defcustom tooltip-y-offset nil +(defcustom tooltip-y-offset +40 "Y offset, in pixels, for the display of tooltips. The offset is relative to the position of the mouse. It must be chosen so that the tooltip window doesn't contain the mouse -when it pops up. If the value is nil, the default offset is -10 -pixels. +when it pops up. If `tooltip-frame-parameters' includes the `top' parameter, the value of `tooltip-y-offset' is ignored." :tag "Y offset" - :type '(choice (const :tag "Default" nil) - (integer :tag "Offset" :value 1)) + :type 'integer :group 'tooltip) (defcustom tooltip-frame-parameters '((name . "tooltip") - (internal-border-width . 5) + (internal-border-width . 2) (border-width . 1)) "Frame parameters used for tooltips.
--- a/lisp/vc.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/vc.el Tue Nov 01 06:23:08 2005 +0000 @@ -2061,10 +2061,13 @@ ;; when vc-dired-mode-map is initialized. (set-keymap-parent vc-dired-mode-map dired-mode-map) (add-hook 'dired-after-readin-hook 'vc-dired-hook nil t) - ;; The following is slightly modified from dired.el, + ;; The following is slightly modified from files.el, ;; because file lines look a bit different in vc-dired-mode ;; (the column before the date does not end in a digit). - (set (make-local-variable 'dired-move-to-filename-regexp) + ;; albinus: It should be done in the original declaration. Problem + ;; is the optional empty state-info; otherwise ")" would be good + ;; enough as delimeter. + (set (make-local-variable 'directory-listing-before-filename-regexp) (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)") ;; In some locales, month abbreviations are as short as 2 letters, ;; and they can be followed by ".".
--- a/lisp/whitespace.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/whitespace.el Tue Nov 01 06:23:08 2005 +0000 @@ -518,9 +518,7 @@ ;;;###autoload (defun whitespace-cleanup () "Cleanup the five different kinds of whitespace problems. - -Use \\[describe-function] whitespace-describe to read a summary of the -whitespace problems." +See `whitespace-buffer' docstring for a summary of the problems." (interactive) ;; If this buffer really contains a file, then run, else quit. (whitespace-check-whitespace-mode current-prefix-arg)
--- a/lisp/wid-edit.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/wid-edit.el Tue Nov 01 06:23:08 2005 +0000 @@ -403,10 +403,7 @@ ;; We want to avoid the face with image buttons. (unless (widget-get widget :suppress-face) (overlay-put overlay 'face (widget-apply widget :button-face-get)) - ; Text terminals cannot change mouse pointer shape, so use mouse - ; face instead. - (or (display-graphic-p) - (overlay-put overlay 'mouse-face widget-mouse-face))) + (overlay-put overlay 'mouse-face widget-mouse-face)) (overlay-put overlay 'pointer 'hand) (overlay-put overlay 'follow-link follow-link) (overlay-put overlay 'help-echo help-echo))) @@ -664,11 +661,9 @@ "Move to where you click, and if it is an active field, invoke it." (interactive "e") (mouse-set-point event) - (if (widget-event-point event) - (let* ((pos (widget-event-point event)) - (button (get-char-property pos 'button))) - (if button - (widget-button-click event))))) + (let ((pos (widget-event-point event))) + (if (and pos (get-char-property pos 'button)) + (widget-button-click event)))) ;;; Buttons.
--- a/lisp/widget.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/widget.el Tue Nov 01 06:23:08 2005 +0000 @@ -39,37 +39,37 @@ ;; external libraries call it. We save a kb or two of purespace by ;; dummying-out such definitions generally. (defmacro define-widget-keywords (&rest keys) -;;; ;; Don't use backquote, since that makes trouble trying to -;;; ;; re-bootstrap from just the .el files. -;;; (list 'eval-and-compile -;;; (list 'let (list (list 'keywords (list 'quote keys))) -;;; (list 'while 'keywords -;;; (list 'or (list 'boundp (list 'car 'keywords)) -;;; (list 'set (list 'car 'keywords) (list 'car 'keywords))) -;;; (list 'setq 'keywords (list 'cdr 'keywords))))) + ;; ;; Don't use backquote, since that makes trouble trying to + ;; ;; re-bootstrap from just the .el files. + ;; (list 'eval-and-compile + ;; (list 'let (list (list 'keywords (list 'quote keys))) + ;; (list 'while 'keywords + ;; (list 'or (list 'boundp (list 'car 'keywords)) + ;; (list 'set (list 'car 'keywords) (list 'car 'keywords))) + ;; (list 'setq 'keywords (list 'cdr 'keywords))))) ) -;;;(define-widget-keywords :documentation-indent -;;; :complete-function :complete :button-overlay -;;; :field-overlay -;;; :documentation-shown :button-prefix -;;; :button-suffix :mouse-down-action :glyph-up :glyph-down :glyph-inactive -;;; :prompt-internal :prompt-history :prompt-match -;;; :prompt-value :deactivate :active -;;; :inactive :activate :sibling-args :delete-button-args -;;; :insert-button-args :append-button-args :button-args -;;; :tag-glyph :off-glyph :on-glyph :valid-regexp -;;; :secret :sample-face :sample-face-get :case-fold -;;; :create :convert-widget :format :value-create :offset :extra-offset -;;; :tag :doc :from :to :args :value :action -;;; :value-set :value-delete :match :parent :delete :menu-tag-get -;;; :value-get :choice :void :menu-tag :on :off :on-type :off-type -;;; :notify :entry-format :button :children :buttons :insert-before -;;; :delete-at :format-handler :widget :value-pos :value-to-internal -;;; :indent :size :value-to-external :validate :error :directory -;;; :must-match :type-error :value-inline :inline :match-inline :greedy -;;; :button-face-get :button-face :value-face :keymap :entry-from -;;; :entry-to :help-echo :documentation-property :tab-order) +;;(define-widget-keywords :documentation-indent +;; :complete-function :complete :button-overlay +;; :field-overlay +;; :documentation-shown :button-prefix +;; :button-suffix :mouse-down-action :glyph-up :glyph-down :glyph-inactive +;; :prompt-internal :prompt-history :prompt-match +;; :prompt-value :deactivate :active +;; :inactive :activate :sibling-args :delete-button-args +;; :insert-button-args :append-button-args :button-args +;; :tag-glyph :off-glyph :on-glyph :valid-regexp +;; :secret :sample-face :sample-face-get :case-fold +;; :create :convert-widget :format :value-create :offset :extra-offset +;; :tag :doc :from :to :args :value :action +;; :value-set :value-delete :match :parent :delete :menu-tag-get +;; :value-get :choice :void :menu-tag :on :off :on-type :off-type +;; :notify :entry-format :button :children :buttons :insert-before +;; :delete-at :format-handler :widget :value-pos :value-to-internal +;; :indent :size :value-to-external :validate :error :directory +;; :must-match :type-error :value-inline :inline :match-inline :greedy +;; :button-face-get :button-face :value-face :keymap :entry-from +;; :entry-to :help-echo :documentation-property :tab-order) (defun define-widget (name class doc &rest args) "Define a new widget type named NAME from CLASS. @@ -85,6 +85,7 @@ * (apply 'widget-create CLASS ARGS) The third argument DOC is a documentation string for the widget." + (declare (doc-string 3)) (put name 'widget-type (cons class args)) (put name 'widget-documentation doc) name) @@ -96,5 +97,5 @@ (provide 'widget) -;;; arch-tag: 932c71a3-9aeb-4827-a293-8b88b26d5c58 +;; arch-tag: 932c71a3-9aeb-4827-a293-8b88b26d5c58 ;;; widget.el ends here
--- a/lisp/window.el Sat Oct 29 11:50:12 2005 +0000 +++ b/lisp/window.el Tue Nov 01 06:23:08 2005 +0000 @@ -192,6 +192,18 @@ (defalias 'some-window 'get-window-with-predicate) +;; This should probably be written in C (i.e., without using `walk-windows'). +(defun get-buffer-window-list (buffer &optional minibuf frame) + "Return list of all windows displaying BUFFER, or nil if none. +BUFFER can be a buffer or a buffer name. +See `walk-windows' for the meaning of MINIBUF and FRAME." + (let ((buffer (if (bufferp buffer) buffer (get-buffer buffer))) windows) + (walk-windows (function (lambda (window) + (if (eq (window-buffer window) buffer) + (setq windows (cons window windows))))) + minibuf frame) + windows)) + (defun minibuffer-window-active-p (window) "Return t if WINDOW (a minibuffer window) is now active." (eq window (active-minibuffer-window)))
--- a/lispref/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/lispref/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,21 @@ +2005-10-27 Masatake YAMATO <jet@gyve.org> + + * minibuf.texi (Completion Commands): + Write about new optional argument for `display-completion-list'. + +2005-10-23 Richard M. Stallman <rms@gnu.org> + + * display.texi (Overlay Arrow): Clarify about local bindings of + overlay-arrow-position. + +2005-10-22 Eli Zaretskii <eliz@gnu.org> + + * internals.texi (Building Emacs): Fix last change. + +2005-10-22 Richard M. Stallman <rms@gnu.org> + + * internals.texi (Building Emacs): Document eval-at-startup. + 2005-10-21 Richard M. Stallman <rms@gnu.org> * loading.texi (Where Defined): load-history contains abs file names.
--- a/lispref/display.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/lispref/display.texi Tue Nov 01 06:23:08 2005 +0000 @@ -2922,9 +2922,12 @@ usually begins with indentation, normally nothing significant is overwritten. -The overlay string is displayed only in the buffer that this marker -points into. Thus, only one buffer can have an overlay arrow at any -given time. +The overlay-arrow string is displayed in any given buffer if the value +of @code{overlay-arrow-position} in that buffer points into that +buffer. Thus, it works to can display multiple overlay arrow strings +by creating buffer-local bindings of @code{overlay-arrow-position}. +However, it is usually cleaner to use +@code{overlay-arrow-variable-list} to achieve this result. @c !!! overlay-arrow-position: but the overlay string may remain in the display @c of some other buffer until an update is required. This should be fixed @c now. Is it?
--- a/lispref/internals.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/lispref/internals.texi Tue Nov 01 06:23:08 2005 +0000 @@ -117,6 +117,18 @@ normal features for your site, do it with @file{default.el}, so that users can override your changes if they wish. @xref{Startup Summary}. + In a package that can be preloaded, it is sometimes useful to +specify a computation to be done when Emacs subsequently starts up. +For this, use @code{eval-at-startup}: + +@defmac eval-at-startup body@dots{} +This evaluates the @var{body} forms, either immediately if running in +an Emacs that has already started up, or later when Emacs does start +up. Since the value of the @var{body} forms is not necessarily +available when the @code{eval-at-startup} form is run, that form +always returns @code{nil}. +@end defmac + @defun dump-emacs to-file from-file @cindex unexec This function dumps the current state of Emacs into an executable file
--- a/lispref/minibuf.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/lispref/minibuf.texi Tue Nov 01 06:23:08 2005 +0000 @@ -949,7 +949,7 @@ @samp{*Completions*}. @end deffn -@defun display-completion-list completions +@defun display-completion-list completions &optional common-substring This function displays @var{completions} to the stream in @code{standard-output}, usually a buffer. (@xref{Read and Print}, for more information about streams.) The argument @var{completions} is normally @@ -960,14 +960,22 @@ the two strings is the actual completion, the second string serves as annotation. -This function is called by @code{minibuffer-completion-help}. The +@var{common-substring} represents a string common prefix between all +completions. @var{common-substring} is used to put faces on +@samp{*Completions*} to enhance visual feedback of the buffer; +@code{display-completion-list} use faces to highlight what all completions +have in common and where they begin to differ. @var{common-substring} +specifies the common part. + +This function is called by @code{minibuffer-completion-help}. The most common way to use it is together with @code{with-output-to-temp-buffer}, like this: @example (with-output-to-temp-buffer "*Completions*" (display-completion-list - (all-completions (buffer-string) my-alist))) + (all-completions (buffer-string) my-alist) + (buffer-string))) @end example @end defun
--- a/mac/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/mac/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,14 @@ +2005-10-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> + + * INSTALL: Replace `Mac OS 8/9' with `Mac OS Classic'. Add + `FIXME' to descriptions about Metrowerks CodeWarrior. Remove + obsolete description about 512MB limit and icon on Mac OS Classic. + Add description about flags for experimental features. + + * README: Replace `Mac OS 8/9' with `Mac OS Classic'. Add `FIXME' + to descriptions about Metrowerks CodeWarrior. Remove obsolete + descriptions about C-g and supported image types. + 2005-10-20 Bryan D. O'Connor <bryan@lunch.org> (tiny change) * make-package: Add a --compressed-dist option to compress info
--- a/mac/INSTALL Sat Oct 29 11:50:12 2005 +0000 +++ b/mac/INSTALL Tue Nov 01 06:23:08 2005 +0000 @@ -1,4 +1,4 @@ -* BUILDING EMACS ON MAC OS 8/9 AND MAC OS X -*- outline -*- +* BUILDING EMACS ON MAC OS Classic AND MAC OS X -*- outline -*- Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. @@ -157,10 +157,11 @@ For usage of other options, use the --help option. -* BUILDING EMACS ON MAC OS 8/9 +* BUILDING EMACS ON MAC OS Classic -You can use either Metrowerks CodeWarrior Pro 6 or MPW-GM (Aug. 2001) -to build Emacs. MPW-GM can be downloaded free of charge from Apple. +FIXME: You can use either Metrowerks CodeWarrior Pro 6 or MPW-GM +(Aug. 2001) to build Emacs. MPW-GM can be downloaded free of charge +from Apple. In either case, you will need MPW-GM to build the make-docfile utility and to generate the doc string file DOC. @@ -170,14 +171,14 @@ Preferences->Cross Platform->Convert text files to Macintosh format to "Never". Otherwise the compiled Lisp files will be corrupted. -(Optional) A subset of the fonts from the GNU intlfonts-1.2 +FIXME: (Optional) A subset of the fonts from the GNU intlfonts-1.2 distribution converted to NFNT format can be obtained from ftp://mac-emacs.sourceforge.net/pub/mac-emacs/GNU-fonts.smi.bin To build Emacs in the MPW Shell, simply set the directory to ...:emacs:mac: and build the target Emacs of the make file -makefile.mpw. I.e., execute the commands +makefile.MPW. I.e., execute the commands make Emacs -f makefile.MPW > Emacs.MakeScript Emacs.MakeScript @@ -186,47 +187,38 @@ non-Carbon version can also be created by replacing all the occurrences of `Emacs' above with `NonCarbon'. Not that the non-Carbon version does not support some features such as file -dialogs, drag-and-drop, and unicode menus. +dialogs, drag-and-drop, and Unicode menus. -To build Emacs using CodeWarrior, start up the CodeWarrior IDE, choose -File->Import Project... and select the file cw6-mcp.xml. When +FIXME: To build Emacs using CodeWarrior, start up the CodeWarrior IDE, +choose File->Import Project... and select the file cw6-mcp.xml. When prompted to save the project, navigate to same directory as the file cw6-mcp.xml, name the project emacs-cw6.mcp, and save it there. Then choose Project->Make. Note that this does not build the DOC file. To do so, use MPW and build the target "Doc" in makefile.MPW. -Once built, the Emacs application (Emacs CW or Emacs MPW) can be -launched where it is created. +FIXME: Once built, the Emacs application (Emacs CW or Emacs MPW) can +be launched where it is created. -To build an optimized version of Emacs in CodeWarrior, change the -value in the Emacs Settings->Code Generation->Global Optimization +FIXME: To build an optimized version of Emacs in CodeWarrior, change +the value in the Emacs Settings->Code Generation->Global Optimization dialog. To build a version for profiling, check the Profiler Information box in the Emacs Settings->Code Generation->PPC Processor dialog and include the Profiler PPC.Lib library. * NOTES -Emacs should build and run on a PowerMac running Mac OS 8.6 - 10.4. +Emacs should build and run on a PowerMac running Mac OS 8.6 - 9.2 (but +only tested on 9.2.2), and Mac OS X 10.1 - 10.4. You will need around 100 MB of disk space for the source files and intermediate files. -It will not run on machines running Mac OS 8/9 with more than 512 MB -of physical or virtual memory. It does not have this restriction when -it is run under Mac OS X. But the usual 128MB buffer limit of a -32-bit Emacs still exists. - -Under Mac OS 8/9, there is no support for building the LEIM directory. -However, it can be built on Mac OS X or another platform and -transferred to the Mac. - -On Mac OS 8/9, to use the same icon as when Emacs is built on Windows -NT, define GNU_ICON in mac/src/Emacs.r. Currently Emacs uses a -generic application icon on the Mac OS X. A better looking one is -coming soon. +Under Mac OS Classic, there is no support for building the LEIM +directory. However, it can be built on Mac OS X or another platform +and transferred to the Mac. On Mac OS X, installing the emacs files in /usr can cause issues with -system sofware updates possibly overwriting the distribution. If this +system software updates possibly overwriting the distribution. If this is a concern, as it should be in normal binary distributions, please use /usr/local as the prefix for installation. @@ -237,4 +229,16 @@ with PowerPC builds of Emacs; you will have to recompile for Intel. Therefore, builds of Emacs are architecture specific. +There are some compile-time flags that enable experimental features. +Please use them at your own risk after reading the corresponding +threads in the emacs-devel@gnu.org archive. + + USE_ATSUI: Enable ATSUI (Apple Type Services for Unicode Imaging) + support. Available on Mac OS 9/Carbon and Mac OS X. + http://lists.gnu.org/archive/html/emacs-devel/2005-10/msg00005.html + + SELECT_USE_CFSOCKET: Avoid polling in sys_select (in src/mac.c). + Available on Mac OS X. + http://lists.gnu.org/archive/html/emacs-devel/2004-12/msg00789.html + Enjoy!
--- a/mac/README Sat Oct 29 11:50:12 2005 +0000 +++ b/mac/README Tue Nov 01 06:23:08 2005 +0000 @@ -1,4 +1,4 @@ -Emacs for Mac OS 8/9 and Mac OS X +Emacs for Mac OS Classic and Mac OS X Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. @@ -14,40 +14,34 @@ changed them. This directory contains the files needed to build Emacs on the Mac OS -8/9 and Mac OS X. Many of the major features of the Unix version are -supported: multiple frames, colors, scroll bars, menu bars, use of the -mouse, fontsets, international characters, input methods, and coding -systems. +Classic and Mac OS X. Many of the major features of the Unix version +are supported: multiple frames, colors, scroll bars, menu bars, use of +the mouse, fontsets, international characters, input methods, and +coding systems. Mac OS specific support includes document drag-and-drop in the Finder, transfer of text to and from other applications via the clipboard, and sending AppleScript commands to other applications from Emacs. -The following are not supported on Mac OS 8/9 : unexec (dump-emacs), +The following are not supported on Mac OS Classic: unexec (dump-emacs), asynchronous subprocesses (start-process), and networking (open-network-stream). These features work fine on Mac OS X. There is basic support for synchronous subprocesses (call-process) on -Mac OS 8/9 although Unix commands that are used will need to be -ported. +Mac OS Classic (non-Carbon build only) although Unix commands that are +used will need to be ported. -Metrowerks CodeWarrior Pro 6 or MPW-GM (August 2001) can be used to -build Emacs on the Mac OS 8/9. On Mac OS X, Emacs can be built using -the Developer Tools. See the INSTALL file in this directory for -instructions on building Emacs. +FIXME: Metrowerks CodeWarrior Pro 6 or MPW-GM (August 2001) can be +used to build Emacs on the Mac OS Classic. On Mac OS X, Emacs can be +built using the Developer Tools. See the INSTALL file in this +directory for instructions on building Emacs. Read the Mac OS section of the on-line help to find out about how to use Emacs on the Mac. A number of things do not work yet: -+ Emacs does not respond correctly to C-g under certain circumstances. - Sending the Emacs process a SIGINT externally will cause it - to interrupt. This is due to the architecture of OSX's - Window Manager. - -+ Support for certain image types (such as XPM) is not as extensive as - on other plaforms. ++ Support for PostScript image type is not available. + Incorporate Apple's wrappers to be able to create a universal binary that unexecs on first run for the given architecture.
--- a/man/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/man/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,42 @@ +2005-10-27 Jay Belanger <belanger@truman.edu> + + * calc.texi (Predefined Units): Fix the symbol for a TeX points, + mention other TeX-related units. + +2005-10-25 Nick Roberts <nickrob@snap.net.nz> + + * building.texi (GDB Graphical Interface): Describe + gdb-mouse-until. + +2005-10-23 Richard M. Stallman <rms@gnu.org> + + * custom.texi (Init File): Recommend when to use site-start.el. + +2005-10-23 Lars Hansen <larsh@soem.dk> + + * dired-x.texi (Miscellaneous Commands): Replace + dired-do-relative-symlink by dired-do-relsymlink and + dired-do-relative-symlink-regexp by dired-do-relsymlink-regexp. + +2005-10-23 Jay Belanger <belanger@truman.edu> + + * calc.texi (Predefined Units): Use `alpha' for the fine structure + constant. + +2005-10-23 Michael Albinus <michael.albinus@gmx.de> + + * faq.texi (Bugs and problems): Replace + `dired-move-to-filename-regexp' by + `directory-listing-before-filename-regexp'. + +2005-10-22 Eli Zaretskii <eliz@gnu.org> + + * newsticker.texi (UPDATED): Set value. + +2005-10-17 Katsumi Yamaoka <yamaoka@jpl.org> + + * gnus.texi (Document Groups): Remove duplicate item. + 2005-10-21 Juri Linkov <juri@jurta.org> * custom.texi (Examining): Mention accessing the old variable
--- a/man/building.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/man/building.texi Tue Nov 01 06:23:08 2005 +0000 @@ -754,14 +754,17 @@ interface where you view and control the program's data using Emacs windows. You can still interact with GDB through the GUD buffer, but the point of this mode is that you can do it through menus and clicks, -without needing to know GDB commands. For example, you can click -@kbd{Mouse-1} on a line of the source buffer, in the fringe or display -margin, to set a breakpoint there. If a breakpoint already exists on -that line, this action will remove it -(@code{gdb-mouse-set-clear-breakpoint}). Where Emacs uses the margin -to display breakpoints, it is also possible to enable or disable them -when you click @kbd{Mouse-3} there -(@code{gdb-mouse-toggle-breakpoint}). +without needing to know GDB commands. For example, you can click +@kbd{Mouse-1} in the fringe or display margin of a source buffer to +set a breakpoint there and, on a graphical display, a red bullet will +appear. If a breakpoint already exists on that line, this action will +remove it (@code{gdb-mouse-set-clear-breakpoint}). You can also +enable or disable a breakpoint by clicking @kbd{Mouse-3} on the +bullet. If you drag the debugger arrow in the fringe with +@kbd{Mouse-1}, execution will continue to where you release the button +(@code{gdb-mouse-until}). Alternatively, you can click @kbd{Mouse-2} +at some point in the fringe of this buffer and execution will advance +to there. @vindex gud-gdb-command-name @findex gdba
--- a/man/calc.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/man/calc.texi Tue Nov 01 06:23:08 2005 +0000 @@ -27991,9 +27991,17 @@ @end ifinfo The unit @code{pt} stands for pints; the name @code{point} stands for -a typographical point, defined by @samp{72 point = 1 in}. There is -also @code{tpt}, which stands for a printer's point as defined by the -@TeX{} typesetting system: @samp{72.27 tpt = 1 in}. +a typographical point, defined by @samp{72 point = 1 in}. This is +slightly different than the point defined by the American Typefounder's +Association in 1886, but the point used by Calc has become standard +largely due to its use by the PostScript page description language. +There is also @code{texpt}, which stands for a printer's point as +defined by the @TeX{} typesetting system: @samp{72.27 texpt = 1 in}. +Other units used by @TeX{} are available; they are @code{texpc} (a pica), +@code{texbp} (a ``big point'', equal to a standard point which is larger +than the point used by @TeX{}), @code{texdd} (a Didot point), +@code{texcc} (a Cicero) and @code{texsp} (a scaled @TeX{} point, +all dimensions representable in @TeX{} are multiples of this value). The unit @code{e} stands for the elementary (electron) unit of charge; because algebra command could mistake this for the special constant @@ -28019,7 +28027,7 @@ in its normal terms, and @kbd{u b} expresses the definition in base units. -Two units, @code{pi} and @code{fsc} (the fine structure constant, +Two units, @code{pi} and @code{alpha} (the fine structure constant, approximately @mathit{1/137}) are dimensionless. The units simplification commands simply treat these names as equivalent to their corresponding values. However you can, for example, use @kbd{u c} to convert a pure
--- a/man/custom.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/man/custom.texi Tue Nov 01 06:23:08 2005 +0000 @@ -2008,7 +2008,10 @@ finds this file via the standard search path for Lisp libraries. Emacs loads this library before it loads your init file. To inhibit loading of this library, use the option @samp{--no-site-file}. -@xref{Initial Options}. +@xref{Initial Options}. We recommend against using +@file{site-start.el} for changes that some users may not like. It is +better to put them in @file{default.el}, so that users can more easily +override them. You can place @file{default.el} and @file{site-start.el} in any of the directories which Emacs searches for Lisp libraries. The variable
--- a/man/dired-x.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/man/dired-x.texi Tue Nov 01 06:23:08 2005 +0000 @@ -1200,10 +1200,10 @@ If the variable @code{dired-bind-man} is @code{nil}, @code{dired-man} will not be bound to @kbd{N}. -@item dired-do-relative-symlink +@item dired-do-relsymlink @cindex Relative symbolic links. @kindex Y -@findex dired-do-relative-symlink +@findex dired-do-relsymlink Bound to @kbd{Y}. Relative symlink all marked (or next ARG) files into a directory, or make a relative symbolic link to the current file. This creates relative symbolic links like @@ -1219,9 +1219,9 @@ foo -> /ugly/path/that/may/change/any/day/bar/foo @end example -@item dired-do-relative-symlink-regexp +@item dired-do-relsymlink-regexp @kindex %Y -@findex dired-do-relative-symlink-regexp +@findex dired-do-relsymlink-regexp Bound to @kbd{%Y}. Relative symlink all marked files containing @var{regexp} to @var{newname}. See functions @code{dired-do-rename-regexp} and @code{dired-do-relsymlink} for more
--- a/man/faq.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/man/faq.texi Tue Nov 01 06:23:08 2005 +0000 @@ -3228,7 +3228,7 @@ be done by setting the locale. See your OS manual for more information. The second approach involves changing the regular expression used by -dired, @code{dired-move-to-filename-regexp}. +dired, @code{directory-listing-before-filename-regexp}. @c ------------------------------------------------------------ @node Compiling and installing Emacs, Finding Emacs and related packages, Bugs and problems, Top @@ -4634,7 +4634,7 @@ However, in the specific case of @kbd{C-h} and @key{DEL}, you should toggle @code{normal-erase-is-backspace-mode} instead of calling -@code{keyboard-translate}. @inforef{DEL Does Not Delete, DEL Does Not Delete, +@code{keyboard-translate}. @inforef{DEL Does Not Delete, DEL Does Not Delete, emacs}. Keyboard translations are not the same as key bindings in keymaps.
--- a/man/gnus.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/man/gnus.texi Tue Nov 01 06:23:08 2005 +0000 @@ -16753,12 +16753,11 @@ @table @code @cindex Babyl @cindex Rmail mbox - @item babyl The Babyl (Rmail) mail box. + @cindex mbox @cindex Unix mbox - @item mbox The standard Unix mbox file. @@ -16769,13 +16768,9 @@ @item news Several news articles appended into a file. +@cindex rnews batch files @item rnews -@cindex rnews batch files The rnews batch transport format. -@cindex forwarded messages - -@item forward -Forwarded articles. @item nsmail Netscape mail boxes. @@ -16792,6 +16787,7 @@ @item lanl-gov-announce Announcement messages from LANL Gov Announce. +@cindex forwarded messages @item rfc822-forward A message forwarded according to RFC822.
--- a/man/newsticker.texi Sat Oct 29 11:50:12 2005 +0000 +++ b/man/newsticker.texi Tue Nov 01 06:23:08 2005 +0000 @@ -2,6 +2,7 @@ @comment %**start of header @setfilename ../info/newsticker @set VERSION 1.8 +@set UPDATED October 2005 @settitle Newsticker @value{VERSION} @syncodeindex vr cp @syncodeindex fn cp
--- a/src/ChangeLog Sat Oct 29 11:50:12 2005 +0000 +++ b/src/ChangeLog Tue Nov 01 06:23:08 2005 +0000 @@ -1,3 +1,88 @@ +2005-10-27 Chong Yidong <cyd@stupidchicken.com> + + * data.c (Fmake_variable_frame_local): Add clarification to + docstring. + + * fringe.c (update_window_fringes): Handle case where buffer ends + with a newline. + +2005-10-27 Kenichi Handa <handa@m17n.org> + + * coding.h (DECODE_SYSTEM): Fix argument name; name->str. + +2005-10-24 Kenichi Handa <handa@m17n.org> + + * charset.h (charset_mule_unicode_0100_24ff) + (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): + Extern them. + + * charset.c (charset_mule_unicode_0100_24ff) + (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): + New variables. + (Fsetup_special_charsets): Initialize them. + + * xterm.c (handle_one_xevent): Handle keysyms directly mapped to + supported Unicode characters. + +2005-10-25 Jason Rumney <jasonr@gnu.org> + + * w32fns.c (w32_to_x_font): Avoid forcing font widths. + +2005-10-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> + + * image.c [MAC_OS] (image_load_qt_1): Check image size. + Use GraphicsImportGetImageDescription instead of + GraphicsImportGetNaturalBounds. + [MAC_OSX] (image_load_quartz2d): Check image size. + [MAC_OS] (xpm_load_image): Likewise. + + * macterm.c (last_mouse_glyph_frame): New var. + (note_mouse_movement): Say mouse moved if current frame differs + from last_mouse_glyph_frame, and update last_mouse_glyph_frame. + (XTmouse_position): Set last_mouse_glyph_frame. + (XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event. + (mac_draw_string_common) [MAC_OSX && WORDS_BIG_ENDIAN]: Fix typo. + Use EndianU16_BtoN. + (mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls. + (x_per_char_metric, XLoadQueryFont) + [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get + glyph bounds. + (mac_to_x_fontname, mac_do_list_fonts) + (mac_initialize_display_info): Change screen resolutions to 72dpi. + +2005-10-25 Masatake YAMATO <jet@gyve.org> + + * minibuf.c (Fdisplay_completion_list): Small doc fix. + +2005-10-24 Kim F. Storm <storm@cua.dk> + + * xterm.c: Undo 2005-10-23 change. + (last_mouse_glyph_frame): New var. + (note_mouse_movement): Say mouse moved if current frame differs + from last_mouse_glyph_frame, and update last_mouse_glyph_frame. + (XTmouse_position): Set last_mouse_glyph_frame. + (handle_one_xevent): Clear last_mouse_glyph_frame [instead of + last_mouse_glyph] on mouse up/down event. + + * editfns.c (Fcompare_buffer_substrings): Fix last change. + +2005-10-23 Stefan Monnier <monnier@iro.umontreal.ca> + + * editfns.c (Fcompare_buffer_substrings): Handle multibyte chars. + +2005-10-23 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * xterm.c (note_mouse_movement): Always call note_mouse_highlight + so tool tips don't interfere with press on tool bar button. + +2005-10-23 Richard M. Stallman <rms@gnu.org> + + * casetab.c (Fset_case_table): Doc fix. + + * lread.c (build_load_history): Replace STREAM arg with ENTIRE. + (readevalloop): Compute ENTIRE properly. + (syms_of_lread) <load-history>: Doc fix. + 2005-10-21 Richard M. Stallman <rms@gnu.org> * lread.c (Fload): Simplify gcpro structure. @@ -8,8 +93,7 @@ 2005-10-21 Kenichi Handa <handa@m17n.org> - * search.c (boyer_moore): Surround the '||' part of expression in - `if' condition by parentheses explicitly. + * search.c (boyer_moore): Add parens to fix and/or precedence bug. 2005-10-20 Kim F. Storm <storm@cua.dk>
--- a/src/casetab.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/casetab.c Tue Nov 01 06:23:08 2005 +0000 @@ -97,8 +97,9 @@ to their lower-case equivalents. It also has three \"extra\" slots which may be additional char-tables or nil. These slots are called UPCASE, CANONICALIZE and EQUIVALENCES. -UPCASE maps each character to its upper-case equivalent; - if lower and upper case characters are in 1-1 correspondence, +UPCASE maps each non-upper-case character to its upper-case equivalent. + (The value in UPCASE for an upper-case character is never used.) + If lower and upper case characters are in 1-1 correspondence, you may use nil and the upcase table will be deduced from DOWNCASE. CANONICALIZE maps each character to a canonical equivalent; any two characters that are related by case-conversion have the same
--- a/src/charset.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/charset.c Tue Nov 01 06:23:08 2005 +0000 @@ -63,6 +63,9 @@ int charset_latin_jisx0201; /* JISX0201.Roman (Japanese Roman) */ int charset_big5_1; /* Big5 Level 1 (Chinese Traditional) */ int charset_big5_2; /* Big5 Level 2 (Chinese Traditional) */ +int charset_mule_unicode_0100_24ff; +int charset_mule_unicode_2500_33ff; +int charset_mule_unicode_e000_ffff; Lisp_Object Qcharset_table; @@ -1688,6 +1691,12 @@ charset_latin_jisx0201 = charset_id_internal ("latin-jisx0201"); charset_big5_1 = charset_id_internal ("chinese-big5-1"); charset_big5_2 = charset_id_internal ("chinese-big5-2"); + charset_mule_unicode_0100_24ff + = charset_id_internal ("mule-unicode-0100-24ff"); + charset_mule_unicode_2500_33ff + = charset_id_internal ("mule-unicode-2500-33ff"); + charset_mule_unicode_e000_ffff + = charset_id_internal ("mule-unicode-e000-ffff"); return Qnil; }
--- a/src/charset.h Sat Oct 29 11:50:12 2005 +0000 +++ b/src/charset.h Tue Nov 01 06:23:08 2005 +0000 @@ -129,6 +129,9 @@ extern int charset_latin_jisx0201; /* JISX0201.Roman (Japanese Roman) */ extern int charset_big5_1; /* Big5 Level 1 (Chinese Traditional) */ extern int charset_big5_2; /* Big5 Level 2 (Chinese Traditional) */ +extern int charset_mule_unicode_0100_24ff; +extern int charset_mule_unicode_2500_33ff; +extern int charset_mule_unicode_e000_ffff; /* Check if CH is an ASCII character or a base leading-code. Nowadays, any byte can be the first byte of a character in a
--- a/src/coding.h Sat Oct 29 11:50:12 2005 +0000 +++ b/src/coding.h Tue Nov 01 06:23:08 2005 +0000 @@ -601,7 +601,7 @@ /* Decode the string STR using the specified coding system for system functions, if any. */ -#define DECODE_SYSTEM(name) \ +#define DECODE_SYSTEM(str) \ (! NILP (Vlocale_coding_system) \ && !EQ (Vlocale_coding_system, make_number (0)) \ ? code_convert_string_norecord (str, Vlocale_coding_system, 0) \
--- a/src/data.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/data.c Tue Nov 01 06:23:08 2005 +0000 @@ -1726,7 +1726,9 @@ A frame-local binding is actually a frame parameter value; thus, any given frame has a local binding for VARIABLE if it has a value for the frame parameter named VARIABLE. Return VARIABLE. -See `modify-frame-parameters' for how to set frame parameters. */) + +This function does not in itself create any frame-local bindings for +VARIABLE. See `modify-frame-parameters' for how to set frame parameters. */) (variable) register Lisp_Object variable; {
--- a/src/editfns.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/editfns.c Tue Nov 01 06:23:08 2005 +0000 @@ -2472,9 +2472,9 @@ { register int begp1, endp1, begp2, endp2, temp; register struct buffer *bp1, *bp2; - register Lisp_Object *trt + register Lisp_Object trt = (!NILP (current_buffer->case_fold_search) - ? XCHAR_TABLE (current_buffer->case_canon_table)->contents : 0); + ? current_buffer->case_canon_table : Qnil); int chars = 0; int i1, i2, i1_byte, i2_byte; @@ -2593,10 +2593,10 @@ i2++; } - if (trt) + if (!NILP (trt)) { - c1 = XINT (trt[c1]); - c2 = XINT (trt[c2]); + c1 = CHAR_TABLE_TRANSLATE (trt, c1); + c2 = CHAR_TABLE_TRANSLATE (trt, c2); } if (c1 < c2) return make_number (- 1 - chars);
--- a/src/fringe.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/fringe.c Tue Nov 01 06:23:08 2005 +0000 @@ -861,7 +861,7 @@ if (!done_bot) { - if (MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->buffer)) + if (row->ends_at_zv_p && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P (w, row)) row->indicate_eob_p = !NILP (boundary_bot), done_bot = 1; else if (y + row->height >= yb)
--- a/src/image.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/image.c Tue Nov 01 06:23:08 2005 +0000 @@ -2291,6 +2291,7 @@ GraphicsImportComponent gi; Rect rect; int width, height; + ImageDescriptionHandle desc_handle; short draw_all_pixels; Lisp_Object specified_bg; XColor color; @@ -2326,14 +2327,22 @@ goto error; } } - err = GraphicsImportGetNaturalBounds (gi, &rect); - if (err != noErr) + err = GraphicsImportGetImageDescription (gi, &desc_handle); + if (err != noErr || desc_handle == NULL) { image_error ("Error reading `%s'", img->spec, Qnil); goto error; } - width = img->width = rect.right - rect.left; - height = img->height = rect.bottom - rect.top; + width = img->width = (*desc_handle)->width; + height = img->height = (*desc_handle)->height; + DisposeHandle ((Handle)desc_handle); + + if (!check_image_size (f, width, height)) + { + image_error ("Invalid image size", Qnil, Qnil); + goto error; + } + err = GraphicsImportDoesDrawAllPixels (gi, &draw_all_pixels); #if 0 /* Don't check the error code here. It may have an undocumented @@ -2535,6 +2544,15 @@ image_error ("Error reading image `%s'", img->spec, Qnil); return 0; } + width = img->width = CGImageGetWidth (image); + height = img->height = CGImageGetHeight (image); + + if (!check_image_size (f, width, height)) + { + UNGCPRO; + image_error ("Invalid image size", Qnil, Qnil); + return 0; + } if (png_p) { @@ -2548,8 +2566,7 @@ color.blue = BLUE16_FROM_ULONG (color.pixel); } } - width = img->width = CGImageGetWidth (image); - height = img->height = CGImageGetHeight (image); + if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) { CGImageRelease (image); @@ -4190,6 +4207,13 @@ || width <= 0 || height <= 0 || num_colors <= 0 || chars_per_pixel <= 0) goto failure; + + if (!check_image_size (f, width, height)) + { + image_error ("Invalid image size", Qnil, Qnil); + goto failure; + } + expect (','); XSETFRAME (frame, f);
--- a/src/lread.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/lread.c Tue Nov 01 06:23:08 2005 +0000 @@ -1199,33 +1199,34 @@ /* Merge the list we've accumulated of globals from the current input source into the load_history variable. The details depend on whether - the source has an associated file name or not. */ + the source has an associated file name or not. + + FILENAME is the file name that we are loading from. + ENTIRE is 1 if loading that entire file, 0 if evaluating part of it. */ static void -build_load_history (stream, source) - FILE *stream; - Lisp_Object source; +build_load_history (filename, entire) + Lisp_Object filename; + int entire; { register Lisp_Object tail, prev, newelt; register Lisp_Object tem, tem2; - register int foundit, loading; - - loading = stream || !NARROWED; + register int foundit = 0; tail = Vload_history; prev = Qnil; - foundit = 0; + while (CONSP (tail)) { tem = XCAR (tail); /* Find the feature's previous assoc list... */ - if (!NILP (Fequal (source, Fcar (tem)))) + if (!NILP (Fequal (filename, Fcar (tem)))) { foundit = 1; - /* If we're loading, remove it. */ - if (loading) + /* If we're loading the entire file, remove old data. */ + if (entire) { if (NILP (prev)) Vload_history = XCDR (tail); @@ -1257,10 +1258,10 @@ QUIT; } - /* If we're loading, cons the new assoc onto the front of load-history, - the most-recently-loaded position. Also do this if we didn't find - an existing member for the current source. */ - if (loading || !foundit) + /* If we're loading an entire file, cons the new assoc onto the + front of load-history, the most-recently-loaded position. Also + do this if we didn't find an existing member for the file. */ + if (entire || !foundit) Vload_history = Fcons (Fnreverse (Vcurrent_load_list), Vload_history); } @@ -1415,7 +1416,9 @@ } } - build_load_history (stream, sourcename); + build_load_history (sourcename, + stream || (start == BEG && end == Z)); + UNGCPRO; unbind_to (count, Qnil); @@ -3897,8 +3900,8 @@ and means that SYMBOL was an autoload before this file redefined it as a function. -For a preloaded file, the file name recorded is relative to the main Lisp -directory. These names are converted to absolute by `file-loadhist-lookup'. */); +During preloading, the file name recorded is relative to the main Lisp +directory. These file names are converted to absolute at startup. */); Vload_history = Qnil; DEFVAR_LISP ("load-file-name", &Vload_file_name,
--- a/src/macterm.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/macterm.c Tue Nov 01 06:23:08 2005 +0000 @@ -165,6 +165,7 @@ /* Where the mouse was last time we reported a mouse event. */ static Rect last_mouse_glyph; +static FRAME_PTR last_mouse_glyph_frame; /* The scroll bar in which the last X motion event occurred. @@ -716,10 +717,10 @@ #ifndef WORDS_BIG_ENDIAN { int i; - Unichar *text = (Unichar *)buf; + UniChar *text = (UniChar *)buf; for (i = 0; i < nchars; i++) - text[i] = buf[2*i] << 8 | buf[2*i+1]; + text[i] = EndianU16_BtoN (text[i]); } #endif err = atsu_get_text_layout_with_text_ptr ((ConstUniCharArrayPtr)buf, @@ -773,11 +774,18 @@ ATSUDrawText (text_layout, kATSUFromTextBeginning, kATSUToTextEnd, Long2Fix (x), Long2Fix (port_height - y)); - ATSUClearLayoutControls (text_layout, + CGContextSynchronize (context); + QDEndCGContext (port, &context); +#if 0 + /* This doesn't work on Mac OS X 10.1. */ + ATSUClearLayoutControls (text_layout, sizeof (tags) / sizeof (tags[0]), tags); - CGContextSynchronize (context); - QDEndCGContext (port, &context); +#else + ATSUSetLayoutControls (text_layout, + sizeof (tags) / sizeof (tags[0]), + tags, sizes, values); +#endif } #endif } @@ -1666,8 +1674,12 @@ if (err == noErr) err = ATSUGetGlyphBounds (text_layout, 0, 0, kATSUFromTextBeginning, kATSUToTextEnd, - kATSUseFractionalOrigins, 1, - &glyph_bounds, NULL); +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 + kATSUseFractionalOrigins, +#else + kATSUseDeviceOrigins, +#endif + 1, &glyph_bounds, NULL); UNBLOCK_INPUT; if (err != noErr) pcm = NULL; @@ -3910,13 +3922,15 @@ return 1; } /* Has the mouse moved off the glyph it was on at the last sighting? */ - if (!PtInRect (*pos, &last_mouse_glyph)) + if (frame != last_mouse_glyph_frame + || !PtInRect (*pos, &last_mouse_glyph)) { frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, pos->h, pos->v); /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph); + last_mouse_glyph_frame = frame; return 1; } @@ -4021,6 +4035,7 @@ GetMouse (&mouse_pos); remember_mouse_glyph (f1, mouse_pos.h, mouse_pos.v, &last_mouse_glyph); + last_mouse_glyph_frame = f1; *bar_window = Qnil; *part = 0; @@ -6572,7 +6587,7 @@ sprintf (xf, "%s-%c-normal--%d-%d-%d-%d-m-%d-%s", style & bold ? "bold" : "medium", style & italic ? 'i' : 'r', - size, size * 10, size ? 75 : 0, size ? 75 : 0, size * 10, charset); + size, size * 10, size ? 72 : 0, size ? 72 : 0, size * 10, charset); result = xmalloc (strlen (foundry) + strlen (family) + strlen (xf) + 3 + 1); sprintf (result, "-%s-%s-%s", foundry, family, xf); @@ -7061,7 +7076,7 @@ continue; memcpy (scaled, font_name_table[i], former_len); sprintf (scaled + former_len, - "-%d-%d-75-75-m-%d-%s", + "-%d-%d-72-72-m-%d-%s", scl_val[XLFD_SCL_PIXEL_SIZE], scl_val[XLFD_SCL_POINT_SIZE], scl_val[XLFD_SCL_AVGWIDTH], @@ -7409,8 +7424,12 @@ if (err == noErr) err = ATSUGetGlyphBounds (text_layout, 0, 0, kATSUFromTextBeginning, kATSUToTextEnd, - kATSUseFractionalOrigins, 1, - &glyph_bounds, NULL); +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 + kATSUseFractionalOrigins, +#else + kATSUseDeviceOrigins, +#endif + 1, &glyph_bounds, NULL); if (err == noErr) { xassert (glyph_bounds.lowerRight.x - glyph_bounds.lowerLeft.x @@ -9501,6 +9520,7 @@ != eventNotHandledErr) break; #endif + last_mouse_glyph_frame = 0; if (dpyinfo->grabbed && last_mouse_frame && FRAME_LIVE_P (last_mouse_frame)) @@ -10230,8 +10250,8 @@ main_device_handle = LMGetMainDevice(); dpyinfo->reference_count = 0; - dpyinfo->resx = 75.0; - dpyinfo->resy = 75.0; + dpyinfo->resx = 72.0; + dpyinfo->resy = 72.0; dpyinfo->color_p = TestDeviceAttribute (main_device_handle, gdDevType); #ifdef MAC_OSX /* HasDepth returns true if it is possible to have a 32 bit display,
--- a/src/minibuf.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/minibuf.c Tue Nov 01 06:23:08 2005 +0000 @@ -2369,7 +2369,7 @@ At the end, this runs the normal hook `completion-setup-hook'. It can find the completion buffer in `standard-output'. The optional second arg COMMON-SUBSTRING is a string. -It is used to put faces, `completions-first-difference` and +It is used to put faces, `completions-first-difference' and `completions-common-part' on the completion buffer. The `completions-common-part' face is put on the common substring specified by COMMON-SUBSTRING. If COMMON-SUBSTRING is nil,
--- a/src/w32fns.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/w32fns.c Tue Nov 01 06:23:08 2005 +0000 @@ -5284,9 +5284,13 @@ strcpy (height_pixels, "*"); strcpy (height_dpi, "*"); } + +#if 0 /* Never put the width in the xfld. It fails on fonts with + double-width characters. */ if (lplogfont->lfWidth) sprintf (width_pixels, "%u", lplogfont->lfWidth * 10); else +#endif strcpy (width_pixels, "*"); _snprintf (lpxstr, len - 1,
--- a/src/xterm.c Sat Oct 29 11:50:12 2005 +0000 +++ b/src/xterm.c Tue Nov 01 06:23:08 2005 +0000 @@ -248,6 +248,7 @@ /* Where the mouse was last time we reported a mouse event. */ static XRectangle last_mouse_glyph; +static FRAME_PTR last_mouse_glyph_frame; static Lisp_Object last_mouse_press_frame; /* The scroll bar in which the last X motion event occurred. @@ -3602,20 +3603,24 @@ frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, -1, -1); + last_mouse_glyph_frame = 0; return 1; } + /* Has the mouse moved off the glyph it was on at the last sighting? */ - if (event->x < last_mouse_glyph.x - || event->x >= last_mouse_glyph.x + last_mouse_glyph.width - || event->y < last_mouse_glyph.y - || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) + if (frame != last_mouse_glyph_frame + || event->x < last_mouse_glyph.x + || event->x >= last_mouse_glyph.x + last_mouse_glyph.width + || event->y < last_mouse_glyph.y + || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) { frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, event->x, event->y); /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); + last_mouse_glyph_frame = frame; return 1; } @@ -3827,6 +3832,7 @@ the frame are divided into. */ remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph); + last_mouse_glyph_frame = f1; *bar_window = Qnil; *part = 0; @@ -6245,12 +6251,33 @@ { inev.ie.kind = ASCII_KEYSTROKE_EVENT; inev.ie.code = keysym; - goto done_keysym; - } - - /* Now non-ASCII. */ - if (HASH_TABLE_P (Vx_keysym_table) - && (NATNUMP (c = Fgethash (make_number (keysym), + goto done_keysym; + } + + /* Keysyms directly mapped to supported Unicode characters. */ + if ((keysym >= 0x01000100 && keysym <= 0x010033ff) + || (keysym >= 0x0100e000 && keysym <= 0x0100ffff)) + { + int code, charset_id, c1, c2; + + if (keysym < 0x01002500) + charset_id = charset_mule_unicode_0100_24ff, + code = (keysym & 0xFFFF) - 0x100; + else if (keysym < 0x0100e000) + charset_id = charset_mule_unicode_2500_33ff, + code = (keysym & 0xFFFF) - 0x2500; + else + charset_id = charset_mule_unicode_e000_ffff, + code = (keysym & 0xFFFF) - 0xe000; + c1 = (code / 96) + 32, c2 = (code % 96) + 32; + inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT; + inev.ie.code = MAKE_CHAR (charset_id, c1, c2); + goto done_keysym; + } + + /* Now non-ASCII. */ + if (HASH_TABLE_P (Vx_keysym_table) + && (NATNUMP (c = Fgethash (make_number (keysym), Vx_keysym_table, Qnil)))) { @@ -6649,7 +6676,7 @@ int tool_bar_p = 0; bzero (&compose_status, sizeof (compose_status)); - bzero (&last_mouse_glyph, sizeof (last_mouse_glyph)); + last_mouse_glyph_frame = 0; if (dpyinfo->grabbed && last_mouse_frame