summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dir-locals.el3
-rw-r--r--BUGS31
-rw-r--r--ChangeLog56
-rw-r--r--INSTALL10
-rw-r--r--INSTALL.BZR14
-rw-r--r--Makefile.in2
-rw-r--r--README18
-rw-r--r--admin/ChangeLog14
-rw-r--r--admin/admin.el22
-rw-r--r--admin/notes/nextstep (renamed from nextstep/DEV-NOTES)0
-rwxr-xr-xadmin/quick-install-emacs4
-rwxr-xr-xconfigure34
-rw-r--r--configure.in73
-rw-r--r--doc/emacs/ChangeLog97
-rw-r--r--doc/emacs/Makefile.in119
-rw-r--r--doc/emacs/ack.texi8
-rw-r--r--doc/emacs/emacs.texi7
-rw-r--r--doc/emacs/emacsver.texi4
-rw-r--r--doc/emacs/maintaining.texi16
-rw-r--r--doc/emacs/makefile.w32-in1
-rw-r--r--doc/emacs/misc.texi3
-rw-r--r--doc/lispintro/ChangeLog57
-rw-r--r--doc/lispintro/Makefile.in87
-rw-r--r--doc/lispref/ChangeLog112
-rw-r--r--doc/lispref/Makefile.in79
-rw-r--r--doc/lispref/book-spine.texi (renamed from doc/lispref/book-spine.texinfo)8
-rw-r--r--doc/lispref/display.texi28
-rw-r--r--doc/lispref/elisp.texi6
-rw-r--r--doc/lispref/files.texi42
-rw-r--r--doc/lispref/makefile.w32-in10
-rw-r--r--doc/lispref/os.texi53
-rw-r--r--doc/lispref/searching.texi6
-rw-r--r--doc/lispref/vol1.texi6
-rw-r--r--doc/lispref/vol2.texi6
-rw-r--r--doc/man/ChangeLog12
-rw-r--r--doc/man/b2m.164
-rw-r--r--doc/man/emacs.127
-rw-r--r--doc/misc/ChangeLog180
-rw-r--r--doc/misc/Makefile.in565
-rw-r--r--doc/misc/auth.texi63
-rw-r--r--doc/misc/cl.texi54
-rw-r--r--doc/misc/emacs-mime.texi12
-rw-r--r--doc/misc/epa.texi38
-rw-r--r--doc/misc/eudc.texi36
-rw-r--r--doc/misc/faq.texi11
-rw-r--r--doc/misc/gnus-faq.texi33
-rw-r--r--doc/misc/gnus-news.texi2
-rw-r--r--doc/misc/gnus.texi286
-rw-r--r--doc/misc/makefile.w32-in12
-rw-r--r--doc/misc/message.texi7
-rw-r--r--doc/misc/sieve.texi4
-rw-r--r--doc/misc/tramp.texi5
-rw-r--r--etc/BABYL179
-rw-r--r--etc/ChangeLog18
-rw-r--r--etc/GNUS-NEWS2
-rw-r--r--etc/NEWS115
-rw-r--r--etc/NEWS.238
-rw-r--r--etc/NEXTSTEP311
-rw-r--r--etc/TODO29
-rw-r--r--etc/tutorials/TUTORIAL.es66
-rw-r--r--lib-src/ChangeLog45
-rw-r--r--lib-src/Makefile.in13
-rw-r--r--lib-src/b2m.c318
-rw-r--r--lib-src/b2m.pl158
-rw-r--r--lib-src/emacsclient.c55
-rw-r--r--lib-src/make-docfile.c5
-rw-r--r--lib-src/makefile.w32-in11
-rw-r--r--lib-src/movemail.c7
-rw-r--r--lib-src/sorted-doc.c2
-rw-r--r--lib-src/test-distrib.c5
-rw-r--r--lisp/ChangeLog.12
-rw-r--r--lisp/ChangeLog.74
-rw-r--r--lisp/ChangeLog.82
-rw-r--r--lisp/ChangeLog.910
-rw-r--r--lisp/ChangeLog.trunk762
-rw-r--r--lisp/Makefile.in3
-rw-r--r--lisp/array.el46
-rw-r--r--lisp/calc/calc-alg.el26
-rw-r--r--lisp/calc/calcalg2.el14
-rw-r--r--lisp/calendar/appt.el289
-rw-r--r--lisp/calendar/cal-hebrew.el168
-rw-r--r--lisp/calendar/diary-lib.el7
-rw-r--r--lisp/cedet/ChangeLog51
-rw-r--r--lisp/cedet/ede/base.el2
-rw-r--r--lisp/cedet/semantic/bovine/c-by.el115
-rw-r--r--lisp/cedet/semantic/bovine/el.el2
-rw-r--r--lisp/cedet/semantic/db-typecache.el2
-rw-r--r--lisp/cedet/semantic/fw.el2
-rw-r--r--lisp/cedet/semantic/grammar.el2
-rw-r--r--lisp/cedet/semantic/imenu.el2
-rw-r--r--lisp/cedet/semantic/lex-spp.el33
-rw-r--r--lisp/cedet/semantic/mru-bookmark.el12
-rw-r--r--lisp/cedet/semantic/tag.el3
-rw-r--r--lisp/comint.el2
-rw-r--r--lisp/composite.el19
-rw-r--r--lisp/cus-edit.el563
-rw-r--r--lisp/cus-face.el65
-rw-r--r--lisp/cus-start.el8
-rw-r--r--lisp/cus-theme.el502
-rw-r--r--lisp/custom.el325
-rw-r--r--lisp/dired.el2
-rw-r--r--lisp/dnd.el9
-rw-r--r--lisp/edmacro.el10
-rw-r--r--lisp/emacs-lisp/authors.el2
-rw-r--r--lisp/emacs-lisp/byte-opt.el2
-rw-r--r--lisp/emacs-lisp/bytecomp.el24
-rw-r--r--lisp/emacs-lisp/chart.el6
-rw-r--r--lisp/emacs-lisp/checkdoc.el7
-rw-r--r--lisp/emacs-lisp/cl.el1
-rw-r--r--lisp/emacs-lisp/edebug.el22
-rw-r--r--lisp/emacs-lisp/lisp.el86
-rw-r--r--lisp/emacs-lisp/regexp-opt.el11
-rw-r--r--lisp/emacs-lisp/shadow.el76
-rw-r--r--lisp/emacs-lisp/smie.el93
-rw-r--r--lisp/emulation/viper-util.el5
-rw-r--r--lisp/emulation/ws-mode.el300
-rw-r--r--lisp/epa-file.el5
-rw-r--r--lisp/epa.el9
-rw-r--r--lisp/erc/ChangeLog8
-rw-r--r--lisp/erc/erc-list.el21
-rw-r--r--lisp/erc/erc-xdcc.el2
-rw-r--r--lisp/faces.el244
-rw-r--r--lisp/files.el45
-rw-r--r--lisp/font-core.el17
-rw-r--r--lisp/font-lock.el29
-rw-r--r--lisp/gnus/ChangeLog983
-rw-r--r--lisp/gnus/ChangeLog.26
-rw-r--r--lisp/gnus/auth-source.el443
-rw-r--r--lisp/gnus/ecomplete.el2
-rw-r--r--lisp/gnus/gmm-utils.el10
-rw-r--r--lisp/gnus/gnus-agent.el13
-rw-r--r--lisp/gnus/gnus-art.el51
-rw-r--r--lisp/gnus/gnus-async.el7
-rw-r--r--lisp/gnus/gnus-bookmark.el4
-rw-r--r--lisp/gnus/gnus-cache.el2
-rw-r--r--lisp/gnus/gnus-demon.el2
-rw-r--r--lisp/gnus/gnus-diary.el8
-rw-r--r--lisp/gnus/gnus-dired.el12
-rw-r--r--lisp/gnus/gnus-ems.el6
-rw-r--r--lisp/gnus/gnus-fun.el2
-rw-r--r--lisp/gnus/gnus-gravatar.el117
-rw-r--r--lisp/gnus/gnus-group.el134
-rw-r--r--lisp/gnus/gnus-html.el113
-rw-r--r--lisp/gnus/gnus-int.el30
-rw-r--r--lisp/gnus/gnus-kill.el2
-rw-r--r--lisp/gnus/gnus-msg.el31
-rw-r--r--lisp/gnus/gnus-picon.el2
-rw-r--r--lisp/gnus/gnus-registry.el24
-rw-r--r--lisp/gnus/gnus-salt.el171
-rw-r--r--lisp/gnus/gnus-score.el27
-rw-r--r--lisp/gnus/gnus-spec.el4
-rw-r--r--lisp/gnus/gnus-srvr.el13
-rw-r--r--lisp/gnus/gnus-start.el3
-rw-r--r--lisp/gnus/gnus-sum.el225
-rw-r--r--lisp/gnus/gnus-sync.el7
-rw-r--r--lisp/gnus/gnus-topic.el29
-rw-r--r--lisp/gnus/gnus-util.el179
-rw-r--r--lisp/gnus/gnus-win.el21
-rw-r--r--lisp/gnus/gnus.el63
-rw-r--r--lisp/gnus/gravatar.el16
-rw-r--r--lisp/gnus/mail-source.el65
-rw-r--r--lisp/gnus/mailcap.el7
-rw-r--r--lisp/gnus/message.el9
-rw-r--r--lisp/gnus/mm-bodies.el2
-rw-r--r--lisp/gnus/mm-decode.el63
-rw-r--r--lisp/gnus/mm-encode.el11
-rw-r--r--lisp/gnus/mm-extern.el2
-rw-r--r--lisp/gnus/mm-util.el16
-rw-r--r--lisp/gnus/mm-view.el32
-rw-r--r--lisp/gnus/mml-smime.el19
-rw-r--r--lisp/gnus/mml.el28
-rw-r--r--lisp/gnus/mml1991.el2
-rw-r--r--lisp/gnus/mml2015.el2
-rw-r--r--lisp/gnus/nndoc.el13
-rw-r--r--lisp/gnus/nndraft.el2
-rw-r--r--lisp/gnus/nnfolder.el2
-rw-r--r--lisp/gnus/nnheader.el1
-rw-r--r--lisp/gnus/nnimap.el637
-rw-r--r--lisp/gnus/nnir.el144
-rw-r--r--lisp/gnus/nnmail.el50
-rw-r--r--lisp/gnus/nnmaildir.el2
-rw-r--r--lisp/gnus/nnmairix.el35
-rw-r--r--lisp/gnus/nnmbox.el1
-rw-r--r--lisp/gnus/nnregistry.el66
-rw-r--r--lisp/gnus/nnrss.el16
-rw-r--r--lisp/gnus/nntp.el8
-rw-r--r--lisp/gnus/nnweb.el2
-rw-r--r--lisp/gnus/pop3.el13
-rw-r--r--lisp/gnus/rfc1843.el2
-rw-r--r--lisp/gnus/rfc2231.el18
-rw-r--r--lisp/gnus/shr.el809
-rw-r--r--lisp/gnus/sieve-manage.el249
-rw-r--r--lisp/gnus/sieve.el11
-rw-r--r--lisp/gnus/smime.el28
-rw-r--r--lisp/gnus/spam-report.el1
-rw-r--r--lisp/gnus/spam.el5
-rw-r--r--lisp/gnus/webmail.el1151
-rw-r--r--lisp/help-mode.el9
-rw-r--r--lisp/hexl.el188
-rw-r--r--lisp/hi-lock.el25
-rw-r--r--lisp/hilit-chg.el25
-rw-r--r--lisp/htmlfontify.el8
-rw-r--r--lisp/ibuffer.el7
-rw-r--r--lisp/iimage.el54
-rw-r--r--lisp/image.el21
-rw-r--r--lisp/international/ccl.el2
-rw-r--r--lisp/international/fontset.el2
-rw-r--r--lisp/international/mule.el2
-rw-r--r--lisp/international/titdic-cnv.el2
-rw-r--r--lisp/isearch.el6
-rw-r--r--lisp/iswitchb.el17
-rw-r--r--lisp/ldefs-boot.el3387
-rw-r--r--lisp/ls-lisp.el2
-rw-r--r--lisp/mail/emacsbug.el5
-rw-r--r--lisp/mail/hashcash.el1
-rw-r--r--lisp/mail/mail-utils.el2
-rw-r--r--lisp/mail/mspools.el26
-rw-r--r--lisp/mail/rmail.el20
-rw-r--r--lisp/makefile.w32-in45
-rw-r--r--lisp/minibuffer.el129
-rw-r--r--lisp/mouse.el7
-rw-r--r--lisp/net/browse-url.el21
-rw-r--r--lisp/net/dig.el11
-rw-r--r--lisp/net/eudc-hotlist.el21
-rw-r--r--lisp/net/gnutls.el78
-rw-r--r--lisp/net/imap.el1
-rw-r--r--lisp/net/mairix.el32
-rw-r--r--lisp/net/netrc.el32
-rw-r--r--lisp/net/quickurl.el30
-rw-r--r--lisp/net/telnet.el20
-rw-r--r--lisp/net/tls.el4
-rw-r--r--lisp/net/tramp-cache.el29
-rw-r--r--lisp/net/tramp-cmds.el93
-rw-r--r--lisp/net/tramp-compat.el45
-rw-r--r--lisp/net/tramp-gvfs.el7
-rw-r--r--lisp/net/tramp-gw.el8
-rw-r--r--lisp/net/tramp-imap.el40
-rw-r--r--lisp/net/tramp-sh.el735
-rw-r--r--lisp/net/tramp-smb.el37
-rw-r--r--lisp/net/tramp.el617
-rw-r--r--lisp/obsolete/cl-compat.el (renamed from lisp/emacs-lisp/cl-compat.el)9
-rw-r--r--lisp/obsolete/lmenu.el (renamed from lisp/emacs-lisp/lmenu.el)8
-rw-r--r--lisp/obsolete/lucid.el8
-rw-r--r--lisp/obsolete/rnews.el981
-rw-r--r--lisp/obsolete/rnewspost.el447
-rw-r--r--lisp/obsolete/sc.el19
-rw-r--r--lisp/obsolete/vc-mcvs.el5
-rw-r--r--lisp/obsolete/x-menu.el153
-rw-r--r--lisp/outline.el7
-rw-r--r--lisp/pgg-parse.el1
-rw-r--r--lisp/pgg.el1
-rw-r--r--lisp/play/5x5.el10
-rw-r--r--lisp/play/decipher.el61
-rw-r--r--lisp/play/landmark.el88
-rw-r--r--lisp/play/mpuz.el51
-rw-r--r--lisp/printing.el21
-rw-r--r--lisp/progmodes/cc-engine.el128
-rw-r--r--lisp/progmodes/cc-fonts.el299
-rw-r--r--lisp/progmodes/cc-langs.el15
-rw-r--r--lisp/progmodes/cc-mode.el10
-rw-r--r--lisp/progmodes/cc-styles.el3
-rw-r--r--lisp/progmodes/cperl-mode.el17
-rw-r--r--lisp/progmodes/inf-lisp.el24
-rw-r--r--lisp/progmodes/modula2.el8
-rw-r--r--lisp/progmodes/octave-mod.el5
-rw-r--r--lisp/ps-def.el70
-rw-r--r--lisp/ps-mule.el50
-rw-r--r--lisp/ps-print.el2
-rw-r--r--lisp/server.el16
-rw-r--r--lisp/shell.el41
-rw-r--r--lisp/startup.el32
-rw-r--r--lisp/subr.el58
-rw-r--r--lisp/term/ns-win.el3
-rw-r--r--lisp/term/pc-win.el9
-rw-r--r--lisp/term/w32-win.el6
-rw-r--r--lisp/textmodes/artist.el27
-rw-r--r--lisp/textmodes/rst.el5
-rw-r--r--lisp/themes/tango-dark-theme.el92
-rw-r--r--lisp/themes/tango-theme.el92
-rw-r--r--lisp/themes/wheatgrass-theme.el66
-rw-r--r--lisp/time.el5
-rw-r--r--lisp/url/ChangeLog55
-rw-r--r--lisp/url/url-cache.el6
-rw-r--r--lisp/url/url-cookie.el4
-rw-r--r--lisp/url/url-gw.el5
-rw-r--r--lisp/url/url-http.el52
-rw-r--r--lisp/url/url-parse.el2
-rw-r--r--lisp/url/url-util.el21
-rw-r--r--lisp/url/url-vars.el2
-rw-r--r--lisp/url/url.el18
-rw-r--r--lisp/vc/ediff-diff.el16
-rw-r--r--lisp/vc/ediff-init.el10
-rw-r--r--lisp/vc/ediff-ptch.el8
-rw-r--r--lisp/vc/ediff-util.el5
-rw-r--r--lisp/vc/ediff-wind.el17
-rw-r--r--lisp/vc/log-view.el1
-rw-r--r--lisp/vc/vc-cvs.el4
-rw-r--r--lisp/vc/vc-hooks.el6
-rw-r--r--lisp/vc/vc-rcs.el4
-rw-r--r--lisp/vc/vc-sccs.el3
-rw-r--r--lisp/vc/vc-svn.el6
-rw-r--r--lisp/vc/vc.el38
-rw-r--r--lisp/wid-edit.el61
-rwxr-xr-xmake-dist463
-rw-r--r--msdos/ChangeLog26
-rw-r--r--msdos/mainmake.v216
-rw-r--r--msdos/sed1v2.inp3
-rw-r--r--msdos/sed3v2.inp1
-rw-r--r--nextstep/AUTHORS59
-rw-r--r--nextstep/ChangeLog17
-rw-r--r--nextstep/FOR-RELEASE38
-rw-r--r--nextstep/README240
-rw-r--r--nt/ChangeLog16
-rw-r--r--nt/INSTALL10
-rw-r--r--nt/emacs-src.tags6
-rw-r--r--nt/gmake.defs1
-rw-r--r--nt/makefile.w32-in13
-rw-r--r--src/ChangeLog.28
-rw-r--r--src/ChangeLog.38
-rw-r--r--src/ChangeLog.74
-rw-r--r--src/ChangeLog.82
-rw-r--r--src/ChangeLog.trunk383
-rw-r--r--src/Makefile.in362
-rw-r--r--src/alloc.c6
-rw-r--r--src/bidi.c1
-rw-r--r--src/buffer.c10
-rw-r--r--src/callproc.c41
-rw-r--r--src/ccl.c4
-rw-r--r--src/character.c11
-rw-r--r--src/charset.c5
-rw-r--r--src/coding.c102
-rw-r--r--src/coding.h1
-rw-r--r--src/config.in30
-rw-r--r--src/dbusbind.c11
-rw-r--r--src/doc.c7
-rw-r--r--src/dosfns.c1
-rw-r--r--src/emacs.c48
-rw-r--r--src/eval.c8
-rw-r--r--src/fileio.c25
-rw-r--r--src/filelock.c3
-rw-r--r--src/font.c55
-rw-r--r--src/font.h7
-rw-r--r--src/ftfont.c43
-rw-r--r--src/gnutls.c232
-rw-r--r--src/gnutls.h2
-rw-r--r--src/gtkutil.c1
-rw-r--r--src/image.c143
-rw-r--r--src/keyboard.c32
-rw-r--r--src/lisp.h1
-rw-r--r--src/lread.c5
-rw-r--r--src/makefile.w32-in90
-rw-r--r--src/msdos.c4
-rw-r--r--src/nsfns.m2
-rw-r--r--src/nsmenu.m2
-rw-r--r--src/nsselect.m10
-rw-r--r--src/nsterm.m40
-rw-r--r--src/point.h8
-rw-r--r--src/print.c2
-rw-r--r--src/process.c70
-rw-r--r--src/regex.c2
-rw-r--r--src/scroll.c1
-rw-r--r--src/sound.c2
-rw-r--r--src/sysdep.c278
-rw-r--r--src/term.c4
-rw-r--r--src/termcap.c35
-rw-r--r--src/termhooks.h7
-rw-r--r--src/unexaix.c57
-rw-r--r--src/unexcoff.c67
-rw-r--r--src/unexcw.c3
-rw-r--r--src/unexelf.c40
-rw-r--r--src/unexhp9k800.c14
-rw-r--r--src/unexmacosx.c8
-rw-r--r--src/unexsol.c4
-rw-r--r--src/unexw32.c7
-rw-r--r--src/vm-limit.c3
-rw-r--r--src/w16select.c1
-rw-r--r--src/w32.c7
-rw-r--r--src/w32console.c24
-rw-r--r--src/w32fns.c11
-rw-r--r--src/w32font.c34
-rw-r--r--src/w32heap.c3
-rw-r--r--src/w32inevt.c3
-rw-r--r--src/w32menu.c7
-rw-r--r--src/w32proc.c26
-rw-r--r--src/w32reg.c1
-rw-r--r--src/w32select.c2
-rw-r--r--src/w32term.c9
-rw-r--r--src/w32uniscribe.c2
-rw-r--r--src/w32xfns.c3
-rw-r--r--src/xdisp.c18
-rw-r--r--src/xfont.c3
-rw-r--r--src/xml.c62
-rw-r--r--src/xterm.c80
393 files changed, 14180 insertions, 12696 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index 12b85561ee8..f12dbf7d859 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -1,4 +1,5 @@
((nil . ((tab-width . 8)
+ (sentence-end-double-space . t)
(fill-column . 70)))
(c-mode . ((c-file-style . "GNU")))
(change-log-mode . ((add-log-time-zone-rule . t)
@@ -6,5 +7,3 @@
(bug-reference-url-format . "http://debbugs.gnu.org/%s")
(mode . bug-reference)))
(diff-mode . ((mode . whitespace))))
-
-;; arch-tag: fb93c160-e9fe-4184-aad1-e4f5daa11cbd
diff --git a/BUGS b/BUGS
index 32b44ceb0a3..552be81a0f9 100644
--- a/BUGS
+++ b/BUGS
@@ -1,26 +1,23 @@
-If you think you may have found a bug in GNU Emacs, please
-read the Bugs section of the Emacs manual for advice on
+If you think you may have found a bug in GNU Emacs, please read the
+Bugs section of the Emacs manual for advice on
+
(1) how to tell when to report a bug, and
-(2) how to write a useful bug report and what information
-it needs to have.
+(2) how to write a useful bug report and what information it needs to have.
-There are three ways to read the Bugs section.
+You can read the read the Bugs section of the manual from inside Emacs.
+Start Emacs, do C-h i to enter Info, then m Emacs RET to get to the
+Emacs manual, then m Bugs RET to get to the section on bugs.
+Or you can use the standalone Info program in a like manner.
+(Standalone Info is part of the Texinfo distribution, not part of the
+Emacs distribution.)
-(1) In a printed copy of the Emacs manual.
-You can order one from the Free Software Foundation;
-see the file etc/ORDERS. But if you don't have a copy on
-hand and you think you have found a bug, you shouldn't wait
-to get a printed manual; you should read the section right away
-as described below.
+Printed copies of the Emacs manual can be purchased from the Free
+Software Foundation's online store at <http://shop.fsf.org/>.
-(2) With Info. Start Emacs, do C-h i to enter Info,
-then m Emacs RET to get to the Emacs manual, then m Bugs RET
-to get to the section on bugs. Or use standalone Info in
-a like manner. (Standalone Info is part of the Texinfo distribution,
-not part of the Emacs distribution.)
+If necessary, you can read the manual without an info program:
-(3) By hand. Do
cat info/emacs* | more "+/^File: emacs, Node: Bugs,"
+
Please first check the file etc/PROBLEMS (e.g. with C-h C-p in Emacs) to
make sure it isn't a known issue.
diff --git a/ChangeLog b/ChangeLog
index 0778d0a7b09..4c5acca4dc1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,59 @@
+2010-10-14 Glenn Morris <rgm@gnu.org>
+
+ * BUGS, INSTALL.BZR, README: Updates.
+
+2010-10-13 Glenn Morris <rgm@gnu.org>
+
+ * make-dist: Remove --compress. Check for the appropriate
+ gzip-like executable, and if not found, don't compress.
+ Check version number in README, don't change it.
+ Use find for nt/inc/*.h.
+
+2010-10-12 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * configure (ns_appdir, OLDXMENU, TOOLTIP_SUPPORT): Remove
+ trailing / from directory names.
+
+2010-10-12 Glenn Morris <rgm@gnu.org>
+
+ * make-dist: Update and simplify.
+
+2010-10-12 Eli Zaretskii <eliz@gnu.org>
+
+ * make-dist: Don't distribute src/buildobj.h. (Bug#7167)
+
+2010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * configure.in (PROFILING_LDFLAGS): Do not define, remove all uses.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * make-dist: No more doc/emacs/*.texi.in.
+
+ * configure.in (AC_OUTPUT): Remove doc/emacs/emacsver.texi.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * configure.in: Combine some conditionals.
+
+ * configure.in (AC_OUTPUT): Add doc/emacs/emacsver.texi.
+ * make-dist: Include doc/emacs/*.texi.in.
+
+ * INSTALL, make-dist: Remove references to b2m.
+ * Makefile.in (MAN_PAGES): Remove b2m.1.
+
+2010-10-05 Glenn Morris <rgm@gnu.org>
+
+ * .dir-locals.el: The Emacs convention is sentence-end-double-space.
+
+2010-10-03 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * configure.in (NO_INLINE, noinline): Move here from src/xterm.c.
+
+2010-10-01 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * configure.in: Include stdlib.h and string.h unconditionally.
+
2010-09-29 Romain Francoise <romain@orebokech.com>
* configure.in: Don't enable ImageMagick unless HAVE_X11.
diff --git a/INSTALL b/INSTALL
index 5f4b9e54d05..45f2a050ca4 100644
--- a/INSTALL
+++ b/INSTALL
@@ -460,7 +460,7 @@ installed locations, with `make install'. By default, Emacs's files
are installed in the following directories:
`/usr/local/bin' holds the executable programs users normally run -
- `emacs', `etags', `ctags', `b2m', `emacsclient',
+ `emacs', `etags', `ctags', `emacsclient',
`grep-changelog', and `rcs-checkin'.
`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
@@ -705,7 +705,7 @@ in `./lib-src' to their final destinations, as selected in `./src/epaths.h'.
Strictly speaking, not all of the executables in `./lib-src' need be copied.
- The programs `fakemail', `hexl', `movemail', `profile', `rcs2log',
and `vcdiff' are used by Emacs; they do need to be copied.
-- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
+- The programs `etags', `ctags', `emacsclient', and `rcs-checkin'
are intended to be run by users; they are handled below.
- The programs `make-docfile' and `test-distrib' were
used in building Emacs, and are not needed any more.
@@ -727,9 +727,9 @@ of installing different versions.
You can delete `./src/temacs'.
-4) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
-`rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
-intended for users to run.
+4) Copy the programs `emacsclient', `ctags', `etags', and `rcs-checkin'
+from `./lib-src' to `/usr/local/bin'. These programs are intended for
+users to run.
5) Copy the man pages in `./doc/man' into the appropriate man directory.
diff --git a/INSTALL.BZR b/INSTALL.BZR
index 48fa976c46c..dafd0b81080 100644
--- a/INSTALL.BZR
+++ b/INSTALL.BZR
@@ -31,13 +31,9 @@ generated files, such as esh-groups.el, and *-loaddefs.el in some
subdirectories of lisp/, e.g. mh-e/ and calendar/) will need to be
updated to reflect new autoloaded functions. If you see errors (rather
than warnings) 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 version control, and should only happen
-once, for users that are updating old sources. Finally, sometimes
-there can be build failures related to *loaddefs.el (e.g. "required
-feature `esh-groups' was not provided"). In that case, follow the
-instructions below.
+may be the reason. Finally, sometimes there can be build failures
+related to *loaddefs.el (e.g. "required feature `esh-groups' was not
+provided"). In that case, follow the instructions below.
To update loaddefs.el (and similar files), do:
@@ -53,10 +49,6 @@ 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.
-Questions, requests, and bug reports about the Bazaar versions of Emacs
-should be sent to bug-gnu-emacs@gnu.org rather than gnu.emacs.help.
-Ideally, use M-x report-emacs-bug RET.
-
Because the Bazaar version of Emacs is a work in progress, it will
sometimes fail to build. Please wait a day or so (and check the bug
and development mailing list archives) before reporting such problems.
diff --git a/Makefile.in b/Makefile.in
index d7e08a2328f..5466193a7f1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -125,7 +125,7 @@ libexecdir=@libexecdir@
# (and they contain cross-references that expect them to be there).
mandir=@mandir@
man1dir=$(mandir)/man1
-MAN_PAGES=b2m.1 ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
+MAN_PAGES=ctags.1 ebrowse.1 emacs.1 emacsclient.1 etags.1 \
grep-changelog.1 rcs-checkin.1
# Where to install and expect the info files describing Emacs. In the
diff --git a/README b/README
index 2ccd5d7cb0d..1dba7132313 100644
--- a/README
+++ b/README
@@ -65,16 +65,15 @@ There are several subdirectories:
which can't be directly produced by your keyboard.
`lib-src' holds the source code for some utility programs for use by or
with Emacs, like movemail and etags.
-`etc' holds miscellaneous architecture-independent data files
- Emacs uses, like the tutorial text and the Zippy the Pinhead
- quote database. The contents of the `lisp', `leim', `info',
- `man', `lispref', and `lispintro' subdirectories are
- architecture-independent too.
+`etc' holds miscellaneous architecture-independent data files Emacs
+ uses, like the tutorial text and tool bar images.
+ The contents of the `lisp', `leim', `info', and `doc'
+ subdirectories are architecture-independent too.
`info' holds the Info documentation tree for Emacs.
`doc/emacs' holds the source code for the Emacs Manual. If you modify the
manual sources, you will need the `makeinfo' program to produce
an updated manual. `makeinfo' is part of the GNU Texinfo
- package; you need version 4.6 or later of Texinfo.
+ package; you need a suitably recent version of Texinfo.
`doc/lispref' holds the source code for the Emacs Lisp reference manual.
`doc/lispintro' holds the source code for the Introduction to Programming
in Emacs Lisp manual.
@@ -85,10 +84,9 @@ There are several subdirectories:
to building and running Emacs on Windows 9X/ME/NT/2000/XP.
`test' holds tests for various aspects of Emacs's functionality.
- Building Emacs on non-Posix platforms requires to install tools
-that aren't part of the standard distribution of the OS. The
-platform-specific README files and installation instructions should
-list the required tools.
+ Building Emacs on non-Posix platforms requires tools that aren't part
+of the standard distribution of the OS. The platform-specific README
+files and installation instructions should list the required tools.
This file is part of GNU Emacs.
diff --git a/admin/ChangeLog b/admin/ChangeLog
index d3bc51bd9f6..6d114eae003 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-12 Glenn Morris <rgm@gnu.org>
+
+ * notes/nextstep: Move here from ../nextstep/DEV-NOTES.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * admin.el (set-version): Add doc/emacs/emacsver.texi.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * admin.el (set-version): No need to act on doc/ files any more.
+
+ * quick-install-emacs (PUBLIC_LIBSRC_BINARIES): Remove b2m.
+
2010-09-05 Juanma Barranquero <lekktu@gmail.com>
* unidata/BidiMirroring.txt: Update from
diff --git a/admin/admin.el b/admin/admin.el
index 51bbecf4c57..7cd2c02fb58 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -1,7 +1,7 @@
;;; admin.el --- utilities for Emacs administration
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+;; 2010 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
@@ -70,28 +70,13 @@ Root must be the root of an Emacs source tree."
(rx (and "AC_INIT" (1+ (not (in ?,)))
?, (0+ space)
(submatch (1+ (in "0-9."))))))
- (set-version-in-file root "doc/emacs/emacs.texi" version
+ (set-version-in-file root "doc/emacs/emacsver.texi" version
(rx (and "EMACSVER" (1+ space)
(submatch (1+ (in "0-9."))))))
- (set-version-in-file root "doc/lispref/elisp.texi" version
- (rx (and "EMACSVER" (1+ space)
- (submatch (1+ (in "0-9."))))))
- (set-version-in-file root "doc/lispref/vol1.texi" version
- (rx (and "EMACSVER" (1+ space)
- (submatch (1+ (in "0-9."))))))
- (set-version-in-file root "doc/lispref/vol2.texi" version
- (rx (and "EMACSVER" (1+ space)
- (submatch (1+ (in "0-9."))))))
- (set-version-in-file root "doc/lispref/book-spine.texinfo" version
- (rx (and "Emacs Version" (1+ space)
- (submatch (1+ (in "0-9."))))))
(set-version-in-file root "doc/man/emacs.1" version
(rx (and ".TH EMACS" (1+ not-newline)
"GNU Emacs" (1+ space)
(submatch (1+ (in "0-9."))))))
- (set-version-in-file root "doc/misc/faq.texi" version
- (rx (and "VER" (1+ space)
- (submatch (1+ (in "0-9."))))))
(set-version-in-file root "lib-src/makefile.w32-in" version
(rx (and "VERSION" (0+ space) "=" (0+ space)
(submatch (1+ (in "0-9."))))))
@@ -218,5 +203,4 @@ Root must be the root of an Emacs source tree."
(provide 'admin)
-;; arch-tag: 4ea83636-2293-408b-884e-ad64f22a3bf5
;;; admin.el ends here
diff --git a/nextstep/DEV-NOTES b/admin/notes/nextstep
index 462101f9abf..462101f9abf 100644
--- a/nextstep/DEV-NOTES
+++ b/admin/notes/nextstep
diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs
index 39b200b5102..24972e655b6 100755
--- a/admin/quick-install-emacs
+++ b/admin/quick-install-emacs
@@ -28,7 +28,7 @@
## install emacs very often. See the --help output for more details.
-PUBLIC_LIBSRC_BINARIES='b2m emacsclient etags ctags ebrowse'
+PUBLIC_LIBSRC_BINARIES='emacsclient etags ctags ebrowse'
PUBLIC_LIBSRC_SCRIPTS='grep-changelog rcs-checkin'
AVOID="CVS -DIC README COPYING ChangeLog ~ [.]orig$ [.]rej$ Makefile$ Makefile.in$ makefile$ makefile.w32-in$ stamp-subdir [.]cvsignore [.]arch-ids [{]arch[}] [.][cho]$ make-docfile testfile test-distrib"
@@ -374,5 +374,3 @@ END {
done
) | eval $EXEC
-
-# arch-tag: 9322b572-9755-4cf7-a67a-21e6505f1477
diff --git a/configure b/configure
index 2ee3423df4c..dcea52950b8 100755
--- a/configure
+++ b/configure
@@ -749,7 +749,6 @@ build_os
build_vendor
build_cpu
build
-PROFILING_LDFLAGS
PROFILING_CFLAGS
MAINT
GZIP_INFO
@@ -3038,14 +3037,11 @@ fi
if test x$ac_enable_profiling != x ; then
PROFILING_CFLAGS="-DPROFILING=1 -pg"
- PROFILING_LDFLAGS="-pg"
else
PROFILING_CFLAGS=
- PROFILING_LDFLAGS=
fi
-
# Check whether --enable-autodepend was given.
if test "${enable_autodepend+set}" = set; then :
enableval=$enable_autodepend; ac_enable_autodepend="${enableval}"
@@ -7679,19 +7675,19 @@ tmp_CPPFLAGS="$CPPFLAGS"
tmp_CFLAGS="$CFLAGS"
CPPFLAGS="$CPPFLAGS -x objective-c"
CFLAGS="$CFLAGS -x objective-c"
-TEMACS_LDFLAGS2="\${LDFLAGS} \${PROFILING_LDFLAGS}"
+TEMACS_LDFLAGS2="\${LDFLAGS}"
if test "${with_ns}" != no; then
if test "${opsys}" = darwin; then
NS_IMPL_COCOA=yes
- ns_appdir=`pwd`/nextstep/Emacs.app/
- ns_appbindir=${ns_appdir}Contents/MacOS/
- ns_appresdir=${ns_appdir}Contents/Resources
+ ns_appdir=`pwd`/nextstep/Emacs.app
+ ns_appbindir=${ns_appdir}/Contents/MacOS/
+ ns_appresdir=${ns_appdir}/Contents/Resources
ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
elif test -f $GNUSTEP_CONFIG_FILE; then
NS_IMPL_GNUSTEP=yes
- ns_appdir=`pwd`/nextstep/Emacs.app/
+ ns_appdir=`pwd`/nextstep/Emacs.app
ns_appbindir=${ns_appdir}
- ns_appresdir=${ns_appdir}Resources
+ ns_appresdir=${ns_appdir}/Resources
ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)"
@@ -7755,7 +7751,7 @@ if test "${HAVE_NS}" = yes; then
fi
ns_frag=$srcdir/src/ns.mk
NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o"
- NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc"
+ NS_SUPPORT="\${lispsource}/emacs-lisp/easymenu.elc \${lispsource}/term/ns-win.elc"
fi
CFLAGS="$tmp_CFLAGS"
CPPFLAGS="$tmp_CPPFLAGS"
@@ -8058,7 +8054,6 @@ int
main ()
{
char *data, *data2, *data3;
- const char *cdata2;
int i, pagesize;
int fd, fd2;
@@ -8083,10 +8078,10 @@ main ()
fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
if (fd2 < 0)
return 4;
- cdata2 = "";
- if (write (fd2, cdata2, 1) != 1)
+ data2 = "";
+ if (write (fd2, data2, 1) != 1)
return 5;
- data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
+ data2 = mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
if (data2 == MAP_FAILED)
return 6;
for (i = 0; i < pagesize; ++i)
@@ -9509,7 +9504,8 @@ $as_echo "no" >&6; }
fi
if test "${HAVE_GNUTLS}" = "yes"; then
- $as_echo "#define HAVE_GNUTLS 1" >>confdefs.h
+
+$as_echo "#define HAVE_GNUTLS 1" >>confdefs.h
fi
fi
@@ -14700,9 +14696,9 @@ $as_echo "#define HAVE_X11 1" >>confdefs.h
if test "$USE_X_TOOLKIT" = "none"; then
- OLDXMENU="\${oldXMenudir}libXMenu11.a"
+ OLDXMENU="\${oldXMenudir}/libXMenu11.a"
else
- OLDXMENU="\${lwlibdir}liblw.a"
+ OLDXMENU="\${lwlibdir}/liblw.a"
fi
LIBXMENU="\$(OLDXMENU)"
LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
@@ -14913,7 +14909,7 @@ $as_echo "#define HAVE_WINDOW_SYSTEM 1" >>confdefs.h
$as_echo "#define HAVE_MOUSE 1" >>confdefs.h
MOUSE_SUPPORT="\$(REAL_MOUSE_SUPPORT)"
- TOOLTIP_SUPPORT="\${lispsource}mouse.elc"
+ TOOLTIP_SUPPORT="\${lispsource}/mouse.elc"
WINDOW_SUPPORT="\$(BASE_WINDOW_SUPPORT)"
test "$HAVE_X_WINDOWS" = "yes" && \
diff --git a/configure.in b/configure.in
index 771ce78459b..43c0513c22e 100644
--- a/configure.in
+++ b/configure.in
@@ -325,13 +325,10 @@ AC_ARG_ENABLE(profiling,
[ac_enable_profiling="${enableval}"],[])
if test x$ac_enable_profiling != x ; then
PROFILING_CFLAGS="-DPROFILING=1 -pg"
- PROFILING_LDFLAGS="-pg"
else
PROFILING_CFLAGS=
- PROFILING_LDFLAGS=
fi
AC_SUBST(PROFILING_CFLAGS)
-AC_SUBST(PROFILING_LDFLAGS)
AC_ARG_ENABLE(autodepend,
[AS_HELP_STRING([--enable-autodepend],
@@ -850,14 +847,12 @@ fi
dnl Add our options to ac_link now, after it is set up.
-if test x$GCC = xyes && test "x$GCC_LINK_TEST_OPTIONS" != x
-then
- ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
-fi
-
-if test x$GCC = x && test "x$NON_GCC_LINK_TEST_OPTIONS" != x
-then
- ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
+if test x$GCC = xyes; then
+ test "x$GCC_LINK_TEST_OPTIONS" != x && \
+ ac_link="$ac_link $GCC_LINK_TEST_OPTIONS"
+else
+ test "x$NON_GCC_LINK_TEST_OPTIONS" != x && \
+ ac_link="$ac_link $NON_GCC_LINK_TEST_OPTIONS"
fi
dnl We need -znocombreloc if we're using a relatively recent GNU ld.
@@ -867,7 +862,7 @@ dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
dnl if not built to support GNU ld.
late_LDFLAGS=$LDFLAGS
-if test "$GCC" = yes; then
+if test x$GCC = xyes; then
LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
else
LDFLAGS="$LDFLAGS -znocombreloc"
@@ -1489,22 +1484,22 @@ tmp_CPPFLAGS="$CPPFLAGS"
tmp_CFLAGS="$CFLAGS"
CPPFLAGS="$CPPFLAGS -x objective-c"
CFLAGS="$CFLAGS -x objective-c"
-TEMACS_LDFLAGS2="\${LDFLAGS} \${PROFILING_LDFLAGS}"
+TEMACS_LDFLAGS2="\${LDFLAGS}"
dnl I don't think it's especially important, but src/Makefile.in
dnl (now the only user of ns_appdir) used to go to the trouble of adding a
dnl trailing "/" to it, so now we do it here.
if test "${with_ns}" != no; then
if test "${opsys}" = darwin; then
NS_IMPL_COCOA=yes
- ns_appdir=`pwd`/nextstep/Emacs.app/
- ns_appbindir=${ns_appdir}Contents/MacOS/
- ns_appresdir=${ns_appdir}Contents/Resources
+ ns_appdir=`pwd`/nextstep/Emacs.app
+ ns_appbindir=${ns_appdir}/Contents/MacOS/
+ ns_appresdir=${ns_appdir}/Contents/Resources
ns_appsrc=${srcdir}/nextstep/Cocoa/Emacs.base
elif test -f $GNUSTEP_CONFIG_FILE; then
NS_IMPL_GNUSTEP=yes
- ns_appdir=`pwd`/nextstep/Emacs.app/
+ ns_appdir=`pwd`/nextstep/Emacs.app
ns_appbindir=${ns_appdir}
- ns_appresdir=${ns_appdir}Resources
+ ns_appresdir=${ns_appdir}/Resources
ns_appsrc=${srcdir}/nextstep/GNUstep/Emacs.base
dnl FIXME sourcing this several times in subshells seems inefficient.
GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)"
@@ -1551,7 +1546,7 @@ if test "${HAVE_NS}" = yes; then
fi
ns_frag=$srcdir/src/ns.mk
NS_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o fontset.o fringe.o image.o"
- NS_SUPPORT="\${lispsource}emacs-lisp/easymenu.elc \${lispsource}term/ns-win.elc"
+ NS_SUPPORT="\${lispsource}/emacs-lisp/easymenu.elc \${lispsource}/term/ns-win.elc"
fi
CFLAGS="$tmp_CFLAGS"
CPPFLAGS="$tmp_CPPFLAGS"
@@ -3265,9 +3260,9 @@ if test "${HAVE_X11}" = "yes" ; then
Otherwise, Emacs expects to use version 10.])
if test "$USE_X_TOOLKIT" = "none"; then
- OLDXMENU="\${oldXMenudir}libXMenu11.a"
+ OLDXMENU="\${oldXMenudir}/libXMenu11.a"
else
- OLDXMENU="\${lwlibdir}liblw.a"
+ OLDXMENU="\${lwlibdir}/liblw.a"
fi
LIBXMENU="\$(OLDXMENU)"
LIBX_OTHER="\$(LIBXT) \$(LIBX_EXTRA)"
@@ -3473,7 +3468,7 @@ if test "$HAVE_X_WINDOWS" = "yes" || test "$HAVE_NS" = "yes"; then
AC_DEFINE(HAVE_WINDOW_SYSTEM, 1, [Define if you have a window system.])
AC_DEFINE(HAVE_MOUSE, 1, [Define if you have mouse support.])
MOUSE_SUPPORT="\$(REAL_MOUSE_SUPPORT)"
- TOOLTIP_SUPPORT="\${lispsource}mouse.elc"
+ TOOLTIP_SUPPORT="\${lispsource}/mouse.elc"
WINDOW_SUPPORT="\$(BASE_WINDOW_SUPPORT)"
test "$HAVE_X_WINDOWS" = "yes" && \
@@ -3540,17 +3535,14 @@ AH_BOTTOM([
#include config_opsysfile
#include config_machfile
-/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
- (There is probably a better place to do this, but right now the Cocoa
- side does this in s/darwin.h and we cannot
- parallel this exactly since GNUstep is multi-OS. */
-#ifdef HAVE_NS
-# ifdef NS_IMPL_GNUSTEP
/* GNUstep needs a bit more pure memory. Of the existing knobs,
-SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
+ SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems.
+ (There is probably a better place to do this, but right now the
+ Cocoa side does this in s/darwin.h and we cannot parallel this
+ exactly since GNUstep is multi-OS. */
+#if defined HAVE_NS && defined NS_IMPL_GNUSTEP
# define SYSTEM_PURESIZE_EXTRA 30000
-# endif /* NS_IMPL_GNUSTEP */
-#endif /* HAVE_NS */
+#endif
/* SIGTYPE is the macro we actually use. */
#ifndef SIGTYPE
@@ -3607,13 +3599,8 @@ SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
not define __STDC__ (e.g. DEC C by default) or may define it as zero. */
#undef PROTOTYPES
-#ifdef HAVE_STRING_H
#include <string.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
#include <stdlib.h>
-#endif
#ifdef HAVE_ALLOCA_H
# include <alloca.h>
@@ -3648,6 +3635,17 @@ typedef unsigned size_t;
#define NO_RETURN /* nothing */
#endif
+#if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */
+#define NO_INLINE __attribute__((noinline))
+#else
+#define NO_INLINE
+#endif
+
+/* Some versions of GNU/Linux define noinline in their headers. */
+#ifdef noinline
+#undef noinline
+#endif
+
/* These won't be used automatically yet. We also need to know, at least,
that the stack is continuous. */
#ifdef __GNUC__
@@ -3787,6 +3785,3 @@ fi
], [GCC="$GCC" NON_GNU_CPP="$NON_GNU_CPP" CPP="$CPP" CPPFLAGS="$CPPFLAGS"])
-m4_if(dnl Do not change this comment
- arch-tag: 156a4dd5-bddc-4d18-96ac-f37742cf6a5e
-)dnl
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 79a2b0ec2f2..5c0ff3da206 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,91 @@
+2010-10-11 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
+
+ * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
+ (DVIPS): New variable.
+ (.PHONY): Add html, ps.
+ (html, emacs.html, ps, emacs.ps, emacs-xtra.ps): New targets.
+ (clean): Delete html, ps files.
+
+2010-10-09 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (EMACSSOURCES): Add emacsver.texi.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (VPATH): Remove.
+ (infodir): Make it absolute.
+ (mkinfodir, $(infodir)/emacs, infoclean): No need to cd $srcdir.
+
+ * Makefile.in (dist): Anchor regexps.
+
+ * Makefile.in (EMACSSOURCES): Put emacs.texi first.
+ ($(infodir)/emacs, emacs.dvi, emacs.pdf, emacs-xtra.dvi)
+ (emacs-xtra.pdf): Use $<.
+
+ * Makefile.in (infoclean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New.
+ ($(infodir)/emacs): Use $mkinfodir instead of infodir.
+
+ * Makefile.in (distclean): Do not delete emacsver.texi.
+ (dist): Remove reference to emacsver.texi.in.
+ * emacsver.texi: New file, replacing emacsver.texi.in.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * emacsver.texi.in: New file.
+ * emacs.texi: Set EMACSVER by including emacsver.texi.
+ * Makefile.in (distclean): Delete emacsver.texi.
+ (dist): Copy emacsver.texi.
+ (EMACSSOURCES): Add emacsver.texi.
+
+ * ack.texi (Acknowledgments): No more b2m.c.
+
+ * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
+ (emacs): Remove rule.
+ (dist): No need to deal with the emacs rule any more.
+
+2010-10-07 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (version): New, set by configure.
+ (clean): Delete dist tar file.
+ (dist): Use version in tar name.
+
+2010-10-06 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (EMACS_XTRA): Add the main source file.
+ (emacs-xtra.dvi, emacs-xtra.pdf): Remove explicit emacs-xtra.texi.
+ (mostlyclean): No core files, reorder other files.
+ (clean): Delete specific dvi and pdf files.
+ (infoclean, dist): New rules.
+ (maintainer-clean): Use infoclean.
+ ($(infodir)): Add parallel build workaround.
+
+2010-10-04 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (SHELL): Set it.
+ (INFO_TARGETS, DVI_TARGETS): Remove variables.
+ (info, dvi): Replace above variables with their expansions.
+ (info): Move mkdir from here...
+ ($(infodir)/emacs): ... to here (for parallel builds).
+ (pdf): New target.
+ ($(infodir)/emacs): Pass -o option to makeinfo.
+ (.PHONY): Declare clean rules.
+ (maintainer-clean): Delete dvi and pdf files.
+ Guard against cd failures. Use a more restrictive delete.
+
+2010-10-02 Glenn Morris <rgm@gnu.org>
+
+ * misc.texi (Shell Mode): Remove reference to old function name.
+
+2010-09-30 Eli Zaretskii <eliz@gnu.org>
+
+ * maintaining.texi (VC Mode Line): Mention all the possible VC status
+ indicator characters.
+
2010-09-29 Glenn Morris <rgm@gnu.org>
* Makefile.in (top_srcdir): Remove unused variable.
@@ -7335,12 +7423,11 @@
;; Local Variables:
;; coding: utf-8
-;; fill-column: 79
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -7356,5 +7443,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: f1d62776-3ed5-4811-9d96-267252577dbd
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
index e2eb905128e..cdbd718a58d 100644
--- a/doc/emacs/Makefile.in
+++ b/doc/emacs/Makefile.in
@@ -19,41 +19,38 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+SHELL = /bin/sh
-# Where to find the source code. $(srcdir) will be the man
-# subdirectory of the source tree. This is
-# set by the configure script's `--srcdir' option.
+# Where to find the source code. $(srcdir) will be the doc/emacs subdirectory
+# of the source tree. This is set by configure's `--srcdir' option.
srcdir=@srcdir@
-# Tell make where to find source files; this is needed for the makefiles.
-VPATH=@srcdir@
+# Only for make dist.
+version=@version@
## Where the output files go.
## Note that the setfilename command in the .texi files assumes this.
-infodir=../../info
+## This is a bit funny. Because the info files are in the
+## distribution tarfiles, they are always made in $scrdir/../../info,
+## even for out-of-tree builds.
+infodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
-MAKEINFO = makeinfo --force
-
-INFO_TARGETS = $(infodir)/emacs
-DVI_TARGETS = emacs.dvi
-
+MAKEINFO = makeinfo --force -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
+DVIPS = dvips
-# The following rule does not work with all versions of `make'.
-.SUFFIXES: .texi .dvi
-.texi.dvi:
- $(TEXI2DVI) $<
ENVADD = TEXINPUTS="$(srcdir):$(texinfodir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
-EMACS_XTRA=\
+EMACS_XTRA= \
+ ${srcdir}/emacs-xtra.texi \
$(srcdir)/arevert-xtra.texi \
$(srcdir)/cal-xtra.texi \
$(srcdir)/dired-xtra.texi \
@@ -66,6 +63,7 @@ EMACS_XTRA=\
EMACSSOURCES= \
${srcdir}/emacs.texi \
+ ${srcdir}/emacsver.texi \
${srcdir}/doclicense.texi \
${srcdir}/gpl.texi \
${srcdir}/screen.texi \
@@ -111,56 +109,85 @@ EMACSSOURCES= \
${srcdir}/kmacro.texi \
$(EMACS_XTRA)
-info: $(infodir) $(INFO_TARGETS)
+## This seems pointless. The info/ directory exists in both the
+## repository and the release tarfiles. We do not use any
+## equivalent of mkdir -p/mkinstalldirs, so this is not a general
+## solution anyway. The second test -d is for parallel builds.
+mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
-$(infodir):
- mkdir $@
+.PHONY: info dvi html pdf ps
-dvi: $(DVI_TARGETS)
+info: $(infodir)/emacs
+dvi: emacs.dvi
+html: emacs.html
+pdf: emacs.pdf
+ps: emacs.ps
-# Note that all the Info targets build the Info files
-# in srcdir. There is no provision for Info files
-# to exist in the build directory.
+# Note that all the Info targets build the Info files in srcdir.
+# There is no provision for Info files to exist in the build directory.
# In a distribution of Emacs, the Info files should be up to date.
-emacs : $(infodir)/emacs
-
$(infodir)/emacs: ${EMACSSOURCES}
- cd $(srcdir); $(MAKEINFO) emacs.texi
+ $(mkinfodir)
+ $(MAKEINFO) -o $@ $<
emacs.dvi: ${EMACSSOURCES}
- $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi
+ $(ENVADD) $(TEXI2DVI) $<
+
+emacs.ps: emacs.dvi
+ $(DVIPS) -o $@ $<
emacs.pdf: ${EMACSSOURCES}
- $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs.texi
+ $(ENVADD) $(TEXI2PDF) $<
+emacs.html: ${EMACSSOURCES}
+ $(MAKEINFO) --html -o $@ $<
-emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
- $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi
+emacs-xtra.dvi: $(EMACS_XTRA)
+ $(ENVADD) $(TEXI2DVI) $<
-emacs-xtra.pdf: emacs-xtra.texi $(EMACS_XTRA)
- $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-xtra.texi
+emacs-xtra.ps: emacs-xtra.dvi
+ $(DVIPS) -o $@ $<
+emacs-xtra.pdf: $(EMACS_XTRA)
+ $(ENVADD) $(TEXI2PDF) $<
+.PHONY: mostlyclean clean distclean maintainer-clean infoclean
+
+## Temp files.
mostlyclean:
- rm -f *.log *.cp *.fn *.ky *.op *.ops *.pg *.vr core *.tp *.core
- rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
+## Products not in the release tarfiles.
clean: mostlyclean
- rm -f *.dvi
+ rm -f emacs.dvi emacs-xtra.dvi emacs.pdf emacs-xtra.pdf \
+ emacs.ps emacs-xtra.ps
+ rm -rf emacs.html/
+ rm -f emacs-manual-${version}.tar*
distclean: clean
-# rm -f Makefile
-
-maintainer-clean: distclean
- for file in $(INFO_TARGETS); do rm -f $${file}*; done
-
-
-# Formerly this directory had texindex.c and getopt.c in it
-# and this makefile built them to make texindex.
-# That caused trouble because this is run entirely in the source directory.
-# Since we expect to get texi2dvi from elsewhere,
-# it is ok to expect texindex from elsewhere also.
+## In the standalone tarfile, the clean rule runs this.
+infoclean:
+ -cd $(infodir) && rm -f emacs emacs-[1-9] emacs-[1-9][0-9]
+
+maintainer-clean: distclean infoclean
+
+.PHONY: dist
+
+## Make a standalone tarfile of the Emacs manual sources.
+## The [c] is a dumb way to prevent configure expanding it.
+dist:
+ rm -rf emacs-manual-${version}
+ mkdir emacs-manual-${version}
+ cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \
+ ${srcdir}/ChangeLog* emacs-manual-${version}/
+ sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \
+ -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \
+ -e "s/@ver[s]ion@/${version}/" \
+ ${srcdir}/Makefile.in > emacs-manual-${version}/Makefile
+ tar -cf emacs-manual-${version}.tar emacs-manual-${version}
+ rm -rf emacs-manual-${version}
### Makefile ends here
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 7277a395ff4..3b22392b12e 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -1321,10 +1321,6 @@ Directory Client; and @code{eshell}, a command shell implemented
entirely in Emacs Lisp. He also contributed to Org mode (q.v.@:).
@item
-Ed Wilkinson wrote @file{b2m.c}, a program to convert mail files from
-RMAIL format to Unix @code{mbox} format.
-
-@item
Mike Williams wrote @file{mouse-sel.el}, providing enhanced mouse
selection; and @file{thingatpt.el}, a library of functions for finding
the ``thing'' (word, line, s-expression) containing point.
@@ -1418,7 +1414,3 @@ Detlev Zundel wrote @file{re-builder.el}, a package for building regexps
with visual feedback.
@end itemize
-
-@ignore
- arch-tag: bb1d0fa4-0240-4992-b5d4-8602d1e3d4ba
-@end ignore
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 17337d2c592..1ece1ea6dd8 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -5,7 +5,7 @@
@c The edition number appears in several places in this file
@set EDITION Sixteenth
-@set EMACSVER 24.0.50
+@include emacsver.texi
@copying
This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},@*
@@ -51,7 +51,6 @@ developing GNU and promoting software freedom.''
@tex
@ifset smallbook
@fonttextsize 10
-@set EMACSVER 22
\global\let\urlcolor=\Black % don't print links in grayscale
\global\let\linkcolor=\Black
@end ifset
@@ -1575,7 +1574,3 @@ Lisp programming.
@printindex cp
@bye
-
-@ignore
- arch-tag: ed48740a-410b-46ea-9387-c9a9252a3392
-@end ignore
diff --git a/doc/emacs/emacsver.texi b/doc/emacs/emacsver.texi
new file mode 100644
index 00000000000..ffa860585ba
--- /dev/null
+++ b/doc/emacs/emacsver.texi
@@ -0,0 +1,4 @@
+@c It would be nicer to generate this using configure and @version@.
+@c However, that would mean emacsver.texi would always be newer
+@c then the info files in release tarfiles.
+@set EMACSVER 24.0.50
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index f5a93ec60e7..b407f5b9c99 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -362,10 +362,16 @@ change, and later use the @kbd{C-x v a} command to copy it to
@node VC Mode Line
@subsection Version Control and the Mode Line
+@cindex VC, mode line indicator
When you visit a file that is under version control, Emacs indicates
-this on the mode line. For example, @samp{RCS-1.3} says that RCS is
-used for that file, and the current version is 1.3.
+this on the mode line. For example, @samp{RCS-1.3} says that the RCS
+back end is used for that file, and the current version of the file is
+1.3.
+
+ The first part of the VC mode-line indicator is the name of the back
+end: @samp{RCS}, @samp{CVS}, @samp{Bzr}, etc. The back-end name is
+followed by a single character and the version of the file.
The character between the back-end name and the revision ID
indicates the version control status of the file. @samp{-} means that
@@ -373,6 +379,12 @@ the work file is not locked (if locking is in use), or not modified (if
locking is not in use). @samp{:} indicates that the file is locked, or
that it is modified. If the file is locked by some other user (for
instance, @samp{jim}), that is displayed as @samp{RCS:jim:1.3}.
+@samp{@@} means that the file was locally added, but not yet committed
+to the master repository. @samp{!} indicates that the file contains
+conflicts as result of a recent merge operation (@pxref{Merging}), or
+that the file was removed from the version control. Finally, @samp{?}
+means that the file is under version control, but is missing from the
+working tree.
On a graphical display, you can move the mouse over this mode line
indicator to pop up a ``tool-tip'', which displays a more verbose
diff --git a/doc/emacs/makefile.w32-in b/doc/emacs/makefile.w32-in
index 7e2aa36a5f0..213077cbc8f 100644
--- a/doc/emacs/makefile.w32-in
+++ b/doc/emacs/makefile.w32-in
@@ -56,6 +56,7 @@ EMACS_XTRA=\
EMACSSOURCES= \
$(srcdir)/emacs.texi \
+ $(srcdir)/emacsver.texi \
$(srcdir)/doclicense.texi \
$(srcdir)/screen.texi \
$(srcdir)/commands.texi \
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index ea4b39bdece..11d6ad70e62 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -786,8 +786,7 @@ pending in the shell buffer and not yet sent.
@findex comint-delete-output
Delete the last batch of output from a shell command
(@code{comint-delete-output}). This is useful if a shell command spews
-out lots of output that just gets in the way. This command used to be
-called @code{comint-kill-output}.
+out lots of output that just gets in the way.
@item C-c C-s
@kindex C-c C-s @r{(Shell mode)}
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index ff227a1f119..101e5b1d8b7 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,3 +1,53 @@
+2010-10-11 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (.dvi.ps): Remove unnecessary suffix rule.
+ (.PHONY): Add ps.
+ (ps, emacs-lisp-intro.ps): New targets.
+ (clean): Delete ps file.
+ (MAKEINFO): Use --force like the other doc/ Makefiles do.
+ Add explicit -I$srcdir.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (VPATH): Remove.
+ (infodir): Make it absolute.
+ (mkinfodir, $(infodir)/eintr, infoclean): No need to cd $srcdir.
+
+ * Makefile.in (dist): Anchor regexps.
+
+ * Makefile.in (${infodir}/eintr, emacs-lisp-intro.dvi)
+ (emacs-lisp-intro.pdf, emacs-lisp-intro.html): Use $<.
+
+ * Makefile.in (infoclean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New.
+ ($(infodir)/eintr): Use $mkinfodir instead of infodir.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (.PHONY): Declare info, dvi, html, pdf, dist.
+
+2010-10-07 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (version): New, set by configure.
+ (clean): Delete dist tar file.
+ (dist): Use version in tar name.
+
+2010-10-06 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (SHELL): Use /bin/sh, like every other Makefile.in.
+ (INFO_SOURCES, INFO_TARGETS, DVI_TARGETS): Remove variables.
+ ($(infodir), html, pdf, infoclean, dist): New rules.
+ (${infodir}/eintr): Ensure $infodir exists. Use $@.
+ (emacs-lisp-intro.dvi, emacs-lisp-intro.pdf, emacs-lisp-intro.html):
+ Use $^.
+ (.PHONY): Declare clean rules.
+ (mostlyclean): Delete more temp files.
+ (clean): Delete specific dvi, pdf and html files.
+ (maintainer-clean): Use infoclean.
+ (.NOEXPORT): Remove, unused by any other Makefile.in.
+
2010-09-21 Glenn Morris <rgm@gnu.org>
* cons-1.eps, cons-2.eps, cons-2a.eps, cons-3.eps, cons-4.eps:
@@ -392,11 +442,10 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -412,5 +461,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: ee4f8e1f-e14c-4d2e-86de-4dd697e6f1c3
diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in
index d834ef70889..366a0a10e5d 100644
--- a/doc/lispintro/Makefile.in
+++ b/doc/lispintro/Makefile.in
@@ -1,7 +1,8 @@
#### Makefile for the Emacs Lisp Introduction manual
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
-# 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -18,60 +19,80 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-SHELL = @SHELL@
+SHELL = /bin/sh
srcdir = @srcdir@
-VPATH = @srcdir@
+version=@version@
-infodir = ../../info
+infodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
-INFO_SOURCES = ${srcdir}/emacs-lisp-intro.texi
-# The file name eintr must fit within 5 characters, to allow for
-# -NN extensions to fit into DOS 8+3 limits without clashing
-INFO_TARGETS = ${infodir}/eintr
-DVI_TARGETS = emacs-lisp-intro.dvi
-
-MAKEINFO = makeinfo
+MAKEINFO = makeinfo --force -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
DVIPS = dvips
-.SUFFIXES: .dvi .ps .texi
+mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
-info: $(INFO_TARGETS)
+.PHONY: info dvi html pdf ps
-dvi: $(DVI_TARGETS)
+info: ${infodir}/eintr
-${infodir}/eintr: ${INFO_SOURCES}
- cd $(srcdir); $(MAKEINFO) emacs-lisp-intro.texi -o $(infodir)/eintr
+dvi: emacs-lisp-intro.dvi
+html: emacs-lisp-intro.html
+pdf: emacs-lisp-intro.pdf
+ps: emacs-lisp-intro.ps
+
+# The file name eintr must fit within 5 characters, to allow for
+# -NN extensions to fit into DOS 8+3 limits without clashing.
+${infodir}/eintr: ${srcdir}/emacs-lisp-intro.texi
+ $(mkinfodir)
+ $(MAKEINFO) -o $@ $<
-emacs-lisp-intro.dvi: ${INFO_SOURCES}
- $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $(srcdir)/emacs-lisp-intro.texi
+emacs-lisp-intro.dvi: ${srcdir}/emacs-lisp-intro.texi
+ $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $<
-emacs-lisp-intro.pdf: ${INFO_SOURCES}
- $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $(srcdir)/emacs-lisp-intro.texi
+emacs-lisp-intro.ps: emacs-lisp-intro.dvi
+ $(DVIPS) -o $@ $<
-emacs-lisp-intro.html: $(INFO_SOURCES)
- $(MAKEINFO) --html -o $@ $(srcdir)/emacs-lisp-intro.texi
+emacs-lisp-intro.pdf: ${srcdir}/emacs-lisp-intro.texi
+ $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $<
-.dvi.ps:
- $(DVIPS) $< -o $@
+emacs-lisp-intro.html: ${srcdir}/emacs-lisp-intro.texi
+ $(MAKEINFO) --html -o $@ $<
+
+.PHONY: mostlyclean clean distclean maintainer-clean infoclean
mostlyclean:
- rm -f *.log *.cp *.fn *.ky *.pg *.vr *.tp
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
clean: mostlyclean
- rm -f *.dvi
+ rm -f emacs-lisp-intro.dvi emacs-lisp-intro.pdf emacs-lisp-intro.ps
+ rm -rf emacs-lisp-intro.html/
+ rm -f emacs-lispintro-${version}.tar*
distclean: clean
-maintainer-clean: distclean
- rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
- cd $(infodir); rm -f eintr eintr-[1-9]
+infoclean:
+ -cd $(infodir) && rm -f eintr eintr-[1-9]
+
+maintainer-clean: distclean infoclean
+
+.PHONY: dist
+
+dist:
+ rm -rf emacs-lispintro-${version}
+ mkdir emacs-lispintro-${version}
+ cp ${srcdir}/*.texi ${srcdir}/*.eps ${srcdir}/*.pdf \
+ ${texinfodir}/texinfo.tex \
+ ${srcdir}/ChangeLog* ${srcdir}/README emacs-lispintro-${version}/
+ sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \
+ -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \
+ -e "s/@ver[s]ion@/${version}/" \
+ ${srcdir}/Makefile.in > emacs-lispintro-${version}/Makefile
+ tar -cf emacs-lispintro-${version}.tar emacs-lispintro-${version}
+ rm -rf emacs-lispintro-${version}
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
+### Makefile ends here
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index ec065e9ce76..f5878dfed74 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,102 @@
+2010-10-15 Eli Zaretskii <eliz@gnu.org>
+
+ * os.texi (Dynamic Libraries): New node, with slightly modified
+ text deleted from "Image Formats".
+ (System Interface): Add @menu entry for "Dynamic Libraries".
+
+ * display.texi (Image Formats): Remove description of
+ image-library-alist. (Renamed in 2010-10-13T14:50:06Z!lekktu@gmail.com.)
+
+2010-10-12 Glenn Morris <rgm@gnu.org>
+
+ * book-spine.texinfo: Rename to book-spine.texi.
+
+2010-10-11 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (MAKEINFO): Add explicit -I$srcdir.
+
+ * Makefile.in (DVIPS): New variable.
+ (.PHONY): Add html, ps.
+ (html, elisp.html, ps, elisp.ps): New targets.
+ (clean): Delete html, ps files.
+ ($(infodir)/elisp): Remove unnecessary includes.
+
+2010-10-09 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (emacsdir): New variable.
+ (srcs): Add emacsver.texi.
+ ($(infodir)/elisp, elisp.dvi): Add -I$(emacsdir).
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (VPATH): Remove.
+ (infodir): Make it absolute.
+ (mkinfodir, $(infodir)/elisp, infoclean): No need to cd $srcdir.
+
+ * Makefile.in (dist): Anchor regexps.
+
+ * Makefile.in (srcs): Put elisp.texi first.
+ ($(infodir)/elisp, elisp.dvi, elisp.pdf): Use $<.
+
+ * Makefile.in (infoclean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New.
+ ($(infodir)/elisp): Use $mkinfodir instead of infodir.
+
+ * Makefile.in (dist): Remove reference to emacsver.texi.in.
+ Also copy emacsver.texi, and edit $emacsdir.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (emacsdir): New variable.
+ (MAKEINFO): Add -I $emacsdir.
+ (dist): Copy emacsver.texi.
+ (srcs): Add emacsver.texi.
+
+ * book-spine.texinfo, elisp.texi, vol2.texi, vol1.texi:
+ Set EMACSVER by including emacsver.texi.
+
+ * Makefile.in (.PHONY): Declare info, dvi, pdf, dist.
+
+2010-10-07 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (version): New, set by configure.
+ (clean): Delete dist tar file.
+ (dist): Use version in tar name.
+
+2010-10-06 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in: Rearrange to more closely resemble doc/emacs/Makefile.
+ (INSTALL_INFO): Remove unused variable.
+ (mostlyclean, infoclean, dist): New rules.
+ (clean): Delete dvi and pdf files.
+ (maintainer-clean): Remove elisp.oaux, use infoclean.
+ ($(infodir)): Add parallel build workaround.
+
+2010-10-04 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (dvi, pdf, $(infodir)): New targets.
+ ($(infodir)/elisp): Ensure target directory exists. Use $@.
+ Fix -I typo.
+ (clean): No 'make.out' or 'core' files.
+ (.PHONY): Declare clean rules.
+ (maintainer-clean): Delete pdf file. Guard against cd failures.
+
+2010-10-03 Glenn Morris <rgm@gnu.org>
+
+ * files.texi (File Name Components): Remove ignored section about
+ deleted variable directory-sep-char.
+
+2010-10-03 Michael Albinus <michael.albinus@gmx.de>
+
+ * files.texi (Magic File Names): New defopt
+ remote-file-name-inhibit-cache.
+
+2010-10-02 Glenn Morris <rgm@gnu.org>
+
+ * os.texi (Killing Emacs): Hook now runs in batch mode.
+
2010-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
* text.texi (Special Properties): Clarify when modification-hooks run.
@@ -2420,6 +2519,12 @@
* display.texi (Images): Delete redundant @findex.
+2007-08-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * text.texi (Change Hooks): (after|before)-change-functions are no
+ longer bound to nil while running; rather inhibit-modification-hooks
+ is t.
+
2007-08-16 Richard Stallman <rms@gnu.org>
* processes.texi (Asynchronous Processes): Clarify
@@ -8652,11 +8757,10 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -8672,5 +8776,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;;; arch-tag: 985ae0ce-df29-475b-b3f8-4bbcbf6f7fda
diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in
index bc13a63b1b0..f1caa9abfa2 100644
--- a/doc/lispref/Makefile.in
+++ b/doc/lispref/Makefile.in
@@ -19,26 +19,29 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+SHELL = /bin/sh
# Standard configure variables.
srcdir = @srcdir@
-# Tell make where to find source files; this is needed for the makefiles.
-VPATH=@srcdir@
+version=@version@
-infodir = ../../info
+infodir = $(srcdir)/../../info
# Directory with the (customized) texinfo.tex file.
texinfodir = $(srcdir)/../misc
+# Directory with emacsver.texi.
+emacsdir = $(srcdir)/../emacs
+MAKEINFO = makeinfo --force -I $(emacsdir) -I $(srcdir)
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
-SHELL = /bin/sh
-INSTALL_INFO = install-info
-MAKEINFO = makeinfo --force
+DVIPS = dvips
# List of all the texinfo files in the manual:
srcs = \
+ $(srcdir)/elisp.texi \
+ $(emacsdir)/emacsver.texi \
$(srcdir)/abbrevs.texi \
$(srcdir)/advice.texi \
$(srcdir)/anti.texi \
@@ -52,7 +55,6 @@ srcs = \
$(srcdir)/debugging.texi \
$(srcdir)/display.texi \
$(srcdir)/edebug.texi \
- $(srcdir)/elisp.texi \
$(srcdir)/errors.texi \
$(srcdir)/eval.texi \
$(srcdir)/files.texi \
@@ -92,28 +94,67 @@ srcs = \
$(srcdir)/gpl.texi \
$(srcdir)/doclicense.texi
+mkinfodir = @test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
-.PHONY: clean
+.PHONY: info dvi pdf ps
-# The info file is named `elisp'.
info: $(infodir)/elisp
+dvi: elisp.dvi
+html: elisp.html
+pdf: elisp.pdf
+ps: elisp.ps
$(infodir)/elisp: $(srcs)
- cd $(srcdir); $(MAKEINFO) -I. -I$(infodir) elisp.texi -o $(infodir)/elisp
+ $(mkinfodir)
+ $(MAKEINFO) -o $@ $<
elisp.dvi: $(srcs)
- $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $(srcdir)/elisp.texi
+ $(TEXI2DVI) -I $(srcdir) -I $(texinfodir) $<
+
+elisp.html: $(srcs)
+ $(MAKEINFO) --html -o $@ $<
+
+elisp.ps: elisp.dvi
+ $(DVIPS) -o $@ $<
elisp.pdf: $(srcs)
- $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $(srcdir)/elisp.texi
+ $(TEXI2PDF) -I $(srcdir) -I $(texinfodir) $<
+
+.PHONY: mostlyclean clean distclean maintainer-clean infoclean
+
+## [12] stuff is from two-volume.make.
+mostlyclean:
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
+ rm -f elisp[12]*
-clean:
- rm -f *.toc *.aux *.log *.cp *.cps *.fn *.fns *.tp *.tps \
- *.vr *.vrs *.pg *.pgs *.ky *.kys elisp[12]*
- rm -f make.out core
+clean: mostlyclean
+ rm -f elisp.dvi elisp.pdf elisp.ps vol[12].pdf
+ rm -rf elisp.html
+ rm -f emacs-lispref-${version}.tar*
distclean: clean
-maintainer-clean: clean
- rm -f elisp.dvi elisp.oaux
- cd $(infodir); rm -f elisp elisp-[1-9] elisp-[1-9][0-9]
+infoclean:
+ -cd $(infodir) && rm -f elisp elisp-[1-9] elisp-[1-9][0-9]
+
+maintainer-clean: distclean infoclean
+
+.PHONY: dist
+
+## Note this excludes the two-volume stuff.
+dist:
+ rm -rf emacs-lispref-${version}
+ mkdir emacs-lispref-${version}
+ cp ${srcdir}/*.texi ${texinfodir}/texinfo.tex \
+ $(emacsdir)/emacsver.texi ${srcdir}/ChangeLog* \
+ ${srcdir}/README emacs-lispref-${version}/
+ sed -e 's/@sr[c]dir@/./' -e 's/^\(texinfodir *=\).*/\1 ./' \
+ -e 's/^\(emacsdir *=\).*/\1 ./' \
+ -e 's/^\(infodir *=\).*/\1 ./' -e 's/^\(clean:.*\)/\1 infoclean/' \
+ -e "s/@ver[s]ion@/${version}/" \
+ ${srcdir}/Makefile.in > emacs-lispref-${version}/Makefile
+ tar -cf emacs-lispref-${version}.tar emacs-lispref-${version}
+ rm -rf emacs-lispref-${version}
+
+### Makefile ends here
diff --git a/doc/lispref/book-spine.texinfo b/doc/lispref/book-spine.texi
index 732df503ec0..270def6d8b3 100644
--- a/doc/lispref/book-spine.texinfo
+++ b/doc/lispref/book-spine.texi
@@ -4,6 +4,8 @@
@settitle book-spine
@c %**end of header
+@include emacsver.texi
+
@c need dot in text so first space command works!
.
@sp 7
@@ -11,7 +13,7 @@
@center @titlefont{GNU Emacs Lisp Reference Manual}
@sp 5
@center GNU
-@center Emacs Version 24.0.50
+@center Emacs Version @value{EMACSVER}
@center for Unix Users
@sp 5
@@ -23,7 +25,3 @@
@sp 5
@center Free Software Foundation
@bye
-
-@ignore
- arch-tag: 4466c7ca-e549-4119-948c-6eed34e1ff87
-@end ignore
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 037c334ab88..f4092cfa7ea 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -4055,10 +4055,12 @@ displayed (@pxref{Display Feature Testing}).
Emacs can display a number of different image formats; some of them
are supported only if particular support libraries are installed on
-your machine. In some environments, Emacs can load image
-libraries on demand; if so, the variable @code{image-library-alist}
-can be used to modify the set of known names for these dynamic
-libraries (though it is not possible to add new image formats).
+your machine. In some environments, Emacs can load support libraries
+on demand; if so, the variable @code{dynamic-library-alist}
+(@pxref{Dynamic Libraries}) can be used to modify the set of known
+names for these dynamic libraries (though it is not possible to add
+new image formats). Note that image types @code{pbm} and @code{xbm}
+do not depend on external libraries and are always available in Emacs.
The supported image formats include XBM, XPM (this requires the
libraries @code{libXpm} version 3.4k and @code{libz}), GIF (requiring
@@ -4082,24 +4084,6 @@ To know which image types are really available, use
@code{image-type-available-p}.
@end defvar
-@defvar image-library-alist
-This in an alist of image types vs external libraries needed to
-display them.
-
-Each element is a list @code{(@var{image-type} @var{library}...)},
-where the car is a supported image format from @code{image-types}, and
-the rest are strings giving alternate filenames for the corresponding
-external libraries to load.
-
-Emacs tries to load the libraries in the order they appear on the
-list; if none is loaded, the running session of Emacs won't support
-the image type. @code{pbm} and @code{xbm} don't need to be listed;
-they're always supported.
-
-This variable is ignored if the image libraries are statically linked
-into Emacs.
-@end defvar
-
@defun image-type-available-p type
This function returns non-@code{nil} if image type @var{type} is
available, i.e., if images of this type can be loaded and displayed in
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 7f0a2ff5a37..252c6afb1bd 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -8,7 +8,7 @@
@c Please remember to update the edition number in README as well.
@c And also the copies in vol1.texi and vol2.texi.
@set VERSION 3.0
-@set EMACSVER 24.0.50
+@include emacsver.texi
@set DATE July 2009
@c in general, keep the following line commented out, unless doing a
@@ -1530,7 +1530,3 @@ Object Internals
These words prevent "local variables" above from confusing Emacs.
-
-@ignore
- arch-tag: f7e9a219-a0e1-4776-b631-08eaa1d49b34
-@end ignore
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 23fd2376a57..2b539f00975 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1758,20 +1758,6 @@ Note that the @samp{.~3~} in the two last examples is the backup part,
not an extension.
@end defun
-@ignore
-Andrew Innes says that this
-
-@c @defvar directory-sep-char
-This variable holds the character that Emacs normally uses to separate
-file name components. The default value is @code{?/}, but on MS-Windows
-you can set it to @code{?\\}; then the functions that transform file names
-use backslashes in their output.
-
-File names using backslashes work as input to Lisp primitives even on
-MS-DOS and MS-Windows, even if @code{directory-sep-char} has its default
-value of @code{?/}.
-@end defvar
-@end ignore
@node Relative File Names
@subsection Absolute and Relative File Names
@@ -2857,6 +2843,34 @@ non-magic directory to serve as its current directory, and this function
is a good way to come up with one.
@end defun
+@defopt remote-file-name-inhibit-cache
+Whether to use the remote file-name cache for read access.
+
+File attributes of remote files are cached for better performance. If
+they are changed out of Emacs' control, the cached values become
+invalid, and must be reread.
+
+When set to @code{nil}, cached values are always used. This shall be
+set with care. When set to @code{t}, cached values are never used.
+ALthough this is the safest value, it could result in performance
+degradation.
+
+A compromise is to set it to a positive number. This means that
+cached values are used for that amount of seconds since they were
+cached.
+
+In case a remote file is checked regularly, it might be reasonable to
+let-bind this variable to a value less then the time period between
+two checks. Example:
+
+@example
+(defun display-time-file-nonempty-p (file)
+ (let ((remote-file-name-inhibit-cache (- display-time-interval 5)))
+ (and (file-exists-p file)
+ (< 0 (nth 7 (file-attributes (file-chase-links file)))))))
+@end example
+@end defopt
+
@node Format Conversion
@section File Format Conversion
diff --git a/doc/lispref/makefile.w32-in b/doc/lispref/makefile.w32-in
index 008870b3c5c..86a0de33095 100644
--- a/doc/lispref/makefile.w32-in
+++ b/doc/lispref/makefile.w32-in
@@ -25,6 +25,9 @@ srcdir = .
infodir = $(srcdir)/../../info
usermanualdir = $(srcdir)/../emacs
+# Directory with emacsver.texi.
+emacsdir = $(srcdir)/../emacs
+
# Redefine `TEX' if `tex' does not invoke plain TeX. For example:
# TEX=platex
TEX=tex
@@ -43,6 +46,7 @@ manual = elisp-manual-23-$(VERSION)
# List of all the texinfo files in the manual:
srcs = \
+ $(emacsdir)/emacsver.texi \
$(srcdir)/abbrevs.texi \
$(srcdir)/advice.texi \
$(srcdir)/anti.texi \
@@ -107,10 +111,12 @@ $(infodir)/dir:
$(INSTALL_INFO) --info-dir=$(infodir) $(infodir)/elisp
$(infodir)/elisp: $(srcs)
- $(MAKEINFO) -I. -I$(srcdir) -o $(infodir)/elisp $(srcdir)/elisp.texi
+ $(MAKEINFO) -I. -I$(srcdir) -I$(emacsdir) \
+ -o $(infodir)/elisp $(srcdir)/elisp.texi
elisp.dvi: $(srcs)
- $(texinputdir) $(TEX) -I $(usermanualdir) $(srcdir)/elisp.texi
+ $(texinputdir) $(TEX) -I $(usermanualdir) -I$(emacsdir) \
+ $(srcdir)/elisp.texi
clean:
- $(DEL) *.toc *.aux *.log *.cp *.cps *.fn *.fns *.tp *.tps \
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index dd827234272..e99e3fe89d8 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -37,6 +37,7 @@ terminal and the screen.
* X11 Keysyms:: Operating on key symbols for X Windows.
* Batch Mode:: Running Emacs without terminal interaction.
* Session Management:: Saving and restoring state with X Session Management.
+* Dynamic Libraries:: On-demand loading of support libraries.
@end menu
@node Starting Up
@@ -577,7 +578,6 @@ does not run the remaining functions in this hook. Calling
This variable is a normal hook; once @code{save-buffers-kill-emacs} is
finished with all file saving and confirmation, it calls
@code{kill-emacs} which runs the functions in this hook.
-@code{kill-emacs} does not run this hook in batch mode.
@code{kill-emacs} may be invoked directly (that is not via
@code{save-buffers-kill-emacs}) if the terminal is disconnected, or in
@@ -2187,6 +2187,57 @@ Emacs is restarted by the session manager.
@end group
@end example
+@node Dynamic Libraries
+@section Dynamically Loaded Libraries
+@cindex dynamic libraries
+
+ A @dfn{dynamically loaded library} is a library that is loaded on
+demand, when its facilities are first needed. Emacs supports such
+on-demand loading of support libraries for some of its features.
+
+@defvar dynamic-library-alist
+This is an alist of dynamic libraries and external library files
+implementing them.
+
+Each element is a list of the form
+@w{@code{(@var{library} @var{files}@dots{})}}, where the @code{car} is
+a symbol representing a supported external library, and the rest are
+strings giving alternate filenames for that library.
+
+Emacs tries to load the library from the files in the order they
+appear in the list; if none is found, the running session of Emacs
+won't have access to that library, and the features that depend on the
+library will be unavailable.
+
+Image support on some platforms uses this facility. Here's an example
+of setting this variable for supporting images on MS-Windows:
+
+@lisp
+(setq dynamic-library-alist
+ '((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")
+ (png "libpng12d.dll" "libpng12.dll" "libpng.dll"
+ "libpng13d.dll" "libpng13.dll")
+ (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
+ (tiff "libtiff3.dll" "libtiff.dll")
+ (gif "giflib4.dll" "libungif4.dll" "libungif.dll")
+ (svg "librsvg-2-2.dll")
+ (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
+ (glib "libglib-2.0-0.dll")
+ (gobject "libgobject-2.0-0.dll")))
+@end lisp
+
+Note that image types @code{pbm} and @code{xbm} do not need entries in
+this variable because they do not depend on external libraries and are
+always available in Emacs.
+
+Also note that this variable is not meant to be a generic facility for
+accessing external libraries; only those already known by Emacs can
+be loaded through it.
+
+This variable is ignored if the given @var{library} is statically
+linked into Emacs.
+@end defvar
+
@ignore
arch-tag: 8378814a-30d7-467c-9615-74a80b9988a7
@end ignore
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index b4b4c23b1ed..6cc7d451a6e 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -918,7 +918,11 @@ for Font Lock mode.
If the optional argument @var{paren} is non-@code{nil}, then the
returned regular expression is always enclosed by at least one
parentheses-grouping construct. If @var{paren} is @code{words}, then
-that construct is additionally surrounded by @samp{\<} and @samp{\>}.
+that construct is additionally surrounded by @samp{\<} and @samp{\>};
+alternatively, if @var{paren} is @code{symbols}, then that construct
+is additionally surrounded by @samp{\_<} and @samp{\_>}
+(@code{symbols} is often appropriate when matching
+programming-language keywords and the like).
This simplified definition of @code{regexp-opt} produces a
regular expression which is equivalent to the actual value
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index cbc26ebcec6..3ac3f58a330 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -27,7 +27,7 @@
@c Version of the manual and of Emacs.
@c Please remember to update the edition number in README as well.
@set VERSION 3.0
-@set EMACSVER 24.0.50
+@include emacsver.texi
@set DATE July 2009
@dircategory Emacs
@@ -1550,7 +1550,3 @@ Object Internals
These words prevent "local variables" above from confusing Emacs.
-
-@ignore
- arch-tag: 9594760d-8801-4d1b-aeb9-f3b3166b5be2
-@end ignore
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 44052e5bd5d..59222ad00e2 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -27,7 +27,7 @@
@c Version of the manual and of Emacs.
@c Please remember to update the edition number in README as well.
@set VERSION 3.0
-@set EMACSVER 24.0.50
+@include emacsver.texi
@set DATE July 2009
@dircategory Emacs
@@ -1549,7 +1549,3 @@ Object Internals
These words prevent "local variables" above from confusing Emacs.
-
-@ignore
- arch-tag: dfdbecf8-fec2-49c1-8427-3e8ac8b0b849
-@end ignore
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index 4688c27f9b5..f2810be7f97 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -1,3 +1,15 @@
+2010-10-12 Glenn Morris <rgm@gnu.org>
+
+ * emacs.1: Small fixes.
+
+2010-10-12 Ulrich Mueller <ulm@gentoo.org>
+
+ * emacs.1: Update license description.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * b2m.1: Remove file.
+
2010-09-25 Ulrich Mueller <ulm@gentoo.org>
* etags.1: xz compression is now supported.
diff --git a/doc/man/b2m.1 b/doc/man/b2m.1
deleted file mode 100644
index ae361573c33..00000000000
--- a/doc/man/b2m.1
+++ /dev/null
@@ -1,64 +0,0 @@
-.\" See section COPYING for copyright and redistribution information.
-.TH b2m 1
-.SH NAME
-b2m \- convert old Emacs Rmail Babyl format to mbox format
-.SH SYNOPSIS
-.B b2m
-<
-.I babyl-file
->
-.I mbox-file
-.SH DESCRIPTION
-.B b2m
-accepts Babyl format mail (as used by older versions of
-.BR Rmail
-in
-.BR "GNU Emacs" )
-on standard input, and converts it to mbox format on standard output.
-Babyl was the storage format used by Rmail prior to Emacs 23.1. Since
-then, it uses standard mbox format. This program is distributed with
-.BR "GNU Emacs" .
-.PP
-.SH OPTIONS
-The program accepts unambiguous abbreviations for long option names.
-.TP
-.B \-V, \-\-version
-Display version information.
-.TP
-.B \-h, \-\-help
-Display basic usage information.
-.
-.SH SEE ALSO
-The Babyl format is described in the file
-.B etc/BABYL
-in the Emacs distribution.
-.B Rmail
-is documented in the GNU Emacs manual, which you can read using
-.BR Info ,
-either from Emacs or as a standalone program.
-.
-.SH AUTHORS
-.I b2m
-was originally written by Ed Wilkinson. Francesco Potorti updated it
-according to the GNU coding standards.
-.SH COPYING
-Copyright
-.if t \(co
-.if n (C)
-2008, 2009, 2010 Free Software Foundation, Inc.
-.PP
-Permission is granted to make and distribute verbatim copies of this
-document provided the copyright notice and this permission notice are
-preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of
-this document under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of
-a permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-document into another language, under the above conditions for
-modified versions, except that this permission notice may be stated
-in a translation approved by the Free Software Foundation.
-.
-.\" arch-tag: 7586e605-c400-447e-82ff-4d38e3c0a37d
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
index 2ad9e2c543a..ae2bc82c920 100644
--- a/doc/man/emacs.1
+++ b/doc/man/emacs.1
@@ -41,9 +41,9 @@ CTRL-h or F1 enters the Help facility.
Help Tutorial (CTRL-h t) starts an interactive tutorial to quickly
teach beginners the fundamentals of
.I Emacs.
-Help Apropos (CTRL-h a) helps you find a command given its
-functionality, Help Key (CTRL-h k) describes a given key sequence, and
-Help Function (CTRL-h f) describes a given Lisp function.
+Help Apropos (CTRL-h a) helps you find a command with a name matching
+a given pattern, Help Key (CTRL-h k) describes a given key sequence,
+and Help Function (CTRL-h f) describes a given Lisp function.
.PP
.IR "GNU Emacs" 's
many special packages handle mail reading (RMail) and sending (Mail),
@@ -531,12 +531,12 @@ is the number of color planes.
.SH MANUALS
You can order printed copies of the GNU Emacs Manual from the Free
Software Foundation, which develops GNU software.
-See the file ORDERS for ordering information.
+See the online store at <http://shop.fsf.org/>.
.br
-Your local Emacs maintainer might also have copies available.
+Your local administrator might also have copies available.
As with all software and publications from FSF, everyone is permitted
to make and distribute copies of the Emacs manual.
-The TeX source to the manual is also included in the Emacs source
+The Texinfo source to the manual is also included in the Emacs source
distribution.
.
.
@@ -545,7 +545,8 @@ distribution.
The complete text of the Emacs reference manual is included in a
convenient tree structured form.
Also includes the Emacs Lisp Reference Manual, useful to anyone
-wishing to write programs in the Emacs Lisp extension language.
+wishing to write programs in the Emacs Lisp extension language,
+and the Introduction to Programming in Emacs Lisp.
/usr/local/share/emacs/$VERSION/lisp \(em Lisp source files and
compiled files that define most editing commands.
@@ -572,9 +573,8 @@ There is a mailing list, bug-gnu-emacs@gnu.org, for reporting Emacs
bugs and fixes.
But before reporting something as a bug, please try to be sure that
it really is a bug, not a misunderstanding or a deliberate feature.
-We ask you to read the section ``Reporting Emacs Bugs'' near the
-end of the reference manual (or Info system) for hints on how and
-when to report bugs.
+We ask you to read the section ``Reporting Bugs'' in the Emacs manual
+for hints on how and when to report bugs.
Also, include the version number of the Emacs you are running in
\fIevery\fR bug report that you send in.
Bugs tend actually to be fixed if they can be isolated, so it is
@@ -596,10 +596,7 @@ file /usr/local/share/emacs/$VERSION/etc/MAILINGLISTS.
.I Emacs
is free; anyone may redistribute copies of
.I Emacs
-to
-anyone under the terms stated in the
-.I Emacs
-General Public License,
+to anyone under the terms stated in the GNU General Public License,
a copy of which accompanies each copy of
.I Emacs
and which also
@@ -611,7 +608,7 @@ may sometimes be received packaged with distributions of Unix systems,
but it is never included in the scope of any license covering those
systems.
Such inclusion violates the terms on which distribution is permitted.
-In fact, the primary purpose of the General Public License is to
+In fact, the primary purpose of the GNU General Public License is to
prohibit anyone from attaching any other restrictions to
redistribution of
.IR Emacs .
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 8584e4c26b5..df6e478a34e 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,160 @@
+2010-10-15 Eli Zaretskii <eliz@gnu.org>
+
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix last
+ change.
+
+2010-10-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix up the
+ @item syntax for in-Emacs makeinfo.
+
+2010-10-13 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Fix syntax and
+ trim sentence.
+
+2010-10-12 Daiki Ueno <ueno@unixuser.org>
+
+ * epa.texi (Caching Passphrases):
+ * auth.texi (GnuPG and EasyPG Assistant Configuration): Clarify
+ some configurations require to set up gpg-agent.
+
+2010-10-11 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (.texi.dvi): Remove unnecessary suffix rule.
+
+2010-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Spam Package Introduction): Mention `$'.
+
+2010-10-09 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (emacsdir): New variable.
+ ($(infodir)/efaq, faq.dvi): Depend on emacsver.texi.
+ (ENVADD, $(infodir)/efaq): Add -I$(emacsdir).
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (mostlyclean): Delete *.toc.
+
+ * Makefile.in: Use $< in rules.
+
+ * Makefile.in (maintainer-clean): Remove harmless, long-standing error.
+
+ * Makefile.in ($(infodir)): Delete rule.
+ (mkinfodir): New. Use it in all the info rules, rather than depending
+ on infodir.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * gnus.texi (Article Washing): Fix previous change.
+
+ * Makefile.in (emacsdir): New variable.
+ ($(infodir)/efaq): Pass -I $(emacsdir) to makeinfo.
+ Depend on emacsver.texi.
+
+ * faq.texi (VER): Replace with EMACSVER from emacsver.texi.
+
+ * Makefile.in (.PHONY): Declare info, dvi, pdf and the clean rules.
+
+2010-10-08 Julien Danjou <julien@danjou.info>
+
+ * gnus.texi: Add mm-shr.
+
+2010-10-08 Ludovic Courtès <ludo@gnu.org>
+
+ * gnus.texi (Finding the Parent, The Gnus Registry)
+ (Registry Article Refer Method): Update docs for nnregistry.el.
+
+2010-10-08 Daiki Ueno <ueno@unixuser.org>
+
+ * auth.texi (Help for users)
+ (GnuPG and EasyPG Assistant Configuration): Update docs.
+
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * cl.texi (Organization, Installation, Old CL Compatibility):
+ Deprecate cl-compat for new code.
+ (Usage, Installation): Remove outdated information.
+
+ * eudc.texi (CCSO PH/QI, LDAP Requirements): Remove old information.
+
+2010-10-07 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.
+
+2010-10-06 Julien Danjou <julien@danjou.info>
+
+ * sieve.texi (Manage Sieve API): Document sieve-manage-authenticate.
+
+ * message.texi (PGP Compatibility): Remove reference to gpg-2comp,
+ broken link.
+
+ * gnus-faq.texi (FAQ 8-3): Remove references to my.gnus.org.
+
+ * gnus.texi (Comparing Mail Back Ends): Remove broken link and allusion
+ to ReiserFS.
+
+ * gnus-faq.texi (FAQ 5-5): Fix Flyspell URL.
+ (FAQ 7-1): Fix getmail URL.
+
+2010-10-06 Daiki Ueno <ueno@unixuser.org>
+
+ * epa.texi (Caching Passphrases): New section.
+
+2010-10-06 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (SHELL): Set it.
+ (info): Move the mkdir dependency to the individual info files.
+ (mostlyclean): Tidy up.
+ (clean): Only delete the specific dvi and pdf files.
+ (maintainer-clean): Be more restrictive in what we delete.
+ ($(infodir)): Add parallel build workaround.
+
+2010-10-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Misc Article): Document gnus-widen-article-window.
+
+2010-10-03 Julien Danjou <julien@danjou.info>
+
+ * emacs-mime.texi (Display Customization): Update
+ mm-inline-large-images documentation and add documentation for
+ mm-inline-large-images-proportion.
+
+2010-10-03 Michael Albinus <michael.albinus@gmx.de>
+
+ * tramp.texi (Frequently Asked Questions): Mention
+ remote-file-name-inhibit-cache.
+
+2010-10-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Splitting Mail): Fix @xref syntax.
+ (Splitting Mail): Really fix the @ref syntax.
+
+2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Splitting Mail): Mention the new fancy splitting
+ function.
+ (Article Hiding): Add google banner example. Suggested by Benjamin
+ Xu.
+
+2010-09-30 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus.texi (Spam Package Configuration Examples, SpamOracle): Remove
+ nnimap-split-rule from examples.
+
+2010-09-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Mail Source Specifiers): Remove webmail.el mentions.
+ (NNTP): Document nntp-server-list-active-group. Suggested by Barry
+ Fishman.
+ (Client-Side IMAP Splitting): Add nnimap-split-fancy.
+
+2010-09-30 Julien Danjou <julien@danjou.info>
+
+ * gnus.texi (Gravatars): Fix documentation about
+ gnu-gravatar-properties.
+
2010-09-29 Daiki Ueno <ueno@unixuser.org>
* epa.texi (Bug Reports): New section.
@@ -6,6 +163,16 @@
* Makefile.in (top_srcdir): Remove unused variable.
+2010-09-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Using IMAP): Remove the @acronyms from the headings.
+ (Client-Side IMAP Splitting): Document 'default.
+
+2010-09-27 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Customizing the IMAP Connection): Document
+ nnimap-fetch-partial-articles.
+
2010-09-26 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-news.texi: Mention nnimap-inbox.
@@ -14,7 +181,7 @@
2010-09-26 Julien Danjou <julien@danjou.info>
- * gnus.texi (Oort Gnus): Remove mention of ssl.el
+ * gnus.texi (Oort Gnus): Remove mention of ssl.el.
2010-09-26 Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -44,7 +211,7 @@
2010-09-25 Julien Danjou <julien@danjou.info>
- * gnus.texi (Customizing Articles): Remove gnus-treat-translate
+ * gnus.texi (Customizing Articles): Remove gnus-treat-translate.
2010-09-24 Glenn Morris <rgm@gnu.org>
@@ -6976,12 +7143,11 @@
;; Local Variables:
;; coding: utf-8
-;; fill-column: 79
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -6997,5 +7163,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;; arch-tag: 08b2903e-900c-4c72-a4a9-e76416a80803
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index 063b40975bf..d5afabd0374 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -19,6 +19,7 @@
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+SHELL = /bin/sh
# Where to find the source code. $(srcdir) will be the man-aux
# subdirectory of the source tree. This is
@@ -26,11 +27,18 @@
srcdir=@srcdir@
# Tell make where to find source files; this is needed for the makefiles.
+# Note the other doc Makefiles do not use VPATH anymore, instead
+# they set infodir to an absolute path. Not doing that here in
+# case INFO_TARGETS gets too long for some feeble shells.
+# (cf src/Makefile.in's shortlisp)
VPATH=@srcdir@
## Where the output files go.
## Note that the setfilename command in the .texi files assumes this.
infodir=../../info
+## Directory with emacsver.texi.
+## Currently only used by efaq; could be added to MAKEINFO.
+emacsdir = $(srcdir)/../emacs
# The makeinfo program is part of the Texinfo distribution.
# Use --force so that it generates output even if there are errors.
@@ -190,18 +198,13 @@ PDF_TARGETS = \
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
-# The following rule does not work with all versions of `make'.
-.SUFFIXES: .texi .dvi
-.texi.dvi:
- $(TEXI2DVI) $<
-
ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
+mkinfodir = @cd ${srcdir}; test -d ${infodir} || mkdir ${infodir} || test -d ${infodir}
-info: $(infodir) $(INFO_TARGETS)
+.PHONY: info dvi pdf
-$(infodir):
- mkdir $@
+info: $(INFO_TARGETS)
dvi: $(DVI_TARGETS)
@@ -215,183 +218,205 @@ pdf: $(PDF_TARGETS)
## "short" target names for convenience, to just rebuild one manual.
ada-mode : $(infodir)/ada-mode
$(infodir)/ada-mode: ada-mode.texi
- cd $(srcdir); $(MAKEINFO) ada-mode.texi
-ada-mode.dvi: ada-mode.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi
-ada-mode.pdf: ada-mode.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ada-mode.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+ada-mode.dvi: ${srcdir}/ada-mode.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ada-mode.pdf: ${srcdir}/ada-mode.texi
+ $(ENVADD) $(TEXI2PDF) $<
auth : $(infodir)/auth
$(infodir)/auth: auth.texi
- cd $(srcdir); $(MAKEINFO) auth.texi
-auth.dvi: auth.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/auth.texi
-auth.pdf: auth.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/auth.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+auth.dvi: ${srcdir}/auth.texi
+ $(ENVADD) $(TEXI2DVI) $<
+auth.pdf: ${srcdir}/auth.texi
+ $(ENVADD) $(TEXI2PDF) $<
autotype : $(infodir)/autotype
$(infodir)/autotype: autotype.texi
- cd $(srcdir); $(MAKEINFO) autotype.texi
-autotype.dvi: autotype.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi
-autotype.pdf: autotype.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/autotype.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+autotype.dvi: ${srcdir}/autotype.texi
+ $(ENVADD) $(TEXI2DVI) $<
+autotype.pdf: ${srcdir}/autotype.texi
+ $(ENVADD) $(TEXI2PDF) $<
calc : $(infodir)/calc
$(infodir)/calc: calc.texi
- cd $(srcdir); $(MAKEINFO) calc.texi
-calc.dvi: calc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi
-calc.pdf: calc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/calc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+calc.dvi: ${srcdir}/calc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+calc.pdf: ${srcdir}/calc.texi
+ $(ENVADD) $(TEXI2PDF) $<
ccmode : $(infodir)/ccmode
$(infodir)/ccmode: cc-mode.texi
- cd $(srcdir); $(MAKEINFO) cc-mode.texi
-cc-mode.dvi: cc-mode.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi
-cc-mode.pdf: cc-mode.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/cc-mode.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+cc-mode.dvi: ${srcdir}/cc-mode.texi
+ $(ENVADD) $(TEXI2DVI) $<
+cc-mode.pdf: ${srcdir}/cc-mode.texi
+ $(ENVADD) $(TEXI2PDF) $<
cl : $(infodir)/cl
$(infodir)/cl: cl.texi
- cd $(srcdir); $(MAKEINFO) cl.texi
-cl.dvi: cl.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi
-cl.pdf: cl.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/cl.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+cl.dvi: ${srcdir}/cl.texi
+ $(ENVADD) $(TEXI2DVI) $<
+cl.pdf: ${srcdir}/cl.texi
+ $(ENVADD) $(TEXI2PDF) $<
dbus : $(infodir)/dbus
$(infodir)/dbus: dbus.texi
- cd $(srcdir); $(MAKEINFO) dbus.texi
-dbus.dvi: dbus.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/dbus.texi
-dbus.pdf: dbus.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/dbus.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+dbus.dvi: ${srcdir}/dbus.texi
+ $(ENVADD) $(TEXI2DVI) $<
+dbus.pdf: ${srcdir}/dbus.texi
+ $(ENVADD) $(TEXI2PDF) $<
dired-x : $(infodir)/dired-x
$(infodir)/dired-x: dired-x.texi
- cd $(srcdir); $(MAKEINFO) dired-x.texi
-dired-x.dvi: dired-x.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi
-dired-x.pdf: dired-x.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/dired-x.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+dired-x.dvi: ${srcdir}/dired-x.texi
+ $(ENVADD) $(TEXI2DVI) $<
+dired-x.pdf: ${srcdir}/dired-x.texi
+ $(ENVADD) $(TEXI2PDF) $<
ebrowse : $(infodir)/ebrowse
$(infodir)/ebrowse: ebrowse.texi
- cd $(srcdir); $(MAKEINFO) ebrowse.texi
-ebrowse.dvi: ebrowse.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi
-ebrowse.pdf: ebrowse.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ebrowse.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+ebrowse.dvi: ${srcdir}/ebrowse.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ebrowse.pdf: ${srcdir}/ebrowse.texi
+ $(ENVADD) $(TEXI2PDF) $<
ede : $(infodir)/ede
$(infodir)/ede: ede.texi
- cd $(srcdir); $(MAKEINFO) ede.texi
-ede.dvi: ede.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ede.texi
-ede.pdf: ede.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ede.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+ede.dvi: ${srcdir}/ede.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ede.pdf: ${srcdir}/ede.texi
+ $(ENVADD) $(TEXI2PDF) $<
ediff : $(infodir)/ediff
$(infodir)/ediff: ediff.texi
- cd $(srcdir); $(MAKEINFO) ediff.texi
-ediff.dvi: ediff.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi
-ediff.pdf: ediff.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ediff.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+ediff.dvi: ${srcdir}/ediff.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ediff.pdf: ${srcdir}/ediff.texi
+ $(ENVADD) $(TEXI2PDF) $<
edt : $(infodir)/edt
$(infodir)/edt: edt.texi
- cd $(srcdir); $(MAKEINFO) edt.texi
-edt.dvi: edt.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/edt.texi
-edt.pdf: edt.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/edt.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+edt.dvi: ${srcdir}/edt.texi
+ $(ENVADD) $(TEXI2DVI) $<
+edt.pdf: ${srcdir}/edt.texi
+ $(ENVADD) $(TEXI2PDF) $<
eieio : $(infodir)/eieio
$(infodir)/eieio: eieio.texi
- cd $(srcdir); $(MAKEINFO) eieio.texi
-eieio.dvi: eieio.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/eieio.texi
-eieio.pdf: eieio.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/eieio.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+eieio.dvi: ${srcdir}/eieio.texi
+ $(ENVADD) $(TEXI2DVI) $<
+eieio.pdf: ${srcdir}/eieio.texi
+ $(ENVADD) $(TEXI2PDF) $<
emacs-mime : $(infodir)/emacs-mime
$(infodir)/emacs-mime: emacs-mime.texi
- cd $(srcdir); $(MAKEINFO) --enable-encoding emacs-mime.texi
-emacs-mime.dvi: emacs-mime.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi
-emacs-mime.pdf: emacs-mime.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/emacs-mime.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) --enable-encoding $<
+emacs-mime.dvi: ${srcdir}/emacs-mime.texi
+ $(ENVADD) $(TEXI2DVI) $<
+emacs-mime.pdf: ${srcdir}/emacs-mime.texi
+ $(ENVADD) $(TEXI2PDF) $<
epa : $(infodir)/epa
$(infodir)/epa: epa.texi
- cd $(srcdir); $(MAKEINFO) epa.texi
-epa.dvi: epa.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/epa.texi
-epa.pdf: epa.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/epa.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+epa.dvi: ${srcdir}/epa.texi
+ $(ENVADD) $(TEXI2DVI) $<
+epa.pdf: ${srcdir}/epa.texi
+ $(ENVADD) $(TEXI2PDF) $<
erc : $(infodir)/erc
$(infodir)/erc: erc.texi
- cd $(srcdir); $(MAKEINFO) erc.texi
-erc.dvi: erc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi
-erc.pdf: erc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/erc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+erc.dvi: ${srcdir}/erc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+erc.pdf: ${srcdir}/erc.texi
+ $(ENVADD) $(TEXI2PDF) $<
eshell : $(infodir)/eshell
$(infodir)/eshell: eshell.texi
- cd $(srcdir); $(MAKEINFO) eshell.texi
-eshell.dvi: eshell.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi
-eshell.pdf: eshell.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/eshell.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+eshell.dvi: ${srcdir}/eshell.texi
+ $(ENVADD) $(TEXI2DVI) $<
+eshell.pdf: ${srcdir}/eshell.texi
+ $(ENVADD) $(TEXI2PDF) $<
eudc : $(infodir)/eudc
$(infodir)/eudc: eudc.texi
- cd $(srcdir); $(MAKEINFO) eudc.texi
-eudc.dvi: eudc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi
-eudc.pdf: eudc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/eudc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+eudc.dvi: ${srcdir}/eudc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+eudc.pdf: ${srcdir}/eudc.texi
+ $(ENVADD) $(TEXI2PDF) $<
efaq : $(infodir)/efaq
-$(infodir)/efaq: faq.texi
- cd $(srcdir); $(MAKEINFO) faq.texi
-faq.dvi: faq.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi
-faq.pdf: faq.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/faq.texi
+$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) -I $(emacsdir) $<
+faq.dvi: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2DVI) $<
+faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
+ $(ENVADD) $(TEXI2PDF) $<
flymake : $(infodir)/flymake
$(infodir)/flymake: flymake.texi
- cd $(srcdir); $(MAKEINFO) flymake.texi
-flymake.dvi: flymake.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
-flymake.pdf: flymake.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/flymake.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+flymake.dvi: ${srcdir}/flymake.texi
+ $(ENVADD) $(TEXI2DVI) $<
+flymake.pdf: ${srcdir}/flymake.texi
+ $(ENVADD) $(TEXI2PDF) $<
forms : $(infodir)/forms
$(infodir)/forms: forms.texi
- cd $(srcdir); $(MAKEINFO) forms.texi
-forms.dvi: forms.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi
-forms.pdf: forms.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/forms.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+forms.dvi: ${srcdir}/forms.texi
+ $(ENVADD) $(TEXI2DVI) $<
+forms.pdf: ${srcdir}/forms.texi
+ $(ENVADD) $(TEXI2PDF) $<
# gnus/message/emacs-mime/sieve/pgg are part of Gnus:
gnus : $(infodir)/gnus
$(infodir)/gnus: gnus.texi gnus-faq.texi
- cd $(srcdir); $(MAKEINFO) gnus.texi
-gnus.dvi: gnus.texi gnus-faq.texi
- sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+gnus.dvi: ${srcdir}/gnus.texi gnus-faq.texi
+ sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
cp gnustmp.dvi $*.dvi
rm gnustmp.*
-gnus.pdf: gnus.texi gnus-faq.texi
- sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
+gnus.pdf: ${srcdir}/gnus.texi gnus-faq.texi
+ sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
$(ENVADD) $(TEXI2PDF) gnustmp.texi
cp gnustmp.pdf $@
rm gnustmp.*
@@ -400,229 +425,259 @@ gnus.pdf: gnus.texi gnus-faq.texi
# names clash on DOS 8+3 filesystems
idlwave : $(infodir)/idlwave
$(infodir)/idlwave: idlwave.texi
- cd $(srcdir); $(MAKEINFO) --no-split idlwave.texi
-idlwave.dvi: idlwave.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi
-idlwave.pdf: idlwave.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) --no-split $<
+idlwave.dvi: ${srcdir}/idlwave.texi
+ $(ENVADD) $(TEXI2DVI) $<
+idlwave.pdf: ${srcdir}/idlwave.texi
+ $(ENVADD) $(TEXI2PDF) $<
# The following target uses an explicit -o switch to work around
# the @setfilename directive in info.texi, which is required for
# the Texinfo distribution.
###info : $(infodir)/info # circular!
$(infodir)/info: info.texi
- cd $(srcdir); $(MAKEINFO) --no-split info.texi -o $@
-info.dvi: info.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi
-info.pdf: info.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/info.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) --no-split $< -o $@
+info.dvi: ${srcdir}/info.texi
+ $(ENVADD) $(TEXI2DVI) $<
+info.pdf: ${srcdir}/info.texi
+ $(ENVADD) $(TEXI2PDF) $<
mairix-el : $(infodir)/mairix-el
$(infodir)/mairix-el: mairix-el.texi
- cd $(srcdir); $(MAKEINFO) mairix-el.texi
-mairix-el.dvi: mairix-el.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/mairix-el.texi
-mairix-el.pdf: mairix-el.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/mairix-el.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+mairix-el.dvi: ${srcdir}/mairix-el.texi
+ $(ENVADD) $(TEXI2DVI) $<
+mairix-el.pdf: ${srcdir}/mairix-el.texi
+ $(ENVADD) $(TEXI2PDF) $<
message : $(infodir)/message
$(infodir)/message: message.texi
- cd $(srcdir); $(MAKEINFO) message.texi
-message.dvi: message.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi
-message.pdf: message.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/message.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+message.dvi: ${srcdir}/message.texi
+ $(ENVADD) $(TEXI2DVI) $<
+message.pdf: ${srcdir}/message.texi
+ $(ENVADD) $(TEXI2PDF) $<
mh-e : $(infodir)/mh-e
$(infodir)/mh-e: mh-e.texi
- cd $(srcdir); $(MAKEINFO) mh-e.texi
-mh-e.dvi: mh-e.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi
-mh-e.pdf: mh-e.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/mh-e.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+mh-e.dvi: ${srcdir}/mh-e.texi
+ $(ENVADD) $(TEXI2DVI) $<
+mh-e.pdf: ${srcdir}/mh-e.texi
+ $(ENVADD) $(TEXI2PDF) $<
newsticker : $(infodir)/newsticker
$(infodir)/newsticker: newsticker.texi
- cd $(srcdir); $(MAKEINFO) newsticker.texi
-newsticker.dvi: newsticker.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
-newsticker.pdf: newsticker.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/newsticker.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+newsticker.dvi: ${srcdir}/newsticker.texi
+ $(ENVADD) $(TEXI2DVI) $<
+newsticker.pdf: ${srcdir}/newsticker.texi
+ $(ENVADD) $(TEXI2PDF) $<
nxml-mode : $(infodir)/nxml-mode
$(infodir)/nxml-mode: nxml-mode.texi
- cd $(srcdir); $(MAKEINFO) nxml-mode.texi
-nxml-mode.dvi: nxml-mode.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/nxml-mode.texi
-nxml-mode.pdf: nxml-mode.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/nxml-mode.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+nxml-mode.dvi: ${srcdir}/nxml-mode.texi
+ $(ENVADD) $(TEXI2DVI) $<
+nxml-mode.pdf: ${srcdir}/nxml-mode.texi
+ $(ENVADD) $(TEXI2PDF) $<
org : $(infodir)/org
$(infodir)/org: org.texi
- cd $(srcdir); $(MAKEINFO) org.texi
-org.dvi: org.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
-org.pdf: org.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/org.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+org.dvi: ${srcdir}/org.texi
+ $(ENVADD) $(TEXI2DVI) $<
+org.pdf: ${srcdir}/org.texi
+ $(ENVADD) $(TEXI2PDF) $<
pcl-cvs : $(infodir)/pcl-cvs
$(infodir)/pcl-cvs: pcl-cvs.texi
- cd $(srcdir); $(MAKEINFO) pcl-cvs.texi
-pcl-cvs.dvi: pcl-cvs.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi
-pcl-cvs.pdf: pcl-cvs.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/pcl-cvs.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+pcl-cvs.dvi: ${srcdir}/pcl-cvs.texi
+ $(ENVADD) $(TEXI2DVI) $<
+pcl-cvs.pdf: ${srcdir}/pcl-cvs.texi
+ $(ENVADD) $(TEXI2PDF) $<
pgg : $(infodir)/pgg
$(infodir)/pgg: pgg.texi
- cd $(srcdir); $(MAKEINFO) pgg.texi
-pgg.dvi: pgg.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi
-pgg.pdf: pgg.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/pgg.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+pgg.dvi: ${srcdir}/pgg.texi
+ $(ENVADD) $(TEXI2DVI) $<
+pgg.pdf: ${srcdir}/pgg.texi
+ $(ENVADD) $(TEXI2PDF) $<
rcirc : $(infodir)/rcirc
$(infodir)/rcirc: rcirc.texi
- cd $(srcdir); $(MAKEINFO) rcirc.texi
-rcirc.dvi: rcirc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi
-rcirc.pdf: rcirc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/rcirc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+rcirc.dvi: ${srcdir}/rcirc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+rcirc.pdf: ${srcdir}/rcirc.texi
+ $(ENVADD) $(TEXI2PDF) $<
reftex : $(infodir)/reftex
$(infodir)/reftex: reftex.texi
- cd $(srcdir); $(MAKEINFO) reftex.texi
-reftex.dvi: reftex.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi
-reftex.pdf: reftex.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/reftex.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+reftex.dvi: ${srcdir}/reftex.texi
+ $(ENVADD) $(TEXI2DVI) $<
+reftex.pdf: ${srcdir}/reftex.texi
+ $(ENVADD) $(TEXI2PDF) $<
remember : $(infodir)/remember
$(infodir)/remember: remember.texi
- cd $(srcdir); $(MAKEINFO) remember.texi
-remember.dvi: remember.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/remember.texi
-remember.pdf: remember.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/remember.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+remember.dvi: ${srcdir}/remember.texi
+ $(ENVADD) $(TEXI2DVI) $<
+remember.pdf: ${srcdir}/remember.texi
+ $(ENVADD) $(TEXI2PDF) $<
sasl : $(infodir)/sasl
$(infodir)/sasl: sasl.texi
- cd $(srcdir); $(MAKEINFO) sasl.texi
-sasl.dvi: sasl.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/sasl.texi
-sasl.pdf: sasl.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/sasl.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+sasl.dvi: ${srcdir}/sasl.texi
+ $(ENVADD) $(TEXI2DVI) $<
+sasl.pdf: ${srcdir}/sasl.texi
+ $(ENVADD) $(TEXI2PDF) $<
sc : $(infodir)/sc
$(infodir)/sc: sc.texi
- cd $(srcdir); $(MAKEINFO) sc.texi
-sc.dvi: sc.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi
-sc.pdf: sc.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/sc.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+sc.dvi: ${srcdir}/sc.texi
+ $(ENVADD) $(TEXI2DVI) $<
+sc.pdf: ${srcdir}/sc.texi
+ $(ENVADD) $(TEXI2PDF) $<
semantic : $(infodir)/semantic
$(infodir)/semantic: semantic.texi sem-user.texi
- cd $(srcdir); $(MAKEINFO) semantic.texi
-semantic.dvi: semantic.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/semantic.texi
-semantic.pdf: semantic.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/semantic.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+semantic.dvi: ${srcdir}/semantic.texi sem-user.texi
+ $(ENVADD) $(TEXI2DVI) $<
+semantic.pdf: ${srcdir}/semantic.texi sem-user.texi
+ $(ENVADD) $(TEXI2PDF) $<
ses : $(infodir)/ses
$(infodir)/ses: ses.texi
- cd $(srcdir); $(MAKEINFO) ses.texi
-ses.dvi: ses.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi
-ses.pdf: ses.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/ses.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+ses.dvi: ${srcdir}/ses.texi
+ $(ENVADD) $(TEXI2DVI) $<
+ses.pdf: ${srcdir}/ses.texi
+ $(ENVADD) $(TEXI2PDF) $<
sieve : $(infodir)/sieve
$(infodir)/sieve: sieve.texi
- cd $(srcdir); $(MAKEINFO) sieve.texi
-sieve.dvi: sieve.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi
-sieve.pdf: sieve.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/sieve.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+sieve.dvi: ${srcdir}/sieve.texi
+ $(ENVADD) $(TEXI2DVI) $<
+sieve.pdf: ${srcdir}/sieve.texi
+ $(ENVADD) $(TEXI2PDF) $<
smtpmail : $(infodir)/smtpmail
$(infodir)/smtpmail: smtpmail.texi
- cd $(srcdir); $(MAKEINFO) smtpmail.texi
-smtpmail.dvi: smtpmail.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi
-smtpmail.pdf: smtpmail.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/smtpmail.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+smtpmail.dvi: ${srcdir}/smtpmail.texi
+ $(ENVADD) $(TEXI2DVI) $<
+smtpmail.pdf: ${srcdir}/smtpmail.texi
+ $(ENVADD) $(TEXI2PDF) $<
speedbar : $(infodir)/speedbar
$(infodir)/speedbar: speedbar.texi
- cd $(srcdir); $(MAKEINFO) speedbar.texi
-speedbar.dvi: speedbar.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi
-speedbar.pdf: speedbar.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/speedbar.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+speedbar.dvi: ${srcdir}/speedbar.texi
+ $(ENVADD) $(TEXI2DVI) $<
+speedbar.pdf: ${srcdir}/speedbar.texi
+ $(ENVADD) $(TEXI2PDF) $<
tramp : $(infodir)/tramp
$(infodir)/tramp: tramp.texi trampver.texi
- cd $(srcdir); $(MAKEINFO) -D emacs tramp.texi
-tramp.dvi: tramp.texi trampver.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi
-tramp.pdf: tramp.texi trampver.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/tramp.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) -D emacs $<
+tramp.dvi: ${srcdir}/tramp.texi trampver.texi
+ $(ENVADD) $(TEXI2DVI) $<
+tramp.pdf: ${srcdir}/tramp.texi trampver.texi
+ $(ENVADD) $(TEXI2PDF) $<
url : $(infodir)/url
$(infodir)/url: url.texi
- cd $(srcdir); $(MAKEINFO) url.texi
-url.dvi: url.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
-url.pdf: url.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/url.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+url.dvi: ${srcdir}/url.texi
+ $(ENVADD) $(TEXI2DVI) $<
+url.pdf: ${srcdir}/url.texi
+ $(ENVADD) $(TEXI2PDF) $<
vip : $(infodir)/vip
$(infodir)/vip: vip.texi
- cd $(srcdir); $(MAKEINFO) vip.texi
-vip.dvi: vip.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi
-vip.pdf: vip.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/vip.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+vip.dvi: ${srcdir}/vip.texi
+ $(ENVADD) $(TEXI2DVI) $<
+vip.pdf: ${srcdir}/vip.texi
+ $(ENVADD) $(TEXI2PDF) $<
viper : $(infodir)/viper
$(infodir)/viper: viper.texi
- cd $(srcdir); $(MAKEINFO) viper.texi
-viper.dvi: viper.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi
-viper.pdf: viper.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/viper.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+viper.dvi: ${srcdir}/viper.texi
+ $(ENVADD) $(TEXI2DVI) $<
+viper.pdf: ${srcdir}/viper.texi
+ $(ENVADD) $(TEXI2PDF) $<
widget : $(infodir)/widget
$(infodir)/widget: widget.texi
- cd $(srcdir); $(MAKEINFO) widget.texi
-widget.dvi: widget.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi
-widget.pdf: widget.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+widget.dvi: ${srcdir}/widget.texi
+ $(ENVADD) $(TEXI2DVI) $<
+widget.pdf: ${srcdir}/widget.texi
+ $(ENVADD) $(TEXI2PDF) $<
woman : $(infodir)/woman
$(infodir)/woman: woman.texi
- cd $(srcdir); $(MAKEINFO) woman.texi
-woman.dvi: woman.texi
- $(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi
-woman.pdf: woman.texi
- $(ENVADD) $(TEXI2PDF) ${srcdir}/woman.texi
+ $(mkinfodir)
+ cd $(srcdir); $(MAKEINFO) $<
+woman.dvi: ${srcdir}/woman.texi
+ $(ENVADD) $(TEXI2DVI) $<
+woman.pdf: ${srcdir}/woman.texi
+ $(ENVADD) $(TEXI2PDF) $<
+
+.PHONY: mostlyclean clean distclean maintainer-clean
mostlyclean:
- rm -f *.log *.cp *.fn *.ky *.op *.ops *.pg *.vr core *.tp \
- *.tps *.core gnustmp.*
- rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
+ rm -f *.aux *.log *.toc *.cp *.cps *.fn *.fns *.ky *.kys \
+ *.op *.ops *.pg *.pgs *.tp *.tps *.vr *.vrs
+ rm -f gnustmp.*
clean: mostlyclean
- rm -f *.dvi *.pdf
+ rm -f $(DVI_TARGETS) $(PDF_TARGETS)
distclean: clean
# rm -f Makefile
+## infodir is relative to srcdir.
maintainer-clean: distclean
- for file in $(INFO_TARGETS); do rm -f $${file}*; done
-
+ cd $(srcdir); for file in $(INFO_TARGETS); do \
+ rm -f $${file} $${file}-[1-9] $${file}-[1-9][0-9]; \
+ done
### Makefile ends here
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index ed04d98ef92..2ab8fc18817 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -59,6 +59,7 @@ It is a way for multiple applications to share a single configuration
* Help for users::
* Secret Service API::
* Help for developers::
+* GnuPG and EasyPG Assistant Configuration::
* Index::
* Function Index::
* Variable Index::
@@ -176,16 +177,8 @@ for details.
If you don't customize @code{auth-sources}, you'll have to live with
the defaults: any host and any port are looked up in the netrc
-file @code{~/.authinfo.gpg}. This is an encrypted file if and only if
-you set up EPA, which is strongly recommended.
-
-@lisp
-(require 'epa-file)
-(epa-file-enable)
-;;; VERY important if you want symmetric encryption
-;;; irrelevant if you don't
-(setq epa-file-cache-passphrase-for-symmetric-encryption t)
-@end lisp
+file @code{~/.authinfo.gpg}, which is a GnuPG encrypted file
+(@pxref{GnuPG and EasyPG Assistant Configuration}).
The simplest working netrc line example is one without a port.
@@ -271,6 +264,56 @@ users' netrc files.
@end defun
+@node GnuPG and EasyPG Assistant Configuration
+@appendix GnuPG and EasyPG Assistant Configuration
+
+If you don't customize @code{auth-sources}, the auth-source library
+reads @code{~/.authinfo.gpg}, which is a GnuPG encrypted file.
+
+In Emacs 23 or later there is an option @code{auto-encryption-mode} to
+automatically decrypt @code{*.gpg} files. It is enabled by default.
+If you are using earlier versions of Emacs, you will need:
+
+@lisp
+(require 'epa-file)
+(epa-file-enable)
+@end lisp
+
+If you want your GnuPG passwords to be cached, set up @code{gpg-agent}
+or EasyPG Assitant
+(@pxref{Caching Passphrases, , Caching Passphrases, epa}).
+
+To quick start, here are some questions:
+
+@enumerate
+@item
+Do you use GnuPG version 2 instead of GnuPG version 1?
+@item
+Do you use symmetric encryption rather than public key encryption?
+@item
+Do you want to use gpg-agent?
+@end enumerate
+
+Here are configurations depending on your answers:
+
+@multitable {111} {222} {333} {configuration configuration configuration}
+@item @b{1} @tab @b{2} @tab @b{3} @tab Configuration
+@item Yes @tab Yes @tab Yes @tab Set up gpg-agent.
+@item Yes @tab Yes @tab No @tab You can't, without gpg-agent.
+@item Yes @tab No @tab Yes @tab Set up gpg-agent.
+@item Yes @tab No @tab No @tab You can't, without gpg-agent.
+@item No @tab Yes @tab Yes @tab Set up elisp passphrase cache.
+@item No @tab Yes @tab No @tab Set up elisp passphrase cache.
+@item No @tab No @tab Yes @tab Set up gpg-agent.
+@item No @tab No @tab No @tab You can't, without gpg-agent.
+@end multitable
+
+To set up gpg-agent, follow the instruction in GnuPG manual
+(@pxref{Invoking GPG-AGENT, , Invoking GPG-AGENT, gnupg}).
+
+To set up elisp passphrase cache, set
+@code{epa-file-cache-passphrase-for-symmetric-encryption}.
+
@node Index
@chapter Index
@printindex cp
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index de57ff7d095..79038792a3e 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -163,19 +163,6 @@ include at the beginning:
@end example
@noindent
-If you want to ensure that the new (Gillespie) version of @dfn{CL}
-is the one that is present, add an additional @code{(require 'cl-19)}
-call:
-
-@example
-(require 'cl)
-(require 'cl-19)
-@end example
-
-@noindent
-The second call will fail (with ``@file{cl-19.el} not found'') if
-the old @file{cl.el} package was in use.
-
It is safe to arrange to load @dfn{CL} at all times, e.g.,
in your @file{.emacs} file. But it's a good idea, for portability,
to @code{(require 'cl)} in your code even if you do this.
@@ -219,39 +206,26 @@ will take care of pulling in the other files when they are
needed.
There is another file, @file{cl-compat.el}, which defines some
-routines from the older @file{cl.el} package that are no longer
+routines from the older @file{cl.el} package that are not otherwise
present in the new package. This includes internal routines
like @code{setelt} and @code{zip-lists}, deprecated features
like @code{defkeyword}, and an emulation of the old-style
-multiple-values feature. @xref{Old CL Compatibility}.
+multiple-values feature. This file is obsolete and should not be used
+in new code. @xref{Old CL Compatibility}.
@node Installation, Naming Conventions, Organization, Overview
@section Installation
@noindent
-Installation of the @dfn{CL} package is simple: Just put the
-byte-compiled files @file{cl.elc}, @file{cl-extra.elc},
-@file{cl-seq.elc}, @file{cl-macs.elc}, and @file{cl-compat.elc}
-into a directory on your @code{load-path}.
-
-There are no special requirements to compile this package:
-The files do not have to be loaded before they are compiled,
-nor do they need to be compiled in any particular order.
-
-You may choose to put the files into your main @file{lisp/}
-directory, replacing the original @file{cl.el} file there. Or,
-you could put them into a directory that comes before @file{lisp/}
-on your @code{load-path} so that the old @file{cl.el} is
-effectively hidden.
-
-Also, format the @file{cl.texinfo} file and put the resulting
-Info files in the @file{info/} directory or another suitable place.
-
-You may instead wish to leave this package's components all in
-their own directory, and then add this directory to your
-@code{load-path} and @code{Info-directory-list}.
-Add the directory to the front of the list so the old @dfn{CL}
-package and its documentation are hidden.
+The @dfn{CL} package is distributed with Emacs, so there is no need
+to install anything.
+
+If you do need to install it, just put the byte-compiled files
+@file{cl.elc}, @file{cl-extra.elc}, @file{cl-seq.elc},
+@file{cl-macs.elc}, and (if necessary) @file{cl-compat.elc} into a
+directory on your @code{load-path}. Also, format the @file{cl.texi}
+file and put the resulting Info files into a directory in your
+@code{Info-directory-list}.
@node Naming Conventions, , Installation, Overview
@section Naming Conventions
@@ -5076,8 +5050,8 @@ Lisp.
@noindent
The @dfn{CL} package includes emulations of some features of the
old @file{cl.el}, in the form of a compatibility package
-@code{cl-compat}. To use it, put @code{(require 'cl-compat)} in
-your program.
+@code{cl-compat}. This file is obsolete and may be removed in future,
+so it should not be used in new code.
The old package defined a number of internal routines without
@code{cl-} prefixes or other annotations. Call to these routines
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 2a0e8569266..475ce2bb53f 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -374,12 +374,18 @@ message as follows:
@vindex mm-inline-large-images
When displaying inline images that are larger than the window, Emacs
does not enable scrolling, which means that you cannot see the whole
-image. To prevent this, the library tries to determine the image size
+image. To prevent this, the library tries to determine the image size
before displaying it inline, and if it doesn't fit the window, the
library will display it externally (e.g. with @samp{ImageMagick} or
-@samp{xv}). Setting this variable to @code{t} disables this check and
+@samp{xv}). Setting this variable to @code{t} disables this check and
makes the library display all inline images as inline, regardless of
-their size.
+their size. If you set this variable to @code{resize}, the image will
+be displayed resized to fit in the window, if Emacs has the ability to
+resize images.
+
+@item mm-inline-large-images-proportion
+@vindex mm-inline-images-max-proportion
+The proportion used when resizing large images.
@item mm-inline-override-types
@vindex mm-inline-override-types
diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi
index 36f74415974..32bf9e7fe1d 100644
--- a/doc/misc/epa.texi
+++ b/doc/misc/epa.texi
@@ -66,6 +66,7 @@ called EasyPG Library.
* Overview::
* Quick start::
* Commands::
+* Caching Passphrases::
* Bug Reports::
@end menu
@@ -399,6 +400,43 @@ If non-@code{nil}, disable auto-saving when opening an encrypted file.
The default value is @code{t}.
@end defvar
+@node Caching Passphrases
+@chapter Caching Passphrases
+
+Typing passphrases is an irritating task if you frequently open and
+close the same file. GnuPG and EasyPG Assistant provide mechanisms to
+remember your passphrases. However, the configuration is a bit
+confusing since it depends on your GnuPG installation (GnuPG version 1 or
+GnuPG version 2), encryption method (symmetric or public key), and whether or
+not you want to use gpg-agent. Here are some questions:
+
+@enumerate
+@item Do you use GnuPG version 2 instead of GnuPG version 1?
+@item Do you use symmetric encryption rather than public key encryption?
+@item Do you want to use gpg-agent?
+@end enumerate
+
+Here are configurations depending on your answers:
+
+@multitable {111} {222} {333} {configuration configuration configuration}
+@item @b{1} @tab @b{2} @tab @b{3} @tab Configuration
+@item Yes @tab Yes @tab Yes @tab Set up gpg-agent.
+@item Yes @tab Yes @tab No @tab You can't, without gpg-agent.
+@item Yes @tab No @tab Yes @tab Set up gpg-agent.
+@item Yes @tab No @tab No @tab You can't, without gpg-agent.
+@item No @tab Yes @tab Yes @tab Set up elisp passphrase cache.
+@item No @tab Yes @tab No @tab Set up elisp passphrase cache.
+@item No @tab No @tab Yes @tab Set up gpg-agent.
+@item No @tab No @tab No @tab You can't, without gpg-agent.
+@end multitable
+
+To set up gpg-agent, follow the instruction in GnuPG manual.
+@pxref{Invoking GPG-AGENT, , Invoking GPG-AGENT, gnupg}.
+
+To set up elisp passphrase cache, set
+@code{epa-file-cache-passphrase-for-symmetric-encryption}.
+@xref{Encrypting/decrypting *.gpg files}.
+
@node Bug Reports
@chapter Bug Reports
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index 48606e0d664..b62c0ed75ea 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -137,7 +137,7 @@ complement to the DAP itself.
LDAP servers usually store (but are not limited to) information about
people such as their name, phone number, email address, office
location, etc@enddots{} More information about LDAP can be found at
-@url{http://www.openldap.org/}
+@url{http://www.openldap.org/}.
EUDC requires external support to access LDAP directory servers
(@pxref{LDAP Requirements})
@@ -148,17 +148,15 @@ EUDC requires external support to access LDAP directory servers
@section CCSO PH/QI
The Central Computing Services Office (CCSO) of the University of
-Illinois at Urbana Champaign (UIUC) created and freely distributes a
-directory system that is currently in use in more than 300 organizations
-around the world. The system records information about people such as
-their address, phone number, email, academic information or any other
-details it was configured to.
+Illinois at Urbana Champaign created and freely distributed a
+directory system that was used by many organizations in the 1990s.
+The system records information about people such as their address,
+phone number, email, academic information or any other details it was
+configured to. Nowadays this system is not widely used.
The system consists of two parts: a database server traditionally called
-@samp{qi} and a command-line client called @samp{ph}.
-@url{ftp://uiarchive.cso.uiuc.edu/pub/packages/ph} is the main
-distribution site. @url{http://www.uiuc.edu/cgi-bin/ph/lookup?Query=.}
-provides a listing of the active @samp{qi} servers.
+@samp{qi} and a command-line client called @samp{ph}. As of 2010, the
+code can still be downloaded from @url{http://www-dev.cites.uiuc.edu/ph/}.
The original command-line @samp{ph} client that comes with the
@samp{ph/qi} distribution provides additional features like the
@@ -225,18 +223,10 @@ email composition buffers (@pxref{Inline Query Expansion})
@comment node-name, next, previous, up
@section LDAP Requirements
-LDAP support is added by means of @file{ldap.el} which is part of Emacs.
+LDAP support is added by means of @file{ldap.el}, which is part of Emacs.
@file{ldap.el} needs an external command line utility named
-@file{ldapsearch} which is available as part of LDAP toolkits:
-
-@itemize @bullet
-@item
-Open LDAP Libraries
-(@url{http://www.openldap.org/})
-@item
-University of Michigan's LDAP Client software
-(@url{http://www.umich.edu/~dirsvcs/ldap/})
-@end itemize
+@file{ldapsearch}, available as part of Open LDAP
+(@url{http://www.openldap.org/}).
@node Usage, Credits, Installation, Top
@@ -968,7 +958,3 @@ in testing and proofreading the code and docs of @file{ph.el}.
@printindex vr
@bye
-
-@ignore
- arch-tag: 1b79460b-4ea1-441d-ab45-05ddd16ef241
-@end ignore
diff --git a/doc/misc/faq.texi b/doc/misc/faq.texi
index f4dc0247197..ee5f72ac300 100644
--- a/doc/misc/faq.texi
+++ b/doc/misc/faq.texi
@@ -4,8 +4,7 @@
@settitle GNU Emacs FAQ
@c %**end of header
-@c This is used in many places
-@set VER 24.0.50
+@include emacsver.texi
@c This file is maintained by Romain Francoise <rfrancoise@gnu.org>.
@c Feel free to install changes without prior permission (but I'd
@@ -67,7 +66,7 @@ This FAQ is maintained as a part of GNU Emacs. If you find any errors,
or have any suggestions, please use @kbd{M-x report-emacs-bug} to report
them.
-This is the version of the FAQ distributed with Emacs @value{VER}, and
+This is the version of the FAQ distributed with Emacs @value{EMACSVER}, and
mainly describes that version. Although there is some information on
older versions, details about very old releases (now only of historical
interest) have been removed. If you are interested in this, consult
@@ -1010,7 +1009,7 @@ conventions}).
@cindex Repository, Emacs
@cindex Bazaar repository, Emacs
-Emacs @value{VER} is the current version as of this writing. A version
+Emacs @value{EMACSVER} is the current version as of this writing. A version
number with two components (e.g. @samp{22.1}) indicates a released
version; three components indicate a development
version (e.g. @samp{23.0.50} is what will eventually become @samp{23.1}).
@@ -4479,7 +4478,3 @@ to the end of the @file{*Newsgroup*} buffer.
@printindex cp
@bye
-
-@ignore
- arch-tag: fee0d62d-06cf-43d8-ac21-123408eaf10f
-@end ignore
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index ed74092eb0a..d9df9c8db18 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -4,9 +4,6 @@
@c Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
@c 2009, 2010 Free Software Foundation, Inc.
@c
-@c Do not modify this file, it was generated from gnus-faq.xml, available from
-@c <URL:http://my.gnus.org/FAQ/>.
-@c
@setfilename gnus-faq.info
@settitle Frequently Asked Questions
@c %**end of header
@@ -40,20 +37,9 @@
@subheading Abstract
This is the new Gnus Frequently Asked Questions list.
-If you have a Web browser, the official hypertext version is at
-@uref{http://my.gnus.org/FAQ/},
-the Docbook source is available from
-@uref{http://sourceforge.net/projects/gnus/, http://sourceforge.net}.
Please submit features and suggestions to the
-@email{faq-discuss@@my.gnus.org, FAQ discussion list}.
-The list is protected against junk mail with
-@uref{http://smarden.org/qconfirm/index.html, qconfirm}. As
-a subscriber, your submissions will automatically pass. You can
-also subscribe to the list by sending a blank email to
-@email{faq-discuss-subscribe@@my.gnus.org, faq-discuss-subscribe@@my.gnus.org}
-and @uref{http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss, browse
-the archive (BROKEN)}.
+@email{ding@@gnus.org, ding list}.
@node FAQ - Changes
@subheading Changes
@@ -98,8 +84,6 @@ would like to thank Steve Baur and Per Abrahamsen for doing a wonderful
job with this FAQ before him. We would like to do the same - thanks,
Justin!
-If you have a Web browser, the official hypertext version is at:
-@uref{http://my.gnus.org/FAQ/}.
This version is much nicer than the unofficial hypertext
versions that are archived at Utrecht, Oxford, Smart Pages, Ohio
State, and other FAQ archives. See the resources question below
@@ -107,7 +91,7 @@ if you want information on obtaining it in another format.
The information contained here was compiled with the assistance
of the Gnus development mailing list, and any errors or
-misprints are the my.gnus.org team's fault, sorry.
+misprints are the Gnus team's fault, sorry.
@node FAQ 1 - Installation FAQ
@subsection Installation FAQ
@@ -1042,8 +1026,7 @@ in Gnus Country :-). It's a three step process: First we
make faces (specifications of how summary-line shall look
like) for those postings, then we'll give them some
special score and finally we'll tell Gnus to use the new
-faces. You can find detailed instructions on how to do it on
-@uref{http://my.gnus.org/node/view/224, my.gnus.org}
+faces.
@node FAQ 4-12
@subsubheading Question 4.12
@@ -1414,7 +1397,7 @@ or @uref{http://aspell.sourceforge.net/, aspell}
installed and in your Path. Then you need
@uref{http://www.kdstevens.com/~stevens/ispell-page.html, ispell.el}
and for on-the-fly spell-checking
-@uref{http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}.
+@uref{http://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html, flyspell.el}.
Ispell.el is shipped with Emacs and available through the XEmacs package system,
flyspell.el is shipped with Emacs and part of XEmacs text-modes package which is
available through the package system, so there should be no need to install them
@@ -1987,7 +1970,7 @@ server like
@uref{http://www.isc.org/products/INN/, inn}.
Then you want to fetch your Mail, popular choices
are @uref{http://www.catb.org/~esr/fetchmail/, fetchmail}
-and @uref{http://www.qcc.ca/~charlesc/software/getmail-3.0/, getmail}.
+and @uref{http://pyropus.ca/software/getmail/, getmail}.
You should tell those to write the mail to your disk and
Gnus to read it from there. Last but not least the mail
sending part: This can be done with every MTA like
@@ -2141,12 +2124,8 @@ Which websites should I know?
@subsubheading Answer
-The two most important ones are the
+The most important one is the
@uref{http://www.gnus.org, official Gnus website}.
-and it's sister site
-@uref{http://my.gnus.org, my.gnus.org (MGO)},
-hosting an archive of lisp snippets, howtos, a (not
-really finished) tutorial and this FAQ.
Tell me about other sites which are interesting.
diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi
index 028539a7fb4..1136d52e51d 100644
--- a/doc/misc/gnus-news.texi
+++ b/doc/misc/gnus-news.texi
@@ -356,6 +356,8 @@ moving articles to a group that has not turned auto-expire on.
@item NoCeM support has been removed.
+@item Carpal mode has been removed.
+
@end itemize
@end itemize
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index c1acf7e0d8a..1a1f0d48eb9 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -629,7 +629,7 @@ Select Methods
* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
-* Using @acronym{IMAP}:: Reading mail from @acronym{IMAP}.
+* Using IMAP:: Reading mail from @acronym{IMAP}.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
* Other Sources:: Reading directories, files.
@@ -797,7 +797,6 @@ Various
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
* Highlighting and Menus:: Making buffers look all nice and cozy.
-* Buttons:: Get tendinitis in ten easy steps!
* Daemons:: Gnus can do things behind your back.
* Undo:: Some actions can be undone.
* Predicate Specifiers:: Specifying predicates.
@@ -828,6 +827,7 @@ Image Enhancements
* Smileys:: Show all those happy faces the way they were
meant to be shown.
* Picons:: How to display pictures of what you're reading.
+* Gravatars:: Display the avatar of people you read.
* XVarious:: Other XEmacsy Gnusey variables.
Thwarting Email Spam
@@ -9477,6 +9477,14 @@ signature should be removed, or other symbol, meaning that the
corresponding regular expression in @code{gnus-article-banner-alist} is
used.
+For instance:
+
+@lisp
+(setq gnus-article-banner-alist
+ ((googleGroups .
+ "^\n*--~--~---------\\(.+\n\\)+")))
+@end lisp
+
Regardless of a group, you can hide things like advertisements only when
the sender of an article has a certain mail address specified in
@code{gnus-article-address-banner-alist}.
@@ -9804,6 +9812,9 @@ Customization, emacs-mime, The Emacs MIME Manual}) to convert the
can use include:
@table @code
+@item mm-shr
+Use Gnus simple html renderer.
+
@item gnus-article-html
Use Gnus rendered based on w3m.
@@ -10797,7 +10808,7 @@ article is to use Muttprint (@pxref{Saving Articles}).
@item A C
@vindex gnus-fetch-partial-articles
@findex gnus-summary-show-complete-article
-If @code{gnus-fetch-partial-articles} is non-@code{nil}, Gnus will
+If @code{<backend>-fetch-partial-articles} is non-@code{nil}, Gnus will
fetch partial articles, if the backend it fetches them from supports
it. Currently only @code{nnimap} does. If you're looking at a
partial article, and want to see the complete article instead, then
@@ -10981,9 +10992,12 @@ do not do a particularly excellent job at it. That is, @code{nnmbox},
@code{nnbabyl}, @code{nnmaildir}, @code{nnml}, are able to locate
articles from any groups, while @code{nnfolder}, and @code{nnimap} are
only able to locate articles that have been posted to the current
-group. (Anything else would be too time consuming.) @code{nnmh} does
-not support this at all.
+group. @code{nnmh} does not support this at all.
+Fortunately, the special @code{nnregistry} back end is able to locate
+articles in any groups, regardless of their back end (@pxref{Registry
+Article Refer Method, fetching by @code{Message-ID} using the
+registry}).
@node Alternative Approaches
@section Alternative Approaches
@@ -12444,7 +12458,7 @@ section only describes the default method.
@item mm-text-html-renderer
@vindex mm-text-html-renderer
If set to @code{gnus-article-html}, Gnus will use the built-in method,
-that's based on @code{curl} and @code{w3m}.
+that's based on @code{w3m}.
@item gnus-blocked-images
@vindex gnus-blocked-images
@@ -12839,6 +12853,11 @@ If non-@code{nil}, use the same article buffer for all the groups.
(This is the default.) If @code{nil}, each group will have its own
article buffer.
+@item gnus-widen-article-window
+@cindex gnus-widen-article-window
+If non-@code{nil}, selecting the article buffer with the @kbd{h}
+command will ``widen'' the article window to take the entire frame.
+
@vindex gnus-article-decode-hook
@item gnus-article-decode-hook
@cindex @acronym{MIME}
@@ -13700,7 +13719,7 @@ The different methods all have their peculiarities, of course.
@menu
* Server Buffer:: Making and editing virtual servers.
* Getting News:: Reading USENET news with Gnus.
-* Using @acronym{IMAP}:: Reading mail from @acronym{IMAP}.
+* Using IMAP:: Reading mail from @acronym{IMAP}.
* Getting Mail:: Reading your personal mail with Gnus.
* Browsing the Web:: Getting messages from a plethora of Web sources.
* Other Sources:: Reading directories, files.
@@ -14394,6 +14413,12 @@ inhibit Gnus to add a @code{Message-ID} header, you could say:
Note that not all servers support the recommended ID. This works for
INN versions 2.3.0 and later, for instance.
+@item nntp-server-list-active-group
+If @code{nil}, then always use @samp{GROUP} instead of @samp{LIST
+ACTIVE}. This is usually slower, but on misconfigured servers that
+don't update their active files often, this can help.
+
+
@end table
@menu
@@ -14787,8 +14812,8 @@ there.
@end table
-@node Using @acronym{IMAP}
-@section Using @acronym{IMAP}
+@node Using IMAP
+@section Using IMAP
@cindex imap
The most popular mail backend is probably @code{nnimap}, which
@@ -14798,14 +14823,14 @@ This means that it's a convenient choice when you're reading your mail
from different locations, or with different user agents.
@menu
-* Connecting to an @acronym{IMAP} Server:: Getting started with @acronym{IMAP}.
-* Customizing the @acronym{IMAP} Connection:: Variables for @acronym{IMAP} connection.
-* Client-Side @acronym{IMAP} Splitting:: Put mail in the correct mail box.
+* Connecting to an IMAP Server:: Getting started with @acronym{IMAP}.
+* Customizing the IMAP Connection:: Variables for @acronym{IMAP} connection.
+* Client-Side IMAP Splitting:: Put mail in the correct mail box.
@end menu
-@node Connecting to an @acronym{IMAP} Server
-@subsection Connecting to an @acronym{IMAP} Server
+@node Connecting to an IMAP Server
+@subsection Connecting to an IMAP Server
Connecting to an @acronym{IMAP} can be very easy. Type @kbd{B} in the
group buffer, or (if your primary interest is reading email), say
@@ -14826,17 +14851,17 @@ machine imap.gmail.com login <username> password <password> port imap
That should basically be it for most users.
-@node Customizing the @acronym{IMAP} Connection
-@subsection Customizing the @acronym{IMAP} Connection
+@node Customizing the IMAP Connection
+@subsection Customizing the IMAP Connection
Here's an example method that's more complex:
@example
(nnimap "imap.gmail.com"
(nnimap-inbox "INBOX")
- (nnimap-split-methods ,nnmail-split-methods)
+ (nnimap-split-methods default)
(nnimap-expunge t)
- (nnimap-stream 'ssl)
+ (nnimap-stream ssl)
(nnir-search-engine imap)
(nnimap-expunge-inbox t))
@end example
@@ -14878,11 +14903,17 @@ this should be set to @code{anonymous}.
Virtually all @code{IMAP} server support fast streaming of data. If
you have problems connecting to the server, try setting this to @code{nil}.
+@item nnimap-fetch-partial-articles
+If non-@code{nil}, fetch partial articles from the server. If set to
+a string, then it's interpreted as a regexp, and parts that have
+matching types will be fetched. For instance, @samp{"text/"} will
+fetch all textual parts, while leaving the rest on the server.
+
@end table
-@node Client-Side @acronym{IMAP} Splitting
-@subsection Client-Side @acronym{IMAP} Splitting
+@node Client-Side IMAP Splitting
+@subsection Client-Side IMAP Splitting
Many people prefer to do the sorting/splitting of mail into their mail
boxes on the @acronym{IMAP} server. That way they don't have to
@@ -14897,7 +14928,11 @@ This is the @acronym{IMAP} mail box that will be scanned for new mail.
@item nnimap-split-methods
Uses the same syntax as @code{nnmail-split-methods} (@pxref{Splitting
-Mail}).
+Mail}), except the symbol @code{default}, which means that it should
+use the value of the @code{nnmail-split-methods} variable.
+
+@item nnimap-split-fancy
+Uses the same syntax as @code{nnmail-split-fancy}.
@end table
@@ -15086,6 +15121,9 @@ arguments in a buffer narrowed to the headers of an incoming mail
message. The function should return a list of group names that it
thinks should carry this mail message.
+This variable can also be a fancy split method. For the syntax,
+see @ref{Fancy Mail Splitting}.
+
Note that the mail back ends are free to maul the poor, innocent,
incoming headers all they want to. They all add @code{Lines} headers;
some add @code{X-Gnus-Group} headers; most rename the Unix mbox
@@ -15460,7 +15498,7 @@ Get mail from a @acronym{IMAP} server. If you don't want to use
@acronym{IMAP} as intended, as a network mail reading protocol (ie
with nnimap), for some reason or other, Gnus let you treat it similar
to a @acronym{POP} server and fetches articles from a given
-@acronym{IMAP} mailbox. @xref{Using @acronym{IMAP}}, for more information.
+@acronym{IMAP} mailbox. @xref{Using IMAP}, for more information.
Keywords:
@@ -15552,45 +15590,6 @@ An example @acronym{IMAP} mail source:
:fetchflag "\\Seen")
@end lisp
-@item webmail
-Get mail from a webmail server, such as @uref{http://www.hotmail.com/},
-@uref{http://webmail.netscape.com/}, @uref{http://www.netaddress.com/},
-@uref{http://mail.yahoo.com/}.
-
-NOTE: Webmail largely depends on cookies. A "one-line-cookie" patch is
-required for url "4.0pre.46".
-
-WARNING: Mails may be lost. NO WARRANTY.
-
-Keywords:
-
-@table @code
-@item :subtype
-The type of the webmail server. The default is @code{hotmail}. The
-alternatives are @code{netscape}, @code{netaddress}, @code{my-deja}.
-
-@item :user
-The user name to give to the webmail server. The default is the login
-name.
-
-@item :password
-The password to give to the webmail server. If not specified, the user is
-prompted.
-
-@item :dontexpunge
-If non-@code{nil}, only fetch unread articles and don't move them to
-trash folder after finishing the fetch.
-
-@end table
-
-An example webmail source:
-
-@lisp
-(webmail :subtype 'hotmail
- :user "user-name"
- :password "secret")
-@end lisp
-
@item group
Get the actual mail source from the @code{mail-source} group parameter,
@xref{Group Parameters}.
@@ -15929,7 +15928,7 @@ after @code{save-excursion} and @code{save-restriction} in the example
above. Also note that with the nnimap backend, message bodies will
not be downloaded by default. You need to set
@code{nnimap-split-download-body} to @code{t} to do that
-(@pxref{Client-Side @acronym{IMAP} Splitting}).
+(@pxref{Client-Side IMAP Splitting}).
@item (! @var{func} @var{split})
If the split is a list, and the first element is @code{!}, then
@@ -17409,13 +17408,12 @@ incompatible group parameters, slightly different from those of other
mail back ends.
@code{nnmaildir} is largely similar to @code{nnml}, with some notable
-differences. Each message is stored in a separate file, but the
-filename is unrelated to the article number in Gnus. @code{nnmaildir}
+differences. Each message is stored in a separate file, but the
+filename is unrelated to the article number in Gnus. @code{nnmaildir}
also stores the equivalent of @code{nnml}'s overview files in one file
-per article, so it uses about twice as many inodes as @code{nnml}. (Use
-@code{df -i} to see how plentiful your inode supply is.) If this slows
-you down or takes up very much space, consider switching to
-@uref{http://www.namesys.com/, ReiserFS} or another non-block-structured
+per article, so it uses about twice as many inodes as @code{nnml}.
+(Use @code{df -i} to see how plentiful your inode supply is.) If this
+slows you down or takes up very much space, a non-block-structured
file system.
Since maildirs don't require locking for delivery, the maildirs you use
@@ -21729,7 +21727,6 @@ four days, Gnus will decay the scores four times, for instance.
* Compilation:: How to speed Gnus up.
* Mode Lines:: Displaying information in the mode lines.
* Highlighting and Menus:: Making buffers look all nice and cozy.
-* Buttons:: Get tendinitis in ten easy steps!
* Daemons:: Gnus can do things behind your back.
* Undo:: Some actions can be undone.
* Predicate Specifiers:: Specifying predicates.
@@ -22190,8 +22187,7 @@ glitches. Use at your own peril.
buffer should be given. Here's an excerpt of this variable:
@lisp
-((group (vertical 1.0 (group 1.0 point)
- (if gnus-carpal (group-carpal 4))))
+((group (vertical 1.0 (group 1.0 point)))
(article (vertical 1.0 (summary 0.25 point)
(article 1.0))))
@end lisp
@@ -22229,7 +22225,6 @@ Here's a more complicated example:
@lisp
(article (vertical 1.0 (group 4)
(summary 0.25 point)
- (if gnus-carpal (summary-carpal 4))
(article 1.0)))
@end lisp
@@ -22240,20 +22235,16 @@ occupy, not a percentage.
If the @dfn{split} looks like something that can be @code{eval}ed (to be
precise---if the @code{car} of the split is a function or a subr), this
split will be @code{eval}ed. If the result is non-@code{nil}, it will
-be used as a split. This means that there will be three buffers if
-@code{gnus-carpal} is @code{nil}, and four buffers if @code{gnus-carpal}
-is non-@code{nil}.
+be used as a split.
Not complicated enough for you? Well, try this on for size:
@lisp
(article (horizontal 1.0
(vertical 0.5
- (group 1.0)
- (gnus-carpal 4))
+ (group 1.0))
(vertical 1.0
(summary 0.25 point)
- (summary-carpal 4)
(article 1.0))))
@end lisp
@@ -22630,62 +22621,6 @@ Hook called after creating the score mode menu.
@end table
-@node Buttons
-@section Buttons
-@cindex buttons
-@cindex mouse
-@cindex click
-
-Those new-fangled @dfn{mouse} contraptions is very popular with the
-young, hep kids who don't want to learn the proper way to do things
-these days. Why, I remember way back in the summer of '89, when I was
-using Emacs on a Tops 20 system. Three hundred users on one single
-machine, and every user was running Simula compilers. Bah!
-
-Right.
-
-@vindex gnus-carpal
-Well, you can make Gnus display bufferfuls of buttons you can click to
-do anything by setting @code{gnus-carpal} to @code{t}. Pretty simple,
-really. Tell the chiropractor I sent you.
-
-
-@table @code
-
-@item gnus-carpal-mode-hook
-@vindex gnus-carpal-mode-hook
-Hook run in all carpal mode buffers.
-
-@item gnus-carpal-button-face
-@vindex gnus-carpal-button-face
-Face used on buttons.
-
-@item gnus-carpal-header-face
-@vindex gnus-carpal-header-face
-Face used on carpal buffer headers.
-
-@item gnus-carpal-group-buffer-buttons
-@vindex gnus-carpal-group-buffer-buttons
-Buttons in the group buffer.
-
-@item gnus-carpal-summary-buffer-buttons
-@vindex gnus-carpal-summary-buffer-buttons
-Buttons in the summary buffer.
-
-@item gnus-carpal-server-buffer-buttons
-@vindex gnus-carpal-server-buffer-buttons
-Buttons in the server buffer.
-
-@item gnus-carpal-browse-buffer-buttons
-@vindex gnus-carpal-browse-buffer-buttons
-Buttons in the browse buffer.
-@end table
-
-All the @code{buttons} variables are lists. The elements in these list
-are either cons cells where the @code{car} contains a text to be displayed and
-the @code{cdr} contains a function symbol, or a simple string.
-
-
@node Daemons
@section Daemons
@cindex demons
@@ -23263,12 +23198,15 @@ The following variables offer control over how things are displayed.
The size in pixels of gravatars. Gravatars are always square, so one
number for the size is enough.
-@item gnus-gravatar-relief
-@vindex gnus-gravatar-relief
-If non-nil, adds a shadow rectangle around the image. The value,
-relief, specifies the width of the shadow lines, in pixels. If relief
-is negative, shadows are drawn so that the image appears as a pressed
-button; otherwise, it appears as an unpressed button.
+@item gnus-gravatar-properties
+@vindex gnus-gravatar-properties
+List of image properties applied to Gravatar images.
+
+@item gnus-gravatar-too-ugly
+@vindex gnus-gravatar-too-ugly
+Regexp that matches mail addresses or names of people of which avatars
+should not be displayed, or @code{nil}. It default to the value of
+@code{gnus-article-x-face-too-ugly} (@pxref{X-Face}).
@end table
@@ -23618,7 +23556,7 @@ call the external tools during splitting. Example fancy split method:
Note that with the nnimap back end, message bodies will not be
downloaded by default. You need to set
@code{nnimap-split-download-body} to @code{t} to do that
-(@pxref{Client-Side @acronym{IMAP} Splitting}).
+(@pxref{Client-Side IMAP Splitting}).
That is about it. As some spam is likely to get through anyway, you
might want to have a nifty function to call when you happen to read
@@ -23812,12 +23750,14 @@ yourself, so that the message is processed as spam when you exit the
group:
@table @kbd
-@item M-d
+@item $
+@itemx M-d
@itemx M s x
@itemx S x
-@kindex M-d
-@kindex S x
-@kindex M s x
+@kindex $ (Summary)
+@kindex M-d (Summary)
+@kindex S x (Summary)
+@kindex M s x (Summary)
@findex gnus-summary-mark-as-spam
@findex gnus-summary-mark-as-spam
Mark current article as spam, showing it with the @samp{$} mark
@@ -23907,7 +23847,7 @@ the message headers; @code{nnimap-split-download-body} tells it to
retrieve the message bodies as well. We don't set this by default
because it will slow @acronym{IMAP} down, and that is not an
appropriate decision to make on behalf of the user. @xref{Client-Side
-@acronym{IMAP} Splitting}.
+IMAP Splitting}.
You have to specify one or more spam back ends for @code{spam-split}
to use, by setting the @code{spam-use-*} variables. @xref{Spam Back
@@ -24192,8 +24132,8 @@ From Ted Zlatanov <tzz@@lifelogs.com>.
spam-move-spam-nonspam-groups-only nil
spam-mark-only-unseen-as-spam t
spam-mark-ham-unread-before-move-from-spam-group t
- nnimap-split-rule 'nnimap-split-fancy
;; @r{understand what this does before you copy it to your own setup!}
+ ;; @r{for nnimap you'll probably want to set nnimap-split-methods, see the manual}
nnimap-split-fancy '(|
;; @r{trace references to parents and put in their group}
(: gnus-registry-split-fancy-with-parent)
@@ -24915,8 +24855,8 @@ messages stay in @samp{INBOX}:
@example
(setq spam-use-spamoracle t
spam-split-group "Junk"
+ ;; @r{for nnimap you'll probably want to set nnimap-split-methods, see the manual}
nnimap-split-inbox '("INBOX")
- nnimap-split-rule 'nnimap-split-fancy
nnimap-split-fancy '(| (: spam-split) "INBOX"))
@end example
@@ -25442,6 +25382,13 @@ the sender in addition to the Message-ID. Several strategies are
available.
@item
+Refer to messages by ID
+
+Commands like @code{gnus-summary-refer-parent-article} can take
+advantage of the registry to jump to the referred article, regardless
+of the group the message is in.
+
+@item
Store custom flags and keywords
The registry can store custom flags and keywords for a message. For
@@ -25460,6 +25407,7 @@ of all messages matching a particular set of criteria.
@menu
* Setup::
* Fancy splitting to parent::
+* Registry Article Refer Method::
* Store custom flags and keywords::
* Store arbitrary data::
@end menu
@@ -25536,6 +25484,42 @@ registry will keep.
The file where the registry will be stored between Gnus sessions.
@end defvar
+@node Registry Article Refer Method
+@subsection Fetching by @code{Message-ID} Using the Registry
+
+The registry knows how to map each @code{Message-ID} to the group it's
+in. This can be leveraged to enhance the ``article refer method'',
+the thing that tells Gnus how to look up an article given its
+Message-ID (@pxref{Finding the Parent}).
+
+@vindex nnregistry
+@vindex gnus-refer-article-method
+
+The @code{nnregistry} refer method does exactly that. It has the
+advantage that an article may be found regardless of the group it's
+in---provided its @code{Message-ID} is known to the registry. It can
+be enabled by augmenting the start-up file with something along these
+lines:
+
+@example
+;; Keep enough entries to have a good hit rate when referring to an
+;; article using the registry. Use long group names so that Gnus
+;; knows where the article is.
+(setq gnus-registry-max-entries 2500
+ gnus-registry-use-long-group-names t)
+
+(gnus-registry-initialize)
+
+(setq gnus-refer-article-method
+ '(current
+ (nnregistry)
+ (nnweb "gmane" (nnweb-type gmane))))
+@end example
+
+The example above instructs Gnus to first look up the article in the
+current group, or, alternatively, using the registry, and finally, if
+all else fails, using Gmane.
+
@node Fancy splitting to parent
@subsection Fancy splitting to parent
@@ -26235,7 +26219,7 @@ wrong show.
Masanobu @sc{Umeda}---the writer of the original @sc{gnus}.
@item
-Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el, webmail.el,
+Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el,
nnwarchive and many, many other things connected with @acronym{MIME} and
other types of en/decoding, as well as general bug fixing, new
functionality and stuff.
@@ -26666,10 +26650,6 @@ Buttons}).
You can do lots of strange stuff with the Gnus window & frame
configuration (@pxref{Window Layout}).
-@item
-You can click on buttons instead of using the keyboard
-(@pxref{Buttons}).
-
@end itemize
diff --git a/doc/misc/makefile.w32-in b/doc/misc/makefile.w32-in
index 1c5fec41095..f4887738411 100644
--- a/doc/misc/makefile.w32-in
+++ b/doc/misc/makefile.w32-in
@@ -27,6 +27,10 @@ srcdir=.
infodir = $(srcdir)/../../info
+## Directory with emacsver.texi.
+## Currently only used by efaq; could be added to MAKEINFO.
+emacsdir = $(srcdir)/../emacs
+
# The makeinfo program is part of the Texinfo distribution.
MAKEINFO = makeinfo --force
MULTI_INSTALL_INFO = $(srcdir)\..\..\nt\multi-install-info.bat
@@ -66,7 +70,7 @@ INFOSOURCES = info.texi
TEXI2DVI = texi2dvi
ENVADD = $(srcdir)\..\..\nt\envadd.bat "TEXINPUTS=$(srcdir);$(TEXINPUTS)" \
- "MAKEINFO=$(MAKEINFO) -I$(srcdir)" /C
+ "MAKEINFO=$(MAKEINFO) -I$(srcdir) -I$(emacsdir)" /C
info: $(INFO_TARGETS)
@@ -213,9 +217,9 @@ $(infodir)/widget: widget.texi
widget.dvi: widget.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/widget.texi
-$(infodir)/efaq: faq.texi
- $(MAKEINFO) faq.texi
-faq.dvi: faq.texi
+$(infodir)/efaq: faq.texi $(emacsdir)/emacsver.texi
+ $(MAKEINFO) -I$(emacsdir) faq.texi
+faq.dvi: faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/faq.texi
$(infodir)/autotype: autotype.texi
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index ad56520f892..8e9eca55177 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -1149,11 +1149,8 @@ If you have imported your old PGP 2.x key into GnuPG, and want to send
signed and encrypted messages to your fellow PGP 2.x users, you'll
discover that the receiver cannot understand what you send. One
solution is to use PGP 2.x instead (i.e., if you use @code{pgg}, set
-@code{pgg-default-scheme} to @code{pgp}). If you do want to use
-GnuPG, you can use a compatibility script called @code{gpg-2comp}
-available from
-@uref{http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp/}. You
-could also convince your fellow PGP 2.x users to convert to GnuPG.
+@code{pgg-default-scheme} to @code{pgp}). You could also convince your
+fellow PGP 2.x users to convert to GnuPG.
@vindex mml-signencrypt-style-alist
As a final workaround, you can make the sign and encryption work in
two steps; separately sign, then encrypt a message. If you would like
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index edf429aea77..b8f09904858 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -264,10 +264,6 @@ in the @code{sieve} group (@kbd{M-x customize-group RET sieve RET}):
@table @code
-@item sieve-manage-default-user
-@vindex sieve-manage-default-user
-Sets the default username.
-
@item sieve-manage-default-port
@vindex sieve-manage-default-port
Sets the default port to use, the suggested port number is @code{2000}.
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 775e4788de0..2c82becf6ae 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -2753,7 +2753,10 @@ Use an external method, like @option{scpc}.
Use caching. This is already enabled by default. Information about
the remote host as well as the remote files are cached for reuse. The
information about remote hosts is kept in the file specified in
-@code{tramp-persistency-file-name}. Keep this file.
+@code{tramp-persistency-file-name}. Keep this file. If you are
+confident, that files on remote hosts are not changed out of
+@value{emacsname}' control, set @code{remote-file-name-inhibit-cache}
+to @code{nil}.
Disable version control. If you access remote files which are not
under version control, a lot of check operations can be avoided by
diff --git a/etc/BABYL b/etc/BABYL
deleted file mode 100644
index 441d6771697..00000000000
--- a/etc/BABYL
+++ /dev/null
@@ -1,179 +0,0 @@
-Format of Version 5 Babyl Files:
-
-(Babyl was the storage format used by Rmail before Emacs 23.1.
-Since then it uses mbox format.)
-
-Warning:
-
- This was written Tuesday, 12 April 1983 (by Eugene Ciccarelli),
-based on looking at a particular Babyl file and recalling various
-issues. Therefore it is not guaranteed to be complete, but it is a
-start, and I will try to point the reader to various Babyl functions
-that will serve to clarify certain format questions.
-
- Also note that this file will not contain control-characters,
-but instead have two-character sequences starting with Uparrow.
-Unless otherwise stated, an Uparrow <character> is to be read as
-Control-<character>, e.g. ^L is a Control-L.
-
-Versions:
-
- First, note that each Babyl file contains in its BABYL OPTIONS
-section the version for the Babyl file format. In principle, the
-format can be changed in any way as long as we increment the format
-version number; then programs can support both old and new formats.
-
- In practice, version 5 is the only format version used, and the
-previous versions have been obsolete for so long that Emacs does not
-support them.
-
-
-Overall Babyl File Structure:
-
- A Babyl file consists of a BABYL OPTIONS section followed by
-0 or more message sections. The BABYL OPTIONS section starts
-with the line "BABYL OPTIONS:". Message sections start with
-Control-Underscore Control-L Newline. Each section ends
-with a Control-Underscore. (That is also the first character
-of the starter for the next section, if any.) Thus, a three
-message Babyl file looks like:
-
-BABYL OPTIONS:
-...the stuff within the Babyl Options section...
-^_^L
-...the stuff within the 1st message section...
-^_^L
-...the stuff within the 2nd message section...
-^_^L
-...the stuff within the last message section...
-^_
-
- Babyl is tolerant about some whitespace at the end of the
-file -- the file may end with the final ^_ or it may have some
-whitespace, e.g. a newline, after it.
-
-
-The BABYL OPTIONS Section:
-
- Each Babyl option is specified on one line (thus restricting
-string values these options can currently have). Values are
-either numbers or strings. The format is name, colon, and the
-value, with whitespace after the colon ignored, e.g.:
-
-Mail: ~/special-inbox
-
- Unrecognized options are ignored.
-
- Here are those options and the kind of values currently expected:
-
- MAIL Filename, the input mail file for this
- Babyl file. You may also use several file names
- separated by commas.
- Version Number. This should always be 5.
- Labels String, list of labels, separated by commas.
-
-
-Message Sections:
-
- A message section contains one message and information
-associated with it. The first line is the "status line", which
-contains a bit (0 or 1 character) saying whether the message has
-been reformed yet, and a list of the labels attached to this
-message. Certain labels, called basic labels, are built into
-Babyl in a fundamental way, and are separated in the status line
-for convenience of operation. For example, consider the status
-line:
-
-1, answered,, zval, bug,
-
- The 1 means this message has been reformed. This message is
-labeled "answered", "zval", and "bug". The first, "answered", is
-a basic label, and the other two are user labels. The basic
-labels come before the double-comma in the line. Each label is
-preceded by ", " and followed by ",". (The last basic label is
-in fact followed by ",,".) If this message had no labels at all,
-it would look like:
-
-1,,
-
- Or, if it had two basic labels, "answered" and "deleted", it
-would look like:
-
-1, answered, deleted,, zval, bug,
-
- The & Label Babyl Message knows which are the basic labels.
-Currently they are: deleted, unseen, recent, and answered.
-
- After the status line comes the original header if any.
-Following that is the EOOH line, which contains exactly the
-characters "*** EOOH ***" (which stands for "end of original
-header"). Note that the original header, if a network format
-header, includes the trailing newline. And finally, following the
-EOOH line is the visible message, header and text. For example,
-here is a complete message section, starting with the message
-starter, and ending with the terminator:
-
-^_^L
-1,, wordab, eccmacs,
-Date: 11 May 1982 21:40-EDT
-From: Eugene C. Ciccarelli <ECC at MIT-AI>
-Subject: notes
-To: ECC at MIT-AI
-
-*** EOOH ***
-Date: Tuesday, 11 May 1982 21:40-EDT
-From: Eugene C. Ciccarelli <ECC>
-To: ECC
-Re: notes
-
-Remember to pickup check at cashier's office, and deposit it
-soon. Pay rent.
-^_
-
-;;; Babyl File BNF:
-
-;;; Overall Babyl file structure:
-
-
-Babyl-File ::= Babyl-Options-Section (Message-Section)*
-
-
-;;; Babyl Options section:
-
-
-Babyl-Options-Section
- ::= "BABYL OPTIONS:" newline (Babyl-Option)* Terminator
-
-Babyl-Option ::= Option-Name ":" Horiz-Whitespace BOptValue newline
-
-BOptValue ::= Number | 1-Line-String
-
-
-
-;;; Message section:
-
-
-Message-Section ::= Message-Starter Status-Line Orig-Header
- EOOH-Line Message Terminator
-
-Message-Starter ::= "^L" newline
-
-Status-Line ::= Bit-Char "," (Basic-Label)* "," (User-Label)* newline
-
-Basic-Label ::= Space BLabel-Name ","
-
-User-Label ::= Space ULabel-Name ","
-
-EOOH-Line ::= "*** EOOH ***" newline
-
-Message ::= Visible-Header Message-Text
-
-
-;;; Utilities:
-
-Terminator ::= "^_"
-
-Horiz-Whitespace
- ::= (Space | Tab)*
-
-Bit-Char ::= "0" | "1"
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 5b78767cfda..c084d4ff76b 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,21 @@
+2010-10-14 Juanma Barranquero <lekktu@gmail.com>
+
+ * tutorials/TUTORIAL.es: Fix typos.
+
+2010-10-13 Juanma Barranquero <lekktu@gmail.com>
+
+ * NEWS: Mention `dynamic-library-alist'.
+
+2010-10-13 Glenn Morris <rgm@gnu.org>
+
+ * NEXTSTEP: New file, extracted from ../nextstep/{AUTHORS,README}.
+
+2010-10-12 Glenn Morris <rgm@gnu.org>
+
+ * TODO: Merge ../nextstep/FOR-RELEASE into this file.
+
+ * BABYL: Remove file.
+
2010-09-21 Eric Ludlam <zappo@gnu.org>
* srecode/java.srt: Make NAME be a prompt.
diff --git a/etc/GNUS-NEWS b/etc/GNUS-NEWS
index de5318d45cb..ca2f2309b99 100644
--- a/etc/GNUS-NEWS
+++ b/etc/GNUS-NEWS
@@ -50,7 +50,7 @@ support for DIGEST-MD5 and NTLM. *Note Emacs SASL: (sasl)Top.
The primary change this brings is support for DIGEST-MD5 and NTLM, when
the server supports it.
-** Gnus includes a password cache mechanism in password.el.
+** Gnus includes a password cache mechanism in password-cache.el.
It is enabled by default (see `password-cache'), with a short timeout of
16 seconds (see `password-cache-expiry'). If PGG is used as the PGP
diff --git a/etc/NEWS b/etc/NEWS
index 0535690dede..038eb4d8707 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -66,10 +66,15 @@ obsolete in Emacs 23.)
* Changes in Emacs 24.1
-** New emacsclient argument --parent-id ID can be used to open a
+** emacsclient changes
+
+*** New emacsclient argument --parent-id ID can be used to open a
client frame in parent X window ID, via XEmbed. This works like the
--parent-id argument to Emacs.
+*** If emacsclient shuts down as a result of Emacs signalling an
+error, its exit status is 1.
+
** Completion can cycle, depending on completion-cycle-threshold.
** auto-mode-case-fold is now enabled by default.
@@ -149,6 +154,11 @@ get and set the SELinux context of a file.
*** Tramp offers handlers for file-selinux-context and set-file-selinux-context
for remote machines which support SELinux.
+** The function kill-emacs is now run upon receipt of the signals SIGTERM
+and SIGHUP, and upon SIGINT in batch mode.
+
+** kill-emacs-hook is now also run in batch mode.
+
** New scrolling commands `scroll-up-command' and `scroll-down-command'
(bound to C-v/[next] and M-v/[prior]) does not signal errors at top/bottom
of buffer at first key-press (instead moves to top/bottom of buffer)
@@ -185,6 +195,13 @@ automatically when Emacs starts up. To disable this, set
`package-enable-at-startup' to nil. To change which packages are
loaded, customize `package-load-list'.
+** Custom Themes
+
+*** `M-x customize-themes' lists Custom themes which can be enabled.
+
+** The user option `remote-file-name-inhibit-cache' controls whether
+the remote file-name cache is used for read access.
+
* Editing Changes in Emacs 24.1
@@ -213,22 +230,62 @@ should use delete-char with a negative argument instead.
The default handling of clipboard and primary selections has been
changed to conform with other X applications.
+The new behavior is that by default Emacs does not put text into the
+clipboard, and does not add it to kill-ring, merely because the text
+was selected. Only commands that kill text or copy it to the
+kill-ring (C-w, M-w, C-k, etc.) put the killed text into the
+clipboard. Selected text is put into the primary selection (on
+systems, such as X, that support the primary selection separately from
+the clipboard).
+
+Similarly, Emacs by default does not retrieve text from the clipboard
+when the mouse (e.g., mouse-2) is used for pasting text selected in
+another application. Text from the clipboard is retrieved only by
+C-y, M-y and other commands that yank text from the kill-ring. Mouse
+commands that paste text retrieve text from the primary selection, on
+systems that support it separately from the clipboard.
+
+In other words, the default behavior is that mouse gestures that
+select and paste text work with the primary selection, while keyboard
+commands that kill/copy and paste text work with the clipboard.
+
+This change also means that the "Copy", "Cut", and "Paste" items of
+the menu-bar "Edit" menu are now exactly equivalent to, respectively
+M-w, C-w, and C-y.
+
+To get back the previous behavior, whereby mouse gestures set the
+clipboard and retrieve text from there, customize the variables
+`mouse-drag-copy-region' and (on X only) `x-select-enable-primary'.
+If you don't want Emacs to put the text into the clipboard, only to
+the primary selection, additionally customize
+`x-select-enable-clipboard' to nil.
+
+These changes in the default behavior are reflected in the default
+values of several variables:
+
*** `select-active-regions' now defaults to t, so active regions set
-the primary selection.
+the primary selection. It was nil in previous versions.
-It also accepts a new value, `lazy', which means to only set the
+It also accepts a new value, `only', which means to only set the
primary selection for temporarily active regions (usually made by
mouse-dragging or shift-selection).
*** `mouse-2' is now bound to `mouse-yank-primary'.
+Previously, it was bound to `mouse-yank-at-click' (which is now
+unbound by default.
-*** `x-select-enable-clipboard' now defaults to t.
+*** `x-select-enable-clipboard' now defaults to t on all platforms.
Thus, killing and yanking now use the clipboard (in addition to the
-kill ring).
+kill ring). Note that this variable was already non-nil by default on
+MS-Windows, which does not support the primary selection between
+applications.
*** `x-select-enable-primary' now defaults to nil.
+This variable exists only on X; its default value was t in previous
+versions.
*** `mouse-drag-copy-region' now defaults to nil.
+Its previous default value was t.
*** Support for X cut buffers has been removed.
@@ -237,7 +294,7 @@ kill ring).
** latex-electric-env-pair-mode keeps \begin..\end matched on the fly.
-** FIXME: xdg-open for browse-url and reportbug, 2010/08. (Close bug#4546?)
+** FIXME: xdg-open for browse-url and reportbug, 2010/08.
** Archive Mode has basic support to browse 7z archives.
@@ -259,6 +316,21 @@ You can get a comparable behavior with:
** mpc.el: Can use pseudo tags of the form tag1|tag2 as a union of two tags.
+** Calendar, Diary, and Appt
+
+---
+*** The obsolete (since Emacs 22.1) method of enabling the appt package
+by adding appt-make-list to diary-hook has been removed. Use appt-activate.
+
+---
+*** Some appt variables (obsolete since Emacs 22.1) have been removed:
+appt-issue-message (use the function appt-activate)
+appt-visible/appt-msg-window (use the variable appt-display-format)
+
+---
+*** Some diary function aliases (obsolete since Emacs 22.1) have been removed:
+view-diary-entries, list-diary-entries, show-all-diary-entries
+
** Customize
*** Customize buffers now contain a search field.
@@ -290,6 +362,10 @@ data is available locally.
*** New key bindings: C-x v I and C-x v O bound to vc-log-incoming and
vc-log-outgoing, respectively.
+*** The 'g' key in VC diff, log, log-incoming and log-outgoing buffers
+reruns the corresponding VC command to compute an up to date version
+of the buffer.
+
*** vc-dir for Bzr supports viewing shelve contents and shelving snapshots.
*** Special markup can be added to log-edit buffers.
@@ -518,9 +594,35 @@ similar to the ones created by shift-selection. In previous Emacs
versions, these regions were delineated by `mouse-drag-overlay', which
has now been removed.
+** cl.el no longer provides `cl-19'.
+
+** The following functions and aliases, obsolete since at least Emacs 21.1,
+have been removed:
+comint-kill-output, decompose-composite-char, outline-visible,
+internal-find-face, internal-get-face, frame-update-faces,
+frame-update-face-colors, x-frob-font-weight, x-frob-font-slant,
+x-make-font-bold, x-make-font-demibold, x-make-font-unbold
+x-make-font-italic, x-make-font-oblique, x-make-font-unitalic
+x-make-font-bold-italic, mldrag-drag-mode-line, mldrag-drag-vertical-line,
+iswitchb-default-keybindings, char-bytes, isearch-return-char,
+make-local-hook
+
+** The following variables and aliases, obsolete since at least Emacs 21.1,
+have been removed:
+checkdoc-minor-keymap, vc-header-alist, directory-sep-char,
+font-lock-defaults-alist
+
+** The following files, obsolete since at least Emacs 21.1, have been removed:
+sc.el, x-menu.el, rnews.el, rnewspost.el
+
* Lisp changes in Emacs 24.1
+** `image-library-alist' is renamed to `dynamic-library-alist'.
+The variable is now used to load all kind of supported dynamic libraries,
+not just image libraries. The previous name is still available as an
+obsolete alias.
+
** New variable syntax-propertize-function to set syntax-table properties.
Replaces font-lock-syntactic-keywords which are now obsolete.
This allows syntax-table properties to be set independently from font-lock:
@@ -569,6 +671,7 @@ Emacs Lisp parse tree.
FIXME: These should be front-ended by xml.el.
+** FIXME GnuTLS
** Isearch
diff --git a/etc/NEWS.23 b/etc/NEWS.23
index bee89d368b5..e1e7ba79d41 100644
--- a/etc/NEWS.23
+++ b/etc/NEWS.23
@@ -21,6 +21,9 @@ with a prefix argument or by typing C-u C-h C-n.
* Changes in Emacs 23.3
+** The nextstep port can have different modifiers for the left and right
+alt/option key by customizing the value for ns-right-alternate-modifier.
+
* Editing Changes in Emacs 23.3
@@ -31,6 +34,11 @@ with a prefix argument or by typing C-u C-h C-n.
** The appt-add command takes an optional argument for the warning time.
This can be used in place of the default appt-message-warning-time.
+** Obsolete packages
+
++++
+*** lmenu.el and cl-compat.el are now obsolete.
+
* New Modes and Packages in Emacs 23.3
diff --git a/etc/NEXTSTEP b/etc/NEXTSTEP
new file mode 100644
index 00000000000..d55bd65d884
--- /dev/null
+++ b/etc/NEXTSTEP
@@ -0,0 +1,311 @@
+Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+This file contains information about GNU Emacs on "Nextstep" platforms.
+The Nextstep support code works on many POSIX systems (and possibly
+W32) using the GNUstep libraries, and on MacOS X systems using the
+Cocoa libraries.
+
+Background
+----------
+Within Emacs, the port and its code are referred to using the term
+"Nextstep", despite the fact that no system or API has been released
+under this name in more than 10 years. Here's some background on why:
+
+NeXT, Inc. introduced the NeXTstep API with its computer and operating
+system in the late 1980's. Later on, in collaboration with Sun, this
+API was published as a specification called OpenStep. The GNUstep
+project started in the early 1990's to provide a free implementation
+of this API. Later on, Apple bought NeXT (some would say "NeXT bought
+Apple") and made OpenStep the basis of OS X, calling the API "Cocoa".
+Since then, Cocoa has evolved beyond the OpenStep specification, and
+GNUstep has followed it.
+
+Thus, calling this port "OpenStep" is not technically accurate, and in
+the absence of any other determinant, we are using the term
+"Nextstep", both because it signifies the original inspiration that
+created these APIs, and because all of the classes and functions still
+begin with the letters "NS".
+
+(See http://en.wikipedia.org/wiki/Nextstep)
+
+This Emacs port was first released in the early 1990's on the NeXT
+computer, and was successively updated to OpenStep, Rhapsody, OS X,
+and then finally GNUstep, tracking GNU emacs core releases in the
+meantime.
+
+
+Release History
+---------------
+
+1990-1992 1.0-3.0 (?) Michael Brouwer's socket/terminal communication
+ based version (GUI ran as a separate process.)
+
+1993/10/25 3.0.1 Last (?) release of Brouwer version. Supports
+ NeXTstep 3.x and below.
+
+1994/04/24 4.0 Carl Edman's version using direct API following
+ the X-Windows port. NeXTstep 3.x only.
+
+1995/06/15 4.1 Second (and last) Carl Edman release, based on
+ Emacs 19.28.
+
+1996/07/28 4.2 First Christian Limpach release, based on
+ Emacs 19.29.
+
+?? 5.0 ??
+
+1997/12/?? 6.0b1 Ported to OpenStep by Scott Bender. Updated
+ to Emacs 20.2.
+
+?? 6.0b2 (?) Scott Bender: ported to Rhapsody.
+
+1999/05/?? 6.0b3 Scott Bender: "OS X Server", Emacs 20.3.
+
+2001/06/25 7.0 Ported to MacOS X (10.1) by Christophe de
+ Dinechin. Release based on Emacs 20.7. Hosting
+ moved to SourceForge.
+
+2002/01/03 7.0.1 Bug fixes.
+
+2002/08/27 7.0.2 Jaguar (OS X 10.2) support. Added an autoconf
+ option for sys_nerr being in stdio. Added
+ libncurses to the build libraries. Fixed a
+ problem with ns-alternate-is-meta. Changed the
+ icon color to blue, since Jaguar is yellow.
+
+2004/10/07 8.0-pre1 Ported to GNUstep by Adrian Robert.
+
+2004/11/04 8.0-pre2 Restored functionality on OS X (menu code
+ cleanup). Improved scrollbar handling and
+ paste from other applications. File icons
+ obtained properly from NSWorkspace. Dropped
+ Gorm and Nib files. Background refresh bug
+ fixed (in GNUstep). Various small fixes and
+ code cleanups. Now starts up under Art.
+
+2005/01/27 8.0-pre3 Bold and italic faces supported. Cursor and
+ mouse highlighting rendering bugs
+ fixed. Drag/drop and cut/paste interaction
+ w/external apps fixed. File load/save panels
+ available. Stability and rendering speed
+ improvements. Some ObjC and VC mode bugs fixed.
+
+2005/02/27 8.0-rc1 Dynamic path detection at startup so Emacs.app
+ can be moved anywhere. Added binary packages
+ and simplified source installation to running
+ two scripts. Thorough cleanup of menu code;
+ now fully functional. Fixed all detected
+ memory leaks. Minor frame focus and title
+ bugs fixed.
+
+2005/03/30 8.0-rc2 "Configure" info directory now uses dynamic
+ path setting, so info files can go under .app.
+ Improved select() handling and PTY fixes so
+ shell mode and tramp run smoothly.
+ Significant rendering optimizations under
+ GNUstep, and now works under Art backend.
+ Non-Latin text rendering works (but not
+ fontsets), and LEIM is bundled. UTF8 is used
+ for clipboard interaction.
+ Arrow cursor now used on scrollbar.
+ objc-mode and tramp now bundled in site-lisp.
+
+2005/05/30 8.0-rc3 Fixed bug with parsing of "easymenu" menus.
+ Many problems with modes such as SLIME, MatLab,
+ and Planner go away. Improved scrollbar
+ handling and rendering speed. Color panel
+ and other bug fixes. mac-fix-env utility.
+ Font handling improvements (OS X 10.3, 10.4):
+ - heed 'GSFontAntiAlias' default
+ - heed system antialiasing threshold
+ - added 'UseQuickdrawSmoothing' default to
+ invoke less heavy antialiasing
+
+2005/07/05 8.0-rc4 Added a Preferences panel. Cleaned up
+ rendering for synthetic italic fonts. Further
+ improved menu parsing. Use system highlight
+ color. Added previous- and next-mark history
+ navigation commmands bound to M-p,M-n.
+ Miscellaneous bug fixes.
+
+2005/08/04 8.0-rc5 All internal string handling changed to UTF-8.
+ This means menu items, color and color list
+ names, and a few other things will now display
+ properly. It does NOT mean UTF-8 filenames
+ are displayed correctly in the minibuffer.
+ Also relating to UTF-8, contents of files
+ using this coding can now be displayed (though
+ not auto-recognized; add extensions to your
+ default coding alist). Limited mac-roman
+ support was also added (also sans recognition).
+ Certain characters are not displayed properly
+ due to a translation problem. (UTF-8 based on
+ work by Otfried Cheong; mac-roman from
+ emacs-21.) Partial support for "dead-key"
+ handling now added. Transparency (e.g., M-x
+ set-background-color ARGB88FFFFFF) improved:
+ only the background is made transparent.
+ Cursor drawing glitches fixed. Preferences
+ handling improved. Fixed some portability
+ problems on Tiger and Puma.
+
+2005/09/12 8.0 Bundled ispell on OS X. Minor bug fixes and
+ stability improvements. Compiles under gcc-4.
+
+2005/09/26 8.0.1 Correct clipped rendering for synthetic
+ italics. Include the info directory.
+ Fix grabenv. Bundle whitespace package.
+
+2005/10/27 8.0.2 Correct rendering for wide characters during
+ cursor movement. Fix bungled hack in ispell
+ bundling.
+
+2005/11/05 9.0-pre1 Updated to latest Emacs CVS code on unicode-2
+ branch (proposed to be released 2006/2007 as
+ Emacs 23).
+
+2005/11/11 9.0-pre2 Fix crashes for deiconifying and loading
+ certain images. Improve vertical font metrics
+ (fixes inaccurate page up/down, window size,
+ and partial lines). Support better remapping
+ of Alt/Opt and remapping of Command. More
+ insistent defaulting of scrollbar to right.
+ Modest improvements to build process.
+
+2006/04/22 9.0-pre2a Stopgap interim release to sync w/latest
+ unicode-2 CVS. Includes XPM and partial
+ toolbar support.
+
+2006/06/08 9.0-pre3 Major upgrade to keyboard handling:
+ system-selected compositional input methods
+ should now work, as well as more keys /
+ keyboards. XPM, toolbar, and tooltip support.
+ Some improvements to scrollbars, zoom, italic
+ rendering, pasting, Color panel. Added function
+ ns-set-background-alpha to work around
+ inability to customize with numeric colors.
+
+2006/12/24 9.0-rc1 Reworked font handling and text rendering to
+ use Kenichi Handa's new font back-end system.
+ Font sets are now supported and automatically
+ created when a font is selected. Added recent
+ X11 colors to Emacs.clr (remove
+ ~/Library/Colors/Emacs.clr to pick up). Added
+ ns-option-modifier, ns-control-modifier,
+ ns-function-modifier customization variables.
+ Update menus to Emacs 21+ conventions. Right
+ mouse button now generates mouse-3 events.
+ Various bug fixes and rendering improvements.
+
+2007/09/10 9.0-rc2 Improve menubar, popup menu, and scrollbar
+ behavior, let accented char entry work in
+ isearch, follow system keymap for shortcut
+ keys, fix border and box drawing, remove
+ glitches in modeline drawing, support
+ overstrike for unavailable bold fonts, fix XPM
+ related crasher bugs. Incremental font
+ metrics caching and other performance
+ improvements. Shared-lisp builds now possible.
+
+2007/09/20 9.0-rc2a Interim release. New features: composed
+ character display, colored fringe bitmaps,
+ colored relief drawing, dynamic resizing,
+ Bug fixes: popup menu position and selection,
+ font width calculation, face color adaptation
+ to background, submenu keyboard navigation.
+ NOT TESTED ON GNUSTEP.
+
+2007/11/19 9.0-rc3 Integrated the multi-TTY functionality from
+ emacs core (however, mixed TTY and GUI
+ sessions are not working yet). Support 10.5.
+ Give site-lisp load precedence over lisp and
+ add a compile option to prefer an additional
+ directory, use miniaturized miniwindow images
+ in some cases, rename cursor types for
+ consistency w/other emacs terms, improved font
+ selection for symbol scripts.
+ Bug fixes: fringe and bitmap, frame deletion,
+ resizing, cursor blink, workspace open-file,
+ image backgrounds, toolbar item enablement,
+ context menu positioning.
+
+2008/07/15 (none) Merge to GNU Emacs CVS trunk.
+
+
+Contributors
+------------
+In addition to the folks listed in etc/AUTHORS responsible for GNU Emacs
+itself, the NeXTstep port owes to the following people:
+
+Carl Edman
+ original author and maintainer, mainly UI
+Michael Brouwer
+ heavy contributor, input handling and other areas
+Christian Limpach
+ help / maintenance on NeXTstep
+Scott Bender
+ OpenStep, Rhapsody ports
+Christophe de Dinechin
+ MacOS X port
+Adrian Robert
+ GNUstep port, update Emacs 20 -> 21+
+
+Joe Reiss
+ popup menu, dialog boxes; icons
+Andrew Athan
+ font panel integration
+Scott Byer
+ improved rendering code
+Scott Hess
+ keyboard handling suggestions
+
+Rahul Abrol
+ "hide others" patch
+Adam Ratcliffe
+ preferences panel documentation
+Peter Dyballa
+ assistance with non-ASCII rendering and keyboard handling
+David M. Cooke
+ fix to XPM crash bug
+Carsten Bormann
+ initial patch and assistance getting dired working for non-ASCII filenames
+Andrew Moore
+ assistance on ns-mark-nav extension
+
+The GNUstep port was made possible through the assistance of Adam
+Fedor, Fred Kiefer, M. Uli Klusterer, Alexander Malmberg, Jonas
+Matton, and Riccardo Mottola. Leigh Smith maintained the SourceForge
+project for a period.
+
+Suggestions from Darcy Brockbank, Timothy Bissell, Scott Byer, David
+Griffiths, Scott Hess, Eberhard Mandler, John C. Randolph, and Bradley
+Taylor all helped things along at one point or another. Axel Seibert
+and Paul J. Sanchez offered their time and machines to make a
+binary release possible.
+
+We would also like to thank a number of people who kept up the
+constant supply of bug reports, suggested features and praise: Hardy
+Mayer, Gisli Ottarsson, Anthony Heading, David Bau, Jamie Zawinski,
+Martin Moncrieffe, Simson L. Garfinkel, Richard Stallman, Stephen
+Anderson, Ivo Welch, Magnus Nordborg, Tom Epperly, Andreas Koenig,
+Yves Arrouye, Anil Somayaji, Gregor Hoffleit; and the few hundred
+other people on the mailing list from whom we didn't hear much, but
+the presence of which assured us that maybe this project was actually
+worth doing.
+
+
+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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
diff --git a/etc/TODO b/etc/TODO
index 966d3eb6976..296800dd1e3 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -627,6 +627,35 @@ http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02234.html
* Things to be done for specific packages or features
+** NeXTstep port
+
+*** Bugs
+
+**** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back
+up on top of all others
+
+**** free_frame_resources, face colors
+
+**** Numeric keysetting bug.
+
+*** Mac-related
+
+**** Open file:/// URLs.
+
+**** Put frame autopositioning into C code somewhere -- if loc = same, offset.
+
+**** Automap ctrl-mouse-1 to mouse-3.
+
+**** Deal with Finder aliases somehow.
+
+**** Ctrl-F2 won't pull up menus.
+
+*** Other / Low Priority:
+
+**** Better recognition of unicode scripts / Greek / composition.
+
+**** Undo for color-drag face customization.
+
** ImageMagick support
*** image-type-header-regexps priorities the jpeg loader over the
diff --git a/etc/tutorials/TUTORIAL.es b/etc/tutorials/TUTORIAL.es
index 7fb7ac2c2a3..7b8198a915b 100644
--- a/etc/tutorials/TUTORIAL.es
+++ b/etc/tutorials/TUTORIAL.es
@@ -1,4 +1,4 @@
-Tutorial de Emacs. Vea al final las condiciones de copiado.
+Tutorial de Emacs. Vea al final las condiciones de copiado.
Generalmente los comandos de Emacs involucran la tecla CONTROL
(algunas veces llamada CTRL O CTL) o la tecla meta (algunas veces
@@ -17,7 +17,7 @@ Nota importante: para terminar la sesión de Emacs teclee C-x C-c (dos
caracteres). Los caracteres ">>" en el margen izquierdo indican
instrucciones para que usted trate de usar un comando. Por ejemplo:
<<Blank lines inserted around following line by help-with-tutorial>>
-[Mitad de página en blanco para propósitos didácticos. El texto continúa abajo]
+[Mitad de página en blanco para propósitos didácticos. El texto continúa abajo]
>> Ahora teclee C-v (ver la próxima pantalla) para desplazarse a la
siguiente pantalla (hágalo manteniendo la tecla control
oprimida mientras teclea v). Desde ahora debería hacer esto
@@ -75,7 +75,7 @@ equivalentes a las cuatro teclas de flechas, de esta manera:
Línea siguiente, C-n
>> Mueva el cursor a la línea en la mitad del diagrama
- usando C-n o C-p. Luego teclee C-l para ver el
+ usando C-n o C-p. Luego teclee C-l para ver el
diagrama completo centrado en la pantalla.
Le resultará fácil recordar estas letras por las palabras que
@@ -200,7 +200,7 @@ manera de pasarle un factor de repetición a un comando es tecleando
C-u y luego los dígitos antes de introducir los comandos. Si tiene
una tecla META (o EDIT o ALT), hay una manera alternativa para
ingresar un argumento numérico: teclear los dígitos mientras presiona
-la tecla META. Recomendamos aprender el método C-u porque este
+la tecla META. Recomendamos aprender el método C-u porque éste
funciona en cualquier terminal. El argumento numérico es también
llamado un "argumento prefijo", porque usted teclea el argumento antes
del comando al que se aplica.
@@ -321,13 +321,13 @@ Puede borrar el último carácter que escribió oprimiendo <Delback>.
<Delback> es una tecla en el teclado--la misma que normalmente usa
fuera de emacs para borrar el último carácter que escribió.
Normalmente es una tecla una o dos filas arriba de la tecla <Return>,
-y que esta usualmente rotulada como "Backspace", "Del" o simplemente
+y que está usualmente rotulada como "Backspace", "Del" o simplemente
con una flecha en dirección izquierda que no es parte de las teclas de
flecha.
-Si la tecla larga esta rotulada "Backspace", entonces esa es la que
-debe de usar para <Delback>. Puede haber otra tecla llamada "Del" en
-otra parte, pero esa no es <Delback>.
+Si la tecla larga está rotulada "Backspace", entonces ésa es la que
+debe de usar para <Delback>. Puede haber otra tecla llamada "Del" en
+otra parte, pero ésa no es <Delback>.
Generalmente, <Delback> borra el carácter inmediatamente anterior a la
posición actual del cursor.
@@ -393,7 +393,7 @@ otro extremo de esa parte, y teclee C-w. Eso elimina todo el texto
entre las dos posiciones.
>> Mueva el cursor a la letra T del inicio del párrafo anterior.
->> Teclee C-SPC. Emacs debe mostrar el mensaje "Mark set" en la parte
+>> Teclee C-SPC. Emacs debe mostrar el mensaje "Mark set" en la parte
de abajo de la pantalla.
>> Mueva el cursor a la x en "extremo", en la segunda línea del
párrafo.
@@ -405,7 +405,7 @@ puede ser reinsertado, mientras que las cosas "borradas" no pueden ser
reinsertadas. La reinserción de texto eliminado se llama "yanking" o
"pegar". Generalmente, los comandos que pueden quitar mucho texto lo
eliminan, mientras que los comandos que quitan solo un carácter, o
-solo lineas en blanco y espacios, borran (para que no pueda pegar ese
+solo líneas en blanco y espacios, borran (para que no pueda pegar ese
texto).
>> Mueva el cursor al comienzo de una línea que no esté vacía.
@@ -417,14 +417,14 @@ Note que al teclear C-k una sola vez elimina el contenido de la línea,
y un segundo C-k elimina la línea misma, y hace que todas las otras
líneas se muevan hacia arriba. C-k trata un argumento numérico
especialmente: Elimina ese número de líneas y TAMBIÉN sus
-contenidos. Esto no es una simple repetición. C-u 2 C-k elimina dos
+contenidos. Esto no es una simple repetición. C-u 2 C-k elimina dos
líneas y sus nuevas líneas, tecleando C-k dos veces no hace esto.
Traer texto eliminado de regreso es llamado "yanking" o "pegar".
(Piense en ello como pegar de nuevo, o traer de vuelta, algún texto
que le fue quitado.) Puede pegar el texto eliminado en, ya sea el
lugar en que fue eliminado, o en otra parte del buffer, o hasta en un
-archivo diferente. Puede pegar el texto varias veces, lo que hace
+archivo diferente. Puede pegar el texto varias veces, lo que hace
varias copias de él.
El comando para pegar es C-y. Reinserta el último texto eliminado, en
@@ -460,7 +460,7 @@ eliminación más reciente).
Luego teclee M-y y será reemplazado por la primera línea eliminada.
Teclee más veces M-y y vea lo que obtiene. Siga haciéndolo hasta
que la segunda línea eliminada regrese, y entonces unas pocas
- más. Si quiere, puede tratar de darle a M-y argumentos positivos y
+ más. Si quiere, puede tratar de darle a M-y argumentos positivos y
negativos.
@@ -477,7 +477,7 @@ adicional.
Pero hay dos excepciones: los comandos que no cambian el texto no
cuentan (esto incluye los comandos de movimiento del cursor y el
comando de desplazamiento), y los caracteres de autoinserción se
-manejan usualmente en grupos de hasta 20. (Esto es para reducir el
+manejan usualmente en grupos de hasta 20. (Esto es para reducir el
numero de C-x u que tenga que teclear para deshacer una inserción en
el texto.)
@@ -504,7 +504,7 @@ si puede pegarlo con C-y; no hay diferencia alguna para deshacer.
Para que pueda hacer permanente el texto que edite, lo debe colocar en
un archivo. De otra manera, éste se perderá cuando cierre Emacs.
Para poder poner su texto en un archivo, debe "encontrar" el archivo
-antes de ingresar el texto. (Esto se llama también "visitar" el
+antes de ingresar el texto. (Esto se llama también "visitar" el
archivo.)
Encontrar un archivo significa que puede ver su contenido dentro de
@@ -556,7 +556,7 @@ teclee el comando
Esto copia el texto dentro de Emacs al archivo. La primera vez que
haga esto, Emacs renombrará el archivo original con un nuevo nombre
-para que este no se pierda. El nuevo nombre se hace agregando "~" al
+para que éste no se pierda. El nuevo nombre se hace agregando "~" al
final del nombre del archivo original.
Cuando guardar haya terminado, Emacs mostrará el nombre del archivo
@@ -595,13 +595,13 @@ Emacs almacena cada texto del archivo dentro de un objeto llamado
Emacs. Para mirar la lista de los buffers que existen actualmente en
su sesión de Emacs, teclee:
- C-x C-b Lista de Buffers
+ C-x C-b Lista de buffers
>> Pruebe C-x C-b ahora.
Vea como cada buffer tiene un nombre, y además puede tener un nombre
-de archivo para el archivo que contiene. CUALQUIER texto que vea en
-una ventana de Emacs es siempre parte de algún Buffer.
+de archivo para el archivo que contiene. CUALQUIER texto que vea en
+una ventana de Emacs es siempre parte de algún buffer.
>> Teclee C-x 1 para deshacerse de la lista de buffers.
@@ -610,14 +610,14 @@ momento. Ese buffer es el que actualmente edita. Si quiere editar
otro buffer, necesita "cambiar" a él. Si quiere cambiar a un buffer
que corresponde a un archivo, puede hacerlo visitando el archivo de
nuevo con C-x C-f. Pero existe una manera más rápida: use el comando
-C-x b. En ese comando, necesita teclear el nombre de buffer.
+C-x b. En ese comando, necesita teclear el nombre de buffer.
>> Teclee C-x b foo <Return> para volver al buffer "foo" que contiene
el texto del archivo "foo". Después teclee C-x b TUTORIAL.es
<Return> para regresar a este tutorial.
La mayoría del tiempo el nombre del buffer es el mismo que el nombre
-del archivo (sin la parte del directorio del archivo). Sin embargo,
+del archivo (sin la parte del directorio del archivo). Sin embargo,
esto no es así siempre. La lista de buffers que hace con C-x C-b
siempre muestra el nombre de todos los buffers.
@@ -638,7 +638,7 @@ dentro de Emacs en ese buffer del archivo. La creación o edición del
segundo buffer de archivo no afecta al primero. Esto es muy útil,
pero también significa que necesita una forma conveniente para guardar
el archivo del primer buffer. Sería una molestia tener que volver a
-este con C-x C-f para guardarlo con C-x C-s. Así tenemos
+éste con C-x C-f para guardarlo con C-x C-s. Así tenemos
C-x s Guardar algunos buffers
@@ -655,10 +655,10 @@ guardada. Le pregunta, por cada buffer, si quiere guardarlo o no.
Hay muchísimos más comandos de Emacs que los que podrían asignarse a
todos los caracteres control y meta. Emacs puede darle la vuelta a
-esto usando el comando X (eXtendido). Este viene de dos formas:
+esto usando el comando X (eXtendido). Éste viene de dos formas:
- C-x Carácter eXtendido. Seguido por un carácter.
- M-x Comando eXtendido por nombre. Seguido por un nombre
+ C-x Carácter eXtendido. Seguido por un carácter.
+ M-x Comando eXtendido por nombre. Seguido por un nombre
largo.
Estos comandos son generalmente útiles pero menos usados que los
@@ -713,7 +713,7 @@ El comando replace-string requiere dos argumentos: la cadena de
caracteres a reemplazar, y la cadena de caracteres para reemplazarla.
Debe terminar cada argumento con <Return>.
->> Mueva el cursor hacia la línea en blanco dos líneas abajo de esta.
+>> Mueva el cursor hacia la línea en blanco dos líneas abajo de ésta.
A continuación escriba
M-x repl s<Return>cambiado<Return>alterado<Return>.
@@ -762,7 +762,7 @@ que está editando.
Ya sabe qué significa el nombre del archivo: es el archivo que usted
ha encontrado. -NN%-- indica su posición actual en el texto; esto
significa que NN por ciento del texto está encima de la parte superior
-de la pantalla. Si el principio del archivo está en la pantalla, este
+de la pantalla. Si el principio del archivo está en la pantalla, éste
dirá --Top-- en vez de --00%--. Si el final del texto está en la
pantalla, dirá --Bot--. Si está mirando un texto tan pequeño que cabe
en la pantalla, el modo de línea dirá --All--.
@@ -776,7 +776,7 @@ parte de la línea de modo no muestra asteriscos, solo guiones.
La parte de la línea de modo dentro de los paréntesis es para
indicarle en qué modo de edición está. El modo por omisión es
-Fundamental, el cual está usando ahora. Este es un ejemplo de un
+Fundamental, el cual está usando ahora. Éste es un ejemplo de un
"modo mayor".
Emacs tiene diferentes modos mayores. Algunos están hechos para
@@ -841,7 +841,7 @@ Decimos que el comando "cambia el modo".
Debe intercalar espacios porque Auto Fill sólo rompe líneas en los
espacios.
-El margen esta normalmente puesto en 70 caracteres, pero puede
+El margen está normalmente puesto en 70 caracteres, pero puede
cambiarlo con el comando C-x f. Debe indicar el margen deseado como
un argumento numérico.
@@ -1079,7 +1079,7 @@ Un comando similar, C-h v, muestra la documentación de variables cuyos
valores pueda poner para adecuar el comportamiento de Emacs. Necesita
teclear el nombre de la variable cuando Emacs pregunte por ella.
- C-h a Comando Apropos. Teclee una palabra y Emacs hará una
+ C-h a Comando Apropos. Teclee una palabra y Emacs hará una
lista de todos los comandos que contengan esa palabra.
Todos estos comandos pueden ser invocados con META-x.
Para algunos comandos, el Comando Apropos también
@@ -1113,7 +1113,7 @@ correspondientes tales como find-file.
---------------------
Puede aprender más de Emacs leyendo su manual, ya sea como libro o en
-línea en el Info (use el menú Ayuda--"Help"--o teclee F10 h r). Dos
+línea en el Info (use el menú Ayuda--"Help"--o teclee F10 h r). Dos
características que pueden gustarle son la completación, que ahorra
teclear, y dired, que simplifica el manejo de archivos.
@@ -1126,7 +1126,7 @@ llamado "Completation".
Dired le permite listar los archivos en un directorio (y opcionalmente
sus subdirectorios), moverse alrededor de esa lista, visitar,
-renombrar, borrar y aparte de eso operar en los archivos. Dired esta
+renombrar, borrar y aparte de eso operar en los archivos. Dired está
descrito en el Info en el manual de Emacs en el nodo llamado "Dired".
El manual también describe otras características de Emacs.
@@ -1189,7 +1189,7 @@ Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004,
posterior como lo permite esta nota.
Se permite distribuir versiones modificadas de este documento, o
- porciones de este, bajo las condiciones anteriores, siempre que
+ porciones de éste, bajo las condiciones anteriores, siempre que
ellas tengan nota visible especificando quién fue el último en
alterarlas.
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 2c386257c10..0f24b234972 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,48 @@
+2010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * Makefile.in (PROFILING_LDFLAGS): Remove, not needed.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * b2m.c, b2m.pl: Remove files.
+ * Makefile.in (INSTALLABLES): Remove b2m.
+ * makefile.w32-in ($(BLD)/b2m.$(O)): Remove.
+
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * emacsclient.c (set_local_socket) [DARWIN_OS]: Try as a fall-back
+ DARWIN_USER_TEMP_DIR. (Bug#3992)
+
+2010-10-03 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * test-distrib.c (cool_read):
+ * movemail.c (main, concat):
+ * make-docfile.c (scan_file, write_c_args):
+ * emacsclient.c (get_server_config): Fix -Wconversion warning.
+ (egetenv): Move conditional definition earlier.
+ (progname): Use const.
+ * sorted-doc.c (xstrdup): Use const.
+
+ * Makefile.in: Remove ^L, old makes choke on it.
+
+2010-10-02 Wolfgang Schnerring <wosc@wosc.de> (tiny change)
+
+ * emacsclient.c (main): Return EXIT_FAILURE if Emacs sends us an
+ error string (Bug#6963).
+
+2010-10-02 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in (tags): Remove target.
+
+2010-10-01 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (tags, TAGS): New targets.
+
+2010-09-30 Juanma Barranquero <lekktu@gmail.com>
+
+ * emacsclient.c (get_server_config): Don't read Emacs pid from
+ the authentication file.
+
2010-09-29 Juanma Barranquero <lekktu@gmail.com>
* makefile.w32-in (../src/config.h): Remove target, it is stale.
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index 9ad3c65afad..b90b19b69b6 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -1,6 +1,7 @@
# Makefile for lib-src subdirectory in GNU Emacs.
# Copyright (C) 1985, 1987, 1988, 1993, 1994, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010
+# Free Software Foundation, Inc.
# This file is part of GNU Emacs.
@@ -38,7 +39,6 @@ C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@
C_SWITCH_MACHINE=@C_SWITCH_MACHINE@
C_WARNINGS_SWITCH = @C_WARNINGS_SWITCH@
PROFILING_CFLAGS = @PROFILING_CFLAGS@
-PROFILING_LDFLAGS = @PROFILING_LDFLAGS@
# Program name transformation.
TRANSFORM = @program_transform_name@
@@ -111,7 +111,7 @@ INSTALL_STRIP =
# Things that a user might actually run, which should be installed in bindir.
INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} \
- b2m${EXEEXT} ebrowse${EXEEXT}
+ ebrowse${EXEEXT}
INSTALLABLE_SCRIPTS = rcs-checkin grep-changelog
STAMP_INST_SCRIPTS = stamp-rcs-checkin stamp-grep-changelog
@@ -172,12 +172,11 @@ BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) ${C_WARNINGS_SWITCH} \
-DHAVE_CONFIG_H -I. -I../src -I${srcdir} -I${srcdir}/../src
ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
-LINK_CFLAGS = ${BASE_CFLAGS} ${PROFILING_LDFLAGS} ${LDFLAGS} ${CFLAGS}
+LINK_CFLAGS = ${BASE_CFLAGS} ${LDFLAGS} ${CFLAGS}
CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS}
LOADLIBES=$(LIBS_SYSTEM)
-
## This is the default compilation command.
## But we should never rely on it, because some make version failed to
## find it for getopt.o.
@@ -360,10 +359,6 @@ digest-doc${EXEEXT}: ${srcdir}/digest-doc.c
sorted-doc${EXEEXT}: ${srcdir}/sorted-doc.c
$(CC) ${ALL_CFLAGS} ${srcdir}/sorted-doc.c $(LOADLIBES) -o sorted-doc
-b2m${EXEEXT}: ${srcdir}/b2m.c ../src/config.h $(GETOPTDEPS)
- $(CC) ${ALL_CFLAGS} ${srcdir}/b2m.c -DVERSION="\"${version}\"" \
- $(GETOPTOBJS) $(LOADLIBES) -o b2m
-
movemail${EXEEXT}: movemail.o pop.o $(GETOPTDEPS)
$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} movemail.o pop.o \
$(GETOPTOBJS) $(LOADLIBES) $(LIBS_MOVE) -o movemail
diff --git a/lib-src/b2m.c b/lib-src/b2m.c
deleted file mode 100644
index 803d75e233c..00000000000
--- a/lib-src/b2m.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * b2m - a filter for Babyl -> Unix mail files
- * The copyright on this file has been disclaimed.
- *
- * usage: b2m < babyl > mailbox
- *
- * I find this useful whenever I have to use a
- * system which - shock horror! - doesn't run
- * GNU Emacs. At least now I can read all my
- * GNU Emacs Babyl format mail files!
- *
- * it's not much but it's free!
- *
- * Ed Wilkinson
- * E.Wilkinson@massey.ac.nz
- * Mon Nov 7 15:54:06 PDT 1988
- */
-
-/* Made conformant to the GNU coding standards January, 1995
- by Francesco Potorti` <pot@cnuce.cnr.it>. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-/* On some systems, Emacs defines static as nothing for the sake
- of unexec. We don't want that here since we don't use unexec. */
-#undef static
-#endif
-
-#include <stdio.h>
-#include <time.h>
-#include <sys/types.h>
-#include <getopt.h>
-#ifdef MSDOS
-#include <fcntl.h>
-#endif
-
-#undef TRUE
-#define TRUE 1
-#undef FALSE
-#define FALSE 0
-
-#define streq(s,t) (strcmp (s, t) == 0)
-#define strneq(s,t,n) (strncmp (s, t, n) == 0)
-
-typedef int logical;
-
-#define TM_YEAR_BASE 1900
-
-/* Nonzero if TM_YEAR is a struct tm's tm_year value that causes
- asctime to have well-defined behavior. */
-#ifndef TM_YEAR_IN_ASCTIME_RANGE
-# define TM_YEAR_IN_ASCTIME_RANGE(tm_year) \
- (1000 - TM_YEAR_BASE <= (tm_year) && (tm_year) <= 9999 - TM_YEAR_BASE)
-#endif
-
-/*
- * A `struct linebuffer' is a structure which holds a line of text.
- * `readline' reads a line from a stream into a linebuffer and works
- * regardless of the length of the line.
- */
-struct linebuffer
-{
- long size;
- char *buffer;
-};
-
-extern char *strtok(char *, const char *);
-
-long *xmalloc (unsigned int size);
-long *xrealloc (char *ptr, unsigned int size);
-char *concat (const char *s1, const char *s2, const char *s3);
-long readline (struct linebuffer *linebuffer, register FILE *stream);
-void fatal (const char *message) NO_RETURN;
-
-/*
- * xnew -- allocate storage. SYNOPSIS: Type *xnew (int n, Type);
- */
-#define xnew(n, Type) ((Type *) xmalloc ((n) * sizeof (Type)))
-
-
-
-char *progname;
-
-struct option longopts[] =
-{
- { "help", no_argument, NULL, 'h' },
- { "version", no_argument, NULL, 'V' },
- { 0 }
-};
-
-extern int optind;
-
-int
-main (int argc, char **argv)
-{
- logical labels_saved, printing, header, first, last_was_blank_line;
- time_t ltoday;
- struct tm *tm;
- char *labels, *p, *today;
- struct linebuffer data;
-
-#ifdef MSDOS
- _fmode = O_BINARY; /* all of files are treated as binary files */
-#if __DJGPP__ > 1
- if (!isatty (fileno (stdout)))
- setmode (fileno (stdout), O_BINARY);
- if (!isatty (fileno (stdin)))
- setmode (fileno (stdin), O_BINARY);
-#else /* not __DJGPP__ > 1 */
- (stdout)->_flag &= ~_IOTEXT;
- (stdin)->_flag &= ~_IOTEXT;
-#endif /* not __DJGPP__ > 1 */
-#endif
- progname = argv[0];
-
- while (1)
- {
- int opt = getopt_long (argc, argv, "hV", longopts, 0);
- if (opt == EOF)
- break;
-
- switch (opt)
- {
- case 'V':
- printf ("%s (GNU Emacs %s)\n", "b2m", VERSION);
- puts ("b2m is in the public domain.");
- exit (EXIT_SUCCESS);
-
- case 'h':
- fprintf (stderr, "Usage: %s <babylmailbox >unixmailbox\n", progname);
- exit (EXIT_SUCCESS);
- }
- }
-
- if (optind != argc)
- {
- fprintf (stderr, "Usage: %s <babylmailbox >unixmailbox\n", progname);
- exit (EXIT_SUCCESS);
- }
-
- labels_saved = printing = header = last_was_blank_line = FALSE;
- first = TRUE;
- ltoday = time (0);
- /* Convert to a string, checking for out-of-range time stamps.
- Don't use 'ctime', as that might dump core if the hardware clock
- is set to a bizarre value. */
- tm = localtime (&ltoday);
- if (! (tm && TM_YEAR_IN_ASCTIME_RANGE (tm->tm_year)
- && (today = asctime (tm))))
- fatal ("current time is out of range");
- data.size = 200;
- data.buffer = xnew (200, char);
-
- if (readline (&data, stdin) == 0
- || !strneq (data.buffer, "BABYL OPTIONS:", 14))
- fatal ("standard input is not a Babyl mailfile.");
-
- while (readline (&data, stdin) > 0)
- {
- if (streq (data.buffer, "*** EOOH ***") && !printing)
- {
- printing = header = TRUE;
- printf ("From \"Babyl to mail by %s\" %s", progname, today);
- continue;
- }
-
- if (data.buffer[0] == '\037')
- {
- if (data.buffer[1] == '\0')
- continue;
- else if (data.buffer[1] == '\f')
- {
- static char babyl[] = "X-Babyl-Labels: ";
- if (first)
- first = FALSE;
- else if (! last_was_blank_line)
- puts("");
- /* Save labels. */
- readline (&data, stdin);
- p = strtok (data.buffer, " ,\r\n\t");
- labels = babyl;
-
- while ((p = strtok (NULL, " ,\r\n\t")))
- labels = concat (labels, p, ", ");
-
- p = &labels[strlen (labels) - 2];
- if (*p == ',')
- *p = '\0';
- printing = header = FALSE;
- labels_saved = TRUE;
- continue;
- }
- }
-
- if ((data.buffer[0] == '\0') && header)
- {
- header = FALSE;
- if (labels_saved)
- puts (labels);
- }
-
- if (printing)
- {
- puts (data.buffer);
- if (data.buffer[0] == '\0')
- last_was_blank_line = TRUE;
- else
- last_was_blank_line = FALSE;
- }
- }
-
- return EXIT_SUCCESS;
-}
-
-
-
-/*
- * Return a newly-allocated string whose contents
- * concatenate those of s1, s2, s3.
- */
-char *
-concat (const char *s1, const char *s2, const char *s3)
-{
- int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
- char *result = xnew (len1 + len2 + len3 + 1, char);
-
- strcpy (result, s1);
- strcpy (result + len1, s2);
- strcpy (result + len1 + len2, s3);
- result[len1 + len2 + len3] = '\0';
-
- return result;
-}
-
-/*
- * Read a line of text from `stream' into `linebuffer'.
- * Return the number of characters read from `stream',
- * which is the length of the line including the newline, if any.
- */
-long
-readline (struct linebuffer *linebuffer, register FILE *stream)
-{
- char *buffer = linebuffer->buffer;
- register char *p = linebuffer->buffer;
- register char *pend;
- int chars_deleted;
-
- pend = p + linebuffer->size; /* Separate to avoid 386/IX compiler bug. */
-
- while (1)
- {
- register int c = getc (stream);
- if (p == pend)
- {
- linebuffer->size *= 2;
- buffer = (char *) xrealloc (buffer, linebuffer->size);
- p += buffer - linebuffer->buffer;
- pend = buffer + linebuffer->size;
- linebuffer->buffer = buffer;
- }
- if (c == EOF)
- {
- *p = '\0';
- chars_deleted = 0;
- break;
- }
- if (c == '\n')
- {
- if (p > buffer && p[-1] == '\r')
- {
- *--p = '\0';
- chars_deleted = 2;
- }
- else
- {
- *p = '\0';
- chars_deleted = 1;
- }
- break;
- }
- *p++ = c;
- }
-
- return (p - buffer + chars_deleted);
-}
-
-/*
- * Like malloc but get fatal error if memory is exhausted.
- */
-long *
-xmalloc (unsigned int size)
-{
- long *result = (long *) malloc (size);
- if (result == NULL)
- fatal ("virtual memory exhausted");
- return result;
-}
-
-long *
-xrealloc (char *ptr, unsigned int size)
-{
- long *result = (long *) realloc (ptr, size);
- if (result == NULL)
- fatal ("virtual memory exhausted");
- return result;
-}
-
-void
-fatal (const char *message)
-{
- fprintf (stderr, "%s: %s\n", progname, message);
- exit (EXIT_FAILURE);
-}
-
-/* arch-tag: 5a3ad2af-a802-408f-83cc-e7cf5e98653e
- (do not change this comment) */
-
-/* b2m.c ends here */
diff --git a/lib-src/b2m.pl b/lib-src/b2m.pl
deleted file mode 100644
index d3c47f61545..00000000000
--- a/lib-src/b2m.pl
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/perl
-
-# b2m.pl - Script to convert a Babyl file to an mbox file
-
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
-
-# Maintainer: Jonathan Kamens <jik@kamens.brookline.ma.us>
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# Requires CPAN modules: MailTools (for Mail::Address), TimeDate (for
-# Date::Parse).
-
-use warnings;
-use strict;
-use File::Basename;
-use Getopt::Long;
-use Mail::Address;
-use Date::Parse;
-
-my($whoami) = basename $0;
-my($version) = '$Revision$';
-my($usage) = "Usage: $whoami [--help] [--version] [--[no]full-headers] [Babyl-file]
-\tBy default, full headers are printed.\n";
-
-my($opt_help, $opt_version);
-my($opt_full_headers) = 1;
-
-die $usage if (! GetOptions(
- 'help' => \$opt_help,
- 'version' => \$opt_version,
- 'full-headers!' => \$opt_full_headers,
- ));
-
-if ($opt_help) {
- print $usage;
- exit;
-}
-elsif ($opt_version) {
- print "$whoami version: $version\n";
- exit;
-}
-
-die $usage if (@ARGV > 1);
-
-$/ = "\n\037";
-
-if (<> !~ /^BABYL OPTIONS:/) {
- die "$whoami: $ARGV is not a Babyl file\n$usage";
-}
-
-while (<>) {
- my($msg_num) = $. - 1;
- my($labels, $pruned, $full_header, $header);
- my($from_line, $from_addr);
- my($time);
-
- # This will strip the initial form feed, any whitespace that may
- # be following it, and then a newline
- s/^\s+//;
- # This will strip the ^_ off of the end of the message
- s/\037$//;
-
- if (! s/(.*)\n//) {
- malformatted:
- warn "$whoami: message $msg_num in $ARGV is malformatted\n";
- next;
- }
- $labels = $1;
-
- # Strip the integer indicating whether the header is pruned
- $labels =~ s/^(\d+)[,\s]*//;
- $pruned = $1;
-
- s/(?:((?:.+\n)+)\n*)?\*\*\* EOOH \*\*\*\n+// || goto malformatted;
- $full_header = $1;
-
- if (s/((?:.+\n)+)\n+//) {
- $header = $1;
- }
- else {
- # Message has no body
- $header = $_;
- $_ = '';
- }
-
- # "$pruned eq '0'" is different from "! $pruned". We want to make
- # sure that we found a valid label line which explicitly indicated
- # that the header was not pruned.
- if ((! $full_header) || ($pruned eq '0')) {
- $full_header = $header;
- }
-
- # End message with two newlines (some mbox parsers require a blank
- # line before the next "From " line).
- s/\s+$/\n\n/;
-
- # Quote "^From "
- s/(^|\n)From /$1>From /g;
-
- # Strip extra commas and whitespace from the end
- $labels =~ s/[,\s]+$//;
- # Now collapse extra commas and whitespace in the remaining label string
- $labels =~ s/[,\s]+/, /g;
-
- foreach my $rmail_header qw(summary-line x-coding-system) {
- $full_header =~ s/(^|\n)$rmail_header:.*\n/$1/i;
- }
-
- if ($full_header =~ s/(^|\n)mail-from:\s*(From .*)\n/$1/i) {
- ($from_line = $2) =~ s/\s*$/\n/;
- }
- else {
- foreach my $addr_header qw(return-path from really-from sender) {
- if ($full_header =~ /(?:^|\n)$addr_header:\s*(.*\n(?:\B.*\n)*)/i) {
- my($addr) = Mail::Address->parse($1);
- $from_addr = $addr->address($addr);
- last;
- }
- }
-
- if (! $from_addr) {
- $from_addr = "Babyl_to_mail_by_$whoami\@localhost";
- }
-
- if ($full_header =~ /(?:^|\n)date:\s*(\S.*\S)/i) {
- $time = str2time($1);
- }
-
- if (! $time) {
- # No Date header or we failed to parse it
- $time = time;
- }
-
- $from_line = "From " . $from_addr . " " . localtime($time) . "\n";
- }
-
- print($from_line, ($opt_full_headers ? $full_header : $header),
- ($labels ? "X-Babyl-Labels: $labels\n" : ""), "\n",
- $_) || die "$whoami: error writing to stdout: $!\n";
-}
-
-close(STDOUT) || die "$whoami: Error closing stdout: $!\n";
-
-# arch-tag: 8c7c8ab0-721c-46d7-ba3e-139801240aa8
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 1f96c481129..b60b2661805 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -39,6 +39,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# define CLOSE_SOCKET closesocket
# define INITIALIZE() (initialize_sockets ())
+char *w32_getenv (char *);
+#define egetenv(VAR) w32_getenv(VAR)
+
#else /* !WINDOWSNT */
# include "syswait.h"
@@ -62,6 +65,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
# define WCONTINUED 8
# endif
+#define egetenv(VAR) getenv(VAR)
+
#endif /* !WINDOWSNT */
#undef signal
@@ -86,13 +91,6 @@ char *getenv (const char *), *getwd (char *);
char *(getcwd) (char *, size_t);
#endif
-#ifdef WINDOWSNT
-char *w32_getenv (char *);
-#define egetenv(VAR) w32_getenv(VAR)
-#else
-#define egetenv(VAR) getenv(VAR)
-#endif
-
#ifndef VERSION
#define VERSION "unspecified"
#endif
@@ -119,7 +117,7 @@ char *w32_getenv (char *);
/* Name used to invoke this program. */
-char *progname;
+const char *progname;
/* The second argument to main. */
char **main_argv;
@@ -752,7 +750,7 @@ send_to_emacs (HSOCKET s, const char *data)
{
while (data)
{
- int dlen = strlen (data);
+ size_t dlen = strlen (data);
if (dlen + sblen >= SEND_BUFFER_SIZE)
{
int part = SEND_BUFFER_SIZE - sblen;
@@ -910,14 +908,13 @@ initialize_sockets (void)
/*
* Read the information needed to set up a TCP comm channel with
- * the Emacs server: host, port, pid and authentication string.
+ * the Emacs server: host, port, and authentication string.
*/
int
get_server_config (struct sockaddr_in *server, char *authentication)
{
char dotted[32];
char *port;
- char *pid;
FILE *config = NULL;
if (file_name_absolute_p (server_file))
@@ -948,12 +945,8 @@ get_server_config (struct sockaddr_in *server, char *authentication)
return FALSE;
if (fgets (dotted, sizeof dotted, config)
- && (port = strchr (dotted, ':'))
- && (pid = strchr (port, ' ')))
- {
- *port++ = '\0';
- *pid++ = '\0';
- }
+ && (port = strchr (dotted, ':')))
+ *port++ = '\0';
else
{
message (TRUE, "%s: invalid configuration info\n", progname);
@@ -972,8 +965,6 @@ get_server_config (struct sockaddr_in *server, char *authentication)
fclose (config);
- emacs_pid = atoi (pid);
-
return TRUE;
}
@@ -1232,7 +1223,18 @@ set_local_socket (void)
{
tmpdir = egetenv ("TMPDIR");
if (!tmpdir)
- tmpdir = "/tmp";
+ {
+#ifdef DARWIN_OS
+ size_t n = confstr (_CS_DARWIN_USER_TEMP_DIR, NULL, (size_t) 0);
+ if (n > 0)
+ {
+ tmpdir = alloca (n);
+ confstr (_CS_DARWIN_USER_TEMP_DIR, tmpdir, n);
+ }
+ else
+#endif
+ tmpdir = "/tmp";
+ }
socket_name = alloca (strlen (tmpdir) + strlen (server_name)
+ EXTRA_SPACE);
sprintf (socket_name, "%s/emacs%d/%s",
@@ -1506,6 +1508,7 @@ main (int argc, char **argv)
char *cwd, *str;
char string[BUFSIZ+1];
int null_socket_name, null_server_file, start_daemon_if_needed;
+ int exit_status = EXIT_SUCCESS;
main_argv = argv;
progname = argv[0];
@@ -1705,7 +1708,8 @@ main (int argc, char **argv)
fsync (1);
/* Now, wait for an answer and print any messages. */
- while ((rl = recv (emacs_socket, string, BUFSIZ, 0)) > 0)
+ while (exit_status == EXIT_SUCCESS
+ && (rl = recv (emacs_socket, string, BUFSIZ, 0)) > 0)
{
char *p;
string[rl] = '\0';
@@ -1744,6 +1748,7 @@ main (int argc, char **argv)
printf ("\n");
fprintf (stderr, "*ERROR*: %s", str);
needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n';
+ exit_status = EXIT_FAILURE;
}
#ifdef SIGSTOP
else if (strprefix ("-suspend ", string))
@@ -1761,7 +1766,8 @@ main (int argc, char **argv)
if (needlf)
printf ("\n");
printf ("*ERROR*: Unknown message: %s", string);
- needlf = string[0] == '\0' ? needlf : string[strlen (string) - 1] != '\n';
+ needlf = string[0]
+ == '\0' ? needlf : string[strlen (string) - 1] != '\n';
}
}
@@ -1770,8 +1776,11 @@ main (int argc, char **argv)
fflush (stdout);
fsync (1);
+ if (rl < 0)
+ exit_status = EXIT_FAILURE;
+
CLOSE_SOCKET (emacs_socket);
- return EXIT_SUCCESS;
+ return exit_status;
}
#endif /* HAVE_SOCKETS && HAVE_INET_SOCKETS */
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index 4824731672b..e2dc99214d2 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -204,7 +204,8 @@ put_filename (char *filename)
int
scan_file (char *filename)
{
- int len = strlen (filename);
+
+ size_t len = strlen (filename);
put_filename (filename);
if (len > 4 && !strcmp (filename + len - 4, ".elc"))
@@ -442,7 +443,7 @@ write_c_args (FILE *out, char *func, char *buf, int minargs, int maxargs)
register char *p;
int in_ident = 0;
char *ident_start;
- int ident_length = 0;
+ size_t ident_length = 0;
fprintf (out, "(fn");
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 552dd1349fc..25fb499cf3b 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -378,6 +378,11 @@ cleanall: clean
getopt.h: getopt_.h
$(CP) $(ALL_DEPS) $@
+### TAGS ###
+
+TAGS: $(BLD)/etags.exe *.c *.h
+ $(BLD)/etags.exe *.c *.h
+
### DEPENDENCIES ###
EMACS_ROOT = ..
@@ -390,12 +395,6 @@ $(BLD)/alloca.$(O) : \
$(EMACS_ROOT)/src/config.h \
$(EMACS_ROOT)/src/blockinput.h
-$(BLD)/b2m.$(O) : \
- $(SRC)/b2m.c \
- $(EMACS_ROOT)/src/s/ms-w32.h \
- $(EMACS_ROOT)/src/m/intel386.h \
- $(EMACS_ROOT)/lib-src/../src/config.h
-
$(BLD)/ctags.$(O) : \
$(SRC)/ctags.c \
$(EMACS_ROOT)/nt/inc/sys/param.h \
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 4ccdc93688c..f300942427e 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -169,7 +169,7 @@ main (int argc, char **argv)
{
char *inname, *outname;
int indesc, outdesc;
- int nread;
+ ssize_t nread;
int status;
int c, preserve_mail = 0;
@@ -551,8 +551,7 @@ main (int argc, char **argv)
string-comparing the two paths, because one or both of them might
be symbolic links pointing to some other directory. */
static char *
-mail_spool_name (inname)
- char *inname;
+mail_spool_name (char *inname)
{
struct stat stat1, stat2;
char *indir, *fname;
@@ -632,7 +631,7 @@ pfatal_and_delete (char *name)
static char *
concat (const char *s1, const char *s2, const char *s3)
{
- int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
+ size_t len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
char *result = (char *) xmalloc (len1 + len2 + len3 + 1);
strcpy (result, s1);
diff --git a/lib-src/sorted-doc.c b/lib-src/sorted-doc.c
index db3f3029532..4fe830e4013 100644
--- a/lib-src/sorted-doc.c
+++ b/lib-src/sorted-doc.c
@@ -93,7 +93,7 @@ xmalloc (int size)
}
char *
-xstrdup (char *str)
+xstrdup (const char *str)
{
char *buf = xmalloc (strlen (str) + 1);
(void) strcpy (buf, str);
diff --git a/lib-src/test-distrib.c b/lib-src/test-distrib.c
index 880bd115882..1487c2bab57 100644
--- a/lib-src/test-distrib.c
+++ b/lib-src/test-distrib.c
@@ -52,9 +52,10 @@ char buf[300];
/* Like `read' but keeps trying until it gets SIZE bytes or reaches eof. */
int
-cool_read (int fd, char *buf, int size)
+cool_read (int fd, char *buf, size_t size)
{
- int num, sofar = 0;
+ ssize_t num;
+ size_t sofar = 0;
while (1)
{
diff --git a/lisp/ChangeLog.1 b/lisp/ChangeLog.1
index b33b6c62532..6855c935746 100644
--- a/lisp/ChangeLog.1
+++ b/lisp/ChangeLog.1
@@ -574,7 +574,7 @@
1986-01-10 Richard Mlynarik (mly@prep)
- * mail-utils.el (mail-fetch-field)
+ * mail-utils.el (mail-fetch-field):
regexp-quote the argument.
1986-01-10 Richard M. Stallman (rms@prep)
diff --git a/lisp/ChangeLog.7 b/lisp/ChangeLog.7
index 2e96063eb81..c68d02bc3d2 100644
--- a/lisp/ChangeLog.7
+++ b/lisp/ChangeLog.7
@@ -1043,10 +1043,10 @@
(quail-prev-translation-block): Likewise.
(quail-conversion-backward-char): Call quail-error instead of
error. Set quail-translating to nil.
- (quail-conversion-forward-char): Likewize.
+ (quail-conversion-forward-char): Likewise.
(quail-conversion-delete-char): Call quail-error instead of error.
If conversion region gets vacant, set quail-converting to nil.
- (quail-conversion-backward-delete-char): Likewize.
+ (quail-conversion-backward-delete-char): Likewise.
(quail-no-conversion): Just set quail-converting to nil.
(quail-mouse-choose-completion): Call quai-error instead of error.
(quail-choose-completion-string): Likewise.
diff --git a/lisp/ChangeLog.8 b/lisp/ChangeLog.8
index 82f11450a7b..6127667ac7e 100644
--- a/lisp/ChangeLog.8
+++ b/lisp/ChangeLog.8
@@ -4926,7 +4926,7 @@
* language/ethio-util.el (setup-ethiopic-environment-internal):
Use quail-activate-hook instead of obsolete hook quail-mode-hook.
- (exit-ethiopic-environment): Likewize.
+ (exit-ethiopic-environment): Likewise.
1999-06-12 Richard M. Stallman <rms@gnu.org>
diff --git a/lisp/ChangeLog.9 b/lisp/ChangeLog.9
index 344ec373e75..416066885b1 100644
--- a/lisp/ChangeLog.9
+++ b/lisp/ChangeLog.9
@@ -16606,7 +16606,7 @@
0. Give correct argument to set-auto-coding-function.
(tar-expunge): For goto-char, use (point-min), not 0.
(tar-clear-modification-flags): For goto-char, use (point-min), not 1.
- (tar-subfile-save-buffer): Likewize.
+ (tar-subfile-save-buffer): Likewise.
* international/mule.el
(after-insert-file-set-buffer-file-coding-system): Call
@@ -16910,7 +16910,7 @@
(ccl-decode-viscii): Use translate-character.
(ccl-encode-viscii, ccl-encode-viscii-font)
(ccl-decode-vscii, ccl-encode-vscii, ccl-encode-vscii-font):
- Likewize.
+ Likewise.
* language/cyrillic.el: Remove eval-when-compile.
(cyrillic-koi8-r-nonascii-translation-table): Define it as a
@@ -16925,7 +16925,7 @@
table made from the reverse map of above.
(ccl-decode-alternativnyj): Use translate-character.
(ccl-encode-alternativnyj, ccl-encode-alternativnyj-font):
- Likewize
+ Likewise.
* international/mule-diag.el (non-iso-charset-alist): Specify
translation table symbol instead of translation table itself.
@@ -18071,8 +18071,8 @@
* emacs-lisp/cl-macs.el: Doc fixes; mainly avoid duplicating arg
list in doc string. Don't quote keyword symbols.
- * emacs-lisp/cl.el: Likewise
- * emacs-lisp/cl-seq.el: Likewise
+ * emacs-lisp/cl.el: Likewise.
+ * emacs-lisp/cl-seq.el: Likewise.
2000-05-05 Gerd Moellmann <gerd@gnu.org>
diff --git a/lisp/ChangeLog.trunk b/lisp/ChangeLog.trunk
index 3ca07c33e15..4097b914223 100644
--- a/lisp/ChangeLog.trunk
+++ b/lisp/ChangeLog.trunk
@@ -1,3 +1,740 @@
+2010-10-15 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
+ Suppress expansion of tabs to spaces.
+
+2010-10-14 Kenichi Handa <handa@m17n.org>
+
+ * mail/rmail.el (rmail-show-message-1): Catch an error of
+ base64-decode-region and just show an error message (bug#7165).
+
+ * ps-mule.el (ps-mule-font-spec-list): Delete it. Not used
+ anymore.
+ (ps-mule-begin-job): Fix for the case that only ENCODING is set in
+ a font-spec (bug#7197).
+
+2010-10-14 Glenn Morris <rgm@gnu.org>
+
+ * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org.
+
+2010-10-14 Juanma Barranquero <lekktu@gmail.com>
+
+ * international/mule.el (define-coding-system):
+ * international/titdic-cnv.el (quail-cxterm-package-ext-info):
+ * composite.el (compose-region): Fix typo in docstring.
+
+2010-10-14 Chong Yidong <cyd@stupidchicken.com>
+
+ * cus-face.el (custom-theme-set-faces): Call custom-push-theme
+ only after checking the theme-face property.
+
+ * faces.el (face-spec-reset-face): Reset all attributes in one
+ single call to set-face-attribute.
+ (face-spec-match-p): Make it a defsubst.
+ (frame-set-background-mode): New arg KEEP-FACE-SPECS.
+ (x-create-frame-with-faces, tty-create-frame-with-faces)
+ (tty-set-up-initial-frame-faces): Don't recompute face specs in
+ frame-set-background-mode, since they are recomputed immediately
+ afterwards in face-set-after-frame-default.
+ (face-set-after-frame-default): Minor optimization.
+ (cursor): Provide non-trivial defface spec.
+
+ * custom.el (custom-theme-recalc-face): Simplify.
+
+2010-10-14 Jay Belanger <jay.p.belanger@gmail.com>
+
+ * calc/calc-alg.el (math-var): Renamed from `var'.
+ (math-is-polynomial, math-is-poly-rec): Replace `var'
+ with `math-var'.
+
+ * calc/calcalg2.el (math-var): Renamed from `var'.
+ (calcFunc-table, math-scan-for-limits): Replace `var'
+ with `math-var'.
+
+2010-10-13 Glenn Morris <rgm@gnu.org>
+
+ * subr.el (last): Deal with dotted lists (reported in bug#7174).
+
+2010-10-13 Stephen Berman <stephen.berman@gmx.net>
+
+ * subr.el (last): Use `safe-length' instead of `length' (bug#7206).
+
+2010-10-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * net/tls.el (tls-program): Remove spurious %s from openssl.
+ (tls-starttls-switches): Remove starttls hack.
+ (open-tls-stream): Ditto.
+ (tls-find-starttls-argument): Ditto.
+
+2010-10-13 Juanma Barranquero <lekktu@gmail.com>
+
+ * image.el (image-library-alist): Declare as obsolete alias.
+ (image-type-available-p): Use `dynamic-library-alist'.
+
+ * term/w32-win.el (dynamic-library-alist):
+ Use instead of `image-library-alist'.
+
+2010-10-13 IRIE Shinsuke <irieshinsuke@yahoo.co.jp> (tiny change)
+
+ * subr.el (last): Make it faster. (Bug#7174)
+
+2010-10-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> (tiny change)
+
+ * Makefile.in (compile-clean): Use `` instead of $(). (Bug#7178)
+
+2010-10-12 Chong Yidong <cyd@stupidchicken.com>
+
+ * cus-theme.el (custom-theme--listed-faces): Add cursor face.
+ (describe-theme-1): Extract doc from unloaded themes.
+
+ * custom.el (custom-theme-name-valid-p): Don't list color-themes.
+
+ * themes/tango-theme.el:
+ * themes/tango-dark-theme.el:
+ * themes/wheatgrass-theme.el: New files.
+
+2010-10-12 Chong Yidong <cyd@stupidchicken.com>
+
+ * cus-theme.el (describe-theme, customize-themes)
+ (custom-theme-save): New commands.
+ (custom-new-theme-mode-map): Bind C-x C-s.
+ (custom-new-theme-mode): Use custom--initialize-widget-variables.
+ (customize-create-theme): New optional arg THEME.
+ (custom-theme-revert): Use it.
+ (custom-theme-visit-theme): Remove dead code.
+ (custom-theme-merge-theme): Use custom-available-themes.
+ (custom-theme-write): Make interactive.
+ (custom-theme-write): Use custom-theme-name-valid-p.
+ (describe-theme-1, custom-theme-choose-revert)
+ (custom-theme-checkbox-toggle, custom-theme-selections-toggle):
+ New funs.
+ (custom-theme-allow-multiple-selections): New option.
+ (custom-theme-choose-mode): New major mode.
+
+ * custom.el (custom-theme-set-variables): Remove dead code. Obey
+ custom--inhibit-theme-enable.
+ (custom--inhibit-theme-enable): New var.
+ (provide-theme): Obey it.
+ (load-theme): Replace load with manual read/eval, in order to
+ check for correctness. Use custom-theme-name-valid-p.
+ (custom-theme-name-valid-p): New function.
+ (custom-available-themes): Use it.
+
+ * cus-edit.el (custom--initialize-widget-variables): New function.
+ (Custom-mode): Use it.
+
+ * cus-face.el (custom-theme-set-faces): Remove dead code. Obey
+ custom--inhibit-theme-enable.
+
+ * help-mode.el (help-theme-def, help-theme-edit): New buttons.
+
+2010-10-12 Juanma Barranquero <lekktu@gmail.com>
+
+ * net/telnet.el (telnet-mode-map): Fix previous change (bug#7193).
+
+2010-10-12 Jan Djärv <jan.h.d@swipnet.se>
+
+ * term/ns-win.el (ns-right-alternate-modifier): New defvar.
+ (ns-right-option-modifier): New alias for ns-right-alternate-modifier.
+ (mac-right-option-modifier): New alias for ns-right-option-modifier.
+
+ * cus-start.el (all): ns-right-alternate-modifier is new.
+
+2010-10-12 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/lisp.el (lisp-completion-at-point):
+ Use emacs-lisp-mode-syntax-table for the whole function.
+
+2010-10-12 David Koppelman <koppel@ece.lsu.edu>
+
+ * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified
+ instead of font-lock-mode before adding keywords.
+ Remove hi-lock-mode off code. Remove inhibit hack.
+ (hi-lock-set-pattern): Only add keywords if font-lock-fontified
+ non-nil; removed hook inhibit hack.
+
+2010-10-12 Glenn Morris <rgm@gnu.org>
+
+ * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it...
+ (load-path-shadows-find): ... to this.
+ (list-load-path-shadows): Update for above change.
+
+ * mail/mail-utils.el (mail-mbox-from): Also try return-path.
+
+2010-10-11 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * mail/hashcash.el, net/imap.el, pgg-parse.el, pgg.el:
+ Fix comment for declare-function.
+
+2010-10-11 Chong Yidong <cyd@stupidchicken.com>
+
+ * custom.el (custom-fix-face-spec): New function; code moved from
+ custom-face-edit-fix-value.
+ (custom-push-theme): Use it when checking if a face has been
+ changed outside customize.
+ (custom-available-themes): New function.
+ (load-theme): Use it.
+
+ * cus-edit.el (custom-face-edit-fix-value): Use
+ custom-fix-face-spec.
+
+ * custom.el (custom-push-theme): Cleanup (use cond).
+ (disable-theme): Recompute the saved-face property.
+ (custom-theme-recalc-face): Follow face alias before setting prop.
+
+ * image.el (image-checkbox-checked, image-checkbox-unchecked): New
+ variables, containing checkbox images.
+
+ * startup.el (fancy-startup-tail):
+ * wid-edit.el (checkbox): Use them.
+
+2010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * shell.el (shell-mode-map):
+ * progmodes/modula2.el (m2-mode-map):
+ * progmodes/inf-lisp.el (inferior-lisp-mode-map):
+ * play/mpuz.el (mpuz-mode-map):
+ * play/landmark.el (lm-mode-map):
+ * play/decipher.el (decipher-mode-map):
+ * play/5x5.el (5x5-mode-map):
+ * net/telnet.el (telnet-mode-map):
+ * net/quickurl.el (quickurl-list-mode-map):
+ * net/mairix.el (mairix-searches-mode-map):
+ * net/eudc-hotlist.el (eudc-hotlist-mode-map):
+ * net/dig.el (dig-mode-map):
+ * mail/mspools.el (mspools-mode-map):
+ * hexl.el (hexl-mode-map):
+ * emulation/ws-mode.el (wordstar-C-k-map, wordstar-mode-map)
+ (wordstar-C-o-map, wordstar-C-q-map):
+ * emacs-lisp/edebug.el (edebug-eval-mode-map):
+ * emacs-lisp/chart.el (chart-map):
+ * edmacro.el (edmacro-mode-map):
+ * erc/erc-list.el (erc-list-menu-mode-map):
+ * array.el (array-mode-map): Declare and define in one step.
+
+ * vc/log-view.el (log-view-mode-map): Bind revert-buffer.
+
+2010-10-10 Daiki Ueno <ueno@unixuser.org>
+
+ * epa.el (epa-passphrase-callback-function): Display filename
+ passed as the 3rd arg.
+ * epa-file.el (epa-file-passphrase-callback-function): Pass
+ filename to epa-passphrase-callback-function.
+
+2010-10-09 Chong Yidong <cyd@stupidchicken.com>
+
+ * cus-edit.el (custom-face-widget-to-spec)
+ (custom-face-get-current-spec, custom-face-state): New functions.
+ (custom-face-set, custom-face-mark-to-save)
+ (custom-face-value-create, custom-face-state-set): Use them.
+
+ * cus-theme.el (custom-theme--listed-faces): New var.
+ (customize-create-theme): Use *Custom Theme* as the buffer name.
+ Set revert-buffer-function. Optional arg BUFFER. Insert all
+ faces listed in custom-theme--listed-faces.
+ (custom-theme-revert): New function.
+ (custom-theme-add-variable, custom-theme-add-face): Insert at the
+ bottom of the list.
+ (custom-theme-write): Prompt for theme name if empty.
+ (custom-theme-write-variables): Use dolist.
+ (custom-theme-write-faces): Handle hidden (collapsed) widgets.
+
+2010-10-09 Alan Mackenzie <acm@muc.de>
+
+ Enhance fontification of declarators to take account of the
+ presence/absence of "typedef".
+
+ * cc-engine.el (c-forward-type): New &optional param
+ "brace-block-too".
+ (c-forward-decl-or-cast-1): cdr of return value now indicates the
+ presence of either or both of a "struct"-like keyword and
+ "typedef".
+
+ * cc-fonts.el (c-complex-decl-matchers): Remove the heuristic
+ fontification of declarators which follow a "}".
+ (c-font-lock-declarations): Fontify declarators according to the
+ presence/absence of "typedef".
+
+ * cc-langs.el (c-typedef-kwds c-typedef-key): New lang variable
+ for "typedef".
+ (c-typedef-decl-key): New lang variable built from
+ c-typedef-decl-kwds.
+
+2010-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * ibuffer.el (ibuffer-mode-map): Don't redefine the cursor keys,
+ since that's too annoying. Move the filter groups commands to
+ TAB/backtab.
+
+ * epa.el (epa-passphrase-callback-function): Say what we're
+ querying the password for.
+
+ * ibuffer.el (ibuffer-visit-buffer): To mimick list-buffers
+ behaviour, don't bury the ibuffer buffer when visiting other
+ buffers.
+
+2010-10-08 Chong Yidong <cyd@stupidchicken.com>
+
+ * cus-edit.el (custom-commands, custom-buffer-create-internal)
+ (custom-magic-value-create): Pad button tags with spaces.
+ (custom-face-edit): New variable.
+ (custom-face-value-create): Determine whether to use the usual
+ face editor here, instead of using custom-face-selected. Pass
+ face defaults to custom-face-edit widget.
+ (custom-face-selected, custom-display-unselected): Delete widgets.
+ (custom-display-unselected-match): Function removed.
+ (custom-face-set, custom-face-mark-to-save): Accept
+ custom-face-edit widgets as the direct widget child.
+
+ * wid-edit.el (widget--completing-widget): New var.
+ (widget-default-complete): Bind it when doing completion.
+ (widget-string-complete, widget-file-complete): Use it.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * calendar/cal-hebrew.el (holiday-hebrew-rosh-hashanah)
+ (holiday-hebrew-passover, holiday-hebrew-tisha-b-av)
+ (holiday-hebrew-misc): Small simplifications.
+
+ * emacs-lisp/authors.el (authors-valid-file-names): Add b2m.c.
+
+ * net/browse-url.el: Don't require thingatpt, term, dired,
+ executable, or w3-auto when compiling.
+ (dired-get-filename, term-char-mode, term-send-down, term-send-string):
+ Declare.
+ (browse-url-text-emacs): Require term.
+
+2010-10-08 Andreas Schwab <schwab@linux-m68k.org>
+
+ * net/browse-url.el (browse-url-xdg-open): Remove use of /bin/sh.
+
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
+
+ * emacs-lisp/shadow.el (lisp-shadow): Change prefix.
+ (shadows-compare-text-p): Make it an obsolete alias for...
+ (load-path-shadows-compare-text): ... new name.
+ (find-emacs-lisp-shadows): Update for above name change.
+ (load-path-shadows-same-file-or-nonexistent): New name for the old
+ shadow-same-file-or-nonexistent.
+
+2010-10-08 Chong Yidong <cyd@stupidchicken.com>
+
+ * minibuffer.el (completion--some, completion--do-completion)
+ (minibuffer-complete-and-exit, minibuffer-completion-help)
+ (completion-basic-try-completion)
+ (completion-basic-all-completions)
+ (completion-pcm--find-all-completions): Use lexical-let to
+ avoid some false matches in variable completion (Bug#7056)
+
+2010-10-08 Olof Ohlsson Sax <olof.ohlsson.sax@gmail.com> (tiny change)
+
+ * vc-svn.el (vc-svn-merge-news): Use --non-interactive. (Bug#7152)
+
+2010-10-08 Leo <sdl.web@gmail.com>
+
+ * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
+ return non-nil if the file exists (Bug#7090).
+
+2010-10-08 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * minibuffer.el (completion--replace):
+ Better preserve markers (bug#7138).
+
+2010-10-08 Juanma Barranquero <lekktu@gmail.com>
+
+ * server.el (server-process-filter): Doc fix.
+
+2010-10-08 Drew Adams <drew.adams@oracle.com>
+
+ * dired.el (dired-save-positions): Doc fix. (Bug#7119)
+
+2010-10-08 Andreas Schwab <schwab@linux-m68k.org>
+
+ * Makefile.in (ELCFILES): Update.
+
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * vc/ediff-wind.el (ediff-setup-control-frame):
+ * vc/ediff-ptch.el (ediff-default-backup-extension):
+ * vc/ediff-diff.el (ediff-shell, ediff-diff-options)
+ (ediff-exec-process): Remove system-types emx, windows-95.
+
+ * net/browse-url.el (browse-url-xdg-open): Shell-quote url. (Bug#7166)
+
+2010-10-07 Chong Yidong <cyd@stupidchicken.com>
+
+ * cus-edit.el (custom-variable, custom-face): Doc fix.
+ (custom-face-edit): Add value-create attribute.
+ (custom-face-edit-value-create)
+ (custom-face-edit-value-visibility-action): New functions. Hide
+ unused face attributes by default, and add a visibility toggle.
+ (custom-face-edit-deactivate): Show empty values with shadow face.
+ (custom-face-selected): Only use this for face specs with default
+ attributes.
+ (custom-face-value-create): Cleanup.
+
+ * wid-edit.el (widget-checklist-value-create): Use dolist.
+ (widget-checklist-match-find): Make second arg optional.
+
+2010-10-07 Glenn Morris <rgm@gnu.org>
+
+ * hilit-chg.el (hilit-chg-get-diff-info, hilit-chg-get-diff-list-hk):
+ Prefix things.
+
+ * emacs-lisp/shadow.el (shadow-font-lock-keywords)
+ (load-path-shadows-mode, list-load-path-shadows): Rename shadow-mode to
+ load-path-shadows-mode, update references.
+ (load-path-shadows-font-lock-keywords, load-path-shadows-find-file):
+ Rename variable and button.
+ (list-load-path-shadows): Update button caller.
+
+2010-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/smie.el (smie-bnf-classify): New function.
+ (smie-bnf-precedence-table): Use it to remember the closers/openers.
+ (smie-merge-prec2s): Handle those new entries.
+ (smie-prec2-levels): Only set precedence to nil for actual
+ openers/closers.
+ * progmodes/octave-mod.el (octave-smie-op-levels): Remove dummy entry
+ that is now unnecessary.
+
+2010-10-07 Miles Bader <miles@gnu.org>
+
+ * emacs-lisp/regexp-opt.el (regexp-opt): Add `symbols' mode.
+
+2010-10-07 Glenn Morris <rgm@gnu.org>
+
+ * mail/rmail.el (mail-sendmail-delimit-header, mail-header-end)
+ (mail-position-on-field): Remove declarations.
+ (mail-position-on-field): Autoload it.
+ (rmail-retry-failure): Replace use of mail-sendmail-delimit-header
+ and mail-header-end. Don't require sendmail.
+
+ * emacs-lisp/shadow.el (shadow-font-lock-keywords): New variable.
+ (shadow-mode): New mode.
+ (shadow-find-file): New button.
+ (list-load-path-shadows): Use shadow-mode and buttons.
+
+ * iimage.el (iimage-version): Remove.
+ (iimage-mode-image-search-path, iimage-mode-image-regex-alist):
+ Turn into defcustoms.
+ (iimage-mode-map): Give it a doc string.
+
+ * calendar/appt.el (appt-activate): Give a warning rather than an error
+ if there is no diary-file.
+
+2010-10-06 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-sh-file-name-handler-alist):
+ Use `tramp-handle-find-backup-file-name'.
+
+2010-10-06 Glenn Morris <rgm@gnu.org>
+
+ * font-core.el (font-lock-defaults-alist): Remove variable.
+ (font-lock-mode): Doc fix.
+ (font-lock-default-function): Do not consult font-lock-defaults-alist.
+ * font-lock.el (font-lock-refresh-defaults): Doc fix.
+ (font-lock-set-defaults): Doc fix.
+ Do not consult font-lock-defaults-alist.
+
+ * hilit-chg.el (hilit-chg-get-diff-list-hk): Declare `e' for compiler.
+
+ * emacs-lisp/cl.el: No longer provide cl-19.
+
+2010-10-05 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-handle-directory-files-and-attributes)
+ (tramp-handle-file-exists-p, tramp-handle-file-newer-than-file-p):
+ New defuns, taken from tramp-smb.el.
+ (tramp-coding-system-change-eol-conversion)
+ (tramp-set-process-query-on-exit-flag): Removed.
+
+ * net/tramp-compat.el (top): Do not check for byte-compiler
+ objects.
+ (tramp-compat-coding-system-change-eol-conversion)
+ (tramp-compat-set-process-query-on-exit-flag): New defuns, taken
+ from tramp.el.
+
+ * net/tramp-gvfs.el:
+ * net/tramp-gw.el: Replace `tramp-set-process-query-on-exit-flag'
+ by `tramp-compat-set-process-query-on-exit-flag'.
+
+ * net/tramp-imap.el (tramp-imap-file-name-handler-alist): Use
+ `tramp-handle-directory-files-and-attributes',
+ `tramp-handle-file-exists-p' and
+ `tramp-handle-file-newer-than-file-p'.
+ (tramp-imap-handle-file-exists-p)
+ (tramp-imap-handle-file-executable-p)
+ (tramp-imap-handle-file-readable-p)
+ (tramp-imap-handle-directory-files-and-attributes)
+ (tramp-imap-handle-file-newer-than-file-p): Removed.
+
+ * net/tramp-sh.el: Replace `tramp-set-process-query-on-exit-flag'
+ by `tramp-compat-set-process-query-on-exit-flag' and
+ `tramp-coding-system-change-eol-conversion' by
+ `tramp-compat-coding-system-change-eol-conversion'.
+
+ * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Use
+ `tramp-handle-directory-files-and-attributes',
+ `tramp-handle-file-exists-p' and
+ `tramp-handle-file-newer-than-file-p'.
+ (tramp-smb-handle-directory-files-and-attributes)
+ (tramp-smb-handle-file-exists-p)
+ (tramp-smb-handle-file-newer-than-file-p): Removed.
+ (tramp-smb-maybe-open-connection): Replace
+ `tramp-set-process-query-on-exit-flag' by
+ `tramp-compat-set-process-query-on-exit-flag'.
+
+2010-10-05 Glenn Morris <rgm@gnu.org>
+
+ * obsolete/rnews.el, obsolete/rnewspost.el: Remove files.
+
+2010-10-04 Michael Albinus <michael.albinus@gmx.de>
+
+ Continue reorganization of load dependencies. (Bug#7156)
+
+ * net/tramp.el (tramp-handle-file-local-copy-hook)
+ (tramp-delete-temp-file-function): Move down.
+ (tramp-exists-file-name-handler): Move up.
+ (tramp-register-file-name-handlers): Simplify autoload.
+ (tramp-handle-write-region-hook, tramp-handle-directory-file-name)
+ (tramp-handle-directory-files, tramp-handle-dired-uncache)
+ (tramp-handle-file-modes, tramp-handle-file-name-as-directory)
+ (tramp-handle-file-name-completion)
+ (tramp-handle-file-name-directory)
+ (tramp-handle-file-name-nondirectory, tramp-handle-file-regular-p)
+ (tramp-handle-file-remote-p, tramp-handle-file-symlink-p)
+ (tramp-handle-find-backup-file-name)
+ (tramp-handle-insert-file-contents, tramp-handle-load)
+ (tramp-handle-substitute-in-file-name)
+ (tramp-handle-unhandled-file-name-directory)
+ (tramp-mode-string-to-int, tramp-local-host-p)
+ (tramp-make-tramp-temp-file): Moved from tramp-sh.el.
+
+ * net/tramp-gvfs.el (top):
+ * net/tramp-smb.el (top): Do not require 'tramp-sh.
+
+ * net/tramp-sh.el (all): Move several objects to tramp.el, see
+ there. Rename `tramp-handle-*' to `tramp-sh-handle-*'.
+
+2010-10-04 Glenn Morris <rgm@gnu.org>
+
+ * calendar/appt.el (appt-add): Ensure reminders are enabled.
+ (appt-activate): Give status messages.
+
+2010-10-03 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * net/gnutls.el: Improve docs. Remove starttls and ssl emulation.
+ Provide only `open-gnutls-stream' (formerly `open-ssl-stream') and
+ `gnutls-negotiate' (formerly `starttls-negotiate'). Remove
+ trivial wrapper `starttls-open-stream'.
+
+2010-10-03 Dan Nicolaescu <dann@ics.uci.edu>
+
+ Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and
+ log-outgoing commands.
+ * vc/vc.el (vc-log-internal-common): Add a new argument and use it
+ to create a buffer local revert-buffer-function variable.
+ (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a
+ revert-buffer-function lambda.
+
+2010-10-03 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * net/gnutls.el (starttls-negotiate): Use the plist interface to
+ `gnutls-boot'. Make TYPE the only required parameter. Allow
+ TRUSTFILES and KEYFILES to be lists.
+ (open-ssl-stream): Use it.
+
+2010-10-03 Glenn Morris <rgm@gnu.org>
+
+ * subr.el (directory-sep-char): Remove obsolete variable.
+ * net/tramp-compat.el: Don't mess about with the byte-compiler unless
+ it is "necessary".
+
+ * vc/vc-hooks.el (vc-header-alist): Remove obsolete variable.
+ * vc/vc.el (vc-static-header-alist): Doc fix.
+ * vc/vc-cvs.el (vc-cvs-header):
+ * vc/vc-rcs.el (vc-rcs-header):
+ * vc/vc-sccs.el (vc-sccs-header):
+ * vc/vc-svn.el (vc-svn-header): Do not consult vc-header-alist.
+ * obsolete/vc-mcvs.el (vc-mcvs-header):
+ * progmodes/cperl-mode.el (cperl-mode): Only set vc-header-alist
+ on XEmacs.
+
+2010-10-03 Chong Yidong <cyd@stupidchicken.com>
+
+ * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Remove
+ obsolete use of binary-overwrite-mode (Bug#7001).
+
+2010-10-03 Glenn Morris <rgm@gnu.org>
+
+ * obsolete/x-menu.el: Remove file, obsolete since 21.1
+
+ * textmodes/rst.el (rst-font-lock-keywords-function):
+ Drop Emacs 20 code.
+
+ * textmodes/artist.el (artist-replace-char): Drop Emacs 20 code.
+
+ * printing.el: Drop Emacs 20 code.
+
+ * calendar/appt.el (appt-delete): Don't autoload it (you can't use it
+ without having used appt.el already).
+
+ * subr.el (make-local-hook): Remove function obsolete since 21.1.
+ * progmodes/cc-mode.el (make-local-hook): Don't do cc-bytecomp stuff.
+ (c-basic-common-init, c-font-lock-init): Only call make-local-hook on
+ XEmacs.
+ * progmodes/cc-styles.el (make-local-hook): Don't do cc-bytecomp stuff.
+ (c-make-styles-buffer-local): Only call make-local-hook on XEmacs.
+
+ * ps-def.el (leading-code-private-22, charset-bytes, charset-id)
+ (charset-width, find-charset-region, chars-in-region, forward-point)
+ (encode-coding-string, coding-system-p, ccl-execute-on-string)
+ (define-ccl-program, multibyte-string-p, string-make-multibyte):
+ Remove compatibility cruft (none of these are used by ps*.el).
+
+2010-10-03 Kevin Rodgers <kevin.d.rodgers@gmail.com>
+
+ * subr.el (booleanp): Return t instead of a list (Bug#7086).
+
+2010-10-03 Chong Yidong <cyd@stupidchicken.com>
+
+ * server.el (server-process-filter, server-return-error): Give
+ emacsclient time to shut down after receiving an error string.
+
+2010-10-02 Michael Albinus <michael.albinus@gmx.de>
+
+ * files.el (remote-file-name-inhibit-cache): New defcustom.
+
+ * time.el (display-time-file-nonempty-p): Use
+ `remote-file-name-inhibit-cache'.
+
+ * net/tramp.el (tramp-completion-reread-directory-timeout): Fix
+ docstring.
+
+ * net/tramp-cache.el (tramp-cache-inhibit-cache): Remove.
+ (tramp-get-file-property): Replace `tramp-cache-inhibit-cache' by
+ `remote-file-name-inhibit-cache'. Check also for an integer
+ value. Add/increase counter when `tramp-verbose' >= 10.
+ (tramp-set-file-property): Add/increase counter when
+ `tramp-verbose' >= 10.
+
+ * net/tramp-cmds.el (tramp-cleanup-all-connections)
+ (tramp-cleanup-all-buffers): Set tramp-autoload cookie.
+ (tramp-bug): Set tramp-autoload cookie. Report all interned
+ tramp-* variables. Report also `remote-file-name-inhibit-cache'.
+ (tramp-reporter-dump-variable): Fix docstring. Mask non-7bit
+ characters only in strings.
+
+ * net/tramp-compat.el (remote-file-name-inhibit-cache): Define due
+ to backward compatibility.
+
+ * net/tramp-sh.el (tramp-handle-verify-visited-file-modtime)
+ (tramp-handle-file-name-all-completions)
+ (tramp-handle-vc-registered): Use
+ `remote-file-name-inhibit-cache'.
+ (tramp-open-connection-setup-interactive-shell): Call
+ `tramp-cleanup-connection' directly.
+
+2010-10-02 Glenn Morris <rgm@gnu.org>
+
+ * emacs-lisp/checkdoc.el (checkdoc-minor-keymap): Remove obsolete alias.
+
+ * subr.el (char-bytes): Remove obsolete function.
+
+ * isearch.el (isearch-return-char): Remove obsolete function.
+
+ * mouse.el: No longer provide mldrag.
+ (mldrag-drag-mode-line, mldrag-drag-vertical-line):
+ Remove obsolete aliases.
+
+ * comint.el (comint-kill-output): Remove obsolete alias.
+
+ * composite.el (decompose-composite-char): Remove obsolete function.
+ * ps-def.el (decompose-composite-char): Remove unused function.
+
+ * iswitchb.el (iswitchb-default-keybindings): Remove obsolete function.
+
+ * outline.el (outline-visible): Remove obsolete function.
+
+ * term/pc-win.el (x-frob-font-slant, x-frob-font-weight):
+ * faces.el (internal-find-face, internal-get-face)
+ (frame-update-faces, frame-update-face-colors)
+ (x-frob-font-weight, x-frob-font-slant)
+ (internal-frob-font-weight, internal-frob-font-slant)
+ (x-make-font-bold, x-make-font-demibold, x-make-font-unbold)
+ (x-make-font-italic, x-make-font-oblique, x-make-font-unitalic)
+ (x-make-font-bold-italic): Remove functions and aliases, obsolete
+ since Emacs 21.1.
+ * emulation/viper-util.el (viper-get-face):
+ * obsolete/lucid.el (find-face, get-face): Use facep.
+ * vc/ediff-init.el (ediff-valid-color-p, ediff-get-face):
+ Remove unused functions.
+ * vc/ediff-util.el (ediff-submit-report): Doc fix.
+
+ * emacs-lisp/bytecomp.el (byte-compile-file): Use kill-emacs-hook to
+ delete tempfile if interrupted during compilation.
+
+2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * net/tls.el (tls-starttls-switches): Give up on using starttls with
+ gnutls-cli.
+ (tls-program): Add --insecure to be consistent with the defaults from
+ openssl s_client. Now all three commands are insecure.
+
+2010-10-01 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (DEST, TAGS, TAGS-LISP, TAGS-nmake)
+ (TAGS-LISP-nmake, TAGS-gmake, TAGS-LISP-gmake, TAGS-SH)
+ (TAGS-LISP-SH, TAGS-CMD, TAGS-LISP-CMD): New targets.
+
+2010-10-01 Glenn Morris <rgm@gnu.org>
+
+ * obsolete/sc.el: Remove file.
+
+ * files.el (temporary-file-directory): On darwin, also try
+ DARWIN_USER_TEMP_DIR (see discussion in bug#7135).
+
+2010-10-01 Juanma Barranquero <lekktu@gmail.com>
+
+ * server.el (server-start): Revert part of 2010-09-30T02:53:26Z!lekktu@gmail.com.
+ Let's not break compatibility gratuitously, shall we?
+
+2010-09-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * net/tls.el (tls-starttls-switches): New variable.
+ (tls-find-starttls-argument): Use it.
+ (open-tls-stream): Ditto.
+
+ * net/netrc.el (netrc-credentials): Return the value of the "default"
+ entry.
+ (netrc-machine): Ditto.
+
+2010-09-30 Eli Zaretskii <eliz@gnu.org>
+
+ * vc/vc-hooks.el (vc-default-mode-line-string): Doc fix.
+
+2010-09-30 Juanma Barranquero <lekktu@gmail.com>
+
+ * server.el (server-start): Don't write pid to the authentication file.
+ (server-create-tty-frame): Don't send pid.
+ (server-process-filter): Send pid at the start of every connection.
+
+2010-09-30 Glenn Morris <rgm@gnu.org>
+
+ * calendar/diary-lib.el (view-diary-entries, list-diary-entries)
+ (show-all-diary-entries): Remove obsolete function aliases.
+
+ * calendar/appt.el (appt-issue-message, appt-visible, appt-msg-window):
+ Remove options, obsolete since 22.1.
+ (appt-display-format, appt-display-message): Remove
+ backwards-compatibility code.
+ (appt-check): No longer check appt-issue-message.
+ (appt-make-list): No longer autoload it. Doc fix. No longer
+ activate the package.
+
2010-09-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
* net/gnutls.el (starttls-negotiate): Loop a lot longer.
@@ -11452,6 +12189,12 @@
(tar-header-block-tokenize): Decode the username and groupname.
(tar-chown-entry, tar-chgrp-entry): Encode the names (bug#4730).
+2009-10-17 Eric Ludlam <zappo@gnu.org>
+
+ * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
+ contains multibyte characters, choose first applicable coding
+ system automatically.
+
2009-10-17 Stefan Monnier <monnier@iro.umontreal.ca>
* international/mule-cmds.el (select-safe-coding-system): If the file
@@ -12398,6 +13141,10 @@
* term/w32-win.el (setup-default-fontset, set-fontset-font):
Remove unused declarations.
+2009-09-30 Eric Ludlam <zappo@gnu.org>
+
+ * emacs-lisp/eieio.el (boolean-p): Delete.
+
2009-09-30 Glenn Morris <rgm@gnu.org>
* emacs-lisp/authors.el (authors-ignored-files): Add "js2-mode.el".
@@ -12487,6 +13234,17 @@
* net/tramp-imap.el: New package.
+2009-09-28 Eric Ludlam <zappo@gnu.org>
+
+ * emacs-lisp/chart.el:
+ * emacs-lisp/eieio-base.el:
+ * emacs-lisp/eieio-comp.el:
+ * emacs-lisp/eieio-custom.el:
+ * emacs-lisp/eieio-datadebug.el:
+ * emacs-lisp/eieio-opt.el:
+ * emacs-lisp/eieio-speedbar.el:
+ * emacs-lisp/eieio.el: New files.
+
2009-09-27 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* whitespace.el (whitespace-trailing-regexp)
@@ -16734,7 +17492,7 @@ See ChangeLog.14 for earlier changes.
;; coding: utf-8
;; End:
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -16750,5 +17508,3 @@ See ChangeLog.14 for earlier changes.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;; arch-tag: d3e45e38-19e2-49b6-8dc2-7cb26adcc5a1
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index acc073650db..fc7ba7120e2 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -84,6 +84,7 @@ BIG_STACK_OPTS = --eval "(setq max-lisp-eval-depth $(BIG_STACK_DEPTH))"
COMPILE_FIRST = \
$(lisp)/emacs-lisp/bytecomp.elc \
$(lisp)/emacs-lisp/byte-opt.elc \
+ $(lisp)/emacs-lisp/macroexp.elc \
$(lisp)/emacs-lisp/autoload.elc
# The actual Emacs command run in the targets below.
@@ -259,7 +260,7 @@ compile-main: compile-clean
compile-clean:
@cd $(lisp); $(setwins); \
elcs=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.elc |g'`; \
- for el in $$(echo $$elcs | sed -e 's/\.elc/\.el/g'); do \
+ for el in `echo $$elcs | sed -e 's/\.elc/\.el/g'`; do \
if test -f "$$el" -o \! -f "$${el}c"; then :; else \
echo rm "$${el}c"; \
rm "$${el}c"; \
diff --git a/lisp/array.el b/lisp/array.el
index d68aaa5cf62..d22d58ca059 100644
--- a/lisp/array.el
+++ b/lisp/array.el
@@ -775,32 +775,30 @@ Return COLUMN."
;;; Array mode.
-(defvar array-mode-map nil
+(defvar array-mode-map
+ (let ((map (make-keymap)))
+ (define-key map "\M-ad" 'array-display-local-variables)
+ (define-key map "\M-am" 'array-make-template)
+ (define-key map "\M-ae" 'array-expand-rows)
+ (define-key map "\M-ar" 'array-reconfigure-rows)
+ (define-key map "\M-a=" 'array-what-position)
+ (define-key map "\M-ag" 'array-goto-cell)
+ (define-key map "\M-af" 'array-fill-rectangle)
+ (define-key map "\C-n" 'array-next-row)
+ (define-key map "\C-p" 'array-previous-row)
+ (define-key map "\C-f" 'array-forward-column)
+ (define-key map "\C-b" 'array-backward-column)
+ (define-key map "\M-n" 'array-copy-down)
+ (define-key map "\M-p" 'array-copy-up)
+ (define-key map "\M-f" 'array-copy-forward)
+ (define-key map "\M-b" 'array-copy-backward)
+ (define-key map "\M-\C-n" 'array-copy-row-down)
+ (define-key map "\M-\C-p" 'array-copy-row-up)
+ (define-key map "\M-\C-f" 'array-copy-column-forward)
+ (define-key map "\M-\C-b" 'array-copy-column-backward)
+ map)
"Keymap used in array mode.")
-(if array-mode-map
- ()
- (setq array-mode-map (make-keymap))
- ;; Bind keys.
- (define-key array-mode-map "\M-ad" 'array-display-local-variables)
- (define-key array-mode-map "\M-am" 'array-make-template)
- (define-key array-mode-map "\M-ae" 'array-expand-rows)
- (define-key array-mode-map "\M-ar" 'array-reconfigure-rows)
- (define-key array-mode-map "\M-a=" 'array-what-position)
- (define-key array-mode-map "\M-ag" 'array-goto-cell)
- (define-key array-mode-map "\M-af" 'array-fill-rectangle)
- (define-key array-mode-map "\C-n" 'array-next-row)
- (define-key array-mode-map "\C-p" 'array-previous-row)
- (define-key array-mode-map "\C-f" 'array-forward-column)
- (define-key array-mode-map "\C-b" 'array-backward-column)
- (define-key array-mode-map "\M-n" 'array-copy-down)
- (define-key array-mode-map "\M-p" 'array-copy-up)
- (define-key array-mode-map "\M-f" 'array-copy-forward)
- (define-key array-mode-map "\M-b" 'array-copy-backward)
- (define-key array-mode-map "\M-\C-n" 'array-copy-row-down)
- (define-key array-mode-map "\M-\C-p" 'array-copy-row-up)
- (define-key array-mode-map "\M-\C-f" 'array-copy-column-forward)
- (define-key array-mode-map "\M-\C-b" 'array-copy-column-backward))
(put 'array-mode 'mode-class 'special)
diff --git a/lisp/calc/calc-alg.el b/lisp/calc/calc-alg.el
index 6a85be14aeb..47cdae52a13 100644
--- a/lisp/calc/calc-alg.el
+++ b/lisp/calc/calc-alg.el
@@ -1659,11 +1659,11 @@
;; math-is-poly-rec.
(defvar math-is-poly-degree)
(defvar math-is-poly-loose)
-(defvar var)
+(defvar math-var)
-(defun math-is-polynomial (expr var &optional math-is-poly-degree math-is-poly-loose)
+(defun math-is-polynomial (expr math-var &optional math-is-poly-degree math-is-poly-loose)
(let* ((math-poly-base-variable (if math-is-poly-loose
- (if (eq math-is-poly-loose 'gen) var '(var XXX XXX))
+ (if (eq math-is-poly-loose 'gen) math-var '(var XXX XXX))
math-poly-base-variable))
(poly (math-is-poly-rec expr math-poly-neg-powers)))
(and (or (null math-is-poly-degree)
@@ -1672,11 +1672,11 @@
(defun math-is-poly-rec (expr negpow)
(math-poly-simplify
- (or (cond ((or (equal expr var)
+ (or (cond ((or (equal expr math-var)
(eq (car-safe expr) '^))
(let ((pow 1)
(expr expr))
- (or (equal expr var)
+ (or (equal expr math-var)
(setq pow (nth 2 expr)
expr (nth 1 expr)))
(or (eq math-poly-mult-powers 1)
@@ -1690,7 +1690,7 @@
(equal math-poly-mult-powers
(nth 1 m))
(setq math-poly-mult-powers (nth 1 m)))
- (or (equal expr var)
+ (or (equal expr math-var)
(eq math-poly-mult-powers 1))
(car m)))))
(if (consp pow)
@@ -1698,7 +1698,7 @@
(setq pow (math-to-simple-fraction pow))
(and (eq (car-safe pow) 'frac)
math-poly-frac-powers
- (equal expr var)
+ (equal expr math-var)
(setq math-poly-frac-powers
(calcFunc-lcm math-poly-frac-powers
(nth 2 pow))))))
@@ -1706,10 +1706,10 @@
(setq pow (math-mul pow math-poly-frac-powers)))
(if (integerp pow)
(if (and (= pow 1)
- (equal expr var))
+ (equal expr math-var))
(list 0 1)
(if (natnump pow)
- (let ((p1 (if (equal expr var)
+ (let ((p1 (if (equal expr math-var)
(list 0 1)
(math-is-poly-rec expr nil)))
(n pow)
@@ -1749,7 +1749,7 @@
math-is-poly-degree))
(math-poly-mul p1 p2))))))
((eq (car expr) '/)
- (and (or (not (math-poly-depends (nth 2 expr) var))
+ (and (or (not (math-poly-depends (nth 2 expr) math-var))
(and negpow
(math-is-poly-rec (nth 2 expr) nil)
(setq math-poly-neg-powers
@@ -1759,13 +1759,13 @@
(mapcar (function (lambda (x) (math-div x (nth 2 expr))))
p1))))
((and (eq (car expr) 'calcFunc-exp)
- (equal var '(var e var-e)))
- (math-is-poly-rec (list '^ var (nth 1 expr)) negpow))
+ (equal math-var '(var e var-e)))
+ (math-is-poly-rec (list '^ math-var (nth 1 expr)) negpow))
((and (eq (car expr) 'calcFunc-sqrt)
math-poly-frac-powers)
(math-is-poly-rec (list '^ (nth 1 expr) '(frac 1 2)) negpow))
(t nil))
- (and (or (not (math-poly-depends expr var))
+ (and (or (not (math-poly-depends expr math-var))
math-is-poly-loose)
(not (eq (car expr) 'vec))
(list expr)))))
diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el
index 2b45ce1b2f0..4bee751ad41 100644
--- a/lisp/calc/calcalg2.el
+++ b/lisp/calc/calcalg2.el
@@ -1886,9 +1886,9 @@
;; math-scan-for-limits.
(defvar calc-low)
(defvar calc-high)
-(defvar var)
+(defvar math-var)
-(defun calcFunc-table (expr var &optional calc-low calc-high step)
+(defun calcFunc-table (expr math-var &optional calc-low calc-high step)
(or calc-low
(setq calc-low '(neg (var inf var-inf)) calc-high '(var inf var-inf)))
(or calc-high (setq calc-high calc-low calc-low 1))
@@ -1917,7 +1917,7 @@
(math-working-step-2 (1+ count))
(math-working-step 0))
(setq expr (math-evaluate-expr
- (math-expr-subst expr var '(var DUMMY var-DUMMY))))
+ (math-expr-subst expr math-var '(var DUMMY var-DUMMY))))
(while (>= count 0)
(setq math-working-step (1+ math-working-step)
var-DUMMY calc-low
@@ -1940,7 +1940,7 @@
(calc-record-why 'integerp calc-high))
(calc-record-why 'integerp calc-low)))
(append (list (or math-tabulate-function 'calcFunc-table)
- expr var)
+ expr math-var)
(and (not (and (equal calc-low '(neg (var inf var-inf)))
(equal calc-high '(var inf var-inf))))
(list calc-low calc-high))
@@ -1950,11 +1950,11 @@
(cond ((Math-primp x))
((and (eq (car x) 'calcFunc-subscr)
(Math-vectorp (nth 1 x))
- (math-expr-contains (nth 2 x) var))
+ (math-expr-contains (nth 2 x) math-var))
(let* ((calc-next-why nil)
- (low-val (math-solve-for (nth 2 x) 1 var nil))
+ (low-val (math-solve-for (nth 2 x) 1 math-var nil))
(high-val (math-solve-for (nth 2 x) (1- (length (nth 1 x)))
- var nil))
+ math-var nil))
temp)
(and low-val (math-realp low-val)
high-val (math-realp high-val))
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index cd0f049027b..d6f4f9862d6 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -83,17 +83,6 @@
:prefix "appt-"
:group 'calendar)
-(defcustom appt-issue-message t
- "Non-nil means check for appointments in the diary buffer.
-To be detected, the diary entry must have the format described in the
-documentation of the function `appt-check'."
- :type 'boolean
- :group 'appt)
-
-(make-obsolete-variable 'appt-issue-message
- "use the function `appt-activate', and the \
-variable `appt-display-format' instead." "22.1")
-
(defcustom appt-message-warning-time 12
"Time in minutes before an appointment that the warning begins."
:type 'integer
@@ -104,41 +93,20 @@ variable `appt-display-format' instead." "22.1")
:type 'boolean
:group 'appt)
-(defcustom appt-visible t
- "Non-nil means display appointment message in echo area.
-This variable is only relevant if `appt-msg-window' is nil."
- :type 'boolean
- :group 'appt)
-
-(make-obsolete-variable 'appt-visible 'appt-display-format "22.1")
-
-(defcustom appt-msg-window t
- "Non-nil means display appointment message in another window.
-If non-nil, this variable overrides `appt-visible'."
- :type 'boolean
- :group 'appt)
-
-(make-obsolete-variable 'appt-msg-window 'appt-display-format "22.1")
-
;; TODO - add popup.
-(defcustom appt-display-format 'ignore
+(defcustom appt-display-format 'window
"How appointment reminders should be displayed.
The options are:
window - use a separate window
echo - use the echo area
nil - no visible reminder.
-See also `appt-audible' and `appt-display-mode-line'.
-
-The default value is 'ignore, which means to fall back on the value
-of the (obsolete) variables `appt-msg-window' and `appt-visible'."
+See also `appt-audible' and `appt-display-mode-line'."
:type '(choice
(const :tag "Separate window" window)
(const :tag "Echo-area" echo)
- (const :tag "No visible display" nil)
- (const :tag "Backwards compatibility setting - choose another value"
- ignore))
+ (const :tag "No visible display" nil))
:group 'appt
- :version "22.1")
+ :version "24.1") ; no longer inherit from deleted obsolete variables
(defcustom appt-display-mode-line t
"Non-nil means display minutes to appointment and time on the mode line.
@@ -236,25 +204,18 @@ If this is non-nil, appointment checking is active.")
The string STRING describes the appointment, due in integer MINS minutes.
The format of the visible reminder is controlled by `appt-display-format'.
The variable `appt-audible' controls the audible reminder."
- ;; Let-binding for backwards compatibility. Remove when obsolete
- ;; vars appt-msg-window and appt-visible are dropped.
- (let ((appt-display-format
- (if (eq appt-display-format 'ignore)
- (cond (appt-msg-window 'window)
- (appt-visible 'echo))
- appt-display-format)))
- (if appt-audible (beep 1))
- (cond ((eq appt-display-format 'window)
- (funcall appt-disp-window-function
- (number-to-string mins)
- ;; TODO - use calendar-month-abbrev-array rather than %b?
- (format-time-string "%a %b %e " (current-time))
- string)
- (run-at-time (format "%d sec" appt-display-duration)
- nil
- appt-delete-window-function))
- ((eq appt-display-format 'echo)
- (message "%s" string)))))
+ (if appt-audible (beep 1))
+ (cond ((eq appt-display-format 'window)
+ (funcall appt-disp-window-function
+ (number-to-string mins)
+ ;; TODO - use calendar-month-abbrev-array rather than %b?
+ (format-time-string "%a %b %e " (current-time))
+ string)
+ (run-at-time (format "%d sec" appt-display-duration)
+ nil
+ appt-delete-window-function))
+ ((eq appt-display-format 'echo)
+ (message "%s" string))))
(defun appt-check (&optional force)
@@ -348,7 +309,7 @@ displayed in a window:
;; If there are entries in the list, and the user wants a
;; message issued, get the first time off of the list and
;; calculate the number of minutes until the appointment.
- (when (and appt-issue-message appt-time-msg-list)
+ (when appt-time-msg-list
(setq appt-comp-time (caar (car appt-time-msg-list))
appt-warn-time (or (nth 3 (car appt-time-msg-list))
appt-message-warning-time)
@@ -485,6 +446,7 @@ sMinutes before the appointment to start warning: ")
(and warntime
(not (integerp warntime))
(error "Argument WARNTIME must be an integer, or nil"))
+ (or appt-timer (appt-activate))
(let ((time-msg (list (list (appt-convert-time time))
(concat time " " msg) t)))
;; It is presently non-sensical to have multiple warnings about
@@ -495,7 +457,6 @@ sMinutes before the appointment to start warning: ")
(setq appt-time-msg-list
(appt-sort-list (nconc appt-time-msg-list (list time-msg)))))))
-;;;###autoload
(defun appt-delete ()
"Delete an appointment from the list of appointments."
(interactive)
@@ -515,8 +476,7 @@ sMinutes before the appointment to start warning: ")
(defvar number)
(defvar original-date)
(defvar diary-entries-list)
-;; Autoload for the old way of using this package. Can be removed sometime.
-;;;###autoload
+
(defun appt-make-list ()
"Update the appointments list from today's diary buffer.
The time must be at the beginning of a line for it to be
@@ -525,92 +485,86 @@ the function `appt-check'). We assume that the variables DATE and
NUMBER hold the arguments that `diary-list-entries' received.
They specify the range of dates that the diary is being processed for.
-Any appointments made with `appt-add' are not affected by this function.
-
-For backwards compatibility, this function activates the
-appointment package (if it is not already active)."
- ;; See comments above appt-activate defun.
- (if (not appt-timer)
- (appt-activate 1)
- ;; We have something to do if the range of dates that the diary is
- ;; considering includes the current date.
- (if (and (not (calendar-date-compare
- (list (calendar-current-date))
- (list original-date)))
- (calendar-date-compare
- (list (calendar-current-date))
- (list (calendar-gregorian-from-absolute
- (+ (calendar-absolute-from-gregorian original-date)
- number)))))
- (save-excursion
- ;; Clear the appointments list, then fill it in from the diary.
- (dolist (elt appt-time-msg-list)
- ;; Delete any entries that were not made with appt-add.
- (unless (nth 2 elt)
- (setq appt-time-msg-list
- (delq elt appt-time-msg-list))))
- (if diary-entries-list
- ;; Cycle through the entry-list (diary-entries-list)
- ;; looking for entries beginning with a time. If the
- ;; entry begins with a time, add it to the
- ;; appt-time-msg-list. Then sort the list.
- (let ((entry-list diary-entries-list)
- (new-time-string "")
- time-string)
- ;; Below, we assume diary-entries-list was in date
- ;; order. It is, unless something on
- ;; diary-list-entries-hook has changed it, eg
- ;; diary-include-other-files (bug#7019). It must be
- ;; in date order if number = 1.
- (and diary-list-entries-hook
- appt-display-diary
- (not (eq diary-number-of-entries 1))
- (not (memq (car (last diary-list-entries-hook))
- '(diary-sort-entries sort-diary-entries)))
- (setq entry-list (sort entry-list 'diary-entry-compare)))
- ;; Skip diary entries for dates before today.
- (while (and entry-list
- (calendar-date-compare
- (car entry-list) (list (calendar-current-date))))
- (setq entry-list (cdr entry-list)))
- ;; Parse the entries for today.
- (while (and entry-list
- (calendar-date-equal
- (calendar-current-date) (caar entry-list)))
- (setq time-string (cadr (car entry-list)))
- (while (string-match appt-time-regexp time-string)
- (let* ((beg (match-beginning 0))
- ;; Get just the time for this appointment.
- (only-time (match-string 0 time-string))
- ;; Find the end of this appointment
- ;; (the start of the next).
- (end (string-match
- (concat "\n[ \t]*" appt-time-regexp)
- time-string
- (match-end 0)))
- ;; Get the whole string for this appointment.
- (appt-time-string
- (substring time-string beg end))
- (appt-time (list (appt-convert-time only-time)))
- (time-msg (list appt-time appt-time-string)))
- ;; Add this appointment to appt-time-msg-list.
- (setq appt-time-msg-list
- (nconc appt-time-msg-list (list time-msg))
- ;; Discard this appointment from the string.
- time-string
- (if end (substring time-string end) ""))))
- (setq entry-list (cdr entry-list)))))
- (setq appt-time-msg-list (appt-sort-list appt-time-msg-list))
- ;; Convert current time to minutes after midnight (12:01am = 1),
- ;; so that elements in the list that are earlier than the
- ;; present time can be removed.
- (let* ((now (decode-time))
- (cur-comp-time (+ (* 60 (nth 2 now)) (nth 1 now)))
- (appt-comp-time (caar (car appt-time-msg-list))))
- (while (and appt-time-msg-list (< appt-comp-time cur-comp-time))
- (setq appt-time-msg-list (cdr appt-time-msg-list))
- (if appt-time-msg-list
- (setq appt-comp-time (caar (car appt-time-msg-list))))))))))
+Any appointments made with `appt-add' are not affected by this function."
+ ;; We have something to do if the range of dates that the diary is
+ ;; considering includes the current date.
+ (if (and (not (calendar-date-compare
+ (list (calendar-current-date))
+ (list original-date)))
+ (calendar-date-compare
+ (list (calendar-current-date))
+ (list (calendar-gregorian-from-absolute
+ (+ (calendar-absolute-from-gregorian original-date)
+ number)))))
+ (save-excursion
+ ;; Clear the appointments list, then fill it in from the diary.
+ (dolist (elt appt-time-msg-list)
+ ;; Delete any entries that were not made with appt-add.
+ (unless (nth 2 elt)
+ (setq appt-time-msg-list
+ (delq elt appt-time-msg-list))))
+ (if diary-entries-list
+ ;; Cycle through the entry-list (diary-entries-list)
+ ;; looking for entries beginning with a time. If the
+ ;; entry begins with a time, add it to the
+ ;; appt-time-msg-list. Then sort the list.
+ (let ((entry-list diary-entries-list)
+ (new-time-string "")
+ time-string)
+ ;; Below, we assume diary-entries-list was in date
+ ;; order. It is, unless something on
+ ;; diary-list-entries-hook has changed it, eg
+ ;; diary-include-other-files (bug#7019). It must be
+ ;; in date order if number = 1.
+ (and diary-list-entries-hook
+ appt-display-diary
+ (not (eq diary-number-of-entries 1))
+ (not (memq (car (last diary-list-entries-hook))
+ '(diary-sort-entries sort-diary-entries)))
+ (setq entry-list (sort entry-list 'diary-entry-compare)))
+ ;; Skip diary entries for dates before today.
+ (while (and entry-list
+ (calendar-date-compare
+ (car entry-list) (list (calendar-current-date))))
+ (setq entry-list (cdr entry-list)))
+ ;; Parse the entries for today.
+ (while (and entry-list
+ (calendar-date-equal
+ (calendar-current-date) (caar entry-list)))
+ (setq time-string (cadr (car entry-list)))
+ (while (string-match appt-time-regexp time-string)
+ (let* ((beg (match-beginning 0))
+ ;; Get just the time for this appointment.
+ (only-time (match-string 0 time-string))
+ ;; Find the end of this appointment
+ ;; (the start of the next).
+ (end (string-match
+ (concat "\n[ \t]*" appt-time-regexp)
+ time-string
+ (match-end 0)))
+ ;; Get the whole string for this appointment.
+ (appt-time-string
+ (substring time-string beg end))
+ (appt-time (list (appt-convert-time only-time)))
+ (time-msg (list appt-time appt-time-string)))
+ ;; Add this appointment to appt-time-msg-list.
+ (setq appt-time-msg-list
+ (nconc appt-time-msg-list (list time-msg))
+ ;; Discard this appointment from the string.
+ time-string
+ (if end (substring time-string end) ""))))
+ (setq entry-list (cdr entry-list)))))
+ (setq appt-time-msg-list (appt-sort-list appt-time-msg-list))
+ ;; Convert current time to minutes after midnight (12:01am = 1),
+ ;; so that elements in the list that are earlier than the
+ ;; present time can be removed.
+ (let* ((now (decode-time))
+ (cur-comp-time (+ (* 60 (nth 2 now)) (nth 1 now)))
+ (appt-comp-time (caar (car appt-time-msg-list))))
+ (while (and appt-time-msg-list (< appt-comp-time cur-comp-time))
+ (setq appt-time-msg-list (cdr appt-time-msg-list))
+ (if appt-time-msg-list
+ (setq appt-comp-time (caar (car appt-time-msg-list)))))))))
(defun appt-sort-list (appt-list)
@@ -650,30 +604,6 @@ It is intended for use with `write-file-functions'."
(appt-check t)))
nil)
-;; In Emacs-21.3, the manual documented the following procedure to
-;; activate this package:
-;; (display-time)
-;; (add-hook 'diary-hook 'appt-make-list)
-;; (diary 0)
-;; The display-time call was not necessary, AFAICS.
-;; What was really needed was to add the hook and load this file.
-;; Calling (diary 0) once the hook had been added was in some sense a
-;; roundabout way of loading this file. This file used to have code at
-;; the top-level that set up the appt-timer and global-mode-string.
-;; One way to maintain backwards compatibility would be to call
-;; (appt-activate 1) at top-level. However, this goes against the
-;; convention that just loading an Emacs package should not activate
-;; it. Instead, we make appt-make-list activate the package (after a
-;; suggestion from rms). This means that one has to call diary in
-;; order to get it to work, but that is in line with the old (weird,
-;; IMO) documented behavior for activating the package.
-;; Actually, since (diary 0) does not run diary-hook, I don't think
-;; the documented behavior in Emacs-21.3 would ever have worked.
-;; Oh well, at least with the changes to appt-make-list it will now
-;; work as well as it ever did.
-;; The new method is just to use (appt-activate 1).
-;; -- gmorris
-
;;;###autoload
(defun appt-activate (&optional arg)
"Toggle checking of appointments.
@@ -689,16 +619,21 @@ ARG is positive, otherwise off."
(when appt-timer
(cancel-timer appt-timer)
(setq appt-timer nil))
- (when appt-active
- (diary-check-diary-file)
- (add-hook 'write-file-functions 'appt-update-list)
- (setq appt-timer (run-at-time t 60 'appt-check)
- global-mode-string
- (append global-mode-string '(appt-mode-string)))
- (appt-check t))))
+ (if appt-active
+ (progn
+ (add-hook 'write-file-functions 'appt-update-list)
+ (setq appt-timer (run-at-time t 60 'appt-check)
+ global-mode-string
+ (append global-mode-string '(appt-mode-string)))
+ (appt-check t)
+ (message "Appointment reminders enabled%s"
+ ;; Someone might want to use appt-add without a diary.
+ (if (ignore-errors (diary-check-diary-file))
+ ""
+ " (no diary file found)")))
+ (message "Appointment reminders disabled"))))
(provide 'appt)
-;; arch-tag: bf5791c4-8921-499e-a26f-772b1788d347
;;; appt.el ends here
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index 98c1a29df7c..366fb2396fc 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -376,7 +376,7 @@ or ALL is non-nil."
(list (calendar-gregorian-from-absolute (1+ abs-r-h))
"Rosh HaShanah (second day)")
(list (calendar-gregorian-from-absolute
- (if (= (% abs-r-h 7) 4) (+ abs-r-h 3) (+ abs-r-h 2)))
+ (+ abs-r-h (if (= (% abs-r-h 7) 4) 3 2)))
"Tzom Gedaliah")
(list (calendar-gregorian-from-absolute
(calendar-dayname-on-or-before 6 (+ 7 abs-r-h)))
@@ -454,70 +454,71 @@ or ALL is non-nil."
(list (calendar-gregorian-from-absolute (+ abs-p 50))
"Shavuot"))
(when (or all calendar-hebrew-all-holidays-flag)
- (list
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (- abs-p 43)))
- "Shabbat Shekalim")
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (- abs-p 30)))
- "Shabbat Zachor")
- (list (calendar-gregorian-from-absolute
- (if (= (% abs-p 7) 2) (- abs-p 33) (- abs-p 31)))
- "Fast of Esther")
- (list (calendar-gregorian-from-absolute (- abs-p 31))
- "Erev Purim")
- (list (calendar-gregorian-from-absolute (- abs-p 30))
- "Purim")
- (list (calendar-gregorian-from-absolute
- (if (zerop (% abs-p 7)) (- abs-p 28) (- abs-p 29)))
- "Shushan Purim")
- (list (calendar-gregorian-from-absolute
- (- (calendar-dayname-on-or-before 6 (- abs-p 14)) 7))
- "Shabbat Parah")
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (- abs-p 14)))
- "Shabbat HaHodesh")
- (list (calendar-gregorian-from-absolute
- (calendar-dayname-on-or-before 6 (1- abs-p)))
- "Shabbat HaGadol")
- (list (calendar-gregorian-from-absolute (1- abs-p))
- "Erev Passover")
- (list (calendar-gregorian-from-absolute (1+ abs-p))
- "Passover (second day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 2))
- "Hol Hamoed Passover (first day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 3))
- "Hol Hamoed Passover (second day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 4))
- "Hol Hamoed Passover (third day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 5))
- "Hol Hamoed Passover (fourth day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 6))
- "Passover (seventh day)")
- (list (calendar-gregorian-from-absolute (+ abs-p 7))
- "Passover (eighth day)")
- (list (calendar-gregorian-from-absolute
- (if (zerop (% (+ abs-p 12) 7))
- (+ abs-p 13)
- (+ abs-p 12)))
- "Yom HaShoah")
- (list (calendar-gregorian-from-absolute
- (if (zerop (% abs-p 7))
- (+ abs-p 18)
- (if (= (% abs-p 7) 6)
- (+ abs-p 19)
- (if (= (% abs-p 7) 2)
- (+ abs-p 21)
- (+ abs-p 20)))))
- "Yom HaAtzma'ut")
- (list (calendar-gregorian-from-absolute (+ abs-p 33))
- "Lag BaOmer")
- (list (calendar-gregorian-from-absolute (+ abs-p 43))
- "Yom Yerushalaim")
- (list (calendar-gregorian-from-absolute (+ abs-p 49))
- "Erev Shavuot")
- (list (calendar-gregorian-from-absolute (+ abs-p 51))
- "Shavuot (second day)"))))))))
+ (let ((wday (% abs-p 7)))
+ (list
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (- abs-p 43)))
+ "Shabbat Shekalim")
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (- abs-p 30)))
+ "Shabbat Zachor")
+ (list (calendar-gregorian-from-absolute
+ (- abs-p (if (= wday 2) 33 31)))
+ "Fast of Esther")
+ (list (calendar-gregorian-from-absolute (- abs-p 31))
+ "Erev Purim")
+ (list (calendar-gregorian-from-absolute (- abs-p 30))
+ "Purim")
+ (list (calendar-gregorian-from-absolute
+ (- abs-p (if (zerop wday) 28 29)))
+ "Shushan Purim")
+ (list (calendar-gregorian-from-absolute
+ (- (calendar-dayname-on-or-before 6 (- abs-p 14)) 7))
+ "Shabbat Parah")
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (- abs-p 14)))
+ "Shabbat HaHodesh")
+ (list (calendar-gregorian-from-absolute
+ (calendar-dayname-on-or-before 6 (1- abs-p)))
+ "Shabbat HaGadol")
+ (list (calendar-gregorian-from-absolute (1- abs-p))
+ "Erev Passover")
+ (list (calendar-gregorian-from-absolute (1+ abs-p))
+ "Passover (second day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 2))
+ "Hol Hamoed Passover (first day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 3))
+ "Hol Hamoed Passover (second day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 4))
+ "Hol Hamoed Passover (third day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 5))
+ "Hol Hamoed Passover (fourth day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 6))
+ "Passover (seventh day)")
+ (list (calendar-gregorian-from-absolute (+ abs-p 7))
+ "Passover (eighth day)")
+ (list (calendar-gregorian-from-absolute
+ (+ abs-p (if (zerop (% (+ abs-p 12) 7))
+ 13
+ 12)))
+ "Yom HaShoah")
+ (list (calendar-gregorian-from-absolute
+ (+ abs-p
+ ;; If falls on Sat or Fri, moves to preceding Thurs.
+ ;; If falls on Mon, moves to Tues (since 2004).
+ (cond ((zerop wday) 18) ; Sat
+ ((= wday 6) 19) ; Fri
+ ((= wday 2) 21) ; Mon
+ (t 20))))
+ "Yom HaAtzma'ut")
+ (list (calendar-gregorian-from-absolute (+ abs-p 33))
+ "Lag BaOmer")
+ (list (calendar-gregorian-from-absolute (+ abs-p 43))
+ "Yom Yerushalaim")
+ (list (calendar-gregorian-from-absolute (+ abs-p 49))
+ "Erev Shavuot")
+ (list (calendar-gregorian-from-absolute (+ abs-p 51))
+ "Shavuot (second day)")))))))))
;;;###holiday-autoload
(define-obsolete-function-alias 'holiday-passover-etc
@@ -527,18 +528,19 @@ or ALL is non-nil."
(defun holiday-hebrew-tisha-b-av ()
"List of dates around Tisha B'Av, as visible in calendar window."
(when (memq displayed-month '(5 6 7 8 9))
- (let ((abs-t-a (calendar-hebrew-to-absolute
- (list 5 9 (+ displayed-year 3760)))))
+ (let* ((abs-t-a (calendar-hebrew-to-absolute
+ (list 5 9 (+ displayed-year 3760))))
+ (wday (% abs-t-a 7)))
(holiday-filter-visible-calendar
(list
(list (calendar-gregorian-from-absolute
- (if (= (% abs-t-a 7) 6) (- abs-t-a 20) (- abs-t-a 21)))
+ (- abs-t-a (if (= wday 6) 20 21)))
"Tzom Tammuz")
(list (calendar-gregorian-from-absolute
(calendar-dayname-on-or-before 6 abs-t-a))
"Shabbat Hazon")
(list (calendar-gregorian-from-absolute
- (if (= (% abs-t-a 7) 6) (1+ abs-t-a) abs-t-a))
+ (if (= wday 6) (1+ abs-t-a) abs-t-a))
"Tisha B'Av")
(list (calendar-gregorian-from-absolute
(calendar-dayname-on-or-before 6 (+ abs-t-a 7)))
@@ -557,7 +559,7 @@ Includes: Tal Umatar, Tzom Teveth, Tu B'Shevat, Shabbat Shirah, and
Kiddush HaHamah."
(let ((m displayed-month)
(y displayed-year)
- year h-year s-s)
+ year h-year)
(append
(holiday-julian
11
@@ -591,20 +593,17 @@ Kiddush HaHamah."
(calendar-extract-year
(calendar-hebrew-from-absolute
(calendar-absolute-from-gregorian
- (list m (calendar-last-day-of-month m y) y)))))
- s-s
- (calendar-hebrew-from-absolute
- (if (= 6
- (% (calendar-hebrew-to-absolute
- (list 7 1 h-year))
- 7))
- (calendar-dayname-on-or-before
- 6 (calendar-hebrew-to-absolute
- (list 11 17 h-year)))
- (calendar-dayname-on-or-before
- 6 (calendar-hebrew-to-absolute
- (list 11 16 h-year))))))
- (calendar-extract-day s-s))
+ (list m (calendar-last-day-of-month m y) y))))))
+ (calendar-extract-day
+ (calendar-hebrew-from-absolute
+ (calendar-dayname-on-or-before
+ 6 (calendar-hebrew-to-absolute
+ (list 11
+ (if (= 6
+ (% (calendar-hebrew-to-absolute
+ (list 7 1 h-year))
+ 7))
+ 17 16) h-year))))))
"Shabbat Shirah")
(and (progn
(setq m displayed-month
@@ -1162,5 +1161,4 @@ use when highlighting the day in the calendar."
(provide 'cal-hebrew)
-;; arch-tag: aaab6718-7712-42ac-a32d-28fe1f944f3c
;;; cal-hebrew.el ends here
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index ddabeb7dbad..4c485a7c47b 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -487,8 +487,6 @@ in the displayed three-month calendar."
(diary-check-diary-file)
(diary-list-entries (calendar-cursor-to-date t) arg))
-(define-obsolete-function-alias 'view-diary-entries 'diary-view-entries "22.1")
-
;;;###cal-autoload
(defun diary-view-other-diary-entries (arg dfile)
@@ -828,8 +826,6 @@ LIST-ONLY is non-nil, in which case it just returns the list."
(or d-incp (message "Preparing diary...done"))
diary-entries-list)))
-(define-obsolete-function-alias 'list-diary-entries 'diary-list-entries "22.1")
-
(defun diary-unhide-everything ()
"Show all invisible text in the diary."
(kill-local-variable 'diary-selective-display)
@@ -1132,9 +1128,6 @@ is created."
(derived-mode-p 'calendar-mode)))
(fit-window-to-buffer win)))))
-(define-obsolete-function-alias 'show-all-diary-entries
- 'diary-show-all-entries "22.1")
-
;;;###autoload
(defun diary-mail-entries (&optional ndays)
"Send a mail message showing diary entries for next NDAYS days.
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 85f0410541a..bc024355b96 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,32 @@
+2010-09-30 Chong Yidong <cyd@stupidchicken.com>
+
+ * semantic/bovine/el.el:
+ * semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode):
+ Fix require statements.
+
+2010-09-29 Chong Yidong <cyd@stupidchicken.com>
+
+ * semantic/tag.el (semantic-tag-version): Bump to 2.0.
+
+ * semantic/db-typecache.el (semanticdb-typecache-find-default):
+ * semantic/imenu.el (semantic-create-imenu-index):
+ * semantic/grammar.el (semantic--grammar-macro-function-tag):
+ * semantic/fw.el (semanticdb-without-unloaded-file-searches): Fix
+ require. Suggested by David Engster.
+
+ * semantic/bovine/c-by.el: Regenerate.
+
+2010-09-29 Eric Ludlam <zappo@gnu.org>
+
+ * semantic/lex-spp.el (semantic-lex-spp-debug-symbol): New var.
+ (semantic-lex-spp-enable-debug-symbol): New command
+ (semantic-lex-spp-value-valid-p)
+ (semantic-lex-spp-validate-value): New functions
+ (semantic-lex-spp-symbol-set)
+ (semantic-lex-spp-symbol-push): Add call to validate value.
+ (semantic-lex-spp-table-write-slot-value): Instead of erroring on
+ invalid values during save, just save a nil.
+
2010-09-25 Chong Yidong <cyd@stupidchicken.com>
* ede/linux.el (ede-project-class-files):
@@ -465,11 +494,6 @@
(ede-dired-minor-mode): Use define-minor-mode and derived-mode-p.
(ede-dired-add-to-target): Use dolist.
-2010-04-18 Chong Yidong <cyd@stupidchicken.com>
-
- * ede/pmake.el (ede-proj-makefile-insert-variables):
- Don't destroy list before using it.
-
2010-04-29 Chong Yidong <cyd@stupidchicken.com>
* semantic.el (semantic-completion-at-point-function):
@@ -1058,10 +1082,6 @@
* semantic/idle.el (semantic-idle-tag-highlight):
Use semantic-idle-summary-highlight-face as the highlighting.
- * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
- contains multibyte characters, choose first applicable coding
- system automatically.
-
* ede/project-am.el (project-run-target): New method.
(project-run-target): New method.
@@ -1389,10 +1409,6 @@
* srecode/expandproto.el: Fix provide statement.
-2009-09-30 Eric Ludlam <zappo@gnu.org>
-
- * emacs-lisp/eieio.el (boolean-p): Delete.
-
2009-09-30 Sascha Wilde <wilde@sha-bang.de>
* ede/srecode.el: Fix provide statement.
@@ -1438,15 +1454,6 @@
2009-09-28 Eric Ludlam <zappo@gnu.org>
- * emacs-lisp/chart.el:
- * emacs-lisp/eieio-base.el:
- * emacs-lisp/eieio-comp.el:
- * emacs-lisp/eieio-custom.el:
- * emacs-lisp/eieio-datadebug.el:
- * emacs-lisp/eieio-opt.el:
- * emacs-lisp/eieio-speedbar.el:
- * emacs-lisp/eieio.el: New files.
-
* cedet-cscope.el:
* cedet-files.el:
* cedet-global.el:
diff --git a/lisp/cedet/ede/base.el b/lisp/cedet/ede/base.el
index c2bfe1872a2..4da210682f8 100644
--- a/lisp/cedet/ede/base.el
+++ b/lisp/cedet/ede/base.el
@@ -452,7 +452,7 @@ Do this by extracting the lowest directory name."
;; Targets and projects are often associated with other files, such as
;; header files, documentation files and the like. Have strong
;; associations can make useful user commands to quickly navigate
-;; between the files base on their associations.
+;; between the files based on their associations.
;;
(defun ede-header-file ()
"Return the header file for the current buffer.
diff --git a/lisp/cedet/semantic/bovine/c-by.el b/lisp/cedet/semantic/bovine/c-by.el
index 09fb42261a4..c33f3fb67f5 100644
--- a/lisp/cedet/semantic/bovine/c-by.el
+++ b/lisp/cedet/semantic/bovine/c-by.el
@@ -1240,7 +1240,9 @@
(nth 7 vals))
(nth 0 vals)
(nth 10 vals)
- (nth 4 vals))
+ (list
+ (nth 4 vals))
+ (nth 9 vals))
)
(opt-stars
opt-class
@@ -1262,7 +1264,9 @@
(nth 6 vals))
(nth 0 vals)
(nth 9 vals)
- (nth 4 vals))
+ (list
+ (nth 4 vals))
+ (nth 8 vals))
)
) ;; end func-decl
@@ -1433,13 +1437,11 @@
namespace-symbol
opt-bits
opt-array
- opt-assign
,(semantic-lambda
(nth 2 vals)
(nth 0 vals)
(nth 3 vals)
- (nth 4 vals)
- (nth 5 vals))
+ (nth 4 vals))
)
) ;; end varname
@@ -1484,19 +1486,28 @@
)
) ;; end variablearg-opt-name
+ (varname-opt-initializer
+ (semantic-list)
+ (opt-assign)
+ ( ;;EMPTY
+ )
+ ) ;; end varname-opt-initializer
+
(varnamelist
(opt-ref
varname
+ varname-opt-initializer
punctuation
"\\`[,]\\'"
varnamelist
,(semantic-lambda
(cons
(nth 1 vals)
- (nth 3 vals)))
+ (nth 4 vals)))
)
(opt-ref
varname
+ varname-opt-initializer
,(semantic-lambda
(list
(nth 1 vals)))
@@ -2108,74 +2119,64 @@
"\\`[&]\\'")
) ;; end expr-start
+ (expr-binop
+ (punctuation
+ "\\`[-]\\'")
+ (punctuation
+ "\\`[+]\\'")
+ (punctuation
+ "\\`[*]\\'")
+ (punctuation
+ "\\`[/]\\'")
+ (punctuation
+ "\\`[&]\\'"
+ punctuation
+ "\\`[&]\\'")
+ (punctuation
+ "\\`[&]\\'")
+ (punctuation
+ "\\`[|]\\'"
+ punctuation
+ "\\`[|]\\'")
+ (punctuation
+ "\\`[|]\\'")
+ ) ;; end expr-binop
+
(expression
- (number
+ (unaryexpression
+ expr-binop
+ unaryexpression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
- (multi-stage-dereference
+ (unaryexpression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
+ ) ;; end expression
+
+ (unaryexpression
+ (number)
+ (multi-stage-dereference)
(NEW
- multi-stage-dereference
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ multi-stage-dereference)
(NEW
builtintype-types
- semantic-list
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- (namespace-symbol
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- (string-seq
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ semantic-list)
+ (namespace-symbol)
+ (string-seq)
(type-cast
- expression
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- (semantic-list
- expression
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ expression)
(semantic-list
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ expression)
+ (semantic-list)
(expr-start
- expression
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- ) ;; end expression
+ expression)
+ ) ;; end unaryexpression
)
"Parser table.")
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el
index 5b5a5660b7d..ed1f74c590f 100644
--- a/lisp/cedet/semantic/bovine/el.el
+++ b/lisp/cedet/semantic/bovine/el.el
@@ -958,7 +958,7 @@ ELisp variables can be pretty long, so track this one too.")
(add-hook 'lisp-mode-hook 'semantic-default-elisp-setup)
(eval-after-load "semanticdb"
- '(require 'semanticdb-el)
+ '(require 'semantic/db-el)
)
(provide 'semantic/bovine/el)
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index 71b15fdf82a..59ba83fe9d0 100644
--- a/lisp/cedet/semantic/db-typecache.el
+++ b/lisp/cedet/semantic/db-typecache.el
@@ -403,7 +403,7 @@ TYPE is the datatype to find.
PATH is the search path, which should be one table object.
If FIND-FILE-MATCH is non-nil, then force the file belonging to the
found tag to be loaded."
- (if (not (and (featurep 'semanticdb) semanticdb-current-database))
+ (if (not (and (featurep 'semantic/db) semanticdb-current-database))
nil ;; No DB, no search
(save-excursion
(semanticdb-typecache-find-method (or path semanticdb-current-table)
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index 49790861632..811508377b8 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -315,7 +315,7 @@ FILE, NOWARN, RAWFILE, and WILDCARDS are passed into `find-file-noselect'"
(defmacro semanticdb-without-unloaded-file-searches (forms)
"Execute FORMS with `unloaded' removed from the current throttle."
`(let ((semanticdb-find-default-throttle
- (if (featurep 'semanticdb-find)
+ (if (featurep 'semantic/db-find)
(remq 'unloaded semanticdb-find-default-throttle)
nil)))
,forms))
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index 65365768f98..d99ae0cb0ac 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -1519,7 +1519,7 @@ Return the tag found or nil if not found."
(car (semantic-find-tags-by-class
'function
(or (semantic-find-tags-by-name name (current-buffer))
- (and (featurep 'semanticdb)
+ (and (featurep 'semantic/db)
semanticdb-current-database
(cdar (semanticdb-find-tags-by-name name nil t)))))))
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
index e38b50bcd57..465a93a16dd 100644
--- a/lisp/cedet/semantic/imenu.el
+++ b/lisp/cedet/semantic/imenu.el
@@ -235,7 +235,7 @@ Optional argument STREAM is an optional stream of tags used to create menus."
(setq imenu-default-goto-function 'semantic-imenu-goto-function)
(prog1
(if (and semantic-imenu-index-directory
- (featurep 'semanticdb)
+ (featurep 'semantic/db)
(semanticdb-minor-mode-p))
(semantic-create-imenu-directory-index
(or stream (semantic-fetch-tags-fast)))
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index 88b77e50e1d..0b4fa930b1b 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -173,10 +173,42 @@ The search priority is:
(setq semantic-lex-spp-dynamic-macro-symbol-obarray-stack
(make-vector 13 0))))
+(defun semantic-lex-spp-value-valid-p (value)
+ "Return non-nil if VALUE is valid."
+ (or (null value)
+ (stringp value)
+ (and (consp value)
+ (or (semantic-lex-token-p (car value))
+ (eq (car (car value)) 'spp-arg-list)))))
+
+(defvar semantic-lex-spp-debug-symbol nil
+ "A symbol to break on if it is being set somewhere.")
+
+(defun semantic-lex-spp-enable-debug-symbol (sym)
+ "Enable debugging for symbol SYM.
+Disable debugging by entering nothing."
+ (interactive "sSymbol: ")
+ (if (string= sym "")
+ (setq semantic-lex-spp-debug-symbol nil)
+ (setq semantic-lex-spp-debug-symbol sym)))
+
+(defmacro semantic-lex-spp-validate-value (name value)
+ "Validate the NAME and VALUE of a macro before it is set."
+; `(progn
+; (when (not (semantic-lex-spp-value-valid-p ,value))
+; (error "Symbol \"%s\" with bogus value %S" ,name ,value))
+; (when (and semantic-lex-spp-debug-symbol
+; (string= semantic-lex-spp-debug-symbol name))
+; (debug))
+; )
+ nil
+ )
+
(defun semantic-lex-spp-symbol-set (name value &optional obarray-in)
"Set value of spp symbol with NAME to VALUE and return VALUE.
If optional OBARRAY-IN is non-nil, then use that obarray instead of
the dynamic map."
+ (semantic-lex-spp-validate-value name value)
(if (and (stringp value) (string= value "")) (setq value nil))
(set (intern name (or obarray-in
(semantic-lex-spp-dynamic-map)))
@@ -192,6 +224,7 @@ the dynamic map."
(defun semantic-lex-spp-symbol-push (name value)
"Push macro NAME with VALUE into the map.
Reverse with `semantic-lex-spp-symbol-pop'."
+ (semantic-lex-spp-validate-value name value)
(let* ((map (semantic-lex-spp-dynamic-map))
(stack (semantic-lex-spp-dynamic-map-stack))
(mapsym (intern name map))
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el
index 12e0cb9f834..b723a848c10 100644
--- a/lisp/cedet/semantic/mru-bookmark.el
+++ b/lisp/cedet/semantic/mru-bookmark.el
@@ -239,6 +239,18 @@ This function pushes tags onto the tag ring."
;;
;; Tracking minor mode.
+(defcustom global-semantic-mru-bookmark-mode nil
+ "If non-nil, enable `semantic-mru-bookmark-mode' globally.
+When this mode is enabled, Emacs keeps track of which tags have
+been edited, and you can re-visit them with \\[semantic-mrub-switch-tags]."
+ :group 'semantic
+ :group 'semantic-modes
+ :type 'boolean
+ :require 'semantic/util-modes
+ :initialize 'custom-initialize-default
+ :set (lambda (sym val)
+ (global-semantic-mru-bookmark-mode (if val 1 -1))))
+
;;;###autoload
(define-minor-mode global-semantic-mru-bookmark-mode
"Toggle global use of option `semantic-mru-bookmark-mode'.
diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el
index e9094fcb051..0195a29b66e 100644
--- a/lisp/cedet/semantic/tag.el
+++ b/lisp/cedet/semantic/tag.el
@@ -53,7 +53,7 @@
(declare-function semantic-fetch-tags "semantic")
(declare-function semantic-clear-toplevel-cache "semantic")
-(defconst semantic-tag-version "2.0pre7"
+(defconst semantic-tag-version "2.0"
"Version string of semantic tags made with this code.")
(defconst semantic-tag-incompatible-version "1.0"
@@ -221,6 +221,7 @@ See also the function `semantic-ctxt-current-mode'."
;; beginning of TAG.
(or (and (>= (point) start) (< (point) end))
(goto-char start))
+ (require 'semantic/ctxt)
(semantic-ctxt-current-mode)))))
(defsubst semantic--tag-attributes-cdr (tag)
diff --git a/lisp/comint.el b/lisp/comint.el
index 282e9eef49c..f9346f64c1f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2296,8 +2296,6 @@ Does not delete the prompt."
(delete-region pmark (point))))
;; Output message and put back prompt
(comint-output-filter proc replacement)))
-(define-obsolete-function-alias 'comint-kill-output
- 'comint-delete-output "21.1")
(defun comint-write-output (filename &optional append mustbenew)
"Write output from interpreter since last input to FILENAME.
diff --git a/lisp/composite.el b/lisp/composite.el
index 1ecfec86b5d..02c78580fff 100644
--- a/lisp/composite.el
+++ b/lisp/composite.el
@@ -213,7 +213,7 @@ of the text in the region.
If it is a string, the elements are alternate characters. In
this case, TAB element has a special meaning. If the first
-characer is TAB, the glyphs are displayed with left padding space
+character is TAB, the glyphs are displayed with left padding space
so that no pixel overlaps with the previous column. If the last
character is TAB, the glyphs are displayed with right padding
space so that no pixel overlaps with the following column.
@@ -756,23 +756,6 @@ See `auto-composition-mode' for more information on Auto-Composition mode."
(defalias 'toggle-auto-composition 'auto-composition-mode)
-;; The following codes are only for backward compatibility with Emacs
-;; 20.4 and earlier.
-
-(defun decompose-composite-char (char &optional type with-composition-rule)
- "Convert CHAR to string.
-
-If optional 2nd arg TYPE is non-nil, it is `string', `list', or
-`vector'. In this case, CHAR is converted to string, list of CHAR, or
-vector of CHAR respectively.
-Optional 3rd arg WITH-COMPOSITION-RULE is ignored."
- (cond ((or (null type) (eq type 'string)) (char-to-string char))
- ((eq type 'list) (list char))
- (t (vector char))))
-
-(make-obsolete 'decompose-composite-char 'char-to-string "21.1")
-
-
;; arch-tag: ee703d77-1723-45d4-a31f-e9f0f867aa33
;;; composite.el ends here
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index a333be289ed..f7090bc322f 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -439,9 +439,6 @@
;;; Custom mode keymaps
(defvar custom-mode-map
- ;; This keymap should be dense, but a dense keymap would prevent inheriting
- ;; "\r" bindings from the parent map.
- ;; Actually, this misfeature of dense keymaps was fixed on 2001-11-26.
(let ((map (make-keymap)))
(set-keymap-parent map widget-keymap)
(define-key map [remap self-insert-command] 'Custom-no-edit)
@@ -738,33 +735,33 @@ groups after non-groups, if nil do not order groups at all."
;; `custom-buffer-create-internal' if `custom-buffer-verbose-help' is non-nil.
(defvar custom-commands
- '(("Set for current session" Custom-set t
+ '((" Set for current session " Custom-set t
"Apply all settings in this buffer to the current session"
"index"
"Apply")
- ("Save for future sessions" Custom-save
+ (" Save for future sessions " Custom-save
(or custom-file user-init-file)
"Apply all settings in this buffer and save them for future Emacs sessions."
"save"
"Save")
- ("Undo edits" Custom-reset-current t
+ (" Undo edits " Custom-reset-current t
"Restore all settings in this buffer to reflect their current values."
"refresh"
"Undo")
- ("Reset to saved" Custom-reset-saved t
+ (" Reset to saved " Custom-reset-saved t
"Restore all settings in this buffer to their saved values (if any)."
"undo"
"Reset")
- ("Erase customizations" Custom-reset-standard
+ (" Erase customizations " Custom-reset-standard
(or custom-file user-init-file)
"Un-customize all settings in this buffer and save them with standard values."
"delete"
"Uncustomize")
- ("Help for Customize" Custom-help t
+ (" Help for Customize " Custom-help t
"Get help for using Customize."
"help"
"Help")
- ("Exit" Custom-buffer-done t "Exit Customize." "exit" "Exit")))
+ (" Exit " Custom-buffer-done t "Exit Customize." "exit" "Exit")))
(defun Custom-help ()
"Read the node on Easy Customization in the Emacs manual."
@@ -1607,7 +1604,7 @@ Otherwise use brackets."
(widget-insert " ")
(widget-create-child-and-convert
search-widget 'push-button
- :tag "Search"
+ :tag " Search "
:help-echo echo :action
(lambda (widget &optional event)
(customize-apropos (widget-value (widget-get widget :parent)))))
@@ -1914,7 +1911,7 @@ something in this group has been edited but not set.")
SET for current session only." "\
something in this group has been set but not saved.")
(changed ":" custom-changed "\
-CHANGED outside Customize; operating on it here may be unreliable." "\
+CHANGED outside Customize." "\
something in this group has been changed outside customize.")
(saved "!" custom-saved "\
SAVED and set." "\
@@ -2039,7 +2036,7 @@ and `face'."
:button-prefix 'widget-push-button-prefix
:button-suffix 'widget-push-button-suffix
:mouse-down-action 'widget-magic-mouse-down-action
- :tag "State")
+ :tag " State ")
children)
(insert ": ")
(let ((start (point)))
@@ -2455,17 +2452,22 @@ However, setting it through Custom sets the default value.")
(define-widget 'custom-variable 'custom
"A widget for displaying a Custom variable.
+The following properties have special meanings for this widget:
-The following property has a special meaning for this widget:
-:hidden-states - A list of widget states for which the widget's initial
- contents should be hidden."
+:hidden-states should be a list of widget states for which the
+ widget's initial contents are to be hidden.
+
+:custom-form should be a symbol describing how to display and
+ edit the variable---either `edit' (using edit widgets),
+ `lisp' (as a Lisp sexp), or `mismatch' (should not happen);
+ if nil, use the return value of `custom-variable-default-form'."
:format "%v"
:help-echo "Set or reset this variable."
:documentation-property #'custom-variable-documentation
:custom-category 'option
:custom-state nil
:custom-menu 'custom-variable-menu-create
- :custom-form nil ; defaults to value of `custom-variable-default-form'
+ :custom-form nil
:value-create 'custom-variable-value-create
:action 'custom-variable-action
:hidden-states '(standard)
@@ -3026,48 +3028,78 @@ to switch between two values."
;;; The `custom-face-edit' Widget.
(define-widget 'custom-face-edit 'checklist
- "Edit face attributes."
- :format "%t: %v"
- :tag "Attributes"
- :extra-offset 13
+ "Widget for editing face attributes.
+The following properties have special meanings for this widget:
+
+:value is a plist of face attributes.
+
+:default-face-attributes, if non-nil, is a plist of defaults for
+face attributes (as specified by a `default' defface entry)."
+ :format "%v"
+ :extra-offset 3
:button-args '(:help-echo "Control whether this attribute has any effect.")
:value-to-internal 'custom-face-edit-fix-value
:match (lambda (widget value)
(widget-checklist-match widget
(custom-face-edit-fix-value widget value)))
+ :value-create 'custom-face-edit-value-create
:convert-widget 'custom-face-edit-convert-widget
:args (mapcar (lambda (att)
- (list 'group
- :inline t
+ (list 'group :inline t
:sibling-args (widget-get (nth 1 att) :sibling-args)
(list 'const :format "" :value (nth 0 att))
(nth 1 att)))
custom-face-attributes))
+(defun custom-face-edit-value-create (widget)
+ (let* ((alist (widget-checklist-match-find
+ widget (widget-get widget :value)))
+ (args (widget-get widget :args))
+ (show-all (widget-get widget :show-all-attributes))
+ (buttons (widget-get widget :buttons))
+ (defaults (widget-checklist-match-find
+ widget
+ (widget-get widget :default-face-attributes)))
+ entry)
+ (unless (looking-back "^ *")
+ (insert ?\n))
+ (insert-char ?\s (widget-get widget :extra-offset))
+ (if (or alist defaults show-all)
+ (dolist (prop args)
+ (setq entry (or (assq prop alist)
+ (assq prop defaults)))
+ (if (or entry show-all)
+ (widget-checklist-add-item widget prop entry)))
+ (insert (propertize "-- Empty face --" 'face 'shadow) ?\n))
+ (let ((indent (widget-get widget :indent)))
+ (if indent (insert-char ?\s (widget-get widget :indent))))
+ (push (widget-create-child-and-convert
+ widget 'visibility
+ :help-echo "Show or hide all face attributes."
+ :button-face 'custom-visibility
+ :pressed-face 'custom-visibility
+ :mouse-face 'highlight
+ :on "Hide Unused Attributes" :off "Show All Attributes"
+ :on-image nil :off-image nil
+ :always-active t
+ :action 'custom-face-edit-value-visibility-action
+ show-all)
+ buttons)
+ (insert ?\n)
+ (widget-put widget :buttons buttons)
+ (widget-put widget :children (nreverse (widget-get widget :children)))))
+
+(defun custom-face-edit-value-visibility-action (widget &rest ignore)
+ ;; Toggle hiding of face attributes.
+ (let ((parent (widget-get widget :parent)))
+ (widget-put parent :show-all-attributes
+ (not (widget-get parent :show-all-attributes)))
+ (custom-redraw parent)))
+
(defun custom-face-edit-fix-value (widget value)
"Ignoring WIDGET, convert :bold and :italic in VALUE to new form.
Also change :reverse-video to :inverse-video."
- (if (listp value)
- (let (result)
- (while value
- (let ((key (car value))
- (val (car (cdr value))))
- (cond ((eq key :italic)
- (push :slant result)
- (push (if val 'italic 'normal) result))
- ((eq key :bold)
- (push :weight result)
- (push (if val 'bold 'normal) result))
- ((eq key :reverse-video)
- (push :inverse-video result)
- (push val result))
- (t
- (push key result)
- (push val result))))
- (setq value (cdr (cdr value))))
- (setq result (nreverse result))
- result)
- value))
+ (custom-fix-face-spec value))
(defun custom-face-edit-convert-widget (widget)
"Convert :args as widget types in WIDGET."
@@ -3081,6 +3113,9 @@ Also change :reverse-video to :inverse-video."
(widget-get widget :args)))
widget)
+(defconst custom-face-edit (widget-convert 'custom-face-edit)
+ "Converted version of the `custom-face-edit' widget.")
+
(defun custom-face-edit-deactivate (widget)
"Make face widget WIDGET inactive for user modifications."
(unless (widget-get widget :inactive)
@@ -3092,7 +3127,7 @@ Also change :reverse-video to :inverse-video."
(save-excursion
(goto-char from)
(widget-default-delete widget)
- (insert tag ": *\n")
+ (insert tag ": " (propertize "--" 'face 'shadow) "\n")
(widget-put widget :inactive
(cons value (cons from (- (point) from))))))))
@@ -3235,14 +3270,30 @@ Only match frames that support the specified face attributes.")
:version "20.3")
(define-widget 'custom-face 'custom
- "Customize face."
+ "Widget for customizing a face.
+The following properties have special meanings for this widget:
+
+:value is the face name (a symbol).
+
+:custom-form should be a symbol describing how to display and
+ edit the face attributes---either `selected' (attributes for
+ selected display only), `all' (all attributes), `lisp' (as a
+ Lisp sexp), or `mismatch' (should not happen); if nil, use
+ the return value of `custom-face-default-form'.
+
+:display-style, if non-nil, should be a symbol describing the
+ style of display to use. If the value is `concise', a more
+ concise interface is shown.
+
+:sample-indent, if non-nil, should be an integer; this is the
+number of columns to which to indent the face sample."
:sample-face 'custom-face-tag
:help-echo "Set or reset this face."
:documentation-property #'face-doc-string
:value-create 'custom-face-value-create
:action 'custom-face-action
:custom-category 'face
- :custom-form nil ; defaults to value of `custom-face-default-form'
+ :custom-form nil
:custom-set 'custom-face-set
:custom-mark-to-save 'custom-face-mark-to-save
:custom-reset-current 'custom-redraw
@@ -3264,43 +3315,6 @@ Only match frames that support the specified face attributes.")
(defconst custom-face-all (widget-convert 'custom-face-all)
"Converted version of the `custom-face-all' widget.")
-(define-widget 'custom-display-unselected 'item
- "A display specification that doesn't match the selected display."
- :match 'custom-display-unselected-match)
-
-(defun custom-display-unselected-match (widget value)
- "Non-nil if VALUE is an unselected display specification."
- (not (face-spec-set-match-display value (selected-frame))))
-
-(define-widget 'custom-face-selected 'group
- "Edit the attributes of the selected display in a face specification."
- :args '((choice :inline t
- (group :tag "With Defaults" :inline t
- (group (const :tag "" default)
- (custom-face-edit :tag " Default\n Attributes"))
- (repeat :format ""
- :inline t
- (group custom-display-unselected sexp))
- (group (sexp :format "")
- (custom-face-edit :tag " Overriding\n Attributes"))
- (repeat :format ""
- :inline t
- sexp))
- (group :tag "No Defaults" :inline t
- (repeat :format ""
- :inline t
- (group custom-display-unselected sexp))
- (group (sexp :format "")
- (custom-face-edit :tag "\n Attributes"))
- (repeat :format ""
- :inline t
- sexp)))))
-
-
-
-(defconst custom-face-selected (widget-convert 'custom-face-selected)
- "Converted version of the `custom-face-selected' widget.")
-
(defun custom-filter-face-spec (spec filter-index &optional default-filter)
"Return a canonicalized version of SPEC using.
FILTER-INDEX is the index in the entry for each attribute in
@@ -3342,122 +3356,157 @@ SPEC must be a full face spec."
"Return the customized SPEC in a form suitable for setting the face."
(custom-filter-face-spec spec 3))
+(defun custom-face-widget-to-spec (widget)
+ "Return a face spec corresponding to WIDGET.
+WIDGET should be a `custom-face' widget."
+ (unless (eq (widget-type widget) 'custom-face)
+ (error "Invalid widget"))
+ (let ((child (car (widget-get widget :children))))
+ (custom-post-filter-face-spec
+ (if (eq (widget-type child) 'custom-face-edit)
+ `((t ,(widget-value child)))
+ (widget-value child)))))
+
+(defun custom-face-get-current-spec (face)
+ (let ((spec (or (get face 'customized-face)
+ (get face 'saved-face)
+ (get face 'face-defface-spec)
+ ;; Attempt to construct it.
+ `((t ,(custom-face-attributes-get
+ face (selected-frame)))))))
+ ;; If the user has changed this face in some other way,
+ ;; edit it as the user has specified it.
+ (if (not (face-spec-match-p face spec (selected-frame)))
+ (setq spec `((t ,(face-attr-construct face (selected-frame))))))
+ (custom-pre-filter-face-spec spec)))
+
(defun custom-face-value-create (widget)
"Create a list of the display specifications for WIDGET."
- (let ((buttons (widget-get widget :buttons))
- children
- (symbol (widget-get widget :value))
- (tag (widget-get widget :tag))
- (state (widget-get widget :custom-state))
- (begin (point))
- (is-last (widget-get widget :custom-last))
- (prefix (widget-get widget :custom-prefix)))
- (unless tag
- (setq tag (prin1-to-string symbol)))
- (cond ((eq custom-buffer-style 'tree)
- (insert prefix (if is-last " `--- " " |--- "))
- (push (widget-create-child-and-convert
- widget 'custom-browse-face-tag)
- buttons)
- (insert " " tag "\n")
- (widget-put widget :buttons buttons))
- (t
- ;; Visibility.
- (push (widget-create-child-and-convert
- widget 'custom-visibility
- :help-echo "Hide or show this face."
- :on "Hide"
- :off "Show"
- :on-image "down"
- :off-image "right"
- :action 'custom-toggle-parent
- (not (eq state 'hidden)))
- buttons)
- (insert " ")
- ;; Create tag.
- (insert tag)
- (widget-specify-sample widget begin (point))
- (if (eq custom-buffer-style 'face)
- (insert " ")
- (if (string-match "face\\'" tag)
- (insert ":")
- (insert " face: ")))
- ;; Sample.
- (push (widget-create-child-and-convert widget 'item
- :format "(%{%t%})"
- :sample-face symbol
- :tag "sample")
- buttons)
- ;; Magic.
- (insert "\n")
- (let ((magic (widget-create-child-and-convert
- widget 'custom-magic nil)))
- (widget-put widget :custom-magic magic)
- (push magic buttons))
- ;; Update buttons.
- (widget-put widget :buttons buttons)
- ;; Insert documentation.
- (widget-put widget :documentation-indent 3)
- (widget-add-documentation-string-button
- widget :visibility-widget 'custom-visibility)
-
- ;; The comment field
- (unless (eq state 'hidden)
- (let* ((comment (get symbol 'face-comment))
- (comment-widget
- (widget-create-child-and-convert
- widget 'custom-comment
- :parent widget
- :value (or comment ""))))
- (widget-put widget :comment-widget comment-widget)
- (push comment-widget children)))
- ;; See also.
- (unless (eq state 'hidden)
- (when (eq (widget-get widget :custom-level) 1)
- (custom-add-parent-links widget))
- (custom-add-see-also widget))
- ;; Editor.
- (unless (eq (preceding-char) ?\n)
- (insert "\n"))
- (unless (eq state 'hidden)
- (message "Creating face editor...")
- (custom-load-widget widget)
- (unless (widget-get widget :custom-form)
- (widget-put widget :custom-form custom-face-default-form))
- (let* ((symbol (widget-value widget))
- (spec (or (get symbol 'customized-face)
- (get symbol 'saved-face)
- (get symbol 'face-defface-spec)
- ;; Attempt to construct it.
- (list (list t (custom-face-attributes-get
- symbol (selected-frame))))))
- (form (widget-get widget :custom-form))
- (indent (widget-get widget :indent))
- edit)
- ;; If the user has changed this face in some other way,
- ;; edit it as the user has specified it.
- (if (not (face-spec-match-p symbol spec (selected-frame)))
- (setq spec (list (list t (face-attr-construct symbol (selected-frame))))))
- (setq spec (custom-pre-filter-face-spec spec))
- (setq edit (widget-create-child-and-convert
- widget
- (cond ((and (eq form 'selected)
- (widget-apply custom-face-selected
- :match spec))
- (when indent (insert-char ?\ indent))
- 'custom-face-selected)
- ((and (not (eq form 'lisp))
- (widget-apply custom-face-all
- :match spec))
- 'custom-face-all)
- (t
- (when indent (insert-char ?\ indent))
- 'sexp))
- :value spec))
- (custom-face-state-set widget)
- (push edit children)
- (widget-put widget :children children))
- (message "Creating face editor...done"))))))
+ (let* ((buttons (widget-get widget :buttons))
+ (symbol (widget-get widget :value))
+ (tag (or (widget-get widget :tag)
+ (prin1-to-string symbol)))
+ (hiddenp (eq (widget-get widget :custom-state) 'hidden))
+ (style (widget-get widget :display-style))
+ children)
+
+ (if (eq custom-buffer-style 'tree)
+
+ ;; Draw a tree-style `custom-face' widget
+ (progn
+ (insert (widget-get widget :custom-prefix)
+ (if (widget-get widget :custom-last) " `--- " " |--- "))
+ (push (widget-create-child-and-convert
+ widget 'custom-browse-face-tag)
+ buttons)
+ (insert " " tag "\n")
+ (widget-put widget :buttons buttons))
+
+ ;; Draw an ordinary `custom-face' widget
+ (let ((opoint (point)))
+ ;; Visibility indicator.
+ (push (widget-create-child-and-convert
+ widget 'custom-visibility
+ :help-echo "Hide or show this face."
+ :on "Hide" :off "Show"
+ :on-image "down" :off-image "right"
+ :action 'custom-toggle-parent
+ (not hiddenp))
+ buttons)
+ ;; Face name (tag).
+ (insert " " tag)
+ (widget-specify-sample widget opoint (point)))
+ (insert
+ (cond ((eq custom-buffer-style 'face) " ")
+ ((string-match "face\\'" tag) ":")
+ (t " face: ")))
+
+ ;; Face sample.
+ (let ((sample-indent (widget-get widget :sample-indent))
+ (indent-tabs-mode nil))
+ (and sample-indent
+ (<= (current-column) sample-indent)
+ (indent-to-column sample-indent)))
+ (push (widget-create-child-and-convert
+ widget 'item
+ :format "[%{%t%}]" :sample-face symbol :tag "sample")
+ buttons)
+ ;; Magic.
+ (insert "\n")
+ (let ((magic (widget-create-child-and-convert
+ widget 'custom-magic nil)))
+ (widget-put widget :custom-magic magic)
+ (push magic buttons))
+
+ ;; Update buttons.
+ (widget-put widget :buttons buttons)
+
+ ;; Insert documentation.
+ (unless (and hiddenp (eq style 'concise))
+ (widget-put widget :documentation-indent 3)
+ (widget-add-documentation-string-button
+ widget :visibility-widget 'custom-visibility)
+ ;; The comment field
+ (unless hiddenp
+ (let* ((comment (get symbol 'face-comment))
+ (comment-widget
+ (widget-create-child-and-convert
+ widget 'custom-comment
+ :parent widget
+ :value (or comment ""))))
+ (widget-put widget :comment-widget comment-widget)
+ (push comment-widget children))))
+
+ ;; Editor.
+ (unless (eq (preceding-char) ?\n)
+ (insert "\n"))
+ (unless hiddenp
+ (custom-load-widget widget)
+ (unless (widget-get widget :custom-form)
+ (widget-put widget :custom-form custom-face-default-form))
+
+ (let* ((spec (custom-face-get-current-spec symbol))
+ (form (widget-get widget :custom-form))
+ (indent (widget-get widget :indent))
+ face-alist face-entry spec-default spec-match editor)
+
+ ;; Find a display in SPEC matching the selected display.
+ ;; This will use the usual face customization interface.
+ (setq face-alist spec)
+ (when (eq (car-safe (car-safe face-alist)) 'default)
+ (setq spec-default (pop face-alist)))
+
+ (while (and face-alist (listp face-alist) (null spec-match))
+ (setq face-entry (car face-alist))
+ (and (listp face-entry)
+ (face-spec-set-match-display (car face-entry)
+ (selected-frame))
+ (widget-apply custom-face-edit :match (cadr face-entry))
+ (setq spec-match face-entry))
+ (setq face-alist (cdr face-alist)))
+
+ ;; Insert the appropriate editing widget.
+ (setq editor
+ (cond
+ ((and (eq form 'selected)
+ (or spec-match spec-default))
+ (when indent (insert-char ?\s indent))
+ (widget-create-child-and-convert
+ widget 'custom-face-edit
+ :value (cadr spec-match)
+ :default-face-attributes (cadr spec-default)))
+ ((and (not (eq form 'lisp))
+ (widget-apply custom-face-all :match spec))
+ (widget-create-child-and-convert
+ widget 'custom-face-all :value spec))
+ (t
+ (when indent
+ (insert-char ?\s indent))
+ (widget-create-child-and-convert
+ widget 'sexp :value spec))))
+ (custom-face-state-set widget)
+ (push editor children)
+ (widget-put widget :children children))))))
(defvar custom-face-menu
`(("Set for Current Session" custom-face-set)
@@ -3511,43 +3560,43 @@ widget. If FILTER is nil, ACTION is always valid.")
(widget-put widget :custom-form 'lisp)
(custom-redraw widget))
-(defun custom-face-state-set (widget)
- "Set the state of WIDGET."
- (let* ((symbol (widget-value widget))
- (comment (get symbol 'face-comment))
- tmp temp
+(defun custom-face-state (face)
+ "Return the current state of the face FACE.
+This is one of `set', `saved', `changed', `themed', or `rogue'."
+ (let* ((comment (get face 'face-comment))
(state
- (cond ((progn
- (setq tmp (get symbol 'customized-face))
- (setq temp (get symbol 'customized-face-comment))
- (or tmp temp))
- (if (equal temp comment)
- 'set
- 'changed))
- ((progn
- (setq tmp (get symbol 'saved-face))
- (setq temp (get symbol 'saved-face-comment))
- (or tmp temp))
- (if (equal temp comment)
- (cond
- ((eq 'user (caar (get symbol 'theme-face)))
- 'saved)
- ((eq 'changed (caar (get symbol 'theme-face)))
- 'changed)
- (t 'themed))
- 'changed))
- ((get symbol 'face-defface-spec)
- (if (equal comment nil)
- 'standard
- 'changed))
- (t
- 'rogue))))
- ;; If the user called set-face-attribute to change the default
- ;; for new frames, this face is "set outside of Customize".
+ (cond
+ ((or (get face 'customized-face)
+ (get face 'customized-face-comment))
+ (if (equal (get face 'customized-face-comment) comment)
+ 'set
+ 'changed))
+ ((or (get face 'saved-face)
+ (get face 'saved-face-comment))
+ (if (equal (get face 'saved-face-comment) comment)
+ (cond
+ ((eq 'user (caar (get face 'theme-face)))
+ 'saved)
+ ((eq 'changed (caar (get face 'theme-face)))
+ 'changed)
+ (t 'themed))
+ 'changed))
+ ((get face 'face-defface-spec)
+ (if (equal comment nil)
+ 'standard
+ 'changed))
+ (t 'rogue))))
+ ;; If the user called set-face-attribute to change the default for
+ ;; new frames, this face is "set outside of Customize".
(if (and (not (eq state 'rogue))
- (get symbol 'face-modified))
- (setq state 'changed))
- (widget-put widget :custom-state state)))
+ (get face 'face-modified))
+ 'changed
+ state)))
+
+(defun custom-face-state-set (widget)
+ "Set the state of WIDGET."
+ (widget-put widget :custom-state
+ (custom-face-state (widget-value widget))))
(defun custom-face-action (widget &optional event)
"Show the menu for `custom-face' WIDGET.
@@ -3567,8 +3616,7 @@ Optional EVENT is the location for the menu."
(defun custom-face-set (widget)
"Make the face attributes in WIDGET take effect."
(let* ((symbol (widget-value widget))
- (child (car (widget-get widget :children)))
- (value (custom-post-filter-face-spec (widget-value child)))
+ (value (custom-face-widget-to-spec widget))
(comment-widget (widget-get widget :comment-widget))
(comment (widget-value comment-widget)))
(when (equal comment "")
@@ -3590,8 +3638,7 @@ Optional EVENT is the location for the menu."
(defun custom-face-mark-to-save (widget)
"Mark for saving the face edited by WIDGET."
(let* ((symbol (widget-value widget))
- (child (car (widget-get widget :children)))
- (value (custom-post-filter-face-spec (widget-value child)))
+ (value (custom-face-widget-to-spec widget))
(comment-widget (widget-get widget :comment-widget))
(comment (widget-value comment-widget)))
(when (equal comment "")
@@ -4656,6 +4703,25 @@ If several parents are listed, go to the first of them."
(if (eq (widget-get (widget-get widget :parent) :custom-state) 'modified)
(message "To install your edits, invoke [State] and choose the Set operation")))
+(defun custom--initialize-widget-variables ()
+ (set (make-local-variable 'widget-documentation-face) 'custom-documentation)
+ (set (make-local-variable '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-mouse)
+ ;; We need this because of the "More" button on docstrings.
+ ;; Otherwise clicking on "More" can push point offscreen, which
+ ;; causes the window to recenter on point, which pushes the
+ ;; newly-revealed docstring offscreen; which is annoying. -- cyd.
+ (set (make-local-variable 'widget-button-click-moves-point) t)
+ ;; When possible, use relief for buttons, not bracketing. This test
+ ;; may not be optimal.
+ (when custom-raised-buttons
+ (set (make-local-variable 'widget-push-button-prefix) "")
+ (set (make-local-variable 'widget-push-button-suffix) "")
+ (set (make-local-variable 'widget-link-prefix) "")
+ (set (make-local-variable 'widget-link-suffix) ""))
+ (setq show-trailing-whitespace nil))
+
(define-derived-mode Custom-mode nil "Custom"
"Major mode for editing customization buffers.
@@ -4693,28 +4759,7 @@ if that value is non-nil."
(setq custom-tool-bar-map map))))
(make-local-variable 'custom-options)
(make-local-variable 'custom-local-buffer)
- (make-local-variable 'widget-documentation-face)
- (setq widget-documentation-face 'custom-documentation)
- (make-local-variable 'widget-button-face)
- (setq widget-button-face custom-button)
- (setq show-trailing-whitespace nil)
-
- ;; We need this because of the "More" button on docstrings.
- ;; Otherwise clicking on "More" can push point offscreen, which
- ;; causes the window to recenter on point, which pushes the
- ;; newly-revealed docstring offscreen; which is annoying. -- cyd.
- (set (make-local-variable 'widget-button-click-moves-point) t)
-
- (set (make-local-variable 'widget-button-pressed-face) custom-button-pressed)
- (set (make-local-variable 'widget-mouse-face) custom-button-mouse)
-
- ;; When possible, use relief for buttons, not bracketing. This test
- ;; may not be optimal.
- (when custom-raised-buttons
- (set (make-local-variable 'widget-push-button-prefix) "")
- (set (make-local-variable 'widget-push-button-suffix) "")
- (set (make-local-variable 'widget-link-prefix) "")
- (set (make-local-variable 'widget-link-suffix) ""))
+ (custom--initialize-widget-variables)
(add-hook 'widget-edit-functions 'custom-state-buffer-message nil t))
(put 'Custom-mode 'mode-class 'special)
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index f6a07507f2c..ebb20012afa 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -319,42 +319,35 @@ SPEC itself is saved in FACE property `saved-face' and it is stored in
FACE's list property `theme-face' \(using `custom-push-theme')."
(custom-check-theme theme)
(let ((immediate (get theme 'theme-immediate)))
- (while args
- (let ((entry (car args)))
- (if (listp entry)
- (let ((face (nth 0 entry))
- (spec (nth 1 entry))
- (now (nth 2 entry))
- (comment (nth 3 entry))
- oldspec)
- ;; If FACE is actually an alias, customize the face it
- ;; is aliased to.
- (if (get face 'face-alias)
- (setq face (get face 'face-alias)))
-
- (setq oldspec (get face 'theme-face))
- (when (not (and oldspec (eq 'user (caar oldspec))))
- (put face 'saved-face spec)
- (put face 'saved-face-comment comment))
-
- (custom-push-theme 'theme-face face theme 'set spec)
- (when (or now immediate)
- (put face 'force-face (if now 'rogue 'immediate)))
- (when (or now immediate (facep face))
- (unless (facep face)
- (make-empty-face face))
- (put face 'face-comment comment)
- (put face 'face-override-spec nil)
- (face-spec-set face spec t))
- (setq args (cdr args)))
- ;; Old format, a plist of FACE SPEC pairs.
- (let ((face (nth 0 args))
- (spec (nth 1 args)))
- (if (get face 'face-alias)
- (setq face (get face 'face-alias)))
- (put face 'saved-face spec)
- (custom-push-theme 'theme-face face theme 'set spec))
- (setq args (cdr (cdr args))))))))
+ (dolist (entry args)
+ (unless (listp entry)
+ (error "Incompatible Custom theme spec"))
+ (let ((face (car entry))
+ (spec (nth 1 entry)))
+ ;; If FACE is actually an alias, customize the face it
+ ;; is aliased to.
+ (if (get face 'face-alias)
+ (setq face (get face 'face-alias)))
+ (if custom--inhibit-theme-enable
+ ;; Just update theme settings.
+ (custom-push-theme 'theme-face face theme 'set spec)
+ ;; Update theme settings and set the face spec.
+ (let ((now (nth 2 entry))
+ (comment (nth 3 entry))
+ (oldspec (get face 'theme-face)))
+ (when (not (and oldspec (eq 'user (caar oldspec))))
+ (put face 'saved-face spec)
+ (put face 'saved-face-comment comment))
+ ;; Do this AFTER checking the `theme-face' property.
+ (custom-push-theme 'theme-face face theme 'set spec)
+ (when (or now immediate)
+ (put face 'force-face (if now 'rogue 'immediate)))
+ (when (or now immediate (facep face))
+ (unless (facep face)
+ (make-empty-face face))
+ (put face 'face-comment comment)
+ (put face 'face-override-spec nil)
+ (face-spec-set face spec t))))))))
;; XEmacs compability function. In XEmacs, when you reset a Custom
;; Theme, you have to specify the theme to reset it to. We just apply
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 161de5e78ec..a43525f8245 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -272,6 +272,14 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(const control) (const meta)
(const alt) (const hyper)
(const super)) "23.1")
+ (ns-right-alternate-modifier
+ ns
+ (choice (const :tag "No modifier (work as alternate/option)" none)
+ (const :tag "Use the value of ns-alternate-modifier"
+ left)
+ (const control) (const meta)
+ (const alt) (const hyper)
+ (const super)) "23.3")
(ns-function-modifier
ns
(choice (const :tag "No modifier (work as function)" none)
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 77ea09cfe9a..197d9787d9a 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -35,120 +35,141 @@
(let ((map (make-keymap)))
(set-keymap-parent map widget-keymap)
(suppress-keymap map)
+ (define-key map "\C-x\C-s" 'custom-theme-write)
(define-key map "n" 'widget-forward)
(define-key map "p" 'widget-backward)
map)
"Keymap for `custom-new-theme-mode'.")
-(define-derived-mode custom-new-theme-mode nil "New-Theme"
- "Major mode for the buffer created by `customize-create-theme'.
-Do not call this mode function yourself. It is only meant for internal
-use by `customize-create-theme'."
+(define-derived-mode custom-new-theme-mode nil "Cus-Theme"
+ "Major mode for editing Custom themes.
+Do not call this mode function yourself. It is meant for internal use."
(use-local-map custom-new-theme-mode-map)
- (define-key custom-new-theme-mode-map [mouse-1] 'widget-move-and-invoke)
- (set (make-local-variable 'widget-documentation-face) 'custom-documentation)
- (set (make-local-variable '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-mouse)
- (when custom-raised-buttons
- (set (make-local-variable 'widget-push-button-prefix) "")
- (set (make-local-variable 'widget-push-button-suffix) "")
- (set (make-local-variable 'widget-link-prefix) "")
- (set (make-local-variable 'widget-link-suffix) "")))
+ (custom--initialize-widget-variables)
+ (set (make-local-variable 'revert-buffer-function) 'custom-theme-revert))
(put 'custom-new-theme-mode 'mode-class 'special)
(defvar custom-theme-name nil)
(defvar custom-theme-variables nil)
(defvar custom-theme-faces nil)
-(defvar custom-theme-description)
-(defvar custom-theme-insert-variable-marker)
-(defvar custom-theme-insert-face-marker)
+(defvar custom-theme-description nil)
+(defvar custom-theme-insert-variable-marker nil)
+(defvar custom-theme-insert-face-marker nil)
+
+(defvar custom-theme--listed-faces '(default cursor fixed-pitch
+ variable-pitch escape-glyph minibuffer-prompt highlight region
+ shadow secondary-selection trailing-whitespace
+ font-lock-builtin-face font-lock-comment-delimiter-face
+ font-lock-comment-face font-lock-constant-face
+ font-lock-doc-face font-lock-function-name-face
+ font-lock-keyword-face font-lock-negation-char-face
+ font-lock-preprocessor-face font-lock-regexp-grouping-backslash
+ font-lock-regexp-grouping-construct font-lock-string-face
+ font-lock-type-face font-lock-variable-name-face
+ font-lock-warning-face button link link-visited fringe
+ header-line tooltip mode-line mode-line-buffer-id
+ mode-line-emphasis mode-line-highlight mode-line-inactive
+ isearch isearch-fail lazy-highlight match next-error
+ query-replace)
+ "Faces listed by default in the *Custom Theme* buffer.")
+
+(defvar custom-theme--save-name)
;;;###autoload
-(defun customize-create-theme ()
- "Create a custom theme."
+(defun customize-create-theme (&optional theme buffer)
+ "Create or edit a custom theme.
+THEME, if non-nil, should be an existing theme to edit.
+BUFFER, if non-nil, should be a buffer to use."
(interactive)
- (switch-to-buffer (generate-new-buffer "*New Custom Theme*"))
+ (switch-to-buffer (get-buffer-create (or buffer "*Custom Theme*")))
+ ;; Save current faces
(let ((inhibit-read-only t))
(erase-buffer))
(custom-new-theme-mode)
(make-local-variable 'custom-theme-name)
- (make-local-variable 'custom-theme-variables)
- (make-local-variable 'custom-theme-faces)
- (make-local-variable 'custom-theme-description)
- (make-local-variable 'custom-theme-insert-variable-marker)
+ (set (make-local-variable 'custom-theme--save-name) theme)
+ (set (make-local-variable 'custom-theme-faces) nil)
+ (set (make-local-variable 'custom-theme-variables) nil)
+ (set (make-local-variable 'custom-theme-description) "")
(make-local-variable 'custom-theme-insert-face-marker)
- (widget-insert "This buffer helps you write a custom theme elisp file.
-This will help you share your customizations with other people.
+ (make-local-variable 'custom-theme-insert-variable-marker)
+ (make-local-variable 'custom-theme--listed-faces)
-Insert the names of all variables and faces you want the theme to include.
-Invoke \"Save Theme\" to save the theme. The theme file will be saved to
-the directory " custom-theme-directory "\n\n")
(widget-create 'push-button
- :tag "Visit Theme"
+ :tag " Visit Theme "
:help-echo "Insert the settings of a pre-defined theme."
:action (lambda (widget &optional event)
(call-interactively 'custom-theme-visit-theme)))
(widget-insert " ")
(widget-create 'push-button
- :tag "Merge Theme"
+ :tag " Merge Theme "
:help-echo "Merge in the settings of a pre-defined theme."
:action (lambda (widget &optional event)
(call-interactively 'custom-theme-merge-theme)))
(widget-insert " ")
- (widget-create 'push-button
- :notify (lambda (&rest ignore)
- (when (y-or-n-p "Discard current changes? ")
- (kill-buffer (current-buffer))
- (customize-create-theme)))
- "Reset Buffer")
- (widget-insert " ")
- (widget-create 'push-button
- :notify (function custom-theme-write)
- "Save Theme")
- (widget-insert "\n")
+ (widget-create 'push-button :notify 'revert-buffer " Revert ")
- (widget-insert "\n\nTheme name: ")
+ (widget-insert "\n\nTheme name : ")
(setq custom-theme-name
(widget-create 'editable-field
- :size 10
- user-login-name))
- (widget-insert "\n\nDocumentation:\n")
+ :value (if theme (symbol-name theme) "")))
+ (widget-insert "Description: ")
(setq custom-theme-description
(widget-create 'text
:value (format-time-string "Created %Y-%m-%d.")))
- (widget-insert "\n")
+ (widget-insert " ")
(widget-create 'push-button
- :tag "Insert Variable"
- :help-echo "Add another variable to this theme."
- :action (lambda (widget &optional event)
- (call-interactively 'custom-theme-add-variable)))
- (widget-insert "\n")
- (setq custom-theme-insert-variable-marker (point-marker))
- (widget-insert "\n")
+ :notify (function custom-theme-write)
+ " Save Theme ")
+ ;; Face widgets
+ (widget-insert "\n\n Theme faces:\n")
+ (let (widget)
+ (dolist (face custom-theme--listed-faces)
+ (widget-insert " ")
+ (setq widget (widget-create 'custom-face
+ :documentation-shown t
+ :tag (custom-unlispify-tag-name face)
+ :value face
+ :display-style 'concise
+ :custom-state 'hidden
+ :sample-indent 34))
+ (custom-magic-reset widget)
+ (push (cons face widget) custom-theme-faces)))
+ (insert " ")
+ (setq custom-theme-insert-face-marker (point-marker))
+ (insert " ")
(widget-create 'push-button
- :tag "Insert Face"
+ :tag "Insert Additional Face"
:help-echo "Add another face to this theme."
+ :follow-link 'mouse-face
+ :button-face 'custom-link
+ :mouse-face 'highlight
+ :pressed-face 'highlight
:action (lambda (widget &optional event)
(call-interactively 'custom-theme-add-face)))
- (widget-insert "\n")
- (setq custom-theme-insert-face-marker (point-marker))
- (widget-insert "\n")
- (widget-create 'push-button
- :notify (lambda (&rest ignore)
- (when (y-or-n-p "Discard current changes? ")
- (kill-buffer (current-buffer))
- (customize-create-theme)))
- "Reset Buffer")
- (widget-insert " ")
+ (widget-insert "\n\n Theme variables:\n ")
+ (setq custom-theme-insert-variable-marker (point-marker))
+ (widget-insert ?\s)
(widget-create 'push-button
- :notify (function custom-theme-write)
- "Save Theme")
- (widget-insert "\n")
+ :tag "Insert Variable"
+ :help-echo "Add another variable to this theme."
+ :follow-link 'mouse-face
+ :button-face 'custom-link
+ :mouse-face 'highlight
+ :pressed-face 'highlight
+ :action (lambda (widget &optional event)
+ (call-interactively 'custom-theme-add-variable)))
+ (widget-insert ?\n)
+ (if theme
+ (custom-theme-merge-theme theme))
(widget-setup)
(goto-char (point-min))
(message ""))
+(defun custom-theme-revert (ignore-auto noconfirm)
+ (when (or noconfirm (y-or-n-p "Discard current changes? "))
+ (customize-create-theme custom-theme--save-name (current-buffer))))
+
;;; Theme variables
(defun custom-theme-add-variable (symbol)
@@ -162,7 +183,7 @@ the directory " custom-theme-directory "\n\n")
(t
(save-excursion
(goto-char custom-theme-insert-variable-marker)
- (widget-insert "\n")
+ (widget-insert " ")
(let ((widget (widget-create 'custom-variable
:tag (custom-unlispify-tag-name symbol)
:custom-level 0
@@ -171,6 +192,8 @@ the directory " custom-theme-directory "\n\n")
:value symbol)))
(push (cons symbol widget) custom-theme-variables)
(custom-magic-reset widget))
+ (widget-insert " ")
+ (move-marker custom-theme-insert-variable-marker (point))
(widget-setup)))))
(defvar custom-theme-variable-menu
@@ -231,15 +254,19 @@ Optional EVENT is the location for the menu."
(t
(save-excursion
(goto-char custom-theme-insert-face-marker)
- (widget-insert "\n")
+ (widget-insert " ")
(let ((widget (widget-create 'custom-face
:tag (custom-unlispify-tag-name symbol)
:custom-level 0
:action 'custom-theme-face-action
:custom-state 'unknown
+ :display-style 'concise
+ :sample-indent 34
:value symbol)))
(push (cons symbol widget) custom-theme-faces)
(custom-magic-reset widget)
+ (widget-insert " ")
+ (move-marker custom-theme-insert-face-marker (point))
(widget-setup))))))
(defvar custom-theme-face-menu
@@ -288,9 +315,8 @@ Optional EVENT is the location for the menu."
(defun custom-theme-visit-theme ()
(interactive)
- (when (or (null custom-theme-variables)
- (if (y-or-n-p "Discard current changes? ")
- (progn (customize-create-theme) t)))
+ (when (and (y-or-n-p "Discard current changes? ")
+ (progn (revert-buffer) t))
(let ((theme (call-interactively 'custom-theme-merge-theme)))
(unless (eq theme 'user)
(widget-value-set custom-theme-name (symbol-name theme)))
@@ -300,9 +326,14 @@ Optional EVENT is the location for the menu."
(widget-setup))))
(defun custom-theme-merge-theme (theme)
- (interactive "SCustom theme name: ")
- (unless (eq theme 'user)
- (load-theme theme))
+ (interactive
+ (list
+ (intern (completing-read "Merge custom theme: "
+ (mapcar 'symbol-name
+ (custom-available-themes))))))
+ (unless (custom-theme-name-valid-p theme)
+ (error "Invalid theme name `%s'" theme))
+ (load-theme theme)
(let ((settings (get theme 'theme-settings)))
(dolist (setting settings)
(if (eq (car setting) 'theme-value)
@@ -312,22 +343,24 @@ Optional EVENT is the location for the menu."
theme)
(defun custom-theme-write (&rest ignore)
+ (interactive)
(let* ((name (widget-value custom-theme-name))
- (filename (expand-file-name (concat name "-theme.el")
- custom-theme-directory))
(doc (widget-value custom-theme-description))
- (vars custom-theme-variables)
- (faces custom-theme-faces))
- (cond ((or (string-equal name "")
- (string-equal name "user")
- (string-equal name "changed"))
- (error "Custom themes cannot be named `%s'" name))
- ((string-match " " name)
- (error "Custom theme names should not contain spaces"))
- ((if (file-exists-p filename)
- (not (y-or-n-p
- (format "File %s exists. Overwrite? " filename))))
- (error "Aborted")))
+ (vars custom-theme-variables)
+ (faces custom-theme-faces)
+ filename)
+ (when (string-equal name "")
+ (setq name (read-from-minibuffer "Theme name: " (user-login-name)))
+ (widget-value-set custom-theme-name name))
+ (unless (custom-theme-name-valid-p (intern name))
+ (error "Custom themes cannot be named `%s'" name))
+
+ (setq filename (expand-file-name (concat name "-theme.el")
+ custom-theme-directory))
+ (and (file-exists-p filename)
+ (not (y-or-n-p (format "File %s exists. Overwrite? " filename)))
+ (error "Aborted"))
+
(with-temp-buffer
(emacs-lisp-mode)
(unless (file-exists-p custom-theme-directory)
@@ -342,11 +375,14 @@ Optional EVENT is the location for the menu."
(insert "\n(provide-theme '" name ")\n")
(save-buffer))
(dolist (var vars)
- (widget-put (cdr var) :custom-state 'saved)
- (custom-redraw-magic (cdr var)))
- (dolist (face faces)
- (widget-put (cdr face) :custom-state 'saved)
- (custom-redraw-magic (cdr face)))))
+ (when (widget-get (cdr var) :children)
+ (widget-put (cdr var) :custom-state 'saved)
+ (custom-redraw-magic (cdr var))))
+ (dolist (face custom-theme-faces)
+ (when (widget-get (cdr face) :children)
+ (widget-put (cdr face) :custom-state 'saved)
+ (custom-redraw-magic (cdr face))))
+ (message "Theme written to %s" filename)))
(defun custom-theme-write-variables (theme vars)
"Write a `custom-theme-set-variables' command for THEME.
@@ -357,22 +393,21 @@ It includes all variables in list VARS."
(princ " '")
(princ theme)
(princ "\n")
- (mapc (lambda (spec)
- (let* ((symbol (car spec))
- (child (car-safe (widget-get (cdr spec) :children)))
- (value (if child
- (widget-value child)
- ;; For hidden widgets, use the standard value
- (get symbol 'standard-value))))
- (when (boundp symbol)
- (unless (bolp)
- (princ "\n"))
- (princ " '(")
- (prin1 symbol)
- (princ " ")
- (prin1 (custom-quote value))
- (princ ")"))))
- vars)
+ (dolist (spec vars)
+ (let* ((symbol (car spec))
+ (child (car-safe (widget-get (cdr spec) :children)))
+ (value (if child
+ (widget-value child)
+ ;; For hidden widgets, use the standard value
+ (get symbol 'standard-value))))
+ (when (boundp symbol)
+ (unless (bolp)
+ (princ "\n"))
+ (princ " '(")
+ (prin1 symbol)
+ (princ " ")
+ (prin1 (custom-quote value))
+ (princ ")"))))
(if (bolp)
(princ " "))
(princ ")")
@@ -388,24 +423,243 @@ It includes all faces in list FACES."
(princ " '")
(princ theme)
(princ "\n")
- (mapc (lambda (spec)
- (let* ((symbol (car spec))
- (child (car-safe (widget-get (cdr spec) :children)))
- (value (if child (widget-value child))))
- (when (and (facep symbol) child)
- (unless (bolp)
- (princ "\n"))
- (princ " '(")
- (prin1 symbol)
- (princ " ")
- (prin1 value)
- (princ ")"))))
- faces)
+ (dolist (spec faces)
+ (let* ((symbol (car spec))
+ (widget (cdr spec))
+ (child (car-safe (widget-get widget :children)))
+ (state (if child
+ (widget-get widget :custom-state)
+ (custom-face-state symbol)))
+ (value
+ (cond ((eq state 'standard)
+ nil) ; do nothing
+ (child
+ (custom-face-widget-to-spec widget))
+ (t
+ ;; Widget is closed (hidden), but the face has
+ ;; a non-standard value. Try to extract that
+ ;; value and save it.
+ (custom-face-get-current-spec symbol)))))
+ (when (and (facep symbol) value)
+ (if (bolp)
+ (princ " '(")
+ (princ "\n '("))
+ (prin1 symbol)
+ (princ " ")
+ (prin1 value)
+ (princ ")"))))
(if (bolp)
(princ " "))
(princ ")")
(unless (looking-at "\n")
(princ "\n")))))
+
+;;; Describing Custom themes.
+
+;;;###autoload
+(defun describe-theme (theme)
+ "Display a description of the Custom theme THEME (a symbol)."
+ (interactive
+ (list
+ (intern (completing-read "Describe custom theme: "
+ (mapcar 'symbol-name
+ (custom-available-themes))))))
+ (unless (custom-theme-name-valid-p theme)
+ (error "Invalid theme name `%s'" theme))
+ (help-setup-xref (list 'describe-theme theme)
+ (called-interactively-p 'interactive))
+ (with-help-window (help-buffer)
+ (with-current-buffer standard-output
+ (describe-theme-1 theme))))
+
+(defun describe-theme-1 (theme)
+ (prin1 theme)
+ (princ " is a custom theme")
+ (let ((fn (locate-file (concat (symbol-name theme) "-theme.el")
+ (cons custom-theme-directory load-path)
+ '("" "c")))
+ doc)
+ (when fn
+ (princ " in `")
+ (help-insert-xref-button (file-name-nondirectory fn)
+ 'help-theme-def fn)
+ (princ "'"))
+ (princ ".\n")
+ (if (not (memq theme custom-known-themes))
+ (progn
+ (princ "It is not loaded.")
+ ;; Attempt to grab the theme documentation
+ (when fn
+ (with-temp-buffer
+ (insert-file-contents fn)
+ (let ((sexp (let ((read-circle nil))
+ (condition-case nil
+ (read (current-buffer))
+ (end-of-file nil)))))
+ (and sexp (listp sexp)
+ (eq (car sexp) 'deftheme)
+ (setq doc (nth 2 sexp)))))))
+ (if (custom-theme-enabled-p theme)
+ (princ "It is loaded and enabled.")
+ (princ "It is loaded but disabled."))
+ (setq doc (get theme 'theme-documentation)))
+
+ (princ "\n\nDocumentation:\n")
+ (princ (if (stringp doc)
+ doc
+ "No documentation available.")))
+ (princ "\n\nYou can ")
+ (help-insert-xref-button "customize" 'help-theme-edit theme)
+ (princ " this theme."))
+
+
+;;; Theme chooser
+
+(defvar custom--listed-themes)
+
+(defcustom custom-theme-allow-multiple-selections nil
+ "Whether to allow multi-selections in the *Custom Themes* buffer."
+ :type 'boolean
+ :group 'custom-buffer)
+
+(defvar custom-theme-choose-mode-map
+ (let ((map (make-keymap)))
+ (set-keymap-parent map widget-keymap)
+ (suppress-keymap map)
+ (define-key map "\C-x\C-s" 'custom-theme-save)
+ (define-key map "n" 'widget-forward)
+ (define-key map "p" 'widget-backward)
+ (define-key map "?" 'custom-describe-theme)
+ map)
+ "Keymap for `custom-theme-choose-mode'.")
+
+(define-derived-mode custom-theme-choose-mode nil "Cus-Theme"
+ "Major mode for selecting Custom themes.
+Do not call this mode function yourself. It is meant for internal use."
+ (use-local-map custom-theme-choose-mode-map)
+ (custom--initialize-widget-variables)
+ (set (make-local-variable 'revert-buffer-function)
+ (lambda (ignore-auto noconfirm)
+ (when (or noconfirm (y-or-n-p "Discard current choices? "))
+ (customize-themes (current-buffer))))))
+(put 'custom-theme-choose-mode 'mode-class 'special)
+
+;;;###autoload
+(defun customize-themes (&optional buffer)
+ "Display a selectable list of Custom themes.
+When called from Lisp, BUFFER should be the buffer to use; if
+omitted, a buffer named *Custom Themes* is used."
+ (interactive)
+ (pop-to-buffer (get-buffer-create (or buffer "*Custom Themes*")))
+ (let ((inhibit-read-only t))
+ (erase-buffer))
+ (custom-theme-choose-mode)
+ (set (make-local-variable 'custom--listed-themes) nil)
+ (make-local-variable 'custom-theme-allow-multiple-selections)
+ (and (null custom-theme-allow-multiple-selections)
+ (> (length custom-enabled-themes) 1)
+ (setq custom-theme-allow-multiple-selections t))
+
+ (widget-insert
+ (substitute-command-keys
+ "Type RET or click to enable/disable listed custom themes.
+Type \\[custom-describe-theme] to describe the theme at point.
+Theme files are named *-theme.el in `"))
+ (when (stringp custom-theme-directory)
+ (widget-create 'link :value custom-theme-directory
+ :button-face 'custom-link
+ :mouse-face 'highlight
+ :pressed-face 'highlight
+ :help-echo "Describe `custom-theme-directory'."
+ :keymap custom-mode-link-map
+ :follow-link 'mouse-face
+ :action (lambda (widget &rest ignore)
+ (describe-variable 'custom-theme-directory)))
+ (widget-insert "' or `"))
+ (widget-create 'link :value "load-path"
+ :button-face 'custom-link
+ :mouse-face 'highlight
+ :pressed-face 'highlight
+ :help-echo "Describe `load-path'."
+ :keymap custom-mode-link-map
+ :follow-link 'mouse-face
+ :action (lambda (widget &rest ignore)
+ (describe-variable 'load-path)))
+ (widget-insert "'.\n\n")
+ (widget-create 'push-button
+ :tag " Save Theme Settings "
+ :help-echo "Save the selected themes for future sessions."
+ :action 'custom-theme-save)
+ (widget-insert ?\n)
+ (widget-create 'checkbox
+ :value custom-theme-allow-multiple-selections
+ :action 'custom-theme-selections-toggle)
+ (widget-insert (propertize " Allow more than one theme at a time"
+ 'face '(variable-pitch (:height 0.9))))
+
+ (widget-insert "\n\nAvailable Custom Themes:\n")
+ (let (widget)
+ (dolist (theme (custom-available-themes))
+ (setq widget (widget-create 'checkbox
+ :value (custom-theme-enabled-p theme)
+ :theme-name theme
+ :action 'custom-theme-checkbox-toggle))
+ (push (cons theme widget) custom--listed-themes)
+ (widget-create-child-and-convert widget 'push-button
+ :button-face-get 'ignore
+ :mouse-face-get 'ignore
+ :value (format " %s" theme)
+ :action 'widget-parent-action)
+ (widget-insert ?\n)))
+ (goto-char (point-min))
+ (widget-setup))
+
+(defun custom-theme-checkbox-toggle (widget &optional event)
+ (let ((this-theme (widget-get widget :theme-name)))
+ (if (widget-value widget)
+ ;; Disable the theme.
+ (disable-theme this-theme)
+ ;; Enable the theme.
+ (unless custom-theme-allow-multiple-selections
+ ;; If only one theme is allowed, disable all other themes and
+ ;; uncheck their boxes.
+ (dolist (theme custom-enabled-themes)
+ (and (not (eq theme this-theme))
+ (assq theme custom--listed-themes)
+ (disable-theme theme)))
+ (dolist (theme custom--listed-themes)
+ (unless (eq (car theme) this-theme)
+ (widget-value-set (cdr theme) nil)
+ (widget-apply (cdr theme) :notify (cdr theme) event))))
+ (load-theme this-theme)))
+ ;; Mark `custom-enabled-themes' as "set for current session".
+ (put 'custom-enabled-themes 'customized-value
+ (list (custom-quote custom-enabled-themes)))
+ ;; Check/uncheck the widget.
+ (widget-toggle-action widget event))
+
+(defun custom-describe-theme ()
+ "Describe the Custom theme on the current line."
+ (interactive)
+ (let ((widget (widget-at (line-beginning-position))))
+ (and widget
+ (describe-theme (widget-get widget :theme-name)))))
+
+(defun custom-theme-save (&rest ignore)
+ (interactive)
+ (customize-save-variable 'custom-enabled-themes custom-enabled-themes)
+ (message "Custom themes saved for future sessions."))
+
+(defun custom-theme-selections-toggle (widget &optional event)
+ (when (widget-value widget)
+ ;; Deactivate multiple-selections.
+ (if (> (length (delq nil (mapcar (lambda (x) (widget-value (cdr x)))
+ custom--listed-themes)))
+ 1)
+ (error "More than one theme is currently selected")))
+ (widget-toggle-action widget event)
+ (setq custom-theme-allow-multiple-selections (widget-value widget)))
+
;; arch-tag: cd6919bc-63af-410e-bae2-b6702e762344
;;; cus-theme.el ends here
diff --git a/lisp/custom.el b/lisp/custom.el
index d6ecc6dfbd5..c5ebe64da3c 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -819,48 +819,80 @@ See `custom-known-themes' for a list of known themes."
(setting (assq theme old)) ; '(theme value)
(theme-settings ; '(prop symbol theme value)
(get theme 'theme-settings)))
- (if (eq mode 'reset)
- ;; Remove a setting.
- (when setting
- (let (res)
- (dolist (theme-setting theme-settings)
- (if (and (eq (car theme-setting) prop)
- (eq (cadr theme-setting) symbol))
- (setq res theme-setting)))
- (put theme 'theme-settings (delq res theme-settings)))
- (put symbol prop (delq setting old)))
- (if setting
- ;; Alter an existing setting.
- (let (res)
- (dolist (theme-setting theme-settings)
- (if (and (eq (car theme-setting) prop)
- (eq (cadr theme-setting) symbol))
- (setq res theme-setting)))
- (put theme 'theme-settings
- (cons (list prop symbol theme value)
- (delq res theme-settings)))
- (setcar (cdr setting) value))
- ;; Add a new setting.
+ (cond
+ ;; Remove a setting:
+ ((eq mode 'reset)
+ (when setting
+ (let (res)
+ (dolist (theme-setting theme-settings)
+ (if (and (eq (car theme-setting) prop)
+ (eq (cadr theme-setting) symbol))
+ (setq res theme-setting)))
+ (put theme 'theme-settings (delq res theme-settings)))
+ (put symbol prop (delq setting old))))
+ ;; Alter an existing setting:
+ (setting
+ (let (res)
+ (dolist (theme-setting theme-settings)
+ (if (and (eq (car theme-setting) prop)
+ (eq (cadr theme-setting) symbol))
+ (setq res theme-setting)))
+ (put theme 'theme-settings
+ (cons (list prop symbol theme value)
+ (delq res theme-settings)))
+ (setcar (cdr setting) value)))
+ ;; Add a new setting:
+ (t
+ (unless old
;; If the user changed the value outside of Customize, we
;; first save the current value to a fake theme, `changed'.
;; This ensures that the user-set value comes back if the
;; theme is later disabled.
- (if (null old)
- (if (and (eq prop 'theme-value)
- (boundp symbol))
- (let ((sv (get symbol 'standard-value)))
- (unless (and sv
- (equal (eval (car sv)) (symbol-value symbol)))
- (setq old (list (list 'changed (symbol-value symbol))))))
- (if (and (facep symbol)
- (not (face-spec-match-p symbol (get symbol 'face-defface-spec))))
- (setq old (list (list 'changed (list
- (append '(t) (custom-face-attributes-get symbol nil)))))))))
- (put symbol prop (cons (list theme value) old))
- (put theme 'theme-settings
- (cons (list prop symbol theme value)
- theme-settings))))))
-
+ (cond ((and (eq prop 'theme-value)
+ (boundp symbol))
+ (let ((sv (get symbol 'standard-value)))
+ (unless (and sv
+ (equal (eval (car sv)) (symbol-value symbol)))
+ (setq old (list (list 'changed (symbol-value symbol)))))))
+ ((and (facep symbol)
+ (not (face-attr-match-p
+ symbol
+ (custom-fix-face-spec
+ (face-spec-choose
+ (get symbol 'face-defface-spec))))))
+ (setq old `((changed
+ (,(append '(t) (custom-face-attributes-get
+ symbol nil)))))))))
+ (put symbol prop (cons (list theme value) old))
+ (put theme 'theme-settings
+ (cons (list prop symbol theme value) theme-settings))))))
+
+(defun custom-fix-face-spec (spec)
+ "Convert face SPEC, replacing obsolete :bold and :italic attributes.
+Also change :reverse-video to :inverse-video."
+ (when (listp spec)
+ (if (or (memq :bold spec)
+ (memq :italic spec)
+ (memq :inverse-video spec))
+ (let (result)
+ (while spec
+ (let ((key (car spec))
+ (val (car (cdr spec))))
+ (cond ((eq key :italic)
+ (push :slant result)
+ (push (if val 'italic 'normal) result))
+ ((eq key :bold)
+ (push :weight result)
+ (push (if val 'bold 'normal) result))
+ ((eq key :reverse-video)
+ (push :inverse-video result)
+ (push val result))
+ (t
+ (push key result)
+ (push val result))))
+ (setq spec (cddr spec)))
+ (nreverse result))
+ spec)))
(defun custom-set-variables (&rest args)
"Install user customizations of variable values specified in ARGS.
@@ -895,7 +927,7 @@ COMMENT is a comment string about SYMBOL.
EXP itself is saved unevaluated as SYMBOL property `saved-value' and
in SYMBOL's list property `theme-value' \(using `custom-push-theme')."
(custom-check-theme theme)
-
+
;; Process all the needed autoloads before anything else, so that the
;; subsequent code has all the info it needs (e.g. which var corresponds
;; to a minor mode), regardless of the ordering of the variables.
@@ -927,48 +959,39 @@ in SYMBOL's list property `theme-value' \(using `custom-push-theme')."
(t (or (nth 3 a2)
(eq (get sym2 'custom-set)
'custom-set-minor-mode))))))))
- (while args
- (let ((entry (car args)))
- (if (listp entry)
- (let* ((symbol (indirect-variable (nth 0 entry)))
- (value (nth 1 entry))
- (now (nth 2 entry))
- (requests (nth 3 entry))
- (comment (nth 4 entry))
- set)
- (when requests
- (put symbol 'custom-requests requests)
- (mapc 'require requests))
- (setq set (or (get symbol 'custom-set) 'custom-set-default))
- (put symbol 'saved-value (list value))
- (put symbol 'saved-variable-comment comment)
- (custom-push-theme 'theme-value symbol theme 'set value)
- ;; Allow for errors in the case where the setter has
- ;; changed between versions, say, but let the user know.
- (condition-case data
- (cond (now
- ;; Rogue variable, set it now.
- (put symbol 'force-value t)
- (funcall set symbol (eval value)))
- ((default-boundp symbol)
- ;; Something already set this, overwrite it.
- (funcall set symbol (eval value))))
- (error
- (message "Error setting %s: %s" symbol data)))
- (setq args (cdr args))
- (and (or now (default-boundp symbol))
- (put symbol 'variable-comment comment)))
- ;; I believe this is dead-code, because the `sort' code above would
- ;; have burped before we could get here. --Stef
- ;; Old format, a plist of SYMBOL VALUE pairs.
- (message "Warning: old format `custom-set-variables'")
- (ding)
- (sit-for 2)
- (let ((symbol (indirect-variable (nth 0 args)))
- (value (nth 1 args)))
+
+ (dolist (entry args)
+ (unless (listp entry)
+ (error "Incompatible Custom theme spec"))
+ (let* ((symbol (indirect-variable (nth 0 entry)))
+ (value (nth 1 entry)))
+ (custom-push-theme 'theme-value symbol theme 'set value)
+ (unless custom--inhibit-theme-enable
+ ;; Now set the variable.
+ (let* ((now (nth 2 entry))
+ (requests (nth 3 entry))
+ (comment (nth 4 entry))
+ set)
+ (when requests
+ (put symbol 'custom-requests requests)
+ (mapc 'require requests))
+ (setq set (or (get symbol 'custom-set) 'custom-set-default))
(put symbol 'saved-value (list value))
- (custom-push-theme 'theme-value symbol theme 'set value))
- (setq args (cdr (cdr args)))))))
+ (put symbol 'saved-variable-comment comment)
+ ;; Allow for errors in the case where the setter has
+ ;; changed between versions, say, but let the user know.
+ (condition-case data
+ (cond (now
+ ;; Rogue variable, set it now.
+ (put symbol 'force-value t)
+ (funcall set symbol (eval value)))
+ ((default-boundp symbol)
+ ;; Something already set this, overwrite it.
+ (funcall set symbol (eval value))))
+ (error
+ (message "Error setting %s: %s" symbol data)))
+ (and (or now (default-boundp symbol))
+ (put symbol 'variable-comment comment)))))))
;;; Defining themes.
@@ -1040,6 +1063,12 @@ into this directory."
:group 'customize
:version "22.1")
+(defvar custom--inhibit-theme-enable nil
+ "If non-nil, loading a theme does not enable it.
+This internal variable is set by `load-theme' when its NO-ENABLE
+argument is non-nil, and it affects `custom-theme-set-variables',
+`custom-theme-set-faces', and `provide-theme'." )
+
(defun provide-theme (theme)
"Indicate that this file provides THEME.
This calls `provide' to provide the feature name stored in THEME's
@@ -1049,30 +1078,99 @@ property `theme-feature' (which is usually a symbol created by
(error "Custom theme cannot be named %S" theme))
(custom-check-theme theme)
(provide (get theme 'theme-feature))
- ;; Loading a theme also enables it.
- (push theme custom-enabled-themes)
- ;; `user' must always be the highest-precedence enabled theme.
- ;; Make that remain true. (This has the effect of making user settings
- ;; override the ones just loaded, too.)
- (let ((custom-enabling-themes t))
- (enable-theme 'user)))
-
-(defun load-theme (theme)
+ (unless custom--inhibit-theme-enable
+ ;; Loading a theme also enables it.
+ (push theme custom-enabled-themes)
+ ;; `user' must always be the highest-precedence enabled theme.
+ ;; Make that remain true. (This has the effect of making user settings
+ ;; override the ones just loaded, too.)
+ (let ((custom-enabling-themes t))
+ (enable-theme 'user))))
+
+(defun load-theme (theme &optional no-enable)
"Load a theme's settings from its file.
-This also enables the theme; use `disable-theme' to disable it."
+Normally, this also enables the theme; use `disable-theme' to
+disable it. If optional arg NO-ENABLE is non-nil, don't enable
+the theme."
;; Note we do no check for validity of the theme here.
;; This allows to pull in themes by a file-name convention
- (interactive "SCustom theme name: ")
+ (interactive
+ (list
+ (intern (completing-read "Load custom theme: "
+ (mapcar 'symbol-name
+ (custom-available-themes))))))
+ (unless (custom-theme-name-valid-p theme)
+ (error "Invalid theme name `%s'" theme))
;; If reloading, clear out the old theme settings.
(when (custom-theme-p theme)
(disable-theme theme)
(put theme 'theme-settings nil)
(put theme 'theme-feature nil)
(put theme 'theme-documentation nil))
- (let ((load-path (if (file-directory-p custom-theme-directory)
- (cons custom-theme-directory load-path)
- load-path)))
- (load (symbol-name (custom-make-theme-feature theme)))))
+ (let ((fn (locate-file (concat (symbol-name theme) "-theme.el")
+ (cons custom-theme-directory load-path)
+ '("" "c"))))
+ (unless fn
+ (error "Unable to find theme file for `%s'." theme))
+ ;; Instead of simply loading the theme file, read it manually.
+ (with-temp-buffer
+ (insert-file-contents fn)
+ (let ((custom--inhibit-theme-enable no-enable)
+ sexp scar)
+ (while (setq sexp (let ((read-circle nil))
+ (condition-case nil
+ (read (current-buffer))
+ (end-of-file nil))))
+ ;; Perform some checks on each sexp before evaluating it.
+ (cond
+ ((not (listp sexp)))
+ ((eq (setq scar (car sexp)) 'deftheme)
+ (unless (eq (cadr sexp) theme)
+ (error "Incorrect theme name in `deftheme'"))
+ (and (symbolp (nth 1 sexp))
+ (stringp (nth 2 sexp))
+ (eval (list scar (nth 1 sexp) (nth 2 sexp)))))
+ ((or (eq scar 'custom-theme-set-variables)
+ (eq scar 'custom-theme-set-faces))
+ (unless (equal (nth 1 sexp) `(quote ,theme))
+ (error "Incorrect theme name in theme settings"))
+ (dolist (entry (cddr sexp))
+ (unless (eq (car-safe entry) 'quote)
+ (error "Unsafe expression in theme settings")))
+ (eval sexp))
+ ((and (eq scar 'provide-theme)
+ (equal (cadr sexp) `(quote ,theme))
+ (= (length sexp) 2))
+ (eval sexp))))))))
+
+(defun custom-theme-name-valid-p (name)
+ "Return t if NAME is a valid name for a Custom theme, nil otherwise.
+NAME should be a symbol."
+ (and (symbolp name)
+ name
+ (not (or (zerop (length (symbol-name name)))
+ ;; There's a third-party package named color-theme.el.
+ ;; Don't treat that as a theme.
+ (eq name 'color)
+ (eq name 'cus)
+ (eq name 'user)
+ (eq name 'changed)))))
+
+(defun custom-available-themes ()
+ "Return a list of available Custom themes (symbols)."
+ (let* ((load-path (if (file-directory-p custom-theme-directory)
+ (cons custom-theme-directory load-path)
+ load-path))
+ sym themes)
+ (dolist (dir load-path)
+ (dolist (file (file-expand-wildcards
+ (expand-file-name "*-theme.el" dir) t))
+ (setq file (file-name-nondirectory file))
+ (and (string-match "\\`\\(.+\\)-theme.el\\'" file)
+ (setq sym (intern (match-string 1 file)))
+ (custom-theme-name-valid-p sym)
+ (push sym themes))))
+ (delete-dups themes)))
;;; Enabling and disabling loaded themes.
@@ -1085,7 +1183,10 @@ If it is already enabled, just give it highest precedence (after `user').
If THEME does not specify any theme settings, this tries to load
the theme from its theme file, by calling `load-theme'."
- (interactive "SEnable Custom theme: ")
+ (interactive (list (intern
+ (completing-read
+ "Enable custom theme: "
+ obarray (lambda (sym) (get sym 'theme-settings))))))
(if (not (custom-theme-p theme))
(load-theme theme)
;; This could use a bit of optimization -- cyd
@@ -1143,21 +1244,27 @@ and always takes precedence over other Custom Themes."
See `custom-enabled-themes' for a list of enabled themes."
(interactive (list (intern
(completing-read
- "Disable Custom theme: "
+ "Disable custom theme: "
(mapcar 'symbol-name custom-enabled-themes)
nil t))))
(when (custom-theme-enabled-p theme)
(let ((settings (get theme 'theme-settings)))
(dolist (s settings)
- (let* ((prop (car s))
+ (let* ((prop (car s))
(symbol (cadr s))
- (spec-list (get symbol prop)))
- (put symbol prop (assq-delete-all theme spec-list))
- (if (eq prop 'theme-value)
- (custom-theme-recalc-variable symbol)
+ (val (assq-delete-all theme (get symbol prop))))
+ (put symbol prop val)
+ (cond
+ ((eq prop 'theme-value)
+ (custom-theme-recalc-variable symbol))
+ ((eq prop 'theme-face)
+ ;; If the face spec specified by this theme is in the
+ ;; saved-face property, reset that property.
+ (when (equal (nth 3 s) (get symbol 'saved-face))
+ (put symbol 'saved-face (and val (cadr (car val)))))
(custom-theme-recalc-face symbol)))))
- (setq custom-enabled-themes
- (delq theme custom-enabled-themes))))
+ (setq custom-enabled-themes
+ (delq theme custom-enabled-themes)))))
(defun custom-variable-theme-value (variable)
"Return (list VALUE) indicating the custom theme value of VARIABLE.
@@ -1183,10 +1290,12 @@ This function returns nil if no custom theme specifies a value for VARIABLE."
(defun custom-theme-recalc-face (face)
"Set FACE according to currently enabled custom themes."
- (if (facep face)
- (face-spec-set face
- (get (or (get face 'face-alias) face)
- 'face-override-spec))))
+ (if (get face 'face-alias)
+ (setq face (get face 'face-alias)))
+ ;; Reset the faces for each frame.
+ (dolist (frame (frame-list))
+ (face-spec-recalc face frame)))
+
;;; XEmacs compability functions
diff --git a/lisp/dired.el b/lisp/dired.el
index 3fdb82ca7d3..f840b60ab07 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1178,7 +1178,7 @@ Preserves old cursor, marks/flags, hidden-p."
The positions have the form (BUFFER-POSITION WINDOW-POSITIONS).
BUFFER-POSITION is the point position in the current dired buffer.
-The buffer position have the form (BUFFER DIRED-FILENAME BUFFER-POINT).
+It has the form (BUFFER DIRED-FILENAME BUFFER-POINT).
WINDOW-POSITIONS are current positions in all windows displaying
this dired buffer. The window positions have the form (WINDOW
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 7b9d0c0786c..cbbef384436 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -155,10 +155,11 @@ Return nil if URI is not a local file."
(let* ((decoded-f (decode-coding-string
f
(or file-name-coding-system
- default-file-name-coding-system)))
- (try-f (if (file-readable-p decoded-f) decoded-f f)))
- (when (file-readable-p try-f) try-f)))))
-
+ default-file-name-coding-system))))
+ (setq f (cond ((file-readable-p decoded-f) decoded-f)
+ ((file-readable-p f) f)
+ (t nil)))))
+ f))
(defun dnd-open-local-file (uri action)
"Open a local file.
diff --git a/lisp/edmacro.el b/lisp/edmacro.el
index 123d8c1aacb..f98d901ddec 100644
--- a/lisp/edmacro.el
+++ b/lisp/edmacro.el
@@ -81,11 +81,11 @@
"*Non-nil if `edit-kbd-macro' should leave 8-bit characters intact.
Default nil means to write characters above \\177 in octal notation.")
-(defvar edmacro-mode-map nil)
-(unless edmacro-mode-map
- (setq edmacro-mode-map (make-sparse-keymap))
- (define-key edmacro-mode-map "\C-c\C-c" 'edmacro-finish-edit)
- (define-key edmacro-mode-map "\C-c\C-q" 'edmacro-insert-key))
+(defvar edmacro-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-c\C-c" 'edmacro-finish-edit)
+ (define-key map "\C-c\C-q" 'edmacro-insert-key)
+ map))
(defvar edmacro-store-hook)
(defvar edmacro-finish-hook)
diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el
index 3bfa076d71c..248a2cf1312 100644
--- a/lisp/emacs-lisp/authors.el
+++ b/lisp/emacs-lisp/authors.el
@@ -507,6 +507,7 @@ Changes to files in this list are not listed.")
"ymakefile"
"permute-index" "index.perm"
"ibmrs6000.inp"
+ "b2m.c"
"emacs.ico"
"emacs21.ico"
"LPF" "LEDIT" "OTHER.EMACSES"
@@ -1027,5 +1028,4 @@ the Emacs source tree, from which to build the file."
(provide 'authors)
-;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1
;;; authors.el ends here
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index ac008c98cd9..4a073a8e2e9 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -385,7 +385,7 @@
(eq 'lambda (car-safe fn)))
(let ((newform (byte-compile-unfold-lambda form)))
(if (eq newform form)
- ;; Some error occured, avoid infinite recursion
+ ;; Some error occurred, avoid infinite recursion
form
(byte-optimize-form-code-walker newform for-effect))))
((memq fn '(let let*))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index bad33395e22..5e975174f01 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1816,12 +1816,15 @@ The value is non-nil if there were no errors, nil if errors."
(insert "\n") ; aaah, unix.
(if (file-writable-p target-file)
;; We must disable any code conversion here.
- (let ((coding-system-for-write 'no-conversion)
- ;; Write to a tempfile so that if another Emacs
- ;; process is trying to load target-file (eg in a
- ;; parallel bootstrap), it does not risk getting a
- ;; half-finished file. (Bug#4196)
- (tempfile (make-temp-name target-file)))
+ (let* ((coding-system-for-write 'no-conversion)
+ ;; Write to a tempfile so that if another Emacs
+ ;; process is trying to load target-file (eg in a
+ ;; parallel bootstrap), it does not risk getting a
+ ;; half-finished file. (Bug#4196)
+ (tempfile (make-temp-name target-file))
+ (kill-emacs-hook
+ (cons (lambda () (ignore-errors (delete-file tempfile)))
+ kill-emacs-hook)))
(if (memq system-type '(ms-dos 'windows-nt))
(setq buffer-file-type t))
(write-region (point-min) (point-max) tempfile nil 1)
@@ -1915,14 +1918,7 @@ With argument ARG, insert value in current buffer after the form."
(set-buffer-multibyte t)
(erase-buffer)
;; (emacs-lisp-mode)
- (setq case-fold-search nil)
- ;; This is a kludge. Some operating systems (OS/2, DOS) need to
- ;; write files containing binary information specially.
- ;; Under most circumstances, such files will be in binary
- ;; overwrite mode, so those OS's use that flag to guess how
- ;; they should write their data. Advise them that .elc files
- ;; need to be written carefully.
- (setq overwrite-mode 'overwrite-mode-binary))
+ (setq case-fold-search nil))
(displaying-byte-compile-warnings
(with-current-buffer bytecomp-inbuffer
(and bytecomp-filename
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index d2abdcffe0d..88da7aab3be 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -62,11 +62,7 @@
(require 'eieio)
;;; Code:
-(defvar chart-map nil "Keymap used in chart mode.")
-(if chart-map
- ()
- (setq chart-map (make-sparse-keymap))
- )
+(defvar chart-map (make-sparse-keymap) "Keymap used in chart mode.")
(defvar chart-local-object nil
"Local variable containing the locally displayed chart object.")
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index e7455b3fbb7..9acad6e67cb 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1,7 +1,7 @@
;;; checkdoc.el --- check documentation strings for style requirements
-;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;; 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; Version: 0.6.2
@@ -1207,9 +1207,6 @@ generating a buffered list of errors."
map)
"Keymap used to override evaluation key-bindings for documentation checking.")
-(define-obsolete-variable-alias 'checkdoc-minor-keymap
- 'checkdoc-minor-mode-map "21.1")
-
;; Add in a menubar with easy-menu
(easy-menu-define
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 38ae511db78..9b275255b27 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -645,7 +645,6 @@ If ALIST is non-nil, the new pairs are prepended to it."
(load "cl-loaddefs" nil 'quiet)
;; This goes here so that cl-macs can find it if it loads right now.
-(provide 'cl-19) ; usage: (require 'cl-19 "cl")
(provide 'cl)
;; Things to do after byte-compiler is loaded.
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 43fb5762647..145498b9059 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -4011,18 +4011,16 @@ May only be called from within `edebug-recursive-edit'."
-(defvar edebug-eval-mode-map nil
- "Keymap for Edebug Eval mode. Superset of Lisp Interaction mode.")
-
-(unless edebug-eval-mode-map
- (setq edebug-eval-mode-map (make-sparse-keymap))
- (set-keymap-parent edebug-eval-mode-map lisp-interaction-mode-map)
-
- (define-key edebug-eval-mode-map "\C-c\C-w" 'edebug-where)
- (define-key edebug-eval-mode-map "\C-c\C-d" 'edebug-delete-eval-item)
- (define-key edebug-eval-mode-map "\C-c\C-u" 'edebug-update-eval-list)
- (define-key edebug-eval-mode-map "\C-x\C-e" 'edebug-eval-last-sexp)
- (define-key edebug-eval-mode-map "\C-j" 'edebug-eval-print-last-sexp))
+(defvar edebug-eval-mode-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map lisp-interaction-mode-map)
+ (define-key map "\C-c\C-w" 'edebug-where)
+ (define-key map "\C-c\C-d" 'edebug-delete-eval-item)
+ (define-key map "\C-c\C-u" 'edebug-update-eval-list)
+ (define-key map "\C-x\C-e" 'edebug-eval-last-sexp)
+ (define-key map "\C-j" 'edebug-eval-print-last-sexp)
+ map)
+"Keymap for Edebug Eval mode. Superset of Lisp Interaction mode.")
(put 'edebug-eval-mode 'mode-class 'special)
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index cfb56eb3232..d0d1520a677 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -646,49 +646,49 @@ considered."
(defun lisp-completion-at-point (&optional predicate)
"Function used for `completion-at-point-functions' in `emacs-lisp-mode'."
;; FIXME: the `end' could be after point?
- (let* ((pos (point))
- (beg (with-syntax-table emacs-lisp-mode-syntax-table
- (condition-case nil
- (save-excursion
- (backward-sexp 1)
- (skip-syntax-forward "'")
- (point))
- (scan-error pos))))
- (predicate
- (or predicate
- (save-excursion
- (goto-char beg)
- (if (not (eq (char-before) ?\())
- (lambda (sym) ;why not just nil ? -sm
- (or (boundp sym) (fboundp sym)
- (symbol-plist sym)))
- ;; Looks like a funcall position. Let's double check.
- (if (condition-case nil
- (progn (up-list -2) (forward-char 1)
- (eq (char-after) ?\())
- (error nil))
- ;; If the first element of the parent list is an open
- ;; parenthesis we are probably not in a funcall position.
- ;; Maybe a `let' varlist or something.
- nil
- ;; Else, we assume that a function name is expected.
- 'fboundp)))))
- (end
- (unless (or (eq beg (point-max))
- (member (char-syntax (char-after beg)) '(?\" ?\( ?\))))
- (condition-case nil
- (save-excursion
- (goto-char beg)
- (forward-sexp 1)
- (when (>= (point) pos)
- (point)))
- (scan-error pos)))))
- (when end
- (list beg end obarray
- :predicate predicate
- :annotate-function
- (unless (eq predicate 'fboundp)
- (lambda (str) (if (fboundp (intern-soft str)) " <f>")))))))
+ (with-syntax-table emacs-lisp-mode-syntax-table
+ (let* ((pos (point))
+ (beg (condition-case nil
+ (save-excursion
+ (backward-sexp 1)
+ (skip-syntax-forward "'")
+ (point))
+ (scan-error pos)))
+ (predicate
+ (or predicate
+ (save-excursion
+ (goto-char beg)
+ (if (not (eq (char-before) ?\())
+ (lambda (sym) ;why not just nil ? -sm
+ (or (boundp sym) (fboundp sym)
+ (symbol-plist sym)))
+ ;; Looks like a funcall position. Let's double check.
+ (if (condition-case nil
+ (progn (up-list -2) (forward-char 1)
+ (eq (char-after) ?\())
+ (error nil))
+ ;; If the first element of the parent list is an open
+ ;; paren we are probably not in a funcall position.
+ ;; Maybe a `let' varlist or something.
+ nil
+ ;; Else, we assume that a function name is expected.
+ 'fboundp)))))
+ (end
+ (unless (or (eq beg (point-max))
+ (member (char-syntax (char-after beg)) '(?\" ?\( ?\))))
+ (condition-case nil
+ (save-excursion
+ (goto-char beg)
+ (forward-sexp 1)
+ (when (>= (point) pos)
+ (point)))
+ (scan-error pos)))))
+ (when end
+ (list beg end obarray
+ :predicate predicate
+ :annotate-function
+ (unless (eq predicate 'fboundp)
+ (lambda (str) (if (fboundp (intern-soft str)) " <f>"))))))))
;; arch-tag: aa7fa8a4-2e6f-4e9b-9cd9-fef06340e67e
;;; lisp.el ends here
diff --git a/lisp/emacs-lisp/regexp-opt.el b/lisp/emacs-lisp/regexp-opt.el
index a1494741572..6389b62ea04 100644
--- a/lisp/emacs-lisp/regexp-opt.el
+++ b/lisp/emacs-lisp/regexp-opt.el
@@ -96,19 +96,24 @@ The returned regexp is typically more efficient than the equivalent regexp:
(concat open (mapconcat 'regexp-quote STRINGS \"\\\\|\") close))
If PAREN is `words', then the resulting regexp is additionally surrounded
-by \\=\\< and \\>."
+by \\=\\< and \\>.
+If PAREN is `symbols', then the resulting regexp is additionally surrounded
+by \\=\\_< and \\_>."
(save-match-data
;; Recurse on the sorted list.
(let* ((max-lisp-eval-depth 10000)
(max-specpdl-size 10000)
(completion-ignore-case nil)
(completion-regexp-list nil)
- (words (eq paren 'words))
(open (cond ((stringp paren) paren) (paren "\\(")))
(sorted-strings (delete-dups
(sort (copy-sequence strings) 'string-lessp)))
(re (regexp-opt-group sorted-strings (or open t) (not open))))
- (if words (concat "\\<" re "\\>") re))))
+ (cond ((eq paren 'words)
+ (concat "\\<" re "\\>"))
+ ((eq paren 'symbols)
+ (concat "\\_<" re "\\_>"))
+ (t re)))))
;;;###autoload
(defun regexp-opt-depth (regexp)
diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el
index a41db864a1b..e690cbaa1bc 100644
--- a/lisp/emacs-lisp/shadow.el
+++ b/lisp/emacs-lisp/shadow.el
@@ -24,7 +24,7 @@
;;; Commentary:
-;; The functions in this file detect (`find-emacs-lisp-shadows')
+;; The functions in this file detect (`load-path-shadows-find')
;; and display (`list-load-path-shadows') potential load-path
;; problems that arise when Emacs Lisp files "shadow" each other.
;;
@@ -53,16 +53,19 @@
(defgroup lisp-shadow nil
"Locate Emacs Lisp file shadowings."
- :prefix "shadows-"
+ :prefix "load-path-shadows-"
:group 'lisp)
-(defcustom shadows-compare-text-p nil
+(define-obsolete-variable-alias 'shadows-compare-text-p
+ 'load-path-shadows-compare-text "23.3")
+
+(defcustom load-path-shadows-compare-text nil
"If non-nil, then shadowing files are reported only if their text differs.
This is slower, but filters out some innocuous shadowing."
:type 'boolean
:group 'lisp-shadow)
-(defun find-emacs-lisp-shadows (&optional path)
+(defun load-path-shadows-find (&optional path)
"Return a list of Emacs Lisp files that create shadows.
This function does the work for `list-load-path-shadows'.
@@ -124,11 +127,11 @@ See the documentation for `list-load-path-shadows' for further information."
;; Report it unless the files are identical.
(let ((base1 (concat (cdr orig-dir) "/" file))
(base2 (concat dir "/" file)))
- (if (not (and shadows-compare-text-p
- (shadow-same-file-or-nonexistent
+ (if (not (and load-path-shadows-compare-text
+ (load-path-shadows-same-file-or-nonexistent
(concat base1 ".el") (concat base2 ".el"))
;; This is a bit strict, but safe.
- (shadow-same-file-or-nonexistent
+ (load-path-shadows-same-file-or-nonexistent
(concat base1 ".elc") (concat base2 ".elc"))))
(setq shadows
(append shadows (list base1 base2)))))
@@ -138,9 +141,12 @@ See the documentation for `list-load-path-shadows' for further information."
;; Return the list of shadowings.
shadows))
+(define-obsolete-function-alias 'find-emacs-lisp-shadows
+ 'load-path-shadows-find "23.3")
+
;; Return true if neither file exists, or if both exist and have identical
;; contents.
-(defun shadow-same-file-or-nonexistent (f1 f2)
+(defun load-path-shadows-same-file-or-nonexistent (f1 f2)
(let ((exists1 (file-exists-p f1))
(exists2 (file-exists-p f2)))
(or (and (not exists1) (not exists2))
@@ -151,6 +157,34 @@ See the documentation for `list-load-path-shadows' for further information."
(and (= (nth 7 (file-attributes f1))
(nth 7 (file-attributes f2)))
(eq 0 (call-process "cmp" nil nil nil "-s" f1 f2))))))))
+
+(defvar load-path-shadows-font-lock-keywords
+ `((,(format "hides \\(%s.*\\)"
+ (file-name-directory (locate-library "simple.el")))
+ . (1 font-lock-warning-face)))
+ "Keywords to highlight in `load-path-shadows-mode'.")
+
+(define-derived-mode load-path-shadows-mode fundamental-mode "LP-Shadows"
+ "Major mode for load-path shadows buffer."
+ (set (make-local-variable 'font-lock-defaults)
+ '((load-path-shadows-font-lock-keywords)))
+ (setq buffer-undo-list t
+ buffer-read-only t))
+
+;; TODO use text-properties instead, a la dired.
+(require 'button)
+(define-button-type 'load-path-shadows-find-file
+ 'follow-link t
+;; 'face 'default
+ 'action (lambda (button)
+ (let ((file (concat (button-get button 'shadow-file) ".el")))
+ (or (file-exists-p file)
+ (setq file (concat file ".gz")))
+ (if (file-readable-p file)
+ (pop-to-buffer (find-file-noselect file))
+ (error "Cannot read file"))))
+ 'help-echo "mouse-2, RET: find this file")
+
;;;###autoload
(defun list-load-path-shadows (&optional stringp)
@@ -193,7 +227,7 @@ XXX.elc in an early directory \(that does not contain XXX.el\) is
considered to shadow a later file XXX.el, and vice-versa.
Shadowings are located by calling the (non-interactive) companion
-function, `find-emacs-lisp-shadows'."
+function, `load-path-shadows-find'."
(interactive)
(let* ((path (copy-sequence load-path))
(tem path)
@@ -217,7 +251,7 @@ function, `find-emacs-lisp-shadows'."
(setq tem nil)))
(setq tem (cdr tem)))))
- (let* ((shadows (find-emacs-lisp-shadows path))
+ (let* ((shadows (load-path-shadows-find path))
(n (/ (length shadows) 2))
(msg (format "%s Emacs Lisp load-path shadowing%s found"
(if (zerop n) "No" (concat "\n" (number-to-string n)))
@@ -234,14 +268,21 @@ function, `find-emacs-lisp-shadows'."
;; Create the *Shadows* buffer and display shadowings there.
(let ((string (buffer-string)))
(with-current-buffer (get-buffer-create "*Shadows*")
- (fundamental-mode) ;run after-change-major-mode-hook.
(display-buffer (current-buffer))
- (setq buffer-undo-list t
- buffer-read-only nil)
- (erase-buffer)
- (insert string)
- (insert msg "\n")
- (setq buffer-read-only t)))
+ (load-path-shadows-mode) ; run after-change-major-mode-hook
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (insert string)
+ (insert msg "\n")
+ (while (re-search-backward "\\(^.*\\) hides \\(.*$\\)"
+ nil t)
+ (dotimes (i 2)
+ (make-button (match-beginning (1+ i))
+ (match-end (1+ i))
+ 'type 'load-path-shadows-find-file
+ 'shadow-file
+ (match-string (1+ i)))))
+ (goto-char (point-max)))))
;; We are non-interactive, print shadows via message.
(unless (zerop n)
(message "This site has duplicate Lisp libraries with the same name.
@@ -259,5 +300,4 @@ version unless you know what you are doing.\n")
(provide 'shadow)
-;; arch-tag: 0480e8a7-62ed-4a12-a9f6-f44ded9b0830
;;; shadow.el ends here
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index 55516d276da..4f5b2046150 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -138,7 +138,12 @@ one of those elements share the same precedence level and associativity."
(let ((prec2 (make-hash-table :test 'equal)))
(dolist (table tables)
(maphash (lambda (k v)
- (smie-set-prec2tab prec2 (car k) (cdr k) v))
+ (if (consp k)
+ (smie-set-prec2tab prec2 (car k) (cdr k) v)
+ (if (and (gethash k prec2)
+ (not (equal (gethash k prec2) v)))
+ (error "Conflicting values for %s property" k)
+ (puthash k v prec2))))
table))
prec2)))
@@ -225,6 +230,9 @@ one of those elements share the same precedence level and associativity."
'= override)))
(t (smie-set-prec2tab prec2 (car rhs) (cadr rhs) '= override)))
(setq rhs (cdr rhs)))))
+ ;; Keep track of which tokens are openers/closer, so they can get a nil
+ ;; precedence in smie-prec2-levels.
+ (puthash :smie-open/close-alist (smie-bnf-classify bnf) prec2)
prec2))
;; (defun smie-prec2-closer-alist (prec2 include-inners)
@@ -307,6 +315,33 @@ from the table, e.g. the table will not include things like (\"if\" . \"else\").
(pushnew (cons (car rhs) term) alist :test #'equal)))))))
(nreverse alist)))
+(defun smie-bnf-classify (bnf)
+ "Return a table classifying terminals.
+Each terminal can either be an `opener', a `closer', or neither."
+ (let ((table (make-hash-table :test #'equal))
+ (alist '()))
+ (dolist (category bnf)
+ (puthash (car category) 'neither table) ;Remove non-terminals.
+ (dolist (rhs (cdr category))
+ (if (null (cdr rhs))
+ (puthash (pop rhs) 'neither table)
+ (let ((first (pop rhs)))
+ (puthash first
+ (if (memq (gethash first table) '(nil opener))
+ 'opener 'neither)
+ table))
+ (while (cdr rhs)
+ (puthash (pop rhs) 'neither table)) ;Remove internals.
+ (let ((last (pop rhs)))
+ (puthash last
+ (if (memq (gethash last table) '(nil closer))
+ 'closer 'neither)
+ table)))))
+ (maphash (lambda (tok v)
+ (when (memq v '(closer opener))
+ (push (cons tok v) alist)))
+ table)
+ alist))
(defun smie-debug--prec2-cycle (csts)
"Return a cycle in CSTS, assuming there's one.
@@ -345,11 +380,6 @@ CSTS is a list of pairs representing arcs in a graph."
(defun smie-prec2-levels (prec2)
;; FIXME: Rather than only return an alist of precedence levels, we should
;; also extract other useful data from it:
- ;; - matching sets of block openers&closers (which can otherwise become
- ;; collapsed into a single equivalence class in smie-op-levels) for
- ;; smie-close-block as well as to detect mismatches in smie-next-sexp
- ;; or in blink-paren (as well as to do the blink-paren for inner
- ;; keywords like the "in" of "let..in..end").
;; - better default indentation rules (i.e. non-zero indentation after inner
;; keywords like the "in" of "let..in..end") for smie-indent-after-keyword.
;; Of course, maybe those things would be even better handled in the
@@ -369,18 +399,19 @@ PREC2 is a table as returned by `smie-precs-precedence-table' or
;; variables (aka "precedence levels"). These can be either
;; equality constraints (in `eqs') or `<' constraints (in `csts').
(maphash (lambda (k v)
- (if (setq tmp (assoc (car k) table))
- (setq x (cddr tmp))
- (setq x (cons nil nil))
- (push (cons (car k) (cons nil x)) table))
- (if (setq tmp (assoc (cdr k) table))
- (setq y (cdr tmp))
- (setq y (cons nil (cons nil nil)))
- (push (cons (cdr k) y) table))
- (ecase v
- (= (push (cons x y) eqs))
- (< (push (cons x y) csts))
- (> (push (cons y x) csts))))
+ (when (consp k)
+ (if (setq tmp (assoc (car k) table))
+ (setq x (cddr tmp))
+ (setq x (cons nil nil))
+ (push (cons (car k) (cons nil x)) table))
+ (if (setq tmp (assoc (cdr k) table))
+ (setq y (cdr tmp))
+ (setq y (cons nil (cons nil nil)))
+ (push (cons (cdr k) y) table))
+ (ecase v
+ (= (push (cons x y) eqs))
+ (< (push (cons x y) csts))
+ (> (push (cons y x) csts)))))
prec2)
;; First process the equality constraints.
(let ((eqs eqs))
@@ -432,16 +463,22 @@ PREC2 is a table as returned by `smie-precs-precedence-table' or
(setcar (car eq) (cadr eq)))
;; Finally, fill in the remaining vars (which only appeared on the
;; right side of the < constraints).
- (dolist (x table)
- ;; When both sides are nil, it means this operator binds very
- ;; very tight, but it's still just an operator, so we give it
- ;; the highest precedence.
- ;; OTOH if only one side is nil, it usually means it's like an
- ;; open-paren, which is very important for indentation purposes,
- ;; so we keep it nil, to make it easier to recognize.
- (unless (or (nth 1 x) (nth 2 x))
- (setf (nth 1 x) i)
- (setf (nth 2 x) i))))
+ (let ((classification-table (gethash :smie-open/close-alist prec2)))
+ (dolist (x table)
+ ;; When both sides are nil, it means this operator binds very
+ ;; very tight, but it's still just an operator, so we give it
+ ;; the highest precedence.
+ ;; OTOH if only one side is nil, it usually means it's like an
+ ;; open-paren, which is very important for indentation purposes,
+ ;; so we keep it nil if so, to make it easier to recognize.
+ (unless (or (nth 1 x)
+ (eq 'opener (cdr (assoc (car x) classification-table))))
+ (setf (nth 1 x) i)
+ (incf i)) ;See other (incf i) above.
+ (unless (or (nth 2 x)
+ (eq 'closer (cdr (assoc (car x) classification-table))))
+ (setf (nth 2 x) i)
+ (incf i))))) ;See other (incf i) above.
table))
;;; Parsing using a precedence level table.
diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el
index 1ad24da1ef8..6868a960087 100644
--- a/lisp/emulation/viper-util.el
+++ b/lisp/emulation/viper-util.el
@@ -1,7 +1,8 @@
;;; viper-util.el --- Utilities used by viper.el
;; Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
;; Package: viper
@@ -77,7 +78,7 @@
(defalias 'viper-int-to-char
(if (featurep 'xemacs) 'int-to-char 'identity))
(defalias 'viper-get-face
- (if (featurep 'xemacs) 'get-face 'internal-get-face))
+ (if (featurep 'xemacs) 'get-face 'facep))
(defalias 'viper-color-defined-p
(if (featurep 'xemacs) 'valid-color-name-p 'x-color-defined-p))
(defalias 'viper-iconify
diff --git a/lisp/emulation/ws-mode.el b/lisp/emulation/ws-mode.el
index 220ac7d67dc..35f54b71d61 100644
--- a/lisp/emulation/ws-mode.el
+++ b/lisp/emulation/ws-mode.el
@@ -27,158 +27,156 @@
;; This emulates WordStar, with a major mode.
;;; Code:
-
-(defvar wordstar-mode-map nil "")
+(defvar wordstar-C-k-map
+ (let ((map (make-keymap)))
+ (define-key map " " ())
+ (define-key map "0" 'ws-set-marker-0)
+ (define-key map "1" 'ws-set-marker-1)
+ (define-key map "2" 'ws-set-marker-2)
+ (define-key map "3" 'ws-set-marker-3)
+ (define-key map "4" 'ws-set-marker-4)
+ (define-key map "5" 'ws-set-marker-5)
+ (define-key map "6" 'ws-set-marker-6)
+ (define-key map "7" 'ws-set-marker-7)
+ (define-key map "8" 'ws-set-marker-8)
+ (define-key map "9" 'ws-set-marker-9)
+ (define-key map "b" 'ws-begin-block)
+ (define-key map "\C-b" 'ws-begin-block)
+ (define-key map "c" 'ws-copy-block)
+ (define-key map "\C-c" 'ws-copy-block)
+ (define-key map "d" 'save-buffers-kill-emacs)
+ (define-key map "\C-d" 'save-buffers-kill-emacs)
+ (define-key map "f" 'find-file)
+ (define-key map "\C-f" 'find-file)
+ (define-key map "h" 'ws-show-markers)
+ (define-key map "\C-h" 'ws-show-markers)
+ (define-key map "i" 'ws-indent-block)
+ (define-key map "\C-i" 'ws-indent-block)
+ (define-key map "k" 'ws-end-block)
+ (define-key map "\C-k" 'ws-end-block)
+ (define-key map "p" 'ws-print-block)
+ (define-key map "\C-p" 'ws-print-block)
+ (define-key map "q" 'kill-emacs)
+ (define-key map "\C-q" 'kill-emacs)
+ (define-key map "r" 'insert-file)
+ (define-key map "\C-r" 'insert-file)
+ (define-key map "s" 'save-some-buffers)
+ (define-key map "\C-s" 'save-some-buffers)
+ (define-key map "t" 'ws-mark-word)
+ (define-key map "\C-t" 'ws-mark-word)
+ (define-key map "u" 'ws-exdent-block)
+ (define-key map "\C-u" 'keyboard-quit)
+ (define-key map "v" 'ws-move-block)
+ (define-key map "\C-v" 'ws-move-block)
+ (define-key map "w" 'ws-write-block)
+ (define-key map "\C-w" 'ws-write-block)
+ (define-key map "x" 'save-buffers-kill-emacs)
+ (define-key map "\C-x" 'save-buffers-kill-emacs)
+ (define-key map "y" 'ws-delete-block)
+ (define-key map "\C-y" 'ws-delete-block)
+ map)
+ "")
+
+(defvar wordstar-C-o-map
+ (let ((map (make-keymap)))
+ (define-key map " " ())
+ (define-key map "c" 'wordstar-center-line)
+ (define-key map "\C-c" 'wordstar-center-line)
+ (define-key map "b" 'switch-to-buffer)
+ (define-key map "\C-b" 'switch-to-buffer)
+ (define-key map "j" 'justify-current-line)
+ (define-key map "\C-j" 'justify-current-line)
+ (define-key map "k" 'kill-buffer)
+ (define-key map "\C-k" 'kill-buffer)
+ (define-key map "l" 'list-buffers)
+ (define-key map "\C-l" 'list-buffers)
+ (define-key map "m" 'auto-fill-mode)
+ (define-key map "\C-m" 'auto-fill-mode)
+ (define-key map "r" 'set-fill-column)
+ (define-key map "\C-r" 'set-fill-column)
+ (define-key map "\C-u" 'keyboard-quit)
+ (define-key map "wd" 'delete-other-windows)
+ (define-key map "wh" 'split-window-horizontally)
+ (define-key map "wo" 'other-window)
+ (define-key map "wv" 'split-window-vertically)
+ map)
+ "")
+
+(defvar wordstar-C-q-map
+ (let ((map (make-keymap)))
+ (define-key map " " ())
+ (define-key map "0" 'ws-find-marker-0)
+ (define-key map "1" 'ws-find-marker-1)
+ (define-key map "2" 'ws-find-marker-2)
+ (define-key map "3" 'ws-find-marker-3)
+ (define-key map "4" 'ws-find-marker-4)
+ (define-key map "5" 'ws-find-marker-5)
+ (define-key map "6" 'ws-find-marker-6)
+ (define-key map "7" 'ws-find-marker-7)
+ (define-key map "8" 'ws-find-marker-8)
+ (define-key map "9" 'ws-find-marker-9)
+ (define-key map "a" 'ws-query-replace)
+ (define-key map "\C-a" 'ws-query-replace)
+ (define-key map "b" 'ws-goto-block-begin)
+ (define-key map "\C-b" 'ws-goto-block-begin)
+ (define-key map "c" 'end-of-buffer)
+ (define-key map "\C-c" 'end-of-buffer)
+ (define-key map "d" 'end-of-line)
+ (define-key map "\C-d" 'end-of-line)
+ (define-key map "f" 'ws-search)
+ (define-key map "\C-f" 'ws-search)
+ (define-key map "k" 'ws-goto-block-end)
+ (define-key map "\C-k" 'ws-goto-block-end)
+ (define-key map "l" 'ws-undo)
+ (define-key map "\C-l" 'ws-undo)
+ (define-key map "p" 'ws-last-cursorp)
+ (define-key map "\C-p" 'ws-last-cursorp)
+ (define-key map "r" 'beginning-of-buffer)
+ (define-key map "\C-r" 'beginning-of-buffer)
+ (define-key map "s" 'beginning-of-line)
+ (define-key map "\C-s" 'beginning-of-line)
+ (define-key map "\C-u" 'keyboard-quit)
+ (define-key map "w" 'ws-last-error)
+ (define-key map "\C-w" 'ws-last-error)
+ (define-key map "y" 'ws-kill-eol)
+ (define-key map "\C-y" 'ws-kill-eol)
+ (define-key map "\177" 'ws-kill-bol)
+ map)
+ "")
+
+(defvar wordstar-mode-map
+ (let ((map (make-keymap)))
+ (define-key map "\C-a" 'backward-word)
+ (define-key map "\C-b" 'fill-paragraph)
+ (define-key map "\C-c" 'scroll-up)
+ (define-key map "\C-d" 'forward-char)
+ (define-key map "\C-e" 'previous-line)
+ (define-key map "\C-f" 'forward-word)
+ (define-key map "\C-g" 'delete-char)
+ (define-key map "\C-h" 'backward-char)
+ (define-key map "\C-i" 'indent-for-tab-command)
+ (define-key map "\C-j" 'help-for-help)
+ (define-key map "\C-k" wordstar-C-k-map)
+ (define-key map "\C-l" 'ws-repeat-search)
+ (define-key map "\C-n" 'open-line)
+ (define-key map "\C-o" wordstar-C-o-map)
+ (define-key map "\C-p" 'quoted-insert)
+ (define-key map "\C-q" wordstar-C-q-map)
+ (define-key map "\C-r" 'scroll-down)
+ (define-key map "\C-s" 'backward-char)
+ (define-key map "\C-t" 'kill-word)
+ (define-key map "\C-u" 'keyboard-quit)
+ (define-key map "\C-v" 'overwrite-mode)
+ (define-key map "\C-w" 'scroll-down-line)
+ (define-key map "\C-x" 'next-line)
+ (define-key map "\C-y" 'kill-complete-line)
+ (define-key map "\C-z" 'scroll-up-line)
+ map)
+ "")
+
+;; wordstar-C-j-map not yet implemented
(defvar wordstar-C-j-map nil "")
-(defvar wordstar-C-k-map nil "")
-(defvar wordstar-C-o-map nil "")
-(defvar wordstar-C-q-map nil "")
-
-(if wordstar-mode-map
- ()
- (setq wordstar-mode-map (make-keymap))
- ;; (setq wordstar-C-j-map (make-keymap)) ; later, perhaps
- (setq wordstar-C-k-map (make-keymap))
- (setq wordstar-C-o-map (make-keymap))
- (setq wordstar-C-q-map (make-keymap))
-
- (define-key wordstar-mode-map "\C-a" 'backward-word)
- (define-key wordstar-mode-map "\C-b" 'fill-paragraph)
- (define-key wordstar-mode-map "\C-c" 'scroll-up)
- (define-key wordstar-mode-map "\C-d" 'forward-char)
- (define-key wordstar-mode-map "\C-e" 'previous-line)
- (define-key wordstar-mode-map "\C-f" 'forward-word)
- (define-key wordstar-mode-map "\C-g" 'delete-char)
- (define-key wordstar-mode-map "\C-h" 'backward-char)
- (define-key wordstar-mode-map "\C-i" 'indent-for-tab-command)
- (define-key wordstar-mode-map "\C-j" 'help-for-help)
- (define-key wordstar-mode-map "\C-k" wordstar-C-k-map)
- (define-key wordstar-mode-map "\C-l" 'ws-repeat-search)
- (define-key wordstar-mode-map "\C-n" 'open-line)
- (define-key wordstar-mode-map "\C-o" wordstar-C-o-map)
- (define-key wordstar-mode-map "\C-p" 'quoted-insert)
- (define-key wordstar-mode-map "\C-q" wordstar-C-q-map)
- (define-key wordstar-mode-map "\C-r" 'scroll-down)
- (define-key wordstar-mode-map "\C-s" 'backward-char)
- (define-key wordstar-mode-map "\C-t" 'kill-word)
- (define-key wordstar-mode-map "\C-u" 'keyboard-quit)
- (define-key wordstar-mode-map "\C-v" 'overwrite-mode)
- (define-key wordstar-mode-map "\C-w" 'scroll-down-line)
- (define-key wordstar-mode-map "\C-x" 'next-line)
- (define-key wordstar-mode-map "\C-y" 'kill-complete-line)
- (define-key wordstar-mode-map "\C-z" 'scroll-up-line)
-
- ;; wordstar-C-k-map
-
- (define-key wordstar-C-k-map " " ())
- (define-key wordstar-C-k-map "0" 'ws-set-marker-0)
- (define-key wordstar-C-k-map "1" 'ws-set-marker-1)
- (define-key wordstar-C-k-map "2" 'ws-set-marker-2)
- (define-key wordstar-C-k-map "3" 'ws-set-marker-3)
- (define-key wordstar-C-k-map "4" 'ws-set-marker-4)
- (define-key wordstar-C-k-map "5" 'ws-set-marker-5)
- (define-key wordstar-C-k-map "6" 'ws-set-marker-6)
- (define-key wordstar-C-k-map "7" 'ws-set-marker-7)
- (define-key wordstar-C-k-map "8" 'ws-set-marker-8)
- (define-key wordstar-C-k-map "9" 'ws-set-marker-9)
- (define-key wordstar-C-k-map "b" 'ws-begin-block)
- (define-key wordstar-C-k-map "\C-b" 'ws-begin-block)
- (define-key wordstar-C-k-map "c" 'ws-copy-block)
- (define-key wordstar-C-k-map "\C-c" 'ws-copy-block)
- (define-key wordstar-C-k-map "d" 'save-buffers-kill-emacs)
- (define-key wordstar-C-k-map "\C-d" 'save-buffers-kill-emacs)
- (define-key wordstar-C-k-map "f" 'find-file)
- (define-key wordstar-C-k-map "\C-f" 'find-file)
- (define-key wordstar-C-k-map "h" 'ws-show-markers)
- (define-key wordstar-C-k-map "\C-h" 'ws-show-markers)
- (define-key wordstar-C-k-map "i" 'ws-indent-block)
- (define-key wordstar-C-k-map "\C-i" 'ws-indent-block)
- (define-key wordstar-C-k-map "k" 'ws-end-block)
- (define-key wordstar-C-k-map "\C-k" 'ws-end-block)
- (define-key wordstar-C-k-map "p" 'ws-print-block)
- (define-key wordstar-C-k-map "\C-p" 'ws-print-block)
- (define-key wordstar-C-k-map "q" 'kill-emacs)
- (define-key wordstar-C-k-map "\C-q" 'kill-emacs)
- (define-key wordstar-C-k-map "r" 'insert-file)
- (define-key wordstar-C-k-map "\C-r" 'insert-file)
- (define-key wordstar-C-k-map "s" 'save-some-buffers)
- (define-key wordstar-C-k-map "\C-s" 'save-some-buffers)
- (define-key wordstar-C-k-map "t" 'ws-mark-word)
- (define-key wordstar-C-k-map "\C-t" 'ws-mark-word)
- (define-key wordstar-C-k-map "u" 'ws-exdent-block)
- (define-key wordstar-C-k-map "\C-u" 'keyboard-quit)
- (define-key wordstar-C-k-map "v" 'ws-move-block)
- (define-key wordstar-C-k-map "\C-v" 'ws-move-block)
- (define-key wordstar-C-k-map "w" 'ws-write-block)
- (define-key wordstar-C-k-map "\C-w" 'ws-write-block)
- (define-key wordstar-C-k-map "x" 'save-buffers-kill-emacs)
- (define-key wordstar-C-k-map "\C-x" 'save-buffers-kill-emacs)
- (define-key wordstar-C-k-map "y" 'ws-delete-block)
- (define-key wordstar-C-k-map "\C-y" 'ws-delete-block)
-
- ;; wordstar-C-j-map not yet implemented
-
- ;; wordstar-C-o-map
-
- (define-key wordstar-C-o-map " " ())
- (define-key wordstar-C-o-map "c" 'wordstar-center-line)
- (define-key wordstar-C-o-map "\C-c" 'wordstar-center-line)
- (define-key wordstar-C-o-map "b" 'switch-to-buffer)
- (define-key wordstar-C-o-map "\C-b" 'switch-to-buffer)
- (define-key wordstar-C-o-map "j" 'justify-current-line)
- (define-key wordstar-C-o-map "\C-j" 'justify-current-line)
- (define-key wordstar-C-o-map "k" 'kill-buffer)
- (define-key wordstar-C-o-map "\C-k" 'kill-buffer)
- (define-key wordstar-C-o-map "l" 'list-buffers)
- (define-key wordstar-C-o-map "\C-l" 'list-buffers)
- (define-key wordstar-C-o-map "m" 'auto-fill-mode)
- (define-key wordstar-C-o-map "\C-m" 'auto-fill-mode)
- (define-key wordstar-C-o-map "r" 'set-fill-column)
- (define-key wordstar-C-o-map "\C-r" 'set-fill-column)
- (define-key wordstar-C-o-map "\C-u" 'keyboard-quit)
- (define-key wordstar-C-o-map "wd" 'delete-other-windows)
- (define-key wordstar-C-o-map "wh" 'split-window-horizontally)
- (define-key wordstar-C-o-map "wo" 'other-window)
- (define-key wordstar-C-o-map "wv" 'split-window-vertically)
-
- ;; wordstar-C-q-map
- (define-key wordstar-C-q-map " " ())
- (define-key wordstar-C-q-map "0" 'ws-find-marker-0)
- (define-key wordstar-C-q-map "1" 'ws-find-marker-1)
- (define-key wordstar-C-q-map "2" 'ws-find-marker-2)
- (define-key wordstar-C-q-map "3" 'ws-find-marker-3)
- (define-key wordstar-C-q-map "4" 'ws-find-marker-4)
- (define-key wordstar-C-q-map "5" 'ws-find-marker-5)
- (define-key wordstar-C-q-map "6" 'ws-find-marker-6)
- (define-key wordstar-C-q-map "7" 'ws-find-marker-7)
- (define-key wordstar-C-q-map "8" 'ws-find-marker-8)
- (define-key wordstar-C-q-map "9" 'ws-find-marker-9)
- (define-key wordstar-C-q-map "a" 'ws-query-replace)
- (define-key wordstar-C-q-map "\C-a" 'ws-query-replace)
- (define-key wordstar-C-q-map "b" 'ws-goto-block-begin)
- (define-key wordstar-C-q-map "\C-b" 'ws-goto-block-begin)
- (define-key wordstar-C-q-map "c" 'end-of-buffer)
- (define-key wordstar-C-q-map "\C-c" 'end-of-buffer)
- (define-key wordstar-C-q-map "d" 'end-of-line)
- (define-key wordstar-C-q-map "\C-d" 'end-of-line)
- (define-key wordstar-C-q-map "f" 'ws-search)
- (define-key wordstar-C-q-map "\C-f" 'ws-search)
- (define-key wordstar-C-q-map "k" 'ws-goto-block-end)
- (define-key wordstar-C-q-map "\C-k" 'ws-goto-block-end)
- (define-key wordstar-C-q-map "l" 'ws-undo)
- (define-key wordstar-C-q-map "\C-l" 'ws-undo)
- (define-key wordstar-C-q-map "p" 'ws-last-cursorp)
- (define-key wordstar-C-q-map "\C-p" 'ws-last-cursorp)
- (define-key wordstar-C-q-map "r" 'beginning-of-buffer)
- (define-key wordstar-C-q-map "\C-r" 'beginning-of-buffer)
- (define-key wordstar-C-q-map "s" 'beginning-of-line)
- (define-key wordstar-C-q-map "\C-s" 'beginning-of-line)
- (define-key wordstar-C-q-map "\C-u" 'keyboard-quit)
- (define-key wordstar-C-q-map "w" 'ws-last-error)
- (define-key wordstar-C-q-map "\C-w" 'ws-last-error)
- (define-key wordstar-C-q-map "y" 'ws-kill-eol)
- (define-key wordstar-C-q-map "\C-y" 'ws-kill-eol)
- (define-key wordstar-C-q-map "\177" 'ws-kill-bol))
+
(put 'wordstar-mode 'mode-class 'special)
diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index 3c6cf07ea1b..95d8423020b 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -67,10 +67,11 @@ way."
(cons entry
epa-file-passphrase-alist)))
(setq passphrase (epa-passphrase-callback-function context
- key-id nil))
+ key-id
+ file))
(setcdr entry (copy-sequence passphrase))
passphrase))))
- (epa-passphrase-callback-function context key-id nil)))
+ (epa-passphrase-callback-function context key-id file)))
;;;###autoload
(defun epa-file-handler (operation &rest args)
diff --git a/lisp/epa.el b/lisp/epa.el
index 8d77d6938b1..ca0f07d5bae 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -635,8 +635,13 @@ If SECRET is non-nil, list secret keys instead of public keys."
(defun epa-passphrase-callback-function (context key-id handback)
(if (eq key-id 'SYM)
- (read-passwd "Passphrase for symmetric encryption: "
- (eq (epg-context-operation context) 'encrypt))
+ (read-passwd
+ (format "Passphrase for symmetric encryption%s: "
+ ;; Add the file name to the prompt, if any.
+ (if (stringp handback)
+ (format " for %s" handback)
+ ""))
+ (eq (epg-context-operation context) 'encrypt))
(read-passwd
(if (eq key-id 'PIN)
"Passphrase for PIN: "
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 90b3131ebd8..81bdf5446ec 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,11 @@
+2010-10-14 Juanma Barranquero <lekktu@gmail.com>
+
+ * erc-xdcc.el (erc-xdcc-help-text): Fix typo in docstring.
+
+2010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * erc-list.el (erc-list-menu-mode-map): Declare and define in one step.
+
2010-08-14 Vivek Dasmohapatra <vivek@etla.org>
* erc-join.el (erc-autojoin-timing, erc-autojoin-delay): New vars.
diff --git a/lisp/erc/erc-list.el b/lisp/erc/erc-list.el
index 218ea96f6da..8bf0d213f8e 100644
--- a/lisp/erc/erc-list.el
+++ b/lisp/erc/erc-list.el
@@ -117,19 +117,18 @@
(sort-fields col (point-min) (point-max))
(sort-numeric-fields col (point-min) (point-max))))))
-(defvar erc-list-menu-mode-map nil
+(defvar erc-list-menu-mode-map
+ (let ((map (make-keymap)))
+ (suppress-keymap map)
+ (define-key map "k" 'erc-list-kill)
+ (define-key map "j" 'erc-list-join)
+ (define-key map "g" 'erc-list-revert)
+ (define-key map "n" 'next-line)
+ (define-key map "p" 'previous-line)
+ (define-key map "q" 'quit-window)
+ map)
"Local keymap for `erc-list-mode' buffers.")
-(unless erc-list-menu-mode-map
- (setq erc-list-menu-mode-map (make-keymap))
- (suppress-keymap erc-list-menu-mode-map)
- (define-key erc-list-menu-mode-map "k" 'erc-list-kill)
- (define-key erc-list-menu-mode-map "j" 'erc-list-join)
- (define-key erc-list-menu-mode-map "g" 'erc-list-revert)
- (define-key erc-list-menu-mode-map "n" 'next-line)
- (define-key erc-list-menu-mode-map "p" 'previous-line)
- (define-key erc-list-menu-mode-map "q" 'quit-window))
-
(defvar erc-list-menu-sort-button-map nil
"Local keymap for ERC list menu mode sorting buttons.")
diff --git a/lisp/erc/erc-xdcc.el b/lisp/erc/erc-xdcc.el
index 403be5f720e..8d900e8291e 100644
--- a/lisp/erc/erc-xdcc.el
+++ b/lisp/erc/erc-xdcc.el
@@ -56,7 +56,7 @@ Your friends should issue \"/ctcp yournick XDCC list\" to see this."
(erc-current-nick) " XDCC send #\" to get a particular file number."))
"*Help text sent in response to XDCC help command.
A list of messages, each consisting of strings and expressions, expressions
-being evaluated and should return stings."
+being evaluated and should return strings."
:group 'erc-dcc
:type '(repeat (repeat :tag "Message" (choice string sexp))))
diff --git a/lisp/faces.el b/lisp/faces.el
index 400a0f1c96e..23dc51e33ed 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -186,33 +186,6 @@ to NEW-FACE on frame NEW-FRAME. In this case, FRAME may not be nil."
(internal-copy-lisp-face old-face new-face frame new-frame))
new-face))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Obsolete functions
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; The functions in this section are defined because Lisp packages use
-;; them, despite the prefix `internal-' suggesting that they are
-;; private to the face implementation.
-
-(defun internal-find-face (name &optional frame)
- "Retrieve the face named NAME.
-Return nil if there is no such face.
-If NAME is already a face, it is simply returned.
-The optional argument FRAME is ignored."
- (facep name))
-(make-obsolete 'internal-find-face 'facep "21.1")
-
-
-(defun internal-get-face (name &optional frame)
- "Retrieve the face named NAME; error if there is none.
-If NAME is already a face, it is simply returned.
-The optional argument FRAME is ignored."
- (or (facep name)
- (check-face name)))
-(make-obsolete 'internal-get-face "see `facep' and `check-face'." "21.1")
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Predicates, type checks.
@@ -1534,12 +1507,11 @@ If SPEC is nil, return nil."
(defun face-spec-reset-face (face &optional frame)
"Reset all attributes of FACE on FRAME to unspecified."
- (let ((attrs face-attribute-name-alist))
- (while attrs
- (let ((attr-and-name (car attrs)))
- (set-face-attribute face frame (car attr-and-name) 'unspecified))
- (setq attrs (cdr attrs)))))
-
+ (let (reset-args)
+ (dolist (attr-and-name face-attribute-name-alist)
+ (push 'unspecified reset-args)
+ (push (car attr-and-name) reset-args))
+ (apply 'set-face-attribute face frame reset-args)))
(defun face-spec-set (face spec &optional for-defface)
"Set FACE's face spec, which controls its appearance, to SPEC.
@@ -1605,8 +1577,8 @@ is used. If nil or omitted, use the selected frame."
(setq frame (selected-frame)))
(let ((list face-attribute-name-alist)
(match t))
- (while (and match (not (null list)))
- (let* ((attr (car (car list)))
+ (while (and match list)
+ (let* ((attr (caar list))
(specified-value
(if (plist-member attrs attr)
(plist-get attrs attr)
@@ -1616,7 +1588,7 @@ is used. If nil or omitted, use the selected frame."
(setq list (cdr list))))
match))
-(defun face-spec-match-p (face spec &optional frame)
+(defsubst face-spec-match-p (face spec &optional frame)
"Return t if FACE, on FRAME, matches what SPEC says it should look like."
(face-attr-match-p face (face-spec-choose spec frame) frame))
@@ -1864,10 +1836,13 @@ variable with `setq'; this won't have the expected effect."
(defvar inhibit-frame-set-background-mode nil)
-(defun frame-set-background-mode (frame)
+(defun frame-set-background-mode (frame &optional keep-face-specs)
"Set up display-dependent faces on FRAME.
Display-dependent faces are those which have different definitions
-according to the `background-mode' and `display-type' frame parameters."
+according to the `background-mode' and `display-type' frame parameters.
+
+If optional arg KEEP-FACE-SPECS is non-nil, don't recalculate
+face specs for the new background mode."
(unless inhibit-frame-set-background-mode
(let* ((bg-resource
(and (window-system frame)
@@ -1915,29 +1890,29 @@ according to the `background-mode' and `display-type' frame parameters."
(let ((locally-modified-faces nil)
;; Prevent face-spec-recalc from calling this function
;; again, resulting in a loop (bug#911).
- (inhibit-frame-set-background-mode t))
- ;; Before modifying the frame parameters, collect a list of
- ;; faces that don't match what their face-spec says they
- ;; should look like. We then avoid changing these faces
- ;; below. These are the faces whose attributes were
- ;; modified on FRAME. We use a negative list on the
- ;; assumption that most faces will be unmodified, so we can
- ;; avoid consing in the common case.
- (dolist (face (face-list))
- (and (not (get face 'face-override-spec))
- (not (face-spec-match-p face
- (face-user-default-spec face)
- (selected-frame)))
- (push face locally-modified-faces)))
- ;; Now change to the new frame parameters
- (modify-frame-parameters frame
- (list (cons 'background-mode bg-mode)
- (cons 'display-type display-type)))
- ;; For all named faces, choose face specs matching the new frame
- ;; parameters, unless they have been locally modified.
- (dolist (face (face-list))
- (unless (memq face locally-modified-faces)
- (face-spec-recalc face frame))))))))
+ (inhibit-frame-set-background-mode t)
+ (params (list (cons 'background-mode bg-mode)
+ (cons 'display-type display-type))))
+ (if keep-face-specs
+ (modify-frame-parameters frame params)
+ ;; If we are recomputing face specs, first collect a list
+ ;; of faces that don't match their face-specs. These are
+ ;; the faces modified on FRAME, and we avoid changing them
+ ;; below. Use a negative list to avoid consing (we assume
+ ;; most faces are unmodified).
+ (dolist (face (face-list))
+ (and (not (get face 'face-override-spec))
+ (not (face-spec-match-p face
+ (face-user-default-spec face)
+ (selected-frame)))
+ (push face locally-modified-faces)))
+ ;; Now change to the new frame parameters
+ (modify-frame-parameters frame params)
+ ;; For all unmodified named faces, choose face specs
+ ;; matching the new frame parameters.
+ (dolist (face (face-list))
+ (unless (memq face locally-modified-faces)
+ (face-spec-recalc face frame)))))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -2017,7 +1992,7 @@ the X resource ``reverseVideo'' is present, handle that."
(progn
(x-setup-function-keys frame)
(x-handle-reverse-video frame parameters)
- (frame-set-background-mode frame)
+ (frame-set-background-mode frame t)
(face-set-after-frame-default frame parameters)
(if (null visibility-spec)
(make-frame-visible frame)
@@ -2033,20 +2008,21 @@ Calculate the face definitions using the face specs, custom theme
settings, X resources, and `face-new-frame-defaults'.
Finally, apply any relevant face attributes found amongst the
frame parameters in PARAMETERS."
- (dolist (face (nreverse (face-list))) ;Why reverse? --Stef
- (condition-case ()
- (progn
- ;; Initialize faces from face spec and custom theme.
- (face-spec-recalc face frame)
- ;; X resouces for the default face are applied during
- ;; x-create-frame.
- (and (not (eq face 'default))
- (memq (window-system frame) '(x w32))
- (make-face-x-resource-internal face frame))
- ;; Apply attributes specified by face-new-frame-defaults
- (internal-merge-in-global-face face frame))
- ;; Don't let invalid specs prevent frame creation.
- (error nil)))
+ (let ((window-system-p (memq (window-system frame) '(x w32))))
+ (dolist (face (nreverse (face-list))) ;Why reverse? --Stef
+ (condition-case ()
+ (progn
+ ;; Initialize faces from face spec and custom theme.
+ (face-spec-recalc face frame)
+ ;; X resouces for the default face are applied during
+ ;; `x-create-frame'.
+ (and (not (eq face 'default)) window-system-p
+ (make-face-x-resource-internal face frame))
+ ;; Apply attributes specified by face-new-frame-defaults
+ (internal-merge-in-global-face face frame))
+ ;; Don't let invalid specs prevent frame creation.
+ (error nil))))
+
;; Apply attributes specified by frame parameters.
(let ((face-params '((foreground-color default :foreground)
(background-color default :background)
@@ -2093,7 +2069,7 @@ If PARAMETERS contains a `reverse' parameter, handle that."
(set-terminal-parameter frame 'terminal-initted t)
(set-locale-environment nil frame)
(tty-run-terminal-initialization frame))
- (frame-set-background-mode frame)
+ (frame-set-background-mode frame t)
(face-set-after-frame-default frame parameters)
(setq success t))
(unless success
@@ -2149,27 +2125,10 @@ terminal type to a different value."
(defun tty-set-up-initial-frame-faces ()
(let ((frame (selected-frame)))
- (frame-set-background-mode frame)
+ (frame-set-background-mode frame t)
(face-set-after-frame-default frame)))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Compatibility with 20.2
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; Update a frame's faces when we change its default font.
-
-(defalias 'frame-update-faces 'ignore "")
-(make-obsolete 'frame-update-faces "no longer necessary." "21.1")
-
-;; Update the colors of FACE, after FRAME's own colors have been
-;; changed.
-
-(define-obsolete-function-alias 'frame-update-face-colors
- 'frame-set-background-mode "21.1")
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Standard faces.
@@ -2492,7 +2451,9 @@ used to display the prompt text."
:group 'frames
:group 'basic-faces)
-(defface cursor '((t nil))
+(defface cursor
+ '((((background light)) :background "black")
+ (((background dark)) :background "white"))
"Basic face for the cursor color under X.
Note: Other faces cannot inherit from the cursor face."
:version "21.1"
@@ -2620,97 +2581,6 @@ also the same size as FACE on FRAME, or fail."
(car fonts))
(cdr (assq 'font (frame-parameters (selected-frame))))))
-
-(defun x-frob-font-weight (font which)
- (let ((case-fold-search t))
- (cond ((string-match x-font-regexp font)
- (concat (substring font 0
- (match-beginning x-font-regexp-weight-subnum))
- which
- (substring font (match-end x-font-regexp-weight-subnum)
- (match-beginning x-font-regexp-adstyle-subnum))
- ;; Replace the ADD_STYLE_NAME field with *
- ;; because the info in it may not be the same
- ;; for related fonts.
- "*"
- (substring font (match-end x-font-regexp-adstyle-subnum))))
- ((string-match x-font-regexp-head font)
- (concat (substring font 0 (match-beginning 1)) which
- (substring font (match-end 1))))
- ((string-match x-font-regexp-weight font)
- (concat (substring font 0 (match-beginning 1)) which
- (substring font (match-end 1)))))))
-(make-obsolete 'x-frob-font-weight 'make-face-... "21.1")
-
-(defun x-frob-font-slant (font which)
- (let ((case-fold-search t))
- (cond ((string-match x-font-regexp font)
- (concat (substring font 0
- (match-beginning x-font-regexp-slant-subnum))
- which
- (substring font (match-end x-font-regexp-slant-subnum)
- (match-beginning x-font-regexp-adstyle-subnum))
- ;; Replace the ADD_STYLE_NAME field with *
- ;; because the info in it may not be the same
- ;; for related fonts.
- "*"
- (substring font (match-end x-font-regexp-adstyle-subnum))))
- ((string-match x-font-regexp-head font)
- (concat (substring font 0 (match-beginning 2)) which
- (substring font (match-end 2))))
- ((string-match x-font-regexp-slant font)
- (concat (substring font 0 (match-beginning 1)) which
- (substring font (match-end 1)))))))
-(make-obsolete 'x-frob-font-slant 'make-face-... "21.1")
-
-;; These aliases are here so that we don't get warnings about obsolete
-;; functions from the byte compiler.
-(defalias 'internal-frob-font-weight 'x-frob-font-weight)
-(defalias 'internal-frob-font-slant 'x-frob-font-slant)
-
-(defun x-make-font-bold (font)
- "Given an X font specification, make a bold version of it.
-If that can't be done, return nil."
- (internal-frob-font-weight font "bold"))
-(make-obsolete 'x-make-font-bold 'make-face-bold "21.1")
-
-(defun x-make-font-demibold (font)
- "Given an X font specification, make a demibold version of it.
-If that can't be done, return nil."
- (internal-frob-font-weight font "demibold"))
-(make-obsolete 'x-make-font-demibold 'make-face-bold "21.1")
-
-(defun x-make-font-unbold (font)
- "Given an X font specification, make a non-bold version of it.
-If that can't be done, return nil."
- (internal-frob-font-weight font "medium"))
-(make-obsolete 'x-make-font-unbold 'make-face-unbold "21.1")
-
-(defun x-make-font-italic (font)
- "Given an X font specification, make an italic version of it.
-If that can't be done, return nil."
- (internal-frob-font-slant font "i"))
-(make-obsolete 'x-make-font-italic 'make-face-italic "21.1")
-
-(defun x-make-font-oblique (font) ; you say tomayto...
- "Given an X font specification, make an oblique version of it.
-If that can't be done, return nil."
- (internal-frob-font-slant font "o"))
-(make-obsolete 'x-make-font-oblique 'make-face-italic "21.1")
-
-(defun x-make-font-unitalic (font)
- "Given an X font specification, make a non-italic version of it.
-If that can't be done, return nil."
- (internal-frob-font-slant font "r"))
-(make-obsolete 'x-make-font-unitalic 'make-face-unitalic "21.1")
-
-(defun x-make-font-bold-italic (font)
- "Given an X font specification, make a bold and italic version of it.
-If that can't be done, return nil."
- (and (setq font (internal-frob-font-weight font "bold"))
- (internal-frob-font-slant font "i")))
-(make-obsolete 'x-make-font-bold-italic 'make-face-bold-italic "21.1")
-
(provide 'faces)
;; arch-tag: 19a4759f-2963-445f-b004-425b9aadd7d6
diff --git a/lisp/files.el b/lisp/files.el
index 40627f690f8..bb49f44fda5 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -190,12 +190,27 @@ If the buffer is visiting a new file, the value is nil.")
(defcustom temporary-file-directory
(file-name-as-directory
+ ;; FIXME ? Should there be Ftemporary_file_directory to do the
+ ;; following more robustly (cf set_local_socket in emacsclient.c).
+ ;; It could be used elsewhere, eg Fcall_process_region, server-socket-dir.
+ ;; See bug#7135.
(cond ((memq system-type '(ms-dos windows-nt))
(or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP") "c:/temp"))
+ ((eq system-type 'darwin)
+ (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
+ (let ((tmp (ignore-errors (shell-command-to-string ; bug#7135
+ "getconf DARWIN_USER_TEMP_DIR"))))
+ (and (stringp tmp)
+ (setq tmp (replace-regexp-in-string "\n\\'" "" tmp))
+ ;; This handles "getconf: Unrecognized variable..."
+ (file-directory-p tmp)
+ tmp))
+ "/tmp"))
(t
(or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp"))))
"The directory for writing temporary files."
:group 'files
+ ;; Darwin section added 24.1, does not seem worth :version bump.
:initialize 'custom-initialize-delay
:type 'directory)
@@ -934,6 +949,36 @@ to that remote system.
(funcall handler 'file-remote-p file identification connected)
nil)))
+(defcustom remote-file-name-inhibit-cache 10
+ "Whether to use the remote file-name cache for read access.
+
+When `nil', always use the cached values.
+When `t', never use them.
+A number means use them for that amount of seconds since they were
+cached.
+
+File attributes of remote files are cached for better performance.
+If they are changed out of Emacs' control, the cached values
+become invalid, and must be invalidated.
+
+In case a remote file is checked regularly, it might be
+reasonable to let-bind this variable to a value less then the
+time period between two checks.
+Example:
+
+ \(defun display-time-file-nonempty-p \(file)
+ \(let \(\(remote-file-name-inhibit-cache \(- display-time-interval 5)))
+ \(and \(file-exists-p file)
+ \(< 0 \(nth 7 \(file-attributes \(file-chase-links file)))))))"
+ :group 'files
+ :version "24.1"
+ :type `(choice
+ (const :tag "Do not inhibit file name cache" nil)
+ (const :tag "Do not use file name cache" t)
+ (integer :tag "Do not use file name cache"
+ :format "Do not use file name cache older then %v seconds"
+ :value 10)))
+
(defun file-local-copy (file)
"Copy the file FILE into a temporary file on this machine.
Returns the name of the local copy, or nil, if FILE is directly
diff --git a/lisp/font-core.el b/lisp/font-core.el
index a8b72539d5d..5f8af5a5215 100644
--- a/lisp/font-core.el
+++ b/lisp/font-core.el
@@ -81,17 +81,6 @@ functions, `font-lock-fontify-buffer-function',
(put 'font-lock-defaults 'risky-local-variable t)
(make-variable-buffer-local 'font-lock-defaults)
-(defvar font-lock-defaults-alist nil
- "Alist of fall-back Font Lock defaults for major modes.
-
-Each item should be a list of the form:
-
- (MAJOR-MODE . FONT-LOCK-DEFAULTS)
-
-where MAJOR-MODE is a symbol and FONT-LOCK-DEFAULTS is a list of default
-settings. See the variable `font-lock-defaults', which takes precedence.")
-(make-obsolete-variable 'font-lock-defaults-alist 'font-lock-defaults "21.1")
-
(defvar font-lock-function 'font-lock-default-function
"A function which is called when `font-lock-mode' is toggled.
It will be passed one argument, which is the current value of
@@ -144,8 +133,7 @@ To fontify a block (the function or paragraph containing point, or a number of
lines around point), perhaps because modification on the current line caused
syntactic change on other lines, you can use \\[font-lock-fontify-block].
-See the variable `font-lock-defaults-alist' for the Font Lock mode default
-settings. You can set your own default settings for some mode, by setting a
+You can set your own default settings for some mode, by setting a
buffer local value for `font-lock-defaults', via its mode hook.
The above is the default behavior of `font-lock-mode'; you may specify
@@ -207,8 +195,6 @@ this function onto `change-major-mode-hook'."
;; `font-lock-defaults'.
(when (or font-lock-defaults
(if (boundp 'font-lock-keywords) font-lock-keywords)
- (with-no-warnings
- (cdr (assq major-mode font-lock-defaults-alist)))
(and mode
(boundp 'font-lock-set-defaults)
font-lock-set-defaults
@@ -310,5 +296,4 @@ means that Font Lock mode is turned on for buffers in C and C++ modes only."
(provide 'font-core)
-;; arch-tag: f8c286e1-02f7-41d9-b89b-1b67780aed71
;;; font-core.el ends here
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 6c316f5f958..fe873297dc2 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1,8 +1,8 @@
;;; font-lock.el --- Electric font lock mode
;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+;; 2010 Free Software Foundation, Inc.
;; Author: Jamie Zawinski
;; Richard Stallman
@@ -102,11 +102,10 @@
;; Modes that support Font Lock mode do so by defining one or more variables
;; whose values specify the fontification. Font Lock mode knows of these
-;; variable names from (a) the buffer local variable `font-lock-defaults', if
-;; non-nil, or (b) the global variable `font-lock-defaults-alist', if the major
-;; mode has an entry. (Font Lock mode is set up via (a) where a mode's
-;; patterns are distributed with the mode's package library, and (b) where a
-;; mode's patterns are distributed with font-lock.el itself. An example of (a)
+;; variable names from the buffer local variable `font-lock-defaults'.
+;; (Font Lock mode is set up via (a) where a mode's patterns are
+;; distributed with the mode's package library, and (b) where a mode's
+;; patterns are distributed with font-lock.el itself. An example of (a)
;; is Pascal mode, an example of (b) is Lisp mode. Normally, the mechanism is
;; (a); (b) is used where it is not clear which package library should contain
;; the pattern definitions.) Font Lock mode chooses which variable to use for
@@ -1758,8 +1757,7 @@ A LEVEL of nil is equal to a LEVEL of 0, a LEVEL of t is equal to
(defun font-lock-refresh-defaults ()
"Restart fontification in current buffer after recomputing from defaults.
-Recompute fontification variables using `font-lock-defaults' (or,
-if nil, using `font-lock-defaults-alist') and
+Recompute fontification variables using `font-lock-defaults' and
`font-lock-maximum-decoration'. Then restart fontification.
Use this function when you have changed any of the above
@@ -1779,8 +1777,8 @@ preserve `hi-lock-mode' highlighting patterns."
(defun font-lock-set-defaults ()
"Set fontification defaults appropriately for this mode.
-Sets various variables using `font-lock-defaults' (or, if nil, using
-`font-lock-defaults-alist') and `font-lock-maximum-decoration'."
+Sets various variables using `font-lock-defaults' and
+`font-lock-maximum-decoration'."
;; Set fontification defaults if not previously set for correct major mode.
(unless (and font-lock-set-defaults
(eq font-lock-major-mode major-mode))
@@ -1788,10 +1786,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
(set (make-local-variable 'font-lock-set-defaults) t)
(make-local-variable 'font-lock-fontified)
(make-local-variable 'font-lock-multiline)
- (let* ((defaults (or font-lock-defaults
- (cdr (assq major-mode
- (with-no-warnings
- font-lock-defaults-alist)))))
+ (let* ((defaults font-lock-defaults)
(keywords
(font-lock-choose-keywords (nth 0 defaults)
(font-lock-value-in-major-mode font-lock-maximum-decoration)))
@@ -2082,8 +2077,7 @@ Sets various variables using `font-lock-defaults' (or, if nil, using
;; ;; Activate less/more fontification entries if there are multiple levels for
;; ;; the current buffer. Sets `font-lock-fontify-level' to be of the form
;; ;; (CURRENT-LEVEL IS-LOWER-LEVEL-P IS-HIGHER-LEVEL-P) for menu activation.
-;; (let ((keywords (or (nth 0 font-lock-defaults)
-;; (nth 1 (assq major-mode font-lock-defaults-alist))))
+;; (let ((keywords (nth 0 font-lock-defaults))
;; (level (font-lock-value-in-major-mode font-lock-maximum-decoration)))
;; (make-local-variable 'font-lock-fontify-level)
;; (if (or (symbolp keywords) (= (length keywords) 1))
@@ -2353,5 +2347,4 @@ in which C preprocessor directives are used. e.g. `asm-mode' and
(provide 'font-lock)
-;; arch-tag: 682327e4-64d8-4057-b20b-1fbb9f1fc54c
;;; font-lock.el ends here
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index fc93281f00b..765309e28a0 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,891 @@
+2010-10-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-tag-img): Ignore images with no data.
+
+2010-10-15 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * shr.el (shr-generic): Remove trailing space.
+ (shr-insert): Remove space inserted before or after a breakable
+ character or at the beginning or the end of a line.
+ (shr-find-fill-point): Do kinsoku; find the second best point or give
+ it up if there's no breakable point.
+
+2010-10-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-open-connection): Message when opening connection
+ for debugging purposes.
+
+ * gnus-art.el (gnus-article-setup-buffer): Set article mode truncation
+ on every setup buffer call to allow this to change from article to
+ article.
+
+ * shr.el (shr-tag-table): Experimental feature: Truncate lines in
+ buffers where we have a wide table.
+
+2010-10-14 Andrew Cohen <cohen@andy.bu.edu>
+
+ * gnus-sum.el (gnus-summary-refer-thread): Implement a version that
+ uses *-request-thread.
+
+2010-10-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-open-connection): Remove %s from openssl
+ incantation, which is no longer valid.
+
+2010-10-14 Julien Danjou <julien@danjou.info>
+
+ * shr.el: Fix defcustom type (char -> character).
+
+2010-10-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-open-connection): tls-program should be a list of
+ programs.
+
+2010-10-14 Julien Danjou <julien@danjou.info>
+
+ * shr.el (shr-tag-a): Use url-link as widget type.
+
+ * gnus-group.el (gnus-group-insert-group-line): Fix group argument to
+ `gnus-group-get-icon'.
+
+2010-10-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-close-server): Forget the nnimap data on close.
+ This should make server editing work better.
+
+ * shr.el (shr-find-fill-point): Don't inloop on indented text.
+
+ * nnimap.el (nnimap-open-connection): Fix open-tls-stream call.
+ (nnimap-parse-flags): Fix regexp.
+
+ * shr.el (shr-find-fill-point): Use a filling algorithm that should
+ probably work for CJVK text, too.
+
+ * nnimap.el (nnimap-extend-tls-programs): Removed.
+ (nnimap-open-connection): Bind STARTTLS to openssl explicitly.
+
+2010-10-13 Julien Danjou <julien@danjou.info>
+
+ * nnimap.el (nnimap-parse-flags): Be more strict when looking for FETCH
+ responses.
+
+2010-10-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-decode.el (mm-shr): Allow use from non-Gnus users.
+
+ * gnus-spec.el (gnus-parse-simple-format): princ doesn't really insert
+ anything in Emacs.
+
+ * shr.el (shr-current-column): Remove buggy and unnecessary function.
+
+2010-10-13 Julien Danjou <julien@danjou.info>
+
+ * shr.el (shr-width): Make shr-width a defcustom with default to
+ fill-column.
+ (shr-tag-img): Use shr-width rather than fill-column.
+
+2010-10-13 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-dired.el (gnus-dired-attach): Silence XEmacs 21.5 when compiling.
+
+ * gnus-gravatar.el (gnus-gravatar-transform-address): Adjust avatars'
+ position when (X-)Faces exist.
+ (gnus-treat-from-gravatar, gnus-treat-mail-gravatar): Force displaying
+ avatars when called interactively.
+
+2010-10-12 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-gravatar.el (gnus-gravatar-too-ugly): Don't test if
+ gnus-article-x-face-too-ugly is bound.
+
+2010-10-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * rfc2231.el (rfc2231-parse-string): Ignore repeated parts.
+
+ * nnimap.el (nnimap-request-rename-group): Unselect by selecting a
+ mailbox that doesn't exist.
+
+2010-10-12 Julien Danjou <julien@danjou.info>
+
+ * shr.el (shr-tag-img): Encode URL properly when retrieving.
+ (shr-get-image-data): Encode URL properly when fetching from cache.
+ (shr-tag-img): Use aligned-to spaces to align correctly images.
+
+ * gnus-gravatar.el (gnus-gravatar-insert): Check if buffer is alive
+ before inserting the Gravatar.
+
+ * shr.el (shr-tag-img): Add align attribute support for <img>.
+
+2010-10-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-gravatar.el (gnus-art): Required.
+
+ * gnus-sum.el (gnus-summary-mark-as-unread-forward)
+ (gnus-summary-mark-as-unread-backward, gnus-summary-mark-as-unread):
+ Remove long obsoleted functions.
+
+2010-10-11 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * nnimap.el (gnutls-negotiate): Silence the byte compiler.
+
+ * gnus-art.el, gnus-cache.el, gnus-fun.el, gnus-group.el,
+ gnus-picon.el, gnus-spec.el, gnus-sum.el, gnus-util.el, gnus.el,
+ mail-source.el, message.el, mm-bodies.el, mm-decode.el, mm-extern.el,
+ mm-util.el, mm-view.el, mml-smime.el, mml.el, mml1991.el, mml2015.el,
+ nnfolder.el, nnheader.el, nnmail.el, nnmaildir.el, nnrss.el, nntp.el,
+ rfc1843.el, sieve-manage.el, smime.el, spam.el:
+ Fix comment for declare-function.
+
+2010-10-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-request-rename-group): Select group read-only
+ before renaming it.
+
+ * shr.el (shr-insert): Fix up the white space only regexp.
+
+ * nnimap.el (nnimap-transform-split-mail): Not all articles have
+ bodies. Protect against this. Reported by Michael Welsh Duggan.
+
+ * shr.el (shr-current-column): New function.
+ (shr-find-fill-point): New function.
+
+2010-10-11 Michael Welsh Duggan <md5i@md5i.com> (tiny change)
+
+ * sieve-manage.el (sieve-manage-open): Allow port names as well as port
+ numbers.
+
+2010-10-11 Julien Danjou <julien@danjou.info>
+
+ * shr.el (shr-hr-line): Add.
+ (shr-tag-hr): Use shr-hr-line to specify which character to use to
+ display hr lines.
+ (shr-max-columns): Do not change state to nil if we just inserting
+ spaces.
+
+2010-10-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-topic.el (gnus-topic-read-group): If after the last group,
+ select the last group.
+
+2010-10-11 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-int.el (gnus-run-hook-with-args): Autoload from gnus-util.el.
+
+2010-10-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-update-qresync-info): \Flagged messages are read
+ for Gnus.
+ (nnimap-retrieve-group-data-early): utf7-encode the group parameters.
+ (nnimap-update-qresync-info): Mark \Seen articles as read.
+
+ * gnus-sum.el (gnus-summary-set-local-parameters): Ignore the `active'
+ non-variable, too.
+
+ * nnimap.el (nnimap-open-connection): Use gnutls STARTTLS, if
+ available.
+ (nnimap-update-info): Rely more on the current active than the param
+ active to avoid marking articles as read too much.
+
+ * auth-source.el (auth-source-create): Use (user-login-name) for the
+ user name default.
+
+ * nnimap.el (nnimap-update-info): If the server doesn't return any
+ useful info, just use the previous info.
+ (nnimap-update-info): Prefer old info over start-article.
+ (nnimap-update-qresync-info): Finish implementing QRESYNC.
+
+2010-10-10 Andrew Cohen <cohen@andy.bu.edu>
+
+ * nnir.el (autoload): Clean up autoloads.
+ (nnir-imap-default-search-key): Renamed from
+ nnir-imap-search-field. Use key rather than value.
+ (nnir-imap-search-other): New variable.
+ (nnir-read-parm): Use it.
+ (nnir-imap-expr-to-imap): Use %S rather than imap-quote-specials.
+ (gnus-summary-nnir-goto-thread): Modify to work with imap.
+
+2010-10-10 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * nnimap.el (nnimap-wait-for-response): If the user hits `C-g', kill
+ the process, too.
+
+2010-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * spam.el (gnus-summary-mode-map): Bind to "$". Suggested by Russ
+ Allbery.
+
+ * shr.el: Rework the way things are indented by <li> slightly.
+
+ * gnus.el (gnus-group-set-parameter): Fix typo.
+
+ * nnimap.el: Start implementing QRESYNC support.
+
+2010-10-09 Julien Danjou <julien@danjou.info>
+
+ * nnir.el (nnir-engines): Fix too many arguments.
+
+2010-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnmail.el (nnmail-expiry-target-group): Say that every expiry target
+ group is the "last", so that the backends like nnfolder actually save
+ their folders.
+
+ * nnimap.el (nnimap-open-connection): If we have gnutls loaded, then
+ try to use that for the tls stream.
+ (nnimap-retrieve-group-data-early): Rework the marks code to heed
+ UIDVALIDITY and find out which groups are read-only and not.
+ (nnimap-get-flags): Use the same marks parsing code as the rest of
+ nnimap.
+
+2010-10-09 Julien Danjou <julien@danjou.info>
+
+ * nnir.el (nnir-read-parm): Fix call to gnus-completing-read.
+
+ * gnus-gravatar.el (gnus-gravatar-transform-address): Error errors when
+ retrieving gravatars.
+
+ * shr.el (shr-table-corner): Add.
+ (shr-table-line): Add.
+ (shr-insert-table-ruler): Use the above defcustoms to insert tables.
+
+2010-10-08 Julien Danjou <julien@danjou.info>
+
+ * mm-decode.el (mm-text-html-renderer): Add mm-shr in choice list.
+
+2010-10-08 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-util.el (gnus-alist-pull): Rename `gnus-pull'.
+
+ * gnus-sum.el (gnus-mark-article-as-unread)
+ (gnus-summary-mark-article-as-unread, gnus-summary-remove-bookmark)
+ (gnus-summary-set-bookmark): Use it.
+
+ * gnus-msg.el (gnus-setup-message): Use it.
+
+ * gnus-demon.el (gnus-demon-remove-handler): Use it.
+
+ * gnus.el (gnus-group-remove-parameter): Use it.
+
+ * gnus-group.el (gnus-group-make-web-group): Use it.
+
+ * gnus-demon.el (gnus-demon-remove-handler): Use it.
+
+ * nnregistry.el: Update docs to mention manual.
+
+ * gnus-registry.el: Update docs to mention nnregistry.el.
+ (gnus-registry-initialize): Don't install nnregistry refer method
+ automatically.
+ (gnus-registry-install-nnregistry): Remove it.
+
+2010-10-08 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-insert): Don't insert double spaces.
+
+2010-10-08 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-gravatar.el (gnus-treat-from-gravatar)
+ (gnus-treat-mail-gravatar): Bind gnus-gravatar-too-ugly to nil when
+ called interactively.
+
+ * gnus-art.el (gnus-mime-view-part-externally)
+ (gnus-mime-view-part-internally): Make predicate function passed to
+ gnus-mime-view-part-as-type assume argument is a mime type, not a list
+ of a mime type.
+
+ * shr.el (shr-table-widths): Don't use cl function `reduce'.
+
+2010-10-07 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (require): Require cl when compiling.
+ (shr-tag-hr): New function.
+
+ * nnimap.el (nnimap-update-info): Remove double setting of high.
+ (nnimap-update-info): Don't ignore groups that have no UIDNEXT. This
+ makes nnimap work properly on Courier again.
+
+ * gnus.el (gnus-carpal): The carpal mode has been removed, but define
+ the variable for backwards compatability.
+
+ * mm-decode.el (mm-save-part): If given a non-directory result, expand
+ the file name before using to avoid setting mm-default-directory to
+ nil.
+
+ * gnus-start.el (gnus-get-unread-articles): Require gnus-agent before
+ bidning gnus-agent variables.
+
+ * shr.el (shr-render-td): Use a cache for the table rendering function
+ to avoid getting an exponential rendering behaviour in nested tables.
+ (shr-insert): Rework the line-breaking algorithm.
+ (shr-insert): Don't leave trailing spaces.
+ (shr-insert-table): Also insert empty TDs.
+ (shr-tag-blockquote): Ensure paragraphs after </ul>.
+
+2010-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * gnus-sum.el (gnus-number): Rename from `number'.
+ (gnus-article-marked-p, gnus-summary-limit-to-display-predicate)
+ (gnus-summary-limit-children): Update uses correspondingly.
+
+2010-10-07 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-gravatar.el (gnus-gravatar-too-ugly): New user option.
+ (gnus-gravatar-transform-address): Don't show avatars of people of
+ which mail addresses match gnus-gravatar-too-ugly.
+
+2010-10-07 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-table-widths): Expand TD elements to fill available
+ space.
+
+2010-10-07 Julien Danjou <julien@danjou.info>
+
+ * nnimap.el (nnimap-request-rename-group): Add this method.
+
+2010-10-07 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-html.el (gnus-html-schedule-image-fetching): Remove function
+ name from XEmacs' function-arglist.
+
+ * gnus-gravatar.el (gnus-gravatar-insert): Don't add properties to
+ gravatar under XEmacs.
+
+2010-10-07 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * auth-source.el: Update docs with TODO items.
+
+ * gnus-sync.el: Update docs to explain state and plans.
+
+ * gnus-int.el (gnus-after-set-mark-hook, gnus-before-update-mark-hook):
+ Hooks for mark updates.
+ (gnus-request-set-mark, gnus-request-update-mark): Use them.
+
+ * gnus-util.el (gnus-run-hooks-with-args): Convenience function to run
+ hooks with arguments, which is needed for mark update hooks.
+
+2010-10-06 Julien Danjou <julien@danjou.info>
+
+ * gnus.el (gnus-expand-group-parameter): Only return and act on what
+ was matched.
+
+ * sieve-manage.el: Update example in `Commentary'.
+
+ * sieve.el (sieve-open-server): Use sieve-manage-authenticate.
+
+ * sieve-manage.el (sieve-manage-open): Use sieve-manage-default-port,
+ not 2000.
+ (sieve-manage-authenticate): Re-add function.
+
+2010-10-06 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-insert): Get 'space transition right.
+ (shr-render-td): Only delete space at the end of the TD.
+
+ * nnimap.el (nnimap-open-connection): Prepare to support
+ open-gnutls-stream.
+
+ * shr.el: Rearrange function order to be more logical.
+
+2010-10-06 Julien Danjou <julien@danjou.info>
+
+ * nnrss.el (nnrss-check-group): Remove 404 URL in comment.
+ (nnrss-discover-feed): Remove 404 URL in docstring.
+
+ * nnir.el: Fix Swish-E URL.
+ Fix Namazu URL.
+
+ * message.el (message-change-subject): Remove 404 URL in a comment.
+
+2010-10-06 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-art.el (gnus-mime-view-part-as-type): Make it work when being
+ called interactively.
+
+ * gnus-util.el (gnus-remove-if): Allow hash table.
+ (gnus-remove-if-not): New function.
+
+ * gnus-art.el (gnus-mime-view-part-as-type)
+ * gnus-score.el (gnus-summary-score-effect)
+ * gnus-sum.el (gnus-read-move-group-name):
+ Replace remove-if-not with gnus-remove-if-not.
+
+ * gnus-group.el (gnus-group-completing-read):
+ Regard collection as a hash table if it is not a list.
+
+2010-10-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-render-td): Allow blank/missing <TD>s.
+
+ * shr.el: Document the table-rendering algorithm.
+
+ * gnus-html.el (gnus-html-schedule-image-fetching): Protect against
+ invalid URLs.
+
+ * shr.el (shr-tag-img): Shorten ALT texts and allow them to be
+ line-broken.
+ (shr-tag-img): Ignore image fetching errors.
+ (shr-overlays-in-region): Compute overlay positions correctly.
+
+ * mm-decode.el (mm-shr): Require shr.
+
+ * gnus-art.el (gnus-blocked-images): Move variable here.
+
+ * shr.el (shr-insert-table): Bind free variable.
+
+ * mm-decode.el (mm-shr): Bind shr-content-function.
+
+ * shr.el (shr-content-function): New variable.
+
+ * gnus-sum.el (gnus-article-sort-by-most-recent-date): New function,
+ added for symmetry.
+
+ * nnir.el (nnir-retrieve-headers): Don't bug out on invalid data.
+
+ * gnus-group.el (gnus-group-make-group): Doc fix.
+
+ * nnimap.el (nnimap-request-newgroups): Return success.
+
+ * shr.el (shr-find-elements): New function.
+ (shr-tag-table): Put all the images after the table.
+ (shr-tag-table): Really inhibit images inside the table.
+ (shr-collect-overlays): Copy over overlays from the TD elements to the
+ main document.
+
+ * mm-decode.el (mm-shr): Bind shr-blocked-images to
+ gnus-blocked-images.
+
+2010-10-05 Julien Danjou <julien@danjou.info>
+
+ * sieve-manage.el (sieve-sasl-auth): Use auth-source to authenticate.
+
+ * gnus-html.el (gnus-html-wash-images): Rescale image from cid too.
+ (gnus-html-maximum-image-size): Add this function.
+ (gnus-html-put-image): Use gnus-html-maximum-image-size.
+
+ * sieve-manage.el (sieve-manage-capability): Do not bug out when the
+ server-value of the capability is nil.
+
+2010-10-05 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-tag-em): Add <EM> tag.
+
+2010-10-05 Florian Ragwitz <rafl@debian.org> (tiny change)
+
+ * sieve-manage.el (sieve-manage-default-stream): Make default stream
+ customizable.
+
+ * gnus-html.el (gnus-html-wash-tags): Decode URL entities to avoid
+ handing broken links to browse-url.
+
+2010-10-05 Julien Danjou <julien@danjou.info>
+
+ * gnus-util.el (gnus-emacs-completing-read)
+ (gnus-iswitchb-completing-read): Use autoload rather than require.
+
+2010-10-05 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-util.el (gnus-completing-read-function): Exclude
+ gnus-icompleting-read and gnus-ido-completing-read from candidates for
+ XEmacs since iswitchb.el is very old and ido.el is unavailable in
+ XEmacs.
+
+ * gnus-registry.el (gnus-registry-install-nnregistry): Rewrite so as
+ not to use `delete-dups' that is unavailable in XEmacs 21.4.
+
+ * gnus-html.el: Don't require help-fns under XEmacs.
+ (gnus-html-schedule-image-fetching): Work for XEmacs.
+
+ * mm-decode.el (mm-shr): Decode contents by charset.
+
+2010-10-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-open-connection): Give an error if nnimap-stream is
+ unknown.
+
+ * shr.el (shr-tag-blockquote): Ensure paragraph after quote, too.
+ (shr-get-image-data): Ensure against the cache file missing.
+
+ * nnimap.el (nnimap-finish-retrieve-group-infos): Message while waiting
+ for data.
+
+ * spam-report.el (spam-report-url-ping-plain): Don't query about
+ killing the process.
+
+ * shr.el (shr-render-td): Protect against too-wide text.
+
+2010-10-04 Julien Danjou <julien@danjou.info>
+
+ * mml-smime.el (mml-smime-openssl-encrypt-query): Fix choices.
+ (mml-smime-openssl-sign-query): Fix gnus-completing-read call.
+
+ * gravatar.el (gravatar-retrieved): Kill buffer when gravatar has been
+ retrieved.
+
+2010-10-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (browse-url): Required.
+ (shr-ensure-paragraph): Don't insert a new newline after empty-ish
+ lines.
+ (shr-show-alt-text, shr-browse-image): New commands.
+ (shr-browse-url, shr-copy-url): New commands.
+
+ * gnus-sum.el (gnus-widen-article-window): New variable.
+ (gnus-summary-select-article-buffer): Use it.
+
+ * message.el (message-idna-to-ascii-rhs-1): Don't bug out on addresses
+ without @ signs.
+
+2010-10-04 Michael Welsh Duggan <md5i@md5i.com> (tiny change)
+
+ * nnir.el (nnir-run-imap): Remove spurious space in search string.
+
+2010-10-04 Julien Danjou <julien@danjou.info>
+
+ * gnus-util.el (gnus-emacs-completing-read): Mapcar collection to list,
+ for XEmacs.
+
+2010-10-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-salt.el: Remove all gnus-carpal stuff -- it's not useful.
+
+ * nnimap.el (nnimap-open-connection): Allow tls as a synonym for ssl.
+ (nnimap-close-server): Implement.
+
+ * shr.el (shr-ensure-paragraph): Fix the non-empty line case.
+ (shr-insert): Tweak line breaking.
+ (shr-insert): Handle <pre> better.
+ (shr-tag-li): Get <li> indentation right.
+ (shr-tag-li): Get <li> indentation even righter.
+ (shr-tag-blockquote): Ensure paragraph start.
+ (shr-make-table): Tweak table generation.
+ (shr-make-table): Fix typo.
+
+ * shr.el: Implement table rendering.
+
+2010-10-04 Julien Danjou <julien@danjou.info>
+
+ * gnus-html.el (gnus-html-put-image): Fix resize image code.
+
+2010-10-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-insert): Use string anchors instead of line anchors.
+
+2010-10-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el: Add headings.
+ (shr-ensure-paragraph): Actually work.
+ (shr-tag-li): Make <ul> prettier.
+ (shr-insert): Get white space at the beginning/end of elements right.
+ (shr-tag-p): Collapse subsequent <p>s.
+ (shr-ensure-paragraph): Don't insert double line feeds after blank
+ lines.
+ (shr-insert): \t is also space.
+ (shr-tag-s): Fix "s" tag name function.
+ (shr-tag-s): Fix face prop name.
+
+2010-10-03 Julien Danjou <julien@danjou.info>
+
+ * gnus-html.el (gnus-html-put-image): Use gnus-rescale-image.
+
+ * mm-view.el (gnus-window-inside-pixel-edges): Add autoload for
+ gnus-window-inside-pixel-edges.
+
+ * gnus-ems.el (gnus-window-inside-pixel-edges): Move from gnus-html to
+ gnus-ems.
+
+ * mm-view.el (mm-inline-image-emacs): Support image resizing.
+
+ * gnus-util.el (gnus-rescale-image): Add generic gnus-rescale-image
+ function.
+
+ * mm-decode.el (mm-inline-large-images): Enhance defcustom and add
+ resize choice.
+
+2010-10-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-tag-p): Don't insert newlines on empty tags at the
+ beginning of the buffer.
+
+ * gnus-sum.el (gnus-summary-select-article-buffer): Really select the
+ article buffer again.
+
+ * shr.el (shr-tag-p): Don't insert newlines at the start of the
+ buffer.
+
+ * mm-decode.el (mm-shr): Narrow before inserting, so that shr can know
+ when it's at the start of the buffer.
+
+ * shr.el (shr-tag-blockquote): Convert name.
+ (shr-rescale-image): Use the right image-size variant.
+
+ * gnus-sum.el (gnus-summary-select-article-buffer): If the article
+ buffer isn't shown, then select the current article first instead of
+ bugging out.
+ (gnus-summary-select-article-buffer): Show both the article and summary
+ buffers again.
+
+ * shr.el (shr-fontize-cont): Protect against regions with no text.
+ Rename tag functions to shr-tag-* for enhanced security.
+ (shr-tag-ul, shr-tag-ol, shr-tag-li, shr-tag-br): New functions.
+
+2010-10-03 Chong Yidong <cyd@stupidchicken.com>
+
+ * shr.el (shr-insert):
+ * pop3.el (pop3-movemail):
+ * gnus-html.el (gnus-html-wash-tags): Don't use plusp, as cl may not be
+ loaded.
+
+2010-10-03 Glenn Morris <rgm@gnu.org>
+
+ * nnmairix.el (nnmairix-replace-illegal-chars): Drop Emacs 20 code.
+
+ * smime.el (smime-cert-by-ldap-1): Drop Emacs 21 code.
+
+ * gnus-art.el (gnus-next-page-map): Drop Emacs 20 compat cruft.
+
+ * gmm-utils.el (gmm-write-region): Drop Emacs 20 compat cruft.
+
+ * gnus-util.el (gnus-make-local-hook): Simplify.
+
+2010-10-02 Julien Danjou <julien@danjou.info>
+
+ * gnus-util.el (gnus-iswitchb-completing-read): New function.
+ (gnus-ido-completing-read): New function.
+ (gnus-emacs-completing-read): New function.
+ (gnus-completing-read): Use gnus-completing-read-function.
+ Add gnus-completing-read-function.
+
+2010-10-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el (shr-insert-document): Autoload.
+ (shr-img): Be silent.
+ (shr-insert): Add a newline after every picture before text.
+ (shr-add-font): Use overlays for combining faces.
+ (shr-insert): Pass upwards the text start point.
+
+ * mm-decode.el (mm-text-html-renderer): Default to shr.el rendering, if
+ possible.
+ (mm-shr): New function.
+
+2010-10-02 Julien Danjou <julien@danjou.info>
+
+ * gnus-gravatar.el (gnus-gravatar-insert): Adjust character where we
+ should go backward.
+
+2010-10-02 Juanma Barranquero <lekktu@gmail.com>
+
+ * shr.el (shr): Fix typo in provide call.
+
+2010-10-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * shr.el: New file.
+
+ * gnus-html.el (gnus-html-schedule-image-fetching): Be silent.
+
+ * gnus-topic.el (gnus-topic-move-group): Fix the syntax of the
+ completing read.
+
+2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-start.el (gnus-check-bogus-newsgroups): Say how many groups
+ we're being queried about. Suggested by Dan Jacobson.
+
+ * nndoc.el (nndoc-type-alist): Do babyl before mime-parts. Suggested
+ by Jason Eisner.
+
+ * gnus-async.el (gnus-async-delete-prefetched-entry): Remove from hash
+ table, too. Suggested by Stefan Wiens.
+ (gnus-async-prefetched-article-entry): Use intern-soft to avoid growing
+ the table unnecessary. Suggested by Stefan Wiens.
+
+ * gnus-sum.el (gnus-summary-clear-local-variables): This is probably no
+ longer needed, and probably doesn't work either, as pointed out by
+ Stefan Wiens.
+ (gnus-summary-exit): Remove call to the clearing function.
+ (gnus-summary-exit-no-update): Ditto.
+
+ * gnus-art.el (gnus-summary-save-in-file): Use with-current-buffer
+ instead of gnus-eval-in-buffer-window to avoid popping up frames.
+ Reported by Stefan Monnier.
+ (gnus-summary-save-in-rmail): Ditto.
+
+ * gnus-sum.el (gnus-summary-select-article-buffer): Show only the
+ article buffer, instead of both the article buffer and the summary
+ buffer. Sort of suggested by Dan Jacobson.
+
+ * gnus-win.el (gnus-buffer-configuration): Add an only-article spec.
+
+ * nnmbox.el (nnmbox-read-mbox): Mark buffer for deletion on Gnus exit.
+ Suggested by Dan Jacobson.
+
+ * mm-encode.el (mm-content-transfer-encoding-defaults): Try to make the
+ documentation clearer.
+
+ * message.el (message-shorten-references): Comment on the number "21".
+ Suggested by Stefan Monnier.
+
+ * gnus-sum.el (gnus-summary-scroll-up): Add more documentation.
+ Suggested by Dan Jacobson.
+
+ * gnus.el (gnus-large-newsgroup): Mention
+ gnus-large-ephemeral-newsgroup. Suggested by Dan Jacobson.
+
+ * gnus-msg.el (gnus-summary-resend-message): When resending, don't
+ externalize attachments. Bug reported by Steve Wen.
+
+ * gnus.el (gnus-continuum-version): Make inactive, since it doesn't
+ really message anything to the user.
+
+ * nnmail.el (nnmail-article-group): Allow using the fancy split method
+ directly.
+
+ * nnimap.el (nnimap-request-group): Low higher than high to signal no
+ messages in empty groups.
+
+2010-10-01 Ted Zlatanov <tzz@lifelogs.com>
+
+ * nnimap.el (nnimap-request-group): Don't bug out when there's an empty
+ non-UIDNEXT group.
+
+2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-group.el (gnus-group-completing-read): Return the symbol name,
+ not the value from the collection.
+
+ * nnimap.el (nnimap-update-info): Ignore groups that have no UIDNEXT
+ values. This sometimes happens on some groups that have no info.
+ (nnimap-request-newgroups): New function.
+
+2010-10-01 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-registry.el (gnus-registry-install-nnregistry): Move the feature
+ check into `gnus-registry-initialize'.
+ (gnus-registry-initialize): Ditto.
+ Fix and extend header docs.
+
+2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-html.el (gnus-html-prefetch-images): Adjust regexp to avoid
+ regexp backtrace overflows.
+
+ * nnimap.el (nnimap-extend-tls-programs): Only extend those programs
+ for starttls that tls.el implements; i.e. openssl.
+
+2010-10-01 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gravatar.el: Don't load image.el that XEmacs doesn't provide.
+ (gravatar-create-image): New function that's an alias to
+ gnus-xmas-create-image, gnus-create-image, or create-image.
+ (gravatar-data->image): Use it.
+
+2010-09-30 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-registry.el (gnus-registry-install-nnregistry): New function to
+ install the nnregistry refer method.
+ (gnus-registry-install-hooks): Use it.
+ (gnus-registry-unfollowed-groups): Add nnmairix to the default
+ unfollowed groups.
+
+2010-09-30 Jose A. Ortega Ruiz <jao@gnu.org> (tiny change)
+
+ * gnus-sum.el (gnus-summary-show-thread): Skip past invisible text when
+ expanding threads.
+
+2010-09-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnir.el: Use the server names without suffixes (bug #7009).
+
+ * nnimap.el (nnimap-open-connection): Reinstate the auto-upgrade from
+ unencrypted to STARTTLS, if possible.
+
+2010-09-30 Teemu Likonen <tlikonen@iki.fi> (tiny change)
+
+ * message.el (message-ignored-supersedes-headers): Strip Injection-*
+ headers before superseding.
+
+2010-09-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnrss.el (nnrss-use-local): Add documentation.
+
+ * nnimap.el (nnimap-extend-tls-programs): New function.
+ (nnimap-open-connection): Use tls.el exclusively, and not starttls.el.
+ (nnimap-wait-for-connection): Accept the greeting from the stupid
+ output from openssl s_client -starttls, too.
+
+ * nnimap.el (nnimap-find-article-by-message-id): Really return the
+ article number.
+ (nnimap-split-fancy): New variable.
+ (nnimap-split-incoming-mail): Use it.
+
+ * nntp.el (nntp-server-list-active-group): Document.
+
+ * nnimap.el (nnimap-find-article-by-message-id): Use EXAMINE instead of
+ SELECT to get the message-id.
+
+ * mail-source.el (mail-sources): Removed webmail support.
+ (defvar): Ditto.
+ (mail-source-fetcher-alist): Ditto.
+ (mail-source-fetch-webmail): Removed.
+
+ * webmail.el: Removed -- doesn't seem relevant any more.
+
+ * gnus.el: Fix up make-obsolete-variable declarations throughout.
+
+ * nnimap.el (nnimap-request-accept-article): Get the Message-ID without
+ the \r.
+
+2010-09-30 Julien Danjou <julien@danjou.info>
+
+ * gnus-agent.el (gnus-agent-add-group): Fix call to
+ gnus-completing-read.
+
+2010-09-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nndoc.el (nndoc-retrieve-groups): New function.
+
+ * nnimap.el (nnimap-split-incoming-mail): If nnimap-split-methods is
+ `default', use nnmail-split-methods.
+ (nnimap-request-article): Downcase the NILs so that they are nil.
+
+ * gnus-sum.el (gnus-valid-move-group-p): Make sure that `group' is a
+ symbol.
+
+ * nnimap.el (nnimap-open-connection): Revert the auto-network->starttls
+ code, since if the user has requested network, that's what they ought
+ to get.
+ (nnimap-request-set-mark): Erase the buffer before issuing commands.
+ (nnimap-split-rule): Mark as obsolete.
+
+ * pop3.el (pop3-send-streaming-command, pop3-stream-length): New
+ variable.
+
+ * nnimap.el (nnimap-insert-partial-structure): Get the type from the
+ correct slot, too.
+
+2010-09-29 Julien Danjou <julien@danjou.info>
+
+ * gnus.el (gnus-local-domain): Declare variable obsolete.
+
+ * gnus-util.el (gnus-icompleting-read): Require iswitchb. Fix history
+ computing.
+ (gnus-ido-completing-read): Require ido.
+
+2010-09-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-registry.el: Don't prompt on load, which makes it impossible to
+ build Gnus.
+
+ * nnimap.el (nnimap-insert-partial-structure): Be way more permissive
+ when interpreting the structures.
+ (nnimap-request-accept-article): Add \r\n to the lines to make this
+ work with Cyrus.
+
+ * nndraft.el (nndraft-request-expire-articles): Use the group name
+ instead if "nndraft". Fix found by Nils Ackermann.
+
+2010-09-29 Ludovic Courtes <ludo@gnu.org>
+
+ * nnregistry.el: Added.
+
2010-09-29 Stefan Monnier <monnier@iro.umontreal.ca>
* nnmail.el (group, group-art-list, group-art):
@@ -13,6 +901,13 @@
* nnrss.el (nnrss-read-server-data, nnrss-read-group-data): Use `load'
rather than `insert-file-contents' and `eval-region'.
+2010-09-29 Julien Danjou <julien@danjou.info>
+
+ * gnus-gravatar.el (gnus-gravatar-properties): Add this properties in
+ replacement of `gnus-gravatar-relief' to mimic
+ `gnus-faces-properties-alist'.
+ Add :version property.
+
2010-09-28 Katsumi Yamaoka <yamaoka@jpl.org>
* mail-source.el (mail-source-report-new-mail)
@@ -32,6 +927,82 @@
* gnus-gravatar.el (gnus-gravatar-insert): Search backward for
real-name, and then for mail address rather than doing : or , search.
+2010-09-27 Julien Danjou <julien@danjou.info>
+
+ * gnus-srvr.el (gnus-server-add-server): Use gnus-completing-read.
+ (gnus-server-goto-server): Use gnus-completing-read.
+
+ * mm-view.el (mm-view-pkcs7-decrypt): Use gnus-completing-read.
+
+ * mm-util.el (defalias): Use gnus-completing-read.
+ (mm-codepage-setup): Use gnus-completing-read.
+
+ * smime.el (smime-sign-buffer): Use gnus-completing-read.
+ (smime-decrypt-buffer): Use gnus-completing-read.
+
+ * mml-smime.el (mml-smime-openssl-sign-query): Use gnus-completing-read.
+
+ * mml.el (mml-minibuffer-read-type): Use gnus-completing-read.
+ (mml-minibuffer-read-disposition): Use gnus-completing-read.
+ (mml-insert-multipart): Use gnus-completing-read.
+
+ * gnus-msg.el (gnus-summary-yank-message): Use gnus-completing-read.
+
+ * gnus-int.el (gnus-start-news-server): Use gnus-completing-read.
+
+ * mm-decode.el (mm-interactively-view-part): Use gnus-completing-read.
+
+ * gnus-dired.el (gnus-dired-attach): Use gnus-completing-read.
+
+ * gnus.el (gnus-read-method): Use gnus-completing-read.
+
+ * gnus-bookmark.el (gnus-bookmark-jump): Use gnus-completing-read.
+
+ * gnus-art.el (gnus-mime-view-part-as-type): Use gnus-completing-read.
+ (gnus-mime-action-on-part): Use gnus-completing-read.
+ (gnus-article-encrypt-body): Use gnus-completing-read.
+
+ * gnus-topic.el (gnus-topic-jump-to-topic): Use gnus-completing-read.
+ (gnus-topic-move-matching): Use gnus-completing-read.
+ (gnus-topic-copy-matching): Use gnus-completing-read.
+ (gnus-topic-sort-topics): Use gnus-completing-read.
+ (gnus-topic-move): Use gnus-completing-read.
+
+ * gnus-agent.el (gnus-agent-read-group): Remove prompt computing.
+ (gnus-agent-add-group): Use gnus-completing-read.
+
+ * nnmairix.el (nnmairix-create-server-and-default-group): Use
+ gnus-completing-read.
+ (nnmairix-update-groups): Use gnus-completing-read.
+ (nnmairix-get-server): Use gnus-completing-read.
+ (nnmairix-backend-to-server): Use gnus-completing-read.
+ (nnmairix-goto-original-article): Use gnus-completing-read.
+ (nnmairix-get-group-from-file-path): Use gnus-completing-read.
+
+ * nnrss.el (nnrss-find-rss-via-syndic8): Use gnus-completing-read.
+
+ * gnus-group.el (gnus-group-completing-read): Use gnus-completing-read.
+ (gnus-group-make-useful-group): Use gnus-completing-read.
+ (gnus-group-make-web-group): Use gnus-completing-read.
+ (gnus-group-add-to-virtual): Use gnus-completing-read.
+ (gnus-group-browse-foreign-server): Use gnus-completing-read.
+
+ * gnus-sum.el (gnus-summary-goto-article): Use gnus-completing-read.
+ (gnus-summary-limit-to-extra): Use gnus-completing-read.
+ (gnus-summary-execute-command): Use gnus-completing-read.
+ (gnus-summary-respool-article): Use gnus-completing-read.
+ (gnus-read-move-group-name): Use gnus-completing-read.
+
+ * gnus-score.el (gnus-summary-increase-score): Use gnus-completing-read.
+ (gnus-summary-score-effect): Use gnus-completing-read.
+
+ * gnus-registry.el (gnus-registry-read-mark): Use gnus-completing-read.
+
+ * gnus-util.el (gnus-completing-read): Use gnus-use-ido to apply the
+ right completing-read function.
+ (gnus-use-ido): New variable
+ (gnus-completing-read-with-default): Remove.
+
2010-09-28 Katsumi Yamaoka <yamaoka@jpl.org>
* nnimap.el (auth-source-forget-user-or-password)
@@ -100,11 +1071,6 @@
discover we're on a STARTTLS-capable server, then open a STARTTLS
connection instead.
-2010-09-27 Florian Ragwitz <rafl@debian.org> (tiny change)
-
- * sieve-manage.el (sieve-manage-default-stream): Make default stream
- customizable.
-
2010-09-27 Lars Magne Ingebrigtsen <larsi@gnus.org>
* nnimap.el (utf7): Required.
@@ -125,11 +1091,6 @@
* gnus-art.el (gnus-mime-delete-part): Fix Lisp type of byte(s).
-2010-09-26 Florian Ragwitz <rafl@debian.org> (tiny change)
-
- * gnus-html.el (gnus-html-wash-tags): Decode URL entities to avoid
- handing broken links to browse-url.
-
2010-09-26 Lars Magne Ingebrigtsen <larsi@gnus.org>
* nndoc.el (nndoc-request-list): Return success always.
@@ -1051,8 +2012,6 @@
* nnimap.el (nnimap-open-connection): If the user doesn't have a
/etc/services, supply some sensible port defaults.
- * dgnushack.el: Define netrc-credentials.
-
2010-09-17 Julien Danjou <julien@danjou.info>
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2
index 140df493b7c..89405278bea 100644
--- a/lisp/gnus/ChangeLog.2
+++ b/lisp/gnus/ChangeLog.2
@@ -5550,7 +5550,7 @@
* gnus-audio.el (gnus-audio-au-player): Use executable-find.
-2003-01-13 Jhair Tocancipa Triana <jhair_tocancipa@@gmx.net>
+2003-01-13 Jhair Tocancipa Triana <jhair_tocancipa@gmx.net>
* gnus-audio.el (gnus-audio-au-player, gnus-audio-wav-player): Use
/usr/bin/play as default player.
@@ -12167,7 +12167,7 @@
2001-12-05 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
* gnus-group.el (gnus-group-find-new-groups): Fix doc.
- From: Stefan Monnier <monnier@cs.yale.edu>
+ From: Stefan Monnier <monnier@cs.yale.edu>
2001-12-05 Katsumi Yamaoka <yamaoka@jpl.org>
@@ -14682,7 +14682,7 @@
* gnus-eform.el (gnus-edit-form-done): Return nil if end-of-file.
2001-07-16 12:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
- From: Stefan Monnier <monnier@cs.yale.edu>
+ From: Stefan Monnier <monnier@cs.yale.edu>
* message.el (message-mode): Use define-derived-mode.
(message-tab): message-completion-alist.
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index caead4fabfa..20e4af189d9 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -29,6 +29,14 @@
;; See the auth.info Info documentation for details.
+;; TODO:
+
+;; - never decode the backend file unless it's necessary
+;; - a more generic way to match backends and search backend contents
+;; - absorb netrc.el and simplify it
+;; - protect passwords better
+;; - allow creating and changing netrc lines (not files) e.g. change a password
+
;;; Code:
(require 'gnus-util)
@@ -49,29 +57,29 @@
:group 'gnus)
(defcustom auth-source-protocols '((imap "imap" "imaps" "143" "993")
- (pop3 "pop3" "pop" "pop3s" "110" "995")
- (ssh "ssh" "22")
- (sftp "sftp" "115")
- (smtp "smtp" "25"))
+ (pop3 "pop3" "pop" "pop3s" "110" "995")
+ (ssh "ssh" "22")
+ (sftp "sftp" "115")
+ (smtp "smtp" "25"))
"List of authentication protocols and their names"
:group 'auth-source
:version "23.2" ;; No Gnus
:type '(repeat :tag "Authentication Protocols"
- (cons :tag "Protocol Entry"
- (symbol :tag "Protocol")
- (repeat :tag "Names"
- (string :tag "Name")))))
+ (cons :tag "Protocol Entry"
+ (symbol :tag "Protocol")
+ (repeat :tag "Names"
+ (string :tag "Name")))))
;;; generate all the protocols in a format Customize can use
;;; TODO: generate on the fly from auth-source-protocols
(defconst auth-source-protocols-customize
(mapcar (lambda (a)
- (let ((p (car-safe a)))
- (list 'const
- :tag (upcase (symbol-name p))
- p)))
- auth-source-protocols))
+ (let ((p (car-safe a)))
+ (list 'const
+ :tag (upcase (symbol-name p))
+ p)))
+ auth-source-protocols))
(defvar auth-source-cache (make-hash-table :test 'equal)
"Cache for auth-source data")
@@ -94,11 +102,11 @@ If the value is a function, debug messages are logged by calling
that function using the same arguments as `message'."
:group 'auth-source
:version "23.2" ;; No Gnus
- :type `(choice
- :tag "auth-source debugging mode"
- (const :tag "Log using `message' to the *Messages* buffer" t)
- (function :tag "Function that takes arguments like `message'")
- (const :tag "Don't log anything" nil)))
+ :type `(choice
+ :tag "auth-source debugging mode"
+ (const :tag "Log using `message' to the *Messages* buffer" t)
+ (function :tag "Function that takes arguments like `message'")
+ (const :tag "Don't log anything" nil)))
(defcustom auth-source-hide-passwords t
"Whether auth-source should hide passwords in log messages.
@@ -108,7 +116,7 @@ Only relevant if `auth-source-debug' is not nil."
:type `boolean)
(defcustom auth-sources '((:source "~/.authinfo.gpg")
- (:source "~/.authinfo"))
+ (:source "~/.authinfo"))
"List of authentication sources.
The default will get login and password information from a .gpg
@@ -122,34 +130,34 @@ can get pretty complex."
:group 'auth-source
:version "23.2" ;; No Gnus
:type `(repeat :tag "Authentication Sources"
- (list :tag "Source definition"
- (const :format "" :value :source)
- (choice :tag "Authentication backend choice"
- (string :tag "Authentication Source (file)")
- (list :tag "secrets.el (Secret Service API/KWallet/GNOME Keyring)"
+ (list :tag "Source definition"
+ (const :format "" :value :source)
+ (choice :tag "Authentication backend choice"
+ (string :tag "Authentication Source (file)")
+ (list :tag "secrets.el (Secret Service API/KWallet/GNOME Keyring)"
(const :format "" :value :secrets)
(choice :tag "Collection to use"
(string :tag "Collection name")
(const :tag "Default" 'default)
(const :tag "Login" "login")
(const :tag "Temporary" "session"))))
- (repeat :tag "Extra Parameters" :inline t
- (choice :tag "Extra parameter"
- (list :tag "Host (omit to match as a fallback)"
- (const :format "" :value :host)
- (choice :tag "Host (machine) choice"
- (const :tag "Any" t)
- (regexp :tag "Host (machine) regular expression")))
- (list :tag "Protocol (omit to match as a fallback)"
- (const :format "" :value :protocol)
- (choice :tag "Protocol"
- (const :tag "Any" t)
- ,@auth-source-protocols-customize))
- (list :tag "User (omit to match as a fallback)" :inline t
- (const :format "" :value :user)
- (choice :tag "Personality or username"
- (const :tag "Any" t)
- (string :tag "Specific user name"))))))))
+ (repeat :tag "Extra Parameters" :inline t
+ (choice :tag "Extra parameter"
+ (list :tag "Host (omit to match as a fallback)"
+ (const :format "" :value :host)
+ (choice :tag "Host (machine) choice"
+ (const :tag "Any" t)
+ (regexp :tag "Host (machine) regular expression")))
+ (list :tag "Protocol (omit to match as a fallback)"
+ (const :format "" :value :protocol)
+ (choice :tag "Protocol"
+ (const :tag "Any" t)
+ ,@auth-source-protocols-customize))
+ (list :tag "User (omit to match as a fallback)" :inline t
+ (const :format "" :value :user)
+ (choice :tag "Personality or username"
+ (const :tag "Any" t)
+ (string :tag "Specific user name"))))))))
;; temp for debugging
;; (unintern 'auth-source-protocols)
@@ -176,21 +184,21 @@ can get pretty complex."
;; we also check the value
(when auth-source-debug
(let ((logger (if (functionp auth-source-debug)
- auth-source-debug
- 'message)))
+ auth-source-debug
+ 'message)))
(apply logger msg))))
;; (auth-source-pick nil :host "any" :protocol 'imap :user "joe")
;; (auth-source-pick t :host "any" :protocol 'imap :user "joe")
;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe")
-;; (:source (:secrets "session") :host t :protocol t :user "joe")
-;; (:source (:secrets "login") :host t :protocol t)
-;; (:source "~/.authinfo.gpg" :host t :protocol t)))
+;; (:source (:secrets "session") :host t :protocol t :user "joe")
+;; (:source (:secrets "login") :host t :protocol t)
+;; (:source "~/.authinfo.gpg" :host t :protocol t)))
;; (setq auth-sources '((:source (:secrets default) :host t :protocol t :user "joe")
-;; (:source (:secrets "session") :host t :protocol t :user "joe")
-;; (:source (:secrets "login") :host t :protocol t)
-;; ))
+;; (:source (:secrets "session") :host t :protocol t :user "joe")
+;; (:source (:secrets "login") :host t :protocol t)
+;; ))
;; (setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t)))
@@ -200,11 +208,11 @@ If it is a Secret Service API, return the collection name, otherwise
the file name."
(let ((source (plist-get entry :source)))
(if (stringp source)
- source
+ source
;; Secret Service API.
(setq source (plist-get source :secrets))
(when (eq source 'default)
- (setq source (or (secrets-get-alias "default") "login")))
+ (setq source (or (secrets-get-alias "default") "login")))
(or source "session"))))
(defun auth-source-pick (&rest spec)
@@ -214,124 +222,127 @@ Common keys are :host, :protocol, and :user. A value of t in
SPEC means to always succeed in the match. A string value is
matched as a regex."
(let ((keys (loop for i below (length spec) by 2 collect (nth i spec)))
- choices)
+ choices)
(dolist (choice (copy-tree auth-sources) choices)
(let ((source (plist-get choice :source))
- (match t))
- (when
- (and
- ;; Check existence of source.
- (if (consp source)
- ;; Secret Service API.
- (member (auth-get-source choice) (secrets-list-collections))
- ;; authinfo file.
- (file-exists-p source))
-
- ;; Check keywords.
- (dolist (k keys match)
- (let* ((v (plist-get spec k))
- (choicev (if (plist-member choice k)
- (plist-get choice k) t)))
- (setq match
- (and match
- (or
- ;; source always matches spec key
- (eq t choicev)
- ;; source key gives regex to match against spec
- (and (stringp choicev) (string-match choicev v))
- ;; source key gives symbol to match against spec
- (and (symbolp choicev) (eq choicev v))))))))
-
- (add-to-list 'choices choice 'append))))))
+ (match t))
+ (when
+ (and
+ ;; Check existence of source.
+ (if (consp source)
+ ;; Secret Service API.
+ (member (auth-get-source choice) (secrets-list-collections))
+ ;; authinfo file.
+ (file-exists-p source))
+
+ ;; Check keywords.
+ (dolist (k keys match)
+ (let* ((v (plist-get spec k))
+ (choicev (if (plist-member choice k)
+ (plist-get choice k) t)))
+ (setq match
+ (and match
+ (or
+ ;; source always matches spec key
+ (eq t choicev)
+ ;; source key gives regex to match against spec
+ (and (stringp choicev) (string-match choicev v))
+ ;; source key gives symbol to match against spec
+ (and (symbolp choicev) (eq choicev v))))))))
+
+ (add-to-list 'choices choice 'append))))))
(defun auth-source-retrieve (mode entry &rest spec)
"Retrieve MODE credentials according to SPEC from ENTRY."
(catch 'no-password
(let ((host (plist-get spec :host))
- (user (plist-get spec :user))
- (prot (plist-get spec :protocol))
- (source (plist-get entry :source))
- result)
+ (user (plist-get spec :user))
+ (prot (plist-get spec :protocol))
+ (source (plist-get entry :source))
+ result)
(cond
;; Secret Service API.
((consp source)
- (let ((coll (auth-get-source entry))
- item)
- ;; Loop over candidates with a matching host attribute.
- (dolist (elt (secrets-search-items coll :host host) item)
- (when (and (or (not user)
- (string-equal
- user (secrets-get-attribute coll elt :user)))
- (or (not prot)
- (string-equal
- prot (secrets-get-attribute coll elt :protocol))))
- (setq item elt)
- (return elt)))
- ;; Compose result.
- (when item
- (setq result
- (mapcar (lambda (m)
- (if (string-equal "password" m)
- (or (secrets-get-secret coll item)
- ;; When we do not find a password,
- ;; we return nil anyway.
- (throw 'no-password nil))
- (or (secrets-get-attribute coll item :user)
- user)))
- (if (consp mode) mode (list mode)))))
- (if (consp mode) result (car result))))
+ (let ((coll (auth-get-source entry))
+ item)
+ ;; Loop over candidates with a matching host attribute.
+ (dolist (elt (secrets-search-items coll :host host) item)
+ (when (and (or (not user)
+ (string-equal
+ user (secrets-get-attribute coll elt :user)))
+ (or (not prot)
+ (string-equal
+ prot (secrets-get-attribute coll elt :protocol))))
+ (setq item elt)
+ (return elt)))
+ ;; Compose result.
+ (when item
+ (setq result
+ (mapcar (lambda (m)
+ (if (string-equal "password" m)
+ (or (secrets-get-secret coll item)
+ ;; When we do not find a password,
+ ;; we return nil anyway.
+ (throw 'no-password nil))
+ (or (secrets-get-attribute coll item :user)
+ user)))
+ (if (consp mode) mode (list mode)))))
+ (if (consp mode) result (car result))))
;; Anything else is netrc.
(t
- (let ((search (list source (list host) (list (format "%s" prot))
- (auth-source-protocol-defaults prot))))
- (setq result
- (mapcar (lambda (m)
- (if (string-equal "password" m)
- (or (apply
- 'netrc-machine-user-or-password m search)
- ;; When we do not find a password, we
- ;; return nil anyway.
- (throw 'no-password nil))
- (or (apply
- 'netrc-machine-user-or-password m search)
- user)))
- (if (consp mode) mode (list mode)))))
- (if (consp mode) result (car result)))))))
+ (let ((search (list source (list host) (list (format "%s" prot))
+ (auth-source-protocol-defaults prot))))
+ (setq result
+ (mapcar (lambda (m)
+ (if (string-equal "password" m)
+ (or (apply
+ 'netrc-machine-user-or-password m search)
+ ;; When we do not find a password, we
+ ;; return nil anyway.
+ (throw 'no-password nil))
+ (or (apply
+ 'netrc-machine-user-or-password m search)
+ user)))
+ (if (consp mode) mode (list mode)))))
+ (if (consp mode) result (car result)))))))
(defun auth-source-create (mode entry &rest spec)
"Create interactively credentials according to SPEC in ENTRY.
Return structure as specified by MODE."
(let* ((host (plist-get spec :host))
- (user (plist-get spec :user))
- (prot (plist-get spec :protocol))
- (source (plist-get entry :source))
- (name (concat (if user (format "%s@" user))
- host
- (if prot (format ":%s" prot))))
- result)
+ (user (plist-get spec :user))
+ (prot (plist-get spec :protocol))
+ (source (plist-get entry :source))
+ (name (concat (if user (format "%s@" user))
+ host
+ (if prot (format ":%s" prot))))
+ result)
(setq result
- (mapcar
- (lambda (m)
- (cons
- m
- (cond
- ((equal "password" m)
- (let ((passwd (read-passwd
- (format "Password for %s on %s: " prot host))))
- (cond
- ;; Secret Service API.
- ((consp source)
- (apply
- 'secrets-create-item
- (auth-get-source entry) name passwd spec))
- (t)) ;; netrc not implemented yes.
- passwd))
- ((equal "login" m)
- (or user
- (read-string (format "User name for %s on %s: " prot host))))
- (t
- "unknownuser"))))
- (if (consp mode) mode (list mode))))
+ (mapcar
+ (lambda (m)
+ (cons
+ m
+ (cond
+ ((equal "password" m)
+ (let ((passwd (read-passwd
+ (format "Password for %s on %s: " prot host))))
+ (cond
+ ;; Secret Service API.
+ ((consp source)
+ (apply
+ 'secrets-create-item
+ (auth-get-source entry) name passwd spec))
+ (t)) ;; netrc not implemented yes.
+ passwd))
+ ((equal "login" m)
+ (or user
+ (read-string
+ (format "User name for %s on %s (default %s): " prot host
+ (user-login-name))
+ nil nil (user-login-name))))
+ (t
+ "unknownuser"))))
+ (if (consp mode) mode (list mode))))
;; Allow the source to save the data.
(cond
((consp source)
@@ -340,33 +351,33 @@ Return structure as specified by MODE."
(t
;; netrc interface.
(when (y-or-n-p (format "Do you want to save this password in %s? "
- source))
- (netrc-store-data source host prot
- (or user (cdr (assoc "login" result)))
- (cdr (assoc "password" result))))))
+ source))
+ (netrc-store-data source host prot
+ (or user (cdr (assoc "login" result)))
+ (cdr (assoc "password" result))))))
(if (consp mode)
- (mapcar #'cdr result)
+ (mapcar #'cdr result)
(cdar result))))
(defun auth-source-delete (entry &rest spec)
"Delete credentials according to SPEC in ENTRY."
(let ((host (plist-get spec :host))
- (user (plist-get spec :user))
- (prot (plist-get spec :protocol))
- (source (plist-get entry :source)))
+ (user (plist-get spec :user))
+ (prot (plist-get spec :protocol))
+ (source (plist-get entry :source)))
(cond
;; Secret Service API.
((consp source)
(let ((coll (auth-get-source entry)))
- ;; Loop over candidates with a matching host attribute.
- (dolist (elt (secrets-search-items coll :host host))
- (when (and (or (not user)
- (string-equal
- user (secrets-get-attribute coll elt :user)))
- (or (not prot)
- (string-equal
- prot (secrets-get-attribute coll elt :protocol))))
- (secrets-delete-item coll elt)))))
+ ;; Loop over candidates with a matching host attribute.
+ (dolist (elt (secrets-search-items coll :host host))
+ (when (and (or (not user)
+ (string-equal
+ user (secrets-get-attribute coll elt :user)))
+ (or (not prot)
+ (string-equal
+ prot (secrets-get-attribute coll elt :protocol))))
+ (secrets-delete-item coll elt)))))
(t)))) ;; netrc not implemented yes.
(defun auth-source-forget-user-or-password
@@ -416,57 +427,57 @@ MODE can be \"login\" or \"password\"."
"auth-source-user-or-password: get %s for %s (%s) + user=%s"
mode host protocol username)
(let* ((listy (listp mode))
- (mode (if listy mode (list mode)))
- (cname (if username
- (format "%s %s:%s %s" mode host protocol username)
- (format "%s %s:%s" mode host protocol)))
- (search (list :host host :protocol protocol))
- (search (if username (append search (list :user username)) search))
- (found (if (not delete-existing)
- (gethash cname auth-source-cache)
- (remhash cname auth-source-cache)
- nil)))
+ (mode (if listy mode (list mode)))
+ (cname (if username
+ (format "%s %s:%s %s" mode host protocol username)
+ (format "%s %s:%s" mode host protocol)))
+ (search (list :host host :protocol protocol))
+ (search (if username (append search (list :user username)) search))
+ (found (if (not delete-existing)
+ (gethash cname auth-source-cache)
+ (remhash cname auth-source-cache)
+ nil)))
(if found
- (progn
- (auth-source-do-debug
- "auth-source-user-or-password: cached %s=%s for %s (%s) + %s"
- mode
- ;; don't show the password
- (if (and (member "password" mode) auth-source-hide-passwords)
- "SECRET"
- found)
- host protocol username)
- found) ; return the found data
+ (progn
+ (auth-source-do-debug
+ "auth-source-user-or-password: cached %s=%s for %s (%s) + %s"
+ mode
+ ;; don't show the password
+ (if (and (member "password" mode) auth-source-hide-passwords)
+ "SECRET"
+ found)
+ host protocol username)
+ found) ; return the found data
;; else, if not found
(let ((choices (apply 'auth-source-pick search)))
- (dolist (choice choices)
- (if delete-existing
- (apply 'auth-source-delete choice search)
- (setq found (apply 'auth-source-retrieve mode choice search)))
- (and found (return found)))
-
- ;; We haven't found something, so we will create it interactively.
- (when (and (not found) create-missing)
- (setq found (apply 'auth-source-create
- mode (if choices
- (car choices)
- (car auth-sources))
- search)))
-
- ;; Cache the result.
- (when found
- (auth-source-do-debug
- "auth-source-user-or-password: found %s=%s for %s (%s) + %s"
- mode
- ;; don't show the password
- (if (and (member "password" mode) auth-source-hide-passwords)
- "SECRET" found)
- host protocol username)
- (setq found (if listy found (car-safe found)))
- (when auth-source-do-cache
- (puthash cname found auth-source-cache)))
-
- found))))
+ (dolist (choice choices)
+ (if delete-existing
+ (apply 'auth-source-delete choice search)
+ (setq found (apply 'auth-source-retrieve mode choice search)))
+ (and found (return found)))
+
+ ;; We haven't found something, so we will create it interactively.
+ (when (and (not found) create-missing)
+ (setq found (apply 'auth-source-create
+ mode (if choices
+ (car choices)
+ (car auth-sources))
+ search)))
+
+ ;; Cache the result.
+ (when found
+ (auth-source-do-debug
+ "auth-source-user-or-password: found %s=%s for %s (%s) + %s"
+ mode
+ ;; don't show the password
+ (if (and (member "password" mode) auth-source-hide-passwords)
+ "SECRET" found)
+ host protocol username)
+ (setq found (if listy found (car-safe found)))
+ (when auth-source-do-cache
+ (puthash cname found auth-source-cache)))
+
+ found))))
(defun auth-source-protocol-defaults (protocol)
"Return a list of default ports and names for PROTOCOL."
diff --git a/lisp/gnus/ecomplete.el b/lisp/gnus/ecomplete.el
index 1e9769f757d..33d2ddd6a71 100644
--- a/lisp/gnus/ecomplete.el
+++ b/lisp/gnus/ecomplete.el
@@ -147,7 +147,7 @@
(save-restriction
(narrow-to-region (point) (point-at-eol))
(while (not (eobp))
- ;; Put the 'region face on any charactes on this line that
+ ;; Put the 'region face on any characters on this line that
;; aren't already highlighted.
(unless (get-text-property (point) 'face)
(put-text-property (point) (1+ (point)) 'face 'highlight))
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index b76db479dfb..e16fc5efa63 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -1,6 +1,7 @@
;;; gmm-utils.el --- Utility functions for Gnus, Message and MML
-;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Author: Reiner Steib <reiner.steib@gmx.de>
;; Keywords: news
@@ -411,12 +412,9 @@ If mode is nil, use `major-mode' of the current buffer."
In XEmacs, the seventh argument of `write-region' specifies the
coding-system."
- (if (and mustbenew
- (or (featurep 'xemacs)
- (= emacs-major-version 20)))
+ (if (and mustbenew (featurep 'xemacs))
(if (file-exists-p filename)
- (signal 'file-already-exists
- (list "File exists" filename))
+ (signal 'file-already-exists (list "File exists" filename))
(write-region start end filename append visit lockname))
(write-region start end filename append visit lockname mustbenew)))
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 4788deba5da..04bdb3be626 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -459,10 +459,7 @@ manipulated as follows:
(let ((def (or (gnus-group-group-name) gnus-newsgroup-name)))
(when def
(setq def (gnus-group-decoded-name def)))
- (gnus-group-completing-read (if def
- (concat "Group Name (" def "): ")
- "Group Name: ")
- nil nil t nil nil def)))
+ (gnus-group-completing-read nil nil t nil nil def)))
;;; Fetching setup functions.
@@ -816,11 +813,11 @@ be a select method."
(interactive
(list
(intern
- (completing-read
- "Add to category: "
- (mapcar (lambda (cat) (list (symbol-name (car cat))))
+ (gnus-completing-read
+ "Add to category"
+ (mapcar (lambda (cat) (symbol-name (car cat)))
gnus-category-alist)
- nil t))
+ t))
current-prefix-arg))
(let ((cat (assq category gnus-category-alist))
c groups)
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 6e5cd4d8d13..32411066da1 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(eval-when-compile
@@ -725,7 +725,7 @@ Each element is a regular expression."
:group 'gnus-article-various)
(make-obsolete-variable 'gnus-article-hide-pgp-hook nil
- "Gnus 5.10 (Emacs-22.1)")
+ "Gnus 5.10 (Emacs 22.1)")
(defface gnus-button
'((t (:weight bold)))
@@ -1412,7 +1412,7 @@ predicate. See Info node `(gnus)Customizing Articles'."
:type gnus-article-treat-custom)
(make-obsolete-variable 'gnus-treat-display-xface
- 'gnus-treat-display-x-face "22.1")
+ 'gnus-treat-display-x-face "Emacs 22.1")
(defcustom gnus-treat-display-x-face
(and (not noninteractive)
@@ -1639,6 +1639,12 @@ This requires GNU Libidn, and by default only enabled if it is found."
:group 'gnus-article
:type 'boolean)
+(defcustom gnus-blocked-images "."
+ "Images that have URLs matching this regexp will be blocked."
+ :version "24.1"
+ :group 'gnus-art
+ :type 'regexp)
+
;;; Internal variables
(defvar gnus-english-month-names
@@ -3958,7 +3964,7 @@ Directory to save to is default to `gnus-article-save-directory'."
"Save %s in rmail file" filename
gnus-rmail-save-name gnus-newsgroup-name
gnus-current-headers 'gnus-newsgroup-last-rmail))
- (gnus-eval-in-buffer-window gnus-save-article-buffer
+ (with-current-buffer gnus-save-article-buffer
(save-excursion
(save-restriction
(widen)
@@ -3976,7 +3982,7 @@ Directory to save to is default to `gnus-article-save-directory'."
"Save %s in Unix mail file" filename
gnus-mail-save-name gnus-newsgroup-name
gnus-current-headers 'gnus-newsgroup-last-mail))
- (gnus-eval-in-buffer-window gnus-save-article-buffer
+ (with-current-buffer gnus-save-article-buffer
(save-excursion
(save-restriction
(widen)
@@ -3997,7 +4003,7 @@ Directory to save to is default to `gnus-article-save-directory'."
"Save %s in file" filename
gnus-file-save-name gnus-newsgroup-name
gnus-current-headers 'gnus-newsgroup-last-file))
- (gnus-eval-in-buffer-window gnus-save-article-buffer
+ (with-current-buffer gnus-save-article-buffer
(save-excursion
(save-restriction
(widen)
@@ -4029,7 +4035,7 @@ The directory to save in defaults to `gnus-article-save-directory'."
"Save %s body in file" filename
gnus-file-save-name gnus-newsgroup-name
gnus-current-headers 'gnus-newsgroup-last-file))
- (gnus-eval-in-buffer-window gnus-save-article-buffer
+ (with-current-buffer gnus-save-article-buffer
(save-excursion
(save-restriction
(widen)
@@ -4108,7 +4114,7 @@ and the raw article including all headers will be piped."
(if default
(setq command default)
(error "A command is required")))
- (gnus-eval-in-buffer-window save-buffer
+ (with-current-buffer save-buffer
(save-restriction
(widen)
(shell-command-on-region (point-min) (point-max) command nil)))
@@ -4468,7 +4474,6 @@ commands:
;; face.
(set (make-local-variable 'nobreak-char-display) nil)
(setq cursor-in-non-selected-windows nil)
- (setq truncate-lines gnus-article-truncate-lines)
(gnus-set-default-directory)
(buffer-disable-undo)
(setq buffer-read-only t
@@ -4528,9 +4533,11 @@ Internal variable.")
(setq gnus-button-marker-list nil)
(unless (eq major-mode 'gnus-article-mode)
(gnus-article-mode))
+ (setq truncate-lines gnus-article-truncate-lines)
(current-buffer))
(with-current-buffer (gnus-get-buffer-create name)
(gnus-article-mode)
+ (setq truncate-lines gnus-article-truncate-lines)
(make-local-variable 'gnus-summary-buffer)
(setq gnus-summary-buffer
(gnus-summary-buffer-name gnus-newsgroup-name))
@@ -5131,11 +5138,12 @@ available media-types."
(unless mime-type
(setq mime-type
(let ((default (gnus-mime-view-part-as-type-internal)))
- (completing-read
- (format "View as MIME type (default %s): "
- (car default))
- (mapcar #'list (mailcap-mime-types))
- pred nil nil nil
+ (gnus-completing-read
+ "View as MIME type"
+ (if pred
+ (gnus-remove-if-not pred (mailcap-mime-types))
+ (mailcap-mime-types))
+ nil nil nil
(car default)))))
(gnus-article-check-buffer)
(let ((handle (get-text-property (point) 'gnus-data)))
@@ -5374,7 +5382,7 @@ specified charset."
(mm-enable-external t))
(if (not (stringp method))
(gnus-mime-view-part-as-type
- nil (lambda (types) (stringp (mailcap-mime-info (car types)))))
+ nil (lambda (type) (stringp (mailcap-mime-info type))))
(when handle
(if (mm-handle-undisplayer handle)
(mm-remove-part handle)
@@ -5395,7 +5403,7 @@ If no internal viewer is available, use an external viewer."
(inhibit-read-only t))
(if (not (mm-inlinable-p handle))
(gnus-mime-view-part-as-type
- nil (lambda (types) (mm-inlinable-p handle (car types))))
+ nil (lambda (type) (mm-inlinable-p handle type)))
(when handle
(if (mm-handle-undisplayer handle)
(mm-remove-part handle)
@@ -5404,7 +5412,7 @@ If no internal viewer is available, use an external viewer."
(defun gnus-mime-action-on-part (&optional action)
"Do something with the MIME attachment at \(point\)."
(interactive
- (list (completing-read "Action: " gnus-mime-action-alist nil t)))
+ (list (gnus-completing-read "Action" (mapcar 'car gnus-mime-action-alist) t)))
(gnus-article-check-buffer)
(let ((action-pair (assoc action gnus-mime-action-alist)))
(if action-pair
@@ -8172,9 +8180,6 @@ url is put as the `gnus-button-url' overlay property on the button."
(defvar gnus-next-page-map
(let ((map (make-sparse-keymap)))
- (unless (>= emacs-major-version 21)
- ;; XEmacs doesn't care.
- (set-keymap-parent map gnus-article-mode-map))
(define-key map gnus-mouse-2 'gnus-button-next-page)
(define-key map "\r" 'gnus-button-next-page)
map))
@@ -8370,9 +8375,9 @@ For example:
(interactive
(list
(or gnus-article-encrypt-protocol
- (completing-read "Encrypt protocol: "
- gnus-article-encrypt-protocol-alist
- nil t))
+ (gnus-completing-read "Encrypt protocol"
+ (mapcar 'car gnus-article-encrypt-protocol-alist)
+ t))
current-prefix-arg))
;; User might hit `K E' instead of `K e', so prompt once.
(when (and gnus-article-encrypt-protocol
diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el
index a2ab54bea8b..9bb28f3a05d 100644
--- a/lisp/gnus/gnus-async.el
+++ b/lisp/gnus/gnus-async.el
@@ -316,7 +316,8 @@ that was fetched."
(set-marker (caddr entry) nil))
(gnus-async-with-semaphore
(setq gnus-async-article-alist
- (delq entry gnus-async-article-alist))))
+ (delq entry gnus-async-article-alist))
+ (unintern (car entry) gnus-async-hashtb)))
(defun gnus-async-prefetch-remove-group (group)
"Remove all articles belonging to GROUP from the prefetch buffer."
@@ -332,8 +333,8 @@ that was fetched."
"Return the entry for ARTICLE in GROUP if it has been prefetched."
(let ((entry (save-excursion
(gnus-async-set-buffer)
- (assq (intern (format "%s-%d" group article)
- gnus-async-hashtb)
+ (assq (intern-soft (format "%s-%d" group article)
+ gnus-async-hashtb)
gnus-async-article-alist))))
;; Perhaps something has emptied the buffer?
(if (and entry
diff --git a/lisp/gnus/gnus-bookmark.el b/lisp/gnus/gnus-bookmark.el
index 137479b4e77..423750893d8 100644
--- a/lisp/gnus/gnus-bookmark.el
+++ b/lisp/gnus/gnus-bookmark.el
@@ -289,8 +289,8 @@ So the cdr of each bookmark is an alist too.")
(interactive)
(gnus-bookmark-maybe-load-default-file)
(let* ((bookmark (or bmk-name
- (completing-read "Jump to bookmarked article: "
- gnus-bookmark-alist)))
+ (gnus-completing-read "Jump to bookmarked article"
+ (mapcar 'car gnus-bookmark-alist))))
(bmk-record (cadr (assoc bookmark gnus-bookmark-alist)))
(group (cdr (assoc 'group bmk-record)))
(message-id (cdr (assoc 'message-id bmk-record))))
diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el
index 550614f9352..822996069cc 100644
--- a/lisp/gnus/gnus-cache.el
+++ b/lisp/gnus/gnus-cache.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/gnus-demon.el b/lisp/gnus/gnus-demon.el
index c4e439c3bf4..9f992d567d7 100644
--- a/lisp/gnus/gnus-demon.el
+++ b/lisp/gnus/gnus-demon.el
@@ -92,7 +92,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
(defun gnus-demon-remove-handler (function &optional no-init)
"Remove the handler FUNCTION from the list of handlers."
- (gnus-pull function gnus-demon-handlers)
+ (gnus-alist-pull function gnus-demon-handlers)
(unless no-init
(gnus-demon-init)))
diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el
index 18130bbb0fb..76d469b66f9 100644
--- a/lisp/gnus/gnus-diary.el
+++ b/lisp/gnus/gnus-diary.el
@@ -368,11 +368,11 @@ If ARG (or prefix) is non-nil, force prompting for all fields."
header ": ")))
(setq value
(if (listp (nth 1 head))
- (completing-read prompt (cons '("*" nil) (nth 1 head))
- nil t value
- gnus-diary-header-value-history)
+ (gnus-completing-read prompt (cons '("*" nil) (nth 1 head))
+ t value
+ 'gnus-diary-header-value-history)
(read-string prompt value
- gnus-diary-header-value-history))))
+ 'gnus-diary-header-value-history))))
(setq ask nil)
(setq invalid nil)
(condition-case ()
diff --git a/lisp/gnus/gnus-dired.el b/lisp/gnus/gnus-dired.el
index f9502b43c06..a12046f73b8 100644
--- a/lisp/gnus/gnus-dired.el
+++ b/lisp/gnus/gnus-dired.el
@@ -133,7 +133,9 @@ filenames."
(mapcar
;; don't attach directories
(lambda (f) (if (file-directory-p f) nil f))
- (nreverse (dired-map-over-marks (dired-get-filename) nil))))))
+ (nreverse
+ (let ((arg nil)) ;; Silence XEmacs 21.5 when compiling.
+ (dired-map-over-marks (dired-get-filename) arg)))))))
(let ((destination nil)
(files-str nil)
(bufs nil))
@@ -152,12 +154,8 @@ filenames."
(setq destination
(if (= (length bufs) 1)
(get-buffer (car bufs))
- (completing-read "Attach to which mail composition buffer: "
- (mapcar
- (lambda (b)
- (cons b (get-buffer b)))
- bufs)
- nil t)))
+ (gnus-completing-read "Attach to which mail composition buffer"
+ bufs t)))
;; setup a new mail composition buffer
(let ((mail-user-agent gnus-dired-mail-mode)
;; A workaround to prevent Gnus from displaying the Gnus
diff --git a/lisp/gnus/gnus-ems.el b/lisp/gnus/gnus-ems.el
index b4a2fe960c6..e1e37eb37c2 100644
--- a/lisp/gnus/gnus-ems.el
+++ b/lisp/gnus/gnus-ems.el
@@ -307,6 +307,12 @@
end nil))))))
(eval-and-compile
+ ;; XEmacs does not have window-inside-pixel-edges
+ (defalias 'gnus-window-inside-pixel-edges
+ (if (fboundp 'window-inside-pixel-edges)
+ 'window-inside-pixel-edges
+ 'window-pixel-edges))
+
(if (fboundp 'set-process-plist)
(progn
(defalias 'gnus-set-process-plist 'set-process-plist)
diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el
index bc1ebd4a85f..0f28bf5e5ea 100644
--- a/lisp/gnus/gnus-fun.el
+++ b/lisp/gnus/gnus-fun.el
@@ -24,7 +24,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el
index 14e224051bb..2444c9e7818 100644
--- a/lisp/gnus/gnus-gravatar.el
+++ b/lisp/gnus/gnus-gravatar.el
@@ -25,6 +25,7 @@
;;; Code:
(require 'gravatar)
+(require 'gnus-art)
(defgroup gnus-gravatar nil
"Gnus Gravatar."
@@ -33,17 +34,22 @@
(defcustom gnus-gravatar-size 32
"How big should gravatars be displayed."
:type 'integer
+ :version "24.1"
:group 'gnus-gravatar)
-(defcustom gnus-gravatar-relief 1
- "If non-nil, adds a shadow rectangle around the image. The
-value, relief, specifies the width of the shadow lines, in
-pixels. If relief is negative, shadows are drawn so that the
-image appears as a pressed button; otherwise, it appears as an
-unpressed button."
+(defcustom gnus-gravatar-properties '(:ascent center :relief 1)
+ "List of image properties applied to Gravatar images."
+ :type 'list
+ :version "24.1"
:group 'gnus-gravatar)
-(defun gnus-gravatar-transform-address (header category)
+(defcustom gnus-gravatar-too-ugly gnus-article-x-face-too-ugly
+ "Regexp matching posters whose avatar shouldn't be shown automatically."
+ :type '(choice regexp (const nil))
+ :version "24.1"
+ :group 'gnus-gravatar)
+
+(defun gnus-gravatar-transform-address (header category &optional force)
(gnus-with-article-headers
(let ((addresses
(mail-header-parse-addresses
@@ -53,67 +59,80 @@ unpressed button."
(ignore-errors
(mail-encode-encoded-word-string
(or (mail-fetch-field header) "")))
- (mail-fetch-field header)))))
- (let ((gravatar-size gnus-gravatar-size))
- (dolist (address addresses)
- (gravatar-retrieve
- (car address)
- 'gnus-gravatar-insert
- (list header address category)))))))
+ (mail-fetch-field header))))
+ (gravatar-size gnus-gravatar-size)
+ name)
+ (dolist (address addresses)
+ (when (and (setq name (cdr address))
+ (string-match "\\`\\*+ " name)) ;; (X-)Faces exist.
+ (setcdr address (setq name (substring name (match-end 0)))))
+ (when (or force
+ (not (and gnus-gravatar-too-ugly
+ (or (string-match gnus-gravatar-too-ugly
+ (car address))
+ (and name
+ (string-match gnus-gravatar-too-ugly
+ name))))))
+ (ignore-errors
+ (gravatar-retrieve
+ (car address)
+ 'gnus-gravatar-insert
+ (list header address category))))))))
(defun gnus-gravatar-insert (gravatar header address category)
"Insert GRAVATAR for ADDRESS in HEADER in current article buffer.
Set image category to CATEGORY."
(unless (eq gravatar 'error)
(gnus-with-article-headers
- (gnus-article-goto-header header)
- (mail-header-narrow-to-field)
- (let ((real-name (cdr address))
- (mail-address (car address)))
- (when (if real-name ; have a realname, go for it!
- (and (search-forward real-name nil t)
- (search-backward real-name nil t))
- (and (search-forward mail-address nil t)
- (search-backward mail-address nil t)))
- (goto-char (1- (point)))
- ;; If we're on the " quoting the name, go backward
- (when (looking-at "\"")
- (goto-char (1- (point))))
- ;; Do not do anything if there's already a gravatar. This can
- ;; happens if the buffer has been regenerated in the mean time, for
- ;; example we were fetching someaddress, and then we change to
- ;; another mail with the same someaddress.
- (unless (memq 'gnus-gravatar (text-properties-at (point)))
- (let ((inhibit-read-only t)
- (point (point))
- (gravatar (append
- gravatar
- `(:ascent center :relief ,gnus-gravatar-relief))))
- (gnus-put-image gravatar nil category)
- (put-text-property point (point) 'gnus-gravatar address)
- (gnus-add-wash-type category)
- (gnus-add-image category gravatar))))))))
+ ;; The buffer can be gone at this time
+ (when (buffer-live-p (current-buffer))
+ (gnus-article-goto-header header)
+ (mail-header-narrow-to-field)
+ (let ((real-name (cdr address))
+ (mail-address (car address)))
+ (when (if real-name ; have a realname, go for it!
+ (and (search-forward real-name nil t)
+ (search-backward real-name nil t))
+ (and (search-forward mail-address nil t)
+ (search-backward mail-address nil t)))
+ (goto-char (1- (point)))
+ ;; If we're on the " quoting the name, go backward
+ (when (looking-at "[\"<]")
+ (goto-char (1- (point))))
+ ;; Do not do anything if there's already a gravatar. This can
+ ;; happens if the buffer has been regenerated in the mean time, for
+ ;; example we were fetching someaddress, and then we change to
+ ;; another mail with the same someaddress.
+ (unless (memq 'gnus-gravatar (text-properties-at (point)))
+ (let ((inhibit-read-only t)
+ (point (point)))
+ (unless (featurep 'xemacs)
+ (setq gravatar (append gravatar gnus-gravatar-properties)))
+ (gnus-put-image gravatar nil category)
+ (put-text-property point (point) 'gnus-gravatar address)
+ (gnus-add-wash-type category)
+ (gnus-add-image category gravatar)))))))))
;;;###autoload
-(defun gnus-treat-from-gravatar ()
+(defun gnus-treat-from-gravatar (&optional force)
"Display gravatar in the From header.
If gravatar is already displayed, remove it."
- (interactive)
+ (interactive (list t)) ;; When type `W D g'
(gnus-with-article-buffer
(if (memq 'from-gravatar gnus-article-wash-types)
- (gnus-delete-images 'from-gravatar)
- (gnus-gravatar-transform-address "from" 'from-gravatar))))
+ (gnus-delete-images 'from-gravatar)
+ (gnus-gravatar-transform-address "from" 'from-gravatar force))))
;;;###autoload
-(defun gnus-treat-mail-gravatar ()
+(defun gnus-treat-mail-gravatar (&optional force)
"Display gravatars in the Cc and To headers.
If gravatars are already displayed, remove them."
- (interactive)
+ (interactive (list t)) ;; When type `W D h'
(gnus-with-article-buffer
(if (memq 'mail-gravatar gnus-article-wash-types)
(gnus-delete-images 'mail-gravatar)
- (gnus-gravatar-transform-address "cc" 'mail-gravatar)
- (gnus-gravatar-transform-address "to" 'mail-gravatar))))
+ (gnus-gravatar-transform-address "cc" 'mail-gravatar force)
+ (gnus-gravatar-transform-address "to" 'mail-gravatar force))))
(provide 'gnus-gravatar)
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 7dddb9b6f70..0d047133cd0 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -1186,9 +1186,7 @@ The following commands are available:
(defun gnus-group-setup-buffer ()
(set-buffer (gnus-get-buffer-create gnus-group-buffer))
(unless (eq major-mode 'gnus-group-mode)
- (gnus-group-mode)
- (when gnus-carpal
- (gnus-carpal-setup-buffer 'group))))
+ (gnus-group-mode)))
(defun gnus-group-name-charset (method group)
(if (null method)
@@ -1550,7 +1548,7 @@ if it is a string, only list groups matching REGEXP."
?m ? ))
(gnus-tmp-moderated-string
(if (eq gnus-tmp-moderated ?m) "(m)" ""))
- (gnus-tmp-group-icon (gnus-group-get-icon gnus-tmp-qualified-group))
+ (gnus-tmp-group-icon (gnus-group-get-icon gnus-tmp-group))
(gnus-tmp-news-server (or (cadr gnus-tmp-method) ""))
(gnus-tmp-news-method (or (car gnus-tmp-method) ""))
(gnus-tmp-news-method-string
@@ -2164,44 +2162,47 @@ be permanent."
group)))
(goto-char start)))))
-(defun gnus-group-completing-read (prompt &optional collection predicate
- require-match initial-input hist def
- &rest args)
+(defun gnus-group-completing-read (&optional prompt collection
+ require-match initial-input hist
+ def)
"Read a group name with completion. Non-ASCII group names are allowed.
The arguments are the same as `completing-read' except that COLLECTION
and HIST default to `gnus-active-hashtb' and `gnus-group-history'
-respectively if they are omitted."
- (let ((completion-styles (and (boundp 'completion-styles)
- completion-styles))
- group)
- (push 'substring completion-styles)
- (mapatoms (lambda (symbol)
- (setq group (symbol-name symbol))
- (set (intern (if (string-match "[^\000-\177]" group)
- (gnus-group-decoded-name group)
- group)
- collection)
- group))
- (prog1
- (or collection
- (setq collection (or gnus-active-hashtb [0])))
- (setq collection (gnus-make-hashtable (length collection)))))
- (setq group (apply 'completing-read prompt collection predicate
- require-match initial-input
- (or hist 'gnus-group-history)
- def args))
- (or (prog1
- (symbol-value (intern-soft group collection))
- (setq collection nil))
- (mm-encode-coding-string group (gnus-group-name-charset nil group)))))
+respectively if they are omitted. Regards COLLECTION as a hash table
+if it is not a list."
+ (or collection (setq collection gnus-active-hashtb))
+ (let (choices group)
+ (if (listp collection)
+ (dolist (symbol collection)
+ (setq group (symbol-name symbol))
+ (push (if (string-match "[^\000-\177]" group)
+ (gnus-group-decoded-name group)
+ group)
+ choices))
+ (mapatoms (lambda (symbol)
+ (setq group (symbol-name symbol))
+ (push (if (string-match "[^\000-\177]" group)
+ (gnus-group-decoded-name group)
+ group)
+ choices))
+ collection))
+ (setq group (gnus-completing-read (or prompt "Group") (nreverse choices)
+ require-match initial-input
+ (or hist 'gnus-group-history)
+ def))
+ (if (if (listp collection)
+ (member group (mapcar 'symbol-name collection))
+ (symbol-value (intern-soft group collection)))
+ group
+ (mm-encode-coding-string group (gnus-group-name-charset nil group)))))
;;;###autoload
(defun gnus-fetch-group (group &optional articles)
"Start Gnus if necessary and enter GROUP.
If ARTICLES, display those articles.
Returns whether the fetching was successful or not."
- (interactive (list (gnus-group-completing-read "Group name: "
- nil nil nil
+ (interactive (list (gnus-group-completing-read nil
+ nil nil
(gnus-group-name-at-point))))
(unless (gnus-alive-p)
(gnus-no-server))
@@ -2261,7 +2262,7 @@ Return the name of the group if selection was successful."
(interactive
(list
;; (gnus-read-group "Group name: ")
- (gnus-group-completing-read "Group: ")
+ (gnus-group-completing-read)
(gnus-read-method "From method: ")))
;; Transform the select method into a unique server.
(when (stringp method)
@@ -2328,7 +2329,7 @@ specified by `gnus-gmane-group-download-format'."
;; See <http://gmane.org/export.php> for more information.
(interactive
(list
- (gnus-group-completing-read "Gmane group: ")
+ (gnus-group-completing-read "Gmane group")
(read-number "Start article number: ")
(read-number "How many articles: ")))
(unless range (setq range 500))
@@ -2362,7 +2363,7 @@ Valid input formats include:
;; prompt the user to decide: "View via `browse-url' or in Gnus? "
;; (`gnus-read-ephemeral-gmane-group-url')
(interactive
- (list (gnus-group-completing-read "Gmane URL: ")))
+ (list (gnus-group-completing-read "Gmane URL")))
(let (group start range)
(cond
;; URLs providing `group', `start' and `range':
@@ -2456,13 +2457,13 @@ If PROMPT (the prefix) is a number, use the prompt specified in
`gnus-group-jump-to-group-prompt'."
(interactive
(list (gnus-group-completing-read
- "Group: " nil nil (gnus-read-active-file-p)
- (if current-prefix-arg
- (cdr (assq current-prefix-arg gnus-group-jump-to-group-prompt))
- (or (and (stringp gnus-group-jump-to-group-prompt)
- gnus-group-jump-to-group-prompt)
- (let ((p (cdr (assq 0 gnus-group-jump-to-group-prompt))))
- (and (stringp p) p)))))))
+ nil nil (gnus-read-active-file-p)
+ (if current-prefix-arg
+ (cdr (assq current-prefix-arg gnus-group-jump-to-group-prompt))
+ (or (and (stringp gnus-group-jump-to-group-prompt)
+ gnus-group-jump-to-group-prompt)
+ (let ((p (cdr (assq 0 gnus-group-jump-to-group-prompt))))
+ (and (stringp p) p)))))))
(when (equal group "")
(error "Empty group name"))
@@ -2653,7 +2654,7 @@ If EXCLUDE-GROUP, do not go to that group."
(defun gnus-group-make-group-simple (&optional group)
"Add a new newsgroup.
The user will be prompted for GROUP."
- (interactive (list (gnus-group-completing-read "Group: ")))
+ (interactive (list (gnus-group-completing-read)))
(gnus-group-make-group (gnus-group-real-name group)
(gnus-group-server group)
nil nil t))
@@ -2662,7 +2663,10 @@ The user will be prompted for GROUP."
"Add a new newsgroup.
The user will be prompted for a NAME, for a select METHOD, and an
ADDRESS. NAME should be a human-readable string (i.e., not be encoded
-even if it contains non-ASCII characters) unless ENCODED is non-nil."
+even if it contains non-ASCII characters) unless ENCODED is non-nil.
+
+If the backend supports it, the group will also be created on the
+server."
(interactive
(list
(gnus-read-group "Group name: ")
@@ -2912,8 +2916,9 @@ and NEW-NAME will be prompted for."
(defun gnus-group-make-useful-group (group method)
"Create one of the groups described in `gnus-useful-groups'."
(interactive
- (let ((entry (assoc (completing-read "Create group: " gnus-useful-groups
- nil t)
+ (let ((entry (assoc (gnus-completing-read "Create group"
+ (mapcar 'car gnus-useful-groups)
+ t)
gnus-useful-groups)))
(list (cadr entry)
;; Don't use `caddr' here since macros within the `interactive'
@@ -3005,11 +3010,11 @@ If SOLID (the prefix), create a solid group."
(symbol-name (caar nnweb-type-definition))))
(type
(gnus-string-or
- (completing-read
- (format "Search engine type (default %s): " default-type)
- (mapcar (lambda (elem) (list (symbol-name (car elem))))
+ (gnus-completing-read
+ "Search engine type"
+ (mapcar (lambda (elem) (symbol-name (car elem)))
nnweb-type-definition)
- nil t nil 'gnus-group-web-type-history)
+ t nil 'gnus-group-web-type-history)
default-type))
(search
(read-string
@@ -3022,7 +3027,7 @@ If SOLID (the prefix), create a solid group."
(nnweb-ephemeral-p t))))
(if solid
(progn
- (gnus-pull 'nnweb-ephemeral-p method)
+ (gnus-alist-pull 'nnweb-ephemeral-p method)
(gnus-group-make-group group method))
(gnus-group-read-ephemeral-group
group method t
@@ -3100,8 +3105,8 @@ mail messages or news articles in files that have numeric names."
"Add the current group to a virtual group."
(interactive
(list current-prefix-arg
- (completing-read "Add to virtual group: " gnus-newsrc-hashtb nil t
- "nnvirtual:")))
+ (gnus-group-completing-read "Add to virtual group"
+ nil t "nnvirtual:")))
(unless (eq (car (gnus-find-method-for-group vgroup)) 'nnvirtual)
(error "%s is not an nnvirtual group" vgroup))
(gnus-close-group vgroup)
@@ -3672,7 +3677,7 @@ If given numerical prefix, toggle the N next groups."
Killed newsgroups are subscribed. If SILENT, don't try to update the
group line."
(interactive (list (gnus-group-completing-read
- "Group: " nil nil (gnus-read-active-file-p))))
+ nil (gnus-read-active-file-p))))
(let ((newsrc (gnus-group-entry group)))
(cond
((string-match "^[ \t]*$" group)
@@ -4013,7 +4018,7 @@ If DONT-SCAN is non-nil, scan non-activated groups as well."
If given a prefix argument, prompt for a group."
(interactive
(list (or (when current-prefix-arg
- (gnus-group-completing-read "Group: "))
+ (gnus-group-completing-read))
(gnus-group-group-name)
gnus-newsgroup-name)))
(unless group
@@ -4314,18 +4319,19 @@ If called interactively, this function will ask for a select method
If not, METHOD should be a list where the first element is the method
and the second element is the address."
(interactive
- (list (let ((how (completing-read
- "Which back end: "
- (append gnus-valid-select-methods gnus-server-alist)
- nil t (cons "nntp" 0) 'gnus-method-history)))
+ (list (let ((how (gnus-completing-read
+ "Which back end"
+ (mapcar 'car (append gnus-valid-select-methods
+ gnus-server-alist))
+ t (cons "nntp" 0) 'gnus-method-history)))
;; We either got a back end name or a virtual server name.
;; If the first, we also need an address.
(if (assoc how gnus-valid-select-methods)
(list (intern how)
;; Suggested by mapjph@bath.ac.uk.
- (completing-read
- "Address: "
- (mapcar 'list gnus-secondary-servers)))
+ (gnus-completing-read
+ "Address"
+ gnus-secondary-servers))
;; We got a server name.
how))))
(gnus-browse-foreign-server method))
diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el
index 4bac528196d..c1472118cf8 100644
--- a/lisp/gnus/gnus-html.el
+++ b/lisp/gnus/gnus-html.el
@@ -37,6 +37,7 @@
(require 'url-cache)
(require 'xml)
(require 'browse-url)
+(eval-and-compile (unless (featurep 'xemacs) (require 'help-fns)))
(defcustom gnus-html-image-cache-ttl (days-to-time 7)
"Time used to determine if we should use images from the cache."
@@ -56,12 +57,6 @@
:group 'gnus-art
:type 'integer)
-(defcustom gnus-blocked-images "."
- "Images that have URLs matching this regexp will be blocked."
- :version "24.1"
- :group 'gnus-art
- :type 'regexp)
-
(defcustom gnus-max-image-proportion 0.9
"How big pictures displayed are in relation to the window they're in.
A value of 0.7 means that they are allowed to take up 70% of the
@@ -104,12 +99,7 @@ CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
(match-string 0 encoded-text)))
t t encoded-text)
s (1+ s)))
- encoded-text))))
- ;; XEmacs does not have window-inside-pixel-edges
- (defalias 'gnus-window-inside-pixel-edges
- (if (fboundp 'window-inside-pixel-edges)
- 'window-inside-pixel-edges
- 'window-pixel-edges)))
+ encoded-text)))))
(defun gnus-html-encode-url (url)
"Encode URL."
@@ -195,17 +185,16 @@ CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
;; URLs with cid: have their content stashed in other
;; parts of the MIME structure, so just insert them
;; immediately.
- (let ((handle (mm-get-content-id
- (setq url (match-string 1 url))))
- image)
- (when handle
- (mm-with-part handle
- (setq image (gnus-create-image (buffer-string)
- nil t))))
+ (let* ((handle (mm-get-content-id
+ (setq url (match-string 1 url))))
+ (image (when handle
+ (gnus-create-image (mm-with-part handle (buffer-string))
+ nil t))))
(when image
(let ((string (buffer-substring start end)))
(delete-region start end)
- (gnus-put-image image (gnus-string-or string "*") 'cid)
+ (gnus-put-image (gnus-rescale-image image (gnus-html-maximum-image-size))
+ (gnus-string-or string "*") 'cid)
(gnus-add-image 'cid image))))
;; Normal, external URL.
(let ((alt-text (when (string-match "\\(alt\\|title\\)=\"\\([^\"]+\\)"
@@ -270,7 +259,7 @@ Use ALT-TEXT for the image string."
(setq tag (match-string 1)
parameters (match-string 2)
start (match-beginning 0))
- (when (plusp (length parameters))
+ (when (> (length parameters) 0)
(set-text-properties 0 (1- (length parameters)) nil parameters))
(delete-region start (point))
(when (search-forward (concat "</" tag ">") nil t)
@@ -368,10 +357,16 @@ Use ALT-TEXT for the image string."
"Retrieve IMAGE, and place it into BUFFER on arrival."
(gnus-message 8 "gnus-html-schedule-image-fetching: buffer %s, image %s"
buffer image)
- (ignore-errors
- (url-retrieve (car image)
- 'gnus-html-image-fetched
- (list buffer image))))
+ (let ((args (list (car image)
+ 'gnus-html-image-fetched
+ (list buffer image))))
+ (when (> (length (if (featurep 'xemacs)
+ (cdr (split-string (function-arglist 'url-retrieve)))
+ (help-function-arglist 'url-retrieve)))
+ 4)
+ (setq args (nconc args (list t))))
+ (ignore-errors
+ (apply #'url-retrieve args))))
(defun gnus-html-image-fetched (status buffer image)
"Callback function called when image has been fetched."
@@ -397,9 +392,25 @@ Return a string with image data."
(search-forward "\r\n\r\n" nil t))
(buffer-substring (point) (point-max)))))
+(defun gnus-html-maximum-image-size ()
+ "Return the maximum size of an image according to `gnus-max-image-proportion'."
+ (let ((edges (gnus-window-inside-pixel-edges
+ (get-buffer-window (current-buffer)))))
+ ;; (width . height)
+ (cons
+ ;; Aimed width
+ (truncate
+ (* gnus-max-image-proportion
+ (- (nth 2 edges) (nth 0 edges))))
+ ;; Aimed height
+ (truncate (* gnus-max-image-proportion
+ (- (nth 3 edges) (nth 1 edges)))))))
+
(defun gnus-html-put-image (data url &optional alt-text)
+ "Put an image with DATA from URL and optional ALT-TEXT."
(when (gnus-graphic-display-p)
- (let* ((start (text-property-any (point-min) (point-max) 'gnus-image-url url))
+ (let* ((start (text-property-any (point-min) (point-max)
+ 'gnus-image-url url))
(end (when start
(next-single-property-change start 'gnus-image-url))))
;; Image found?
@@ -413,7 +424,8 @@ Return a string with image data."
(image-size image t)))))
(save-excursion
(goto-char start)
- (let ((alt-text (or alt-text (buffer-substring-no-properties start end))))
+ (let ((alt-text (or alt-text
+ (buffer-substring-no-properties start end))))
(if (and image
;; Kludge to avoid displaying 30x30 gif images, which
;; seems to be a signal of a broken image.
@@ -421,8 +433,9 @@ Return a string with image data."
(glyphp image)
(listp image))
(eq (if (featurep 'xemacs)
- (let ((d (cdadar (specifier-spec-list
- (glyph-image image)))))
+ (let ((d (cdadar
+ (specifier-spec-list
+ (glyph-image image)))))
(and (vectorp d)
(aref d 0)))
(plist-get (cdr image) :type))
@@ -430,49 +443,29 @@ Return a string with image data."
(= (car size) 30)
(= (cdr size) 30))))
;; Good image, add it!
- (let ((image (gnus-html-rescale-image image data size)))
+ (let ((image (gnus-rescale-image image (gnus-html-maximum-image-size))))
(delete-region start end)
(gnus-put-image image alt-text 'external)
(gnus-put-text-property start (point) 'help-echo alt-text)
- (gnus-overlay-put (gnus-make-overlay start (point)) 'local-map
- gnus-html-displayed-image-map)
- (gnus-put-text-property start (point) 'gnus-alt-text alt-text)
+ (gnus-overlay-put
+ (gnus-make-overlay start (point)) 'local-map
+ gnus-html-displayed-image-map)
+ (gnus-put-text-property start (point)
+ 'gnus-alt-text alt-text)
(when url
- (gnus-put-text-property start (point) 'gnus-image-url url))
+ (gnus-put-text-property start (point)
+ 'gnus-image-url url))
(gnus-add-image 'external image)
t)
;; Bad image, try to show something else
(when (fboundp 'find-image)
(delete-region start end)
- (setq image (find-image '((:type xpm :file "lock-broken.xpm"))))
+ (setq image (find-image
+ '((:type xpm :file "lock-broken.xpm"))))
(gnus-put-image image alt-text 'internal)
(gnus-add-image 'internal image))
nil))))))))
-(defun gnus-html-rescale-image (image data size)
- (if (or (not (fboundp 'imagemagick-types))
- (not (get-buffer-window (current-buffer))))
- image
- (let* ((width (car size))
- (height (cdr size))
- (edges (gnus-window-inside-pixel-edges (get-buffer-window (current-buffer))))
- (window-width (truncate (* gnus-max-image-proportion
- (- (nth 2 edges) (nth 0 edges)))))
- (window-height (truncate (* gnus-max-image-proportion
- (- (nth 3 edges) (nth 1 edges)))))
- scaled-image)
- (when (> height window-height)
- (setq image (or (create-image data 'imagemagick t
- :height window-height)
- image))
- (setq size (image-size image t)))
- (when (> (car size) window-width)
- (setq image (or
- (create-image data 'imagemagick t
- :width window-width)
- image)))
- image)))
-
(defun gnus-html-image-url-blocked-p (url blocked-images)
"Find out if URL is blocked by BLOCKED-IMAGES."
(let ((ret (and blocked-images
@@ -500,7 +493,7 @@ This only works if the article in question is HTML."
(let ((blocked-images (with-current-buffer summary
gnus-blocked-images)))
(save-match-data
- (while (re-search-forward "<img.*src=[\"']\\([^\"']+\\)" nil t)
+ (while (re-search-forward "<img[^>]+src=[\"']\\([^\"']+\\)" nil t)
(let ((url (gnus-html-encode-url (match-string 1))))
(unless (gnus-html-image-url-blocked-p url blocked-images)
(when (gnus-html-cache-expired url gnus-html-image-cache-ttl)
diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el
index 3245b16997b..19bcffe0049 100644
--- a/lisp/gnus/gnus-int.el
+++ b/lisp/gnus/gnus-int.el
@@ -31,6 +31,7 @@
(require 'message)
(require 'gnus-range)
+(autoload 'gnus-run-hook-with-args "gnus-util")
(autoload 'gnus-agent-expire "gnus-agent")
(autoload 'gnus-agent-regenerate-group "gnus-agent")
(autoload 'gnus-agent-read-servers-validate-native "gnus-agent")
@@ -41,6 +42,16 @@
:group 'gnus-start
:type 'hook)
+(defcustom gnus-after-set-mark-hook nil
+ "Hook called just after marks are set in a group."
+ :group 'gnus-start
+ :type 'hook)
+
+(defcustom gnus-before-update-mark-hook nil
+ "Hook called just before marks are updated in a group."
+ :group 'gnus-start
+ :type 'hook)
+
(defcustom gnus-server-unopen-status nil
"The default status if the server is not able to open.
If the server is covered by Gnus agent, the possible values are
@@ -94,11 +105,10 @@ If CONFIRM is non-nil, the user will be asked for an NNTP server."
(when confirm
;; Read server name with completion.
(setq gnus-nntp-server
- (completing-read "NNTP server: "
- (mapcar 'list
- (cons (list gnus-nntp-server)
- gnus-secondary-servers))
- nil nil gnus-nntp-server)))
+ (gnus-completing-read "NNTP server"
+ (cons gnus-nntp-server
+ gnus-secondary-servers)
+ nil gnus-nntp-server)))
(when (and gnus-nntp-server
(stringp gnus-nntp-server)
@@ -472,7 +482,8 @@ If FETCH-OLD, retrieve all headers (or some subset thereof) in the group."
action
(funcall (gnus-get-function gnus-command-method 'request-set-mark)
(gnus-group-real-name group) action
- (nth 1 gnus-command-method)))))
+ (nth 1 gnus-command-method))
+ (gnus-run-hook-with-args gnus-after-set-mark-hook group action))))
(defun gnus-request-update-mark (group article mark)
"Allow the back end to change the mark the user tries to put on an article."
@@ -480,6 +491,7 @@ If FETCH-OLD, retrieve all headers (or some subset thereof) in the group."
(if (not (gnus-check-backend-function
'request-update-mark (car gnus-command-method)))
mark
+ (gnus-run-hook-with-args gnus-before-update-mark-hook group article mark)
(funcall (gnus-get-function gnus-command-method 'request-update-mark)
(gnus-group-real-name group) article mark))))
@@ -492,6 +504,12 @@ If BUFFER, insert the article in that group."
article (gnus-group-real-name group)
(nth 1 gnus-command-method) buffer)))
+(defun gnus-request-thread (id)
+ "Request the thread containing the article specified by Message-ID id."
+ (let ((gnus-command-method (gnus-find-method-for-group gnus-newsgroup-name)))
+ (funcall (gnus-get-function gnus-command-method 'request-thread)
+ id)))
+
(defun gnus-request-head (article group)
"Request the head of ARTICLE in GROUP."
(let* ((gnus-command-method (gnus-find-method-for-group group))
diff --git a/lisp/gnus/gnus-kill.el b/lisp/gnus/gnus-kill.el
index 5483a741f2f..17a6266c9b9 100644
--- a/lisp/gnus/gnus-kill.el
+++ b/lisp/gnus/gnus-kill.el
@@ -480,7 +480,7 @@ Returns the number of articles marked as read."
(or (cdr (assq modifier mod-to-header)) "subject")
pattern
(if (string-match "m" commands)
- '(gnus-summary-mark-as-unread nil " ")
+ '(gnus-summary-tick-article nil " ")
'(gnus-summary-mark-as-read nil "X"))
nil t))
(forward-line 1))))
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index a2a2652b082..a3c5112ee41 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -420,7 +420,7 @@ Thank you for your help in stamping out bugs.
;; There may be an old " *gnus article copy*" buffer.
(let (gnus-article-copy)
(gnus-configure-posting-styles ,group)))))
- (gnus-pull ',(intern gnus-draft-meta-information-header)
+ (gnus-alist-pull ',(intern gnus-draft-meta-information-header)
message-required-headers)
(when (and ,group
(not (string= ,group "")))
@@ -578,8 +578,8 @@ If ARG is 1, prompt for a group name to find the posting style."
(if arg
(if (= 1 (prefix-numeric-value arg))
(gnus-group-completing-read
- "Use posting style of group: "
- nil nil (gnus-read-active-file-p))
+ "Use posting style of group"
+ nil (gnus-read-active-file-p))
(gnus-group-group-name))
""))
;; #### see comment in gnus-setup-message -- drv
@@ -607,8 +607,8 @@ network. The corresponding back end must have a 'request-post method."
(setq gnus-newsgroup-name
(if arg
(if (= 1 (prefix-numeric-value arg))
- (gnus-group-completing-read "Use group: "
- nil nil
+ (gnus-group-completing-read "Use group"
+ nil
(gnus-read-active-file-p))
(gnus-group-group-name))
""))
@@ -628,7 +628,7 @@ a news."
(let ((gnus-newsgroup-name
(if arg
(if (= 1 (prefix-numeric-value arg))
- (gnus-group-completing-read "Newsgroup: " nil nil
+ (gnus-group-completing-read "Newsgroup" nil
(gnus-read-active-file-p))
(gnus-group-group-name))
""))
@@ -654,8 +654,8 @@ posting style."
(setq gnus-newsgroup-name
(if arg
(if (= 1 (prefix-numeric-value arg))
- (gnus-group-completing-read "Use group: "
- nil nil
+ (gnus-group-completing-read "Use group"
+ nil
(gnus-read-active-file-p))
"")
gnus-newsgroup-name))
@@ -684,8 +684,8 @@ network. The corresponding back end must have a 'request-post method."
(setq gnus-newsgroup-name
(if arg
(if (= 1 (prefix-numeric-value arg))
- (gnus-group-completing-read "Use group: "
- nil nil
+ (gnus-group-completing-read "Use group"
+ nil
(gnus-read-active-file-p))
"")
gnus-newsgroup-name))
@@ -710,7 +710,7 @@ a news."
(let ((gnus-newsgroup-name
(if arg
(if (= 1 (prefix-numeric-value arg))
- (gnus-group-completing-read "Newsgroup: " nil nil
+ (gnus-group-completing-read "Newsgroup" nil
(gnus-read-active-file-p))
"")
gnus-newsgroup-name))
@@ -1028,8 +1028,8 @@ If SILENT, don't prompt the user."
gnus-last-posting-server)
;; Just use the last value.
gnus-last-posting-server
- (completing-read
- "Posting method: " method-alist nil t
+ (gnus-completing-read
+ "Posting method" (mapcar 'car method-alist) t
(cons (or gnus-last-posting-server "") 0))))
method-alist))))
;; Override normal method.
@@ -1265,7 +1265,8 @@ For the `inline' alternatives, also see the variable
(dolist (article (gnus-summary-work-articles n))
(gnus-summary-select-article nil nil nil article)
(with-current-buffer gnus-original-article-buffer
- (message-resend address))
+ (let ((gnus-gcc-externalize-attachments nil))
+ (message-resend address)))
(gnus-summary-mark-article-as-forwarded article)))
;; From: Matthieu Moy <Matthieu.Moy@imag.fr>
@@ -1487,7 +1488,7 @@ If YANK is non-nil, include the original article."
(defun gnus-summary-yank-message (buffer n)
"Yank the current article into a composed message."
(interactive
- (list (completing-read "Buffer: " (mapcar 'list (message-buffers)) nil t)
+ (list (gnus-completing-read "Buffer" (message-buffers) t)
current-prefix-arg))
(gnus-summary-iterate n
(let ((gnus-inhibit-treatment t))
diff --git a/lisp/gnus/gnus-picon.el b/lisp/gnus/gnus-picon.el
index 3cc7c3701c5..d24f04e0215 100644
--- a/lisp/gnus/gnus-picon.el
+++ b/lisp/gnus/gnus-picon.el
@@ -38,7 +38,7 @@
;;
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index a30847b0e2b..6c2233f9c40 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -45,6 +45,9 @@
;; (: gnus-registry-split-fancy-with-parent)
+;; You should also consider using the nnregistry backend to look up
+;; articles. See the Gnus manual for more information.
+
;; TODO:
;; - get the correct group on spool actions
@@ -122,12 +125,14 @@ display."
:type 'symbol)
(defcustom gnus-registry-unfollowed-groups
- '("delayed$" "drafts$" "queue$" "INBOX$")
+ '("delayed$" "drafts$" "queue$" "INBOX$" "^nnmairix:")
"List of groups that gnus-registry-split-fancy-with-parent won't return.
The group names are matched, they don't have to be fully
qualified. This parameter tells the Registry 'never split a
message into a group that matches one of these, regardless of
-references.'"
+references.'
+
+nnmairix groups are specifically excluded because they are ephemeral."
:group 'gnus-registry
:type '(repeat regexp))
@@ -857,12 +862,11 @@ Uses `gnus-registry-marks' to find what shortcuts to install."
(defun gnus-registry-read-mark ()
"Read a mark name from the user with completion."
- (let ((mark (gnus-completing-read-with-default
- (symbol-name gnus-registry-default-mark)
- "Label"
- (mapcar (lambda (x) ; completion list
- (cons (symbol-name (car-safe x)) (car-safe x)))
- gnus-registry-marks))))
+ (let ((mark (gnus-completing-read
+ "Label"
+ (mapcar 'symbol-name (mapcar 'car gnus-registry-marks))
+ nil nil nil
+ (symbol-name gnus-registry-default-mark))))
(when (stringp mark)
(intern mark))))
@@ -1173,10 +1177,6 @@ Returns the first place where the trail finds a group name."
;;; we could call it here: (customize-variable 'gnus-registry-install)
gnus-registry-install)
-(when (or (eq gnus-registry-install t)
- (gnus-registry-install-p))
- (gnus-registry-initialize))
-
;; TODO: a few things
(provide 'gnus-registry)
diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el
index 21b9d8954fe..a72d594a386 100644
--- a/lisp/gnus/gnus-salt.el
+++ b/lisp/gnus/gnus-salt.el
@@ -869,177 +869,6 @@ Two predefined functions are available:
(set-window-point
(gnus-get-buffer-window (current-buffer) t) (cdr region))))))
-;;;
-;;; gnus-carpal
-;;;
-
-(defvar gnus-carpal-group-buffer-buttons
- '(("next" . gnus-group-next-unread-group)
- ("prev" . gnus-group-prev-unread-group)
- ("read" . gnus-group-read-group)
- ("select" . gnus-group-select-group)
- ("catch-up" . gnus-group-catchup-current)
- ("new-news" . gnus-group-get-new-news-this-group)
- ("toggle-sub" . gnus-group-unsubscribe-current-group)
- ("subscribe" . gnus-group-unsubscribe-group)
- ("kill" . gnus-group-kill-group)
- ("yank" . gnus-group-yank-group)
- ("describe" . gnus-group-describe-group)
- "list"
- ("subscribed" . gnus-group-list-groups)
- ("all" . gnus-group-list-all-groups)
- ("killed" . gnus-group-list-killed)
- ("zombies" . gnus-group-list-zombies)
- ("matching" . gnus-group-list-matching)
- ("post" . gnus-group-post-news)
- ("mail" . gnus-group-mail)
- ("local" . (lambda () (interactive) (gnus-group-news 0)))
- ("rescan" . gnus-group-get-new-news)
- ("browse-foreign" . gnus-group-browse-foreign)
- ("exit" . gnus-group-exit)))
-
-(defvar gnus-carpal-summary-buffer-buttons
- '("mark"
- ("read" . gnus-summary-mark-as-read-forward)
- ("tick" . gnus-summary-tick-article-forward)
- ("clear" . gnus-summary-clear-mark-forward)
- ("expirable" . gnus-summary-mark-as-expirable)
- "move"
- ("scroll" . gnus-summary-next-page)
- ("next-unread" . gnus-summary-next-unread-article)
- ("prev-unread" . gnus-summary-prev-unread-article)
- ("first" . gnus-summary-first-unread-article)
- ("best" . gnus-summary-best-unread-article)
- "article"
- ("headers" . gnus-summary-toggle-header)
- ("uudecode" . gnus-uu-decode-uu)
- ("enter-digest" . gnus-summary-enter-digest-group)
- ("fetch-parent" . gnus-summary-refer-parent-article)
- "mail"
- ("move" . gnus-summary-move-article)
- ("copy" . gnus-summary-copy-article)
- ("respool" . gnus-summary-respool-article)
- "threads"
- ("lower" . gnus-summary-lower-thread)
- ("kill" . gnus-summary-kill-thread)
- "post"
- ("post" . gnus-summary-post-news)
- ("local" . gnus-summary-news-other-window)
- ("mail" . gnus-summary-mail-other-window)
- ("followup" . gnus-summary-followup-with-original)
- ("reply" . gnus-summary-reply-with-original)
- ("cancel" . gnus-summary-cancel-article)
- "misc"
- ("exit" . gnus-summary-exit)
- ("fed-up" . gnus-summary-catchup-and-goto-next-group)))
-
-(defvar gnus-carpal-server-buffer-buttons
- '(("add" . gnus-server-add-server)
- ("browse" . gnus-server-browse-server)
- ("list" . gnus-server-list-servers)
- ("kill" . gnus-server-kill-server)
- ("yank" . gnus-server-yank-server)
- ("copy" . gnus-server-copy-server)
- ("exit" . gnus-server-exit)))
-
-(defvar gnus-carpal-browse-buffer-buttons
- '(("subscribe" . gnus-browse-unsubscribe-current-group)
- ("exit" . gnus-browse-exit)))
-
-(defvar gnus-carpal-group-buffer "*Carpal Group*")
-(defvar gnus-carpal-summary-buffer "*Carpal Summary*")
-(defvar gnus-carpal-server-buffer "*Carpal Server*")
-(defvar gnus-carpal-browse-buffer "*Carpal Browse*")
-
-(defvar gnus-carpal-attached-buffer nil)
-
-(defvar gnus-carpal-mode-hook nil
- "*Hook run in carpal mode buffers.")
-
-(defvar gnus-carpal-button-face 'bold
- "*Face used on carpal buttons.")
-
-(defvar gnus-carpal-header-face 'bold-italic
- "*Face used on carpal buffer headers.")
-
-(defvar gnus-carpal-mode-map nil)
-(put 'gnus-carpal-mode 'mode-class 'special)
-
-(if gnus-carpal-mode-map
- nil
- (setq gnus-carpal-mode-map (make-keymap))
- (suppress-keymap gnus-carpal-mode-map)
- (define-key gnus-carpal-mode-map " " 'gnus-carpal-select)
- (define-key gnus-carpal-mode-map "\r" 'gnus-carpal-select)
- (define-key gnus-carpal-mode-map gnus-mouse-2 'gnus-carpal-mouse-select))
-
-(defun gnus-carpal-mode ()
- "Major mode for clicking buttons.
-
-All normal editing commands are switched off.
-\\<gnus-carpal-mode-map>
-The following commands are available:
-
-\\{gnus-carpal-mode-map}"
- (interactive)
- (kill-all-local-variables)
- (setq mode-line-modified (cdr gnus-mode-line-modified))
- (setq major-mode 'gnus-carpal-mode)
- (setq mode-name "Gnus Carpal")
- (setq mode-line-process nil)
- (use-local-map gnus-carpal-mode-map)
- (buffer-disable-undo)
- (setq buffer-read-only t)
- (make-local-variable 'gnus-carpal-attached-buffer)
- (gnus-run-mode-hooks 'gnus-carpal-mode-hook))
-
-(defun gnus-carpal-setup-buffer (type)
- (let ((buffer (symbol-value (intern (format "gnus-carpal-%s-buffer" type)))))
- (if (get-buffer buffer)
- ()
- (with-current-buffer (gnus-get-buffer-create buffer)
- (gnus-carpal-mode)
- (setq gnus-carpal-attached-buffer
- (intern (format "gnus-%s-buffer" type)))
- (let ((buttons (symbol-value
- (intern (format "gnus-carpal-%s-buffer-buttons"
- type))))
- (buffer-read-only nil)
- button)
- (while buttons
- (setq button (car buttons)
- buttons (cdr buttons))
- (if (stringp button)
- (set-text-properties
- (point)
- (prog2 (insert button) (point) (insert " "))
- (list 'face gnus-carpal-header-face))
- (set-text-properties
- (point)
- (prog2 (insert (car button)) (point) (insert " "))
- (list 'gnus-callback (cdr button)
- 'face gnus-carpal-button-face
- gnus-mouse-face-prop 'highlight))))
- (let ((fill-column (- (window-width) 2)))
- (fill-region (point-min) (point-max)))
- (set-window-point (get-buffer-window (current-buffer))
- (point-min)))))))
-
-(defun gnus-carpal-select ()
- "Select the button under point."
- (interactive)
- (let ((func (get-text-property (point) 'gnus-callback)))
- (if (null func)
- ()
- (pop-to-buffer (symbol-value gnus-carpal-attached-buffer))
- (call-interactively func))))
-
-(defun gnus-carpal-mouse-select (event)
- "Select the button under the mouse pointer."
- (interactive "e")
- (mouse-set-point event)
- (gnus-carpal-select))
-
;;; Allow redefinition of functions.
(gnus-ems-redefine)
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index 03ff30d2b4b..a9c666e246e 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -680,14 +680,14 @@ file for the command instead of the current score file."
(and gnus-extra-headers
(equal (nth 1 entry) "extra")
(intern ; need symbol
- (gnus-completing-read-with-default
- (symbol-name (car gnus-extra-headers)) ; default response
- "Score extra header" ; prompt
- (mapcar (lambda (x) ; completion list
- (cons (symbol-name x) x))
- gnus-extra-headers)
- nil ; no completion limit
- t)))) ; require match
+ (let ((collection (mapcar 'symbol-name gnus-extra-headers)))
+ (gnus-completing-read
+ "Score extra header" ; prompt
+ collection ; completion list
+ t ; require match
+ nil ; no history
+ nil ; no initial-input
+ (car collection)))))) ; default value
;; extra is now nil or a symbol.
;; We have all the data, so we enter this score.
@@ -913,10 +913,13 @@ MATCH is the string we are looking for.
TYPE is the score type.
SCORE is the score to add.
EXTRA is the possible non-standard header."
- (interactive (list (completing-read "Header: "
- gnus-header-index
- (lambda (x) (fboundp (nth 2 x)))
- t)
+ (interactive (list (gnus-completing-read "Header"
+ (mapcar
+ 'car
+ (gnus-remove-if-not
+ (lambda (x) (fboundp (nth 2 x)))
+ gnus-header-index))
+ t)
(read-string "Match: ")
(if (y-or-n-p "Use regexp match? ") 'r 's)
(string-to-number (read-string "Score: "))))
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index 91a1784ca20..31e440e22dd 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(eval-when-compile (require 'cl))
@@ -680,7 +680,7 @@ are supported for %s."
((string= fstring "%d")
(setq dontinsert t)
(if insert
- (list `(princ ,(car flist)))
+ `(insert (int-to-string ,(car flist)))
(list `(int-to-string ,(car flist)))))
;; Just lots of chars and strings.
((string-match "\\`\\(%[cs]\\)+\\'" fstring)
diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index 11164a8df6c..b532b740455 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -301,9 +301,7 @@ The following commands are available:
"Initialize the server buffer."
(unless (get-buffer gnus-server-buffer)
(with-current-buffer (gnus-get-buffer-create gnus-server-buffer)
- (gnus-server-mode)
- (when gnus-carpal
- (gnus-carpal-setup-buffer 'server)))))
+ (gnus-server-mode))))
(defun gnus-server-prepare ()
(gnus-set-format 'server-mode)
@@ -571,8 +569,9 @@ The following commands are available:
(defun gnus-server-add-server (how where)
(interactive
- (list (intern (completing-read "Server method: "
- gnus-valid-select-methods nil t))
+ (list (intern (gnus-completing-read "Server method"
+ (mapcar 'car gnus-valid-select-methods)
+ t))
(read-string "Server name: ")))
(when (assq where gnus-server-alist)
(error "Server with that name already defined"))
@@ -582,7 +581,7 @@ The following commands are available:
(defun gnus-server-goto-server (server)
"Jump to a server line."
(interactive
- (list (completing-read "Goto server: " gnus-server-alist nil t)))
+ (list (gnus-completing-read "Goto server" (mapcar 'car gnus-server-alist) t)))
(let ((to (text-property-any (point-min) (point-max)
'gnus-server (intern server))))
(when to
@@ -805,8 +804,6 @@ claim them."
(funcall gnus-group-prepare-function
gnus-level-killed 'ignore 1 'ignore))
(gnus-get-buffer-create gnus-browse-buffer)
- (when gnus-carpal
- (gnus-carpal-setup-buffer 'browse))
(gnus-configure-windows 'browse)
(buffer-disable-undo)
(let ((buffer-read-only nil))
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 68f26ea143b..26da22e478a 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -1465,7 +1465,7 @@ newsgroup."
(push group bogus)))
(if confirm
(map-y-or-n-p
- "Remove bogus group %s? "
+ (format "Remove bogus group %%s (of %d groups)? " (length bogus))
(lambda (group)
;; Remove all bogus subscribed groups by first killing them, and
;; then removing them from the list of killed groups.
@@ -1674,6 +1674,7 @@ If SCAN, request a scan of that group as well."
;; and compute how many unread articles there are in each group.
(defun gnus-get-unread-articles (&optional level)
(setq gnus-server-method-cache nil)
+ (require 'gnus-agent)
(let* ((newsrc (cdr gnus-newsrc-alist))
(alevel (or level gnus-activate-level (1+ gnus-level-subscribed)))
(foreign-level
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index b8b17b39918..568e2976268 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(eval-when-compile
@@ -474,6 +474,12 @@ If nil, each group will get its own article buffer."
:group 'gnus-article-various
:type 'boolean)
+(defcustom gnus-widen-article-window nil
+ "If non-nil, selecting the article buffer will display only the article buffer."
+ :version "24.1"
+ :group 'gnus-article-various
+ :type 'boolean)
+
(defcustom gnus-break-pages t
"*If non-nil, do page breaking on articles.
The page delimiter is specified by the `gnus-page-delimiter'
@@ -3109,16 +3115,6 @@ The following commands are available:
;; Simple nil-valued local variable.
(set (make-local-variable local) nil)))))
-(defun gnus-summary-clear-local-variables ()
- (let ((locals gnus-summary-local-variables))
- (while locals
- (if (consp (car locals))
- (and (symbolp (caar locals))
- (set (caar locals) nil))
- (and (symbolp (car locals))
- (set (car locals) nil)))
- (setq locals (cdr locals)))))
-
;; Summary data functions.
(defmacro gnus-data-number (data)
@@ -3503,8 +3499,6 @@ display only a single character."
;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu>
(setq gnus-summary-buffer (set-buffer (gnus-get-buffer-create buffer)))
(gnus-summary-mode group)
- (when gnus-carpal
- (gnus-carpal-setup-buffer 'summary))
(when (gnus-group-quit-config group)
(set (make-local-variable 'gnus-single-article-buffer) nil))
(make-local-variable 'gnus-article-buffer)
@@ -3847,7 +3841,8 @@ This function is intended to be used in
(defun gnus-summary-set-local-parameters (group)
"Go through the local params of GROUP and set all variable specs in that list."
- (let ((vars '(quit-config))) ; Ignore quit-config.
+ (let ((vars '(quit-config active))) ; Ignore things that aren't
+ ; really variables.
(dolist (elem (gnus-group-find-parameter group))
(and (consp elem) ; Has to be a cons.
(consp (cdr elem)) ; The cdr has to be a list.
@@ -4991,6 +4986,10 @@ Unscored articles will be counted as having a score of zero."
(t
(gnus-thread-total-score-1 (list thread)))))
+(defun gnus-article-sort-by-most-recent-number (h1 h2)
+ "Sort articles by number."
+ (gnus-article-sort-by-number h1 h2))
+
(defun gnus-thread-sort-by-most-recent-number (h1 h2)
"Sort threads such that the thread with the most recently arrived article comes first."
(> (gnus-thread-highest-number h1) (gnus-thread-highest-number h2)))
@@ -5001,6 +5000,10 @@ Unscored articles will be counted as having a score of zero."
(mail-header-number header))
(message-flatten-list thread))))
+(defun gnus-article-sort-by-most-recent-date (h1 h2)
+ "Sort articles by number."
+ (gnus-article-sort-by-date h1 h2))
+
(defun gnus-thread-sort-by-most-recent-date (h1 h2)
"Sort threads such that the thread with the most recently dated article comes first."
(> (gnus-thread-latest-date h1) (gnus-thread-latest-date h2)))
@@ -5680,17 +5683,17 @@ If SELECT-ARTICLES, only select those articles from GROUP."
(unseen . unseen))
gnus-article-mark-lists))
(push (cons (cdr elem)
- (gnus-byte-compile
+ (gnus-byte-compile ;Why bother?
`(lambda () (gnus-article-marked-p ',(cdr elem)))))
gnus-summary-display-cache)))
(let ((gnus-category-predicate-alist gnus-summary-display-cache)
(gnus-category-predicate-cache gnus-summary-display-cache))
(gnus-get-predicate display)))
-;; Uses the dynamically bound `number' variable.
-(defvar number)
+;; Uses the dynamically bound `gnus-number' variable.
+(defvar gnus-number)
(defun gnus-article-marked-p (type &optional article)
- (let ((article (or article number)))
+ (let ((article (or article gnus-number)))
(cond
((eq type 'tick)
(memq article gnus-newsgroup-marked))
@@ -6939,11 +6942,17 @@ displayed, no centering will be performed."
;; Various summary commands
(defun gnus-summary-select-article-buffer ()
- "Reconfigure windows to show article buffer."
+ "Reconfigure windows to show the article buffer."
(interactive)
(if (not (gnus-buffer-live-p gnus-article-buffer))
(error "There is no article buffer for this summary buffer")
- (gnus-configure-windows 'article)
+ (unless (get-buffer-window gnus-article-buffer)
+ (gnus-summary-show-article))
+ (gnus-configure-windows
+ (if gnus-widen-article-window
+ 'only-article
+ 'article)
+ t)
(select-window (get-buffer-window gnus-article-buffer))))
(defun gnus-summary-universal-argument (arg)
@@ -7129,13 +7138,6 @@ If FORCE (the prefix), also save the .newsrc file(s)."
(progn
(gnus-deaden-summary)
(setq mode nil))
- ;; We set all buffer-local variables to nil. It is unclear why
- ;; this is needed, but if we don't, buffer-local variables are
- ;; not garbage-collected, it seems. This would the lead to en
- ;; ever-growing Emacs.
- (gnus-summary-clear-local-variables)
- (let ((gnus-summary-local-variables gnus-newsgroup-variables))
- (gnus-summary-clear-local-variables))
(when (get-buffer gnus-article-buffer)
(bury-buffer gnus-article-buffer))
;; Return to group mode buffer.
@@ -7194,9 +7196,6 @@ If FORCE (the prefix), also save the .newsrc file(s)."
(if (not gnus-kill-summary-on-exit)
(gnus-deaden-summary)
(gnus-close-group group)
- (gnus-summary-clear-local-variables)
- (let ((gnus-summary-local-variables gnus-newsgroup-variables))
- (gnus-summary-clear-local-variables))
(gnus-kill-buffer gnus-summary-buffer))
(unless gnus-single-article-buffer
(setq gnus-article-current nil))
@@ -7844,7 +7843,8 @@ If at the beginning of the article, go to the next article."
(defun gnus-summary-scroll-up (lines)
"Scroll up (or down) one line current article.
-Argument LINES specifies lines to be scrolled up (or down if negative)."
+Argument LINES specifies lines to be scrolled up (or down if negative).
+If no article is selected, then the current article will be selected first."
(interactive "p")
(gnus-configure-windows 'article)
(gnus-summary-show-thread)
@@ -7860,7 +7860,8 @@ Argument LINES specifies lines to be scrolled up (or down if negative)."
(defun gnus-summary-scroll-down (lines)
"Scroll down (or up) one line current article.
-Argument LINES specifies lines to be scrolled down (or up if negative)."
+Argument LINES specifies lines to be scrolled down (or up if negative).
+If no article is selected, then the current article will be selected first."
(interactive "p")
(gnus-summary-scroll-up (- lines)))
@@ -7999,10 +8000,9 @@ If FORCE, go to the article even if it isn't displayed. If FORCE
is a number, it is the line the article is to be displayed on."
(interactive
(list
- (completing-read
- "Article number or Message-ID: "
- (mapcar (lambda (number) (list (int-to-string number)))
- gnus-newsgroup-limit))
+ (gnus-completing-read
+ "Article number or Message-ID"
+ (mapcar 'int-to-string gnus-newsgroup-limit))
current-prefix-arg
t))
(prog1
@@ -8256,16 +8256,13 @@ articles that are younger than AGE days."
(interactive
(let ((header
(intern
- (gnus-completing-read-with-default
- (symbol-name (car gnus-extra-headers))
+ (gnus-completing-read
(if current-prefix-arg
"Exclude extra header"
"Limit extra header")
- (mapcar (lambda (x)
- (cons (symbol-name x) x))
- gnus-extra-headers)
- nil
- t))))
+ (mapcar 'symbol-name gnus-extra-headers)
+ t nil nil
+ (symbol-name (car gnus-extra-headers))))))
(list header
(read-string (format "%s header %s (regexp): "
(if current-prefix-arg "Exclude" "Limit to")
@@ -8287,9 +8284,9 @@ articles that are younger than AGE days."
(unless gnus-newsgroup-display
(error "There is no `display' group parameter"))
(let (articles)
- (dolist (number gnus-newsgroup-articles)
+ (dolist (gnus-number gnus-newsgroup-articles)
(when (funcall gnus-newsgroup-display)
- (push number articles)))
+ (push gnus-number articles)))
(gnus-summary-limit articles))
(gnus-summary-position-point))
@@ -8690,8 +8687,8 @@ fetch-old-headers verbiage, and so on."
(apply '+ (mapcar 'gnus-summary-limit-children
(cdr thread)))
0))
- (number (mail-header-number (car thread)))
- score)
+ (number (mail-header-number (car thread)))
+ score)
(if (and
(not (memq number gnus-newsgroup-marked))
(or
@@ -8736,7 +8733,8 @@ fetch-old-headers verbiage, and so on."
t)
;; Do the `display' group parameter.
(and gnus-newsgroup-display
- (not (funcall gnus-newsgroup-display)))))
+ (let ((gnus-number number))
+ (not (funcall gnus-newsgroup-display))))))
;; Nope, invisible article.
0
;; Ok, this article is to be visible, so we add it to the limit
@@ -8826,31 +8824,35 @@ Return the number of articles fetched."
(defun gnus-summary-refer-thread (&optional limit)
"Fetch all articles in the current thread.
-If LIMIT (the numerical prefix), fetch that many old headers instead
-of what's specified by the `gnus-refer-thread-limit' variable."
+If no backend-specific 'request-thread function is available
+fetch LIMIT (the numerical prefix) old headers. If LIMIT is nil
+fetch what's specified by the `gnus-refer-thread-limit'
+variable."
(interactive "P")
(let ((id (mail-header-id (gnus-summary-article-header)))
(limit (if limit (prefix-numeric-value limit)
gnus-refer-thread-limit)))
- (unless (eq gnus-fetch-old-headers 'invisible)
- (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name)
- ;; Retrieve the headers and read them in.
- (if (eq (if (numberp limit)
- (gnus-retrieve-headers
- (list (min
- (+ (mail-header-number
- (gnus-summary-article-header))
- limit)
- gnus-newsgroup-end))
- gnus-newsgroup-name (* limit 2))
- ;; gnus-refer-thread-limit is t, i.e. fetch _all_
- ;; headers.
- (gnus-retrieve-headers (list gnus-newsgroup-end)
- gnus-newsgroup-name limit))
- 'nov)
- (gnus-build-all-threads)
- (error "Can't fetch thread from back ends that don't support NOV"))
- (gnus-message 5 "Fetching headers for %s...done" gnus-newsgroup-name))
+ (if (gnus-check-backend-function 'request-thread gnus-newsgroup-name)
+ (gnus-request-thread id)
+ (unless (eq gnus-fetch-old-headers 'invisible)
+ (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name)
+ ;; Retrieve the headers and read them in.
+ (if (numberp limit)
+ (gnus-retrieve-headers
+ (list (min
+ (+ (mail-header-number
+ (gnus-summary-article-header))
+ limit)
+ gnus-newsgroup-end))
+ gnus-newsgroup-name (* limit 2))
+ ;; gnus-refer-thread-limit is t, i.e. fetch _all_
+ ;; headers.
+ (gnus-retrieve-headers (list gnus-newsgroup-end)
+ gnus-newsgroup-name limit)
+ (gnus-message 5 "Fetching headers for %s...done"
+ gnus-newsgroup-name))))
+ (when (eq gnus-headers-retrieved-by 'nov)
+ (gnus-build-all-threads))
(gnus-summary-limit-include-thread id)))
(defun gnus-summary-refer-article (message-id)
@@ -9234,14 +9236,14 @@ If HEADER is an empty string (or nil), the match is done on the entire
article. If BACKWARD (the prefix) is non-nil, search backward instead."
(interactive
(list (let ((completion-ignore-case t))
- (completing-read
- "Header name: "
- (mapcar (lambda (header) (list (format "%s" header)))
+ (gnus-completing-read
+ "Header name"
+ (mapcar 'symbol-name
(append
- '("Number" "Subject" "From" "Lines" "Date"
- "Message-ID" "Xref" "References" "Body")
+ '(Number Subject From Lines Date
+ Message-ID Xref References Body)
gnus-extra-headers))
- nil 'require-match))
+ 'require-match))
(read-string "Regexp: ")
(read-key-sequence "Command: ")
current-prefix-arg))
@@ -9937,9 +9939,9 @@ latter case, they will be copied into the relevant groups."
(car (gnus-find-method-for-group
gnus-newsgroup-name)))))
(method
- (gnus-completing-read-with-default
- methname "Backend to use when respooling"
- methods nil t nil 'gnus-mail-method-history))
+ (gnus-completing-read
+ "Backend to use when respooling"
+ methods t nil 'gnus-mail-method-history methname))
ms)
(cond
((zerop (length (setq ms (gnus-servers-using-backend
@@ -9949,7 +9951,7 @@ latter case, they will be copied into the relevant groups."
(car ms))
(t
(let ((ms-alist (mapcar (lambda (m) (cons (cadr m) m)) ms)))
- (cdr (assoc (completing-read "Server name: " ms-alist nil t)
+ (cdr (assoc (gnus-completing-read "Server name" ms-alist t)
ms-alist))))))))
(unless method
(error "No method given for respooling"))
@@ -10531,7 +10533,7 @@ ARTICLE can also be a list of articles."
(not (equal gnus-newsgroup-name (car gnus-article-current))))
(error "No current article selected"))
;; Remove old bookmark, if one exists.
- (gnus-pull article gnus-newsgroup-bookmarks)
+ (gnus-alist-pull article gnus-newsgroup-bookmarks)
;; Set the new bookmark, which is on the form
;; (article-number . line-number-in-body).
(push
@@ -10552,7 +10554,7 @@ ARTICLE can also be a list of articles."
;; Remove old bookmark, if one exists.
(if (not (assq article gnus-newsgroup-bookmarks))
(gnus-message 6 "No bookmark in current article.")
- (gnus-pull article gnus-newsgroup-bookmarks)
+ (gnus-alist-pull article gnus-newsgroup-bookmarks)
(gnus-message 6 "Removed bookmark.")))
;; Suggested by Daniel Quinlan <quinlan@best.com>.
@@ -10678,7 +10680,7 @@ If NO-EXPIRE, auto-expiry will be inhibited."
(setq gnus-newsgroup-unreads
(gnus-add-to-sorted-list gnus-newsgroup-unreads
article))))
- (gnus-pull article gnus-newsgroup-reads)
+ (gnus-alist-pull article gnus-newsgroup-reads)
;; See whether the article is to be put in the cache.
(and gnus-use-cache
@@ -10852,13 +10854,9 @@ If NO-EXPIRE, auto-expiry will be inhibited."
(t
(setq gnus-newsgroup-unreads
(gnus-add-to-sorted-list gnus-newsgroup-unreads article))))
- (gnus-pull article gnus-newsgroup-reads)
+ (gnus-alist-pull article gnus-newsgroup-reads)
t)))
-(defalias 'gnus-summary-mark-as-unread-forward
- 'gnus-summary-tick-article-forward)
-(make-obsolete 'gnus-summary-mark-as-unread-forward
- 'gnus-summary-tick-article-forward "Emacs 20.4")
(defun gnus-summary-tick-article-forward (n)
"Tick N articles forwards.
If N is negative, tick backwards instead.
@@ -10866,18 +10864,12 @@ The difference between N and the number of articles ticked is returned."
(interactive "p")
(gnus-summary-mark-forward n gnus-ticked-mark))
-(defalias 'gnus-summary-mark-as-unread-backward
- 'gnus-summary-tick-article-backward)
-(make-obsolete 'gnus-summary-mark-as-unread-backward
- 'gnus-summary-tick-article-backward "Emacs 20.4")
(defun gnus-summary-tick-article-backward (n)
"Tick N articles backwards.
The difference between N and the number of articles ticked is returned."
(interactive "p")
(gnus-summary-mark-forward (- n) gnus-ticked-mark))
-(defalias 'gnus-summary-mark-as-unread 'gnus-summary-tick-article)
-(make-obsolete 'gnus-summary-mark-as-unread 'gnus-summary-tick-article "Emacs 20.4")
(defun gnus-summary-tick-article (&optional article clear-mark)
"Mark current article as unread.
Optional 1st argument ARTICLE specifies article number to be marked as unread.
@@ -11331,15 +11323,19 @@ For compatibility with XEmacs."
(gnus-remove-overlays (point-min) (point-max) 'invisible 'gnus-sum)
(gnus-summary-position-point))
+(defsubst gnus-summary--inv (p)
+ (and (eq (get-char-property p 'invisible) 'gnus-sum) p))
+
(defun gnus-summary-show-thread ()
"Show thread subtrees.
Returns nil if no thread was there to be shown."
(interactive)
(let* ((orig (point))
(end (point-at-eol))
+ (end (or (gnus-summary--inv end) (gnus-summary--inv (1- end))))
;; Leave point at bol
(beg (progn (beginning-of-line) (if (bobp) (point) (1- (point)))))
- (eoi (when (eq (get-char-property end 'invisible) 'gnus-sum)
+ (eoi (when end
(if (fboundp 'next-single-char-property-change)
(or (next-single-char-property-change end 'invisible)
(point-max))
@@ -11904,7 +11900,8 @@ save those articles instead."
(nreverse split-name)))
(defun gnus-valid-move-group-p (group)
- (and (boundp group)
+ (and (symbolp group)
+ (boundp group)
(symbol-name group)
(symbol-value group)
(gnus-get-function (gnus-find-method-for-group
@@ -11921,29 +11918,21 @@ save those articles instead."
(format "these %d articles" (length articles))
"this article")))
(to-newsgroup
- (let (active group)
- (when (or (null split-name) (= 1 (length split-name)))
- (setq active (gnus-make-hashtable (length gnus-active-hashtb)))
- (mapatoms (lambda (symbol)
- (setq group (symbol-name symbol))
- (when (string-match "[^\000-\177]" group)
- (setq group (gnus-group-decoded-name group)))
- (set (intern group active) group))
- gnus-active-hashtb))
- (cond
- ((null split-name)
- (gnus-completing-read-with-default
- default prom active 'gnus-valid-move-group-p nil prefix
- 'gnus-group-history))
- ((= 1 (length split-name))
- (gnus-completing-read-with-default
- (car split-name) prom active 'gnus-valid-move-group-p nil nil
- 'gnus-group-history))
- (t
- (gnus-completing-read-with-default
- nil prom (mapcar 'list (nreverse split-name)) nil nil nil
- 'gnus-group-history)))))
- (to-method (gnus-server-to-method (gnus-group-method to-newsgroup)))
+ (cond
+ ((null split-name)
+ (gnus-group-completing-read
+ prom
+ (gnus-remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb t)
+ nil prefix nil default))
+ ((= 1 (length split-name))
+ (gnus-group-completing-read
+ prom
+ (gnus-remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb t)
+ nil prefix 'gnus-group-history (car split-name)))
+ (t
+ (gnus-completing-read
+ prom (nreverse split-name) nil nil 'gnus-group-history))))
+ (to-method (gnus-server-to-method (gnus-group-method to-newsgroup)))
encoded)
(when to-newsgroup
(if (or (string= to-newsgroup "")
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
index c0e52b6a8b2..8a492e8d2c3 100644
--- a/lisp/gnus/gnus-sync.el
+++ b/lisp/gnus/gnus-sync.el
@@ -24,6 +24,10 @@
;; This is the gnus-sync.el package.
+;; It's due for a rewrite using gnus-after-set-mark-hook and
+;; gnus-before-update-mark-hook. Until then please consider it
+;; experimental.
+
;; Put this in your startup file (~/.gnus.el for instance)
;; possibilities for gnus-sync-backend:
@@ -40,6 +44,9 @@
;; - after gnus-sync-read, the message counts are wrong
+;; - use gnus-after-set-mark-hook and gnus-before-update-mark-hook to
+;; catch the mark updates
+
;;; Code:
(eval-when-compile (require 'cl))
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index 7c710357b9d..e4afc7c2fb4 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -161,9 +161,7 @@ See Info node `(gnus)Formatting Variables'."
(defun gnus-topic-jump-to-topic (topic)
"Go to TOPIC."
(interactive
- (list (completing-read "Go to topic: "
- (mapcar 'list (gnus-topic-list))
- nil t)))
+ (list (gnus-completing-read "Go to topic" (gnus-topic-list) t)))
(let ((buffer-read-only nil))
(dolist (topic (gnus-current-topics topic))
(unless (gnus-topic-goto-topic topic)
@@ -1257,6 +1255,8 @@ that group.
If performed over a topic line, toggle folding the topic."
(interactive "P")
+ (when (and (eobp) (not (gnus-group-group-name)))
+ (forward-line -1))
(if (gnus-group-topic-p)
(let ((gnus-group-list-mode
(if all (cons (if (numberp all) all 7) t) gnus-group-list-mode)))
@@ -1303,8 +1303,8 @@ When used interactively, PARENT will be the topic under point."
If COPYP, copy the groups instead."
(interactive
(list current-prefix-arg
- (gnus-completing-read "Move to topic" gnus-topic-alist nil t
- 'gnus-topic-history)))
+ (gnus-completing-read "Move to topic" (mapcar 'car gnus-topic-alist) t
+ nil 'gnus-topic-history)))
(let ((use-marked (and (not n) (not (gnus-region-active-p))
gnus-group-marked t))
(groups (gnus-group-process-prefix n))
@@ -1350,7 +1350,8 @@ If COPYP, copy the groups instead."
"Copy the current group to a topic."
(interactive
(list current-prefix-arg
- (completing-read "Copy to topic: " gnus-topic-alist nil t)))
+ (gnus-completing-read
+ "Copy to topic" (mapcar 'car gnus-topic-alist) t)))
(gnus-topic-move-group n topic t))
(defun gnus-topic-kill-group (&optional n discard)
@@ -1443,7 +1444,8 @@ If PERMANENT, make it stay shown in subsequent sessions as well."
(gnus-topic-remove-topic t nil)
(let ((topic
(gnus-topic-find-topology
- (completing-read "Show topic: " gnus-topic-alist nil t))))
+ (gnus-completing-read "Show topic"
+ (mapcar 'car gnus-topic-alist) t))))
(setcar (cddr (cadr topic)) nil)
(setcar (cdr (cadr topic)) 'visible)
(gnus-group-list-groups)))))
@@ -1491,7 +1493,8 @@ If NON-RECURSIVE (which is the prefix) is t, don't unmark its subtopics."
(let (topic)
(nreverse
(list
- (setq topic (completing-read "Move to topic: " gnus-topic-alist nil t))
+ (setq topic (gnus-completing-read "Move to topic"
+ (mapcar 'car gnus-topic-alist) t))
(read-string (format "Move to %s (regexp): " topic))))))
(gnus-group-mark-regexp regexp)
(gnus-topic-move-group nil topic copyp))
@@ -1502,7 +1505,8 @@ If NON-RECURSIVE (which is the prefix) is t, don't unmark its subtopics."
(let (topic)
(nreverse
(list
- (setq topic (completing-read "Copy to topic: " gnus-topic-alist nil t))
+ (setq topic (gnus-completing-read "Copy to topic"
+ (mapcar 'car gnus-topic-alist) t))
(read-string (format "Copy to %s (regexp): " topic))))))
(gnus-topic-move-matching regexp topic t))
@@ -1723,8 +1727,9 @@ If REVERSE, sort in reverse order."
"Sort topics in TOPIC alphabetically by topic name.
If REVERSE, reverse the sorting order."
(interactive
- (list (completing-read "Sort topics in : " gnus-topic-alist nil t
- (gnus-current-topic))
+ (list (gnus-completing-read "Sort topics in"
+ (mapcar 'car gnus-topic-alist) t
+ (gnus-current-topic))
current-prefix-arg))
(let ((topic-topology (or (and topic (cdr (gnus-topic-find-topology topic)))
gnus-topic-topology)))
@@ -1738,7 +1743,7 @@ If REVERSE, reverse the sorting order."
(interactive
(list
(gnus-group-topic-name)
- (completing-read "Move to topic: " gnus-topic-alist nil t)))
+ (gnus-completing-read "Move to topic" (mapcar 'car gnus-topic-alist) t)))
(unless (and current to)
(error "Can't find topic"))
(let ((current-top (cdr (gnus-topic-find-topology current)))
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 5ebccc03f0f..5326b938cf4 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -33,7 +33,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(eval-when-compile
@@ -44,6 +44,36 @@
(defmacro with-no-warnings (&rest body)
`(progn ,@body))))
+(defcustom gnus-completing-read-function 'gnus-emacs-completing-read
+ "Function use to do completing read."
+ :version "24.1"
+ :group 'gnus-meta
+ :type `(radio (function-item
+ :doc "Use Emacs standard `completing-read' function."
+ gnus-emacs-completing-read)
+ ;; iswitchb.el is very old and ido.el is unavailable
+ ;; in XEmacs, so we exclude those function items.
+ ,@(unless (featurep 'xemacs)
+ '((function-item
+ :doc "Use `ido-completing-read' function."
+ gnus-ido-completing-read)
+ (function-item
+ :doc "Use iswitchb based completing-read function."
+ gnus-iswitchb-completing-read)))))
+
+(defcustom gnus-completion-styles
+ (if (and (boundp 'completion-styles-alist)
+ (boundp 'completion-styles))
+ (append (when (and (assq 'substring completion-styles-alist)
+ (not (memq 'substring completion-styles)))
+ (list 'substring))
+ completion-styles)
+ nil)
+ "Value of `completion-styles' to use when completing."
+ :version "24.1"
+ :group 'gnus-meta
+ :type 'list)
+
;; Fixme: this should be a gnus variable, not nnmail-.
(defvar nnmail-pathname-coding-system)
(defvar nnmail-active-file-coding-system)
@@ -122,11 +152,9 @@ This is a compatibility function for different Emacsen."
;; XEmacs. In Emacs we don't need to call `make-local-hook' first.
;; It's harmless, though, so the main purpose of this alias is to shut
;; up the byte compiler.
-(defalias 'gnus-make-local-hook
- (if (eq (get 'make-local-hook 'byte-compile)
- 'byte-compile-obsolete)
- 'ignore ; Emacs
- 'make-local-hook)) ; XEmacs
+(defalias 'gnus-make-local-hook (if (featurep 'xemacs)
+ 'make-local-hook
+ 'ignore))
(defun gnus-delete-first (elt list)
"Delete by side effect the first occurrence of ELT as a member of LIST."
@@ -344,16 +372,6 @@ TIME defaults to the current time."
(define-key keymap key (pop plist))
(pop plist)))))
-(defun gnus-completing-read-with-default (default prompt &rest args)
- ;; Like `completing-read', except that DEFAULT is the default argument.
- (let* ((prompt (if default
- (concat prompt " (default " default "): ")
- (concat prompt ": ")))
- (answer (apply 'completing-read prompt args)))
- (if (or (null answer) (zerop (length answer)))
- default
- answer)))
-
;; Two silly functions to ensure that all `y-or-n-p' questions clear
;; the echo area.
;;
@@ -1272,6 +1290,11 @@ ARG is passed to the first function."
(save-current-buffer
(apply 'run-hooks funcs)))
+(defun gnus-run-hook-with-args (hook &rest args)
+ "Does the same as `run-hook-with-args', but saves the current buffer."
+ (save-current-buffer
+ (apply 'run-hook-with-args hook args)))
+
(defun gnus-run-mode-hooks (&rest funcs)
"Run `run-mode-hooks' if it is available, otherwise `run-hooks'.
This function saves the current buffer."
@@ -1289,13 +1312,40 @@ This function saves the current buffer."
(with-current-buffer gnus-group-buffer
(eq major-mode 'gnus-group-mode))))
-(defun gnus-remove-if (predicate list)
- "Return a copy of LIST with all items satisfying PREDICATE removed."
+(defun gnus-remove-if (predicate sequence &optional hash-table-p)
+ "Return a copy of SEQUENCE with all items satisfying PREDICATE removed.
+SEQUENCE should be a list, a vector, or a string. Returns always a list.
+If HASH-TABLE-P is non-nil, regards SEQUENCE as a hash table."
(let (out)
- (while list
- (unless (funcall predicate (car list))
- (push (car list) out))
- (setq list (cdr list)))
+ (if hash-table-p
+ (mapatoms (lambda (symbol)
+ (unless (funcall predicate symbol)
+ (push symbol out)))
+ sequence)
+ (unless (listp sequence)
+ (setq sequence (append sequence nil)))
+ (while sequence
+ (unless (funcall predicate (car sequence))
+ (push (car sequence) out))
+ (setq sequence (cdr sequence))))
+ (nreverse out)))
+
+(defun gnus-remove-if-not (predicate sequence &optional hash-table-p)
+ "Return a copy of SEQUENCE with all items not satisfying PREDICATE removed.
+SEQUENCE should be a list, a vector, or a string. Returns always a list.
+If HASH-TABLE-P is non-nil, regards SEQUENCE as a hash table."
+ (let (out)
+ (if hash-table-p
+ (mapatoms (lambda (symbol)
+ (when (funcall predicate symbol)
+ (push symbol out)))
+ sequence)
+ (unless (listp sequence)
+ (setq sequence (append sequence nil)))
+ (while sequence
+ (when (funcall predicate (car sequence))
+ (push (car sequence) out))
+ (setq sequence (cdr sequence))))
(nreverse out)))
(if (fboundp 'assq-delete-all)
@@ -1316,7 +1366,7 @@ Return the modified alist."
(when (string-match r word)
(throw 'found r))))))
-(defmacro gnus-pull (key alist &optional assoc-p)
+(defmacro gnus-alist-pull (key alist &optional assoc-p)
"Modify ALIST to be without KEY."
(unless (symbolp alist)
(error "Not a symbol: %s" alist))
@@ -1574,21 +1624,54 @@ SPEC is a predicate specifier that contains stuff like `or', `and',
`(,(car spec) ,@(mapcar 'gnus-make-predicate-1 (cdr spec)))
(error "Invalid predicate specifier: %s" spec)))))
-(defun gnus-completing-read (prompt table &optional predicate require-match
- history)
- (when (and history
- (not (boundp history)))
- (set history nil))
- (completing-read
- (if (symbol-value history)
- (concat prompt " (" (car (symbol-value history)) "): ")
- (concat prompt ": "))
- table
- predicate
- require-match
- nil
- history
- (car (symbol-value history))))
+(defun gnus-completing-read (prompt collection &optional require-match
+ initial-input history def)
+ "Call `gnus-completing-read-function'."
+ (funcall gnus-completing-read-function
+ (concat prompt (when def
+ (concat " (default " def ")"))
+ ": ")
+ collection require-match initial-input history def))
+
+(defun gnus-emacs-completing-read (prompt collection &optional require-match
+ initial-input history def)
+ "Call standard `completing-read-function'."
+ (let ((completion-styles gnus-completion-styles))
+ (completing-read prompt
+ ;; Old XEmacs (at least 21.4) expect an alist for
+ ;; collection.
+ (mapcar 'list collection)
+ nil require-match initial-input history def)))
+
+(autoload 'ido-completing-read "ido")
+(defun gnus-ido-completing-read (prompt collection &optional require-match
+ initial-input history def)
+ "Call `ido-completing-read-function'."
+ (ido-completing-read prompt collection nil require-match
+ initial-input history def))
+
+
+(autoload 'iswitchb-read-buffer "iswitchb")
+(defun gnus-iswitchb-completing-read (prompt collection &optional require-match
+ initial-input history def)
+ "`iswitchb' based completing-read function."
+ (let ((iswitchb-make-buflist-hook
+ (lambda ()
+ (setq iswitchb-temp-buflist
+ (let ((choices (append
+ (when initial-input (list initial-input))
+ (symbol-value history) collection))
+ filtered-choices)
+ (dolist (x choices)
+ (setq filtered-choices (adjoin x filtered-choices)))
+ (nreverse filtered-choices))))))
+ (unwind-protect
+ (progn
+ (when (not iswitchb-mode)
+ (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup))
+ (iswitchb-read-buffer prompt def require-match))
+ (when (not iswitchb-mode)
+ (remove-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)))))
(defun gnus-graphic-display-p ()
(if (featurep 'xemacs)
@@ -1890,6 +1973,26 @@ is allowed once again. (Immediately, if `inhibit-quit' is nil.)"
(get-char-table ,character ,display-table)))
`(aref ,display-table ,character)))
+(defun gnus-rescale-image (image size)
+ "Rescale IMAGE to SIZE if possible.
+SIZE is in format (WIDTH . HEIGHT). Return a new image.
+Sizes are in pixels."
+ (if (or (not (fboundp 'imagemagick-types))
+ (not (get-buffer-window (current-buffer))))
+ image
+ (let ((new-width (car size))
+ (new-height (cdr size)))
+ (when (> (cdr (image-size image t)) new-height)
+ (setq image (or (create-image (plist-get (cdr image) :data) 'imagemagick t
+ :height new-height)
+ image)))
+ (when (> (car (image-size image t)) new-width)
+ (setq image (or
+ (create-image (plist-get (cdr image) :data) 'imagemagick t
+ :width new-width)
+ image)))
+ image)))
+
(provide 'gnus-util)
;;; gnus-util.el ends here
diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el
index 4956be9fd87..809e4c339be 100644
--- a/lisp/gnus/gnus-win.el
+++ b/lisp/gnus/gnus-win.el
@@ -68,12 +68,10 @@ used to display Gnus windows."
(defvar gnus-buffer-configuration
'((group
(vertical 1.0
- (group 1.0 point)
- (if gnus-carpal '(group-carpal 4))))
+ (group 1.0 point)))
(summary
(vertical 1.0
- (summary 1.0 point)
- (if gnus-carpal '(summary-carpal 4))))
+ (summary 1.0 point)))
(article
(cond
(gnus-use-trees
@@ -84,16 +82,13 @@ used to display Gnus windows."
(t
'(vertical 1.0
(summary 0.25 point)
- (if gnus-carpal '(summary-carpal 4))
(article 1.0)))))
(server
(vertical 1.0
- (server 1.0 point)
- (if gnus-carpal '(server-carpal 2))))
+ (server 1.0 point)))
(browse
(vertical 1.0
- (browse 1.0 point)
- (if gnus-carpal '(browse-carpal 2))))
+ (browse 1.0 point)))
(message
(vertical 1.0
(message 1.0 point)))
@@ -107,6 +102,9 @@ used to display Gnus windows."
(vertical 1.0
(summary 0.25)
(faq 1.0 point)))
+ (only-article
+ (vertical 1.0
+ (article 1.0 point)))
(edit-article
(vertical 1.0
(article 1.0 point)))
@@ -142,7 +140,6 @@ used to display Gnus windows."
(pipe
(vertical 1.0
(summary 0.25 point)
- (if gnus-carpal '(summary-carpal 4))
("*Shell Command Output*" 1.0)))
(bug
(vertical 1.0
@@ -186,10 +183,6 @@ See the Gnus manual for an explanation of the syntax used.")
(edit-group . gnus-group-edit-buffer)
(edit-form . gnus-edit-form-buffer)
(edit-server . gnus-server-edit-buffer)
- (group-carpal . gnus-carpal-group-buffer)
- (summary-carpal . gnus-carpal-summary-buffer)
- (server-carpal . gnus-carpal-server-buffer)
- (browse-carpal . gnus-carpal-browse-buffer)
(edit-score . gnus-score-edit-buffer)
(message . gnus-message-buffer)
(mail . gnus-message-buffer)
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 2024721ab0a..c944f4a307d 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -30,7 +30,7 @@
(eval '(run-hooks 'gnus-load-hook))
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -1427,6 +1427,7 @@ no need to set this variable."
:group 'gnus-message
:type '(choice (const :tag "default" nil)
string))
+(make-obsolete-variable 'gnus-local-domain nil "Emacs 24.1")
(defvar gnus-local-organization nil
"String with a description of what organization (if any) the user belongs to.
@@ -1490,7 +1491,9 @@ newsgroups."
"*The number of articles which indicates a large newsgroup.
If the number of articles in a newsgroup is greater than this value,
confirmation is required for selecting the newsgroup.
-If it is nil, no confirmation is required."
+If it is nil, no confirmation is required.
+
+Also see `gnus-large-ephemeral-newsgroup'."
:group 'gnus-group-select
:type '(choice (const :tag "No limit" nil)
integer))
@@ -1623,11 +1626,6 @@ slower."
(function-item mail-extract-address-components)
(function :tag "Other")))
-(defcustom gnus-carpal nil
- "*If non-nil, display clickable icons."
- :group 'gnus-meta
- :type 'boolean)
-
(defcustom gnus-shell-command-separator ";"
"String used to separate shell commands."
:group 'gnus-files
@@ -2587,6 +2585,11 @@ a string, be sure to use a valid format, see RFC 2616."
(defvar gnus-server-method-cache nil)
(defvar gnus-extended-servers nil)
+;; The carpal mode has been removed, but define the variable for
+;; backwards compatability.
+(defvar gnus-carpal nil)
+(make-obsolete-variable 'gnus-carpal nil "Emacs 24.1")
+
(defvar gnus-agent-fetching nil
"Whether Gnus agent is in fetching mode.")
@@ -2800,7 +2803,7 @@ gnus-registry.el will populate this if it's loaded.")
gnus-convert-image-to-gray-x-face gnus-convert-face-to-png
gnus-face-from-file)
("gnus-salt" gnus-highlight-selected-tree gnus-possibly-generate-tree
- gnus-tree-open gnus-tree-close gnus-carpal-setup-buffer)
+ gnus-tree-open gnus-tree-close)
("gnus-srvr" gnus-enter-server-buffer gnus-server-set-info
gnus-server-server-name)
("gnus-srvr" gnus-browse-foreign-server)
@@ -3205,7 +3208,6 @@ If ARG, insert string at point."
(defun gnus-continuum-version (&optional version)
"Return VERSION as a floating point number."
- (interactive)
(unless version
(setq version gnus-version))
(when (or (string-match "^\\([^ ]+\\)? ?Gnus v?\\([0-9.]+\\)$" version)
@@ -3389,14 +3391,14 @@ that that variable is buffer-local to the summary buffers."
(defun gnus-news-group-p (group &optional article)
"Return non-nil if GROUP (and ARTICLE) come from a news server."
(cond ((gnus-member-of-valid 'post group) ;Ordinary news group
- t) ;is news of course.
+ t) ;is news of course.
((not (gnus-member-of-valid 'post-mail group)) ;Non-combined.
nil) ;must be mail then.
((vectorp article) ;Has header info.
(eq (gnus-request-type group (mail-header-id article)) 'news))
- ((null article) ;Hasn't header info
+ ((null article) ;Hasn't header info
(eq (gnus-request-type group) 'news)) ;(unknown ==> mail)
- ((< article 0) ;Virtual message
+ ((< article 0) ;Virtual message
nil) ;we don't know, guess mail.
(t ;Has positive number
(eq (gnus-request-type group article) 'news)))) ;use it.
@@ -3813,12 +3815,13 @@ You should probably use `gnus-find-method-for-group' instead."
(defun gnus-expand-group-parameter (match value group)
"Use MATCH to expand VALUE in GROUP."
- (with-temp-buffer
- (insert group)
- (goto-char (point-min))
- (while (re-search-forward match nil t)
- (replace-match value))
- (buffer-string)))
+ (let ((start (string-match match group)))
+ (if start
+ (let ((matched-string (substring group start (match-end 0))))
+ ;; Build match groups
+ (string-match match matched-string)
+ (replace-match value nil nil matched-string))
+ group)))
(defun gnus-expand-group-parameters (match parameters group)
"Go through PARAMETERS and expand them according to the match data."
@@ -3920,8 +3923,11 @@ If ALLOW-LIST, also allow list as a result."
group 'params))))
(defun gnus-group-set-parameter (group name value)
- "Set parameter NAME to VALUE in GROUP."
- (let ((info (gnus-get-info group)))
+ "Set parameter NAME to VALUE in GROUP.
+GROUP can also be an INFO structure."
+ (let ((info (if (listp group)
+ group
+ (gnus-get-info group))))
(when info
(gnus-group-remove-parameter group name)
(let ((old-params (gnus-info-params info))
@@ -3931,17 +3937,20 @@ If ALLOW-LIST, also allow list as a result."
(not (eq (caar old-params) name)))
(setq new-params (append new-params (list (car old-params)))))
(setq old-params (cdr old-params)))
- (gnus-group-set-info new-params group 'params)))))
+ (gnus-group-set-info new-params (gnus-info-group info) 'params)))))
(defun gnus-group-remove-parameter (group name)
- "Remove parameter NAME from GROUP."
- (let ((info (gnus-get-info group)))
+ "Remove parameter NAME from GROUP.
+GROUP can also be an INFO structure."
+ (let ((info (if (listp group)
+ group
+ (gnus-get-info group))))
(when info
(let ((params (gnus-info-params info)))
(when params
(setq params (delq name params))
(while (assq name params)
- (gnus-pull name params))
+ (gnus-alist-pull name params))
(gnus-info-set-params info params))))))
(defun gnus-group-add-score (group &optional score)
@@ -4241,9 +4250,9 @@ Allow completion over sensible values."
gnus-predefined-server-alist
gnus-server-alist))
(method
- (completing-read
- prompt servers
- nil t nil 'gnus-method-history)))
+ (gnus-completing-read
+ prompt (mapcar 'car servers)
+ t nil 'gnus-method-history)))
(cond
((equal method "")
(setq method gnus-select-method))
diff --git a/lisp/gnus/gravatar.el b/lisp/gnus/gravatar.el
index ec03b1b8a00..50b0ba1d636 100644
--- a/lisp/gnus/gravatar.el
+++ b/lisp/gnus/gravatar.el
@@ -24,7 +24,6 @@
;;; Code:
-(require 'image)
(require 'url)
(require 'url-cache)
@@ -84,12 +83,22 @@
(when (search-forward "\n\n" nil t)
(buffer-substring (point) (point-max)))))
+(eval-and-compile
+ (cond ((featurep 'xemacs)
+ (require 'gnus-xmas)
+ (defalias 'gravatar-create-image 'gnus-xmas-create-image))
+ ((featurep 'gnus-ems)
+ (defalias 'gravatar-create-image 'gnus-create-image))
+ (t
+ (require 'image)
+ (defalias 'gravatar-create-image 'create-image))))
+
(defun gravatar-data->image ()
"Get data of current buffer and return an image.
If no image available, return 'error."
(let ((data (gravatar-get-data)))
(if data
- (create-image data nil t)
+ (gravatar-create-image data nil t)
'error)))
;;;###autoload
@@ -116,7 +125,8 @@ You can provide a list of argument to pass to CB in CBARGS."
(if (plist-get status :error)
;; Error happened.
(apply cb 'error cbargs)
- (apply cb (gravatar-data->image) cbargs)))
+ (apply cb (gravatar-data->image) cbargs))
+ (kill-buffer (current-buffer)))
(provide 'gravatar)
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 648ca29b87f..1bd5be74013 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -219,34 +219,6 @@ See Info node `(gnus)Mail Source Specifiers'."
(boolean :tag "Dontexpunge"))
(group :inline t
(const :format "" :value :plugged)
- (boolean :tag "Plugged"))))
- (cons :tag "Webmail server"
- (const :format "" webmail)
- (checklist :tag "Options" :greedy t
- (group :inline t
- (const :format "" :value :subtype)
- ;; Should be generated from
- ;; `webmail-type-definition', but we
- ;; can't require webmail without W3.
- (choice :tag "Subtype"
- :value hotmail
- (const hotmail)
- (const yahoo)
- (const netaddress)
- (const netscape)
- (const my-deja)))
- (group :inline t
- (const :format "" :value :user)
- (string :tag "User"))
- (group :inline t
- (const :format "" :value :password)
- (string :tag "Password"))
- (group :inline t
- (const :format ""
- :value :dontexpunge)
- (boolean :tag "Dontexpunge"))
- (group :inline t
- (const :format "" :value :plugged)
(boolean :tag "Plugged"))))))))
(defcustom mail-source-ignore-errors nil
@@ -387,13 +359,7 @@ Common keywords should be listed here.")
(:prescript)
(:prescript-delay)
(:postscript)
- (:dontexpunge))
- (webmail
- (:subtype hotmail)
- (:user (or (user-login-name) (getenv "LOGNAME") (getenv "USER")))
- (:password)
- (:dontexpunge)
- (:authentication password)))
+ (:dontexpunge)))
"Mapping from keywords to default values.
All keywords that can be used must be listed here."))
@@ -402,8 +368,7 @@ All keywords that can be used must be listed here."))
(directory mail-source-fetch-directory)
(pop mail-source-fetch-pop)
(maildir mail-source-fetch-maildir)
- (imap mail-source-fetch-imap)
- (webmail mail-source-fetch-webmail))
+ (imap mail-source-fetch-imap))
"A mapping from source type to fetcher function.")
(defvar mail-source-password-cache nil)
@@ -1138,30 +1103,6 @@ This only works when `display-time' is enabled."
?s server ?P port ?u user))
found)))
-(autoload 'webmail-fetch "webmail")
-
-(defun mail-source-fetch-webmail (source callback)
- "Fetch for webmail source."
- (mail-source-bind (webmail source)
- (let ((mail-source-string (format "webmail:%s:%s" subtype user))
- (webmail-newmail-only dontexpunge)
- (webmail-move-to-trash-can (not dontexpunge)))
- (when (eq authentication 'password)
- (setq password
- (or password
- (cdr (assoc (format "webmail:%s:%s" subtype user)
- mail-source-password-cache))
- (read-passwd
- (format "Password for %s at %s: " user subtype))))
- (when (and password
- (not (assoc (format "webmail:%s:%s" subtype user)
- mail-source-password-cache)))
- (push (cons (format "webmail:%s:%s" subtype user) password)
- mail-source-password-cache)))
- (webmail-fetch mail-source-crash-box subtype user password)
- (mail-source-callback callback (symbol-name subtype))
- (mail-source-delete-crash-box))))
-
(provide 'mail-source)
;;; mail-source.el ends here
diff --git a/lisp/gnus/mailcap.el b/lisp/gnus/mailcap.el
index 524928586fc..36a710d58c9 100644
--- a/lisp/gnus/mailcap.el
+++ b/lisp/gnus/mailcap.el
@@ -812,7 +812,10 @@ If NO-DECODE is non-nil, don't decode STRING."
;;;
(defvar mailcap-mime-extensions
- '(("" . "text/plain")
+ '(("" . "text/plain")
+ (".1" . "text/plain") ;; Manual pages
+ (".3" . "text/plain")
+ (".8" . "text/plain")
(".abs" . "audio/x-mpeg")
(".aif" . "audio/aiff")
(".aifc" . "audio/aiff")
@@ -828,6 +831,7 @@ If NO-DECODE is non-nil, don't decode STRING."
(".css" . "text/css")
(".dvi" . "application/x-dvi")
(".diff" . "text/x-patch")
+ (".dpatch". "test/x-patch")
(".el" . "application/emacs-lisp")
(".eps" . "application/postscript")
(".etx" . "text/x-setext")
@@ -869,6 +873,7 @@ If NO-DECODE is non-nil, don't decode STRING."
(".pict" . "image/pict")
(".png" . "image/png")
(".pnm" . "image/x-portable-anymap")
+ (".pod" . "text/plain")
(".ppm" . "image/portable-pixmap")
(".ps" . "application/postscript")
(".qt" . "video/quicktime")
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index b0738f74b6d..c9ddba42896 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -29,6 +29,7 @@
;;; Code:
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(eval-when-compile
@@ -283,7 +284,7 @@ This is a list of regexps and regexp matches."
:link '(custom-manual "(message)Mail Headers")
:type 'regexp)
-(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-ID:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:\\|^NNTP-Posting-Date:\\|^X-Trace:\\|^X-Complaints-To:\\|^Cancel-Lock:\\|^Cancel-Key:\\|^X-Hashcash:\\|^X-Payment:\\|^Approved:"
+(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-ID:\\|^X-Complaints-To:\\|Return-Path:\\|^Supersedes:\\|^NNTP-Posting-Date:\\|^X-Trace:\\|^X-Complaints-To:\\|^Cancel-Lock:\\|^Cancel-Key:\\|^X-Hashcash:\\|^X-Payment:\\|^Approved:\\|^Injection-Date:\\|^Injection-Info:"
"*Header lines matching this regexp will be deleted before posting.
It's best to delete old Path and Date headers before posting to avoid
any confusion."
@@ -2151,7 +2152,6 @@ Leading \"Re: \" is not stripped by this function. Use the function
(defun message-change-subject (new-subject)
"Ask for NEW-SUBJECT header, append (was: <Old Subject>)."
- ;; <URL:http://www.landfield.com/usefor/drafts/draft-ietf-usefor-useage--1.02.unpaged>
(interactive
(list
(read-from-minibuffer "New subject: ")))
@@ -5736,7 +5736,9 @@ subscribed address (and not the additional To and Cc header contents)."
(mapcar (lambda (rhs) (or (cadr (split-string rhs "@")) ""))
(mapcar 'downcase
(mapcar
- 'cadr
+ (lambda (elem)
+ (or (cadr elem)
+ ""))
(mail-extract-address-components field t))))))
;; Note that `rhs' will be "" if the address does not have
;; the domain part, i.e., if it is a local user's address.
@@ -6049,6 +6051,7 @@ If the current line has `message-yank-prefix', insert it on the new line."
When sending via news, also check that the REFERENCES are less
than 988 characters long, and if they are not, trim them until
they are."
+ ;; 21 is the number suggested by USEAGE.
(let ((maxcount 21)
(count 0)
(cut 2)
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index 5756e46b865..5a70f33d95f 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -24,7 +24,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 9b756edae40..d35319e151b 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -24,7 +24,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -105,7 +105,8 @@
,disposition ,description ,cache ,id))
(defcustom mm-text-html-renderer
- (cond ((executable-find "w3m") 'gnus-article-html)
+ (cond ((fboundp 'libxml-parse-html-region) 'mm-shr)
+ ((executable-find "w3m") 'gnus-article-html)
((executable-find "links") 'links)
((executable-find "lynx") 'lynx)
((locate-library "w3") 'w3)
@@ -114,6 +115,7 @@
"Render of HTML contents.
It is one of defined renderer types, or a rendering function.
The defined renderer types are:
+`mm-shr': use Gnus simple HTML renderer;
`gnus-article-html' : use Gnus renderer based on w3m;
`w3m' : use emacs-w3m;
`w3m-standalone': use w3m;
@@ -123,7 +125,8 @@ The defined renderer types are:
`html2text' : use html2text;
nil : use external viewer (default web browser)."
:version "24.1"
- :type '(choice (const gnus-article-html)
+ :type '(choice (const mm-shr)
+ (const gnus-article-html)
(const w3)
(const w3m :tag "emacs-w3m")
(const w3m-standalone :tag "standalone w3m" )
@@ -368,8 +371,12 @@ enables you to choose manually one of two types those mails include."
:group 'mime-display)
(defcustom mm-inline-large-images nil
- "If non-nil, then all images fit in the buffer."
- :type 'boolean
+ "If t, then all images fit in the buffer.
+If 'resize, try to resize the images so they fit."
+ :type '(radio
+ (const :tag "Inline large images as they are." t)
+ (const :tag "Resize large images." resize)
+ (const :tag "Do not inline large images." nil))
:group 'mime-display)
(defcustom mm-file-name-rewrite-functions
@@ -1253,8 +1260,10 @@ PROMPT overrides the default one used to ask user for a file name."
(or filename "")))
(or mm-default-directory default-directory)
(or filename "")))
- (when (file-directory-p file)
- (setq file (expand-file-name filename file)))
+ (if (file-directory-p file)
+ (setq file (expand-file-name filename file))
+ (setq file (expand-file-name
+ file (or mm-default-directory default-directory))))
(setq mm-default-directory (file-name-directory file))
(and (or (not (file-exists-p file))
(yes-or-no-p (format "File %s already exists; overwrite? "
@@ -1323,11 +1332,11 @@ Use CMD as the process."
"Display HANDLE using METHOD."
(let* ((type (mm-handle-media-type handle))
(methods
- (mapcar (lambda (i) (list (cdr (assoc 'viewer i))))
+ (mapcar (lambda (i) (cdr (assoc 'viewer i)))
(mailcap-mime-info type 'all)))
(method (let ((minibuffer-local-completion-map
mm-viewer-completion-map))
- (completing-read "Viewer: " methods))))
+ (gnus-completing-read "Viewer" methods))))
(when (string= method "")
(error "No method given"))
(if (string-match "^[^% \t]+$" method)
@@ -1674,6 +1683,42 @@ If RECURSIVE, search recursively."
(and (eq (mm-body-7-or-8) '7bit)
(not (mm-long-lines-p 76))))))
+(declare-function libxml-parse-html-region "xml.c"
+ (start end &optional base-url))
+(declare-function shr-insert-document "shr" (dom))
+(defvar shr-blocked-images)
+
+(defun mm-shr (handle)
+ ;; Require since we bind its variables.
+ (require 'shr)
+ (let ((article-buffer (current-buffer))
+ (shr-blocked-images (if (and (boundp 'gnus-summary-buffer)
+ (buffer-name gnus-summary-buffer))
+ (with-current-buffer gnus-summary-buffer
+ gnus-blocked-images)
+ shr-blocked-images))
+ (shr-content-function (lambda (id)
+ (let ((handle (mm-get-content-id id)))
+ (when handle
+ (mm-with-part handle
+ (buffer-string))))))
+ charset)
+ (unless handle
+ (setq handle (mm-dissect-buffer t)))
+ (setq charset (mail-content-type-get (mm-handle-type handle) 'charset))
+ (save-restriction
+ (narrow-to-region (point) (point))
+ (shr-insert-document
+ (mm-with-part handle
+ (when (and charset
+ (setq charset (mm-charset-to-coding-system charset))
+ (not (eq charset 'ascii)))
+ (insert (prog1
+ (mm-decode-coding-string (buffer-string) charset)
+ (erase-buffer)
+ (mm-enable-multibyte))))
+ (libxml-parse-html-region (point-min) (point-max)))))))
+
(provide 'mm-decode)
;;; mm-decode.el ends here
diff --git a/lisp/gnus/mm-encode.el b/lisp/gnus/mm-encode.el
index c6ca4c40d04..296a24351bb 100644
--- a/lisp/gnus/mm-encode.el
+++ b/lisp/gnus/mm-encode.el
@@ -42,15 +42,8 @@
If the encoding is `qp-or-base64', then either quoted-printable
or base64 will be used, depending on what is more efficient.
-`qp-or-base64' has another effect. It will fold long lines so that
-MIME parts may not be broken by MTA. So do `quoted-printable' and
-`base64'.
-
-Note: It affects body encoding only when a part is a raw forwarded
-message (which will be made by `gnus-summary-mail-forward' with the
-arg 2 for example) or is neither the text/* type nor the message/*
-type. Even though in those cases, you can use the `encoding' MML tag
-to specify encoding of non-ASCII MIME parts."
+This list is only consulted when encoding MIME parts in the
+bodies -- not for the regular non-MIME-ish messages."
:type '(repeat (list (regexp :tag "MIME type")
(choice :tag "encoding"
(const 7bit)
diff --git a/lisp/gnus/mm-extern.el b/lisp/gnus/mm-extern.el
index eee741f7f69..8363fe07c73 100644
--- a/lisp/gnus/mm-extern.el
+++ b/lisp/gnus/mm-extern.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index c997a36a1bd..b16e1d9556b 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -24,7 +24,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -68,11 +68,11 @@
. ,(lambda (prompt)
"Return a charset."
(intern
- (completing-read
+ (gnus-completing-read
prompt
- (mapcar (lambda (e) (list (symbol-name (car e))))
+ (mapcar (lambda (e) (symbol-name (car e)))
mm-mime-mule-charset-alist)
- nil t))))
+ t))))
;; `subst-char-in-string' is not available in XEmacs 21.4.
(subst-char-in-string
. ,(lambda (from to string &optional inplace)
@@ -281,8 +281,8 @@ to the contents of the accessible portion of the buffer."
'read-coding-system))
(t (lambda (prompt &optional default-coding-system)
"Prompt the user for a coding system."
- (completing-read
- prompt (mapcar (lambda (s) (list (symbol-name (car s))))
+ (gnus-completing-read
+ prompt (mapcar (lambda (s) (symbol-name (car s)))
mm-mime-mule-charset-alist)))))))
(defvar mm-coding-system-list nil)
@@ -316,8 +316,8 @@ the alias. Else windows-NUMBER is used."
(cp-supported-codepages)
;; Removed in Emacs 23 (unicode), so signal an error:
(error "`codepage-setup' not present in this Emacs version"))))
- (list (completing-read "Setup DOS Codepage: (default 437) " candidates
- nil t nil nil "437"))))
+ (list (gnus-completing-read "Setup DOS Codepage" candidates
+ t nil nil "437"))))
(when alias
(setq alias (if (stringp alias)
(intern alias)
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 1a2d940e2e5..11e475d21ec 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -22,6 +22,8 @@
;;; Commentary:
;;; Code:
+
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(eval-when-compile (require 'cl))
@@ -31,6 +33,8 @@
(require 'mm-decode)
(require 'smime)
+(autoload 'gnus-completing-read "gnus-util")
+(autoload 'gnus-window-inside-pixel-edges "gnus-ems")
(autoload 'gnus-article-prepare-display "gnus-art")
(autoload 'vcard-parse-string "vcard")
(autoload 'vcard-format-string "vcard")
@@ -75,6 +79,13 @@
:version "22.1"
:group 'mime-display)
+(defcustom mm-inline-large-images-proportion 0.9
+ "Maximum proportion of large image resized when
+`mm-inline-large-images' is set to resize."
+ :type 'float
+ :version "24.1"
+ :group 'mime-display)
+
;;; Internal variables.
;;;
@@ -84,7 +95,18 @@
(defun mm-inline-image-emacs (handle)
(let ((b (point-marker))
(inhibit-read-only t))
- (put-image (mm-get-image handle) b)
+ (put-image
+ (let ((image (mm-get-image handle)))
+ (if (eq mm-inline-large-images 'resize)
+ (gnus-rescale-image image
+ (let ((edges (gnus-window-inside-pixel-edges
+ (get-buffer-window (current-buffer)))))
+ (cons (truncate (* mm-inline-large-images-proportion
+ (- (nth 2 edges) (nth 0 edges))))
+ (truncate (* mm-inline-large-images-proportion
+ (- (nth 3 edges) (nth 1 edges)))))))
+ image))
+ b)
(insert "\n\n")
(mm-handle-set-undisplayer
handle
@@ -676,11 +698,9 @@
(if (= (length smime-keys) 1)
(cadar smime-keys)
(smime-get-key-by-email
- (completing-read
- (concat "Decipher using key"
- (if smime-keys (concat "(default " (caar smime-keys) "): ")
- ": "))
- smime-keys nil nil nil nil (car-safe (car-safe smime-keys))))))
+ (gnus-completing-read
+ "Decipher using key"
+ smime-keys nil nil nil (car-safe (car-safe smime-keys))))))
(goto-char (point-min))
(while (search-forward "\r\n" nil t)
(replace-match "\n"))
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index a99538be0af..33050fecaee 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -161,10 +161,10 @@ Whether the passphrase is cached at all is controlled by
"")))))
(and from (smime-get-key-by-email from)))
(smime-get-key-by-email
- (completing-read "Sign this part with what signature? "
- smime-keys nil nil
- (and (listp (car-safe smime-keys))
- (caar smime-keys))))))))
+ (gnus-completing-read "Sign this part with what signature"
+ (mapcar 'car smime-keys) nil nil nil
+ (and (listp (car-safe smime-keys))
+ (caar smime-keys))))))))
(defun mml-smime-get-file-cert ()
(ignore-errors
@@ -213,15 +213,16 @@ Whether the passphrase is cached at all is controlled by
(quit))
result))
-(autoload 'gnus-completing-read-with-default "gnus-util")
+(autoload 'gnus-completing-read "gnus-util")
(defun mml-smime-openssl-encrypt-query ()
;; todo: try dns/ldap automatically first, before prompting user
(let (certs done)
(while (not done)
- (ecase (read (gnus-completing-read-with-default
- "ldap" "Fetch certificate from"
- '(("dns") ("ldap") ("file")) nil t))
+ (ecase (read (gnus-completing-read
+ "Fetch certificate from"
+ '("dns" "ldap" "file") t nil nil
+ "ldap"))
(dns (setq certs (append certs
(mml-smime-get-dns-cert))))
(ldap (setq certs (append certs
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 15b1bb7096b..43e86cb6c34 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -23,7 +23,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -40,6 +40,7 @@
(autoload 'message-make-message-id "message")
(declare-function gnus-setup-posting-charset "gnus-msg" (group))
(autoload 'gnus-make-local-hook "gnus-util")
+(autoload 'gnus-completing-read "gnus-util")
(autoload 'message-fetch-field "message")
(autoload 'message-mark-active-p "message")
(autoload 'message-info "message")
@@ -1188,9 +1189,10 @@ If not set, `default-directory' will be used."
;; looks like, and offer text/plain if it looks
;; like text/plain.
"application/octet-stream"))
- (string (completing-read
- (format "Content type (default %s): " default)
- (mapcar 'list (mailcap-mime-types)))))
+ (string (gnus-completing-read
+ "Content type"
+ (mailcap-mime-types)
+ nil nil nil default)))
(if (not (equal string ""))
string
default)))
@@ -1204,10 +1206,10 @@ If not set, `default-directory' will be used."
(defun mml-minibuffer-read-disposition (type &optional default filename)
(unless default
(setq default (mml-content-disposition type filename)))
- (let ((disposition (completing-read
- (format "Disposition (default %s): " default)
- '(("attachment") ("inline") (""))
- nil t nil nil default)))
+ (let ((disposition (gnus-completing-read
+ "Disposition"
+ '("attachment" "inline")
+ t nil nil default)))
(if (not (equal disposition ""))
disposition
default)))
@@ -1395,11 +1397,11 @@ TYPE is the MIME type to use."
(defun mml-insert-multipart (&optional type)
(interactive (if (message-in-body-p)
- (list (completing-read "Multipart type (default mixed): "
- '(("mixed") ("alternative")
- ("digest") ("parallel")
- ("signed") ("encrypted"))
- nil nil "mixed"))
+ (list (gnus-completing-read "Multipart type"
+ '("mixed" "alternative"
+ "digest" "parallel"
+ "signed" "encrypted")
+ nil "mixed"))
(error "Use this command in the message body")))
(or type
(setq type "mixed"))
diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el
index 22eb7b66829..98e7903b015 100644
--- a/lisp/gnus/mml1991.el
+++ b/lisp/gnus/mml1991.el
@@ -26,8 +26,8 @@
;;; Code:
-;; For Emacs < 22.2.
(eval-and-compile
+ ;; For Emacs <22.2 and XEmacs.
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))
(if (locate-library "password-cache")
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index 675cafe3ac1..55ebf8cbf0d 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -28,8 +28,8 @@
;;; Code:
-;; For Emacs < 22.2.
(eval-and-compile
+ ;; For Emacs <22.2 and XEmacs.
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))
(if (locate-library "password-cache")
diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el
index 15e5e82c6f9..6c9ef1cef87 100644
--- a/lisp/gnus/nndoc.el
+++ b/lisp/gnus/nndoc.el
@@ -74,14 +74,14 @@ from the document.")
(mbox
(article-begin-function . nndoc-mbox-article-begin)
(body-end-function . nndoc-mbox-body-end))
- (mime-parts
- (generate-head-function . nndoc-generate-mime-parts-head)
- (article-transform-function . nndoc-transform-mime-parts))
(babyl
(article-begin . "\^_\^L *\n")
(body-end . "\^_")
(body-begin-function . nndoc-babyl-body-begin)
(head-begin-function . nndoc-babyl-head-begin))
+ (mime-parts
+ (generate-head-function . nndoc-generate-mime-parts-head)
+ (article-transform-function . nndoc-transform-mime-parts))
(exim-bounce
(article-begin . "^------ This is a copy of the message, including all the headers. ------\n\n")
(body-end-function . nndoc-exim-bounce-body-end-function))
@@ -280,6 +280,11 @@ from the document.")
(t
(nnheader-insert "211 %d %d %d %s\n" number 1 number group)))))
+(deffoo nndoc-retrieve-groups (groups &optional server)
+ (dolist (group groups)
+ (nndoc-request-group group server))
+ t)
+
(deffoo nndoc-request-type (group &optional article)
(cond ((not article) 'unknown)
(nndoc-post-type nndoc-post-type)
@@ -1033,7 +1038,7 @@ as the last checked definition, if t or `first', add as the
first definition, and if any other symbol, add after that
symbol in the alist."
;; First remove any old instances.
- (gnus-pull (car definition) nndoc-type-alist)
+ (gnus-alist-pull (car definition) nndoc-type-alist)
;; Then enter the new definition in the proper place.
(cond
((or (null position) (eq position 'last))
diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el
index 5dc51f321c5..98c14d4cab2 100644
--- a/lisp/gnus/nndraft.el
+++ b/lisp/gnus/nndraft.el
@@ -224,7 +224,7 @@ are generated if and only if they are also in `message-draft-headers'.")
(let* ((nnmh-allow-delete-final t)
(nnmail-expiry-target
(or (gnus-group-find-parameter
- (gnus-group-prefixed-name "nndraft" (list 'nndraft server))
+ (gnus-group-prefixed-name group (list 'nndraft server))
'expiry-target t)
nnmail-expiry-target))
(res (nnoo-parent-function 'nndraft
diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el
index c3d0d1cdb91..668b75a7838 100644
--- a/lisp/gnus/nnfolder.el
+++ b/lisp/gnus/nnfolder.el
@@ -29,7 +29,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/nnheader.el b/lisp/gnus/nnheader.el
index b97fe5f8079..4bf4588687e 100644
--- a/lisp/gnus/nnheader.el
+++ b/lisp/gnus/nnheader.el
@@ -27,6 +27,7 @@
;;; Code:
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(eval-when-compile (require 'cl))
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index a61a02899cc..bb9f5691984 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -26,6 +26,10 @@
;;; Code:
+;; For Emacs <22.2 and XEmacs.
+(eval-and-compile
+ (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+
(eval-and-compile
(require 'nnheader))
@@ -38,6 +42,7 @@
(require 'nnoo)
(require 'netrc)
(require 'utf7)
+(require 'tls)
(require 'parse-time)
(autoload 'auth-source-forget-user-or-password "auth-source")
@@ -70,6 +75,12 @@ Values are `ssl', `network', `starttls' or `shell'.")
"How mail is split.
Uses the same syntax as nnmail-split-methods")
+(defvoo nnimap-split-fancy nil
+ "Uses the same syntax as nnmail-split-fancy.")
+
+(make-obsolete-variable 'nnimap-split-rule "see `nnimap-split-methods'"
+ "Emacs 24.1")
+
(defvoo nnimap-authenticator nil
"How nnimap authenticate itself to the server.
Possible choices are nil (use default methods) or `anonymous'.")
@@ -277,6 +288,8 @@ textual parts.")
(* 5 60)))
(nnimap-send-command "NOOP")))))))
+(declare-function gnutls-negotiate "subr" (fn file &optional arglist fileonly))
+
(defun nnimap-open-connection (buffer)
(unless nnimap-keepalive-timer
(setq nnimap-keepalive-timer (run-at-time (* 60 15) (* 60 15)
@@ -288,7 +301,10 @@ textual parts.")
(port nil)
(ports
(cond
- ((eq nnimap-stream 'network)
+ ((or (eq nnimap-stream 'network)
+ (and (eq nnimap-stream 'starttls)
+ (fboundp 'open-gnutls-stream)))
+ (message "Opening connection to %s..." nnimap-address)
(open-network-stream
"*nnimap*" (current-buffer) nnimap-address
(setq port
@@ -298,24 +314,34 @@ textual parts.")
"143"))))
'("143" "imap"))
((eq nnimap-stream 'shell)
+ (message "Opening connection to %s via shell..." nnimap-address)
(nnimap-open-shell-stream
"*nnimap*" (current-buffer) nnimap-address
(setq port (or nnimap-server-port "imap")))
'("imap"))
((eq nnimap-stream 'starttls)
- (starttls-open-stream
- "*nnimap*" (current-buffer) nnimap-address
- (setq port (or nnimap-server-port "imap")))
+ (message "Opening connection to %s via starttls..."
+ nnimap-address)
+ (let ((tls-program
+ '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof -starttls imap")))
+ (open-tls-stream
+ "*nnimap*" (current-buffer) nnimap-address
+ (setq port (or nnimap-server-port "imap"))))
'("imap"))
- ((eq nnimap-stream 'ssl)
- (open-tls-stream
- "*nnimap*" (current-buffer) nnimap-address
- (setq port
- (or nnimap-server-port
- (if (netrc-find-service-number "imaps")
- "imaps"
- "993"))))
- '("143" "993" "imap" "imaps"))))
+ ((memq nnimap-stream '(ssl tls))
+ (message "Opening connection to %s via tls..." nnimap-address)
+ (funcall (if (fboundp 'open-gnutls-stream)
+ 'open-gnutls-stream
+ 'open-tls-stream)
+ "*nnimap*" (current-buffer) nnimap-address
+ (setq port
+ (or nnimap-server-port
+ (if (netrc-find-service-number "imaps")
+ "imaps"
+ "993"))))
+ '("143" "993" "imap" "imaps"))
+ (t
+ (error "Unknown stream type: %s" nnimap-stream))))
connection-result login-result credentials)
(setf (nnimap-process nnimap-object)
(get-buffer-process (current-buffer)))
@@ -324,7 +350,8 @@ textual parts.")
'(open run))))
(nnheader-report 'nnimap "Unable to contact %s:%s via %s"
nnimap-address port nnimap-stream)
- (gnus-set-process-query-on-exit-flag (nnimap-process nnimap-object) nil)
+ (gnus-set-process-query-on-exit-flag
+ (nnimap-process nnimap-object) nil)
(if (not (setq connection-result (nnimap-wait-for-connection)))
(nnheader-report 'nnimap
"%s" (buffer-substring
@@ -339,20 +366,31 @@ textual parts.")
#'upcase
(nnimap-find-parameter
"CAPABILITY" (cdr (nnimap-command "CAPABILITY")))))
- (when (eq nnimap-stream 'starttls)
- (nnimap-command "STARTTLS")
- (starttls-negotiate (nnimap-process nnimap-object)))
+ (when nnimap-server-port
+ (push (format "%s" nnimap-server-port) ports))
;; If this is a STARTTLS-capable server, then sever the
;; connection and start a STARTTLS connection instead.
- (when (and (eq nnimap-stream 'network)
- (member "STARTTLS" (nnimap-capabilities nnimap-object)))
+ (cond
+ ((and (or (and (eq nnimap-stream 'network)
+ (member "STARTTLS"
+ (nnimap-capabilities nnimap-object)))
+ (eq nnimap-stream 'starttls))
+ (fboundp 'open-gnutls-stream))
+ (nnimap-command "STARTTLS")
+ (gnutls-negotiate (nnimap-process nnimap-object) nil))
+ ((and (eq nnimap-stream 'network)
+ (member "STARTTLS" (nnimap-capabilities nnimap-object)))
(let ((nnimap-stream 'starttls))
- (delete-process (nnimap-process nnimap-object))
- (kill-buffer (current-buffer))
- (return
- (nnimap-open-connection buffer))))
- (when nnimap-server-port
- (push (format "%s" nnimap-server-port) ports))
+ (let ((tls-process
+ (nnimap-open-connection buffer)))
+ ;; If the STARTTLS connection was successful, we
+ ;; kill our first non-encrypted connection. If it
+ ;; wasn't successful, we just use our unencrypted
+ ;; connection.
+ (when (memq (process-status tls-process) '(open run))
+ (delete-process (nnimap-process nnimap-object))
+ (kill-buffer (current-buffer))
+ (return tls-process))))))
(unless (equal connection-result "PREAUTH")
(if (not (setq credentials
(if (eq nnimap-authenticator 'anonymous)
@@ -384,7 +422,7 @@ textual parts.")
(when nnimap-object
(when (member "QRESYNC" (nnimap-capabilities nnimap-object))
(nnimap-command "ENABLE QRESYNC"))
- t)))))))
+ (nnimap-process nnimap-object))))))))
(defun nnimap-find-parameter (parameter elems)
(let (result)
@@ -399,7 +437,11 @@ textual parts.")
result))
(deffoo nnimap-close-server (&optional server)
- t)
+ (when (nnoo-change-server 'nnimap server nil)
+ (ignore-errors
+ (delete-process (get-buffer-process (nnimap-buffer))))
+ (nnoo-close-server 'nnimap server)
+ t))
(deffoo nnimap-request-close ()
t)
@@ -428,7 +470,12 @@ textual parts.")
(nnimap-command "UID FETCH %d (BODYSTRUCTURE)" article)
(goto-char (point-min))
(when (re-search-forward "FETCH.*BODYSTRUCTURE" nil t)
- (setq structure (ignore-errors (read (current-buffer)))
+ (setq structure (ignore-errors
+ (let ((start (point)))
+ (forward-sexp 1)
+ (downcase-region start (point))
+ (goto-char (point))
+ (read (current-buffer))))
parts (nnimap-find-wanted-parts structure))))
(when (if parts
(nnimap-get-partial-article article parts structure)
@@ -509,8 +556,15 @@ textual parts.")
t))
(defun nnimap-insert-partial-structure (structure parts &optional subp)
- (let ((type (car (last structure 4)))
- (boundary (cadr (member "BOUNDARY" (car (last structure 3))))))
+ (let (type boundary)
+ (let ((bstruc structure))
+ (while (consp (car bstruc))
+ (pop bstruc))
+ (setq type (car bstruc))
+ (setq bstruc (car (cdr bstruc)))
+ (when (and (stringp (car bstruc))
+ (string= (downcase (car bstruc)) "boundary"))
+ (setq boundary (cadr bstruc))))
(when subp
(insert (format "Content-type: multipart/%s; boundary=%S\n\n"
(downcase type) boundary)))
@@ -581,15 +635,18 @@ textual parts.")
(setq marks
(nnimap-flags-to-marks
(nnimap-parse-flags
- (list (list group-sequence flag-sequence 1 group)))))
- (when info
+ (list (list group-sequence flag-sequence
+ 1 group "SELECT")))))
+ (when (and info
+ marks)
(nnimap-update-infos marks (list info)))
(goto-char (point-max))
(let ((uidnext (nth 5 (car marks))))
- (setq high (if uidnext
- (1- uidnext)
- (nth 3 (car marks)))
- low (or (nth 4 (car marks)) uidnext)))))
+ (setq high (or (if uidnext
+ (1- uidnext)
+ (nth 3 (car marks)))
+ 0)
+ low (or (nth 4 (car marks)) uidnext 1)))))
(erase-buffer)
(insert
(format
@@ -606,6 +663,18 @@ textual parts.")
(with-current-buffer (nnimap-buffer)
(car (nnimap-command "DELETE %S" (utf7-encode group t))))))
+(deffoo nnimap-request-rename-group (group new-name &optional server)
+ (when (nnimap-possibly-change-group nil server)
+ (with-current-buffer (nnimap-buffer)
+ ;; Make sure we don't have this group open read/write by asking
+ ;; to examine a mailbox that doesn't exist. This seems to be
+ ;; the only way that allows us to reliably go back to unselected
+ ;; state on Courier.
+ (nnimap-command "EXAMINE DOES.NOT.EXIST")
+ (setf (nnimap-group nnimap-object) nil)
+ (car (nnimap-command "RENAME %S %S"
+ (utf7-encode group t) (utf7-encode new-name t))))))
+
(deffoo nnimap-request-expunge-group (group &optional server)
(when (nnimap-possibly-change-group group server)
(with-current-buffer (nnimap-buffer)
@@ -613,16 +682,19 @@ textual parts.")
(defun nnimap-get-flags (spec)
(let ((articles nil)
- elems)
+ elems end)
(with-current-buffer (nnimap-buffer)
(erase-buffer)
(nnimap-wait-for-response (nnimap-send-command
"UID FETCH %s FLAGS" spec))
+ (setq end (point))
+ (subst-char-in-region (point-min) (point-max)
+ ?\\ ?% t)
(goto-char (point-min))
- (while (re-search-forward "^\\* [0-9]+ FETCH (\\(.*\\))" nil t)
- (setq elems (nnimap-parse-line (match-string 1)))
- (push (cons (string-to-number (cadr (member "UID" elems)))
- (cadr (member "FLAGS" elems)))
+ (while (search-forward " FETCH " end t)
+ (setq elems (read (current-buffer)))
+ (push (cons (cadr (memq 'UID elems))
+ (cadr (memq 'FLAGS elems)))
articles)))
(nreverse articles)))
@@ -723,16 +795,20 @@ textual parts.")
(defun nnimap-find-article-by-message-id (group message-id)
- (when (nnimap-possibly-change-group group nil)
- (with-current-buffer (nnimap-buffer)
- (let ((result
- (nnimap-command "UID SEARCH HEADER Message-Id %S" message-id))
- article)
- (when (car result)
- ;; Select the last instance of the message in the group.
- (and (setq article
- (car (last (assoc "SEARCH" (cdr result)))))
- (string-to-number article)))))))
+ (with-current-buffer (nnimap-buffer)
+ (erase-buffer)
+ (setf (nnimap-group nnimap-object) nil)
+ (nnimap-send-command "EXAMINE %S" (utf7-encode group t))
+ (let ((sequence
+ (nnimap-send-command "UID SEARCH HEADER Message-Id %S" message-id))
+ article result)
+ (setq result (nnimap-wait-for-response sequence))
+ (when (and result
+ (car (setq result (nnimap-parse-response))))
+ ;; Select the last instance of the message in the group.
+ (and (setq article
+ (car (last (assoc "SEARCH" (cdr result)))))
+ (string-to-number article))))))
(defun nnimap-delete-article (articles)
(with-current-buffer (nnimap-buffer)
@@ -768,6 +844,7 @@ textual parts.")
(when (nnimap-possibly-change-group group server)
(let (sequence)
(with-current-buffer (nnimap-buffer)
+ (erase-buffer)
;; Just send all the STORE commands without waiting for
;; response. If they're successful, they're successful.
(dolist (action actions)
@@ -789,9 +866,10 @@ textual parts.")
(deffoo nnimap-request-accept-article (group &optional server last)
(when (nnimap-possibly-change-group nil server)
(nnmail-check-syntax)
- (let ((message (buffer-string))
- (message-id (message-field-value "message-id"))
- sequence)
+ (let ((message-id (message-field-value "message-id"))
+ sequence message)
+ (nnimap-add-cr)
+ (setq message (buffer-string))
(with-current-buffer (nnimap-buffer)
(setq sequence (nnimap-send-command
"APPEND %S {%d}" (utf7-encode group t)
@@ -869,44 +947,61 @@ textual parts.")
(or highest exists)))))))))
t))))
+(deffoo nnimap-request-newgroups (date &optional server)
+ (nnimap-possibly-change-group nil server)
+ (with-current-buffer nntp-server-buffer
+ (erase-buffer)
+ (dolist (group (with-current-buffer (nnimap-buffer)
+ (nnimap-get-groups)))
+ (unless (assoc group nnimap-current-infos)
+ ;; Insert dummy numbers here -- they don't matter.
+ (insert (format "%S 0 1 y\n" group))))
+ t))
+
(deffoo nnimap-retrieve-group-data-early (server infos)
(when (nnimap-possibly-change-group nil server)
(with-current-buffer (nnimap-buffer)
+ (erase-buffer)
+ (setf (nnimap-group nnimap-object) nil)
;; QRESYNC handling isn't implemented.
- (let ((qresyncp (member "notQRESYNC" (nnimap-capabilities nnimap-object)))
- marks groups sequences)
+ (let ((qresyncp (member "QRESYNC" (nnimap-capabilities nnimap-object)))
+ params groups sequences active uidvalidity modseq group)
;; Go through the infos and gather the data needed to know
;; what and how to request the data.
(dolist (info infos)
- (setq marks (gnus-info-marks info))
- (push (list (gnus-group-real-name (gnus-info-group info))
- (cdr (assq 'active marks))
- (cdr (assq 'uid marks)))
- groups))
- ;; Then request the data.
- (erase-buffer)
- (setf (nnimap-group nnimap-object) nil)
- (dolist (elem groups)
+ (setq params (gnus-info-params info)
+ group (gnus-group-real-name (gnus-info-group info))
+ active (cdr (assq 'active params))
+ uidvalidity (cdr (assq 'uidvalidity params))
+ modseq (cdr (assq 'modseq params)))
(if (and qresyncp
- (nth 2 elem))
+ uidvalidity
+ modseq)
(push
- (list 'qresync
- (nnimap-send-command "EXAMINE %S (QRESYNC (%s %s))"
- (car elem)
- (car (nth 2 elem))
- (cdr (nth 2 elem)))
- nil
- (car elem))
+ (list (nnimap-send-command "EXAMINE %S (QRESYNC (%s %s))"
+ (utf7-encode group t)
+ uidvalidity modseq)
+ 'qresync
+ nil group 'qresync)
sequences)
(let ((start
- (if (nth 1 elem)
+ (if (and active uidvalidity)
;; Fetch the last 100 flags.
- (max 1 (- (cdr (nth 1 elem)) 100))
- 1)))
- (push (list (nnimap-send-command "EXAMINE %S" (car elem))
+ (max 1 (- (cdr active) 100))
+ 1))
+ (command
+ (if uidvalidity
+ "EXAMINE"
+ ;; If we don't have a UIDVALIDITY, then this is
+ ;; the first time we've seen the group, so we
+ ;; have to do a SELECT (which is slower than an
+ ;; examine), but will tell us whether the group
+ ;; is read-only or not.
+ "SELECT")))
+ (push (list (nnimap-send-command "%s %S" command
+ (utf7-encode group t))
(nnimap-send-command "UID FETCH %d:* FLAGS" start)
- start
- (car elem))
+ start group command)
sequences)))
;; Some servers apparently can't have many outstanding
;; commands, so throttle them.
@@ -920,10 +1015,13 @@ textual parts.")
(nnimap-possibly-change-group nil server))
(with-current-buffer (nnimap-buffer)
;; Wait for the final data to trickle in.
- (when (nnimap-wait-for-response (cadar sequences))
- ;; Now we should have all the data we need, no matter whether
- ;; we're QRESYNCING, fetching all the flags from scratch, or
- ;; just fetching the last 100 flags per group.
+ (when (nnimap-wait-for-response (if (eq (cadar sequences) 'qresync)
+ (caar sequences)
+ (cadar sequences))
+ t)
+ ;; Now we should have most of the data we need, no matter
+ ;; whether we're QRESYNCING, fetching all the flags from
+ ;; scratch, or just fetching the last 100 flags per group.
(nnimap-update-infos (nnimap-flags-to-marks
(nnimap-parse-flags
(nreverse sequences)))
@@ -943,16 +1041,40 @@ textual parts.")
(defun nnimap-update-infos (flags infos)
(dolist (info infos)
- (let ((group (gnus-group-real-name (gnus-info-group info))))
- (nnimap-update-info info (cdr (assoc group flags))))))
+ (let* ((group (gnus-group-real-name (gnus-info-group info)))
+ (marks (cdr (assoc group flags))))
+ (when marks
+ (nnimap-update-info info marks)))))
(defun nnimap-update-info (info marks)
- (when marks
- (destructuring-bind (existing flags high low uidnext start-article
- permanent-flags) marks
- (let ((group (gnus-info-group info))
- (completep (and start-article
- (= start-article 1))))
+ (destructuring-bind (existing flags high low uidnext start-article
+ permanent-flags uidvalidity
+ vanished highestmodseq) marks
+ (cond
+ ;; Ignore groups with no UIDNEXT/marks. This happens for
+ ;; completely empty groups.
+ ((and (not existing)
+ (not uidnext))
+ (let ((active (cdr (assq 'active (gnus-info-params info)))))
+ (when active
+ (gnus-set-active (gnus-info-group info) active))))
+ ;; We have a mismatch between the old and new UIDVALIDITY
+ ;; identifiers, so we have to re-request the group info (the next
+ ;; time). This virtually never happens.
+ ((let ((old-uidvalidity
+ (cdr (assq 'uidvalidity (gnus-info-params info)))))
+ (and old-uidvalidity
+ (not (equal old-uidvalidity uidvalidity))
+ (> start-article 1)))
+ (gnus-group-remove-parameter info 'uidvalidity)
+ (gnus-group-remove-parameter info 'modseq))
+ ;; We have the data needed to update.
+ (t
+ (let* ((group (gnus-info-group info))
+ (completep (and start-article
+ (= start-article 1)))
+ (active (or (gnus-active group)
+ (cdr (assq 'active (gnus-info-params info))))))
(when uidnext
(setq high (1- uidnext)))
;; First set the active ranges based on high/low.
@@ -965,6 +1087,8 @@ textual parts.")
(uidnext
;; No articles in this group.
(cons uidnext (1- uidnext)))
+ (active
+ active)
(start-article
(cons start-article (1- start-article)))
(t
@@ -972,57 +1096,113 @@ textual parts.")
nil)))
(gnus-set-active
group
- (cons (car (gnus-active group))
+ (cons (car active)
(or high (1- uidnext)))))
- (when (and (not high)
- uidnext)
- (setq high (1- uidnext)))
- ;; Then update the list of read articles.
- (let* ((unread
- (gnus-compress-sequence
- (gnus-set-difference
- (gnus-set-difference
- existing
- (cdr (assoc '%Seen flags)))
- (cdr (assoc '%Flagged flags)))))
- (read (gnus-range-difference
- (cons start-article high) unread)))
- (when (> start-article 1)
- (setq read
- (gnus-range-nconcat
- (if (> start-article 1)
- (gnus-sorted-range-intersection
- (cons 1 (1- start-article))
- (gnus-info-read info))
- (gnus-info-read info))
- read)))
- (gnus-info-set-read info read)
- ;; Update the marks.
- (setq marks (gnus-info-marks info))
- ;; Note the active level for the next run-through.
- (let ((active (assq 'active marks)))
- (if active
- (setcdr active (gnus-active group))
- (push (cons 'active (gnus-active group)) marks)))
- (dolist (type (cdr nnimap-mark-alist))
- (let ((old-marks (assoc (car type) marks))
- (new-marks
- (gnus-compress-sequence
- (cdr (or (assoc (caddr type) flags) ; %Flagged
- (assoc (intern (cadr type) obarray) flags)
- (assoc (cadr type) flags)))))) ; "\Flagged"
- (setq marks (delq old-marks marks))
- (pop old-marks)
- (when (and old-marks
- (> start-article 1))
- (setq old-marks (gnus-range-difference
- old-marks
- (cons start-article high)))
- (setq new-marks (gnus-range-nconcat old-marks new-marks)))
- (when new-marks
- (push (cons (car type) new-marks) marks)))
- (gnus-info-set-marks info marks t)
- (nnimap-store-info info (gnus-active group))))))))
+ ;; See whether this is a read-only group.
+ (unless (eq permanent-flags 'not-scanned)
+ (gnus-group-set-parameter
+ info 'permanent-flags
+ (if (memq '%* permanent-flags)
+ t
+ nil)))
+ ;; Update marks and read articles if this isn't a
+ ;; read-only IMAP group.
+ (when (cdr (assq 'permanent-flags (gnus-info-params info)))
+ (if (and highestmodseq
+ (not start-article))
+ ;; We've gotten the data by QRESYNCing.
+ (nnimap-update-qresync-info
+ info existing (nnimap-imap-ranges-to-gnus-ranges vanished) flags)
+ ;; Do normal non-QRESYNC flag updates.
+ ;; Update the list of read articles.
+ (let* ((unread
+ (gnus-compress-sequence
+ (gnus-set-difference
+ (gnus-set-difference
+ existing
+ (cdr (assoc '%Seen flags)))
+ (cdr (assoc '%Flagged flags)))))
+ (read (gnus-range-difference
+ (cons start-article high) unread)))
+ (when (> start-article 1)
+ (setq read
+ (gnus-range-nconcat
+ (if (> start-article 1)
+ (gnus-sorted-range-intersection
+ (cons 1 (1- start-article))
+ (gnus-info-read info))
+ (gnus-info-read info))
+ read)))
+ (gnus-info-set-read info read)
+ ;; Update the marks.
+ (setq marks (gnus-info-marks info))
+ (dolist (type (cdr nnimap-mark-alist))
+ (let ((old-marks (assoc (car type) marks))
+ (new-marks
+ (gnus-compress-sequence
+ (cdr (or (assoc (caddr type) flags) ; %Flagged
+ (assoc (intern (cadr type) obarray) flags)
+ (assoc (cadr type) flags)))))) ; "\Flagged"
+ (setq marks (delq old-marks marks))
+ (pop old-marks)
+ (when (and old-marks
+ (> start-article 1))
+ (setq old-marks (gnus-range-difference
+ old-marks
+ (cons start-article high)))
+ (setq new-marks (gnus-range-nconcat old-marks new-marks)))
+ (when new-marks
+ (push (cons (car type) new-marks) marks)))
+ (gnus-info-set-marks info marks t)))))
+ ;; Note the active level for the next run-through.
+ (gnus-group-set-parameter info 'active (gnus-active group))
+ (gnus-group-set-parameter info 'uidvalidity uidvalidity)
+ (gnus-group-set-parameter info 'modseq highestmodseq)
+ (nnimap-store-info info (gnus-active group)))))))
+
+(defun nnimap-update-qresync-info (info existing vanished flags)
+ ;; Add all the vanished articles to the list of read articles.
+ (gnus-info-set-read
+ info
+ (gnus-add-to-range
+ (gnus-add-to-range
+ (gnus-range-add (gnus-info-read info)
+ vanished)
+ (cdr (assq '%Flagged flags)))
+ (cdr (assq '%Seen flags))))
+ (let ((marks (gnus-info-marks info)))
+ (dolist (type (cdr nnimap-mark-alist))
+ (let ((ticks (assoc (car type) marks))
+ (new-marks
+ (cdr (or (assoc (caddr type) flags) ; %Flagged
+ (assoc (intern (cadr type) obarray) flags)
+ (assoc (cadr type) flags))))) ; "\Flagged"
+ (setq marks (delq ticks marks))
+ (pop ticks)
+ ;; Add the new marks we got.
+ (setq ticks (gnus-add-to-range ticks new-marks))
+ ;; Remove the marks from messages that don't have them.
+ (setq ticks (gnus-remove-from-range
+ ticks
+ (gnus-compress-sequence
+ (gnus-sorted-complement existing new-marks))))
+ (when ticks
+ (push (cons (car type) ticks) marks)))
+ (gnus-info-set-marks info marks t))))
+
+(defun nnimap-imap-ranges-to-gnus-ranges (irange)
+ (if (zerop (length irange))
+ nil
+ (let ((result nil))
+ (dolist (elem (split-string irange ","))
+ (push
+ (if (string-match ":" elem)
+ (let ((numbers (split-string elem ":")))
+ (cons (string-to-number (car numbers))
+ (string-to-number (cadr numbers))))
+ (string-to-number elem))
+ result))
+ (nreverse result))))
(defun nnimap-store-info (info active)
(let* ((group (gnus-group-real-name (gnus-info-group info)))
@@ -1032,13 +1212,17 @@ textual parts.")
(push (list group info active) nnimap-current-infos))))
(defun nnimap-flags-to-marks (groups)
- (let (data group totalp uidnext articles start-article mark permanent-flags)
+ (let (data group totalp uidnext articles start-article mark permanent-flags
+ uidvalidity vanished highestmodseq)
(dolist (elem groups)
(setq group (car elem)
uidnext (nth 1 elem)
start-article (nth 2 elem)
permanent-flags (nth 3 elem)
- articles (nthcdr 4 elem))
+ uidvalidity (nth 4 elem)
+ vanished (nth 5 elem)
+ highestmodseq (nth 6 elem)
+ articles (nthcdr 7 elem))
(let ((high (caar articles))
marks low existing)
(dolist (article articles)
@@ -1050,7 +1234,7 @@ textual parts.")
(push (list flag (car article)) marks)
(setcdr mark (cons (car article) (cdr mark))))))
(push (list group existing marks high low uidnext start-article
- permanent-flags)
+ permanent-flags uidvalidity vanished highestmodseq)
data)))
data))
@@ -1059,38 +1243,69 @@ textual parts.")
;; Change \Delete etc to %Delete, so that the reader can read it.
(subst-char-in-region (point-min) (point-max)
?\\ ?% t)
- (let (start end articles groups uidnext elems permanent-flags)
+ (let (start end articles groups uidnext elems permanent-flags
+ uidvalidity vanished highestmodseq)
(dolist (elem sequences)
- (destructuring-bind (group-sequence flag-sequence totalp group) elem
+ (destructuring-bind (group-sequence flag-sequence totalp group command)
+ elem
(setq start (point))
- ;; The EXAMINE was successful.
- (when (and (search-forward (format "\n%d OK " group-sequence) nil t)
- (progn
- (forward-line 1)
- (setq end (point))
- (goto-char start)
- (setq permanent-flags
+ (when (and
+ ;; The EXAMINE was successful.
+ (search-forward (format "\n%d OK " group-sequence) nil t)
+ (progn
+ (forward-line 1)
+ (setq end (point))
+ (goto-char start)
+ (setq permanent-flags
+ (if (equal command "SELECT")
(and (search-forward "PERMANENTFLAGS "
- (or end (point-min)) t)
- (read (current-buffer))))
- (goto-char start)
- (setq uidnext
- (and (search-forward "UIDNEXT "
- (or end (point-min)) t)
- (read (current-buffer))))
- (goto-char end)
- (forward-line -1))
- ;; The UID FETCH FLAGS was successful.
- (search-forward (format "\n%d OK " flag-sequence) nil t))
- (setq start (point))
- (goto-char end)
- (while (search-forward " FETCH " start t)
+ (or end (point-min)) t)
+ (read (current-buffer)))
+ 'not-scanned))
+ (goto-char start)
+ (setq uidnext
+ (and (search-forward "UIDNEXT "
+ (or end (point-min)) t)
+ (read (current-buffer))))
+ (goto-char start)
+ (setq uidvalidity
+ (and (re-search-forward "UIDVALIDITY \\([0-9]+\\)"
+ (or end (point-min)) t)
+ ;; Store UIDVALIDITY as a string, as it's
+ ;; too big for 32-bit Emacsen, usually.
+ (match-string 1)))
+ (goto-char start)
+ (setq vanished
+ (and (eq flag-sequence 'qresync)
+ (re-search-forward "VANISHED.* \\([0-9:,]+\\)"
+ (or end (point-min)) t)
+ (match-string 1)))
+ (goto-char start)
+ (setq highestmodseq
+ (and (search-forward "HIGHESTMODSEQ "
+ (or end (point-min)) t)
+ (read (current-buffer))))
+ (goto-char end)
+ (forward-line -1))
+ ;; The UID FETCH FLAGS was successful.
+ (or (eq flag-sequence 'qresync)
+ (search-forward (format "\n%d OK " flag-sequence) nil t)))
+ (if (eq flag-sequence 'qresync)
+ (progn
+ (goto-char start)
+ (setq start end))
+ (setq start (point))
+ (goto-char end))
+ (while (re-search-forward "^\\* [0-9]+ FETCH " start t)
(setq elems (read (current-buffer)))
(push (cons (cadr (memq 'UID elems))
(cadr (memq 'FLAGS elems)))
articles))
- (push (nconc (list group uidnext totalp permanent-flags) articles)
+ (push (nconc (list group uidnext totalp permanent-flags uidvalidity
+ vanished highestmodseq)
+ articles)
groups)
+ (goto-char end)
(setq articles nil))))
groups))
@@ -1101,6 +1316,25 @@ textual parts.")
(setq nnimap-status-string "Read-only server")
nil)
+(deffoo nnimap-request-thread (id)
+ (let* ((refs (split-string
+ (or (mail-header-references (gnus-summary-article-header))
+ "")))
+ (cmd (let ((value
+ (format
+ "(OR HEADER REFERENCES %s HEADER Message-Id %s)"
+ id id)))
+ (dolist (refid refs value)
+ (setq value (format
+ "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)"
+ refid refid value)))))
+ (result
+ (with-current-buffer (nnimap-buffer)
+ (nnimap-command "UID SEARCH %s" cmd))))
+ (gnus-fetch-headers (and (car result)
+ (delete 0 (mapcar #'string-to-number
+ (cdr (assoc "SEARCH" (cdr result)))))))))
+
(defun nnimap-possibly-change-group (group server)
(let ((open-result t))
(when (and server
@@ -1175,30 +1409,38 @@ textual parts.")
(goto-char (point-min))
(while (and (memq (process-status process)
'(open run))
- (not (re-search-forward "^\\* .*\n" nil t)))
+ (not (re-search-forward "^[*.] .*\n" nil t)))
(nnheader-accept-process-output process)
(goto-char (point-min)))
(forward-line -1)
- (and (looking-at "\\* \\([A-Z0-9]+\\)")
+ (and (looking-at "[*.] \\([A-Z0-9]+\\)")
(match-string 1))))
(defun nnimap-wait-for-response (sequence &optional messagep)
(let ((process (get-buffer-process (current-buffer)))
openp)
- (goto-char (point-max))
- (while (and (setq openp (memq (process-status process)
- '(open run)))
- (not (re-search-backward
- (format "^%d .*\n" sequence)
- (if nnimap-streaming
- (max (point-min) (- (point) 500))
- (point-min))
- t)))
- (when messagep
- (message "Read %dKB" (/ (buffer-size) 1000)))
- (nnheader-accept-process-output process)
- (goto-char (point-max)))
- openp))
+ (condition-case nil
+ (progn
+ (goto-char (point-max))
+ (while (and (setq openp (memq (process-status process)
+ '(open run)))
+ (not (re-search-backward
+ (format "^%d .*\n" sequence)
+ (if nnimap-streaming
+ (max (point-min) (- (point) 500))
+ (point-min))
+ t)))
+ (when messagep
+ (message "nnimap read %dk" (/ (buffer-size) 1000)))
+ (nnheader-accept-process-output process)
+ (goto-char (point-max)))
+ openp)
+ (quit
+ ;; The user hit C-g while we were waiting: kill the process, in case
+ ;; it's a gnutls-cli process that's stuck (tends to happen a lot behind
+ ;; NAT routers).
+ (delete-process process)
+ nil))))
(defun nnimap-parse-response ()
(let ((lines (split-string (nnimap-last-response-string) "\r\n" t))
@@ -1224,13 +1466,15 @@ textual parts.")
(push
(cond
((eql char ?\[)
- (split-string (buffer-substring
- (1+ (point))
- (1- (search-forward "]" (line-end-position) 'move)))))
+ (split-string
+ (buffer-substring
+ (1+ (point))
+ (1- (search-forward "]" (line-end-position) 'move)))))
((eql char ?\()
- (split-string (buffer-substring
- (1+ (point))
- (1- (search-forward ")" (line-end-position) 'move)))))
+ (split-string
+ (buffer-substring
+ (1+ (point))
+ (1- (search-forward ")" (line-end-position) 'move)))))
((eql char ?\")
(forward-char 1)
(buffer-substring
@@ -1288,7 +1532,11 @@ textual parts.")
(defun nnimap-split-incoming-mail ()
(with-current-buffer (nnimap-buffer)
(let ((nnimap-incoming-split-list nil)
- (nnmail-split-methods nnimap-split-methods)
+ (nnmail-split-methods (if (eq nnimap-split-methods 'default)
+ nnmail-split-methods
+ nnimap-split-methods))
+ (nnmail-split-fancy (or nnimap-split-fancy
+ nnmail-split-fancy))
(nnmail-inhibit-default-split-group t)
(groups (nnimap-get-groups))
new-articles)
@@ -1339,6 +1587,7 @@ textual parts.")
(defun nnimap-mark-and-expunge-incoming (range)
(when range
(setq range (nnimap-article-ranges range))
+ (erase-buffer)
(let ((sequence
(nnimap-send-command
"UID STORE %s +FLAGS.SILENT (\\Deleted)" range)))
@@ -1402,8 +1651,10 @@ textual parts.")
(forward-char (1+ bytes))
(setq bytes (nnimap-get-length))
(delete-region (line-beginning-position) (line-end-position))
- (forward-char (1+ bytes))
- (delete-region (line-beginning-position) (line-end-position))))))
+ ;; There's a body; skip past that.
+ (when bytes
+ (forward-char (1+ bytes))
+ (delete-region (line-beginning-position) (line-end-position)))))))
(defun nnimap-dummy-active-number (group &optional server)
1)
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index db8b3971787..2a264d1fa32 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -339,23 +339,34 @@
(eval-when-compile
(require 'cl))
+
+(eval-when-compile
+ (autoload 'nnimap-buffer "nnimap")
+ (autoload 'nnimap-command "nnimap")
+ (autoload 'nnimap-possibly-change-group "nnimap"))
+
(nnoo-declare nnir)
(nnoo-define-basics nnir)
(gnus-declare-backend "nnir" 'mail)
-(defvar nnir-imap-search-field "TEXT"
- "The IMAP search item when doing an nnir search. To use raw
- imap queries by default set this to \"\"")
+(defvar nnir-imap-default-search-key "Whole message"
+ "The default IMAP search key for an nnir search. Must be one of
+ the keys in nnir-imap-search-arguments. To use raw imap queries
+ by default set this to \"Imap\"")
(defvar nnir-imap-search-arguments
'(("Whole message" . "TEXT")
("Subject" . "SUBJECT")
("To" . "TO")
("From" . "FROM")
- ("Head" . "HEADER \"%s\"")
- (nil . ""))
- "Mapping from user readable strings to IMAP search items for use in nnir")
+ ("Imap" . ""))
+ "Mapping from user readable keys to IMAP search items for use in nnir")
+
+(defvar nnir-imap-search-other "HEADER %S"
+ "The IMAP search item to use for anything other than
+ nnir-imap-search-arguments. By default this is the name of an
+ email header field")
(defvar nnir-imap-search-argument-history ()
"The history for querying search options in nnir")
@@ -375,13 +386,12 @@ result, `gnus-retrieve-headers' will be called instead.")
())
(imap nnir-run-imap
((criteria
- "Search in: " ; Prompt
- ,nnir-imap-search-arguments ; alist for completing
- nil ; no filtering
+ "Search in" ; Prompt
+ ,(mapcar 'car nnir-imap-search-arguments) ; alist for completing
nil ; allow any user input
nil ; initial value
nnir-imap-search-argument-history ; the history to use
- ,nnir-imap-search-field ; default
+ ,nnir-imap-default-search-key ; default
)))
(swish++ nnir-run-swish++
((group . "Group spec: ")))
@@ -509,8 +519,7 @@ that it is for swish++, not Wais."
:group 'nnir)
;; Swish-E.
-;; URL: http://sunsite.berkeley.edu/SWISH-E/
-;; New version: http://www.boe.es/swish-e
+;; URL: http://swish-e.org/
;; Variables `nnir-swish-e-index-file', `nnir-swish-e-program' and
;; `nnir-swish-e-additional-switches'
@@ -596,7 +605,7 @@ arrive at the correct group name, \"mail.misc\"."
:type '(directory)
:group 'nnir)
-;; Namazu engine, see <URL:http://ww.namazu.org/>
+;; Namazu engine, see <URL:http://www.namazu.org/>
(defcustom nnir-namazu-program "namazu"
"*Name of Namazu search executable."
@@ -704,19 +713,30 @@ and show thread that contains this article."
(let* ((cur (gnus-summary-article-number))
(group (nnir-artlist-artitem-group nnir-artlist cur))
(backend-number (nnir-artlist-artitem-number nnir-artlist cur))
- server backend-group)
- (setq server (nnir-group-server group))
- (setq backend-group (gnus-group-real-name group))
- (gnus-group-read-ephemeral-group
- backend-group
- (gnus-server-to-method server)
- t ; activate
- (cons (current-buffer)
- 'summary) ; window config
- nil
- (list backend-number))
- (gnus-summary-limit (list backend-number))
- (gnus-summary-refer-thread)))
+ (id (mail-header-id (gnus-summary-article-header)))
+ (refs (split-string
+ (mail-header-references (gnus-summary-article-header)))))
+ (if (string= (car (gnus-group-method group)) "nnimap")
+ (with-current-buffer (nnimap-buffer)
+ (let* ((cmd (let ((value
+ (format
+ "(OR HEADER REFERENCES %s HEADER Message-Id %s)"
+ id id)))
+ (dolist (refid refs value)
+ (setq value (format
+ "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)"
+ refid refid value)))))
+ (result (nnimap-command
+ "UID SEARCH %s" cmd)))
+ (gnus-summary-read-group-1 group t t gnus-summary-buffer nil
+ (and (car result)
+ (delete 0 (mapcar #'string-to-number
+ (cdr (assoc "SEARCH" (cdr result)))))))))
+ (gnus-summary-read-group-1 group t t gnus-summary-buffer
+ nil (list backend-number))
+ (gnus-summary-limit (list backend-number))
+ (gnus-summary-refer-thread))))
+
(if (fboundp 'eval-after-load)
(eval-after-load "gnus-sum"
@@ -792,40 +812,30 @@ and show thread that contains this article."
(if nnir-get-article-nov-override-function
(setq novitem (funcall nnir-get-article-nov-override-function
artitem))
- ;; else, set novitem through nnheader-parse-nov/nnheader-parse-head
+ ;; else, set novitem through nnheader-parse-nov/nnheader-parse-head
(case (setq foo (gnus-retrieve-headers (list artno)
artfullgroup nil))
(nov
(goto-char (point-min))
- (setq novitem (nnheader-parse-nov))
- (unless novitem
- (pop-to-buffer nntp-server-buffer)
- (error
- "nnheader-parse-nov returned nil for article %s in group %s"
- artno artfullgroup)))
+ (setq novitem (nnheader-parse-nov)))
(headers
(goto-char (point-min))
- (setq novitem (nnheader-parse-head))
- (unless novitem
- (pop-to-buffer nntp-server-buffer)
- (error
- "nnheader-parse-head returned nil for article %s in group %s"
- artno artfullgroup)))
+ (setq novitem (nnheader-parse-head)))
(t (error "Unknown header type %s while requesting article %s of group %s"
foo artno artfullgroup)))))
;; replace article number in original group with article number
;; in nnir group
- (mail-header-set-number novitem art)
- (mail-header-set-from novitem
- (mail-header-from novitem))
- (mail-header-set-subject
- novitem
- (format "[%d: %s/%d] %s"
- artrsv artgroup artno
- (mail-header-subject novitem)))
- ;;-(mail-header-set-extra novitem nil)
- (push novitem novdata)
- (setq artlist (cdr artlist)))
+ (when novitem
+ (mail-header-set-number novitem art)
+ (mail-header-set-from novitem
+ (mail-header-from novitem))
+ (mail-header-set-subject
+ novitem
+ (format "[%d: %s/%d] %s"
+ artrsv artgroup artno
+ (mail-header-subject novitem)))
+ (push novitem novdata)
+ (setq artlist (cdr artlist))))
(setq novdata (nreverse novdata))
(set-buffer nntp-server-buffer) (erase-buffer)
(mapc 'nnheader-insert-nov novdata)
@@ -881,7 +891,9 @@ ready to be added to the list of search results."
(when (file-readable-p (concat prefix dirnam article))
;; remove trailing slash and, for nnmaildir, cur/new/tmp
(setq dirnam
- (substring dirnam 0 (if (string= server "nnmaildir:") -5 -1)))
+ (substring dirnam 0
+ (if (string= (gnus-group-server server) "nnmaildir")
+ -5 -1)))
;; Set group to dirnam without any leading dots or slashes,
;; and with all subsequent slashes replaced by dots
@@ -890,7 +902,7 @@ ready to be added to the list of search results."
"[/\\]" "." t)))
(vector (nnir-group-full-name group server)
- (if (string= server "nnmaildir:")
+ (if (string= (gnus-group-server server) "nnmaildir")
(nnmaildir-base-name-to-article-number
(substring article 0 (string-match ":" article))
group nil)
@@ -946,22 +958,9 @@ pairs (also vectors, actually)."
;; IMAP interface.
;; todo:
-;; nnir invokes this two (2) times???!
-;; we should not use nnimap at all but open our own server connection
-;; we should not LIST * but use nnimap-list-pattern from defs
;; send queries as literals
;; handle errors
-(autoload 'nnimap-open-server "nnimap")
-(defvar nnimap-server-buffer) ;; nnimap.el
-(autoload 'imap-mailbox-select "imap")
-(autoload 'imap-search "imap")
-(autoload 'imap-quote-specials "imap")
-
-(eval-when-compile
- (autoload 'nnimap-buffer "nnimap")
- (autoload 'nnimap-command "nnimap")
- (autoload 'nnimap-possibly-change-group "nnimap"))
(defun nnir-run-imap (query srv &optional group-option)
"Run a search against an IMAP back-end server.
@@ -973,7 +972,8 @@ details on the language and supported extensions"
(group (or group-option (gnus-group-group-name)))
(defs (caddr (gnus-server-to-method srv)))
(criteria (or (cdr (assq 'criteria query))
- nnir-imap-search-field))
+ (cdr (assoc nnir-imap-default-search-key
+ nnir-imap-search-arguments))))
(gnus-inhibit-demon t)
artlist)
(message "Opening server %s" server)
@@ -983,7 +983,7 @@ details on the language and supported extensions"
(message "Searching %s..." group)
(let ((arts 0)
(result
- (nnimap-command "UID SEARCH %s"
+ (nnimap-command "UID SEARCH %s"
(if (string= criteria "")
qstring
(nnir-imap-make-query criteria qstring)
@@ -1054,7 +1054,7 @@ In future the following will be added to the language:
(cond
;; Simple string term
((stringp expr)
- (format "%s \"%s\"" criteria (imap-quote-specials expr)))
+ (format "%s %S" criteria expr))
;; Trivial term: and
((eq expr 'and) nil)
;; Composite term: or expression
@@ -1200,7 +1200,7 @@ Windows NT 4.0."
;; is sufficient. Note that we can't only use the value of
;; nnml-use-compressed-files because old articles might have been
;; saved with a different value.
- (article-pattern (if (string= server "nnmaildir:")
+ (article-pattern (if (string= (gnus-group-server server) "nnmaildir")
":[0-9]+"
"^[0-9]+\\(\\.[a-z0-9]+\\)?$"))
score artno dirnam filenam)
@@ -1450,7 +1450,7 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
(when group
(error "The Namazu backend cannot search specific groups"))
(save-excursion
- (let ((article-pattern (if (string= server "nnmaildir:")
+ (let ((article-pattern (if (string= (gnus-group-server server) "nnmaildir")
":[0-9]+"
"^[0-9]+$"))
artlist
@@ -1588,9 +1588,9 @@ Tested with Namazu 2.0.6 on a GNU/Linux system."
(let ((sym (car parmspec))
(prompt (cdr parmspec)))
(if (listp prompt)
- (let* ((result (apply 'completing-read prompt))
+ (let* ((result (apply 'gnus-completing-read prompt))
(mapping (or (assoc result nnir-imap-search-arguments)
- (assoc nil nnir-imap-search-arguments))))
+ (cons nil nnir-imap-search-other))))
(cons sym (format (cdr mapping) result)))
(cons sym (read-string prompt)))))
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 23cb604d552..8ccd7b02a16 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -104,7 +104,9 @@ mail belongs in that group.
The last element should always have \"\" as the regexp.
-This variable can also have a function as its value."
+This variable can also have a function as its value, and it can
+also have a fancy split method as its value. See
+`nnmail-split-fancy' for an explanation of that syntax."
:group 'nnmail-split
:type '(choice (repeat :tag "Alist" (group (string :tag "Name")
(choice regexp function)))
@@ -1145,21 +1147,33 @@ FUNC will be called with the group name to determine the article number."
(run-hooks 'nnmail-split-hook)
(when (setq nnmail-split-tracing trace)
(setq nnmail-split-trace nil))
- (if (and (symbolp nnmail-split-methods)
- (fboundp nnmail-split-methods))
- (let ((split
- (condition-case error-info
- ;; `nnmail-split-methods' is a function, so we
- ;; just call this function here and use the
- ;; result.
- (or (funcall nnmail-split-methods)
- (and (not nnmail-inhibit-default-split-group)
- '("bogus")))
- (error
- (nnheader-message
- 5 "Error in `nnmail-split-methods'; using `bogus' mail group: %S" error-info)
- (sit-for 1)
- '("bogus")))))
+ (if (or (and (symbolp nnmail-split-methods)
+ (fboundp nnmail-split-methods))
+ (and (listp nnmail-split-methods)
+ ;; Not a regular split method, so it has to be a
+ ;; fancy one.
+ (not (let ((top-element (car-safe nnmail-split-methods)))
+ (and (= 2 (length top-element))
+ (stringp (nth 0 top-element))
+ (stringp (nth 1 top-element)))))))
+ (let* ((method-function
+ (if (and (symbolp nnmail-split-methods)
+ (fboundp nnmail-split-methods))
+ nnmail-split-methods
+ 'nnmail-split-fancy))
+ (split
+ (condition-case error-info
+ ;; `nnmail-split-methods' is a function, so we
+ ;; just call this function here and use the
+ ;; result.
+ (or (funcall method-function)
+ (and (not nnmail-inhibit-default-split-group)
+ '("bogus")))
+ (error
+ (nnheader-message
+ 5 "Error in `nnmail-split-methods'; using `bogus' mail group: %S" error-info)
+ (sit-for 1)
+ '("bogus")))))
(setq split (mm-delete-duplicates split))
;; The article may be "cross-posted" to `junk'. What
;; to do? Just remove the `junk' spec. Don't really
@@ -1900,7 +1914,7 @@ If TIME is nil, then return the cutoff time for oldness instead."
(unless (eq target 'delete)
(when (or (gnus-request-group target)
(gnus-request-create-group target))
- (let ((group-art (gnus-request-accept-article target nil nil t)))
+ (let ((group-art (gnus-request-accept-article target nil t t)))
(when (consp group-art)
(gnus-group-mark-article-read target (cdr group-art))))))))
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el
index 8a018dc6aca..97531f87666 100644
--- a/lisp/gnus/nnmaildir.el
+++ b/lisp/gnus/nnmaildir.el
@@ -59,7 +59,7 @@
)
]
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index bca549a6832..0b7f0a40bd3 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -848,8 +848,8 @@ called interactively, user will be asked for parameters."
All necessary information will be queried from the user."
(interactive)
(let* ((name (read-string "Name of the mairix server: "))
- (server (completing-read "Back end server (TAB for completion): "
- (nnmairix-get-valid-servers) nil 1))
+ (server (gnus-completing-read "Back end server"
+ (nnmairix-get-valid-servers) t))
(mairix (read-string "Command to call mairix: " "mairix"))
(defaultgroup (read-string "Default search group: "))
(backend (symbol-name (car (gnus-server-to-method server))))
@@ -1165,7 +1165,7 @@ nnmairix server. Only marks from current session will be set."
If SKIPDEFAULT is t, the default search group will not be
updated.
If UPDATEDB is t, database for SERVERNAME will be updated first."
- (interactive (list (completing-read "Update groups on server: "
+ (interactive (list (gnus-completing-read "Update groups on server"
(nnmairix-get-nnmairix-servers))))
(save-excursion
(when (string-match ".*:\\(.*\\)" servername)
@@ -1302,7 +1302,7 @@ Otherwise, ask user for server."
(while
(equal '("")
(setq nnmairix-last-server
- (list (completing-read "Server: " openedserver nil 1
+ (list (gnus-completing-read "Server" openedserver t
(or nnmairix-last-server
"nnmairix:"))))))
nnmairix-last-server)
@@ -1492,10 +1492,10 @@ group."
(when (not found)
(setq mairixserver
(gnus-server-to-method
- (completing-read
- (format "Cannot determine which nnmairix server indexes %s. Please specify: "
+ (gnus-completing-read
+ (format "Cannot determine which nnmairix server indexes %s. Please specify"
(gnus-method-to-server server))
- (nnmairix-get-nnmairix-servers) nil nil "nnmairix:")))
+ (nnmairix-get-nnmairix-servers) nil "nnmairix:")))
;; Save result in parameter of default search group so that
;; we don't have to ask again
(setq defaultgroup (gnus-group-prefixed-name
@@ -1572,14 +1572,11 @@ See %s for details" proc nnmairix-mairix-output-buffer)))
(defun nnmairix-replace-illegal-chars (header)
"Replace illegal characters in HEADER for mairix query."
(when header
- (if (> emacs-major-version 20)
- (while (string-match "[^-.@/,& [:alnum:]]" header)
- (setq header (replace-match "" t t header)))
- (while (string-match "[[]{}:<>]" header)
- (setq header (replace-match "" t t header))))
+ (while (string-match "[^-.@/,& [:alnum:]]" header)
+ (setq header (replace-match "" t t header)))
(while (string-match "[-& ]" header)
(setq header (replace-match "," t t header)))
- header))
+ header))
(defun nnmairix-group-toggle-parameter (group parameter description &optional par)
"Toggle on GROUP a certain PARAMETER.
@@ -1643,9 +1640,9 @@ search in raw mode."
(gnus-registry-add-group mid cur)))))
(if (> (length allgroups) 1)
(setq group
- (completing-read
- "Message exists in more than one group. Choose: "
- allgroups nil t))
+ (gnus-completing-read
+ "Message exists in more than one group. Choose"
+ allgroups t))
(setq group (car allgroups))))
(if group
;; show article in summary buffer
@@ -1748,9 +1745,9 @@ SERVER."
(gnus-group-prefixed-name group (car cur))
allgroups))))
(if (> (length allgroups) 1)
- (setq group (completing-read
- "Group %s exists on more than one IMAP server. Choose: "
- allgroups nil t))
+ (setq group (gnus-completing-read
+ "Group %s exists on more than one IMAP server. Choose"
+ allgroups t))
(setq group (car allgroups))))
group))
diff --git a/lisp/gnus/nnmbox.el b/lisp/gnus/nnmbox.el
index bc5c01e51ad..003c424f58d 100644
--- a/lisp/gnus/nnmbox.el
+++ b/lisp/gnus/nnmbox.el
@@ -640,6 +640,7 @@
nnmbox-mbox-file t t))))
(mm-enable-multibyte)
(buffer-disable-undo)
+ (gnus-add-buffer)
;; Go through the group alist and compare against the mbox file.
(while alist
diff --git a/lisp/gnus/nnregistry.el b/lisp/gnus/nnregistry.el
new file mode 100644
index 00000000000..03ff5e716aa
--- /dev/null
+++ b/lisp/gnus/nnregistry.el
@@ -0,0 +1,66 @@
+;;; nnregistry.el --- access to articles via Gnus' message-id registry
+;;; -*- coding: utf-8 -*-
+
+;; Copyright (C) 2010 Free Software Foundation, Inc.
+
+;; Authors: Ludovic Courtès <ludo@gnu.org>
+;; Keywords: news, mail
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides the `nnregistry' Gnus back-end. It can be used
+;; in `gnus-refer-article-method' to quickly search for a message by
+;; id, regardless of the back-end that stores it. See the Gnus manual
+;; for usage examples and more information.
+
+;;; Code:
+
+(require 'nnoo)
+(require 'gnus-registry)
+(require 'gnus-int)
+
+(nnoo-declare nnregistry)
+
+(deffoo nnregistry-server-opened (server)
+ (eq gnus-registry-install t))
+
+(deffoo nnregistry-close-server (server)
+ t)
+
+(deffoo nnregistry-status-message (server)
+ nil)
+
+(deffoo nnregistry-open-server (server &optional defs)
+ (eq gnus-registry-install t))
+
+(defvar nnregistry-within-nnregistry nil)
+
+(deffoo nnregistry-request-article (id &optional group server buffer)
+ (and (not nnregistry-within-nnregistry)
+ (let* ((nnregistry-within-nnregistry t)
+ (group (gnus-registry-fetch-group id))
+ (gnus-override-method nil))
+ (message "nnregistry: requesting article `%s' in group `%s'"
+ id group)
+ (and group
+ (gnus-check-group group)
+ (gnus-request-article id group buffer)))))
+
+(provide 'nnregistry)
+
+;;; nnregistry.el ends here
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index aa3b79a1022..ebe8c514cb3 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -25,7 +25,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -77,7 +77,8 @@ this variable to the list of fields to be ignored.")
(defvar nnrss-group-alist '()
"List of RSS addresses.")
-(defvar nnrss-use-local nil)
+(defvar nnrss-use-local nil
+ "If non-nil nnrss will read the feeds from local files in nnrss-directory.")
(defvar nnrss-description-field 'X-Gnus-Description
"Field name used for DESCRIPTION.
@@ -702,9 +703,6 @@ which RSS 2.0 allows."
(push (list group nnrss-group-max url) nnrss-server-data)))
(setq changed t))
(setq xml (nnrss-fetch url)))
- ;; See
- ;; http://feeds.archive.org/validator/docs/howto/declare_namespaces.html
- ;; for more RSS namespaces.
(setq dc-ns (nnrss-get-namespace-prefix xml "http://purl.org/dc/elements/1.1/")
rdf-ns (nnrss-get-namespace-prefix xml "http://www.w3.org/1999/02/22-rdf-syntax-ns#")
rss-ns (nnrss-get-namespace-prefix xml "http://purl.org/rss/1.0/")
@@ -965,7 +963,7 @@ whether they are `offsite' or `onsite'."
(defun nnrss-discover-feed (url)
"Given a page, find an RSS feed using Mark Pilgrim's
-`ultra-liberal rss locator' (URL `http://diveintomark.org/2002/08/15.html')."
+`ultra-liberal rss locator'."
(let ((parsed-page (nnrss-fetch url)))
@@ -1048,9 +1046,9 @@ whether they are `offsite' or `onsite'."
(cdr (assoc "feedid" listinfo)))))
feedinfo)))
(cdr (assoc
- (completing-read
- "Multiple feeds found. Select one: "
- selection nil t) urllist)))))))))
+ (gnus-completing-read
+ "Multiple feeds found. Select one"
+ selection t) urllist)))))))))
(defun nnrss-rss-p (data)
"Test if DATA is an RSS feed.
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 1bf2ce1e368..946025a0af2 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -26,7 +26,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -267,6 +267,11 @@ NOTE: This variable is never seen to work in Emacs 20 and XEmacs 21.")
"*Hook run just before posting an article. It is supposed to be used
to insert Cancel-Lock headers.")
+(defvoo nntp-server-list-active-group 'try
+ "If nil, then always use GROUP instead of LIST ACTIVE.
+This is usually slower, but on misconfigured servers that don't
+update their active files often, this can help.")
+
;;; Internal variables.
(defvar nntp-record-commands nil
@@ -296,7 +301,6 @@ to insert Cancel-Lock headers.")
(defvoo nntp-inhibit-output nil)
(defvoo nntp-server-xover 'try)
-(defvoo nntp-server-list-active-group 'try)
(defvar nntp-async-timer nil)
(defvar nntp-async-process-list nil)
diff --git a/lisp/gnus/nnweb.el b/lisp/gnus/nnweb.el
index 1cfa7a4cbc3..ac643f9ed1f 100644
--- a/lisp/gnus/nnweb.el
+++ b/lisp/gnus/nnweb.el
@@ -207,7 +207,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(deffoo nnweb-request-delete-group (group &optional force server)
(nnweb-possibly-change-server group server)
- (gnus-pull group nnweb-group-alist t)
+ (gnus-alist-pull group nnweb-group-alist t)
(nnweb-write-active)
(gnus-delete-file (nnweb-overview-file group))
t)
diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el
index d2953dcffc9..327c5297492 100644
--- a/lisp/gnus/pop3.el
+++ b/lisp/gnus/pop3.el
@@ -82,6 +82,15 @@ valid value is 'apop'."
:version "22.1" ;; Oort Gnus
:group 'pop3)
+(defcustom pop3-stream-length 100
+ "How many messages should be requested at one time.
+The lower the number, the more latency-sensitive the fetching
+will be. If your pop3 server doesn't support streaming at all,
+set this to 1."
+ :type 'number
+ :version "24.1"
+ :group 'pop3)
+
(defcustom pop3-leave-mail-on-server nil
"*Non-nil if the mail is to be left on the POP server after fetching.
@@ -140,7 +149,7 @@ Use streaming commands."
(let ((size (pop3-stat process)))
(setq message-count (car size)
message-total-size (cadr size)))
- (when (plusp message-count)
+ (when (> message-count 0)
(pop3-send-streaming-command
process "RETR" message-count message-total-size)
(pop3-write-to-file file)
@@ -156,7 +165,7 @@ Use streaming commands."
(while (>= count i)
(process-send-string process (format "%s %d\r\n" command i))
;; Only do 100 messages at a time to avoid pipe stalls.
- (when (zerop (% i 100))
+ (when (zerop (% i pop3-stream-length))
(pop3-wait-for-messages process i total-size))
(incf i)))
(pop3-wait-for-messages process count total-size))
diff --git a/lisp/gnus/rfc1843.el b/lisp/gnus/rfc1843.el
index e395ee54c3c..87fcde60138 100644
--- a/lisp/gnus/rfc1843.el
+++ b/lisp/gnus/rfc1843.el
@@ -32,7 +32,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/gnus/rfc2231.el b/lisp/gnus/rfc2231.el
index 7cb1740c635..0b028a08b83 100644
--- a/lisp/gnus/rfc2231.el
+++ b/lisp/gnus/rfc2231.el
@@ -185,11 +185,19 @@ must never cause a Lisp error."
in (sort parameters (lambda (e1 e2)
(< (or (caddr e1) 0)
(or (caddr e2) 0))))
- do (if (or (not (setq elem (assq attribute cparams)))
- (and (numberp part)
- (zerop part)))
- (push (list attribute value encoded) cparams)
- (setcar (cdr elem) (concat (cadr elem) value))))
+ do (cond
+ ;; First part.
+ ((or (not (setq elem (assq attribute cparams)))
+ (and (numberp part)
+ (zerop part)))
+ (push (list attribute value encoded) cparams))
+ ;; Repetition of a part; do nothing.
+ ((and elem
+ (null number))
+ )
+ ;; Concatenate continuation parts.
+ (t
+ (setcar (cdr elem) (concat (cadr elem) value)))))
;; Finally decode encoded values.
(cons type (mapcar
(lambda (elem)
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
new file mode 100644
index 00000000000..6499b35d072
--- /dev/null
+++ b/lisp/gnus/shr.el
@@ -0,0 +1,809 @@
+;;; shr.el --- Simple HTML Renderer
+
+;; Copyright (C) 2010 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; Keywords: html
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package takes a HTML parse tree (as provided by
+;; libxml-parse-html-region) and renders it in the current buffer. It
+;; does not do CSS, JavaScript or anything advanced: It's geared
+;; towards rendering typical short snippets of HTML, like what you'd
+;; find in HTML email and the like.
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'browse-url)
+
+(defgroup shr nil
+ "Simple HTML Renderer"
+ :group 'mail)
+
+(defcustom shr-max-image-proportion 0.9
+ "How big pictures displayed are in relation to the window they're in.
+A value of 0.7 means that they are allowed to take up 70% of the
+width and height of the window. If they are larger than this,
+and Emacs supports it, then the images will be rescaled down to
+fit these criteria."
+ :version "24.1"
+ :group 'shr
+ :type 'float)
+
+(defcustom shr-blocked-images nil
+ "Images that have URLs matching this regexp will be blocked."
+ :version "24.1"
+ :group 'shr
+ :type 'regexp)
+
+(defcustom shr-table-line ?-
+ "Character used to draw table line."
+ :group 'shr
+ :type 'character)
+
+(defcustom shr-table-corner ?+
+ "Character used to draw table corner."
+ :group 'shr
+ :type 'character)
+
+(defcustom shr-hr-line ?-
+ "Character used to draw hr line."
+ :group 'shr
+ :type 'character)
+
+(defcustom shr-width fill-column
+ "Frame width to use for rendering."
+ :type 'integer
+ :group 'shr)
+
+(defvar shr-content-function nil
+ "If bound, this should be a function that will return the content.
+This is used for cid: URLs, and the function is called with the
+cid: URL as the argument.")
+
+;;; Internal variables.
+
+(defvar shr-folding-mode nil)
+(defvar shr-state nil)
+(defvar shr-start nil)
+(defvar shr-indentation 0)
+(defvar shr-inhibit-images nil)
+(defvar shr-list-mode nil)
+(defvar shr-content-cache nil)
+
+(defvar shr-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "a" 'shr-show-alt-text)
+ (define-key map "i" 'shr-browse-image)
+ (define-key map "I" 'shr-insert-image)
+ (define-key map "u" 'shr-copy-url)
+ (define-key map "v" 'shr-browse-url)
+ (define-key map "\r" 'shr-browse-url)
+ map))
+
+;; Public functions and commands.
+
+;;;###autoload
+(defun shr-insert-document (dom)
+ (setq shr-content-cache nil)
+ (let ((shr-state nil)
+ (shr-start nil))
+ (shr-descend (shr-transform-dom dom))))
+
+(defun shr-copy-url ()
+ "Copy the URL under point to the kill ring.
+If called twice, then try to fetch the URL and see whether it
+redirects somewhere else."
+ (interactive)
+ (let ((url (get-text-property (point) 'shr-url)))
+ (cond
+ ((not url)
+ (message "No URL under point"))
+ ;; Resolve redirected URLs.
+ ((equal url (car kill-ring))
+ (url-retrieve
+ url
+ (lambda (a)
+ (when (and (consp a)
+ (eq (car a) :redirect))
+ (with-temp-buffer
+ (insert (cadr a))
+ (goto-char (point-min))
+ ;; Remove common tracking junk from the URL.
+ (when (re-search-forward ".utm_.*" nil t)
+ (replace-match "" t t))
+ (message "Copied %s" (buffer-string))
+ (copy-region-as-kill (point-min) (point-max)))))))
+ ;; Copy the URL to the kill ring.
+ (t
+ (with-temp-buffer
+ (insert url)
+ (copy-region-as-kill (point-min) (point-max))
+ (message "Copied %s" url))))))
+
+(defun shr-show-alt-text ()
+ "Show the ALT text of the image under point."
+ (interactive)
+ (let ((text (get-text-property (point) 'shr-alt)))
+ (if (not text)
+ (message "No image under point")
+ (message "%s" text))))
+
+(defun shr-browse-image ()
+ "Browse the image under point."
+ (interactive)
+ (let ((url (get-text-property (point) 'shr-image)))
+ (if (not url)
+ (message "No image under point")
+ (message "Browsing %s..." url)
+ (browse-url url))))
+
+(defun shr-insert-image ()
+ "Insert the image under point into the buffer."
+ (interactive)
+ (let ((url (get-text-property (point) 'shr-image)))
+ (if (not url)
+ (message "No image under point")
+ (message "Inserting %s..." url)
+ (url-retrieve url 'shr-image-fetched
+ (list (current-buffer) (1- (point)) (point-marker))
+ t))))
+
+;;; Utility functions.
+
+(defun shr-transform-dom (dom)
+ (let ((result (list (pop dom))))
+ (dolist (arg (pop dom))
+ (push (cons (intern (concat ":" (symbol-name (car arg))) obarray)
+ (cdr arg))
+ result))
+ (dolist (sub dom)
+ (if (stringp sub)
+ (push (cons :text sub) result)
+ (push (shr-transform-dom sub) result)))
+ (nreverse result)))
+
+(defun shr-descend (dom)
+ (let ((function (intern (concat "shr-tag-" (symbol-name (car dom))) obarray)))
+ (if (fboundp function)
+ (funcall function (cdr dom))
+ (shr-generic (cdr dom)))))
+
+(defun shr-generic (cont)
+ (dolist (sub cont)
+ (cond
+ ((eq (car sub) :text)
+ (shr-insert (cdr sub)))
+ ((listp (cdr sub))
+ (shr-descend sub)))))
+
+(defun shr-insert (text)
+ (when (and (eq shr-state 'image)
+ (not (string-match "\\`[ \t\n]+\\'" text)))
+ (insert "\n")
+ (setq shr-state nil))
+ (cond
+ ((eq shr-folding-mode 'none)
+ (insert text))
+ (t
+ (let ((first t)
+ column)
+ (when (and (string-match "\\`[ \t\n]" text)
+ (not (bolp))
+ (not (eq (char-after (1- (point))) ? )))
+ (insert " "))
+ (dolist (elem (split-string text))
+ (when (and (bolp)
+ (> shr-indentation 0))
+ (shr-indent))
+ ;; The shr-start is a special variable that is used to pass
+ ;; upwards the first point in the buffer where the text really
+ ;; starts.
+ (unless shr-start
+ (setq shr-start (point)))
+ ;; No space is needed before or after a breakable character or
+ ;; at the beginning of a line.
+ (when (and (eq (preceding-char) ? )
+ (or (= (line-beginning-position) (1- (point)))
+ (aref fill-find-break-point-function-table
+ (char-after (- (point) 2)))
+ (aref fill-find-break-point-function-table
+ (aref elem 0))))
+ (delete-char -1))
+ (insert elem)
+ (while (> (current-column) shr-width)
+ (unless (prog1
+ (shr-find-fill-point)
+ (when (eq (preceding-char) ? )
+ (delete-char -1))
+ (insert "\n"))
+ (put-text-property (1- (point)) (point) 'shr-break t)
+ ;; No space is needed at the beginning of a line.
+ (if (eq (following-char) ? )
+ (delete-char 1)))
+ (when (> shr-indentation 0)
+ (shr-indent))
+ (end-of-line))
+ (insert " "))
+ (unless (string-match "[ \t\n]\\'" text)
+ (delete-char -1))))))
+
+(eval-and-compile (autoload 'kinsoku-longer "kinsoku"))
+
+(defun shr-find-fill-point ()
+ (let ((found nil))
+ (while (and (not found)
+ (> (current-column) shr-indentation))
+ (when (and (or (eq (preceding-char) ? )
+ (aref fill-find-break-point-function-table
+ (preceding-char)))
+ (<= (current-column) shr-width))
+ (setq found t))
+ (backward-char 1)
+ (when (bolp)
+ ;; There's no breakable point, so we give it up.
+ (end-of-line)
+ (while (aref fill-find-break-point-function-table
+ (preceding-char))
+ (backward-char 1))
+ (setq found 'failed)))
+ (cond ((eq found t)
+ ;; Don't put kinsoku-bol characters at the beginning of a line.
+ (or (eobp)
+ (kinsoku-longer)
+ (not (aref fill-find-break-point-function-table
+ (following-char)))
+ (forward-char 1)))
+ (found t)
+ (t
+ (end-of-line)
+ nil))))
+
+(defun shr-ensure-newline ()
+ (unless (zerop (current-column))
+ (insert "\n")))
+
+(defun shr-ensure-paragraph ()
+ (unless (bobp)
+ (if (<= (current-column) shr-indentation)
+ (unless (save-excursion
+ (forward-line -1)
+ (looking-at " *$"))
+ (insert "\n"))
+ (if (save-excursion
+ (beginning-of-line)
+ (looking-at " *$"))
+ (insert "\n")
+ (insert "\n\n")))))
+
+(defun shr-indent ()
+ (when (> shr-indentation 0)
+ (insert (make-string shr-indentation ? ))))
+
+(defun shr-fontize-cont (cont &rest types)
+ (let (shr-start)
+ (shr-generic cont)
+ (dolist (type types)
+ (shr-add-font (or shr-start (point)) (point) type))))
+
+(defun shr-add-font (start end type)
+ (let ((overlay (make-overlay start end)))
+ (overlay-put overlay 'face type)))
+
+(defun shr-browse-url ()
+ "Browse the URL under point."
+ (interactive)
+ (let ((url (get-text-property (point) 'shr-url)))
+ (if (not url)
+ (message "No link under point")
+ (browse-url url))))
+
+(defun shr-image-fetched (status buffer start end)
+ (when (and (buffer-name buffer)
+ (not (plist-get status :error)))
+ (url-store-in-cache (current-buffer))
+ (when (or (search-forward "\n\n" nil t)
+ (search-forward "\r\n\r\n" nil t))
+ (let ((data (buffer-substring (point) (point-max))))
+ (with-current-buffer buffer
+ (let ((alt (buffer-substring start end))
+ (inhibit-read-only t))
+ (delete-region start end)
+ (shr-put-image data start alt))))))
+ (kill-buffer (current-buffer)))
+
+(defun shr-put-image (data point alt)
+ (if (not (display-graphic-p))
+ (insert alt)
+ (let ((image (ignore-errors
+ (shr-rescale-image data))))
+ (when image
+ (put-image image point alt)))))
+
+(defun shr-rescale-image (data)
+ (if (or (not (fboundp 'imagemagick-types))
+ (not (get-buffer-window (current-buffer))))
+ (create-image data nil t)
+ (let* ((image (create-image data nil t))
+ (size (image-size image t))
+ (width (car size))
+ (height (cdr size))
+ (edges (window-inside-pixel-edges
+ (get-buffer-window (current-buffer))))
+ (window-width (truncate (* shr-max-image-proportion
+ (- (nth 2 edges) (nth 0 edges)))))
+ (window-height (truncate (* shr-max-image-proportion
+ (- (nth 3 edges) (nth 1 edges)))))
+ scaled-image)
+ (when (> height window-height)
+ (setq image (or (create-image data 'imagemagick t
+ :height window-height)
+ image))
+ (setq size (image-size image t)))
+ (when (> (car size) window-width)
+ (setq image (or
+ (create-image data 'imagemagick t
+ :width window-width)
+ image)))
+ image)))
+
+(defun shr-get-image-data (url)
+ "Get image data for URL.
+Return a string with image data."
+ (with-temp-buffer
+ (mm-disable-multibyte)
+ (when (ignore-errors
+ (url-cache-extract (url-cache-create-filename (shr-encode-url url)))
+ t)
+ (when (or (search-forward "\n\n" nil t)
+ (search-forward "\r\n\r\n" nil t))
+ (buffer-substring (point) (point-max))))))
+
+(defun shr-heading (cont &rest types)
+ (shr-ensure-paragraph)
+ (apply #'shr-fontize-cont cont types)
+ (shr-ensure-paragraph))
+
+;;; Tag-specific rendering rules.
+
+(defun shr-tag-p (cont)
+ (shr-ensure-paragraph)
+ (shr-indent)
+ (shr-generic cont)
+ (shr-ensure-paragraph))
+
+(defun shr-tag-b (cont)
+ (shr-fontize-cont cont 'bold))
+
+(defun shr-tag-i (cont)
+ (shr-fontize-cont cont 'italic))
+
+(defun shr-tag-em (cont)
+ (shr-fontize-cont cont 'bold))
+
+(defun shr-tag-u (cont)
+ (shr-fontize-cont cont 'underline))
+
+(defun shr-tag-s (cont)
+ (shr-fontize-cont cont 'strike-through))
+
+(defun shr-tag-a (cont)
+ (let ((url (cdr (assq :href cont)))
+ (start (point))
+ shr-start)
+ (shr-generic cont)
+ (widget-convert-button
+ 'url-link (or shr-start start) (point)
+ :help-echo url
+ :keymap shr-map
+ url)
+ (put-text-property (or shr-start start) (point) 'shr-url url)))
+
+(defun shr-encode-url (url)
+ "Encode URL."
+ (browse-url-url-encode-chars url "[)$ ]"))
+
+(defun shr-tag-img (cont)
+ (when cont
+ (when (and (> (current-column) 0)
+ (not (eq shr-state 'image)))
+ (insert "\n"))
+ (let ((alt (cdr (assq :alt cont)))
+ (url (cdr (assq :src cont)))
+ (width (cdr (assq :width cont))))
+ ;; Only respect align if width specified.
+ (when width
+ ;; Check that width is not larger than max width, otherwise ignore
+ ;; align
+ (let ((max-width (* shr-width (frame-char-width)))
+ (width (string-to-number width)))
+ (when (< width max-width)
+ (let ((align (cdr (assq :align cont))))
+ (cond
+ ((string= align "right")
+ (insert (propertize
+ " " 'display
+ `(space . (:align-to
+ ,(list (- max-width width)))))))
+ ((string= align "center")
+ (insert (propertize
+ " " 'display
+ `(space . (:balign-to
+ ,(list (- (/ max-width 2) width))))))))))))
+ (let ((start (point-marker)))
+ (when (zerop (length alt))
+ (setq alt "[img]"))
+ (cond
+ ((and (not shr-inhibit-images)
+ (string-match "\\`cid:" url))
+ (let ((url (substring url (match-end 0)))
+ image)
+ (if (or (not shr-content-function)
+ (not (setq image (funcall shr-content-function url))))
+ (insert alt)
+ (shr-put-image image (point) alt))))
+ ((or shr-inhibit-images
+ (and shr-blocked-images
+ (string-match shr-blocked-images url)))
+ (setq shr-start (point))
+ (let ((shr-state 'space))
+ (if (> (length alt) 8)
+ (shr-insert (substring alt 0 8))
+ (shr-insert alt))))
+ ((url-is-cached (shr-encode-url url))
+ (shr-put-image (shr-get-image-data url) (point) alt))
+ (t
+ (insert alt)
+ (ignore-errors
+ (url-retrieve (shr-encode-url url) 'shr-image-fetched
+ (list (current-buffer) start (point-marker))
+ t))))
+ (insert " ")
+ (put-text-property start (point) 'keymap shr-map)
+ (put-text-property start (point) 'shr-alt alt)
+ (put-text-property start (point) 'shr-image url)
+ (setq shr-state 'image)))))
+
+(defun shr-tag-pre (cont)
+ (let ((shr-folding-mode 'none))
+ (shr-ensure-newline)
+ (shr-indent)
+ (shr-generic cont)
+ (shr-ensure-newline)))
+
+(defun shr-tag-blockquote (cont)
+ (shr-ensure-paragraph)
+ (shr-indent)
+ (let ((shr-indentation (+ shr-indentation 4)))
+ (shr-generic cont))
+ (shr-ensure-paragraph))
+
+(defun shr-tag-ul (cont)
+ (shr-ensure-paragraph)
+ (let ((shr-list-mode 'ul))
+ (shr-generic cont))
+ (shr-ensure-paragraph))
+
+(defun shr-tag-ol (cont)
+ (shr-ensure-paragraph)
+ (let ((shr-list-mode 1))
+ (shr-generic cont))
+ (shr-ensure-paragraph))
+
+(defun shr-tag-li (cont)
+ (shr-ensure-paragraph)
+ (shr-indent)
+ (let* ((bullet
+ (if (numberp shr-list-mode)
+ (prog1
+ (format "%d " shr-list-mode)
+ (setq shr-list-mode (1+ shr-list-mode)))
+ "* "))
+ (shr-indentation (+ shr-indentation (length bullet))))
+ (insert bullet)
+ (shr-generic cont)))
+
+(defun shr-tag-br (cont)
+ (unless (bobp)
+ (insert "\n")
+ (shr-indent))
+ (shr-generic cont))
+
+(defun shr-tag-h1 (cont)
+ (shr-heading cont 'bold 'underline))
+
+(defun shr-tag-h2 (cont)
+ (shr-heading cont 'bold))
+
+(defun shr-tag-h3 (cont)
+ (shr-heading cont 'italic))
+
+(defun shr-tag-h4 (cont)
+ (shr-heading cont))
+
+(defun shr-tag-h5 (cont)
+ (shr-heading cont))
+
+(defun shr-tag-h6 (cont)
+ (shr-heading cont))
+
+(defun shr-tag-hr (cont)
+ (shr-ensure-newline)
+ (insert (make-string shr-width shr-hr-line) "\n"))
+
+;;; Table rendering algorithm.
+
+;; Table rendering is the only complicated thing here. We do this by
+;; first counting how many TDs there are in each TR, and registering
+;; how wide they think they should be ("width=45%", etc). Then we
+;; render each TD separately (this is done in temporary buffers, so
+;; that we can use all the rendering machinery as if we were in the
+;; main buffer). Now we know how much space each TD really takes, so
+;; we then render everything again with the new widths, and finally
+;; insert all these boxes into the main buffer.
+(defun shr-tag-table (cont)
+ (shr-ensure-paragraph)
+ (setq cont (or (cdr (assq 'tbody cont))
+ cont))
+ (let* ((shr-inhibit-images t)
+ ;; Find all suggested widths.
+ (columns (shr-column-specs cont))
+ ;; Compute how many characters wide each TD should be.
+ (suggested-widths (shr-pro-rate-columns columns))
+ ;; Do a "test rendering" to see how big each TD is (this can
+ ;; be smaller (if there's little text) or bigger (if there's
+ ;; unbreakable text).
+ (sketch (shr-make-table cont suggested-widths))
+ (sketch-widths (shr-table-widths sketch suggested-widths)))
+ ;; This probably won't work very well.
+ (when (> (1+ (loop for width across sketch-widths
+ summing (1+ width)))
+ (frame-width))
+ (setq truncate-lines t))
+ ;; Then render the table again with these new "hard" widths.
+ (shr-insert-table (shr-make-table cont sketch-widths t) sketch-widths))
+ ;; Finally, insert all the images after the table. The Emacs buffer
+ ;; model isn't strong enough to allow us to put the images actually
+ ;; into the tables.
+ (dolist (elem (shr-find-elements cont 'img))
+ (shr-tag-img (cdr elem))))
+
+(defun shr-find-elements (cont type)
+ (let (result)
+ (dolist (elem cont)
+ (cond ((eq (car elem) type)
+ (push elem result))
+ ((consp (cdr elem))
+ (setq result (nconc (shr-find-elements (cdr elem) type) result)))))
+ (nreverse result)))
+
+(defun shr-insert-table (table widths)
+ (shr-insert-table-ruler widths)
+ (dolist (row table)
+ (let ((start (point))
+ (height (let ((max 0))
+ (dolist (column row)
+ (setq max (max max (cadr column))))
+ max)))
+ (dotimes (i height)
+ (shr-indent)
+ (insert "|\n"))
+ (dolist (column row)
+ (goto-char start)
+ (let ((lines (nth 2 column))
+ (overlay-lines (nth 3 column))
+ overlay overlay-line)
+ (dolist (line lines)
+ (setq overlay-line (pop overlay-lines))
+ (end-of-line)
+ (insert line "|")
+ (dolist (overlay overlay-line)
+ (let ((o (make-overlay (- (point) (nth 0 overlay) 1)
+ (- (point) (nth 1 overlay) 1)))
+ (properties (nth 2 overlay)))
+ (while properties
+ (overlay-put o (pop properties) (pop properties)))))
+ (forward-line 1))
+ ;; Add blank lines at padding at the bottom of the TD,
+ ;; possibly.
+ (dotimes (i (- height (length lines)))
+ (end-of-line)
+ (insert (make-string (length (car lines)) ? ) "|")
+ (forward-line 1)))))
+ (shr-insert-table-ruler widths)))
+
+(defun shr-insert-table-ruler (widths)
+ (shr-indent)
+ (insert shr-table-corner)
+ (dotimes (i (length widths))
+ (insert (make-string (aref widths i) shr-table-line) shr-table-corner))
+ (insert "\n"))
+
+(defun shr-table-widths (table suggested-widths)
+ (let* ((length (length suggested-widths))
+ (widths (make-vector length 0))
+ (natural-widths (make-vector length 0)))
+ (dolist (row table)
+ (let ((i 0))
+ (dolist (column row)
+ (aset widths i (max (aref widths i)
+ (car column)))
+ (aset natural-widths i (max (aref natural-widths i)
+ (cadr column)))
+ (setq i (1+ i)))))
+ (let ((extra (- (apply '+ (append suggested-widths nil))
+ (apply '+ (append widths nil))))
+ (expanded-columns 0))
+ (when (> extra 0)
+ (dotimes (i length)
+ ;; If the natural width is wider than the rendered width, we
+ ;; want to allow the column to expand.
+ (when (> (aref natural-widths i) (aref widths i))
+ (setq expanded-columns (1+ expanded-columns))))
+ (dotimes (i length)
+ (when (> (aref natural-widths i) (aref widths i))
+ (aset widths i (min
+ (1+ (aref natural-widths i))
+ (+ (/ extra expanded-columns)
+ (aref widths i))))))))
+ widths))
+
+(defun shr-make-table (cont widths &optional fill)
+ (let ((trs nil))
+ (dolist (row cont)
+ (when (eq (car row) 'tr)
+ (let ((tds nil)
+ (columns (cdr row))
+ (i 0)
+ column)
+ (while (< i (length widths))
+ (setq column (pop columns))
+ (when (or (memq (car column) '(td th))
+ (null column))
+ (push (shr-render-td (cdr column) (aref widths i) fill)
+ tds)
+ (setq i (1+ i))))
+ (push (nreverse tds) trs))))
+ (nreverse trs)))
+
+(defun shr-render-td (cont width fill)
+ (with-temp-buffer
+ (let ((cache (cdr (assoc (cons width cont) shr-content-cache))))
+ (if cache
+ (insert cache)
+ (let ((shr-width width)
+ (shr-indentation 0))
+ (shr-generic cont))
+ (delete-region
+ (point)
+ (+ (point)
+ (skip-chars-backward " \t\n")))
+ (push (cons (cons width cont) (buffer-string))
+ shr-content-cache)))
+ (goto-char (point-min))
+ (let ((max 0))
+ (while (not (eobp))
+ (end-of-line)
+ (setq max (max max (current-column)))
+ (forward-line 1))
+ (when fill
+ (goto-char (point-min))
+ ;; If the buffer is totally empty, then put a single blank
+ ;; line here.
+ (if (zerop (buffer-size))
+ (insert (make-string width ? ))
+ ;; Otherwise, fill the buffer.
+ (while (not (eobp))
+ (end-of-line)
+ (when (> (- width (current-column)) 0)
+ (insert (make-string (- width (current-column)) ? )))
+ (forward-line 1))))
+ (if fill
+ (list max
+ (count-lines (point-min) (point-max))
+ (split-string (buffer-string) "\n")
+ (shr-collect-overlays))
+ (list max
+ (shr-natural-width))))))
+
+(defun shr-natural-width ()
+ (goto-char (point-min))
+ (let ((current 0)
+ (max 0))
+ (while (not (eobp))
+ (end-of-line)
+ (setq current (+ current (current-column)))
+ (unless (get-text-property (point) 'shr-break)
+ (setq max (max max current)
+ current 0))
+ (forward-line 1))
+ max))
+
+(defun shr-collect-overlays ()
+ (save-excursion
+ (goto-char (point-min))
+ (let ((overlays nil))
+ (while (not (eobp))
+ (push (shr-overlays-in-region (point) (line-end-position))
+ overlays)
+ (forward-line 1))
+ (nreverse overlays))))
+
+(defun shr-overlays-in-region (start end)
+ (let (result)
+ (dolist (overlay (overlays-in start end))
+ (push (list (if (> start (overlay-start overlay))
+ (- end start)
+ (- end (overlay-start overlay)))
+ (if (< end (overlay-end overlay))
+ 0
+ (- end (overlay-end overlay)))
+ (overlay-properties overlay))
+ result))
+ (nreverse result)))
+
+(defun shr-pro-rate-columns (columns)
+ (let ((total-percentage 0)
+ (widths (make-vector (length columns) 0)))
+ (dotimes (i (length columns))
+ (setq total-percentage (+ total-percentage (aref columns i))))
+ (setq total-percentage (/ 1.0 total-percentage))
+ (dotimes (i (length columns))
+ (aset widths i (max (truncate (* (aref columns i)
+ total-percentage
+ (- shr-width (1+ (length columns)))))
+ 10)))
+ widths))
+
+;; Return a summary of the number and shape of the TDs in the table.
+(defun shr-column-specs (cont)
+ (let ((columns (make-vector (shr-max-columns cont) 1)))
+ (dolist (row cont)
+ (when (eq (car row) 'tr)
+ (let ((i 0))
+ (dolist (column (cdr row))
+ (when (memq (car column) '(td th))
+ (let ((width (cdr (assq :width (cdr column)))))
+ (when (and width
+ (string-match "\\([0-9]+\\)%" width))
+ (aset columns i
+ (/ (string-to-number (match-string 1 width))
+ 100.0))))
+ (setq i (1+ i)))))))
+ columns))
+
+(defun shr-count (cont elem)
+ (let ((i 0))
+ (dolist (sub cont)
+ (when (eq (car sub) elem)
+ (setq i (1+ i))))
+ i))
+
+(defun shr-max-columns (cont)
+ (let ((max 0))
+ (dolist (row cont)
+ (when (eq (car row) 'tr)
+ (setq max (max max (+ (shr-count (cdr row) 'td)
+ (shr-count (cdr row) 'th))))))
+ max))
+
+(provide 'shr)
+
+;;; shr.el ends here
diff --git a/lisp/gnus/sieve-manage.el b/lisp/gnus/sieve-manage.el
index 8749864d81b..5b5439fab73 100644
--- a/lisp/gnus/sieve-manage.el
+++ b/lisp/gnus/sieve-manage.el
@@ -43,7 +43,6 @@
;; `sieve-manage-close'
;; close a server connection.
;;
-;; `sieve-manage-authenticate'
;; `sieve-manage-listscripts'
;; `sieve-manage-deletescript'
;; `sieve-manage-getscript'
@@ -51,14 +50,11 @@
;;
;; and that's it. Example of a managesieve session in *scratch*:
;;
-;; (setq my-buf (sieve-manage-open "my.server.com"))
-;; " *sieve* my.server.com:2000*"
+;; (with-current-buffer (sieve-manage-open "mail.example.com")
+;; (sieve-manage-authenticate)
+;; (sieve-manage-listscripts))
;;
-;; (sieve-manage-authenticate "myusername" "mypassword" my-buf)
-;; 'auth
-;;
-;; (sieve-manage-listscripts my-buf)
-;; ("vacation" "testscript" ("splitmail") "badscript")
+;; => ((active . "main") "vacation")
;;
;; References:
;;
@@ -74,7 +70,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -87,6 +83,7 @@
(require 'starttls))
(autoload 'sasl-find-mechanism "sasl")
(autoload 'starttls-open-stream "starttls")
+(autoload 'auth-source-user-or-password "auth-source")
;; User customizable variables:
@@ -100,11 +97,6 @@
:type 'string
:group 'sieve-manage)
-(defcustom sieve-manage-default-user (user-login-name)
- "Default username to use."
- :type 'string
- :group 'sieve-manage)
-
(defcustom sieve-manage-server-eol "\r\n"
"The EOL string sent from the server."
:type 'string
@@ -158,7 +150,7 @@ for doing the actual authentication."
:group 'sieve-manage)
(defcustom sieve-manage-default-port 2000
- "Default port number for managesieve protocol."
+ "Default port number or service name for managesieve protocol."
:type 'integer
:group 'sieve-manage)
@@ -174,8 +166,6 @@ Must be a name of a stream in `sieve-manage-stream-alist'."
sieve-manage-port
sieve-manage-auth
sieve-manage-stream
- sieve-manage-username
- sieve-manage-password
sieve-manage-process
sieve-manage-client-eol
sieve-manage-server-eol
@@ -186,8 +176,6 @@ Must be a name of a stream in `sieve-manage-stream-alist'."
(defvar sieve-manage-auth nil)
(defvar sieve-manage-server nil)
(defvar sieve-manage-port nil)
-(defvar sieve-manage-username nil)
-(defvar sieve-manage-password nil)
(defvar sieve-manage-state 'closed
"Managesieve state.
Valid states are `closed', `initial', `nonauth', and `auth'.")
@@ -201,61 +189,6 @@ Valid states are `closed', `initial', `nonauth', and `auth'.")
(unless (featurep 'xemacs)
'(set-buffer-multibyte nil)))
-(declare-function password-read "password-cache" (prompt &optional key))
-(declare-function password-cache-add "password-cache" (key password))
-(declare-function password-cache-remove "password-cache" (key))
-
-;; Uses the dynamically bound `reason' variable.
-(defvar reason)
-(defun sieve-manage-interactive-login (buffer loginfunc)
- "Login to server in BUFFER.
-LOGINFUNC is passed a username and a password, it should return t if
-it was successful authenticating itself to the server, nil otherwise.
-Returns t if login was successful, nil otherwise."
- (with-current-buffer buffer
- (make-local-variable 'sieve-manage-username)
- (make-local-variable 'sieve-manage-password)
- (let (user passwd ret reason passwd-key)
- (condition-case ()
- (while (or (not user) (not passwd))
- (setq user (or sieve-manage-username
- (read-from-minibuffer
- (concat "Managesieve username for "
- sieve-manage-server ": ")
- (or user sieve-manage-default-user)))
- passwd-key (concat "managesieve:" user "@" sieve-manage-server
- ":" sieve-manage-port)
- passwd (or sieve-manage-password
- (password-read (concat "Managesieve password for "
- user "@" sieve-manage-server
- ": ")
- passwd-key)))
- (when (y-or-n-p "Store password for this session? ")
- (password-cache-add passwd-key (copy-sequence passwd)))
- (when (and user passwd)
- (if (funcall loginfunc user passwd)
- (setq ret t
- sieve-manage-username user)
- (if reason
- (message "Login failed (reason given: %s)..." reason)
- (message "Login failed..."))
- (password-cache-remove passwd-key)
- (setq sieve-manage-password nil)
- (setq passwd nil)
- (setq reason nil)
- (sit-for 1))))
- (quit (with-current-buffer buffer
- (password-cache-remove passwd-key)
- (setq user nil
- passwd nil
- sieve-manage-password nil)))
- (error (with-current-buffer buffer
- (password-cache-remove passwd-key)
- (setq user nil
- passwd nil
- sieve-manage-password nil))))
- ret)))
-
(defun sieve-manage-erase (&optional p buffer)
(let ((buffer (or buffer (current-buffer))))
(and sieve-manage-log
@@ -336,70 +269,72 @@ Returns t if login was successful, nil otherwise."
process)))
;; Authenticators
-
(defun sieve-sasl-auth (buffer mech)
"Login to server using the SASL MECH method."
(message "sieve: Authenticating using %s..." mech)
- (if (sieve-manage-interactive-login
- buffer
- (lambda (user passwd)
- (let (client step tag data rsp)
- (setq client (sasl-make-client (sasl-find-mechanism (list mech))
- user "sieve" sieve-manage-server))
- (setq sasl-read-passphrase (function (lambda (prompt) passwd)))
- (setq step (sasl-next-step client nil))
- (setq tag
- (sieve-manage-send
- (concat
- "AUTHENTICATE \""
- mech
- "\""
- (and (sasl-step-data step)
- (concat
- " \""
- (base64-encode-string
- (sasl-step-data step)
- 'no-line-break)
- "\"")))))
- (catch 'done
- (while t
- (setq rsp nil)
- (goto-char (point-min))
- (while (null (or (progn
- (setq rsp (sieve-manage-is-string))
- (if (not (and rsp (looking-at
- sieve-manage-server-eol)))
- (setq rsp nil)
- (goto-char (match-end 0))
- rsp))
- (setq rsp (sieve-manage-is-okno))))
- (accept-process-output sieve-manage-process 1)
- (goto-char (point-min)))
- (sieve-manage-erase)
- (when (sieve-manage-ok-p rsp)
- (when (string-match "^SASL \"\\([^\"]+\\)\"" (cadr rsp))
- (sasl-step-set-data
- step (base64-decode-string (match-string 1 (cadr rsp)))))
- (if (and (setq step (sasl-next-step client step))
- (setq data (sasl-step-data step)))
- ;; We got data for server but it's finished
- (error "Server not ready for SASL data: %s" data)
- ;; The authentication process is finished.
- (throw 'done t)))
- (unless (stringp rsp)
- (apply 'error "Server aborted SASL authentication: %s %s %s"
- rsp))
- (sasl-step-set-data step (base64-decode-string rsp))
- (setq step (sasl-next-step client step))
- (sieve-manage-send
- (if (sasl-step-data step)
- (concat "\""
- (base64-encode-string (sasl-step-data step)
- 'no-line-break)
- "\"")
- "")))))))
- (message "sieve: Authenticating using %s...done" mech)
- (message "sieve: Authenticating using %s...failed" mech)))
+ (with-current-buffer buffer
+ (let* ((user-password (auth-source-user-or-password
+ '("login" "password")
+ sieve-manage-server
+ "sieve" nil t))
+ (client (sasl-make-client (sasl-find-mechanism (list mech))
+ (car user-password) "sieve" sieve-manage-server))
+ (sasl-read-passphrase
+ ;; We *need* to copy the password, because sasl will modify it
+ ;; somehow.
+ `(lambda (prompt) ,(copy-sequence (cadr user-password))))
+ (step (sasl-next-step client nil))
+ (tag (sieve-manage-send
+ (concat
+ "AUTHENTICATE \""
+ mech
+ "\""
+ (and (sasl-step-data step)
+ (concat
+ " \""
+ (base64-encode-string
+ (sasl-step-data step)
+ 'no-line-break)
+ "\"")))))
+ data rsp)
+ (catch 'done
+ (while t
+ (setq rsp nil)
+ (goto-char (point-min))
+ (while (null (or (progn
+ (setq rsp (sieve-manage-is-string))
+ (if (not (and rsp (looking-at
+ sieve-manage-server-eol)))
+ (setq rsp nil)
+ (goto-char (match-end 0))
+ rsp))
+ (setq rsp (sieve-manage-is-okno))))
+ (accept-process-output sieve-manage-process 1)
+ (goto-char (point-min)))
+ (sieve-manage-erase)
+ (when (sieve-manage-ok-p rsp)
+ (when (and (cadr rsp)
+ (string-match "^SASL \"\\([^\"]+\\)\"" (cadr rsp)))
+ (sasl-step-set-data
+ step (base64-decode-string (match-string 1 (cadr rsp)))))
+ (if (and (setq step (sasl-next-step client step))
+ (setq data (sasl-step-data step)))
+ ;; We got data for server but it's finished
+ (error "Server not ready for SASL data: %s" data)
+ ;; The authentication process is finished.
+ (throw 'done t)))
+ (unless (stringp rsp)
+ (error "Server aborted SASL authentication: %s" (caddr rsp)))
+ (sasl-step-set-data step (base64-decode-string rsp))
+ (setq step (sasl-next-step client step))
+ (sieve-manage-send
+ (if (sasl-step-data step)
+ (concat "\""
+ (base64-encode-string (sasl-step-data step)
+ 'no-line-break)
+ "\"")
+ ""))))
+ (message "sieve: Login using %s...done" mech))))
(defun sieve-manage-cram-md5-p (buffer)
(sieve-manage-capability "SASL" "CRAM-MD5" buffer))
@@ -454,7 +389,7 @@ Optional argument AUTH indicates authenticator to use, see
If nil, chooses the best stream the server is capable of.
Optional argument BUFFER is buffer (buffer, or string naming buffer)
to work in."
- (setq buffer (or buffer (format " *sieve* %s:%d" server (or port 2000))))
+ (setq buffer (or buffer (format " *sieve* %s:%s" server (or port sieve-manage-default-port))))
(with-current-buffer (get-buffer-create buffer)
(mapc 'make-local-variable sieve-manage-local-variables)
(sieve-manage-disable-multibyte)
@@ -511,6 +446,17 @@ to work in."
(sieve-manage-erase)
buffer)))
+(defun sieve-manage-authenticate (&optional buffer)
+ "Authenticate on server in BUFFER.
+Return `sieve-manage-state' value."
+ (with-current-buffer (or buffer (current-buffer))
+ (if (eq sieve-manage-state 'nonauth)
+ (when (funcall (nth 2 (assq sieve-manage-auth
+ sieve-manage-authenticator-alist))
+ (current-buffer))
+ (setq sieve-manage-state 'auth))
+ sieve-manage-state)))
+
(defun sieve-manage-opened (&optional buffer)
"Return non-nil if connection to managesieve server in BUFFER is open.
If BUFFER is nil then the current buffer is used."
@@ -534,32 +480,19 @@ If BUFFER is nil, the current buffer is used."
(sieve-manage-erase)
t))
-(defun sieve-manage-authenticate (&optional user passwd buffer)
- "Authenticate to server in BUFFER, using current buffer if nil.
-It uses the authenticator specified when opening the server. If the
-authenticator requires username/passwords, they are queried from the
-user and optionally stored in the buffer. If USER and/or PASSWD is
-specified, the user will not be questioned and the username and/or
-password is remembered in the buffer."
- (with-current-buffer (or buffer (current-buffer))
- (if (not (eq sieve-manage-state 'nonauth))
- (eq sieve-manage-state 'auth)
- (make-local-variable 'sieve-manage-username)
- (make-local-variable 'sieve-manage-password)
- (if user (setq sieve-manage-username user))
- (if passwd (setq sieve-manage-password passwd))
- (if (funcall (nth 2 (assq sieve-manage-auth
- sieve-manage-authenticator-alist)) buffer)
- (setq sieve-manage-state 'auth)))))
-
(defun sieve-manage-capability (&optional name value buffer)
+ "Check if capability NAME of server BUFFER match VALUE.
+If it does, return the server value of NAME. If not returns nil.
+If VALUE is nil, do not check VALUE and return server value.
+If NAME is nil, return the full server list of capabilities."
(with-current-buffer (or buffer (current-buffer))
(if (null name)
sieve-manage-capability
- (if (null value)
- (nth 1 (assoc name sieve-manage-capability))
- (when (string-match value (nth 1 (assoc name sieve-manage-capability)))
- (nth 1 (assoc name sieve-manage-capability)))))))
+ (let ((server-value (cadr (assoc name sieve-manage-capability))))
+ (when (or (null value)
+ (and server-value
+ (string-match value server-value)))
+ server-value)))))
(defun sieve-manage-listscripts (&optional buffer)
(with-current-buffer (or buffer (current-buffer))
diff --git a/lisp/gnus/sieve.el b/lisp/gnus/sieve.el
index 7b014da2f83..ca181c2e7b3 100644
--- a/lisp/gnus/sieve.el
+++ b/lisp/gnus/sieve.el
@@ -320,11 +320,12 @@ Server : " server ":" (or port "2000") "
(insert "\n"))))
(defun sieve-open-server (server &optional port)
- ;; open server
- (set (make-local-variable 'sieve-manage-buffer)
- (sieve-manage-open server))
- ;; authenticate
- (sieve-manage-authenticate nil nil sieve-manage-buffer))
+ "Open SERVER (on PORT) and authenticate."
+ (with-current-buffer
+ ;; open server
+ (set (make-local-variable 'sieve-manage-buffer)
+ (sieve-manage-open server))
+ (sieve-manage-authenticate)))
(defun sieve-refresh-scriptlist ()
(interactive)
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index a2668199469..e28c07ffaad 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -1,7 +1,7 @@
;;; smime.el --- S/MIME support library
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+;; 2009, 2010 Free Software Foundation, Inc.
;; Author: Simon Josefsson <simon@josefsson.org>
;; Keywords: SMIME X.509 PEM OpenSSL
@@ -119,7 +119,7 @@
;;; Code:
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
(require 'dig)
@@ -371,12 +371,9 @@ KEYFILE should contain a PEM encoded key and certificate."
(if keyfile
keyfile
(smime-get-key-with-certs-by-email
- (completing-read
- (concat "Sign using key"
- (if smime-keys
- (concat " (default " (caar smime-keys) "): ")
- ": "))
- smime-keys nil nil (car-safe (car-safe smime-keys))))))
+ (gnus-completing-read
+ "Sign using key"
+ smime-keys nil (car-safe (car-safe smime-keys))))))
(error "Signing failed"))))
(defun smime-encrypt-buffer (&optional certfiles buffer)
@@ -502,11 +499,9 @@ in the buffer specified by `smime-details-buffer'."
(expand-file-name
(or keyfile
(smime-get-key-by-email
- (completing-read
- (concat "Decipher using key"
- (if smime-keys (concat " (default " (caar smime-keys) "): ")
- ": "))
- smime-keys nil nil (car-safe (car-safe smime-keys)))))))))
+ (gnus-completing-read
+ "Decipher using key"
+ smime-keys nil (car-safe (car-safe smime-keys)))))))))
;; Various operations
@@ -596,9 +591,7 @@ A string or a list of strings is returned."
"Get cetificate for MAIL from the ldap server at HOST."
(let ((ldapresult
(funcall
- (if (or (featurep 'xemacs)
- ;; For Emacs >= 22 we don't need smime-ldap.el
- (< emacs-major-version 22))
+ (if (featurep 'xemacs)
(progn
(require 'smime-ldap)
'smime-ldap-search)
@@ -660,6 +653,7 @@ A string or a list of strings is returned."
(define-key smime-mode-map "f" 'smime-certificate-info))
(autoload 'gnus-run-mode-hooks "gnus-util")
+(autoload 'gnus-completing-read "gnus-util")
(defun smime-mode ()
"Major mode for browsing, viewing and fetching certificates.
diff --git a/lisp/gnus/spam-report.el b/lisp/gnus/spam-report.el
index e73444e85c0..30e0ae58f05 100644
--- a/lisp/gnus/spam-report.el
+++ b/lisp/gnus/spam-report.el
@@ -256,6 +256,7 @@ This is initialized based on `user-mail-address'."
80))
(error "Could not open connection to %s" host))
(set-marker (process-mark tcp-connection) (point-min))
+ (gnus-set-process-query-on-exit-flag tcp-connection nil)
(process-send-string
tcp-connection
(format "GET %s HTTP/1.1\nUser-Agent: %s\nHost: %s\n\n"
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index b7908e5507b..448a0088fb8 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -39,7 +39,7 @@
;;{{{ compilation directives and autoloads/requires
-;; For Emacs < 22.2.
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
@@ -689,7 +689,8 @@ order for SpamAssassin to recognize the new registered spam."
"Sx" gnus-summary-mark-as-spam
"Mst" spam-generic-score
"Msx" gnus-summary-mark-as-spam
- "\M-d" gnus-summary-mark-as-spam)
+ "\M-d" gnus-summary-mark-as-spam
+ "$" gnus-summary-mark-as-spam)
(defvar spam-cache-lookups t
"Whether spam.el will try to cache lookups using `spam-caches'.")
diff --git a/lisp/gnus/webmail.el b/lisp/gnus/webmail.el
deleted file mode 100644
index 86d443aa90c..00000000000
--- a/lisp/gnus/webmail.el
+++ /dev/null
@@ -1,1151 +0,0 @@
-;;; webmail.el --- interface of web mail
-
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-
-;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
-;; Keywords: hotmail netaddress my-deja netscape
-
-;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Note: Now mail.yahoo.com provides POP3 service, the webmail
-;; fetching is not going to be supported.
-
-;; Note: You need to have `url' and `w3' installed for this backend to
-;; work. `w3' must be 4.0pre46+one-line-cookie patch or standalone
-;; `url'.
-
-;; Todo: To support more web mail servers.
-
-;; Known bugs:
-;; 1. Net@ddress may corrupt `X-Face'.
-
-;; Warning:
-;; Webmail is an experimental function, which means NO WARRANTY.
-
-;;; Code:
-
-(eval-when-compile (require 'cl))
-
-(require 'nnoo)
-(require 'message)
-(require 'gnus-util)
-(require 'gnus)
-(require 'nnmail)
-(require 'mm-util)
-(require 'mm-url)
-(require 'mml)
-(eval-when-compile
- (ignore-errors
- (require 'url)
- (require 'url-cookie)))
-;; Report failure to find w3 at load time if appropriate.
-(eval '(progn
- (require 'url)
- (require 'url-cookie)))
-
-;;;
-
-(defvar webmail-type-definition
- '((hotmail
- ;; Hotmail hate other HTTP user agents and use one line cookie
- (paranoid agent cookie post)
- (address . "www.hotmail.com")
- (open-url "http://www.hotmail.com/")
- (open-snarf . webmail-hotmail-open)
- ;; W3 hate redirect POST
- (login-url
- "http://%s/cgi-bin/dologin?login=%s&passwd=%s&enter=Sign+in&sec=no&curmbox=ACTIVE&_lang=&js=yes&id=2&tw=-10000&beta="
- webmail-aux user password)
- ;;(login-snarf . webmail-hotmail-login)
- ;;(list-url "%s" webmail-aux)
- (list-snarf . webmail-hotmail-list)
- (article-snarf . webmail-hotmail-article)
- (trash-url
- "%s&login=%s&f=33792&curmbox=ACTIVE&_lang=&foo=inbox&js=&page=&%s=on&_HMaction=MoveTo&tobox=trAsH&nullbox="
- webmail-aux user id))
- (yahoo
- (paranoid agent cookie post)
- (address . "mail.yahoo.com")
- (open-url "http://mail.yahoo.com/")
- (open-snarf . webmail-yahoo-open)
- (login-url;; yahoo will not accept GET
- content
- ("%s" webmail-aux)
- ".tries=&.src=ym&.last=&promo=&.intl=&.bypass=&.partner=&.chkP=Y&.done=&login=%s&passwd=%s"
- user password)
- (login-snarf . webmail-yahoo-login)
- (list-url "%s&rb=Inbox&YN=1" webmail-aux)
- (list-snarf . webmail-yahoo-list)
- (article-snarf . webmail-yahoo-article)
- (trash-url
- "%s/ym/ShowFolder?YY=52107&inc=50&order=down&sort=date&pos=0&box=Inbox&DEL=Delete&destBox=&Mid=%s&destBox2="
- webmail-aux id))
- (netaddress
- (paranoid cookie post)
- (address . "www.netaddress.com")
- (open-url "http://www.netaddress.com/")
- (open-snarf . webmail-netaddress-open)
- (login-url
- content
- ("%s" webmail-aux)
- "LoginState=2&SuccessfulLogin=%%2Ftpl&NewServerName=www.netaddress.com&JavaScript=JavaScript1.2&DomainID=4&Domain=usa.net&NA31site=classic.netaddress.com&NA31port=80&UserID=%s&passwd=%s"
- user password)
- (login-snarf . webmail-netaddress-login)
- (list-url
- "http://www.netaddress.com/tpl/Mail/%s/List?FolderID=-4&SortUseCase=True"
- webmail-session)
- (list-snarf . webmail-netaddress-list)
- (article-url "http://www.netaddress.com/")
- (article-snarf . webmail-netaddress-article)
- (trash-url
- "http://www.netaddress.com/tpl/Message/%s/Move?FolderID=-4&Q=%s&N=&Sort=Date&F=-1"
- webmail-session id))
- (netscape
- (paranoid cookie post agent)
- (address . "webmail.netscape.com")
- (open-url "http://ureg.netscape.com/iiop/UReg2/login/login?U2_LA=en&U2_BACK_FROM_CJ=true&U2_CS=iso-8859-1&U2_ENDURL=http://webmail.netscape.com/tpl/Subscribe/Step1&U2_NEW_ENDURL=http://webmail.netscape.com/tpl/Subscribe/Step1&U2_EXITURL=http://home.netscape.com/&U2_SOURCE=Webmail")
- (open-snarf . webmail-netscape-open)
- (login-url
- content
- ("http://ureg.netscape.com/iiop/UReg2/login/loginform")
- "U2_USERNAME=%s&U2_PASSWORD=%s%s"
- user password webmail-aux)
- (login-snarf . webmail-netaddress-login)
- (list-url
- "http://webmail.netscape.com/tpl/Mail/%s/List?FolderID=-4&SortUseCase=True"
- webmail-session)
- (list-snarf . webmail-netaddress-list)
- (article-url "http://webmail.netscape.com/")
- (article-snarf . webmail-netscape-article)
- (trash-url
- "http://webmail.netscape.com/tpl/Message/%s/Move?FolderID=-4&Q=%s&N=&Sort=Date&F=-1"
- webmail-session id))
- (my-deja
- (paranoid cookie post)
- (address . "www.my-deja.com")
- ;;(open-snarf . webmail-my-deja-open)
- (login-url
- content
- ("http://mydeja.google.com/cgi-bin/deja/maillogin.py")
- "userid=%s&password=%s"
- user password)
- (list-snarf . webmail-my-deja-list)
- (article-snarf . webmail-my-deja-article)
- (trash-url webmail-aux id))))
-
-(defvar webmail-variables
- '(address article-snarf article-url list-snarf list-url
- login-url login-snarf open-url open-snarf site articles
- post-process paranoid trash-url))
-
-(defconst webmail-version "webmail 1.0")
-
-(defvar webmail-newmail-only nil
- "Only fetch new mails.")
-
-(defvar webmail-move-to-trash-can t
- "Move mail to trash can after fetch it.")
-
-;;; Internal variables
-
-(defvar webmail-address nil)
-(defvar webmail-paranoid nil)
-(defvar webmail-aux nil)
-(defvar webmail-session nil)
-(defvar webmail-article-snarf nil)
-(defvar webmail-article-url nil)
-(defvar webmail-list-snarf nil)
-(defvar webmail-list-url nil)
-(defvar webmail-login-url nil)
-(defvar webmail-login-snarf nil)
-(defvar webmail-open-snarf nil)
-(defvar webmail-open-url nil)
-(defvar webmail-trash-url nil)
-(defvar webmail-articles nil)
-(defvar webmail-post-process nil)
-
-(defvar webmail-buffer nil)
-(defvar webmail-buffer-list nil)
-
-(defvar webmail-type nil)
-
-(defvar webmail-error-function nil)
-
-(defvar webmail-debug-file "~/.emacs-webmail-debug")
-
-;;; Interface functions
-
-(defun webmail-debug (str)
- (with-temp-buffer
- (insert "\n---------------- A bug at " str " ------------------\n")
- (dolist (sym '(webmail-type user))
- (if (boundp sym)
- (gnus-pp `(setq ,sym ',(eval sym)))))
- (insert "---------------- webmail buffer ------------------\n\n")
- (insert-buffer-substring webmail-buffer)
- (insert "\n---------------- end of buffer ------------------\n\n")
- (append-to-file (point-min) (point-max) webmail-debug-file)))
-
-(defun webmail-error (str)
- (if webmail-error-function
- (funcall webmail-error-function str))
- (message "%s HTML has changed or your w3 package is too old.(%s)"
- webmail-type str)
- (error "%s HTML has changed or your w3 package is too old.(%s)"
- webmail-type str))
-
-(defun webmail-setdefault (type)
- (let ((type-def (cdr (assq type webmail-type-definition)))
- (vars webmail-variables)
- pair)
- (setq webmail-type type)
- (dolist (var vars)
- (if (setq pair (assq var type-def))
- (set (intern (concat "webmail-" (symbol-name var))) (cdr pair))
- (set (intern (concat "webmail-" (symbol-name var))) nil)))))
-
-(defun webmail-eval (expr)
- (cond
- ((consp expr)
- (cons (webmail-eval (car expr)) (webmail-eval (cdr expr))))
- ((symbolp expr)
- (eval expr))
- (t
- expr)))
-
-(defun webmail-url (xurl)
- (mm-with-unibyte-current-buffer
- (cond
- ((eq (car xurl) 'content)
- (pop xurl)
- (mm-url-fetch-simple (if (stringp (car xurl))
- (car xurl)
- (apply 'format (webmail-eval (car xurl))))
- (apply 'format (webmail-eval (cdr xurl)))))
- ((eq (car xurl) 'post)
- (pop xurl)
- (mm-url-fetch-form (car xurl) (webmail-eval (cdr xurl))))
- (t
- (mm-url-insert (apply 'format (webmail-eval xurl)))))))
-
-(defun webmail-init ()
- "Initialize buffers and such."
- (if (gnus-buffer-live-p webmail-buffer)
- (set-buffer webmail-buffer)
- (setq webmail-buffer
- (nnheader-set-temp-buffer " *webmail*"))
- (mm-disable-multibyte)))
-
-(defvar url-package-name)
-(defvar url-package-version)
-(defvar url-cookie-multiple-line)
-(defvar url-confirmation-func)
-
-;; Hack W3 POST redirect. See `url-parse-mime-headers'.
-;;
-;; Netscape uses "GET" as redirect method when orignal method is POST
-;; and status is 302, .i.e no security risks by default without
-;; confirmation.
-;;
-;; Some web servers (at least Apache used by yahoo) return status 302
-;; instead of 303, though they mean 303.
-
-(defun webmail-url-confirmation-func (prompt)
- (cond
- ((equal prompt (concat "Honor redirection with non-GET method "
- "(possible security risks)? "))
- nil)
- ((equal prompt "Continue (with method of GET)? ")
- t)
- (t (error prompt))))
-
-(defun webmail-refresh-redirect ()
- "Redirect refresh url in META."
- (goto-char (point-min))
- (while (re-search-forward
- "<meta[ \t\r\n]*http-equiv=\"Refresh\"[^>]*URL=\\([^\"]+\\)\""
- nil t)
- (let ((url (match-string 1)))
- (erase-buffer)
- (mm-with-unibyte-current-buffer
- (mm-url-insert url)))
- (goto-char (point-min))))
-
-(defun webmail-fetch (file subtype user password)
- (save-excursion
- (webmail-setdefault subtype)
- (let ((url-package-name (if (memq 'agent webmail-paranoid)
- "Mozilla"
- url-package-name))
- (url-package-version (if (memq 'agent webmail-paranoid)
- "4.0"
- url-package-version))
- (url-cookie-multiple-line (if (memq 'cookie webmail-paranoid)
- nil
- url-cookie-multiple-line))
- (url-confirmation-func (if (memq 'post webmail-paranoid)
- 'webmail-url-confirmation-func
- url-confirmation-func))
- (url-http-silence-on-insecure-redirection t)
- url-cookie-storage url-cookie-secure-storage
- url-cookie-confirmation
- item id (n 0))
- (webmail-init)
- (setq webmail-articles nil)
- (when webmail-open-url
- (erase-buffer)
- (webmail-url webmail-open-url))
- (if webmail-open-snarf (funcall webmail-open-snarf))
- (when webmail-login-url
- (erase-buffer)
- (webmail-url webmail-login-url))
- (if webmail-login-snarf
- (funcall webmail-login-snarf))
- (when webmail-list-url
- (erase-buffer)
- (webmail-url webmail-list-url))
- (if webmail-list-snarf
- (funcall webmail-list-snarf))
- (while (setq item (pop webmail-articles))
- (message "Fetching mail #%d..." (setq n (1+ n)))
- (erase-buffer)
- (mm-with-unibyte-current-buffer
- (mm-url-insert (cdr item)))
- (setq id (car item))
- (if webmail-article-snarf
- (funcall webmail-article-snarf file id))
- (when (and webmail-trash-url webmail-move-to-trash-can)
- (message "Move mail #%d to trash can..." n)
- (condition-case err
- (progn
- (webmail-url webmail-trash-url)
- (let (buf)
- (while (setq buf (pop webmail-buffer-list))
- (kill-buffer buf))))
- (error
- (let (buf)
- (while (setq buf (pop webmail-buffer-list))
- (kill-buffer buf)))
- (error err))))))
- (if webmail-post-process
- (funcall webmail-post-process))))
-
-(defun webmail-encode-8bit ()
- (goto-char (point-min))
- (skip-chars-forward "^\200-\377")
- (while (not (eobp))
- (insert (format "&%d;" (mm-char-int (char-after))))
- (delete-char 1)
- (skip-chars-forward "^\200-\377")))
-
-;;; hotmail
-
-(defun webmail-hotmail-open ()
- (goto-char (point-min))
- (if (re-search-forward
- "action=\"https?://\\([^/]+\\)/cgi-bin/dologin" nil t)
- (setq webmail-aux (match-string 1))
- (webmail-error "open@1")))
-
-(defun webmail-hotmail-login ()
- (let (site)
- (goto-char (point-min))
- (if (re-search-forward
- "https?://\\([^/]+hotmail\\.msn\\.com\\)/cgi-bin/" nil t)
- (setq site (match-string 1))
- (webmail-error "login@1"))
- (goto-char (point-min))
- (if (re-search-forward
- "\\(/cgi-bin/HoTMaiL\\?[^\"]*a=b[^\"]*\\)" nil t)
- (setq webmail-aux (concat "http://" site (match-string 1)))
- (webmail-error "login@2"))))
-
-(defun webmail-hotmail-list ()
- (goto-char (point-min))
- (skip-chars-forward " \t\n\r")
- (let (site url newp (total "0"))
- (if (eobp)
- (setq total "0")
- (if (re-search-forward "\\([0-9]+\\) *<b>(\\([0-9]+\\) new)" nil t)
- (message "Found %s (%s new)" (setq total (match-string 1))
- (match-string 2))
- (if (re-search-forward "\\([0-9]+\\) new" nil t)
- (message "Found %s new" (setq total (match-string 1)))
- (webmail-error "list@0"))))
- (unless (equal total "0")
- (goto-char (point-min))
- (if (re-search-forward
- "https?://\\([^/]+hotmail\\.msn\\.com\\)/cgi-bin/" nil t)
- (setq site (match-string 1))
- (webmail-error "list@1"))
- (goto-char (point-min))
- (if (re-search-forward "disk=\\([^&]*\\)&" nil t)
- (setq webmail-aux
- (concat "http://" site "/cgi-bin/HoTMaiL?disk="
- (match-string 1)))
- (webmail-error "list@2"))
- (goto-char (point-max))
- (while (re-search-backward
- "newmail\\.gif\\|href=\"\\(/cgi-bin/getmsg\\?[^\"]+\\)\""
- nil t)
- (if (setq url (match-string 1))
- (progn
- (if (or newp (not webmail-newmail-only))
- (let (id)
- (if (string-match "msg=\\([^&]+\\)" url)
- (setq id (match-string 1 url)))
- (push (cons id (concat "http://" site url "&raw=0"))
- webmail-articles)))
- (setq newp nil))
- (setq newp t))))))
-
-;; Thank victor@idaccr.org (Victor S. Miller) for raw=0
-
-(defun webmail-hotmail-article (file id)
- (goto-char (point-min))
- (skip-chars-forward " \t\n\r")
- (unless (eobp)
- (if (not (search-forward "<pre>" nil t))
- (webmail-error "article@3"))
- (skip-chars-forward "\n\r\t ")
- (delete-region (point-min) (point))
- (if (not (search-forward "</pre>" nil t))
- (webmail-error "article@3.1"))
- (delete-region (match-beginning 0) (point-max))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-min))
- (while (re-search-forward "\r\n?" nil t)
- (replace-match "\n"))
- (goto-char (point-min))
- (insert "\n\n")
- (if (not (looking-at "\n*From "))
- (insert "From nobody " (current-time-string) "\n")
- (forward-line))
- (insert "X-Gnus-Webmail: " (symbol-value 'user)
- "@" (symbol-name webmail-type) "\n")
- (mm-append-to-file (point-min) (point-max) file)))
-
-(defun webmail-hotmail-article-old (file id)
- (let (p attachment count mime hotmail-direct)
- (save-restriction
- (webmail-encode-8bit)
- (goto-char (point-min))
- (if (not (search-forward "<DIV>" nil t))
- (if (not (search-forward "Reply&nbsp;All" nil t))
- (webmail-error "article@1")
- (setq hotmail-direct t))
- (goto-char (match-beginning 0)))
- (narrow-to-region (point-min) (point))
- (if (not (search-backward "<table" nil t 2))
- (webmail-error "article@1.1"))
- (delete-region (point-min) (match-beginning 0))
- (while (search-forward "<a href=" nil t)
- (setq p (match-beginning 0))
- (search-forward "</a>" nil t)
- (delete-region p (match-end 0)))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-min))
- (delete-blank-lines)
- (goto-char (point-min))
- (when (search-forward "\n\n" nil t)
- (backward-char)
- (delete-region (point) (point-max)))
- (goto-char (point-max))
- (widen)
- (insert "\n")
- (setq p (point))
- (while (re-search-forward
- "<tt>\\|<div>\\|\\(http://[^/]+/cgi-bin/getmsg/\\([^\?]+\\)\?[^\"]*\\)\""
- nil t)
- (if (setq attachment (match-string 1))
- (let ((filename (match-string 2))
- bufname);; Attachment
- (delete-region p (match-end 0))
- (save-excursion
- (set-buffer (generate-new-buffer " *webmail-att*"))
- (mm-url-insert attachment)
- (push (current-buffer) webmail-buffer-list)
- (setq bufname (buffer-name)))
- (setq mime t)
- (insert "<#part type="
- (or (and filename
- (string-match "\\.[^\\.]+$" filename)
- (mailcap-extension-to-mime
- (match-string 0 filename)))
- "application/octet-stream"))
- (insert " buffer=\"" bufname "\"")
- (insert " filename=\"" filename "\"")
- (insert " disposition=\"inline\"")
- (insert "><#/part>\n")
- (setq p (point)))
- (delete-region p (match-end 0))
- (if hotmail-direct
- (if (not (search-forward "</tt>" nil t))
- (webmail-error "article@1.2")
- (delete-region (match-beginning 0) (match-end 0)))
- (setq count 1)
- (while (and (> count 0)
- (re-search-forward "</div>\\|\\(<div>\\)" nil t))
- (if (match-string 1)
- (setq count (1+ count))
- (if (= (setq count (1- count)) 0)
- (delete-region (match-beginning 0)
- (match-end 0))))))
- (narrow-to-region p (point))
- (goto-char (point-min))
- (cond
- ((looking-at "<pre>")
- (goto-char (match-end 0))
- (if (looking-at "$") (forward-char))
- (delete-region (point-min) (point))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- nil)
- (t
- (setq mime t)
- (insert "<#part type=\"text/html\" disposition=inline>")
- (goto-char (point-max))
- (insert "<#/part>")))
- (goto-char (point-max))
- (setq p (point))
- (widen)))
- (delete-region p (point-max))
- (goto-char (point-min))
- ;; Some blank line to separate mails.
- (insert "\n\nFrom nobody " (current-time-string) "\n")
- (insert "X-Gnus-Webmail: " (symbol-value 'user)
- "@" (symbol-name webmail-type) "\n")
- (if id
- (insert (format "X-Message-ID: <%s@hotmail.com>\n" id)))
- (unless (looking-at "$")
- (if (search-forward "\n\n" nil t)
- (forward-line -1)
- (webmail-error "article@2")))
- (narrow-to-region (point) (point-max))
- (if mime
- (insert "MIME-Version: 1.0\n"
- (prog1
- (mml-generate-mime)
- (delete-region (point-min) (point-max)))))
- (goto-char (point-min))
- (widen)
- (let (case-fold-search)
- (while (re-search-forward "^From " nil t)
- (beginning-of-line)
- (insert ">"))))
- (mm-append-to-file (point-min) (point-max) file)))
-
-;;; yahoo
-
-(defun webmail-yahoo-open ()
- (goto-char (point-min))
- (if (re-search-forward "action=\"\\([^\"]+\\)\"" nil t)
- (setq webmail-aux (match-string 1))
- (webmail-error "open@1")))
-
-(defun webmail-yahoo-login ()
- (goto-char (point-min))
- (if (re-search-forward "http://[^/]+[0-9]\\.mail\\.yahoo\\.com/" nil t)
- (setq webmail-aux (match-string 0))
- (webmail-error "login@1"))
- (if (re-search-forward "YY=[0-9]+" nil t)
- (setq webmail-aux (concat webmail-aux "ym/ShowFolder?"
- (match-string 0)))
- (webmail-error "login@2")))
-
-(defun webmail-yahoo-list ()
- (let (url (newp t) (tofetch 0))
- (goto-char (point-min))
- (when (re-search-forward
- "showing [0-9]+-\\([0-9]+\\) of \\([0-9]+\\)" nil t)
- ;;(setq listed (match-string 1))
- (message "Found %s mail(s)" (match-string 2)))
- (if (string-match "http://[^/]+" webmail-aux)
- (setq webmail-aux (match-string 0 webmail-aux))
- (webmail-error "list@1"))
- (goto-char (point-min))
- (while (re-search-forward
- "bgcolor=\"#eeeeee\"\\|href=\"\\(/ym/ShowLetter\\?MsgId=\\([^&]+\\)&[^\"]*\\)\""
- nil t)
- (if (setq url (match-string 1))
- (progn
- (when (or newp (not webmail-newmail-only))
- (push (cons (match-string 2) (concat webmail-aux url "&toc=1"))
- webmail-articles)
- (setq tofetch (1+ tofetch)))
- (setq newp t))
- (setq newp nil)))
- (setq webmail-articles (nreverse webmail-articles))
- (message "Fetching %d mail(s)" tofetch)))
-
-(defun webmail-yahoo-article (file id)
- (let (p attachment)
- (save-restriction
- (goto-char (point-min))
- (if (not (search-forward "value=\"Done\"" nil t))
- (webmail-error "article@1"))
- (if (not (search-forward "<table" nil t))
- (webmail-error "article@2"))
- (delete-region (point-min) (match-beginning 0))
- (if (not (search-forward "</table>" nil t))
- (webmail-error "article@3"))
- (narrow-to-region (point-min) (match-end 0))
- (while (search-forward "<a href=" nil t)
- (setq p (match-beginning 0))
- (search-forward "</a>" nil t)
- (delete-region p (match-end 0)))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-min))
- (delete-blank-lines)
- (goto-char (point-max))
- (widen)
- (insert "\n")
- (setq p (point))
- (while (re-search-forward "[^\"]*/ShowLetter/[^\?]+\?[^\"]*" nil t)
- (setq attachment (match-string 0))
- (let (bufname ct ctl cd description)
- (if (not (search-forward "<table" nil t))
- (webmail-error "article@4"))
- (delete-region p (match-beginning 0))
- (if (not (search-forward "</table>" nil t))
- (webmail-error "article@5"))
- (narrow-to-region p (match-end 0))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-min))
- (delete-blank-lines)
- (setq ct (mail-fetch-field "content-type")
- ctl (and ct (mail-header-parse-content-type ct))
- ;;cte (mail-fetch-field "content-transfer-encoding")
- cd (mail-fetch-field "content-disposition")
- description (mail-fetch-field "content-description")
- id (mail-fetch-field "content-id"))
- (delete-region (point-min) (point-max))
- (widen)
- (save-excursion
- (set-buffer (generate-new-buffer " *webmail-att*"))
- (mm-url-insert (concat webmail-aux attachment))
- (push (current-buffer) webmail-buffer-list)
- (setq bufname (buffer-name)))
- (insert "<#part")
- (if (and ctl (not (equal (car ctl) "text/")))
- (insert " type=\"" (car ctl) "\""))
- (insert " buffer=\"" bufname "\"")
- (if cd
- (insert " disposition=\"" cd "\""))
- (if description
- (insert " description=\"" description "\""))
- (insert "><#/part>\n")
- (setq p (point))))
- (delete-region p (point-max))
- (goto-char (point-min))
- ;; Some blank line to separate mails.
- (insert "\n\nFrom nobody " (current-time-string) "\n")
- (insert "X-Gnus-Webmail: " (symbol-value 'user)
- "@" (symbol-name webmail-type) "\n")
- (if id
- (insert (format "X-Message-ID: <%s@yahoo.com>\n" id)))
- (unless (looking-at "$")
- (if (search-forward "\n\n" nil t)
- (forward-line -1)
- (webmail-error "article@2")))
- (narrow-to-region (point) (point-max))
- (insert "MIME-Version: 1.0\n"
- (prog1
- (mml-generate-mime)
- (delete-region (point-min) (point-max))))
- (goto-char (point-min))
- (widen)
- (let (case-fold-search)
- (while (re-search-forward "^From " nil t)
- (beginning-of-line)
- (insert ">"))))
- (mm-append-to-file (point-min) (point-max) file)))
-
-;;; netaddress
-
-(defun webmail-netscape-open ()
- (goto-char (point-min))
- (setq webmail-aux "")
- (while (re-search-forward
- "TYPE=hidden *NAME=\\([^ ]+\\) *VALUE=\"\\([^\"]+\\)"
- nil t)
- (setq webmail-aux (concat webmail-aux "&" (match-string 1) "="
- (match-string 2)))))
-
-(defun webmail-netaddress-open ()
- (goto-char (point-min))
- (if (re-search-forward "action=\"\\([^\"]+\\)\"" nil t)
- (setq webmail-aux (concat (car webmail-open-url) (match-string 1)))
- (webmail-error "open@1")))
-
-(defun webmail-netaddress-login ()
- (webmail-refresh-redirect)
- (goto-char (point-min))
- (if (re-search-forward "tpl/[^/]+/\\([^/]+\\)" nil t)
- (setq webmail-session (match-string 1))
- (webmail-error "login@1")))
-
-(defun webmail-netaddress-list ()
- (webmail-refresh-redirect)
- (let (item id)
- (goto-char (point-min))
- (when (re-search-forward
- "(\\([0-9]+\\) unread, \\([0-9]+\\) total)" nil t)
- (message "Found %s mail(s), %s unread"
- (match-string 2) (match-string 1)))
- (goto-char (point-min))
- (while (re-search-forward
- "MR\\[i\\]\\.R='\\([^']*\\)'\\|MR\\[i\\]\\.Q='\\([^']+\\)'" nil t)
- (if (setq id (match-string 2))
- (setq item
- (cons id
- (format "%s/tpl/Message/%s/Read?Q=%s&FolderID=-4&SortUseCase=True&Sort=Date&Headers=True"
- (car webmail-article-url)
- webmail-session id)))
- (if (or (not webmail-newmail-only)
- (equal (match-string 1) "True"))
- (push item webmail-articles))))
- (setq webmail-articles (nreverse webmail-articles))))
-
-(defun webmail-netaddress-single-part ()
- (goto-char (point-min))
- (cond
- ((looking-at "[\t\040\r\n]*<font face=[^>]+>[\t\040\r\n]*")
- ;; text/plain
- (replace-match "")
- (while (re-search-forward "[\t\040\r\n]+" nil t)
- (replace-match " "))
- (goto-char (point-min))
- (while (re-search-forward "<br>" nil t)
- (replace-match "\n"))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- nil)
- (t
- (insert "<#part type=\"text/html\" disposition=inline>")
- (goto-char (point-max))
- (insert "<#/part>")
- t)))
-
-(defun webmail-netaddress-article (file id)
- (webmail-refresh-redirect)
- (let (p p1 attachment count mime type)
- (save-restriction
- (webmail-encode-8bit)
- (goto-char (point-min))
- (if (not (search-forward "Trash" nil t))
- (webmail-error "article@1"))
- (if (not (search-forward "<form>" nil t))
- (webmail-error "article@2"))
- (delete-region (point-min) (match-beginning 0))
- (if (not (search-forward "</form>" nil t))
- (webmail-error "article@3"))
- (narrow-to-region (point-min) (match-end 0))
- (goto-char (point-min))
- (while (re-search-forward "[\040\t\r\n]+" nil t)
- (replace-match " "))
- (goto-char (point-min))
- (while (search-forward "<b>" nil t)
- (replace-match "\n"))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-min))
- (delete-blank-lines)
- (goto-char (point-min))
- (while (re-search-forward "^\040+\\|\040+$" nil t)
- (replace-match ""))
- (goto-char (point-min))
- (while (re-search-forward "\040+" nil t)
- (replace-match " "))
- (goto-char (point-max))
- (widen)
- (insert "\n\n")
- (setq p (point))
- (unless (search-forward "<!-- Data -->" nil t)
- (webmail-error "article@4"))
- (forward-line 14)
- (delete-region p (point))
- (goto-char (point-max))
- (unless (re-search-backward
- "[\040\t]*<br>[\040\t\r\n]*<br>[\040\t\r\n]*<form" p t)
- (webmail-error "article@5"))
- (delete-region (point) (point-max))
- (goto-char p)
- (while (search-forward
- "<TABLE border=\"0\" WIDTH=\"98%\" cellpadding=0 cellspacing=0>"
- nil t 2)
- (setq mime t)
- (unless (search-forward "</TABLE>" nil t)
- (webmail-error "article@6"))
- (setq p1 (point))
- (if (search-backward "<IMG " p t)
- (progn
- (unless (re-search-forward "HREF=\"\\(/tpl/Attachment/[^/]+/\\([^/]+/[^\?]+\\)[^\"]+\\)\"" p1 t)
- (webmail-error "article@7"))
- (setq attachment (match-string 1))
- (setq type (match-string 2))
- (unless (search-forward "</TABLE>" nil t)
- (webmail-error "article@8"))
- (delete-region p (point))
- (let (bufname);; Attachment
- (save-excursion
- (set-buffer (generate-new-buffer " *webmail-att*"))
- (mm-url-insert (concat (car webmail-open-url) attachment))
- (push (current-buffer) webmail-buffer-list)
- (setq bufname (buffer-name)))
- (insert "<#part type=" type)
- (insert " buffer=\"" bufname "\"")
- (insert " disposition=\"inline\"")
- (insert "><#/part>\n")
- (setq p (point))))
- (delete-region p p1)
- (narrow-to-region
- p
- (if (search-forward
- "<TABLE border=\"0\" WIDTH=\"98%\" cellpadding=0 cellspacing=0>"
- nil t)
- (match-beginning 0)
- (point-max)))
- (webmail-netaddress-single-part)
- (goto-char (point-max))
- (setq p (point))
- (widen)))
- (unless mime
- (narrow-to-region p (point-max))
- (setq mime (webmail-netaddress-single-part))
- (widen))
- (goto-char (point-min))
- ;; Some blank line to separate mails.
- (insert "\n\nFrom nobody " (current-time-string) "\n")
- (insert "X-Gnus-Webmail: " (symbol-value 'user)
- "@" (symbol-name webmail-type) "\n")
- (if id
- (insert (format "X-Message-ID: <%s@%s>\n" id webmail-address)))
- (unless (looking-at "$")
- (if (search-forward "\n\n" nil t)
- (forward-line -1)
- (webmail-error "article@2")))
- (when mime
- (narrow-to-region (point-min) (point))
- (goto-char (point-min))
- (while (not (eobp))
- (if (looking-at "MIME-Version\\|Content-Type")
- (delete-region (point)
- (progn
- (forward-line 1)
- (if (re-search-forward "^[^ \t]" nil t)
- (goto-char (match-beginning 0))
- (point-max))))
- (forward-line 1)))
- (goto-char (point-max))
- (widen)
- (narrow-to-region (point) (point-max))
- (insert "MIME-Version: 1.0\n"
- (prog1
- (mml-generate-mime)
- (delete-region (point-min) (point-max))))
- (goto-char (point-min))
- (widen))
- (let (case-fold-search)
- (while (re-search-forward "^From " nil t)
- (beginning-of-line)
- (insert ">"))))
- (mm-append-to-file (point-min) (point-max) file)))
-
-(defun webmail-netscape-article (file id)
- (let (p p1 attachment count mime type)
- (save-restriction
- (webmail-encode-8bit)
- (goto-char (point-min))
- (if (not (search-forward "Trash" nil t))
- (webmail-error "article@1"))
- (if (not (search-forward "<form>" nil t))
- (webmail-error "article@2"))
- (delete-region (point-min) (match-beginning 0))
- (if (not (search-forward "</form>" nil t))
- (webmail-error "article@3"))
- (narrow-to-region (point-min) (match-end 0))
- (goto-char (point-min))
- (while (re-search-forward "[\040\t\r\n]+" nil t)
- (replace-match " "))
- (goto-char (point-min))
- (while (re-search-forward "<a href=[^>]*>[^<]*</a>" nil t)
- (replace-match ""))
- (goto-char (point-min))
- (while (search-forward "<b>" nil t)
- (replace-match "\n"))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-min))
- (delete-blank-lines)
- (goto-char (point-min))
- (while (re-search-forward "^\040+\\|\040+$" nil t)
- (replace-match ""))
- (goto-char (point-min))
- (while (re-search-forward "\040+" nil t)
- (replace-match " "))
- (goto-char (point-max))
- (widen)
- (insert "\n\n")
- (setq p (point))
- (unless (search-forward "<!-- Data -->" nil t)
- (webmail-error "article@4"))
- (forward-line 14)
- (delete-region p (point))
- (goto-char (point-max))
- (unless (re-search-backward
- "<form name=\"Transfer2\"" p t)
- (webmail-error "article@5"))
- (delete-region (point) (point-max))
- (goto-char p)
- (while (search-forward
- "<TABLE border=\"0\" WIDTH=\"98%\" cellpadding=0 cellspacing=0>"
- nil t 2)
- (setq mime t)
- (unless (search-forward "</TABLE>" nil t)
- (webmail-error "article@6"))
- (setq p1 (point))
- (if (search-backward "<IMG " p t)
- (progn
- (unless (re-search-forward "HREF=\"\\(/tpl/Attachment/[^/]+/\\([^/]+/[^\?]+\\)[^\"]+\\)\"" p1 t)
- (webmail-error "article@7"))
- (setq attachment (match-string 1))
- (setq type (match-string 2))
- (unless (search-forward "</TABLE>" nil t)
- (webmail-error "article@8"))
- (delete-region p (point))
- (let (bufname);; Attachment
- (save-excursion
- (set-buffer (generate-new-buffer " *webmail-att*"))
- (mm-url-insert (concat (car webmail-open-url) attachment))
- (push (current-buffer) webmail-buffer-list)
- (setq bufname (buffer-name)))
- (insert "<#part type=" type)
- (insert " buffer=\"" bufname "\"")
- (insert " disposition=\"inline\"")
- (insert "><#/part>\n")
- (setq p (point))))
- (delete-region p p1)
- (narrow-to-region
- p
- (if (search-forward
- "<TABLE border=\"0\" WIDTH=\"98%\" cellpadding=0 cellspacing=0>"
- nil t)
- (match-beginning 0)
- (point-max)))
- (webmail-netaddress-single-part)
- (goto-char (point-max))
- (setq p (point))
- (widen)))
- (unless mime
- (narrow-to-region p (point-max))
- (setq mime (webmail-netaddress-single-part))
- (widen))
- (goto-char (point-min))
- ;; Some blank line to separate mails.
- (insert "\n\nFrom nobody " (current-time-string) "\n")
- (insert "X-Gnus-Webmail: " (symbol-value 'user)
- "@" (symbol-name webmail-type) "\n")
- (if id
- (insert (format "X-Message-ID: <%s@%s>\n" id webmail-address)))
- (unless (looking-at "$")
- (if (search-forward "\n\n" nil t)
- (forward-line -1)
- (webmail-error "article@2")))
- (when mime
- (narrow-to-region (point-min) (point))
- (goto-char (point-min))
- (while (not (eobp))
- (if (looking-at "MIME-Version\\|Content-Type")
- (delete-region (point)
- (progn
- (forward-line 1)
- (if (re-search-forward "^[^ \t]" nil t)
- (goto-char (match-beginning 0))
- (point-max))))
- (forward-line 1)))
- (goto-char (point-max))
- (widen)
- (narrow-to-region (point) (point-max))
- (insert "MIME-Version: 1.0\n"
- (prog1
- (mml-generate-mime)
- (delete-region (point-min) (point-max))))
- (goto-char (point-min))
- (widen))
- (let (case-fold-search)
- (while (re-search-forward "^From " nil t)
- (beginning-of-line)
- (insert ">"))))
- (mm-append-to-file (point-min) (point-max) file)))
-
-;;; my-deja
-
-(defun webmail-my-deja-open ()
- (webmail-refresh-redirect)
- (goto-char (point-min))
- (if (re-search-forward "action=\"\\([^\"]+maillogin\\.py[^\"]*\\)\""
- nil t)
- (setq webmail-aux (match-string 1))
- (webmail-error "open@1")))
-
-(defun webmail-my-deja-list ()
- (let (item id newp base)
- (goto-char (point-min))
- (when (re-search-forward "href=\"\\(\\([^\"]*\\)/mailnf\\.[^\"]*\\)\""
- nil t)
- (let ((url (match-string 1)))
- (setq base (match-string 2))
- (erase-buffer)
- (mm-url-insert url)))
- (goto-char (point-min))
- (when (re-search-forward
- "(\\([0-9]+\\) Message.?-[^>]*\\([0-9]+\\) New"
- nil t)
- (message "Found %s mail(s), %s unread"
- (match-string 1) (match-string 2)))
- (goto-char (point-min))
- (while (re-search-forward
- "newmail\\.gif\\|href=\"[^\"]*\\(mailnf\\.[^\"]+act=view[^\"]+mid=\\([^\"&]+\\)[^\"]+\\)\""
- nil t)
- (if (setq id (match-string 2))
- (when (and (or newp (not webmail-newmail-only))
- (not (assoc id webmail-articles)))
- (push (cons id (setq webmail-aux
- (concat base "/" (match-string 1))))
- webmail-articles)
- (setq newp nil))
- (setq newp t)))
- (setq webmail-articles (nreverse webmail-articles))))
-
-(defun webmail-my-deja-article-part (base)
- (let (p)
- (cond
- ((looking-at "[\t\040\r\n]*<!--[^>]*>")
- (replace-match ""))
- ((looking-at "[\t\040\r\n]*</PRE>")
- (replace-match ""))
- ((looking-at "[\t\040\r\n]*<PRE>")
- ;; text/plain
- (replace-match "")
- (save-restriction
- (narrow-to-region (point)
- (if (re-search-forward "</?PRE>" nil t)
- (match-beginning 0)
- (point-max)))
- (goto-char (point-min))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-max))))
- ((looking-at "[\t\040\r\n]*<TABLE")
- (save-restriction
- (narrow-to-region (point)
- (if (search-forward "</TABLE>" nil t 2)
- (point)
- (point-max)))
- (goto-char (point-min))
- (let (name type url bufname)
- (if (and (search-forward "File Name:" nil t)
- (re-search-forward "<FONT[^>]+>\\([^<]+\\)" nil t))
- (setq name (match-string 1)))
- (if (and (search-forward "File Type:" nil t)
- (re-search-forward "<FONT[^>]+>\\([^<]+\\)" nil t))
- (setq type (match-string 1)))
- (unless (re-search-forward "action=\"getattach\\.cgi/\\([^\"]+\\)"
- nil t)
- (webmail-error "article@5"))
- (setq url (concat base "/getattach.cgi/" (match-string 1)
- "?sm=Download"))
- (while (re-search-forward
- "type=hidden name=\"\\([^\"]+\\)\" value=\"\\([^\"]+\\)"
- nil t)
- (setq url (concat url "&" (match-string 1) "="
- (match-string 2))))
- (delete-region (point-min) (point-max))
- (save-excursion
- (set-buffer (generate-new-buffer " *webmail-att*"))
- (mm-url-insert url)
- (push (current-buffer) webmail-buffer-list)
- (setq bufname (buffer-name)))
- (insert "<#part type=\"" type "\"")
- (if name (insert " filename=\"" name "\""))
- (insert " buffer=\"" bufname "\"")
- (insert " disposition=inline><#/part>"))))
- (t
- (insert "<#part type=\"text/html\" disposition=inline>")
- (goto-char (point-max))
- (insert "<#/part>")))))
-
-(defun webmail-my-deja-article (file id)
- (let (base)
- (goto-char (point-min))
- (unless (string-match "\\([^\"]+\\)/mail" webmail-aux)
- (webmail-error "article@0"))
- (setq base (match-string 1 webmail-aux))
- (when (re-search-forward
- "href=\"[^\"]*\\(mailnf\\.[^\"]+act=move[^\"]+mid=\\([^\"&]+\\)[^\"]+\\)\""
- nil t)
- (setq webmail-aux (concat base "/" (match-string 1)))
- (string-match "mid=[^\"&]+" webmail-aux)
- (setq webmail-aux (replace-match "mid=%s" nil nil webmail-aux)))
- (unless (search-forward "<HR noshade>" nil t)
- (webmail-error "article@1"))
- (delete-region (point-min) (point))
- (unless (search-forward "<HR noshade>" nil t)
- (webmail-error "article@2"))
- (save-restriction
- (narrow-to-region (point-min) (point))
- (while (search-forward "\r\n" nil t)
- (replace-match "\n"))
- (mm-url-remove-markup)
- (mm-url-decode-entities-nbsp)
- (goto-char (point-min))
- (while (re-search-forward "\n\n+" nil t)
- (replace-match "\n"))
- (goto-char (point-max)))
- (save-restriction
- (narrow-to-region (point) (point-max))
- (goto-char (point-max))
- (unless (search-backward "<HR noshade>" nil t)
- (webmail-error "article@3"))
- (unless (search-backward "</TT>" nil t)
- (webmail-error "article@4"))
- (delete-region (point) (point-max))
- (goto-char (point-min))
- (while (not (eobp))
- (webmail-my-deja-article-part base))
- (insert "MIME-Version: 1.0\n"
- (prog1
- (mml-generate-mime)
- (delete-region (point-min) (point-max)))))
- (goto-char (point-min))
- (insert "\n\nFrom nobody " (current-time-string) "\n")
- (insert "X-Gnus-Webmail: " (symbol-value 'user)
- "@" (symbol-name webmail-type) "\n")
- (if (eq (char-after) ?\n)
- (delete-char 1))
- (mm-append-to-file (point-min) (point-max) file)))
-
-(provide 'webmail)
-
-;;; webmail.el ends here
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index 9d10d5170ba..9f54ff08c0b 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -255,6 +255,15 @@ The format is (FUNCTION ARGS...).")
'help-function (lambda (file) (dired file))
'help-echo (purecopy "mouse-2, RET: visit package directory"))
+(define-button-type 'help-theme-def
+ :supertype 'help-xref
+ 'help-function 'find-file
+ 'help-echo (purecopy "mouse-2, RET: visit theme file"))
+
+(define-button-type 'help-theme-edit
+ :supertype 'help-xref
+ 'help-function 'customize-create-theme
+ 'help-echo (purecopy "mouse-2, RET: edit this theme file"))
;;;###autoload
(defun help-mode ()
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 7edf5ec10ac..ebc43e43d25 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -97,7 +97,99 @@ Quoting cannot be used, so the arguments cannot themselves contain spaces."
(defvar hexl-max-address 0
"Maximum offset into hexl buffer.")
-(defvar hexl-mode-map nil)
+(defvar hexl-mode-map
+ (let ((map (make-keymap)))
+ ;; Make all self-inserting keys go through hexl-self-insert-command,
+ ;; because we need to convert them to unibyte characters before
+ ;; inserting them into the buffer.
+ (define-key map [remap self-insert-command] 'hexl-self-insert-command)
+
+ (define-key map "\C-m" 'hexl-self-insert-command)
+ (define-key map [left] 'hexl-backward-char)
+ (define-key map [right] 'hexl-forward-char)
+ (define-key map [up] 'hexl-previous-line)
+ (define-key map [down] 'hexl-next-line)
+ (define-key map [M-left] 'hexl-backward-short)
+ (define-key map [?\e left] 'hexl-backward-short)
+ (define-key map [M-right] 'hexl-forward-short)
+ (define-key map [?\e right] 'hexl-forward-short)
+ (define-key map [next] 'hexl-scroll-up)
+ (define-key map [prior] 'hexl-scroll-down)
+ (define-key map [home] 'hexl-beginning-of-line)
+ (define-key map [end] 'hexl-end-of-line)
+ (define-key map [C-home] 'hexl-beginning-of-buffer)
+ (define-key map [C-end] 'hexl-end-of-buffer)
+ (define-key map [deletechar] 'undefined)
+ (define-key map [deleteline] 'undefined)
+ (define-key map [insertline] 'undefined)
+ (define-key map [S-delete] 'undefined)
+ (define-key map "\177" 'undefined)
+
+ (define-key map "\C-a" 'hexl-beginning-of-line)
+ (define-key map "\C-b" 'hexl-backward-char)
+ (define-key map "\C-d" 'undefined)
+ (define-key map "\C-e" 'hexl-end-of-line)
+ (define-key map "\C-f" 'hexl-forward-char)
+
+ (if (not (memq (key-binding (char-to-string help-char))
+ '(help-command ehelp-command)))
+ (define-key map (char-to-string help-char) 'undefined))
+
+ (define-key map "\C-k" 'undefined)
+ (define-key map "\C-n" 'hexl-next-line)
+ (define-key map "\C-o" 'undefined)
+ (define-key map "\C-p" 'hexl-previous-line)
+ (define-key map "\C-q" 'hexl-quoted-insert)
+ (define-key map "\C-t" 'undefined)
+ (define-key map "\C-v" 'hexl-scroll-up)
+ (define-key map "\C-w" 'undefined)
+ (define-key map "\C-y" 'undefined)
+
+ (fset 'hexl-ESC-prefix (copy-keymap 'ESC-prefix))
+ (define-key map "\e" 'hexl-ESC-prefix)
+ (define-key map "\e\C-a" 'hexl-beginning-of-512b-page)
+ (define-key map "\e\C-b" 'hexl-backward-short)
+ (define-key map "\e\C-d" 'hexl-insert-decimal-char)
+ (define-key map "\e\C-e" 'hexl-end-of-512b-page)
+ (define-key map "\e\C-f" 'hexl-forward-short)
+ (define-key map "\e\C-i" 'undefined)
+ (define-key map "\e\C-j" 'undefined)
+ (define-key map "\e\C-k" 'undefined)
+ (define-key map "\e\C-o" 'hexl-insert-octal-char)
+ (define-key map "\e\C-q" 'undefined)
+ (define-key map "\e\C-t" 'undefined)
+ (define-key map "\e\C-x" 'hexl-insert-hex-char)
+ (define-key map "\eb" 'hexl-backward-word)
+ (define-key map "\ec" 'undefined)
+ (define-key map "\ed" 'undefined)
+ (define-key map "\ef" 'hexl-forward-word)
+ (define-key map "\eg" 'hexl-goto-hex-address)
+ (define-key map "\ei" 'undefined)
+ (define-key map "\ej" 'hexl-goto-address)
+ (define-key map "\ek" 'undefined)
+ (define-key map "\el" 'undefined)
+ (define-key map "\eq" 'undefined)
+ (define-key map "\es" 'undefined)
+ (define-key map "\et" 'undefined)
+ (define-key map "\eu" 'undefined)
+ (define-key map "\ev" 'hexl-scroll-down)
+ (define-key map "\ey" 'undefined)
+ (define-key map "\ez" 'undefined)
+ (define-key map "\e<" 'hexl-beginning-of-buffer)
+ (define-key map "\e>" 'hexl-end-of-buffer)
+
+ (fset 'hexl-C-c-prefix (copy-keymap mode-specific-map))
+ (define-key map "\C-c" 'hexl-C-c-prefix)
+ (define-key map "\C-c\C-c" 'hexl-mode-exit)
+
+ (fset 'hexl-C-x-prefix (copy-keymap 'Control-X-prefix))
+ (define-key map "\C-x" 'hexl-C-x-prefix)
+ (define-key map "\C-x[" 'hexl-beginning-of-1k-page)
+ (define-key map "\C-x]" 'hexl-end-of-1k-page)
+ (define-key map "\C-x\C-p" 'undefined)
+ (define-key map "\C-x\C-s" 'hexl-save-buffer)
+ (define-key map "\C-x\C-t" 'undefined)
+ map))
;; Variable declarations for suppressing warnings from the byte-compiler.
(defvar ruler-mode)
@@ -1017,100 +1109,6 @@ This function is assumed to be used as callback function for `hl-line-mode'."
;; startup stuff.
-(if hexl-mode-map
- nil
- (setq hexl-mode-map (make-keymap))
- ;; Make all self-inserting keys go through hexl-self-insert-command,
- ;; because we need to convert them to unibyte characters before
- ;; inserting them into the buffer.
- (define-key hexl-mode-map [remap self-insert-command] 'hexl-self-insert-command)
-
- (define-key hexl-mode-map "\C-m" 'hexl-self-insert-command)
- (define-key hexl-mode-map [left] 'hexl-backward-char)
- (define-key hexl-mode-map [right] 'hexl-forward-char)
- (define-key hexl-mode-map [up] 'hexl-previous-line)
- (define-key hexl-mode-map [down] 'hexl-next-line)
- (define-key hexl-mode-map [M-left] 'hexl-backward-short)
- (define-key hexl-mode-map [?\e left] 'hexl-backward-short)
- (define-key hexl-mode-map [M-right] 'hexl-forward-short)
- (define-key hexl-mode-map [?\e right] 'hexl-forward-short)
- (define-key hexl-mode-map [next] 'hexl-scroll-up)
- (define-key hexl-mode-map [prior] 'hexl-scroll-down)
- (define-key hexl-mode-map [home] 'hexl-beginning-of-line)
- (define-key hexl-mode-map [end] 'hexl-end-of-line)
- (define-key hexl-mode-map [C-home] 'hexl-beginning-of-buffer)
- (define-key hexl-mode-map [C-end] 'hexl-end-of-buffer)
- (define-key hexl-mode-map [deletechar] 'undefined)
- (define-key hexl-mode-map [deleteline] 'undefined)
- (define-key hexl-mode-map [insertline] 'undefined)
- (define-key hexl-mode-map [S-delete] 'undefined)
- (define-key hexl-mode-map "\177" 'undefined)
-
- (define-key hexl-mode-map "\C-a" 'hexl-beginning-of-line)
- (define-key hexl-mode-map "\C-b" 'hexl-backward-char)
- (define-key hexl-mode-map "\C-d" 'undefined)
- (define-key hexl-mode-map "\C-e" 'hexl-end-of-line)
- (define-key hexl-mode-map "\C-f" 'hexl-forward-char)
-
- (if (not (memq (key-binding (char-to-string help-char))
- '(help-command ehelp-command)))
- (define-key hexl-mode-map (char-to-string help-char) 'undefined))
-
- (define-key hexl-mode-map "\C-k" 'undefined)
- (define-key hexl-mode-map "\C-n" 'hexl-next-line)
- (define-key hexl-mode-map "\C-o" 'undefined)
- (define-key hexl-mode-map "\C-p" 'hexl-previous-line)
- (define-key hexl-mode-map "\C-q" 'hexl-quoted-insert)
- (define-key hexl-mode-map "\C-t" 'undefined)
- (define-key hexl-mode-map "\C-v" 'hexl-scroll-up)
- (define-key hexl-mode-map "\C-w" 'undefined)
- (define-key hexl-mode-map "\C-y" 'undefined)
-
- (fset 'hexl-ESC-prefix (copy-keymap 'ESC-prefix))
- (define-key hexl-mode-map "\e" 'hexl-ESC-prefix)
- (define-key hexl-mode-map "\e\C-a" 'hexl-beginning-of-512b-page)
- (define-key hexl-mode-map "\e\C-b" 'hexl-backward-short)
- (define-key hexl-mode-map "\e\C-d" 'hexl-insert-decimal-char)
- (define-key hexl-mode-map "\e\C-e" 'hexl-end-of-512b-page)
- (define-key hexl-mode-map "\e\C-f" 'hexl-forward-short)
- (define-key hexl-mode-map "\e\C-i" 'undefined)
- (define-key hexl-mode-map "\e\C-j" 'undefined)
- (define-key hexl-mode-map "\e\C-k" 'undefined)
- (define-key hexl-mode-map "\e\C-o" 'hexl-insert-octal-char)
- (define-key hexl-mode-map "\e\C-q" 'undefined)
- (define-key hexl-mode-map "\e\C-t" 'undefined)
- (define-key hexl-mode-map "\e\C-x" 'hexl-insert-hex-char)
- (define-key hexl-mode-map "\eb" 'hexl-backward-word)
- (define-key hexl-mode-map "\ec" 'undefined)
- (define-key hexl-mode-map "\ed" 'undefined)
- (define-key hexl-mode-map "\ef" 'hexl-forward-word)
- (define-key hexl-mode-map "\eg" 'hexl-goto-hex-address)
- (define-key hexl-mode-map "\ei" 'undefined)
- (define-key hexl-mode-map "\ej" 'hexl-goto-address)
- (define-key hexl-mode-map "\ek" 'undefined)
- (define-key hexl-mode-map "\el" 'undefined)
- (define-key hexl-mode-map "\eq" 'undefined)
- (define-key hexl-mode-map "\es" 'undefined)
- (define-key hexl-mode-map "\et" 'undefined)
- (define-key hexl-mode-map "\eu" 'undefined)
- (define-key hexl-mode-map "\ev" 'hexl-scroll-down)
- (define-key hexl-mode-map "\ey" 'undefined)
- (define-key hexl-mode-map "\ez" 'undefined)
- (define-key hexl-mode-map "\e<" 'hexl-beginning-of-buffer)
- (define-key hexl-mode-map "\e>" 'hexl-end-of-buffer)
-
- (fset 'hexl-C-c-prefix (copy-keymap mode-specific-map))
- (define-key hexl-mode-map "\C-c" 'hexl-C-c-prefix)
- (define-key hexl-mode-map "\C-c\C-c" 'hexl-mode-exit)
-
- (fset 'hexl-C-x-prefix (copy-keymap 'Control-X-prefix))
- (define-key hexl-mode-map "\C-x" 'hexl-C-x-prefix)
- (define-key hexl-mode-map "\C-x[" 'hexl-beginning-of-1k-page)
- (define-key hexl-mode-map "\C-x]" 'hexl-end-of-1k-page)
- (define-key hexl-mode-map "\C-x\C-p" 'undefined)
- (define-key hexl-mode-map "\C-x\C-s" 'hexl-save-buffer)
- (define-key hexl-mode-map "\C-x\C-t" 'undefined))
-
(easy-menu-define hexl-menu hexl-mode-map "Hexl Mode menu"
`("Hexl"
:help "Hexl-specific Features"
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index de4e2ff0dfd..0273de14edd 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -564,23 +564,15 @@ not suitable."
'face-name-history
(cdr hi-lock-face-defaults))))
-(defvar hi-lock--inhibit-font-lock-hook nil
- "Inhibit the action of `hi-lock-font-lock-hook'.
-This is used by `hi-lock-set-pattern'.")
-
(defun hi-lock-set-pattern (regexp face)
"Highlight REGEXP with face FACE."
- (let ((pattern (list regexp (list 0 (list 'quote face) t)))
- ;; The call to `font-lock-add-keywords' below might disable
- ;; and re-enable font-lock mode. If so, we don't want
- ;; `hi-lock-font-lock-hook' to run. This can be removed once
- ;; Bug#635 is fixed. -- cyd
- (hi-lock--inhibit-font-lock-hook t))
+ (let ((pattern (list regexp (list 0 (list 'quote face) t))))
(unless (member pattern hi-lock-interactive-patterns)
- (font-lock-add-keywords nil (list pattern) t)
(push pattern hi-lock-interactive-patterns)
(if font-lock-fontified
- (font-lock-fontify-buffer)
+ (progn
+ (font-lock-add-keywords nil (list pattern) t)
+ (font-lock-fontify-buffer))
(let* ((serial (hi-lock-string-serialize regexp))
(range-min (- (point) (/ hi-lock-highlight-range 2)))
(range-max (+ (point) (/ hi-lock-highlight-range 2)))
@@ -641,12 +633,9 @@ This is used by `hi-lock-set-pattern'.")
(defun hi-lock-font-lock-hook ()
"Add hi-lock patterns to font-lock's."
- (unless hi-lock--inhibit-font-lock-hook
- (if font-lock-mode
- (progn
- (font-lock-add-keywords nil hi-lock-file-patterns t)
- (font-lock-add-keywords nil hi-lock-interactive-patterns t))
- (hi-lock-mode -1))))
+ (when font-lock-fontified
+ (font-lock-add-keywords nil hi-lock-file-patterns t)
+ (font-lock-add-keywords nil hi-lock-interactive-patterns t)))
(defvar hi-lock-string-serialize-hash
(make-hash-table :test 'equal)
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index ec9c88fd6ec..956cfc1c597 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -921,24 +921,26 @@ changes are made, so \\[highlight-changes-next-change] and
(defun hilit-chg-get-diff-info (buf-a file-a buf-b file-b)
- (let ((e nil) x y) ;; e is set by function hilit-chg-get-diff-list-hk
+ ;; hilit-e,x,y are set by function hilit-chg-get-diff-list-hk.
+ (let (hilit-e hilit-x hilit-y)
(ediff-setup buf-a file-a buf-b file-b
nil nil ; buf-c file-C
'hilit-chg-get-diff-list-hk
(list (cons 'ediff-job-name 'something))
)
- (ediff-with-current-buffer e (ediff-really-quit nil))
- (list x y)))
+ (ediff-with-current-buffer hilit-e (ediff-really-quit nil))
+ (list hilit-x hilit-y)))
(defun hilit-chg-get-diff-list-hk ()
- ;; x and y are dynamically bound by hilit-chg-get-diff-info
- ;; which calls this function as a hook
- (defvar x) ;; placate the byte-compiler
- (defvar y)
- (setq e (current-buffer))
+ ;; hilit-e/x/y are dynamically bound by hilit-chg-get-diff-info
+ ;; which calls this function as a hook.
+ (defvar hilit-x) ; placate the byte-compiler
+ (defvar hilit-y)
+ (defvar hilit-e)
+ (setq hilit-e (current-buffer))
(let ((n 0) extent p va vb a b)
- (setq x nil y nil) ;; x and y are bound by hilit-chg-get-diff-info
+ (setq hilit-x nil hilit-y nil)
(while (< n ediff-number-of-differences)
(ediff-make-fine-diffs n)
(setq va (ediff-get-fine-diff-vector n 'A))
@@ -954,7 +956,7 @@ changes are made, so \\[highlight-changes-next-change] and
(setq extent (list (overlay-start (car p))
(overlay-end (car p))))
(setq p (cdr p))
- (setq x (append x (list extent) )));; while p
+ (setq hilit-x (append hilit-x (list extent) )));; while p
;;
(setq vb (ediff-get-fine-diff-vector n 'B))
;; vb is a vector
@@ -969,7 +971,7 @@ changes are made, so \\[highlight-changes-next-change] and
(setq extent (list (overlay-start (car p))
(overlay-end (car p))))
(setq p (cdr p))
- (setq y (append y (list extent) )))
+ (setq hilit-y (append hilit-y (list extent) )))
(setq n (1+ n)));; while
;; ediff-quit doesn't work here.
;; No point in returning a value, since this is a hook function.
@@ -1035,5 +1037,4 @@ This is called when `global-highlight-changes-mode' is turned on."
(provide 'hilit-chg)
-;; arch-tag: de00301d-5bad-44da-aa82-e0e010b0c463
;;; hilit-chg.el ends here
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index bfa81595085..0a4bec2248f 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -1,6 +1,7 @@
;;; htmlfontify.el --- htmlise a buffer/source tree with optional hyperlinks
-;; Copyright (C) 2002, 2003, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2009, 2010
+;; Free Software Foundation, Inc.
;; Emacs Lisp Archive Entry
;; Package: htmlfontify
@@ -2370,5 +2371,8 @@ Use a fallback method for obtaining the rgb values for a color.
(provide 'htmlfontify)
-;; arch-tag: 944e5e63-c81d-4baa-a82a-0275f9c30e61
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
;;; htmlfontify.el ends here
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 39a0bf0e859..052d43b41b6 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -433,10 +433,8 @@ directory, like `default-directory'."
;; immediate operations
(define-key map (kbd "n") 'ibuffer-forward-line)
- (define-key map (kbd "<down>") 'ibuffer-forward-line)
(define-key map (kbd "SPC") 'forward-line)
(define-key map (kbd "p") 'ibuffer-backward-line)
- (define-key map (kbd "<up>") 'ibuffer-backward-line)
(define-key map (kbd "M-}") 'ibuffer-forward-next-marked)
(define-key map (kbd "M-{") 'ibuffer-backwards-next-marked)
(define-key map (kbd "l") 'ibuffer-redisplay)
@@ -477,9 +475,9 @@ directory, like `default-directory'."
(define-key map (kbd "/ /") 'ibuffer-filter-disable)
(define-key map (kbd "M-n") 'ibuffer-forward-filter-group)
- (define-key map (kbd "<right>") 'ibuffer-forward-filter-group)
+ (define-key map "\t" 'ibuffer-forward-filter-group)
(define-key map (kbd "M-p") 'ibuffer-backward-filter-group)
- (define-key map (kbd "<left>") 'ibuffer-backward-filter-group)
+ (define-key map [backtab] 'ibuffer-backward-filter-group)
(define-key map (kbd "M-j") 'ibuffer-jump-to-filter-group)
(define-key map (kbd "C-k") 'ibuffer-kill-line)
(define-key map (kbd "C-y") 'ibuffer-yank)
@@ -1053,7 +1051,6 @@ If optional argument SINGLE is non-nil, then also ensure there is only
one window."
(interactive "P")
(let ((buf (ibuffer-current-buffer t)))
- (bury-buffer (current-buffer))
(switch-to-buffer buf)
(when single
(delete-other-windows))))
diff --git a/lisp/iimage.el b/lisp/iimage.el
index 1c9b092738b..ca300bf9fb2 100644
--- a/lisp/iimage.el
+++ b/lisp/iimage.el
@@ -1,6 +1,7 @@
;;; iimage.el --- Inline image minor mode.
-;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Author: KOSEKI Yoshinori <kose@meadowy.org>
;; Maintainer: KOSEKI Yoshinori <kose@meadowy.org>
@@ -27,20 +28,16 @@
;; exists in the buffer.
;; http://www.netlaputa.ne.jp/~kose/Emacs/iimage.html
;;
-;; Add to your `~/.emacs':
-;; (autoload 'iimage-mode "iimage" "Support Inline image minor mode." t)
-;; (autoload 'turn-on-iimage-mode "iimage" "Turn on Inline image minor mode." t)
-;;
;; ** Display images in *Info* buffer.
;;
-;; (add-hook 'info-mode-hook 'turn-on-iimage-mode)
+;; (add-hook 'info-mode-hook 'iimage-mode)
;;
;; .texinfo: @file{file://foo.png}
;; .info: `file://foo.png'
;;
;; ** Display images in Wiki buffer.
;;
-;; (add-hook 'wiki-mode-hook 'turn-on-iimage-mode)
+;; (add-hook 'wiki-mode-hook 'iimage-mode)
;;
;; wiki-file: [[foo.png]]
@@ -54,19 +51,10 @@
:version "22.1"
:group 'image)
-(defconst iimage-version "1.1")
-
-(defvar iimage-mode-map
- (let ((map (make-sparse-keymap)))
- (define-key map "\C-l" 'iimage-recenter)
- map))
-
-(defun iimage-recenter (&optional arg)
- "Re-draw images and recenter."
- (interactive "P")
- (iimage-mode-buffer nil)
- (iimage-mode-buffer t)
- (recenter arg))
+(defcustom iimage-mode-image-search-path nil
+ "List of directories to search for image files for iimage-mode."
+ :type '(choice (const nil) (repeat directory))
+ :group 'iimage)
(defvar iimage-mode-image-filename-regex
(concat "[-+./_0-9a-zA-Z]+\\."
@@ -75,23 +63,36 @@
image-file-name-extensions)
t)))
-(defvar iimage-mode-image-regex-alist
+(defcustom iimage-mode-image-regex-alist
`((,(concat "\\(`?file://\\|\\[\\[\\|<\\|`\\)?"
"\\(" iimage-mode-image-filename-regex "\\)"
"\\(\\]\\]\\|>\\|'\\)?") . 2))
- "*Alist of filename REGEXP vs NUM.
+ "Alist of filename REGEXP vs NUM.
Each element looks like (REGEXP . NUM).
NUM specifies which parenthesized expression in the regexp.
-Examples of image filename regexps:
+Examples of image filename patterns to match:
file://foo.png
`file://foo.png'
\\[\\[foo.gif]]
<foo.png>
- foo.JPG")
+ foo.JPG
+"
+ :type '(alist :key-type regexp :value-type integer)
+ :group 'iimage)
+
+(defvar iimage-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-l" 'iimage-recenter)
+ map)
+ "Keymap used in `iimage-mode'.")
-(defvar iimage-mode-image-search-path nil
- "*List of directories to search for image files for `iimage-mode'.")
+(defun iimage-recenter (&optional arg)
+ "Re-draw images and recenter."
+ (interactive "P")
+ (iimage-mode-buffer nil)
+ (iimage-mode-buffer t)
+ (recenter arg))
;;;###autoload
(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -144,5 +145,4 @@ Examples of image filename regexps:
(provide 'iimage)
-;; arch-tag: f6f8e29a-08f6-4a12-9496-51e67441ce65
;;; iimage.el ends here
diff --git a/lisp/image.el b/lisp/image.el
index 2ca2971b4aa..0afdc71cb9e 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -330,14 +330,16 @@ Optional DATA-P non-nil means SOURCE is a string containing image data."
type)
-(defvar image-library-alist)
+(define-obsolete-variable-alias
+ 'image-library-alist
+ 'dynamic-library-alist "24.1")
;;;###autoload
(defun image-type-available-p (type)
"Return non-nil if image type TYPE is available.
Image types are symbols like `xbm' or `jpeg'."
(and (fboundp 'init-image-library)
- (init-image-library type image-library-alist)))
+ (init-image-library type dynamic-library-alist)))
;;;###autoload
@@ -721,7 +723,20 @@ shall be displayed."
(cons (concat "\\." extension "\\'") 'imagemagick)
image-type-file-name-regexps)))))
-
+
+;;; Inline stock images
+
+(defvar image-checkbox-checked
+ (create-image "\300\300\141\143\067\076\034\030"
+ 'xbm t :width 8 :height 8 :background "grey75"
+ :foreground "black" :relief -2 :ascent 'center)
+ "Image of a checked checkbox.")
+
+(defvar image-checkbox-unchecked
+ (create-image (make-string 8 0)
+ 'xbm t :width 8 :height 8 :background "grey75"
+ :foreground "black" :relief -2 :ascent 'center)
+ "Image of an unchecked checkbox.")
(provide 'image)
diff --git a/lisp/international/ccl.el b/lisp/international/ccl.el
index 09510cd8b00..4dc54859ec5 100644
--- a/lisp/international/ccl.el
+++ b/lisp/international/ccl.el
@@ -1437,7 +1437,7 @@ OPERATOR :=
;; Normal arithmethic operators (same meaning as C code).
+ | - | * | / | %
- ;; Bitwize operators (same meaning as C code)
+ ;; Bitwise operators (same meaning as C code)
| & | `|' | ^
;; Shifting operators (same meaning as C code)
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index 753b1ab25e7..07557aacc88 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -700,7 +700,7 @@ Internal use only. Should be called at startup time."
;; "HP-Hebrew8" [36]
;; HPHEBREW8 8-bit character set
;; "HP-Japanese15" [36]
-;; HPJAPAN15 15-bit characer set,
+;; HPJAPAN15 15-bit character set,
;; modified from industry defacto
;; standard Shift-JIS
;; "HP-Kana8" [36]
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 151373e27ea..df362d96c07 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -646,7 +646,7 @@ VALUE must be a function to call after all functions in
`write-region-annotate-functions' and `buffer-file-format' are
called, and before the text is encoded by the coding system
itself. This function should convert the whole text in the
-current buffer. For backward compatibility, this funciton is
+current buffer. For backward compatibility, this function is
passed two arguments which can be ignored.
`:default-char'
diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el
index afe5dda1f57..92b4251b49c 100644
--- a/lisp/international/titdic-cnv.el
+++ b/lisp/international/titdic-cnv.el
@@ -108,7 +108,7 @@ For double-width GB2312 characters correponding to ASCII, use the
input method `chinese-qj'.")
("chinese-ecdict" "$(05CKH(B"
-"In this input method, you enter a Chinese (Big5) charactere or word
+"In this input method, you enter a Chinese (Big5) character or word
by typing the corresponding English word. For example, if you type
\"computer\", \"$(0IZH+(B\" is input.
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 98032c29ba7..ebe2e8fa009 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1994,12 +1994,6 @@ Isearch mode."
(setq char (unibyte-char-to-multibyte char)))
(isearch-process-search-char char))))
-(defun isearch-return-char ()
- "Convert return into newline for incremental search."
- (interactive)
- (isearch-process-search-char ?\n))
-(make-obsolete 'isearch-return-char 'isearch-printing-char "19.7")
-
(defun isearch-printing-char ()
"Add this ordinary printing character to the search string and search."
(interactive)
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index 081897a89b3..808a23577d1 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -1,7 +1,7 @@
;;; iswitchb.el --- switch between buffers using substrings
-;; Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: Stephen Eglen <stephen@gnu.org>
;; Maintainer: Stephen Eglen <stephen@gnu.org>
@@ -1119,19 +1119,6 @@ If BUFFER is visible in the current frame, return nil."
(get-buffer-window buffer 0) ; better than 'visible
)))
-(defun iswitchb-default-keybindings ()
- "Set up default keybindings for `iswitchb-buffer'.
-Call this function to override the normal bindings. This function also
-adds a hook to the minibuffer."
- (interactive)
- (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
- (global-set-key "\C-xb" 'iswitchb-buffer)
- (global-set-key "\C-x4b" 'iswitchb-buffer-other-window)
- (global-set-key "\C-x4\C-o" 'iswitchb-display-buffer)
- (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame))
-
-(make-obsolete 'iswitchb-default-keybindings 'iswitchb-mode "21.1")
-
(defun iswitchb-buffer ()
"Switch to another buffer.
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index ec2a7c3b52c..868455c4899 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -5,7 +5,7 @@
;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
-;;;;;; "play/5x5.el" (19279 5151))
+;;;;;; "play/5x5.el" (19640 47194))
;;; Generated autoloads from play/5x5.el
(autoload '5x5 "5x5" "\
@@ -65,7 +65,7 @@ should return a grid vector array that is the new solution.
;;;***
;;;### (autoloads (list-one-abbrev-table) "abbrevlist" "abbrevlist.el"
-;;;;;; (19279 5148))
+;;;;;; (19598 13691))
;;; Generated autoloads from abbrevlist.el
(autoload 'list-one-abbrev-table "abbrevlist" "\
@@ -76,7 +76,7 @@ Display alphabetical listing of ABBREV-TABLE in buffer OUTPUT-BUFFER.
;;;***
;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el"
-;;;;;; (19313 15414))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/ada-mode.el
(autoload 'ada-add-extensions "ada-mode" "\
@@ -90,13 +90,14 @@ the file name.
(autoload 'ada-mode "ada-mode" "\
Ada mode is the major mode for editing Ada code.
+\\{ada-mode-map}
\(fn)" t nil)
;;;***
;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el"
-;;;;;; (19279 38446))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/ada-stmt.el
(autoload 'ada-header "ada-stmt" "\
@@ -107,7 +108,7 @@ Insert a descriptive header at the top of the file.
;;;***
;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el"
-;;;;;; (19279 38446))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/ada-xref.el
(autoload 'ada-find-file "ada-xref" "\
@@ -121,9 +122,9 @@ Completion is available.
;;;### (autoloads (change-log-merge add-log-current-defun 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" (19279
-;;;;;; 5148))
-;;; Generated autoloads from add-log.el
+;;;;;; add-log-current-defun-function) "add-log" "vc/add-log.el"
+;;;;;; (19619 52030))
+;;; Generated autoloads from vc/add-log.el
(put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
@@ -261,7 +262,7 @@ old-style time formats for entries are supported.
;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice
;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action)
-;;;;;; "advice" "emacs-lisp/advice.el" (19323 49698))
+;;;;;; "advice" "emacs-lisp/advice.el" (19598 13691))
;;; Generated autoloads from emacs-lisp/advice.el
(defvar ad-redefinition-action 'warn "\
@@ -400,11 +401,13 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
\(fn FUNCTION ARGS &rest BODY)" nil (quote macro))
+(put 'defadvice 'doc-string-elt '3)
+
;;;***
;;;### (autoloads (align-newline-and-indent align-unhighlight-rule
;;;;;; align-highlight-rule align-current align-entire align-regexp
-;;;;;; align) "align" "align.el" (19279 5148))
+;;;;;; align) "align" "align.el" (19598 13691))
;;; Generated autoloads from align.el
(autoload 'align "align" "\
@@ -447,7 +450,7 @@ align them so that the opening parentheses would line up:
Joe (123) 456-7890
There is no predefined rule to handle this, but you could easily do it
-using a REGEXP like \"(\". All you would have to do is to mark the
+using a REGEXP like \"(\". All you would have to do is to mark the
region, call `align-regexp' and type in that regular expression.
\(fn BEG END REGEXP &optional GROUP SPACING REPEAT)" t nil)
@@ -494,7 +497,7 @@ A replacement function for `newline-and-indent', aligning as it goes.
;;;***
;;;### (autoloads (outlineify-sticky allout-mode) "allout" "allout.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from allout.el
(put 'allout-use-hanging-indents 'safe-local-variable (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
@@ -801,7 +804,7 @@ setup for auto-startup.
;;;***
;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp"
-;;;;;; "net/ange-ftp.el" (19356 10801))
+;;;;;; "net/ange-ftp.el" (19619 52030))
;;; Generated autoloads from net/ange-ftp.el
(defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir)
@@ -823,7 +826,7 @@ Not documented
;;;***
;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
-;;;;;; "animate" "play/animate.el" (19279 5151))
+;;;;;; "animate" "play/animate.el" (19562 42953))
;;; Generated autoloads from play/animate.el
(autoload 'animate-string "animate" "\
@@ -851,7 +854,7 @@ You can specify the one's name by NAME; the default value is \"Sarah\".
;;;***
;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on)
-;;;;;; "ansi-color" "ansi-color.el" (19279 5148))
+;;;;;; "ansi-color" "ansi-color.el" (19598 13691))
;;; Generated autoloads from ansi-color.el
(autoload 'ansi-color-for-comint-mode-on "ansi-color" "\
@@ -860,12 +863,12 @@ Set `ansi-color-for-comint-mode' to t.
\(fn)" t nil)
(autoload 'ansi-color-process-output "ansi-color" "\
-Maybe translate SGR control sequences of comint output into text-properties.
+Maybe translate SGR control sequences of comint output into text properties.
Depending on variable `ansi-color-for-comint-mode' the comint output is
either not processed, SGR control sequences are filtered using
`ansi-color-filter-region', or SGR control sequences are translated into
-text-properties using `ansi-color-apply-on-region'.
+text properties using `ansi-color-apply-on-region'.
The comint output is assumed to lie between the marker
`comint-last-output-start' and the process-mark.
@@ -877,7 +880,7 @@ This is a good function to put in `comint-output-filter-functions'.
;;;***
;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules)
-;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (19279 5151))
+;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (19619 52030))
;;; Generated autoloads from progmodes/antlr-mode.el
(autoload 'antlr-show-makefile-rules "antlr-mode" "\
@@ -913,35 +916,18 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'.
;;;***
-;;;### (autoloads (appt-activate appt-make-list appt-delete appt-add)
-;;;;;; "appt" "calendar/appt.el" (19279 5149))
+;;;### (autoloads (appt-activate appt-add) "appt" "calendar/appt.el"
+;;;;;; (19640 47194))
;;; Generated autoloads from calendar/appt.el
(autoload 'appt-add "appt" "\
-Add an appointment for today at NEW-APPT-TIME with message NEW-APPT-MSG.
+Add an appointment for today at TIME with message MSG.
The time should be in either 24 hour format or am/pm format.
+Optional argument WARNTIME is an integer (or string) giving the number
+of minutes before the appointment at which to start warning.
+The default is `appt-message-warning-time'.
-\(fn NEW-APPT-TIME NEW-APPT-MSG)" t nil)
-
-(autoload 'appt-delete "appt" "\
-Delete an appointment from the list of appointments.
-
-\(fn)" t nil)
-
-(autoload 'appt-make-list "appt" "\
-Update the appointments list from today's diary buffer.
-The time must be at the beginning of a line for it to be
-put in the appointments list (see examples in documentation of
-the function `appt-check'). We assume that the variables DATE and
-NUMBER hold the arguments that `diary-list-entries' received.
-They specify the range of dates that the diary is being processed for.
-
-Any appointments made with `appt-add' are not affected by this function.
-
-For backwards compatibility, this function activates the
-appointment package (if it is not already active).
-
-\(fn)" nil nil)
+\(fn TIME MSG &optional WARNTIME)" t nil)
(autoload 'appt-activate "appt" "\
Toggle checking of appointments.
@@ -954,7 +940,7 @@ ARG is positive, otherwise off.
;;;### (autoloads (apropos-documentation apropos-value apropos-library
;;;;;; apropos apropos-documentation-property apropos-command apropos-variable
-;;;;;; apropos-read-pattern) "apropos" "apropos.el" (19279 5148))
+;;;;;; apropos-read-pattern) "apropos" "apropos.el" (19598 13691))
;;; Generated autoloads from apropos.el
(autoload 'apropos-read-pattern "apropos" "\
@@ -1057,8 +1043,8 @@ Returns list of symbols and documentation found.
;;;***
-;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (19321
-;;;;;; 4517))
+;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from arc-mode.el
(autoload 'archive-mode "arc-mode" "\
@@ -1078,7 +1064,7 @@ archive.
;;;***
-;;;### (autoloads (array-mode) "array" "array.el" (19279 5148))
+;;;### (autoloads (array-mode) "array" "array.el" (19640 47194))
;;; Generated autoloads from array.el
(autoload 'array-mode "array" "\
@@ -1149,8 +1135,8 @@ Entering array mode calls the function `array-mode-hook'.
;;;***
-;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (19321
-;;;;;; 4517))
+;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from textmodes/artist.el
(autoload 'artist-mode "artist" "\
@@ -1356,8 +1342,8 @@ Keymap summary
;;;***
-;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from progmodes/asm-mode.el
(autoload 'asm-mode "asm-mode" "\
@@ -1385,7 +1371,7 @@ Special commands:
;;;***
;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from autoarg.el
(defvar autoarg-mode nil "\
@@ -1439,7 +1425,7 @@ etc. to supply digit arguments.
;;;***
;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/autoconf.el
(autoload 'autoconf-mode "autoconf" "\
@@ -1450,7 +1436,7 @@ Major mode for editing Autoconf configure.in files.
;;;***
;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert)
-;;;;;; "autoinsert" "autoinsert.el" (19279 5148))
+;;;;;; "autoinsert" "autoinsert.el" (19591 62571))
;;; Generated autoloads from autoinsert.el
(autoload 'auto-insert "autoinsert" "\
@@ -1489,7 +1475,7 @@ insert a template for the file depending on the mode of the buffer.
;;;### (autoloads (batch-update-autoloads update-directory-autoloads
;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el"
-;;;;;; (19365 25156))
+;;;;;; (19598 13691))
;;; Generated autoloads from emacs-lisp/autoload.el
(put 'generated-autoload-file 'safe-local-variable 'stringp)
@@ -1528,7 +1514,7 @@ Calls `update-directory-autoloads' on the command line arguments.
;;;### (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" (19279 5148))
+;;;;;; "autorevert" "autorevert.el" (19562 42953))
;;; Generated autoloads from autorevert.el
(autoload 'auto-revert-mode "autorevert" "\
@@ -1609,7 +1595,7 @@ specifies in the mode line.
;;;***
;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid"
-;;;;;; "avoid.el" (19279 5148))
+;;;;;; "avoid.el" (19562 42953))
;;; Generated autoloads from avoid.el
(defvar mouse-avoidance-mode nil "\
@@ -1650,7 +1636,7 @@ definition of \"random distance\".)
;;;***
;;;### (autoloads (display-battery-mode battery) "battery" "battery.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from battery.el
(put 'battery-mode-line-string 'risky-local-variable t)
@@ -1682,7 +1668,7 @@ seconds.
;;;***
;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run)
-;;;;;; "benchmark" "emacs-lisp/benchmark.el" (19279 5149))
+;;;;;; "benchmark" "emacs-lisp/benchmark.el" (19562 42953))
;;; Generated autoloads from emacs-lisp/benchmark.el
(autoload 'benchmark-run "benchmark" "\
@@ -1715,7 +1701,7 @@ For non-interactive use see also `benchmark-run' and
;;;***
;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize)
-;;;;;; "bibtex" "textmodes/bibtex.el" (19279 38446))
+;;;;;; "bibtex" "textmodes/bibtex.el" (19598 13691))
;;; Generated autoloads from textmodes/bibtex.el
(autoload 'bibtex-initialize "bibtex" "\
@@ -1802,9 +1788,8 @@ mode is not `bibtex-mode', START is nil, and DISPLAY is t.
;;;***
;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el"
-;;;;;; (19279 5152))
+;;;;;; (19619 52030))
;;; Generated autoloads from textmodes/bibtex-style.el
- (add-to-list 'auto-mode-alist (cons (purecopy "\\.bst\\'") 'bibtex-style-mode))
(autoload 'bibtex-style-mode "bibtex-style" "\
Major mode for editing BibTeX style files.
@@ -1815,7 +1800,7 @@ Major mode for editing BibTeX style files.
;;;### (autoloads (binhex-decode-region binhex-decode-region-external
;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from mail/binhex.el
(defconst binhex-begin-line "^:...............................................................$")
@@ -1838,8 +1823,8 @@ Binhex decode region between START and END.
;;;***
-;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from play/blackbox.el
(autoload 'blackbox "blackbox" "\
@@ -1962,7 +1947,7 @@ a reflection.
;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert
;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate
;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark"
-;;;;;; "bookmark.el" (19326 6129))
+;;;;;; "bookmark.el" (19562 42953))
;;; Generated autoloads from bookmark.el
(define-key ctl-x-r-map "b" 'bookmark-jump)
(define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2164,12 +2149,12 @@ Incremental search of bookmarks, hiding the non-matches as we go.
;;;;;; browse-url-mail browse-url-text-emacs browse-url-text-xterm
;;;;;; browse-url-w3-gnudoit browse-url-w3 browse-url-cci browse-url-mosaic
;;;;;; browse-url-gnome-moz browse-url-emacs browse-url-galeon browse-url-firefox
-;;;;;; browse-url-mozilla browse-url-netscape browse-url-default-browser
-;;;;;; browse-url-at-mouse browse-url-at-point 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-mozilla browse-url-netscape browse-url-xdg-open
+;;;;;; browse-url-default-browser browse-url-at-mouse browse-url-at-point
+;;;;;; 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-browser-function) "browse-url" "net/browse-url.el"
-;;;;;; (19356 10801))
+;;;;;; (19640 47194))
;;; Generated autoloads from net/browse-url.el
(defvar browse-url-browser-function (cond ((memq system-type '(windows-nt ms-dos cygwin)) 'browse-url-default-windows-browser) ((memq system-type '(darwin)) 'browse-url-default-macosx-browser) (t 'browse-url-default-browser)) "\
@@ -2185,16 +2170,6 @@ regexp should probably be \".\" to specify a default browser.")
(custom-autoload 'browse-url-browser-function "browse-url" t)
-(defvar browse-url-firefox-program (purecopy "firefox") "\
-The name by which to invoke Firefox.")
-
-(custom-autoload 'browse-url-firefox-program "browse-url" t)
-
-(defvar browse-url-galeon-program (purecopy "galeon") "\
-The name by which to invoke Galeon.")
-
-(custom-autoload 'browse-url-galeon-program "browse-url" t)
-
(autoload 'browse-url-url-at-point "browse-url" "\
Not documented
@@ -2267,6 +2242,11 @@ Galeon, Konqueror, Netscape, Mosaic, Lynx in an xterm, and then W3.
\(fn URL &rest ARGS)" nil nil)
+(autoload 'browse-url-xdg-open "browse-url" "\
+Not documented
+
+\(fn URL &optional NEW-WINDOW)" t nil)
+
(autoload 'browse-url-netscape "browse-url" "\
Ask the Netscape WWW browser to load URL.
Default to the URL around or before point. The strings in variable
@@ -2499,8 +2479,8 @@ from `browse-url-elinks-wrapper'.
;;;***
-;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (snarf-bruces bruce) "bruce" "play/bruce.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from play/bruce.el
(autoload 'bruce "bruce" "\
@@ -2516,7 +2496,7 @@ Return a vector containing the lines from `bruce-phrases-file'.
;;;***
;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next)
-;;;;;; "bs" "bs.el" (19279 5148))
+;;;;;; "bs" "bs.el" (19562 42953))
;;; Generated autoloads from bs.el
(autoload 'bs-cycle-next "bs" "\
@@ -2556,7 +2536,7 @@ name of buffer configuration.
;;;***
-;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (19279 5151))
+;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (19619 52030))
;;; Generated autoloads from play/bubbles.el
(autoload 'bubbles "bubbles" "\
@@ -2577,11 +2557,29 @@ columns on its right towards the left.
;;;***
+;;;### (autoloads (list-buffers) "buff-menu" "buff-menu.el" (19598
+;;;;;; 13691))
+;;; Generated autoloads from buff-menu.el
+
+(define-key ctl-x-map "" 'list-buffers)
+
+(autoload 'list-buffers "buff-menu" "\
+Display a list of names of existing buffers.
+The list is displayed in a buffer named `*Buffer List*'.
+Note that buffers with names starting with spaces are omitted.
+Non-null optional arg FILES-ONLY means mention only file buffers.
+
+For more information, see the function `buffer-menu'.
+
+\(fn &optional FILES-ONLY)" t nil)
+
+;;;***
+
;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference"
-;;;;;; "progmodes/bug-reference.el" (19279 5151))
+;;;;;; "progmodes/bug-reference.el" (19562 42953))
;;; Generated autoloads from progmodes/bug-reference.el
-(put 'bug-reference-url-format 'safe-local-variable 'stringp)
+(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format)))))
(autoload 'bug-reference-mode "bug-reference" "\
Minor mode to buttonize bugzilla references in the current buffer.
@@ -2600,7 +2598,7 @@ Like `bug-reference-mode', but only buttonize in comments and strings.
;;;;;; compile-defun byte-compile-file byte-recompile-directory
;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning
;;;;;; byte-compile-warnings-safe-p) "bytecomp" "emacs-lisp/bytecomp.el"
-;;;;;; (19279 5149))
+;;;;;; (19640 50171))
;;; Generated autoloads from emacs-lisp/bytecomp.el
(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2724,8 +2722,8 @@ and corresponding effects.
;;;***
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (19279
-;;;;;; 5149))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from calendar/cal-china.el
(put 'calendar-chinese-time-zone 'risky-local-variable t)
@@ -2734,7 +2732,7 @@ and corresponding effects.
;;;***
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (19279 5149))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (19598 13691))
;;; Generated autoloads from calendar/cal-dst.el
(put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2746,7 +2744,7 @@ and corresponding effects.
;;;***
;;;### (autoloads (calendar-hebrew-list-yahrzeits) "cal-hebrew" "calendar/cal-hebrew.el"
-;;;;;; (19345 41626))
+;;;;;; (19640 47194))
;;; Generated autoloads from calendar/cal-hebrew.el
(autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2762,8 +2760,8 @@ from the cursor position.
;;;### (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" "calc/calc.el" (19282
-;;;;;; 55646))
+;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from calc/calc.el
(define-key ctl-x-map "*" 'calc-dispatch)
@@ -2843,10 +2841,12 @@ See Info node `(calc)Defining Functions'.
\(fn FUNC ARGS &rest BODY)" nil (quote macro))
+(put 'defmath 'doc-string-elt '3)
+
;;;***
-;;;### (autoloads (calculator) "calculator" "calculator.el" (19356
-;;;;;; 10801))
+;;;### (autoloads (calculator) "calculator" "calculator.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from calculator.el
(autoload 'calculator "calculator" "\
@@ -2857,8 +2857,8 @@ See the documentation for `calculator-mode' for more information.
;;;***
-;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (19279
-;;;;;; 5149))
+;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from calendar/calendar.el
(autoload 'calendar "calendar" "\
@@ -2902,7 +2902,7 @@ This function is suitable for execution in a .emacs file.
;;;***
;;;### (autoloads (canlock-verify canlock-insert-header) "canlock"
-;;;;;; "gnus/canlock.el" (19279 5150))
+;;;;;; "gnus/canlock.el" (19598 13691))
;;; Generated autoloads from gnus/canlock.el
(autoload 'canlock-insert-header "canlock" "\
@@ -2920,7 +2920,7 @@ it fails.
;;;***
;;;### (autoloads (capitalized-words-mode) "cap-words" "progmodes/cap-words.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/cap-words.el
(autoload 'capitalized-words-mode "cap-words" "\
@@ -2955,15 +2955,15 @@ Obsoletes `c-forward-into-nomenclature'.
;;;***
-;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (19279
-;;;;;; 5151))
+;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from progmodes/cc-compat.el
(put 'c-indent-level 'safe-local-variable 'integerp)
;;;***
;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
-;;;;;; (19370 36541))
+;;;;;; (19640 47194))
;;; Generated autoloads from progmodes/cc-engine.el
(autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -2975,7 +2975,7 @@ Return the syntactic context of the current line.
;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
-;;;;;; (19338 9841))
+;;;;;; (19640 47194))
;;; Generated autoloads from progmodes/cc-mode.el
(autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3135,7 +3135,7 @@ Key bindings:
;;;***
;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles"
-;;;;;; "progmodes/cc-styles.el" (19279 5151))
+;;;;;; "progmodes/cc-styles.el" (19640 47194))
;;; Generated autoloads from progmodes/cc-styles.el
(autoload 'c-set-style "cc-styles" "\
@@ -3186,7 +3186,7 @@ and exists only for compatibility reasons.
;;;***
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (19279 5151))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (19598 13691))
;;; Generated autoloads from progmodes/cc-vars.el
(put 'c-basic-offset 'safe-local-variable 'integerp)
(put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3196,7 +3196,7 @@ and exists only for compatibility reasons.
;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program
;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from international/ccl.el
(autoload 'ccl-compile "ccl" "\
@@ -3354,7 +3354,7 @@ OPERATOR :=
;; Normal arithmethic operators (same meaning as C code).
+ | - | * | / | %
- ;; Bitwize operators (same meaning as C code)
+ ;; Bitwise operators (same meaning as C code)
| & | `|' | ^
;; Shifting operators (same meaning as C code)
@@ -3435,6 +3435,8 @@ MAP-ID := integer
\(fn NAME CCL-PROGRAM &optional DOC)" nil (quote macro))
+(put 'define-ccl-program 'doc-string-elt '3)
+
(autoload 'check-ccl-program "ccl" "\
Check validity of CCL-PROGRAM.
If CCL-PROGRAM is a symbol denoting a CCL program, return
@@ -3455,7 +3457,7 @@ See the documentation of `define-ccl-program' for the detail of CCL program.
;;;***
;;;### (autoloads (cfengine-mode) "cfengine" "progmodes/cfengine.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/cfengine.el
(autoload 'cfengine-mode "cfengine" "\
@@ -3470,7 +3472,7 @@ to the action header.
;;;***
;;;### (autoloads (check-declare-directory check-declare-file) "check-declare"
-;;;;;; "emacs-lisp/check-declare.el" (19279 5149))
+;;;;;; "emacs-lisp/check-declare.el" (19562 42953))
;;; Generated autoloads from emacs-lisp/check-declare.el
(autoload 'check-declare-file "check-declare" "\
@@ -3495,7 +3497,7 @@ Returns non-nil if any false statements are found.
;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer
;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive
;;;;;; checkdoc-interactive checkdoc checkdoc-list-of-strings-p)
-;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (19279 5149))
+;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (19640 47194))
;;; Generated autoloads from emacs-lisp/checkdoc.el
(put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp)
(put 'checkdoc-force-history-flag 'safe-local-variable 'booleanp)
@@ -3690,7 +3692,7 @@ checking of documentation strings.
;;;### (autoloads (pre-write-encode-hz post-read-decode-hz encode-hz-buffer
;;;;;; encode-hz-region decode-hz-buffer decode-hz-region) "china-util"
-;;;;;; "language/china-util.el" (19279 5150))
+;;;;;; "language/china-util.el" (19562 42953))
;;; Generated autoloads from language/china-util.el
(autoload 'decode-hz-region "china-util" "\
@@ -3728,7 +3730,7 @@ Not documented
;;;***
;;;### (autoloads (command-history list-command-history repeat-matching-complex-command)
-;;;;;; "chistory" "chistory.el" (19279 5148))
+;;;;;; "chistory" "chistory.el" (19562 42953))
;;; Generated autoloads from chistory.el
(autoload 'repeat-matching-complex-command "chistory" "\
@@ -3767,7 +3769,7 @@ and runs the normal hook `command-history-hook'.
;;;***
-;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (19279 5149))
+;;;### (autoloads nil "cl" "emacs-lisp/cl.el" (19640 47194))
;;; Generated autoloads from emacs-lisp/cl.el
(defvar custom-print-functions nil "\
@@ -3783,7 +3785,7 @@ a future Emacs interpreter will be able to use it.")
;;;***
;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el"
-;;;;;; (19279 5149))
+;;;;;; (19598 13691))
;;; Generated autoloads from emacs-lisp/cl-indent.el
(autoload 'common-lisp-indent-function "cl-indent" "\
@@ -3862,7 +3864,7 @@ For example, the function `case' has an indent property
;;;***
;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/cmacexp.el
(autoload 'c-macro-expand "cmacexp" "\
@@ -3882,8 +3884,8 @@ For use inside Lisp programs, see also `c-macro-expansion'.
;;;***
-;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from cmuscheme.el
(autoload 'run-scheme "cmuscheme" "\
@@ -3907,7 +3909,7 @@ is run).
;;;### (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"
-;;;;;; (19279 5148))
+;;;;;; (19640 47194))
;;; Generated autoloads from comint.el
(defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -3923,8 +3925,6 @@ See also `comint-preoutput-filter-functions'.
You can use `add-hook' to add functions to this list
either globally or locally.")
-(define-obsolete-variable-alias 'comint-use-prompt-regexp-instead-of-fields 'comint-use-prompt-regexp "22.1")
-
(autoload 'make-comint-in-buffer "comint" "\
Make a Comint process NAME in BUFFER, running PROGRAM.
If BUFFER is nil, it defaults to NAME surrounded by `*'s.
@@ -3937,6 +3937,8 @@ process as its initial input.
If PROGRAM is a string, any more args are arguments to PROGRAM.
+Returns the (possibly newly created) process buffer.
+
\(fn NAME BUFFER PROGRAM &optional STARTFILE &rest SWITCHES)" nil nil)
(autoload 'make-comint "comint" "\
@@ -3951,6 +3953,8 @@ process as its initial input.
If PROGRAM is a string, any more args are arguments to PROGRAM.
+Returns the (possibly newly created) process buffer.
+
\(fn NAME PROGRAM &optional STARTFILE &rest SWITCHES)" nil nil)
(autoload 'comint-run "comint" "\
@@ -3999,9 +4003,9 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
;;;***
-;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (19279
-;;;;;; 5148))
-;;; Generated autoloads from compare-w.el
+;;;### (autoloads (compare-windows) "compare-w" "vc/compare-w.el"
+;;;;;; (19562 42953))
+;;; Generated autoloads from vc/compare-w.el
(autoload 'compare-windows "compare-w" "\
Compare text in current window with text in next window.
@@ -4037,8 +4041,8 @@ on third call it again advances points to the next difference and so on.
;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
;;;;;; compile compilation-disable-input compile-command compilation-search-path
;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook
-;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (19375
-;;;;;; 49830))
+;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from progmodes/compile.el
(defvar compilation-mode-hook nil "\
@@ -4211,54 +4215,10 @@ This is the value of `next-error-function' in Compilation buffers.
\(fn N &optional RESET)" t nil)
-(add-to-list 'auto-mode-alist (cons (purecopy "\\.gcov\\'") 'compilation-mode))
-
-;;;***
-
-;;;### (autoloads (partial-completion-mode) "complete" "complete.el"
-;;;;;; (19358 54001))
-;;; Generated autoloads from complete.el
-
-(defvar partial-completion-mode nil "\
-Non-nil if Partial-Completion mode is enabled.
-See the command `partial-completion-mode' for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `partial-completion-mode'.")
-
-(custom-autoload 'partial-completion-mode "complete" nil)
-
-(autoload 'partial-completion-mode "complete" "\
-Toggle Partial Completion mode.
-With prefix ARG, turn Partial Completion mode on if ARG is positive.
-
-When Partial Completion mode is enabled, TAB (or M-TAB if `PC-meta-flag' is
-nil) is enhanced so that if some string is divided into words and each word is
-delimited by a character in `PC-word-delimiters', partial words are completed
-as much as possible and `*' characters are treated likewise in file names.
-
-For example, M-x p-c-m expands to M-x partial-completion-mode since no other
-command begins with that sequence of characters, and
-\\[find-file] f_b.c TAB might complete to foo_bar.c if that file existed and no
-other file in that directory begins with that sequence of characters.
-
-Unless `PC-disable-includes' is non-nil, the `<...>' sequence is interpreted
-specially in \\[find-file]. For example,
-\\[find-file] <sys/time.h> RET finds the file `/usr/include/sys/time.h'.
-See also the variable `PC-include-file-path'.
-
-Partial Completion mode extends the meaning of `completion-auto-help' (which
-see), so that if it is neither nil nor t, Emacs shows the `*Completions*'
-buffer only on the second attempt to complete. That is, if TAB finds nothing
-to complete, the first TAB just says \"Next char not unique\" and the
-second TAB brings up the `*Completions*' buffer.
-
-\(fn &optional ARG)" t nil)
-
;;;***
;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from completion.el
(defvar dynamic-completion-mode nil "\
@@ -4277,10 +4237,46 @@ Enable dynamic word-completion.
;;;***
+;;;### (autoloads (global-auto-composition-mode auto-composition-mode
+;;;;;; encode-composition-rule) "composite" "composite.el" (19640
+;;;;;; 47194))
+;;; Generated autoloads from composite.el
+
+(autoload 'encode-composition-rule "composite" "\
+Encode composition rule RULE into an integer value.
+RULE is a cons of global and new reference point symbols
+\(see `reference-point-alist').
+
+\(fn RULE)" nil nil)
+
+(autoload 'auto-composition-mode "composite" "\
+Toggle Auto Composition mode.
+With ARG, turn Auto Composition mode off if and only if ARG is a non-positive
+number; if ARG is nil, toggle Auto Composition mode; anything else turns Auto
+Composition on.
+
+When Auto Composition is enabled, text characters are automatically composed
+by functions registered in `composition-function-table' (which see).
+
+You can use `global-auto-composition-mode' to turn on
+Auto Composition mode in all buffers (this is the default).
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'global-auto-composition-mode "composite" "\
+Toggle Auto-Composition mode in every possible buffer.
+With prefix arg, turn Global-Auto-Composition mode on if and only if arg
+is positive.
+See `auto-composition-mode' for more information on Auto-Composition mode.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode
;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode
;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from textmodes/conf-mode.el
(autoload 'conf-mode "conf-mode" "\
@@ -4436,7 +4432,7 @@ For details see `conf-mode'. Example:
;;;***
;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie)
-;;;;;; "cookie1" "play/cookie1.el" (19279 5151))
+;;;;;; "cookie1" "play/cookie1.el" (19598 13691))
;;; Generated autoloads from play/cookie1.el
(autoload 'cookie "cookie1" "\
@@ -4468,8 +4464,8 @@ Randomly permute the elements of VECTOR (all permutations equally likely).
;;;***
;;;### (autoloads (copyright-update-directory copyright copyright-fix-years
-;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (19279
-;;;;;; 5149))
+;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from emacs-lisp/copyright.el
(autoload 'copyright-update "copyright" "\
@@ -4502,7 +4498,7 @@ Update copyright notice for all files in DIRECTORY matching MATCH.
;;;***
;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode)
-;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (19279 5151))
+;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (19640 47194))
;;; Generated autoloads from progmodes/cperl-mode.el
(put 'cperl-indent-level 'safe-local-variable 'integerp)
(put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -4701,7 +4697,7 @@ Run a `perldoc' on the word around point.
;;;***
;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/cpp.el
(autoload 'cpp-highlight-buffer "cpp" "\
@@ -4720,7 +4716,7 @@ Edit display information for cpp conditionals.
;;;***
;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el"
-;;;;;; (19279 5150))
+;;;;;; (19619 52030))
;;; Generated autoloads from emulation/crisp.el
(defvar crisp-mode nil "\
@@ -4744,7 +4740,7 @@ With ARG, turn CRiSP mode on if ARG is positive, off otherwise.
;;;***
;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el"
-;;;;;; (19279 5149))
+;;;;;; (19562 42953))
;;; Generated autoloads from emacs-lisp/crm.el
(autoload 'completing-read-multiple "crm" "\
@@ -4779,10 +4775,9 @@ INHERIT-INPUT-METHOD.
;;;***
-;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (19279
-;;;;;; 5152))
+;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from textmodes/css-mode.el
- (add-to-list 'auto-mode-alist (cons (purecopy "\\.css\\'") 'css-mode))
(autoload 'css-mode "css-mode" "\
Major mode to edit Cascading Style Sheets.
@@ -4792,7 +4787,7 @@ Major mode to edit Cascading Style Sheets.
;;;***
;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el"
-;;;;;; (19279 5150))
+;;;;;; (19619 52030))
;;; Generated autoloads from emulation/cua-base.el
(defvar cua-mode nil "\
@@ -4851,7 +4846,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
;;;;;; customize-mode customize customize-save-variable customize-set-variable
;;;;;; customize-set-value custom-menu-sort-alphabetically custom-buffer-sort-alphabetically
;;;;;; custom-browse-sort-alphabetically) "cus-edit" "cus-edit.el"
-;;;;;; (19356 10801))
+;;;;;; (19640 47194))
;;; Generated autoloads from cus-edit.el
(defvar custom-browse-sort-alphabetically nil "\
@@ -5153,20 +5148,34 @@ The format is suitable for use with `easy-menu-define'.
;;;***
-;;;### (autoloads (customize-create-theme) "cus-theme" "cus-theme.el"
-;;;;;; (19279 5148))
+;;;### (autoloads (customize-themes describe-theme customize-create-theme)
+;;;;;; "cus-theme" "cus-theme.el" (19640 47194))
;;; Generated autoloads from cus-theme.el
(autoload 'customize-create-theme "cus-theme" "\
-Create a custom theme.
+Create or edit a custom theme.
+THEME, if non-nil, should be an existing theme to edit.
+BUFFER, if non-nil, should be a buffer to use.
-\(fn)" t nil)
+\(fn &optional THEME BUFFER)" t nil)
+
+(autoload 'describe-theme "cus-theme" "\
+Display a description of the Custom theme THEME (a symbol).
+
+\(fn THEME)" t nil)
+
+(autoload 'customize-themes "cus-theme" "\
+Display a selectable list of Custom themes.
+When called from Lisp, BUFFER should be the buffer to use; if
+omitted, a buffer named *Custom Themes* is used.
+
+\(fn &optional BUFFER)" t nil)
;;;***
-;;;### (autoloads (cvs-status-mode) "cvs-status" "cvs-status.el"
-;;;;;; (19279 5148))
-;;; Generated autoloads from cvs-status.el
+;;;### (autoloads (cvs-status-mode) "cvs-status" "vc/cvs-status.el"
+;;;;;; (19562 42953))
+;;; Generated autoloads from vc/cvs-status.el
(autoload 'cvs-status-mode "cvs-status" "\
Mode used for cvs status output.
@@ -5176,7 +5185,7 @@ Mode used for cvs status output.
;;;***
;;;### (autoloads (global-cwarn-mode turn-on-cwarn-mode cwarn-mode)
-;;;;;; "cwarn" "progmodes/cwarn.el" (19279 5151))
+;;;;;; "cwarn" "progmodes/cwarn.el" (19598 13691))
;;; Generated autoloads from progmodes/cwarn.el
(autoload 'cwarn-mode "cwarn" "\
@@ -5223,7 +5232,7 @@ See `cwarn-mode' for more information on Cwarn mode.
;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char
;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from language/cyril-util.el
(autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5252,7 +5261,7 @@ If the argument is nil, we return the display table to its standard state.
;;;***
;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el"
-;;;;;; (19279 5148))
+;;;;;; (19591 62571))
;;; Generated autoloads from dabbrev.el
(put 'dabbrev-case-fold-search 'risky-local-variable t)
(put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5268,7 +5277,7 @@ With a prefix argument ARG, it searches all buffers accepted by the
function pointed out by `dabbrev-friend-buffer-function' to find the
completions.
-If the prefix argument is 16 (which comes from \\[prefix-argument] \\[prefix-argument]),
+If the prefix argument is 16 (which comes from \\[universal-argument] \\[universal-argument]),
then it searches *all* buffers.
\(fn &optional ARG)" t nil)
@@ -5299,7 +5308,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
;;;***
;;;### (autoloads (data-debug-new-buffer) "data-debug" "cedet/data-debug.el"
-;;;;;; (19323 49698))
+;;;;;; (19598 13691))
;;; Generated autoloads from cedet/data-debug.el
(autoload 'data-debug-new-buffer "data-debug" "\
@@ -5309,22 +5318,22 @@ Create a new data-debug buffer with NAME.
;;;***
-;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (19345
-;;;;;; 41626))
+;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from net/dbus.el
(autoload 'dbus-handle-event "dbus" "\
Handle events from the D-Bus.
EVENT is a D-Bus event, see `dbus-check-event'. HANDLER, being
part of the event, is called with arguments ARGS.
-If the HANDLER returns an `dbus-error', it is propagated as return message.
+If the HANDLER returns a `dbus-error', it is propagated as return message.
\(fn EVENT)" t nil)
;;;***
-;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from progmodes/dcl-mode.el
(autoload 'dcl-mode "dcl-mode" "\
@@ -5451,7 +5460,7 @@ There is some minimal font-lock support (see vars
;;;***
;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug"
-;;;;;; "emacs-lisp/debug.el" (19279 5149))
+;;;;;; "emacs-lisp/debug.el" (19598 13691))
;;; Generated autoloads from emacs-lisp/debug.el
(setq debugger 'debug)
@@ -5495,7 +5504,7 @@ To specify a nil argument interactively, exit with an empty minibuffer.
;;;***
;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el"
-;;;;;; (19279 5151))
+;;;;;; (19640 47194))
;;; Generated autoloads from play/decipher.el
(autoload 'decipher "decipher" "\
@@ -5524,8 +5533,8 @@ The most useful commands are:
;;;***
;;;### (autoloads (delimit-columns-rectangle delimit-columns-region
-;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (19323
-;;;;;; 49698))
+;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from delim-col.el
(autoload 'delimit-columns-customize "delim-col" "\
@@ -5549,8 +5558,8 @@ START and END delimits the corners of text rectangle.
;;;***
-;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (19279
-;;;;;; 38446))
+;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from progmodes/delphi.el
(autoload 'delphi-mode "delphi" "\
@@ -5601,8 +5610,8 @@ no args, if that value is non-nil.
;;;***
-;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from delsel.el
(defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5631,7 +5640,7 @@ any selection.
;;;***
;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode)
-;;;;;; "derived" "emacs-lisp/derived.el" (19279 5149))
+;;;;;; "derived" "emacs-lisp/derived.el" (19598 13691))
;;; Generated autoloads from emacs-lisp/derived.el
(autoload 'define-derived-mode "derived" "\
@@ -5685,6 +5694,8 @@ See Info node `(elisp)Derived Modes' for more details.
\(fn CHILD PARENT NAME &optional DOCSTRING &rest BODY)" nil (quote macro))
+(put 'define-derived-mode 'doc-string-elt '4)
+
(autoload 'derived-mode-init-mode-variables "derived" "\
Initialize variables for a new MODE.
Right now, if they don't already exist, set up a blank keymap, an
@@ -5696,7 +5707,7 @@ the first time the mode is used.
;;;***
;;;### (autoloads (describe-char describe-text-properties) "descr-text"
-;;;;;; "descr-text.el" (19279 5148))
+;;;;;; "descr-text.el" (19591 62571))
;;; Generated autoloads from descr-text.el
(autoload 'describe-text-properties "descr-text" "\
@@ -5724,7 +5735,7 @@ as well as widgets, buttons, overlays, and text properties.
;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir
;;;;;; desktop-load-default desktop-read desktop-remove desktop-save
;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop"
-;;;;;; "desktop.el" (19372 27330))
+;;;;;; "desktop.el" (19598 13691))
;;; Generated autoloads from desktop.el
(defvar desktop-save-mode nil "\
@@ -5908,7 +5919,7 @@ Revert to the last loaded desktop.
;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article
;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines)
-;;;;;; "deuglify" "gnus/deuglify.el" (19279 5150))
+;;;;;; "deuglify" "gnus/deuglify.el" (19598 13691))
;;; Generated autoloads from gnus/deuglify.el
(autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -5941,7 +5952,7 @@ Deuglify broken Outlook (Express) articles and redisplay.
;;;***
;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
-;;;;;; "calendar/diary-lib.el" (19299 25154))
+;;;;;; "calendar/diary-lib.el" (19640 47194))
;;; Generated autoloads from calendar/diary-lib.el
(autoload 'diary "diary-lib" "\
@@ -5984,8 +5995,8 @@ Major mode for editing the diary file.
;;;***
;;;### (autoloads (diff-backup diff diff-command diff-switches) "diff"
-;;;;;; "diff.el" (19279 5148))
-;;; Generated autoloads from diff.el
+;;;;;; "vc/diff.el" (19562 42953))
+;;; Generated autoloads from vc/diff.el
(defvar diff-switches (purecopy "-c") "\
A string or list of strings specifying switches to be passed to diff.")
@@ -6021,9 +6032,9 @@ With prefix arg, prompt for diff switches.
;;;***
-;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el"
-;;;;;; (19356 10801))
-;;; Generated autoloads from diff-mode.el
+;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el"
+;;;;;; (19591 62571))
+;;; Generated autoloads from vc/diff-mode.el
(autoload 'diff-mode "diff-mode" "\
Major mode for viewing/editing context diffs.
@@ -6050,7 +6061,7 @@ Minor mode for viewing/editing context diffs.
;;;***
-;;;### (autoloads (dig) "dig" "net/dig.el" (19279 5151))
+;;;### (autoloads (dig) "dig" "net/dig.el" (19640 47194))
;;; Generated autoloads from net/dig.el
(autoload 'dig "dig" "\
@@ -6063,7 +6074,7 @@ Optional arguments are passed to `dig-invoke'.
;;;### (autoloads (dired-mode dired-auto-revert-buffer dired-noselect
;;;;;; dired-other-frame dired-other-window dired dired-trivial-filenames
-;;;;;; dired-listing-switches) "dired" "dired.el" (19313 15414))
+;;;;;; dired-listing-switches) "dired" "dired.el" (19640 47194))
;;; Generated autoloads from dired.el
(defvar dired-listing-switches (purecopy "-al") "\
@@ -6208,7 +6219,7 @@ Keybindings:
;;;***
;;;### (autoloads (dirtrack dirtrack-mode) "dirtrack" "dirtrack.el"
-;;;;;; (19299 25154))
+;;;;;; (19562 42953))
;;; Generated autoloads from dirtrack.el
(autoload 'dirtrack-mode "dirtrack" "\
@@ -6234,8 +6245,8 @@ function `dirtrack-debug-mode' to turn on debugging output.
;;;***
-;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (19279
-;;;;;; 5149))
+;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (19598
+;;;;;; 13508))
;;; Generated autoloads from emacs-lisp/disass.el
(autoload 'disassemble "disass" "\
@@ -6254,7 +6265,7 @@ redefine OBJECT if it is a symbol.
;;;;;; 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" (19279 5148))
+;;;;;; "disp-table" "disp-table.el" (19598 13691))
;;; Generated autoloads from disp-table.el
(autoload 'make-display-table "disp-table" "\
@@ -6289,7 +6300,17 @@ Describe the display table in use in the selected window and buffer.
\(fn)" t nil)
(autoload 'standard-display-8bit "disp-table" "\
-Display characters in the range L to H literally.
+Display characters representing raw bytes in the range L to H literally.
+
+On a terminal display, each character in the range is displayed
+by sending the corresponding byte directly to the terminal.
+
+On a graphic display, each character in the range is displayed
+using the default font by a glyph whose code is the corresponding
+byte.
+
+Note that ASCII printable characters (SPC to TILDA) are displayed
+in the default way after this call.
\(fn L H)" nil nil)
@@ -6366,7 +6387,7 @@ in `.emacs'.
;;;***
;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from play/dissociate.el
(autoload 'dissociated-press "dissociate" "\
@@ -6382,7 +6403,7 @@ Default is 2.
;;;***
-;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (19279 5148))
+;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (19640 47194))
;;; Generated autoloads from dnd.el
(defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\
@@ -6403,7 +6424,7 @@ if some action was made, or nil if the URL is ignored.")
;;;***
;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode"
-;;;;;; "textmodes/dns-mode.el" (19279 5152))
+;;;;;; "textmodes/dns-mode.el" (19619 52030))
;;; Generated autoloads from textmodes/dns-mode.el
(autoload 'dns-mode "dns-mode" "\
@@ -6423,12 +6444,11 @@ Turning on DNS mode runs `dns-mode-hook'.
Locate SOA record and increment the serial field.
\(fn)" t nil)
-(add-to-list 'auto-mode-alist (purecopy '("\\.soa\\'" . dns-mode)))
;;;***
;;;### (autoloads (doc-view-bookmark-jump doc-view-minor-mode doc-view-mode
-;;;;;; doc-view-mode-p) "doc-view" "doc-view.el" (19323 49698))
+;;;;;; doc-view-mode-p) "doc-view" "doc-view.el" (19591 62571))
;;; Generated autoloads from doc-view.el
(autoload 'doc-view-mode-p "doc-view" "\
@@ -6463,7 +6483,7 @@ Not documented
;;;***
-;;;### (autoloads (doctor) "doctor" "play/doctor.el" (19279 5151))
+;;;### (autoloads (doctor) "doctor" "play/doctor.el" (19562 42953))
;;; Generated autoloads from play/doctor.el
(autoload 'doctor "doctor" "\
@@ -6473,7 +6493,7 @@ Switch to *doctor* buffer and start giving psychotherapy.
;;;***
-;;;### (autoloads (double-mode) "double" "double.el" (19279 5148))
+;;;### (autoloads (double-mode) "double" "double.el" (19562 42953))
;;; Generated autoloads from double.el
(autoload 'double-mode "double" "\
@@ -6488,7 +6508,7 @@ when pressed twice. See variable `double-map' for details.
;;;***
-;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (19279 5151))
+;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (19562 42953))
;;; Generated autoloads from play/dunnet.el
(autoload 'dunnet "dunnet" "\
@@ -6498,45 +6518,32 @@ Switch to *dungeon* buffer and start game.
;;;***
-;;;### (autoloads (gnus-earcon-display) "earcon" "gnus/earcon.el"
-;;;;;; (19279 5150))
-;;; Generated autoloads from gnus/earcon.el
-
-(autoload 'gnus-earcon-display "earcon" "\
-Play sounds in message buffers.
-
-\(fn)" t nil)
-
-;;;***
-
;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap
;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode"
-;;;;;; "emacs-lisp/easy-mmode.el" (19279 5149))
+;;;;;; "emacs-lisp/easy-mmode.el" (19598 13691))
;;; Generated autoloads from emacs-lisp/easy-mmode.el
(defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
(autoload 'define-minor-mode "easy-mmode" "\
Define a new minor mode MODE.
-This function defines the associated control variable MODE, keymap MODE-map,
-and toggle command MODE.
-
+This defines the control variable MODE and the toggle command MODE.
DOC is the documentation for the mode toggle command.
+
Optional INIT-VALUE is the initial value of the mode's variable.
Optional LIGHTER is displayed in the modeline when the mode is on.
-Optional KEYMAP is the default (defvar) keymap bound to the mode keymap.
- If it is a list, it is passed to `easy-mmode-define-keymap'
- in order to build a valid keymap. It's generally better to use
- a separate MODE-map variable than to use this argument.
-The above three arguments can be skipped if keyword arguments are
-used (see below).
-
-BODY contains code to execute each time the mode is activated or deactivated.
- It is executed after toggling the mode,
- and before running the hook variable `MODE-hook'.
- Before the actual body code, you can write keyword arguments (alternating
- keywords and values). These following keyword arguments are supported (other
- keywords will be passed to `defcustom' if the minor mode is global):
+Optional KEYMAP is the default keymap bound to the mode keymap.
+ If non-nil, it should be a variable name (whose value is a keymap),
+ a keymap, or a list of arguments for `easy-mmode-define-keymap'.
+ If KEYMAP is a keymap or list, this also defines the variable MODE-map.
+
+BODY contains code to execute each time the mode is enabled or disabled.
+ It is executed after toggling the mode, and before running MODE-hook.
+ Before the actual body code, you can write keyword arguments, i.e.
+ alternating keywords and values. These following special keywords
+ are supported (other keywords are passed to `defcustom' if the minor
+ mode is global):
+
:group GROUP Custom group name to use in all generated `defcustom' forms.
Defaults to MODE without the possible trailing \"-mode\".
Don't use this default group name unless you have written a
@@ -6548,6 +6555,11 @@ BODY contains code to execute each time the mode is activated or deactivated.
:lighter SPEC Same as the LIGHTER argument.
:keymap MAP Same as the KEYMAP argument.
:require SYM Same as in `defcustom'.
+:variable PLACE The location (as can be used with `setf') to use instead
+ of the variable MODE to store the state of the mode. PLACE
+ can also be of the form (GET . SET) where GET is an expression
+ that returns the current state and SET is a function that takes
+ a new state and sets it.
For example, you could write
(define-minor-mode foo-mode \"If enabled, foo on you!\"
@@ -6616,12 +6628,10 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
;;;***
;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define
-;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (19279
-;;;;;; 5149))
+;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from emacs-lisp/easymenu.el
-(put 'easy-menu-define 'lisp-indent-function 'defun)
-
(autoload 'easy-menu-define "easymenu" "\
Define a menu bar submenu in maps MAPS, according to MENU.
@@ -6730,6 +6740,8 @@ A menu item can be a list with the same format as MENU. This is a submenu.
\(fn SYMBOL MAPS DOC MENU)" nil (quote macro))
+(put 'easy-menu-define 'lisp-indent-function 'defun)
+
(autoload 'easy-menu-do-define "easymenu" "\
Not documented
@@ -6771,7 +6783,7 @@ To implement dynamic menus, either call this from
;;;;;; ebnf-eps-file 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" (19279 5151))
+;;;;;; "progmodes/ebnf2ps.el" (19562 42953))
;;; Generated autoloads from progmodes/ebnf2ps.el
(autoload 'ebnf-customize "ebnf2ps" "\
@@ -7045,8 +7057,8 @@ See `ebnf-style-database' documentation.
;;;;;; 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" (19279
-;;;;;; 5151))
+;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from progmodes/ebrowse.el
(autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7197,7 +7209,7 @@ Display statistics for a class tree.
;;;***
;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from ebuff-menu.el
(autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7222,7 +7234,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
;;;***
;;;### (autoloads (Electric-command-history-redo-expression) "echistory"
-;;;;;; "echistory.el" (19279 5148))
+;;;;;; "echistory.el" (19562 42953))
;;; Generated autoloads from echistory.el
(autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7234,7 +7246,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
;;;***
;;;### (autoloads (ecomplete-setup) "ecomplete" "gnus/ecomplete.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/ecomplete.el
(autoload 'ecomplete-setup "ecomplete" "\
@@ -7244,7 +7256,7 @@ Not documented
;;;***
-;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (19323 49698))
+;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (19619 52030))
;;; Generated autoloads from cedet/ede.el
(defvar global-ede-mode nil "\
@@ -7270,7 +7282,7 @@ an EDE controlled project.
;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
-;;;;;; "emacs-lisp/edebug.el" (19279 5149))
+;;;;;; "emacs-lisp/edebug.el" (19640 47194))
;;; Generated autoloads from emacs-lisp/edebug.el
(defvar edebug-all-defs nil "\
@@ -7343,8 +7355,8 @@ Toggle edebugging of all forms.
;;;;;; ediff-merge-directories-with-ancestor ediff-merge-directories
;;;;;; ediff-directories3 ediff-directory-revisions ediff-directories
;;;;;; ediff-buffers3 ediff-buffers ediff-backup ediff-current-file
-;;;;;; ediff-files3 ediff-files) "ediff" "ediff.el" (19279 5148))
-;;; Generated autoloads from ediff.el
+;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (19598 13691))
+;;; Generated autoloads from vc/ediff.el
(autoload 'ediff-files "ediff" "\
Run Ediff on a pair of files, FILE-A and FILE-B.
@@ -7574,9 +7586,9 @@ With optional NODE, goes to that node.
;;;***
-;;;### (autoloads (ediff-customize) "ediff-help" "ediff-help.el"
-;;;;;; (19279 5148))
-;;; Generated autoloads from ediff-help.el
+;;;### (autoloads (ediff-customize) "ediff-help" "vc/ediff-help.el"
+;;;;;; (19598 13691))
+;;; Generated autoloads from vc/ediff-help.el
(autoload 'ediff-customize "ediff-help" "\
Not documented
@@ -7585,9 +7597,16 @@ Not documented
;;;***
-;;;### (autoloads (ediff-show-registry) "ediff-mult" "ediff-mult.el"
-;;;;;; (19279 5148))
-;;; Generated autoloads from ediff-mult.el
+;;;### (autoloads nil "ediff-hook" "vc/ediff-hook.el" (19598 13691))
+;;; Generated autoloads from vc/ediff-hook.el
+
+(if (featurep 'xemacs) (progn (defun ediff-xemacs-init-menus nil (when (featurep 'menubar) (add-submenu '("Tools") ediff-menu "OO-Browser...") (add-submenu '("Tools") ediff-merge-menu "OO-Browser...") (add-submenu '("Tools") epatch-menu "OO-Browser...") (add-submenu '("Tools") ediff-misc-menu "OO-Browser...") (add-menu-button '("Tools") "-------" "OO-Browser..."))) (defvar ediff-menu '("Compare" ["Two Files..." ediff-files t] ["Two Buffers..." ediff-buffers t] ["Three Files..." ediff-files3 t] ["Three Buffers..." ediff-buffers3 t] "---" ["Two Directories..." ediff-directories t] ["Three Directories..." ediff-directories3 t] "---" ["File with Revision..." ediff-revision t] ["Directory Revisions..." ediff-directory-revisions t] "---" ["Windows Word-by-word..." ediff-windows-wordwise t] ["Windows Line-by-line..." ediff-windows-linewise t] "---" ["Regions Word-by-word..." ediff-regions-wordwise t] ["Regions Line-by-line..." ediff-regions-linewise t])) (defvar ediff-merge-menu '("Merge" ["Files..." ediff-merge-files t] ["Files with Ancestor..." ediff-merge-files-with-ancestor t] ["Buffers..." ediff-merge-buffers t] ["Buffers with Ancestor..." ediff-merge-buffers-with-ancestor t] "---" ["Directories..." ediff-merge-directories t] ["Directories with Ancestor..." ediff-merge-directories-with-ancestor t] "---" ["Revisions..." ediff-merge-revisions t] ["Revisions with Ancestor..." ediff-merge-revisions-with-ancestor t] ["Directory Revisions..." ediff-merge-directory-revisions t] ["Directory Revisions with Ancestor..." ediff-merge-directory-revisions-with-ancestor t])) (defvar epatch-menu '("Apply Patch" ["To a file..." ediff-patch-file t] ["To a buffer..." ediff-patch-buffer t])) (defvar ediff-misc-menu '("Ediff Miscellanea" ["Ediff Manual" ediff-documentation t] ["Customize Ediff" ediff-customize t] ["List Ediff Sessions" ediff-show-registry t] ["Use separate frame for Ediff control buffer" ediff-toggle-multiframe :style toggle :selected (if (and (featurep 'ediff-util) (boundp 'ediff-window-setup-function)) (eq ediff-window-setup-function 'ediff-setup-windows-multiframe))] ["Use a toolbar with Ediff control buffer" ediff-toggle-use-toolbar :style toggle :selected (if (featurep 'ediff-tbar) (ediff-use-toolbar-p))])) (if (and (featurep 'menubar) (not (featurep 'infodock)) (not (featurep 'ediff-hook))) (ediff-xemacs-init-menus))) (defvar menu-bar-ediff-misc-menu (make-sparse-keymap "Ediff Miscellanea")) (fset 'menu-bar-ediff-misc-menu (symbol-value 'menu-bar-ediff-misc-menu)) (defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch")) (fset 'menu-bar-epatch-menu (symbol-value 'menu-bar-epatch-menu)) (defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge")) (fset 'menu-bar-ediff-merge-menu (symbol-value 'menu-bar-ediff-merge-menu)) (defvar menu-bar-ediff-menu (make-sparse-keymap "Compare")) (fset 'menu-bar-ediff-menu (symbol-value 'menu-bar-ediff-menu)) (define-key menu-bar-ediff-menu [ediff-misc] `(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu)) (define-key menu-bar-ediff-menu [separator-ediff-misc] menu-bar-separator) (define-key menu-bar-ediff-menu [window] `(menu-item ,(purecopy "This Window and Next Window") compare-windows :help ,(purecopy "Compare the current window and the next window"))) (define-key menu-bar-ediff-menu [ediff-windows-linewise] `(menu-item ,(purecopy "Windows Line-by-line...") ediff-windows-linewise :help ,(purecopy "Compare windows line-wise"))) (define-key menu-bar-ediff-menu [ediff-windows-wordwise] `(menu-item ,(purecopy "Windows Word-by-word...") ediff-windows-wordwise :help ,(purecopy "Compare windows word-wise"))) (define-key menu-bar-ediff-menu [separator-ediff-windows] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-regions-linewise] `(menu-item ,(purecopy "Regions Line-by-line...") ediff-regions-linewise :help ,(purecopy "Compare regions line-wise"))) (define-key menu-bar-ediff-menu [ediff-regions-wordwise] `(menu-item ,(purecopy "Regions Word-by-word...") ediff-regions-wordwise :help ,(purecopy "Compare regions word-wise"))) (define-key menu-bar-ediff-menu [separator-ediff-regions] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-dir-revision] `(menu-item ,(purecopy "Directory Revisions...") ediff-directory-revisions :help ,(purecopy "Compare directory files with their older versions"))) (define-key menu-bar-ediff-menu [ediff-revision] `(menu-item ,(purecopy "File with Revision...") ediff-revision :help ,(purecopy "Compare file with its older versions"))) (define-key menu-bar-ediff-menu [separator-ediff-directories] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-directories3] `(menu-item ,(purecopy "Three Directories...") ediff-directories3 :help ,(purecopy "Compare files common to three directories simultaneously"))) (define-key menu-bar-ediff-menu [ediff-directories] `(menu-item ,(purecopy "Two Directories...") ediff-directories :help ,(purecopy "Compare files common to two directories simultaneously"))) (define-key menu-bar-ediff-menu [separator-ediff-files] menu-bar-separator) (define-key menu-bar-ediff-menu [ediff-buffers3] `(menu-item ,(purecopy "Three Buffers...") ediff-buffers3 :help ,(purecopy "Compare three buffers simultaneously"))) (define-key menu-bar-ediff-menu [ediff-files3] `(menu-item ,(purecopy "Three Files...") ediff-files3 :help ,(purecopy "Compare three files simultaneously"))) (define-key menu-bar-ediff-menu [ediff-buffers] `(menu-item ,(purecopy "Two Buffers...") ediff-buffers :help ,(purecopy "Compare two buffers simultaneously"))) (define-key menu-bar-ediff-menu [ediff-files] `(menu-item ,(purecopy "Two Files...") ediff-files :help ,(purecopy "Compare two files simultaneously"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor] `(menu-item ,(purecopy "Directory Revisions with Ancestor...") ediff-merge-directory-revisions-with-ancestor :help ,(purecopy "Merge versions of the files in the same directory by comparing the files with common ancestors"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-dir-revisions] `(menu-item ,(purecopy "Directory Revisions...") ediff-merge-directory-revisions :help ,(purecopy "Merge versions of the files in the same directory (without using ancestor information)"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor] `(menu-item ,(purecopy "Revisions with Ancestor...") ediff-merge-revisions-with-ancestor :help ,(purecopy "Merge versions of the same file by comparing them with a common ancestor"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-revisions] `(menu-item ,(purecopy "Revisions...") ediff-merge-revisions :help ,(purecopy "Merge versions of the same file (without using ancestor information)"))) (define-key menu-bar-ediff-merge-menu [separator-ediff-merge] menu-bar-separator) (define-key menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor] `(menu-item ,(purecopy "Directories with Ancestor...") ediff-merge-directories-with-ancestor :help ,(purecopy "Merge files common to a pair of directories by comparing the files with common ancestors"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-directories] `(menu-item ,(purecopy "Directories...") ediff-merge-directories :help ,(purecopy "Merge files common to a pair of directories"))) (define-key menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] menu-bar-separator) (define-key menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor] `(menu-item ,(purecopy "Buffers with Ancestor...") ediff-merge-buffers-with-ancestor :help ,(purecopy "Merge buffers by comparing their contents with a common ancestor"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-buffers] `(menu-item ,(purecopy "Buffers...") ediff-merge-buffers :help ,(purecopy "Merge buffers (without using ancestor information)"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor] `(menu-item ,(purecopy "Files with Ancestor...") ediff-merge-files-with-ancestor :help ,(purecopy "Merge files by comparing them with a common ancestor"))) (define-key menu-bar-ediff-merge-menu [ediff-merge-files] `(menu-item ,(purecopy "Files...") ediff-merge-files :help ,(purecopy "Merge files (without using ancestor information)"))) (define-key menu-bar-epatch-menu [ediff-patch-buffer] `(menu-item ,(purecopy "To a Buffer...") ediff-patch-buffer :help ,(purecopy "Apply a patch to the contents of a buffer"))) (define-key menu-bar-epatch-menu [ediff-patch-file] `(menu-item ,(purecopy "To a File...") ediff-patch-file :help ,(purecopy "Apply a patch to a file"))) (define-key menu-bar-ediff-misc-menu [emultiframe] `(menu-item ,(purecopy "Use separate control buffer frame") ediff-toggle-multiframe :help ,(purecopy "Switch between the single-frame presentation mode and the multi-frame mode"))) (define-key menu-bar-ediff-misc-menu [eregistry] `(menu-item ,(purecopy "List Ediff Sessions") ediff-show-registry :help ,(purecopy "List all active Ediff sessions; it is a convenient way to find and resume such a session"))) (define-key menu-bar-ediff-misc-menu [ediff-cust] `(menu-item ,(purecopy "Customize Ediff") ediff-customize :help ,(purecopy "Change some of the parameters that govern the behavior of Ediff"))) (define-key menu-bar-ediff-misc-menu [ediff-doc] `(menu-item ,(purecopy "Ediff Manual") ediff-documentation :help ,(purecopy "Bring up the Ediff manual"))))
+
+;;;***
+
+;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el"
+;;;;;; (19598 13691))
+;;; Generated autoloads from vc/ediff-mult.el
(autoload 'ediff-show-registry "ediff-mult" "\
Display Ediff's registry.
@@ -7599,8 +7618,8 @@ Display Ediff's registry.
;;;***
;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe)
-;;;;;; "ediff-util" "ediff-util.el" (19313 15414))
-;;; Generated autoloads from ediff-util.el
+;;;;;; "ediff-util" "vc/ediff-util.el" (19640 47194))
+;;; Generated autoloads from vc/ediff-util.el
(autoload 'ediff-toggle-multiframe "ediff-util" "\
Switch from multiframe display to single-frame display and back.
@@ -7620,7 +7639,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see.
;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro
;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el"
-;;;;;; (19279 5148))
+;;;;;; (19640 47194))
;;; Generated autoloads from edmacro.el
(defvar edmacro-eight-bits nil "\
@@ -7673,7 +7692,7 @@ or nil, use a compact 80-column format.
;;;***
;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt"
-;;;;;; "emulation/edt.el" (19281 39617))
+;;;;;; "emulation/edt.el" (19619 52030))
;;; Generated autoloads from emulation/edt.el
(autoload 'edt-set-scroll-margins "edt" "\
@@ -7691,7 +7710,7 @@ Turn on EDT Emulation.
;;;***
;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from ehelp.el
(autoload 'with-electric-help "ehelp" "\
@@ -7716,7 +7735,7 @@ If THUNK returns non-nil, we don't do those things.
When the user exits (with `electric-help-exit', or otherwise), the help
buffer's window disappears (i.e., we use `save-window-excursion'), and
-BUFFER is put into default `major-mode' (or `fundamental-mode').
+BUFFER is put back into its original major mode.
\(fn THUNK &optional BUFFER NOERASE MINHEIGHT)" nil nil)
@@ -7728,7 +7747,7 @@ Not documented
;;;***
;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string)
-;;;;;; "eldoc" "emacs-lisp/eldoc.el" (19279 5149))
+;;;;;; "eldoc" "emacs-lisp/eldoc.el" (19562 42953))
;;; Generated autoloads from emacs-lisp/eldoc.el
(defvar eldoc-minor-mode-string (purecopy " ElDoc") "\
@@ -7771,8 +7790,43 @@ Emacs Lisp mode) that support ElDoc.")
;;;***
-;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (electric-pair-mode electric-indent-mode) "electric"
+;;;;;; "electric.el" (19598 13691))
+;;; Generated autoloads from electric.el
+
+(defvar electric-indent-mode nil "\
+Non-nil if Electric-Indent mode is enabled.
+See the command `electric-indent-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `electric-indent-mode'.")
+
+(custom-autoload 'electric-indent-mode "electric" nil)
+
+(autoload 'electric-indent-mode "electric" "\
+Automatically reindent lines of code when inserting particular chars.
+`electric-indent-chars' specifies the set of chars that should cause reindentation.
+
+\(fn &optional ARG)" t nil)
+
+(defvar electric-pair-mode nil "\
+Non-nil if Electric-Pair mode is enabled.
+See the command `electric-pair-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `electric-pair-mode'.")
+
+(custom-autoload 'electric-pair-mode "electric" nil)
+
+(autoload 'electric-pair-mode "electric" "\
+Automatically pair-up parens when inserting an open paren.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from elide-head.el
(autoload 'elide-head "elide-head" "\
@@ -7789,7 +7843,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks.
;;;### (autoloads (elint-initialize elint-defun elint-current-buffer
;;;;;; elint-directory elint-file) "elint" "emacs-lisp/elint.el"
-;;;;;; (19338 9840))
+;;;;;; (19562 42953))
;;; Generated autoloads from emacs-lisp/elint.el
(autoload 'elint-file "elint" "\
@@ -7825,8 +7879,8 @@ optional prefix argument REINIT is non-nil.
;;;***
;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list
-;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (19279
-;;;;;; 5149))
+;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from emacs-lisp/elp.el
(autoload 'elp-instrument-function "elp" "\
@@ -7861,7 +7915,7 @@ displayed.
;;;***
;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el"
-;;;;;; (19365 25156))
+;;;;;; (19640 47194))
;;; Generated autoloads from mail/emacsbug.el
(autoload 'report-emacs-bug "emacsbug" "\
@@ -7876,8 +7930,8 @@ Prompts for bug subject. Leaves you in a mail buffer.
;;;;;; 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" (19256 49601))
-;;; Generated autoloads from emerge.el
+;;;;;; "vc/emerge.el" (19562 42953))
+;;; Generated autoloads from vc/emerge.el
(autoload 'emerge-files "emerge" "\
Run Emerge on two files.
@@ -7937,7 +7991,7 @@ Not documented
;;;***
;;;### (autoloads (enriched-decode enriched-encode enriched-mode)
-;;;;;; "enriched" "textmodes/enriched.el" (19279 5152))
+;;;;;; "enriched" "textmodes/enriched.el" (19619 52030))
;;; Generated autoloads from textmodes/enriched.el
(autoload 'enriched-mode "enriched" "\
@@ -7972,8 +8026,8 @@ Not documented
;;;;;; epa-sign-region epa-verify-cleartext-in-region epa-verify-region
;;;;;; epa-decrypt-armor-in-region epa-decrypt-region epa-encrypt-file
;;;;;; epa-sign-file epa-verify-file epa-decrypt-file epa-select-keys
-;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (19279
-;;;;;; 5148))
+;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from epa.el
(autoload 'epa-list-keys "epa" "\
@@ -8146,7 +8200,7 @@ Insert selected KEYS after the point.
;;;***
;;;### (autoloads (epa-dired-do-encrypt epa-dired-do-sign epa-dired-do-verify
-;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (19279 5148))
+;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (19598 13691))
;;; Generated autoloads from epa-dired.el
(autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8172,7 +8226,7 @@ Encrypt marked files.
;;;***
;;;### (autoloads (epa-file-disable epa-file-enable epa-file-handler)
-;;;;;; "epa-file" "epa-file.el" (19279 5148))
+;;;;;; "epa-file" "epa-file.el" (19640 47194))
;;; Generated autoloads from epa-file.el
(autoload 'epa-file-handler "epa-file" "\
@@ -8194,7 +8248,7 @@ Not documented
;;;### (autoloads (epa-global-mail-mode epa-mail-import-keys epa-mail-encrypt
;;;;;; epa-mail-sign epa-mail-verify epa-mail-decrypt epa-mail-mode)
-;;;;;; "epa-mail" "epa-mail.el" (19279 5148))
+;;;;;; "epa-mail" "epa-mail.el" (19598 13691))
;;; Generated autoloads from epa-mail.el
(autoload 'epa-mail-mode "epa-mail" "\
@@ -8258,7 +8312,7 @@ Minor mode to hook EasyPG into Mail mode.
;;;***
-;;;### (autoloads (epg-make-context) "epg" "epg.el" (19279 5148))
+;;;### (autoloads (epg-make-context) "epg" "epg.el" (19598 13691))
;;; Generated autoloads from epg.el
(autoload 'epg-make-context "epg" "\
@@ -8269,7 +8323,7 @@ Return a context object.
;;;***
;;;### (autoloads (epg-expand-group epg-check-configuration epg-configuration)
-;;;;;; "epg-config" "epg-config.el" (19356 10801))
+;;;;;; "epg-config" "epg-config.el" (19598 13691))
;;; Generated autoloads from epg-config.el
(autoload 'epg-configuration "epg-config" "\
@@ -8290,7 +8344,7 @@ Look at CONFIG and try to expand GROUP.
;;;***
;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc"
-;;;;;; "erc/erc.el" (19299 25154))
+;;;;;; "erc/erc.el" (19598 13691))
;;; Generated autoloads from erc/erc.el
(autoload 'erc-select-read-args "erc" "\
@@ -8332,33 +8386,33 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
;;;***
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (19279
-;;;;;; 5150))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from erc/erc-autoaway.el
(autoload 'erc-autoaway-mode "erc-autoaway")
;;;***
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (19279 5150))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (19562 42953))
;;; Generated autoloads from erc/erc-button.el
(autoload 'erc-button-mode "erc-button" nil t)
;;;***
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (19279 5150))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (19562 42953))
;;; Generated autoloads from erc/erc-capab.el
(autoload 'erc-capab-identify-mode "erc-capab" nil t)
;;;***
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (19279 5150))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (19562 42953))
;;; Generated autoloads from erc/erc-compat.el
(autoload 'erc-define-minor-mode "erc-compat")
;;;***
;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC)
-;;;;;; "erc-dcc" "erc/erc-dcc.el" (19279 5150))
+;;;;;; "erc-dcc" "erc/erc-dcc.el" (19562 42953))
;;; Generated autoloads from erc/erc-dcc.el
(autoload 'erc-dcc-mode "erc-dcc")
@@ -8391,7 +8445,7 @@ that subcommand.
;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list
;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action
;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from erc/erc-ezbounce.el
(autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -8453,8 +8507,8 @@ Add EZBouncer convenience functions to ERC.
;;;***
-;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from erc/erc-fill.el
(autoload 'erc-fill-mode "erc-fill" nil t)
@@ -8466,15 +8520,15 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
;;;***
-;;;### (autoloads nil "erc-hecomplete" "erc/erc-hecomplete.el" (19279
-;;;;;; 5150))
+;;;### (autoloads nil "erc-hecomplete" "erc/erc-hecomplete.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from erc/erc-hecomplete.el
(autoload 'erc-hecomplete-mode "erc-hecomplete" nil t)
;;;***
;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
-;;;;;; "erc/erc-identd.el" (19279 5150))
+;;;;;; "erc/erc-identd.el" (19562 42953))
;;; Generated autoloads from erc/erc-identd.el
(autoload 'erc-identd-mode "erc-identd")
@@ -8496,7 +8550,7 @@ Not documented
;;;***
;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from erc/erc-imenu.el
(autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -8506,20 +8560,20 @@ Not documented
;;;***
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (19279 5150))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (19598 13691))
;;; Generated autoloads from erc/erc-join.el
(autoload 'erc-autojoin-mode "erc-join" nil t)
;;;***
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (19279 5150))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (19640 47194))
;;; Generated autoloads from erc/erc-list.el
(autoload 'erc-list-mode "erc-list")
;;;***
;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
-;;;;;; "erc/erc-log.el" (19279 5150))
+;;;;;; "erc/erc-log.el" (19562 42953))
;;; Generated autoloads from erc/erc-log.el
(autoload 'erc-log-mode "erc-log" nil t)
@@ -8551,7 +8605,7 @@ You can save every individual message by putting this function on
;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from erc/erc-match.el
(autoload 'erc-match-mode "erc-match")
@@ -8597,14 +8651,14 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
;;;***
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (19279 5150))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (19562 42953))
;;; Generated autoloads from erc/erc-menu.el
(autoload 'erc-menu-mode "erc-menu" nil t)
;;;***
;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from erc/erc-netsplit.el
(autoload 'erc-netsplit-mode "erc-netsplit")
@@ -8616,7 +8670,7 @@ Show who's gone.
;;;***
;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
-;;;;;; "erc/erc-networks.el" (19279 5150))
+;;;;;; "erc/erc-networks.el" (19562 42953))
;;; Generated autoloads from erc/erc-networks.el
(autoload 'erc-determine-network "erc-networks" "\
@@ -8634,7 +8688,7 @@ Interactively select a server to connect to using `erc-server-alist'.
;;;***
;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
-;;;;;; "erc/erc-notify.el" (19279 5150))
+;;;;;; "erc/erc-notify.el" (19562 42953))
;;; Generated autoloads from erc/erc-notify.el
(autoload 'erc-notify-mode "erc-notify" nil t)
@@ -8652,33 +8706,33 @@ Not documented
;;;***
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (19279 5150))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (19562 42953))
;;; Generated autoloads from erc/erc-page.el
(autoload 'erc-page-mode "erc-page")
;;;***
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (19279
-;;;;;; 5150))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from erc/erc-pcomplete.el
(autoload 'erc-completion-mode "erc-pcomplete" nil t)
;;;***
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (19279 5150))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (19562 42953))
;;; Generated autoloads from erc/erc-replace.el
(autoload 'erc-replace-mode "erc-replace")
;;;***
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (19279 5150))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (19562 42953))
;;; Generated autoloads from erc/erc-ring.el
(autoload 'erc-ring-mode "erc-ring" nil t)
;;;***
;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
-;;;;;; "erc-services" "erc/erc-services.el" (19313 15414))
+;;;;;; "erc-services" "erc/erc-services.el" (19562 42953))
;;; Generated autoloads from erc/erc-services.el
(autoload 'erc-services-mode "erc-services" nil t)
@@ -8695,14 +8749,14 @@ When called interactively, read the password using `read-passwd'.
;;;***
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (19279 5150))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (19562 42953))
;;; Generated autoloads from erc/erc-sound.el
(autoload 'erc-sound-mode "erc-sound")
;;;***
;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from erc/erc-speedbar.el
(autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -8713,21 +8767,21 @@ This will add a speedbar major display mode.
;;;***
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (19279
-;;;;;; 5150))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from erc/erc-spelling.el
(autoload 'erc-spelling-mode "erc-spelling" nil t)
;;;***
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (19279 5150))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (19562 42953))
;;; Generated autoloads from erc/erc-stamp.el
(autoload 'erc-timestamp-mode "erc-stamp" nil t)
;;;***
;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from erc/erc-track.el
(defvar erc-track-minor-mode nil "\
@@ -8750,7 +8804,7 @@ module, otherwise the keybindings will not do anything useful.
;;;***
;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size)
-;;;;;; "erc-truncate" "erc/erc-truncate.el" (19279 5150))
+;;;;;; "erc-truncate" "erc/erc-truncate.el" (19562 42953))
;;; Generated autoloads from erc/erc-truncate.el
(autoload 'erc-truncate-mode "erc-truncate" nil t)
@@ -8770,7 +8824,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
;;;***
;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from erc/erc-xdcc.el
(autoload 'erc-xdcc-mode "erc-xdcc")
@@ -8781,8 +8835,8 @@ Add a file to `erc-xdcc-files'.
;;;***
-;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from eshell/esh-mode.el
(autoload 'eshell-mode "esh-mode" "\
@@ -8794,8 +8848,8 @@ Emacs shell interactive mode.
;;;***
-;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (eshell-test) "esh-test" "eshell/esh-test.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from eshell/esh-test.el
(autoload 'eshell-test "esh-test" "\
@@ -8806,7 +8860,7 @@ Test Eshell to verify that it works as expected.
;;;***
;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell"
-;;;;;; "eshell/eshell.el" (19330 37505))
+;;;;;; "eshell/eshell.el" (19562 42953))
;;; Generated autoloads from eshell/eshell.el
(autoload 'eshell "eshell" "\
@@ -8847,7 +8901,7 @@ corresponding to a successful execution.
;;;;;; 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"
-;;;;;; (19279 5151))
+;;;;;; (19619 52030))
;;; Generated autoloads from progmodes/etags.el
(defvar tags-file-name nil "\
@@ -8856,6 +8910,7 @@ To switch to a new tags table, setting this variable is sufficient.
If you set this variable, do not also set `tags-table-list'.
Use the `etags' program to make a tags table file.")
(put 'tags-file-name 'variable-interactive (purecopy "fVisit tags table: "))
+ (put 'tags-file-name 'safe-local-variable 'stringp)
(defvar tags-case-fold-search 'default "\
*Whether tags operations should be case-sensitive.
@@ -8873,7 +8928,7 @@ Use the `etags' program to make a tags table file.")
(custom-autoload 'tags-table-list "etags" t)
-(defvar tags-compression-info-list (purecopy '("" ".Z" ".bz2" ".gz" ".tgz")) "\
+(defvar tags-compression-info-list (purecopy '("" ".Z" ".bz2" ".gz" ".xz" ".tgz")) "\
*List of extensions tried by etags when jka-compr is used.
An empty string means search the non-compressed file.
These extensions will be tried only if jka-compr was activated
@@ -8942,6 +8997,11 @@ as they appeared in the `etags' command that created the table, usually
without directory names.
\(fn)" nil nil)
+ (defun tags-completion-at-point-function ()
+ (if (or tags-table-list tags-file-name)
+ (progn
+ (load "etags")
+ (tags-completion-at-point-function))))
(autoload 'find-tag-noselect "etags" "\
Find tag (in current tags table) whose name contains TAGNAME.
@@ -9155,7 +9215,7 @@ for \\[find-tag] (which see).
;;;;;; ethio-fidel-to-sera-marker ethio-fidel-to-sera-region ethio-fidel-to-sera-buffer
;;;;;; ethio-sera-to-fidel-marker ethio-sera-to-fidel-region ethio-sera-to-fidel-buffer
;;;;;; setup-ethiopic-environment-internal) "ethio-util" "language/ethio-util.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from language/ethio-util.el
(autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9325,7 +9385,7 @@ Not documented
;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline
;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from net/eudc.el
(autoload 'eudc-set-server "eudc" "\
@@ -9381,7 +9441,7 @@ This does nothing except loading eudc by autoload side-effect.
;;;### (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" (19279 5151))
+;;;;;; "eudc-bob" "net/eudc-bob.el" (19598 13691))
;;; Generated autoloads from net/eudc-bob.el
(autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -9417,7 +9477,7 @@ Display a button for the JPEG DATA.
;;;***
;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb)
-;;;;;; "eudc-export" "net/eudc-export.el" (19279 5151))
+;;;;;; "eudc-export" "net/eudc-export.el" (19598 13691))
;;; Generated autoloads from net/eudc-export.el
(autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -9434,7 +9494,7 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record.
;;;***
;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el"
-;;;;;; (19279 5151))
+;;;;;; (19640 47194))
;;; Generated autoloads from net/eudc-hotlist.el
(autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -9444,8 +9504,8 @@ Edit the hotlist of directory servers in a specialized buffer.
;;;***
-;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (19279
-;;;;;; 5149))
+;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from emacs-lisp/ewoc.el
(autoload 'ewoc-create "ewoc" "\
@@ -9474,7 +9534,7 @@ fourth arg NOSEP non-nil inhibits this.
;;;### (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"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/executable.el
(autoload 'executable-command-find-posix-p "executable" "\
@@ -9517,7 +9577,7 @@ file modes.
;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from expand.el
(autoload 'expand-add-abbrevs "expand" "\
@@ -9566,7 +9626,7 @@ This is used only in conjunction with `expand-add-abbrevs'.
;;;***
-;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (19326 6129))
+;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (19591 62571))
;;; Generated autoloads from progmodes/f90.el
(autoload 'f90-mode "f90" "\
@@ -9632,8 +9692,8 @@ with no args, if that value is non-nil.
;;;### (autoloads (variable-pitch-mode buffer-face-toggle buffer-face-set
;;;;;; buffer-face-mode text-scale-adjust text-scale-decrease text-scale-increase
;;;;;; text-scale-set face-remap-set-base face-remap-reset-base
-;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (19358
-;;;;;; 54001))
+;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from face-remap.el
(autoload 'face-remap-add-relative "face-remap" "\
@@ -9773,7 +9833,7 @@ Besides the choice of face, it is the same as `buffer-face-mode'.
;;;### (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" (19256 49601))
+;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (19619 52030))
;;; Generated autoloads from mail/feedmail.el
(autoload 'feedmail-send-it "feedmail" "\
@@ -9827,7 +9887,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
;;;***
;;;### (autoloads (ffap-bindings dired-at-point ffap-at-mouse ffap-menu
-;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (19321 4517))
+;;;;;; find-file-at-point ffap-next) "ffap" "ffap.el" (19591 62571))
;;; Generated autoloads from ffap.el
(autoload 'ffap-next "ffap" "\
@@ -9891,7 +9951,7 @@ Evaluate the forms in variable `ffap-bindings'.
;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively
;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find
;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory)
-;;;;;; "filecache" "filecache.el" (19279 5148))
+;;;;;; "filecache" "filecache.el" (19591 62571))
;;; Generated autoloads from filecache.el
(autoload 'file-cache-add-directory "filecache" "\
@@ -9904,8 +9964,8 @@ be added to the cache.
(autoload 'file-cache-add-directory-list "filecache" "\
Add DIRECTORY-LIST (a list of directory names) to the file cache.
If the optional REGEXP argument is non-nil, only files which match it
-will be added to the cache. Note that the REGEXP is applied to the files
-in each directory, not to the directory list itself.
+will be added to the cache. Note that the REGEXP is applied to the
+files in each directory, not to the directory list itself.
\(fn DIRECTORY-LIST &optional REGEXP)" t nil)
@@ -9928,10 +9988,10 @@ STRING is passed as an argument to the locate command.
(autoload 'file-cache-add-directory-recursively "filecache" "\
Adds DIR and any subdirectories to the file-cache.
-This function does not use any external programs
+This function does not use any external programs.
If the optional REGEXP argument is non-nil, only files which match it
-will be added to the cache. Note that the REGEXP is applied to the files
-in each directory, not to the directory list itself.
+will be added to the cache. Note that the REGEXP is applied to the
+files in each directory, not to the directory list itself.
\(fn DIR &optional REGEXP)" t nil)
@@ -9951,7 +10011,7 @@ the name is considered already unique; only the second substitution
;;;;;; copy-file-locals-to-dir-locals delete-dir-local-variable
;;;;;; add-dir-local-variable delete-file-local-variable-prop-line
;;;;;; add-file-local-variable-prop-line delete-file-local-variable
-;;;;;; add-file-local-variable) "files-x" "files-x.el" (19279 5148))
+;;;;;; add-file-local-variable) "files-x" "files-x.el" (19598 13691))
;;; Generated autoloads from files-x.el
(autoload 'add-file-local-variable "files-x" "\
@@ -10016,8 +10076,8 @@ Copy directory-local variables to the -*- line.
;;;***
-;;;### (autoloads (filesets-init) "filesets" "filesets.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (filesets-init) "filesets" "filesets.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from filesets.el
(autoload 'filesets-init "filesets" "\
@@ -10028,7 +10088,7 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
;;;***
-;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (19279 38446))
+;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (19562 42953))
;;; Generated autoloads from find-cmd.el
(autoload 'find-cmd "find-cmd" "\
@@ -10049,7 +10109,7 @@ result is a string that should be ready for the command line.
;;;### (autoloads (find-grep-dired find-name-dired find-dired find-grep-options
;;;;;; find-ls-subdir-switches find-ls-option) "find-dired" "find-dired.el"
-;;;;;; (19375 49830))
+;;;;;; (19562 42953))
;;; Generated autoloads from find-dired.el
(defvar find-ls-option (if (eq system-type 'berkeley-unix) (purecopy '("-ls" . "-gilsb")) (purecopy '("-exec ls -ld {} \\;" . "-ld"))) "\
@@ -10110,7 +10170,7 @@ Thus ARG can also contain additional grep options.
;;;### (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"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from find-file.el
(defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\
@@ -10204,7 +10264,7 @@ Visit the file you click on in another window.
;;;;;; 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" (19279 5149))
+;;;;;; "emacs-lisp/find-func.el" (19562 42953))
;;; Generated autoloads from emacs-lisp/find-func.el
(autoload 'find-library "find-func" "\
@@ -10359,7 +10419,7 @@ Define some key bindings for the find-function family of functions.
;;;***
;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories
-;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (19279 5148))
+;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (19591 62571))
;;; Generated autoloads from find-lisp.el
(autoload 'find-lisp-find-dired "find-lisp" "\
@@ -10380,7 +10440,7 @@ Change the filter on a find-lisp-find-dired buffer to REGEXP.
;;;***
;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords)
-;;;;;; "finder" "finder.el" (19368 35187))
+;;;;;; "finder" "finder.el" (19619 52030))
;;; Generated autoloads from finder.el
(autoload 'finder-list-keywords "finder" "\
@@ -10402,7 +10462,7 @@ Find packages matching a given keyword.
;;;***
;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl"
-;;;;;; "flow-ctrl.el" (19279 5148))
+;;;;;; "flow-ctrl.el" (19591 62571))
;;; Generated autoloads from flow-ctrl.el
(autoload 'enable-flow-control "flow-ctrl" "\
@@ -10424,7 +10484,7 @@ to get the effect of a C-q.
;;;***
;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el"
-;;;;;; (19279 5150))
+;;;;;; (19619 52030))
;;; Generated autoloads from gnus/flow-fill.el
(autoload 'fill-flowed-encode "flow-fill" "\
@@ -10440,7 +10500,7 @@ Not documented
;;;***
;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode)
-;;;;;; "flymake" "progmodes/flymake.el" (19299 25155))
+;;;;;; "flymake" "progmodes/flymake.el" (19598 13691))
;;; Generated autoloads from progmodes/flymake.el
(autoload 'flymake-mode "flymake" "\
@@ -10464,7 +10524,7 @@ Turn flymake mode off.
;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-;;;;;; "flyspell" "textmodes/flyspell.el" (19370 36541))
+;;;;;; "flyspell" "textmodes/flyspell.el" (19598 13691))
;;; Generated autoloads from textmodes/flyspell.el
(autoload 'flyspell-prog-mode "flyspell" "\
@@ -10534,7 +10594,7 @@ Flyspell whole buffer.
;;;### (autoloads (follow-delete-other-windows-and-split follow-mode
;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from follow.el
(autoload 'turn-on-follow-mode "follow" "\
@@ -10607,8 +10667,15 @@ in your `~/.emacs' file, replacing [f7] by your favourite key:
;;;***
-;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (19279
-;;;;;; 5150))
+;;;### (autoloads nil "font-core" "font-core.el" (19640 47194))
+;;; Generated autoloads from font-core.el
+
+(put 'font-lock-defaults 'risky-local-variable t)
+
+;;;***
+
+;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from mail/footnote.el
(autoload 'footnote-mode "footnote" "\
@@ -10621,8 +10688,15 @@ started, play around with the following keys:
;;;***
+;;;### (autoloads nil "format" "format.el" (19598 13691))
+;;; Generated autoloads from format.el
+
+(put 'format-alist 'risky-local-variable t)
+
+;;;***
+
;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode)
-;;;;;; "forms" "forms.el" (19279 5148))
+;;;;;; "forms" "forms.el" (19562 42953))
;;; Generated autoloads from forms.el
(autoload 'forms-mode "forms" "\
@@ -10659,7 +10733,7 @@ Visit a file in Forms mode in other window.
;;;***
;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el"
-;;;;;; (19279 5151))
+;;;;;; (19619 52030))
;;; Generated autoloads from progmodes/fortran.el
(autoload 'fortran-mode "fortran" "\
@@ -10737,7 +10811,7 @@ with no args, if that value is non-nil.
;;;***
;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region
-;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (19279 5151))
+;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (19562 42953))
;;; Generated autoloads from play/fortune.el
(autoload 'fortune-add-fortune "fortune" "\
@@ -10787,7 +10861,7 @@ and choose the directory as the fortune-file.
;;;***
;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el"
-;;;;;; (19375 49830))
+;;;;;; (19619 52030))
;;; Generated autoloads from progmodes/gdb-mi.el
(defvar gdb-enable-debug nil "\
@@ -10848,8 +10922,8 @@ detailed description of this mode.
;;;***
;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal
-;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (19279
-;;;;;; 5149))
+;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from emacs-lisp/generic.el
(defvar generic-mode-list nil "\
@@ -10893,6 +10967,8 @@ See the file generic-x.el for some examples of `define-generic-mode'.
\(fn MODE COMMENT-LIST KEYWORD-LIST FONT-LOCK-LIST AUTO-MODE-LIST FUNCTION-LIST &optional DOCSTRING)" nil (quote macro))
+(put 'define-generic-mode 'lisp-indent-function '1)
+
(autoload 'generic-mode-internal "generic" "\
Go into the generic mode MODE.
@@ -10924,7 +11000,7 @@ regular expression that can be used as an element of
;;;***
;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/glasses.el
(autoload 'glasses-mode "glasses" "\
@@ -10938,7 +11014,7 @@ at places they belong to.
;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
;;;;;; gmm-message gmm-regexp-concat) "gmm-utils" "gnus/gmm-utils.el"
-;;;;;; (19365 25156))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gmm-utils.el
(autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -10993,7 +11069,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
;;;***
;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server
-;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (19279 5150))
+;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (19640 47194))
;;; Generated autoloads from gnus/gnus.el
(when (fboundp 'custom-autoload)
(custom-autoload 'gnus-select-method "gnus"))
@@ -11046,7 +11122,7 @@ prompt the user for the name of an NNTP server to use.
;;;;;; 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" (19368 35187))
+;;;;;; "gnus/gnus-agent.el" (19640 47194))
;;; Generated autoloads from gnus/gnus-agent.el
(autoload 'gnus-unplugged "gnus-agent" "\
@@ -11137,7 +11213,7 @@ If CLEAN, obsolete (ignore).
;;;***
;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
-;;;;;; (19368 35187))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gnus-art.el
(autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -11147,19 +11223,8 @@ Make the current buffer look like a nice article.
;;;***
-;;;### (autoloads (gnus-audio-play) "gnus-audio" "gnus/gnus-audio.el"
-;;;;;; (19279 5150))
-;;; Generated autoloads from gnus/gnus-audio.el
-
-(autoload 'gnus-audio-play "gnus-audio" "\
-Play a sound FILE through the speaker.
-
-\(fn FILE)" t nil)
-
-;;;***
-
;;;### (autoloads (gnus-bookmark-bmenu-list gnus-bookmark-jump gnus-bookmark-set)
-;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (19279 5150))
+;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (19640 47194))
;;; Generated autoloads from gnus/gnus-bookmark.el
(autoload 'gnus-bookmark-set "gnus-bookmark" "\
@@ -11184,8 +11249,8 @@ deletion, or > if it is flagged for displaying.
;;;### (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" (19279
-;;;;;; 5150))
+;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from gnus/gnus-cache.el
(autoload 'gnus-jog-cache "gnus-cache" "\
@@ -11227,7 +11292,7 @@ supported.
;;;***
;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article)
-;;;;;; "gnus-delay" "gnus/gnus-delay.el" (19279 5150))
+;;;;;; "gnus-delay" "gnus/gnus-delay.el" (19598 13691))
;;; Generated autoloads from gnus/gnus-delay.el
(autoload 'gnus-delay-article "gnus-delay" "\
@@ -11263,7 +11328,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
;;;***
;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d)
-;;;;;; "gnus-diary" "gnus/gnus-diary.el" (19279 38446))
+;;;;;; "gnus-diary" "gnus/gnus-diary.el" (19640 47194))
;;; Generated autoloads from gnus/gnus-diary.el
(autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -11279,7 +11344,7 @@ Not documented
;;;***
;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gnus-dired.el
(autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -11290,7 +11355,7 @@ Convenience method to turn on gnus-dired-mode.
;;;***
;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from gnus/gnus-draft.el
(autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -11302,8 +11367,8 @@ Reminder user if there are unsent drafts.
;;;### (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" (19279
-;;;;;; 5150))
+;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from gnus/gnus-fun.el
(autoload 'gnus-random-x-face "gnus-fun" "\
@@ -11347,8 +11412,26 @@ FILE should be a PNG file that's 48x48 and smaller than or equal to
;;;***
+;;;### (autoloads (gnus-treat-mail-gravatar gnus-treat-from-gravatar)
+;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (19640 47194))
+;;; Generated autoloads from gnus/gnus-gravatar.el
+
+(autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
+Display gravatar in the From header.
+If gravatar is already displayed, remove it.
+
+\(fn &optional FORCE)" t nil)
+
+(autoload 'gnus-treat-mail-gravatar "gnus-gravatar" "\
+Display gravatars in the Cc and To headers.
+If gravatars are already displayed, remove them.
+
+\(fn &optional FORCE)" t nil)
+
+;;;***
+
;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group)
-;;;;;; "gnus-group" "gnus/gnus-group.el" (19279 5150))
+;;;;;; "gnus-group" "gnus/gnus-group.el" (19640 47194))
;;; Generated autoloads from gnus/gnus-group.el
(autoload 'gnus-fetch-group "gnus-group" "\
@@ -11365,8 +11448,24 @@ Pop up a frame and enter GROUP.
;;;***
+;;;### (autoloads (gnus-html-prefetch-images gnus-article-html) "gnus-html"
+;;;;;; "gnus/gnus-html.el" (19640 47194))
+;;; Generated autoloads from gnus/gnus-html.el
+
+(autoload 'gnus-article-html "gnus-html" "\
+Not documented
+
+\(fn &optional HANDLE)" nil nil)
+
+(autoload 'gnus-html-prefetch-images "gnus-html" "\
+Not documented
+
+\(fn SUMMARY)" nil nil)
+
+;;;***
+
;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gnus-kill.el
(defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -11381,7 +11480,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score
;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate
;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from gnus/gnus-ml.el
(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -11406,7 +11505,7 @@ Minor mode for providing mailing-list commands.
;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update
;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from gnus/gnus-mlspl.el
(autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -11506,20 +11605,8 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
;;;***
-;;;### (autoloads (gnus-change-server) "gnus-move" "gnus/gnus-move.el"
-;;;;;; (19279 5150))
-;;; Generated autoloads from gnus/gnus-move.el
-
-(autoload 'gnus-change-server "gnus-move" "\
-Move from FROM-SERVER to TO-SERVER.
-Update the .newsrc.eld file to reflect the change of nntp server.
-
-\(fn FROM-SERVER TO-SERVER)" t nil)
-
-;;;***
-
;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
-;;;;;; "gnus-msg" "gnus/gnus-msg.el" (19279 5150))
+;;;;;; "gnus-msg" "gnus/gnus-msg.el" (19640 47194))
;;; Generated autoloads from gnus/gnus-msg.el
(autoload 'gnus-msg-mail "gnus-msg" "\
@@ -11543,25 +11630,9 @@ Like `message-reply'.
;;;***
-;;;### (autoloads (gnus-nocem-load-cache gnus-nocem-scan-groups)
-;;;;;; "gnus-nocem" "gnus/gnus-nocem.el" (19279 5150))
-;;; Generated autoloads from gnus/gnus-nocem.el
-
-(autoload 'gnus-nocem-scan-groups "gnus-nocem" "\
-Scan all NoCeM groups for new NoCeM messages.
-
-\(fn)" t nil)
-
-(autoload 'gnus-nocem-load-cache "gnus-nocem" "\
-Load the NoCeM cache.
-
-\(fn)" t nil)
-
-;;;***
-
;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon
;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gnus-picon.el
(autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -11588,7 +11659,7 @@ If picons are already displayed, remove them.
;;;;;; 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" (19279 5150))
+;;;;;; "gnus/gnus-range.el" (19619 52030))
;;; Generated autoloads from gnus/gnus-range.el
(autoload 'gnus-sorted-difference "gnus-range" "\
@@ -11656,7 +11727,7 @@ Add NUM into sorted LIST by side effect.
;;;***
;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
-;;;;;; "gnus-registry" "gnus/gnus-registry.el" (19368 35187))
+;;;;;; "gnus-registry" "gnus/gnus-registry.el" (19640 47194))
;;; Generated autoloads from gnus/gnus-registry.el
(autoload 'gnus-registry-initialize "gnus-registry" "\
@@ -11672,8 +11743,8 @@ Install the registry hooks.
;;;***
;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate
-;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (19279
-;;;;;; 5150))
+;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from gnus/gnus-sieve.el
(autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -11700,28 +11771,8 @@ Not documented
;;;***
-;;;### (autoloads (gnus-batch-brew-soup) "gnus-soup" "gnus/gnus-soup.el"
-;;;;;; (19279 5150))
-;;; Generated autoloads from gnus/gnus-soup.el
-
-(autoload 'gnus-batch-brew-soup "gnus-soup" "\
-Brew a SOUP packet from groups mention on the command line.
-Will use the remaining command line arguments as regular expressions
-for matching on group names.
-
-For instance, if you want to brew on all the nnml groups, as well as
-groups with \"emacs\" in the name, you could say something like:
-
-$ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\"
-
-Note -- this function hasn't been implemented yet.
-
-\(fn)" t nil)
-
-;;;***
-
;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gnus-spec.el
(autoload 'gnus-update-format "gnus-spec" "\
@@ -11731,9 +11782,8 @@ Update the format specification near point.
;;;***
-;;;### (autoloads (gnus-fixup-nnimap-unread-after-getting-new-news
-;;;;;; gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (gnus-declare-backend) "gnus-start" "gnus/gnus-start.el"
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gnus-start.el
(autoload 'gnus-declare-backend "gnus-start" "\
@@ -11741,15 +11791,38 @@ Declare back end NAME with ABILITIES as a Gnus back end.
\(fn NAME &rest ABILITIES)" nil nil)
-(autoload 'gnus-fixup-nnimap-unread-after-getting-new-news "gnus-start" "\
-Not documented
+;;;***
+
+;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el"
+;;;;;; (19640 47194))
+;;; Generated autoloads from gnus/gnus-sum.el
-\(fn)" nil nil)
+(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
+Handler function for record returned by `gnus-summary-bookmark-make-record'.
+BOOKMARK is a bookmark name or a bookmark record.
+
+\(fn BOOKMARK)" nil nil)
+
+;;;***
+
+;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize)
+;;;;;; "gnus-sync" "gnus/gnus-sync.el" (19640 47194))
+;;; Generated autoloads from gnus/gnus-sync.el
+
+(autoload 'gnus-sync-initialize "gnus-sync" "\
+Initialize the Gnus sync facility.
+
+\(fn)" t nil)
+
+(autoload 'gnus-sync-install-hooks "gnus-sync" "\
+Install the sync hooks.
+
+\(fn)" t nil)
;;;***
;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/gnus-win.el
(autoload 'gnus-add-configuration "gnus-win" "\
@@ -11759,7 +11832,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
;;;***
-;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (19279 5151))
+;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (19562 42953))
;;; Generated autoloads from play/gomoku.el
(autoload 'gomoku "gomoku" "\
@@ -11786,8 +11859,8 @@ Use \\[describe-mode] for more info.
;;;***
;;;### (autoloads (goto-address-prog-mode goto-address-mode goto-address
-;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (19356
-;;;;;; 10801))
+;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from net/goto-addr.el
(define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1")
@@ -11825,9 +11898,21 @@ Turn on `goto-address-mode', but only in comments and strings.
;;;***
+;;;### (autoloads (gravatar-retrieve) "gravatar" "gnus/gravatar.el"
+;;;;;; (19640 47194))
+;;; Generated autoloads from gnus/gravatar.el
+
+(autoload 'gravatar-retrieve "gravatar" "\
+Retrieve MAIL-ADDRESS gravatar and call CB on retrieval.
+You can provide a list of argument to pass to CB in CBARGS.
+
+\(fn MAIL-ADDRESS CB &optional CBARGS)" nil nil)
+
+;;;***
+
;;;### (autoloads (zrgrep rgrep lgrep grep-find grep grep-mode grep-compute-defaults
;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command
-;;;;;; grep-window-height) "grep" "progmodes/grep.el" (19304 5068))
+;;;;;; grep-window-height) "grep" "progmodes/grep.el" (19562 42953))
;;; Generated autoloads from progmodes/grep.el
(defvar grep-window-height nil "\
@@ -11983,7 +12068,7 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'.
;;;***
-;;;### (autoloads (gs-load-image) "gs" "gs.el" (19279 5148))
+;;;### (autoloads (gs-load-image) "gs" "gs.el" (19562 42953))
;;; Generated autoloads from gs.el
(autoload 'gs-load-image "gs" "\
@@ -11997,7 +12082,7 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
;;;***
;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb
-;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (19374 384))
+;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (19619 52030))
;;; Generated autoloads from progmodes/gud.el
(autoload 'gud-gdb "gud" "\
@@ -12062,8 +12147,6 @@ gud, see `gud-mode'.
\(fn COMMAND-LINE)" t nil)
(add-hook 'same-window-regexps (purecopy "\\*gud-.*\\*\\(\\|<[0-9]+>\\)"))
-(add-to-list 'auto-mode-alist (cons (purecopy "/\\.[a-z0-9-]*gdbinit") 'gdb-script-mode))
-
(autoload 'gdb-script-mode "gud" "\
Major mode for editing GDB scripts.
@@ -12085,8 +12168,8 @@ Toggle the display of GUD tooltips.
;;;***
-;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from play/handwrite.el
(autoload 'handwrite "handwrite" "\
@@ -12104,7 +12187,7 @@ Variables: handwrite-linespace (default 12)
;;;***
;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el"
-;;;;;; (19256 49601))
+;;;;;; (19562 42953))
;;; Generated autoloads from play/hanoi.el
(autoload 'hanoi "hanoi" "\
@@ -12133,7 +12216,7 @@ to be updated.
;;;### (autoloads (mail-check-payment mail-add-payment-async mail-add-payment
;;;;;; hashcash-verify-payment hashcash-insert-payment-async hashcash-insert-payment)
-;;;;;; "hashcash" "mail/hashcash.el" (19365 25156))
+;;;;;; "hashcash" "mail/hashcash.el" (19640 47194))
;;; Generated autoloads from mail/hashcash.el
(autoload 'hashcash-insert-payment "hashcash" "\
@@ -12178,7 +12261,7 @@ Prefix arg sets default accept amount temporarily.
;;;### (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" (19279 5148))
+;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (19562 42953))
;;; Generated autoloads from help-at-pt.el
(autoload 'help-at-pt-string "help-at-pt" "\
@@ -12308,7 +12391,7 @@ different regions. With numeric argument ARG, behaves like
;;;### (autoloads (describe-categories describe-syntax describe-variable
;;;;;; variable-at-point describe-function-1 find-lisp-object-file-name
;;;;;; help-C-file-name describe-function) "help-fns" "help-fns.el"
-;;;;;; (19279 5148))
+;;;;;; (19619 52030))
;;; Generated autoloads from help-fns.el
(autoload 'describe-function "help-fns" "\
@@ -12326,8 +12409,8 @@ KIND should be `var' for a variable or `subr' for a subroutine.
Guess the file that defined the Lisp object OBJECT, of type TYPE.
OBJECT should be a symbol associated with a function, variable, or face;
alternatively, it can be a function definition.
-If TYPE is `variable', search for a variable definition.
-If TYPE is `face', search for a face definition.
+If TYPE is `defvar', search for a variable definition.
+If TYPE is `defface', search for a face definition.
If TYPE is the value returned by `symbol-function' for a function symbol,
search for a function definition.
@@ -12378,7 +12461,7 @@ BUFFER should be a buffer or a buffer name.
;;;***
;;;### (autoloads (three-step-help) "help-macro" "help-macro.el"
-;;;;;; (19279 5148))
+;;;;;; (19598 13691))
;;; Generated autoloads from help-macro.el
(defvar three-step-help nil "\
@@ -12394,8 +12477,8 @@ gives the window that lists the options.")
;;;### (autoloads (help-xref-on-pp help-insert-xref-button help-xref-button
;;;;;; help-make-xrefs help-buffer help-setup-xref help-mode-finish
-;;;;;; help-mode-setup help-mode) "help-mode" "help-mode.el" (19279
-;;;;;; 5148))
+;;;;;; help-mode-setup help-mode) "help-mode" "help-mode.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from help-mode.el
(autoload 'help-mode "help-mode" "\
@@ -12487,7 +12570,7 @@ Add xrefs for symbols in `pp's output between FROM and TO.
;;;***
;;;### (autoloads (Helper-help Helper-describe-bindings) "helper"
-;;;;;; "emacs-lisp/helper.el" (19279 5149))
+;;;;;; "emacs-lisp/helper.el" (19598 13691))
;;; Generated autoloads from emacs-lisp/helper.el
(autoload 'Helper-describe-bindings "helper" "\
@@ -12503,7 +12586,7 @@ Provide help for current mode.
;;;***
;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl"
-;;;;;; "hexl.el" (19279 38446))
+;;;;;; "hexl.el" (19640 47194))
;;; Generated autoloads from hexl.el
(autoload 'hexl-mode "hexl" "\
@@ -12600,7 +12683,7 @@ This discards the buffer's undo information.
;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
-;;;;;; (19279 5148))
+;;;;;; (19640 47194))
;;; Generated autoloads from hi-lock.el
(autoload 'hi-lock-mode "hi-lock" "\
@@ -12734,7 +12817,7 @@ be found in variable `hi-lock-interactive-patterns'.
;;;***
;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/hideif.el
(autoload 'hide-ifdef-mode "hideif" "\
@@ -12774,7 +12857,7 @@ how the hiding is done:
;;;***
;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/hideshow.el
(defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\
@@ -12836,8 +12919,8 @@ Unconditionally turn off `hs-minor-mode'.
;;;;;; highlight-compare-buffers highlight-changes-rotate-faces
;;;;;; highlight-changes-previous-change highlight-changes-next-change
;;;;;; highlight-changes-remove-highlight highlight-changes-visible-mode
-;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (19279
-;;;;;; 5148))
+;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from hilit-chg.el
(autoload 'highlight-changes-mode "hilit-chg" "\
@@ -12966,7 +13049,7 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode.
;;;;;; 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" (19279 5148))
+;;;;;; "hippie-exp.el" (19562 42953))
;;; Generated autoloads from hippie-exp.el
(defvar hippie-expand-try-functions-list '(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) "\
@@ -13039,7 +13122,7 @@ argument VERBOSE non-nil makes the function verbose.
;;;***
;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el"
-;;;;;; (19356 10801))
+;;;;;; (19562 42953))
;;; Generated autoloads from hl-line.el
(autoload 'hl-line-mode "hl-line" "\
@@ -13083,7 +13166,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays
;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays
;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays"
-;;;;;; "calendar/holidays.el" (19279 5149))
+;;;;;; "calendar/holidays.el" (19598 13691))
;;; Generated autoloads from calendar/holidays.el
(defvar holiday-general-holidays (mapcar 'purecopy '((holiday-fixed 1 1 "New Year's Day") (holiday-float 1 1 3 "Martin Luther King Day") (holiday-fixed 2 2 "Groundhog Day") (holiday-fixed 2 14 "Valentine's Day") (holiday-float 2 1 3 "President's Day") (holiday-fixed 3 17 "St. Patrick's Day") (holiday-fixed 4 1 "April Fools' Day") (holiday-float 5 0 2 "Mother's Day") (holiday-float 5 1 -1 "Memorial Day") (holiday-fixed 6 14 "Flag Day") (holiday-float 6 0 3 "Father's Day") (holiday-fixed 7 4 "Independence Day") (holiday-float 9 1 1 "Labor Day") (holiday-float 10 1 2 "Columbus Day") (holiday-fixed 10 31 "Halloween") (holiday-fixed 11 11 "Veteran's Day") (holiday-float 11 4 4 "Thanksgiving"))) "\
@@ -13231,8 +13314,8 @@ The optional LABEL is used to label the buffer created.
;;;***
-;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from gnus/html2text.el
(autoload 'html2text "html2text" "\
@@ -13242,9 +13325,42 @@ Convert HTML to plain text in the current buffer.
;;;***
+;;;### (autoloads (htmlfontify-copy-and-link-dir htmlfontify-buffer)
+;;;;;; "htmlfontify" "htmlfontify.el" (19640 47194))
+;;; Generated autoloads from htmlfontify.el
+
+(autoload 'htmlfontify-buffer "htmlfontify" "\
+Create a new buffer, named for the current buffer + a .html extension,
+containing an inline CSS-stylesheet and formatted CSS-markup HTML
+that reproduces the look of the current Emacs buffer as closely
+as possible.
+
+Dangerous characters in the existing buffer are turned into HTML
+entities, so you should even be able to do HTML-within-HTML
+fontified display.
+
+You should, however, note that random control or eight-bit
+characters such as ^L ( ) or ¤ (\244) won't get mapped yet.
+
+If the SRCDIR and FILE arguments are set, lookup etags derived
+entries in the `hfy-tags-cache' and add HTML anchors and
+hyperlinks as appropriate.
+
+\(fn &optional SRCDIR FILE)" t nil)
+
+(autoload 'htmlfontify-copy-and-link-dir "htmlfontify" "\
+Trawl SRCDIR and write fontified-and-hyperlinked output in DSTDIR.
+F-EXT and L-EXT specify values for `hfy-extn' and `hfy-link-extn'.
+
+You may also want to set `hfy-page-header' and `hfy-page-footer'.
+
+\(fn SRCDIR DSTDIR &optional F-EXT L-EXT)" t nil)
+
+;;;***
+
;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter
-;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (19279
-;;;;;; 5148))
+;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from ibuf-macs.el
(autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -13272,6 +13388,8 @@ change its definition, you should explicitly call
\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil (quote macro))
+(put 'define-ibuffer-column 'lisp-indent-function 'defun)
+
(autoload 'define-ibuffer-sorter "ibuf-macs" "\
Define a method of sorting named NAME.
DOCUMENTATION is the documentation of the function, which will be called
@@ -13284,6 +13402,8 @@ value if and only if `a' is \"less than\" `b'.
\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil (quote macro))
+(put 'define-ibuffer-sorter 'lisp-indent-function '1)
+
(autoload 'define-ibuffer-op "ibuf-macs" "\
Generate a function which operates on a buffer.
OP becomes the name of the function; if it doesn't begin with
@@ -13317,6 +13437,8 @@ macro for exactly what it does.
\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil (quote macro))
+(put 'define-ibuffer-op 'lisp-indent-function '2)
+
(autoload 'define-ibuffer-filter "ibuf-macs" "\
Define a filter named NAME.
DOCUMENTATION is the documentation of the function.
@@ -13330,10 +13452,12 @@ bound to the current value of the filter.
\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil (quote macro))
+(put 'define-ibuffer-filter 'lisp-indent-function '2)
+
;;;***
;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers)
-;;;;;; "ibuffer" "ibuffer.el" (19279 5148))
+;;;;;; "ibuffer" "ibuffer.el" (19640 47194))
;;; Generated autoloads from ibuffer.el
(autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -13374,7 +13498,7 @@ FORMATS is the value to use for `ibuffer-formats'.
;;;### (autoloads (icalendar-import-buffer icalendar-import-file
;;;;;; icalendar-export-region icalendar-export-file) "icalendar"
-;;;;;; "calendar/icalendar.el" (19338 9840))
+;;;;;; "calendar/icalendar.el" (19598 13691))
;;; Generated autoloads from calendar/icalendar.el
(autoload 'icalendar-export-file "icalendar" "\
@@ -13426,8 +13550,8 @@ buffer `*icalendar-errors*'.
;;;***
-;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from icomplete.el
(defvar icomplete-mode nil "\
@@ -13448,7 +13572,7 @@ otherwise turn it off.
;;;***
-;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (19279 5151))
+;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (19562 42953))
;;; Generated autoloads from progmodes/icon.el
(autoload 'icon-mode "icon" "\
@@ -13489,7 +13613,7 @@ with no args, if that value is non-nil.
;;;***
;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/idlw-shell.el
(autoload 'idlwave-shell "idlw-shell" "\
@@ -13515,7 +13639,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
;;;***
;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
-;;;;;; (19279 38446))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/idlwave.el
(autoload 'idlwave-mode "idlwave" "\
@@ -13649,8 +13773,8 @@ The main features of this mode are
;;;;;; 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" (19292
-;;;;;; 15231))
+;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from ido.el
(defvar ido-mode nil "\
@@ -13911,7 +14035,7 @@ DEF, if non-nil, is the default value.
;;;***
-;;;### (autoloads (ielm) "ielm" "ielm.el" (19279 5148))
+;;;### (autoloads (ielm) "ielm" "ielm.el" (19591 62571))
;;; Generated autoloads from ielm.el
(add-hook 'same-window-buffer-names (purecopy "*ielm*"))
@@ -13923,14 +14047,10 @@ Switches to the buffer `*ielm*', or creates it if it does not exist.
;;;***
-;;;### (autoloads (iimage-mode turn-on-iimage-mode) "iimage" "iimage.el"
-;;;;;; (19279 5148))
+;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (19640 47194))
;;; Generated autoloads from iimage.el
-(autoload 'turn-on-iimage-mode "iimage" "\
-Unconditionally turn on iimage mode.
-
-\(fn)" t nil)
+(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
(autoload 'iimage-mode "iimage" "\
Toggle inline image minor mode.
@@ -13939,11 +14059,12 @@ Toggle inline image minor mode.
;;;***
-;;;### (autoloads (create-animated-image defimage find-image remove-images
-;;;;;; insert-sliced-image insert-image put-image create-image image-type-auto-detected-p
-;;;;;; image-type-available-p image-type image-type-from-file-name
-;;;;;; image-type-from-file-header image-type-from-buffer image-type-from-data)
-;;;;;; "image" "image.el" (19356 10801))
+;;;### (autoloads (imagemagick-register-types create-animated-image
+;;;;;; defimage find-image remove-images insert-sliced-image insert-image
+;;;;;; put-image create-image image-type-auto-detected-p image-type-available-p
+;;;;;; image-type image-type-from-file-name image-type-from-file-header
+;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el"
+;;;;;; (19640 47194))
;;; Generated autoloads from image.el
(autoload 'image-type-from-data "image" "\
@@ -14117,6 +14238,8 @@ Example:
\(fn SYMBOL SPECS &optional DOC)" nil (quote macro))
+(put 'defimage 'doc-string-elt '3)
+
(autoload 'create-animated-image "image" "\
Create an animated image.
FILE-OR-DATA is an image file name or image data.
@@ -14133,6 +14256,11 @@ Images should not be larger than specified by `max-image-size'.
\(fn FILE-OR-DATA &optional TYPE DATA-P &rest PROPS)" nil nil)
+(autoload 'imagemagick-register-types "image" "\
+Register the file types that ImageMagick is able to handle.
+
+\(fn)" nil nil)
+
;;;***
;;;### (autoloads (image-dired-dired-edit-comment-and-tags image-dired-mark-tagged-files
@@ -14141,14 +14269,18 @@ Images should not be larger than specified by `max-image-size'.
;;;;;; image-dired-display-thumbs-append image-dired-setup-dired-keybindings
;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag
;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
-;;;;;; image-dired-dired-with-window-configuration image-dired-dired-insert-marked-thumbs)
-;;;;;; "image-dired" "image-dired.el" (19370 36540))
+;;;;;; image-dired-dired-with-window-configuration image-dired-dired-toggle-marked-thumbs)
+;;;;;; "image-dired" "image-dired.el" (19562 42953))
;;; Generated autoloads from image-dired.el
-(autoload 'image-dired-dired-insert-marked-thumbs "image-dired" "\
-Insert thumbnails before file names of marked files in the dired buffer.
+(autoload 'image-dired-dired-toggle-marked-thumbs "image-dired" "\
+Toggle thumbnails in front of file names in the dired buffer.
+If no marked file could be found, insert or hide thumbnails on the
+current line. ARG, if non-nil, specifies the files to use instead
+of the marked files. If ARG is an integer, use the next ARG (or
+previous -ARG, if ARG<0) files.
-\(fn)" t nil)
+\(fn &optional ARG)" t nil)
(autoload 'image-dired-dired-with-window-configuration "image-dired" "\
Open directory DIR and create a default window configuration.
@@ -14276,7 +14408,7 @@ easy-to-use form.
;;;### (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" (19279 5148))
+;;;;;; "image-file.el" (19562 42953))
;;; Generated autoloads from image-file.el
(defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\
@@ -14338,17 +14470,8 @@ Image files are those whose name has an extension in
;;;***
;;;### (autoloads (image-bookmark-jump image-mode-as-text image-minor-mode
-;;;;;; image-mode) "image-mode" "image-mode.el" (19356 10801))
+;;;;;; image-mode) "image-mode" "image-mode.el" (19619 52030))
;;; Generated autoloads from image-mode.el
- (push (cons (purecopy "\\.jpe?g\\'") 'image-mode) auto-mode-alist)
- (push (cons (purecopy "\\.png\\'") 'image-mode) auto-mode-alist)
- (push (cons (purecopy "\\.gif\\'") 'image-mode) auto-mode-alist)
- (push (cons (purecopy "\\.tiff?\\'") 'image-mode) auto-mode-alist)
- (push (cons (purecopy "\\.p[bpgn]m\\'") 'image-mode) auto-mode-alist)
- (push (cons (purecopy "\\.x[bp]m\\'") 'c-mode) auto-mode-alist)
- (push (cons (purecopy "\\.x[bp]m\\'") 'image-mode) auto-mode-alist)
- (push (cons (purecopy "\\.svgz?\\'") 'xml-mode) auto-mode-alist)
- (push (cons (purecopy "\\.svgz?\\'") 'image-mode) auto-mode-alist)
(autoload 'image-mode "image-mode" "\
Major mode for image files.
@@ -14373,7 +14496,7 @@ displays an image file as text. `image-minor-mode' provides the key
to display an image file as the actual image.
You can use `image-mode-as-text' in `auto-mode-alist' when you want
-to display an image file as text inititally.
+to display an image file as text initially.
See commands `image-mode' and `image-minor-mode' for more information
on these modes.
@@ -14388,7 +14511,7 @@ Not documented
;;;***
;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar
-;;;;;; imenu-sort-function) "imenu" "imenu.el" (19279 5148))
+;;;;;; imenu-sort-function) "imenu" "imenu.el" (19619 52030))
;;; Generated autoloads from imenu.el
(defvar imenu-sort-function nil "\
@@ -14505,7 +14628,7 @@ for more information.
;;;### (autoloads (indian-2-column-to-ucs-region in-is13194-pre-write-conversion
;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region)
-;;;;;; "ind-util" "language/ind-util.el" (19279 5150))
+;;;;;; "ind-util" "language/ind-util.el" (19562 42953))
;;; Generated autoloads from language/ind-util.el
(autoload 'indian-compose-region "ind-util" "\
@@ -14537,7 +14660,7 @@ Convert old Emacs Devanagari characters to UCS.
;;;### (autoloads (inferior-lisp inferior-lisp-prompt inferior-lisp-load-command
;;;;;; inferior-lisp-program inferior-lisp-filter-regexp) "inf-lisp"
-;;;;;; "progmodes/inf-lisp.el" (19279 5151))
+;;;;;; "progmodes/inf-lisp.el" (19640 47194))
;;; Generated autoloads from progmodes/inf-lisp.el
(defvar inferior-lisp-filter-regexp (purecopy "\\`\\s *\\(:\\(\\w\\|\\s_\\)\\)?\\s *\\'") "\
@@ -14605,7 +14728,7 @@ of `inferior-lisp-program'). Runs the hooks from
;;;;;; Info-goto-emacs-command-node Info-mode info-finder info-apropos
;;;;;; Info-index Info-directory Info-on-current-buffer info-standalone
;;;;;; info-emacs-manual info info-other-window) "info" "info.el"
-;;;;;; (19368 35187))
+;;;;;; (19619 52030))
;;; Generated autoloads from info.el
(autoload 'info-other-window "info" "\
@@ -14748,7 +14871,7 @@ Advanced commands:
\\[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)
+\(fn)" t nil)
(put 'Info-goto-emacs-command-node 'info-file (purecopy "emacs"))
(autoload 'Info-goto-emacs-command-node "info" "\
@@ -14787,7 +14910,7 @@ type returned by `Info-bookmark-make-record', which see.
;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file
;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el"
-;;;;;; (19279 5148))
+;;;;;; (19591 62571))
;;; Generated autoloads from info-look.el
(autoload 'info-lookup-reset "info-look" "\
@@ -14835,7 +14958,7 @@ Perform completion on file preceding point.
;;;***
;;;### (autoloads (info-xref-check-all-custom info-xref-check-all
-;;;;;; info-xref-check) "info-xref" "info-xref.el" (19279 5148))
+;;;;;; info-xref-check) "info-xref" "info-xref.el" (19562 42953))
;;; Generated autoloads from info-xref.el
(autoload 'info-xref-check "info-xref" "\
@@ -14862,7 +14985,7 @@ quite a while.
;;;***
;;;### (autoloads (batch-info-validate Info-validate Info-split Info-split-threshold
-;;;;;; Info-tagify) "informat" "informat.el" (19279 5148))
+;;;;;; Info-tagify) "informat" "informat.el" (19591 62571))
;;; Generated autoloads from informat.el
(autoload 'Info-tagify "informat" "\
@@ -14909,7 +15032,7 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"
;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method
;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from international/isearch-x.el
(autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -14929,8 +15052,8 @@ Not documented
;;;***
-;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from isearchb.el
(autoload 'isearchb-activate "isearchb" "\
@@ -14946,7 +15069,7 @@ accessed via isearchb.
;;;### (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" (19279 5150))
+;;;;;; "international/iso-cvt.el" (19562 42953))
;;; Generated autoloads from international/iso-cvt.el
(autoload 'iso-spanish "iso-cvt" "\
@@ -15037,7 +15160,7 @@ Add submenus to the File menu, to convert to and from various formats.
;;;***
;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;; (19279 5150))
+;;;;;; (19591 62571))
;;; 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)
@@ -15049,8 +15172,9 @@ Add submenus to the File menu, to convert to and from various formats.
;;;;;; ispell-complete-word ispell-continue ispell-buffer ispell-comments-and-strings
;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell
;;;;;; ispell-help ispell-pdict-save ispell-word ispell-personal-dictionary)
-;;;;;; "ispell" "textmodes/ispell.el" (19313 15415))
+;;;;;; "ispell" "textmodes/ispell.el" (19619 52030))
;;; Generated autoloads from textmodes/ispell.el
+
(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
(defvar ispell-personal-dictionary nil "\
@@ -15060,6 +15184,7 @@ If nil, the default personal dictionary, (\"~/.ispell_DICTNAME\" for ispell or
default dictionary and LANG the two letter language code.")
(custom-autoload 'ispell-personal-dictionary "ispell" t)
+
(put 'ispell-local-dictionary 'safe-local-variable 'string-or-null-p)
(defvar ispell-menu-map nil "\
@@ -15267,8 +15392,8 @@ You can bind this to the key C-c i in GNUS or mail by adding to
;;;***
-;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (19321
-;;;;;; 4517))
+;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from iswitchb.el
(defvar iswitchb-mode nil "\
@@ -15293,7 +15418,7 @@ This mode enables switching between buffers using substrings. See
;;;### (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" (19279 5150))
+;;;;;; "japan-util" "language/japan-util.el" (19562 42953))
;;; Generated autoloads from language/japan-util.el
(autoload 'setup-japanese-environment-internal "japan-util" "\
@@ -15371,7 +15496,7 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
;;;***
;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr"
-;;;;;; "jka-compr.el" (19292 15231))
+;;;;;; "jka-compr.el" (19562 42953))
;;; Generated autoloads from jka-compr.el
(defvar jka-compr-inhibit nil "\
@@ -15394,7 +15519,7 @@ by `jka-compr-installed'.
;;;***
-;;;### (autoloads (js-mode) "js" "progmodes/js.el" (19279 5151))
+;;;### (autoloads (js-mode) "js" "progmodes/js.el" (19619 52030))
;;; Generated autoloads from progmodes/js.el
(autoload 'js-mode "js" "\
@@ -15412,7 +15537,7 @@ Key bindings:
;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup
;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from emulation/keypad.el
(defvar keypad-setup nil "\
@@ -15468,7 +15593,7 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.'
;;;***
;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from international/kinsoku.el
(autoload 'kinsoku "kinsoku" "\
@@ -15489,8 +15614,8 @@ the context of text formatting.
;;;***
-;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from international/kkc.el
(defvar kkc-after-update-conversion-functions nil "\
@@ -15515,7 +15640,7 @@ and the return value is the length of the conversion.
;;;### (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-exec-ring-item)
-;;;;;; "kmacro" "kmacro.el" (19279 5148))
+;;;;;; "kmacro" "kmacro.el" (19591 62571))
;;; Generated autoloads from kmacro.el
(global-set-key "\C-x(" 'kmacro-start-macro)
(global-set-key "\C-x)" 'kmacro-end-macro)
@@ -15626,7 +15751,7 @@ If kbd macro currently being defined end it before activating it.
;;;***
;;;### (autoloads (setup-korean-environment-internal) "korea-util"
-;;;;;; "language/korea-util.el" (19279 5150))
+;;;;;; "language/korea-util.el" (19562 42953))
;;; Generated autoloads from language/korea-util.el
(defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -15641,7 +15766,7 @@ Not documented
;;;***
;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el"
-;;;;;; (19279 5151))
+;;;;;; (19640 47194))
;;; Generated autoloads from play/landmark.el
(defalias 'landmark-repeat 'lm-test-run)
@@ -15675,7 +15800,7 @@ Use \\[describe-mode] for more info.
;;;### (autoloads (lao-compose-region lao-composition-function lao-transcribe-roman-to-lao-string
;;;;;; lao-transcribe-single-roman-syllable-to-lao lao-compose-string)
-;;;;;; "lao-util" "language/lao-util.el" (19279 5150))
+;;;;;; "lao-util" "language/lao-util.el" (19562 42953))
;;; Generated autoloads from language/lao-util.el
(autoload 'lao-compose-string "lao-util" "\
@@ -15714,7 +15839,7 @@ Not documented
;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc
;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist)
-;;;;;; "latexenc" "international/latexenc.el" (19279 5150))
+;;;;;; "latexenc" "international/latexenc.el" (19562 42953))
;;; Generated autoloads from international/latexenc.el
(defvar latex-inputenc-coding-alist (purecopy '(("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) ("cp858" . cp858) ("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))) "\
@@ -15746,7 +15871,7 @@ coding system names is determined from `latex-inputenc-coding-alist'.
;;;***
;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display)
-;;;;;; "latin1-disp" "international/latin1-disp.el" (19279 5150))
+;;;;;; "latin1-disp" "international/latin1-disp.el" (19562 42953))
;;; Generated autoloads from international/latin1-disp.el
(defvar latin1-display nil "\
@@ -15788,15 +15913,9 @@ use either \\[customize] or the function `latin1-display'.")
;;;***
;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el"
-;;;;;; (19279 5151))
+;;;;;; (19619 52030))
;;; Generated autoloads from progmodes/ld-script.el
-(add-to-list 'auto-mode-alist (purecopy '("\\.ld[si]?\\>" . ld-script-mode)))
-
-(add-to-list 'auto-mode-alist (purecopy '("ld\\.?script\\>" . ld-script-mode)))
-
-(add-to-list 'auto-mode-alist (purecopy '("\\.x[bdsru]?[cn]?\\'" . ld-script-mode)))
-
(autoload 'ld-script-mode "ld-script" "\
A major mode to edit GNU ld script files
@@ -15805,7 +15924,7 @@ A major mode to edit GNU ld script files
;;;***
;;;### (autoloads (ledit-from-lisp-mode ledit-mode) "ledit" "ledit.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from ledit.el
(defconst ledit-save-files t "\
@@ -15840,7 +15959,7 @@ Not documented
;;;***
-;;;### (autoloads (life) "life" "play/life.el" (19279 5151))
+;;;### (autoloads (life) "life" "play/life.el" (19562 42953))
;;; Generated autoloads from play/life.el
(autoload 'life "life" "\
@@ -15854,7 +15973,7 @@ generations (this defaults to 1).
;;;***
;;;### (autoloads (global-linum-mode linum-mode linum-format) "linum"
-;;;;;; "linum.el" (19279 5148))
+;;;;;; "linum.el" (19598 13691))
;;; Generated autoloads from linum.el
(defvar linum-format 'dynamic "\
@@ -15892,8 +16011,8 @@ See `linum-mode' for more information on Linum mode.
;;;***
-;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from loadhist.el
(autoload 'unload-feature "loadhist" "\
@@ -15925,7 +16044,7 @@ something strange, such as redefining an Emacs function.
;;;***
;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches)
-;;;;;; "locate" "locate.el" (19279 5148))
+;;;;;; "locate" "locate.el" (19562 42953))
;;; Generated autoloads from locate.el
(defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -15976,8 +16095,8 @@ except that FILTER is not optional.
;;;***
-;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (19370 36540))
-;;; Generated autoloads from log-edit.el
+;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (19562 42953))
+;;; Generated autoloads from vc/log-edit.el
(autoload 'log-edit "log-edit" "\
Setup a buffer to enter a log message.
@@ -16003,9 +16122,9 @@ uses the current buffer.
;;;***
-;;;### (autoloads (log-view-mode) "log-view" "log-view.el" (19358
-;;;;;; 54001))
-;;; Generated autoloads from log-view.el
+;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (19640
+;;;;;; 47194))
+;;; Generated autoloads from vc/log-view.el
(autoload 'log-view-mode "log-view" "\
Major mode for browsing CVS log output.
@@ -16014,8 +16133,8 @@ Major mode for browsing CVS log output.
;;;***
-;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from longlines.el
(autoload 'longlines-mode "longlines" "\
@@ -16036,8 +16155,8 @@ are indicated with a symbol.
;;;***
;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer
-;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (19279
-;;;;;; 5148))
+;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from lpr.el
(defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)))
@@ -16131,7 +16250,7 @@ for further customization of the printer command.
;;;***
;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el"
-;;;;;; (19321 4517))
+;;;;;; (19640 47194))
;;; Generated autoloads from ls-lisp.el
(defvar ls-lisp-support-shell-wildcards t "\
@@ -16142,8 +16261,8 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).")
;;;***
-;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (19279
-;;;;;; 5149))
+;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from calendar/lunar.el
(autoload 'lunar-phases "lunar" "\
@@ -16157,8 +16276,8 @@ This function is suitable for execution in a .emacs file.
;;;***
-;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from progmodes/m4-mode.el
(autoload 'm4-mode "m4-mode" "\
@@ -16170,7 +16289,7 @@ A major mode to edit m4 macro files.
;;;***
;;;### (autoloads (macroexpand-all) "macroexp" "emacs-lisp/macroexp.el"
-;;;;;; (19279 5149))
+;;;;;; (19598 13691))
;;; Generated autoloads from emacs-lisp/macroexp.el
(autoload 'macroexpand-all "macroexp" "\
@@ -16184,7 +16303,7 @@ definitions to shadow the loaded ones for use in file byte-compilation.
;;;***
;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro
-;;;;;; name-last-kbd-macro) "macros" "macros.el" (19345 41626))
+;;;;;; name-last-kbd-macro) "macros" "macros.el" (19598 13691))
;;; Generated autoloads from macros.el
(autoload 'name-last-kbd-macro "macros" "\
@@ -16273,7 +16392,7 @@ and then select the region of un-tablified names and use
;;;***
;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr"
-;;;;;; "mail/mail-extr.el" (19279 5150))
+;;;;;; "mail/mail-extr.el" (19598 13691))
;;; Generated autoloads from mail/mail-extr.el
(autoload 'mail-extract-address-components "mail-extr" "\
@@ -16305,7 +16424,7 @@ Convert mail domain DOMAIN to the country it corresponds to.
;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history
;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from mail/mail-hist.el
(autoload 'mail-hist-define-keys "mail-hist" "\
@@ -16337,7 +16456,7 @@ This function normally would be called when the message is sent.
;;;### (autoloads (mail-fetch-field mail-unquote-printable-region
;;;;;; mail-unquote-printable mail-quote-printable-region mail-quote-printable
;;;;;; mail-file-babyl-p mail-use-rfc822) "mail-utils" "mail/mail-utils.el"
-;;;;;; (19313 15414))
+;;;;;; (19640 47194))
;;; Generated autoloads from mail/mail-utils.el
(defvar mail-use-rfc822 nil "\
@@ -16399,8 +16518,8 @@ matches may be returned from the message body.
;;;***
;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup
-;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (19279
-;;;;;; 5150))
+;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from mail/mailabbrev.el
(defvar mail-abbrevs-mode nil "\
@@ -16442,8 +16561,8 @@ double-quotes.
;;;***
;;;### (autoloads (mail-complete define-mail-alias expand-mail-aliases
-;;;;;; mail-complete-style) "mailalias" "mail/mailalias.el" (19279
-;;;;;; 5150))
+;;;;;; mail-complete-style) "mailalias" "mail/mailalias.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from mail/mailalias.el
(defvar mail-complete-style 'angles "\
@@ -16489,7 +16608,7 @@ current header, calls `mail-complete-function' and passes prefix arg if any.
;;;***
;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from mail/mailclient.el
(autoload 'mailclient-send-it "mailclient" "\
@@ -16503,7 +16622,7 @@ The mail client is taken to be the handler of mailto URLs.
;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode
;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode)
-;;;;;; "make-mode" "progmodes/make-mode.el" (19372 27330))
+;;;;;; "make-mode" "progmodes/make-mode.el" (19598 13691))
;;; Generated autoloads from progmodes/make-mode.el
(autoload 'makefile-mode "make-mode" "\
@@ -16620,8 +16739,8 @@ An adapted `makefile-mode' that knows about imake.
;;;***
-;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from makesum.el
(autoload 'make-command-summary "makesum" "\
@@ -16632,7 +16751,8 @@ Previous contents of that buffer are killed first.
;;;***
-;;;### (autoloads (man-follow man) "man" "man.el" (19345 41626))
+;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el"
+;;;;;; (19619 52030))
;;; Generated autoloads from man.el
(defalias 'manual-entry 'man)
@@ -16679,9 +16799,14 @@ Get a Un*x manual page of the item under point and put it in a buffer.
\(fn MAN-ARGS)" t nil)
+(autoload 'Man-bookmark-jump "man" "\
+Default bookmark handler for Man buffers.
+
+\(fn BOOKMARK)" nil nil)
+
;;;***
-;;;### (autoloads (master-mode) "master" "master.el" (19279 5148))
+;;;### (autoloads (master-mode) "master" "master.el" (19562 42953))
;;; Generated autoloads from master.el
(autoload 'master-mode "master" "\
@@ -16704,7 +16829,7 @@ yourself the value of `master-of' by calling `master-show-slave'.
;;;***
;;;### (autoloads (minibuffer-depth-indicate-mode) "mb-depth" "mb-depth.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from mb-depth.el
(defvar minibuffer-depth-indicate-mode nil "\
@@ -16729,13 +16854,20 @@ Returns non-nil if the new state is enabled.
;;;***
+;;;### (autoloads nil "menu-bar" "menu-bar.el" (19619 52030))
+;;; Generated autoloads from menu-bar.el
+
+(put 'menu-bar-mode 'standard-value '(t))
+
+;;;***
+
;;;### (autoloads (message-unbold-region message-bold-region message-news-other-frame
;;;;;; message-news-other-window message-mail-other-frame message-mail-other-window
;;;;;; 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"
-;;;;;; "gnus/message.el" (19370 36541))
+;;;;;; "gnus/message.el" (19640 47194))
;;; Generated autoloads from gnus/message.el
(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -16901,7 +17033,7 @@ which specify the range to operate on.
;;;***
;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/meta-mode.el
(autoload 'metafont-mode "meta-mode" "\
@@ -16928,7 +17060,7 @@ Turning on MetaPost mode calls the value of the variable
;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body
;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el"
-;;;;;; (19356 10801))
+;;;;;; (19562 42953))
;;; Generated autoloads from mail/metamail.el
(autoload 'metamail-interpret-header "metamail" "\
@@ -16973,7 +17105,7 @@ redisplayed as output is inserted.
;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose
;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp"
-;;;;;; "mh-e/mh-comp.el" (19279 5150))
+;;;;;; "mh-e/mh-comp.el" (19562 42953))
;;; Generated autoloads from mh-e/mh-comp.el
(autoload 'mh-smail "mh-comp" "\
@@ -17063,7 +17195,7 @@ delete the draft message.
;;;***
-;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (19279 5150))
+;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (19562 42953))
;;; Generated autoloads from mh-e/mh-e.el
(put 'mh-progs 'risky-local-variable t)
@@ -17080,7 +17212,7 @@ Display version information about MH-E and the MH mail handling system.
;;;***
;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder"
-;;;;;; "mh-e/mh-folder.el" (19279 5150))
+;;;;;; "mh-e/mh-folder.el" (19562 42953))
;;; Generated autoloads from mh-e/mh-folder.el
(autoload 'mh-rmail "mh-folder" "\
@@ -17162,7 +17294,7 @@ perform the operation on all messages in that region.
;;;***
;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight"
-;;;;;; "midnight.el" (19369 15960))
+;;;;;; "midnight.el" (19562 42953))
;;; Generated autoloads from midnight.el
(autoload 'clean-buffer-list "midnight" "\
@@ -17189,7 +17321,7 @@ to its second argument TM.
;;;***
;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef"
-;;;;;; "minibuf-eldef.el" (19279 5148))
+;;;;;; "minibuf-eldef.el" (19591 62571))
;;; Generated autoloads from minibuf-eldef.el
(defvar minibuffer-electric-default-mode nil "\
@@ -17216,7 +17348,7 @@ Returns non-nil if the new state is enabled.
;;;***
-;;;### (autoloads (butterfly) "misc" "misc.el" (19279 5148))
+;;;### (autoloads (butterfly) "misc" "misc.el" (19598 13691))
;;; Generated autoloads from misc.el
(autoload 'butterfly "misc" "\
@@ -17235,7 +17367,7 @@ variation of `C-x M-c M-butterfly' from url `http://xkcd.com/378/'.
;;;### (autoloads (multi-isearch-files-regexp multi-isearch-files
;;;;;; multi-isearch-buffers-regexp multi-isearch-buffers multi-isearch-setup)
-;;;;;; "misearch" "misearch.el" (19279 5148))
+;;;;;; "misearch" "misearch.el" (19562 42953))
;;; Generated autoloads from misearch.el
(add-hook 'isearch-mode-hook 'multi-isearch-setup)
@@ -17317,7 +17449,7 @@ whose file names match the specified wildcard.
;;;***
;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el"
-;;;;;; (19358 54001))
+;;;;;; (19619 52030))
;;; Generated autoloads from progmodes/mixal-mode.el
(autoload 'mixal-mode "mixal-mode" "\
@@ -17326,12 +17458,10 @@ Major mode for the mixal asm language.
\(fn)" t nil)
-(add-to-list 'auto-mode-alist '("\\.mixal\\'" . mixal-mode))
-
;;;***
;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents)
-;;;;;; "mm-extern" "gnus/mm-extern.el" (19279 5150))
+;;;;;; "mm-extern" "gnus/mm-extern.el" (19640 47194))
;;; Generated autoloads from gnus/mm-extern.el
(autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -17350,7 +17480,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
;;;***
;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el"
-;;;;;; (19279 5150))
+;;;;;; (19619 52030))
;;; Generated autoloads from gnus/mm-partial.el
(autoload 'mm-inline-partial "mm-partial" "\
@@ -17364,7 +17494,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
;;;***
;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents)
-;;;;;; "mm-url" "gnus/mm-url.el" (19279 5150))
+;;;;;; "mm-url" "gnus/mm-url.el" (19598 13691))
;;; Generated autoloads from gnus/mm-url.el
(autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -17381,7 +17511,7 @@ Insert file contents of URL using `mm-url-program'.
;;;***
;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu"
-;;;;;; "gnus/mm-uu.el" (19279 5150))
+;;;;;; "gnus/mm-uu.el" (19598 13691))
;;; Generated autoloads from gnus/mm-uu.el
(autoload 'mm-uu-dissect "mm-uu" "\
@@ -17401,7 +17531,7 @@ Assume text has been decoded if DECODED is non-nil.
;;;***
;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el"
-;;;;;; (19365 25156))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/mml1991.el
(autoload 'mml1991-encrypt "mml1991" "\
@@ -17418,7 +17548,7 @@ Not documented
;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt
;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt)
-;;;;;; "mml2015" "gnus/mml2015.el" (19365 25156))
+;;;;;; "mml2015" "gnus/mml2015.el" (19640 47194))
;;; Generated autoloads from gnus/mml2015.el
(autoload 'mml2015-decrypt "mml2015" "\
@@ -17459,7 +17589,7 @@ Not documented
;;;***
;;;### (autoloads (modula-2-mode) "modula2" "progmodes/modula2.el"
-;;;;;; (19256 49603))
+;;;;;; (19640 47194))
;;; Generated autoloads from progmodes/modula2.el
(autoload 'modula-2-mode "modula2" "\
@@ -17491,7 +17621,7 @@ followed by the first character of the construct.
;;;***
;;;### (autoloads (unmorse-region morse-region) "morse" "play/morse.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from play/morse.el
(autoload 'morse-region "morse" "\
@@ -17507,7 +17637,7 @@ Convert morse coded text in region to ordinary ASCII text.
;;;***
;;;### (autoloads (mouse-drag-drag mouse-drag-throw) "mouse-drag"
-;;;;;; "mouse-drag.el" (19279 5148))
+;;;;;; "mouse-drag.el" (19562 42953))
;;; Generated autoloads from mouse-drag.el
(autoload 'mouse-drag-throw "mouse-drag" "\
@@ -17554,8 +17684,8 @@ To test this function, evaluate:
;;;***
-;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (mouse-sel-mode) "mouse-sel" "mouse-sel.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from mouse-sel.el
(defvar mouse-sel-mode nil "\
@@ -17607,7 +17737,7 @@ primary selection and region.
;;;***
-;;;### (autoloads (mpc) "mpc" "mpc.el" (19372 27330))
+;;;### (autoloads (mpc) "mpc" "mpc.el" (19562 42953))
;;; Generated autoloads from mpc.el
(autoload 'mpc "mpc" "\
@@ -17617,7 +17747,7 @@ Main entry point for MPC.
;;;***
-;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (19279 5151))
+;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (19640 47194))
;;; Generated autoloads from play/mpuz.el
(autoload 'mpuz "mpuz" "\
@@ -17627,7 +17757,7 @@ Multiplication puzzle with GNU Emacs.
;;;***
-;;;### (autoloads (msb-mode) "msb" "msb.el" (19279 5148))
+;;;### (autoloads (msb-mode) "msb" "msb.el" (19562 42953))
;;; Generated autoloads from msb.el
(defvar msb-mode nil "\
@@ -17649,12 +17779,20 @@ different buffer menu using the function `msb'.
;;;***
+;;;### (autoloads nil "mule-cmds" "international/mule-cmds.el" (19598
+;;;;;; 13691))
+;;; Generated autoloads from international/mule-cmds.el
+
+(put 'input-method-alist 'risky-local-variable t)
+
+;;;***
+
;;;### (autoloads (font-show-log mule-diag list-input-methods list-fontsets
;;;;;; describe-fontset describe-font list-coding-categories list-coding-systems
;;;;;; 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"
-;;;;;; (19279 5150))
+;;;;;; (19619 52030))
;;; Generated autoloads from international/mule-diag.el
(autoload 'list-character-sets "mule-diag" "\
@@ -17791,7 +17929,7 @@ The default is 20. If LIMIT is negative, do not limit the listing.
;;;;;; 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" (19313 15414))
+;;;;;; "mule-util" "international/mule-util.el" (19562 42953))
;;; Generated autoloads from international/mule-util.el
(autoload 'string-to-sequence "mule-util" "\
@@ -17931,8 +18069,8 @@ per-character basis, this may not be accurate.
;;;### (autoloads (network-connection network-connection-to-service
;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host
;;;;;; nslookup nslookup-host ping traceroute route arp netstat
-;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (19279
-;;;;;; 5151))
+;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from net/net-utils.el
(autoload 'ifconfig "net-utils" "\
@@ -18026,12 +18164,25 @@ Open a network connection to HOST on PORT.
;;;***
+;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (19640
+;;;;;; 47194))
+;;; Generated autoloads from net/netrc.el
+
+(autoload 'netrc-credentials "netrc" "\
+Return a user name/password pair.
+Port specifications will be prioritised in the order they are
+listed in the PORTS list.
+
+\(fn MACHINE &rest PORTS)" nil nil)
+
+;;;***
+
;;;### (autoloads (comment-indent-new-line comment-auto-fill-only-comments
;;;;;; comment-dwim comment-or-uncomment-region comment-box comment-region
;;;;;; uncomment-region 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" (19279 5148))
+;;;;;; "newcomment.el" (19619 52030))
;;; Generated autoloads from newcomment.el
(defalias 'indent-for-comment 'comment-indent)
@@ -18231,7 +18382,7 @@ unless optional argument SOFT is non-nil.
;;;***
;;;### (autoloads (newsticker-start newsticker-running-p) "newst-backend"
-;;;;;; "net/newst-backend.el" (19279 5151))
+;;;;;; "net/newst-backend.el" (19598 13691))
;;; Generated autoloads from net/newst-backend.el
(autoload 'newsticker-running-p "newst-backend" "\
@@ -18253,7 +18404,7 @@ Run `newsticker-start-hook' if newsticker was not running already.
;;;***
;;;### (autoloads (newsticker-plainview) "newst-plainview" "net/newst-plainview.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from net/newst-plainview.el
(autoload 'newsticker-plainview "newst-plainview" "\
@@ -18264,7 +18415,7 @@ Start newsticker plainview.
;;;***
;;;### (autoloads (newsticker-show-news) "newst-reader" "net/newst-reader.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from net/newst-reader.el
(autoload 'newsticker-show-news "newst-reader" "\
@@ -18275,7 +18426,7 @@ Start reading news. You may want to bind this to a key.
;;;***
;;;### (autoloads (newsticker-start-ticker newsticker-ticker-running-p)
-;;;;;; "newst-ticker" "net/newst-ticker.el" (19279 5151))
+;;;;;; "newst-ticker" "net/newst-ticker.el" (19598 13691))
;;; Generated autoloads from net/newst-ticker.el
(autoload 'newsticker-ticker-running-p "newst-ticker" "\
@@ -18296,7 +18447,7 @@ running already.
;;;***
;;;### (autoloads (newsticker-treeview) "newst-treeview" "net/newst-treeview.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from net/newst-treeview.el
(autoload 'newsticker-treeview "newst-treeview" "\
@@ -18307,7 +18458,7 @@ Start newsticker treeview.
;;;***
;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el"
-;;;;;; (19279 38446))
+;;;;;; (19619 52030))
;;; Generated autoloads from gnus/nndiary.el
(autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -18317,8 +18468,8 @@ Generate NOV databases in all nndiary directories.
;;;***
-;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from gnus/nndoc.el
(autoload 'nndoc-add-type "nndoc" "\
@@ -18333,7 +18484,7 @@ symbol in the alist.
;;;***
;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from gnus/nnfolder.el
(autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -18344,20 +18495,8 @@ This command does not work if you use short group names.
;;;***
-;;;### (autoloads (nnkiboze-generate-groups) "nnkiboze" "gnus/nnkiboze.el"
-;;;;;; (19279 5150))
-;;; Generated autoloads from gnus/nnkiboze.el
-
-(autoload 'nnkiboze-generate-groups "nnkiboze" "\
-\"Usage: emacs -batch -l nnkiboze -f nnkiboze-generate-groups\".
-Finds out what articles are to be part of the nnkiboze groups.
-
-\(fn)" t nil)
-
-;;;***
-
;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el"
-;;;;;; (19279 38446))
+;;;;;; (19619 52030))
;;; Generated autoloads from gnus/nnml.el
(autoload 'nnml-generate-nov-databases "nnml" "\
@@ -18367,29 +18506,8 @@ Generate NOV databases in all nnml directories.
;;;***
-;;;### (autoloads (nnsoup-revert-variables nnsoup-set-variables nnsoup-pack-replies)
-;;;;;; "nnsoup" "gnus/nnsoup.el" (19279 5150))
-;;; Generated autoloads from gnus/nnsoup.el
-
-(autoload 'nnsoup-pack-replies "nnsoup" "\
-Make an outbound package of SOUP replies.
-
-\(fn)" t nil)
-
-(autoload 'nnsoup-set-variables "nnsoup" "\
-Use the SOUP methods for posting news and mailing mail.
-
-\(fn)" t nil)
-
-(autoload 'nnsoup-revert-variables "nnsoup" "\
-Revert posting and mailing methods to the standard Emacs methods.
-
-\(fn)" t nil)
-
-;;;***
-
;;;### (autoloads (disable-command enable-command disabled-command-function)
-;;;;;; "novice" "novice.el" (19279 5148))
+;;;;;; "novice" "novice.el" (19562 42953))
;;; Generated autoloads from novice.el
(defvar disabled-command-function 'disabled-command-function "\
@@ -18422,7 +18540,7 @@ to future sessions.
;;;***
;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el"
-;;;;;; (19279 5152))
+;;;;;; (19619 52030))
;;; Generated autoloads from textmodes/nroff-mode.el
(autoload 'nroff-mode "nroff-mode" "\
@@ -18437,7 +18555,7 @@ closing requests for requests that are used in matched pairs.
;;;***
;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from nxml/nxml-glyph.el
(autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -18449,8 +18567,8 @@ Return nil if the face cannot display a glyph for N.
;;;***
-;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (19356
-;;;;;; 10801))
+;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from nxml/nxml-mode.el
(autoload 'nxml-mode "nxml-mode" "\
@@ -18512,7 +18630,7 @@ Many aspects this mode can be customized using
;;;***
;;;### (autoloads (nxml-enable-unicode-char-name-sets) "nxml-uchnm"
-;;;;;; "nxml/nxml-uchnm.el" (19279 5151))
+;;;;;; "nxml/nxml-uchnm.el" (19562 42953))
;;; Generated autoloads from nxml/nxml-uchnm.el
(autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
@@ -18524,8 +18642,215 @@ the variable `nxml-enabled-unicode-blocks'.
;;;***
+;;;### (autoloads (org-babel-previous-src-block org-babel-next-src-block
+;;;;;; org-babel-goto-named-result org-babel-goto-named-src-block
+;;;;;; org-babel-hide-result-toggle-maybe org-babel-sha1-hash org-babel-execute-subtree
+;;;;;; org-babel-execute-buffer org-babel-open-src-block-result
+;;;;;; org-babel-switch-to-session org-babel-load-in-session org-babel-expand-src-block
+;;;;;; org-babel-execute-src-block org-babel-pop-to-session-maybe
+;;;;;; org-babel-load-in-session-maybe org-babel-expand-src-block-maybe
+;;;;;; org-babel-execute-src-block-maybe) "ob" "org/ob.el" (19598
+;;;;;; 13691))
+;;; Generated autoloads from org/ob.el
+
+(autoload 'org-babel-execute-src-block-maybe "ob" "\
+Conditionally execute a source block.
+Detect if this is context for a Babel src-block and if so
+then run `org-babel-execute-src-block'.
+
+\(fn)" t nil)
+
+(autoload 'org-babel-expand-src-block-maybe "ob" "\
+Conditionally expand a source block.
+Detect if this is context for a org-babel src-block and if so
+then run `org-babel-expand-src-block'.
+
+\(fn)" t nil)
+
+(autoload 'org-babel-load-in-session-maybe "ob" "\
+Conditionally load a source block in a session.
+Detect if this is context for a org-babel src-block and if so
+then run `org-babel-load-in-session'.
+
+\(fn)" t nil)
+
+(autoload 'org-babel-pop-to-session-maybe "ob" "\
+Conditionally pop to a session.
+Detect if this is context for a org-babel src-block and if so
+then run `org-babel-pop-to-session'.
+
+\(fn)" t nil)
+
+(autoload 'org-babel-execute-src-block "ob" "\
+Execute the current source code block.
+Insert the results of execution into the buffer. Source code
+execution and the collection and formatting of results can be
+controlled through a variety of header arguments.
+
+Optionally supply a value for INFO in the form returned by
+`org-babel-get-src-block-info'.
+
+Optionally supply a value for PARAMS which will be merged with
+the header arguments specified at the front of the source code
+block.
+
+\(fn &optional ARG INFO PARAMS)" t nil)
+
+(autoload 'org-babel-expand-src-block "ob" "\
+Expand the current source code block.
+Expand according to the source code block's header
+arguments and pop open the results in a preview buffer.
+
+\(fn &optional ARG INFO PARAMS)" t nil)
+
+(autoload 'org-babel-load-in-session "ob" "\
+Load the body of the current source-code block.
+Evaluate the header arguments for the source block before
+entering the session. After loading the body this pops open the
+session.
+
+\(fn &optional ARG INFO)" t nil)
+
+(autoload 'org-babel-switch-to-session "ob" "\
+Switch to the session of the current source-code block.
+If called with a prefix argument then evaluate the header arguments
+for the source block before entering the session. Copy the body
+of the source block to the kill ring.
+
+\(fn &optional ARG INFO)" t nil)
+
+(autoload 'org-babel-open-src-block-result "ob" "\
+If `point' is on a src block then open the results of the
+source code block, otherwise return nil. With optional prefix
+argument RE-RUN the source-code block is evaluated even if
+results already exist.
+
+\(fn &optional RE-RUN)" t nil)
+
+(autoload 'org-babel-execute-buffer "ob" "\
+Execute source code blocks in a buffer.
+Call `org-babel-execute-src-block' on every source block in
+the current buffer.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'org-babel-execute-subtree "ob" "\
+Execute source code blocks in a subtree.
+Call `org-babel-execute-src-block' on every source block in
+the current subtree.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'org-babel-sha1-hash "ob" "\
+Generate an sha1 hash based on the value of info.
+
+\(fn &optional INFO)" t nil)
+
+(autoload 'org-babel-hide-result-toggle-maybe "ob" "\
+Toggle visibility of result at point.
+
+\(fn)" t nil)
+
+(autoload 'org-babel-goto-named-src-block "ob" "\
+Go to a named source-code block.
+
+\(fn NAME)" t nil)
+
+(autoload 'org-babel-goto-named-result "ob" "\
+Go to a named result.
+
+\(fn NAME)" t nil)
+
+(autoload 'org-babel-next-src-block "ob" "\
+Jump to the next source block.
+With optional prefix argument ARG, jump forward ARG many source blocks.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'org-babel-previous-src-block "ob" "\
+Jump to the previous source block.
+With optional prefix argument ARG, jump backward ARG many source blocks.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads (org-babel-describe-bindings) "ob-keys" "org/ob-keys.el"
+;;;;;; (19562 42953))
+;;; Generated autoloads from org/ob-keys.el
+
+(autoload 'org-babel-describe-bindings "ob-keys" "\
+Describe all keybindings behind `org-babel-key-prefix'.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads (org-babel-lob-get-info org-babel-lob-execute-maybe
+;;;;;; org-babel-lob-ingest) "ob-lob" "org/ob-lob.el" (19562 42953))
+;;; Generated autoloads from org/ob-lob.el
+
+(autoload 'org-babel-lob-ingest "ob-lob" "\
+Add all source-blocks defined in FILE to `org-babel-library-of-babel'.
+
+\(fn &optional FILE)" t nil)
+
+(autoload 'org-babel-lob-execute-maybe "ob-lob" "\
+Execute a Library of Babel source block, if appropriate.
+Detect if this is context for a Library Of Babel source block and
+if so then run the appropriate source block from the Library.
+
+\(fn)" t nil)
+
+(autoload 'org-babel-lob-get-info "ob-lob" "\
+Return a Library of Babel function call as a string.
+
+This function is analogous to org-babel-get-src-block-name. For
+both functions, after they are called, (match-string 1) matches
+the function name, and (match-string 2) matches the function
+arguments inside the parentheses. I think perhaps these functions
+should be renamed to bring out this similarity, perhaps involving
+the word 'call'.
+
+\(fn)" nil nil)
+
+;;;***
+
+;;;### (autoloads (org-babel-tangle org-babel-tangle-file org-babel-load-file)
+;;;;;; "ob-tangle" "org/ob-tangle.el" (19562 42953))
+;;; Generated autoloads from org/ob-tangle.el
+
+(autoload 'org-babel-load-file "ob-tangle" "\
+Load Emacs Lisp source code blocks in the Org-mode FILE.
+This function exports the source code using
+`org-babel-tangle' and then loads the resulting file using
+`load-file'.
+
+\(fn FILE)" nil nil)
+
+(autoload 'org-babel-tangle-file "ob-tangle" "\
+Extract the bodies of source code blocks in FILE.
+Source code blocks are extracted with `org-babel-tangle'.
+Optional argument TARGET-FILE can be used to specify a default
+export file for all source blocks. Optional argument LANG can be
+used to limit the exported source code blocks by language.
+
+\(fn FILE &optional TARGET-FILE LANG)" t nil)
+
+(autoload 'org-babel-tangle "ob-tangle" "\
+Write code blocks to source-specific files.
+Extract the bodies of all source code blocks from the current
+file into their own source-specific files. Optional argument
+TARGET-FILE can be used to specify a default export file for all
+source blocks. Optional argument LANG can be used to limit the
+exported source code blocks by language.
+
+\(fn &optional TARGET-FILE LANG)" t nil)
+
+;;;***
+
;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/octave-inf.el
(autoload 'inferior-octave "octave-inf" "\
@@ -18548,7 +18873,7 @@ startup file, `~/.emacs-octave'.
;;;***
;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el"
-;;;;;; (19279 5151))
+;;;;;; (19640 47194))
;;; Generated autoloads from progmodes/octave-mod.el
(autoload 'octave-mode "octave-mod" "\
@@ -18639,13 +18964,19 @@ including a reproducible test case and send the message.
;;;***
;;;### (autoloads (org-customize org-reload org-require-autoloaded-modules
-;;;;;; org-submit-bug-report org-cycle-agenda-files org-iswitchb
+;;;;;; org-submit-bug-report org-cycle-agenda-files org-switchb
;;;;;; org-map-entries org-open-link-from-string org-open-at-point-global
;;;;;; org-insert-link-global org-store-link org-run-like-in-org-mode
;;;;;; turn-on-orgstruct++ turn-on-orgstruct orgstruct-mode org-global-cycle
-;;;;;; org-mode) "org" "org/org.el" (19356 10801))
+;;;;;; org-mode org-babel-do-load-languages) "org" "org/org.el"
+;;;;;; (19619 52030))
;;; Generated autoloads from org/org.el
+(autoload 'org-babel-do-load-languages "org" "\
+Load the languages defined in `org-babel-load-languages'.
+
+\(fn SYM VALUE)" nil nil)
+
(autoload 'org-mode "org" "\
Outline-based notes management and organizer, alias
\"Carsten's outline-mode for keeping track of everything.\"
@@ -18671,17 +19002,17 @@ The following commands are available:
(autoload 'org-global-cycle "org" "\
Cycle the global visibility. For details see `org-cycle'.
-With C-u prefix arg, switch to startup visibility.
+With \\[universal-argument] prefix arg, switch to startup visibility.
With a numeric prefix, show all headlines up to that level.
\(fn &optional ARG)" t nil)
(autoload 'orgstruct-mode "org" "\
-Toggle the minor more `orgstruct-mode'.
-This mode is for using Org-mode structure commands in other modes.
-The following key behave as if Org-mode was active, if the cursor
-is on a headline, or on a plain list item (both in the definition
-of Org-mode).
+Toggle the minor mode `orgstruct-mode'.
+This mode is for using Org-mode structure commands in other
+modes. The following keys behave as if Org-mode were active, if
+the cursor is on a headline, or on a plain list item (both as
+defined by Org-mode).
M-up Move entry/item up
M-down Move entry/item down
@@ -18807,14 +19138,19 @@ a *different* entry, you cannot use these techniques.
\(fn FUNC &optional MATCH SCOPE &rest SKIP)" nil nil)
-(autoload 'org-iswitchb "org" "\
-Use `org-icompleting-read' to prompt for an Org buffer to switch to.
+(autoload 'org-switchb "org" "\
+Switch between Org buffers.
With a prefix argument, restrict available to files.
With two prefix arguments, restrict available buffers to agenda files.
+Defaults to `iswitchb' for buffer name completion.
+Set `org-completion-use-ido' to make it use ido instead.
+
\(fn &optional ARG)" t nil)
-(defalias 'org-ido-switchb 'org-iswitchb)
+(defalias 'org-ido-switchb 'org-switchb)
+
+(defalias 'org-iswitchb 'org-switchb)
(autoload 'org-cycle-agenda-files "org" "\
Cycle through the files in `org-agenda-files'.
@@ -18856,7 +19192,7 @@ Call the customize function with org as argument.
;;;;;; org-diary org-agenda-list-stuck-projects org-tags-view org-todo-list
;;;;;; org-search-view org-agenda-list org-batch-store-agenda-views
;;;;;; org-store-agenda-views org-batch-agenda-csv org-batch-agenda
-;;;;;; org-agenda) "org-agenda" "org/org-agenda.el" (19279 5151))
+;;;;;; org-agenda) "org-agenda" "org/org-agenda.el" (19619 52030))
;;; Generated autoloads from org/org-agenda.el
(autoload 'org-agenda "org-agenda" "\
@@ -18900,7 +19236,7 @@ Run an agenda command in batch mode and send the result to STDOUT.
If CMD-KEY is a string of length 1, it is used as a key in
`org-agenda-custom-commands' and triggers this command. If it is a
longer string it is used as a tags/todo match string.
-Paramters are alternating variable names and values that will be bound
+Parameters are alternating variable names and values that will be bound
before running the agenda command.
\(fn CMD-KEY &rest PARAMETERS)" nil (quote macro))
@@ -18910,7 +19246,7 @@ Run an agenda command in batch mode and send the result to STDOUT.
If CMD-KEY is a string of length 1, it is used as a key in
`org-agenda-custom-commands' and triggers this command. If it is a
longer string it is used as a tags/todo match string.
-Paramters are alternating variable names and values that will be bound
+Parameters are alternating variable names and values that will be bound
before running the agenda command.
The output gives a line for each selected agenda item. Each
@@ -18972,9 +19308,7 @@ given in `org-agenda-start-on-weekday'.
\(fn &optional INCLUDE-ALL START-DAY NDAYS)" t nil)
(autoload 'org-search-view "org-agenda" "\
-Show all entries that contain words or regular expressions.
-If the first character of the search string is an asterisks,
-search only the headlines.
+Show all entries that contain a phrase or words or regular expressions.
With optional prefix argument TODO-ONLY, only consider entries that are
TODO entries. The argument STRING can be used to pass a default search
@@ -18982,28 +19316,37 @@ string into this function. If EDIT-AT is non-nil, it means that the
user should get a chance to edit this string, with cursor at position
EDIT-AT.
-The search string is broken into \"words\" by splitting at whitespace.
-Depending on the variable `org-agenda-search-view-search-words-only'
-and on whether the first character in the search string is \"+\" or \"-\",
-The string is then interpreted either as a substring with variable amounts
-of whitespace, or as a list or individual words that should be matched.
-
-The default is a substring match, where each space in the search string
-can expand to an arbitrary amount of whitespace, including newlines.
-
-If matching individual words, these words are then interpreted as a
-boolean expression with logical AND. Words prefixed with a minus must
-not occur in the entry. Words without a prefix or prefixed with a plus
-must occur in the entry. Matching is case-insensitive and the words
-are enclosed by word delimiters.
-
-Words enclosed by curly braces are interpreted as regular expressions
-that must or must not match in the entry.
-
-If the search string starts with an asterisk, search only in headlines.
-If (possibly after the leading star) the search string starts with an
-exclamation mark, this also means to look at TODO entries only, an effect
-that can also be achieved with a prefix argument.
+The search string can be viewed either as a phrase that should be found as
+is, or it can be broken into a number of snippets, each of which must match
+in a Boolean way to select an entry. The default depends on the variable
+`org-agenda-search-view-always-boolean'.
+Even if this is turned off (the default) you can always switch to
+Boolean search dynamically by preceding the first word with \"+\" or \"-\".
+
+The default is a direct search of the whole phrase, where each space in
+the search string can expand to an arbitrary amount of whitespace,
+including newlines.
+
+If using a Boolean search, the search string is split on whitespace and
+each snippet is searched separately, with logical AND to select an entry.
+Words prefixed with a minus must *not* occur in the entry. Words without
+a prefix or prefixed with a plus must occur in the entry. Matching is
+case-insensitive. Words are enclosed by word delimiters (i.e. they must
+match whole words, not parts of a word) if
+`org-agenda-search-view-force-full-words' is set (default is nil).
+
+Boolean search snippets enclosed by curly braces are interpreted as
+regular expressions that must or (when preceded with \"-\") must not
+match in the entry. Snippets enclosed into double quotes will be taken
+as a whole, to include whitespace.
+
+- If the search string starts with an asterisk, search only in headlines.
+- If (possibly after the leading star) the search string starts with an
+ exclamation mark, this also means to look at TODO entries only, an effect
+ that can also be achieved with a prefix argument.
+- If (possibly after star and exclamation mark) the search string starts
+ with a colon, this will mean that the (non-regexp) snippets of the
+ Boolean search must match as full words.
This command searches the agenda files, and in addition the files listed
in `org-agenda-text-search-extra-files'.
@@ -19011,7 +19354,7 @@ in `org-agenda-text-search-extra-files'.
\(fn &optional TODO-ONLY STRING EDIT-AT)" t nil)
(autoload 'org-todo-list "org-agenda" "\
-Show all TODO entries from all agenda file in a single list.
+Show all (not done) TODO entries from all agenda file in a single list.
The prefix arg can be used to select a specific TODO keyword and limit
the list to these. When using \\[universal-argument], you will be prompted
for a keyword. A numeric prefix directly selects the Nth keyword in
@@ -19039,27 +19382,8 @@ Return diary information from org-files.
This function can be used in a \"sexp\" diary entry in the Emacs calendar.
It accesses org files and extracts information from those files to be
listed in the diary. The function accepts arguments specifying what
-items should be listed. The following arguments are allowed:
-
- :timestamp List the headlines of items containing a date stamp or
- date range matching the selected date. Deadlines will
- also be listed, on the expiration day.
-
- :sexp List entries resulting from diary-like sexps.
-
- :deadline List any deadlines past due, or due within
- `org-deadline-warning-days'. The listing occurs only
- in the diary for *today*, not at any other date. If
- an entry is marked DONE, it is no longer listed.
-
- :scheduled List all items which are scheduled for the given date.
- The diary for *today* also contains items which were
- scheduled earlier and are not yet marked DONE.
-
- :todo List all TODO items from the org-file. This may be a
- long list - so this is not turned on by default.
- Like deadlines, these entries only show up in the
- diary for *today*, not at any other date.
+items should be listed. For a list of arguments allowed here, see the
+variable `org-agenda-entry-types'.
The call in the diary file should look like this:
@@ -19083,7 +19407,7 @@ function from a program - use `org-agenda-get-day-entries' instead.
\(fn &rest ARGS)" nil nil)
(autoload 'org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item "org-agenda" "\
-Do we have a reason to ignore this todo entry because it has a time stamp?
+Do we have a reason to ignore this TODO entry because it has a time stamp?
\(fn &optional END)" nil nil)
@@ -19119,7 +19443,7 @@ belonging to the \"Work\" category.
;;;### (autoloads (org-archive-subtree-default-with-confirmation
;;;;;; org-archive-subtree-default) "org-archive" "org/org-archive.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-archive.el
(autoload 'org-archive-subtree-default "org-archive" "\
@@ -19137,10 +19461,32 @@ This command is set with the variable `org-archive-default-command'.
;;;***
;;;### (autoloads (org-export-as-ascii org-export-region-as-ascii
-;;;;;; org-replace-region-by-ascii org-export-as-ascii-to-buffer)
-;;;;;; "org-ascii" "org/org-ascii.el" (19279 5151))
+;;;;;; org-replace-region-by-ascii org-export-as-ascii-to-buffer
+;;;;;; org-export-as-utf8-to-buffer org-export-as-utf8 org-export-as-latin1-to-buffer
+;;;;;; org-export-as-latin1) "org-ascii" "org/org-ascii.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from org/org-ascii.el
+(autoload 'org-export-as-latin1 "org-ascii" "\
+Like `org-export-as-ascii', use latin1 encoding for special symbols.
+
+\(fn &rest ARGS)" t nil)
+
+(autoload 'org-export-as-latin1-to-buffer "org-ascii" "\
+Like `org-export-as-ascii-to-buffer', use latin1 encoding for symbols.
+
+\(fn &rest ARGS)" t nil)
+
+(autoload 'org-export-as-utf8 "org-ascii" "\
+Like `org-export-as-ascii', use use encoding for special symbols.
+
+\(fn &rest ARGS)" t nil)
+
+(autoload 'org-export-as-utf8-to-buffer "org-ascii" "\
+Like `org-export-as-ascii-to-buffer', use utf8 encoding for symbols.
+
+\(fn &rest ARGS)" t nil)
+
(autoload 'org-export-as-ascii-to-buffer "org-ascii" "\
Call `org-export-as-ascii` with output to a temporary buffer.
No file is created. The prefix ARG is passed through to `org-export-as-ascii'.
@@ -19191,8 +19537,8 @@ publishing directory.
;;;***
-;;;### (autoloads (org-attach) "org-attach" "org/org-attach.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (org-attach) "org-attach" "org/org-attach.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from org/org-attach.el
(autoload 'org-attach "org-attach" "\
@@ -19204,7 +19550,7 @@ Shows a list of commands and prompts for another key to execute a command.
;;;***
;;;### (autoloads (org-bbdb-anniversaries) "org-bbdb" "org/org-bbdb.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-bbdb.el
(autoload 'org-bbdb-anniversaries "org-bbdb" "\
@@ -19214,8 +19560,46 @@ Extract anniversaries from BBDB for display in the agenda.
;;;***
+;;;### (autoloads (org-capture-import-remember-templates org-capture-insert-template-here
+;;;;;; org-capture) "org-capture" "org/org-capture.el" (19562 42953))
+;;; Generated autoloads from org/org-capture.el
+
+(autoload 'org-capture "org-capture" "\
+Capture something.
+\\<org-capture-mode-map>
+This will let you select a template from `org-capture-templates', and then
+file the newly captured information. The text is immediately inserted
+at the target location, and an indirect buffer is shown where you can
+edit it. Pressing \\[org-capture-finalize] brings you back to the previous state
+of Emacs, so that you can continue your work.
+
+When called interactively with a \\[universal-argument] prefix argument GOTO, don't capture
+anything, just go to the file/headline where the selected template
+stores its notes. With a double prefix argument \\[universal-argument] \\[universal-argument], go to the last note
+stored.
+
+When called with a `C-0' (zero) prefix, insert a template at point.
+
+Lisp programs can set KEYS to a string associated with a template in
+`org-capture-templates'. In this case, interactive selection will be
+bypassed.
+
+\(fn &optional GOTO KEYS)" t nil)
+
+(autoload 'org-capture-insert-template-here "org-capture" "\
+Not documented
+
+\(fn)" nil nil)
+
+(autoload 'org-capture-import-remember-templates "org-capture" "\
+Set org-capture-templates to be similar to `org-remember-templates'.
+
+\(fn)" t nil)
+
+;;;***
+
;;;### (autoloads (org-clock-persistence-insinuate org-get-clocktable)
-;;;;;; "org-clock" "org/org-clock.el" (19279 5151))
+;;;;;; "org-clock" "org/org-clock.el" (19562 42953))
;;; Generated autoloads from org/org-clock.el
(autoload 'org-get-clocktable "org-clock" "\
@@ -19226,16 +19610,30 @@ fontified, and then returned.
\(fn &rest PROPS)" nil nil)
(autoload 'org-clock-persistence-insinuate "org-clock" "\
-Set up hooks for clock persistence
+Set up hooks for clock persistence.
\(fn)" nil nil)
;;;***
+;;;### (autoloads (org-datetree-find-date-create) "org-datetree"
+;;;;;; "org/org-datetree.el" (19562 42953))
+;;; Generated autoloads from org/org-datetree.el
+
+(autoload 'org-datetree-find-date-create "org-datetree" "\
+Find or create an entry for DATE.
+If KEEP-RESTRICTION is non-nil, do not widen the buffer.
+When it is nil, the buffer will be widened to make sure an existing date
+tree can be found.
+
+\(fn DATE &optional KEEP-RESTRICTION)" nil nil)
+
+;;;***
+
;;;### (autoloads (org-export-as-docbook org-export-as-docbook-pdf-and-open
;;;;;; org-export-as-docbook-pdf org-export-region-as-docbook org-replace-region-by-docbook
;;;;;; org-export-as-docbook-to-buffer org-export-as-docbook-batch)
-;;;;;; "org-docbook" "org/org-docbook.el" (19279 5151))
+;;;;;; "org-docbook" "org/org-docbook.el" (19562 42953))
;;; Generated autoloads from org/org-docbook.el
(autoload 'org-export-as-docbook-batch "org-docbook" "\
@@ -19312,7 +19710,7 @@ publishing directory.
;;;### (autoloads (org-insert-export-options-template org-export-as-org
;;;;;; org-export-visible org-export) "org-exp" "org/org-exp.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-exp.el
(autoload 'org-export "org-exp" "\
@@ -19322,7 +19720,7 @@ in the background. This will be done only for commands that write
to a file. For details see the docstring of `org-export-run-in-background'.
The prefix argument ARG will be passed to the exporter. However, if
-ARG is a double universal prefix `C-u C-u', that means to inverse the
+ARG is a double universal prefix \\[universal-argument] \\[universal-argument], that means to inverse the
value of `org-export-run-in-background'.
\(fn &optional ARG)" t nil)
@@ -19330,8 +19728,8 @@ value of `org-export-run-in-background'.
(autoload 'org-export-visible "org-exp" "\
Create a copy of the visible part of the current buffer, and export it.
The copy is created in a temporary buffer and removed after use.
-TYPE is the final key (as a string) that also select the export command in
-the `C-c C-e' export dispatcher.
+TYPE is the final key (as a string) that also selects the export command in
+the \\<org-mode-map>\\[org-export] export dispatcher.
As a special case, if the you type SPC at the prompt, the temporary
org-mode file will not be removed but presented to you so that you can
continue to use it. The prefix arg ARG is passed through to the exporting
@@ -19369,8 +19767,8 @@ Insert into the buffer a template with information for exporting.
;;;***
;;;### (autoloads (org-feed-show-raw-feed org-feed-goto-inbox org-feed-update
-;;;;;; org-feed-update-all) "org-feed" "org/org-feed.el" (19279
-;;;;;; 5151))
+;;;;;; org-feed-update-all) "org-feed" "org/org-feed.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from org/org-feed.el
(autoload 'org-feed-update-all "org-feed" "\
@@ -19398,7 +19796,7 @@ Show the raw feed buffer of a feed.
;;;***
;;;### (autoloads (org-footnote-normalize org-footnote-action) "org-footnote"
-;;;;;; "org/org-footnote.el" (19279 5151))
+;;;;;; "org/org-footnote.el" (19562 42953))
;;; Generated autoloads from org/org-footnote.el
(autoload 'org-footnote-action "org-footnote" "\
@@ -19425,7 +19823,7 @@ referenced sequence.
;;;### (autoloads (org-freemind-to-org-mode org-freemind-from-org-sparse-tree
;;;;;; org-freemind-from-org-mode org-freemind-from-org-mode-node
;;;;;; org-freemind-show org-export-as-freemind) "org-freemind"
-;;;;;; "org/org-freemind.el" (19323 49698))
+;;;;;; "org/org-freemind.el" (19562 42953))
;;; Generated autoloads from org/org-freemind.el
(autoload 'org-export-as-freemind "org-freemind" "\
@@ -19463,7 +19861,7 @@ Convert FreeMind file MM-FILE to `org-mode' file ORG-FILE.
;;;### (autoloads (org-export-htmlize-generate-css org-export-as-html
;;;;;; org-export-region-as-html org-replace-region-by-html org-export-as-html-to-buffer
;;;;;; org-export-as-html-batch org-export-as-html-and-open) "org-html"
-;;;;;; "org/org-html.el" (19279 5151))
+;;;;;; "org/org-html.el" (19562 42953))
;;; Generated autoloads from org/org-html.el
(put 'org-export-html-style-include-default 'safe-local-variable 'booleanp)
@@ -19481,7 +19879,8 @@ headlines. The default is 3. Lower levels will become bulleted lists.
\(fn ARG)" t nil)
(autoload 'org-export-as-html-batch "org-html" "\
-Call `org-export-as-html', may be used in batch processing as
+Call the function `org-export-as-html'.
+This function can be used in batch processing as:
emacs --batch
--load=$HOME/lib/emacs/org.el
--eval \"(setq org-export-headline-levels 2)\"
@@ -19556,7 +19955,7 @@ that uses these same face definitions.
;;;### (autoloads (org-export-icalendar-combine-agenda-files org-export-icalendar-all-agenda-files
;;;;;; org-export-icalendar-this-file) "org-icalendar" "org/org-icalendar.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-icalendar.el
(autoload 'org-export-icalendar-this-file "org-icalendar" "\
@@ -19567,7 +19966,7 @@ file, but with extension `.ics'.
\(fn)" t nil)
(autoload 'org-export-icalendar-all-agenda-files "org-icalendar" "\
-Export all files in `org-agenda-files' to iCalendar .ics files.
+Export all files in the variable `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'.
@@ -19583,7 +19982,7 @@ The file is stored under the name `org-combined-agenda-icalendar-file'.
;;;### (autoloads (org-id-find-id-file org-id-find org-id-goto org-id-get-with-outline-drilling
;;;;;; org-id-get-with-outline-path-completion org-id-get org-id-copy
-;;;;;; org-id-get-create) "org-id" "org/org-id.el" (19279 5151))
+;;;;;; org-id-get-create) "org-id" "org/org-id.el" (19562 42953))
;;; Generated autoloads from org/org-id.el
(autoload 'org-id-get-create "org-id" "\
@@ -19647,7 +20046,7 @@ Query the id database for the file in which this ID is located.
;;;***
;;;### (autoloads (org-indent-mode) "org-indent" "org/org-indent.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-indent.el
(autoload 'org-indent-mode "org-indent" "\
@@ -19662,7 +20061,7 @@ FIXME: How to update when broken?
;;;***
;;;### (autoloads (org-irc-store-link) "org-irc" "org/org-irc.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-irc.el
(autoload 'org-irc-store-link "org-irc" "\
@@ -19675,7 +20074,7 @@ Dispatch to the appropriate function to store a link to an IRC session.
;;;### (autoloads (org-export-as-pdf-and-open org-export-as-pdf org-export-as-latex
;;;;;; org-export-region-as-latex org-replace-region-by-latex org-export-as-latex-to-buffer
;;;;;; org-export-as-latex-batch) "org-latex" "org/org-latex.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-latex.el
(autoload 'org-export-as-latex-batch "org-latex" "\
@@ -19736,8 +20135,8 @@ non-nil, create a buffer with that name and export to that
buffer. If TO-BUFFER is the symbol `string', don't leave any
buffer behind but just return the resulting LaTeX as a string.
When BODY-ONLY is set, don't produce the file header and footer,
-simply return the content of egin{document}...nd{document},
-without even the egin{document} and nd{document} commands.
+simply return the content of \\begin{document}...\\end{document},
+without even the \\begin{document} and \\end{document} commands.
when PUB-DIR is set, use this as the publishing directory.
\(fn ARG &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil)
@@ -19755,8 +20154,8 @@ Export as LaTeX, then process through to PDF, and open.
;;;***
;;;### (autoloads (org-mobile-create-sumo-agenda org-mobile-pull
-;;;;;; org-mobile-push) "org-mobile" "org/org-mobile.el" (19279
-;;;;;; 5151))
+;;;;;; org-mobile-push) "org-mobile" "org/org-mobile.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from org/org-mobile.el
(autoload 'org-mobile-push "org-mobile" "\
@@ -19781,11 +20180,11 @@ Create a file that contains all custom agenda views.
;;;***
;;;### (autoloads (org-plot/gnuplot) "org-plot" "org/org-plot.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-plot.el
(autoload 'org-plot/gnuplot "org-plot" "\
-Plot table using gnuplot. Gnuplot options can be specified with PARAMS.
+Plot table using gnuplot. Gnuplot options can be specified with PARAMS.
If not given options will be taken from the +PLOT
line directly before or after the table.
@@ -19795,7 +20194,7 @@ line directly before or after the table.
;;;### (autoloads (org-publish-current-project org-publish-current-file
;;;;;; org-publish-all org-publish) "org-publish" "org/org-publish.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-publish.el
(defalias 'org-publish-project 'org-publish)
@@ -19829,7 +20228,7 @@ the project.
;;;### (autoloads (org-remember-handler org-remember org-remember-apply-template
;;;;;; org-remember-annotation org-remember-insinuate) "org-remember"
-;;;;;; "org/org-remember.el" (19279 5151))
+;;;;;; "org/org-remember.el" (19562 42953))
;;; Generated autoloads from org/org-remember.el
(autoload 'org-remember-insinuate "org-remember" "\
@@ -19857,9 +20256,9 @@ Call `remember'. If this is already a remember buffer, re-apply template.
If there is an active region, make sure remember uses it as initial content
of the remember buffer.
-When called interactively with a `C-u' prefix argument GOTO, don't remember
+When called interactively with a \\[universal-argument] prefix argument GOTO, don't remember
anything, just go to the file/headline where the selected template usually
-stores its notes. With a double prefix arg `C-u C-u', go to the last
+stores its notes. With a double prefix argument \\[universal-argument] \\[universal-argument], go to the last
note stored by remember.
Lisp programs can set ORG-FORCE-REMEMBER-TEMPLATE-CHAR to a character
@@ -19872,21 +20271,22 @@ Store stuff from remember.el into an org file.
When the template has specified a file and a headline, the entry is filed
there, or in the location defined by `org-default-notes-file' and
`org-remember-default-headline'.
-
+\\<org-remember-mode-map>
If no defaults have been defined, or if the current prefix argument
-is 1 (so you must use `C-1 C-c C-c' to exit remember), an interactive
+is 1 (using C-1 \\[org-remember-finalize] to exit remember), an interactive
process is used to select the target location.
-When the prefix is 0 (i.e. when remember is exited with `C-0 C-c C-c'),
+When the prefix is 0 (i.e. when remember is exited with C-0 \\[org-remember-finalize]),
the entry is filed to the same location as the previous note.
-When the prefix is 2 (i.e. when remember is exited with `C-2 C-c C-c'),
+When the prefix is 2 (i.e. when remember is exited with C-2 \\[org-remember-finalize]),
the entry is filed as a subentry of the entry where the clock is
currently running.
-When `C-u' has been used as prefix argument, the note is stored and emacs
-moves point to the new location of the note, so that editing can be
-continued there (similar to inserting \"%&\" into the template).
+When \\[universal-argument] has been used as prefix argument, the
+note is stored and Emacs moves point to the new location of the
+note, so that editing can be continued there (similar to
+inserting \"%&\" into the template).
Before storing the note, the function ensures that the text has an
org-mode-style headline, i.e. a first line that starts with
@@ -19904,7 +20304,7 @@ See also the variable `org-reverse-note-order'.
;;;***
;;;### (autoloads (org-table-to-lisp orgtbl-mode turn-on-orgtbl)
-;;;;;; "org-table" "org/org-table.el" (19279 5151))
+;;;;;; "org-table" "org/org-table.el" (19562 42953))
;;; Generated autoloads from org/org-table.el
(autoload 'turn-on-orgtbl "org-table" "\
@@ -19927,9 +20327,36 @@ The table is taken from the parameter TXT, or from the buffer at point.
;;;***
+;;;### (autoloads (org-export-as-taskjuggler-and-open org-export-as-taskjuggler)
+;;;;;; "org-taskjuggler" "org/org-taskjuggler.el" (19562 42953))
+;;; Generated autoloads from org/org-taskjuggler.el
+
+(autoload 'org-export-as-taskjuggler "org-taskjuggler" "\
+Export parts of the current buffer as a TaskJuggler file.
+The exporter looks for a tree with tag, property or todo that
+matches `org-export-taskjuggler-project-tag' and takes this as
+the tasks for this project. The first node of this tree defines
+the project properties such as project name and project period.
+If there is a tree with tag, property or todo that matches
+`org-export-taskjuggler-resource-tag' this three is taken as
+resources for the project. If no resources are specified, a
+default resource is created and allocated to the project. Also
+the taskjuggler project will be created with default reports as
+defined in `org-export-taskjuggler-default-reports'.
+
+\(fn)" t nil)
+
+(autoload 'org-export-as-taskjuggler-and-open "org-taskjuggler" "\
+Export the current buffer as a TaskJuggler file and open it
+with the TaskJuggler GUI.
+
+\(fn)" t nil)
+
+;;;***
+
;;;### (autoloads (org-timer-set-timer org-timer-item org-timer-change-times-in-region
;;;;;; org-timer org-timer-start) "org-timer" "org/org-timer.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-timer.el
(autoload 'org-timer-start "org-timer" "\
@@ -19948,8 +20375,8 @@ the region 0:00:00.
(autoload 'org-timer "org-timer" "\
Insert a H:MM:SS string from the timer into the buffer.
The first time this command is used, the timer is started. When used with
-a `C-u' prefix, force restarting the timer.
-When used with a double prefix arg `C-u C-u', change all the timer string
+a \\[universal-argument] prefix, force restarting the timer.
+When used with a double prefix argument \\[universal-argument] \\universal-argument], change all the timer string
in the region by a fixed amount. This can be used to recalibrate a timer
that was not started at the correct moment.
@@ -19966,14 +20393,28 @@ Insert a description-type item with the current timer value.
\(fn &optional ARG)" t nil)
(autoload 'org-timer-set-timer "org-timer" "\
-Set a timer.
+Prompt for a duration and set a timer.
+
+If `org-timer-default-timer' is not zero, suggest this value as
+the default duration for the timer. If a timer is already set,
+prompt the use if she wants to replace it.
+
+Called with a numeric prefix argument, use this numeric value as
+the duration of the timer.
+
+Called with a `C-u' prefix arguments, use `org-timer-default-timer'
+without prompting the user for a duration.
-\(fn MINUTES)" t nil)
+With two `C-u' prefix arguments, use `org-timer-default-timer'
+without prompting the user for a duration and automatically
+replace any running timer.
+
+\(fn &optional OPT)" t nil)
;;;***
;;;### (autoloads (org-export-as-xoxo) "org-xoxo" "org/org-xoxo.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from org/org-xoxo.el
(autoload 'org-export-as-xoxo "org-xoxo" "\
@@ -19985,7 +20426,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*
;;;***
;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el"
-;;;;;; (19365 25156))
+;;;;;; (19640 47194))
;;; Generated autoloads from outline.el
(put 'outline-regexp 'safe-local-variable 'string-or-null-p)
@@ -20042,7 +20483,71 @@ See the command `outline-mode' for more information on this mode.
;;;***
-;;;### (autoloads (show-paren-mode) "paren" "paren.el" (19279 5148))
+;;;### (autoloads (list-packages describe-package package-initialize
+;;;;;; package-install-file package-install-from-buffer package-install
+;;;;;; package-enable-at-startup) "package" "emacs-lisp/package.el"
+;;;;;; (19619 52030))
+;;; Generated autoloads from emacs-lisp/package.el
+
+(defvar package-enable-at-startup t "\
+Whether to activate installed packages when Emacs starts.
+If non-nil, packages are activated after reading the init file
+and before `after-init-hook'. Activation is not done if
+`user-init-file' is nil (e.g. Emacs was started with \"-q\").
+
+Even if the value is nil, you can type \\[package-initialize] to
+activate the package system at any time.")
+
+(custom-autoload 'package-enable-at-startup "package" t)
+
+(autoload 'package-install "package" "\
+Install the package named NAME.
+Interactively, prompt for the package name.
+The package is found on one of the archives in `package-archives'.
+
+\(fn NAME)" t nil)
+
+(autoload 'package-install-from-buffer "package" "\
+Install a package from the current buffer.
+When called interactively, the current buffer is assumed to be a
+single .el file that follows the packaging guidelines; see info
+node `(elisp)Packaging'.
+
+When called from Lisp, PKG-INFO is a vector describing the
+information, of the type returned by `package-buffer-info'; and
+TYPE is the package type (either `single' or `tar').
+
+\(fn PKG-INFO TYPE)" t nil)
+
+(autoload 'package-install-file "package" "\
+Install a package from a file.
+The file can either be a tar file or an Emacs Lisp file.
+
+\(fn FILE)" t nil)
+
+(autoload 'package-initialize "package" "\
+Load Emacs Lisp packages, and activate them.
+The variable `package-load-list' controls which packages to load.
+
+\(fn)" t nil)
+
+(autoload 'describe-package "package" "\
+Display the full documentation of PACKAGE (a symbol).
+
+\(fn PACKAGE)" t nil)
+
+(autoload 'list-packages "package" "\
+Display a list of packages.
+Fetches the updated list of packages before displaying.
+The list is displayed in a buffer named `*Packages*'.
+
+\(fn)" t nil)
+
+(defalias 'package-list-packages 'list-packages)
+
+;;;***
+
+;;;### (autoloads (show-paren-mode) "paren" "paren.el" (19562 42953))
;;; Generated autoloads from paren.el
(defvar show-paren-mode nil "\
@@ -20067,7 +20572,7 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time.
;;;***
;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el"
-;;;;;; (19279 5149))
+;;;;;; (19598 13691))
;;; Generated autoloads from calendar/parse-time.el
(put 'parse-time-rules 'risky-local-variable t)
@@ -20080,8 +20585,8 @@ unknown are returned as nil.
;;;***
-;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from progmodes/pascal.el
(autoload 'pascal-mode "pascal" "\
@@ -20105,26 +20610,26 @@ Other useful functions are:
Variables controlling indentation/edit style:
- pascal-indent-level (default 3)
+ `pascal-indent-level' (default 3)
Indentation of Pascal statements with respect to containing block.
- pascal-case-indent (default 2)
+ `pascal-case-indent' (default 2)
Indentation for case statements.
- pascal-auto-newline (default nil)
+ `pascal-auto-newline' (default nil)
Non-nil means automatically newline after semicolons and the punctuation
mark after an end.
- pascal-indent-nested-functions (default t)
+ `pascal-indent-nested-functions' (default t)
Non-nil means nested functions are indented.
- pascal-tab-always-indent (default t)
+ `pascal-tab-always-indent' (default t)
Non-nil means TAB in Pascal mode should always reindent the current line,
regardless of where in the line point is when the TAB command is used.
- pascal-auto-endcomments (default t)
+ `pascal-auto-endcomments' (default t)
Non-nil means a comment { ... } is set after the ends which ends cases and
functions. The name of the function or case will be set between the braces.
- pascal-auto-lineup (default t)
+ `pascal-auto-lineup' (default t)
List of contexts where auto lineup of :'s or ='s should be done.
-See also the user variables pascal-type-keywords, pascal-start-keywords and
-pascal-separator-keywords.
+See also the user variables `pascal-type-keywords', `pascal-start-keywords' and
+`pascal-separator-keywords'.
Turning on Pascal mode calls the value of the variable pascal-mode-hook with
no args, if that value is non-nil.
@@ -20134,7 +20639,7 @@ no args, if that value is non-nil.
;;;***
;;;### (autoloads (password-cache-expiry password-cache) "password-cache"
-;;;;;; "password-cache.el" (19365 25156))
+;;;;;; "password-cache.el" (19598 13691))
;;; Generated autoloads from password-cache.el
(defvar password-cache t "\
@@ -20151,7 +20656,7 @@ Whether passwords are cached at all is controlled by `password-cache'.")
;;;***
;;;### (autoloads (pc-bindings-mode) "pc-mode" "emulation/pc-mode.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from emulation/pc-mode.el
(autoload 'pc-bindings-mode "pc-mode" "\
@@ -20169,7 +20674,7 @@ C-Escape does list-buffers.
;;;***
;;;### (autoloads (pc-selection-mode) "pc-select" "emulation/pc-select.el"
-;;;;;; (19356 10801))
+;;;;;; (19619 52030))
;;; Generated autoloads from emulation/pc-select.el
(defvar pc-selection-mode nil "\
@@ -20182,7 +20687,7 @@ or call the function `pc-selection-mode'.")
(custom-autoload 'pc-selection-mode "pc-select" nil)
(autoload 'pc-selection-mode "pc-select" "\
-Change mark behavior to emulate Motif, MAC or MS-Windows cut and paste style.
+Change mark behavior to emulate Motif, Mac or MS-Windows cut and paste style.
This mode enables Delete Selection mode and Transient Mark mode.
@@ -20235,8 +20740,59 @@ but before calling PC Selection mode):
;;;***
-;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el"
+;;;;;; (19619 52030))
+;;; Generated autoloads from emacs-lisp/pcase.el
+
+(autoload 'pcase "pcase" "\
+Perform ML-style pattern matching on EXP.
+CASES is a list of elements of the form (UPATTERN CODE...).
+
+UPatterns can take the following forms:
+ _ matches anything.
+ SYMBOL matches anything and binds it to SYMBOL.
+ (or UPAT...) matches if any of the patterns matches.
+ (and UPAT...) matches if all the patterns match.
+ `QPAT matches if the QPattern QPAT matches.
+ (pred PRED) matches if PRED applied to the object returns non-nil.
+
+QPatterns can take the following forms:
+ (QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr.
+ ,UPAT matches if the UPattern UPAT matches.
+ ATOM matches if the object is `eq' to ATOM.
+QPatterns for vectors are not implemented yet.
+
+PRED can take the form
+ FUNCTION in which case it gets called with one argument.
+ (FUN ARG1 .. ARGN) in which case it gets called with N+1 arguments.
+A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION).
+PRED patterns can refer to variables bound earlier in the pattern.
+E.g. you can match pairs where the cdr is larger than the car with a pattern
+like `(,a . ,(pred (< a))) or, with more checks:
+`(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a))))
+
+\(fn EXP &rest CASES)" nil (quote macro))
+
+(put 'pcase 'lisp-indent-function '1)
+
+(autoload 'pcase-let* "pcase" "\
+Like `let*' but where you can use `pcase' patterns for bindings.
+BODY should be an expression, and BINDINGS should be a list of bindings
+of the form (UPAT EXP).
+
+\(fn BINDINGS BODY)" nil (quote macro))
+
+(autoload 'pcase-let "pcase" "\
+Like `let' but where you can use `pcase' patterns for bindings.
+BODY should be an expression, and BINDINGS should be a list of bindings
+of the form (UPAT EXP).
+
+\(fn BINDINGS BODY)" nil (quote macro))
+
+;;;***
+
+;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from pcmpl-cvs.el
(autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20247,7 +20803,7 @@ Completion rules for the `cvs' command.
;;;***
;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip)
-;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (19279 5148))
+;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (19598 13691))
;;; Generated autoloads from pcmpl-gnu.el
(autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20275,7 +20831,7 @@ Completion for the GNU tar utility.
;;;***
;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill)
-;;;;;; "pcmpl-linux" "pcmpl-linux.el" (19279 5148))
+;;;;;; "pcmpl-linux" "pcmpl-linux.el" (19598 13691))
;;; Generated autoloads from pcmpl-linux.el
(autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20295,8 +20851,8 @@ Completion for GNU/Linux `mount'.
;;;***
-;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from pcmpl-rpm.el
(autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20308,7 +20864,7 @@ Completion for the `rpm' command.
;;;### (autoloads (pcomplete/scp pcomplete/ssh pcomplete/chgrp pcomplete/chown
;;;;;; pcomplete/which pcomplete/xargs pcomplete/rm pcomplete/rmdir
-;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (19282 55646))
+;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (19598 13691))
;;; Generated autoloads from pcmpl-unix.el
(autoload 'pcomplete/cd "pcmpl-unix" "\
@@ -20365,8 +20921,8 @@ Includes files as well as host names followed by a colon.
;;;### (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" (19279
-;;;;;; 5148))
+;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from pcomplete.el
(autoload 'pcomplete "pcomplete" "\
@@ -20425,8 +20981,8 @@ Setup `shell-mode' to use pcomplete.
;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status
;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs"
-;;;;;; "pcvs.el" (19279 5148))
-;;; Generated autoloads from pcvs.el
+;;;;;; "vc/pcvs.el" (19591 62571))
+;;; Generated autoloads from vc/pcvs.el
(autoload 'cvs-checkout "pcvs" "\
Run a 'cvs checkout MODULES' in DIR.
@@ -20500,15 +21056,15 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
;;;***
-;;;### (autoloads nil "pcvs-defs" "pcvs-defs.el" (19279 5148))
-;;; Generated autoloads from pcvs-defs.el
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (19598 13691))
+;;; Generated autoloads from vc/pcvs-defs.el
(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)))
;;;***
;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/perl-mode.el
(put 'perl-indent-level 'safe-local-variable 'integerp)
(put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -20572,7 +21128,7 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'.
;;;### (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-symmetric pgg-encrypt-symmetric-region
-;;;;;; pgg-encrypt-region) "pgg" "pgg.el" (19279 5148))
+;;;;;; pgg-encrypt-region) "pgg" "pgg.el" (19640 47194))
;;; Generated autoloads from pgg.el
(autoload 'pgg-encrypt-region "pgg" "\
@@ -20706,7 +21262,7 @@ Import public keys in the current buffer.
;;;***
;;;### (autoloads (pgg-gpg-symmetric-key-p) "pgg-gpg" "pgg-gpg.el"
-;;;;;; (19279 5148))
+;;;;;; (19598 13691))
;;; Generated autoloads from pgg-gpg.el
(autoload 'pgg-gpg-symmetric-key-p "pgg-gpg" "\
@@ -20717,7 +21273,7 @@ True if decoded armor MESSAGE-KEYS has symmetric encryption indicator.
;;;***
;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el"
-;;;;;; (19356 10801))
+;;;;;; (19619 52030))
;;; Generated autoloads from textmodes/picture.el
(autoload 'picture-mode "picture" "\
@@ -20798,7 +21354,7 @@ they are not defaultly assigned to keys.
;;;***
;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from textmodes/po.el
(autoload 'po-find-file-coding-system "po" "\
@@ -20809,7 +21365,7 @@ Called through `file-coding-system-alist', before the file is visited for real.
;;;***
-;;;### (autoloads (pong) "pong" "play/pong.el" (19279 5151))
+;;;### (autoloads (pong) "pong" "play/pong.el" (19562 42953))
;;; Generated autoloads from play/pong.el
(autoload 'pong "pong" "\
@@ -20825,9 +21381,20 @@ pong-mode keybindings:\\<pong-mode-map>
;;;***
+;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (19640 47194))
+;;; Generated autoloads from gnus/pop3.el
+
+(autoload 'pop3-movemail "pop3" "\
+Transfer contents of a maildrop to the specified FILE.
+Use streaming commands.
+
+\(fn FILE)" nil nil)
+
+;;;***
+
;;;### (autoloads (pp-macroexpand-last-sexp pp-eval-last-sexp pp-macroexpand-expression
;;;;;; pp-eval-expression pp pp-buffer pp-to-string) "pp" "emacs-lisp/pp.el"
-;;;;;; (19279 5149))
+;;;;;; (19591 62571))
;;; Generated autoloads from emacs-lisp/pp.el
(autoload 'pp-to-string "pp" "\
@@ -20895,7 +21462,7 @@ Ignores leading comment characters.
;;;;;; 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"
-;;;;;; (19279 5148))
+;;;;;; (19640 47194))
;;; Generated autoloads from printing.el
(autoload 'pr-interface "printing" "\
@@ -21482,7 +22049,7 @@ are both set to t.
;;;***
-;;;### (autoloads (proced) "proced" "proced.el" (19279 5148))
+;;;### (autoloads (proced) "proced" "proced.el" (19598 13691))
;;; Generated autoloads from proced.el
(autoload 'proced "proced" "\
@@ -21498,7 +22065,7 @@ See `proced-mode' for a description of features available in Proced buffers.
;;;***
;;;### (autoloads (switch-to-prolog prolog-mode) "prolog" "progmodes/prolog.el"
-;;;;;; (19279 5151))
+;;;;;; (19619 52030))
;;; Generated autoloads from progmodes/prolog.el
(autoload 'prolog-mode "prolog" "\
@@ -21521,8 +22088,8 @@ With prefix argument \\[universal-prefix], prompt for the program to use.
;;;***
-;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from ps-bdf.el
(defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\
@@ -21533,8 +22100,8 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
;;;***
-;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from progmodes/ps-mode.el
(autoload 'ps-mode "ps-mode" "\
@@ -21585,8 +22152,8 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number
;;;;;; 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" (19356
-;;;;;; 10801))
+;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from ps-print.el
(defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) "LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger (* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) "Statement") (list 'executive (* 72 7.5) (* 72 10.0) "Executive") (list 'a4small (* 72 7.47) (* 72 10.85) "A4Small") (list 'b4 (* 72 10.125) (* 72 14.33) "B4") (list 'b5 (* 72 7.16) (* 72 10.125) "B5") '(addresslarge 236.0 99.0 "AddressLarge") '(addresssmall 236.0 68.0 "AddressSmall") '(cuthanging13 90.0 222.0 "CutHanging13") '(cuthanging15 90.0 114.0 "CutHanging15") '(diskette 181.0 136.0 "Diskette") '(eurofilefolder 139.0 112.0 "EuropeanFilefolder") '(eurofoldernarrow 526.0 107.0 "EuroFolderNarrow") '(eurofolderwide 526.0 136.0 "EuroFolderWide") '(euronamebadge 189.0 108.0 "EuroNameBadge") '(euronamebadgelarge 223.0 136.0 "EuroNameBadgeLarge") '(filefolder 230.0 37.0 "FileFolder") '(jewelry 76.0 136.0 "Jewelry") '(mediabadge 180.0 136.0 "MediaBadge") '(multipurpose 126.0 68.0 "MultiPurpose") '(retaillabel 90.0 104.0 "RetailLabel") '(shipping 271.0 136.0 "Shipping") '(slide35mm 26.0 104.0 "Slide35mm") '(spine8mm 187.0 26.0 "Spine8mm") '(topcoated 425.19685 136.0 "TopCoatedPaper") '(topcoatedpaper 396.0 136.0 "TopcoatedPaper150") '(vhsface 205.0 127.0 "VHSFace") '(vhsspine 400.0 50.0 "VHSSpine") '(zipdisk 156.0 136.0 "ZipDisk"))) "\
@@ -21783,7 +22350,7 @@ If EXTENSION is any other symbol, it is ignored.
;;;***
;;;### (autoloads (python-shell jython-mode python-mode run-python)
-;;;;;; "python" "progmodes/python.el" (19338 9841))
+;;;;;; "python" "progmodes/python.el" (19598 13691))
;;; Generated autoloads from progmodes/python.el
(add-to-list 'interpreter-mode-alist (cons (purecopy "jython") 'jython-mode))
@@ -21899,7 +22466,7 @@ filter.
;;;***
;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from gnus/qp.el
(autoload 'quoted-printable-decode-region "qp" "\
@@ -21922,7 +22489,7 @@ them into characters should be done separately.
;;;;;; 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" (19279 5150))
+;;;;;; "international/quail.el" (19591 62571))
;;; Generated autoloads from international/quail.el
(autoload 'quail-title "quail" "\
@@ -22153,8 +22720,8 @@ of each directory.
;;;### (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" (19279
-;;;;;; 5151))
+;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (19640
+;;;;;; 47194))
;;; 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" "\
@@ -22226,7 +22793,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'.
;;;***
;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
-;;;;;; "net/rcirc.el" (19279 5151))
+;;;;;; "net/rcirc.el" (19598 13691))
;;; Generated autoloads from net/rcirc.el
(autoload 'rcirc "rcirc" "\
@@ -22243,7 +22810,7 @@ If ARG is non-nil, instead prompt for connection parameters.
(autoload 'rcirc-connect "rcirc" "\
Not documented
-\(fn SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS)" nil nil)
+\(fn SERVER &optional PORT NICK USER-NAME FULL-NAME STARTUP-CHANNELS PASSWORD)" nil nil)
(defvar rcirc-track-minor-mode nil "\
Non-nil if Rcirc-Track minor mode is enabled.
@@ -22261,8 +22828,8 @@ Global minor mode for tracking activity in rcirc buffers.
;;;***
-;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from net/rcompile.el
(autoload 'remote-compile "rcompile" "\
@@ -22274,7 +22841,7 @@ See \\[compile].
;;;***
;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el"
-;;;;;; (19279 5149))
+;;;;;; (19591 62571))
;;; Generated autoloads from emacs-lisp/re-builder.el
(defalias 'regexp-builder 're-builder)
@@ -22286,7 +22853,7 @@ Construct a regexp interactively.
;;;***
-;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (19279 5148))
+;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (19562 42953))
;;; Generated autoloads from recentf.el
(defvar recentf-mode nil "\
@@ -22313,8 +22880,8 @@ that were operated on recently.
;;;### (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" (19279
-;;;;;; 5148))
+;;;;;; delete-rectangle move-to-column-force) "rect" "rect.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from rect.el
(define-key ctl-x-r-map "c" 'clear-rectangle)
(define-key ctl-x-r-map "k" 'kill-rectangle)
@@ -22448,8 +23015,8 @@ rectangle which were empty.
;;;***
-;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (19279
-;;;;;; 5152))
+;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from textmodes/refill.el
(autoload 'refill-mode "refill" "\
@@ -22465,7 +23032,7 @@ refilling if they would cause auto-filling.
;;;***
;;;### (autoloads (reftex-reset-scanning-information reftex-mode
-;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (19279 5152))
+;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (19598 13691))
;;; Generated autoloads from textmodes/reftex.el
(autoload 'turn-on-reftex "reftex" "\
@@ -22515,7 +23082,7 @@ This enforces rescanning the buffer on next use.
;;;***
;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
-;;;;;; (19279 5152))
+;;;;;; (19598 13691))
;;; Generated autoloads from textmodes/reftex-cite.el
(autoload 'reftex-citation "reftex-cite" "\
@@ -22545,7 +23112,7 @@ While entering the regexp, completion on knows citation keys is possible.
;;;***
;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
-;;;;;; (19279 5152))
+;;;;;; (19598 13691))
;;; Generated autoloads from textmodes/reftex-global.el
(autoload 'reftex-isearch-minor-mode "reftex-global" "\
@@ -22562,7 +23129,7 @@ With no argument, this command toggles
;;;***
;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
-;;;;;; (19279 5152))
+;;;;;; (19598 13691))
;;; Generated autoloads from textmodes/reftex-index.el
(autoload 'reftex-index-phrases-mode "reftex-index" "\
@@ -22595,7 +23162,7 @@ Here are all local bindings.
;;;***
;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
-;;;;;; (19279 5152))
+;;;;;; (19619 52030))
;;; Generated autoloads from textmodes/reftex-parse.el
(autoload 'reftex-all-document-files "reftex-parse" "\
@@ -22607,8 +23174,8 @@ of master file.
;;;***
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (19370
-;;;;;; 36541))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from textmodes/reftex-vars.el
(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22618,7 +23185,7 @@ of master file.
;;;***
;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el"
-;;;;;; (19279 5149))
+;;;;;; (19640 47194))
;;; Generated autoloads from emacs-lisp/regexp-opt.el
(autoload 'regexp-opt "regexp-opt" "\
@@ -22633,6 +23200,8 @@ The returned regexp is typically more efficient than the equivalent regexp:
If PAREN is `words', then the resulting regexp is additionally surrounded
by \\=\\< and \\>.
+If PAREN is `symbols', then the resulting regexp is additionally surrounded
+by \\=\\_< and \\_>.
\(fn STRINGS &optional PAREN)" nil nil)
@@ -22647,7 +23216,7 @@ This means the number of non-shy regexp grouping constructs
;;;### (autoloads (remember-diary-extract-entries remember-clipboard
;;;;;; remember-other-frame remember) "remember" "textmodes/remember.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from textmodes/remember.el
(autoload 'remember "remember" "\
@@ -22678,7 +23247,7 @@ Extract diary entries from the region.
;;;***
-;;;### (autoloads (repeat) "repeat" "repeat.el" (19279 5148))
+;;;### (autoloads (repeat) "repeat" "repeat.el" (19619 52030))
;;; Generated autoloads from repeat.el
(autoload 'repeat "repeat" "\
@@ -22701,7 +23270,7 @@ recently executed command not bound to an input event\".
;;;***
;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from mail/reporter.el
(autoload 'reporter-submit-bug-report "reporter" "\
@@ -22733,7 +23302,7 @@ mail-sending package is used for editing and sending the message.
;;;***
;;;### (autoloads (reposition-window) "reposition" "reposition.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from reposition.el
(autoload 'reposition-window "reposition" "\
@@ -22760,7 +23329,7 @@ first comment line visible (if point is in a comment).
;;;***
;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el"
-;;;;;; (19356 10801))
+;;;;;; (19591 62571))
;;; Generated autoloads from reveal.el
(autoload 'reveal-mode "reveal" "\
@@ -22795,7 +23364,7 @@ With zero or negative ARG turn mode off.
;;;***
;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el"
-;;;;;; (19279 5149))
+;;;;;; (19562 42953))
;;; Generated autoloads from emacs-lisp/ring.el
(autoload 'ring-p "ring" "\
@@ -22810,7 +23379,7 @@ Make a ring that can contain SIZE elements.
;;;***
-;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (19279 5151))
+;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (19619 52030))
;;; Generated autoloads from net/rlogin.el
(add-hook 'same-window-regexps (purecopy "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)"))
@@ -22860,8 +23429,8 @@ variable.
;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers
;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers
;;;;;; rmail-dont-reply-to-names rmail-user-mail-address-regexp
-;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (19370
-;;;;;; 36541))
+;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from mail/rmail.el
(autoload 'rmail-movemail-variant-p "rmail" "\
@@ -23055,7 +23624,7 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
;;;***
;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen
-;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (19279 5150))
+;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (19598 13691))
;;; Generated autoloads from mail/rmailout.el
(put 'rmail-output-file-alist 'risky-local-variable t)
@@ -23120,7 +23689,7 @@ than appending to it. Deletes the message after writing if
;;;***
;;;### (autoloads (rng-c-load-schema) "rng-cmpct" "nxml/rng-cmpct.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from nxml/rng-cmpct.el
(autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23132,7 +23701,7 @@ Return a pattern.
;;;***
;;;### (autoloads (rng-nxml-mode-init) "rng-nxml" "nxml/rng-nxml.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from nxml/rng-nxml.el
(autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23145,7 +23714,7 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil.
;;;***
;;;### (autoloads (rng-validate-mode) "rng-valid" "nxml/rng-valid.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from nxml/rng-valid.el
(autoload 'rng-validate-mode "rng-valid" "\
@@ -23175,8 +23744,8 @@ to use for finding the schema.
;;;***
-;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from nxml/rng-xsd.el
(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile)
@@ -23204,7 +23773,7 @@ must be equal.
;;;***
;;;### (autoloads (robin-use-package robin-modify-package robin-define-package)
-;;;;;; "robin" "international/robin.el" (19279 5150))
+;;;;;; "robin" "international/robin.el" (19562 42953))
;;; Generated autoloads from international/robin.el
(autoload 'robin-define-package "robin" "\
@@ -23237,7 +23806,7 @@ Start using robin package NAME, which is a string.
;;;***
;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region
-;;;;;; rot13-string rot13) "rot13" "rot13.el" (19279 5148))
+;;;;;; rot13-string rot13) "rot13" "rot13.el" (19591 62571))
;;; Generated autoloads from rot13.el
(autoload 'rot13 "rot13" "\
@@ -23275,7 +23844,7 @@ Toggle the use of ROT13 encoding for the current window.
;;;***
;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el"
-;;;;;; (19365 25156))
+;;;;;; (19640 47194))
;;; Generated autoloads from textmodes/rst.el
(add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
@@ -23313,7 +23882,7 @@ for modes derived from Text mode, like Mail mode.
;;;***
;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/ruby-mode.el
(autoload 'ruby-mode "ruby-mode" "\
@@ -23334,19 +23903,24 @@ The variable `ruby-indent-level' controls the amount of indentation.
;;;***
-;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from ruler-mode.el
+(defvar ruler-mode nil "\
+Non-nil if Ruler mode is enabled.
+Use the command `ruler-mode' to change this variable.")
+
(autoload 'ruler-mode "ruler-mode" "\
-Display a ruler in the header line if ARG > 0.
+Toggle Ruler mode.
+In Ruler mode, Emacs displays a ruler in the header line.
\(fn &optional ARG)" t nil)
;;;***
-;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (19279
-;;;;;; 5149))
+;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from emacs-lisp/rx.el
(autoload 'rx-to-string "rx" "\
@@ -23576,9 +24150,6 @@ CHAR
like `and', but makes the match accessible with `match-end',
`match-beginning', and `match-string'.
-`(group SEXP1 SEXP2 ...)'
- another name for `submatch'.
-
`(or SEXP1 SEXP2 ...)'
`(| SEXP1 SEXP2 ...)'
matches anything that matches SEXP1 or SEXP2, etc. If all
@@ -23655,14 +24226,16 @@ enclosed in `(and ...)'.
;;;***
-;;;### (autoloads (savehist-mode savehist-mode) "savehist" "savehist.el"
-;;;;;; (19279 5148))
+;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from savehist.el
(defvar savehist-mode nil "\
-Mode for automatic saving of minibuffer history.
-Set this by calling the `savehist-mode' function or using the customize
-interface.")
+Non-nil if Savehist mode is enabled.
+See the command `savehist-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `savehist-mode'.")
(custom-autoload 'savehist-mode "savehist" nil)
@@ -23677,12 +24250,12 @@ This mode should normally be turned on from your Emacs init file.
Calling it at any other time replaces your current minibuffer histories,
which is probably undesirable.
-\(fn ARG)" t nil)
+\(fn &optional ARG)" t nil)
;;;***
;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/scheme.el
(autoload 'scheme-mode "scheme" "\
@@ -23724,7 +24297,7 @@ that variable's value is a string.
;;;***
;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from gnus/score-mode.el
(autoload 'gnus-score-mode "score-mode" "\
@@ -23738,7 +24311,7 @@ This mode is an extended emacs-lisp mode.
;;;***
;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from scroll-all.el
(defvar scroll-all-mode nil "\
@@ -23761,7 +24334,7 @@ apply to all visible windows in the same frame.
;;;***
;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el"
-;;;;;; (19279 5148))
+;;;;;; (19591 62571))
;;; Generated autoloads from scroll-lock.el
(autoload 'scroll-lock-mode "scroll-lock" "\
@@ -23775,8 +24348,15 @@ during scrolling.
;;;***
+;;;### (autoloads nil "secrets" "net/secrets.el" (19562 42953))
+;;; Generated autoloads from net/secrets.el
+(when (featurep 'dbusbind)
+ (autoload 'secrets-show-secrets "secrets" nil t))
+
+;;;***
+
;;;### (autoloads (semantic-mode semantic-default-submodes) "semantic"
-;;;;;; "cedet/semantic.el" (19323 49698))
+;;;;;; "cedet/semantic.el" (19619 52030))
;;; Generated autoloads from cedet/semantic.el
(defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\
@@ -23828,7 +24408,7 @@ Semantic mode.
;;;;;; mail-alias-file mail-default-reply-to mail-archive-file-name
;;;;;; mail-header-separator send-mail-function mail-interactive
;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style)
-;;;;;; "sendmail" "mail/sendmail.el" (19338 9841))
+;;;;;; "sendmail" "mail/sendmail.el" (19619 52030))
;;; Generated autoloads from mail/sendmail.el
(defvar mail-from-style 'default "\
@@ -23957,7 +24537,7 @@ instead of no action.")
(custom-autoload 'mail-citation-hook "sendmail" t)
-(defvar mail-citation-prefix-regexp (purecopy "\\([ ]*\\(\\w\\|[_.]\\)+>+\\|[ ]*[]>|}]\\)+") "\
+(defvar mail-citation-prefix-regexp (purecopy "\\([ ]*\\(\\w\\|[_.]\\)+>+\\|[ ]*[]>|]\\)+") "\
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.
@@ -24063,6 +24643,7 @@ 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 (purecopy "*mail*"))
+ (add-hook 'same-window-buffer-names (purecopy "*unsent mail*"))
(autoload 'mail "sendmail" "\
Edit a message to be sent. Prefix arg means resume editing (don't erase).
@@ -24127,8 +24708,8 @@ Like `mail' command, but display mail buffer in another frame.
;;;***
;;;### (autoloads (server-save-buffers-kill-terminal server-mode
-;;;;;; server-force-delete server-start) "server" "server.el" (19279
-;;;;;; 5148))
+;;;;;; server-force-delete server-start) "server" "server.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from server.el
(autoload 'server-start "server" "\
@@ -24182,7 +24763,7 @@ only these files will be asked to be saved.
;;;***
-;;;### (autoloads (ses-mode) "ses" "ses.el" (19279 5148))
+;;;### (autoloads (ses-mode) "ses" "ses.el" (19591 62571))
;;; Generated autoloads from ses.el
(autoload 'ses-mode "ses" "\
@@ -24201,7 +24782,7 @@ These are active only in the minibuffer, when entering or editing a formula:
;;;***
;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el"
-;;;;;; (19292 15232))
+;;;;;; (19598 13691))
;;; Generated autoloads from textmodes/sgml-mode.el
(autoload 'sgml-mode "sgml-mode" "\
@@ -24267,7 +24848,7 @@ To work around that, do:
;;;***
;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
-;;;;;; (19345 41626))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/sh-script.el
(put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24331,7 +24912,7 @@ with your script for an edit-interpret-debug cycle.
;;;***
-;;;### (autoloads (sha1) "sha1" "sha1.el" (19279 5148))
+;;;### (autoloads (sha1) "sha1" "sha1.el" (19598 13691))
;;; Generated autoloads from sha1.el
(autoload 'sha1 "sha1" "\
@@ -24346,7 +24927,7 @@ If BINARY is non-nil, return a string in binary form.
;;;***
;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el"
-;;;;;; (19279 5149))
+;;;;;; (19640 47194))
;;; Generated autoloads from emacs-lisp/shadow.el
(autoload 'list-load-path-shadows "shadow" "\
@@ -24389,15 +24970,15 @@ XXX.elc in an early directory (that does not contain XXX.el) is
considered to shadow a later file XXX.el, and vice-versa.
Shadowings are located by calling the (non-interactive) companion
-function, `find-emacs-lisp-shadows'.
+function, `load-path-shadows-find'.
\(fn &optional STRINGP)" t nil)
;;;***
;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group
-;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (19279
-;;;;;; 5148))
+;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from shadowfile.el
(autoload 'shadow-define-cluster "shadowfile" "\
@@ -24436,7 +25017,7 @@ Set up file shadowing.
;;;***
;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el"
-;;;;;; (19279 5148))
+;;;;;; (19640 47194))
;;; Generated autoloads from shell.el
(defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24485,8 +25066,19 @@ Otherwise, one argument `-i' is passed to the shell.
;;;***
+;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (19640
+;;;;;; 47194))
+;;; Generated autoloads from gnus/shr.el
+
+(autoload 'shr-insert-document "shr" "\
+Not documented
+
+\(fn DOM)" nil nil)
+
+;;;***
+
;;;### (autoloads (sieve-upload-and-bury sieve-upload sieve-manage)
-;;;;;; "sieve" "gnus/sieve.el" (19279 5150))
+;;;;;; "sieve" "gnus/sieve.el" (19640 47194))
;;; Generated autoloads from gnus/sieve.el
(autoload 'sieve-manage "sieve" "\
@@ -24507,7 +25099,7 @@ Not documented
;;;***
;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el"
-;;;;;; (19365 25156))
+;;;;;; (19598 13691))
;;; Generated autoloads from gnus/sieve-mode.el
(autoload 'sieve-mode "sieve-mode" "\
@@ -24522,8 +25114,8 @@ Turning on Sieve mode runs `sieve-mode-hook'.
;;;***
-;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from progmodes/simula.el
(autoload 'simula-mode "simula" "\
@@ -24572,7 +25164,7 @@ with no arguments, if that value is non-nil.
;;;***
;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new
-;;;;;; define-skeleton) "skeleton" "skeleton.el" (19279 5148))
+;;;;;; define-skeleton) "skeleton" "skeleton.el" (19591 62571))
;;; Generated autoloads from skeleton.el
(defvar skeleton-filter-function 'identity "\
@@ -24682,8 +25274,8 @@ symmetrical ones, and the same character twice for the others.
;;;***
;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff)
-;;;;;; "smerge-mode" "smerge-mode.el" (19279 5148))
-;;; Generated autoloads from smerge-mode.el
+;;;;;; "smerge-mode" "vc/smerge-mode.el" (19591 62571))
+;;; Generated autoloads from vc/smerge-mode.el
(autoload 'smerge-ediff "smerge-mode" "\
Invoke ediff to resolve the conflicts.
@@ -24707,7 +25299,7 @@ If no conflict maker is found, turn off `smerge-mode'.
;;;***
;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el"
-;;;;;; (19370 36541))
+;;;;;; (19598 13691))
;;; Generated autoloads from gnus/smiley.el
(autoload 'smiley-region "smiley" "\
@@ -24725,7 +25317,7 @@ interactively. If there's no argument, do it at the current buffer.
;;;***
;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
-;;;;;; "mail/smtpmail.el" (19279 5150))
+;;;;;; "mail/smtpmail.el" (19562 42953))
;;; Generated autoloads from mail/smtpmail.el
(autoload 'smtpmail-send-it "smtpmail" "\
@@ -24740,7 +25332,7 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'.
;;;***
-;;;### (autoloads (snake) "snake" "play/snake.el" (19279 5151))
+;;;### (autoloads (snake) "snake" "play/snake.el" (19562 42953))
;;; Generated autoloads from play/snake.el
(autoload 'snake "snake" "\
@@ -24764,7 +25356,7 @@ Snake mode keybindings:
;;;***
;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from net/snmp-mode.el
(autoload 'snmp-mode "snmp-mode" "\
@@ -24793,8 +25385,8 @@ then `snmpv2-mode-hook'.
;;;***
-;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (19279
-;;;;;; 5149))
+;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from calendar/solar.el
(autoload 'sunrise-sunset "solar" "\
@@ -24809,8 +25401,8 @@ This function is suitable for execution in a .emacs file.
;;;***
-;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from play/solitaire.el
(autoload 'solitaire "solitaire" "\
@@ -24887,7 +25479,7 @@ Pick your favourite shortcuts:
;;;### (autoloads (reverse-region sort-columns sort-regexp-fields
;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs
-;;;;;; sort-lines sort-subr) "sort" "sort.el" (19279 5148))
+;;;;;; sort-lines sort-subr) "sort" "sort.el" (19562 42953))
;;; Generated autoloads from sort.el
(put 'sort-fold-case 'safe-local-variable 'booleanp)
@@ -25031,8 +25623,8 @@ From a program takes two point or marker arguments, BEG and END.
;;;***
-;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from gnus/spam.el
(autoload 'spam-initialize "spam" "\
@@ -25048,7 +25640,7 @@ installed through `spam-necessary-extra-headers'.
;;;### (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" (19279 5150))
+;;;;;; "gnus/spam-report.el" (19640 47194))
;;; Generated autoloads from gnus/spam-report.el
(autoload 'spam-report-process-queue "spam-report" "\
@@ -25091,7 +25683,7 @@ Spam reports will be queued with the method used when
;;;***
;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar"
-;;;;;; "speedbar.el" (19279 5148))
+;;;;;; "speedbar.el" (19591 62571))
;;; Generated autoloads from speedbar.el
(defalias 'speedbar 'speedbar-frame-mode)
@@ -25116,7 +25708,7 @@ selected. If the speedbar frame is active, then select the attached frame.
;;;***
;;;### (autoloads (spell-string spell-region spell-word spell-buffer)
-;;;;;; "spell" "textmodes/spell.el" (19279 5152))
+;;;;;; "spell" "textmodes/spell.el" (19619 52030))
;;; Generated autoloads from textmodes/spell.el
(put 'spell-filter 'risky-local-variable t)
@@ -25160,8 +25752,8 @@ Check spelling of string supplied as argument.
;;;***
-;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (19279
-;;;;;; 5151))
+;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from play/spook.el
(autoload 'spook "spook" "\
@@ -25178,15 +25770,15 @@ Return a vector containing the lines from `spook-phrases-file'.
;;;### (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" (19279
-;;;;;; 5151))
+;;;;;; sql-sybase sql-oracle sql-product-interactive sql-connect
+;;;;;; sql-mode sql-help sql-add-product-keywords) "sql" "progmodes/sql.el"
+;;;;;; (19619 52030))
;;; Generated autoloads from progmodes/sql.el
(autoload 'sql-add-product-keywords "sql" "\
Add highlighting KEYWORDS for SQL PRODUCT.
-PRODUCT should be a symbol, the name of a sql product, such as
+PRODUCT should be a symbol, the name of a SQL product, such as
`oracle'. KEYWORDS should be a list; see the variable
`font-lock-keywords'. By default they are added at the beginning
of the current highlighting list. If optional argument APPEND is
@@ -25212,24 +25804,17 @@ usually named `*SQL*'. The name of the major mode is SQLi.
Use the following commands to start a specific SQL interpreter:
- PostGres: \\[sql-postgres]
- MySQL: \\[sql-mysql]
- SQLite: \\[sql-sqlite]
+ \\\\FREE
Other non-free SQL implementations are also supported:
- Solid: \\[sql-solid]
- Oracle: \\[sql-oracle]
- Informix: \\[sql-informix]
- Sybase: \\[sql-sybase]
- Ingres: \\[sql-ingres]
- Microsoft: \\[sql-ms]
- DB2: \\[sql-db2]
- Interbase: \\[sql-interbase]
- Linter: \\[sql-linter]
+ \\\\NONFREE
But we urge you to choose a free implementation instead of these.
+You can also use \\[sql-product-interactive] to invoke the
+interpreter for the current `sql-product'.
+
Once you have the SQLi buffer, you can enter SQL statements in the
buffer. The output generated is appended to the buffer and a new prompt
is generated. See the In/Out menu in the SQLi buffer for some functions
@@ -25276,15 +25861,31 @@ you must tell Emacs. Here's how to do that in your `~/.emacs' file:
\(fn)" t nil)
+(autoload 'sql-connect "sql" "\
+Connect to an interactive session using CONNECTION settings.
+
+See `sql-connection-alist' to see how to define connections and
+their settings.
+
+The user will not be prompted for any login parameters if a value
+is specified in the connection settings.
+
+\(fn CONNECTION)" t nil)
+
(autoload 'sql-product-interactive "sql" "\
-Run product interpreter as an inferior process.
+Run PRODUCT interpreter as an inferior process.
If buffer `*SQL*' exists but no process is running, make a new process.
If buffer exists and a process is running, just switch to buffer `*SQL*'.
+To specify the SQL product, prefix the call with
+\\[universal-argument]. To set the buffer name as well, prefix
+the call to \\[sql-product-interactive] with
+\\[universal-argument] \\[universal-argument].
+
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn &optional PRODUCT)" t nil)
+\(fn &optional PRODUCT NEW-NAME)" t nil)
(autoload 'sql-oracle "sql" "\
Run sqlplus by Oracle as an inferior process.
@@ -25298,9 +25899,14 @@ the variables `sql-user', `sql-password', and `sql-database' as
defaults, if set. Additional command line parameters can be stored in
the list `sql-oracle-options'.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-oracle]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-oracle]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25310,10 +25916,10 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-sybase "sql" "\
-Run isql by SyBase as an inferior process.
+Run isql by Sybase as an inferior process.
If buffer `*SQL*' exists but no process is running, make a new process.
If buffer exists and a process is running, just switch to buffer
@@ -25324,9 +25930,14 @@ the variables `sql-server', `sql-user', `sql-password', and
`sql-database' as defaults, if set. Additional command line parameters
can be stored in the list `sql-sybase-options'.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-sybase]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-sybase]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25336,7 +25947,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-informix "sql" "\
Run dbaccess by Informix as an inferior process.
@@ -25348,9 +25959,14 @@ If buffer exists and a process is running, just switch to buffer
Interpreter used comes from variable `sql-informix-program'. Login uses
the variable `sql-database' as default, if set.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-informix]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-informix]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25360,7 +25976,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-sqlite "sql" "\
Run sqlite as an inferior process.
@@ -25376,9 +25992,14 @@ the variables `sql-user', `sql-password', `sql-database', and
`sql-server' as defaults, if set. Additional command line parameters
can be stored in the list `sql-sqlite-options'.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-sqlite]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-sqlite]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25388,7 +26009,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-mysql "sql" "\
Run mysql by TcX as an inferior process.
@@ -25404,9 +26025,14 @@ the variables `sql-user', `sql-password', `sql-database', and
`sql-server' as defaults, if set. Additional command line parameters
can be stored in the list `sql-mysql-options'.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-mysql]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-mysql]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25416,7 +26042,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-solid "sql" "\
Run solsql by Solid as an inferior process.
@@ -25429,9 +26055,14 @@ Interpreter used comes from variable `sql-solid-program'. Login uses
the variables `sql-user', `sql-password', and `sql-server' as
defaults, if set.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-solid]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-solid]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25441,7 +26072,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-ingres "sql" "\
Run sql by Ingres as an inferior process.
@@ -25453,9 +26084,14 @@ If buffer exists and a process is running, just switch to buffer
Interpreter used comes from variable `sql-ingres-program'. Login uses
the variable `sql-database' as default, if set.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-ingres]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-ingres]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25465,7 +26101,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-ms "sql" "\
Run osql by Microsoft as an inferior process.
@@ -25479,9 +26115,14 @@ variables `sql-user', `sql-password', `sql-database', and `sql-server'
as defaults, if set. Additional command line parameters can be stored
in the list `sql-ms-options'.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-ms]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-ms]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25491,7 +26132,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-postgres "sql" "\
Run psql by Postgres as an inferior process.
@@ -25505,9 +26146,14 @@ the variables `sql-database' and `sql-server' as default, if set.
Additional command line parameters can be stored in the list
`sql-postgres-options'.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-postgres]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-postgres]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25522,7 +26168,7 @@ Try to set `comint-output-filter-functions' like this:
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-interbase "sql" "\
Run isql by Interbase as an inferior process.
@@ -25535,9 +26181,14 @@ Interpreter used comes from variable `sql-interbase-program'. Login
uses the variables `sql-user', `sql-password', and `sql-database' as
defaults, if set.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-interbase]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-interbase]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25547,7 +26198,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-db2 "sql" "\
Run db2 by IBM as an inferior process.
@@ -25559,7 +26210,7 @@ If buffer exists and a process is running, just switch to buffer
Interpreter used comes from variable `sql-db2-program'. There is not
automatic login.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
If you use \\[sql-accumulate-and-indent] to send multiline commands to
@@ -25567,6 +26218,11 @@ db2, newlines will be escaped if necessary. If you don't want that, set
`comint-input-sender' back to `comint-simple-send' by writing an after
advice. See the elisp manual for more information.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-db2]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
To specify a coding system for converting non-ASCII characters
in the input and output to the process, use \\[universal-coding-system-argument]
before \\[sql-db2]. You can also specify this with \\[set-buffer-process-coding-system]
@@ -25576,7 +26232,7 @@ The default comes from `process-coding-system-alist' and
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
(autoload 'sql-linter "sql" "\
Run inl by RELEX as an inferior process.
@@ -25588,7 +26244,7 @@ If buffer exists and a process is running, just switch to buffer
Interpreter used comes from variable `sql-linter-program' - usually `inl'.
Login uses the variables `sql-user', `sql-password', `sql-database' and
`sql-server' as defaults, if set. Additional command line parameters
-can be stored in the list `sql-linter-options'. Run inl -h to get help on
+can be stored in the list `sql-linter-options'. Run inl -h to get help on
parameters.
`sql-database' is used to set the LINTER_MBX environment variable for
@@ -25597,17 +26253,22 @@ local connections, `sql-server' refers to the server name from the
for this to work). If `sql-password' is an empty string, inl will use
an empty password.
-The buffer is put in sql-interactive-mode, giving commands for sending
+The buffer is put in SQL interactive mode, giving commands for sending
input. See `sql-interactive-mode'.
+To set the buffer name directly, use \\[universal-argument]
+before \\[sql-linter]. Once session has started,
+\\[sql-rename-buffer] can be called separately to rename the
+buffer.
+
\(Type \\[describe-mode] in the SQL buffer for a list of commands.)
-\(fn)" t nil)
+\(fn &optional BUFFER)" t nil)
;;;***
;;;### (autoloads (srecode-template-mode) "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;; (19279 5149))
+;;;;;; (19562 42953))
;;; Generated autoloads from cedet/srecode/srt-mode.el
(autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -25619,12 +26280,36 @@ Major-mode for writing SRecode macros.
;;;***
+;;;### (autoloads (starttls-open-stream) "starttls" "gnus/starttls.el"
+;;;;;; (19619 52030))
+;;; Generated autoloads from gnus/starttls.el
+
+(autoload 'starttls-open-stream "starttls" "\
+Open a TLS connection for a port to a host.
+Returns a subprocess object to represent the connection.
+Input and output work as for subprocesses; `delete-process' closes it.
+Args are NAME BUFFER HOST PORT.
+NAME is name for process. It is modified if necessary to make it unique.
+BUFFER is the buffer (or `buffer-name') to associate with the process.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated
+ with any buffer
+Third arg is name of the host to connect to, or its IP address.
+Fourth arg PORT is an integer specifying a port to connect to.
+If `starttls-use-gnutls' is nil, this may also be a service name, but
+GNUTLS requires a port number.
+
+\(fn NAME BUFFER HOST PORT)" nil nil)
+
+;;;***
+
;;;### (autoloads (strokes-compose-complex-stroke strokes-decode-buffer
;;;;;; 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" (19279
-;;;;;; 5148))
+;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from strokes.el
(autoload 'strokes-global-set-stroke "strokes" "\
@@ -25734,7 +26419,7 @@ Read a complex stroke and insert its glyph into the current buffer.
;;;***
;;;### (autoloads (studlify-buffer studlify-word studlify-region)
-;;;;;; "studly" "play/studly.el" (19256 49605))
+;;;;;; "studly" "play/studly.el" (19562 42953))
;;; Generated autoloads from play/studly.el
(autoload 'studlify-region "studly" "\
@@ -25755,7 +26440,7 @@ Studlify-case the current buffer.
;;;***
;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/subword.el
(autoload 'subword-mode "subword" "\
@@ -25803,7 +26488,7 @@ See `subword-mode' for more information on Subword mode.
;;;***
;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el"
-;;;;;; (19365 25156))
+;;;;;; (19562 42953))
;;; Generated autoloads from mail/supercite.el
(autoload 'sc-cite-original "supercite" "\
@@ -25835,8 +26520,8 @@ and `sc-post-hook' is run after the guts of this function.
;;;***
-;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from t-mouse.el
(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -25863,7 +26548,7 @@ It relies on the `gpm' daemon being activated.
;;;***
-;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (19279 5148))
+;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (19598 13691))
;;; Generated autoloads from tabify.el
(autoload 'untabify "tabify" "\
@@ -25898,27 +26583,27 @@ The variable `tab-width' controls the spacing of tab stops.
;;;;;; 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" (19356 10801))
+;;;;;; "table" "textmodes/table.el" (19619 52030))
;;; Generated autoloads from textmodes/table.el
(defvar table-cell-map-hook nil "\
-*Normal hooks run when finishing construction of `table-cell-map'.
+Normal hooks run when finishing construction of `table-cell-map'.
User can modify `table-cell-map' by adding custom functions here.")
(custom-autoload 'table-cell-map-hook "table" t)
(defvar table-load-hook nil "\
-*List of functions to be called after the table is first loaded.")
+List of functions to be called after the table is first loaded.")
(custom-autoload 'table-load-hook "table" t)
(defvar table-point-entered-cell-hook nil "\
-*List of functions to be called after point entered a table cell.")
+List of functions to be called after point entered a table cell.")
(custom-autoload 'table-point-entered-cell-hook "table" t)
(defvar table-point-left-cell-hook nil "\
-*List of functions to be called after point left a table cell.")
+List of functions to be called after point left a table cell.")
(custom-autoload 'table-point-left-cell-hook "table" t)
@@ -26486,7 +27171,7 @@ converts a table into plain text without frames. It is a companion to
;;;***
-;;;### (autoloads (talk talk-connect) "talk" "talk.el" (19279 5148))
+;;;### (autoloads (talk talk-connect) "talk" "talk.el" (19562 42953))
;;; Generated autoloads from talk.el
(autoload 'talk-connect "talk" "\
@@ -26501,7 +27186,7 @@ Connect to the Emacs talk group from the current X display or tty frame.
;;;***
-;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (19279 5148))
+;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (19619 52030))
;;; Generated autoloads from tar-mode.el
(autoload 'tar-mode "tar-mode" "\
@@ -26525,7 +27210,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
;;;***
;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl"
-;;;;;; "progmodes/tcl.el" (19279 5151))
+;;;;;; "progmodes/tcl.el" (19598 13691))
;;; Generated autoloads from progmodes/tcl.el
(autoload 'tcl-mode "tcl" "\
@@ -26576,7 +27261,7 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'.
;;;***
-;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (19279 5151))
+;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (19640 47194))
;;; Generated autoloads from net/telnet.el
(add-hook 'same-window-regexps (purecopy "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)"))
@@ -26604,7 +27289,7 @@ Normally input is edited in Emacs and sent a line at a time.
;;;***
;;;### (autoloads (serial-term ansi-term term make-term) "term" "term.el"
-;;;;;; (19292 15231))
+;;;;;; (19598 13691))
;;; Generated autoloads from term.el
(autoload 'make-term "term" "\
@@ -26646,8 +27331,8 @@ use in that buffer.
;;;***
-;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from terminal.el
(autoload 'terminal-emulator "terminal" "\
@@ -26684,7 +27369,7 @@ subprocess started.
;;;***
;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
-;;;;;; (19279 5149))
+;;;;;; (19591 62571))
;;; Generated autoloads from emacs-lisp/testcover.el
(autoload 'testcover-this-defun "testcover" "\
@@ -26694,7 +27379,7 @@ Start coverage on function under point.
;;;***
-;;;### (autoloads (tetris) "tetris" "play/tetris.el" (19279 5151))
+;;;### (autoloads (tetris) "tetris" "play/tetris.el" (19562 42953))
;;; Generated autoloads from play/tetris.el
(autoload 'tetris "tetris" "\
@@ -26725,16 +27410,16 @@ tetris-mode keybindings:
;;;;;; 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"
-;;;;;; (19323 49698))
+;;;;;; (19619 52030))
;;; Generated autoloads from textmodes/tex-mode.el
(defvar tex-shell-file-name nil "\
-*If non-nil, the shell file name to run in the subshell used to run TeX.")
+If non-nil, the shell file name to run in the subshell used to run TeX.")
(custom-autoload 'tex-shell-file-name "tex-mode" t)
(defvar tex-directory (purecopy ".") "\
-*Directory in which temporary files are written.
+Directory in which temporary files are written.
You can make this `/tmp' if your TEXINPUTS has no relative directories in it
and you don't try to apply \\[tex-region] or \\[tex-buffer] when there are
`\\input' commands with relative directories.")
@@ -26750,40 +27435,40 @@ if it matches the first line of the file,
(custom-autoload 'tex-first-line-header-regexp "tex-mode" t)
(defvar tex-main-file nil "\
-*The main TeX source file which includes this buffer's file.
+The main TeX source file which includes this buffer's file.
The command `tex-file' runs TeX on the file specified by `tex-main-file'
if the variable is non-nil.")
(custom-autoload 'tex-main-file "tex-mode" t)
(defvar tex-offer-save t "\
-*If non-nil, ask about saving modified buffers before \\[tex-file] is run.")
+If non-nil, ask about saving modified buffers before \\[tex-file] is run.")
(custom-autoload 'tex-offer-save "tex-mode" t)
(defvar tex-run-command (purecopy "tex") "\
-*Command used to run TeX subjob.
+Command used to run TeX subjob.
TeX Mode sets `tex-command' to this string.
See the documentation of that variable.")
(custom-autoload 'tex-run-command "tex-mode" t)
(defvar latex-run-command (purecopy "latex") "\
-*Command used to run LaTeX subjob.
+Command used to run LaTeX subjob.
LaTeX Mode sets `tex-command' to this string.
See the documentation of that variable.")
(custom-autoload 'latex-run-command "tex-mode" t)
(defvar slitex-run-command (purecopy "slitex") "\
-*Command used to run SliTeX subjob.
+Command used to run SliTeX subjob.
SliTeX Mode sets `tex-command' to this string.
See the documentation of that variable.")
(custom-autoload 'slitex-run-command "tex-mode" t)
(defvar tex-start-options (purecopy "") "\
-*TeX options to use when starting TeX.
+TeX options to use when starting TeX.
These immediately precede the commands in `tex-start-commands'
and the input file name, with no separating space and are not shell-quoted.
If nil, TeX runs with no options. See the documentation of `tex-command'.")
@@ -26791,34 +27476,34 @@ If nil, TeX runs with no options. See the documentation of `tex-command'.")
(custom-autoload 'tex-start-options "tex-mode" t)
(defvar tex-start-commands (purecopy "\\nonstopmode\\input") "\
-*TeX commands to use when starting TeX.
+TeX commands to use when starting TeX.
They are shell-quoted and precede the input file name, with a separating space.
If nil, no commands are used. See the documentation of `tex-command'.")
(custom-autoload 'tex-start-commands "tex-mode" t)
(defvar latex-block-names nil "\
-*User defined LaTeX block names.
+User defined LaTeX block names.
Combined with `latex-standard-block-names' for minibuffer completion.")
(custom-autoload 'latex-block-names "tex-mode" t)
(defvar tex-bibtex-command (purecopy "bibtex") "\
-*Command used by `tex-bibtex-file' to gather bibliographic data.
+Command used by `tex-bibtex-file' to gather bibliographic data.
If this string contains an asterisk (`*'), that is replaced by the file name;
otherwise, the file name, preceded by blank, is added at the end.")
(custom-autoload 'tex-bibtex-command "tex-mode" t)
(defvar tex-dvi-print-command (purecopy "lpr -d") "\
-*Command used by \\[tex-print] to print a .dvi file.
+Command used by \\[tex-print] to print a .dvi file.
If this string contains an asterisk (`*'), that is replaced by the file name;
otherwise, the file name, preceded by blank, is added at the end.")
(custom-autoload 'tex-dvi-print-command "tex-mode" t)
(defvar tex-alt-dvi-print-command (purecopy "lpr -d") "\
-*Command used by \\[tex-print] with a prefix arg to print a .dvi file.
+Command used by \\[tex-print] with a prefix arg to print a .dvi file.
If this string contains an asterisk (`*'), that is replaced by the file name;
otherwise, the file name, preceded by blank, is added at the end.
@@ -26835,7 +27520,7 @@ use.")
(custom-autoload 'tex-alt-dvi-print-command "tex-mode" t)
(defvar tex-dvi-view-command `(cond ((eq window-system 'x) ,(purecopy "xdvi")) ((eq window-system 'w32) ,(purecopy "yap")) (t ,(purecopy "dvi2tty * | cat -s"))) "\
-*Command used by \\[tex-view] to display a `.dvi' file.
+Command used by \\[tex-view] to display a `.dvi' file.
If it is a string, that specifies the command directly.
If this string contains an asterisk (`*'), that is replaced by the file name;
otherwise, the file name, preceded by a space, is added at the end.
@@ -26845,13 +27530,13 @@ If the value is a form, it is evaluated to get the command to use.")
(custom-autoload 'tex-dvi-view-command "tex-mode" t)
(defvar tex-show-queue-command (purecopy "lpq") "\
-*Command used by \\[tex-show-print-queue] to show the print queue.
+Command used by \\[tex-show-print-queue] to show the print queue.
Should show the queue(s) that \\[tex-print] puts jobs on.")
(custom-autoload 'tex-show-queue-command "tex-mode" t)
(defvar tex-default-mode 'latex-mode "\
-*Mode to enter for a new file that might be either TeX or LaTeX.
+Mode to enter for a new file that might be either TeX or LaTeX.
This variable is used when it can't be determined whether the file
is plain TeX or LaTeX or what because the file contains no commands.
Normally set to either `plain-tex-mode' or `latex-mode'.")
@@ -26859,12 +27544,12 @@ Normally set to either `plain-tex-mode' or `latex-mode'.")
(custom-autoload 'tex-default-mode "tex-mode" t)
(defvar tex-open-quote (purecopy "``") "\
-*String inserted by typing \\[tex-insert-quote] to open a quotation.")
+String inserted by typing \\[tex-insert-quote] to open a quotation.")
(custom-autoload 'tex-open-quote "tex-mode" t)
(defvar tex-close-quote (purecopy "''") "\
-*String inserted by typing \\[tex-insert-quote] to close a quotation.")
+String inserted by typing \\[tex-insert-quote] to close a quotation.")
(custom-autoload 'tex-close-quote "tex-mode" t)
@@ -27027,7 +27712,7 @@ Major mode to edit DocTeX files.
;;;***
;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer)
-;;;;;; "texinfmt" "textmodes/texinfmt.el" (19279 5152))
+;;;;;; "texinfmt" "textmodes/texinfmt.el" (19591 62571))
;;; Generated autoloads from textmodes/texinfmt.el
(autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27067,7 +27752,7 @@ if large. You can use `Info-split' to do this manually.
;;;***
;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote)
-;;;;;; "texinfo" "textmodes/texinfo.el" (19279 5152))
+;;;;;; "texinfo" "textmodes/texinfo.el" (19598 13691))
;;; Generated autoloads from textmodes/texinfo.el
(defvar texinfo-open-quote (purecopy "``") "\
@@ -27153,7 +27838,7 @@ value of `texinfo-mode-hook'.
;;;### (autoloads (thai-composition-function thai-compose-buffer
;;;;;; thai-compose-string thai-compose-region) "thai-util" "language/thai-util.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from language/thai-util.el
(autoload 'thai-compose-region "thai-util" "\
@@ -27182,7 +27867,7 @@ Not documented
;;;### (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" (19279 5148))
+;;;;;; "thingatpt" "thingatpt.el" (19562 42953))
;;; Generated autoloads from thingatpt.el
(autoload 'forward-thing "thingatpt" "\
@@ -27239,7 +27924,7 @@ Return the Lisp list at point, or nil if none is found.
;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked
;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from thumbs.el
(autoload 'thumbs-find-thumb "thumbs" "\
@@ -27277,8 +27962,8 @@ In dired, call the setroot program on the image at point.
;;;;;; tibetan-post-read-conversion tibetan-compose-buffer tibetan-decompose-buffer
;;;;;; 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" (19279
-;;;;;; 5150))
+;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from language/tibet-util.el
(autoload 'tibetan-char-p "tibet-util" "\
@@ -27352,7 +28037,7 @@ Not documented
;;;***
;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from textmodes/tildify.el
(autoload 'tildify-region "tildify" "\
@@ -27377,11 +28062,11 @@ This function performs no refilling of the changed text.
;;;### (autoloads (emacs-init-time emacs-uptime display-time-world
;;;;;; display-time-mode display-time display-time-day-and-date)
-;;;;;; "time" "time.el" (19279 5148))
+;;;;;; "time" "time.el" (19640 47194))
;;; Generated autoloads from time.el
(defvar display-time-day-and-date nil "\
-*Non-nil means \\[display-time] should display day and date as well as time.")
+Non-nil means \\[display-time] should display day and date as well as time.")
(custom-autoload 'display-time-day-and-date "time" t)
(put 'display-time-string 'risky-local-variable t)
@@ -27440,7 +28125,7 @@ Return a string giving the duration of the Emacs initialization.
;;;;;; 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 date-to-time) "time-date" "calendar/time-date.el"
-;;;;;; (19292 15231))
+;;;;;; (19619 52030))
;;; Generated autoloads from calendar/time-date.el
(autoload 'date-to-time "time-date" "\
@@ -27553,7 +28238,7 @@ This function does not work for SECONDS greater than `most-positive-fixnum'.
;;;***
;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp"
-;;;;;; "time-stamp.el" (19279 5148))
+;;;;;; "time-stamp.el" (19562 42953))
;;; Generated autoloads from time-stamp.el
(put 'time-stamp-format 'safe-local-variable 'stringp)
(put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p)
@@ -27597,7 +28282,7 @@ With ARG, turn time stamping on if and only if arg is positive.
;;;;;; 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"
-;;;;;; (19279 5149))
+;;;;;; (19562 42953))
;;; Generated autoloads from calendar/timeclock.el
(autoload 'timeclock-modeline-display "timeclock" "\
@@ -27697,7 +28382,7 @@ relative only to the time worked today, and not to past time.
;;;***
;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv"
-;;;;;; "international/titdic-cnv.el" (19279 5150))
+;;;;;; "international/titdic-cnv.el" (19640 47194))
;;; Generated autoloads from international/titdic-cnv.el
(autoload 'titdic-convert "titdic-cnv" "\
@@ -27720,7 +28405,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
;;;***
;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
-;;;;;; "tmm.el" (19279 5148))
+;;;;;; "tmm.el" (19562 42953))
;;; Generated autoloads from tmm.el
(define-key global-map "\M-`" 'tmm-menubar)
(define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27760,7 +28445,7 @@ Its value should be an event that has a binding in MENU.
;;;### (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" (19279 5149))
+;;;;;; "todo-mode" "calendar/todo-mode.el" (19562 42953))
;;; Generated autoloads from calendar/todo-mode.el
(autoload 'todo-add-category "todo-mode" "\
@@ -27804,8 +28489,6 @@ Number of entries for each category is given by `todo-print-priorities'.
(autoload 'todo-mode "todo-mode" "\
Major mode for editing TODO lists.
-\\{todo-mode-map}
-
\(fn)" t nil)
(autoload 'todo-cp "todo-mode" "\
@@ -27822,7 +28505,7 @@ Show TODO list.
;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu
;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame)
-;;;;;; "tool-bar" "tool-bar.el" (19279 5148))
+;;;;;; "tool-bar" "tool-bar.el" (19619 52030))
;;; Generated autoloads from tool-bar.el
(autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -27831,8 +28514,6 @@ See `tool-bar-mode' for more information.
\(fn &optional ARG)" t nil)
-(put 'tool-bar-mode 'standard-value '(t))
-
(autoload 'tool-bar-add-item "tool-bar" "\
Add an item to the tool bar.
ICON names the image, DEF is the key definition and KEY is a symbol
@@ -27895,7 +28576,7 @@ holds a keymap.
;;;***
;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from emulation/tpu-edt.el
(defvar tpu-edt-mode nil "\
@@ -27922,7 +28603,7 @@ Turn on TPU/edt emulation.
;;;***
;;;### (autoloads (tpu-mapper) "tpu-mapper" "emulation/tpu-mapper.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from emulation/tpu-mapper.el
(autoload 'tpu-mapper "tpu-mapper" "\
@@ -27956,7 +28637,7 @@ your local X guru can try to figure out why the key is being ignored.
;;;***
-;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (19279 5149))
+;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (19562 42953))
;;; Generated autoloads from emacs-lisp/tq.el
(autoload 'tq-create "tq" "\
@@ -27970,7 +28651,7 @@ to a tcp server on another machine.
;;;***
;;;### (autoloads (trace-function-background trace-function trace-buffer)
-;;;;;; "trace" "emacs-lisp/trace.el" (19370 36541))
+;;;;;; "trace" "emacs-lisp/trace.el" (19591 62571))
;;; Generated autoloads from emacs-lisp/trace.el
(defvar trace-buffer (purecopy "*trace-output*") "\
@@ -28007,7 +28688,7 @@ BUFFER defaults to `trace-buffer'.
;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp"
-;;;;;; "net/tramp.el" (19370 36541))
+;;;;;; "net/tramp.el" (19640 47194))
;;; Generated autoloads from net/tramp.el
(defvar tramp-mode t "\
@@ -28027,10 +28708,12 @@ It can have the following values:
(custom-autoload 'tramp-syntax "tramp" t)
-(defconst tramp-file-name-regexp-unified "\\`/\\([^[/:]+\\|[^/]+]\\):" "\
+(defconst tramp-file-name-regexp-unified (if (memq system-type '(cygwin windows-nt)) "\\`/\\([^[/:]\\{2,\\}\\|[^/]\\{2,\\}]\\):" "\\`/\\([^[/:]+\\|[^/]+]\\):") "\
Value for `tramp-file-name-regexp' for unified remoting.
Emacs (not XEmacs) uses a unified filename syntax for Ange-FTP and
-Tramp. See `tramp-file-name-structure' for more explanations.")
+Tramp. See `tramp-file-name-structure' for more explanations.
+
+On W32 systems, the volume letter must be ignored.")
(defconst tramp-file-name-regexp-separate "\\`/\\[.*\\]" "\
Value for `tramp-file-name-regexp' for separate remoting.
@@ -28044,7 +28727,7 @@ See `tramp-file-name-structure' for more explanations.")
(defconst tramp-file-name-regexp (cond ((equal tramp-syntax 'ftp) tramp-file-name-regexp-unified) ((equal tramp-syntax 'sep) tramp-file-name-regexp-separate) ((equal tramp-syntax 'url) tramp-file-name-regexp-url) (t (error "Wrong `tramp-syntax' defined"))) "\
*Regular expression matching file names handled by Tramp.
This regexp should match Tramp file names but no other file names.
-\(When tramp.el is loaded, this regular expression is prepended to
+When tramp.el is loaded, this regular expression is prepended to
`file-name-handler-alist', and that is searched sequentially. Thus,
if the Tramp entry appears rather early in the `file-name-handler-alist'
and is a bit too general, then some files might be considered Tramp
@@ -28062,10 +28745,12 @@ Beginning of an incomplete Tramp file name.
Usually, it is just \"\\\\`/\". On W32 systems, there might be a
volume letter, which will be removed by `tramp-drop-volume-letter'.")
-(defconst tramp-completion-file-name-regexp-unified (concat tramp-root-regexp "[^/]*\\'") "\
+(defconst tramp-completion-file-name-regexp-unified (if (memq system-type '(cygwin windows-nt)) (concat tramp-root-regexp "[^/]\\{2,\\}\\'") (concat tramp-root-regexp "[^/]*\\'")) "\
Value for `tramp-completion-file-name-regexp' for unified remoting.
GNU Emacs uses a unified filename syntax for Tramp and Ange-FTP.
-See `tramp-file-name-structure' for more explanations.")
+See `tramp-file-name-structure' for more explanations.
+
+On W32 systems, the volume letter must be ignored.")
(defconst tramp-completion-file-name-regexp-separate (concat tramp-root-regexp "\\([[][^]]*\\)?\\'") "\
Value for `tramp-completion-file-name-regexp' for separate remoting.
@@ -28089,9 +28774,9 @@ Also see `tramp-file-name-structure'.")
(defconst tramp-completion-file-name-handler-alist '((file-name-all-completions . tramp-completion-handle-file-name-all-completions) (file-name-completion . tramp-completion-handle-file-name-completion)) "\
Alist of completion handler functions.
-Used for file names matching `tramp-file-name-regexp'. Operations not
-mentioned here will be handled by `tramp-file-name-handler-alist' or the
-normal Emacs functions.")
+Used for file names matching `tramp-file-name-regexp'. Operations
+not mentioned here will be handled by Tramp's file name handler
+functions, or the normal Emacs functions.")
(defun tramp-run-real-handler (operation args) "\
Invoke normal file name handler for OPERATION.
@@ -28111,10 +28796,11 @@ Falls back to normal file name handler if no Tramp file name handler exists.
(defun tramp-completion-file-name-handler (operation &rest args) "\
Invoke Tramp file name completion handler.
-Falls back to normal file name handler if no Tramp file name handler exists." (let ((directory-sep-char 47) (fn (assoc operation tramp-completion-file-name-handler-alist))) (if (and fn tramp-mode (or (eq tramp-syntax (quote sep)) (featurep (quote tramp)) (and (boundp (quote partial-completion-mode)) partial-completion-mode) (featurep (quote ido)) (featurep (quote icicles)))) (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args))))
+Falls back to normal file name handler if no Tramp file name handler exists." (let ((directory-sep-char 47) (fn (assoc operation tramp-completion-file-name-handler-alist))) (if (and fn tramp-mode (or (eq tramp-syntax (quote sep)) (featurep (quote tramp)) (and (boundp (quote partial-completion-mode)) (symbol-value (quote partial-completion-mode))) (featurep (quote ido)) (featurep (quote icicles)))) (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args))))
(defun tramp-register-file-name-handlers nil "\
Add Tramp file name handlers to `file-name-handler-alist'." (let ((a1 (rassq (quote tramp-file-name-handler) file-name-handler-alist))) (setq file-name-handler-alist (delq a1 file-name-handler-alist))) (let ((a1 (rassq (quote tramp-completion-file-name-handler) file-name-handler-alist))) (setq file-name-handler-alist (delq a1 file-name-handler-alist))) (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (put (quote tramp-file-name-handler) (quote safe-magic) t) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t) (dolist (fnh (quote (epa-file-handler jka-compr-handler))) (let ((entry (rassoc fnh file-name-handler-alist))) (when entry (setq file-name-handler-alist (cons entry (delete entry file-name-handler-alist)))))))
+
(tramp-register-file-name-handlers)
(autoload 'tramp-unload-file-name-handlers "tramp" "\
@@ -28140,7 +28826,7 @@ Discard Tramp from loading remote files.
;;;***
;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el"
-;;;;;; (19279 5151))
+;;;;;; (19619 52030))
;;; Generated autoloads from net/tramp-ftp.el
(autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28150,8 +28836,8 @@ Not documented
;;;***
-;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (19279
-;;;;;; 5148))
+;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (19598
+;;;;;; 13691))
;;; Generated autoloads from tutorial.el
(autoload 'help-with-tutorial "tutorial" "\
@@ -28176,7 +28862,7 @@ resumed later.
;;;***
;;;### (autoloads (tai-viet-composition-function) "tv-util" "language/tv-util.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from language/tv-util.el
(autoload 'tai-viet-composition-function "tv-util" "\
@@ -28187,7 +28873,7 @@ Not documented
;;;***
;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column"
-;;;;;; "textmodes/two-column.el" (19279 5152))
+;;;;;; "textmodes/two-column.el" (19619 52030))
;;; Generated autoloads from textmodes/two-column.el
(autoload '2C-command "two-column" () t 'keymap)
(global-set-key "\C-x6" '2C-command)
@@ -28238,7 +28924,7 @@ First column's text sSs Second column's text
;;;;;; 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"
-;;;;;; (19279 5148))
+;;;;;; (19562 42953))
;;; Generated autoloads from type-break.el
(defvar type-break-mode nil "\
@@ -28420,7 +29106,7 @@ FRAC should be the inverse of the fractional value; for example, a value of
;;;***
-;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (19279 5150))
+;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (19562 42953))
;;; Generated autoloads from mail/uce.el
(autoload 'uce-reply-to-uce "uce" "\
@@ -28438,7 +29124,7 @@ You might need to set `uce-mail-reader' before using this.
;;;;;; ucs-normalize-NFKC-string ucs-normalize-NFKC-region ucs-normalize-NFKD-string
;;;;;; ucs-normalize-NFKD-region ucs-normalize-NFC-string ucs-normalize-NFC-region
;;;;;; ucs-normalize-NFD-string ucs-normalize-NFD-region) "ucs-normalize"
-;;;;;; "international/ucs-normalize.el" (19279 5150))
+;;;;;; "international/ucs-normalize.el" (19619 52030))
;;; Generated autoloads from international/ucs-normalize.el
(autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -28504,7 +29190,7 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus.
;;;***
;;;### (autoloads (ununderline-region underline-region) "underline"
-;;;;;; "textmodes/underline.el" (19279 5152))
+;;;;;; "textmodes/underline.el" (19562 42953))
;;; Generated autoloads from textmodes/underline.el
(autoload 'underline-region "underline" "\
@@ -28525,7 +29211,7 @@ which specify the range to operate on.
;;;***
;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el"
-;;;;;; (19279 5150))
+;;;;;; (19562 42953))
;;; Generated autoloads from mail/unrmail.el
(autoload 'batch-unrmail "unrmail" "\
@@ -28544,8 +29230,8 @@ Convert old-style Rmail Babyl file FILE to system inbox format file TO-FILE.
;;;***
-;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from emacs-lisp/unsafep.el
(autoload 'unsafep "unsafep" "\
@@ -28558,7 +29244,7 @@ UNSAFEP-VARS is a list of symbols with local bindings.
;;;***
;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url"
-;;;;;; "url/url.el" (19365 25156))
+;;;;;; "url/url.el" (19640 47194))
;;; Generated autoloads from url/url.el
(autoload 'url-retrieve "url" "\
@@ -28585,7 +29271,9 @@ The variables `url-request-data', `url-request-method' and
request; dynamic binding of other variables doesn't necessarily
take effect.
-\(fn URL CALLBACK &optional CBARGS)" nil nil)
+If SILENT, then don't message progress reports and the like.
+
+\(fn URL CALLBACK &optional CBARGS SILENT)" nil nil)
(autoload 'url-retrieve-synchronously "url" "\
Retrieve URL synchronously.
@@ -28598,7 +29286,7 @@ no further processing). URL is either a string or a parsed URL.
;;;***
;;;### (autoloads (url-register-auth-scheme url-get-authentication)
-;;;;;; "url-auth" "url/url-auth.el" (19279 5152))
+;;;;;; "url-auth" "url/url-auth.el" (19562 42953))
;;; Generated autoloads from url/url-auth.el
(autoload 'url-get-authentication "url-auth" "\
@@ -28639,9 +29327,8 @@ RATING a rating between 1 and 10 of the strength of the authentication.
;;;***
-;;;### (autoloads (url-cache-expired url-cache-extract url-is-cached
-;;;;;; url-store-in-cache) "url-cache" "url/url-cache.el" (19279
-;;;;;; 5152))
+;;;### (autoloads (url-cache-extract url-is-cached url-store-in-cache)
+;;;;;; "url-cache" "url/url-cache.el" (19640 47194))
;;; Generated autoloads from url/url-cache.el
(autoload 'url-store-in-cache "url-cache" "\
@@ -28651,6 +29338,7 @@ Store buffer BUFF in the cache.
(autoload 'url-is-cached "url-cache" "\
Return non-nil if the URL is cached.
+The actual return value is the last modification time of the cache file.
\(fn URL)" nil nil)
@@ -28659,14 +29347,9 @@ Extract FNAM from the local disk cache.
\(fn FNAM)" nil nil)
-(autoload 'url-cache-expired "url-cache" "\
-Return t if a cached file has expired.
-
-\(fn URL MOD)" nil nil)
-
;;;***
-;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (19279 5152))
+;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (19562 42953))
;;; Generated autoloads from url/url-cid.el
(autoload 'url-cid "url-cid" "\
@@ -28677,7 +29360,7 @@ Not documented
;;;***
;;;### (autoloads (url-dav-vc-registered url-dav-supported-p) "url-dav"
-;;;;;; "url/url-dav.el" (19279 5152))
+;;;;;; "url/url-dav.el" (19591 62571))
;;; Generated autoloads from url/url-dav.el
(autoload 'url-dav-supported-p "url-dav" "\
@@ -28692,8 +29375,8 @@ Not documented
;;;***
-;;;### (autoloads (url-file) "url-file" "url/url-file.el" (19279
-;;;;;; 5152))
+;;;### (autoloads (url-file) "url-file" "url/url-file.el" (19591
+;;;;;; 62571))
;;; Generated autoloads from url/url-file.el
(autoload 'url-file "url-file" "\
@@ -28704,7 +29387,7 @@ Handle file: and ftp: URLs.
;;;***
;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw"
-;;;;;; "url/url-gw.el" (19279 5152))
+;;;;;; "url/url-gw.el" (19640 47194))
;;; Generated autoloads from url/url-gw.el
(autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -28724,7 +29407,7 @@ Might do a non-blocking connection; use `process-status' to check.
;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file
;;;;;; url-file-handler url-handler-mode) "url-handlers" "url/url-handlers.el"
-;;;;;; (19279 5152))
+;;;;;; (19591 62571))
;;; Generated autoloads from url/url-handlers.el
(defvar url-handler-mode nil "\
@@ -28776,7 +29459,7 @@ Not documented
;;;***
;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
-;;;;;; url-http) "url-http" "url/url-http.el" (19372 27330))
+;;;;;; url-http) "url-http" "url/url-http.el" (19640 47194))
;;; Generated autoloads from url/url-http.el
(autoload 'url-http "url-http" "\
@@ -28842,7 +29525,7 @@ HTTPS retrievals are asynchronous.")
;;;***
-;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (19279 5152))
+;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (19598 13691))
;;; Generated autoloads from url/url-irc.el
(autoload 'url-irc "url-irc" "\
@@ -28852,8 +29535,8 @@ Not documented
;;;***
-;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (19279
-;;;;;; 5152))
+;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from url/url-ldap.el
(autoload 'url-ldap "url-ldap" "\
@@ -28867,7 +29550,7 @@ URL can be a URL string, or a URL vector of the type returned by
;;;***
;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from url/url-mailto.el
(autoload 'url-mail "url-mailto" "\
@@ -28883,7 +29566,7 @@ Handle the mailto: URL syntax.
;;;***
;;;### (autoloads (url-data url-generic-emulator-loader url-info
-;;;;;; url-man) "url-misc" "url/url-misc.el" (19279 5152))
+;;;;;; url-man) "url-misc" "url/url-misc.el" (19562 42953))
;;; Generated autoloads from url/url-misc.el
(autoload 'url-man "url-misc" "\
@@ -28915,7 +29598,7 @@ Fetch a data URL (RFC 2397).
;;;***
;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from url/url-news.el
(autoload 'url-news "url-news" "\
@@ -28932,7 +29615,7 @@ Not documented
;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable
;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from url/url-ns.el
(autoload 'isPlainHostName "url-ns" "\
@@ -28973,7 +29656,7 @@ Not documented
;;;***
;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse"
-;;;;;; "url/url-parse.el" (19279 5152))
+;;;;;; "url/url-parse.el" (19640 47194))
;;; Generated autoloads from url/url-parse.el
(autoload 'url-recreate-url "url-parse" "\
@@ -28991,7 +29674,7 @@ TYPE USER PASSWORD HOST PORTSPEC FILENAME TARGET ATTRIBUTES FULLNESS.
;;;***
;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el"
-;;;;;; (19279 5152))
+;;;;;; (19562 42953))
;;; Generated autoloads from url/url-privacy.el
(autoload 'url-setup-privacy-info "url-privacy" "\
@@ -29007,11 +29690,11 @@ Setup variables that expose info about you and your system.
;;;;;; url-pretty-length 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" (19292 15232))
+;;;;;; "url-util" "url/url-util.el" (19640 47194))
;;; Generated autoloads from url/url-util.el
(defvar url-debug nil "\
-*What types of debug messages from the URL library to show.
+What types of debug messages from the URL library to show.
Debug messages are logged to the *URL-DEBUG* buffer.
If t, all messages will be logged.
@@ -29143,7 +29826,7 @@ This uses `url-current-object', set locally to the buffer.
;;;***
;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock)
-;;;;;; "userlock" "userlock.el" (19279 5148))
+;;;;;; "userlock" "userlock.el" (19562 42953))
;;; Generated autoloads from userlock.el
(autoload 'ask-user-about-lock "userlock" "\
@@ -29173,7 +29856,7 @@ The buffer in question is current when this function is called.
;;;### (autoloads (utf-7-imap-pre-write-conversion utf-7-pre-write-conversion
;;;;;; utf-7-imap-post-read-conversion utf-7-post-read-conversion)
-;;;;;; "utf-7" "international/utf-7.el" (19279 5150))
+;;;;;; "utf-7" "international/utf-7.el" (19562 42953))
;;; Generated autoloads from international/utf-7.el
(autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29198,9 +29881,19 @@ Not documented
;;;***
+;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (19619 52030))
+;;; Generated autoloads from gnus/utf7.el
+
+(autoload 'utf7-encode "utf7" "\
+Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil.
+
+\(fn STRING &optional FOR-IMAP)" nil nil)
+
+;;;***
+
;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal
;;;;;; uudecode-decode-region-external) "uudecode" "mail/uudecode.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from mail/uudecode.el
(autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29226,12 +29919,12 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
;;;### (autoloads (vc-branch-part vc-update-change-log vc-rename-file
;;;;;; vc-delete-file vc-transfer-file vc-switch-backend vc-update
-;;;;;; vc-rollback vc-revert vc-print-root-log vc-print-log vc-retrieve-tag
-;;;;;; vc-create-tag vc-merge vc-insert-headers vc-revision-other-window
-;;;;;; vc-root-diff vc-diff vc-version-diff vc-register vc-next-action
-;;;;;; vc-before-checkin-hook vc-checkin-hook vc-checkout-hook)
-;;;;;; "vc" "vc.el" (19370 36540))
-;;; Generated autoloads from vc.el
+;;;;;; vc-rollback vc-revert vc-log-outgoing vc-log-incoming vc-print-root-log
+;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers
+;;;;;; vc-revision-other-window vc-root-diff vc-diff vc-version-diff
+;;;;;; vc-register vc-next-action vc-before-checkin-hook vc-checkin-hook
+;;;;;; vc-checkout-hook) "vc" "vc/vc.el" (19640 47194))
+;;; Generated autoloads from vc/vc.el
(defvar vc-checkout-hook nil "\
Normal hook (list of functions) run after checking out a file.
@@ -29392,6 +30085,18 @@ When called interactively with a prefix argument, prompt for LIMIT.
\(fn &optional LIMIT)" t nil)
+(autoload 'vc-log-incoming "vc" "\
+Show a log of changes that will be received with a pull operation from REMOTE-LOCATION.
+When called interactively with a prefix argument, prompt for REMOTE-LOCATION..
+
+\(fn &optional REMOTE-LOCATION)" t nil)
+
+(autoload 'vc-log-outgoing "vc" "\
+Show a log of changes that will be sent with a push operation to REMOTE-LOCATION.
+When called interactively with a prefix argument, prompt for REMOTE-LOCATION.
+
+\(fn &optional REMOTE-LOCATION)" t nil)
+
(autoload 'vc-revert "vc" "\
Revert working copies of the selected fileset to their repository contents.
This asks for confirmation if the buffer contents are not identical
@@ -29445,7 +30150,7 @@ Delete file and mark it as such in the version control system.
\(fn FILE)" t nil)
(autoload 'vc-rename-file "vc" "\
-Rename file OLD to NEW, and rename its master file likewise.
+Rename file OLD to NEW in both work area and repository.
\(fn OLD NEW)" t nil)
@@ -29472,12 +30177,12 @@ Return the branch part of a revision number REV.
;;;***
-;;;### (autoloads (vc-annotate) "vc-annotate" "vc-annotate.el" (19356
-;;;;;; 10801))
-;;; Generated autoloads from vc-annotate.el
+;;;### (autoloads (vc-annotate) "vc-annotate" "vc/vc-annotate.el"
+;;;;;; (19598 13691))
+;;; Generated autoloads from vc/vc-annotate.el
(autoload 'vc-annotate "vc-annotate" "\
-Display the edit history of the current file using colors.
+Display the edit history of the current FILE using colors.
This command creates a buffer that shows, for each line of the current
file, when it was last edited and by whom. Additionally, colors are
@@ -29487,7 +30192,7 @@ default, the time scale stretches back one year into the past;
everything that is older than that is shown in blue.
With a prefix argument, this command asks two questions in the
-minibuffer. First, you may enter a revision number; then the buffer
+minibuffer. First, you may enter a revision number REV; then the buffer
displays and annotates that revision instead of the working revision
\(type RET in the minibuffer to leave that default unchanged). Then,
you are prompted for the time span in days which the color range
@@ -29497,6 +30202,8 @@ age, and everything that is older than that is shown in blue.
If MOVE-POINT-TO is given, move the point to that line.
+If VC-BK is given used that VC backend.
+
Customization variables:
`vc-annotate-menu-elements' customizes the menu elements of the
@@ -29504,12 +30211,12 @@ mode-specific menu. `vc-annotate-color-map' and
`vc-annotate-very-old-color' define the mapping of time to colors.
`vc-annotate-background' specifies the background color.
-\(fn FILE REV &optional DISPLAY-MODE BUF MOVE-POINT-TO)" t nil)
+\(fn FILE REV &optional DISPLAY-MODE BUF MOVE-POINT-TO VC-BK)" t nil)
;;;***
-;;;### (autoloads nil "vc-arch" "vc-arch.el" (19365 25156))
-;;; Generated autoloads from vc-arch.el
+;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (19598 13691))
+;;; Generated autoloads from vc/vc-arch.el
(defun vc-arch-registered (file)
(if (vc-find-root file "{arch}/=tagging-method")
(progn
@@ -29518,8 +30225,8 @@ mode-specific menu. `vc-annotate-color-map' and
;;;***
-;;;### (autoloads nil "vc-bzr" "vc-bzr.el" (19370 36540))
-;;; Generated autoloads from vc-bzr.el
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (19598 13691))
+;;; Generated autoloads from vc/vc-bzr.el
(defconst vc-bzr-admin-dirname ".bzr" "\
Name of the directory containing Bzr repository status files.")
@@ -29533,8 +30240,8 @@ Name of the directory containing Bzr repository status files.")
;;;***
-;;;### (autoloads nil "vc-cvs" "vc-cvs.el" (19365 25156))
-;;; Generated autoloads from vc-cvs.el
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (19640 47194))
+;;; Generated autoloads from vc/vc-cvs.el
(defun vc-cvs-registered (f)
(when (file-readable-p (expand-file-name
"CVS/Entries" (file-name-directory f)))
@@ -29543,8 +30250,8 @@ Name of the directory containing Bzr repository status files.")
;;;***
-;;;### (autoloads (vc-dir) "vc-dir" "vc-dir.el" (19370 36540))
-;;; Generated autoloads from vc-dir.el
+;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (19598 13691))
+;;; Generated autoloads from vc/vc-dir.el
(autoload 'vc-dir "vc-dir" "\
Show the VC status for \"interesting\" files in and below DIR.
@@ -29567,9 +30274,9 @@ These are the commands available for use in the file status buffer:
;;;***
-;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc-dispatcher.el"
-;;;;;; (19374 2442))
-;;; Generated autoloads from vc-dispatcher.el
+;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el"
+;;;;;; (19598 13691))
+;;; Generated autoloads from vc/vc-dispatcher.el
(autoload 'vc-do-command "vc-dispatcher" "\
Execute a slave command, notifying user and checking for errors.
@@ -29591,8 +30298,8 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads nil "vc-git" "vc-git.el" (19365 25156))
-;;; Generated autoloads from vc-git.el
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (19598 13691))
+;;; Generated autoloads from vc/vc-git.el
(defun vc-git-registered (file)
"Return non-nil if FILE is registered with git."
(if (vc-find-root file ".git") ; Short cut.
@@ -29602,8 +30309,8 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads nil "vc-hg" "vc-hg.el" (19370 36540))
-;;; Generated autoloads from vc-hg.el
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (19619 52030))
+;;; Generated autoloads from vc/vc-hg.el
(defun vc-hg-registered (file)
"Return non-nil if FILE is registered with hg."
(if (vc-find-root file ".hg") ; short cut
@@ -29613,8 +30320,15 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads nil "vc-mtn" "vc-mtn.el" (19365 25156))
-;;; Generated autoloads from vc-mtn.el
+;;;### (autoloads nil "vc-hooks" "vc/vc-hooks.el" (19640 47194))
+;;; Generated autoloads from vc/vc-hooks.el
+
+(put 'vc-mode 'risky-local-variable t)
+
+;;;***
+
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (19598 13691))
+;;; Generated autoloads from vc/vc-mtn.el
(defconst vc-mtn-admin-dir "_MTN")
@@ -29627,9 +30341,9 @@ case, and the process object in the asynchronous case.
;;;***
-;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el"
-;;;;;; (19365 25156))
-;;; Generated autoloads from vc-rcs.el
+;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el"
+;;;;;; (19640 47194))
+;;; Generated autoloads from vc/vc-rcs.el
(defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
Where to look for RCS master files.
@@ -29641,9 +30355,9 @@ For a description of possible values, see `vc-check-master-templates'.")
;;;***
-;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc-sccs.el"
-;;;;;; (19365 25156))
-;;; Generated autoloads from vc-sccs.el
+;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el"
+;;;;;; (19640 47194))
+;;; Generated autoloads from vc/vc-sccs.el
(defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\
Where to look for SCCS master files.
@@ -29659,8 +30373,8 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
;;;***
-;;;### (autoloads nil "vc-svn" "vc-svn.el" (19365 25156))
-;;; Generated autoloads from vc-svn.el
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (19640 47194))
+;;; Generated autoloads from vc/vc-svn.el
(defun vc-svn-registered (f)
(let ((admin-dir (cond ((and (eq system-type 'windows-nt)
(getenv "SVN_ASP_DOT_NET_HACK"))
@@ -29675,7 +30389,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
;;;***
;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/vera-mode.el
(add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode))
@@ -29733,7 +30447,7 @@ Key bindings:
;;;***
;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/verilog-mode.el
(autoload 'verilog-mode "verilog-mode" "\
@@ -29870,7 +30584,7 @@ Key bindings specific to `verilog-mode-map' are:
;;;***
;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el"
-;;;;;; (19279 5151))
+;;;;;; (19598 13691))
;;; Generated autoloads from progmodes/vhdl-mode.el
(autoload 'vhdl-mode "vhdl-mode" "\
@@ -30411,7 +31125,7 @@ Key bindings:
;;;***
-;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (19256 49605))
+;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (19562 42953))
;;; Generated autoloads from emulation/vi.el
(autoload 'vi-mode "vi" "\
@@ -30466,7 +31180,7 @@ Syntax table and abbrevs while in vi mode remain as they were in Emacs.
;;;### (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" (19279 5150))
+;;;;;; "language/viet-util.el" (19562 42953))
;;; Generated autoloads from language/viet-util.el
(autoload 'viet-encode-viscii-char "viet-util" "\
@@ -30514,7 +31228,7 @@ Not documented
;;;;;; view-mode view-buffer-other-frame view-buffer-other-window
;;;;;; view-buffer view-file-other-frame view-file-other-window
;;;;;; view-file kill-buffer-if-not-modified view-remove-frame-by-deleting)
-;;;;;; "view" "view.el" (19356 10801))
+;;;;;; "view" "view.el" (19562 42953))
;;; Generated autoloads from view.el
(defvar view-remove-frame-by-deleting t "\
@@ -30760,8 +31474,8 @@ Exit View mode and make the current buffer editable.
;;;***
-;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (19279
-;;;;;; 5150))
+;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (19619
+;;;;;; 52030))
;;; Generated autoloads from emulation/vip.el
(autoload 'vip-setup "vip" "\
@@ -30777,7 +31491,7 @@ Turn on VIP emulation of VI.
;;;***
;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
-;;;;;; (19279 5150))
+;;;;;; (19598 13691))
;;; Generated autoloads from emulation/viper.el
(autoload 'toggle-viper-mode "viper" "\
@@ -30794,7 +31508,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
;;;***
;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
-;;;;;; (19279 5150))
+;;;;;; (19619 52030))
;;; Generated autoloads from emacs-lisp/warnings.el
(defvar warning-prefix-function nil "\
@@ -30884,7 +31598,7 @@ this is equivalent to `display-warning', using
;;;***
;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el"
-;;;;;; (19279 5149))
+;;;;;; (19562 42953))
;;; Generated autoloads from wdired.el
(autoload 'wdired-change-to-wdired-mode "wdired" "\
@@ -30900,7 +31614,7 @@ See `wdired-mode'.
;;;***
-;;;### (autoloads (webjump) "webjump" "net/webjump.el" (19279 5151))
+;;;### (autoloads (webjump) "webjump" "net/webjump.el" (19562 42953))
;;; Generated autoloads from net/webjump.el
(autoload 'webjump "webjump" "\
@@ -30917,7 +31631,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
;;;***
;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el"
-;;;;;; (19279 5151))
+;;;;;; (19562 42953))
;;; Generated autoloads from progmodes/which-func.el
(put 'which-func-format 'risky-local-variable t)
(put 'which-func-current 'risky-local-variable t)
@@ -30948,7 +31662,7 @@ and off otherwise.
;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region
;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options
;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode
-;;;;;; whitespace-mode) "whitespace" "whitespace.el" (19356 10801))
+;;;;;; whitespace-mode) "whitespace" "whitespace.el" (19598 13691))
;;; Generated autoloads from whitespace.el
(autoload 'whitespace-mode "whitespace" "\
@@ -31038,6 +31752,7 @@ Interactively, it reads one of the following chars:
CHAR MEANING
(VIA FACES)
+ f toggle face visualization
t toggle TAB visualization
s toggle SPACE and HARD SPACE visualization
r toggle trailing blanks visualization
@@ -31066,6 +31781,7 @@ Interactively, it reads one of the following chars:
Non-interactively, ARG should be a symbol or a list of symbols.
The valid symbols are:
+ face toggle face visualization
tabs toggle TAB visualization
spaces toggle SPACE and HARD SPACE visualization
trailing toggle trailing blanks visualization
@@ -31106,6 +31822,7 @@ Interactively, it accepts one of the following chars:
CHAR MEANING
(VIA FACES)
+ f toggle face visualization
t toggle TAB visualization
s toggle SPACE and HARD SPACE visualization
r toggle trailing blanks visualization
@@ -31134,6 +31851,7 @@ Interactively, it accepts one of the following chars:
Non-interactively, ARG should be a symbol or a list of symbols.
The valid symbols are:
+ face toggle face visualization
tabs toggle TAB visualization
spaces toggle SPACE and HARD SPACE visualization
trailing toggle trailing blanks visualization
@@ -31347,7 +32065,7 @@ cleaning up these problems.
;;;***
;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse
-;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (19279 5149))
+;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (19598 13691))
;;; Generated autoloads from wid-browse.el
(autoload 'widget-browse-at "wid-browse" "\
@@ -31374,8 +32092,8 @@ With arg, turn widget mode on if and only if arg is positive.
;;;***
;;;### (autoloads (widget-setup widget-insert widget-delete widget-create
-;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (19356
-;;;;;; 10801))
+;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (19640
+;;;;;; 47194))
;;; Generated autoloads from wid-edit.el
(autoload 'widgetp "wid-edit" "\
@@ -31418,8 +32136,8 @@ Setup current buffer so editing string widgets works.
;;;***
;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right
-;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (19279
-;;;;;; 5149))
+;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from windmove.el
(autoload 'windmove-left "windmove" "\
@@ -31471,8 +32189,15 @@ Default MODIFIER is 'shift.
;;;***
+;;;### (autoloads nil "window" "window.el" (19619 52030))
+;;; Generated autoloads from window.el
+
+(put 'special-display-buffer-names 'risky-local-variable t)
+
+;;;***
+
;;;### (autoloads (winner-mode winner-mode) "winner" "winner.el"
-;;;;;; (19279 5149))
+;;;;;; (19591 62571))
;;; Generated autoloads from winner.el
(defvar winner-mode nil "\
@@ -31490,8 +32215,8 @@ With arg, turn Winner mode on if and only if arg is positive.
;;;***
-;;;### (autoloads (woman-find-file woman-dired-find-file woman woman-locale)
-;;;;;; "woman" "woman.el" (19370 36540))
+;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file
+;;;;;; woman woman-locale) "woman" "woman.el" (19619 52030))
;;; Generated autoloads from woman.el
(defvar woman-locale nil "\
@@ -31532,10 +32257,15 @@ decompress the file if appropriate. See the documentation for the
\(fn FILE-NAME &optional REFORMAT)" t nil)
+(autoload 'woman-bookmark-jump "woman" "\
+Default bookmark handler for Woman buffers.
+
+\(fn BOOKMARK)" nil nil)
+
;;;***
;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el"
-;;;;;; (19279 5150))
+;;;;;; (19640 47194))
;;; Generated autoloads from emulation/ws-mode.el
(autoload 'wordstar-mode "ws-mode" "\
@@ -31647,7 +32377,7 @@ The key bindings are:
;;;***
-;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (19356 10801))
+;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (19562 42953))
;;; Generated autoloads from net/xesam.el
(autoload 'xesam-search "xesam" "\
@@ -31667,7 +32397,7 @@ Example:
;;;***
;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el"
-;;;;;; (19279 5149))
+;;;;;; (19591 62571))
;;; Generated autoloads from xml.el
(autoload 'xml-parse-file "xml" "\
@@ -31693,7 +32423,7 @@ If PARSE-NS is non-nil, then QNAMES are expanded.
;;;***
;;;### (autoloads (xmltok-get-declared-encoding-position) "xmltok"
-;;;;;; "nxml/xmltok.el" (19279 5151))
+;;;;;; "nxml/xmltok.el" (19562 42953))
;;; Generated autoloads from nxml/xmltok.el
(autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -31711,8 +32441,8 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT.
;;;***
-;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (19279
-;;;;;; 5149))
+;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (19562
+;;;;;; 42953))
;;; Generated autoloads from xt-mouse.el
(defvar xterm-mouse-mode nil "\
@@ -31741,7 +32471,7 @@ down the SHIFT key while pressing the mouse button.
;;;***
;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc"
-;;;;;; "gnus/yenc.el" (19279 5150))
+;;;;;; "gnus/yenc.el" (19598 13691))
;;; Generated autoloads from gnus/yenc.el
(autoload 'yenc-decode-region "yenc" "\
@@ -31757,7 +32487,7 @@ Extract file name from an yenc header.
;;;***
;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism
-;;;;;; yow) "yow" "play/yow.el" (19279 5151))
+;;;;;; yow) "yow" "play/yow.el" (19562 42953))
;;; Generated autoloads from play/yow.el
(autoload 'yow "yow" "\
@@ -31783,7 +32513,7 @@ Zippy goes to the analyst.
;;;***
-;;;### (autoloads (zone) "zone" "play/zone.el" (19279 5151))
+;;;### (autoloads (zone) "zone" "play/zone.el" (19562 42953))
;;; Generated autoloads from play/zone.el
(autoload 'zone "zone" "\
@@ -31793,40 +32523,42 @@ Zone out, completely.
;;;***
-;;;### (autoloads nil nil ("calc/calc-aent.el" "calc/calc-alg.el"
-;;;;;; "calc/calc-arith.el" "calc/calc-bin.el" "calc/calc-comb.el"
-;;;;;; "calc/calc-cplx.el" "calc/calc-embed.el" "calc/calc-ext.el"
-;;;;;; "calc/calc-fin.el" "calc/calc-forms.el" "calc/calc-frac.el"
-;;;;;; "calc/calc-funcs.el" "calc/calc-graph.el" "calc/calc-help.el"
-;;;;;; "calc/calc-incom.el" "calc/calc-keypd.el" "calc/calc-lang.el"
-;;;;;; "calc/calc-loaddefs.el" "calc/calc-macs.el" "calc/calc-map.el"
-;;;;;; "calc/calc-math.el" "calc/calc-menu.el" "calc/calc-misc.el"
-;;;;;; "calc/calc-mode.el" "calc/calc-mtx.el" "calc/calc-nlfit.el"
-;;;;;; "calc/calc-poly.el" "calc/calc-prog.el" "calc/calc-rewr.el"
-;;;;;; "calc/calc-rules.el" "calc/calc-sel.el" "calc/calc-stat.el"
-;;;;;; "calc/calc-store.el" "calc/calc-stuff.el" "calc/calc-trail.el"
-;;;;;; "calc/calc-undo.el" "calc/calc-units.el" "calc/calc-vec.el"
-;;;;;; "calc/calc-yank.el" "calc/calcalg2.el" "calc/calcalg3.el"
-;;;;;; "calc/calccomp.el" "calc/calcsel2.el" "calendar/cal-bahai.el"
-;;;;;; "calendar/cal-coptic.el" "calendar/cal-french.el" "calendar/cal-html.el"
-;;;;;; "calendar/cal-islam.el" "calendar/cal-iso.el" "calendar/cal-julian.el"
-;;;;;; "calendar/cal-loaddefs.el" "calendar/cal-mayan.el" "calendar/cal-menu.el"
-;;;;;; "calendar/cal-move.el" "calendar/cal-persia.el" "calendar/cal-tex.el"
-;;;;;; "calendar/cal-x.el" "calendar/diary-loaddefs.el" "calendar/hol-loaddefs.el"
+;;;### (autoloads nil nil ("abbrev.el" "bindings.el" "button.el"
+;;;;;; "calc/calc-aent.el" "calc/calc-alg.el" "calc/calc-arith.el"
+;;;;;; "calc/calc-bin.el" "calc/calc-comb.el" "calc/calc-cplx.el"
+;;;;;; "calc/calc-embed.el" "calc/calc-ext.el" "calc/calc-fin.el"
+;;;;;; "calc/calc-forms.el" "calc/calc-frac.el" "calc/calc-funcs.el"
+;;;;;; "calc/calc-graph.el" "calc/calc-help.el" "calc/calc-incom.el"
+;;;;;; "calc/calc-keypd.el" "calc/calc-lang.el" "calc/calc-loaddefs.el"
+;;;;;; "calc/calc-macs.el" "calc/calc-map.el" "calc/calc-math.el"
+;;;;;; "calc/calc-menu.el" "calc/calc-misc.el" "calc/calc-mode.el"
+;;;;;; "calc/calc-mtx.el" "calc/calc-nlfit.el" "calc/calc-poly.el"
+;;;;;; "calc/calc-prog.el" "calc/calc-rewr.el" "calc/calc-rules.el"
+;;;;;; "calc/calc-sel.el" "calc/calc-stat.el" "calc/calc-store.el"
+;;;;;; "calc/calc-stuff.el" "calc/calc-trail.el" "calc/calc-undo.el"
+;;;;;; "calc/calc-units.el" "calc/calc-vec.el" "calc/calc-yank.el"
+;;;;;; "calc/calcalg2.el" "calc/calcalg3.el" "calc/calccomp.el"
+;;;;;; "calc/calcsel2.el" "calendar/cal-bahai.el" "calendar/cal-coptic.el"
+;;;;;; "calendar/cal-french.el" "calendar/cal-html.el" "calendar/cal-islam.el"
+;;;;;; "calendar/cal-iso.el" "calendar/cal-julian.el" "calendar/cal-loaddefs.el"
+;;;;;; "calendar/cal-mayan.el" "calendar/cal-menu.el" "calendar/cal-move.el"
+;;;;;; "calendar/cal-persia.el" "calendar/cal-tex.el" "calendar/cal-x.el"
+;;;;;; "calendar/diary-loaddefs.el" "calendar/hol-loaddefs.el" "case-table.el"
;;;;;; "cdl.el" "cedet/cedet-cscope.el" "cedet/cedet-files.el" "cedet/cedet-global.el"
-;;;;;; "cedet/cedet-idutils.el" "cedet/cedet.el" "cedet/ede/autoconf-edit.el"
-;;;;;; "cedet/ede/cpp-root.el" "cedet/ede/dired.el" "cedet/ede/emacs.el"
-;;;;;; "cedet/ede/files.el" "cedet/ede/linux.el" "cedet/ede/loaddefs.el"
-;;;;;; "cedet/ede/locate.el" "cedet/ede/make.el" "cedet/ede/makefile-edit.el"
-;;;;;; "cedet/ede/pconf.el" "cedet/ede/pmake.el" "cedet/ede/proj-archive.el"
-;;;;;; "cedet/ede/proj-aux.el" "cedet/ede/proj-comp.el" "cedet/ede/proj-elisp.el"
-;;;;;; "cedet/ede/proj-info.el" "cedet/ede/proj-misc.el" "cedet/ede/proj-obj.el"
-;;;;;; "cedet/ede/proj-prog.el" "cedet/ede/proj-scheme.el" "cedet/ede/proj-shared.el"
-;;;;;; "cedet/ede/proj.el" "cedet/ede/project-am.el" "cedet/ede/shell.el"
-;;;;;; "cedet/ede/simple.el" "cedet/ede/source.el" "cedet/ede/speedbar.el"
-;;;;;; "cedet/ede/srecode.el" "cedet/ede/system.el" "cedet/ede/util.el"
-;;;;;; "cedet/inversion.el" "cedet/mode-local.el" "cedet/pulse.el"
-;;;;;; "cedet/semantic/analyze.el" "cedet/semantic/analyze/complete.el"
+;;;;;; "cedet/cedet-idutils.el" "cedet/cedet.el" "cedet/ede/auto.el"
+;;;;;; "cedet/ede/autoconf-edit.el" "cedet/ede/base.el" "cedet/ede/cpp-root.el"
+;;;;;; "cedet/ede/custom.el" "cedet/ede/dired.el" "cedet/ede/emacs.el"
+;;;;;; "cedet/ede/files.el" "cedet/ede/generic.el" "cedet/ede/linux.el"
+;;;;;; "cedet/ede/loaddefs.el" "cedet/ede/locate.el" "cedet/ede/make.el"
+;;;;;; "cedet/ede/makefile-edit.el" "cedet/ede/pconf.el" "cedet/ede/pmake.el"
+;;;;;; "cedet/ede/proj-archive.el" "cedet/ede/proj-aux.el" "cedet/ede/proj-comp.el"
+;;;;;; "cedet/ede/proj-elisp.el" "cedet/ede/proj-info.el" "cedet/ede/proj-misc.el"
+;;;;;; "cedet/ede/proj-obj.el" "cedet/ede/proj-prog.el" "cedet/ede/proj-scheme.el"
+;;;;;; "cedet/ede/proj-shared.el" "cedet/ede/proj.el" "cedet/ede/project-am.el"
+;;;;;; "cedet/ede/shell.el" "cedet/ede/simple.el" "cedet/ede/source.el"
+;;;;;; "cedet/ede/speedbar.el" "cedet/ede/srecode.el" "cedet/ede/system.el"
+;;;;;; "cedet/ede/util.el" "cedet/inversion.el" "cedet/mode-local.el"
+;;;;;; "cedet/pulse.el" "cedet/semantic/analyze.el" "cedet/semantic/analyze/complete.el"
;;;;;; "cedet/semantic/analyze/debug.el" "cedet/semantic/analyze/fcn.el"
;;;;;; "cedet/semantic/analyze/refs.el" "cedet/semantic/bovine.el"
;;;;;; "cedet/semantic/bovine/c-by.el" "cedet/semantic/bovine/c.el"
@@ -31867,73 +32599,84 @@ Zone out, completely.
;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el"
;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el"
;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el"
-;;;;;; "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.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/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el"
-;;;;;; "emacs-lisp/chart.el" "emacs-lisp/cl-compat.el" "emacs-lisp/cl-extra.el"
-;;;;;; "emacs-lisp/cl-loaddefs.el" "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el"
-;;;;;; "emacs-lisp/cl-specs.el" "emacs-lisp/cust-print.el" "emacs-lisp/eieio-base.el"
-;;;;;; "emacs-lisp/eieio-comp.el" "emacs-lisp/eieio-custom.el" "emacs-lisp/eieio-datadebug.el"
+;;;;;; "cus-dep.el" "cus-face.el" "cus-load.el" "cus-start.el" "custom.el"
+;;;;;; "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" "dos-vars.el"
+;;;;;; "dos-w32.el" "dynamic-setting.el" "emacs-lisp/assoc.el" "emacs-lisp/authors.el"
+;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/backquote.el" "emacs-lisp/bindat.el"
+;;;;;; "emacs-lisp/byte-lexbind.el" "emacs-lisp/byte-opt.el" "emacs-lisp/byte-run.el"
+;;;;;; "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el"
+;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl-specs.el"
+;;;;;; "emacs-lisp/cust-print.el" "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-comp.el"
+;;;;;; "emacs-lisp/eieio-custom.el" "emacs-lisp/eieio-datadebug.el"
;;;;;; "emacs-lisp/eieio-opt.el" "emacs-lisp/eieio-speedbar.el"
-;;;;;; "emacs-lisp/eieio.el" "emacs-lisp/find-gc.el" "emacs-lisp/gulp.el"
-;;;;;; "emacs-lisp/lisp-mnt.el" "emacs-lisp/lmenu.el" "emacs-lisp/regi.el"
-;;;;;; "emacs-lisp/sregex.el" "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el"
-;;;;;; "emacs-lock.el" "emulation/cua-gmrk.el" "emulation/cua-rect.el"
-;;;;;; "emulation/edt-lk201.el" "emulation/edt-mapper.el" "emulation/edt-pc.el"
-;;;;;; "emulation/edt-vt100.el" "emulation/tpu-extras.el" "emulation/viper-cmd.el"
-;;;;;; "emulation/viper-ex.el" "emulation/viper-init.el" "emulation/viper-keym.el"
-;;;;;; "emulation/viper-macs.el" "emulation/viper-mous.el" "emulation/viper-util.el"
-;;;;;; "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el"
-;;;;;; "erc/erc-lang.el" "eshell/em-alias.el" "eshell/em-banner.el"
-;;;;;; "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el"
-;;;;;; "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el"
-;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el"
-;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el"
-;;;;;; "eshell/em-unix.el" "eshell/em-xtra.el" "eshell/esh-arg.el"
-;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-groups.el"
-;;;;;; "eshell/esh-io.el" "eshell/esh-module.el" "eshell/esh-opt.el"
-;;;;;; "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el"
-;;;;;; "ezimage.el" "finder-inf.el" "foldout.el" "font-setting.el"
-;;;;;; "format-spec.el" "forms-d2.el" "forms-pass.el" "fringe.el"
-;;;;;; "generic-x.el" "gnus/auth-source.el" "gnus/compface.el" "gnus/gnus-async.el"
-;;;;;; "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cus.el"
-;;;;;; "gnus/gnus-demon.el" "gnus/gnus-dup.el" "gnus/gnus-eform.el"
-;;;;;; "gnus/gnus-ems.el" "gnus/gnus-int.el" "gnus/gnus-logic.el"
-;;;;;; "gnus/gnus-mh.el" "gnus/gnus-salt.el" "gnus/gnus-score.el"
-;;;;;; "gnus/gnus-setup.el" "gnus/gnus-srvr.el" "gnus/gnus-sum.el"
+;;;;;; "emacs-lisp/eieio.el" "emacs-lisp/find-gc.el" "emacs-lisp/float-sup.el"
+;;;;;; "emacs-lisp/gulp.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/lisp-mode.el"
+;;;;;; "emacs-lisp/lisp.el" "emacs-lisp/map-ynp.el" "emacs-lisp/package-x.el"
+;;;;;; "emacs-lisp/regi.el" "emacs-lisp/smie.el" "emacs-lisp/sregex.el"
+;;;;;; "emacs-lisp/syntax.el" "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el"
+;;;;;; "emacs-lisp/timer.el" "emacs-lock.el" "emulation/cua-gmrk.el"
+;;;;;; "emulation/cua-rect.el" "emulation/edt-lk201.el" "emulation/edt-mapper.el"
+;;;;;; "emulation/edt-pc.el" "emulation/edt-vt100.el" "emulation/tpu-extras.el"
+;;;;;; "emulation/viper-cmd.el" "emulation/viper-ex.el" "emulation/viper-init.el"
+;;;;;; "emulation/viper-keym.el" "emulation/viper-macs.el" "emulation/viper-mous.el"
+;;;;;; "emulation/viper-util.el" "env.el" "epa-hook.el" "erc/erc-backend.el"
+;;;;;; "erc/erc-goodies.el" "erc/erc-ibuffer.el" "erc/erc-lang.el"
+;;;;;; "eshell/em-alias.el" "eshell/em-banner.el" "eshell/em-basic.el"
+;;;;;; "eshell/em-cmpl.el" "eshell/em-dirs.el" "eshell/em-glob.el"
+;;;;;; "eshell/em-hist.el" "eshell/em-ls.el" "eshell/em-pred.el"
+;;;;;; "eshell/em-prompt.el" "eshell/em-rebind.el" "eshell/em-script.el"
+;;;;;; "eshell/em-smart.el" "eshell/em-term.el" "eshell/em-unix.el"
+;;;;;; "eshell/em-xtra.el" "eshell/esh-arg.el" "eshell/esh-cmd.el"
+;;;;;; "eshell/esh-ext.el" "eshell/esh-groups.el" "eshell/esh-io.el"
+;;;;;; "eshell/esh-module.el" "eshell/esh-opt.el" "eshell/esh-proc.el"
+;;;;;; "eshell/esh-util.el" "eshell/esh-var.el" "ezimage.el" "facemenu.el"
+;;;;;; "faces.el" "files.el" "finder-inf.el" "foldout.el" "font-lock.el"
+;;;;;; "format-spec.el" "forms-d2.el" "forms-pass.el" "frame.el"
+;;;;;; "fringe.el" "generic-x.el" "gnus/auth-source.el" "gnus/compface.el"
+;;;;;; "gnus/gnus-async.el" "gnus/gnus-bcklg.el" "gnus/gnus-cite.el"
+;;;;;; "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el"
+;;;;;; "gnus/gnus-eform.el" "gnus/gnus-ems.el" "gnus/gnus-int.el"
+;;;;;; "gnus/gnus-logic.el" "gnus/gnus-mh.el" "gnus/gnus-salt.el"
+;;;;;; "gnus/gnus-score.el" "gnus/gnus-setup.el" "gnus/gnus-srvr.el"
;;;;;; "gnus/gnus-topic.el" "gnus/gnus-undo.el" "gnus/gnus-util.el"
;;;;;; "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/ietf-drums.el"
;;;;;; "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" "gnus/mail-prsvr.el"
;;;;;; "gnus/mail-source.el" "gnus/mailcap.el" "gnus/messcompat.el"
;;;;;; "gnus/mm-bodies.el" "gnus/mm-decode.el" "gnus/mm-encode.el"
;;;;;; "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el"
-;;;;;; "gnus/mml.el" "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndb.el"
-;;;;;; "gnus/nndir.el" "gnus/nndraft.el" "gnus/nneething.el" "gnus/nngateway.el"
-;;;;;; "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnlistserv.el"
-;;;;;; "gnus/nnmail.el" "gnus/nnmaildir.el" "gnus/nnmairix.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/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/spam-wash.el" "gnus/starttls.el"
-;;;;;; "gnus/utf7.el" "gnus/webmail.el" "hex-util.el" "hfy-cmap.el"
-;;;;;; "htmlfontify.el" "ibuf-ext.el" "international/charprop.el"
-;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/fontset.el"
-;;;;;; "international/iso-ascii.el" "international/ja-dic-cnv.el"
-;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el"
+;;;;;; "gnus/mml.el" "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el"
+;;;;;; "gnus/nndraft.el" "gnus/nneething.el" "gnus/nngateway.el"
+;;;;;; "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el"
+;;;;;; "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el"
+;;;;;; "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el"
+;;;;;; "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.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/spam-wash.el" "help.el" "hex-util.el"
+;;;;;; "hfy-cmap.el" "ibuf-ext.el" "indent.el" "international/characters.el"
+;;;;;; "international/charprop.el" "international/cp51932.el" "international/eucjp-ms.el"
+;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el"
+;;;;;; "international/ja-dic-utl.el" "international/mule-conf.el"
+;;;;;; "international/mule.el" "international/ogonek.el" "international/uni-bidi.el"
;;;;;; "international/uni-category.el" "international/uni-combining.el"
;;;;;; "international/uni-comment.el" "international/uni-decimal.el"
;;;;;; "international/uni-decomposition.el" "international/uni-digit.el"
;;;;;; "international/uni-lowercase.el" "international/uni-mirrored.el"
;;;;;; "international/uni-name.el" "international/uni-numeric.el"
;;;;;; "international/uni-old-name.el" "international/uni-titlecase.el"
-;;;;;; "international/uni-uppercase.el" "json.el" "kermit.el" "language/hanja-util.el"
-;;;;;; "language/thai-word.el" "ldefs-boot.el" "mail/blessmail.el"
-;;;;;; "mail/mailheader.el" "mail/mailpost.el" "mail/mspools.el"
-;;;;;; "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el"
+;;;;;; "international/uni-uppercase.el" "isearch.el" "jit-lock.el"
+;;;;;; "jka-cmpr-hook.el" "json.el" "kermit.el" "language/burmese.el"
+;;;;;; "language/cham.el" "language/chinese.el" "language/cyrillic.el"
+;;;;;; "language/czech.el" "language/english.el" "language/ethiopic.el"
+;;;;;; "language/european.el" "language/georgian.el" "language/greek.el"
+;;;;;; "language/hanja-util.el" "language/hebrew.el" "language/indian.el"
+;;;;;; "language/japanese.el" "language/khmer.el" "language/korean.el"
+;;;;;; "language/lao.el" "language/misc-lang.el" "language/romanian.el"
+;;;;;; "language/sinhala.el" "language/slovak.el" "language/tai-viet.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/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el"
;;;;;; "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el"
;;;;;; "mail/undigest.el" "md4.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el"
@@ -31943,51 +32686,65 @@ Zone out, completely.
;;;;;; "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el"
;;;;;; "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" "mh-e/mh-show.el"
;;;;;; "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el"
-;;;;;; "mh-e/mh-utils.el" "mh-e/mh-xface.el" "mouse-copy.el" "mouse.el"
-;;;;;; "mwheel.el" "net/dns.el" "net/eudc-vars.el" "net/eudcb-bbdb.el"
+;;;;;; "mh-e/mh-utils.el" "mh-e/mh-xface.el" "minibuffer.el" "mouse-copy.el"
+;;;;;; "mouse.el" "mwheel.el" "net/dns.el" "net/eudc-vars.el" "net/eudcb-bbdb.el"
;;;;;; "net/eudcb-ldap.el" "net/eudcb-mab.el" "net/eudcb-ph.el"
-;;;;;; "net/hmac-def.el" "net/hmac-md5.el" "net/imap-hash.el" "net/imap.el"
-;;;;;; "net/ldap.el" "net/mairix.el" "net/netrc.el" "net/newsticker.el"
+;;;;;; "net/gnutls.el" "net/hmac-def.el" "net/hmac-md5.el" "net/imap-hash.el"
+;;;;;; "net/imap.el" "net/ldap.el" "net/mairix.el" "net/newsticker.el"
;;;;;; "net/ntlm.el" "net/sasl-cram.el" "net/sasl-digest.el" "net/sasl-ntlm.el"
-;;;;;; "net/sasl.el" "net/secrets.el" "net/socks.el" "net/tls.el"
-;;;;;; "net/tramp-cache.el" "net/tramp-cmds.el" "net/tramp-compat.el"
-;;;;;; "net/tramp-fish.el" "net/tramp-gvfs.el" "net/tramp-gw.el"
-;;;;;; "net/tramp-imap.el" "net/tramp-smb.el" "net/tramp-uu.el"
-;;;;;; "net/trampver.el" "net/zeroconf.el" "nxml/nxml-enc.el" "nxml/nxml-maint.el"
+;;;;;; "net/sasl.el" "net/socks.el" "net/tls.el" "net/tramp-cache.el"
+;;;;;; "net/tramp-cmds.el" "net/tramp-compat.el" "net/tramp-gvfs.el"
+;;;;;; "net/tramp-gw.el" "net/tramp-imap.el" "net/tramp-loaddefs.el"
+;;;;;; "net/tramp-sh.el" "net/tramp-smb.el" "net/tramp-uu.el" "net/trampver.el"
+;;;;;; "net/zeroconf.el" "notifications.el" "nxml/nxml-enc.el" "nxml/nxml-maint.el"
;;;;;; "nxml/nxml-ns.el" "nxml/nxml-outln.el" "nxml/nxml-parse.el"
;;;;;; "nxml/nxml-rap.el" "nxml/nxml-util.el" "nxml/rng-dt.el" "nxml/rng-loc.el"
;;;;;; "nxml/rng-maint.el" "nxml/rng-match.el" "nxml/rng-parse.el"
;;;;;; "nxml/rng-pttrn.el" "nxml/rng-uri.el" "nxml/rng-util.el"
-;;;;;; "nxml/xsd-regexp.el" "org/org-bibtex.el" "org/org-colview.el"
-;;;;;; "org/org-compat.el" "org/org-crypt.el" "org/org-datetree.el"
-;;;;;; "org/org-exp-blocks.el" "org/org-faces.el" "org/org-gnus.el"
-;;;;;; "org/org-habit.el" "org/org-info.el" "org/org-inlinetask.el"
+;;;;;; "nxml/xsd-regexp.el" "org/ob-C.el" "org/ob-R.el" "org/ob-asymptote.el"
+;;;;;; "org/ob-clojure.el" "org/ob-comint.el" "org/ob-css.el" "org/ob-ditaa.el"
+;;;;;; "org/ob-dot.el" "org/ob-emacs-lisp.el" "org/ob-eval.el" "org/ob-exp.el"
+;;;;;; "org/ob-gnuplot.el" "org/ob-haskell.el" "org/ob-latex.el"
+;;;;;; "org/ob-matlab.el" "org/ob-mscgen.el" "org/ob-ocaml.el" "org/ob-octave.el"
+;;;;;; "org/ob-perl.el" "org/ob-python.el" "org/ob-ref.el" "org/ob-ruby.el"
+;;;;;; "org/ob-sass.el" "org/ob-screen.el" "org/ob-sh.el" "org/ob-sql.el"
+;;;;;; "org/ob-sqlite.el" "org/ob-table.el" "org/org-beamer.el"
+;;;;;; "org/org-bibtex.el" "org/org-colview.el" "org/org-compat.el"
+;;;;;; "org/org-crypt.el" "org/org-ctags.el" "org/org-docview.el"
+;;;;;; "org/org-entities.el" "org/org-exp-blocks.el" "org/org-faces.el"
+;;;;;; "org/org-gnus.el" "org/org-habit.el" "org/org-info.el" "org/org-inlinetask.el"
;;;;;; "org/org-install.el" "org/org-jsinfo.el" "org/org-list.el"
;;;;;; "org/org-mac-message.el" "org/org-macs.el" "org/org-mew.el"
-;;;;;; "org/org-mhe.el" "org/org-mouse.el" "org/org-protocol.el"
+;;;;;; "org/org-mhe.el" "org/org-mks.el" "org/org-mouse.el" "org/org-protocol.el"
;;;;;; "org/org-rmail.el" "org/org-src.el" "org/org-vm.el" "org/org-w3m.el"
-;;;;;; "org/org-wl.el" "patcomp.el" "pcvs-info.el" "pcvs-parse.el"
-;;;;;; "pcvs-util.el" "pgg-def.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-defs.el" "progmodes/cc-fonts.el"
-;;;;;; "progmodes/cc-langs.el" "progmodes/cc-menus.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-toolbar.el" "progmodes/mantemp.el" "progmodes/xscheme.el"
-;;;;;; "ps-def.el" "ps-mule.el" "ps-samp.el" "saveplace.el" "sb-image.el"
-;;;;;; "scroll-bar.el" "select.el" "soundex.el" "subdirs.el" "tempo.el"
-;;;;;; "textmodes/bib-mode.el" "textmodes/makeinfo.el" "textmodes/page-ext.el"
-;;;;;; "textmodes/refbib.el" "textmodes/refer.el" "textmodes/reftex-auc.el"
-;;;;;; "textmodes/reftex-dcr.el" "textmodes/reftex-ref.el" "textmodes/reftex-sel.el"
-;;;;;; "textmodes/reftex-toc.el" "textmodes/texnfo-upd.el" "timezone.el"
+;;;;;; "org/org-wl.el" "patcomp.el" "paths.el" "pgg-def.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-defs.el" "progmodes/cc-fonts.el" "progmodes/cc-langs.el"
+;;;;;; "progmodes/cc-menus.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-toolbar.el" "progmodes/mantemp.el"
+;;;;;; "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el"
+;;;;;; "register.el" "replace.el" "rfn-eshadow.el" "saveplace.el"
+;;;;;; "sb-image.el" "scroll-bar.el" "select.el" "simple.el" "soundex.el"
+;;;;;; "startup.el" "subdirs.el" "subr.el" "tempo.el" "textmodes/bib-mode.el"
+;;;;;; "textmodes/fill.el" "textmodes/makeinfo.el" "textmodes/page-ext.el"
+;;;;;; "textmodes/page.el" "textmodes/paragraphs.el" "textmodes/refbib.el"
+;;;;;; "textmodes/refer.el" "textmodes/reftex-auc.el" "textmodes/reftex-dcr.el"
+;;;;;; "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" "textmodes/reftex-toc.el"
+;;;;;; "textmodes/texnfo-upd.el" "textmodes/text-mode.el" "themes/tango-dark-theme.el"
+;;;;;; "themes/tango-theme.el" "themes/wheatgrass-theme.el" "timezone.el"
;;;;;; "tooltip.el" "tree-widget.el" "uniquify.el" "url/url-about.el"
;;;;;; "url/url-cookie.el" "url/url-dired.el" "url/url-expand.el"
;;;;;; "url/url-ftp.el" "url/url-history.el" "url/url-imap.el" "url/url-methods.el"
-;;;;;; "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" "vc-dav.el"
-;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-fns.el"
-;;;;;; "w32-vars.el" "x-dnd.el") (19375 51700 955763))
+;;;;;; "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" "vc/ediff-diff.el"
+;;;;;; "vc/ediff-init.el" "vc/ediff-merg.el" "vc/ediff-ptch.el"
+;;;;;; "vc/ediff-vers.el" "vc/ediff-wind.el" "vc/pcvs-info.el" "vc/pcvs-parse.el"
+;;;;;; "vc/pcvs-util.el" "vc/vc-dav.el" "vcursor.el" "version.el"
+;;;;;; "vt-control.el" "vt100-led.el" "w32-fns.el" "w32-vars.el"
+;;;;;; "widget.el" "x-dnd.el") (19640 50567 802767))
;;;***
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 4dba41e0655..f19143228c5 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -637,7 +637,7 @@ SWITCHES, TIME-INDEX and NOW give the full switch list and time data."
;; They tend to be bogus on non-UNIX platforms anyway so
;; optionally hide them.
(if (memq 'uid ls-lisp-verbosity)
- ;; uid can be a sting or an integer
+ ;; uid can be a string or an integer
(let ((uid (nth 2 file-attr)))
(format (if (stringp uid)
ls-lisp-uid-s-fmt
diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el
index b3ec3fb4850..d84e60fb604 100644
--- a/lisp/mail/emacsbug.el
+++ b/lisp/mail/emacsbug.el
@@ -173,9 +173,9 @@ Prompts for bug subject. Leaves you in a mail buffer."
(overlay-put (make-overlay pos (point)) 'face 'highlight))
(insert " if possible, because the Emacs maintainers
usually do not have translators to read other languages for them.\n\n")
- (insert (format "Your bug report will be posted to the %s mailing list"
+ (insert (format "Your report will be posted to the %s mailing list"
report-emacs-bug-address))
- (insert ",\nand to the gnu.emacs.bug news group.\n\n"))
+ (insert "\nand the gnu.emacs.bug news group, and at http://debbugs.gnu.org.\n\n"))
(insert "Please describe exactly what actions triggered the bug\n"
"and the precise symptoms of the bug. If you can, give\n"
@@ -377,5 +377,4 @@ and send the mail again%s."
(provide 'emacsbug)
-;; arch-tag: 248b6523-c3b5-4fec-9a3f-0411fafa7d49
;;; emacsbug.el ends here
diff --git a/lisp/mail/hashcash.el b/lisp/mail/hashcash.el
index cc3af11a47d..efa27c3305d 100644
--- a/lisp/mail/hashcash.el
+++ b/lisp/mail/hashcash.el
@@ -48,6 +48,7 @@
;;; Code:
+;; For Emacs <22.2 and XEmacs.
(eval-and-compile
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el
index 1c527f22113..a8def04100e 100644
--- a/lisp/mail/mail-utils.el
+++ b/lisp/mail/mail-utils.el
@@ -401,6 +401,7 @@ The buffer should be narrowed to just the header."
(let ((from (or (mail-fetch-field "from")
(mail-fetch-field "really-from")
(mail-fetch-field "sender")
+ (mail-fetch-field "return-path")
"unknown"))
(date (mail-fetch-field "date")))
(format "From %s %s\n" (mail-strip-quoted-names from)
@@ -411,5 +412,4 @@ The buffer should be narrowed to just the header."
(provide 'mail-utils)
-;; arch-tag: b24aec2f-fd65-4ceb-9e39-3cc2827036fd
;;; mail-utils.el ends here
diff --git a/lisp/mail/mspools.el b/lisp/mail/mspools.el
index 705c06977bb..1a397db7a0d 100644
--- a/lisp/mail/mspools.el
+++ b/lisp/mail/mspools.el
@@ -172,7 +172,16 @@ your primary spool is. If this fails, set it to something like
(defvar mspools-buffer "*spools*"
"Name of buffer for displaying spool info.")
-(defvar mspools-mode-map nil
+(defvar mspools-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-c\C-c" 'mspools-visit-spool)
+ (define-key map "\C-m" 'mspools-visit-spool)
+ (define-key map " " 'mspools-visit-spool)
+ (define-key map "?" 'mspools-help)
+ (define-key map "q" 'mspools-quit)
+ (define-key map "n" 'next-line)
+ (define-key map "p" 'previous-line)
+ (define-key map "g" 'revert-buffer))
"Keymap for the *spools* buffer.")
;;; Code
@@ -320,21 +329,6 @@ Buffer is not displayed if SHOW is non-nil."
))))
(car (nth line-num mspools-files))))
-;;; Keymap
-
-(if mspools-mode-map
- ()
- (setq mspools-mode-map (make-sparse-keymap))
-
- (define-key mspools-mode-map "\C-c\C-c" 'mspools-visit-spool)
- (define-key mspools-mode-map "\C-m" 'mspools-visit-spool)
- (define-key mspools-mode-map " " 'mspools-visit-spool)
- (define-key mspools-mode-map "?" 'mspools-help)
- (define-key mspools-mode-map "q" 'mspools-quit)
- (define-key mspools-mode-map "n" 'next-line)
- (define-key mspools-mode-map "p" 'previous-line)
- (define-key mspools-mode-map "g" 'revert-buffer))
-
;;; Spools mode functions
(defun mspools-revert-buffer (ignore noconfirm)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 07ea7cc0d25..47e52f27aa1 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -2742,7 +2742,9 @@ The current mail message becomes the message displayed."
nil t 'unibyte)
(message "Malformed MIME quoted-printable message")))
((and (string= character-coding "base64") is-text-message)
- (base64-decode-region (point-min) (point-max)))
+ (condition-case err
+ (base64-decode-region (point-min) (point-max))
+ (error (message "%s" (cdr err)))))
((eq character-coding 'uuencode)
(error "uuencoded messages are not supported yet"))
(t))
@@ -3838,9 +3840,7 @@ The message should be narrowed to just the headers."
(1- (point))
(point-max)))))))
-(declare-function mail-sendmail-delimit-header "sendmail" ())
-(declare-function mail-header-end "sendmail" ())
-(declare-function mail-position-on-field "sendmail" (field &optional soft))
+(autoload 'mail-position-on-field "sendmail")
(defun rmail-retry-failure ()
"Edit a mail message which is based on the contents of the current message.
@@ -3926,18 +3926,19 @@ specifying headers which should not be copied into the new message."
;; Insert original text as initial text of new draft message.
;; Bind inhibit-read-only since the header delimiter
;; of the previous message was probably read-only.
- (let ((inhibit-read-only t))
+ (let ((inhibit-read-only t)
+ eoh)
(erase-buffer)
(insert-buffer-substring rmail-this-buffer
bounce-start bounce-end)
(goto-char (point-min))
(if bounce-indent
(indent-rigidly (point-min) (point-max) bounce-indent))
- ;; FIXME better to replace sendmail functions.
- (require 'sendmail)
- (mail-sendmail-delimit-header)
+ (rfc822-goto-eoh)
+ (setq eoh (point))
+ (insert mail-header-separator)
(save-restriction
- (narrow-to-region (point-min) (mail-header-end))
+ (narrow-to-region (point-min) eoh)
(rmail-delete-headers rmail-retry-ignored-headers)
(rmail-delete-headers "^\\(sender\\|return-path\\|received\\):")
(setq resending (mail-fetch-field "resent-to"))
@@ -4456,5 +4457,4 @@ following the containing message.
(provide 'rmail)
-;; arch-tag: 65d257d3-c281-4a65-9c38-e61af95af2f0
;;; rmail.el ends here
diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in
index 43328a9e46a..cd76ffa290a 100644
--- a/lisp/makefile.w32-in
+++ b/lisp/makefile.w32-in
@@ -50,7 +50,11 @@ LC_ALL = C
lisptagsfiles1 = $(lisp)/*.el
lisptagsfiles2 = $(lisp)/*/*.el
-ETAGS = "../lib-src/$(BLD)/etags"
+lisptagsfiles3 = $(lisp)/*/*/*.el
+lisptagsfiles4 = $(lisp)/*/*/*/*.el
+ETAGS = "../lib-src/$(BLD)/etags.exe"
+## $(DEST) is overridden by ../src/makefile.w32-in.
+DEST=$(lisp)
# Automatically generated autoload files, apart from lisp/loaddefs.el.
LOADDEFS = $(lisp)/calendar/cal-loaddefs.el \
@@ -244,11 +248,42 @@ cvs-update: bzr-update
update-authors:
$(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir)
-TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
- $(ETAGS) $(lisptagsfiles1) $(lisptagsfiles2)
+TAGS: TAGS-$(MAKETYPE)
-TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2)
- $(ETAGS) -o TAGS-LISP $(lisptagsfiles1) $(lisptagsfiles2)
+TAGS-LISP: TAGS-LISP-$(MAKETYPE)
+
+TAGS-nmake:
+ echo This target is not supported with NMake
+ exit -1
+
+TAGS-LISP-nmake:
+ echo This target is not supported with NMake
+ exit -1
+
+TAGS-gmake: TAGS-$(SHELLTYPE)
+
+TAGS-LISP-gmake: TAGS-LISP-$(SHELLTYPE)
+
+TAGS-SH: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+ - $(DEL) TAGS
+ for dir in . $(WINS_UPDATES); do \
+ $(ETAGS) -a $(lisp)/$$dir/*.el; \
+ done
+
+TAGS-LISP-SH: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+ - $(DEL) $(DEST)/TAGS-LISP
+ for dir in . $(WINS_UPDATES); do \
+ $(ETAGS) -a -o $(DEST)/TAGS-LISP $(lisp)/$$dir/*.el; \
+ done
+
+TAGS-CMD: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+ - $(DEL) TAGS
+ for %%d in (. $(WINS_UPDATES)) do $(ETAGS) -a $(lisp)/%%d/*.el
+
+TAGS-LISP-CMD: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4)
+ - $(DEL) $(DEST)/TAGS-LISP
+ for %%d in (. $(WINS_UPDATES)) do \
+ $(ETAGS) -a -o $(DEST)/TAGS-LISP $(lisp)/%%d/*.el
.SUFFIXES: .elc .el
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index f7dc035a886..98380f3926e 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -133,8 +133,8 @@ the closest directory separators."
"Apply FUN to each element of XS in turn.
Return the first non-nil returned value.
Like CL's `some'."
- (let ((firsterror nil)
- res)
+ (lexical-let ((firsterror nil)
+ res)
(while (and (not res) xs)
(condition-case err
(setq res (funcall fun (pop xs)))
@@ -485,10 +485,30 @@ in the last `cdr'."
(defun completion--replace (beg end newtext)
"Replace the buffer text between BEG and END with NEWTEXT.
Moves point to the end of the new text."
- ;; This should be in subr.el.
+ ;; Maybe this should be in subr.el.
;; You'd think this is trivial to do, but details matter if you want
;; to keep markers "at the right place" and be robust in the face of
;; after-change-functions that may themselves modify the buffer.
+ (let ((prefix-len 0))
+ ;; Don't touch markers in the shared prefix (if any).
+ (while (and (< prefix-len (length newtext))
+ (< (+ beg prefix-len) end)
+ (eq (char-after (+ beg prefix-len))
+ (aref newtext prefix-len)))
+ (setq prefix-len (1+ prefix-len)))
+ (unless (zerop prefix-len)
+ (setq beg (+ beg prefix-len))
+ (setq newtext (substring newtext prefix-len))))
+ (let ((suffix-len 0))
+ ;; Don't touch markers in the shared suffix (if any).
+ (while (and (< suffix-len (length newtext))
+ (< beg (- end suffix-len))
+ (eq (char-before (- end suffix-len))
+ (aref newtext (- (length newtext) suffix-len 1))))
+ (setq suffix-len (1+ suffix-len)))
+ (unless (zerop suffix-len)
+ (setq end (- end suffix-len))
+ (setq newtext (substring newtext 0 (- suffix-len)))))
(goto-char beg)
(insert newtext)
(delete-region (point) (+ (point) (- end beg))))
@@ -520,15 +540,16 @@ E = after completion we now have an Exact match.
101 5 ??? impossible
110 6 some completion happened
111 7 completed to an exact completion"
- (let* ((beg (field-beginning))
- (end (field-end))
- (string (buffer-substring beg end))
- (comp (funcall (or try-completion-function
- 'completion-try-completion)
- string
- minibuffer-completion-table
- minibuffer-completion-predicate
- (- (point) beg))))
+ (lexical-let*
+ ((beg (field-beginning))
+ (end (field-end))
+ (string (buffer-substring beg end))
+ (comp (funcall (or try-completion-function
+ 'completion-try-completion)
+ string
+ minibuffer-completion-table
+ minibuffer-completion-predicate
+ (- (point) beg))))
(cond
((null comp)
(minibuffer-hide-completions)
@@ -541,14 +562,15 @@ E = after completion we now have an Exact match.
;; `completed' should be t if some completion was done, which doesn't
;; include simply changing the case of the entered string. However,
;; for appearance, the string is rewritten if the case changes.
- (let* ((comp-pos (cdr comp))
- (completion (car comp))
- (completed (not (eq t (compare-strings completion nil nil
- string nil nil t))))
- (unchanged (eq t (compare-strings completion nil nil
- string nil nil nil))))
+ (lexical-let*
+ ((comp-pos (cdr comp))
+ (completion (car comp))
+ (completed (not (eq t (compare-strings completion nil nil
+ string nil nil t))))
+ (unchanged (eq t (compare-strings completion nil nil
+ string nil nil nil))))
(if unchanged
- (goto-char end)
+ (goto-char end)
;; Insert in minibuffer the chars we got.
(completion--replace beg end completion))
;; Move point to its completion-mandated destination.
@@ -729,8 +751,8 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
`minibuffer-confirm-exit-commands', and accept the input
otherwise."
(interactive)
- (let ((beg (field-beginning))
- (end (field-end)))
+ (lexical-let ((beg (field-beginning))
+ (end (field-end)))
(cond
;; Allow user to specify null string
((= beg end) (exit-minibuffer))
@@ -1107,14 +1129,13 @@ variables.")
"Display a list of possible completions of the current minibuffer contents."
(interactive)
(message "Making completion list...")
- (let* ((non-essential t)
- (start (field-beginning))
- (string (field-string))
- (completions (completion-all-completions
- string
- minibuffer-completion-table
- minibuffer-completion-predicate
- (- (point) (field-beginning)))))
+ (lexical-let* ((start (field-beginning))
+ (string (field-string))
+ (completions (completion-all-completions
+ string
+ minibuffer-completion-table
+ minibuffer-completion-predicate
+ (- (point) (field-beginning)))))
(message nil)
(if (and completions
(or (consp (cdr completions))
@@ -1767,9 +1788,10 @@ Return the new suffix."
(substring afterpoint 0 (cdr bounds)))))
(defun completion-basic-try-completion (string table pred point)
- (let* ((beforepoint (substring string 0 point))
- (afterpoint (substring string point))
- (bounds (completion-boundaries beforepoint table pred afterpoint)))
+ (lexical-let*
+ ((beforepoint (substring string 0 point))
+ (afterpoint (substring string point))
+ (bounds (completion-boundaries beforepoint table pred afterpoint)))
(if (zerop (cdr bounds))
;; `try-completion' may return a subtly different result
;; than `all+merge', so try to use it whenever possible.
@@ -1780,22 +1802,30 @@ Return the new suffix."
(concat completion
(completion--merge-suffix completion point afterpoint))
(length completion))))
- (let* ((suffix (substring afterpoint (cdr bounds)))
- (prefix (substring beforepoint 0 (car bounds)))
- (pattern (completion-basic--pattern
- beforepoint afterpoint bounds))
- (all (completion-pcm--all-completions prefix pattern table pred)))
+ (lexical-let*
+ ((suffix (substring afterpoint (cdr bounds)))
+ (prefix (substring beforepoint 0 (car bounds)))
+ (pattern (delete
+ "" (list (substring beforepoint (car bounds))
+ 'point
+ (substring afterpoint 0 (cdr bounds)))))
+ (all (completion-pcm--all-completions prefix pattern table pred)))
(if minibuffer-completing-file-name
(setq all (completion-pcm--filename-try-filter all)))
(completion-pcm--merge-try pattern all prefix suffix)))))
(defun completion-basic-all-completions (string table pred point)
- (let* ((beforepoint (substring string 0 point))
- (afterpoint (substring string point))
- (bounds (completion-boundaries beforepoint table pred afterpoint))
- (prefix (substring beforepoint 0 (car bounds)))
- (pattern (completion-basic--pattern beforepoint afterpoint bounds))
- (all (completion-pcm--all-completions prefix pattern table pred)))
+ (lexical-let*
+ ((beforepoint (substring string 0 point))
+ (afterpoint (substring string point))
+ (bounds (completion-boundaries beforepoint table pred afterpoint))
+ (suffix (substring afterpoint (cdr bounds)))
+ (prefix (substring beforepoint 0 (car bounds)))
+ (pattern (delete
+ "" (list (substring beforepoint (car bounds))
+ 'point
+ (substring afterpoint 0 (cdr bounds)))))
+ (all (completion-pcm--all-completions prefix pattern table pred)))
(completion-hilit-commonality all point (car bounds))))
;;; Partial-completion-mode style completion.
@@ -1958,12 +1988,13 @@ POINT is a position inside STRING.
FILTER is a function applied to the return value, that can be used, e.g. to
filter out additional entries (because TABLE migth not obey PRED)."
(unless filter (setq filter 'identity))
- (let* ((beforepoint (substring string 0 point))
- (afterpoint (substring string point))
- (bounds (completion-boundaries beforepoint table pred afterpoint))
- (prefix (substring beforepoint 0 (car bounds)))
- (suffix (substring afterpoint (cdr bounds)))
- firsterror)
+ (lexical-let*
+ ((beforepoint (substring string 0 point))
+ (afterpoint (substring string point))
+ (bounds (completion-boundaries beforepoint table pred afterpoint))
+ (prefix (substring beforepoint 0 (car bounds)))
+ (suffix (substring afterpoint (cdr bounds)))
+ firsterror)
(setq string (substring string (car bounds) (+ point (cdr bounds))))
(let* ((relpoint (- point (car bounds)))
(pattern (completion-pcm--string->pattern string relpoint))
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 02ce48787e7..b71df57556c 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -2130,12 +2130,5 @@ choose a font."
(provide 'mouse)
-;; This file contains the functionality of the old mldrag.el.
-(defalias 'mldrag-drag-mode-line 'mouse-drag-mode-line)
-(defalias 'mldrag-drag-vertical-line 'mouse-drag-vertical-line)
-(make-obsolete 'mldrag-drag-mode-line 'mouse-drag-mode-line "21.1")
-(make-obsolete 'mldrag-drag-vertical-line 'mouse-drag-vertical-line "21.1")
-(provide 'mldrag)
-
;; arch-tag: 9a710ce1-914a-4923-9b81-697f7bf82ab3
;;; mouse.el ends here
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index d98c72570a4..45dde6dba3c 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -205,12 +205,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Variables
-(eval-when-compile (require 'cl)
- (require 'thingatpt)
- (require 'term)
- (require 'dired)
- (require 'executable)
- (require 'w3-auto nil t))
+(eval-when-compile (require 'cl))
(defgroup browse-url nil
"Use a web browser to look at a URL."
@@ -756,6 +751,9 @@ narrowed."
(add-hook 'kill-buffer-hook 'browse-url-delete-temp-file)
+(declare-function dired-get-filename "dired"
+ (&optional localp no-error-if-not-filep))
+
;;;###autoload
(defun browse-url-of-dired-file ()
"In Dired, ask a WWW browser to display the file named on this line."
@@ -937,10 +935,7 @@ Galeon, Konqueror, Netscape, Mosaic, Lynx in an xterm, and then W3."
;;;###autoload
(defun browse-url-xdg-open (url &optional new-window)
(interactive (browse-url-interactive-arg "URL: "))
- (call-process "/bin/sh" nil nil nil
- "-c"
- (concat "nohup xdg-open " url
- ">/dev/null 2>&1 </dev/null")))
+ (call-process "nohup" nil nil nil "xdg-open" url))
;;;###autoload
(defun browse-url-netscape (url &optional new-window)
@@ -1387,6 +1382,10 @@ with possible additional arguments `browse-url-xterm-args'."
;; --- Lynx in an Emacs "term" window ---
+(declare-function term-char-mode "term" ())
+(declare-function term-send-down "term" ())
+(declare-function term-send-string "term" (proc str))
+
;;;###autoload
(defun browse-url-text-emacs (url &optional new-buffer)
"Ask a text browser to load URL.
@@ -1407,6 +1406,7 @@ used instead of `browse-url-new-window-flag'."
(buf (get-buffer "*text browser*"))
(proc (and buf (get-buffer-process buf)))
(n browse-url-text-input-attempts))
+ (require 'term)
(if (and (browse-url-maybe-new-window new-buffer) buf)
;; Rename away the OLD buffer. This isn't very polite, but
;; term insists on working in a buffer named *lynx* and would
@@ -1571,5 +1571,4 @@ from `browse-url-elinks-wrapper'."
(provide 'browse-url)
-;; arch-tag: d2079573-5c06-4097-9598-f550fba19430
;;; browse-url.el ends here
diff --git a/lisp/net/dig.el b/lisp/net/dig.el
index 9392c73855b..d36247a1d1f 100644
--- a/lisp/net/dig.el
+++ b/lisp/net/dig.el
@@ -129,12 +129,11 @@ Buffer should contain output generated by `dig-invoke'."
(put 'dig-mode 'mode-class 'special)
-(defvar dig-mode-map nil)
-(unless dig-mode-map
- (setq dig-mode-map (make-sparse-keymap))
- (suppress-keymap dig-mode-map)
-
- (define-key dig-mode-map "q" 'dig-exit))
+(defvar dig-mode-map
+ (let ((map (make-sparse-keymap)))
+ (suppress-keymap map)
+ (define-key map "q" 'dig-exit)
+ map))
(define-derived-mode dig-mode nil "Dig"
"Major mode for displaying dig output."
diff --git a/lisp/net/eudc-hotlist.el b/lisp/net/eudc-hotlist.el
index 7798fa43d99..5862384bd4d 100644
--- a/lisp/net/eudc-hotlist.el
+++ b/lisp/net/eudc-hotlist.el
@@ -33,9 +33,18 @@
(require 'eudc)
(defvar eudc-hotlist-menu nil)
-(defvar eudc-hotlist-mode-map nil)
(defvar eudc-hotlist-list-beginning nil)
+(defvar eudc-hotlist-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "a" 'eudc-hotlist-add-server)
+ (define-key map "d" 'eudc-hotlist-delete-server)
+ (define-key map "s" 'eudc-hotlist-select-server)
+ (define-key map "t" 'eudc-hotlist-transpose-servers)
+ (define-key map "q" 'eudc-hotlist-quit-edit)
+ (define-key map "x" 'kill-this-buffer)
+ map))
+
(defun eudc-hotlist-mode ()
"Major mode used to edit the hotlist of servers.
@@ -169,16 +178,6 @@ These are the special commands of this mode:
(forward-line 1)
(transpose-lines 1))))))
-(setq eudc-hotlist-mode-map
- (let ((map (make-sparse-keymap)))
- (define-key map "a" 'eudc-hotlist-add-server)
- (define-key map "d" 'eudc-hotlist-delete-server)
- (define-key map "s" 'eudc-hotlist-select-server)
- (define-key map "t" 'eudc-hotlist-transpose-servers)
- (define-key map "q" 'eudc-hotlist-quit-edit)
- (define-key map "x" 'kill-this-buffer)
- map))
-
(defconst eudc-hotlist-menu
'("EUDC Hotlist Edit"
["---" nil nil]
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index 27d44d32bd3..00cdcd8ea9b 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -1,9 +1,10 @@
-;;; gnutls.el --- Support SSL and TLS connections through GnuTLS
+;;; gnutls.el --- Support SSL/TLS connections through GnuTLS
;; Copyright (C) 2010 Free Software Foundation, Inc.
;; Author: Ted Zlatanov <tzz@lifelogs.com>
;; Keywords: comm, tls, ssl, encryption
;; Originally-By: Simon Josefsson (See http://josefsson.org/emacs-security/)
+;; Thanks-To: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; This file is part of GNU Emacs.
@@ -27,8 +28,8 @@
;; Simple test:
;;
-;; (setq jas (open-ssl-stream "ssl" (current-buffer) "www.pdc.kth.se" 443))
-;; (process-send-string jas "GET /\r\n\r\n")
+;; (open-gnutls-stream "tls" "tls-buffer" "yourserver.com" "https")
+;; (open-gnutls-stream "tls" "tls-buffer" "imap.gmail.com" "imaps")
;;; Code:
@@ -42,8 +43,8 @@
:type 'integer
:group 'gnutls)
-(defun open-ssl-stream (name buffer host service)
- "Open a SSL connection for a service to a host.
+(defun open-gnutls-stream (name buffer host service)
+ "Open a SSL/TLS connection for a service to a host.
Returns a subprocess-object to represent the connection.
Input and output work as for subprocesses; `delete-process' closes it.
Args are NAME BUFFER HOST SERVICE.
@@ -55,56 +56,45 @@ BUFFER is the buffer (or `buffer-name') to associate with the process.
with any buffer
Third arg is name of the host to connect to, or its IP address.
Fourth arg SERVICE is name of the service desired, or an integer
-specifying a port number to connect to."
- (let ((proc (open-network-stream name buffer host service)))
- (starttls-negotiate proc nil 'gnutls-x509pki)))
-
-;; (open-ssl-stream "tls" "tls-buffer" "yourserver.com" "https")
-(defun starttls-negotiate (proc &optional priority-string
- credentials credentials-file)
- "Negotiate a SSL or TLS connection.
-PROC is the process returned by `starttls-open-stream'.
-PRIORITY-STRING is as per the GnuTLS docs.
-CREDENTIALS is `gnutls-x509pki' or `gnutls-anon'.
-CREDENTIALS-FILE is a filename with meaning dependent on CREDENTIALS."
- (let* ((credentials (or credentials 'gnutls-x509pki))
- (credentials-file (or credentials-file
- "/etc/ssl/certs/ca-certificates.crt"
- ;"/etc/ssl/certs/ca.pem"
- ))
+specifying a port number to connect to.
+This is a very simple wrapper around `gnutls-negotiate'. See its
+documentation for the specific parameters you can use to open a
+GnuTLS connection, including specifying the credential type,
+trust and key files, and priority string."
+ (let ((proc (open-network-stream name buffer host service)))
+ (gnutls-negotiate proc 'gnutls-x509pki)))
+
+(defun gnutls-negotiate (proc type &optional priority-string
+ trustfiles keyfiles)
+ "Negotiate a SSL/TLS connection.
+TYPE is `gnutls-x509pki' (default) or `gnutls-anon'. Use nil for the default.
+PROC is a process returned by `open-network-stream'.
+PRIORITY-STRING is as per the GnuTLS docs, default is \"NORMAL\".
+TRUSTFILES is a list of CA bundles.
+KEYFILES is a list of client keys."
+ (let* ((type (or type 'gnutls-x509pki))
+ (trusfiles (or trustfiles
+ '("/etc/ssl/certs/ca-certificates.crt")))
(priority-string (or priority-string
(cond
- ((eq credentials 'gnutls-anon)
+ ((eq type 'gnutls-anon)
"NORMAL:+ANON-DH:!ARCFOUR-128")
- ((eq credentials 'gnutls-x509pki)
+ ((eq type 'gnutls-x509pki)
"NORMAL"))))
+ (params `(:priority ,priority-string
+ :loglevel ,gnutls-log-level
+ :trustfiles ,trustfiles
+ :keyfiles ,keyfiles
+ :callbacks nil))
ret)
(gnutls-message-maybe
- (setq ret (gnutls-boot proc priority-string
- credentials credentials-file
- nil nil gnutls-log-level))
+ (setq ret (gnutls-boot proc type params))
"boot: %s")
proc))
-(defun starttls-open-stream (name buffer host service)
- "Open a TLS connection for a service to a host.
-Returns a subprocess-object to represent the connection.
-Input and output work as for subprocesses; `delete-process' closes it.
-Args are NAME BUFFER HOST SERVICE.
-NAME is name for process. It is modified if necessary to make it unique.
-BUFFER is the buffer (or `buffer-name') to associate with the process.
- Process output goes at end of that buffer, unless you specify
- an output stream or filter function to handle the output.
- BUFFER may be also nil, meaning that this process is not associated
- with any buffer
-Third arg is name of the host to connect to, or its IP address.
-Fourth arg SERVICE is name of the service desired, or an integer
-specifying a port number to connect to."
- (open-network-stream name buffer host service))
-
(defun gnutls-message-maybe (doit format &rest params)
"When DOIT, message with the caller name followed by FORMAT on PARAMS."
;; (apply 'debug format (or params '(nil)))
@@ -114,8 +104,6 @@ specifying a port number to connect to."
doit (gnutls-error-string doit)
(apply 'format format (or params '(nil))))))
-(provide 'ssl)
(provide 'gnutls)
-(provide 'starttls)
;;; gnutls.el ends here
diff --git a/lisp/net/imap.el b/lisp/net/imap.el
index ed72d7b9ce0..9265e962b38 100644
--- a/lisp/net/imap.el
+++ b/lisp/net/imap.el
@@ -139,6 +139,7 @@
(eval-when-compile (require 'cl))
(eval-and-compile
+ ;; For Emacs <22.2 and XEmacs.
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))
(autoload 'starttls-open-stream "starttls")
(autoload 'starttls-negotiate "starttls")
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index 1974427c829..e5c959d8f23 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -735,23 +735,21 @@ VALUES may contain values for editable fields from current article."
;;;; Major mode for editing/deleting/saving searches
-(defvar mairix-searches-mode-map nil "'mairix-searches-mode' keymap.")
-
-;; Keymap
-(if (not mairix-searches-mode-map)
- (let ((map (make-keymap)))
- (define-key map [(return)] 'mairix-select-search)
- (define-key map [(down)] 'mairix-next-search)
- (define-key map [(up)] 'mairix-previous-search)
- (define-key map [(right)] 'mairix-next-search)
- (define-key map [(left)] 'mairix-previous-search)
- (define-key map "\C-p" 'mairix-previous-search)
- (define-key map "\C-n" 'mairix-next-search)
- (define-key map [(q)] 'mairix-select-quit)
- (define-key map [(e)] 'mairix-select-edit)
- (define-key map [(d)] 'mairix-select-delete)
- (define-key map [(s)] 'mairix-select-save)
- (setq mairix-searches-mode-map map)))
+(defvar mairix-searches-mode-map
+ (let ((map (make-keymap)))
+ (define-key map [(return)] 'mairix-select-search)
+ (define-key map [(down)] 'mairix-next-search)
+ (define-key map [(up)] 'mairix-previous-search)
+ (define-key map [(right)] 'mairix-next-search)
+ (define-key map [(left)] 'mairix-previous-search)
+ (define-key map "\C-p" 'mairix-previous-search)
+ (define-key map "\C-n" 'mairix-next-search)
+ (define-key map [(q)] 'mairix-select-quit)
+ (define-key map [(e)] 'mairix-select-edit)
+ (define-key map [(d)] 'mairix-select-delete)
+ (define-key map [(s)] 'mairix-select-save)
+ (setq mairix-searches-mode-map map))
+ "'mairix-searches-mode' keymap.")
(defvar mairix-searches-mode-font-lock-keywords)
diff --git a/lisp/net/netrc.el b/lisp/net/netrc.el
index d76b8cf3a04..ff0b52c2b96 100644
--- a/lisp/net/netrc.el
+++ b/lisp/net/netrc.el
@@ -131,19 +131,23 @@ Entries without port tokens default to DEFAULTPORT."
;; No machine name matches, so we look for default entries.
(while rest
(when (assoc "default" (car rest))
- (push (car rest) result))
+ (let ((elem (car rest)))
+ (setq elem (delete (assoc "default" elem) elem))
+ (push elem result)))
(pop rest)))
(when result
(setq result (nreverse result))
- (while (and result
- (not (netrc-port-equal
- (or port defaultport "nntp")
- ;; when port is not given in the netrc file,
- ;; it should mean "any port"
- (or (netrc-get (car result) "port")
- defaultport port))))
- (pop result))
- (car result))))
+ (if (not port)
+ (car result)
+ (while (and result
+ (not (netrc-port-equal
+ (or port defaultport "nntp")
+ ;; when port is not given in the netrc file,
+ ;; it should mean "any port"
+ (or (netrc-get (car result) "port")
+ defaultport port))))
+ (pop result))
+ (car result)))))
(defun netrc-machine-user-or-password (mode authinfo-file-or-list machines ports defaults)
"Get the user name or password according to MODE from AUTHINFO-FILE-OR-LIST.
@@ -238,9 +242,11 @@ Port specifications will be prioritised in the order they are
listed in the PORTS list."
(let ((list (netrc-parse))
found)
- (while (and ports
- (not found))
- (setq found (netrc-machine list machine (pop ports))))
+ (if (not ports)
+ (setq found (netrc-machine list machine))
+ (while (and ports
+ (not found))
+ (setq found (netrc-machine list machine (pop ports)))))
(when found
(list (cdr (assoc "login" found))
(cdr (assoc "password" found))))))
diff --git a/lisp/net/quickurl.el b/lisp/net/quickurl.el
index 93e0aca541f..4a8625ae745 100644
--- a/lisp/net/quickurl.el
+++ b/lisp/net/quickurl.el
@@ -173,7 +173,20 @@ in your ~/.emacs (after loading/requiring quickurl).")
(defvar quickurl-urls nil
"URL alist for use with `quickurl' and `quickurl-ask'.")
-(defvar quickurl-list-mode-map nil
+(defvar quickurl-list-mode-map
+ (let ((map (make-sparse-keymap)))
+ (suppress-keymap map t)
+ (define-key map "a" #'quickurl-list-add-url)
+ (define-key map [(control m)] #'quickurl-list-insert-url)
+ (define-key map "u" #'quickurl-list-insert-naked-url)
+ (define-key map " " #'quickurl-list-insert-with-lookup)
+ (define-key map "l" #'quickurl-list-insert-lookup)
+ (define-key map "d" #'quickurl-list-insert-with-desc)
+ (define-key map [(control g)] #'quickurl-list-quit)
+ (define-key map "q" #'quickurl-list-quit)
+ (define-key map [mouse-2] #'quickurl-list-mouse-select)
+ (define-key map "?" #'describe-mode)
+ map)
"Local keymap for a `quickurl-list-mode' buffer.")
(defvar quickurl-list-buffer-name "*quickurl-list*"
@@ -420,21 +433,6 @@ current buffer, this default action can be modifed via
;; quickurl-list mode.
-(unless quickurl-list-mode-map
- (let ((map (make-sparse-keymap)))
- (suppress-keymap map t)
- (define-key map "a" #'quickurl-list-add-url)
- (define-key map [(control m)] #'quickurl-list-insert-url)
- (define-key map "u" #'quickurl-list-insert-naked-url)
- (define-key map " " #'quickurl-list-insert-with-lookup)
- (define-key map "l" #'quickurl-list-insert-lookup)
- (define-key map "d" #'quickurl-list-insert-with-desc)
- (define-key map [(control g)] #'quickurl-list-quit)
- (define-key map "q" #'quickurl-list-quit)
- (define-key map [mouse-2] #'quickurl-list-mouse-select)
- (define-key map "?" #'describe-mode)
- (setq quickurl-list-mode-map map)))
-
(put 'quickurl-list-mode 'mode-class 'special)
;;;###autoload
diff --git a/lisp/net/telnet.el b/lisp/net/telnet.el
index 2c408f64264..25bf7db7612 100644
--- a/lisp/net/telnet.el
+++ b/lisp/net/telnet.el
@@ -61,7 +61,15 @@ PROGRAM says which program to run, to talk to that machine.
LOGIN-NAME, which is optional, says what to log in as on that machine.")
(defvar telnet-new-line "\r")
-(defvar telnet-mode-map nil)
+(defvar telnet-mode-map
+ (let ((map (nconc (make-sparse-keymap) comint-mode-map)))
+ (define-key map "\C-m" 'telnet-send-input)
+ ;; (define-key map "\C-j" 'telnet-send-input)
+ (define-key map "\C-c\C-q" 'send-process-next-char)
+ (define-key map "\C-c\C-c" 'telnet-interrupt-subjob)
+ (define-key map "\C-c\C-z" 'telnet-c-z)
+ map))
+
(defvar telnet-prompt-pattern "^[^#$%>\n]*[#$%>] *")
(defvar telnet-replace-c-g nil)
(make-variable-buffer-local
@@ -104,16 +112,6 @@ rejecting one login and prompting again for a username and password.")
(prog1 (read-char)
(setq quit-flag nil))))))
-; initialization on first load.
-(if telnet-mode-map
- nil
- (setq telnet-mode-map (nconc (make-sparse-keymap) comint-mode-map))
- (define-key telnet-mode-map "\C-m" 'telnet-send-input)
-; (define-key telnet-mode-map "\C-j" 'telnet-send-input)
- (define-key telnet-mode-map "\C-c\C-q" 'send-process-next-char)
- (define-key telnet-mode-map "\C-c\C-c" 'telnet-interrupt-subjob)
- (define-key telnet-mode-map "\C-c\C-z" 'telnet-c-z))
-
;;maybe should have a flag for when have found type
(defun telnet-check-software-type-initialize (string)
"Tries to put correct initializations in. Needs work."
diff --git a/lisp/net/tls.el b/lisp/net/tls.el
index d4fa8c2e73c..0ab4293f0d6 100644
--- a/lisp/net/tls.el
+++ b/lisp/net/tls.el
@@ -75,8 +75,8 @@ and `gnutls-cli' (version 2.0.1) output."
:type 'regexp
:group 'tls)
-(defcustom tls-program '("gnutls-cli -p %p %h"
- "gnutls-cli -p %p %h --protocols ssl3"
+(defcustom tls-program '("gnutls-cli --insecure -p %p %h"
+ "gnutls-cli --insecure -p %p %h --protocols ssl3"
"openssl s_client -connect %h:%p -no_ssl2 -ign_eof")
"List of strings containing commands to start TLS stream to a host.
Each entry in the list is tried until a connection is successful.
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 5745546e3e8..7885d143cc2 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -59,13 +59,6 @@
(defvar tramp-cache-data (make-hash-table :test 'equal)
"Hash table for remote files properties.")
-(defvar tramp-cache-inhibit-cache nil
- "Inhibit cache read access, when `t'.
-`nil' means to accept cache entries unconditionally. If the
-value is a timestamp (as returned by `current-time'), cache
-entries are not used when they have been written before this
-time.")
-
(defcustom tramp-persistency-file-name
(cond
;; GNU Emacs.
@@ -104,19 +97,25 @@ Returns DEFAULT if not set."
(value (when (hash-table-p hash) (gethash property hash))))
(if
;; We take the value only if there is any, and
- ;; `tramp-cache-inhibit-cache' indicates that it is still
+ ;; `remote-file-name-inhibit-cache' indicates that it is still
;; valid. Otherwise, DEFAULT is set.
(and (consp value)
- (or (null tramp-cache-inhibit-cache)
- (and (consp tramp-cache-inhibit-cache)
+ (or (null remote-file-name-inhibit-cache)
+ (and (integerp remote-file-name-inhibit-cache)
+ (<=
+ (tramp-time-diff (current-time) (car value))
+ remote-file-name-inhibit-cache))
+ (and (consp remote-file-name-inhibit-cache)
(tramp-time-less-p
- tramp-cache-inhibit-cache (car value)))))
+ remote-file-name-inhibit-cache (car value)))))
(setq value (cdr value))
(setq value default))
- (if (consp tramp-cache-inhibit-cache)
- (tramp-message vec 1 "%s %s %s" file property value))
(tramp-message vec 8 "%s %s %s" file property value)
+ (when (>= tramp-verbose 10)
+ (let* ((var (intern (concat "tramp-cache-get-count-" property)))
+ (val (or (ignore-errors (symbol-value var)) 0)))
+ (set var (1+ val))))
value))
;;;###tramp-autoload
@@ -132,6 +131,10 @@ Returns VALUE."
;; We put the timestamp there.
(puthash property (cons (current-time) value) hash)
(tramp-message vec 8 "%s %s %s" file property value)
+ (when (>= tramp-verbose 10)
+ (let* ((var (intern (concat "tramp-cache-set-count-" property)))
+ (val (or (ignore-errors (symbol-value var)) 0)))
+ (set var (1+ val))))
value))
;;;###tramp-autoload
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index 5937a737b96..e6e1bc671e7 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -99,6 +99,7 @@ When called interactively, a Tramp connection has to be selected."
(tramp-get-connection-property vec "process-buffer" nil)))
(when (bufferp buf) (kill-buffer buf)))))
+;;;###tramp-autoload
(defun tramp-cleanup-all-connections ()
"Flush all Tramp internal objects.
This includes password cache, file cache, connection cache, buffers."
@@ -117,6 +118,7 @@ This includes password cache, file cache, connection cache, buffers."
(dolist (name (tramp-list-tramp-buffers))
(when (bufferp (get-buffer name)) (kill-buffer name))))
+;;;###tramp-autoload
(defun tramp-cleanup-all-buffers ()
"Kill all remote buffers."
(interactive)
@@ -141,6 +143,7 @@ This includes password cache, file cache, connection cache, buffers."
(autoload 'reporter-submit-bug-report "reporter")
+;;;###tramp-autoload
(defun tramp-bug ()
"Submit a bug report to the Tramp developers."
(interactive)
@@ -150,65 +153,25 @@ This includes password cache, file cache, connection cache, buffers."
(reporter-submit-bug-report
tramp-bug-report-address ; to-address
(format "tramp (%s)" tramp-version) ; package name and version
- (delq nil
- `(;; Current state
- tramp-current-method
- tramp-current-user
- tramp-current-host
-
- ;; System defaults
- tramp-auto-save-directory ; vars to dump
- tramp-default-method
- tramp-default-method-alist
- tramp-default-host
- tramp-default-proxies-alist
- tramp-default-user
- tramp-default-user-alist
- tramp-rsh-end-of-line
- tramp-default-password-end-of-line
- tramp-login-prompt-regexp
- ;; Mask non-7bit characters
- (tramp-password-prompt-regexp . tramp-reporter-dump-variable)
- tramp-wrong-passwd-regexp
- tramp-yesno-prompt-regexp
- tramp-yn-prompt-regexp
- tramp-terminal-prompt-regexp
- tramp-temp-name-prefix
- tramp-file-name-structure
- tramp-file-name-regexp
- tramp-methods
- tramp-end-of-output
- tramp-local-coding-commands
- tramp-remote-coding-commands
- tramp-actions-before-shell
- tramp-actions-copy-out-of-band
- tramp-terminal-type
- ;; Mask non-7bit characters
- (tramp-shell-prompt-pattern . tramp-reporter-dump-variable)
- ,(when (boundp 'tramp-backup-directory-alist)
- 'tramp-backup-directory-alist)
- ,(when (boundp 'tramp-bkup-backup-directory-info)
- 'tramp-bkup-backup-directory-info)
- ;; Dump cache.
- (tramp-cache-data . tramp-reporter-dump-variable)
-
- ;; Non-tramp variables of interest
- ;; Mask non-7bit characters
- (shell-prompt-pattern . tramp-reporter-dump-variable)
- backup-by-copying
- backup-by-copying-when-linked
- backup-by-copying-when-mismatch
- ,(when (boundp 'backup-by-copying-when-privileged-mismatch)
- 'backup-by-copying-when-privileged-mismatch)
- ,(when (boundp 'password-cache)
- 'password-cache)
- ,(when (boundp 'password-cache-expiry)
- 'password-cache-expiry)
- ,(when (boundp 'backup-directory-alist)
- 'backup-directory-alist)
- ,(when (boundp 'bkup-backup-directory-info)
- 'bkup-backup-directory-info)
- file-name-handler-alist))
+ (sort
+ (delq nil (mapcar
+ (lambda (x)
+ (and x (boundp x) (cons x 'tramp-reporter-dump-variable)))
+ (append
+ (mapcar 'intern (all-completions "tramp-" obarray 'boundp))
+ ;; Non-tramp variables of interest.
+ '(shell-prompt-pattern
+ backup-by-copying
+ backup-by-copying-when-linked
+ backup-by-copying-when-mismatch
+ backup-by-copying-when-privileged-mismatch
+ backup-directory-alist
+ bkup-backup-directory-info
+ password-cache
+ password-cache-expiry
+ remote-file-name-inhibit-cache
+ file-name-handler-alist))))
+ (lambda (x y) (string< (symbol-name (car x)) (symbol-name (car y)))))
'tramp-load-report-modules ; pre-hook
'tramp-append-tramp-buffers ; post-hook
@@ -238,8 +201,7 @@ buffer in your bug report.
"))))
(defun tramp-reporter-dump-variable (varsym mailbuf)
- "Pretty-print the value of the variable in symbol VARSYM.
-Used for non-7bit chars in strings."
+ "Pretty-print the value of the variable in symbol VARSYM."
(let* ((reporter-eval-buffer (symbol-value 'reporter-eval-buffer))
(val (with-current-buffer reporter-eval-buffer
(symbol-value varsym))))
@@ -247,12 +209,13 @@ Used for non-7bit chars in strings."
(if (hash-table-p val)
;; Pretty print the cache.
(set varsym (read (format "(%s)" (tramp-cache-print val))))
- ;; There are characters to be masked.
+ ;; There are non-7bit characters to be masked.
(when (and (boundp 'mm-7bit-chars)
+ (stringp val)
(string-match
(concat "[^" (symbol-value 'mm-7bit-chars) "]") val))
(with-current-buffer reporter-eval-buffer
- (set varsym (format "(base64-decode-string \"%s\""
+ (set varsym (format "(base64-decode-string \"%s\")"
(base64-encode-string val))))))
;; Dump variable.
@@ -268,7 +231,7 @@ Used for non-7bit chars in strings."
"\\(\")\\)" "\"$")) ;; \4 "
(replace-match "\\1\\2\\3\\4")
(beginning-of-line)
- (insert " ;; variable encoded due to non-printable characters\n"))
+ (insert " ;; Variable encoded due to non-printable characters.\n"))
(forward-line 1))
;; Reset VARSYM to old value.
@@ -277,7 +240,6 @@ Used for non-7bit chars in strings."
(defun tramp-load-report-modules ()
"Load needed modules for reporting."
-
;; We load message.el and mml.el from Gnus.
(if (featurep 'xemacs)
(progn
@@ -290,7 +252,6 @@ Used for non-7bit chars in strings."
(defun tramp-append-tramp-buffers ()
"Append Tramp buffers and buffer local variables into the bug report."
-
(goto-char (point-max))
;; Dump buffer local variables.
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index 5156711fa47..130e3122df9 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -88,13 +88,18 @@
;; `directory-sep-char' is an obsolete variable in Emacs. But it is
;; used in XEmacs, so we set it here and there. The following is
;; needed to pacify Emacs byte-compiler.
- (unless (boundp 'byte-compile-not-obsolete-var)
- (defvar byte-compile-not-obsolete-var nil))
- (setq byte-compile-not-obsolete-var 'directory-sep-char)
- ;; Emacs 23.2.
- (unless (boundp 'byte-compile-not-obsolete-vars)
- (defvar byte-compile-not-obsolete-vars nil))
- (setq byte-compile-not-obsolete-vars '(directory-sep-char))
+ ;; Note that it was removed altogether in Emacs 24.1.
+ (when (boundp 'directory-sep-char)
+ (defvar byte-compile-not-obsolete-var nil)
+ (setq byte-compile-not-obsolete-var 'directory-sep-char)
+ ;; Emacs 23.2.
+ (defvar byte-compile-not-obsolete-vars nil)
+ (setq byte-compile-not-obsolete-vars '(directory-sep-char)))
+
+ ;; `remote-file-name-inhibit-cache' has been introduced with Emacs 24.1.
+ ;; Besides `t', `nil', and integer, we use also timestamps (as
+ ;; returned by `current-time') internally.
+ (defvar remote-file-name-inhibit-cache nil)
;; For not existing functions, or functions with a changed argument
;; list, there are compiler warnings. We want to avoid them in
@@ -490,10 +495,36 @@ This is the last value stored with `(process-put PROCESS PROPNAME VALUE)'."
It can be retrieved with `(process-get PROCESS PROPNAME)'."
(ignore-errors (tramp-compat-funcall 'process-put process propname value)))
+(defun tramp-compat-set-process-query-on-exit-flag (process flag)
+ "Specify if query is needed for process when Emacs is exited.
+If the second argument flag is non-nil, Emacs will query the user before
+exiting if process is running."
+ (if (fboundp 'set-process-query-on-exit-flag)
+ (tramp-compat-funcall 'set-process-query-on-exit-flag process flag)
+ (tramp-compat-funcall 'process-kill-without-query process flag)))
+
(add-hook 'tramp-unload-hook
(lambda ()
(unload-feature 'tramp-compat 'force)))
+(defun tramp-compat-coding-system-change-eol-conversion (coding-system eol-type)
+ "Return a coding system like CODING-SYSTEM but with given EOL-TYPE.
+EOL-TYPE can be one of `dos', `unix', or `mac'."
+ (cond ((fboundp 'coding-system-change-eol-conversion)
+ (tramp-compat-funcall
+ 'coding-system-change-eol-conversion coding-system eol-type))
+ ((fboundp 'subsidiary-coding-system)
+ (tramp-compat-funcall
+ 'subsidiary-coding-system coding-system
+ (cond ((eq eol-type 'dos) 'crlf)
+ ((eq eol-type 'unix) 'lf)
+ ((eq eol-type 'mac) 'cr)
+ (t
+ (error "Unknown EOL-TYPE `%s', must be %s"
+ eol-type
+ "`dos', `unix', or `mac'")))))
+ (t (error "Can't change EOL conversion -- is MULE missing?"))))
+
(provide 'tramp-compat)
;;; TODO:
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index cd2bab26f47..32322680f14 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -104,10 +104,6 @@
(require 'tramp)
-;; We call several `tramp-handle-*' functions directly. So we must
-;; reqire that package as well.
-(require 'tramp-sh)
-
(require 'dbus)
(require 'url-parse)
(require 'url-util)
@@ -531,7 +527,6 @@ is no information where to trace the message.")
(defun tramp-gvfs-dbus-event-error (event err)
"Called when a D-Bus error message arrives, see `dbus-event-error-hooks'."
(when tramp-gvfs-dbus-event-vector
- ;(tramp-cleanup-connection tramp-gvfs-dbus-event-vector)
(tramp-message tramp-gvfs-dbus-event-vector 10 "%S" event)
(tramp-error tramp-gvfs-dbus-event-vector 'file-error "%s" (cadr err))))
@@ -1198,7 +1193,7 @@ connection if a previous connection has died for some reason."
:name (tramp-buffer-name vec)
:buffer (tramp-get-buffer vec)
:server t :host 'local :service t)))
- (tramp-set-process-query-on-exit-flag p nil)))
+ (tramp-compat-set-process-query-on-exit-flag p nil)))
(unless (tramp-gvfs-connection-mounted-p vec)
(let* ((method (tramp-file-name-method vec))
diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el
index a550d46b9b5..71a23fd2d07 100644
--- a/lisp/net/tramp-gw.el
+++ b/lisp/net/tramp-gw.el
@@ -107,7 +107,7 @@
tramp-gw-vector 4
"Opening auxiliary process `%s', speaking with process `%s'"
proc tramp-gw-gw-proc)
- (tramp-set-process-query-on-exit-flag proc nil)
+ (tramp-compat-set-process-query-on-exit-flag proc nil)
;; We don't want debug messages, because the corresponding debug
;; buffer might be undecided.
(let (tramp-verbose)
@@ -154,7 +154,7 @@ instead of the host name declared in TARGET-VEC."
:name (tramp-buffer-name aux-vec) :buffer nil :host 'local
:server t :noquery t :service t :coding 'binary))
(set-process-sentinel tramp-gw-aux-proc 'tramp-gw-aux-proc-sentinel)
- (tramp-set-process-query-on-exit-flag tramp-gw-aux-proc nil)
+ (tramp-compat-set-process-query-on-exit-flag tramp-gw-aux-proc nil)
(tramp-message
vec 4 "Opening auxiliary process `%s', listening on port %d"
tramp-gw-aux-proc (process-contact tramp-gw-aux-proc :service))))
@@ -199,7 +199,7 @@ instead of the host name declared in TARGET-VEC."
(tramp-file-name-real-host target-vec)
(tramp-file-name-port target-vec)))
(set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel)
- (tramp-set-process-query-on-exit-flag tramp-gw-gw-proc nil)
+ (tramp-compat-set-process-query-on-exit-flag tramp-gw-gw-proc nil)
(tramp-message
vec 4 "Opened %s process `%s'"
(case gw-method ('tunnel "HTTP tunnel") ('socks "SOCKS"))
@@ -230,7 +230,7 @@ authentication is requested from proxy server, provide it."
(setq proc (open-network-stream
name buffer (nth 1 socks-server) (nth 2 socks-server)))
(set-process-coding-system proc 'binary 'binary)
- (tramp-set-process-query-on-exit-flag proc nil)
+ (tramp-compat-set-process-query-on-exit-flag proc nil)
;; Send CONNECT command.
(process-send-string proc (format "%s%s\r\n" command authentication))
(tramp-message
diff --git a/lisp/net/tramp-imap.el b/lisp/net/tramp-imap.el
index 4a5e2418cfb..dade2052126 100644
--- a/lisp/net/tramp-imap.el
+++ b/lisp/net/tramp-imap.el
@@ -122,7 +122,7 @@
(directory-file-name . tramp-handle-directory-file-name)
(directory-files . tramp-handle-directory-files)
(directory-files-and-attributes
- . tramp-imap-handle-directory-files-and-attributes)
+ . tramp-handle-directory-files-and-attributes)
(dired-call-process . ignore)
;; `dired-compress-file' performed by default handler
;; `dired-uncache' performed by default handler
@@ -130,8 +130,8 @@
;; `file-accessible-directory-p' performed by default handler
(file-attributes . tramp-imap-handle-file-attributes)
(file-directory-p . tramp-imap-handle-file-directory-p)
- (file-executable-p . tramp-imap-handle-file-executable-p)
- (file-exists-p . tramp-imap-handle-file-exists-p)
+ (file-executable-p . ignore)
+ (file-exists-p . tramp-handle-file-exists-p)
(file-local-copy . tramp-imap-handle-file-local-copy)
(file-modes . tramp-handle-file-modes)
(file-name-all-completions . tramp-imap-handle-file-name-all-completions)
@@ -140,9 +140,9 @@
(file-name-directory . tramp-handle-file-name-directory)
(file-name-nondirectory . tramp-handle-file-name-nondirectory)
;; `file-name-sans-versions' performed by default handler
- (file-newer-than-file-p . tramp-imap-handle-file-newer-than-file-p)
+ (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
(file-ownership-preserved-p . ignore)
- (file-readable-p . tramp-imap-handle-file-readable-p)
+ (file-readable-p . tramp-handle-file-exists-p)
(file-regular-p . tramp-handle-file-regular-p)
(file-remote-p . tramp-handle-file-remote-p)
;; `file-selinux-context' performed by default handler.
@@ -526,10 +526,6 @@ SIZE MODE WEIRD INODE DEVICE)."
(goto-char point)
(list (expand-file-name filename) size))))))
-(defun tramp-imap-handle-file-exists-p (filename)
- "Like `file-exists-p' for Tramp files."
- (and (file-attributes filename) t))
-
(defun tramp-imap-handle-file-directory-p (filename)
"Like `file-directory-p' for Tramp-IMAP files."
;; We allow only mailboxes to be a directory.
@@ -549,14 +545,6 @@ SIZE MODE WEIRD INODE DEVICE)."
"Get inode equivalent \(actually the UID) for Tramp-IMAP FILENAME."
(nth 10 (tramp-compat-file-attributes filename id-format)))
-(defun tramp-imap-handle-file-executable-p (filename)
- "Like `file-executable-p' for Tramp files. False for IMAP."
- nil)
-
-(defun tramp-imap-handle-file-readable-p (filename)
- "Like `file-readable-p' for Tramp files. True for IMAP."
- (file-exists-p filename))
-
(defun tramp-imap-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files. True for IMAP."
;; `file-exists-p' does not work yet for directories.
@@ -571,24 +559,6 @@ SIZE MODE WEIRD INODE DEVICE)."
(let ((iht (tramp-imap-make-iht v)))
(imap-hash-rem (tramp-imap-get-file-inode filename) iht))))))
-(defun tramp-imap-handle-directory-files-and-attributes
- (directory &optional full match nosort id-format)
- "Like `directory-files-and-attributes' for Tramp files."
- (mapcar
- (lambda (x)
- (cons x (tramp-compat-file-attributes
- (if full x (expand-file-name x directory)) id-format)))
- (directory-files directory full match nosort)))
-
-;; TODO: fix this in tramp-imap-get-file-entries.
-(defun tramp-imap-handle-file-newer-than-file-p (file1 file2)
- "Like `file-newer-than-file-p' for Tramp files."
- (cond
- ((not (file-exists-p file1)) nil)
- ((not (file-exists-p file2)) t)
- (t (tramp-time-less-p (nth 5 (file-attributes file2))
- (nth 5 (file-attributes file1))))))
-
(defun tramp-imap-handle-file-local-copy (filename)
"Like `file-local-copy' for Tramp files."
(with-parsed-tramp-file-name (expand-file-name filename) nil
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 423b4fcbd5e..474c39adeed 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -620,7 +620,7 @@ passed to `format', so percent characters need to be doubled.")
;; unless this spits out a complete line, including the '\n' at the
;; end.
;; The device number is returned as "-1", because there will be a virtual
-;; device number set in `tramp-handle-file-attributes'.
+;; device number set in `tramp-sh-handle-file-attributes'.
(defconst tramp-perl-file-attributes
"%s -e '
@stat = lstat($ARGV[0]);
@@ -867,62 +867,63 @@ This is used to map a mode number to a permission string.")
;; get-file-buffer.
(defconst tramp-sh-file-name-handler-alist
'((load . tramp-handle-load)
- (make-symbolic-link . tramp-handle-make-symbolic-link)
+ (make-symbolic-link . tramp-sh-handle-make-symbolic-link)
(file-name-as-directory . tramp-handle-file-name-as-directory)
(file-name-directory . tramp-handle-file-name-directory)
(file-name-nondirectory . tramp-handle-file-name-nondirectory)
- (file-truename . tramp-handle-file-truename)
- (file-exists-p . tramp-handle-file-exists-p)
- (file-directory-p . tramp-handle-file-directory-p)
- (file-executable-p . tramp-handle-file-executable-p)
- (file-readable-p . tramp-handle-file-readable-p)
+ (file-truename . tramp-sh-handle-file-truename)
+ (file-exists-p . tramp-sh-handle-file-exists-p)
+ (file-directory-p . tramp-sh-handle-file-directory-p)
+ (file-executable-p . tramp-sh-handle-file-executable-p)
+ (file-readable-p . tramp-sh-handle-file-readable-p)
(file-regular-p . tramp-handle-file-regular-p)
(file-symlink-p . tramp-handle-file-symlink-p)
- (file-writable-p . tramp-handle-file-writable-p)
- (file-ownership-preserved-p . tramp-handle-file-ownership-preserved-p)
- (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
- (file-attributes . tramp-handle-file-attributes)
+ (file-writable-p . tramp-sh-handle-file-writable-p)
+ (file-ownership-preserved-p . tramp-sh-handle-file-ownership-preserved-p)
+ (file-newer-than-file-p . tramp-sh-handle-file-newer-than-file-p)
+ (file-attributes . tramp-sh-handle-file-attributes)
(file-modes . tramp-handle-file-modes)
(directory-files . tramp-handle-directory-files)
- (directory-files-and-attributes . tramp-handle-directory-files-and-attributes)
- (file-name-all-completions . tramp-handle-file-name-all-completions)
+ (directory-files-and-attributes
+ . tramp-sh-handle-directory-files-and-attributes)
+ (file-name-all-completions . tramp-sh-handle-file-name-all-completions)
(file-name-completion . tramp-handle-file-name-completion)
- (add-name-to-file . tramp-handle-add-name-to-file)
- (copy-file . tramp-handle-copy-file)
- (copy-directory . tramp-handle-copy-directory)
- (rename-file . tramp-handle-rename-file)
- (set-file-modes . tramp-handle-set-file-modes)
- (set-file-times . tramp-handle-set-file-times)
- (make-directory . tramp-handle-make-directory)
- (delete-directory . tramp-handle-delete-directory)
- (delete-file . tramp-handle-delete-file)
+ (add-name-to-file . tramp-sh-handle-add-name-to-file)
+ (copy-file . tramp-sh-handle-copy-file)
+ (copy-directory . tramp-sh-handle-copy-directory)
+ (rename-file . tramp-sh-handle-rename-file)
+ (set-file-modes . tramp-sh-handle-set-file-modes)
+ (set-file-times . tramp-sh-handle-set-file-times)
+ (make-directory . tramp-sh-handle-make-directory)
+ (delete-directory . tramp-sh-handle-delete-directory)
+ (delete-file . tramp-sh-handle-delete-file)
(directory-file-name . tramp-handle-directory-file-name)
;; `executable-find' is not official yet.
- (executable-find . tramp-handle-executable-find)
- (start-file-process . tramp-handle-start-file-process)
- (process-file . tramp-handle-process-file)
- (shell-command . tramp-handle-shell-command)
- (insert-directory . tramp-handle-insert-directory)
- (expand-file-name . tramp-handle-expand-file-name)
+ (executable-find . tramp-sh-handle-executable-find)
+ (start-file-process . tramp-sh-handle-start-file-process)
+ (process-file . tramp-sh-handle-process-file)
+ (shell-command . tramp-sh-handle-shell-command)
+ (insert-directory . tramp-sh-handle-insert-directory)
+ (expand-file-name . tramp-sh-handle-expand-file-name)
(substitute-in-file-name . tramp-handle-substitute-in-file-name)
- (file-local-copy . tramp-handle-file-local-copy)
+ (file-local-copy . tramp-sh-handle-file-local-copy)
(file-remote-p . tramp-handle-file-remote-p)
(insert-file-contents . tramp-handle-insert-file-contents)
(insert-file-contents-literally
- . tramp-handle-insert-file-contents-literally)
- (write-region . tramp-handle-write-region)
+ . tramp-sh-handle-insert-file-contents-literally)
+ (write-region . tramp-sh-handle-write-region)
(find-backup-file-name . tramp-handle-find-backup-file-name)
- (make-auto-save-file-name . tramp-handle-make-auto-save-file-name)
+ (make-auto-save-file-name . tramp-sh-handle-make-auto-save-file-name)
(unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
- (dired-compress-file . tramp-handle-dired-compress-file)
+ (dired-compress-file . tramp-sh-handle-dired-compress-file)
(dired-recursive-delete-directory
- . tramp-handle-dired-recursive-delete-directory)
+ . tramp-sh-handle-dired-recursive-delete-directory)
(dired-uncache . tramp-handle-dired-uncache)
- (set-visited-file-modtime . tramp-handle-set-visited-file-modtime)
- (verify-visited-file-modtime . tramp-handle-verify-visited-file-modtime)
- (file-selinux-context . tramp-handle-file-selinux-context)
- (set-file-selinux-context . tramp-handle-set-file-selinux-context)
- (vc-registered . tramp-handle-vc-registered))
+ (set-visited-file-modtime . tramp-sh-handle-set-visited-file-modtime)
+ (verify-visited-file-modtime . tramp-sh-handle-verify-visited-file-modtime)
+ (file-selinux-context . tramp-sh-handle-file-selinux-context)
+ (set-file-selinux-context . tramp-sh-handle-set-file-selinux-context)
+ (vc-registered . tramp-sh-handle-vc-registered))
"Alist of handler functions.
Operations not mentioned here will be handled by the normal Emacs functions.")
@@ -933,7 +934,7 @@ Operations not mentioned here will be handled by the normal Emacs functions.")
;;; File Name Handler Functions:
-(defun tramp-handle-make-symbolic-link
+(defun tramp-sh-handle-make-symbolic-link
(filename linkname &optional ok-if-already-exists)
"Like `make-symbolic-link' for Tramp files.
If LINKNAME is a non-Tramp file, it is used verbatim as the target of
@@ -988,71 +989,7 @@ target of the symlink differ."
(tramp-shell-quote-argument l-localname))
t))))
-(defun tramp-handle-load (file &optional noerror nomessage nosuffix must-suffix)
- "Like `load' for Tramp files."
- (with-parsed-tramp-file-name (expand-file-name file) nil
- (unless nosuffix
- (cond ((file-exists-p (concat file ".elc"))
- (setq file (concat file ".elc")))
- ((file-exists-p (concat file ".el"))
- (setq file (concat file ".el")))))
- (when must-suffix
- ;; The first condition is always true for absolute file names.
- ;; Included for safety's sake.
- (unless (or (file-name-directory file)
- (string-match "\\.elc?\\'" file))
- (tramp-error
- v 'file-error
- "File `%s' does not include a `.el' or `.elc' suffix" file)))
- (unless noerror
- (when (not (file-exists-p file))
- (tramp-error v 'file-error "Cannot load nonexistent file `%s'" file)))
- (if (not (file-exists-p file))
- nil
- (let ((tramp-message-show-message (not nomessage)))
- (with-progress-reporter v 0 (format "Loading %s" file)
- (let ((local-copy (file-local-copy file)))
- ;; MUST-SUFFIX doesn't exist on XEmacs, so let it default to nil.
- (unwind-protect
- (load local-copy noerror t t)
- (delete-file local-copy)))))
- t)))
-
-;; Localname manipulation functions that grok Tramp localnames...
-(defun tramp-handle-file-name-as-directory (file)
- "Like `file-name-as-directory' but aware of Tramp files."
- ;; `file-name-as-directory' would be sufficient except localname is
- ;; the empty string.
- (let ((v (tramp-dissect-file-name file t)))
- ;; Run the command on the localname portion only.
- (tramp-make-tramp-file-name
- (tramp-file-name-method v)
- (tramp-file-name-user v)
- (tramp-file-name-host v)
- (tramp-run-real-handler
- 'file-name-as-directory (list (or (tramp-file-name-localname v) ""))))))
-
-(defun tramp-handle-file-name-directory (file)
- "Like `file-name-directory' but aware of Tramp files."
- ;; Everything except the last filename thing is the directory. We
- ;; cannot apply `with-parsed-tramp-file-name', because this expands
- ;; the remote file name parts. This is a problem when we are in
- ;; file name completion.
- (let ((v (tramp-dissect-file-name file t)))
- ;; Run the command on the localname portion only.
- (tramp-make-tramp-file-name
- (tramp-file-name-method v)
- (tramp-file-name-user v)
- (tramp-file-name-host v)
- (tramp-run-real-handler
- 'file-name-directory (list (or (tramp-file-name-localname v) ""))))))
-
-(defun tramp-handle-file-name-nondirectory (file)
- "Like `file-name-nondirectory' but aware of Tramp files."
- (with-parsed-tramp-file-name file nil
- (tramp-run-real-handler 'file-name-nondirectory (list localname))))
-
-(defun tramp-handle-file-truename (filename &optional counter prev-dirs)
+(defun tramp-sh-handle-file-truename (filename &optional counter prev-dirs)
"Like `file-truename' for Tramp files."
(with-parsed-tramp-file-name (expand-file-name filename) nil
(with-file-property v localname "file-truename"
@@ -1158,7 +1095,7 @@ target of the symlink differ."
;; Basic functions.
-(defun tramp-handle-file-exists-p (filename)
+(defun tramp-sh-handle-file-exists-p (filename)
"Like `file-exists-p' for Tramp files."
(with-parsed-tramp-file-name filename nil
(with-file-property v localname "file-exists-p"
@@ -1176,7 +1113,7 @@ target of the symlink differ."
;; CCC: This should check for an error condition and signal failure
;; when something goes wrong.
;; Daniel Pittman <daniel@danann.net>
-(defun tramp-handle-file-attributes (filename &optional id-format)
+(defun tramp-sh-handle-file-attributes (filename &optional id-format)
"Like `file-attributes' for Tramp files."
(unless id-format (setq id-format 'integer))
;; Don't modify `last-coding-system-used' by accident.
@@ -1314,7 +1251,7 @@ target of the symlink differ."
(if (eq id-format 'integer) "%g" "\"%G\"")
(tramp-shell-quote-argument localname))))
-(defun tramp-handle-set-visited-file-modtime (&optional time-list)
+(defun tramp-sh-handle-set-visited-file-modtime (&optional time-list)
"Like `set-visited-file-modtime' for Tramp files."
(unless (buffer-file-name)
(error "Can't set-visited-file-modtime: buffer `%s' not visiting a file"
@@ -1348,8 +1285,8 @@ target of the symlink differ."
nil)))))
;; This function makes the same assumption as
-;; `tramp-handle-set-visited-file-modtime'.
-(defun tramp-handle-verify-visited-file-modtime (buf)
+;; `tramp-sh-handle-set-visited-file-modtime'.
+(defun tramp-sh-handle-verify-visited-file-modtime (buf)
"Like `verify-visited-file-modtime' for Tramp files.
At the time `verify-visited-file-modtime' calls this function, we
already know that the buffer is visiting a file and that
@@ -1366,8 +1303,8 @@ of."
(not (tramp-file-name-handler 'file-remote-p f nil 'connected)))
t
(with-parsed-tramp-file-name f nil
- (tramp-flush-file-property v localname)
- (let* ((attr (file-attributes f))
+ (let* ((remote-file-name-inhibit-cache t)
+ (attr (file-attributes f))
(modtime (nth 5 attr))
(mt (visited-file-modtime)))
@@ -1401,7 +1338,7 @@ of."
;; only if that agrees with the buffer's record.
(t (equal mt '(-1 65535))))))))))
-(defun tramp-handle-set-file-modes (filename mode)
+(defun tramp-sh-handle-set-file-modes (filename mode)
"Like `set-file-modes' for Tramp files."
(with-parsed-tramp-file-name filename nil
(tramp-flush-file-property v localname)
@@ -1413,7 +1350,7 @@ of."
(tramp-shell-quote-argument localname))
"Error while changing file's mode %s" filename)))
-(defun tramp-handle-set-file-times (filename &optional time)
+(defun tramp-sh-handle-set-file-times (filename &optional time)
"Like `set-file-times' for Tramp files."
(if (file-remote-p filename)
(with-parsed-tramp-file-name filename nil
@@ -1486,7 +1423,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
vec (format "echo \\\"`%S`\\\"" result))
"Enforcing")))))
-(defun tramp-handle-file-selinux-context (filename)
+(defun tramp-sh-handle-file-selinux-context (filename)
"Like `file-selinux-context' for Tramp files."
(with-parsed-tramp-file-name filename nil
(with-file-property v localname "file-selinux-context"
@@ -1507,7 +1444,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
;; Return the context.
context))))
-(defun tramp-handle-set-file-selinux-context (filename context)
+(defun tramp-sh-handle-set-file-selinux-context (filename context)
"Like `set-file-selinux-context' for Tramp files."
(with-parsed-tramp-file-name filename nil
(if (and (consp context)
@@ -1530,7 +1467,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
;; Simple functions using the `test' command.
-(defun tramp-handle-file-executable-p (filename)
+(defun tramp-sh-handle-file-executable-p (filename)
"Like `file-executable-p' for Tramp files."
(with-parsed-tramp-file-name filename nil
(with-file-property v localname "file-executable-p"
@@ -1539,7 +1476,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
(or (tramp-check-cached-permissions v ?x)
(tramp-run-test "-x" filename)))))
-(defun tramp-handle-file-readable-p (filename)
+(defun tramp-sh-handle-file-readable-p (filename)
"Like `file-readable-p' for Tramp files."
(with-parsed-tramp-file-name filename nil
(with-file-property v localname "file-readable-p"
@@ -1553,7 +1490,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
;; expansion will also provide a `test' command which groks `-nt' (for
;; newer than). If this breaks, tell me about it and I'll try to do
;; something smarter about it.
-(defun tramp-handle-file-newer-than-file-p (file1 file2)
+(defun tramp-sh-handle-file-newer-than-file-p (file1 file2)
"Like `file-newer-than-file-p' for Tramp files."
(cond ((not (file-exists-p file1))
nil)
@@ -1588,13 +1525,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
;; Functions implemented using the basic functions above.
-(defun tramp-handle-file-modes (filename)
- "Like `file-modes' for Tramp files."
- (let ((truename (or (file-truename filename) filename)))
- (when (file-exists-p truename)
- (tramp-mode-string-to-int (nth 8 (file-attributes truename))))))
-
-(defun tramp-handle-file-directory-p (filename)
+(defun tramp-sh-handle-file-directory-p (filename)
"Like `file-directory-p' for Tramp files."
;; Care must be taken that this function returns `t' for symlinks
;; pointing to directories. Surely the most obvious implementation
@@ -1608,23 +1539,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
(with-file-property v localname "file-directory-p"
(tramp-run-test "-d" filename))))
-(defun tramp-handle-file-regular-p (filename)
- "Like `file-regular-p' for Tramp files."
- (and (file-exists-p filename)
- (eq ?- (aref (nth 8 (file-attributes filename)) 0))))
-
-(defun tramp-handle-file-symlink-p (filename)
- "Like `file-symlink-p' for Tramp files."
- (with-parsed-tramp-file-name filename nil
- (let ((x (car (file-attributes filename))))
- (when (stringp x)
- ;; When Tramp is running on VMS, then `file-name-absolute-p'
- ;; might do weird things.
- (if (file-name-absolute-p x)
- (tramp-make-tramp-file-name method user host x)
- x)))))
-
-(defun tramp-handle-file-writable-p (filename)
+(defun tramp-sh-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
(with-parsed-tramp-file-name filename nil
(with-file-property v localname "file-writable-p"
@@ -1637,7 +1552,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
(and (tramp-run-test "-d" (file-name-directory filename))
(tramp-run-test "-w" (file-name-directory filename)))))))
-(defun tramp-handle-file-ownership-preserved-p (filename)
+(defun tramp-sh-handle-file-ownership-preserved-p (filename)
"Like `file-ownership-preserved-p' for Tramp files."
(with-parsed-tramp-file-name filename nil
(with-file-property v localname "file-ownership-preserved-p"
@@ -1647,45 +1562,9 @@ and gid of the corresponding user is taken. Both parameters must be integers."
(or (null attributes)
(= (nth 2 attributes) (tramp-get-remote-uid v 'integer)))))))
-;; Other file name ops.
-
-(defun tramp-handle-directory-file-name (directory)
- "Like `directory-file-name' for Tramp files."
- ;; If localname component of filename is "/", leave it unchanged.
- ;; Otherwise, remove any trailing slash from localname component.
- ;; Method, host, etc, are unchanged. Does it make sense to try
- ;; to avoid parsing the filename?
- (with-parsed-tramp-file-name directory nil
- (if (and (not (zerop (length localname)))
- (eq (aref localname (1- (length localname))) ?/)
- (not (string= localname "/")))
- (substring directory 0 -1)
- directory)))
-
;; Directory listings.
-(defun tramp-handle-directory-files
- (directory &optional full match nosort files-only)
- "Like `directory-files' for Tramp files."
- ;; FILES-ONLY is valid for XEmacs only.
- (when (file-directory-p directory)
- (setq directory (file-name-as-directory (expand-file-name directory)))
- (let ((temp (nreverse (file-name-all-completions "" directory)))
- result item)
-
- (while temp
- (setq item (directory-file-name (pop temp)))
- (when (and (or (null match) (string-match match item))
- (or (null files-only)
- ;; Files only.
- (and (equal files-only t) (file-regular-p item))
- ;; Directories only.
- (file-directory-p item)))
- (push (if full (concat directory item) item)
- result)))
- (if nosort result (sort result 'string<)))))
-
-(defun tramp-handle-directory-files-and-attributes
+(defun tramp-sh-handle-directory-files-and-attributes
(directory &optional full match nosort id-format)
"Like `directory-files-and-attributes' for Tramp files."
(unless id-format (setq id-format 'integer))
@@ -1760,7 +1639,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
;; This function should return "foo/" for directories and "bar" for
;; files.
-(defun tramp-handle-file-name-all-completions (filename directory)
+(defun tramp-sh-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
(unless (save-match-data (string-match "/" filename))
(with-parsed-tramp-file-name (expand-file-name directory) nil
@@ -1770,46 +1649,39 @@ and gid of the corresponding user is taken. Both parameters must be integers."
(mapcar
'list
(or
- ;; Try cache first
- (and
- ;; Ignore if expired
- (or (not (integerp tramp-completion-reread-directory-timeout))
- (<= (tramp-time-diff
- (current-time)
- (tramp-get-file-property
- v localname "last-completion" '(0 0 0)))
- tramp-completion-reread-directory-timeout))
-
- ;; Try cache entries for filename, filename with last
- ;; character removed, filename with last two characters
- ;; removed, ..., and finally the empty string - all
- ;; concatenated to the local directory name
-
- ;; This is inefficient for very long filenames, pity
- ;; `reduce' is not available...
- (car
- (apply
- 'append
- (mapcar
- (lambda (x)
- (let ((cache-hit
- (tramp-get-file-property
- v
- (concat localname (substring filename 0 x))
- "file-name-all-completions"
- nil)))
- (when cache-hit (list cache-hit))))
- (tramp-compat-number-sequence (length filename) 0 -1)))))
+ ;; Try cache entries for filename, filename with last
+ ;; character removed, filename with last two characters
+ ;; removed, ..., and finally the empty string - all
+ ;; concatenated to the local directory name.
+ (let ((remote-file-name-inhibit-cache
+ (or remote-file-name-inhibit-cache
+ tramp-completion-reread-directory-timeout)))
+
+ ;; This is inefficient for very long filenames, pity
+ ;; `reduce' is not available...
+ (car
+ (apply
+ 'append
+ (mapcar
+ (lambda (x)
+ (let ((cache-hit
+ (tramp-get-file-property
+ v
+ (concat localname (substring filename 0 x))
+ "file-name-all-completions"
+ nil)))
+ (when cache-hit (list cache-hit))))
+ (tramp-compat-number-sequence (length filename) 0 -1)))))
;; Cache expired or no matching cache entry found so we need
- ;; to perform a remote operation
+ ;; to perform a remote operation.
(let (result)
;; Get a list of directories and files, including reliably
;; tagging the directories with a trailing '/'. Because I
;; rock. --daniel@danann.net
;; Changed to perform `cd' in the same remote op and only
- ;; get entries starting with `filename'. Capture any `cd'
+ ;; get entries starting with `filename'. Capture any `cd'
;; error messages. Ensure any `cd' and `echo' aliases are
;; ignored.
(tramp-send-command
@@ -1873,7 +1745,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
(forward-line -1)
(tramp-error
v 'file-error
- "tramp-handle-file-name-all-completions: %s"
+ "tramp-sh-handle-file-name-all-completions: %s"
(buffer-substring
(point) (tramp-compat-line-end-position))))
;; For peace of mind, if buffer doesn't end in `fail'
@@ -1884,7 +1756,7 @@ and gid of the corresponding user is taken. Both parameters must be integers."
(tramp-error
v 'file-error
"\
-tramp-handle-file-name-all-completions: internal error accessing `%s': `%s'"
+tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'"
(tramp-shell-quote-argument localname) (buffer-string))))
(while (zerop (forward-line -1))
@@ -1904,31 +1776,15 @@ tramp-handle-file-name-all-completions: internal error accessing `%s': `%s'"
v (concat localname entry) "file-exists-p" t))
result)
- (tramp-set-file-property
- v localname "last-completion" (current-time))
-
;; Store result in the cache
(tramp-set-file-property
v (concat localname filename)
"file-name-all-completions"
result))))))))
-(defun tramp-handle-file-name-completion
- (filename directory &optional predicate)
- "Like `file-name-completion' for Tramp files."
- (unless (tramp-tramp-file-p directory)
- (error
- "tramp-handle-file-name-completion invoked on non-tramp directory `%s'"
- directory))
- (try-completion
- filename
- (mapcar 'list (file-name-all-completions filename directory))
- (when predicate
- (lambda (x) (funcall predicate (expand-file-name (car x) directory))))))
-
;; cp, mv and ln
-(defun tramp-handle-add-name-to-file
+(defun tramp-sh-handle-add-name-to-file
(filename newname &optional ok-if-already-exists)
"Like `add-name-to-file' for Tramp files."
(unless (tramp-equal-remote filename newname)
@@ -1960,7 +1816,7 @@ tramp-handle-file-name-all-completions: internal error accessing `%s': `%s'"
"error with add-name-to-file, see buffer `%s' for details"
(buffer-name))))))
-(defun tramp-handle-copy-file
+(defun tramp-sh-handle-copy-file
(filename newname &optional ok-if-already-exists keep-date
preserve-uid-gid preserve-selinux-context)
"Like `copy-file' for Tramp files."
@@ -1987,7 +1843,8 @@ tramp-handle-file-name-all-completions: internal error accessing `%s': `%s'"
(tramp-run-real-handler
'copy-file (list filename newname ok-if-already-exists keep-date)))))
-(defun tramp-handle-copy-directory (dirname newname &optional keep-date parents)
+(defun tramp-sh-handle-copy-directory
+ (dirname newname &optional keep-date parents)
"Like `copy-directory' for Tramp files."
(let ((t1 (tramp-tramp-file-p dirname))
(t2 (tramp-tramp-file-p newname)))
@@ -2023,7 +1880,7 @@ tramp-handle-file-name-all-completions: internal error accessing `%s': `%s'"
(tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-file-property v localname))))))
-(defun tramp-handle-rename-file
+(defun tramp-sh-handle-rename-file
(filename newname &optional ok-if-already-exists)
"Like `rename-file' for Tramp files."
;; Check if both files are local -- invoke normal rename-file.
@@ -2051,9 +1908,10 @@ as FILENAME. PRESERVE-UID-GID, when non-nil, instructs to keep
the uid and gid if both files are on the same host.
PRESERVE-SELINUX-CONTEXT activates selinux commands.
-This function is invoked by `tramp-handle-copy-file' and
-`tramp-handle-rename-file'. It is an error if OP is neither of `copy'
-and `rename'. FILENAME and NEWNAME must be absolute file names."
+This function is invoked by `tramp-sh-handle-copy-file' and
+`tramp-sh-handle-rename-file'. It is an error if OP is neither
+of `copy' and `rename'. FILENAME and NEWNAME must be absolute
+file names."
(unless (memq op '(copy rename))
(error "Unknown operation `%s', must be `copy' or `rename'" op))
(let ((t1 (tramp-tramp-file-p filename))
@@ -2452,7 +2310,7 @@ The method used must be an out-of-band method."
(append copy-args (list source target))))))
(tramp-message
v 6 "%s" (mapconcat 'identity (process-command p) " "))
- (tramp-set-process-query-on-exit-flag p nil)
+ (tramp-compat-set-process-query-on-exit-flag p nil)
(tramp-process-actions p v tramp-actions-copy-out-of-band))))
;; Reset the transfer process properties.
@@ -2474,7 +2332,7 @@ The method used must be an out-of-band method."
(delete-file filename)
(tramp-compat-delete-directory filename 'recursive))))))
-(defun tramp-handle-make-directory (dir &optional parents)
+(defun tramp-sh-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
(setq dir (expand-file-name dir))
(with-parsed-tramp-file-name dir nil
@@ -2486,7 +2344,7 @@ The method used must be an out-of-band method."
(tramp-shell-quote-argument localname))
"Couldn't make directory %s" dir))))
-(defun tramp-handle-delete-directory (directory &optional recursive)
+(defun tramp-sh-handle-delete-directory (directory &optional recursive)
"Like `delete-directory' for Tramp files."
(setq directory (expand-file-name directory))
(with-parsed-tramp-file-name directory nil
@@ -2498,7 +2356,7 @@ The method used must be an out-of-band method."
(tramp-shell-quote-argument localname))
"Couldn't delete %s" directory)))
-(defun tramp-handle-delete-file (filename &optional trash)
+(defun tramp-sh-handle-delete-file (filename &optional trash)
"Like `delete-file' for Tramp files."
(setq filename (expand-file-name filename))
(with-parsed-tramp-file-name filename nil
@@ -2514,7 +2372,7 @@ The method used must be an out-of-band method."
;; CCC: This does not seem to be enough. Something dies when
;; we try and delete two directories under Tramp :/
-(defun tramp-handle-dired-recursive-delete-directory (filename)
+(defun tramp-sh-handle-dired-recursive-delete-directory (filename)
"Recursively delete the directory given.
This is like `dired-recursive-delete-directory' for Tramp files."
(with-parsed-tramp-file-name filename nil
@@ -2538,7 +2396,7 @@ This is like `dired-recursive-delete-directory' for Tramp files."
(tramp-error
v 'file-error "Failed to recursively delete %s" filename))))
-(defun tramp-handle-dired-compress-file (file &rest ok-flag)
+(defun tramp-sh-handle-dired-compress-file (file &rest ok-flag)
"Like `dired-compress-file' for Tramp files."
;; OK-FLAG is valid for XEmacs only, but not implemented.
;; Code stolen mainly from dired-aux.el.
@@ -2592,14 +2450,7 @@ This is like `dired-recursive-delete-directory' for Tramp files."
(concat file ".z"))
(t nil))))))))))
-(defun tramp-handle-dired-uncache (dir &optional dir-p)
- "Like `dired-uncache' for Tramp files."
- ;; DIR-P is valid for XEmacs only.
- (with-parsed-tramp-file-name
- (if (or dir-p (file-directory-p dir)) dir (file-name-directory dir)) nil
- (tramp-flush-directory-property v localname)))
-
-(defun tramp-handle-insert-directory
+(defun tramp-sh-handle-insert-directory
(filename switches &optional wildcard full-directory-p)
"Like `insert-directory' for Tramp files."
(setq filename (expand-file-name filename))
@@ -2702,15 +2553,9 @@ This is like `dired-recursive-delete-directory' for Tramp files."
(goto-char (point-max))))))
-(defun tramp-handle-unhandled-file-name-directory (filename)
- "Like `unhandled-file-name-directory' for Tramp files."
- ;; With Emacs 23, we could simply return `nil'. But we must keep it
- ;; for backward compatibility.
- (expand-file-name "~/"))
-
;; Canonicalization of file names.
-(defun tramp-handle-expand-file-name (name &optional dir)
+(defun tramp-sh-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for Tramp files.
If the localname part of the given filename starts with \"/../\" then
the result will be a local, non-Tramp, filename."
@@ -2769,41 +2614,9 @@ the result will be a local, non-Tramp, filename."
(tramp-run-real-handler
'expand-file-name (list localname))))))))
-(defun tramp-handle-substitute-in-file-name (filename)
- "Like `substitute-in-file-name' for Tramp files.
-\"//\" and \"/~\" substitute only in the local filename part.
-If the URL Tramp syntax is chosen, \"//\" as method delimeter and \"/~\" at
-beginning of local filename are not substituted."
- ;; First, we must replace environment variables.
- (setq filename (tramp-replace-environment-variables filename))
- (with-parsed-tramp-file-name filename nil
- (if (equal tramp-syntax 'url)
- ;; We need to check localname only. The other parts cannot contain
- ;; "//" or "/~".
- (if (and (> (length localname) 1)
- (or (string-match "//" localname)
- (string-match "/~" localname 1)))
- (tramp-run-real-handler 'substitute-in-file-name (list filename))
- (tramp-make-tramp-file-name
- (when method (substitute-in-file-name method))
- (when user (substitute-in-file-name user))
- (when host (substitute-in-file-name host))
- (when localname
- (tramp-run-real-handler
- 'substitute-in-file-name (list localname)))))
- ;; Ignore in LOCALNAME everything before "//" or "/~".
- (when (and (stringp localname) (string-match ".+?/\\(/\\|~\\)" localname))
- (setq filename
- (concat (file-remote-p filename)
- (replace-match "\\1" nil nil localname)))
- ;; "/m:h:~" does not work for completion. We use "/m:h:~/".
- (when (string-match "~$" filename)
- (setq filename (concat filename "/"))))
- (tramp-run-real-handler 'substitute-in-file-name (list filename)))))
-
;;; Remote commands:
-(defun tramp-handle-executable-find (command)
+(defun tramp-sh-handle-executable-find (command)
"Like `executable-find' for Tramp files."
(with-parsed-tramp-file-name default-directory nil
(tramp-find-executable v command (tramp-get-remote-path v) t)))
@@ -2819,7 +2632,7 @@ beginning of local filename are not substituted."
;; We use BUFFER also as connection buffer during setup. Because of
;; this, its original contents must be saved, and restored once
;; connection has been setup.
-(defun tramp-handle-start-file-process (name buffer program &rest args)
+(defun tramp-sh-handle-start-file-process (name buffer program &rest args)
"Like `start-file-process' for Tramp files."
(with-parsed-tramp-file-name default-directory nil
(unwind-protect
@@ -2864,7 +2677,7 @@ beginning of local filename are not substituted."
;; Set sentinel and query flag for this process.
(tramp-set-connection-property p "vector" v)
(set-process-sentinel p 'tramp-process-sentinel)
- (tramp-set-process-query-on-exit-flag p t)
+ (tramp-compat-set-process-query-on-exit-flag p t)
;; Return process.
p))
;; Save exit.
@@ -2878,7 +2691,7 @@ beginning of local filename are not substituted."
(tramp-set-connection-property v "process-name" nil)
(tramp-set-connection-property v "process-buffer" nil))))
-(defun tramp-handle-process-file
+(defun tramp-sh-handle-process-file
(program &optional infile destination display &rest args)
"Like `process-file' for Tramp files."
;; The implementation is not complete yet.
@@ -2991,7 +2804,7 @@ beginning of local filename are not substituted."
(keyboard-quit)
ret))))
-(defun tramp-handle-call-process-region
+(defun tramp-sh-handle-call-process-region
(start end program &optional delete buffer display &rest args)
"Like `call-process-region' for Tramp files."
(let ((tmpfile (tramp-compat-make-temp-file "")))
@@ -3001,7 +2814,7 @@ beginning of local filename are not substituted."
(apply 'call-process program tmpfile buffer display args)
(delete-file tmpfile))))
-(defun tramp-handle-shell-command
+(defun tramp-sh-handle-shell-command
(command &optional output-buffer error-buffer)
"Like `shell-command' for Tramp files."
(let* ((asynchronous (string-match "[ \t]*&[ \t]*\\'" command))
@@ -3082,9 +2895,8 @@ beginning of local filename are not substituted."
(tramp-compat-funcall 'display-message-or-buffer output-buffer)
(pop-to-buffer output-buffer))))))))
-(defun tramp-handle-file-local-copy (filename)
+(defun tramp-sh-handle-file-local-copy (filename)
"Like `file-local-copy' for Tramp files."
-
(with-parsed-tramp-file-name filename nil
(unless (file-exists-p filename)
(tramp-error
@@ -3163,131 +2975,8 @@ beginning of local filename are not substituted."
(run-hooks 'tramp-handle-file-local-copy-hook)
tmpfile)))
-(defun tramp-handle-file-remote-p (filename &optional identification connected)
- "Like `file-remote-p' for Tramp files."
- (let ((tramp-verbose 3))
- (when (tramp-tramp-file-p filename)
- (let* ((v (tramp-dissect-file-name filename))
- (p (tramp-get-connection-process v))
- (c (and p (processp p) (memq (process-status p) '(run open)))))
- ;; We expand the file name only, if there is already a connection.
- (with-parsed-tramp-file-name
- (if c (expand-file-name filename) filename) nil
- (and (or (not connected) c)
- (cond
- ((eq identification 'method) method)
- ((eq identification 'user) user)
- ((eq identification 'host) host)
- ((eq identification 'localname) localname)
- (t (tramp-make-tramp-file-name method user host "")))))))))
-
-(defun tramp-handle-insert-file-contents
- (filename &optional visit beg end replace)
- "Like `insert-file-contents' for Tramp files."
- (barf-if-buffer-read-only)
- (setq filename (expand-file-name filename))
- (let (result local-copy remote-copy)
- (with-parsed-tramp-file-name filename nil
- (unwind-protect
- (if (not (file-exists-p filename))
- ;; We don't raise a Tramp error, because it might be
- ;; suppressed, like in `find-file-noselect-1'.
- (signal 'file-error
- (list "File not found on remote host" filename))
-
- (if (and (tramp-local-host-p v)
- (let (file-name-handler-alist)
- (file-readable-p localname)))
- ;; Short track: if we are on the local host, we can
- ;; run directly.
- (setq result
- (tramp-run-real-handler
- 'insert-file-contents
- (list localname visit beg end replace)))
-
- ;; When we shall insert only a part of the file, we copy
- ;; this part.
- (when (or beg end)
- (setq remote-copy (tramp-make-tramp-temp-file v))
- (tramp-send-command
- v
- (cond
- ((and beg end)
- (format "tail -c +%d %s | head -c +%d >%s"
- (1+ beg) (tramp-shell-quote-argument localname)
- (- end beg) remote-copy))
- (beg
- (format "tail -c +%d %s >%s"
- (1+ beg) (tramp-shell-quote-argument localname)
- remote-copy))
- (end
- (format "head -c +%d %s >%s"
- (1+ end) (tramp-shell-quote-argument localname)
- remote-copy)))))
-
- ;; `insert-file-contents-literally' takes care to avoid
- ;; calling jka-compr. By let-binding
- ;; `inhibit-file-name-operation', we propagate that care
- ;; to the `file-local-copy' operation.
- (setq local-copy
- (let ((inhibit-file-name-operation
- (when (eq inhibit-file-name-operation
- 'insert-file-contents)
- 'file-local-copy)))
- (cond
- ((stringp remote-copy)
- (file-local-copy
- (tramp-make-tramp-file-name
- method user host remote-copy)))
- ((stringp tramp-temp-buffer-file-name)
- (copy-file filename tramp-temp-buffer-file-name 'ok)
- tramp-temp-buffer-file-name)
- (t (file-local-copy filename)))))
-
- ;; When the file is not readable for the owner, it
- ;; cannot be inserted, even it is redable for the group
- ;; or for everybody.
- (set-file-modes local-copy (tramp-compat-octal-to-decimal "0600"))
-
- (when (and (null remote-copy)
- (tramp-get-method-parameter
- method 'tramp-copy-keep-tmpfile))
- ;; We keep the local file for performance reasons,
- ;; useful for "rsync".
- (setq tramp-temp-buffer-file-name local-copy)
- (put 'tramp-temp-buffer-file-name 'permanent-local t))
-
- (with-progress-reporter
- v 3 (format "Inserting local temp file `%s'" local-copy)
- ;; We must ensure that `file-coding-system-alist'
- ;; matches `local-copy'.
- (let ((file-coding-system-alist
- (tramp-find-file-name-coding-system-alist
- filename local-copy)))
- (setq result
- (insert-file-contents
- local-copy nil nil nil replace))))))
-
- ;; Save exit.
- (progn
- (when visit
- (setq buffer-file-name filename)
- (setq buffer-read-only (not (file-writable-p filename)))
- (set-visited-file-modtime)
- (set-buffer-modified-p nil))
- (when (and (stringp local-copy)
- (or remote-copy (null tramp-temp-buffer-file-name)))
- (delete-file local-copy))
- (when (stringp remote-copy)
- (delete-file
- (tramp-make-tramp-file-name method user host remote-copy))))))
-
- ;; Result.
- (list (expand-file-name filename)
- (cadr result))))
-
;; This is needed for XEmacs only. Code stolen from files.el.
-(defun tramp-handle-insert-file-contents-literally
+(defun tramp-sh-handle-insert-file-contents-literally
(filename &optional visit beg end replace)
"Like `insert-file-contents-literally' for Tramp files."
(let ((format-alist nil)
@@ -3309,49 +2998,7 @@ beginning of local filename are not substituted."
(fset 'find-buffer-file-type find-buffer-file-type-function)
(fmakunbound 'find-buffer-file-type)))))
-(defun tramp-handle-find-backup-file-name (filename)
- "Like `find-backup-file-name' for Tramp files."
- (with-parsed-tramp-file-name filename nil
- ;; We set both variables. It doesn't matter whether it is
- ;; Emacs or XEmacs.
- (let ((backup-directory-alist
- ;; Emacs case.
- (when (boundp 'backup-directory-alist)
- (if (symbol-value 'tramp-backup-directory-alist)
- (mapcar
- (lambda (x)
- (cons
- (car x)
- (if (and (stringp (cdr x))
- (file-name-absolute-p (cdr x))
- (not (tramp-file-name-p (cdr x))))
- (tramp-make-tramp-file-name method user host (cdr x))
- (cdr x))))
- (symbol-value 'tramp-backup-directory-alist))
- (symbol-value 'backup-directory-alist))))
-
- (bkup-backup-directory-info
- ;; XEmacs case.
- (when (boundp 'bkup-backup-directory-info)
- (if (symbol-value 'tramp-bkup-backup-directory-info)
- (mapcar
- (lambda (x)
- (nconc
- (list (car x))
- (list
- (if (and (stringp (car (cdr x)))
- (file-name-absolute-p (car (cdr x)))
- (not (tramp-file-name-p (car (cdr x)))))
- (tramp-make-tramp-file-name
- method user host (car (cdr x)))
- (car (cdr x))))
- (cdr (cdr x))))
- (symbol-value 'tramp-bkup-backup-directory-info))
- (symbol-value 'bkup-backup-directory-info)))))
-
- (tramp-run-real-handler 'find-backup-file-name (list filename)))))
-
-(defun tramp-handle-make-auto-save-file-name ()
+(defun tramp-sh-handle-make-auto-save-file-name ()
"Like `make-auto-save-file-name' for Tramp files.
Returns a file name in `tramp-auto-save-directory' for autosaving this file."
(let ((tramp-auto-save-directory tramp-auto-save-directory)
@@ -3393,11 +3040,8 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
(tramp-run-real-handler 'make-auto-save-file-name nil)
(ad-activate 'make-auto-save-file-name)))))
-(defvar tramp-handle-write-region-hook nil
- "Normal hook to be run at the end of `tramp-handle-write-region'.")
-
;; CCC grok LOCKNAME
-(defun tramp-handle-write-region
+(defun tramp-sh-handle-write-region
(start end filename &optional append visit lockname confirm)
"Like `write-region' for Tramp files."
(setq filename (expand-file-name filename))
@@ -3410,7 +3054,7 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
;; (unless (or (eq lockname nil)
;; (string= lockname filename))
;; (error
- ;; "tramp-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
+ ;; "tramp-sh-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
;; XEmacs takes a coding system as the seventh argument, not `confirm'.
(when (and (not (featurep 'xemacs)) confirm (file-exists-p filename))
@@ -3659,7 +3303,7 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
;; can reset the file name handlers, and we make a second run of
;; `vc-registered', which returns the expected result without sending
;; any other remote command.
-(defun tramp-handle-vc-registered (file)
+(defun tramp-sh-handle-vc-registered (file)
"Like `vc-registered' for Tramp files."
(tramp-compat-with-temp-message ""
(with-parsed-tramp-file-name file nil
@@ -3669,7 +3313,7 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
;; There could be new files, created by the vc backend. We
;; cannot reuse the old cache entries, therefore.
(let (tramp-vc-registered-file-names
- (tramp-cache-inhibit-cache (current-time))
+ (remote-file-name-inhibit-cache (current-time))
(file-name-handler-alist
`((,tramp-file-name-regexp . tramp-vc-file-name-handler))))
@@ -4050,10 +3694,10 @@ process to set up. VEC specifies the connection."
(setq cs-encode (cdr cs))
(unless cs-decode (setq cs-decode 'undecided))
(unless cs-encode (setq cs-encode 'undecided))
- (setq cs-encode (tramp-coding-system-change-eol-conversion
+ (setq cs-encode (tramp-compat-coding-system-change-eol-conversion
cs-encode 'unix))
(when (search-forward "\r" nil t)
- (setq cs-decode (tramp-coding-system-change-eol-conversion
+ (setq cs-decode (tramp-compat-coding-system-change-eol-conversion
cs-decode 'dos)))
(tramp-compat-funcall
'set-buffer-process-coding-system cs-decode cs-encode)
@@ -4065,9 +3709,7 @@ process to set up. VEC specifies the connection."
;; because we're running on a non-MULE Emacs. Let's try
;; stty, instead.
(tramp-send-command vec "stty -onlcr" t))))
- ;; Dump stty settings in the traces.
- (when (>= tramp-verbose 9)
- (tramp-send-command vec "stty -a" t))
+
(tramp-send-command vec "set +o vi +o emacs" t)
;; Check whether the output of "uname -sr" has been changed. If
@@ -4085,7 +3727,7 @@ process to set up. VEC specifies the connection."
;; Keep the debug buffer.
(rename-buffer
(generate-new-buffer-name tramp-temp-buffer-name) 'unique)
- (tramp-compat-funcall 'tramp-cleanup-connection vec)
+ (tramp-cleanup-connection vec)
(if (= (point-min) (point-max))
(kill-buffer nil)
(rename-buffer (tramp-debug-buffer-name vec) 'unique))
@@ -4138,12 +3780,21 @@ process to set up. VEC specifies the connection."
(when (string-match "^IRIX64" (tramp-get-connection-property vec "uname" ""))
(tramp-send-command vec "set +H" t))
+ ;; On BSD-like systems, ?\t is expanded to spaces. Suppress this.
+ (when (string-match "BSD\\|Darwin"
+ (tramp-get-connection-property vec "uname" ""))
+ (tramp-send-command vec "stty -oxtabs" t))
+
;; Set `remote-tty' process property.
(ignore-errors
(let ((tty (tramp-send-command-and-read vec "echo \\\"`tty`\\\"")))
(unless (zerop (length tty))
(tramp-compat-process-put proc 'remote-tty tty))))
+ ;; Dump stty settings in the traces.
+ (when (>= tramp-verbose 9)
+ (tramp-send-command vec "stty -a" t))
+
;; Set the environment.
(tramp-message vec 5 "Setting default environment")
@@ -4600,7 +4251,7 @@ connection if a previous connection has died for some reason."
vec 6 "%s" (mapconcat 'identity (process-command p) " "))
;; Check whether process is alive.
- (tramp-set-process-query-on-exit-flag p nil)
+ (tramp-compat-set-process-query-on-exit-flag p nil)
(tramp-barf-if-no-shell-prompt
p 60 "Couldn't find local shell prompt %s" tramp-encoding-shell)
@@ -4801,77 +4452,6 @@ In case there is no valid Lisp expression, it raises an error"
"`%s' does not return a valid Lisp expression: `%s'"
command (buffer-string))))))
-(defun tramp-mode-string-to-int (mode-string)
- "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits."
- (let* (case-fold-search
- (mode-chars (string-to-vector mode-string))
- (owner-read (aref mode-chars 1))
- (owner-write (aref mode-chars 2))
- (owner-execute-or-setid (aref mode-chars 3))
- (group-read (aref mode-chars 4))
- (group-write (aref mode-chars 5))
- (group-execute-or-setid (aref mode-chars 6))
- (other-read (aref mode-chars 7))
- (other-write (aref mode-chars 8))
- (other-execute-or-sticky (aref mode-chars 9)))
- (save-match-data
- (logior
- (cond
- ((char-equal owner-read ?r) (tramp-compat-octal-to-decimal "00400"))
- ((char-equal owner-read ?-) 0)
- (t (error "Second char `%c' must be one of `r-'" owner-read)))
- (cond
- ((char-equal owner-write ?w) (tramp-compat-octal-to-decimal "00200"))
- ((char-equal owner-write ?-) 0)
- (t (error "Third char `%c' must be one of `w-'" owner-write)))
- (cond
- ((char-equal owner-execute-or-setid ?x)
- (tramp-compat-octal-to-decimal "00100"))
- ((char-equal owner-execute-or-setid ?S)
- (tramp-compat-octal-to-decimal "04000"))
- ((char-equal owner-execute-or-setid ?s)
- (tramp-compat-octal-to-decimal "04100"))
- ((char-equal owner-execute-or-setid ?-) 0)
- (t (error "Fourth char `%c' must be one of `xsS-'"
- owner-execute-or-setid)))
- (cond
- ((char-equal group-read ?r) (tramp-compat-octal-to-decimal "00040"))
- ((char-equal group-read ?-) 0)
- (t (error "Fifth char `%c' must be one of `r-'" group-read)))
- (cond
- ((char-equal group-write ?w) (tramp-compat-octal-to-decimal "00020"))
- ((char-equal group-write ?-) 0)
- (t (error "Sixth char `%c' must be one of `w-'" group-write)))
- (cond
- ((char-equal group-execute-or-setid ?x)
- (tramp-compat-octal-to-decimal "00010"))
- ((char-equal group-execute-or-setid ?S)
- (tramp-compat-octal-to-decimal "02000"))
- ((char-equal group-execute-or-setid ?s)
- (tramp-compat-octal-to-decimal "02010"))
- ((char-equal group-execute-or-setid ?-) 0)
- (t (error "Seventh char `%c' must be one of `xsS-'"
- group-execute-or-setid)))
- (cond
- ((char-equal other-read ?r)
- (tramp-compat-octal-to-decimal "00004"))
- ((char-equal other-read ?-) 0)
- (t (error "Eighth char `%c' must be one of `r-'" other-read)))
- (cond
- ((char-equal other-write ?w) (tramp-compat-octal-to-decimal "00002"))
- ((char-equal other-write ?-) 0)
- (t (error "Nineth char `%c' must be one of `w-'" other-write)))
- (cond
- ((char-equal other-execute-or-sticky ?x)
- (tramp-compat-octal-to-decimal "00001"))
- ((char-equal other-execute-or-sticky ?T)
- (tramp-compat-octal-to-decimal "01000"))
- ((char-equal other-execute-or-sticky ?t)
- (tramp-compat-octal-to-decimal "01001"))
- ((char-equal other-execute-or-sticky ?-) 0)
- (t (error "Tenth char `%c' must be one of `xtT-'"
- other-execute-or-sticky)))))))
-
(defun tramp-convert-file-attributes (vec attr)
"Convert file-attributes ATTR generated by perl script, stat or ls.
Convert file mode bits to string and set virtual device number.
@@ -5034,30 +4614,6 @@ This is used internally by `tramp-file-mode-from-int'."
(> size tramp-copy-size-limit)
(null (tramp-get-inline-coding vec "remote-encoding" size)))))
-(defun tramp-local-host-p (vec)
- "Return t if this points to the local host, nil otherwise."
- ;; We cannot use `tramp-file-name-real-host'. A port is an
- ;; indication for an ssh tunnel or alike.
- (let ((host (tramp-file-name-host vec)))
- (and
- (stringp host)
- (string-match tramp-local-host-regexp host)
- ;; The method shall be applied to one of the shell file name
- ;; handler. `tramp-local-host-p' is also called for "smb" and
- ;; alike, where it must fail.
- (tramp-get-method-parameter
- (tramp-file-name-method vec) 'tramp-login-program)
- ;; The local temp directory must be writable for the other user.
- (file-writable-p
- (tramp-make-tramp-file-name
- (tramp-file-name-method vec)
- (tramp-file-name-user vec)
- host
- (tramp-compat-temporary-file-directory)))
- ;; On some systems, chown runs only for root.
- (or (zerop (user-uid))
- (zerop (tramp-get-remote-uid vec 'integer))))))
-
;; Variables local to connection.
(defun tramp-get-remote-path (vec)
@@ -5143,33 +4699,6 @@ This is used internally by `tramp-file-mode-from-int'."
dir
(tramp-error vec 'file-error "Directory %s not accessible" dir)))))
-(defun tramp-make-tramp-temp-file (vec)
- "Create a temporary file on the remote host identified by VEC.
-Return the local name of the temporary file."
- (let ((prefix
- (tramp-make-tramp-file-name
- (tramp-file-name-method vec)
- (tramp-file-name-user vec)
- (tramp-file-name-host vec)
- (tramp-drop-volume-letter
- (expand-file-name
- tramp-temp-name-prefix (tramp-get-remote-tmpdir vec)))))
- result)
- (while (not result)
- ;; `make-temp-file' would be the natural choice for
- ;; implementation. But it calls `write-region' internally,
- ;; which also needs a temporary file - we would end in an
- ;; infinite loop.
- (setq result (make-temp-name prefix))
- (if (file-exists-p result)
- (setq result nil)
- ;; This creates the file by side effect.
- (set-file-times result)
- (set-file-modes result (tramp-compat-octal-to-decimal "0700"))))
-
- ;; Return the local part.
- (with-parsed-tramp-file-name result nil localname)))
-
(defun tramp-get-ls-command (vec)
(with-connection-property vec "ls"
(tramp-message vec 5 "Finding a suitable `ls' command")
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index e48a8b321fd..d2308216821 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -31,10 +31,6 @@
(eval-when-compile (require 'cl)) ; block, return
(require 'tramp)
-;; We call several `tramp-handle-*' functions directly. So we must
-;; reqire that package as well.
-(require 'tramp-sh)
-
;; Define SMB method ...
;;;###tramp-autoload
(defconst tramp-smb-method "smb"
@@ -157,7 +153,7 @@ See `tramp-actions-before-shell' for more info.")
(directory-file-name . tramp-handle-directory-file-name)
(directory-files . tramp-smb-handle-directory-files)
(directory-files-and-attributes
- . tramp-smb-handle-directory-files-and-attributes)
+ . tramp-handle-directory-files-and-attributes)
(dired-call-process . ignore)
(dired-compress-file . ignore)
(dired-uncache . tramp-handle-dired-uncache)
@@ -165,8 +161,8 @@ See `tramp-actions-before-shell' for more info.")
(file-accessible-directory-p . tramp-smb-handle-file-directory-p)
(file-attributes . tramp-smb-handle-file-attributes)
(file-directory-p . tramp-smb-handle-file-directory-p)
- (file-executable-p . tramp-smb-handle-file-exists-p)
- (file-exists-p . tramp-smb-handle-file-exists-p)
+ (file-executable-p . tramp-handle-file-exists-p)
+ (file-exists-p . tramp-handle-file-exists-p)
(file-local-copy . tramp-smb-handle-file-local-copy)
(file-modes . tramp-handle-file-modes)
(file-name-all-completions . tramp-smb-handle-file-name-all-completions)
@@ -175,9 +171,9 @@ See `tramp-actions-before-shell' for more info.")
(file-name-directory . tramp-handle-file-name-directory)
(file-name-nondirectory . tramp-handle-file-name-nondirectory)
;; `file-name-sans-versions' performed by default handler.
- (file-newer-than-file-p . tramp-smb-handle-file-newer-than-file-p)
+ (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
(file-ownership-preserved-p . ignore)
- (file-readable-p . tramp-smb-handle-file-exists-p)
+ (file-readable-p . tramp-handle-file-exists-p)
(file-regular-p . tramp-handle-file-regular-p)
(file-remote-p . tramp-handle-file-remote-p)
;; `file-selinux-context' performed by default handler.
@@ -455,15 +451,6 @@ PRESERVE-UID-GID is completely ignored."
;; That's it.
result))
-(defun tramp-smb-handle-directory-files-and-attributes
- (directory &optional full match nosort id-format)
- "Like `directory-files-and-attributes' for Tramp files."
- (mapcar
- (lambda (x)
- (cons x (tramp-compat-file-attributes
- (if full x (expand-file-name x directory)) id-format)))
- (directory-files directory full match nosort)))
-
(defun tramp-smb-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for Tramp files."
;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
@@ -601,10 +588,6 @@ PRESERVE-UID-GID is completely ignored."
(and (file-exists-p filename)
(eq ?d (aref (nth 8 (file-attributes filename)) 0))))
-(defun tramp-smb-handle-file-exists-p (filename)
- "Like `file-exists-p' for Tramp files."
- (not (null (file-attributes filename))))
-
(defun tramp-smb-handle-file-local-copy (filename)
"Like `file-local-copy' for Tramp files."
(with-parsed-tramp-file-name filename nil
@@ -642,14 +625,6 @@ PRESERVE-UID-GID is completely ignored."
(nth 0 x))))
entries)))))))
-(defun tramp-smb-handle-file-newer-than-file-p (file1 file2)
- "Like `file-newer-than-file-p' for Tramp files."
- (cond
- ((not (file-exists-p file1)) nil)
- ((not (file-exists-p file2)) t)
- (t (tramp-time-less-p (nth 5 (file-attributes file2))
- (nth 5 (file-attributes file1))))))
-
(defun tramp-smb-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
(if (file-exists-p filename)
@@ -1327,7 +1302,7 @@ connection if a previous connection has died for some reason."
(tramp-message
vec 6 "%s" (mapconcat 'identity (process-command p) " "))
- (tramp-set-process-query-on-exit-flag p nil)
+ (tramp-compat-set-process-query-on-exit-flag p nil)
;; Set variables for computing the prompt for reading password.
(setq tramp-current-method tramp-smb-method
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 3a3b3ad35e0..7b2d8a0a6e6 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -761,7 +761,7 @@ Derived from `tramp-postfix-host-format'.")
(defconst tramp-localname-regexp ".*$"
"*Regexp matching localnames.")
-;; File name format.
+;;; File name format:
(defconst tramp-file-name-structure
(list
@@ -974,8 +974,8 @@ A remote directory might have changed its contents. In order to
make it visible during file name completion in the minibuffer,
Tramp flushes its cache and rereads the directory contents when
more than `tramp-completion-reread-directory-timeout' seconds
-have been gone since last remote command execution. A value of 0
-would require an immediate reread during filename completion, nil
+have been gone since last remote command execution. A value of `t'
+would require an immediate reread during filename completion, `nil'
means to use always cached values for the directory contents."
:group 'tramp
:type '(choice (const nil) integer))
@@ -1009,10 +1009,6 @@ calling HANDLER.")
;;; Internal functions which must come first:
-
-;; ------------------------------------------------------------
-;; -- Tramp file names --
-;; ------------------------------------------------------------
;; Conversion functions between external representation and
;; internal data structure. Convenience functions for internal
;; data structure.
@@ -1658,9 +1654,6 @@ Return the string with the replaced variables."
'(minibuffer-electric-separator
minibuffer-electric-tilde)))
-(defvar tramp-handle-file-local-copy-hook nil
- "Normal hook to be run at the end of `tramp-handle-file-local-copy'.")
-
(defun tramp-find-file-name-coding-system-alist (filename tmpname)
"Like `find-operation-coding-system' for Tramp filenames.
Tramp's `insert-file-contents' and `write-region' work over
@@ -1952,9 +1945,29 @@ Falls back to normal file name handler if no Tramp file name handler exists."
;; `tramp-file-name-handler' must be registered before evaluation of
;; site-start and init files, because there might exist remote files
;; already, f.e. files kept via recentf-mode.
-;;;###autoload(tramp-register-file-name-handlers)
+;;;###autoload
(tramp-register-file-name-handlers)
+(defun tramp-exists-file-name-handler (operation &rest args)
+ "Check, whether OPERATION runs a file name handler."
+ ;; The file name handler is determined on base of either an
+ ;; argument, `buffer-file-name', or `default-directory'.
+ (ignore-errors
+ (let* ((buffer-file-name "/")
+ (default-directory "/")
+ (fnha file-name-handler-alist)
+ (check-file-name-operation operation)
+ (file-name-handler-alist
+ (list
+ (cons "/"
+ (lambda (operation &rest args)
+ "Returns OPERATION if it is the one to be checked."
+ (if (equal check-file-name-operation operation)
+ operation
+ (let ((file-name-handler-alist fnha))
+ (apply operation args))))))))
+ (equal (apply operation args) operation))))
+
;;;###autoload
(defun tramp-unload-file-name-handlers ()
(setq file-name-handler-alist
@@ -2554,20 +2567,381 @@ User is always nil."
(forward-line 1)
result))
-(defun tramp-delete-temp-file-function ()
- "Remove temporary files related to current buffer."
- (when (stringp tramp-temp-buffer-file-name)
- (ignore-errors (delete-file tramp-temp-buffer-file-name))))
+;;; Common file name handler functions for different backends:
-(add-hook 'kill-buffer-hook 'tramp-delete-temp-file-function)
-(add-hook 'tramp-cache-unload-hook
- (lambda ()
- (remove-hook 'kill-buffer-hook
- 'tramp-delete-temp-file-function)))
+(defvar tramp-handle-file-local-copy-hook nil
+ "Normal hook to be run at the end of `tramp-*-handle-file-local-copy'.")
+
+(defvar tramp-handle-write-region-hook nil
+ "Normal hook to be run at the end of `tramp-*-handle-write-region'.")
+
+(defun tramp-handle-directory-file-name (directory)
+ "Like `directory-file-name' for Tramp files."
+ ;; If localname component of filename is "/", leave it unchanged.
+ ;; Otherwise, remove any trailing slash from localname component.
+ ;; Method, host, etc, are unchanged. Does it make sense to try
+ ;; to avoid parsing the filename?
+ (with-parsed-tramp-file-name directory nil
+ (if (and (not (zerop (length localname)))
+ (eq (aref localname (1- (length localname))) ?/)
+ (not (string= localname "/")))
+ (substring directory 0 -1)
+ directory)))
+
+(defun tramp-handle-directory-files
+ (directory &optional full match nosort files-only)
+ "Like `directory-files' for Tramp files."
+ ;; FILES-ONLY is valid for XEmacs only.
+ (when (file-directory-p directory)
+ (setq directory (file-name-as-directory (expand-file-name directory)))
+ (let ((temp (nreverse (file-name-all-completions "" directory)))
+ result item)
+
+ (while temp
+ (setq item (directory-file-name (pop temp)))
+ (when (and (or (null match) (string-match match item))
+ (or (null files-only)
+ ;; Files only.
+ (and (equal files-only t) (file-regular-p item))
+ ;; Directories only.
+ (file-directory-p item)))
+ (push (if full (concat directory item) item)
+ result)))
+ (if nosort result (sort result 'string<)))))
+
+(defun tramp-handle-directory-files-and-attributes
+ (directory &optional full match nosort id-format)
+ "Like `directory-files-and-attributes' for Tramp files."
+ (mapcar
+ (lambda (x)
+ (cons x (tramp-compat-file-attributes
+ (if full x (expand-file-name x directory)) id-format)))
+ (directory-files directory full match nosort)))
+
+(defun tramp-handle-dired-uncache (dir &optional dir-p)
+ "Like `dired-uncache' for Tramp files."
+ ;; DIR-P is valid for XEmacs only.
+ (with-parsed-tramp-file-name
+ (if (or dir-p (file-directory-p dir)) dir (file-name-directory dir)) nil
+ (tramp-flush-directory-property v localname)))
+
+(defun tramp-handle-file-exists-p (filename)
+ "Like `file-exists-p' for Tramp files."
+ (not (null (file-attributes filename))))
+
+(defun tramp-handle-file-modes (filename)
+ "Like `file-modes' for Tramp files."
+ (let ((truename (or (file-truename filename) filename)))
+ (when (file-exists-p truename)
+ (tramp-mode-string-to-int (nth 8 (file-attributes truename))))))
+
+;; Localname manipulation functions that grok Tramp localnames...
+(defun tramp-handle-file-name-as-directory (file)
+ "Like `file-name-as-directory' but aware of Tramp files."
+ ;; `file-name-as-directory' would be sufficient except localname is
+ ;; the empty string.
+ (let ((v (tramp-dissect-file-name file t)))
+ ;; Run the command on the localname portion only.
+ (tramp-make-tramp-file-name
+ (tramp-file-name-method v)
+ (tramp-file-name-user v)
+ (tramp-file-name-host v)
+ (tramp-run-real-handler
+ 'file-name-as-directory (list (or (tramp-file-name-localname v) ""))))))
+
+(defun tramp-handle-file-name-completion
+ (filename directory &optional predicate)
+ "Like `file-name-completion' for Tramp files."
+ (unless (tramp-tramp-file-p directory)
+ (error
+ "tramp-handle-file-name-completion invoked on non-tramp directory `%s'"
+ directory))
+ (try-completion
+ filename
+ (mapcar 'list (file-name-all-completions filename directory))
+ (when predicate
+ (lambda (x) (funcall predicate (expand-file-name (car x) directory))))))
+
+(defun tramp-handle-file-name-directory (file)
+ "Like `file-name-directory' but aware of Tramp files."
+ ;; Everything except the last filename thing is the directory. We
+ ;; cannot apply `with-parsed-tramp-file-name', because this expands
+ ;; the remote file name parts. This is a problem when we are in
+ ;; file name completion.
+ (let ((v (tramp-dissect-file-name file t)))
+ ;; Run the command on the localname portion only.
+ (tramp-make-tramp-file-name
+ (tramp-file-name-method v)
+ (tramp-file-name-user v)
+ (tramp-file-name-host v)
+ (tramp-run-real-handler
+ 'file-name-directory (list (or (tramp-file-name-localname v) ""))))))
+
+(defun tramp-handle-file-name-nondirectory (file)
+ "Like `file-name-nondirectory' but aware of Tramp files."
+ (with-parsed-tramp-file-name file nil
+ (tramp-run-real-handler 'file-name-nondirectory (list localname))))
+
+(defun tramp-handle-file-newer-than-file-p (file1 file2)
+ "Like `file-newer-than-file-p' for Tramp files."
+ (cond
+ ((not (file-exists-p file1)) nil)
+ ((not (file-exists-p file2)) t)
+ (t (tramp-time-less-p (nth 5 (file-attributes file2))
+ (nth 5 (file-attributes file1))))))
+
+(defun tramp-handle-file-regular-p (filename)
+ "Like `file-regular-p' for Tramp files."
+ (and (file-exists-p filename)
+ (eq ?- (aref (nth 8 (file-attributes filename)) 0))))
+
+(defun tramp-handle-file-remote-p (filename &optional identification connected)
+ "Like `file-remote-p' for Tramp files."
+ (let ((tramp-verbose 3))
+ (when (tramp-tramp-file-p filename)
+ (let* ((v (tramp-dissect-file-name filename))
+ (p (tramp-get-connection-process v))
+ (c (and p (processp p) (memq (process-status p) '(run open)))))
+ ;; We expand the file name only, if there is already a connection.
+ (with-parsed-tramp-file-name
+ (if c (expand-file-name filename) filename) nil
+ (and (or (not connected) c)
+ (cond
+ ((eq identification 'method) method)
+ ((eq identification 'user) user)
+ ((eq identification 'host) host)
+ ((eq identification 'localname) localname)
+ (t (tramp-make-tramp-file-name method user host "")))))))))
+
+(defun tramp-handle-file-symlink-p (filename)
+ "Like `file-symlink-p' for Tramp files."
+ (with-parsed-tramp-file-name filename nil
+ (let ((x (car (file-attributes filename))))
+ (when (stringp x)
+ ;; When Tramp is running on VMS, then `file-name-absolute-p'
+ ;; might do weird things.
+ (if (file-name-absolute-p x)
+ (tramp-make-tramp-file-name method user host x)
+ x)))))
+
+(defun tramp-handle-find-backup-file-name (filename)
+ "Like `find-backup-file-name' for Tramp files."
+ (with-parsed-tramp-file-name filename nil
+ ;; We set both variables. It doesn't matter whether it is
+ ;; Emacs or XEmacs.
+ (let ((backup-directory-alist
+ ;; Emacs case.
+ (when (boundp 'backup-directory-alist)
+ (if (symbol-value 'tramp-backup-directory-alist)
+ (mapcar
+ (lambda (x)
+ (cons
+ (car x)
+ (if (and (stringp (cdr x))
+ (file-name-absolute-p (cdr x))
+ (not (tramp-file-name-p (cdr x))))
+ (tramp-make-tramp-file-name method user host (cdr x))
+ (cdr x))))
+ (symbol-value 'tramp-backup-directory-alist))
+ (symbol-value 'backup-directory-alist))))
+
+ (bkup-backup-directory-info
+ ;; XEmacs case.
+ (when (boundp 'bkup-backup-directory-info)
+ (if (symbol-value 'tramp-bkup-backup-directory-info)
+ (mapcar
+ (lambda (x)
+ (nconc
+ (list (car x))
+ (list
+ (if (and (stringp (car (cdr x)))
+ (file-name-absolute-p (car (cdr x)))
+ (not (tramp-file-name-p (car (cdr x)))))
+ (tramp-make-tramp-file-name
+ method user host (car (cdr x)))
+ (car (cdr x))))
+ (cdr (cdr x))))
+ (symbol-value 'tramp-bkup-backup-directory-info))
+ (symbol-value 'bkup-backup-directory-info)))))
+
+ (tramp-run-real-handler 'find-backup-file-name (list filename)))))
+
+(defun tramp-handle-insert-file-contents
+ (filename &optional visit beg end replace)
+ "Like `insert-file-contents' for Tramp files."
+ (barf-if-buffer-read-only)
+ (setq filename (expand-file-name filename))
+ (let (result local-copy remote-copy)
+ (with-parsed-tramp-file-name filename nil
+ (unwind-protect
+ (if (not (file-exists-p filename))
+ ;; We don't raise a Tramp error, because it might be
+ ;; suppressed, like in `find-file-noselect-1'.
+ (signal 'file-error
+ (list "File not found on remote host" filename))
+
+ (if (and (tramp-local-host-p v)
+ (let (file-name-handler-alist)
+ (file-readable-p localname)))
+ ;; Short track: if we are on the local host, we can
+ ;; run directly.
+ (setq result
+ (tramp-run-real-handler
+ 'insert-file-contents
+ (list localname visit beg end replace)))
+
+ ;; When we shall insert only a part of the file, we copy
+ ;; this part.
+ (when (or beg end)
+ (setq remote-copy (tramp-make-tramp-temp-file v))
+ ;; This is defined in tramp-sh.el. Let's assume this
+ ;; is loaded already.
+ (tramp-compat-funcall 'tramp-send-command
+ v
+ (cond
+ ((and beg end)
+ (format "tail -c +%d %s | head -c +%d >%s"
+ (1+ beg) (tramp-shell-quote-argument localname)
+ (- end beg) remote-copy))
+ (beg
+ (format "tail -c +%d %s >%s"
+ (1+ beg) (tramp-shell-quote-argument localname)
+ remote-copy))
+ (end
+ (format "head -c +%d %s >%s"
+ (1+ end) (tramp-shell-quote-argument localname)
+ remote-copy)))))
+
+ ;; `insert-file-contents-literally' takes care to avoid
+ ;; calling jka-compr. By let-binding
+ ;; `inhibit-file-name-operation', we propagate that care
+ ;; to the `file-local-copy' operation.
+ (setq local-copy
+ (let ((inhibit-file-name-operation
+ (when (eq inhibit-file-name-operation
+ 'insert-file-contents)
+ 'file-local-copy)))
+ (cond
+ ((stringp remote-copy)
+ (file-local-copy
+ (tramp-make-tramp-file-name
+ method user host remote-copy)))
+ ((stringp tramp-temp-buffer-file-name)
+ (copy-file filename tramp-temp-buffer-file-name 'ok)
+ tramp-temp-buffer-file-name)
+ (t (file-local-copy filename)))))
+
+ ;; When the file is not readable for the owner, it
+ ;; cannot be inserted, even it is redable for the group
+ ;; or for everybody.
+ (set-file-modes local-copy (tramp-compat-octal-to-decimal "0600"))
+
+ (when (and (null remote-copy)
+ (tramp-get-method-parameter
+ method 'tramp-copy-keep-tmpfile))
+ ;; We keep the local file for performance reasons,
+ ;; useful for "rsync".
+ (setq tramp-temp-buffer-file-name local-copy)
+ (put 'tramp-temp-buffer-file-name 'permanent-local t))
+
+ (with-progress-reporter
+ v 3 (format "Inserting local temp file `%s'" local-copy)
+ ;; We must ensure that `file-coding-system-alist'
+ ;; matches `local-copy'.
+ (let ((file-coding-system-alist
+ (tramp-find-file-name-coding-system-alist
+ filename local-copy)))
+ (setq result
+ (insert-file-contents
+ local-copy nil nil nil replace))))))
+
+ ;; Save exit.
+ (progn
+ (when visit
+ (setq buffer-file-name filename)
+ (setq buffer-read-only (not (file-writable-p filename)))
+ (set-visited-file-modtime)
+ (set-buffer-modified-p nil))
+ (when (and (stringp local-copy)
+ (or remote-copy (null tramp-temp-buffer-file-name)))
+ (delete-file local-copy))
+ (when (stringp remote-copy)
+ (delete-file
+ (tramp-make-tramp-file-name method user host remote-copy))))))
+
+ ;; Result.
+ (list (expand-file-name filename)
+ (cadr result))))
+
+(defun tramp-handle-load (file &optional noerror nomessage nosuffix must-suffix)
+ "Like `load' for Tramp files."
+ (with-parsed-tramp-file-name (expand-file-name file) nil
+ (unless nosuffix
+ (cond ((file-exists-p (concat file ".elc"))
+ (setq file (concat file ".elc")))
+ ((file-exists-p (concat file ".el"))
+ (setq file (concat file ".el")))))
+ (when must-suffix
+ ;; The first condition is always true for absolute file names.
+ ;; Included for safety's sake.
+ (unless (or (file-name-directory file)
+ (string-match "\\.elc?\\'" file))
+ (tramp-error
+ v 'file-error
+ "File `%s' does not include a `.el' or `.elc' suffix" file)))
+ (unless noerror
+ (when (not (file-exists-p file))
+ (tramp-error v 'file-error "Cannot load nonexistent file `%s'" file)))
+ (if (not (file-exists-p file))
+ nil
+ (let ((tramp-message-show-message (not nomessage)))
+ (with-progress-reporter v 0 (format "Loading %s" file)
+ (let ((local-copy (file-local-copy file)))
+ ;; MUST-SUFFIX doesn't exist on XEmacs, so let it default to nil.
+ (unwind-protect
+ (load local-copy noerror t t)
+ (delete-file local-copy)))))
+ t)))
+
+(defun tramp-handle-substitute-in-file-name (filename)
+ "Like `substitute-in-file-name' for Tramp files.
+\"//\" and \"/~\" substitute only in the local filename part.
+If the URL Tramp syntax is chosen, \"//\" as method delimeter and \"/~\" at
+beginning of local filename are not substituted."
+ ;; First, we must replace environment variables.
+ (setq filename (tramp-replace-environment-variables filename))
+ (with-parsed-tramp-file-name filename nil
+ (if (equal tramp-syntax 'url)
+ ;; We need to check localname only. The other parts cannot contain
+ ;; "//" or "/~".
+ (if (and (> (length localname) 1)
+ (or (string-match "//" localname)
+ (string-match "/~" localname 1)))
+ (tramp-run-real-handler 'substitute-in-file-name (list filename))
+ (tramp-make-tramp-file-name
+ (when method (substitute-in-file-name method))
+ (when user (substitute-in-file-name user))
+ (when host (substitute-in-file-name host))
+ (when localname
+ (tramp-run-real-handler
+ 'substitute-in-file-name (list localname)))))
+ ;; Ignore in LOCALNAME everything before "//" or "/~".
+ (when (and (stringp localname) (string-match ".+?/\\(/\\|~\\)" localname))
+ (setq filename
+ (concat (file-remote-p filename)
+ (replace-match "\\1" nil nil localname)))
+ ;; "/m:h:~" does not work for completion. We use "/m:h:~/".
+ (when (string-match "~$" filename)
+ (setq filename (concat filename "/"))))
+ (tramp-run-real-handler 'substitute-in-file-name (list filename)))))
-;; ------------------------------------------------------------
-;; -- Functions for establishing connection --
-;; ------------------------------------------------------------
+(defun tramp-handle-unhandled-file-name-directory (filename)
+ "Like `unhandled-file-name-directory' for Tramp files."
+ ;; With Emacs 23, we could simply return `nil'. But we must keep it
+ ;; for backward compatibility.
+ (expand-file-name "~/"))
+
+;;; Functions for establishing connection:
;; The following functions are actions to be taken when seeing certain
;; prompts from the remote host. See the variable
@@ -2666,7 +3040,7 @@ The terminal type can be configured with `tramp-terminal-type'."
(throw 'tramp-action 'process-died))))
(t nil)))
-;; Functions for processing the actions.
+;;; Functions for processing the actions:
(defun tramp-process-one-action (proc vec actions)
"Wait for output from the shell and perform one action."
@@ -2714,7 +3088,7 @@ The terminal type can be configured with `tramp-terminal-type'."
((eq exit 'process-died) "Process died")
(t "Login failed")))))))
-;; Utility functions.
+:;; Utility functions:
(defun tramp-accept-process-output (&optional proc timeout timeout-msecs)
"Like `accept-process-output' for Tramp processes.
@@ -2902,27 +3276,145 @@ If the `tramp-methods' entry does not exist, return nil."
(let ((entry (assoc param (assoc method tramp-methods))))
(when entry (cadr entry))))
-;; Auto saving to a special directory.
+(defun tramp-mode-string-to-int (mode-string)
+ "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits."
+ (let* (case-fold-search
+ (mode-chars (string-to-vector mode-string))
+ (owner-read (aref mode-chars 1))
+ (owner-write (aref mode-chars 2))
+ (owner-execute-or-setid (aref mode-chars 3))
+ (group-read (aref mode-chars 4))
+ (group-write (aref mode-chars 5))
+ (group-execute-or-setid (aref mode-chars 6))
+ (other-read (aref mode-chars 7))
+ (other-write (aref mode-chars 8))
+ (other-execute-or-sticky (aref mode-chars 9)))
+ (save-match-data
+ (logior
+ (cond
+ ((char-equal owner-read ?r) (tramp-compat-octal-to-decimal "00400"))
+ ((char-equal owner-read ?-) 0)
+ (t (error "Second char `%c' must be one of `r-'" owner-read)))
+ (cond
+ ((char-equal owner-write ?w) (tramp-compat-octal-to-decimal "00200"))
+ ((char-equal owner-write ?-) 0)
+ (t (error "Third char `%c' must be one of `w-'" owner-write)))
+ (cond
+ ((char-equal owner-execute-or-setid ?x)
+ (tramp-compat-octal-to-decimal "00100"))
+ ((char-equal owner-execute-or-setid ?S)
+ (tramp-compat-octal-to-decimal "04000"))
+ ((char-equal owner-execute-or-setid ?s)
+ (tramp-compat-octal-to-decimal "04100"))
+ ((char-equal owner-execute-or-setid ?-) 0)
+ (t (error "Fourth char `%c' must be one of `xsS-'"
+ owner-execute-or-setid)))
+ (cond
+ ((char-equal group-read ?r) (tramp-compat-octal-to-decimal "00040"))
+ ((char-equal group-read ?-) 0)
+ (t (error "Fifth char `%c' must be one of `r-'" group-read)))
+ (cond
+ ((char-equal group-write ?w) (tramp-compat-octal-to-decimal "00020"))
+ ((char-equal group-write ?-) 0)
+ (t (error "Sixth char `%c' must be one of `w-'" group-write)))
+ (cond
+ ((char-equal group-execute-or-setid ?x)
+ (tramp-compat-octal-to-decimal "00010"))
+ ((char-equal group-execute-or-setid ?S)
+ (tramp-compat-octal-to-decimal "02000"))
+ ((char-equal group-execute-or-setid ?s)
+ (tramp-compat-octal-to-decimal "02010"))
+ ((char-equal group-execute-or-setid ?-) 0)
+ (t (error "Seventh char `%c' must be one of `xsS-'"
+ group-execute-or-setid)))
+ (cond
+ ((char-equal other-read ?r)
+ (tramp-compat-octal-to-decimal "00004"))
+ ((char-equal other-read ?-) 0)
+ (t (error "Eighth char `%c' must be one of `r-'" other-read)))
+ (cond
+ ((char-equal other-write ?w) (tramp-compat-octal-to-decimal "00002"))
+ ((char-equal other-write ?-) 0)
+ (t (error "Nineth char `%c' must be one of `w-'" other-write)))
+ (cond
+ ((char-equal other-execute-or-sticky ?x)
+ (tramp-compat-octal-to-decimal "00001"))
+ ((char-equal other-execute-or-sticky ?T)
+ (tramp-compat-octal-to-decimal "01000"))
+ ((char-equal other-execute-or-sticky ?t)
+ (tramp-compat-octal-to-decimal "01001"))
+ ((char-equal other-execute-or-sticky ?-) 0)
+ (t (error "Tenth char `%c' must be one of `xtT-'"
+ other-execute-or-sticky)))))))
+
+(defun tramp-local-host-p (vec)
+ "Return t if this points to the local host, nil otherwise."
+ ;; We cannot use `tramp-file-name-real-host'. A port is an
+ ;; indication for an ssh tunnel or alike.
+ (let ((host (tramp-file-name-host vec)))
+ (and
+ (stringp host)
+ (string-match tramp-local-host-regexp host)
+ ;; The method shall be applied to one of the shell file name
+ ;; handler. `tramp-local-host-p' is also called for "smb" and
+ ;; alike, where it must fail.
+ (tramp-get-method-parameter
+ (tramp-file-name-method vec) 'tramp-login-program)
+ ;; The local temp directory must be writable for the other user.
+ (file-writable-p
+ (tramp-make-tramp-file-name
+ (tramp-file-name-method vec)
+ (tramp-file-name-user vec)
+ host
+ (tramp-compat-temporary-file-directory)))
+ ;; On some systems, chown runs only for root.
+ (or (zerop (user-uid))
+ ;; This is defined in tramp-sh.el. Let's assume this is
+ ;; loaded already.
+ (zerop (tramp-compat-funcall 'tramp-get-remote-uid vec 'integer))))))
+
+(defun tramp-make-tramp-temp-file (vec)
+ "Create a temporary file on the remote host identified by VEC.
+Return the local name of the temporary file."
+ (let ((prefix
+ (tramp-make-tramp-file-name
+ (tramp-file-name-method vec)
+ (tramp-file-name-user vec)
+ (tramp-file-name-host vec)
+ (tramp-drop-volume-letter
+ (expand-file-name
+ tramp-temp-name-prefix
+ ;; This is defined in tramp-sh.el. Let's assume this is
+ ;; loaded already.
+ (tramp-compat-funcall 'tramp-get-remote-tmpdir vec)))))
+ result)
+ (while (not result)
+ ;; `make-temp-file' would be the natural choice for
+ ;; implementation. But it calls `write-region' internally,
+ ;; which also needs a temporary file - we would end in an
+ ;; infinite loop.
+ (setq result (make-temp-name prefix))
+ (if (file-exists-p result)
+ (setq result nil)
+ ;; This creates the file by side effect.
+ (set-file-times result)
+ (set-file-modes result (tramp-compat-octal-to-decimal "0700"))))
+
+ ;; Return the local part.
+ (with-parsed-tramp-file-name result nil localname)))
-(defun tramp-exists-file-name-handler (operation &rest args)
- "Check, whether OPERATION runs a file name handler."
- ;; The file name handler is determined on base of either an
- ;; argument, `buffer-file-name', or `default-directory'.
- (ignore-errors
- (let* ((buffer-file-name "/")
- (default-directory "/")
- (fnha file-name-handler-alist)
- (check-file-name-operation operation)
- (file-name-handler-alist
- (list
- (cons "/"
- (lambda (operation &rest args)
- "Returns OPERATION if it is the one to be checked."
- (if (equal check-file-name-operation operation)
- operation
- (let ((file-name-handler-alist fnha))
- (apply operation args))))))))
- (equal (apply operation args) operation))))
+(defun tramp-delete-temp-file-function ()
+ "Remove temporary files related to current buffer."
+ (when (stringp tramp-temp-buffer-file-name)
+ (ignore-errors (delete-file tramp-temp-buffer-file-name))))
+
+(add-hook 'kill-buffer-hook 'tramp-delete-temp-file-function)
+(add-hook 'tramp-cache-unload-hook
+ (lambda ()
+ (remove-hook 'kill-buffer-hook
+ 'tramp-delete-temp-file-function)))
+
+;;; Auto saving to a special directory:
(unless (tramp-exists-file-name-handler 'make-auto-save-file-name)
(defadvice make-auto-save-file-name
@@ -2982,9 +3474,7 @@ ALIST is of the form ((FROM . TO) ...)."
(setq alist (cdr alist))))
string))
-;; ------------------------------------------------------------
-;; -- Compatibility functions section --
-;; ------------------------------------------------------------
+;;; Compatibility functions section:
(defun tramp-read-passwd (proc &optional prompt)
"Read a password from user (compat function).
@@ -3082,37 +3572,6 @@ T1 and T2 are time values (as returned by `current-time' for example)."
(cadr time)
(/ (or (nth 2 time) 0) 1000000.0))))))
-(defun tramp-coding-system-change-eol-conversion (coding-system eol-type)
- "Return a coding system like CODING-SYSTEM but with given EOL-TYPE.
-EOL-TYPE can be one of `dos', `unix', or `mac'."
- (cond ((fboundp 'coding-system-change-eol-conversion)
- (tramp-compat-funcall
- 'coding-system-change-eol-conversion coding-system eol-type))
- ((fboundp 'subsidiary-coding-system)
- (tramp-compat-funcall
- 'subsidiary-coding-system coding-system
- (cond ((eq eol-type 'dos) 'crlf)
- ((eq eol-type 'unix) 'lf)
- ((eq eol-type 'mac) 'cr)
- (t
- (error "Unknown EOL-TYPE `%s', must be %s"
- eol-type
- "`dos', `unix', or `mac'")))))
- (t (error "Can't change EOL conversion -- is MULE missing?"))))
-
-(defun tramp-set-process-query-on-exit-flag (process flag)
- "Specify if query is needed for process when Emacs is exited.
-If the second argument flag is non-nil, Emacs will query the user before
-exiting if process is running."
- (if (fboundp 'set-process-query-on-exit-flag)
- (tramp-compat-funcall 'set-process-query-on-exit-flag process flag)
- (tramp-compat-funcall 'process-kill-without-query process flag)))
-
-
-;; ------------------------------------------------------------
-;; -- Kludges section --
-;; ------------------------------------------------------------
-
;; Currently (as of Emacs 20.5), the function `shell-quote-argument'
;; does not deal well with newline characters. Newline is replaced by
;; backslash newline. But if, say, the string `a backslash newline b'
diff --git a/lisp/emacs-lisp/cl-compat.el b/lisp/obsolete/cl-compat.el
index f4923b6f8c6..622c4eaace6 100644
--- a/lisp/emacs-lisp/cl-compat.el
+++ b/lisp/obsolete/cl-compat.el
@@ -1,12 +1,12 @@
;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility)
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+;; 2009, 2010 Free Software Foundation, Inc.
;; Author: Dave Gillespie <daveg@synaptics.com>
;; Version: 2.02
;; Keywords: extensions
-;; Package: emacs
+;; Obsolete-since: 23.3
;; This file is part of GNU Emacs.
@@ -25,6 +25,8 @@
;;; Commentary:
+;; This file has been obsolete since Emacs 23.3.
+
;; These are extensions to Emacs Lisp that provide a degree of
;; Common Lisp compatibility, beyond what is already built-in
;; in Emacs Lisp.
@@ -195,5 +197,4 @@
;; byte-compile-warnings: (not cl-functions)
;; End:
-;; arch-tag: 9996bb4f-aaf5-4592-b436-bf64759a3163
;;; cl-compat.el ends here
diff --git a/lisp/emacs-lisp/lmenu.el b/lisp/obsolete/lmenu.el
index 54fb488ed59..14f6398eef1 100644
--- a/lisp/emacs-lisp/lmenu.el
+++ b/lisp/obsolete/lmenu.el
@@ -1,9 +1,10 @@
;;; lmenu.el --- emulate Lucid's menubar support
-;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004, 2005,
+;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Keywords: emulations obsolete
+;; Obsolete-since: 23.3
;; This file is part of GNU Emacs.
@@ -22,6 +23,8 @@
;;; Commentary:
+;; This file has been obsolete since Emacs 23.3.
+
;;; Code:
@@ -439,5 +442,4 @@ BEFORE, if provided, is the name of a menu before which this menu should
(provide 'lmenu)
-;; arch-tag: 7051c396-2837-435a-ae11-b2d2e2af8fc1
;;; lmenu.el ends here
diff --git a/lisp/obsolete/lucid.el b/lisp/obsolete/lucid.el
index 85edd310a92..a83d6f2164b 100644
--- a/lisp/obsolete/lucid.el
+++ b/lisp/obsolete/lucid.el
@@ -1,7 +1,7 @@
;;; lucid.el --- emulate some Lucid Emacs functions
-;; Copyright (C) 1993, 1995, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1995, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;; 2008, 2009, 2010 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: emulations
@@ -89,8 +89,8 @@ This function exists for compatibility with XEmacs."
((display-grayscale-p device) 'grayscale)
(t 'mono)))
-(defalias 'find-face 'internal-find-face)
-(defalias 'get-face 'internal-get-face)
+(defalias 'find-face 'facep)
+(defalias 'get-face 'facep)
;; internal-try-face-font was removed from faces.el in rev 1.139, 1999/07/21.
;;;(defalias 'try-face-font 'internal-try-face-font)
diff --git a/lisp/obsolete/rnews.el b/lisp/obsolete/rnews.el
deleted file mode 100644
index 5b0f5d5a6b0..00000000000
--- a/lisp/obsolete/rnews.el
+++ /dev/null
@@ -1,981 +0,0 @@
-;;; rnews.el --- USENET news reader for GNU Emacs
-
-;; Copyright (C) 1985, 1986, 1987, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-
-;; Maintainer: FSF
-;; Keywords: news
-
-;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This file has been obsolete since Emacs 21.1.
-
-;;; Change Log:
-
-;; Created Sun Mar 10,1985 at 21:35:01 ads and sundar@hernes.ai.mit.edu
-;; Should do the point pdl stuff sometime
-;; finito except pdl.... Sat Mar 16,1985 at 06:43:44
-;; lets keep the summary stuff out until we get it working ..
-;; sundar@hermes.ai.mit.edu Wed Apr 10,1985 at 16:32:06
-;; hack slash maim. mly@gnu.org Thu 18 Apr, 1985 06:11:14
-;; modified to correct reentrance bug, to not bother with groups that
-;; received no new traffic since last read completely, to find out
-;; what traffic a group has available much more quickly when
-;; possible, to do some completing reads for group names - should
-;; be much faster...
-;; KING@KESTREL.arpa, Thu Mar 13 09:03:28 1986
-;; made news-{next,previous}-group skip groups with no new messages; and
-;; added checking for unsubscribed groups to news-add-news-group
-;; tower@gnu.org Jul 18 1986
-;; bound rmail-output to C-o; and changed header-field commands binding to
-;; agree with the new C-c C-f usage in sendmail
-;; tower@gnu.org Sep 3 1986
-;; added news-rotate-buffer-body
-;; tower@gnu.org Oct 17 1986
-;; made messages more user friendly, cleaned up news-inews
-;; move posting and mail code to new file rnewpost.el
-;; tower@gnu.org Oct 29 1986
-;; added caesar-region, rename news-caesar-buffer-body, hacked accordingly
-;; tower@gnu.org Nov 21 1986
-;; added tower@gnu.org 22 Apr 87
-
-;;; Code:
-
-(require 'mail-utils)
-(require 'sendmail)
-
-(defvar caesar-translate-table)
-(defvar minor-modes)
-(defvar news-buffer-save)
-(defvar news-group-name)
-(defvar news-minor-modes)
-
-(autoload 'rmail-output "rmailout"
- "Append this message to Unix mail file named FILE-NAME."
- t)
-
-(autoload 'news-reply "rnewspost"
- "Compose and post a reply to the current article on USENET.
-While composing the reply, use \\[mail-yank-original] to yank the original
-message into it."
- t)
-
-(autoload 'news-mail-other-window "rnewspost"
- "Send mail in another window.
-While composing the message, use \\[mail-yank-original] to yank the
-original message into it."
- t)
-
-(autoload 'news-post-news "rnewspost"
- "Begin editing a new USENET news article to be posted."
- t)
-
-(autoload 'news-mail-reply "rnewspost"
- "Mail a reply to the author of the current article.
-While composing the reply, use \\[mail-yank-original] to yank the original
-message into it."
- t)
-
-(defvar news-group-hook-alist nil
- "Alist of (GROUP-REGEXP . HOOK) pairs.
-Just before displaying a message, each HOOK is called
-if its GROUP-REGEXP matches the current newsgroup name.")
-
-(defvar rmail-last-file (expand-file-name "~/mbox.news"))
-
-;Now in paths.el.
-;(defvar news-path "/usr/spool/news/"
-; "The root directory below which all news files are stored.")
-
-(defvar news-startup-file "$HOME/.newsrc" "Contains ~/.newsrc")
-(defvar news-certification-file "$HOME/.news-dates" "Contains ~/.news-dates")
-
-;; random headers that we decide to ignore.
-(defvar news-ignored-headers
- "^Path:\\|^Posting-Version:\\|^Article-I.D.:\\|^Expires:\\|^Date-Received:\\|^References:\\|^Control:\\|^Xref:\\|^Lines:\\|^Posted:\\|^Relay-Version:\\|^Message-ID:\\|^Nf-ID:\\|^Nf-From:\\|^Approved:\\|^Sender:"
- "All random fields within the header of a message.")
-
-(defvar news-mode-map nil)
-(defvar news-read-first-time-p t)
-;; Contains the (dotified) news groups of which you are a member.
-(defvar news-user-group-list nil)
-
-(defvar news-current-news-group nil)
-(defvar news-current-group-begin nil)
-(defvar news-current-group-end nil)
-(defvar news-current-certifications nil
- "An assoc list of a group name and the time at which it is
-known that the group had no new traffic")
-(defvar news-current-certifiable nil
- "The time when the directory we are now working on was written")
-
-(defvar news-message-filter nil
- "User specifiable filter function that will be called during
-formatting of the news file")
-
-;(defvar news-mode-group-string "Starting-Up"
-; "Mode line group name info is held in this variable")
-(defvar news-list-of-files nil
- "Global variable in which we store the list of files
-associated with the current newsgroup")
-(defvar news-list-of-files-possibly-bogus nil
- "variable indicating we only are guessing at which files are available.
-Not currently used.")
-
-;; association list in which we store lists of the form
-;; (pointified-group-name (first last old-last))
-(defvar news-group-article-assoc nil)
-
-(defvar news-current-message-number 0 "Displayed Article Number")
-(defvar news-total-current-group 0 "Total no of messages in group")
-
-(defvar news-unsubscribe-groups ())
-(defvar news-point-pdl () "List of visited news messages.")
-(defvar news-no-jumps-p t)
-(defvar news-buffer () "Buffer into which news files are read.")
-
-(defmacro news-push (item ref)
- (list 'setq ref (list 'cons item ref)))
-
-(defmacro news-cadr (x) (list 'car (list 'cdr x)))
-(defmacro news-cdar (x) (list 'cdr (list 'car x)))
-(defmacro news-caddr (x) (list 'car (list 'cdr (list 'cdr x))))
-(defmacro news-cadar (x) (list 'car (list 'cdr (list 'car x))))
-(defmacro news-caadr (x) (list 'car (list 'car (list 'cdr x))))
-(defmacro news-cdadr (x) (list 'cdr (list 'car (list 'cdr x))))
-
-(defmacro news-wins (pfx index)
- `(file-exists-p (concat ,pfx "/" (int-to-string ,index))))
-
-(defvar news-max-plausible-gap 2
- "* In an rnews directory, the maximum possible gap size.
-A gap is a sequence of missing messages between two messages that exist.
-An empty file does not contribute to a gap -- it ends one.")
-
-(defun news-find-first-and-last (prefix base)
- (and (news-wins prefix base)
- (cons (news-find-first-or-last prefix base -1)
- (news-find-first-or-last prefix base 1))))
-
-(defmacro news-/ (a1 a2)
-;; a form of / that guarantees that (/ -1 2) = 0
- (if (zerop (/ -1 2))
- `(/ ,a1 ,a2)
- `(if (< ,a1 0)
- (- (/ (- ,a1) ,a2))
- (/ ,a1 ,a2))))
-
-(defun news-find-first-or-last (pfx base dirn)
- ;; first use powers of two to find a plausible ceiling
- (let ((original-dir dirn))
- (while (news-wins pfx (+ base dirn))
- (setq dirn (* dirn 2)))
- (setq dirn (news-/ dirn 2))
- ;; Then use a binary search to find the high water mark
- (let ((offset (news-/ dirn 2)))
- (while (/= offset 0)
- (if (news-wins pfx (+ base dirn offset))
- (setq dirn (+ dirn offset)))
- (setq offset (news-/ offset 2))))
- ;; If this high-water mark is bogus, recurse.
- (let ((offset (* news-max-plausible-gap original-dir)))
- (while (and (/= offset 0) (not (news-wins pfx (+ base dirn offset))))
- (setq offset (- offset original-dir)))
- (if (= offset 0)
- (+ base dirn)
- (news-find-first-or-last pfx (+ base dirn offset) original-dir)))))
-
-(defun rnews ()
-"Read USENET news for groups for which you are a member and add or
-delete groups.
-You can reply to articles posted and send articles to any group.
-
-Type \\[describe-mode] once reading news to get a list of rnews commands."
- (interactive)
- (let ((last-buffer (buffer-name)))
- (make-local-variable 'rmail-last-file)
- (switch-to-buffer (setq news-buffer (get-buffer-create "*news*")))
- (news-mode)
- (setq news-buffer-save last-buffer)
- (setq buffer-read-only nil)
- (erase-buffer)
- (setq buffer-read-only t)
- (set-buffer-modified-p t)
- (sit-for 0)
- (message "Getting new USENET news...")
- (news-set-mode-line)
- (news-get-certifications)
- (news-get-new-news)))
-
-(defun news-group-certification (group)
- (cdr-safe (assoc group news-current-certifications)))
-
-
-(defun news-set-current-certifiable ()
- ;; Record the date that corresponds to the directory you are about to check
- (let ((file (concat news-path
- (string-subst-char ?/ ?. news-current-news-group))))
- (setq news-current-certifiable
- (nth 5 (file-attributes
- (or (file-symlink-p file) file))))))
-
-(defun news-get-certifications ()
- ;; Read the certified-read file from last session
- (save-excursion
- (save-window-excursion
- (setq news-current-certifications
- (car-safe
- (condition-case var
- (let*
- ((file (substitute-in-file-name news-certification-file))
- (buf (find-file-noselect file)))
- (and (file-exists-p file)
- (progn
- (switch-to-buffer buf 'norecord)
- (unwind-protect
- (read-from-string (buffer-string))
- (kill-buffer buf)))))
- (error nil)))))))
-
-(defun news-write-certifications ()
- ;; Write a certification file.
- ;; This is an assoc list of group names with doubletons that represent
- ;; mod times of the directory when group is read completely.
- (save-excursion
- (save-window-excursion
- (with-output-to-temp-buffer
- "*CeRtIfIcAtIoNs*"
- (print news-current-certifications))
- (let ((buf (get-buffer "*CeRtIfIcAtIoNs*")))
- (switch-to-buffer buf)
- (write-file (substitute-in-file-name news-certification-file))
- (kill-buffer buf)))))
-
-(defun news-set-current-group-certification ()
- (let ((cgc (assoc news-current-news-group news-current-certifications)))
- (if cgc (setcdr cgc news-current-certifiable)
- (news-push (cons news-current-news-group news-current-certifiable)
- news-current-certifications))))
-
-(defun news-set-message-counters ()
- "Scan through current news-groups filelist to figure out how many messages
-are there. Set counters for use with minor mode display."
- (if (null news-list-of-files)
- (setq news-current-message-number 0)))
-
-(if news-mode-map
- nil
- (setq news-mode-map (make-keymap))
- (suppress-keymap news-mode-map)
- (define-key news-mode-map "." 'beginning-of-buffer)
- (define-key news-mode-map " " 'scroll-up)
- (define-key news-mode-map "\177" 'scroll-down)
- (define-key news-mode-map "n" 'news-next-message)
- (define-key news-mode-map "c" 'news-make-link-to-message)
- (define-key news-mode-map "p" 'news-previous-message)
- (define-key news-mode-map "j" 'news-goto-message)
- (define-key news-mode-map "q" 'news-exit)
- (define-key news-mode-map "e" 'news-exit)
- (define-key news-mode-map "\ej" 'news-goto-news-group)
- (define-key news-mode-map "\en" 'news-next-group)
- (define-key news-mode-map "\ep" 'news-previous-group)
- (define-key news-mode-map "l" 'news-list-news-groups)
- (define-key news-mode-map "?" 'describe-mode)
- (define-key news-mode-map "g" 'news-get-new-news)
- (define-key news-mode-map "f" 'news-reply)
- (define-key news-mode-map "m" 'news-mail-other-window)
- (define-key news-mode-map "a" 'news-post-news)
- (define-key news-mode-map "r" 'news-mail-reply)
- (define-key news-mode-map "o" 'news-save-item-in-file)
- (define-key news-mode-map "\C-o" 'rmail-output)
- (define-key news-mode-map "t" 'news-show-all-headers)
- (define-key news-mode-map "x" 'news-force-update)
- (define-key news-mode-map "A" 'news-add-news-group)
- (define-key news-mode-map "u" 'news-unsubscribe-current-group)
- (define-key news-mode-map "U" 'news-unsubscribe-group)
- (define-key news-mode-map "\C-c\C-r" 'news-caesar-buffer-body))
-
-(defun news-mode ()
- "News Mode is used by M-x rnews for reading USENET Newsgroups articles.
-New readers can find additional help in newsgroup: news.announce.newusers .
-All normal editing commands are turned off.
-Instead, these commands are available:
-
-. move point to front of this news article (same as Meta-<).
-Space scroll to next screen of this news article.
-Delete scroll down previous page of this news article.
-n move to next news article, possibly next group.
-p move to previous news article, possibly previous group.
-j jump to news article specified by numeric position.
-M-j jump to news group.
-M-n goto next news group.
-M-p goto previous news group.
-l list all the news groups with current status.
-? print this help message.
-C-c C-r caesar rotate all letters by 13 places in the article's body (rot13).
-g get new USENET news.
-f post a reply article to USENET.
-a post an original news article.
-A add a newsgroup.
-o save the current article in the named file (append if file exists).
-C-o output this message to a Unix-format mail file (append it).
-c \"copy\" (actually link) current or prefix-arg msg to file.
- warning: target directory and message file must be on same device
- (UNIX magic)
-t show all the headers this news article originally had.
-q quit reading news after updating .newsrc file.
-e exit updating .newsrc file.
-m mail a news article. Same as C-x 4 m.
-x update last message seen to be the current message.
-r mail a reply to this news article. Like m but initializes some fields.
-u unsubscribe from current newsgroup.
-U unsubscribe from specified newsgroup."
- (interactive)
- (kill-all-local-variables)
- (make-local-variable 'news-read-first-time-p)
- (setq news-read-first-time-p t)
- (make-local-variable 'news-current-news-group)
-; (setq news-current-news-group "??")
- (make-local-variable 'news-current-group-begin)
- (setq news-current-group-begin 0)
- (make-local-variable 'news-current-message-number)
- (setq news-current-message-number 0)
- (make-local-variable 'news-total-current-group)
- (make-local-variable 'news-buffer-save)
- (make-local-variable 'version-control)
- (setq version-control 'never)
- (make-local-variable 'news-point-pdl)
-; This breaks it. I don't have time to figure out why. -- RMS
-; (make-local-variable 'news-group-article-assoc)
- (setq major-mode 'news-mode)
- (setq mode-line-process '(news-minor-modes))
- (setq mode-name "NEWS")
- (news-set-mode-line)
- (set-syntax-table text-mode-syntax-table)
- (use-local-map news-mode-map)
- (setq local-abbrev-table text-mode-abbrev-table)
- (run-mode-hooks 'news-mode-hook))
-
-(defun string-subst-char (new old string)
- (let (index)
- (setq old (regexp-quote (char-to-string old))
- string (substring string 0))
- (while (setq index (string-match old string))
- (aset string index new)))
- string)
-
-;; update read message number
-(defmacro news-update-message-read (ngroup nno)
- (list 'setcar
- (list 'news-cdadr
- (list 'assoc ngroup 'news-group-article-assoc))
- nno))
-
-(defun news-parse-range (number-string)
- "Parse string representing range of numbers of he form <a>-<b>
-to a list (a . b)"
- (let ((n (string-match "-" number-string)))
- (if n
- (cons (string-to-number (substring number-string 0 n))
- (string-to-number (substring number-string (1+ n))))
- (setq n (string-to-number number-string))
- (cons n n))))
-
-;(defun is-in (elt lis)
-; (catch 'foo
-; (while lis
-; (if (equal (car lis) elt)
-; (throw 'foo t)
-; (setq lis (cdr lis))))))
-
-(defun news-get-new-news ()
- "Get new USENET news, if there is any for the current user."
- (interactive)
- (if (not (null news-user-group-list))
- (news-update-newsrc-file))
- (setq news-group-article-assoc ())
- (setq news-user-group-list ())
- (message "Looking up %s file..." news-startup-file)
- (let ((file (substitute-in-file-name news-startup-file))
- (temp-user-groups ()))
- (save-excursion
- (let ((newsrcbuf (find-file-noselect file))
- start end endofline tem)
- (set-buffer newsrcbuf)
- (goto-char 0)
- (while (search-forward ": " nil t)
- (setq end (point))
- (beginning-of-line)
- (setq start (point))
- (end-of-line)
- (setq endofline (point))
- (setq tem (buffer-substring start (- end 2)))
- (let ((range (news-parse-range
- (buffer-substring end endofline))))
- (if (assoc tem news-group-article-assoc)
- (message "You are subscribed twice to %s; I ignore second"
- tem)
- (setq temp-user-groups (cons tem temp-user-groups)
- news-group-article-assoc
- (cons (list tem (list (car range)
- (cdr range)
- (cdr range)))
- news-group-article-assoc)))))
- (kill-buffer newsrcbuf)))
- (setq temp-user-groups (nreverse temp-user-groups))
- (message "Prefrobnicating...")
- (switch-to-buffer news-buffer)
- (setq news-user-group-list temp-user-groups)
- (while (and temp-user-groups
- (not (news-read-files-into-buffer
- (car temp-user-groups) nil)))
- (setq temp-user-groups (cdr temp-user-groups)))
- (if (null temp-user-groups)
- (message "No news is good news.")
- (message ""))))
-
-(defun news-list-news-groups ()
- "Display all the news groups to which you belong."
- (interactive)
- (with-output-to-temp-buffer "*Newsgroups*"
- (with-current-buffer standard-output
- (insert
- "News Group Msg No. News Group Msg No.\n")
- (insert
- "------------------------- -------------------------\n")
- (let ((temp news-user-group-list)
- (flag nil))
- (while temp
- (let ((item (assoc (car temp) news-group-article-assoc)))
- (insert (car item))
- (indent-to (if flag 52 20))
- (insert (int-to-string (news-cadr (news-cadr item))))
- (if flag
- (insert "\n")
- (indent-to 33))
- (setq temp (cdr temp) flag (not flag))))))))
-
-;; Mode line hack
-(defun news-set-mode-line ()
- "Set mode line string to something useful."
- (setq mode-line-process
- (concat " "
- (if (integerp news-current-message-number)
- (int-to-string news-current-message-number)
- "??")
- "/"
- (if (integerp news-current-group-end)
- (int-to-string news-current-group-end)
- news-current-group-end)))
- (setq mode-line-buffer-identification
- (concat "NEWS: "
- news-current-news-group
- ;; Enough spaces to pad group name to 17 positions.
- (substring " "
- 0 (max 0 (- 17 (length news-current-news-group))))))
- (set-buffer-modified-p t)
- (sit-for 0))
-
-(defun news-goto-news-group (gp)
- "Takes a string and goes to that news group."
- (interactive (list (completing-read "NewsGroup: "
- news-group-article-assoc)))
- (message "Jumping to news group %s..." gp)
- (news-select-news-group gp)
- (message "Jumping to news group %s... done." gp))
-
-(defun news-select-news-group (gp)
- (let ((grp (assoc gp news-group-article-assoc)))
- (if (null grp)
- (error "Group %s not subscribed to" gp)
- (progn
- (news-update-message-read news-current-news-group
- (news-cdar news-point-pdl))
- (news-read-files-into-buffer (car grp) nil)
- (news-set-mode-line)))))
-
-(defun news-goto-message (arg)
- "Goes to the article ARG in current newsgroup."
- (interactive "p")
- (if (null current-prefix-arg)
- (setq arg (read-no-blanks-input "Go to article: " "")))
- (news-select-message arg))
-
-(defun news-select-message (arg)
- (if (stringp arg) (setq arg (string-to-number arg)))
- (let ((file (concat news-path
- (string-subst-char ?/ ?. news-current-news-group)
- "/" arg)))
- (if (= arg
- (or (news-cadr (memq (news-cdar news-point-pdl) news-list-of-files))
- 0))
- (setcdr (car news-point-pdl) arg))
- (setq news-current-message-number arg)
- (if (file-exists-p file)
- (let ((buffer-read-only nil))
- (news-read-in-file file)
- (news-set-mode-line))
- (news-set-mode-line)
- (error "Article %d nonexistent" arg))))
-
-(defun news-force-update ()
- "updates the position of last article read in the current news group"
- (interactive)
- (setcdr (car news-point-pdl) news-current-message-number)
- (message "Updated to %d" news-current-message-number))
-
-(defun news-next-message (arg)
- "Move ARG messages forward within one newsgroup.
-Negative ARG moves backward.
-If ARG is 1 or -1, moves to next or previous newsgroup if at end."
- (interactive "p")
- (let ((no (+ arg news-current-message-number)))
- (if (or (< no news-current-group-begin)
- (> no news-current-group-end))
- (cond ((= arg 1)
- (news-set-current-group-certification)
- (news-next-group))
- ((= arg -1)
- (news-previous-group))
- (t (error "Article out of range")))
- (let ((plist (news-get-motion-lists
- news-current-message-number
- news-list-of-files)))
- (if (< arg 0)
- (news-select-message (nth (1- (- arg)) (car (cdr plist))))
- (news-select-message (nth (1- arg) (car plist))))))))
-
-(defun news-previous-message (arg)
- "Move ARG messages backward in current newsgroup.
-With no arg or arg of 1, move one message
-and move to previous newsgroup if at beginning.
-A negative ARG means move forward."
- (interactive "p")
- (news-next-message (- arg)))
-
-(defun news-move-to-group (arg)
- "Given arg move forward or backward to a new newsgroup."
- (let ((cg news-current-news-group))
- (let ((plist (news-get-motion-lists cg news-user-group-list))
- ngrp)
- (if (< arg 0)
- (or (setq ngrp (nth (1- (- arg)) (news-cadr plist)))
- (error "No previous news groups"))
- (or (setq ngrp (nth arg (car plist)))
- (error "No more news groups")))
- (news-select-news-group ngrp))))
-
-(defun news-next-group ()
- "Moves to the next user group."
- (interactive)
-; (message "Moving to next group...")
- (news-move-to-group 0)
- (while (null news-list-of-files)
- (news-move-to-group 0)))
-; (message "Moving to next group... done.")
-
-(defun news-previous-group ()
- "Moves to the previous user group."
- (interactive)
-; (message "Moving to previous group...")
- (news-move-to-group -1)
- (while (null news-list-of-files)
- (news-move-to-group -1)))
-; (message "Moving to previous group... done.")
-
-(defun news-get-motion-lists (arg listy)
- "Given a msgnumber/group this will return a list of two lists;
-one for moving forward and one for moving backward."
- (let ((temp listy)
- (result ()))
- (catch 'out
- (while temp
- (if (equal (car temp) arg)
- (throw 'out (cons (cdr temp) (list result)))
- (setq result (nconc (list (car temp)) result))
- (setq temp (cdr temp)))))))
-
-;; miscellaneous io routines
-(defun news-read-in-file (filename)
- (erase-buffer)
- (let ((start (point)))
- (insert-file-contents filename)
- (news-convert-format)
- ;; Run each hook that applies to the current newsgroup.
- (let ((hooks news-group-hook-alist))
- (while hooks
- (goto-char start)
- (if (string-match (car (car hooks)) news-group-name)
- (funcall (cdr (car hooks))))
- (setq hooks (cdr hooks))))
- (goto-char start)
- (forward-line 1)
- (if (eobp)
- (message "(Empty file?)")
- (goto-char start))))
-
-(defun news-convert-format ()
- (save-excursion
- (save-restriction
- (let* ((start (point))
- (end (condition-case ()
- (progn (search-forward "\n\n") (point))
- (error nil)))
- has-from has-date)
- (cond (end
- (narrow-to-region start end)
- (goto-char start)
- (setq has-from (search-forward "\nFrom:" nil t))
- (cond ((and (not has-from) has-date)
- (goto-char start)
- (search-forward "\nDate:")
- (beginning-of-line)
- (kill-line) (kill-line)))
- (news-delete-headers start)
- (goto-char start)))))))
-
-(defun news-show-all-headers ()
- "Redisplay current news item with all original headers"
- (interactive)
- (let (news-ignored-headers
- (buffer-read-only ()))
- (erase-buffer)
- (news-set-mode-line)
- (news-read-in-file
- (concat news-path
- (string-subst-char ?/ ?. news-current-news-group)
- "/" (int-to-string news-current-message-number)))))
-
-(defun news-delete-headers (pos)
- (goto-char pos)
- (and (stringp news-ignored-headers)
- (while (re-search-forward news-ignored-headers nil t)
- (beginning-of-line)
- (delete-region (point)
- (progn (re-search-forward "\n[^ \t]")
- (forward-char -1)
- (point))))))
-
-(defun news-exit ()
- "Quit news reading session and update the .newsrc file."
- (interactive)
- (if (y-or-n-p "Do you really wanna quit reading news ? ")
- (progn (message "Updating %s..." news-startup-file)
- (news-update-newsrc-file)
- (news-write-certifications)
- (message "Updating %s... done" news-startup-file)
- (message "Now do some real work")
- (quit-window)
- (switch-to-buffer news-buffer-save)
- (setq news-user-group-list ()))
- (message "")))
-
-(defun news-update-newsrc-file ()
- "Updates the .newsrc file in the users home dir."
- (let ((newsrcbuf (find-file-noselect
- (substitute-in-file-name news-startup-file)))
- (tem news-user-group-list)
- group)
- (save-excursion
- (if (not (null news-current-news-group))
- (news-update-message-read news-current-news-group
- (news-cdar news-point-pdl)))
- (set-buffer newsrcbuf)
- (while tem
- (setq group (assoc (car tem) news-group-article-assoc))
- (if (= (news-cadr (news-cadr group)) (news-caddr (news-cadr group)))
- nil
- (goto-char 0)
- (if (search-forward (concat (car group) ": ") nil t)
- (kill-line nil)
- (insert (car group) ": \n") (backward-char 1))
- (insert (int-to-string (car (news-cadr group))) "-"
- (int-to-string (news-cadr (news-cadr group)))))
- (setq tem (cdr tem)))
- (while news-unsubscribe-groups
- (setq group (assoc (car news-unsubscribe-groups)
- news-group-article-assoc))
- (goto-char 0)
- (if (search-forward (concat (car group) ": ") nil t)
- (progn
- (backward-char 2)
- (kill-line nil)
- (insert "! " (int-to-string (car (news-cadr group)))
- "-" (int-to-string (news-cadr (news-cadr group))))))
- (setq news-unsubscribe-groups (cdr news-unsubscribe-groups)))
- (save-buffer)
- (kill-buffer (current-buffer)))))
-
-
-(defun news-unsubscribe-group (group)
- "Removes you from newgroup GROUP."
- (interactive (list (completing-read "Unsubscribe from group: "
- news-group-article-assoc)))
- (news-unsubscribe-internal group))
-
-(defun news-unsubscribe-current-group ()
- "Removes you from the newsgroup you are now reading."
- (interactive)
- (if (y-or-n-p "Do you really want to unsubscribe from this group ? ")
- (news-unsubscribe-internal news-current-news-group)))
-
-(defun news-unsubscribe-internal (group)
- (let ((tem (assoc group news-group-article-assoc)))
- (if tem
- (progn
- (setq news-unsubscribe-groups (cons group news-unsubscribe-groups))
- (news-update-message-read group (news-cdar news-point-pdl))
- (if (equal group news-current-news-group)
- (news-next-group))
- (message ""))
- (error "Not subscribed to group: %s" group))))
-
-(defun news-save-item-in-file (file)
- "Save the current article that is being read by appending to a file."
- (interactive "FSave item in file: ")
- (append-to-file (point-min) (point-max) file))
-
-(defun news-get-pruned-list-of-files (gp-list end-file-no)
- "Given a news group it finds all files in the news group.
-The arg must be in slashified format.
-Using ls was found to be too slow in a previous version."
- (let
- ((answer
- (and
- (not (and end-file-no
- (equal (news-set-current-certifiable)
- (news-group-certification gp-list))
- (setq news-list-of-files nil
- news-list-of-files-possibly-bogus t)))
- (let* ((file-directory (concat news-path
- (string-subst-char ?/ ?. gp-list)))
- tem
- (last-winner
- (and end-file-no
- (news-wins file-directory end-file-no)
- (news-find-first-or-last file-directory end-file-no 1))))
- (setq news-list-of-files-possibly-bogus t news-list-of-files nil)
- (if last-winner
- (progn
- (setq news-list-of-files-possibly-bogus t
- news-current-group-end last-winner)
- (while (> last-winner end-file-no)
- (news-push last-winner news-list-of-files)
- (setq last-winner (1- last-winner)))
- news-list-of-files)
- (if (or (not (file-directory-p file-directory))
- (not (file-readable-p file-directory)))
- nil
- (setq news-list-of-files
- (condition-case error
- (directory-files file-directory)
- (file-error
- (if (string= (nth 2 error) "permission denied")
- (message "Newsgroup %s is read-protected"
- gp-list)
- (signal 'file-error (cdr error)))
- nil)))
- (setq tem news-list-of-files)
- (while tem
- (if (or (not (string-match "^[0-9]*$" (car tem)))
- ;; don't get confused by directories that look like numbers
- (file-directory-p
- (concat file-directory "/" (car tem)))
- (<= (string-to-number (car tem)) end-file-no))
- (setq news-list-of-files
- (delq (car tem) news-list-of-files)))
- (setq tem (cdr tem)))
- (if (null news-list-of-files)
- (progn (setq news-current-group-end 0)
- nil)
- (setq news-list-of-files
- (mapcar 'string-to-number news-list-of-files))
- (setq news-list-of-files (sort news-list-of-files '<))
- (setq news-current-group-end
- (elt news-list-of-files
- (1- (length news-list-of-files))))
- news-list-of-files)))))))
- (or answer (progn (news-set-current-group-certification) nil))))
-
-(defun news-read-files-into-buffer (group reversep)
- (let* ((files-start-end (news-cadr (assoc group news-group-article-assoc)))
- (start-file-no (car files-start-end))
- (end-file-no (news-cadr files-start-end))
- (buffer-read-only nil))
- (setq news-current-news-group group)
- (setq news-current-message-number nil)
- (setq news-current-group-end nil)
- (news-set-mode-line)
- (news-get-pruned-list-of-files group end-file-no)
- (news-set-mode-line)
- ;; @@ should be a lot smarter than this if we have to move
- ;; @@ around correctly.
- (setq news-point-pdl (list (cons (car files-start-end)
- (news-cadr files-start-end))))
- (if (null news-list-of-files)
- (progn (erase-buffer)
- (setq news-current-group-end end-file-no)
- (setq news-current-group-begin end-file-no)
- (setq news-current-message-number end-file-no)
- (news-set-mode-line)
-; (message "No new articles in " group " group.")
- nil)
- (setq news-current-group-begin (car news-list-of-files))
- (if reversep
- (setq news-current-message-number news-current-group-end)
- (if (> (car news-list-of-files) end-file-no)
- (setcdr (car news-point-pdl) (car news-list-of-files)))
- (setq news-current-message-number news-current-group-begin))
- (news-set-message-counters)
- (news-set-mode-line)
- (news-read-in-file (concat news-path
- (string-subst-char ?/ ?. group)
- "/"
- (int-to-string
- news-current-message-number)))
- (news-set-message-counters)
- (news-set-mode-line)
- t)))
-
-(defun news-add-news-group (gp)
- "Resubscribe to or add a USENET news group named GROUP (a string)."
-; @@ (completing-read ...)
-; @@ could be based on news library file ../active (slightly fascist)
-; @@ or (expensive to compute) all directories under the news spool directory
- (interactive "sAdd news group: ")
- (let ((file-dir (concat news-path (string-subst-char ?/ ?. gp))))
- (save-excursion
- (if (null (assoc gp news-group-article-assoc))
- (let ((newsrcbuf (find-file-noselect
- (substitute-in-file-name news-startup-file))))
- (if (file-directory-p file-dir)
- (progn
- (switch-to-buffer newsrcbuf)
- (goto-char 0)
- (if (search-forward (concat gp "! ") nil t)
- (progn
- (message "Re-subscribing to group %s." gp)
- ;;@@ news-unsubscribe-groups isn't being used
- ;;(setq news-unsubscribe-groups
- ;; (delq gp news-unsubscribe-groups))
- (backward-char 2)
- (delete-char 1)
- (insert ":"))
- (progn
- (message
- "Added %s to your list of newsgroups." gp)
- (goto-char (point-max))
- (insert gp ": 1-1\n")))
- (search-backward gp nil t)
- (let (start end endofline tem)
- (search-forward ": " nil t)
- (setq end (point))
- (beginning-of-line)
- (setq start (point))
- (end-of-line)
- (setq endofline (point))
- (setq tem (buffer-substring start (- end 2)))
- (let ((range (news-parse-range
- (buffer-substring end endofline))))
- (setq news-group-article-assoc
- (cons (list tem (list (car range)
- (cdr range)
- (cdr range)))
- news-group-article-assoc))))
- (save-buffer)
- (kill-buffer (current-buffer)))
- (message "Newsgroup %s doesn't exist." gp)))
- (message "Already subscribed to group %s." gp)))))
-
-(defun news-make-link-to-message (number newname)
- "Forges a link to an rnews message numbered number (current if no arg)
-Good for hanging on to a message that might or might not be
-automatically deleted."
- (interactive "P
-FName to link to message: ")
- (add-name-to-file
- (concat news-path
- (string-subst-char ?/ ?. news-current-news-group)
- "/" (if number
- (prefix-numeric-value number)
- news-current-message-number))
- newname))
-
-;;; caesar-region written by phr@gnu.org Nov 86
-;;; modified by tower@gnu.org Nov 86
-(defun caesar-region (&optional n)
- "Caesar rotation of region by N, default 13, for decrypting netnews."
- (interactive (if current-prefix-arg ; Was there a prefix arg?
- (list (prefix-numeric-value current-prefix-arg))
- (list nil)))
- (cond ((not (numberp n)) (setq n 13))
- (t (setq n (mod n 26)))) ;canonicalize N
- (if (not (zerop n)) ; no action needed for a rot of 0
- (progn
- (if (or (not (boundp 'caesar-translate-table))
- (/= (aref caesar-translate-table ?a) (+ ?a n)))
- (let ((i 0) (lower "abcdefghijklmnopqrstuvwxyz") upper)
- (message "Building caesar-translate-table...")
- (setq caesar-translate-table (make-vector 256 0))
- (while (< i 256)
- (aset caesar-translate-table i i)
- (setq i (1+ i)))
- (setq lower (concat lower lower) upper (upcase lower) i 0)
- (while (< i 26)
- (aset caesar-translate-table (+ ?a i) (aref lower (+ i n)))
- (aset caesar-translate-table (+ ?A i) (aref upper (+ i n)))
- (setq i (1+ i)))
- (message "Building caesar-translate-table... done")))
- (let ((from (region-beginning))
- (to (region-end))
- (i 0) str len)
- (setq str (buffer-substring from to))
- (setq len (length str))
- (while (< i len)
- (aset str i (aref caesar-translate-table (aref str i)))
- (setq i (1+ i)))
- (goto-char from)
- (kill-region from to)
- (insert str)))))
-
-;;; news-caesar-buffer-body written by paul@media-lab.mit.edu Wed Oct 1, 1986
-;;; hacked further by tower@gnu.org
-(defun news-caesar-buffer-body (&optional rotnum)
- "Caesar rotates all letters in the current buffer by 13 places.
-Used to encode/decode possibly offensive messages (commonly in net.jokes).
-With prefix arg, specifies the number of places to rotate each letter forward.
-Mail and USENET news headers are not rotated."
- (interactive (if current-prefix-arg ; Was there a prefix arg?
- (list (prefix-numeric-value current-prefix-arg))
- (list nil)))
- (save-excursion
- (let ((buffer-status buffer-read-only))
- (setq buffer-read-only nil)
- ;; setup the region
- (set-mark (if (equal major-mode 'news-mode)
- (progn (goto-char (point-min))
- (search-forward "\n\n" nil t))
- (mail-text-start)))
- (goto-char (point-max))
- (caesar-region rotnum)
- (setq buffer-read-only buffer-status))))
-
-(provide 'rnews)
-
-;; arch-tag: c032a20b-cafb-466c-b3fa-5be404a18f8c
-;;; rnews.el ends here
diff --git a/lisp/obsolete/rnewspost.el b/lisp/obsolete/rnewspost.el
deleted file mode 100644
index 23f7dfe4400..00000000000
--- a/lisp/obsolete/rnewspost.el
+++ /dev/null
@@ -1,447 +0,0 @@
-;;; rnewspost.el --- USENET news poster/mailer for GNU Emacs
-
-;; Copyright (C) 1985, 1986, 1987, 1995, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-
-;; Maintainer: FSF
-;; Keywords: mail, news
-
-;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This file has been obsolete since Emacs 22.1.
-
-;;; Change Log:
-
-;; moved posting and mail code from rnews.el
-;; tower@gnu.org Wed Oct 29 1986
-;; brought posting code almost up to the revision of RFC 850 for News 2.11
-;; - couldn't see handling the special meaning of the Keyword: poster
-;; - not worth the code space to support the old A news Title: (which
-;; Subject: replaced) and Article-I.D.: (which Message-ID: replaced)
-;; tower@gnu.org Nov 86
-;; changed C-c C-r key-binding due to rename of news-caesar-buffer-body
-;; tower@gnu.org 21 Nov 86
-;; added (require 'rnews) tower@gnu.org 22 Apr 87
-;; restricted call of news-show-all-headers in news-post-news & news-reply
-;; tower@gnu.org 28 Apr 87
-;; commented out Posting-Front-End to save USENET bytes tower@gnu.org Jul 31 87
-;; commented out -n and -t args in news-inews tower@gnu.org 15 Oct 87
-
-;Now in paths.el.
-;(defvar news-inews-program "inews"
-; "Function to post news.")
-
-;; Replying and posting news items are done by these functions.
-;; imported from rmail and modified to work with rnews ...
-;; Mon Mar 25,1985 at 03:07:04 ads@mit-hermes.
-;; this is done so that rnews can operate independently from rmail.el and
-;; sendmail and doesn't have to autoload these functions.
-;;
-;;; >> Nuked by Mly to autoload those functions again, as the duplication of
-;;; >> code was making maintenance too difficult.
-
-;;; Code:
-
-(require 'sendmail)
-(require 'rnews)
-
-(defvar mail-reply-buffer)
-
-(defvar news-reply-mode-map () "Mode map used by news-reply.")
-
-(or news-reply-mode-map
- (progn
- (setq news-reply-mode-map (make-keymap))
- (define-key news-reply-mode-map "\C-c\C-f\C-d" 'news-reply-distribution)
- (define-key news-reply-mode-map "\C-c\C-f\C-k" 'news-reply-keywords)
- (define-key news-reply-mode-map "\C-c\C-f\C-n" 'news-reply-newsgroups)
- (define-key news-reply-mode-map "\C-c\C-f\C-f" 'news-reply-followup-to)
- (define-key news-reply-mode-map "\C-c\C-f\C-s" 'mail-subject)
- (define-key news-reply-mode-map "\C-c\C-f\C-a" 'news-reply-summary)
- (define-key news-reply-mode-map "\C-c\C-t" 'mail-text)
- (define-key news-reply-mode-map "\C-c\C-r" 'news-caesar-buffer-body)
- (define-key news-reply-mode-map "\C-c\C-w" 'news-reply-signature)
- (define-key news-reply-mode-map "\C-c\C-y" 'news-reply-yank-original)
- (define-key news-reply-mode-map "\C-c\C-q" 'mail-fill-yanked-message)
- (define-key news-reply-mode-map "\C-c\C-c" 'news-inews)
- (define-key news-reply-mode-map "\C-c\C-s" 'news-inews)
- (define-key news-reply-mode-map [menu-bar] (make-sparse-keymap))
- (define-key news-reply-mode-map [menu-bar fields]
- (cons "Fields" (make-sparse-keymap "Fields")))
- (define-key news-reply-mode-map [menu-bar fields news-reply-distribution]
- '("Distribution" . news-reply-distribution))
- (define-key news-reply-mode-map [menu-bar fields news-reply-keywords]
- '("Keywords" . news-reply-keywords))
- (define-key news-reply-mode-map [menu-bar fields news-reply-newsgroups]
- '("Newsgroups" . news-reply-newsgroups))
- (define-key news-reply-mode-map [menu-bar fields news-reply-followup-to]
- '("Followup-to" . news-reply-followup-to))
- (define-key news-reply-mode-map [menu-bar fields mail-subject]
- '("Subject" . mail-subject))
- (define-key news-reply-mode-map [menu-bar fields news-reply-summary]
- '("Summary" . news-reply-summary))
- (define-key news-reply-mode-map [menu-bar fields mail-text]
- '("Text" . mail-text))
- (define-key news-reply-mode-map [menu-bar news]
- (cons "News" (make-sparse-keymap "News")))
- (define-key news-reply-mode-map [menu-bar news news-caesar-buffer-body]
- '("Rot13" . news-caesar-buffer-body))
- (define-key news-reply-mode-map [menu-bar news news-reply-yank-original]
- '("Yank Original" . news-reply-yank-original))
- (define-key news-reply-mode-map [menu-bar news mail-fill-yanked-message]
- '("Fill Yanked Messages" . mail-fill-yanked-message))
- (define-key news-reply-mode-map [menu-bar news news-inews]
- '("Send" . news-inews))))
-
-(defun news-reply-mode ()
- "Major mode for editing news to be posted on USENET.
-First-time posters are asked to please read the articles in newsgroup:
- news.announce.newusers .
-Like Text Mode but with these additional commands:
-
-C-c C-s news-inews (post the message) C-c C-c news-inews
-C-c C-f move to a header field (and create it if there isn't):
- C-c C-f C-n move to Newsgroups: C-c C-f C-s move to Subj:
- C-c C-f C-f move to Followup-To: C-c C-f C-k move to Keywords:
- C-c C-f C-d move to Distribution: C-c C-f C-a move to Summary:
-C-c C-y news-reply-yank-original (insert current message, in NEWS).
-C-c C-q mail-fill-yanked-message (fill what was yanked).
-C-c C-r caesar rotate all letters by 13 places in the article's body (rot13)."
- (interactive)
- (kill-all-local-variables)
- (make-local-variable 'mail-reply-buffer)
- (setq mail-reply-buffer nil)
- (set-syntax-table text-mode-syntax-table)
- (use-local-map news-reply-mode-map)
- (setq local-abbrev-table text-mode-abbrev-table)
- (setq major-mode 'news-reply-mode)
- (setq mode-name "News Reply")
- (make-local-variable 'paragraph-separate)
- (make-local-variable 'paragraph-start)
- (run-mode-hooks 'text-mode-hook 'news-reply-mode-hook))
-
-(defvar news-reply-yank-from ""
- "Save `From:' field for `news-reply-yank-original'.")
-
-(defvar news-reply-yank-message-id ""
- "Save `Message-Id:' field for `news-reply-yank-original'.")
-
-(defun news-reply-yank-original (arg)
- "Insert the message being replied to, if any (in Mail mode).
-Puts point before the text and mark after.
-Indents each nonblank line ARG spaces (default 3).
-Just \\[universal-argument] as argument means don't indent
-and don't delete any header fields."
- (interactive "P")
- (mail-yank-original arg)
- (exchange-point-and-mark)
- (run-hooks 'news-reply-header-hook))
-
-(defvar news-reply-header-hook
- (lambda ()
- (insert "In article " news-reply-yank-message-id
- " " news-reply-yank-from " writes:\n\n"))
- "Hook for inserting a header at the top of a yanked message.")
-
-(defun news-reply-newsgroups ()
- "Move point to end of `Newsgroups:' field.
-RFC 850 constrains the `Newsgroups:' field to be a comma-separated list
-of valid newsgroup names at your site. For example,
- Newsgroups: news.misc,comp.misc,rec.misc"
- (interactive)
- (expand-abbrev)
- (goto-char (point-min))
- (mail-position-on-field "Newsgroups"))
-
-(defun news-reply-followup-to ()
- "Move point to end of `Followup-To:' field. Create the field if none.
-One usually requests followups to only one newsgroup.
-RFC 850 constrains the `Followup-To:' field to be a comma-separated list
-of valid newsgroups names at your site, and it must be a subset of the
-`Newsgroups:' field. For example:
- Newsgroups: news.misc,comp.misc,rec.misc,misc.misc,soc.misc
- Followup-To: news.misc,comp.misc,rec.misc"
- (interactive)
- (expand-abbrev)
- (or (mail-position-on-field "Followup-To" t)
- (progn (mail-position-on-field "newsgroups")
- (insert "\nFollowup-To: ")))
- ;; @@ could do a completing read based on the Newsgroups: field to
- ;; @@ fill in the Followup-To: field
-)
-
-(defun news-reply-distribution ()
- "Move point to end of `Distribution:' optional field.
-Create the field if none. Without this field the posting goes to all of
-USENET. The field is used to restrict the posting to parts of USENET."
- (interactive)
- (expand-abbrev)
- (mail-position-on-field "Distribution")
- ;; @@could do a completing read based on the news library file:
- ;; @@ ../distributions to fill in the field.
- )
-
-(defun news-reply-keywords ()
- "Move point to end of `Keywords:' optional field. Create the field if none.
-Used as an aid to the news reader, it can contain a few, well selected keywords
-identifying the message."
- (interactive)
- (expand-abbrev)
- (mail-position-on-field "Keywords"))
-
-(defun news-reply-summary ()
- "Move point to end of `Summary:' optional field. Create the field if none.
-Used as an aid to the news reader, it can contain a succinct
-summary (abstract) of the message."
- (interactive)
- (expand-abbrev)
- (mail-position-on-field "Summary"))
-
-(defun news-reply-signature ()
- "The inews program appends `~/.signature' automatically."
- (interactive)
- (message "Posting news will append your signature automatically."))
-
-(defun news-setup (to subject in-reply-to newsgroups replybuffer)
- "Set up the news reply or posting buffer with the proper headers and mode."
- (setq mail-reply-buffer replybuffer)
- (let ((mail-setup-hook nil)
- ;; Avoid inserting a signature.
- (mail-signature))
- (if (null to)
- ;; this hack is needed so that inews wont be confused by
- ;; the fcc: and bcc: fields
- (let ((mail-self-blind nil)
- (mail-archive-file-name nil))
- (mail-setup to subject in-reply-to nil replybuffer nil)
- (beginning-of-line)
- (delete-region (point) (progn (forward-line 1) (point)))
- (goto-char (point-max)))
- (mail-setup to subject in-reply-to nil replybuffer nil))
- ;;;(mail-position-on-field "Posting-Front-End")
- ;;;(insert (emacs-version))
- (goto-char (point-max))
- (if (let ((case-fold-search t))
- (re-search-backward "^Subject:" (point-min) t))
- (progn (beginning-of-line)
- (insert "Newsgroups: " (or newsgroups "") "\n")
- (if (not newsgroups)
- (backward-char 1)
- (goto-char (point-max)))))
- (let (actual-header-separator)
- (rfc822-goto-eoh)
- (setq actual-header-separator (buffer-substring
- (point)
- (save-excursion (end-of-line) (point))))
- (setq paragraph-start
- (concat "^" actual-header-separator "$\\|" paragraph-start))
- (setq paragraph-separate
- (concat "^" actual-header-separator "$\\|" paragraph-separate)))
- (run-hooks 'news-setup-hook)))
-
-(defun news-inews ()
- "Send a news message using inews."
- (interactive)
- (let* (newsgroups subject
- (case-fold-search nil))
- (save-excursion
- (save-restriction
- (narrow-to-region (point-min) (mail-header-end))
- (setq newsgroups (mail-fetch-field "newsgroups")
- subject (mail-fetch-field "subject")))
- (widen)
- (goto-char (point-min))
- (run-hooks 'news-inews-hook)
- (mail-sendmail-undelimit-header)
- (goto-char (point-max))
- ;; require a newline at the end for inews to append .signature to
- (or (= (preceding-char) ?\n)
- (insert ?\n))
- (message "Posting to USENET...")
- (unwind-protect
- (if (not (eq 0
- (call-process-region (point-min) (point-max)
- news-inews-program nil 0 nil
- "-h"))) ; take all header lines!
- ;@@ setting of subject and newsgroups still needed?
- ;"-t" subject
- ;"-n" newsgroups
- (error "Posting to USENET failed")
- (message "Posting to USENET... done"))
- (mail-sendmail-delimit-header)
- (set-buffer-modified-p nil)))
- (bury-buffer)))
-
-;@@ shares some code with news-reply and news-post-news
-(defun news-mail-reply ()
- "Mail a reply to the author of the current article.
-While composing the reply, use \\[news-reply-yank-original] to yank the
-original message into it."
- (interactive)
- (let (from cc subject date to reply-to message-id
- (buffer (current-buffer)))
- (save-restriction
- (narrow-to-region (point-min) (progn (goto-char (point-min))
- (search-forward "\n\n")
- (1- (point))))
- (setq from (mail-fetch-field "from")
- subject (mail-fetch-field "subject")
- reply-to (mail-fetch-field "reply-to")
- date (mail-fetch-field "date")
- message-id (mail-fetch-field "message-id")))
- (setq to from)
- (pop-to-buffer "*mail*")
- (mail nil
- (if reply-to reply-to to)
- subject
- (let ((stop-pos (string-match " *at \\| *@ \\| *(\\| *<" from)))
- (concat (if stop-pos (substring from 0 stop-pos) from)
- "'s message "
- (if message-id
- (concat message-id " of ")
- "of ")
- date))
- nil
- buffer)))
-
-;@@ the guts of news-reply and news-post-news should be combined. -tower
-(defun news-reply ()
- "Compose and post a reply (aka a followup) to the current article on USENET.
-While composing the followup, use \\[news-reply-yank-original] to yank the
-original message into it."
- (interactive)
- (if (y-or-n-p "Are you sure you want to followup to all of USENET? ")
- (let (from cc subject date to followup-to newsgroups message-of
- references distribution message-id
- (buffer (current-buffer)))
- (save-restriction
- (and (not (= 0 (buffer-size))) ;@@real problem is non-existence of
- ;@@ of article file
- (equal major-mode 'news-mode) ;@@ if rmail-mode,
- ;@@ should show full headers
- (progn
- (news-show-all-headers) ;@@ should save/restore header state,
- ;@@ but rnews.el lacks support
- (narrow-to-region (point-min) (progn (goto-char (point-min))
- (search-forward "\n\n")
- (- (point) 1)))))
- (setq from (mail-fetch-field "from")
- news-reply-yank-from from
- ;; @@ not handling old Title: field
- subject (mail-fetch-field "subject")
- date (mail-fetch-field "date")
- followup-to (mail-fetch-field "followup-to")
- newsgroups (or followup-to
- (mail-fetch-field "newsgroups"))
- references (mail-fetch-field "references")
- ;; @@ not handling old Article-I.D.: field
- distribution (mail-fetch-field "distribution")
- message-id (mail-fetch-field "message-id")
- news-reply-yank-message-id message-id)
- (pop-to-buffer "*post-news*")
- (news-reply-mode)
- (if (and (buffer-modified-p)
- (not
- (y-or-n-p "Unsent article being composed; erase it? ")))
- ()
- (progn
- (erase-buffer)
- (and subject
- (progn (if (string-match "\\`Re: " subject)
- (while (string-match "\\`Re: " subject)
- (setq subject (substring subject 4))))
- (setq subject (concat "Re: " subject))))
- (and from
- (progn
- (let ((stop-pos
- (string-match " *at \\| *@ \\| *(\\| *<" from)))
- (setq message-of
- (concat
- (if stop-pos (substring from 0 stop-pos) from)
- "'s message "
- (if message-id
- (concat message-id " of ")
- "of ")
- date)))))
- (news-setup
- nil
- subject
- message-of
- newsgroups
- buffer)
- (if followup-to
- (progn (news-reply-followup-to)
- (insert followup-to)))
- (if distribution
- (progn
- (mail-position-on-field "Distribution")
- (insert distribution)))
- (mail-position-on-field "References")
- (if references
- (insert references))
- (if (and references message-id)
- (insert " "))
- (if message-id
- (insert message-id))
- (goto-char (point-max))))))
- (message "")))
-
-;@@ the guts of news-reply and news-post-news should be combined. -tower
-;;;###autoload
-(defun news-post-news (&optional noquery)
- "Begin editing a new USENET news article to be posted.
-Type \\[describe-mode] once editing the article to get a list of commands.
-If NOQUERY is non-nil, we do not query before doing the work."
- (interactive)
- (if (or noquery
- (y-or-n-p "Are you sure you want to post to all of USENET? "))
- (let ((buffer (current-buffer)))
- (save-restriction
- (and (not (= 0 (buffer-size))) ;@@real problem is non-existence of
- ;@@ of article file
- (equal major-mode 'news-mode) ;@@ if rmail-mode,
- ;@@ should show full headers
- (progn
- (news-show-all-headers) ;@@ should save/restore header state,
- ;@@ but rnews.el lacks support
- (narrow-to-region (point-min) (progn (goto-char (point-min))
- (search-forward "\n\n")
- (- (point) 1)))))
- (setq news-reply-yank-from (mail-fetch-field "from")
- ;; @@ not handling old Article-I.D.: field
- news-reply-yank-message-id (mail-fetch-field "message-id")))
- (pop-to-buffer "*post-news*")
- (news-reply-mode)
- (if (and (buffer-modified-p)
- (not (y-or-n-p "Unsent article being composed; erase it? ")))
- () ;@@ not saving point from last time
- (progn (erase-buffer)
- (news-setup () () () () buffer))))
- (message "")))
-
-(defun news-mail-other-window ()
- "Send mail in another window.
-While composing the message, use \\[news-reply-yank-original] to yank the
-original message into it."
- (interactive)
- (mail-other-window nil nil nil nil nil (current-buffer)))
-
-(provide 'rnewspost)
-
-;; arch-tag: 18f7b2af-cf9a-49e4-878b-71eb49913e00
-;;; rnewspost.el ends here
diff --git a/lisp/obsolete/sc.el b/lisp/obsolete/sc.el
deleted file mode 100644
index d5837f6ae7d..00000000000
--- a/lisp/obsolete/sc.el
+++ /dev/null
@@ -1,19 +0,0 @@
-;;; sc.el --- old name for supercite
-
-;; Maintainer: FSF
-
-;; This file is part of GNU Emacs.
-
-;;; Commentary:
-
-;; This file has been obsolete since Emacs 21.1.
-
-;;; Code:
-
-(require 'supercite)
-(provide 'sc)
-
-(message "The name `sc' works but is obsolete; please use `supercite' instead")
-
-;; arch-tag: 31e8ae19-689e-4b7d-9161-6d7dd60c6ece
-;;; sc.el ends here
diff --git a/lisp/obsolete/vc-mcvs.el b/lisp/obsolete/vc-mcvs.el
index fcfb566b4f2..8027ee62933 100644
--- a/lisp/obsolete/vc-mcvs.el
+++ b/lisp/obsolete/vc-mcvs.el
@@ -102,10 +102,9 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
:version "22.1"
:group 'vc)
-(defcustom vc-mcvs-header (or (cdr (assoc 'MCVS vc-header-alist))
- vc-cvs-header)
+(defcustom vc-mcvs-header vc-cvs-header
"Header keywords to be inserted by `vc-insert-headers'."
- :version "22.1"
+ :version "24.1" ; no longer consult the obsolete vc-header-alist
:type '(repeat string)
:group 'vc)
diff --git a/lisp/obsolete/x-menu.el b/lisp/obsolete/x-menu.el
deleted file mode 100644
index 1536a023364..00000000000
--- a/lisp/obsolete/x-menu.el
+++ /dev/null
@@ -1,153 +0,0 @@
-;;; x-menu.el --- menu support for X
-
-;; Copyright (C) 1986, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-
-;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This file has been obsolete since Emacs 21.1.
-
-;;; Code:
-
-(defvar x-process-mouse-hook)
-
-(defun x-menu-mode ()
- "Major mode for creating permanent menus for use with X.
-These menus are implemented entirely in Lisp; popup menus, implemented
-with x-popup-menu, are implemented using XMenu primitives."
- (make-local-variable 'x-menu-items-per-line)
- (make-local-variable 'x-menu-item-width)
- (make-local-variable 'x-menu-items-alist)
- (make-local-variable 'x-process-mouse-hook)
- (make-local-variable 'x-menu-assoc-buffer)
- (setq buffer-read-only t)
- (setq truncate-lines t)
- (setq x-process-mouse-hook 'x-menu-pick-entry)
- (setq mode-line-buffer-identification '("MENU: %32b")))
-
-(defvar x-menu-max-width 0)
-(defvar x-menu-items-per-line 0)
-(defvar x-menu-item-width 0)
-(defvar x-menu-items-alist nil)
-(defvar x-menu-assoc-buffer nil)
-
-(defvar x-menu-item-spacing 1
- "*Minimum horizontal spacing between objects in a permanent X menu.")
-
-(defun x-menu-create-menu (name)
- "Create a permanent X menu.
-Returns an item which should be used as a
-menu object whenever referring to the menu."
- (let ((old (current-buffer))
- (buf (get-buffer-create name)))
- (set-buffer buf)
- (x-menu-mode)
- (setq x-menu-assoc-buffer old)
- (set-buffer old)
- buf))
-
-(defun x-menu-change-associated-buffer (menu buffer)
- "Change associated buffer of MENU to BUFFER.
-BUFFER should be a buffer object."
- (let ((old (current-buffer)))
- (set-buffer menu)
- (setq x-menu-assoc-buffer buffer)
- (set-buffer old)))
-
-(defun x-menu-add-item (menu item binding)
- "Add to MENU an item with name ITEM, associated with BINDING.
-Following a sequence of calls to x-menu-add-item, a call to x-menu-compute
-should be performed before the menu will be made available to the user.
-
-BINDING should be a function of one argument, which is the numerical
-button/key code as defined in x-menu.el."
- (let ((old (current-buffer))
- elt)
- (set-buffer menu)
- (if (setq elt (assoc item x-menu-items-alist))
- (rplacd elt binding)
- (setq x-menu-items-alist (append x-menu-items-alist
- (list (cons item binding)))))
- (set-buffer old)
- item))
-
-(defun x-menu-delete-item (menu item)
- "Delete from MENU the item named ITEM.
-Call `x-menu-compute' before making the menu available to the user."
- (let ((old (current-buffer))
- elt)
- (set-buffer menu)
- (if (setq elt (assoc item x-menu-items-alist))
- (rplaca elt nil))
- (set-buffer old)
- item))
-
-(defun x-menu-activate (menu)
- "Compute all necessary parameters for MENU.
-This must be called whenever a menu is modified before it is made
-available to the user. This also creates the menu itself."
- (let ((buf (current-buffer)))
- (pop-to-buffer menu)
- (let (buffer-read-only)
- (setq x-menu-max-width (1- (frame-width)))
- (setq x-menu-item-width 0)
- (let (items-head
- (items-tail x-menu-items-alist))
- (while items-tail
- (if (car (car items-tail))
- (progn (setq items-head (cons (car items-tail) items-head))
- (setq x-menu-item-width
- (max x-menu-item-width
- (length (car (car items-tail)))))))
- (setq items-tail (cdr items-tail)))
- (setq x-menu-items-alist (reverse items-head)))
- (setq x-menu-item-width (+ x-menu-item-spacing x-menu-item-width))
- (setq x-menu-items-per-line
- (max 1 (/ x-menu-max-width x-menu-item-width)))
- (erase-buffer)
- (let ((items-head x-menu-items-alist))
- (while items-head
- (let ((items 0))
- (while (and items-head
- (<= (setq items (1+ items)) x-menu-items-per-line))
- (insert (format (concat "%"
- (int-to-string x-menu-item-width) "s")
- (car (car items-head))))
- (setq items-head (cdr items-head))))
- (insert ?\n)))
- (shrink-window (max 0
- (- (window-height)
- (1+ (count-lines (point-min) (point-max))))))
- (goto-char (point-min)))
- (pop-to-buffer buf)))
-
-(defun x-menu-pick-entry (position event)
- "Internal function for dispatching on mouse/menu events"
- (let* ((x (min (1- x-menu-items-per-line)
- (/ (current-column) x-menu-item-width)))
- (y (- (count-lines (point-min) (point))
- (if (zerop (current-column)) 0 1)))
- (item (+ x (* y x-menu-items-per-line)))
- (litem (cdr (nth item x-menu-items-alist))))
- (and litem (funcall litem event)))
- (pop-to-buffer x-menu-assoc-buffer))
-
-(provide 'x-menu)
-
-;; arch-tag: 889f6d49-c01b-49e7-aaef-b0c6966c2961
-;;; x-menu.el ends here
diff --git a/lisp/outline.el b/lisp/outline.el
index ed7d5f33a35..95cc450973a 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -1,7 +1,8 @@
;;; outline.el --- outline mode commands for Emacs
;; Copyright (C) 1986, 1993, 1994, 1995, 1997, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: outlines
@@ -445,10 +446,6 @@ at the end of the buffer."
"Non-nil if the character after point is invisible."
(get-char-property (or pos (point)) 'invisible))
-(defun outline-visible ()
- (not (outline-invisible-p)))
-(make-obsolete 'outline-visible 'outline-invisible-p "21.1")
-
(defun outline-back-to-heading (&optional invisible-ok)
"Move to previous heading line, or beg of this line if it's a heading.
Only visible heading lines are considered, unless INVISIBLE-OK is non-nil."
diff --git a/lisp/pgg-parse.el b/lisp/pgg-parse.el
index 2325171b68b..72f8729de77 100644
--- a/lisp/pgg-parse.el
+++ b/lisp/pgg-parse.el
@@ -36,6 +36,7 @@
;;; Code:
(eval-when-compile
+ ;; For Emacs <22.2 and XEmacs.
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))
(require 'cl))
diff --git a/lisp/pgg.el b/lisp/pgg.el
index de227394f29..f654f3dc35e 100644
--- a/lisp/pgg.el
+++ b/lisp/pgg.el
@@ -36,6 +36,7 @@
;; Don't merge these two `eval-when-compile's.
(eval-when-compile
+ ;; For Emacs <22.2 and XEmacs.
(unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))
(require 'cl))
diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el
index 5263cf11bc7..918587db132 100644
--- a/lisp/play/5x5.el
+++ b/lisp/play/5x5.el
@@ -108,12 +108,7 @@
(defvar 5x5-buffer-name "*5x5*"
"Name of the 5x5 play buffer.")
-(defvar 5x5-mode-map nil
- "Local keymap for the 5x5 game.")
-
-;; Keymap.
-
-(unless 5x5-mode-map
+(defvar 5x5-mode-map
(let ((map (make-sparse-keymap)))
(suppress-keymap map t)
(define-key map "?" #'describe-mode)
@@ -141,7 +136,8 @@
(define-key map [(control c) (control x)] #'5x5-crack-xor-mutate)
(define-key map "n" #'5x5-new-game)
(define-key map "q" #'5x5-quit-game)
- (setq 5x5-mode-map map)))
+ map)
+ "Local keymap for the 5x5 game.")
;; Menu definition.
diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el
index 83186c42442..34119a77a75 100644
--- a/lisp/play/decipher.el
+++ b/lisp/play/decipher.el
@@ -154,38 +154,37 @@ For example, to display ciphertext in the `bold' face, use
'bold)))
in your `.emacs' file.")
-(defvar decipher-mode-map nil
+(defvar decipher-mode-map
+ (let ((map (make-keymap)))
+ (suppress-keymap map)
+ (define-key map "A" 'decipher-show-alphabet)
+ (define-key map "C" 'decipher-complete-alphabet)
+ (define-key map "D" 'decipher-digram-list)
+ (define-key map "F" 'decipher-frequency-count)
+ (define-key map "M" 'decipher-make-checkpoint)
+ (define-key map "N" 'decipher-adjacency-list)
+ (define-key map "R" 'decipher-restore-checkpoint)
+ (define-key map "U" 'decipher-undo)
+ (define-key map " " 'decipher-keypress)
+ (define-key map [remap undo] 'decipher-undo)
+ (define-key map [remap advertised-undo] 'decipher-undo)
+ (let ((key ?a))
+ (while (<= key ?z)
+ (define-key map (vector key) 'decipher-keypress)
+ (incf key)))
+ map)
"Keymap for Decipher mode.")
-(if (not decipher-mode-map)
- (progn
- (setq decipher-mode-map (make-keymap))
- (suppress-keymap decipher-mode-map)
- (define-key decipher-mode-map "A" 'decipher-show-alphabet)
- (define-key decipher-mode-map "C" 'decipher-complete-alphabet)
- (define-key decipher-mode-map "D" 'decipher-digram-list)
- (define-key decipher-mode-map "F" 'decipher-frequency-count)
- (define-key decipher-mode-map "M" 'decipher-make-checkpoint)
- (define-key decipher-mode-map "N" 'decipher-adjacency-list)
- (define-key decipher-mode-map "R" 'decipher-restore-checkpoint)
- (define-key decipher-mode-map "U" 'decipher-undo)
- (define-key decipher-mode-map " " 'decipher-keypress)
- (define-key decipher-mode-map [remap undo] 'decipher-undo)
- (define-key decipher-mode-map [remap advertised-undo] 'decipher-undo)
- (let ((key ?a))
- (while (<= key ?z)
- (define-key decipher-mode-map (vector key) 'decipher-keypress)
- (incf key)))))
-
-(defvar decipher-stats-mode-map nil
- "Keymap for Decipher-Stats mode.")
-(if (not decipher-stats-mode-map)
- (progn
- (setq decipher-stats-mode-map (make-keymap))
- (suppress-keymap decipher-stats-mode-map)
- (define-key decipher-stats-mode-map "D" 'decipher-digram-list)
- (define-key decipher-stats-mode-map "F" 'decipher-frequency-count)
- (define-key decipher-stats-mode-map "N" 'decipher-adjacency-list)
- ))
+
+
+(defvar decipher-stats-mode-map
+ (let ((map (make-keymap)))
+ (suppress-keymap map)
+ (define-key map "D" 'decipher-digram-list)
+ (define-key map "F" 'decipher-frequency-count)
+ (define-key map "N" 'decipher-adjacency-list)
+ map)
+"Keymap for Decipher-Stats mode.")
+
(defvar decipher-mode-syntax-table nil
"Decipher mode syntax table")
diff --git a/lisp/play/landmark.el b/lisp/play/landmark.el
index 2c82e8cd420..5262f4db98d 100644
--- a/lisp/play/landmark.el
+++ b/lisp/play/landmark.el
@@ -159,52 +159,52 @@
:type 'hook
:group 'lm)
-(defvar lm-mode-map nil
+(defvar lm-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; Key bindings for cursor motion.
+ (define-key map "y" 'lm-move-nw) ; y
+ (define-key map "u" 'lm-move-ne) ; u
+ (define-key map "b" 'lm-move-sw) ; b
+ (define-key map "n" 'lm-move-se) ; n
+ (define-key map "h" 'backward-char) ; h
+ (define-key map "l" 'forward-char) ; l
+ (define-key map "j" 'lm-move-down) ; j
+ (define-key map "k" 'lm-move-up) ; k
+
+ (define-key map [kp-7] 'lm-move-nw)
+ (define-key map [kp-9] 'lm-move-ne)
+ (define-key map [kp-1] 'lm-move-sw)
+ (define-key map [kp-3] 'lm-move-se)
+ (define-key map [kp-4] 'backward-char)
+ (define-key map [kp-6] 'forward-char)
+ (define-key map [kp-2] 'lm-move-down)
+ (define-key map [kp-8] 'lm-move-up)
+
+ (define-key map "\C-n" 'lm-move-down) ; C-n
+ (define-key map "\C-p" 'lm-move-up) ; C-p
+
+ ;; Key bindings for entering Human moves.
+ (define-key map "X" 'lm-human-plays) ; X
+ (define-key map "x" 'lm-human-plays) ; x
+
+ (define-key map " " 'lm-start-robot) ; SPC
+ (define-key map [down-mouse-1] 'lm-start-robot)
+ (define-key map [drag-mouse-1] 'lm-click)
+ (define-key map [mouse-1] 'lm-click)
+ (define-key map [down-mouse-2] 'lm-click)
+ (define-key map [mouse-2] 'lm-mouse-play)
+ (define-key map [drag-mouse-2] 'lm-mouse-play)
+
+ (define-key map [remap previous-line] 'lm-move-up)
+ (define-key map [remap next-line] 'lm-move-down)
+ (define-key map [remap beginning-of-line] 'lm-beginning-of-line)
+ (define-key map [remap end-of-line] 'lm-end-of-line)
+ (define-key map [remap undo] 'lm-human-takes-back)
+ (define-key map [remap advertised-undo] 'lm-human-takes-back)
+ map)
"Local keymap to use in Lm mode.")
-(if lm-mode-map nil
- (setq lm-mode-map (make-sparse-keymap))
-
- ;; Key bindings for cursor motion.
- (define-key lm-mode-map "y" 'lm-move-nw) ; y
- (define-key lm-mode-map "u" 'lm-move-ne) ; u
- (define-key lm-mode-map "b" 'lm-move-sw) ; b
- (define-key lm-mode-map "n" 'lm-move-se) ; n
- (define-key lm-mode-map "h" 'backward-char) ; h
- (define-key lm-mode-map "l" 'forward-char) ; l
- (define-key lm-mode-map "j" 'lm-move-down) ; j
- (define-key lm-mode-map "k" 'lm-move-up) ; k
-
- (define-key lm-mode-map [kp-7] 'lm-move-nw)
- (define-key lm-mode-map [kp-9] 'lm-move-ne)
- (define-key lm-mode-map [kp-1] 'lm-move-sw)
- (define-key lm-mode-map [kp-3] 'lm-move-se)
- (define-key lm-mode-map [kp-4] 'backward-char)
- (define-key lm-mode-map [kp-6] 'forward-char)
- (define-key lm-mode-map [kp-2] 'lm-move-down)
- (define-key lm-mode-map [kp-8] 'lm-move-up)
-
- (define-key lm-mode-map "\C-n" 'lm-move-down) ; C-n
- (define-key lm-mode-map "\C-p" 'lm-move-up) ; C-p
-
- ;; Key bindings for entering Human moves.
- (define-key lm-mode-map "X" 'lm-human-plays) ; X
- (define-key lm-mode-map "x" 'lm-human-plays) ; x
-
- (define-key lm-mode-map " " 'lm-start-robot) ; SPC
- (define-key lm-mode-map [down-mouse-1] 'lm-start-robot)
- (define-key lm-mode-map [drag-mouse-1] 'lm-click)
- (define-key lm-mode-map [mouse-1] 'lm-click)
- (define-key lm-mode-map [down-mouse-2] 'lm-click)
- (define-key lm-mode-map [mouse-2] 'lm-mouse-play)
- (define-key lm-mode-map [drag-mouse-2] 'lm-mouse-play)
-
- (define-key lm-mode-map [remap previous-line] 'lm-move-up)
- (define-key lm-mode-map [remap next-line] 'lm-move-down)
- (define-key lm-mode-map [remap beginning-of-line] 'lm-beginning-of-line)
- (define-key lm-mode-map [remap end-of-line] 'lm-end-of-line)
- (define-key lm-mode-map [remap undo] 'lm-human-takes-back)
- (define-key lm-mode-map [remap advertised-undo] 'lm-human-takes-back))
+
(defvar lm-emacs-won ()
"*For making font-lock use the winner's face for the line.")
diff --git a/lisp/play/mpuz.el b/lisp/play/mpuz.el
index 954730c9491..c5b74a8499f 100644
--- a/lisp/play/mpuz.el
+++ b/lisp/play/mpuz.el
@@ -87,33 +87,34 @@ t means never ding, and `error' means only ding on wrong input."
:type 'hook
:group 'mpuz)
-(defvar mpuz-mode-map nil
+(defvar mpuz-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "a" 'mpuz-try-letter)
+ (define-key map "b" 'mpuz-try-letter)
+ (define-key map "c" 'mpuz-try-letter)
+ (define-key map "d" 'mpuz-try-letter)
+ (define-key map "e" 'mpuz-try-letter)
+ (define-key map "f" 'mpuz-try-letter)
+ (define-key map "g" 'mpuz-try-letter)
+ (define-key map "h" 'mpuz-try-letter)
+ (define-key map "i" 'mpuz-try-letter)
+ (define-key map "j" 'mpuz-try-letter)
+ (define-key map "A" 'mpuz-try-letter)
+ (define-key map "B" 'mpuz-try-letter)
+ (define-key map "C" 'mpuz-try-letter)
+ (define-key map "D" 'mpuz-try-letter)
+ (define-key map "E" 'mpuz-try-letter)
+ (define-key map "F" 'mpuz-try-letter)
+ (define-key map "G" 'mpuz-try-letter)
+ (define-key map "H" 'mpuz-try-letter)
+ (define-key map "I" 'mpuz-try-letter)
+ (define-key map "J" 'mpuz-try-letter)
+ (define-key map "\C-g" 'mpuz-offer-abort)
+ (define-key map "?" 'describe-mode)
+ map)
"Local keymap to use in Mult Puzzle.")
-(if mpuz-mode-map nil
- (setq mpuz-mode-map (make-sparse-keymap))
- (define-key mpuz-mode-map "a" 'mpuz-try-letter)
- (define-key mpuz-mode-map "b" 'mpuz-try-letter)
- (define-key mpuz-mode-map "c" 'mpuz-try-letter)
- (define-key mpuz-mode-map "d" 'mpuz-try-letter)
- (define-key mpuz-mode-map "e" 'mpuz-try-letter)
- (define-key mpuz-mode-map "f" 'mpuz-try-letter)
- (define-key mpuz-mode-map "g" 'mpuz-try-letter)
- (define-key mpuz-mode-map "h" 'mpuz-try-letter)
- (define-key mpuz-mode-map "i" 'mpuz-try-letter)
- (define-key mpuz-mode-map "j" 'mpuz-try-letter)
- (define-key mpuz-mode-map "A" 'mpuz-try-letter)
- (define-key mpuz-mode-map "B" 'mpuz-try-letter)
- (define-key mpuz-mode-map "C" 'mpuz-try-letter)
- (define-key mpuz-mode-map "D" 'mpuz-try-letter)
- (define-key mpuz-mode-map "E" 'mpuz-try-letter)
- (define-key mpuz-mode-map "F" 'mpuz-try-letter)
- (define-key mpuz-mode-map "G" 'mpuz-try-letter)
- (define-key mpuz-mode-map "H" 'mpuz-try-letter)
- (define-key mpuz-mode-map "I" 'mpuz-try-letter)
- (define-key mpuz-mode-map "J" 'mpuz-try-letter)
- (define-key mpuz-mode-map "\C-g" 'mpuz-offer-abort)
- (define-key mpuz-mode-map "?" 'describe-mode))
+
(defun mpuz-mode ()
"Multiplication puzzle mode.
diff --git a/lisp/printing.el b/lisp/printing.el
index 2cbf39f1967..aacd8d42ae4 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -1,7 +1,7 @@
;;; printing.el --- printing utilities
-;; Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+;; 2010 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
@@ -1387,20 +1387,6 @@ Used by `pr-menu-bind' and `pr-update-menus'.")
(require 'easymenu)) ; to avoid compilation gripes
(eval-and-compile
- (cond
- ;; GNU Emacs 20
- ((< emacs-major-version 21)
- (defun pr-global-menubar (pr-menu-spec)
- (require 'easymenu)
- (easy-menu-change '("tools") "Printing" pr-menu-spec pr-menu-print-item)
- (when pr-menu-print-item
- (easy-menu-remove-item nil '("tools") pr-menu-print-item)
- (setq pr-menu-print-item nil
- pr-menu-bar (vector 'menu-bar 'tools
- (pr-get-symbol "Printing")))))
- )
- ;; GNU Emacs 21 & 22
- (t
(defun pr-global-menubar (pr-menu-spec)
(require 'easymenu)
(let ((menu-file (if (= emacs-major-version 21)
@@ -1422,8 +1408,7 @@ Used by `pr-menu-bind' and `pr-update-menus'.")
(t
(easy-menu-add-item global-map menu-file
(easy-menu-create-menu "Print" pr-menu-spec)))
- )))
- )))
+ ))))
(eval-and-compile
(cond
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 2a24bf1ce90..18010407eda 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -5646,17 +5646,23 @@ comment at the start of cc-engine.el for more info."
(defun c-forward-name ()
;; Move forward over a complete name if at the beginning of one,
- ;; stopping at the next following token. If the point is not at
- ;; something that are recognized as name then it stays put. A name
- ;; could be something as simple as "foo" in C or something as
+ ;; stopping at the next following token. A keyword, as such,
+ ;; doesn't count as a name. If the point is not at something that
+ ;; is recognized as a name then it stays put.
+ ;;
+ ;; A name could be something as simple as "foo" in C or something as
;; complex as "X<Y<class A<int>::B, BIT_MAX >> b>, ::operator<> ::
;; Z<(a>b)> :: operator const X<&foo>::T Q::G<unsigned short
;; int>::*volatile const" in C++ (this function is actually little
;; more than a `looking-at' call in all modes except those that,
- ;; like C++, have `c-recognize-<>-arglists' set). Return nil if no
- ;; name is found, 'template if it's an identifier ending with an
- ;; angle bracket arglist, 'operator of it's an operator identifier,
- ;; or t if it's some other kind of name.
+ ;; like C++, have `c-recognize-<>-arglists' set).
+ ;;
+ ;; Return
+ ;; o - nil if no name is found;
+ ;; o - 'template if it's an identifier ending with an angle bracket
+ ;; arglist;
+ ;; o - 'operator of it's an operator identifier;
+ ;; o - t if it's some other kind of name.
;;
;; This function records identifier ranges on
;; `c-record-type-identifiers' and `c-record-ref-identifiers' if
@@ -5808,16 +5814,28 @@ comment at the start of cc-engine.el for more info."
(goto-char pos)
res))
-(defun c-forward-type ()
+(defun c-forward-type (&optional brace-block-too)
;; Move forward over a type spec if at the beginning of one,
- ;; stopping at the next following token. Return t if it's a known
- ;; type that can't be a name or other expression, 'known if it's an
- ;; otherwise known type (according to `*-font-lock-extra-types'),
- ;; 'prefix if it's a known prefix of a type, 'found if it's a type
- ;; that matches one in `c-found-types', 'maybe if it's an identfier
- ;; that might be a type, or nil if it can't be a type (the point
- ;; isn't moved then). The point is assumed to be at the beginning
- ;; of a token.
+ ;; stopping at the next following token. The keyword "typedef"
+ ;; isn't part of a type spec here.
+ ;;
+ ;; BRACE-BLOCK-TOO, when non-nil, means move over the brace block in
+ ;; constructs like "struct foo {...} bar ;" or "struct {...} bar;".
+ ;; The current (2009-03-10) intention is to convert all uses of
+ ;; `c-forward-type' to call with this parameter set, then to
+ ;; eliminate it.
+ ;;
+ ;; Return
+ ;; o - t if it's a known type that can't be a name or other
+ ;; expression;
+ ;; o - 'known if it's an otherwise known type (according to
+ ;; `*-font-lock-extra-types');
+ ;; o - 'prefix if it's a known prefix of a type;
+ ;; o - 'found if it's a type that matches one in `c-found-types';
+ ;; o - 'maybe if it's an identfier that might be a type; or
+ ;; o - nil if it can't be a type (the point isn't moved then).
+ ;;
+ ;; The point is assumed to be at the beginning of a token.
;;
;; Note that this function doesn't skip past the brace definition
;; that might be considered part of the type, e.g.
@@ -5836,32 +5854,39 @@ comment at the start of cc-engine.el for more info."
;; Skip leading type modifiers. If any are found we know it's a
;; prefix of a type.
- (when c-opt-type-modifier-key
+ (when c-opt-type-modifier-key ; e.g. "const" "volatile", but NOT "typedef"
(while (looking-at c-opt-type-modifier-key)
(goto-char (match-end 1))
(c-forward-syntactic-ws)
(setq res 'prefix)))
(cond
- ((looking-at c-type-prefix-key)
- ;; Looking at a keyword that prefixes a type identifier,
- ;; e.g. "class".
+ ((looking-at c-type-prefix-key) ; e.g. "struct", "class", but NOT
+ ; "typedef".
(goto-char (match-end 1))
(c-forward-syntactic-ws)
(setq pos (point))
- (if (memq (setq name-res (c-forward-name)) '(t template))
- (progn
- (when (eq name-res t)
- ;; In many languages the name can be used without the
- ;; prefix, so we add it to `c-found-types'.
- (c-add-type pos (point))
- (when (and c-record-type-identifiers
- c-last-identifier-range)
- (c-record-type-id c-last-identifier-range)))
- (setq res t))
- ;; Invalid syntax.
- (goto-char start)
- (setq res nil)))
+
+ (setq name-res (c-forward-name))
+ (setq res (not (null name-res)))
+ (when (eq name-res t)
+ ;; In many languages the name can be used without the
+ ;; prefix, so we add it to `c-found-types'.
+ (c-add-type pos (point))
+ (when (and c-record-type-identifiers
+ c-last-identifier-range)
+ (c-record-type-id c-last-identifier-range)))
+ (when (and brace-block-too
+ (memq res '(t nil))
+ (eq (char-after) ?\{)
+ (save-excursion
+ (c-safe
+ (progn (c-forward-sexp)
+ (c-forward-syntactic-ws)
+ (setq pos (point))))))
+ (goto-char pos)
+ (setq res t))
+ (unless res (goto-char start))) ; invalid syntax
((progn
(setq pos nil)
@@ -5951,14 +5976,13 @@ comment at the start of cc-engine.el for more info."
(setq res nil)))))
(when res
- ;; Skip trailing type modifiers. If any are found we know it's
+ ;; Skip trailing type modifiers. If any are found we know it's
;; a type.
(when c-opt-type-modifier-key
- (while (looking-at c-opt-type-modifier-key)
+ (while (looking-at c-opt-type-modifier-key) ; e.g. "const", "volatile"
(goto-char (match-end 1))
(c-forward-syntactic-ws)
(setq res t)))
-
;; Step over any type suffix operator. Do not let the existence
;; of these alter the classification of the found type, since
;; these operators typically are allowed in normal expressions
@@ -5968,7 +5992,7 @@ comment at the start of cc-engine.el for more info."
(goto-char (match-end 1))
(c-forward-syntactic-ws)))
- (when c-opt-type-concat-key
+ (when c-opt-type-concat-key ; Only/mainly for pike.
;; Look for a trailing operator that concatenates the type
;; with a following one, and if so step past that one through
;; a recursive call. Note that we don't record concatenated
@@ -6119,11 +6143,15 @@ comment at the start of cc-engine.el for more info."
;; car ^ ^ point
;; Foo::Foo (int b) : Base (b) {}
;; car ^ ^ point
- ;;
- ;; The cdr of the return value is non-nil iff a `c-typedef-decl-kwds'
- ;; specifier (e.g. class, struct, enum, typedef) is found in the
- ;; declaration, i.e. the declared identifier(s) are types.
- ;;
+ ;;
+ ;; The cdr of the return value is non-nil when a
+ ;; `c-typedef-decl-kwds' specifier is found in the declaration.
+ ;; Specifically it is a dotted pair (A . B) where B is t when a
+ ;; `c-typedef-kwds' ("typedef") is present, and A is t when some
+ ;; other `c-typedef-decl-kwds' (e.g. class, struct, enum)
+ ;; specifier is present. I.e., (some of) the declared
+ ;; identifier(s) are types.
+ ;;
;; If a cast is parsed:
;;
;; The point is left at the first token after the closing paren of
@@ -6181,9 +6209,11 @@ comment at the start of cc-engine.el for more info."
;; If `backup-at-type' is nil then the other variables have
;; undefined values.
backup-at-type backup-type-start backup-id-start
- ;; Set if we've found a specifier that makes the defined
- ;; identifier(s) types.
+ ;; Set if we've found a specifier (apart from "typedef") that makes
+ ;; the defined identifier(s) types.
at-type-decl
+ ;; Set if we've a "typedef" keyword.
+ at-typedef
;; Set if we've found a specifier that can start a declaration
;; where there's no type.
maybe-typeless
@@ -6223,12 +6253,14 @@ comment at the start of cc-engine.el for more info."
;; Look for a specifier keyword clause.
(when (looking-at c-prefix-spec-kwds-re)
+ (if (looking-at c-typedef-key)
+ (setq at-typedef t))
(setq kwd-sym (c-keyword-sym (match-string 1)))
(save-excursion
(c-forward-keyword-clause 1)
(setq kwd-clause-end (point))))
- (when (setq found-type (c-forward-type))
+ (when (setq found-type (c-forward-type t)) ; brace-block-too
;; Found a known or possible type or a prefix of a known type.
(when at-type
@@ -6293,6 +6325,8 @@ comment at the start of cc-engine.el for more info."
(setq backup-maybe-typeless t)))
(when (c-keyword-member kwd-sym 'c-typedef-decl-kwds)
+ ;; This test only happens after we've scanned a type.
+ ;; So, with valid syntax, kwd-sym can't be 'typedef.
(setq at-type-decl t))
(when (c-keyword-member kwd-sym 'c-typeless-decl-kwds)
(setq maybe-typeless t))
@@ -6892,7 +6926,9 @@ comment at the start of cc-engine.el for more info."
(goto-char type-start)
(c-forward-type))))
- (cons id-start at-type-decl))
+ (cons id-start
+ (and (or at-type-decl at-typedef)
+ (cons at-type-decl at-typedef))))
(t
;; False alarm. Restore the recorded ranges.
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index 72703b9a5e4..a99876a6bfc 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -289,7 +289,7 @@
;; bit of the overhead compared to a real matcher. The main reason
;; is however to pass the real search limit to the anchored
;; matcher(s), since most (if not all) font-lock implementations
- ;; arbitrarily limits anchored matchers to the same line, and also
+ ;; arbitrarily limit anchored matchers to the same line, and also
;; to insulate against various other irritating differences between
;; the different (X)Emacs font-lock packages.
;;
@@ -310,7 +310,7 @@
;; covered by the font-lock context.)
;; Note: Replace `byte-compile' with `eval' to debug the generated
- ;; lambda easier.
+ ;; lambda more easily.
(byte-compile
`(lambda (limit)
(let (;; The font-lock package in Emacs is known to clobber
@@ -721,16 +721,26 @@ casts and declarations are fontified. Used on level 2 and higher."
;; Clear the list of found types if we start from the start of the
;; buffer, to make it easier to get rid of misspelled types and
- ;; variables that has gotten recognized as types in malformed code.
+ ;; variables that have gotten recognized as types in malformed code.
(when (bobp)
(c-clear-found-types))
- ;; Clear the c-type char properties in the region to recalculate
- ;; them properly. This is necessary e.g. to handle constructs that
- ;; might been required as declarations temporarily during editing.
- ;; The interesting properties are anyway those put on the closest
- ;; token before the region.
- (c-clear-char-properties (point) limit 'c-type)
+ ;; Clear the c-type char properties which mark the region, to recalculate
+ ;; them properly. The most interesting properties are those put on the
+ ;; closest token before the region.
+ (save-excursion
+ (let ((pos (point)))
+ (c-backward-syntactic-ws)
+ (c-clear-char-properties
+ (if (and (not (bobp))
+ (memq (c-get-char-property (1- (point)) 'c-type)
+ '(c-decl-arg-start
+ c-decl-end
+ c-decl-id-start
+ c-decl-type-start)))
+ (1- (point))
+ pos)
+ limit 'c-type)))
;; Update `c-state-cache' to the beginning of the region. This will
;; make `c-beginning-of-syntax' go faster when it's used later on,
@@ -739,6 +749,8 @@ casts and declarations are fontified. Used on level 2 and higher."
;; Check if the fontified region starts inside a declarator list so
;; that `c-font-lock-declarators' should be called at the start.
+ ;; The declared identifiers are font-locked correctly as types, if
+ ;; that is what they are.
(let ((prop (save-excursion
(c-backward-syntactic-ws)
(unless (bobp)
@@ -831,12 +843,19 @@ casts and declarations are fontified. Used on level 2 and higher."
nil)
(defun c-font-lock-declarators (limit list types)
- ;; Assuming the point is at the start of a declarator in a
- ;; declaration, fontify it. If LIST is non-nil, fontify also all
- ;; following declarators in a comma separated list (e.g. "foo" and
- ;; "bar" in "int foo = 17, bar;"). Stop at LIMIT. If TYPES is
- ;; non-nil, fontify all identifiers as types. Nil is always
- ;; returned.
+ ;; Assuming the point is at the start of a declarator in a declaration,
+ ;; fontify the identifier it declares. (If TYPES is set, it does this via
+ ;; the macro `c-fontify-types-and-refs'.)
+ ;;
+ ;; If LIST is non-nil, also fontify the ids in any following declarators in
+ ;; a comma separated list (e.g. "foo" and "*bar" in "int foo = 17, *bar;");
+ ;; additionally, mark the commas with c-type property 'c-decl-id-start or
+ ;; 'c-decl-type-start (according to TYPES). Stop at LIMIT.
+ ;;
+ ;; If TYPES is non-nil, fontify all identifiers as types.
+ ;;
+ ;; Nil is always returned. The function leaves point at the delimiter after
+ ;; the last declarator it processes.
;;
;; This function might do hidden buffer changes.
@@ -848,18 +867,31 @@ casts and declarations are fontified. Used on level 2 and higher."
c-last-identifier-range
(separator-prop (if types 'c-decl-type-start 'c-decl-id-start)))
- (while (and
+ ;; The following `while' fontifies a single declarator id each time round.
+ ;; It loops only when LIST is non-nil.
+ (while
+ ;; Inside the following "condition form", we move forward over the
+ ;; declarator's identifier up as far as any opening bracket (for array
+ ;; size) or paren (for parameters of function-type) or brace (for
+ ;; array/struct initialisation) or "=" or terminating delimiter
+ ;; (e.g. "," or ";" or "}").
+ (and
pos
(< (point) limit)
+ ;; The following form moves forward over the declarator's
+ ;; identifier (and what precedes it), returning t. If there
+ ;; wasn't one, it returns nil, terminating the `while'.
(let (got-identifier)
(setq paren-depth 0)
- ;; Skip over type decl prefix operators. (Note similar
- ;; code in `c-forward-decl-or-cast-1'.)
+ ;; Skip over type decl prefix operators, one for each iteration
+ ;; of the while. These are, e.g. "*" in "int *foo" or "(" and
+ ;; "*" in "int (*foo) (void)" (Note similar code in
+ ;; `c-forward-decl-or-cast-1'.)
(while (and (looking-at c-type-decl-prefix-key)
(if (and (c-major-mode-is 'c++-mode)
- (match-beginning 2))
- ;; If the second submatch matches in C++ then
+ (match-beginning 3))
+ ;; If the third submatch matches in C++ then
;; we're looking at an identifier that's a
;; prefix only if it specifies a member pointer.
(progn
@@ -882,7 +914,7 @@ casts and declarations are fontified. Used on level 2 and higher."
(goto-char (match-end 1)))
(c-forward-syntactic-ws))
- ;; If we didn't pass the identifier above already, do it now.
+ ;; If we haven't passed the identifier already, do it now.
(unless got-identifier
(setq id-start (point))
(c-forward-name))
@@ -890,12 +922,14 @@ casts and declarations are fontified. Used on level 2 and higher."
(/= id-end pos))
- ;; Skip out of the parens surrounding the identifier.
+ ;; Skip out of the parens surrounding the identifier. If closing
+ ;; parens are missing, this form returns nil.
(or (= paren-depth 0)
(c-safe (goto-char (scan-lists (point) 1 paren-depth))))
(<= (point) limit)
+ ;; Skip over any trailing bit, such as "__attribute__".
(progn
(when (looking-at c-decl-hangon-key)
(c-forward-keyword-clause 1))
@@ -936,7 +970,7 @@ casts and declarations are fontified. Used on level 2 and higher."
id-face)))
(goto-char next-pos)
- (setq pos nil)
+ (setq pos nil) ; So as to terminate the enclosing `while' form.
(when list
;; Jump past any initializer or function prototype to see if
;; there's a ',' to continue at.
@@ -944,11 +978,11 @@ casts and declarations are fontified. Used on level 2 and higher."
(cond ((eq id-face 'font-lock-function-name-face)
;; Skip a parenthesized initializer (C++) or a function
;; prototype.
- (if (c-safe (c-forward-sexp 1) t)
+ (if (c-safe (c-forward-sexp 1) t) ; over the parameter list.
(c-forward-syntactic-ws limit)
- (goto-char limit)))
+ (goto-char limit))) ; unbalanced parens
- (got-init
+ (got-init ; "=" sign OR opening "(", "[", or "{"
;; Skip an initializer expression. If we're at a '='
;; then accept a brace list directly after it to cope
;; with array initializers. Otherwise stop at braces
@@ -956,7 +990,7 @@ casts and declarations are fontified. Used on level 2 and higher."
(and (if (and (eq got-init ?=)
(= (c-forward-token-2 1 nil limit) 0)
(looking-at "{"))
- (c-safe (c-forward-sexp) t)
+ (c-safe (c-forward-sexp) t) ; over { .... }
t)
;; FIXME: Should look for c-decl-end markers here;
;; we might go far into the following declarations
@@ -971,7 +1005,7 @@ casts and declarations are fontified. Used on level 2 and higher."
(c-put-char-property (point) 'c-type separator-prop)
(forward-char)
(c-forward-syntactic-ws limit)
- (setq pos (point))))))
+ (setq pos (point)))))) ; acts to make the `while' form continue.
nil)
(defconst c-font-lock-maybe-decl-faces
@@ -984,27 +1018,29 @@ casts and declarations are fontified. Used on level 2 and higher."
font-lock-keyword-face))
(defun c-font-lock-declarations (limit)
+ ;; Fontify all the declarations, casts and labels from the point to LIMIT.
+ ;; Assumes that strings and comments have been fontified already.
+ ;;
;; This function will be called from font-lock for a region bounded by POINT
;; and LIMIT, as though it were to identify a keyword for
;; font-lock-keyword-face. It always returns NIL to inhibit this and
;; prevent a repeat invocation. See elisp/lispref page "Search-based
;; Fontification".
;;
- ;; Fontify all the declarations, casts and labels from the point to LIMIT.
- ;; Assumes that strings and comments have been fontified already.
- ;;
;; This function might do hidden buffer changes.
;;(message "c-font-lock-declarations search from %s to %s" (point) limit)
(save-restriction
- (let (;; The position where `c-find-decl-spots' stopped.
+ (let (;; The position where `c-find-decl-spots' last stopped.
start-pos
- ;; 'decl if we're in an arglist containing declarations (but
- ;; if `c-recognize-paren-inits' is set it might also be an
- ;; initializer arglist), '<> if the arglist is of angle
- ;; bracket type, 'arglist if it's some other arglist, or nil
- ;; if not in an arglist at all.
+ ;; o - 'decl if we're in an arglist containing declarations
+ ;; (but if `c-recognize-paren-inits' is set it might also be
+ ;; an initializer arglist);
+ ;; o - '<> if the arglist is of angle bracket type;
+ ;; o - 'arglist if it's some other arglist;
+ ;; o - nil, if not in an arglist at all. This includes the
+ ;; parenthesised condition which follows "if", "while", etc.
context
;; The position of the next token after the closing paren of
;; the last detected cast.
@@ -1082,57 +1118,106 @@ casts and declarations are fontified. Used on level 2 and higher."
;; can't start a declaration.
t
- ;; Set `context'. Look for "<" for the sake of C++-style template
- ;; arglists.
- (if (memq (char-before match-pos) '(?\( ?, ?\[ ?<))
-
- ;; Find out the type of the arglist.
- (if (<= match-pos (point-min))
- (setq context 'arglist)
- (let ((type (c-get-char-property (1- match-pos) 'c-type)))
- (cond ((eq type 'c-decl-arg-start)
- ;; Got a cached hit in a declaration arglist.
- (setq context 'decl))
- ((or (eq type 'c-<>-arg-sep)
- (eq (char-before match-pos) ?<))
- ;; Inside an angle bracket arglist.
- (setq context '<>))
- (type
- ;; Got a cached hit in some other type of arglist.
- (setq context 'arglist))
- ((if inside-macro
- (< match-pos max-type-decl-end-before-token)
- (< match-pos max-type-decl-end))
- ;; The point is within the range of a previously
- ;; encountered type decl expression, so the arglist
- ;; is probably one that contains declarations.
- ;; However, if `c-recognize-paren-inits' is set it
- ;; might also be an initializer arglist.
- (setq context 'decl)
- ;; The result of this check is cached with a char
- ;; property on the match token, so that we can look
- ;; it up again when refontifying single lines in a
- ;; multiline declaration.
- (c-put-char-property (1- match-pos)
- 'c-type 'c-decl-arg-start))
- (t
- (setq context 'arglist)))))
-
- (setq context nil))
-
- ;; If we're in a normal arglist context we don't want to
- ;; recognize commas in nested angle bracket arglists since
- ;; those commas could be part of our own arglist.
- (setq c-restricted-<>-arglists (and c-recognize-<>-arglists
- (eq context 'arglist))
-
- ;; Now analyze the construct.
- decl-or-cast (c-forward-decl-or-cast-1
+ ;; Set `context' and `c-restricted-<>-arglists'. Look for
+ ;; "<" for the sake of C++-style template arglists.
+ ;; Ignore "(" when it's part of a control flow construct
+ ;; (e.g. "for (").
+ (let ((type (and (> match-pos (point-min))
+ (c-get-char-property (1- match-pos) 'c-type))))
+ (cond ((not (memq (char-before match-pos) '(?\( ?, ?\[ ?<)))
+ (setq context nil
+ c-restricted-<>-arglists nil))
+ ;; A control flow expression
+ ((and (eq (char-before match-pos) ?\()
+ (save-excursion
+ (goto-char match-pos)
+ (backward-char)
+ (c-backward-token-2)
+ (looking-at c-block-stmt-2-key)))
+ (setq context nil
+ c-restricted-<>-arglists t))
+ ;; Near BOB.
+ ((<= match-pos (point-min))
+ (setq context 'arglist
+ c-restricted-<>-arglists t))
+ ;; Got a cached hit in a declaration arglist.
+ ((eq type 'c-decl-arg-start)
+ (setq context 'decl
+ c-restricted-<>-arglists nil))
+ ;; Inside an angle bracket arglist.
+ ((or (eq type 'c-<>-arg-sep)
+ (eq (char-before match-pos) ?<))
+ (setq context '<>
+ c-restricted-<>-arglists nil))
+ ;; Got a cached hit in some other type of arglist.
+ (type
+ (setq context 'arglist
+ c-restricted-<>-arglists t))
+ ((if inside-macro
+ (< match-pos max-type-decl-end-before-token)
+ (< match-pos max-type-decl-end))
+ ;; The point is within the range of a previously
+ ;; encountered type decl expression, so the arglist
+ ;; is probably one that contains declarations.
+ ;; However, if `c-recognize-paren-inits' is set it
+ ;; might also be an initializer arglist.
+ (setq context 'decl
+ c-restricted-<>-arglists nil)
+ ;; The result of this check is cached with a char
+ ;; property on the match token, so that we can look
+ ;; it up again when refontifying single lines in a
+ ;; multiline declaration.
+ (c-put-char-property (1- match-pos)
+ 'c-type 'c-decl-arg-start))
+ (t (setq context 'arglist
+ c-restricted-<>-arglists t))))
+
+ ;; Check we haven't missed a preceding "typedef".
+ (when (not (looking-at c-typedef-key))
+ (c-backward-syntactic-ws)
+ (c-backward-token-2)
+ (or (looking-at c-typedef-key)
+ (goto-char start-pos)))
+
+ ;; Now analyze the construct.
+ (setq decl-or-cast (c-forward-decl-or-cast-1
match-pos context last-cast-end))
(if (not decl-or-cast)
- ;; False alarm. Return t to go on to the next check.
- t
+ ;; Are we at a declarator?
+ ;; Try to go back to the declaration to check this.
+ (let (paren-state bod-res lim encl-pos is-typedef)
+ (goto-char start-pos)
+ (save-excursion
+ (setq lim (and (c-syntactic-skip-backward "^;" nil t)
+ (point))))
+ (save-excursion
+ (setq bod-res (car (c-beginning-of-decl-1 lim)))
+ (if (and (eq bod-res 'same)
+ (progn
+ (c-backward-syntactic-ws)
+ (eq (char-before) ?\})))
+ (c-beginning-of-decl-1 lim))
+ ;; We're now putatively at the declaration.
+ (setq paren-state (c-parse-state))
+ ;; At top level or inside a "{"?
+ (if (or (not (setq encl-pos
+ (c-most-enclosing-brace paren-state)))
+ (eq (char-after encl-pos) ?\{))
+ (progn
+ (when (looking-at c-typedef-key) ; "typedef"
+ (setq is-typedef t)
+ (goto-char (match-end 0))
+ (c-forward-syntactic-ws))
+ ;; At a real declaration?
+ (if (memq (c-forward-type t) '(t known found))
+ (progn
+ (c-font-lock-declarators limit t is-typedef)
+ nil)
+ ;; False alarm. Return t to go on to the next check.
+ (goto-char start-pos)
+ t))
+ t)))
(if (eq decl-or-cast 'cast)
;; Save the position after the previous cast so we can feed
@@ -1296,7 +1381,7 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
"Complex font lock matchers for types and declarations. Used on level
3 and higher."
- ;; Note: This code in this form dumps a number of funtions into the
+ ;; Note: This code in this form dumps a number of functions into the
;; resulting constant, `c-matchers-3'. At run time, font lock will call
;; each of them as a "FUNCTION" (see Elisp page "Search-based
;; Fontification"). The font lock region is delimited by POINT and the
@@ -1348,7 +1433,7 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
`(,(concat "\\<\\(" re "\\)\\>")
1 'font-lock-type-face)))
- ;; Fontify types preceded by `c-type-prefix-kwds'.
+ ;; Fontify types preceded by `c-type-prefix-kwds' (e.g. "struct").
,@(when (c-lang-const c-type-prefix-kwds)
`((,(byte-compile
`(lambda (limit)
@@ -1396,23 +1481,25 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
;; override it if it turns out to be an new declaration, but
;; it will be wrong if it's an expression (see the test
;; decls-8.cc).
- ,@(when (c-lang-const c-opt-block-decls-with-vars-key)
- `((,(c-make-font-lock-search-function
- (concat "}"
- (c-lang-const c-single-line-syntactic-ws)
- "\\(" ; 1 + c-single-line-syntactic-ws-depth
- (c-lang-const c-type-decl-prefix-key)
- "\\|"
- (c-lang-const c-symbol-key)
- "\\)")
- `((c-font-lock-declarators limit t nil)
- (progn
- (c-put-char-property (match-beginning 0) 'c-type
- 'c-decl-id-start)
- (goto-char (match-beginning
- ,(1+ (c-lang-const
- c-single-line-syntactic-ws-depth)))))
- (goto-char (match-end 0)))))))
+;; ,@(when (c-lang-const c-opt-block-decls-with-vars-key)
+;; `((,(c-make-font-lock-search-function
+;; (concat "}"
+;; (c-lang-const c-single-line-syntactic-ws)
+;; "\\(" ; 1 + c-single-line-syntactic-ws-depth
+;; (c-lang-const c-type-decl-prefix-key)
+;; "\\|"
+;; (c-lang-const c-symbol-key)
+;; "\\)")
+;; `((c-font-lock-declarators limit t nil) ; That `nil' says use `font-lock-variable-name-face';
+;; ; `t' would mean `font-lock-function-name-face'.
+;; (progn
+;; (c-put-char-property (match-beginning 0) 'c-type
+;; 'c-decl-id-start)
+;; ; 'c-decl-type-start)
+;; (goto-char (match-beginning
+;; ,(1+ (c-lang-const
+;; c-single-line-syntactic-ws-depth)))))
+;; (goto-char (match-end 0)))))))
;; Fontify the type in C++ "new" expressions.
,@(when (c-major-mode-is 'c++-mode)
@@ -1660,6 +1747,10 @@ need for `c-font-lock-extra-types'.")
;;; C++.
(defun c-font-lock-c++-new (limit)
+ ;; FIXME!!! Put in a comment about the context of this function's
+ ;; invocation. I think it's called as an ANCHORED-MATCHER within an
+ ;; ANCHORED-HIGHLIGHTER. (2007/2/10).
+ ;;
;; Assuming point is after a "new" word, check that it isn't inside
;; a string or comment, and if so try to fontify the type in the
;; allocation expression. Nil is always returned.
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 5cd5c0b95ca..ba056133651 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1565,6 +1565,17 @@ be a subset of `c-primitive-type-kwds'."
;; In CORBA PSDL:
"strong"))
+(c-lang-defconst c-typedef-kwds
+ "Prefix keyword\(s\) like \"typedef\" which make a type declaration out
+of a variable declaration."
+ t '("typedef")
+ (awk idl java) nil)
+
+(c-lang-defconst c-typedef-key
+ ;; Adorned regexp matching `c-typedef-kwds'.
+ t (c-make-keywords-re t (c-lang-const c-typedef-kwds)))
+(c-lang-defvar c-typedef-key (c-lang-const c-typedef-key))
+
(c-lang-defconst c-type-prefix-kwds
"Keywords where the following name - if any - is a type name, and
where the keyword together with the symbol works as a type in
@@ -1731,6 +1742,10 @@ will be handled."
;; types in IDL since they only can occur in "raises" specs.
idl (delete "exception" (append (c-lang-const c-typedef-decl-kwds) nil)))
+(c-lang-defconst c-typedef-decl-key
+ t (c-make-keywords-re t (c-lang-const c-typedef-decl-kwds)))
+(c-lang-defvar c-typedef-decl-key (c-lang-const c-typedef-decl-key))
+
(c-lang-defconst c-typeless-decl-kwds
"Keywords introducing declarations where the \(first) identifier
\(declarator) follows directly after the keyword, without any type.
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 6a76a657829..505a5663ebc 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -100,7 +100,6 @@
(cc-bytecomp-defvar adaptive-fill-first-line-regexp) ; Emacs
(cc-bytecomp-defun set-keymap-parents) ; XEmacs
(cc-bytecomp-defun run-mode-hooks) ; Emacs 21.1
-(cc-bytecomp-obsolete-fun make-local-hook) ; Marked obsolete in Emacs 21.1.
;; We set these variables during mode init, yet we don't require
;; font-lock.
@@ -600,9 +599,10 @@ that requires a literal mode spec at compile time."
;; Install the functions that ensure that various internal caches
;; don't become invalid due to buffer changes.
- (make-local-hook 'before-change-functions)
+ (when (featurep 'xemacs)
+ (make-local-hook 'before-change-functions)
+ (make-local-hook 'after-change-functions))
(add-hook 'before-change-functions 'c-before-change nil t)
- (make-local-hook 'after-change-functions)
(add-hook 'after-change-functions 'c-after-change nil t)
(set (make-local-variable 'font-lock-extend-after-change-region-function)
'c-extend-after-change-region)) ; Currently (2009-05) used by all
@@ -1113,8 +1113,8 @@ This does not load the font-lock package. Use after
c-beginning-of-syntax
(font-lock-mark-block-function
. c-mark-function)))
-
- (make-local-hook 'font-lock-mode-hook)
+ (if (featurep 'xemacs)
+ (make-local-hook 'font-lock-mode-hook))
(add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t))
(defun c-extend-after-change-region (beg end old-len)
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el
index 48120563b29..15d44f6538a 100644
--- a/lisp/progmodes/cc-styles.el
+++ b/lisp/progmodes/cc-styles.el
@@ -50,7 +50,6 @@
;; Silence the compiler.
(cc-bytecomp-defvar adaptive-fill-first-line-regexp) ; Emacs
-(cc-bytecomp-obsolete-fun make-local-hook) ; Marked obsolete in Emacs 21.1.
(defvar c-style-alist
@@ -649,7 +648,7 @@ any reason to call this function directly."
(mapc func varsyms)
;; Hooks must be handled specially
(if this-buf-only-p
- (make-local-hook 'c-special-indent-hook)
+ (if (featurep 'xemacs) (make-local-hook 'c-special-indent-hook))
(with-no-warnings (make-variable-buffer-local 'c-special-indent-hook))
(setq c-style-variables-are-local-p t))
))
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index d89e41b38fb..46002929791 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1,8 +1,8 @@
;;; cperl-mode.el --- Perl code editing commands for Emacs
;; Copyright (C) 1985, 1986, 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-;; 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+;; 2010 Free Software Foundation, Inc.
;; Author: Ilya Zakharevich
;; Bob Olson
@@ -1802,13 +1802,12 @@ or as help on variables `cperl-tips', `cperl-problems',
(set 'vc-rcs-header cperl-vc-rcs-header)
(make-local-variable 'vc-sccs-header)
(set 'vc-sccs-header cperl-vc-sccs-header)
- ;; This one is obsolete...
- (make-local-variable 'vc-header-alist)
- (with-no-warnings
- (set 'vc-header-alist (or cperl-vc-header-alist ; Avoid warning
- `((SCCS ,(car cperl-vc-sccs-header))
- (RCS ,(car cperl-vc-rcs-header)))))
- )
+ (when (featurep 'xemacs)
+ ;; This one is obsolete...
+ (make-local-variable 'vc-header-alist)
+ (set 'vc-header-alist (or cperl-vc-header-alist ; Avoid warning
+ `((SCCS ,(car cperl-vc-sccs-header))
+ (RCS ,(car cperl-vc-rcs-header))))))
(cond ((boundp 'compilation-error-regexp-alist-alist);; xemacs 20.x
(make-local-variable 'compilation-error-regexp-alist-alist)
(set 'compilation-error-regexp-alist-alist
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el
index ee5e2a49ead..41ce378e966 100644
--- a/lisp/progmodes/inf-lisp.el
+++ b/lisp/progmodes/inf-lisp.el
@@ -80,19 +80,17 @@ mode. Default is whitespace followed by 0 or 1 single-letter colon-keyword
:type 'regexp
:group 'inferior-lisp)
-(defvar inferior-lisp-mode-map nil)
-(unless inferior-lisp-mode-map
- (setq inferior-lisp-mode-map (copy-keymap comint-mode-map))
- (set-keymap-parent inferior-lisp-mode-map lisp-mode-shared-map)
- (define-key inferior-lisp-mode-map "\C-x\C-e" 'lisp-eval-last-sexp)
- (define-key inferior-lisp-mode-map "\C-c\C-l" 'lisp-load-file)
- (define-key inferior-lisp-mode-map "\C-c\C-k" 'lisp-compile-file)
- (define-key inferior-lisp-mode-map "\C-c\C-a" 'lisp-show-arglist)
- (define-key inferior-lisp-mode-map "\C-c\C-d" 'lisp-describe-sym)
- (define-key inferior-lisp-mode-map "\C-c\C-f"
- 'lisp-show-function-documentation)
- (define-key inferior-lisp-mode-map "\C-c\C-v"
- 'lisp-show-variable-documentation))
+(defvar inferior-lisp-mode-map
+ (let ((map (copy-keymap comint-mode-map)))
+ (set-keymap-parent map lisp-mode-shared-map)
+ (define-key map "\C-x\C-e" 'lisp-eval-last-sexp)
+ (define-key map "\C-c\C-l" 'lisp-load-file)
+ (define-key map "\C-c\C-k" 'lisp-compile-file)
+ (define-key map "\C-c\C-a" 'lisp-show-arglist)
+ (define-key map "\C-c\C-d" 'lisp-describe-sym)
+ (define-key map "\C-c\C-f" 'lisp-show-function-documentation)
+ (define-key map "\C-c\C-v" 'lisp-show-variable-documentation)
+ map))
;;; These commands augment Lisp mode, so you can process Lisp code in
;;; the source files.
diff --git a/lisp/progmodes/modula2.el b/lisp/progmodes/modula2.el
index 9d226cefbd4..3d2af5e217e 100644
--- a/lisp/progmodes/modula2.el
+++ b/lisp/progmodes/modula2.el
@@ -69,10 +69,7 @@
(setq m2-mode-syntax-table table)))
;;; Added by TEP
-(defvar m2-mode-map nil
- "Keymap used in Modula-2 mode.")
-
-(if m2-mode-map ()
+(defvar m2-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\^i" 'm2-tab)
(define-key map "\C-cb" 'm2-begin)
@@ -103,7 +100,8 @@
(define-key map "\C-c\C-t" 'm2-toggle)
(define-key map "\C-c\C-l" 'm2-link)
(define-key map "\C-c\C-c" 'm2-compile)
- (setq m2-mode-map map)))
+ map)
+ "Keymap used in Modula-2 mode.")
(defcustom m2-indent 5
"*This variable gives the indentation in Modula-2-Mode."
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index bbefdaa2ccf..56de9b869db 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -456,10 +456,7 @@ Non-nil means always go to the next Octave code line after sending."
octave-smie-bnf-table
'((assoc "\n" ";")))
- (smie-precs-precedence-table
- (append octave-operator-table
- '((nonassoc " -dummy- "))) ;Bogus anchor at the end.
- ))))
+ (smie-precs-precedence-table octave-operator-table))))
;; Tokenizing needs to be refined so that ";;" is treated as two
;; tokens and also so as to recognize the \n separator (and
diff --git a/lisp/ps-def.el b/lisp/ps-def.el
index c27ee251e08..9122b8fdc9a 100644
--- a/lisp/ps-def.el
+++ b/lisp/ps-def.el
@@ -50,95 +50,25 @@
(cond
((featurep 'xemacs) ; XEmacs
-
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ps-bdf
(defvar installation-directory nil)
(defvar coding-system-for-read)
-
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ps-mule
- (defvar leading-code-private-22 157)
-
- (or (fboundp 'charset-bytes)
- (defun charset-bytes (charset) 1)) ; ascii
-
(or (fboundp 'charset-dimension)
(defun charset-dimension (charset) 1)) ; ascii
- (or (fboundp 'charset-id)
- (defun charset-id (charset) 0)) ; ascii
-
- (or (fboundp 'charset-width)
- (defun charset-width (charset) 1)) ; ascii
-
- (or (fboundp 'find-charset-region)
- (defun find-charset-region (beg end &optional table)
- (list 'ascii)))
-
(or (fboundp 'char-width)
(defun char-width (char) 1)) ; ascii
- (or (fboundp 'chars-in-region)
- (defun chars-in-region (beg end)
- (- (max beg end) (min beg end))))
-
- (or (fboundp 'forward-point)
- (defun forward-point (arg)
- (save-excursion
- (let ((count (abs arg))
- (step (if (zerop arg)
- 0
- (/ arg arg))))
- (while (and (> count 0)
- (< (point-min) (point)) (< (point) (point-max)))
- (forward-char step)
- (setq count (1- count)))
- (+ (point) (* count step))))))
-
- (or (fboundp 'decompose-composite-char)
- (defun decompose-composite-char (char &optional type
- with-composition-rule)
- nil))
-
- (or (fboundp 'encode-coding-string)
- (defun encode-coding-string (string coding-system &optional nocopy)
- (if nocopy
- string
- (copy-sequence string))))
-
- (or (fboundp 'coding-system-p)
- (defun coding-system-p (obj) nil))
-
- (or (fboundp 'ccl-execute-on-string)
- (defun ccl-execute-on-string (ccl-prog status str
- &optional contin unibyte-p)
- str))
-
- (or (fboundp 'define-ccl-program)
- (defmacro define-ccl-program (name ccl-program &optional doc)
- `(defconst ,name nil ,doc)))
-
- (or (fboundp 'multibyte-string-p)
- (defun multibyte-string-p (str)
- (let ((len (length str))
- (i 0)
- multibyte)
- (while (and (< i len) (not (setq multibyte (> (aref str i) 255))))
- (setq i (1+ i)))
- multibyte)))
-
- (or (fboundp 'string-make-multibyte)
- (defalias 'string-make-multibyte 'copy-sequence))
-
(or (fboundp 'encode-char)
(defun encode-char (ch ccs)
ch))
-
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ps-print
diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el
index df779fde39d..95a982f29a2 100644
--- a/lisp/ps-mule.el
+++ b/lisp/ps-mule.el
@@ -320,31 +320,19 @@ by `ps-font-family' and `ps-header-font-family'.
See also `ps-mule-font-info-database-bdf'.")
-(defvar ps-mule-font-spec-list nil
- "Array of FONT-SPEC lists for each font type.
-
-Elements are for `normal' font, `bold' font, `italic' font, and
-`bold-italic' font in this order.
-
-Each element is a list of FONT-SPEC which has this form:
-
- (ID CHARSET (FONT-SRC FONT-NAME ENCODING) EXTRA-DATA)
-
-Where
-
-ID is a number for this FONT-SPEC and is unique in the list.
-
-CHARSET, FONT-SRC, FONT-NAME, ENCODING are the same as those in
-`ps-mule-font-info-database' (which see).
-
-EXTRA-DATA is a data attached by external libraries.
-
-Each list is ordered by the current charset priorities.
-
-This variable is setup by `ps-mule-begin-job' from
-`ps-mule-font-info-database'.")
-
;; Functions to access each element of FONT-SPEC.
+;;
+;; FONT-SPEC is a vector of this form:
+;; [ID CHARSET FONT-ID FONT-SRC FONT-NAME ENCODING BYTES EXTRA-DATA]
+;; Where
+;;
+;; ID is an identification number for this FONT-SPEC and is unique in the list.
+;;
+;; CHARSET, FONT-SRC, FONT-NAME, ENCODING, and BYTES are the same as those in
+;; `ps-mule-font-info-database' (which see).
+;;
+;; EXTRA-DATA is a data attached by external libraries.
+
(defsubst ps-mule-font-spec-id (font-spec) (aref font-spec 0))
(defsubst ps-mule-font-spec-charset (font-spec) (aref font-spec 1))
(defsubst ps-mule-font-spec-font-id (font-spec) (aref font-spec 2))
@@ -1044,7 +1032,7 @@ It checks if all multi-byte characters in the region are printable or not."
(if (and (not (find-composition from to))
(save-excursion
(goto-char from)
- (= (skip-chars-forward "\x00-\xFF" to) to)))
+ (= (skip-chars-forward "\x00-\x7F" to) to)))
;; All characters can be printed by normal PostScript fonts.
(setq ps-basic-plot-string-function 'ps-basic-plot-string
ps-encode-header-string-function 'identity)
@@ -1086,17 +1074,19 @@ It checks if all multi-byte characters in the region are printable or not."
(setq font-info-list (cons font-info font-info-list))))
(setq font-info-list (nreverse font-info-list)))
+ ;; Now font-info-list is an alist ordered by charset priority.
;; Store FONT-SPECs in each element of font-spec-alist.
(dolist (font-info font-info-list)
(let ((font-spec-vec (make-vector 4 nil))
(charset (car font-info))
- encoding font-spec)
+ encoding bytes font-spec)
(dolist (e (cdr font-info))
- (setq encoding (or (nth 3 e) charset)
- font-spec (vector id-max charset font-id
+ (setq encoding (nth 3 e) bytes (nth 4 e))
+ (unless encoding
+ (setq encoding charset bytes (charset-dimension charset)))
+ (setq font-spec (vector id-max charset font-id
(nth 1 e) (nth 2 e) encoding
- (or (nth 4 e) (charset-dimension encoding))
- nil)
+ (or bytes 1) nil)
id-max (1+ id-max))
(if (ps-mule-check-font font-spec)
(aset font-spec-vec
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 02e43ef3f0c..c9036a313cb 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -6656,7 +6656,7 @@ If FACE is not a valid face name, use default face."
;; But autoload them here to make the separation invisible.
;;;### (autoloads (ps-mule-end-job ps-mule-begin-job ps-mule-initialize
-;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "d2fcad95db7404989362657faf744796")
+;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "26f1d5db9476d0e84ab55627fbb72b1b")
;;; Generated autoloads from ps-mule.el
(defvar ps-multibyte-buffer nil "\
diff --git a/lisp/server.el b/lisp/server.el
index 3a48efed7da..bc49087f464 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -586,7 +586,7 @@ server or call `M-x server-force-delete' to forcibly disconnect it.")
(setq buffer-file-coding-system 'no-conversion)
(insert (format-network-address
(process-contact server-process :local))
- " " (int-to-string (emacs-pid))
+ " " (number-to-string (emacs-pid)) ; Kept for compatibility
"\n" auth-key)))))))))
;;;###autoload
@@ -706,9 +706,6 @@ Server mode runs a process that accepts commands from the
;; Display *scratch* by default.
(switch-to-buffer (get-buffer-create "*scratch*") 'norecord)
- ;; Reply with our pid.
- (server-send-string proc (concat "-emacs-pid "
- (number-to-string (emacs-pid)) "\n"))
frame))
(defun server-create-window-system-frame (display nowait proc parent-id)
@@ -862,7 +859,7 @@ The following commands are accepted by the client:
returned by -eval.
`-error DESCRIPTION'
- Signal an error (but continue processing).
+ Signal an error and delete process PROC.
`-suspend'
Suspend this terminal, i.e., stop the client process.
@@ -879,6 +876,9 @@ The following commands are accepted by the client:
(server-log "Authentication failed" proc)
(server-send-string
proc (concat "-error " (server-quote-arg "Authentication failed")))
+ ;; Before calling `delete-process', give emacsclient time to
+ ;; receive the error string and shut down on its own.
+ (sit-for 1)
(delete-process proc)
;; We return immediately
(return-from server-process-filter)))
@@ -889,6 +889,9 @@ The following commands are accepted by the client:
(condition-case err
(progn
(server-add-client proc)
+ ;; Send our pid
+ (server-send-string proc (concat "-emacs-pid "
+ (number-to-string (emacs-pid)) "\n"))
(if (not (string-match "\n" string))
;; Save for later any partial line that remains.
(when (> (length string) 0)
@@ -1129,6 +1132,9 @@ The following commands are accepted by the client:
proc (concat "-error " (server-quote-arg
(error-message-string err))))
(server-log (error-message-string err) proc)
+ ;; Before calling `delete-process', give emacsclient time to
+ ;; receive the error string and shut down on its own.
+ (sit-for 5)
(delete-process proc)))
(defun server-goto-line-column (line-col)
diff --git a/lisp/shell.el b/lisp/shell.el
index a35c14e2fa7..6cb9a511101 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -70,7 +70,7 @@
;; c-c c-c comint-interrupt-subjob ^c
;; c-c c-z comint-stop-subjob ^z
;; c-c c-\ comint-quit-subjob ^\
-;; c-c c-o comint-kill-output Delete last batch of process output
+;; c-c c-o comint-delete-output Delete last batch of process output
;; c-c c-r comint-show-output Show last batch of process output
;; c-c c-l comint-dynamic-list-input-ring List input history
;; send-invisible Read line w/o echo & send to proc
@@ -334,26 +334,25 @@ Thus, this does not include the shell's current directory.")
(defvar shell-dirstack-query nil
"Command used by `shell-resync-dirs' to query the shell.")
-(defvar shell-mode-map nil)
-(cond ((not shell-mode-map)
- (setq shell-mode-map (nconc (make-sparse-keymap) comint-mode-map))
- (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
- (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
- (define-key shell-mode-map "\t" 'comint-dynamic-complete)
- (define-key shell-mode-map (kbd "M-RET") 'shell-resync-dirs)
- (define-key shell-mode-map "\M-?"
- 'comint-dynamic-list-filename-completions)
- (define-key shell-mode-map [menu-bar completion]
- (cons "Complete"
- (copy-keymap (lookup-key comint-mode-map [menu-bar completion]))))
- (define-key-after (lookup-key shell-mode-map [menu-bar completion])
- [complete-env-variable] '("Complete Env. Variable Name" .
- shell-dynamic-complete-environment-variable)
- 'complete-file)
- (define-key-after (lookup-key shell-mode-map [menu-bar completion])
- [expand-directory] '("Expand Directory Reference" .
- shell-replace-by-expanded-directory)
- 'complete-expand)))
+(defvar shell-mode-map
+ (let ((map (nconc (make-sparse-keymap) comint-mode-map)))
+ (define-key map "\C-c\C-f" 'shell-forward-command)
+ (define-key map "\C-c\C-b" 'shell-backward-command)
+ (define-key map "\t" 'comint-dynamic-complete)
+ (define-key map (kbd "M-RET") 'shell-resync-dirs)
+ (define-key map "\M-?" 'comint-dynamic-list-filename-completions)
+ (define-key map [menu-bar completion]
+ (cons "Complete"
+ (copy-keymap (lookup-key comint-mode-map [menu-bar completion]))))
+ (define-key-after (lookup-key map [menu-bar completion])
+ [complete-env-variable] '("Complete Env. Variable Name" .
+ shell-dynamic-complete-environment-variable)
+ 'complete-file)
+ (define-key-after (lookup-key map [menu-bar completion])
+ [expand-directory] '("Expand Directory Reference" .
+ shell-replace-by-expanded-directory)
+ 'complete-expand)
+ map))
(defcustom shell-mode-hook '()
"Hook for customizing Shell mode."
diff --git a/lisp/startup.el b/lisp/startup.el
index c029eff54cf..aa791f2a04a 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1563,23 +1563,21 @@ a face or button specification."
(kill-buffer "*GNU Emacs*")))
" ")
(when (or user-init-file custom-file)
- (let ((checked (create-image "\300\300\141\143\067\076\034\030"
- 'xbm t :width 8 :height 8 :background "grey75"
- :foreground "black" :relief -2 :ascent 'center))
- (unchecked (create-image (make-string 8 0)
- 'xbm t :width 8 :height 8 :background "grey75"
- :foreground "black" :relief -2 :ascent 'center)))
- (insert-button
- " " :on-glyph checked :off-glyph unchecked 'checked nil
- 'display unchecked 'follow-link t
- 'action (lambda (button)
- (if (overlay-get button 'checked)
- (progn (overlay-put button 'checked nil)
- (overlay-put button 'display (overlay-get button :off-glyph))
- (setq startup-screen-inhibit-startup-screen nil))
- (overlay-put button 'checked t)
- (overlay-put button 'display (overlay-get button :on-glyph))
- (setq startup-screen-inhibit-startup-screen t)))))
+ (insert-button
+ " "
+ :on-glyph image-checkbox-checked
+ :off-glyph image-checkbox-unchecked
+ 'checked nil 'display image-checkbox-unchecked 'follow-link t
+ 'action (lambda (button)
+ (if (overlay-get button 'checked)
+ (progn (overlay-put button 'checked nil)
+ (overlay-put button 'display
+ (overlay-get button :off-glyph))
+ (setq startup-screen-inhibit-startup-screen nil))
+ (overlay-put button 'checked t)
+ (overlay-put button 'display
+ (overlay-get button :on-glyph))
+ (setq startup-screen-inhibit-startup-screen t))))
(fancy-splash-insert :face '(variable-pitch (:height 0.9))
" Never show it again.")))))
diff --git a/lisp/subr.el b/lisp/subr.el
index d7df38626bd..1503fbab14b 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1,7 +1,8 @@
;;; subr.el --- basic lisp subroutines for Emacs
;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: internal
@@ -288,14 +289,11 @@ If LIST is nil, return nil.
If N is non-nil, return the Nth-to-last link of LIST.
If N is bigger than the length of LIST, return LIST."
(if n
- (let ((m 0) (p list))
- (while (consp p)
- (setq m (1+ m) p (cdr p)))
- (if (<= n 0) p
- (if (< n m) (nthcdr (- m n) list) list)))
- (while (consp (cdr list))
- (setq list (cdr list)))
- list))
+ (and (>= n 0)
+ (let ((m (safe-length list)))
+ (if (< n m) (nthcdr (- m n) list) list)))
+ (and list
+ (nthcdr (1- (safe-length list)) list))))
(defun butlast (list &optional n)
"Return a copy of LIST with the last N elements removed."
@@ -1023,7 +1021,6 @@ and `event-end' functions."
(define-obsolete-function-alias 'eval-current-buffer 'eval-buffer "22.1")
(define-obsolete-function-alias 'string-to-int 'string-to-number "22.1")
-(make-obsolete 'char-bytes "now always returns 1." "20.4")
(make-obsolete 'forward-point "use (+ (point) N) instead." "23.1")
(defun insert-string (&rest args)
@@ -1098,11 +1095,6 @@ is converted into a string by expressing it in decimal."
(make-obsolete 'process-filter-multibyte-p nil "23.1")
(make-obsolete 'set-process-filter-multibyte nil "23.1")
-(defconst directory-sep-char ?/
- "Directory separator character for built-in functions that return file names.
-The value is always ?/.")
-(make-obsolete-variable 'directory-sep-char "do not use it, just use `/'." "21.1")
-
(make-obsolete-variable
'mode-line-inverse-video
"use the appropriate faces instead."
@@ -1169,37 +1161,6 @@ to reread, so it now uses nil to mean `no event', instead of -1."
;;;; Hook manipulation functions.
-(defun make-local-hook (hook)
- "Make the hook HOOK local to the current buffer.
-The return value is HOOK.
-
-You never need to call this function now that `add-hook' does it for you
-if its LOCAL argument is non-nil.
-
-When a hook is local, its local and global values
-work in concert: running the hook actually runs all the hook
-functions listed in *either* the local value *or* the global value
-of the hook variable.
-
-This function works by making t a member of the buffer-local value,
-which acts as a flag to run the hook functions in the default value as
-well. This works for all normal hooks, but does not work for most
-non-normal hooks yet. We will be changing the callers of non-normal
-hooks so that they can handle localness; this has to be done one by
-one.
-
-This function does nothing if HOOK is already local in the current
-buffer.
-
-Do not use `make-local-variable' to make a hook variable buffer-local."
- (if (local-variable-p hook)
- nil
- (or (boundp hook) (set hook nil))
- (make-local-variable hook)
- (set hook (list t)))
- hook)
-(make-obsolete 'make-local-hook "not necessary any more." "21.1")
-
(defun add-hook (hook function &optional append local)
"Add to the value of HOOK the function FUNCTION.
FUNCTION is not added if already present.
@@ -2426,8 +2387,9 @@ Otherwise, return nil."
(or (stringp object) (null object)))
(defun booleanp (object)
- "Return non-nil if OBJECT is one of the two canonical boolean values: t or nil."
- (memq object '(nil t)))
+ "Return t if OBJECT is one of the two canonical boolean values: t or nil.
+Otherwise, return nil."
+ (and (memq object '(nil t)) t))
(defun field-at-pos (pos)
"Return the field at position POS, taking stickiness etc into account."
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index dd386fe1338..4cc26326659 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -66,6 +66,7 @@
;; nsterm.m
(defvar ns-version-string)
(defvar ns-alternate-modifier)
+(defvar ns-right-alternate-modifier)
;;;; Command line argument handling.
@@ -284,6 +285,7 @@ The properties returned may include `top', `left', `height', and `width'."
(defvaralias 'mac-command-modifier 'ns-command-modifier)
(defvaralias 'mac-control-modifier 'ns-control-modifier)
(defvaralias 'mac-option-modifier 'ns-option-modifier)
+(defvaralias 'mac-right-option-modifier 'ns-right-option-modifier)
(defvaralias 'mac-function-modifier 'ns-function-modifier)
(declare-function ns-do-applescript "nsfns.m" (script))
(defalias 'do-applescript 'ns-do-applescript)
@@ -815,6 +817,7 @@ unless the current buffer is a scratch buffer."
;; You say tomAYto, I say tomAHto..
(defvaralias 'ns-option-modifier 'ns-alternate-modifier)
+(defvaralias 'ns-right-option-modifier 'ns-right-alternate-modifier)
(defun ns-do-hide-emacs ()
(interactive)
diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el
index b52e408b193..93f4ea436c3 100644
--- a/lisp/term/pc-win.el
+++ b/lisp/term/pc-win.el
@@ -286,15 +286,6 @@ Disowning it means there is no such selection."
(if (x-selection-owner-p selection)
t))
-;; From lisp/faces.el: we only have one font, so always return
-;; it, no matter which variety they've asked for.
-(defun x-frob-font-slant (font which)
- font)
-(make-obsolete 'x-frob-font-slant 'make-face-... "21.1")
-(defun x-frob-font-weight (font which)
- font)
-(make-obsolete 'x-frob-font-weight 'make-face-... "21.1")
-
;; From src/fontset.c:
(fset 'query-fontset 'ignore)
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index 1779d1025e0..54bb5a5027b 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -196,10 +196,10 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
"Report an error when a suspend is attempted."
(error "Suspending an Emacs running under W32 makes no sense"))
-(defvar image-library-alist)
+(defvar dynamic-library-alist)
-;;; Set default known names for image libraries
-(setq image-library-alist
+;;; Set default known names for external libraries
+(setq dynamic-library-alist
'((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")
(png "libpng12d.dll" "libpng12.dll" "libpng.dll"
;; these are libpng 1.2.8 from GTK+
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index bca7eed00d2..549b3b3c52a 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -1,7 +1,7 @@
;;; artist.el --- draw ascii graphics with your mouse
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+;; 2009, 2010 Free Software Foundation, Inc.
;; Author: Tomas Abrahamsson <tab@lysator.liu.se>
;; Maintainer: Tomas Abrahamsson <tab@lysator.liu.se>
@@ -1957,24 +1957,11 @@ The replacement is used to convert tabs and new-lines to spaces."
(defun artist-replace-char (new-char)
"Replace the character at point with NEW-CHAR."
- ;; Check that the variable exists first. The doc says it was added in 19.23.
- (if (and (and (boundp 'emacs-major-version) (= emacs-major-version 20))
- (and (boundp 'emacs-minor-version) (<= emacs-minor-version 3)))
- ;; This is a bug workaround for Emacs 20, versions up to 20.3:
- ;; The self-insert-command doesn't care about the overwrite-mode,
- ;; so the insertion is done in the same way as in picture mode.
- ;; This seems to be a little bit slower.
- (progn
- (artist-move-to-xy (1+ (artist-current-column))
- (artist-current-line))
- (delete-char -1)
- (insert (artist-get-replacement-char new-char)))
- ;; In emacs-19, the self-insert-command works better and faster
- (let ((overwrite-mode 'overwrite-mode-textual)
- (fill-column 32765) ; Large :-)
- (blink-matching-paren nil))
- (setq last-command-event (artist-get-replacement-char new-char))
- (self-insert-command 1))))
+ (let ((overwrite-mode 'overwrite-mode-textual)
+ (fill-column 32765) ; Large :-)
+ (blink-matching-paren nil))
+ (setq last-command-event (artist-get-replacement-char new-char))
+ (self-insert-command 1)))
(defun artist-replace-chars (new-char count)
"Replace characters at point with NEW-CHAR. COUNT chars are replaced."
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index fd3148d3f12..afc4dd892c9 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -2859,10 +2859,7 @@ details check the Rst Faces Defaults group."
;; There seems to be a bug leading to error "Stack overflow in regexp
;; matcher" when "|" or "\\*" are the characters searched for
- (re-imendbeg
- (if (< emacs-major-version 21)
- "]"
- "\\]\\|\\\\."))
+ (re-imendbeg "\\]\\|\\\\.")
;; inline markup content end
(re-imend (concat re-imendbeg "\\)*[^\t \\\\]\\)"))
;; inline markup content without asterisk
diff --git a/lisp/themes/tango-dark-theme.el b/lisp/themes/tango-dark-theme.el
new file mode 100644
index 00000000000..f63440b4ea7
--- /dev/null
+++ b/lisp/themes/tango-dark-theme.el
@@ -0,0 +1,92 @@
+;;; tango-dark-theme.el --- Tango-based custom theme for faces
+
+;; Copyright (C) 2010 Free Software Foundation, Inc.
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary
+
+;; The colors in this theme come from the Tango palette, which is in
+;; the public domain: http://tango.freedesktop.org/
+
+;;; Code:
+
+(deftheme tango-dark
+ "Theme for faces, based on the Tango palette on a dark background.
+Basic, Font Lock, Isearch, Gnus, and Message faces are included.")
+
+(custom-theme-set-faces
+ 'tango-dark
+ '(default ((t (:foreground "#eeeeec" :background "#2e3436"))))
+ '(cursor ((t (:foreground "#2e3436" :background "#fce94f"))))
+ '(highlight ((t (:foreground "#2e3436" :background "#edd400"))))
+ '(region ((t (:background "#555753"))))
+ '(font-lock-builtin-face ((t (:foreground "#ad7fa8"))))
+ '(font-lock-comment-face ((t (:foreground "#73d216"))))
+ '(font-lock-constant-face ((t (:foreground "#e6a8df"))))
+ '(font-lock-function-name-face ((t (:foreground "#fce94f"))))
+ '(font-lock-keyword-face ((t (:foreground "#8cc4ff"))))
+ '(font-lock-string-face ((t (:foreground "#e9b96e"))))
+ '(font-lock-type-face ((t (:foreground "#a5ff4d"))))
+ '(font-lock-variable-name-face ((t (:foreground "#fcaf3e"))))
+ '(font-lock-warning-face ((t (:foreground "#ef2929"))))
+ '(button ((t (:underline t :foreground "#729fcf"))))
+ '(link ((t (:underline t :foreground "#729fcf"))))
+ '(link-visited ((t (:underline t :foreground "#3465a4"))))
+ '(mode-line ((t (:box (:line-width -1 :style released-button)
+ :background "#d3d7cf" :foreground "black"))))
+ '(mode-line-inactive ((t (:box (:line-width -1 :style released-button)
+ :background "#555753" :foreground "white"))))
+ '(isearch ((t (:foreground "#ffffff" :background "#ce5c00"))))
+ '(lazy-highlight ((t (:background "#8f5902"))))
+ '(gnus-group-news-1 ((t (:foreground "#ad7fa8"))))
+ '(gnus-group-news-1-low ((t (:foreground "#75507b"))))
+ '(gnus-group-news-2 ((t (:foreground "#729fcf"))))
+ '(gnus-group-news-2-low ((t (:foreground "#3465a4"))))
+ '(gnus-group-news-3 ((t (:foreground "#8ae234"))))
+ '(gnus-group-news-3-low ((t (:foreground "#73d216"))))
+ '(gnus-group-news-4 ((t (:foreground "#e9b9e6"))))
+ '(gnus-group-news-4-low ((t (:foreground "#c17d11"))))
+ '(gnus-group-news-5 ((t (:foreground "#fcaf3e"))))
+ '(gnus-group-news-5-low ((t (:foreground "#f57900"))))
+ '(gnus-group-news-low ((t (:foreground "#edd400"))))
+ '(gnus-group-mail-1 ((t (:foreground "#ad7fa8"))))
+ '(gnus-group-mail-1-low ((t (:foreground "#75507b"))))
+ '(gnus-group-mail-2 ((t (:foreground "#729fcf"))))
+ '(gnus-group-mail-2-low ((t (:foreground "#3465a4"))))
+ '(gnus-group-mail-3 ((t (:foreground "#8ae234"))))
+ '(gnus-group-mail-3-low ((t (:foreground "#73d216"))))
+ '(gnus-group-mail-low ((t (:foreground "#edd400"))))
+ '(gnus-header-content ((t (:weight normal :foreground "#c4a000"))))
+ '(gnus-header-from ((t (:foreground "#edd400"))))
+ '(gnus-header-subject ((t (:foreground "#8ae234"))))
+ '(gnus-header-name ((t (:foreground "#729fcf"))))
+ '(gnus-header-newsgroups ((t (:foreground "#c17d11"))))
+ '(message-header-name ((t (:foreground "#729fcf"))))
+ '(message-header-cc ((t (:foreground "#c4a000"))))
+ '(message-header-other ((t (:foreground "#c17d11"))))
+ '(message-header-subject ((t (:foreground "#8ae234"))))
+ '(message-header-to ((t (:foreground "#edd400"))))
+ '(message-cited-text ((t (:foreground "#8ae234"))))
+ '(message-separator ((t (:foreground "#ad7fa8")))))
+
+(provide-theme 'tango-dark)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; tango-dark-theme.el ends here
diff --git a/lisp/themes/tango-theme.el b/lisp/themes/tango-theme.el
new file mode 100644
index 00000000000..f0492c048af
--- /dev/null
+++ b/lisp/themes/tango-theme.el
@@ -0,0 +1,92 @@
+;;; tango-theme.el --- Tango-based custom theme for faces
+
+;; Copyright (C) 2010 Free Software Foundation, Inc.
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary
+
+;; The colors in this theme come from the Tango palette, which is in
+;; the public domain: http://tango.freedesktop.org/
+
+;;; Code:
+
+(deftheme tango
+ "Theme for faces, based on the Tango palette on a light background.
+Basic, Font Lock, Isearch, Gnus, and Message faces are included.")
+
+(custom-theme-set-faces
+ 'tango
+ '(default ((t (:foreground "#16191a" :background "#eeeeec"))))
+ '(cursor ((t (:foreground "#eeeeec" :background "#204a87"))))
+ '(highlight ((t (:background "#babdb6"))))
+ '(region ((t (:background "#babdb6"))))
+ '(font-lock-builtin-face ((t (:weight bold :foreground "#204a87"))))
+ '(font-lock-comment-face ((t (:foreground "#204a87"))))
+ '(font-lock-constant-face ((t (:weight bold :foreground "#5c3566"))))
+ '(font-lock-function-name-face ((t (:weight bold :foreground "#ce5c00"))))
+ '(font-lock-keyword-face ((t (:foreground "#a40000"))))
+ '(font-lock-string-face ((t (:foreground "#5c3566"))))
+ '(font-lock-type-face ((t (:weight bold :foreground "#4e9a06"))))
+ '(font-lock-variable-name-face ((t (:weight bold :foreground "#c17d11"))))
+ '(font-lock-warning-face ((t (:foreground "#cc0000"))))
+ '(button ((t (:underline t :foreground "#204a87"))))
+ '(link ((t (:underline t :foreground "#204a87"))))
+ '(link-visited ((t (:underline t :foreground "#3465a4"))))
+ '(mode-line ((t (:box (:line-width -1 :style released-button)
+ :background "#d3d7cf" :foreground "black"))))
+ '(mode-line-inactive ((t (:box (:line-width -1 :style released-button)
+ :background "#babdb6" :foreground "black"))))
+ '(isearch ((t (:foreground "#ffffff" :background "#ce5c00"))))
+ '(lazy-highlight ((t (:background "#e9b96e"))))
+ '(gnus-group-news-1 ((t (:weight bold :foreground "#5c3566"))))
+ '(gnus-group-news-1-low ((t (:foreground "#5c3566"))))
+ '(gnus-group-news-2 ((t (:weight bold :foreground "#204a87"))))
+ '(gnus-group-news-2-low ((t (:foreground "#204a87"))))
+ '(gnus-group-news-3 ((t (:weight bold :foreground "#4e0a06"))))
+ '(gnus-group-news-3-low ((t (:foreground "#4e0a06"))))
+ '(gnus-group-news-4 ((t (:weight bold :foreground "#7a4c02"))))
+ '(gnus-group-news-4-low ((t (:foreground "#7a4c02"))))
+ '(gnus-group-news-5 ((t (:weight bold :foreground "#ce5c00"))))
+ '(gnus-group-news-5-low ((t (:foreground "#ce5c00"))))
+ '(gnus-group-news-low ((t (:foreground "#888a85"))))
+ '(gnus-group-mail-1 ((t (:weight bold :foreground "#5c3566"))))
+ '(gnus-group-mail-1-low ((t (:foreground "#5c3566"))))
+ '(gnus-group-mail-2 ((t (:weight bold :foreground "#204a87"))))
+ '(gnus-group-mail-2-low ((t (:foreground "#204a87"))))
+ '(gnus-group-mail-3 ((t (:weight bold :foreground "#4e0a06"))))
+ '(gnus-group-mail-3-low ((t (:foreground "#4e0a06"))))
+ '(gnus-group-mail-low ((t (:foreground "#888a85"))))
+ '(gnus-header-content ((t (:foreground "#4e9a06"))))
+ '(gnus-header-from ((t (:weight bold :foreground "#c4a000"))))
+ '(gnus-header-subject ((t (:foreground "#4e0a06"))))
+ '(gnus-header-name ((t (:foreground "#204a87"))))
+ '(gnus-header-newsgroups ((t (:foreground "#888a85"))))
+ '(message-header-name ((t (:foreground "#204a87"))))
+ '(message-header-cc ((t (:foreground "#c4a000"))))
+ '(message-header-other ((t (:foreground "#c17d11"))))
+ '(message-header-subject ((t (:foreground "#4e0a06"))))
+ '(message-header-to ((t (:weight bold :foreground "#c4a000"))))
+ '(message-cited-text ((t (:foreground "#888a85"))))
+ '(message-separator ((t (:weight bold :foreground "#4e9a06")))))
+
+(provide-theme 'tango)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; tango-theme.el ends here
diff --git a/lisp/themes/wheatgrass-theme.el b/lisp/themes/wheatgrass-theme.el
new file mode 100644
index 00000000000..848e5e95073
--- /dev/null
+++ b/lisp/themes/wheatgrass-theme.el
@@ -0,0 +1,66 @@
+;;; wheatgrass-theme.el --- custom theme for faces
+
+;; Copyright (C) 2010 Free Software Foundation, Inc.
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(deftheme wheatgrass
+ "Theme for basic, Font Lock, Isearch, Gnus, and Message faces.
+The default face is wheat on a black background. Other faces
+are in shades of green, brown, and blue.")
+
+(custom-theme-set-faces
+ 'wheatgrass
+ '(default ((t (:foreground "wheat" :background "black"))))
+ '(cursor ((t (:foreground "black" :background "thistle"))))
+ '(highlight ((t (:foreground "white" :background "dark green"))))
+ '(region ((t (:foreground "white" :background "dark green"))))
+ '(font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ '(font-lock-comment-face ((t (:foreground "SpringGreen3"))))
+ '(font-lock-constant-face ((t (:foreground "turquoise"))))
+ '(font-lock-function-name-face ((t (:foreground "pale green"))))
+ '(font-lock-keyword-face ((t (:foreground "white"))))
+ '(font-lock-string-face ((t (:foreground "dark khaki"))))
+ '(font-lock-type-face ((t (:foreground "aquamarine"))))
+ '(font-lock-variable-name-face ((t (:foreground "yellow green"))))
+ '(font-lock-warning-face ((t (:foreground "salmon1"))))
+ '(button ((t (:underline t :foreground "cyan"))))
+ '(link ((t (:underline t :foreground "cyan"))))
+ '(link-visited ((t (:underline t :foreground "dark cyan"))))
+ '(isearch ((t (:foreground "white" :background "dark goldenrod"))))
+ '(lazy-highlight ((t (:background "gray25"))))
+ '(gnus-header-content ((t (:weight normal :foreground "yellow green"))))
+ '(gnus-header-from ((t (:foreground "pale green"))))
+ '(gnus-header-subject ((t (:foreground "pale turquoise"))))
+ '(gnus-header-name ((t (:foreground "dark sea green"))))
+ '(gnus-header-newsgroups ((t (:foreground "dark khaki"))))
+ '(message-header-name ((t (:foreground "dark turquoise"))))
+ '(message-header-cc ((t (:foreground "yellow green"))))
+ '(message-header-other ((t (:foreground "dark khaki"))))
+ '(message-header-subject ((t (:foreground "pale turquoise"))))
+ '(message-header-to ((t (:foreground "pale green"))))
+ '(message-cited-text ((t (:foreground "SpringGreen3"))))
+ '(message-separator ((t (:foreground "deep sky blue")))))
+
+(provide-theme 'wheatgrass)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; wheatgrass-theme.el ends here
diff --git a/lisp/time.el b/lisp/time.el
index d512faefee0..006fd758a7c 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -454,8 +454,9 @@ update which can wait for the next redisplay."
(force-mode-line-update))
(defun display-time-file-nonempty-p (file)
- (and (file-exists-p file)
- (< 0 (nth 7 (file-attributes (file-chase-links file))))))
+ (let ((remote-file-name-inhibit-cache (- display-time-interval 5)))
+ (and (file-exists-p file)
+ (< 0 (nth 7 (file-attributes (file-chase-links file)))))))
;;;###autoload
(define-minor-mode display-time-mode
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index cddfa38cc00..4ef2b42756b 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,58 @@
+2010-10-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * url-gw.el (url-open-stream): Use open-gnutls-stream if it exists.
+
+2010-10-07 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * url-http.el (url-http-end-of-document-sentinel): Protect against
+ the process buffer being killed.
+
+2010-10-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * url-http.el (url-http-wait-for-headers-change-function): Protect
+ against url-http-response-status for degenerate documents.
+ (url-http-wait-for-headers-change-function): Revert previous
+ change. It lead to really slow loads.
+
+2010-10-03 Glenn Morris <rgm@gnu.org>
+
+ * url-util.el (url-get-url-filename-chars): Don't eval-and-compile.
+ (url-get-url-at-point): Don't use eval-when-compile.
+
+ * url-cache.el (url-cache-create-filename-human-readable)
+ (url-cache-create-filename-using-md5):
+ * url-util.el (url-file-directory, url-file-nondirectory):
+ Don't use eval-when-compile and regexp-quote.
+
+2010-10-03 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * url-vars.el (url-mime-charset-string): Changed the default to
+ nil to avoid sending 1171 bytes of not very useful data to the
+ HTTP server every request.
+
+2010-10-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * url-util.el (url-display-percentage): Don't message when the URL
+ is silent.
+ (url-lazy-message): Ditto.
+ (url-lazy-message): Remove leftover debugging code.
+
+ * url-http.el (url-http-parse-headers): Pass the SILENT parameter
+ back to the fetching function.
+
+ * url.el (url-retrieve): Add a silent parameter.
+ (url-retrieve-internal): Ditto.
+
+ * url-parse.el (url): Add a `silent' slot in the URL struct.
+
+2010-10-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * url-cookie.el (url-cookie-handle-set-cookie): Use
+ url-lazy-message for the cookie warning, which isn't very interesting.
+
+ * url-http.el (url-http-async-sentinel): Check that the buffer is
+ still alive before switching to it.
+
2010-09-25 Julien Danjou <julien@danjou.info>
* url-cache.el (url-cache-create-filename): Ensure no-port and
diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el
index a2ed064d72b..4ef8ab5d902 100644
--- a/lisp/url/url-cache.el
+++ b/lisp/url/url-cache.el
@@ -103,8 +103,7 @@ The actual return value is the last modification time of the cache file."
(user-real-login-name)
(cons (or protocol "file")
(reverse (split-string (or hostname "localhost")
- (eval-when-compile
- (regexp-quote ".")))))))
+ "\\.")))))
(fname (url-filename urlobj)))
(if (and fname (/= (length fname) 0) (= (aref fname 0) ?/))
(setq fname (substring fname 1 nil)))
@@ -164,8 +163,7 @@ Very fast if you have an `md5' primitive function, suitably fast otherwise."
(nreverse
(delq nil
(split-string (or hostname "localhost")
- (eval-when-compile
- (regexp-quote "."))))))))
+ "\\."))))))
(fname (url-filename urlobj)))
(and fname
(expand-file-name checksum
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index 2067f097224..e056db38a98 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -400,8 +400,8 @@ telling Microsoft that."
(url-cookie-store (car cur) (cdr cur)
expires domain localpart secure))))
(t
- (message "%s tried to set a cookie for domain %s - rejected."
- (url-host url-current-object) domain)))))
+ (url-lazy-message "%s tried to set a cookie for domain %s - rejected."
+ (url-host url-current-object) domain)))))
(defvar url-cookie-timer nil)
diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el
index 714d12f3f10..4358255bde5 100644
--- a/lisp/url/url-gw.el
+++ b/lisp/url/url-gw.el
@@ -245,7 +245,10 @@ Might do a non-blocking connection; use `process-status' to check."
(coding-system-for-write 'binary))
(setq conn (case gw-method
(tls
- (open-tls-stream name buffer host service))
+ (funcall (if (fboundp 'open-gnutls-stream)
+ 'open-gnutls-stream
+ 'open-tls-stream)
+ name buffer host service))
(ssl
(open-ssl-stream name buffer host service))
((native)
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index bd0a3de98a5..9bfb6df1d42 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -1,7 +1,7 @@
;;; url-http.el --- HTTP retrieval routines
-;; Copyright (C) 1999, 2001, 2004, 2005, 2006, 2007, 2008,
-;; 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2001, 2004, 2005, 2006, 2007, 2008, 2009,
+;; 2010 Free Software Foundation, Inc.
;; Author: Bill Perry <wmperry@gnu.org>
;; Keywords: comm, data, processes
@@ -643,7 +643,8 @@ should be shown to the user."
(set (make-local-variable 'url-redirect-buffer)
(url-retrieve-internal
redirect-uri url-callback-function
- url-callback-arguments))
+ url-callback-arguments
+ (url-silent url-current-object)))
(url-mark-buffer-as-dead buffer))
;; We hit url-max-redirections, so issue an error and
;; stop redirecting.
@@ -873,13 +874,14 @@ should be shown to the user."
(url-http-debug "url-http-end-of-document-sentinel in buffer (%s)"
(process-buffer proc))
(url-http-idle-sentinel proc why)
- (with-current-buffer (process-buffer proc)
- (goto-char (point-min))
- (if (not (looking-at "HTTP/"))
- ;; HTTP/0.9 just gets passed back no matter what
- (url-http-activate-callback)
- (if (url-http-parse-headers)
- (url-http-activate-callback)))))
+ (when (buffer-name (process-buffer proc))
+ (with-current-buffer (process-buffer proc)
+ (goto-char (point-min))
+ (if (not (looking-at "HTTP/"))
+ ;; HTTP/0.9 just gets passed back no matter what
+ (url-http-activate-callback)
+ (if (url-http-parse-headers)
+ (url-http-activate-callback))))))
(defun url-http-simple-after-change-function (st nd length)
;; Function used when we do NOT know how long the document is going to be
@@ -1244,20 +1246,21 @@ CBARGS as the arguments."
(declare (special url-callback-arguments))
;; We are performing an asynchronous connection, and a status change
;; has occurred.
- (with-current-buffer (process-buffer proc)
- (cond
- (url-http-connection-opened
- (url-http-end-of-document-sentinel proc why))
- ((string= (substring why 0 4) "open")
- (setq url-http-connection-opened t)
- (process-send-string proc (url-http-create-request)))
- (t
- (setf (car url-callback-arguments)
- (nconc (list :error (list 'error 'connection-failed why
- :host (url-host (or url-http-proxy url-current-object))
- :service (url-port (or url-http-proxy url-current-object))))
- (car url-callback-arguments)))
- (url-http-activate-callback)))))
+ (when (buffer-name (process-buffer proc))
+ (with-current-buffer (process-buffer proc)
+ (cond
+ (url-http-connection-opened
+ (url-http-end-of-document-sentinel proc why))
+ ((string= (substring why 0 4) "open")
+ (setq url-http-connection-opened t)
+ (process-send-string proc (url-http-create-request)))
+ (t
+ (setf (car url-callback-arguments)
+ (nconc (list :error (list 'error 'connection-failed why
+ :host (url-host (or url-http-proxy url-current-object))
+ :service (url-port (or url-http-proxy url-current-object))))
+ (car url-callback-arguments)))
+ (url-http-activate-callback))))))
;; Since Emacs 19/20 does not allow you to change the
;; `after-change-functions' hook in the midst of running them, we fake
@@ -1265,6 +1268,7 @@ CBARGS as the arguments."
;; the data ourselves. This is slightly less efficient, but there
;; were tons of weird ways the after-change code was biting us in the
;; shorts.
+;; FIXME this can probably be simplified since the above is no longer true.
(defun url-http-generic-filter (proc data)
;; Sometimes we get a zero-length data chunk after the process has
;; been changed to 'free', which means it has no buffer associated
diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el
index 20432dcf7e5..7cfaf2a6b55 100644
--- a/lisp/url/url-parse.el
+++ b/lisp/url/url-parse.el
@@ -36,7 +36,7 @@
(&optional type user password host portspec filename
target attributes fullness))
(:copier nil))
- type user password host portspec filename target attributes fullness)
+ type user password host portspec filename target attributes fullness silent)
(defsubst url-port (urlobj)
(or (url-portspec urlobj)
diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el
index 8beffe60a7f..62a9a75f2db 100644
--- a/lisp/url/url-util.el
+++ b/lisp/url/url-util.el
@@ -177,7 +177,9 @@ Strips out default port numbers, etc."
(defun url-lazy-message (&rest args)
"Just like `message', but is a no-op if called more than once a second.
Will not do anything if `url-show-status' is nil."
- (if (or (null url-show-status)
+ (if (or (and url-current-object
+ (url-silent url-current-object))
+ (null url-show-status)
(active-minibuffer-window)
(= url-lazy-message-time
(setq url-lazy-message-time (nth 1 (current-time)))))
@@ -222,7 +224,9 @@ Will not do anything if `url-show-status' is nil."
;;;###autoload
(defun url-display-percentage (fmt perc &rest args)
- (when url-show-status
+ (when (and url-show-status
+ (or (null url-current-object)
+ (not (url-silent url-current-object))))
(if (null fmt)
(if (fboundp 'clear-progress-display)
(clear-progress-display))
@@ -244,7 +248,7 @@ Will not do anything if `url-show-status' is nil."
"Return the directory part of FILE, for a URL."
(cond
((null file) "")
- ((string-match (eval-when-compile (regexp-quote "?")) file)
+ ((string-match "\\?" file)
(file-name-directory (substring file 0 (match-beginning 0))))
(t (file-name-directory file))))
@@ -253,7 +257,7 @@ Will not do anything if `url-show-status' is nil."
"Return the nondirectory part of FILE, for a URL."
(cond
((null file) "")
- ((string-match (eval-when-compile (regexp-quote "?")) file)
+ ((string-match "\\?" file)
(file-name-nondirectory (substring file 0 (match-beginning 0))))
(t (file-name-nondirectory file))))
@@ -432,10 +436,8 @@ This uses `url-current-object', set locally to the buffer."
(url-recreate-url url-current-object)
(message "%s" (url-recreate-url url-current-object)))))
-(eval-and-compile
- (defvar url-get-url-filename-chars "-%.?@a-zA-Z0-9()_/:~=&"
- "Valid characters in a URL.")
- )
+(defvar url-get-url-filename-chars "-%.?@a-zA-Z0-9()_/:~=&"
+ "Valid characters in a URL.")
(defun url-get-url-at-point (&optional pt)
"Get the URL closest to point, but don't change position.
@@ -453,8 +455,7 @@ Has a preference for looking backward when not directly on a symbol."
(if (not (bobp))
(backward-char 1)))))
(if (and (char-after (point))
- (string-match (eval-when-compile
- (concat "[" url-get-url-filename-chars "]"))
+ (string-match (concat "[" url-get-url-filename-chars "]")
(char-to-string (char-after (point)))))
(progn
(skip-chars-backward url-get-url-filename-chars)
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 06d3c2dcccc..8aba3efdbb6 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -234,7 +234,7 @@ Generated according to current coding system priorities."
(mapconcat 'symbol-name ordered ";q=0.5, ")
";q=0.5"))))
-(defvar url-mime-charset-string (url-mime-charset-string)
+(defvar url-mime-charset-string nil
"*String to send in the Accept-charset: field in HTTP requests.
The MIME charset corresponding to the most preferred coding system is
given priority 1 and the rest are given priority 0.5.")
diff --git a/lisp/url/url.el b/lisp/url/url.el
index 6f7b810f0ed..9d44718625b 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -121,7 +121,7 @@ than the one returned initially by `url-retrieve'. In this case, it sets this
variable in the original buffer as a forwarding pointer.")
;;;###autoload
-(defun url-retrieve (url callback &optional cbargs)
+(defun url-retrieve (url callback &optional cbargs silent)
"Retrieve URL asynchronously and call CALLBACK with CBARGS when finished.
URL is either a string or a parsed URL.
@@ -143,7 +143,9 @@ the callback is not called).
The variables `url-request-data', `url-request-method' and
`url-request-extra-headers' can be dynamically bound around the
request; dynamic binding of other variables doesn't necessarily
-take effect."
+take effect.
+
+If SILENT, then don't message progress reports and the like."
;;; XXX: There is code in Emacs that does dynamic binding
;;; of the following variables around url-retrieve:
;;; url-standalone-mode, url-gateway-unplugged, w3-honor-stylesheets,
@@ -154,12 +156,14 @@ take effect."
;;; webmail.el; the latter should be updated. Is
;;; url-cookie-multiple-line needed anymore? The other url-cookie-*
;;; are (for now) only used in synchronous retrievals.
- (url-retrieve-internal url callback (cons nil cbargs)))
+ (url-retrieve-internal url callback (cons nil cbargs) silent))
-(defun url-retrieve-internal (url callback cbargs)
+(defun url-retrieve-internal (url callback cbargs &optional silent)
"Internal function; external interface is `url-retrieve'.
CBARGS is what the callback will actually receive - the first item is
-the list of events, as described in the docstring of `url-retrieve'."
+the list of events, as described in the docstring of `url-retrieve'.
+
+If SILENT, don't message progress reports and the like."
(url-do-setup)
(url-gc-dead-buffers)
(if (stringp url)
@@ -170,6 +174,7 @@ the list of events, as described in the docstring of `url-retrieve'."
(error "Must provide a callback function to url-retrieve"))
(unless (url-type url)
(error "Bad url: %s" (url-recreate-url url)))
+ (setf (url-silent url) silent)
(let ((loader (url-scheme-get-property (url-type url) 'loader))
(url-using-proxy (if (url-host url)
(url-find-proxy-for-url url (url-host url))))
@@ -179,7 +184,8 @@ the list of events, as described in the docstring of `url-retrieve'."
(setq asynch t
loader 'url-proxy))
(if asynch
- (setq buffer (funcall loader url callback cbargs))
+ (let ((url-current-object url))
+ (setq buffer (funcall loader url callback cbargs)))
(setq buffer (funcall loader url))
(if buffer
(with-current-buffer buffer
diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el
index 4316b6e4d93..70352751d8d 100644
--- a/lisp/vc/ediff-diff.el
+++ b/lisp/vc/ediff-diff.el
@@ -1,7 +1,8 @@
;;; ediff-diff.el --- diff-related utilities
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-;; 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
;; Package: ediff
@@ -54,8 +55,7 @@ Must produce output compatible with Unix's diff3 program."
(fset 'ediff-set-actual-diff-options '(lambda () nil))
(defcustom ediff-shell
- (cond ((eq system-type 'emx) "cmd") ; OS/2
- ((memq system-type '(ms-dos windows-nt windows-95))
+ (cond ((memq system-type '(ms-dos windows-nt))
shell-file-name) ; no standard name on MS-DOS
(t "sh")) ; UNIX
"The shell used to run diff and patch.
@@ -85,7 +85,7 @@ are `-I REGEXP', to ignore changes whose lines match the REGEXP."
(ediff-set-actual-diff-options))
(defcustom ediff-diff-options
- (if (memq system-type '(ms-dos windows-nt windows-95)) "--binary" "")
+ (if (memq system-type '(ms-dos windows-nt)) "--binary" "")
"Options to pass to `ediff-diff-program'.
If Unix diff is used as `ediff-diff-program',
then a useful option is `-w', to ignore space.
@@ -1229,15 +1229,14 @@ delimiter regions"))
(with-current-buffer buffer
(erase-buffer)
(setq default-directory directory)
- (if (or (memq system-type '(emx ms-dos windows-nt windows-95))
+ (if (or (memq system-type '(ms-dos windows-nt))
synch)
- ;; In OS/2 (emx) do it synchronously, since OS/2 doesn't let us
+ ;; In Windows do it synchronously, since Windows doesn't let us
;; delete files used by other processes. Thus, in ediff-buffers
;; and similar functions, we can't delete temp files because
;; they might be used by the asynch process that computes
;; custom diffs. So, we have to wait till custom diff
;; subprocess is done.
- ;; Similarly for Windows-*
;; In DOS, must synchronize because DOS doesn't have
;; asynchronous processes.
(apply 'call-process program nil buffer nil args)
@@ -1533,5 +1532,4 @@ affects only files whose names match the expression."
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: a86d448e-58d7-4572-a1d9-fdedfa22f648
;;; ediff-diff.el ends here
diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el
index d1b40f7ee58..9665a21cd14 100644
--- a/lisp/vc/ediff-init.el
+++ b/lisp/vc/ediff-init.el
@@ -787,16 +787,6 @@ TYPE-OF-EMACS is either 'xemacs or 'emacs."
"")
-(if (ediff-has-face-support-p)
- (if (featurep 'xemacs)
- (progn
- (defalias 'ediff-valid-color-p 'valid-color-name-p)
- (defalias 'ediff-get-face 'get-face))
- (defalias 'ediff-valid-color-p (if (fboundp 'color-defined-p)
- 'color-defined-p
- 'x-color-defined-p))
- (defalias 'ediff-get-face 'internal-get-face)))
-
(if (ediff-window-display-p)
(if (featurep 'xemacs)
(progn
diff --git a/lisp/vc/ediff-ptch.el b/lisp/vc/ediff-ptch.el
index b6c7f6ab7ba..393bdcb673c 100644
--- a/lisp/vc/ediff-ptch.el
+++ b/lisp/vc/ediff-ptch.el
@@ -1,7 +1,8 @@
;;; ediff-ptch.el --- Ediff's patch support
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;; 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
;; Package: ediff
@@ -62,7 +63,7 @@ case the default value for this variable should be changed."
;; the default backup extension
(defconst ediff-default-backup-extension
- (if (memq system-type '(emx ms-dos))
+ (if (eq system-type 'ms-dos)
"_orig" ".orig"))
@@ -841,5 +842,4 @@ you can still examine the changes via M-x ediff-files"
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: 2fe2161e-e116-469b-90fa-5cbb44c1bd1b
;;; ediff-ptch.el ends here
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index e1589e3deb4..b36599249a5 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -1,7 +1,8 @@
;;; ediff-util.el --- the core commands and utilities of ediff
;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
;; Package: ediff
@@ -3994,7 +3995,7 @@ byte-compilation may produce output like this:
........................
While compiling the end of the data:
** The following functions are not known to be defined:
- ediff-valid-color-p, ediff-set-face,
+ xxx, yyy
........................
These are NOT errors, but inevitable warnings, which ought to be ignored.
diff --git a/lisp/vc/ediff-wind.el b/lisp/vc/ediff-wind.el
index 8b16c5a4a12..4d6666a86f2 100644
--- a/lisp/vc/ediff-wind.el
+++ b/lisp/vc/ediff-wind.el
@@ -1,7 +1,8 @@
;;; ediff-wind.el --- window manipulation utilities
-;; Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
+;; 2005, 2006, 2007, 2008, 2009, 2010
+;; Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
;; Package: ediff
@@ -978,12 +979,11 @@ into icons, regardless of the window manager."
(set-specifier left-toolbar-width (list ctl-frame 0))
(set-specifier right-toolbar-width (list ctl-frame 0))))
- ;; Under OS/2 (emx) we have to call modify frame parameters twice, in order
- ;; to make sure that at least once we do it for non-iconified frame. If
- ;; appears that in the OS/2 port of Emacs, one can't modify frame
- ;; parameters of iconified frames. As a precaution, we do likewise for
- ;; windows-nt.
- (if (memq system-type '(emx windows-nt windows-95))
+ ;; As a precaution, we call modify frame parameters twice, in
+ ;; order to make sure that at least once we do it for
+ ;; a non-iconified frame. (It appears that in the Windows port of
+ ;; Emacs, one can't modify frame parameters of iconified frames.)
+ (if (eq system-type 'windows-nt)
(modify-frame-parameters ctl-frame adjusted-parameters))
;; make or zap toolbar (if not requested)
@@ -1310,5 +1310,4 @@ It assumes that it is called from within the control buffer."
;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
;; End:
-;; arch-tag: 73d9a5d7-eed7-4d9c-8b4b-21d5d78eb597
;;; ediff-wind.el ends here
diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el
index 3805df2f00b..ac32cea6202 100644
--- a/lisp/vc/log-view.el
+++ b/lisp/vc/log-view.el
@@ -128,6 +128,7 @@
(easy-mmode-defmap log-view-mode-map
'(("z" . kill-this-buffer)
("q" . quit-window)
+ ("g" . revert-buffer)
("m" . log-view-toggle-mark-entry)
("e" . log-view-modify-change-comment)
("d" . log-view-diff)
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index ad307d3a201..03ff1f555a1 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -92,9 +92,9 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
:version "21.1"
:group 'vc)
-(defcustom vc-cvs-header (or (cdr (assoc 'CVS vc-header-alist)) '("\$Id\$"))
+(defcustom vc-cvs-header '("\$Id\$")
"Header keywords to be inserted by `vc-insert-headers'."
- :version "21.1"
+ :version "24.1" ; no longer consult the obsolete vc-header-alist
:type '(repeat string)
:group 'vc)
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 91e9b8e3cd3..37426eb25f2 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -49,9 +49,6 @@ vc-BACKEND-master-templates. To enable or disable VC for a given
BACKEND, use `vc-handled-backends'."
"21.1")
-(defvar vc-header-alist ())
-(make-obsolete-variable 'vc-header-alist 'vc-BACKEND-header "21.1")
-
(defcustom vc-ignore-dir-regexp
;; Stop SMB, automounter, AFS, and DFS host lookups.
locate-dominating-stop-dir-regexp
@@ -815,6 +812,9 @@ Format:
\"BACKEND-REV\" if the file is up-to-date
\"BACKEND:REV\" if the file is edited (or locked by the calling user)
\"BACKEND:LOCKER:REV\" if the file is locked by somebody else
+ \"BACKEND@REV\" if the file was locally added
+ \"BACKEND!REV\" if the file contains conflicts or was removed
+ \"BACKEND?REV\" if the file is under VC, but is missing
This function assumes that the file is registered."
(let* ((backend-name (symbol-name backend))
diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el
index 1c3b4c00e32..6537c2b96f3 100644
--- a/lisp/vc/vc-rcs.el
+++ b/lisp/vc/vc-rcs.el
@@ -77,10 +77,10 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
:version "21.1"
:group 'vc)
-(defcustom vc-rcs-header (or (cdr (assoc 'RCS vc-header-alist)) '("\$Id\$"))
+(defcustom vc-rcs-header '("\$Id\$")
"Header keywords to be inserted by `vc-insert-headers'."
:type '(repeat string)
- :version "21.1"
+ :version "24.1" ; no longer consult the obsolete vc-header-alist
:group 'vc)
(defcustom vc-rcsdiff-knows-brief nil
diff --git a/lisp/vc/vc-sccs.el b/lisp/vc/vc-sccs.el
index cf7d97e483d..fb9cb3fc3f8 100644
--- a/lisp/vc/vc-sccs.el
+++ b/lisp/vc/vc-sccs.el
@@ -71,9 +71,10 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
:version "21.1"
:group 'vc)
-(defcustom vc-sccs-header (or (cdr (assoc 'SCCS vc-header-alist)) '("%W%"))
+(defcustom vc-sccs-header '("%W%")
"Header keywords to be inserted by `vc-insert-headers'."
:type '(repeat string)
+ :version "24.1" ; no longer consult the obsolete vc-header-alist
:group 'vc)
;;;###autoload
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 3af6842ab44..3e4c299f096 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -84,9 +84,9 @@ want to force an empty list of arguments, use t."
:version "22.1"
:group 'vc)
-(defcustom vc-svn-header (or (cdr (assoc 'SVN vc-header-alist)) '("\$Id\$"))
+(defcustom vc-svn-header '("\$Id\$")
"Header keywords to be inserted by `vc-insert-headers'."
- :version "22.1"
+ :version "24.1" ; no longer consult the obsolete vc-header-alist
:type '(repeat string)
:group 'vc)
@@ -374,7 +374,7 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
(message "Merging changes into %s..." file)
;; (vc-file-setprop file 'vc-working-revision nil)
(vc-file-setprop file 'vc-checkout-time 0)
- (vc-svn-command nil 0 file "update")
+ (vc-svn-command nil 0 file "--non-interactive" "update") ; see bug#7152
;; Analyze the merge result reported by SVN, and set
;; file properties accordingly.
(with-current-buffer (get-buffer "*vc*")
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 20e56bbd42f..665dafb10df 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -770,7 +770,7 @@ See `run-hooks'."
"\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
"Associate static header string templates with file types.
A \%s in the template is replaced with the first string associated with
-the file's version control type in `vc-header-alist'."
+the file's version control type in `vc-BACKEND-header'."
:type '(repeat (cons :format "%v"
(regexp :tag "File Type")
(string :tag "Header String")))
@@ -2027,8 +2027,10 @@ Not all VC backends support short logs!")
(setq type (if vc-short-log 'short 'long))
(lexical-let
((working-revision working-revision)
+ (backend backend)
(limit limit)
(shortlog vc-short-log)
+ (files files)
(is-start-revision is-start-revision))
(vc-log-internal-common
backend buffer-name files type
@@ -2039,7 +2041,9 @@ Not all VC backends support short logs!")
(vc-print-log-setup-buttons working-revision
is-start-revision limit ret))
(lambda (bk)
- (vc-call-backend bk 'show-log-entry working-revision))))))
+ (vc-call-backend bk 'show-log-entry working-revision))
+ (lambda (ignore-auto noconfirm)
+ (vc-print-log-internal backend files working-revision is-start-revision limit))))))
(defvar vc-log-view-type nil
"Set this to differentiate the different types of logs.")
@@ -2051,7 +2055,8 @@ Not all VC backends support short logs!")
type
backend-func
setup-buttons-func
- goto-location-func)
+ goto-location-func
+ rev-buff-func)
(let (retval)
(with-current-buffer (get-buffer-create buffer-name)
(set (make-local-variable 'vc-log-view-type) type))
@@ -2062,7 +2067,9 @@ Not all VC backends support short logs!")
;; to t, so let's keep doing it, just in case.
(vc-call-backend backend 'log-view-mode)
(set (make-local-variable 'log-view-vc-backend) backend)
- (set (make-local-variable 'log-view-vc-fileset) files))
+ (set (make-local-variable 'log-view-vc-fileset) files)
+ (set (make-local-variable 'revert-buffer-function)
+ rev-buff-func))
(vc-exec-after
`(let ((inhibit-read-only t))
(funcall ',setup-buttons-func ',backend ',files ',retval)
@@ -2080,7 +2087,14 @@ Not all VC backends support short logs!")
(vc-call-backend bk type-arg buf remote-location)))
(lambda (bk files-arg ret))
(lambda (bk)
- (goto-char (point-min)))))
+ (goto-char (point-min)))
+ (lexical-let
+ ((backend backend)
+ (remote-location remote-location)
+ (buffer-name buffer-name)
+ (type type))
+ (lambda (ignore-auto noconfirm)
+ (vc-incoming-outgoing-internal backend remote-location buffer-name type)))))
;;;###autoload
(defun vc-print-log (&optional working-revision limit)
@@ -2140,8 +2154,11 @@ When called interactively with a prefix argument, prompt for LIMIT."
;;;###autoload
(defun vc-log-incoming (&optional remote-location)
- "Show a log of changes that will be received with a pull operation from REMOTE-LOCATION."
- (interactive "sRemote location (empty for default): ")
+ "Show a log of changes that will be received with a pull operation from REMOTE-LOCATION.
+When called interactively with a prefix argument, prompt for REMOTE-LOCATION.."
+ (interactive
+ (when current-prefix-arg
+ (list (read-string "Remote location (empty for default): "))))
(let ((backend (vc-deduce-backend))
rootdir working-revision)
(unless backend
@@ -2150,8 +2167,11 @@ When called interactively with a prefix argument, prompt for LIMIT."
;;;###autoload
(defun vc-log-outgoing (&optional remote-location)
- "Show a log of changes that will be sent with a push operation to REMOTE-LOCATION."
- (interactive "sRemote location (empty for default): ")
+ "Show a log of changes that will be sent with a push operation to REMOTE-LOCATION.
+When called interactively with a prefix argument, prompt for REMOTE-LOCATION."
+ (interactive
+ (when current-prefix-arg
+ (list (read-string "Remote location (empty for default): "))))
(let ((backend (vc-deduce-backend))
rootdir working-revision)
(unless backend
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 721414b32ac..3b9a0372de5 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -57,8 +57,6 @@
;;; Code:
-(defvar widget)
-
;;; Compatibility.
(defun widget-event-point (event)
@@ -1462,11 +1460,15 @@ The value of the :type attribute should be an unconverted widget type."
:notify 'widget-default-notify
:prompt-value 'widget-default-prompt-value)
+(defvar widget--completing-widget)
+
(defun widget-default-complete (widget)
"Call the value of the :complete-function property of WIDGET.
-If that does not exist, call the value of `widget-complete-field'."
- (call-interactively (or (widget-get widget :complete-function)
- widget-complete-field)))
+If that does not exist, call the value of `widget-complete-field'.
+During this call, `widget--completing-widget' is bound to WIDGET."
+ (let ((widget--completing-widget widget))
+ (call-interactively (or (widget-get widget :complete-function)
+ widget-complete-field))))
(defun widget-default-create (widget)
"Create WIDGET at point in the current buffer."
@@ -2193,19 +2195,9 @@ when he invoked the menu."
;; We could probably do the same job as the images using single
;; space characters in a boxed face with a stretch specification to
;; make them square.
- :on-glyph '(create-image "\300\300\141\143\067\076\034\030"
- 'xbm t :width 8 :height 8
- :background "grey75" ; like default mode line
- :foreground "black"
- :relief -2
- :ascent 'center)
+ :on-glyph image-checkbox-checked
:off "[ ]"
- :off-glyph '(create-image (make-string 8 0)
- 'xbm t :width 8 :height 8
- :background "grey75"
- :foreground "black"
- :relief -2
- :ascent 'center)
+ :off-glyph image-checkbox-unchecked
:help-echo "Toggle this item."
:action 'widget-checkbox-action)
@@ -2237,11 +2229,10 @@ when he invoked the menu."
(defun widget-checklist-value-create (widget)
;; Insert all values
- (let ((alist (widget-checklist-match-find widget (widget-get widget :value)))
- (args (widget-get widget :args)))
- (while args
- (widget-checklist-add-item widget (car args) (assq (car args) alist))
- (setq args (cdr args)))
+ (let ((alist (widget-checklist-match-find widget))
+ (args (widget-get widget :args)))
+ (dolist (item args)
+ (widget-checklist-add-item widget item (assq item alist)))
(widget-put widget :children (nreverse (widget-get widget :children)))))
(defun widget-checklist-add-item (widget type chosen)
@@ -2314,9 +2305,10 @@ If the item is checked, CHOSEN is a cons whose cdr is the value."
values nil)))))
(cons found rest)))
-(defun widget-checklist-match-find (widget vals)
+(defun widget-checklist-match-find (widget &optional vals)
"Find the vals which match a type in the checklist.
Return an alist of (TYPE MATCH)."
+ (or vals (setq vals (widget-get widget :value)))
(let ((greedy (widget-get widget :greedy))
(args (copy-sequence (widget-get widget :args)))
found)
@@ -2809,11 +2801,10 @@ Return an alist of (TYPE MATCH)."
argument answer found)
(while args
(setq argument (car args)
- args (cdr args)
- answer (widget-match-inline argument vals))
- (if answer
- (setq vals (cdr answer)
- found (append found (car answer)))
+ args (cdr args))
+ (if (setq answer (widget-match-inline argument vals))
+ (setq found (append found (car answer))
+ vals (cdr answer))
(setq vals nil
args nil)))
(if answer
@@ -3049,14 +3040,13 @@ as the value."
:complete-function 'ispell-complete-word
:prompt-history 'widget-string-prompt-value-history)
-(defvar widget)
-
(defun widget-string-complete ()
"Complete contents of string field.
Completions are taken from the :completion-alist property of the
widget. If that isn't a list, it's evalled and expected to yield a list."
(interactive)
- (let* ((completion-ignore-case (widget-get widget :completion-ignore-case))
+ (let* ((widget widget--completing-widget)
+ (completion-ignore-case (widget-get widget :completion-ignore-case))
(alist (widget-get widget :completion-alist))
(_ (unless (listp alist)
(setq alist (eval alist)))))
@@ -3101,9 +3091,10 @@ It reads a file name from an editable text field."
(defun widget-file-complete ()
"Perform completion on file name preceding point."
(interactive)
- (completion-in-region (widget-field-start widget)
- (max (point) (widget-field-text-end widget))
- 'completion-file-name-table))
+ (let ((widget widget--completing-widget))
+ (completion-in-region (widget-field-start widget)
+ (max (point) (widget-field-text-end widget))
+ 'completion-file-name-table)))
(defun widget-file-prompt-value (widget prompt value unbound)
;; Read file from minibuffer.
@@ -3726,7 +3717,7 @@ example:
(widget-insert " ")
(widget-create-child-and-convert
widget 'push-button
- :tag "Choose" :action 'widget-color--choose-action)
+ :tag " Choose " :action 'widget-color--choose-action)
(widget-insert " "))
(defun widget-color--choose-action (widget &optional event)
diff --git a/make-dist b/make-dist
index a113e00413b..713d88481b3 100755
--- a/make-dist
+++ b/make-dist
@@ -1,29 +1,32 @@
#!/bin/sh
+### make-dist: create an Emacs distribution tar file from current srcdir
-#### make-dist: create an Emacs distribution tar file from the current
-#### source tree. This basically creates a duplicate directory
-#### structure, and then hard links into it only those files that should
-#### be distributed. This means that if you add a file with an odd name,
-#### you should make sure that this script will include it.
+## Copyright (C) 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
+## 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-# Copyright (C) 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+## This file is part of GNU Emacs.
-# 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 3 of the License, or
-# (at your option) any later version.
+## 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 3 of the License, 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.
+## 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. If not, see <http://www.gnu.org/licenses/>.
+## You should have received a copy of the GNU General Public License
+## along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+### Commentary:
+
+## This basically creates a duplicate directory structure, and then
+## hard links into it only those files that should be distributed.
+## This means that if you add a file with an odd name, you should make
+## sure that this script will include it.
+
+### Code:
progname="$0"
@@ -46,6 +49,7 @@ update=yes
check=yes
clean_up=no
make_tar=no
+default_gzip=gzip
newer=""
while [ $# -gt 0 ]; do
@@ -75,12 +79,7 @@ while [ $# -gt 0 ]; do
new_extension=".new"
shift
;;
- ## This option tells make-dist to use `compress' instead of gzip.
- ## Normally, make-dist uses gzip whenever it is present.
- "--compress")
- default_gzip="compress"
- ;;
- ## Same with bzip2.
+ ## This option tells make-dist to use `bzip2' instead of gzip.
"--bzip2")
default_gzip="bzip2"
;;
@@ -101,7 +100,6 @@ while [ $# -gt 0 ]; do
echo ""
echo " --bzip2 use bzip2 instead of gzip"
echo " --clean-up delete staging directories when done"
- echo " --compress use compress instead of gzip"
echo " --lzma use lzma instead of gzip"
echo " --newer=TIME don't include files older than TIME"
echo " --no-check don't check for bad file names etc."
@@ -150,23 +148,19 @@ then
fi
### Find out which version of Emacs this is.
-shortversion=`grep 'char emacs_version' src/emacs.c \
- | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`
-version=`grep 'char emacs_version' src/emacs.c \
- | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`
+version=`sed -n '/char emacs_version/ s/^[^"]*"\([^"]*\)".*$/\1/p' src/emacs.c`
if [ ! "${version}" ]; then
echo "${progname}: can't find current Emacs version in \`./src/emacs.c'" >&2
exit 1
fi
-echo Version numbers are $version and $shortversion
+echo Version number is $version
-if [ $update = yes ];
-then
- if grep -s "@set EMACSVER *${shortversion}" ./doc/emacs/emacs.texi > /dev/null; then
- true
- else
- echo "You must update the version number in \`./doc/emacs/emacs.texi'"
+if [ $update = yes ]; then
+ if ! grep -q "@set EMACSVER *${version}" doc/emacs/emacsver.texi || \
+ ! grep -q "tree holds version *${version}" README; then
+ echo "WARNING: README and/or emacsver.texi have the wrong version number"
+ echo "Consider running M-x set-version from admin/admin.el"
sleep 5
fi
fi
@@ -247,7 +241,7 @@ if [ "x`ls -t configure configure.in | sed q`" != "xconfigure" ]; then
autoconf || { x=$?; echo Autoconf FAILED! >&2; exit $x; }
fi
-### Make sure src/config-in.stamp is newer than configure.in.
+### Make sure src/stamp-h.in is newer than configure.in.
if [ "x`ls -t src/stamp-h.in configure.in | sed q`" != "xsrc/stamp-h.in" ]; then
echo "\`./configure.in' is newer than \`./src/stamp-h.in'" >&2
echo "Running autoheader" >&2
@@ -259,10 +253,10 @@ fi
if [ $update = yes ];
then
echo "Updating Info files"
- (cd doc/emacs; make -f Makefile.in srcdir=. info)
- (cd doc/misc; make -f Makefile.in srcdir=. info)
- (cd doc/lispref; make -f Makefile.in srcdir=. info)
- (cd doc/lispintro; make -f Makefile.in SHELL=/bin/sh srcdir=. info VPATH=.)
+ (cd doc/emacs; make info)
+ (cd doc/misc; make info)
+ (cd doc/lispref; make info)
+ (cd doc/lispintro; make info)
echo "Updating finder, custom and autoload data"
(cd lisp; make updates EMACS="$EMACS")
@@ -276,21 +270,17 @@ then
$EMACS -batch -f batch-byte-recompile-directory lisp leim
fi
+## What is this file for? It goes in srcdir, not the tarfile.
+## Why does it exclude term/ ?
echo "Making lisp/MANIFEST"
-(cd lisp;
- files=`echo [!=]*.el | sed -e 's/ subdirs.el / /' -e 's/ default.el / /'`
- for dir in [!=]*; do
- if [ -d $dir ] && [ $dir != term ]
- then
- echo $dir
- thisdir=`echo $dir/[!=]*.el | sed -e 's/ subdirs.el / /'`
- files="$files $thisdir"
- fi
- done
- for file in $files
- do sed -n 's/^;;; //p; q' $file
- done | sort > MANIFEST)
+files=`find lisp -type f -name '*.el'`
+for file in $files; do
+ case "$file" in
+ */subdirs.el|*/default.el|*/loaddefs.el|*/term/*) continue ;;
+ esac
+ sed -n 's/^;;; //p; q' $file
+done | sort > lisp/MANIFEST
echo "Creating staging directory: \`${tempparent}'"
@@ -300,7 +290,7 @@ tempdir="${tempparent}/${emacsname}"
### This trap ensures that the staging directory will be cleaned up even
### when the script is interrupted in mid-career.
if [ "${clean_up}" = yes ]; then
- trap "echo 'Interrupted...cleaning up the staging directory'; rm -rf ${tempparent}; exit 1" 1 2 15
+ trap "echo 'Cleaning up the staging directory'; rm -rf ${tempparent}" EXIT
fi
echo "Creating top directory: \`${tempdir}'"
@@ -314,38 +304,17 @@ echo "Making links to top-level files"
ln INSTALL README BUGS move-if-change ${tempdir}
ln ChangeLog Makefile.in configure configure.in ${tempdir}
ln config.bat make-dist update-subdirs vpath.sed .dir-locals.el ${tempdir}
-### Copy these files; they're cross-filesystem symlinks.
-cp mkinstalldirs ${tempdir}
-cp config.sub ${tempdir}
-cp config.guess ${tempdir}
-cp install-sh ${tempdir}
-
-echo "Updating version number in README"
-(cd ${tempdir}
- awk \
- '$1 " " $2 " " $3 " " $4 " " $5 == "This directory tree holds version" { $6 = version; print $0 }
- $1 " " $2 " " $3 " " $4 " " $5 != "This directory tree holds version"' \
- version=${version} README > tmp.README
- mv -f tmp.README README)
-
+ln mkinstalldirs config.sub config.guess install-sh ${tempdir}
echo "Creating subdirectories"
-for subdir in lisp site-lisp \
+for subdir in site-lisp \
leim leim/CXTERM-DIC leim/MISC-DIC \
leim/SKK-DIC leim/ja-dic leim/quail \
src src/m src/s src/bitmaps lib-src oldXMenu lwlib \
nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \
- etc etc/charsets etc/e etc/gnus etc/nxml \
- etc/images etc/images/custom etc/images/ezimage etc/images/gnus \
- etc/images/gud etc/images/icons etc/images/icons/hicolor \
- etc/images/icons/hicolor/*x* etc/images/icons/hicolor/scalable \
- etc/images/icons/hicolor/*/apps etc/images/icons/hicolor/*/mimetypes \
- etc/images/low-color etc/images/mail etc/images/mpc \
- etc/images/smilies etc/images/smilies/grayscale \
- etc/images/smilies/medium etc/images/tree-widget \
- etc/images/tree-widget/default etc/images/tree-widget/folder \
- etc/refcards etc/schema etc/tutorials info doc doc/emacs \
- doc/misc doc/man doc/lispref doc/lispintro m4 msdos \
+ `find etc lisp -type d` \
+ doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \
+ info m4 msdos \
nextstep nextstep/Cocoa nextstep/Cocoa/Emacs.base \
nextstep/Cocoa/Emacs.base/Contents \
nextstep/Cocoa/Emacs.base/Contents/Resources \
@@ -363,57 +332,21 @@ do
done
echo "Making links to \`lisp' and its subdirectories"
-### Don't distribute TAGS, =*.el files, site-init.el, site-load.el, or default.el.
-(cd lisp
- ln [a-zA-Z]*.el ../${tempdir}/lisp
- ln [a-zA-Z]*.elc ../${tempdir}/lisp
- ## simula.el doesn't keep abbreviations in simula.defns any more.
- ## ln [a-zA-Z]*.defns ../${tempdir}/lisp
- ln ChangeLog ChangeLog.*[0-9] ../${tempdir}/lisp
- ln Makefile.in makefile.w32-in ../${tempdir}/lisp
- test -f README && ln README ../${tempdir}/lisp
- (cd ../${tempdir}/lisp
- rm -f TAGS =*
- rm -f site-init site-init.el site-init.elc
- rm -f site-load site-load.el site-load.elc
- rm -f site-start site-start.el site-start.elc
- rm -f default default.el default.elc
- )
-
- ## Find all subdirs of lisp dir
- for file in `find . -type d -print`; do
- case $file in
- . | .. | */=*)
- ;;
- *)
- if [ -d $file ]; then
- subdirs="$file $subdirs"
- fi
- ;;
- esac
- done
-
- for file in $subdirs; do
- echo " lisp/$file"
- mkdir -p ../${tempdir}/lisp/$file
- ln $file/[a-zA-Z0-9]*.el ../${tempdir}/lisp/$file
- ln $file/[a-zA-Z0-9]*.elc ../${tempdir}/lisp/$file
- ## calc/README.priv
- for f in $file/[a-zA-Z]*.xpm $file/[a-zA-Z]*.[xp]bm \
- $file/README $file/ChangeLog $file/ChangeLog.*[0-9] \
- $file/README.prev; do
- if [ -f $f ]; then
- ln $f ../${tempdir}/lisp/$file
- fi
- done
- done )
+files=`find lisp \( -name '*.el' -o -name '*.elc' -o -name 'ChangeLog*' \
+ -o -name 'README*' \)`
+
+### Don't distribute site-init.el, site-load.el, or default.el.
+for file in lisp/Makefile.in lisp/makefile.w32-in $files; do
+ case $file in
+ */site-init*|*/site-load*|*/default*) continue ;;
+ esac
+ ln $file $tempdir/$file
+done
echo "Making links to \`leim' and its subdirectories"
-### Don't distribute TAGS, or =*.el files.
(cd leim
ln makefile.w32-in ../${tempdir}/leim
ln ChangeLog README ../${tempdir}/leim
-
ln CXTERM-DIC/README CXTERM-DIC/*.tit ../${tempdir}/leim/CXTERM-DIC
ln SKK-DIC/README SKK-DIC/SKK-JISYO.L ../${tempdir}/leim/SKK-DIC
ln MISC-DIC/README MISC-DIC/*.* ../${tempdir}/leim/MISC-DIC
@@ -426,43 +359,21 @@ echo "Making links to \`leim' and its subdirectories"
rm -f ../${tempdir}/leim/quail/quick-b5.*
rm -f ../${tempdir}/leim/quail/quick-cns.*
rm -f ../${tempdir}/leim/quail/tsang-b5.*
- rm -f ../${tempdir}/leim/quail/tsang-cns.*
-
- cd ../${tempdir}/leim
- rm -f TAGS =* */=*)
+ rm -f ../${tempdir}/leim/quail/tsang-cns.*)
echo "Making links to \`src'"
-### Don't distribute =*.[ch] files, or the configured versions of
-### config.in, paths.in, or Makefile.in, or TAGS.
+### Don't distribute the configured versions of
+### config.in, paths.in, buildobj.h, or Makefile.in.
(cd src
echo " (It is ok if ln fails in some cases.)"
- ln [a-zA-Z]*.c ../${tempdir}/src
- ln [a-zA-Z]*.h ../${tempdir}/src
- ln [a-zA-Z]*.m ../${tempdir}/src
+ ln [a-zA-Z]*.[chm] ../${tempdir}/src
ln [a-zA-Z]*.in ../${tempdir}/src
ln [a-zA-Z]*.mk ../${tempdir}/src
- ## If we ended up with a symlink, or if we did not get anything
- ## due to a cross-device symlink, copy the file.
- for file in [a-zA-Z]*.[hcs] [a-zA-Z]*.in; do
- if test -f ../${tempdir}/src/$file; then
- # test -f appears to succeed for a symlink
- if test -L ../${tempdir}/src/$file; then
- rm ../${tempdir}/src/$file
- cp -p $file ../${tempdir}/src
- chmod a-w ../${tempdir}/src/$file
- fi
- else
- rm ../${tempdir}/src/$file
- cp -p $file ../${tempdir}/src
- chmod a-w ../${tempdir}/src/$file
- fi
- done
ln README ChangeLog ChangeLog.*[0-9] ../${tempdir}/src
ln makefile.w32-in ../${tempdir}/src
ln .gdbinit .dbxinit ../${tempdir}/src
cd ../${tempdir}/src
- rm -f config.h epaths.h Makefile
- rm -f =* TAGS)
+ rm -f config.h epaths.h Makefile buildobj.h)
echo "Making links to \`src/bitmaps'"
(cd src/bitmaps
@@ -478,56 +389,29 @@ echo "Making links to \`src/s'"
echo "Making links to \`lib-src'"
(cd lib-src
- ln [a-zA-Z]*.[chmy] ../${tempdir}/lib-src
+ ln [a-zA-Z]*.[ch] ../${tempdir}/lib-src
ln ChangeLog Makefile.in README testfile vcdiff ../${tempdir}/lib-src
- ln b2m.pl grep-changelog rcs2log rcs-checkin ../${tempdir}/lib-src
+ ln grep-changelog rcs2log rcs-checkin ../${tempdir}/lib-src
ln makefile.w32-in ../${tempdir}/lib-src
- ## If we ended up with a symlink, or if we did not get anything
- ## due to a cross-device symlink, copy the file.
- for file in [a-zA-Z]*.[chy]; do
- if test -f ../${tempdir}/lib-src/$file; then
- # test -f appears to succeed for a symlink
- if test -L ../${tempdir}/lib-src/$file; then
- rm ../${tempdir}/lib-src/$file
- cp $file ../${tempdir}/lib-src
- chmod a-w ../${tempdir}/lib-src/$file
- fi
- else
- rm ../${tempdir}/lib-src/$file
- cp $file ../${tempdir}/lib-src
- chmod a-w ../${tempdir}/lib-src/$file
- fi
- done
cd ../${tempdir}/lib-src
- rm -f getopt.h
- rm -f =* TAGS)
+ rm -f getopt.h)
echo "Making links to \`m4'"
(cd m4
ln *.m4 ../${tempdir}/m4)
+## Exclude README.W32 because it is specific to pre-built binaries(?).
echo "Making links to \`nt'"
(cd nt
- ln emacs.manifest emacs.rc emacsclient.rc config.nt [a-z]*.c ../${tempdir}/nt
- ln nmake.defs gmake.defs subdirs.el ../${tempdir}/nt
- ln [a-z]*.bat [a-z]*.h ../${tempdir}/nt
+ ln emacs.manifest emacs.rc emacsclient.rc config.nt ../${tempdir}/nt
+ ln emacs-src.tags nmake.defs gmake.defs subdirs.el ../${tempdir}/nt
+ ln [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
ln ChangeLog INSTALL README makefile.w32-in ../${tempdir}/nt)
-echo "Making links to \`nt/inc'"
-(cd nt/inc
- ln [a-z]*.h ../../${tempdir}/nt/inc)
-
-echo "Making links to \`nt/inc/sys'"
-(cd nt/inc/sys
- ln [a-z]*.h ../../../${tempdir}/nt/inc/sys)
-
-echo "Making links to \`nt/inc/arpa'"
-(cd nt/inc/arpa
- ln [a-z]*.h ../../../${tempdir}/nt/inc/arpa)
-
-echo "Making links to \`nt/inc/netinet'"
-(cd nt/inc/netinet
- ln [a-z]*.h ../../../${tempdir}/nt/inc/netinet)
+echo "Making links to \`nt/inc' and its subdirectories"
+for f in `find nt/inc -type f -name '[a-z]*.h'`; do
+ ln $f $tempdir/$f
+done
echo "Making links to \`nt/icons'"
(cd nt/icons
@@ -537,14 +421,11 @@ echo "Making links to \`nt/icons'"
echo "Making links to \`msdos'"
(cd msdos
ln ChangeLog INSTALL README emacs.ico emacs.pif ../${tempdir}/msdos
- ln is_exec.c sigaction.c mainmake.v2 sed*.inp ../${tempdir}/msdos
- cd ../${tempdir}/msdos
- rm -f =*)
+ ln is_exec.c sigaction.c mainmake.v2 sed*.inp ../${tempdir}/msdos)
-## FIXME are DEV-NOTES and FOR-RELEASE appropriate?
echo "Making links to \`nextstep'"
(cd nextstep
- ln AUTHORS ChangeLog DEV-NOTES FOR-RELEASE README INSTALL ../${tempdir}/nextstep)
+ ln ChangeLog README INSTALL ../${tempdir}/nextstep)
echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents'"
(cd nextstep/Cocoa/Emacs.base/Contents
@@ -568,156 +449,49 @@ echo "Making links to \`nextstep/GNUstep/Emacs.base/Resources'"
echo "Making links to \`oldXMenu'"
(cd oldXMenu
- ln *.c *.h *.in ../${tempdir}/oldXMenu
+ ln *.[ch] *.in ../${tempdir}/oldXMenu
ln README ChangeLog ../${tempdir}/oldXMenu)
echo "Making links to \`lwlib'"
(cd lwlib
- ln *.c *.h *.in ../${tempdir}/lwlib
+ ln *.[ch] *.in ../${tempdir}/lwlib
ln README ChangeLog ../${tempdir}/lwlib)
-echo "Making links to \`etc'"
-### Don't distribute = files, TAGS, DOC files, backups, autosaves, or
-### tex litter.
-(cd etc
- files=`ls -d * | grep -v '^e$' \
- | grep -v '^charsets$' | grep -v '^gnus$' | grep -v '^images$' | grep -v '^nxml$' \
- | grep -v '^refcards$' | grep -v '^tutorials$'| grep -v '^schema$'`
- ln $files ../${tempdir}/etc
- ## If we ended up with a symlink, or if we did not get anything
- ## due to a cross-device symlink, copy the file.
- for file in $files; do
- if test -f ../${tempdir}/etc/$file; then
- # test -f appears to succeed for a symlink
- if test -L ../${tempdir}/etc/$file; then
- rm ../${tempdir}/etc/$file
- cp $file ../${tempdir}/etc
- chmod a-w ../${tempdir}/etc/$file
- fi
- else
- rm ../${tempdir}/etc/$file
- cp $file ../${tempdir}/etc
- chmod a-w ../${tempdir}/etc/$file
- fi
- done
- cd ../${tempdir}/etc
- rm -f fns*.el
- rm -f DOC* *~ \#*\# *.dvi *.log *.orig *.rej *,v =* core
- rm -f TAGS)
-
-for dir in etc/charsets etc/e etc/gnus etc/nxml etc/tutorials etc/refcards etc/schema ; do
- echo "Making links to \`${dir}'"
- (cd ${dir}
- ln `ls -d *` ../../${tempdir}/${dir}
- cd ../../${tempdir}/${dir}
- rm -f *~ \#*\# *,v =* core)
-done
-
-echo "Making links to \`etc/images'"
-(cd etc/images
- for f in *; do
- [ -f "$f" ] || continue
- case $f in
- (*~|\#*\#|*,v|=*|core) continue ;;
- esac
- ln $f ../../${tempdir}/etc/images
- done)
-
-for dir in etc/images/custom etc/images/ezimage etc/images/gnus \
- etc/images/gud etc/images/icons etc/images/low-color etc/images/mail \
- etc/images/mpc etc/images/smilies ; do
- echo "Making links to \`${dir}'"
- (cd ${dir}
- for f in *; do
- [ -f "$f" ] || continue
- case $f in
- (*~|\#*\#|*,v|=*|core) continue ;;
- esac
- ln $f ../../../${tempdir}/${dir}
- done
- )
-done
-
-for dir in etc/images/tree-widget/default etc/images/tree-widget/folder \
- etc/images/smilies/grayscale etc/images/smilies/medium; do
- echo "Making links to \`${dir}'"
- (cd ${dir}
- ln `ls -d *` ../../../../${tempdir}/${dir}
- cd ../../../../${tempdir}/${dir}
- rm -f *~ \#*\# *,v =* core)
-done
-
-for dir in etc/images/icons/hicolor/*/apps \
- etc/images/icons/hicolor/*/mimetypes; do
- echo "Making links to \`${dir}'"
- (cd ${dir}
- ln `ls -d *` ../../../../../../${tempdir}/${dir}
- cd ../../../../../../${tempdir}/${dir}
- rm -f *~ \#*\# *,v =* core)
+echo "Making links to \`etc' and its subdirectories"
+for f in `find etc -type f`; do
+ case $f in
+ etc/DOC*) continue ;;
+ esac
+ ln $f $tempdir/$f
done
echo "Making links to \`info'"
-# Don't distribute backups or autosaves.
-(cd info
- ln `find . -type f -print` ../${tempdir}/info
- #ln [a-zA-Z]* ../${tempdir}/info
- cd ../${tempdir}/info
- # Avoid an error when expanding the wildcards later.
- ln emacs dummy~ ; ln emacs \#dummy\#
- rm -f *~ \#*\# core .arch-inventory .gitignore)
+ln `find info -type f -print` ${tempdir}/info
echo "Making links to \`doc/emacs'"
(cd doc/emacs
- ln *.texi *.aux *.fns *.kys *.vrs ../../${tempdir}/doc/emacs
- ln makefile.w32-in ../../${tempdir}/doc/emacs
- test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/emacs
- ln ChangeLog ../../${tempdir}/doc/emacs
- cd ../../${tempdir}/doc/emacs
- rm -f \#*\# =* *~ core emacs-index* *.Z *.z xmail
- rm -f emacs.?? termcap.?? gdb.?? *.log *.toc *.dvi *.oaux)
+ ln *.texi *.in makefile.w32-in ChangeLog* ../../${tempdir}/doc/emacs)
echo "Making links to \`doc/misc'"
(cd doc/misc
- ln *.texi *.aux *.fns *.kys *.vrs ../../${tempdir}/doc/misc
- ln makefile.w32-in ../../${tempdir}/doc/misc
- ln gnus-news.el ../../${tempdir}/doc/misc
- test -f README && ln README ../../${tempdir}/doc/misc
- test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/misc
- ln ChangeLog ../../${tempdir}/doc/misc
- cp texinfo.tex ../../${tempdir}/doc/misc
- cd ../../${tempdir}/doc/misc
- rm -f \#*\# =* *~ core emacs-index* *.Z *.z xmail
- rm -f emacs.?? termcap.?? gdb.?? *.log *.toc *.dvi *.oaux)
-
-## FIXME book-spine.texinfo unused?
+ ln *.texi *.tex *.in makefile.w32-in gnus-news.el ChangeLog* ../../${tempdir}/doc/misc)
+
echo "Making links to \`doc/lispref'"
(cd doc/lispref
- ln *.texi *.aux *.fns *.kys *.vrs ../../${tempdir}/doc/lispref
+ ln *.texi *.in makefile.w32-in README ChangeLog* ../../${tempdir}/doc/lispref
ln *.txt *.el spellfile tindex.pl ../../${tempdir}/doc/lispref
- ln makefile.w32-in ../../${tempdir}/doc/lispref
- ln book-spine.texinfo two-volume.make ../../${tempdir}/doc/lispref
- test -f README && ln README ../../${tempdir}/doc/lispref
- test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/lispref
- ln ChangeLog ../../${tempdir}/doc/lispref
- cd ../../${tempdir}/doc/lispref
- rm -f \#*\# =* *~ core elisp-index* *.Z *.z xmail
- rm -f elisp.?? *.log *.toc *.dvi *.oaux)
+ ln two-volume.make ../../${tempdir}/doc/lispref)
echo "Making links to \`doc/lispintro'"
(cd doc/lispintro
- ln *.texi *.aux *.fns *.kys *.vrs *.eps *.pdf ../../${tempdir}/doc/lispintro
- ln makefile.w32-in ../../${tempdir}/doc/lispintro
- test -f README && ln README ../../${tempdir}/doc/lispintro
- test -f Makefile.in && ln Makefile.in ../../${tempdir}/doc/lispintro
- ln ChangeLog ../../${tempdir}/doc/lispintro
- cd ../../${tempdir}/doc/lispintro
- rm -f \#*\# =* *~ core *.Z *.z xmail
- rm -f emacs-lisp-intro.?? *.log *.toc *.dvi *.oaux)
+ ln *.texi *.in makefile.w32-in *.eps *.pdf ../../${tempdir}/doc/lispintro
+ ln README ChangeLog* ../../${tempdir}/doc/lispintro
+ cd ../../${tempdir}/doc/lispintro)
echo "Making links to \`doc/man'"
(cd doc/man
- ln *.1 ../../${tempdir}/doc/man
- ln ChangeLog ../../${tempdir}/doc/man)
+ ln ChangeLog* *.1 ../../${tempdir}/doc/man
+ cd ../../${tempdir}/doc/man)
### It would be nice if they could all be symlinks to top-level copy, but
### you're not supposed to have any symlinks in distribution tar files.
@@ -735,25 +509,28 @@ if [ "${newer}" ]; then
find ${tempparent} \( -name '*.elc' -o ! -newer ${newer} \) -exec rm -f {} \;
fi
+## Don't distribute backups, autosaves, etc.
+echo "Removing unwanted files"
+find ${tempparent} \( -name '*~' -o -name '#*#' -o -name '.*ignore' -o -name '=*' -o -name 'TAGS' \) -exec rm -f {} \;
+
if [ "${make_tar}" = yes ]; then
- if [ "${default_gzip}" = "" ]; then
- echo "Looking for gzip"
- temppath=`echo $PATH | sed 's/^:/.:/
- s/::/:.:/g
- s/:$/:./
- s/:/ /g'`
- default_gzip=`(
- for dir in ${temppath}; do
- if [ -f ${dir}/gzip ]; then echo 'gzip --best'; exit 0; fi
- done
- echo compress
- )`
+ echo "Looking for $default_gzip"
+ found=0
+ temppath=`echo $PATH | sed -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \
+ -e 's/:/ /g'`
+ for dir in ${temppath}; do
+ [ -x ${dir}/$default_gzip ] || continue
+ found=1; break
+ done
+ if [ "$found" = "0" ]; then
+ echo "WARNING: \`$default_gzip' not found, will not compress" >&2
+ default_gzip=cat
fi
case "${default_gzip}" in
- bzip2) gzip_extension=.bz2 ;;
- compress* ) gzip_extension=.Z ;;
- lzma) gzip_extension=.lzma ;;
- * ) gzip_extension=.gz ;;
+ bzip2) gzip_extension=.bz2 ;;
+ lzma) gzip_extension=.lzma ;;
+ gzip) gzip_extension=.gz ; default_gzip="gzip --best";;
+ *) gzip_extension= ;;
esac
echo "Creating tar file"
(cd ${tempparent} ; tar cvf - ${emacsname} ) \
@@ -761,13 +538,9 @@ if [ "${make_tar}" = yes ]; then
> ${emacsname}.tar${gzip_extension}
fi
-if [ "${clean_up}" = yes ]; then
- echo "Cleaning up the staging directory"
- rm -rf ${tempparent}
-else
+if [ "${clean_up}" != yes ]; then
(cd ${tempparent}; mv ${emacsname} ..)
rm -rf ${tempparent}
fi
-# arch-tag: 26e3eb50-a394-4ab2-82b2-d8e5af500de7
### make-dist ends here
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 49d49fb2487..e0b3a965402 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,21 @@
+2010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * sed1v2.inp (PROFILING_LDFLAGS):
+ * sed3v2.inp (PROFILING_LDFLAGS): Remove, not defined anymore.
+
+2010-10-09 Glenn Morris <rgm@gnu.org>
+
+ * mainmake.v2 (install): Remove b2m.
+
+2010-10-02 Eli Zaretskii <eliz@gnu.org>
+
+ * mainmake.v2 (TAGS tags): Use `find' to filter out loaddefs
+ files. Make all file names in TAGS tables absolute.
+
+2010-10-01 Eli Zaretskii <eliz@gnu.org>
+
+ * sed1v2.inp (LIBGNUTLS_LIBS, LIBGNUTLS_CFLAGS): Edit to empty.
+
2010-09-22 Eli Zaretskii <eliz@gnu.org>
* sed1v2.inp (LINKER): Don't edit, variable was removed from
@@ -78,10 +96,10 @@
instead of lisp/version.el (see 2010-05-15T21:11:37Z!raeburn@raeburn.org).
* sed1v2.inp (MKDEPDIR): Edit to empty.
- Delete lines in rules that invoke $(MKDEPDIR).
- Fix editing rules that begin with "cd ../lisp".
- Edit out sh if-then-else-fi constructs that test ${CANNOT_DUMP}.
- Edit out "|| exit ;\" constructs in emacs${EXEEXT} rule.
+ Delete lines in rules that invoke $(MKDEPDIR). Fix editing rules
+ that begin with "cd ../lisp". Edit out sh if-then-else-fi
+ constructs that test ${CANNOT_DUMP}. Edit out "|| exit ;\"
+ constructs in emacs${EXEEXT} rule.
2010-06-03 Dan Nicolaescu <dann@ics.uci.edu>
diff --git a/msdos/mainmake.v2 b/msdos/mainmake.v2
index 79bd827d8c6..8965f746a6d 100644
--- a/msdos/mainmake.v2
+++ b/msdos/mainmake.v2
@@ -129,7 +129,7 @@ emacs misc lispref lispintro: FRC
install: all
if not exist bin\nul md bin
cd lib-src
- command.com /c >/dev/null for %p in (hexl etags ctags b2m ebrowse) do\
+ command.com /c >/dev/null for %p in (hexl etags ctags ebrowse) do\
if exist %p.exe mv -f %p.exe ../bin
if exist fns.el update fns.el ../bin/fns.el
cd ..
@@ -147,16 +147,21 @@ FRC:
# We cannot use [a-zA-Z]* like the mainline distribution does, because
# that causes all file names to be returned in upper-case on DOS...
+# Must use `find' to filter out loaddefs files; ignore errors if `find'
+# is not available or is an MS `find'.
+# The "cd $(CURDIR)" gork is for when `find' fails and leaves us inside
+# `lisp' or one of its subdirectories.
TAGS tags: lib-src FRC
cd lib-src
if exist etags.exe mv -f etags.exe ../bin
cd ..
- cd lisp
- ../bin/etags .../*.el
- cd ..
+ - find $(CURDIR)/lisp -iname "*.el" -a -! -( -iname "*loaddefs.el" -o -iname "ldefs-boot.el" -) | ./bin/etags -o lisp/TAGS -
+ cd $(CURDIR)
cd src
../bin/etags --include=../lisp/TAGS \
- '--regex=/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' *.c *.h s/msdos.h m/intel386.h
+ --regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
+ $(CURDIR)/src/*.c $(CURDIR)/src/*.h \
+ $(CURDIR)/src/s/msdos.h $(CURDIR)/src/m/intel386.h
cd ..
./bin/etags --include=src/TAGS
@@ -282,4 +287,3 @@ bootstrap: bootstrap-clean FRC
command.com /e:2048 /c config msdos
$(MAKE) $(MFLAGS) info all
-# arch-tag: 6fee5130-4c53-46c6-93d3-d0ea852298b9
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index 58201c155bf..3c1770d1ba1 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -43,7 +43,6 @@ s/\.h\.in/.h-in/
/^C_SWITCH_X_SITE *=/s/@C_SWITCH_X_SITE@//
/^C_WARNINGS_SWITCH *=/s/@C_WARNINGS_SWITCH@//
/^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
-/^PROFILING_LDFLAGS *=/s/@PROFILING_LDFLAGS@//
#/^LD_SWITCH_X_SITE *=/s/@LD_SWITCH_X_SITE@//
/^LD_SWITCH_SYSTEM_TEMACS *=/s/@LD_SWITCH_SYSTEM_TEMACS@//
/^LD_SWITCH_X_SITE_AUX *=/s/@LD_SWITCH_X_SITE_AUX@//
@@ -104,6 +103,8 @@ s/\.h\.in/.h-in/
/^GNU_OBJC_CFLAGS*=/s/@GNU_OBJC_CFLAGS@//
/^LIBRESOLV *=/s/@LIBRESOLV@//
/^LIBSELINUX_LIBS *=/s/@LIBSELINUX_LIBS@//
+/^LIBGNUTLS_LIBS *=/s/@[^@\n]*@//
+/^LIBGNUTLS_CFLAGS *=/s/@[^@\n]*@//
/^GETLOADAVG_LIBS *=/s/@[^@\n]*@//
/^START_FILES *=/s/@START_FILES@//
/^OTHER_FILES *=/s/@OTHER_FILES@//
diff --git a/msdos/sed3v2.inp b/msdos/sed3v2.inp
index 9e2e3ebd23f..4a19d36a581 100644
--- a/msdos/sed3v2.inp
+++ b/msdos/sed3v2.inp
@@ -41,7 +41,6 @@
/^C_SWITCH_MACHINE *=/s/@C_SWITCH_MACHINE@//
/^C_WARNINGS_SWITCH *=/s/@C_WARNINGS_SWITCH@//
/^PROFILING_CFLAGS *=/s/@PROFILING_CFLAGS@//
-/^PROFILING_LDFLAGS *=/s/@PROFILING_LDFLAGS@//
/^LOADLIBES *=/s!=.*$!=!
/^ALLOCA *=/s!@ALLOCA@!!
/^EXEEXT *=/s!@EXEEXT@!!
diff --git a/nextstep/AUTHORS b/nextstep/AUTHORS
deleted file mode 100644
index 52fc91f78fa..00000000000
--- a/nextstep/AUTHORS
+++ /dev/null
@@ -1,59 +0,0 @@
-In addition to the folks listed in ../AUTHORS responsible for GNU Emacs itself,
-the NeXTstep port owes to the following people:
-
-Carl Edman
- original author and maintainer, mainly UI
-Michael Brouwer
- heavy contributor, input handling and other areas
-Christian Limpach
- help / maintenance on NeXTstep
-Scott Bender
- OpenStep, Rhapsody ports
-Christophe de Dinechin
- MacOS X port
-Adrian Robert
- GNUstep port, update Emacs 20 -> 21+
-
-Joe Reiss
- popup menu, dialog boxes; icons
-Andrew Athan
- font panel integration
-Scott Byer
- improved rendering code
-Scott Hess
- keyboard handling suggestions
-
-Rahul Abrol
- "hide others" patch
-Adam Ratcliffe
- preferences panel documentation
-Peter Dyballa
- assistance with non-ASCII rendering and keyboard handling
-David M. Cooke
- fix to XPM crash bug
-Carsten Bormann
- initial patch and assistance getting dired working for non-ASCII filenames
-Andrew Moore
- assistance on ns-mark-nav extension
-
-The GNUstep port was made possible through the assistance of Adam
-Fedor, Fred Kiefer, M. Uli Klusterer, Alexander Malmberg, Jonas
-Matton, and Riccardo Mottola. Leigh Smith maintained the SourceForge
-project for a period.
-
-Suggestions from Darcy Brockbank, Timothy Bissell, Scott Byer, David
-Griffiths, Scott Hess, Eberhard Mandler, John C. Randolph, and Bradley
-Taylor all helped things along at one point or another. Axel Seibert
-<seiberta@@informatik.tu-muenchen.de> and Paul J. Sanchez
-<paul@@whimsy.umsl.edu> offered their time and machines to make a
-binary release possible.
-
-We would also like to thank a number of people who kept up the
-constant supply of bug reports, suggested features and praise: Hardy
-Mayer, Gisli Ottarsson, Anthony Heading, David Bau, Jamie Zawinski,
-Martin Moncrieffe, Simson L. Garfinkel, Richard Stallman, Stephen
-Anderson, Ivo Welch, Magnus Nordborg, Tom Epperly, Andreas Koenig,
-Yves Arrouye, Anil Somayaji, Gregor Hoffleit; and the few hundred
-other people on the mailing list from whom we didn't hear much, but
-the presence of which assured us that maybe this project was actually
-worth doing.
diff --git a/nextstep/ChangeLog b/nextstep/ChangeLog
index 17df993cab7..ac060bbcee4 100644
--- a/nextstep/ChangeLog
+++ b/nextstep/ChangeLog
@@ -1,3 +1,15 @@
+2010-10-13 Glenn Morris <rgm@gnu.org>
+
+ * README: Remove information duplicated in AUTHORS.
+ Move historical information to new file ../etc/NEXTSTEP.
+ * AUTHORS: Merge into ./etc/NEXTSTEP and remove file.
+
+2010-10-12 Glenn Morris <rgm@gnu.org>
+
+ * FOR-RELEASE: Merge into ../etc/TODO.
+
+ * DEV-NOTES: Move to ../admin/notes/nextstep.
+
2010-05-07 Chong Yidong <cyd@stupidchicken.com>
* Version 23.2 released.
@@ -176,10 +188,9 @@
;; Local Variables:
;; coding: utf-8
-;; add-log-time-zone-rule: t
;; End:
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -195,5 +206,3 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
-
-;; arch-tag: 963ee08e-8e76-485f-9cfb-65a4333a073c
diff --git a/nextstep/FOR-RELEASE b/nextstep/FOR-RELEASE
deleted file mode 100644
index 0f8a6534ad0..00000000000
--- a/nextstep/FOR-RELEASE
+++ /dev/null
@@ -1,38 +0,0 @@
--*- outline -*-
-
-
-* CURSOR BUGS:
-
-** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back up
- on top of all others
-
-
-* OTHER BUGS
-
-** free_frame_resources, face colors
-
-** numeric keysetting bug
-
-** http://debbugs.gnu.org/ns
-
-
-* MAC-RELATED:
-
-** open file:/// URLs
-
-** put frame autopositioning into C code somewhere -- if loc = same, offset
-
-** automap ctrl-mouse-1 to mouse-3
-
-** deal with Finder aliases somehow
-
-** Ctrl-F2 won't pull up menus
-
-
-* OTHER / LOW PRIORITY:
-
-** better recog of unicode scripts / Greek / composition
-
-** Exec-dump not working on GNUstep (so slow startup).
-
-** undo for color-drag face customization
diff --git a/nextstep/README b/nextstep/README
index 74c00fbfbd5..1ff2a4dd921 100644
--- a/nextstep/README
+++ b/nextstep/README
@@ -10,19 +10,6 @@ Cocoa libraries.
See the INSTALL file in this directory for compilation instructions.
-Those primarily responsible for the port were, in chronological order:
-Michael Brouwer, Carl Edman, Christian Limpach, Scott Bender,
-Christophe de Dinechin, and Adrian Robert.
-
-Peter Dyballa assisted in a variety of ways to improve text rendering
-and keyboard handling, Adam Ratcliffe documented the Preferences
-panel, David M. Cooke contributed fixes to XPM handling, and Carsten
-Bormann helped get dired working for non-ASCII filenames. People who
-provided additional assistance include Adam Fedor, Fred Kiefer, M. Uli
-Klusterer, Alexander Malmberg, Jonas Matton, and Riccardo Mottola.
-See AUTHORS file and "Release History" below for more information.
-
-
Requirements
------------
MacOS X 10.4 or later
@@ -33,233 +20,6 @@ GNUstep "Startup 0.23" or later
Tested on GNU/Linux, should work on other systems, perhaps with minor
build tweaking.
-
-Background
-----------
-Within Emacs, the port and its code are referred to using the term
-"Nextstep", despite the fact that no system or API has been released
-under this name in more than 10 years. Here's some background on why:
-
-NeXT, Inc. introduced the NeXTstep API with its computer and operating
-system in the late 1980's. Later on, in collaboration with Sun, this
-API was published as a specification called OpenStep. The GNUstep
-project started in the early 1990's to provide a free implementation
-of this API. Later on, Apple bought NeXT (some would say "NeXT bought
-Apple") and made OpenStep the basis of OS X, calling the API "Cocoa".
-Since then, Cocoa has evolved beyond the OpenStep specification, and
-GNUstep has followed it.
-
-Thus, calling this port "OpenStep" is not technically accurate, and in
-the absence of any other determinant, we are using the term
-"Nextstep", both because it signifies the original inspiration that
-created these APIs, and because all of the classes and functions still
-begin with the letters "NS".
-
-(See http://en.wikipedia.org/wiki/Nextstep)
-
-This Emacs port was first released in the early 1990's on the NeXT
-computer, and was successively updated to OpenStep, Rhapsody, OS X,
-and then finally GNUstep, tracking GNU emacs core releases in the
-meantime.
-
-
-Release History
----------------
-
-1990-1992 1.0-3.0 (?) Michael Brouwer's socket/terminal communication
- based version (GUI ran as a separate process.)
-
-1993/10/25 3.0.1 Last (?) release of Brouwer version. Supports
- NeXTstep 3.x and below.
-
-1994/04/24 4.0 Carl Edman's version using direct API following
- the X-Windows port. NeXTstep 3.x only.
-
-1995/06/15 4.1 Second (and last) Carl Edman release, based on
- Emacs 19.28.
-
-1996/07/28 4.2 First Christian Limpach release, based on
- Emacs 19.29.
-
-?? 5.0 ??
-
-1997/12/?? 6.0b1 Ported to OpenStep by Scott Bender. Updated
- to Emacs 20.2.
-
-?? 6.0b2 (?) Scott Bender: ported to Rhapsody.
-
-1999/05/?? 6.0b3 Scott Bender: "OS X Server", Emacs 20.3.
-
-2001/06/25 7.0 Ported to MacOS X (10.1) by Christophe de
- Dinechin. Release based on Emacs 20.7. Hosting
- moved to SourceForge.
-
-2002/01/03 7.0.1 Bug fixes.
-
-2002/08/27 7.0.2 Jaguar (OS X 10.2) support. Added an autoconf
- option for sys_nerr being in stdio. Added
- libncurses to the build libraries. Fixed a
- problem with ns-alternate-is-meta. Changed the
- icon color to blue, since Jaguar is yellow.
-
-2004/10/07 8.0-pre1 Ported to GNUstep by Adrian Robert.
-
-2004/11/04 8.0-pre2 Restored functionality on OS X (menu code
- cleanup). Improved scrollbar handling and
- paste from other applications. File icons
- obtained properly from NSWorkspace. Dropped
- Gorm and Nib files. Background refresh bug
- fixed (in GNUstep). Various small fixes and
- code cleanups. Now starts up under Art.
-
-2005/01/27 8.0-pre3 Bold and italic faces supported. Cursor and
- mouse highlighting rendering bugs
- fixed. Drag/drop and cut/paste interaction
- w/external apps fixed. File load/save panels
- available. Stability and rendering speed
- improvements. Some ObjC and VC mode bugs fixed.
-
-2005/02/27 8.0-rc1 Dynamic path detection at startup so Emacs.app
- can be moved anywhere. Added binary packages
- and simplified source installation to running
- two scripts. Thorough cleanup of menu code;
- now fully functional. Fixed all detected
- memory leaks. Minor frame focus and title
- bugs fixed.
-
-2005/03/30 8.0-rc2 "Configure" info directory now uses dynamic
- path setting, so info files can go under .app.
- Improved select() handling and PTY fixes so
- shell mode and tramp run smoothly.
- Significant rendering optimizations under
- GNUstep, and now works under Art backend.
- Non-Latin text rendering works (but not
- fontsets), and LEIM is bundled. UTF8 is used
- for clipboard interaction.
- Arrow cursor now used on scrollbar.
- objc-mode and tramp now bundled in site-lisp.
-
-2005/05/30 8.0-rc3 Fixed bug with parsing of "easymenu" menus.
- Many problems with modes such as SLIME, MatLab,
- and Planner go away. Improved scrollbar
- handling and rendering speed. Color panel
- and other bug fixes. mac-fix-env utility.
- Font handling improvements (OS X 10.3, 10.4):
- - heed 'GSFontAntiAlias' default
- - heed system antialiasing threshold
- - added 'UseQuickdrawSmoothing' default to
- invoke less heavy antialiasing
-
-2005/07/05 8.0-rc4 Added a Preferences panel. Cleaned up
- rendering for synthetic italic fonts. Further
- improved menu parsing. Use system highlight
- color. Added previous- and next-mark history
- navigation commmands bound to M-p,M-n.
- Miscellaneous bug fixes.
-
-2005/08/04 8.0-rc5 All internal string handling changed to UTF-8.
- This means menu items, color and color list
- names, and a few other things will now display
- properly. It does NOT mean UTF-8 filenames
- are displayed correctly in the minibuffer.
- Also relating to UTF-8, contents of files
- using this coding can now be displayed (though
- not auto-recognized; add extensions to your
- default coding alist). Limited mac-roman
- support was also added (also sans recognition).
- Certain characters are not displayed properly
- due to a translation problem. (UTF-8 based on
- work by Otfried Cheong; mac-roman from
- emacs-21.) Partial support for "dead-key"
- handling now added. Transparency (e.g., M-x
- set-background-color ARGB88FFFFFF) improved:
- only the background is made transparent.
- Cursor drawing glitches fixed. Preferences
- handling improved. Fixed some portability
- problems on Tiger and Puma.
-
-2005/09/12 8.0 Bundled ispell on OS X. Minor bug fixes and
- stability improvements. Compiles under gcc-4.
-
-2005/09/26 8.0.1 Correct clipped rendering for synthetic
- italics. Include the info directory.
- Fix grabenv. Bundle whitespace package.
-
-2005/10/27 8.0.2 Correct rendering for wide characters during
- cursor movement. Fix bungled hack in ispell
- bundling.
-
-2005/11/05 9.0-pre1 Updated to latest Emacs CVS code on unicode-2
- branch (proposed to be released 2006/2007 as
- Emacs 23).
-
-2005/11/11 9.0-pre2 Fix crashes for deiconifying and loading
- certain images. Improve vertical font metrics
- (fixes inaccurate page up/down, window size,
- and partial lines). Support better remapping
- of Alt/Opt and remapping of Command. More
- insistent defaulting of scrollbar to right.
- Modest improvements to build process.
-
-2006/04/22 9.0-pre2a Stopgap interim release to sync w/latest
- unicode-2 CVS. Includes XPM and partial
- toolbar support.
-
-2006/06/08 9.0-pre3 Major upgrade to keyboard handling:
- system-selected compositional input methods
- should now work, as well as more keys /
- keyboards. XPM, toolbar, and tooltip support.
- Some improvements to scrollbars, zoom, italic
- rendering, pasting, Color panel. Added function
- ns-set-background-alpha to work around
- inability to customize with numeric colors.
-
-2006/12/24 9.0-rc1 Reworked font handling and text rendering to
- use Kenichi Handa's new font back-end system.
- Font sets are now supported and automatically
- created when a font is selected. Added recent
- X11 colors to Emacs.clr (remove
- ~/Library/Colors/Emacs.clr to pick up). Added
- ns-option-modifier, ns-control-modifier,
- ns-function-modifier customization variables.
- Update menus to Emacs 21+ conventions. Right
- mouse button now generates mouse-3 events.
- Various bug fixes and rendering improvements.
-
-2007/09/10 9.0-rc2 Improve menubar, popup menu, and scrollbar
- behavior, let accented char entry work in
- isearch, follow system keymap for shortcut
- keys, fix border and box drawing, remove
- glitches in modeline drawing, support
- overstrike for unavailable bold fonts, fix XPM
- related crasher bugs. Incremental font
- metrics caching and other performance
- improvements. Shared-lisp builds now possible.
-
-2007/09/20 9.0-rc2a Interim release. New features: composed
- character display, colored fringe bitmaps,
- colored relief drawing, dynamic resizing,
- Bug fixes: popup menu position and selection,
- font width calculation, face color adaptation
- to background, submenu keyboard navigation.
- NOT TESTED ON GNUSTEP.
-
-2007/11/19 9.0-rc3 Integrated the multi-TTY functionality from
- emacs core (however, mixed TTY and GUI
- sessions are not working yet). Support 10.5.
- Give site-lisp load precedence over lisp and
- add a compile option to prefer an additional
- directory, use miniaturized miniwindow images
- in some cases, rename cursor types for
- consistency w/other emacs terms, improved font
- selection for symbol scripts.
- Bug fixes: fringe and bitmap, frame deletion,
- resizing, cursor blink, workspace open-file,
- image backgrounds, toolbar item enablement,
- context menu positioning.
-
-2008/07/15 (none) Merge to GNU Emacs CVS trunk.
-
This file is part of GNU Emacs.
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 03e4546c36c..44d937e4db9 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,19 @@
+2010-10-13 Juanma Barranquero <lekktu@gmail.com>
+
+ * INSTALL: Refer to `dynamic-library-alist'.
+
+2010-10-06 Juanma Barranquero <lekktu@gmail.com>
+
+ * INSTALL: Add note about problematic characters passed to configure.
+
+2010-10-01 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (frc, TAGS, TAGS-gmake, TAGS-nmake): New targets.
+ emacs-src.tags: New file.
+
+ * gmake.defs: Add a comment with a single quote to fix
+ fontification. (Bug#7102)
+
2010-09-29 Eli Zaretskii <eliz@gnu.org>
* configure.bat: Fix the condition for copying paths.h into
diff --git a/nt/INSTALL b/nt/INSTALL
index 8af8e3020de..357cc8d0a8e 100644
--- a/nt/INSTALL
+++ b/nt/INSTALL
@@ -221,6 +221,14 @@
absolutely sure the produced binaries will never need to be run under
a debugger.
+ Because of limitations of the stock Windows command shell, certain
+ characters (quotes, backslashes and equal signs) can be problematic
+ and should not be used in arguments to configure. That means that
+ forward slashes must be used in paths passed to the compiler and
+ linker via the --cflags and --ldflags options, and that it is
+ currently not possible to pass a macro like -DFOO=BAR (though -DFOO
+ is perfectly valid).
+
N.B. It is normal to see a few error messages output while configure
is running, when gcc support is being tested. These cannot be
suppressed because of limitations in the Windows 9X command.com shell.
@@ -258,7 +266,7 @@
library is not an error; the associated image format will simply be
unavailable. Note that once Emacs has determined that a library can
not be found, there's no way to force it to try again, other than
- restarting. See the variable `image-library-alist' to configure the
+ restarting. See the variable `dynamic-library-alist' to configure the
expected names of the libraries.
Some image libraries have dependencies on one another, or on zlib.
diff --git a/nt/emacs-src.tags b/nt/emacs-src.tags
new file mode 100644
index 00000000000..8c187133454
--- /dev/null
+++ b/nt/emacs-src.tags
@@ -0,0 +1,6 @@
+ This file defines the regular expressions for etags to look for
+ in the src directory. It is used by the w32 build to work around
+ the annoyances of quoting command-line arguments with various
+ w32 shell.
+
+/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/
diff --git a/nt/gmake.defs b/nt/gmake.defs
index 491e6512066..2265841efa3 100644
--- a/nt/gmake.defs
+++ b/nt/gmake.defs
@@ -96,6 +96,7 @@ THISDIR = .
ifdef USING_SH
sh_output := $(shell echo [Please ignore a syntax error on the next line - it is intentional] 1>&2)
sh_output := $(shell echo foo")
+# This single quote " is to fix fintification due to previous line
ifeq "$(sh_output)" ""
NEW_CYGWIN = 1
endif
diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in
index b0f5edb28a2..f328cd6a9f9 100644
--- a/nt/makefile.w32-in
+++ b/nt/makefile.w32-in
@@ -417,3 +417,16 @@ maintainer-clean-other-dirs-gmake:
realclean: cleanall
- $(DEL_TREE) ../bin
+
+TAGS: TAGS-$(MAKETYPE)
+
+frc:
+TAGS-gmake: frc
+ ../lib-src/$(BLD)/etags $(CURDIR)/*.c
+ $(MAKE) $(MFLAGS) -C ../src TAGS TAGS-LISP
+ $(MAKE) $(MFLAGS) -C ../lib-src TAGS
+
+TAGS-nmake:
+ echo This target is not supported with NMake
+
+.PHONY: frc
diff --git a/src/ChangeLog.2 b/src/ChangeLog.2
index f087802e27d..0397478f09d 100644
--- a/src/ChangeLog.2
+++ b/src/ChangeLog.2
@@ -1563,10 +1563,10 @@
1987-04-27 Richard Mlynarik (mly@prep)
* fileio.c (APOLLO from lnz):
- Fcopy_file, Fset_file_modes: Don't use un*x modes if
+ (Fcopy_file, Fset_file_modes): Don't use un*x modes if
env var USE_DOMAIN_ACLS is set.
- Fset_file_modes: utimes fix.
- Finsert_file_contents: Must do fstat after open for Apollo.
+ (Fset_file_modes): utimes fix.
+ (Finsert_file_contents): Must do fstat after open for Apollo.
* emacs.c (main): (APOLLO from lnz):
Don't use un*x modes if env var USE_DOMAIN_ACLS set.
@@ -2073,7 +2073,7 @@
* xfns.c (Fx_get_default): Add (unsigned char *) cast.
- * window.c: typo.
+ * window.c: Typo.
1987-02-09 Richard M. Stallman (rms@prep)
diff --git a/src/ChangeLog.3 b/src/ChangeLog.3
index e3c5ab70f66..e3ba2b37ccd 100644
--- a/src/ChangeLog.3
+++ b/src/ChangeLog.3
@@ -5146,7 +5146,7 @@
Change mouse movement events to be arranged like click events.
(format_modifiers): Note that the click modifier has no
written representation.
- (modifier_names, modifer_symbols): New variables, used to
+ (modifier_names, modifier_symbols): New variables, used to
create the Qevent_symbol_elements property.
(modify_event_symbol): Change the format of the modified
symbol cache; there are too many modifier bits now to use a
@@ -5154,8 +5154,8 @@
Document the format of the cache.
Put the Qevent_symbol_elements property on each new symbol,
instead of a Qevent_unmodified property.
- (symbols_of_keyboard): Put Qevent_symbol_elements properties on
- the symbols specified in head_table, not Qevent_unmodifed properties.
+ (symbols_of_keyboard): Put Qevent_symbol_elements properties on the
+ symbols specified in head_table, not Qevent_unmodified properties.
Initialize and staticpro modifier_symbols, and staticpro the
window elements of button_down_location.
@@ -11207,7 +11207,7 @@
events to send the function key number instead of a symbol.
* keyboard.c (modify_event_symbol): Re-arranged to work well
with function key/mouse button numbers instead of symbols.
- And if (MODIFIERS & up_modifer), prepend "U-" to the name of the
+ And if (MODIFIERS & up_modifier), prepend "U-" to the name of the
symbol being constructed.
(make_lispy_event): Use the new modify_event_symbol.
diff --git a/src/ChangeLog.7 b/src/ChangeLog.7
index 7421aba4403..b5927108808 100644
--- a/src/ChangeLog.7
+++ b/src/ChangeLog.7
@@ -491,7 +491,7 @@
* xselect.c (selection_data_to_lisp_data): Set
Vlast_coding_system_used.
- (lisp_data_to_selection_data): Likewize.
+ (lisp_data_to_selection_data): Likesize.
1998-07-07 Richard Stallman <rms@psilocin.ai.mit.edu>
@@ -502,7 +502,7 @@
* editfns.c (Fformat): Replace explicit numeric constants with
proper macros.
- * fns.c (concat): Likewize.
+ * fns.c (concat): Likewise.
1998-07-06 Kenichi Handa <handa@etl.go.jp>
diff --git a/src/ChangeLog.8 b/src/ChangeLog.8
index 5033a055576..9c38b29ff32 100644
--- a/src/ChangeLog.8
+++ b/src/ChangeLog.8
@@ -3686,7 +3686,7 @@
* lread.c (read_escape): For Control modifier, pay attention to
multibyte character.
(read1): Likewise. Signal error or a multibyte character which
- has a modifer bit. Check validity of Shift modifer.
+ has a modifier bit. Check validity of Shift modifier.
* charset.c (non_ascii_char_to_string): Handle modifier bits as
the same as Lisp reader.
diff --git a/src/ChangeLog.trunk b/src/ChangeLog.trunk
index de4ba68bdc0..567bf2868e7 100644
--- a/src/ChangeLog.trunk
+++ b/src/ChangeLog.trunk
@@ -1,3 +1,386 @@
+2010-10-15 Eli Zaretskii <eliz@gnu.org>
+
+ * image.c (tiff_load): Cast 3rd argument to avoid compiler warning.
+
+2010-10-15 Tassilo Horn <tassilo@member.fsf.org>
+
+ * Makefile.in (really-oldXMenu): Fix typo in variable name that
+ made building the X menu fail.
+ (really-oldXMenu): Fix my previous fix.
+
+2010-10-14 Damyan Pepper <damyanp@gmail.com>
+
+ Fix handling of font properties on Windows (bug#6303).
+ * font.c (font_filter_properties): New function, refactored from
+ ftfont_filter_properties.
+ * font.h (font_filter_properties): Declare.
+ * ftfont.c (ftfont_filter_properties): Use font_filter_properties.
+ * w32font.c (w32font_booleans, w32font_non_booleans): New variables.
+ (w32font_filter_properties): New function.
+ (w32font_driver): Add w32font_filter_properties.
+
+2010-10-14 Juanma Barranquero <lekktu@gmail.com>
+
+ * font.c (Ffont_variation_glyphs):
+ * ccl.c (Fccl_execute_on_string): Fix typo in docstring.
+
+2010-10-14 Juanma Barranquero <lekktu@gmail.com>
+
+ * w32fns.c (w32_wnd_proc, file_dialog_callback):
+ * w32font.c (w32_generic_family):
+ * w32inevt.c (key_event):
+ * w32menu.c (fill_in_menu):
+ * w32proc.c (reader_thread, w32_executable_type, compare_env)
+ (merge_and_sort_env, int_from_hex, enum_locale_fn, enum_codepage_fn):
+ * w32term.c (w32_read_socket): Make static.
+
+2010-10-13 Juanma Barranquero <lekktu@gmail.com>
+
+ * image.c (DEF_IMGLIB_FN): Add argument to adapt to strict
+ prototypes; all callers changed.
+
+2010-10-13 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in (TLIB2): Rename from TLIBW32.
+ (OBJ2): New macro.
+ (WIN32OBJ, FONTOBJ): Remove.
+ (OBJ1): Redistribute object files with OBJ2.
+ (LIBS, $(TEMACS)): Use TLIB2.
+ (make-buildobj-CMD, make-buildobj-SH): Use OBJ2.
+ ($(TLIB2), TAGS, TAGS-LISP, TAGS-gmake): Depend on OBJ2.
+
+2010-10-13 Juanma Barranquero <lekktu@gmail.com>
+
+ * emacs.c (Vdynamic_library_alist)
+ (syms_of_emacs) <dynamic-library-alist>: Move from image.c and rename.
+ Doc fix.
+
+ * lisp.h (Vdynamic_library_alist): Declare extern.
+
+ * image.c (Vimage_library_alist)
+ (syms_of_image) <image-library-alist>: Move to emacs.c and rename.
+ (lookup_image_type): Use Vdynamic_library_alist.
+ (Finit_image_library): Doc fix.
+
+2010-10-12 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * Makefile.in (lispsource, libsrc, etc, oldxmenudir, lwlibdir)
+ (lispdir): Remove trailing /, update all uses.
+
+2010-10-12 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (Qleft): Declare.
+ (ns_right_alternate_modifier): New variable
+ (NSRightAlternateKeyMask): New define.
+ (EV_MODIFIERS): Parse NSRightAlternateKeyMask if
+ ns_right_alternate_modifier isn't Qleft.
+ (keyDown): If ns_right_alternate_modifier isn't Qleft, use it
+ as emacs modifier for NSRightAlternateKeyMask.
+ (syms_of_nsterm): DEFVAR_LISP ns-right-alternate-modifier.
+
+2010-10-10 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnutls.c (emacs_gnutls_write): If we're trying to write before
+ gnutls is ready, return EAGAIN as the errno.
+
+2010-10-10 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * vm-limit.c:
+ * unexhp9k800.c:
+ * unexelf.c:
+ * unexaix.c:
+ * termcap.c: Remove #ifdef emacs / #ifndef emacs code, unused.
+
+ * Makefile.in (temacs): Use $(ALL_CFLAGS) on the link line.
+ (PROFILING_LDFLAGS): Remove, not needed anymore.
+
+ * Makefile.in: Use $(...) everywhere instead of ${...}
+ (CRT_DIR): Move near potential user.
+ (START_FILE): Move near CRT_DIR, it might use it.
+
+ * sysdep.c (LPASS8): Remove, unused.
+ (emacs_ospeed): Change from being a global to a local in the only
+ user: init_baud_rate.
+
+2010-10-09 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnutls.c (syms_of_gnutls): All the bootprops are keywords.
+ (emacs_gnutls_write): Remove the debuggin fsync call.
+ (emacs_gnutls_read): Return -1 if we got an error from
+ gnutls_read. This allows us to actually read lots of data from
+ the GnuTLS stream.
+ (emacs_gnutls_write): Check for GNUTLS_E_AGAIN and not EINTR.
+ According to the documentation, this is correct, and it seems to
+ make things work.
+
+2010-10-09 Chong Yidong <cyd@stupidchicken.com>
+
+ * xterm.c (x_draw_relief_rect): Clear corner pixels.
+
+2010-10-08 Michael Albinus <michael.albinus@gmx.de>
+
+ * keyboard.c: Revert last change; it was not intended to be
+ synchronized with the trunk.
+
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (complement_process_encoding_system): Fix previous change.
+
+2010-10-08 Michael Albinus <michael.albinus@gmx.de>
+
+ * dbusbind.c (syms_of_dbusbind): Move putenv call ...
+ (Fdbus_init_bus): ... here. (Bug#7113)
+
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * buffer.c (before-change-functions, after-change-functions):
+ Three-year overdue doc fix following 2007-08-13 change.
+
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (coding_inherit_eol_type): If parent doesn't specify
+ eol-format, inherit from the system's default.
+ (complement_process_encoding_system): Make a new coding system
+ inherit the original eol-format.
+
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (complement_process_encoding_system): New function.
+
+ * coding.h (complement_process_encoding_system): Extern it.
+
+ * callproc.c (Fcall_process): Complement the coding system for
+ encoding arguments.
+ (Fcall_process_region): Complement the coding system for encoding
+ the input to the process.
+
+ * process.c (Fstart_process): Complement the coding system for
+ encoding arguments.
+ (send_process): Complement the coding system for encoding what
+ sent to the process.
+
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * xfont.c (xfont_open): Fix setting of font->average_width from
+ :avgwidth property (Bug#7123).
+
+2010-10-08 Michael Albinus <michael.albinus@gmx.de>
+
+ * dbusbind.c (syms_of_dbusbind): Use putenv instead of setenv, it
+ is more portable.
+
+ * keyboard.c (gobble_input): Move call of xd_read_queued_messages ...
+ (kbd_buffer_get_event): ... here. This is needed for cygwin, which
+ has not defined SIGIO.
+
+2010-10-08 Chong Yidong <cyd@stupidchicken.com>
+
+ * xterm.c (x_draw_relief_rect): If box width is larger than 1,
+ draw the outermost line using the black relief, for legibility.
+ Omit drawing the four corner pixels.
+
+2010-10-04 Chong Yidong <cyd@stupidchicken.com>
+
+ * keyboard.c (echo_prompt): Function moved into read_key_sequence.
+ (read_key_sequence): Inline echo_prompt.
+ (echo_dash): Add a dash only if key is continued (Bug#7137).
+
+2010-10-04 Dan Nicolaescu <dann@ics.uci.edu>
+
+ Remove O_RDONLY, O_WRONLY definitions, not needed.
+ * unexcoff.c:
+ * lread.c:
+ * fileio.c:
+ * doc.c:
+ * callproc.c:
+ * alloc.c:
+ * termcap.c: Remove O_RDONLY O_WRONLY definitions.
+
+2010-10-03 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnutls.h (GNUTLS_LOG2): Convenience macro.
+
+ * gnutls.c: Add property list symbol holders.
+ (emacs_gnutls_handshake): Clarify how sockets are passed to
+ GnuTLS.
+ (gnutls_log_function2): Convenience function using GNUTLS_LOG2.
+ (Fgnutls_boot): Get all parameters from a plist. Require trustfiles
+ and keyfiles to be a list of file names. Default to "NORMAL" for
+ the priority string. Improve logging.
+
+2010-10-03 Glenn Morris <rgm@gnu.org>
+
+ * fileio.c (Vdirectory_sep_char): Remove.
+
+2010-10-03 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * termhooks.h: Remove #ifdef CONSP.
+
+ * xterm.c (NO_INLINE, noinline): Move definitions to ../configure.in.
+
+ Include <fcntl.h> unconditionally.
+ * termcap.c:
+ * sysdep.c:
+ * lread.c:
+ * keyboard.c:
+ * filelock.c:
+ * fileio.c:
+ * doc.c:
+ * callproc.c:
+ * alloc.c: Remove include guards for <fcntl.h>, process.c already
+ does it.
+
+ * process.c: Do not include <sys/wait.h>, syswait.h does it.
+
+ * sysdep.c (flush_pending_output): Remove code, does not do
+ anything on any platform.
+
+ Remove unused code.
+ * sysdep.c (select_alarm, sys_select, read_input_waiting): Remove
+ select emulation, all systems support select.
+ (set_exclusive_use): Remove, the only user is in an #if 0 block.
+ * process.c (create_process): Remove #if 0 code.
+
+ Remove unused arguments for unexec.
+ The third one is never used, and the last two are always passed as zero.
+ * emacs.c (unexec): Add declaration.
+ (Fdump_emacs): Only pass the first two arguments to unexec.
+ Simplify #ifdef.
+ * unexw32.c (unexec):
+ * unexsol.c (unexec):
+ * unexhp9k800.c (unexec):
+ * unexcw.c (unexec): Remove the last 3 arguments, unused.
+ * unexelf.c (unexec): Remove the last 3 arguments, unused.
+ (find_section): Use const.
+ * unexmacosx.c (unexec): Remove the last 3 arguments, unused.
+ (unexec_error): Declare it NO_RETURN.
+ * unexcoff.c (make_hdr): Assume bss_start is always zero, remove
+ it as an argument, remove data_start and entry_address arguments, unused.
+ (unexec): Remove bss_start, data_start and
+ entry_address arguments.
+ * unexaix.c (make_hdr): Assume bss_start is always zero, remove
+ it as an argument, remove data_start and entry_address arguments, unused.
+ (unexec): Remove bss_start, data_start and
+ entry_address arguments.
+
+2010-10-03 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in (TAGS, TAGS-LISP, TAGS-gmake): Add $(FONTOBJ).
+
+ * gnutls.c (emacs_gnutls_handshake, gnutls_make_error)
+ (gnutls_emacs_global_init, gnutls_emacs_global_deinit): Make static.
+ (Fgnutls_get_initstage, Fgnutls_deinit, Fgnutls_boot, Fgnutls_bye):
+ Fix typos in docstrings.
+ (Fgnutls_error_fatalp, Fgnutls_error_string): Doc fixes.
+ (Fgnutls_errorp): Doc fix; use ERR for the argument name.
+
+2010-10-03 Chong Yidong <cyd@stupidchicken.com>
+
+ * keyboard.c (command_loop_1): Make sure the mark is really alive
+ before using it (Bug#7044).
+
+2010-10-02 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in (tags): Rename target to full-tags.
+
+2010-10-02 Eli Zaretskii <eliz@gnu.org>
+
+ * emacs.c (main): Remove !WINDOWSNT conditional.
+ (Fkill_emacs): Don't mention exemption on MS-Windows.
+
+2010-10-02 Glenn Morris <rgm@gnu.org>
+
+ * character.c (Fchar_bytes): Remove obsolete function.
+ (syms_of_character): Remove Schar_bytes.
+
+ * emacs.c (fatal_error_signal): Also run Fkill_emacs on SIGINT.
+ (main) [!WINDOWSNT]: Handle SIGINT with fatal_error_signal
+ in batch-mode.
+ (Fkill_emacs): Doc fix. Also run the hook in batch mode.
+ (kill-emacs-hook): Doc fix.
+
+2010-10-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * xml.c (Flibxml_parse_xml_region, Flibxml_parse_html_region)
+ (parse_region): Reworked to take regions instead of strings, and
+ renamed to reflect that these are the libxml functions.
+
+2010-10-01 Eli Zaretskii <eliz@gnu.org>
+
+ * term.c (init_tty) [DOS_NT]: Don't call Wcm_clear after setting
+ screen dimensions in tty->Wcm.
+
+ * xdisp.c (set_cursor_from_row): When the row is truncated and
+ point is outside the range of displayed characters, position the
+ cursor inside the scroll margin. (Bug#6349)
+
+2010-10-01 Dan Nicolaescu <dann@ics.uci.edu>
+
+ Do not include stdlib.h and string.h, config.h does it.
+ * xfont.c:
+ * w32term.c:
+ * w32reg.c:
+ * w32inevt.c:
+ * w32heap.c:
+ * w32console.c:
+ * w16select.c:
+ * unexsol.c:
+ * term.c:
+ * sound.c:
+ * scroll.c (m):
+ * gtkutil.c:
+ * font.c:
+ * filelock.c:
+ * fileio.c:
+ * dosfns.c:
+ * dbusbind.c:
+ * bidi.c:
+ * callproc.c:
+ * process.c:
+ * msdos.c:
+ * charset.c: Do not include stdlib.h and string.h, config.h does it.
+
+ * callproc.c (SIGCHLD): Remove conditional definition, syssignal.h defines it.
+
+ * process.c: Move #include <pty.h> earlier.
+ (SIGCHLD): Remove conditional definition, syssignal.h defines it.
+ (pty_name): Move definition later.
+
+ * nsselect.m (syms_of_nsselect):
+ * nsmenu.m (syms_of_nsmenu):
+ * nsfns.m (syms_of_nsfns):
+ * msdos.c (syms_of_msdos):
+
+ * image.c (syms_of_image):
+ * charset.c (syms_of_charset): Use intern_c_string instead of intern.
+
+ * point.h: Remove, unused.
+
+2010-10-01 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (TAGS, frc, TAGS-LISP, ../nt/TAGS, tags)
+ (TAGS-gmake, TAGS-nmake, TAGS-LISP-gmake, TAGS-LISP-nmake)
+ (nt-TAGS-gmake, nt-TAGS-nmake): New targets.
+
+2010-09-30 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * xml.c (parse_string): Use const.
+
+2010-09-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * eval.c (Fbacktrace): Don't overwrite print-level on exit. Also
+ only override Vprint_level if it isn't already bound, and increase
+ the level to 8 to produce more useful backtraces for bug reports.
+
+2010-09-30 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * Makefile.in: ecrt0.c does not exist anymore, do not mention it.
+
+2010-09-30 Juanma Barranquero <lekktu@gmail.com>
+
+ * w32console.c (vga_stdcolor_name): Remove unused function;
+ presumed dead after 2007-11-30T13:57:21Z!jasonr@gnu.org.
+
2010-09-29 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnutls.c (emacs_gnutls_handshake): Made into internal function.
diff --git a/src/Makefile.in b/src/Makefile.in
index 00706460d25..0d496aea73a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -46,28 +46,25 @@ version = @version@
# LIBS = @LIBS@
LIBOBJS = @LIBOBJS@
-lispsource = ${srcdir}/../lisp/
-libsrc = ../lib-src/
-etc = ../etc/
-oldXMenudir = ../oldXMenu/
-lwlibdir = ../lwlib/
-lispdir = ../lisp/
+lispsource = $(srcdir)/../lisp
+libsrc = ../lib-src
+etc = ../etc
+oldXMenudir = ../oldXMenu
+lwlibdir = ../lwlib
+lispdir = ../lisp
# Configuration files for .o files to depend on.
-M_FILE = ${srcdir}/@machfile@
-S_FILE = ${srcdir}/@opsysfile@
+M_FILE = $(srcdir)/@machfile@
+S_FILE = $(srcdir)/@opsysfile@
config_h = config.h $(M_FILE) $(S_FILE)
-bootstrap_exe = ${abs_builddir}/bootstrap-emacs${EXEEXT}
+bootstrap_exe = $(abs_builddir)/bootstrap-emacs$(EXEEXT)
## ns-app if HAVE_NS, else empty.
OTHER_FILES = @OTHER_FILES@
-CRT_DIR=@CRT_DIR@
-
## Flags to pass for profiling builds
PROFILING_CFLAGS = @PROFILING_CFLAGS@
-PROFILING_LDFLAGS = @PROFILING_LDFLAGS@
## Flags to pass to the compiler to enable build warnings
C_WARNINGS_SWITCH = @C_WARNINGS_SWITCH@
@@ -116,7 +113,7 @@ LD_SWITCH_SYSTEM_TEMACS=@LD_SWITCH_SYSTEM_TEMACS@
## Flags to pass to ld only for temacs.
TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_TEMACS)
-## $LDFLAGS $PROFILING_LDFLAGS, or empty if NS_IMPL_GNUSTEP (for some reason).
+## $LDFLAGS or empty if NS_IMPL_GNUSTEP (for some reason).
TEMACS_LDFLAGS2 = @TEMACS_LDFLAGS2@
## Some systems define this to request special libraries.
@@ -125,8 +122,10 @@ LIBS_SYSTEM=@LIBS_SYSTEM@
## Where to find libgcc.a, if using gcc and necessary.
LIB_GCC=@LIB_GCC@
+CRT_DIR=@CRT_DIR@
## May use $CRT_DIR.
LIB_STANDARD=@LIB_STANDARD@
+START_FILES = @START_FILES@
## -lm, or empty.
LIB_MATH=@LIB_MATH@
@@ -177,8 +176,8 @@ LIBXT_OTHER=@LIBXT_OTHER@
OLDXMENU_TARGET=@OLDXMENU_TARGET@
## If !HAVE_X11 || USE_GTK, empty.
-## Else if USE_X_TOOLKIT, ${lwlibdir}liblw.a.
-## Else ${oldXMenudir}libXMenu11.a.
+## Else if USE_X_TOOLKIT, $(lwlibdir)/liblw.a.
+## Else $(oldxmenudir)/libXMenu11.a.
## (Actually, rather than being empty, it is set to "nothing".
## It is never actually used for anything in this case.
## This is done because there is a rule with target $(OLDXMENU) below,
@@ -188,7 +187,7 @@ OLDXMENU_TARGET=@OLDXMENU_TARGET@
## The alternative would be to put that rule in a makefile fragment.)
OLDXMENU=@OLDXMENU@
-## If HAVE_X11 && !USE_GTK, ${OLDXMENU} ../src/${OLDXMENU}; else empty.
+## If HAVE_X11 && !USE_GTK, $(OLDXMENU) ../src/$(OLDXMENU); else empty.
## We use stamp-xmenu with these two deps to both ensure that lwlib
## gets remade based on its dependencies in its own makefile,
## and remake temacs if lwlib gets changed by this.
@@ -238,9 +237,9 @@ CYGWIN_OBJ=@CYGWIN_OBJ@
MSDOS_OBJ =
## w16select.o termcap.o if MSDOS && HAVE_X_WINDOWS.
MSDOS_X_OBJ =
-MSDOS_SUPPORT_REAL = ${lispsource}ls-lisp.elc ${lispsource}disp-table.elc \
- ${lispsource}dos-fns.elc ${lispsource}dos-w32.elc ${lispsource}dos-vars.elc \
- ${lispsource}term/internal.elc ${lispsource}term/pc-win.elc
+MSDOS_SUPPORT_REAL = $(lispsource)/ls-lisp.elc $(lispsource)/disp-table.elc \
+ $(lispsource)/dos-fns.elc $(lispsource)/dos-w32.elc $(lispsource)/dos-vars.elc \
+ $(lispsource)/term/internal.elc $(lispsource)/term/pc-win.elc
## $MSDOS_SUPPORT_REAL if MSDOS.
MSDOS_SUPPORT =
@@ -259,23 +258,23 @@ GNU_OBJC_CFLAGS=@GNU_OBJC_CFLAGS@
FONT_OBJ=@FONT_OBJ@
## Used if HAVE_MOUSE.
-REAL_MOUSE_SUPPORT=${lispsource}mouse.elc ${lispsource}select.elc \
- ${lispsource}scroll-bar.elc
+REAL_MOUSE_SUPPORT=$(lispsource)/mouse.elc $(lispsource)/select.elc \
+ $(lispsource)/scroll-bar.elc
## Used if HAVE_GPM && !HAVE_MOUSE
-GPM_MOUSE_SUPPORT=${lispsource}mouse.elc
+GPM_MOUSE_SUPPORT=$(lispsource)/mouse.elc
LIBGPM = @LIBGPM@
## Either of the two preceding options, or empty.
MOUSE_SUPPORT=@MOUSE_SUPPORT@
-## ${lispsource}tooltip.elc if HAVE_WINDOW_SYSTEM, else empty.
+## $(lispsource)/tooltip.elc if HAVE_WINDOW_SYSTEM, else empty.
TOOLTIP_SUPPORT=@TOOLTIP_SUPPORT@
-BASE_WINDOW_SUPPORT=${lispsource}fringe.elc ${lispsource}image.elc \
- ${lispsource}international/fontset.elc ${lispsource}dnd.elc \
- ${lispsource}tool-bar.elc ${lispsource}mwheel.elc
+BASE_WINDOW_SUPPORT=$(lispsource)/fringe.elc $(lispsource)/image.elc \
+ $(lispsource)/international/fontset.elc $(lispsource)/dnd.elc \
+ $(lispsource)/tool-bar.elc $(lispsource)/mwheel.elc
-X_WINDOW_SUPPORT=${lispsource}x-dnd.elc ${lispsource}term/common-win.elc \
- ${lispsource}term/x-win.elc ${lispsource}dynamic-setting.elc
+X_WINDOW_SUPPORT=$(lispsource)/x-dnd.elc $(lispsource)/term/common-win.elc \
+ $(lispsource)/term/x-win.elc $(lispsource)/dynamic-setting.elc
## If HAVE_X_WINDOWS, both the above
## else if HAVE_WINDOW_SYSTEM (ie, HAVE_NS) just the former; else empty.
@@ -295,16 +294,14 @@ GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
RUN_TEMACS = `/bin/pwd`/temacs
-START_FILES = @START_FILES@
-
UNEXEC_OBJ = @UNEXEC_OBJ@
CANNOT_DUMP=@CANNOT_DUMP@
DEPDIR=deps
-## -MMD -MF ${DEPDIR}/$*.d if AUTO_DEPEND; else empty.
+## -MMD -MF $(DEPDIR)/$*.d if AUTO_DEPEND; else empty.
DEPFLAGS=@DEPFLAGS@
-## test -d ${DEPDIR} || mkdir ${DEPDIR} (if AUTO_DEPEND); else ':'.
+## test -d $(DEPDIR) || mkdir $(DEPDIR) (if AUTO_DEPEND); else ':'.
MKDEPDIR=@MKDEPDIR@
## DO NOT use -R. There is a special hack described in lastfile.c
@@ -322,14 +319,14 @@ MKDEPDIR=@MKDEPDIR@
## since it may have -I options that should override those.
##
## FIXME? MYCPPFLAGS only referenced in etc/DEBUG.
-ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I${srcdir} \
- ${C_SWITCH_MACHINE} ${C_SWITCH_SYSTEM} ${C_SWITCH_X_SITE} \
- ${C_SWITCH_X_SYSTEM} ${CFLAGS_SOUND} ${RSVG_CFLAGS} ${IMAGEMAGICK_CFLAGS} \
- ${LIBXML2_CFLAGS} ${DBUS_CFLAGS} \
- ${GCONF_CFLAGS} ${FREETYPE_CFLAGS} ${FONTCONFIG_CFLAGS} \
- ${LIBOTF_CFLAGS} ${M17N_FLT_CFLAGS} ${DEPFLAGS} ${PROFILING_CFLAGS} \
+ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \
+ $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \
+ $(C_SWITCH_X_SYSTEM) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \
+ $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \
+ $(GCONF_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \
+ $(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) $(PROFILING_CFLAGS) \
$(LIBGNUTLS_CFLAGS) \
- ${C_WARNINGS_SWITCH} ${CFLAGS}
+ $(C_WARNINGS_SWITCH) $(CFLAGS)
ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS)
.SUFFIXES: .m
@@ -400,93 +397,93 @@ otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \
## Place loaddefs.el first, so it gets generated first, since it is on
## the critical path (relevant in parallel compilations).
lisp= \
- ${lispsource}loaddefs.el \
- ${lispsource}abbrev.elc \
- ${lispsource}buff-menu.elc \
- ${lispsource}button.elc \
- ${lispsource}emacs-lisp/byte-run.elc \
- ${lispsource}composite.elc \
- ${lispsource}cus-face.elc \
- ${lispsource}cus-start.elc \
- ${lispsource}custom.elc \
- ${lispsource}emacs-lisp/backquote.elc \
- ${lispsource}emacs-lisp/lisp-mode.elc \
- ${lispsource}emacs-lisp/lisp.elc \
- ${lispsource}env.elc \
- ${lispsource}faces.elc \
- ${lispsource}files.elc \
- ${lispsource}format.elc \
- ${lispsource}facemenu.elc \
- ${MOUSE_SUPPORT} \
- ${lispsource}emacs-lisp/float-sup.elc \
- ${lispsource}frame.elc \
- ${lispsource}help.elc \
- ${lispsource}indent.elc \
- ${lispsource}isearch.elc \
- ${lispsource}rfn-eshadow.elc \
- ${lispsource}loadup.el \
- ${lispsource}bindings.elc \
- ${lispsource}emacs-lisp/map-ynp.elc \
- ${lispsource}menu-bar.elc \
- ${lispsource}international/mule.elc \
- ${lispsource}international/mule-conf.elc \
- ${lispsource}international/mule-cmds.elc \
- ${lispsource}international/characters.elc \
- ${lispsource}international/charprop.el \
- ${lispsource}case-table.elc \
- ${lispsource}language/chinese.elc \
- ${lispsource}language/cyrillic.elc \
- ${lispsource}language/indian.elc \
- ${lispsource}language/sinhala.el \
- ${lispsource}language/english.el \
- ${lispsource}language/ethiopic.elc \
- ${lispsource}language/european.elc \
- ${lispsource}language/czech.el \
- ${lispsource}language/slovak.el \
- ${lispsource}language/romanian.el \
- ${lispsource}language/greek.el \
- ${lispsource}language/hebrew.elc \
- ${lispsource}language/japanese.el \
- ${lispsource}language/korean.el \
- ${lispsource}language/lao.el \
- ${lispsource}language/cham.el \
- ${lispsource}language/tai-viet.el \
- ${lispsource}language/thai.el \
- ${lispsource}language/tibetan.elc \
- ${lispsource}language/vietnamese.elc \
- ${lispsource}language/misc-lang.el \
- ${lispsource}language/utf-8-lang.el \
- ${lispsource}language/georgian.el \
- ${lispsource}language/khmer.el \
- ${lispsource}language/burmese.el \
- ${lispsource}paths.el \
- ${lispsource}register.elc \
- ${lispsource}replace.elc \
- ${lispsource}simple.elc \
- ${lispsource}minibuffer.elc \
- ${lispsource}startup.elc \
- ${lispsource}subr.elc \
- ${lispsource}term/tty-colors.elc \
- ${lispsource}font-core.elc \
- ${lispsource}emacs-lisp/syntax.elc \
- ${lispsource}font-lock.elc \
- ${lispsource}jit-lock.elc \
- ${lispsource}textmodes/fill.elc \
- ${lispsource}textmodes/page.elc \
- ${lispsource}textmodes/paragraphs.elc \
- ${lispsource}textmodes/text-mode.elc \
- ${lispsource}emacs-lisp/timer.elc \
- ${lispsource}jka-cmpr-hook.elc \
- ${lispsource}vc/vc-hooks.elc \
- ${lispsource}vc/ediff-hook.elc \
- ${lispsource}epa-hook.elc \
- ${TOOLTIP_SUPPORT} \
- ${MSDOS_SUPPORT} \
- ${WINDOW_SUPPORT} \
- ${NS_SUPPORT} \
- ${lispsource}widget.elc \
- ${lispsource}window.elc \
- ${lispsource}version.el
+ $(lispsource)/loaddefs.el \
+ $(lispsource)/abbrev.elc \
+ $(lispsource)/buff-menu.elc \
+ $(lispsource)/button.elc \
+ $(lispsource)/emacs-lisp/byte-run.elc \
+ $(lispsource)/composite.elc \
+ $(lispsource)/cus-face.elc \
+ $(lispsource)/cus-start.elc \
+ $(lispsource)/custom.elc \
+ $(lispsource)/emacs-lisp/backquote.elc \
+ $(lispsource)/emacs-lisp/lisp-mode.elc \
+ $(lispsource)/emacs-lisp/lisp.elc \
+ $(lispsource)/env.elc \
+ $(lispsource)/faces.elc \
+ $(lispsource)/files.elc \
+ $(lispsource)/format.elc \
+ $(lispsource)/facemenu.elc \
+ $(MOUSE_SUPPORT) \
+ $(lispsource)/emacs-lisp/float-sup.elc \
+ $(lispsource)/frame.elc \
+ $(lispsource)/help.elc \
+ $(lispsource)/indent.elc \
+ $(lispsource)/isearch.elc \
+ $(lispsource)/rfn-eshadow.elc \
+ $(lispsource)/loadup.el \
+ $(lispsource)/bindings.elc \
+ $(lispsource)/emacs-lisp/map-ynp.elc \
+ $(lispsource)/menu-bar.elc \
+ $(lispsource)/international/mule.elc \
+ $(lispsource)/international/mule-conf.elc \
+ $(lispsource)/international/mule-cmds.elc \
+ $(lispsource)/international/characters.elc \
+ $(lispsource)/international/charprop.el \
+ $(lispsource)/case-table.elc \
+ $(lispsource)/language/chinese.elc \
+ $(lispsource)/language/cyrillic.elc \
+ $(lispsource)/language/indian.elc \
+ $(lispsource)/language/sinhala.el \
+ $(lispsource)/language/english.el \
+ $(lispsource)/language/ethiopic.elc \
+ $(lispsource)/language/european.elc \
+ $(lispsource)/language/czech.el \
+ $(lispsource)/language/slovak.el \
+ $(lispsource)/language/romanian.el \
+ $(lispsource)/language/greek.el \
+ $(lispsource)/language/hebrew.elc \
+ $(lispsource)/language/japanese.el \
+ $(lispsource)/language/korean.el \
+ $(lispsource)/language/lao.el \
+ $(lispsource)/language/cham.el \
+ $(lispsource)/language/tai-viet.el \
+ $(lispsource)/language/thai.el \
+ $(lispsource)/language/tibetan.elc \
+ $(lispsource)/language/vietnamese.elc \
+ $(lispsource)/language/misc-lang.el \
+ $(lispsource)/language/utf-8-lang.el \
+ $(lispsource)/language/georgian.el \
+ $(lispsource)/language/khmer.el \
+ $(lispsource)/language/burmese.el \
+ $(lispsource)/paths.el \
+ $(lispsource)/register.elc \
+ $(lispsource)/replace.elc \
+ $(lispsource)/simple.elc \
+ $(lispsource)/minibuffer.elc \
+ $(lispsource)/startup.elc \
+ $(lispsource)/subr.elc \
+ $(lispsource)/term/tty-colors.elc \
+ $(lispsource)/font-core.elc \
+ $(lispsource)/emacs-lisp/syntax.elc \
+ $(lispsource)/font-lock.elc \
+ $(lispsource)/jit-lock.elc \
+ $(lispsource)/textmodes/fill.elc \
+ $(lispsource)/textmodes/page.elc \
+ $(lispsource)/textmodes/paragraphs.elc \
+ $(lispsource)/textmodes/text-mode.elc \
+ $(lispsource)/emacs-lisp/timer.elc \
+ $(lispsource)/jka-cmpr-hook.elc \
+ $(lispsource)/vc/vc-hooks.elc \
+ $(lispsource)/vc/ediff-hook.elc \
+ $(lispsource)/epa-hook.elc \
+ $(TOOLTIP_SUPPORT) \
+ $(MSDOS_SUPPORT) \
+ $(WINDOW_SUPPORT) \
+ $(NS_SUPPORT) \
+ $(lispsource)/widget.elc \
+ $(lispsource)/window.elc \
+ $(lispsource)/version.el
## List of relative names for those files from $lisp that are loaded
## unconditionally (i.e. on all platforms). Files from $lisp that
@@ -601,80 +598,80 @@ SOME_MACHINE_LISP = ../lisp/mouse.elc \
## duplicated symbols. If the standard libraries were compiled
## with GCC, we might need LIB_GCC again after them.
LIBES = $(LIBS) $(LIBX_BASE) $(LIBX_OTHER) $(LIBSOUND) \
- $(RSVG_LIBS) ${IMAGEMAGICK_LIBS} $(DBUS_LIBS) \
- ${LIBXML2_LIBS} $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
- $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) ${GCONF_LIBS} ${LIBSELINUX_LIBS} \
+ $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(DBUS_LIBS) \
+ $(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \
+ $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(GCONF_LIBS) $(LIBSELINUX_LIBS) \
$(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \
$(LIBGNUTLS_LIBS) \
$(LIB_GCC) $(LIB_MATH) $(LIB_STANDARD) $(LIB_GCC)
-all: emacs${EXEEXT} $(OTHER_FILES)
+all: emacs$(EXEEXT) $(OTHER_FILES)
## Does anyone ever pay attention to the load-path-shadows output here?
## The dumped Emacs is as functional and more efficient than
## bootstrap-emacs, so we replace the latter with the former.
-emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp}
- if test "${CANNOT_DUMP}" = "yes"; then \
- ln -f temacs${EXEEXT} emacs${EXEEXT}; \
- EMACSLOADPATH=${lispsource} ./emacs -q -batch \
+emacs$(EXEEXT): temacs$(EXEEXT) $(etc)/DOC $(lisp)
+ if test "$(CANNOT_DUMP)" = "yes"; then \
+ ln -f temacs$(EXEEXT) emacs$(EXEEXT); \
+ EMACSLOADPATH=$(lispsource) ./emacs -q -batch \
-f list-load-path-shadows || true; \
else \
LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump || exit 1; \
- ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
+ ln -f emacs$(EXEEXT) bootstrap-emacs$(EXEEXT); \
./emacs -q -batch -f list-load-path-shadows || true; \
fi
## We run make-docfile twice because the command line may get too long
## on some systems.
-## ${SOME_MACHINE_OBJECTS} comes before ${obj} because some files may
-## or may not be included in ${obj}, but they are always included in
-## ${SOME_MACHINE_OBJECTS}. Since a file is processed when it is mentioned
+## $(SOME_MACHINE_OBJECTS) comes before $(obj) because some files may
+## or may not be included in $(obj), but they are always included in
+## $(SOME_MACHINE_OBJECTS). Since a file is processed when it is mentioned
## for the first time, this prevents any variation between configurations
## in the contents of the DOC file.
-## Likewise for ${SOME_MACHINE_LISP}.
-## Most of this Makefile refers to Lisp files via ${lispsource}, so
-## we also use ${lisp} rather than ${shortlisp} for the dependency since
+## Likewise for $(SOME_MACHINE_LISP).
+## Most of this Makefile refers to Lisp files via $(lispsource), so
+## we also use $(lisp) rather than $(shortlisp) for the dependency since
## the Makefile uses string equality to decide when we talk about identical
-## files. Apparently we pass ${shortlisp} rather than ${lisp} to make-docfile
+## files. Apparently we pass $(shortlisp) rather than $(lisp) to make-docfile
## only in order to reduce the command line length. --Stef
-${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
- -rm -f ${etc}DOC
- ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
- ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
+$(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp) $(SOME_MACHINE_LISP)
+ -rm -f $(etc)/DOC
+ $(libsrc)/make-docfile -d $(srcdir) $(SOME_MACHINE_OBJECTS) $(obj) > $(etc)/DOC
+ $(libsrc)/make-docfile -a $(etc)/DOC -d $(srcdir) $(SOME_MACHINE_LISP) $(shortlisp)
-${libsrc}make-docfile${EXEEXT}:
- cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
+$(libsrc)/make-docfile$(EXEEXT):
+ cd $(libsrc); $(MAKE) $(MFLAGS) make-docfile$(EXEEXT)
buildobj.h: Makefile
- echo "#define BUILDOBJ \"${obj} ${otherobj} " "\"" > buildobj.h
+ echo "#define BUILDOBJ \"$(obj) $(otherobj) " "\"" > buildobj.h
-temacs${EXEEXT}: $(START_FILES) stamp-oldxmenu ${obj} ${otherobj}
- $(CC) $(LD_FIRSTFLAG) ${TEMACS_LDFLAGS} ${TEMACS_LDFLAGS2} \
- -o temacs ${START_FILES} ${obj} ${otherobj} ${LIBES}
+temacs$(EXEEXT): $(START_FILES) stamp-oldxmenu $(obj) $(otherobj)
+ $(CC) $(LD_FIRSTFLAG) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(TEMACS_LDFLAGS2) \
+ -o temacs $(START_FILES) $(obj) $(otherobj) $(LIBES)
## The following oldxmenu-related rules are only (possibly) used if
## HAVE_X11 && !USE_GTK, but there is no harm in always defining them
## (provided we take a little care that OLDXMENU is never empty).
really-lwlib:
- cd ${lwlibdir}; ${MAKE} ${MFLAGS} \
- CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
+ cd $(lwlibdir); $(MAKE) $(MFLAGS) \
+ CC='$(CC)' CFLAGS='$(CFLAGS)' MAKE='$(MAKE)'
@true # make -t should not create really-lwlib.
.PHONY: really-lwlib
really-oldXMenu:
- cd ${oldXMenudir}; ${MAKE} ${MFLAGS} \
- CC='${CC}' CFLAGS='${CFLAGS}' MAKE='${MAKE}'
+ cd $(oldXMenudir); $(MAKE) $(MFLAGS) \
+ CC='$(CC)' CFLAGS='$(CFLAGS)' MAKE='$(MAKE)'
@true # make -t should not create really-oldXMenu.
.PHONY: really-oldXMenu
## We do not really need this when OLDXMENU_DEPS is empty, but as
## things stand we need something to satisfy the temacs dependency.
-stamp-oldxmenu: ${OLDXMENU_DEPS}
+stamp-oldxmenu: $(OLDXMENU_DEPS)
touch stamp-oldxmenu
## Supply an ordering for parallel make.
-../src/$(OLDXMENU): ${OLDXMENU}
+../src/$(OLDXMENU): $(OLDXMENU)
$(OLDXMENU): $(OLDXMENU_TARGET)
@@ -688,9 +685,6 @@ $(OLDXMENU): $(OLDXMENU_TARGET)
@echo "Please run the `configure' script again."
exit 1
-ecrt0.o: ecrt0.c $(config_h)
- @$(MKDEPDIR)
- $(CC) -c $(ALL_CFLAGS) ${srcdir}/ecrt0.c
doc.o: buildobj.h
@@ -699,14 +693,14 @@ doc.o: buildobj.h
mostlyclean:
- rm -f temacs${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a
+ rm -f temacs$(EXEEXT) core *.core \#* *.o libXMenu11.a liblw.a
rm -f ../etc/DOC
- rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
+ rm -f bootstrap-emacs$(EXEEXT) emacs-$(version)$(EXEEXT)
rm -f buildobj.h
clean: mostlyclean
- rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT}
- -rm -rf ${DEPDIR}
- test "X${ns_appdir}" = "X" || rm -rf ${ns_appdir}
+ rm -f emacs-*.*.*$(EXEEXT) emacs$(EXEEXT)
+ -rm -rf $(DEPDIR)
+ test "X$(ns_appdir)" = "X" || rm -rf $(ns_appdir)
## bootstrap-clean is used to clean up just before a bootstrap.
## It should remove all files generated during a compilation/bootstrap,
@@ -715,7 +709,7 @@ bootstrap-clean: clean
rm -f epaths.h config.h config.stamp stamp-oldxmenu ../etc/DOC-*
if test -f ./.gdbinit; then \
mv ./.gdbinit ./.gdbinit.save; \
- if test -f "${srcdir}/.gdbinit"; then rm -f ./.gdbinit.save; \
+ if test -f "$(srcdir)/.gdbinit"; then rm -f ./.gdbinit.save; \
else mv ./.gdbinit.save ./.gdbinit; fi; \
fi
## This is used in making a distribution.
@@ -727,7 +721,7 @@ maintainer-clean: distclean
@echo "it deletes files that may require special tools to rebuild."
rm -f TAGS
versionclean:
- -rm -f emacs${EXEEXT} emacs-*.*.*${EXEEXT} ../etc/DOC*
+ -rm -f emacs$(EXEEXT) emacs-*.*.*$(EXEEXT) ../etc/DOC*
extraclean: distclean
-rm -f *~ \#* m/?*~ s/?*~
@@ -738,17 +732,17 @@ ctagsfiles1 = [xyzXYZ]*.[hcm]
ctagsfiles2 = [a-wA-W]*.[hcm]
TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
- ../lib-src/etags --include=TAGS-LISP --include=${lwlibdir}/TAGS \
+ ../lib-src/etags --include=TAGS-LISP --include=$(lwlibdir)/TAGS \
--regex='/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
$(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
frc:
TAGS-LISP: frc
- $(MAKE) -f ${lispdir}Makefile TAGS-LISP ETAGS=../lib-src/etags
+ $(MAKE) -f $(lispdir)/Makefile TAGS-LISP ETAGS=../lib-src/etags
-$(lwlibdir)TAGS:
- (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)Makefile tags ETAGS=../lib-src/etags)
+$(lwlibdir)/TAGS:
+ (cd $(lwlibdir); $(MAKE) -f $(lwlibdir)/Makefile tags ETAGS=../lib-src/etags)
-tags: TAGS TAGS-LISP $(lwlibdir)TAGS
+tags: TAGS TAGS-LISP $(lwlibdir)/TAGS
.PHONY: tags
@@ -770,10 +764,10 @@ tags: TAGS TAGS-LISP $(lwlibdir)TAGS
## it), so it was compiled in parallel, leading typically to having 2
## processes dumping bootstrap-emacs at the same time).
## So instead, we replace the witness-emacs dependencies by conditional
-## bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do
+## bootstrap-dependencies (via $(BOOTSTRAPEMACS)). Of course, since we do
## not want to rely on GNU Make features, we have to rely on an external
## script to do the conditional part of the dependency
-## (i.e. see the ${SUBDIR} rule ../Makefile.in).
+## (i.e. see the $(SUBDIR) rule ../Makefile.in).
.SUFFIXES: .elc .el
@@ -783,28 +777,28 @@ tags: TAGS TAGS-LISP $(lwlibdir)TAGS
## With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)"
.el.elc:
@cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \
- THEFILE=$< EMACS=${bootstrap_exe}
+ THEFILE=$< EMACS=$(bootstrap_exe)
## Since the .el.elc rule cannot specify an extra dependency, we do it here.
-${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS)
+$(lisp) $(SOME_MACHINE_LISP): $(BOOTSTRAPEMACS)
## VCSWITNESS points to the file that holds info about the current checkout.
## We use it as a heuristic to decide when to rebuild loaddefs.el.
-${lispsource}loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS)
- cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=${bootstrap_exe}
+$(lispsource)/loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS)
+ cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=$(bootstrap_exe)
## Dump an Emacs executable named bootstrap-emacs containing the
## files from loadup.el in source form.
-bootstrap-emacs${EXEEXT}: temacs${EXEEXT}
+bootstrap-emacs$(EXEEXT): temacs$(EXEEXT)
cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs
- if test "${CANNOT_DUMP}" = "yes"; then \
- ln -f temacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
+ if test "$(CANNOT_DUMP)" = "yes"; then \
+ ln -f temacs$(EXEEXT) bootstrap-emacs$(EXEEXT); \
else \
$(RUN_TEMACS) --batch --load loadup bootstrap || exit 1; \
- mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}; \
+ mv -f emacs$(EXEEXT) bootstrap-emacs$(EXEEXT); \
fi
@: Compile some files earlier to speed up further compilation.
- cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=${bootstrap_exe}
+ cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=$(bootstrap_exe)
## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk.
@deps_frag@
diff --git a/src/alloc.c b/src/alloc.c
index f2bb28e2d96..0f83f375d40 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -65,15 +65,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
extern POINTER_TYPE *sbrk ();
#endif
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
-#ifndef O_WRONLY
-#define O_WRONLY 1
-#endif
#ifdef WINDOWSNT
-#include <fcntl.h>
#include "w32.h"
#endif
diff --git a/src/bidi.c b/src/bidi.c
index b7c6fdc2ddd..1f14f6ab840 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -51,7 +51,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
-#include <string.h>
#include <setjmp.h>
#include "lisp.h"
diff --git a/src/buffer.c b/src/buffer.c
index 6b6b6efc633..3eb96beeb0f 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5958,10 +5958,7 @@ No information is given about the length of the text after the change.
Buffer changes made while executing the `before-change-functions'
don't call any before-change or after-change functions.
-That's because these variables are temporarily set to nil.
-As a result, a hook function cannot straightforwardly alter the
-value of these variables. See the Emacs Lisp manual for a way of
-accomplishing an equivalent result by using other variables.
+That's because `inhibit-modification-hooks' is temporarily set non-nil.
If an unhandled error happens in running these functions,
the variable's value remains nil. That prevents the error
@@ -5979,10 +5976,7 @@ and the post-change beginning and end are at the same place.)
Buffer changes made while executing the `after-change-functions'
don't call any before-change or after-change functions.
-That's because these variables are temporarily set to nil.
-As a result, a hook function cannot straightforwardly alter the
-value of these variables. See the Emacs Lisp manual for a way of
-accomplishing an equivalent result by using other variables.
+That's because `inhibit-modification-hooks' is temporarily set non-nil.
If an unhandled error happens in running these functions,
the variable's value remains nil. That prevents the error
diff --git a/src/callproc.c b/src/callproc.c
index 6f70631a484..ee0872b5562 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -24,13 +24,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <errno.h>
#include <stdio.h>
#include <setjmp.h>
-
-/* Define SIGCHLD as an alias for SIGCLD. */
-
-#if !defined (SIGCHLD) && defined (SIGCLD)
-#define SIGCHLD SIGCLD
-#endif /* SIGCLD */
-
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
@@ -38,33 +31,20 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#include <sys/file.h>
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
#ifdef WINDOWSNT
#define NOMINMAX
#include <windows.h>
-#include <stdlib.h> /* for proper declaration of environ */
-#include <fcntl.h>
#include "w32.h"
#define _P_NOWAIT 1 /* from process.h */
#endif
#ifdef MSDOS /* Demacs 1.1.1 91/10/16 HIRANO Satoshi */
-#include <fcntl.h>
#include <sys/stat.h>
#include <sys/param.h>
#endif /* MSDOS */
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-
-#ifndef O_WRONLY
-#define O_WRONLY 1
-#endif
-
#include "lisp.h"
#include "commands.h"
#include "buffer.h"
@@ -274,21 +254,16 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
if (!NILP (Vcoding_system_for_write))
val = Vcoding_system_for_write;
else if (! must_encode)
- val = Qnil;
+ val = Qraw_text;
else
{
args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
args2[0] = Qcall_process;
for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
- if (CONSP (coding_systems))
- val = XCDR (coding_systems);
- else if (CONSP (Vdefault_process_coding_system))
- val = XCDR (Vdefault_process_coding_system);
- else
- val = Qnil;
+ val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
}
- val = coding_inherit_eol_type (val, Qnil);
+ val = complement_process_encoding_system (val);
setup_coding_system (Fcheck_coding_system (val), &argument_coding);
coding_attrs = CODING_ID_ATTRS (argument_coding.id);
if (NILP (CODING_ATTR_ASCII_COMPAT (coding_attrs)))
@@ -932,20 +907,16 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
if (!NILP (Vcoding_system_for_write))
val = Vcoding_system_for_write;
else if (NILP (current_buffer->enable_multibyte_characters))
- val = Qnil;
+ val = Qraw_text;
else
{
args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
args2[0] = Qcall_process_region;
for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
- if (CONSP (coding_systems))
- val = XCDR (coding_systems);
- else if (CONSP (Vdefault_process_coding_system))
- val = XCDR (Vdefault_process_coding_system);
- else
- val = Qnil;
+ val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
}
+ val = complement_process_encoding_system (val);
{
int count1 = SPECPDL_INDEX ();
diff --git a/src/ccl.c b/src/ccl.c
index f98897b51fa..ca4a1479091 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -448,7 +448,7 @@ Lisp_Object Vtranslation_hash_table_vector;
Therefore, the instruction code range is 0..16384(0x3fff).
*/
-/* Read a multibyte characeter.
+/* Read a multibyte character.
A code point is stored into reg[rrr]. A charset ID is stored into
reg[RRR]. */
@@ -2044,7 +2044,7 @@ If R0..R7 are nil, they are initialized to 0.
If IC is nil, it is initialized to head of the CCL program.
If optional 4th arg CONTINUE is non-nil, keep IC on read operation
-when read buffer is exausted, else, IC is always set to the end of
+when read buffer is exhausted, else, IC is always set to the end of
CCL-PROGRAM on exit.
It returns the contents of write buffer as a string,
diff --git a/src/character.c b/src/character.c
index d80f8139486..1c8fae88176 100644
--- a/src/character.c
+++ b/src/character.c
@@ -336,16 +336,6 @@ If the multibyte character does not represent a byte, return -1. */)
}
}
-DEFUN ("char-bytes", Fchar_bytes, Schar_bytes, 1, 1, 0,
- doc: /* Return 1 regardless of the argument CHAR.
-This is now an obsolete function. We keep it just for backward compatibility.
-usage: (char-bytes CHAR) */)
- (Lisp_Object ch)
-{
- CHECK_CHARACTER (ch);
- return make_number (1);
-}
-
DEFUN ("char-width", Fchar_width, Schar_width, 1, 1, 0,
doc: /* Return width of CHAR when displayed in the current buffer.
The width is measured by how many columns it occupies on the screen.
@@ -1073,7 +1063,6 @@ syms_of_character (void)
defsubr (&Scharacterp);
defsubr (&Sunibyte_char_to_multibyte);
defsubr (&Smultibyte_char_to_unibyte);
- defsubr (&Schar_bytes);
defsubr (&Schar_width);
defsubr (&Sstring_width);
defsubr (&Schar_direction);
diff --git a/src/charset.c b/src/charset.c
index 8051b11330e..0ab776b6914 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -28,7 +28,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
-#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include <sys/types.h>
@@ -2365,8 +2364,8 @@ syms_of_charset (void)
Vemacs_mule_charset_list = Qnil;
/* Don't staticpro them here. It's done in syms_of_fns. */
- QCtest = intern (":test");
- Qeq = intern ("eq");
+ QCtest = intern_c_string (":test");
+ Qeq = intern_c_string ("eq");
staticpro (&Vcharset_hash_table);
{
diff --git a/src/coding.c b/src/coding.c
index d6285ed9245..7a3bc40b9c7 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -166,7 +166,7 @@ detect_coding_XXX (struct coding_system *coding,
while (1)
{
- /* Get one byte from the source. If the souce is exausted, jump
+ /* Get one byte from the source. If the source is exhausted, jump
to no_more_source:. */
ONE_MORE_BYTE (c);
@@ -180,7 +180,7 @@ detect_coding_XXX (struct coding_system *coding,
return 0;
no_more_source:
- /* The source exausted successfully. */
+ /* The source exhausted successfully. */
detect_info->found |= found;
return 1;
}
@@ -530,7 +530,7 @@ enum iso_code_class_type
on output. */
#define CODING_ISO_FLAG_DESIGNATE_AT_BOL 0x0400
-/* If set, do not encode unsafe charactes on output. */
+/* If set, do not encode unsafe characters on output. */
#define CODING_ISO_FLAG_SAFE 0x0800
/* If set, extra latin codes (128..159) are accepted as a valid code
@@ -686,7 +686,7 @@ enum coding_category
static Lisp_Object Vcoding_category_list;
/* Table of coding categories (Lisp symbols). This variable is for
- internal use oly. */
+ internal use only. */
static Lisp_Object Vcoding_category_table;
/* Table of coding-categories ordered by priority. */
@@ -818,7 +818,7 @@ static struct coding_system coding_categories[coding_category_max];
} while (0)
-/* Like EMIT_ONE_ASCII_BYTE byt store two bytes; C1 and C2. */
+/* Like EMIT_ONE_ASCII_BYTE but store two bytes; C1 and C2. */
#define EMIT_TWO_ASCII_BYTES(c1, c2) \
do { \
@@ -1227,7 +1227,7 @@ alloc_destination (struct coding_system *coding, EMACS_INT nbytes,
METHOD is one of enum composition_method.
- Optionnal COMPOSITION-COMPONENTS are characters and composition
+ Optional COMPOSITION-COMPONENTS are characters and composition
rules.
In the case of CODING_ANNOTATE_CHARSET_MASK, one element CHARSET-ID
@@ -1932,7 +1932,7 @@ encode_coding_utf_16 (struct coding_system *coding)
CHARS is 0xA0 plus a number of characters composed by this
data,
- COMPONENTs are characters of multibye form or composition
+ COMPONENTs are characters of multibyte form or composition
rules encoded by two-byte of ASCII codes.
In addition, for backward compatibility, the following formats are
@@ -2428,8 +2428,8 @@ decode_coding_emacs_mule (struct coding_system *coding)
const unsigned char *src_end = coding->source + coding->src_bytes;
const unsigned char *src_base;
int *charbuf = coding->charbuf + coding->charbuf_used;
- /* We may produce two annocations (charset and composition) in one
- loop and one more charset annocation at the end. */
+ /* We may produce two annotations (charset and composition) in one
+ loop and one more charset annotation at the end. */
int *charbuf_end
= coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 3);
int consumed_chars = 0, consumed_chars_base;
@@ -2505,7 +2505,7 @@ decode_coding_emacs_mule (struct coding_system *coding)
/* emacs_mule_char can load a charset map from a file, which
allocates a large structure and might cause buffer text
to be relocated as result. Thus, we need to remember the
- original pointer to buffer text, and fixup all related
+ original pointer to buffer text, and fix up all related
pointers after the call. */
const unsigned char *orig = coding->source;
EMACS_INT offset;
@@ -2532,7 +2532,7 @@ decode_coding_emacs_mule (struct coding_system *coding)
cmp_status->ncomps -= nchars;
}
- /* Now if C >= 0, we found a normally encoded characer, if C <
+ /* Now if C >= 0, we found a normally encoded character, if C <
0, we found an old-style composition component character or
rule. */
@@ -3043,7 +3043,7 @@ setup_iso_safe_charsets (Lisp_Object attrs)
/* See the above "GENERAL NOTES on `detect_coding_XXX ()' functions".
- Check if a text is encoded in one of ISO-2022 based codig systems.
+ Check if a text is encoded in one of ISO-2022 based coding systems.
If it is, return 1, else return 0. */
static int
@@ -3452,7 +3452,7 @@ finish_composition (int *charbuf, struct composition_status *cmp_status)
return new_chars;
}
-/* If characers are under composition, finish the composition. */
+/* If characters are under composition, finish the composition. */
#define MAYBE_FINISH_COMPOSITION() \
do { \
if (cmp_status->state != COMPOSING_NO) \
@@ -3558,8 +3558,8 @@ decode_coding_iso_2022 (struct coding_system *coding)
const unsigned char *src_end = coding->source + coding->src_bytes;
const unsigned char *src_base;
int *charbuf = coding->charbuf + coding->charbuf_used;
- /* We may produce two annocations (charset and composition) in one
- loop and one more charset annocation at the end. */
+ /* We may produce two annotations (charset and composition) in one
+ loop and one more charset annotation at the end. */
int *charbuf_end
= coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 3);
int consumed_chars = 0, consumed_chars_base;
@@ -3861,7 +3861,7 @@ decode_coding_iso_2022 (struct coding_system *coding)
goto invalid_code;
/* For the moment, nested direction is not supported.
So, `coding->mode & CODING_MODE_DIRECTION' zero means
- left-to-right, and nozero means right-to-left. */
+ left-to-right, and nonzero means right-to-left. */
ONE_MORE_BYTE (c1);
switch (c1)
{
@@ -4766,7 +4766,7 @@ decode_coding_sjis (struct coding_system *coding)
const unsigned char *src_end = coding->source + coding->src_bytes;
const unsigned char *src_base;
int *charbuf = coding->charbuf + coding->charbuf_used;
- /* We may produce one charset annocation in one loop and one more at
+ /* We may produce one charset annotation in one loop and one more at
the end. */
int *charbuf_end
= coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 2);
@@ -4884,7 +4884,7 @@ decode_coding_big5 (struct coding_system *coding)
const unsigned char *src_end = coding->source + coding->src_bytes;
const unsigned char *src_base;
int *charbuf = coding->charbuf + coding->charbuf_used;
- /* We may produce one charset annocation in one loop and one more at
+ /* We may produce one charset annotation in one loop and one more at
the end. */
int *charbuf_end
= coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 2);
@@ -5541,7 +5541,7 @@ decode_coding_charset (struct coding_system *coding)
const unsigned char *src_end = coding->source + coding->src_bytes;
const unsigned char *src_base;
int *charbuf = coding->charbuf + coding->charbuf_used;
- /* We may produce one charset annocation in one loop and one more at
+ /* We may produce one charset annotation in one loop and one more at
the end. */
int *charbuf_end
= coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 2);
@@ -6016,10 +6016,9 @@ raw_text_coding_system (Lisp_Object coding_system)
}
-/* If CODING_SYSTEM doesn't specify end-of-line format but PARENT
- does, return one of the subsidiary that has the same eol-spec as
- PARENT. Otherwise, return CODING_SYSTEM. If PARENT is nil,
- inherit end-of-line format from the system's setting
+/* If CODING_SYSTEM doesn't specify end-of-line format, return one of
+ the subsidiary that has the same eol-spec as PARENT (if it is not
+ nil and specifies end-of-line format) or the system's setting
(system_eol_type). */
Lisp_Object
@@ -6041,6 +6040,8 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
parent_spec = CODING_SYSTEM_SPEC (parent);
parent_eol_type = AREF (parent_spec, 2);
+ if (VECTORP (parent_eol_type))
+ parent_eol_type = system_eol_type;
}
else
parent_eol_type = system_eol_type;
@@ -6054,6 +6055,45 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
return coding_system;
}
+
+/* Check if text-conversion and eol-conversion of CODING_SYSTEM are
+ decided for writing to a process. If not, complement them, and
+ return a new coding system. */
+
+Lisp_Object
+complement_process_encoding_system (Lisp_Object coding_system)
+{
+ Lisp_Object coding_base = Qnil, eol_base = Qnil;
+ Lisp_Object spec, attrs;
+ int i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (i == 1)
+ coding_system = CDR_SAFE (Vdefault_process_coding_system);
+ else if (i == 2)
+ coding_system = preferred_coding_system ();
+ spec = CODING_SYSTEM_SPEC (coding_system);
+ if (NILP (spec))
+ continue;
+ attrs = AREF (spec, 0);
+ if (NILP (coding_base) && ! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
+ coding_base = CODING_ATTR_BASE_NAME (attrs);
+ if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
+ eol_base = coding_system;
+ if (! NILP (coding_base) && ! NILP (eol_base))
+ break;
+ }
+
+ if (i > 0)
+ /* The original CODING_SYSTEM didn't specify text-conversion or
+ eol-conversion. Be sure that we return a fully complemented
+ coding system. */
+ coding_system = coding_inherit_eol_type (coding_base, eol_base);
+ return coding_system;
+}
+
+
/* Emacs has a mechanism to automatically detect a coding system if it
is one of Emacs' internal format, ISO2022, SJIS, and BIG5. But,
it's impossible to distinguish some coding systems accurately
@@ -6104,14 +6144,14 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
o coding-category-iso-7-else
The category for a coding system which has the same code range
- as ISO2022 of 7-bit environemnt but uses locking shift or
+ as ISO2022 of 7-bit environment but uses locking shift or
single shift functions. Assigned the coding-system (Lisp
symbol) `iso-2022-7bit-lock' by default.
o coding-category-iso-8-else
The category for a coding system which has the same code range
- as ISO2022 of 8-bit environemnt but uses locking shift or
+ as ISO2022 of 8-bit environment but uses locking shift or
single shift functions. Assigned the coding-system (Lisp
symbol) `iso-2022-8bit-ss2' by default.
@@ -7508,7 +7548,7 @@ static Lisp_Object Vcode_conversion_reused_workbuf;
static int reused_workbuf_in_use;
-/* Return a working buffer of code convesion. MULTIBYTE specifies the
+/* Return a working buffer of code conversion. MULTIBYTE specifies the
multibyteness of returning buffer. */
static Lisp_Object
@@ -8160,7 +8200,7 @@ function `define-coding-system'. */)
/* Detect how the bytes at SRC of length SRC_BYTES are encoded. If
HIGHEST is nonzero, return the coding system of the highest
- priority among the detected coding systems. Otherwize return a
+ priority among the detected coding systems. Otherwise return a
list of detected coding systems sorted by their priorities. If
MULTIBYTEP is nonzero, it is assumed that the bytes are in correct
multibyte form but contains only ASCII and eight-bit chars.
@@ -9262,7 +9302,7 @@ DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_intern
setup_coding_system (Fcheck_coding_system (coding_system), terminal_coding);
/* We had better not send unsafe characters to terminal. */
terminal_coding->mode |= CODING_MODE_SAFE_ENCODING;
- /* Characer composition should be disabled. */
+ /* Character composition should be disabled. */
terminal_coding->common_flags &= ~CODING_ANNOTATE_COMPOSITION_MASK;
terminal_coding->src_multibyte = 1;
terminal_coding->dst_multibyte = 0;
@@ -9278,7 +9318,7 @@ DEFUN ("set-safe-terminal-coding-system-internal",
CHECK_SYMBOL (coding_system);
setup_coding_system (Fcheck_coding_system (coding_system),
&safe_terminal_coding);
- /* Characer composition should be disabled. */
+ /* Character composition should be disabled. */
safe_terminal_coding.common_flags &= ~CODING_ANNOTATE_COMPOSITION_MASK;
safe_terminal_coding.src_multibyte = 1;
safe_terminal_coding.dst_multibyte = 0;
@@ -9312,7 +9352,7 @@ DEFUN ("set-keyboard-coding-system-internal", Fset_keyboard_coding_system_intern
else
Fcheck_coding_system (coding_system);
setup_coding_system (coding_system, TERMINAL_KEYBOARD_CODING (t));
- /* Characer composition should be disabled. */
+ /* Character composition should be disabled. */
TERMINAL_KEYBOARD_CODING (t)->common_flags
&= ~CODING_ANNOTATE_COMPOSITION_MASK;
return Qnil;
@@ -9680,7 +9720,7 @@ usage: (define-coding-system-internal ...) */)
If Nth element is a list of charset IDs, N is the first byte
of one of them. The list is sorted by dimensions of the
- charsets. A charset of smaller dimension comes firtst. */
+ charsets. A charset of smaller dimension comes first. */
val = Fmake_vector (make_number (256), Qnil);
for (tail = charset_list; CONSP (tail); tail = XCDR (tail))
diff --git a/src/coding.h b/src/coding.h
index 0caa5b2f96f..7233726a250 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -707,6 +707,7 @@ extern Lisp_Object code_convert_string_norecord (Lisp_Object, Lisp_Object,
int);
extern Lisp_Object raw_text_coding_system (Lisp_Object);
extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object);
+extern Lisp_Object complement_process_encoding_system (Lisp_Object);
extern int decode_coding_gap (struct coding_system *,
EMACS_INT, EMACS_INT);
diff --git a/src/config.in b/src/config.in
index 43ebb756215..add2ac73d55 100644
--- a/src/config.in
+++ b/src/config.in
@@ -255,7 +255,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have a gif (or ungif) library. */
#undef HAVE_GIF
-/* Define if we have the GNU TLS library. */
+/* Define if using GnuTLS. */
#undef HAVE_GNUTLS
/* Define to 1 if you have the gpm library (-lgpm). */
@@ -408,6 +408,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `Xext' library (-lXext). */
#undef HAVE_LIBXEXT
+/* Define to 1 if you have the libxml library (-lxml2). */
+#undef HAVE_LIBXML2
+
/* Define to 1 if you have the `Xmu' library (-lXmu). */
#undef HAVE_LIBXMU
@@ -816,9 +819,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the SM library (-lSM). */
#undef HAVE_X_SM
-/* Define to 1 if you have the libxml2 library (-lxml2). */
-#undef HAVE_LIBXML2
-
/* Define to 1 if you want to use the X window system. */
#undef HAVE_X_WINDOWS
@@ -1097,12 +1097,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include config_opsysfile
#include config_machfile
-#if HAVE_GNUTLS
-#define LIBGNUTLS $(LIBGNUTLS_LIBS)
-#else /* not HAVE_GNUTLS */
-#define LIBGNUTLS
-#endif /* not HAVE_GNUTLS */
-
/* Set up some defines, C and LD flags for NeXTstep interface on GNUstep.
(There is probably a better place to do this, but right now the Cocoa
side does this in s/darwin.h and we cannot
@@ -1170,13 +1164,8 @@ SYSTEM_PURESIZE_EXTRA seems like the least likely to cause problems. */
not define __STDC__ (e.g. DEC C by default) or may define it as zero. */
#undef PROTOTYPES
-#ifdef HAVE_STRING_H
#include <string.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
#include <stdlib.h>
-#endif
#ifdef HAVE_ALLOCA_H
# include <alloca.h>
@@ -1211,6 +1200,17 @@ typedef unsigned size_t;
#define NO_RETURN /* nothing */
#endif
+#if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */
+#define NO_INLINE __attribute__((noinline))
+#else
+#define NO_INLINE
+#endif
+
+/* Some versions of GNU/Linux define noinline in their headers. */
+#ifdef noinline
+#undef noinline
+#endif
+
/* These won't be used automatically yet. We also need to know, at least,
that the stack is continuous. */
#ifdef __GNUC__
diff --git a/src/dbusbind.c b/src/dbusbind.c
index ffa02e8e9c9..683b7cb583b 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -19,7 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#ifdef HAVE_DBUS
-#include <stdlib.h>
#include <stdio.h>
#include <dbus/dbus.h>
#include <setjmp.h>
@@ -901,6 +900,9 @@ DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0,
/* Add bus to list of registered buses. */
Vdbus_registered_buses = Fcons (bus, Vdbus_registered_buses);
+ /* We do not want to abort. */
+ putenv ("DBUS_FATAL_WARNINGS=0");
+
/* Return. */
return Qnil;
}
@@ -2161,12 +2163,11 @@ be called when the D-Bus reply message arrives. */);
doc: /* If non-nil, debug messages of D-Bus bindings are raised. */);
#ifdef DBUS_DEBUG
Vdbus_debug = Qt;
- /* We can also set environment DBUS_VERBOSE=1 in order to see more
- traces. */
+ /* We can also set environment variable DBUS_VERBOSE=1 in order to
+ see more traces. This requires libdbus-1 to be configured with
+ --enable-verbose-mode. */
#else
Vdbus_debug = Qnil;
- /* We do not want to abort. */
- setenv ("DBUS_FATAL_WARNINGS", "0", 1);
#endif
Fprovide (intern_c_string ("dbusbind"), Qnil);
diff --git a/src/doc.c b/src/doc.c
index 8ec94f9836c..b887b3149bc 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -25,19 +25,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <sys/file.h> /* Must be after sys/types.h for USG*/
#include <ctype.h>
#include <setjmp.h>
-
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-
#include "lisp.h"
#include "buffer.h"
#include "keyboard.h"
diff --git a/src/dosfns.c b/src/dosfns.c
index e66b50ed3ff..fea70386f18 100644
--- a/src/dosfns.c
+++ b/src/dosfns.c
@@ -24,7 +24,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* The entire file is within this conditional */
#include <stdio.h>
-#include <string.h>
#include <dos.h>
#include <setjmp.h>
#include "lisp.h"
diff --git a/src/emacs.c b/src/emacs.c
index 397b6d1ce88..70a0fae4ebf 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -187,6 +187,9 @@ Lisp_Object Vprevious_system_time_locale;
Lisp code. */
Lisp_Object Vemacs_copyright, Vemacs_version;
+/* Alist of external libraries and files implementing them. */
+Lisp_Object Vdynamic_library_alist;
+
/* If non-zero, emacs should not attempt to use a window-specific code,
but instead should use the virtual terminal under which it was started. */
int inhibit_window_system;
@@ -378,7 +381,7 @@ fatal_error_signal (int sig)
{
fatal_error_in_progress = 1;
- if (sig == SIGTERM || sig == SIGHUP)
+ if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT)
Fkill_emacs (make_number (sig));
shut_down_emacs (sig, 0, Qnil);
@@ -1240,6 +1243,12 @@ main (int argc, char **argv)
#ifdef SIGSYS
signal (SIGSYS, fatal_error_signal);
#endif
+ /* May need special treatment on MS-Windows. See
+ http://lists.gnu.org/archive/html/emacs-devel/2010-09/msg01062.html
+ Please update the doc of kill-emacs, kill-emacs-hook, and
+ NEWS if you change this.
+ */
+ if (noninteractive) signal (SIGINT, fatal_error_signal);
signal (SIGTERM, fatal_error_signal);
#ifdef SIGXCPU
signal (SIGXCPU, fatal_error_signal);
@@ -1988,6 +1997,9 @@ DEFUN ("kill-emacs", Fkill_emacs, Skill_emacs, 0, 1, "P",
If ARG is an integer, return ARG as the exit program code.
If ARG is a string, stuff it as keyboard input.
+This function is called upon receipt of the signals SIGTERM
+or SIGHUP, and upon SIGINT in batch mode.
+
The value of `kill-emacs-hook', if not void,
is a list of functions (of no args),
all of which are called before Emacs is actually killed. */)
@@ -2000,7 +2012,7 @@ all of which are called before Emacs is actually killed. */)
if (feof (stdin))
arg = Qt;
- if (!NILP (Vrun_hooks) && !noninteractive)
+ if (!NILP (Vrun_hooks))
call1 (Vrun_hooks, intern ("kill-emacs-hook"));
UNGCPRO;
@@ -2109,6 +2121,10 @@ shut_down_emacs (int sig, int no_x, Lisp_Object stuff)
#ifndef CANNOT_DUMP
+/* FIXME: maybe this should go into header file, config.h seems the
+ only one appropriate. */
+extern int unexec (const char *, const char *);
+
DEFUN ("dump-emacs", Fdump_emacs, Sdump_emacs, 2, 2, 0,
doc: /* Dump current state of Emacs into executable file FILENAME.
Take symbols from SYMFILE (presumably the file you executed to run Emacs).
@@ -2176,13 +2192,13 @@ You must run Emacs in batch mode in order to dump it. */)
Meanwhile, my_edata is not valid on Windows. */
memory_warnings (my_edata, malloc_warning);
#endif /* not WINDOWSNT */
-#endif
-#if !defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) && !defined SYNC_INPUT
+#if defined (HAVE_GTK_AND_PTHREAD) && !defined SYNC_INPUT
/* Pthread may call malloc before main, and then we will get an endless
loop, because pthread_self (see alloc.c) calls malloc the first time
it is called on some systems. */
reset_malloc_hooks ();
#endif
+#endif /* not SYSTEM_MALLOC */
#ifdef DOUG_LEA_MALLOC
malloc_state_ptr = malloc_get_state ();
#endif
@@ -2190,8 +2206,7 @@ You must run Emacs in batch mode in order to dump it. */)
#ifdef USE_MMAP_FOR_BUFFERS
mmap_set_vars (0);
#endif
- unexec (SDATA (filename),
- !NILP (symfile) ? SDATA (symfile) : 0, my_edata, 0, 0);
+ unexec (SDATA (filename), !NILP (symfile) ? SDATA (symfile) : 0);
#ifdef USE_MMAP_FOR_BUFFERS
mmap_set_vars (1);
#endif
@@ -2421,7 +2436,8 @@ in other similar situations), functions placed on this hook should not
expect to be able to interact with the user. To ask for confirmation,
see `kill-emacs-query-functions' instead.
-The hook is not run in batch mode, i.e., if `noninteractive' is non-nil. */);
+Before Emacs 24.1, the hook was not run in batch mode, i.e., if
+`noninteractive' was non-nil. */);
Vkill_emacs_hook = Qnil;
DEFVAR_INT ("emacs-priority", &emacs_priority,
@@ -2494,6 +2510,24 @@ This is nil during initialization. */);
doc: /* Version numbers of this version of Emacs. */);
Vemacs_version = build_string (emacs_version);
+ DEFVAR_LISP ("dynamic-library-alist", &Vdynamic_library_alist,
+ doc: /* Alist of dynamic libraries vs external files implementing them.
+Each element is a list (LIBRARY FILE...), where the car is a symbol
+representing a supported external library, and the rest are strings giving
+alternate filenames for that library.
+
+Emacs tries to load the library from the files in the order they appear on
+the list; if none is loaded, the running session of Emacs won't have access
+to that library.
+
+Note that image types `pbm' and `xbm' do not need entries in this variable
+because they do not depend on external libraries and are always available.
+
+Also note that this is not a generic facility for accessing external
+libraries; only those already known by Emacs will be loaded. */);
+ Vdynamic_library_alist = Qnil;
+ Fput (intern_c_string ("dynamic-library-alist"), Qrisky_local_variable, Qt);
+
/* Make sure IS_DAEMON starts up as false. */
daemon_pipe[1] = 0;
}
diff --git a/src/eval.c b/src/eval.c
index 6383a672ae3..c07e7a37323 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -186,7 +186,7 @@ init_eval_once (void)
specpdl = (struct specbinding *) xmalloc (specpdl_size * sizeof (struct specbinding));
specpdl_ptr = specpdl;
/* Don't forget to update docs (lispref node "Local Variables"). */
- max_specpdl_size = 1000;
+ max_specpdl_size = 1200; /* 1000 is not enough for CEDET's c-by.el. */
max_lisp_eval_depth = 500;
Vrun_hooks = Qnil;
@@ -3717,8 +3717,10 @@ Output stream used is value of `standard-output'. */)
Lisp_Object tail;
Lisp_Object tem;
struct gcpro gcpro1;
+ Lisp_Object old_print_level = Vprint_level;
- XSETFASTINT (Vprint_level, 3);
+ if (NILP (Vprint_level))
+ XSETFASTINT (Vprint_level, 8);
tail = Qnil;
GCPRO1 (tail);
@@ -3759,7 +3761,7 @@ Output stream used is value of `standard-output'. */)
backlist = backlist->next;
}
- Vprint_level = Qnil;
+ Vprint_level = old_print_level;
UNGCPRO;
return Qnil;
}
diff --git a/src/fileio.c b/src/fileio.c
index 3d08e881e8f..36b6cc3ca8b 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1,7 +1,8 @@
/* File IO for GNU Emacs.
- Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+
+Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997,
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+ 2009, 2010 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -20,11 +21,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <limits.h>
-
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
-
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -71,7 +68,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef WINDOWSNT
#define NOMINMAX 1
#include <windows.h>
-#include <stdlib.h>
#include <fcntl.h>
#endif /* not WINDOWSNT */
@@ -79,7 +75,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "msdos.h"
#include <sys/param.h>
#include <fcntl.h>
-#include <string.h>
#endif
#ifdef DOS_NT
@@ -105,14 +100,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "commands.h"
-#ifndef O_WRONLY
-#define O_WRONLY 1
-#endif
-
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-
#ifndef S_ISLNK
# define lstat stat
#endif
@@ -188,10 +175,6 @@ Lisp_Object Vauto_save_visited_file_name;
/* Whether or not to continue auto-saving after a large deletion. */
Lisp_Object Vauto_save_include_big_deletions;
-/* On NT, specifies the directory separator character, used (eg.) when
- expanding file names. This can be bound to / or \. */
-Lisp_Object Vdirectory_sep_char;
-
#ifdef HAVE_FSYNC
/* Nonzero means skip the call to fsync in Fwrite-region. */
int write_region_inhibit_fsync;
diff --git a/src/filelock.c b/src/filelock.c
index 15ed546bc50..acca7234419 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -31,10 +31,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#include <sys/file.h>
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
-#include <string.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
diff --git a/src/font.c b/src/font.c
index dee55d1e976..aee6b483353 100644
--- a/src/font.c
+++ b/src/font.c
@@ -21,7 +21,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
-#include <stdlib.h>
#include <ctype.h>
#include <setjmp.h>
@@ -3724,6 +3723,58 @@ font_get_frame_data (FRAME_PTR f, struct font_driver *driver)
}
+/* Sets attributes on a font. Any properties that appear in ALIST and
+ BOOLEAN_PROPERTIES or NON_BOOLEAN_PROPERTIES are set on the font.
+ BOOLEAN_PROPERTIES and NON_BOOLEAN_PROPERTIES are NULL-terminated
+ arrays of strings. This function is intended for use by the font
+ drivers to implement their specific font_filter_properties. */
+void
+font_filter_properties (Lisp_Object font,
+ Lisp_Object alist,
+ const char *boolean_properties[],
+ const char *non_boolean_properties[])
+{
+ Lisp_Object it;
+ int i;
+
+ /* Set boolean values to Qt or Qnil */
+ for (i = 0; boolean_properties[i] != NULL; ++i)
+ for (it = alist; ! NILP (it); it = XCDR (it))
+ {
+ Lisp_Object key = XCAR (XCAR (it));
+ Lisp_Object val = XCDR (XCAR (it));
+ char *keystr = SDATA (SYMBOL_NAME (key));
+
+ if (strcmp (boolean_properties[i], keystr) == 0)
+ {
+ const char *str = INTEGERP (val) ? (XINT (val) ? "true" : "false")
+ : SYMBOLP (val) ? (const char *) SDATA (SYMBOL_NAME (val))
+ : "true";
+
+ if (strcmp ("false", str) == 0 || strcmp ("False", str) == 0
+ || strcmp ("FALSE", str) == 0 || strcmp ("FcFalse", str) == 0
+ || strcmp ("off", str) == 0 || strcmp ("OFF", str) == 0
+ || strcmp ("Off", str) == 0)
+ val = Qnil;
+ else
+ val = Qt;
+
+ Ffont_put (font, key, val);
+ }
+ }
+
+ for (i = 0; non_boolean_properties[i] != NULL; ++i)
+ for (it = alist; ! NILP (it); it = XCDR (it))
+ {
+ Lisp_Object key = XCAR (XCAR (it));
+ Lisp_Object val = XCDR (XCAR (it));
+ char *keystr = SDATA (SYMBOL_NAME (key));
+ if (strcmp (non_boolean_properties[i], keystr) == 0)
+ Ffont_put (font, key, val);
+ }
+}
+
+
/* Return the font used to draw character C by FACE at buffer position
POS in window W. If STRING is non-nil, it is a string containing C
at index POS. If C is negative, get C from the current buffer or
@@ -4487,7 +4538,7 @@ DEFUN ("font-variation-glyphs", Ffont_variation_glyphs, Sfont_variation_glyphs,
doc: /* Return a list of variation glyphs for CHAR in FONT-OBJECT.
Each element of the value is a cons (VARIATION-SELECTOR . GLYPH-ID),
where
- VARIATION-SELECTOR is a chracter code of variation selection
+ VARIATION-SELECTOR is a character code of variation selection
(#xFE00..#xFE0F or #xE0100..#xE01EF)
GLYPH-ID is a glyph code of the corresponding variation glyph. */)
(Lisp_Object font_object, Lisp_Object character)
diff --git a/src/font.h b/src/font.h
index c322b8e590f..b2d7e49fa29 100644
--- a/src/font.h
+++ b/src/font.h
@@ -581,7 +581,7 @@ struct font_driver
FONT-ENTITY and it must be opened to check it, return -1. */
int (*has_char) (Lisp_Object font, int c);
- /* Return a glyph code of FONT for characer C (Unicode code point).
+ /* Return a glyph code of FONT for character C (Unicode code point).
If FONT doesn't have such a glyph, return FONT_INVALID_CODE. */
unsigned (*encode_char) (struct font *font, int c);
@@ -821,6 +821,11 @@ extern int font_put_frame_data (FRAME_PTR f,
extern void *font_get_frame_data (FRAME_PTR f,
struct font_driver *driver);
+extern void font_filter_properties (Lisp_Object font,
+ Lisp_Object alist,
+ const char *boolean_properties[],
+ const char *non_boolean_properties[]);
+
#ifdef HAVE_FREETYPE
extern struct font_driver ftfont_driver;
extern void syms_of_ftfont (void);
diff --git a/src/ftfont.c b/src/ftfont.c
index 97bf265a84c..b0d10791379 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -88,7 +88,7 @@ static Lisp_Object ftfont_lookup_cache (Lisp_Object,
enum ftfont_cache_for);
static void ftfont_filter_properties (Lisp_Object font, Lisp_Object alist);
-
+
Lisp_Object ftfont_font_format (FcPattern *, Lisp_Object);
#define SYMBOL_FcChar8(SYM) (FcChar8 *) SDATA (SYMBOL_NAME (SYM))
@@ -260,7 +260,7 @@ ftfont_pattern_entity (FcPattern *p, Lisp_Object extra)
else
{
/* As this font is not scalable, parhaps this is a BDF or PCF
- font. */
+ font. */
FT_Face ft_face;
ASET (entity, FONT_ADSTYLE_INDEX, get_adstyle_property (p));
@@ -2093,7 +2093,7 @@ ftfont_drive_otf (font, spec, in, from, to, out, adjustment)
return to;
}
-static int
+static int
ftfont_try_otf (MFLTFont *font, MFLTOtfSpec *spec,
MFLTGlyphString *in, int from, int to)
{
@@ -2645,42 +2645,7 @@ static const char *ftfont_non_booleans [] = {
static void
ftfont_filter_properties (Lisp_Object font, Lisp_Object alist)
{
- Lisp_Object it;
- int i;
-
- /* Set boolean values to Qt or Qnil */
- for (i = 0; ftfont_booleans[i] != NULL; ++i)
- for (it = alist; ! NILP (it); it = XCDR (it))
- {
- Lisp_Object key = XCAR (XCAR (it));
- Lisp_Object val = XCDR (XCAR (it));
- char *keystr = SDATA (SYMBOL_NAME (key));
-
- if (strcmp (ftfont_booleans[i], keystr) == 0)
- {
- const char *str = SYMBOLP (val) ? SDATA (SYMBOL_NAME (val)) : NULL;
- if (INTEGERP (val)) str = XINT (val) != 0 ? "true" : "false";
- if (str == NULL) str = "true";
-
- val = Qt;
- if (strcmp ("false", str) == 0 || strcmp ("False", str) == 0
- || strcmp ("FALSE", str) == 0 || strcmp ("FcFalse", str) == 0
- || strcmp ("off", str) == 0 || strcmp ("OFF", str) == 0
- || strcmp ("Off", str) == 0)
- val = Qnil;
- Ffont_put (font, key, val);
- }
- }
-
- for (i = 0; ftfont_non_booleans[i] != NULL; ++i)
- for (it = alist; ! NILP (it); it = XCDR (it))
- {
- Lisp_Object key = XCAR (XCAR (it));
- Lisp_Object val = XCDR (XCAR (it));
- char *keystr = SDATA (SYMBOL_NAME (key));
- if (strcmp (ftfont_non_booleans[i], keystr) == 0)
- Ffont_put (font, key, val);
- }
+ font_filter_properties (font, alist, ftfont_booleans, ftfont_non_booleans);
}
diff --git a/src/gnutls.c b/src/gnutls.c
index 37b4341d184..577cca247ee 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -32,7 +32,14 @@ Lisp_Object Qgnutls_e_interrupted, Qgnutls_e_again,
Qgnutls_e_invalid_session, Qgnutls_e_not_ready_for_handshake;
int global_initialized;
-void
+/* The following are for the property list of `gnutls-boot'. */
+Lisp_Object Qgnutls_bootprop_priority;
+Lisp_Object Qgnutls_bootprop_trustfiles;
+Lisp_Object Qgnutls_bootprop_keyfiles;
+Lisp_Object Qgnutls_bootprop_callbacks;
+Lisp_Object Qgnutls_bootprop_loglevel;
+
+static void
emacs_gnutls_handshake (struct Lisp_Process *proc)
{
gnutls_session_t state = proc->gnutls_state;
@@ -43,6 +50,9 @@ emacs_gnutls_handshake (struct Lisp_Process *proc)
if (proc->gnutls_initstage < GNUTLS_STAGE_TRANSPORT_POINTERS_SET)
{
+ /* This is how GnuTLS takes sockets: as file descriptors passed
+ in. For an Emacs process socket, infd and outfd are the
+ same but we use this two-argument version for clarity. */
gnutls_transport_set_ptr2 (state,
(gnutls_transport_ptr_t) (long) proc->infd,
(gnutls_transport_ptr_t) (long) proc->outfd);
@@ -67,8 +77,15 @@ emacs_gnutls_write (int fildes, struct Lisp_Process *proc, char *buf,
register int rtnval, bytes_written;
gnutls_session_t state = proc->gnutls_state;
- if (proc->gnutls_initstage != GNUTLS_STAGE_READY)
+ if (proc->gnutls_initstage != GNUTLS_STAGE_READY) {
+#ifdef EWOULDBLOCK
+ errno = EWOULDBLOCK;
+#endif
+#ifdef EAGAIN
+ errno = EAGAIN;
+#endif
return -1;
+ }
bytes_written = 0;
@@ -76,9 +93,9 @@ emacs_gnutls_write (int fildes, struct Lisp_Process *proc, char *buf,
{
rtnval = gnutls_write (state, buf, nbyte);
- if (rtnval == -1)
+ if (rtnval < 0)
{
- if (errno == EINTR)
+ if (rtnval == GNUTLS_E_AGAIN || rtnval == GNUTLS_E_INTERRUPTED)
continue;
else
return (bytes_written ? bytes_written : -1);
@@ -88,7 +105,6 @@ emacs_gnutls_write (int fildes, struct Lisp_Process *proc, char *buf,
nbyte -= rtnval;
bytes_written += rtnval;
}
- fsync (STDOUT_FILENO);
return (bytes_written);
}
@@ -110,14 +126,15 @@ emacs_gnutls_read (int fildes, struct Lisp_Process *proc, char *buf,
if (rtnval >= 0)
return rtnval;
else
- return 0;
+ return -1;
}
/* convert an integer error to a Lisp_Object; it will be either a
known symbol like `gnutls_e_interrupted' and `gnutls_e_again' or
simply the integer value of the error. GNUTLS_E_SUCCESS is mapped
to Qt. */
-Lisp_Object gnutls_make_error (int error)
+static Lisp_Object
+gnutls_make_error (int error)
{
switch (error)
{
@@ -135,9 +152,9 @@ Lisp_Object gnutls_make_error (int error)
}
DEFUN ("gnutls-get-initstage", Fgnutls_get_initstage, Sgnutls_get_initstage, 1, 1, 0,
- doc: /* Return the GnuTLS init stage of PROCESS.
+ doc: /* Return the GnuTLS init stage of process PROC.
See also `gnutls-boot'. */)
- (Lisp_Object proc)
+ (Lisp_Object proc)
{
CHECK_PROCESS (proc);
@@ -145,19 +162,21 @@ See also `gnutls-boot'. */)
}
DEFUN ("gnutls-errorp", Fgnutls_errorp, Sgnutls_errorp, 1, 1, 0,
- doc: /* Returns t if ERROR (as generated by gnutls_make_error)
-indicates a GnuTLS problem. */)
- (Lisp_Object error)
+ doc: /* Return t if ERROR indicates a GnuTLS problem.
+ERROR is an integer or a symbol with an integer `gnutls-code' property.
+usage: (gnutls-errorp ERROR) */)
+ (Lisp_Object err)
{
- if (EQ (error, Qt)) return Qnil;
+ if (EQ (err, Qt)) return Qnil;
return Qt;
}
DEFUN ("gnutls-error-fatalp", Fgnutls_error_fatalp, Sgnutls_error_fatalp, 1, 1, 0,
- doc: /* Checks if ERROR is fatal.
-ERROR is an integer or a symbol with an integer `gnutls-code' property. */)
- (Lisp_Object err)
+ doc: /* Check if ERROR is fatal.
+ERROR is an integer or a symbol with an integer `gnutls-code' property.
+usage: (gnutls-error-fatalp ERROR) */)
+ (Lisp_Object err)
{
Lisp_Object code;
@@ -186,9 +205,10 @@ ERROR is an integer or a symbol with an integer `gnutls-code' property. */)
}
DEFUN ("gnutls-error-string", Fgnutls_error_string, Sgnutls_error_string, 1, 1, 0,
- doc: /* Returns a description of ERROR.
-ERROR is an integer or a symbol with an integer `gnutls-code' property. */)
- (Lisp_Object err)
+ doc: /* Return a description of ERROR.
+ERROR is an integer or a symbol with an integer `gnutls-code' property.
+usage: (gnutls-error-string ERROR) */)
+ (Lisp_Object err)
{
Lisp_Object code;
@@ -214,9 +234,9 @@ ERROR is an integer or a symbol with an integer `gnutls-code' property. */)
}
DEFUN ("gnutls-deinit", Fgnutls_deinit, Sgnutls_deinit, 1, 1, 0,
- doc: /* Deallocate GNU TLS resources associated with PROCESS.
+ doc: /* Deallocate GnuTLS resources associated with process PROC.
See also `gnutls-init'. */)
- (Lisp_Object proc)
+ (Lisp_Object proc)
{
gnutls_session_t state;
@@ -232,10 +252,11 @@ See also `gnutls-init'. */)
return Qt;
}
-/* Initializes global GNU TLS state to defaults.
-Call `gnutls-global-deinit' when GNU TLS usage is no longer needed.
+/* Initializes global GnuTLS state to defaults.
+Call `gnutls-global-deinit' when GnuTLS usage is no longer needed.
Returns zero on success. */
-Lisp_Object gnutls_emacs_global_init (void)
+static Lisp_Object
+gnutls_emacs_global_init (void)
{
int ret = GNUTLS_E_SUCCESS;
@@ -247,9 +268,10 @@ Lisp_Object gnutls_emacs_global_init (void)
return gnutls_make_error (ret);
}
-/* Deinitializes global GNU TLS state.
+/* Deinitializes global GnuTLS state.
See also `gnutls-global-init'. */
-Lisp_Object gnutls_emacs_global_deinit (void)
+static Lisp_Object
+gnutls_emacs_global_deinit (void)
{
if (global_initialized)
gnutls_global_deinit ();
@@ -259,40 +281,48 @@ Lisp_Object gnutls_emacs_global_deinit (void)
return gnutls_make_error (GNUTLS_E_SUCCESS);
}
-static void gnutls_log_function (int level, const char* string)
+static void
+gnutls_log_function (int level, const char* string)
+{
+ message ("gnutls.c: [%d] %s", level, string);
+}
+
+static void
+gnutls_log_function2 (int level, const char* string, const char* extra)
{
- message("gnutls.c: [%d] %s", level, string);
+ message ("gnutls.c: [%d] %s %s", level, string, extra);
}
-DEFUN ("gnutls-boot", Fgnutls_boot, Sgnutls_boot, 3, 7, 0,
- doc: /* Initializes client-mode GnuTLS for process PROC.
+DEFUN ("gnutls-boot", Fgnutls_boot, Sgnutls_boot, 3, 3, 0,
+ doc: /* Initialize GnuTLS client for process PROC with TYPE+PROPLIST.
Currently only client mode is supported. Returns a success/failure
value you can check with `gnutls-errorp'.
-PRIORITY_STRING is a string describing the priority.
-TYPE is either `gnutls-anon' or `gnutls-x509pki'.
-TRUSTFILE is a PEM encoded trust file for `gnutls-x509pki'.
-KEYFILE is ... for `gnutls-x509pki' (TODO).
-CALLBACK is ... for `gnutls-x509pki' (TODO).
-LOGLEVEL is the debug level requested from GnuTLS, try 4.
+TYPE is a symbol, either `gnutls-anon' or `gnutls-x509pki'.
+PROPLIST is a property list with the following keys:
-LOGLEVEL will be set for this process AND globally for GnuTLS. So if
-you set it higher or lower at any point, it affects global debugging.
+:priority is a GnuTLS priority string, defaults to "NORMAL".
+:trustfiles is a list of PEM-encoded trust files for `gnutls-x509pki'.
+:keyfiles is a list of PEM-encoded key files for `gnutls-x509pki'.
+:callbacks is an alist of callback functions (TODO).
+:loglevel is the debug level requested from GnuTLS, try 4.
+
+The debug level will be set for this process AND globally for GnuTLS.
+So if you set it higher or lower at any point, it affects global
+debugging.
Note that the priority is set on the client. The server does not use
the protocols's priority except for disabling protocols that were not
specified.
-Processes must be initialized with this function before other GNU TLS
+Processes must be initialized with this function before other GnuTLS
functions are used. This function allocates resources which can only
be deallocated by calling `gnutls-deinit' or by calling it again.
Each authentication type may need additional information in order to
-work. For X.509 PKI (`gnutls-x509pki'), you need TRUSTFILE and
-KEYFILE and optionally CALLBACK. */)
- (Lisp_Object proc, Lisp_Object priority_string, Lisp_Object type,
- Lisp_Object trustfile, Lisp_Object keyfile, Lisp_Object callback,
- Lisp_Object loglevel)
+work. For X.509 PKI (`gnutls-x509pki'), you probably need at least
+one trustfile (usually a CA bundle). */)
+ (Lisp_Object proc, Lisp_Object type, Lisp_Object proplist)
{
int ret = GNUTLS_E_SUCCESS;
@@ -305,10 +335,25 @@ KEYFILE and optionally CALLBACK. */)
gnutls_certificate_credentials_t x509_cred;
gnutls_anon_client_credentials_t anon_cred;
Lisp_Object global_init;
+ char* priority_string_ptr = "NORMAL"; /* default priority string. */
+ Lisp_Object tail;
+
+ /* Placeholders for the property list elements. */
+ Lisp_Object priority_string;
+ Lisp_Object trustfiles;
+ Lisp_Object keyfiles;
+ Lisp_Object callbacks;
+ Lisp_Object loglevel;
CHECK_PROCESS (proc);
CHECK_SYMBOL (type);
- CHECK_STRING (priority_string);
+ CHECK_LIST (proplist);
+
+ priority_string = Fplist_get (proplist, Qgnutls_bootprop_priority);
+ trustfiles = Fplist_get (proplist, Qgnutls_bootprop_trustfiles);
+ keyfiles = Fplist_get (proplist, Qgnutls_bootprop_keyfiles);
+ callbacks = Fplist_get (proplist, Qgnutls_bootprop_callbacks);
+ loglevel = Fplist_get (proplist, Qgnutls_bootprop_loglevel);
state = XPROCESS (proc)->gnutls_state;
XPROCESS (proc)->gnutls_p = 1;
@@ -387,29 +432,49 @@ KEYFILE and optionally CALLBACK. */)
if (EQ (type, Qgnutls_x509pki))
{
- if (STRINGP (trustfile))
+ for (tail = trustfiles; !NILP (tail); tail = Fcdr (tail))
{
- GNUTLS_LOG (1, max_log_level, "setting the trustfile");
- ret = gnutls_certificate_set_x509_trust_file
- (x509_cred,
- SDATA (trustfile),
- file_format);
-
- if (ret < GNUTLS_E_SUCCESS)
- return gnutls_make_error (ret);
- }
+ Lisp_Object trustfile = Fcar (tail);
+ if (STRINGP (trustfile))
+ {
+ GNUTLS_LOG2 (1, max_log_level, "setting the trustfile: ",
+ SDATA (trustfile));
+ ret = gnutls_certificate_set_x509_trust_file
+ (x509_cred,
+ SDATA (trustfile),
+ file_format);
+
+ if (ret < GNUTLS_E_SUCCESS)
+ return gnutls_make_error (ret);
+ }
+ else
+ {
+ error ("Sorry, GnuTLS can't use non-string trustfile %s",
+ trustfile);
+ }
+ }
- if (STRINGP (keyfile))
+ for (tail = keyfiles; !NILP (tail); tail = Fcdr (tail))
{
- GNUTLS_LOG (1, max_log_level, "setting the keyfile");
- ret = gnutls_certificate_set_x509_crl_file
- (x509_cred,
- SDATA (keyfile),
- file_format);
-
- if (ret < GNUTLS_E_SUCCESS)
- return gnutls_make_error (ret);
- }
+ Lisp_Object keyfile = Fcar (tail);
+ if (STRINGP (keyfile))
+ {
+ GNUTLS_LOG2 (1, max_log_level, "setting the keyfile: ",
+ SDATA (keyfile));
+ ret = gnutls_certificate_set_x509_crl_file
+ (x509_cred,
+ SDATA (keyfile),
+ file_format);
+
+ if (ret < GNUTLS_E_SUCCESS)
+ return gnutls_make_error (ret);
+ }
+ else
+ {
+ error ("Sorry, GnuTLS can't use non-string keyfile %s",
+ keyfile);
+ }
+ }
}
GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_FILES;
@@ -425,11 +490,23 @@ KEYFILE and optionally CALLBACK. */)
GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_INIT;
+ if (STRINGP (priority_string))
+ {
+ priority_string_ptr = (char*) SDATA (priority_string);
+ GNUTLS_LOG2 (1, max_log_level, "got non-default priority string:",
+ priority_string_ptr);
+ }
+ else
+ {
+ GNUTLS_LOG2 (1, max_log_level, "using default priority string:",
+ priority_string_ptr);
+ }
+
GNUTLS_LOG (1, max_log_level, "setting the priority string");
- ret = gnutls_priority_set_direct(state,
- (char*) SDATA (priority_string),
- NULL);
+ ret = gnutls_priority_set_direct (state,
+ priority_string_ptr,
+ NULL);
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
@@ -466,11 +543,11 @@ KEYFILE and optionally CALLBACK. */)
DEFUN ("gnutls-bye", Fgnutls_bye,
Sgnutls_bye, 2, 2, 0,
- doc: /* Terminate current GNU TLS connection for PROCESS.
+ doc: /* Terminate current GnuTLS connection for process PROC.
The connection should have been initiated using `gnutls-handshake'.
If CONT is not nil the TLS connection gets terminated and further
-receives and sends will be disallowed. If the return value is zero you
+receives and sends will be disallowed. If the return value is zero you
may continue using the connection. If CONT is nil, GnuTLS actually
sends an alert containing a close request and waits for the peer to
reply with the same message. In order to reuse the connection you
@@ -507,6 +584,21 @@ syms_of_gnutls (void)
Qgnutls_x509pki = intern_c_string ("gnutls-x509pki");
staticpro (&Qgnutls_x509pki);
+ Qgnutls_bootprop_priority = intern_c_string (":priority");
+ staticpro (&Qgnutls_bootprop_priority);
+
+ Qgnutls_bootprop_trustfiles = intern_c_string (":trustfiles");
+ staticpro (&Qgnutls_bootprop_trustfiles);
+
+ Qgnutls_bootprop_keyfiles = intern_c_string (":keyfiles");
+ staticpro (&Qgnutls_bootprop_keyfiles);
+
+ Qgnutls_bootprop_callbacks = intern_c_string (":callbacks");
+ staticpro (&Qgnutls_bootprop_callbacks);
+
+ Qgnutls_bootprop_loglevel = intern_c_string (":loglevel");
+ staticpro (&Qgnutls_bootprop_loglevel);
+
Qgnutls_e_interrupted = intern_c_string ("gnutls-e-interrupted");
staticpro (&Qgnutls_e_interrupted);
Fput (Qgnutls_e_interrupted, Qgnutls_code,
diff --git a/src/gnutls.h b/src/gnutls.h
index bcf9776963f..2669317e97a 100644
--- a/src/gnutls.h
+++ b/src/gnutls.h
@@ -48,6 +48,8 @@ typedef enum
#define GNUTLS_LOG(level, max, string) if (level <= max) { gnutls_log_function (level, "(Emacs) " string); }
+#define GNUTLS_LOG2(level, max, string, extra) if (level <= max) { gnutls_log_function2 (level, "(Emacs) " string, extra); }
+
int
emacs_gnutls_write (int fildes, struct Lisp_Process *proc, char *buf,
unsigned int nbyte);
diff --git a/src/gtkutil.c b/src/gtkutil.c
index f82be62965d..3b7e6888753 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -20,7 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#ifdef USE_GTK
-#include <string.h>
#include <signal.h>
#include <stdio.h>
#include <setjmp.h>
diff --git a/src/image.c b/src/image.c
index 3c74c516d3f..4cdd7f2bbab 100644
--- a/src/image.c
+++ b/src/image.c
@@ -567,10 +567,6 @@ static struct image_type *image_types;
Lisp_Object Vimage_types;
-/* An alist of image types and libraries that implement the type. */
-
-Lisp_Object Vimage_library_alist;
-
/* Cache for delayed-loading image types. */
static Lisp_Object Vimage_type_cache;
@@ -645,7 +641,7 @@ lookup_image_type (Lisp_Object symbol)
struct image_type *type;
/* We must initialize the image-type if it hasn't been already. */
- if (NILP (Finit_image_library (symbol, Vimage_library_alist)))
+ if (NILP (Finit_image_library (symbol, Vdynamic_library_alist)))
return 0; /* unimplemented */
for (type = image_types; type; type = type->next)
@@ -1914,7 +1910,7 @@ mark_image_cache (struct image_cache *c)
#ifdef HAVE_NTGUI
/* Macro for defining functions that will be loaded from image DLLs. */
-#define DEF_IMGLIB_FN(func) int (FAR CDECL *fn_##func)()
+#define DEF_IMGLIB_FN(func,args) int (FAR CDECL *fn_##func)args
/* Macro for loading those image functions from the library. */
#define LOAD_IMGLIB_FN(lib,func) { \
@@ -1923,10 +1919,11 @@ mark_image_cache (struct image_cache *c)
}
/* Load a DLL implementing an image type.
- The `image-library-alist' variable associates a symbol,
- identifying an image type, to a list of possible filenames.
+ The argument LIBRARIES is usually the variable
+ `dynamic-library-alist', which associates a symbol, identifying
+ an external DLL library, to a list of possible filenames.
The function returns NULL if no library could be loaded for
- the given image type, or if the library was previously loaded;
+ the given symbol, or if the library was previously loaded;
else the handle of the DLL. */
static HMODULE
w32_delayed_load (Lisp_Object libraries, Lisp_Object type)
@@ -3268,10 +3265,12 @@ xpm_free_colors (Display *dpy, Colormap cmap, Pixel *pixels, int npixels, void *
/* XPM library details. */
-DEF_IMGLIB_FN (XpmFreeAttributes);
-DEF_IMGLIB_FN (XpmCreateImageFromBuffer);
-DEF_IMGLIB_FN (XpmReadFileToImage);
-DEF_IMGLIB_FN (XImageFree);
+DEF_IMGLIB_FN (XpmFreeAttributes, (XpmAttributes *));
+DEF_IMGLIB_FN (XpmCreateImageFromBuffer, (Display *, char *, xpm_XImage **,
+ xpm_XImage **, XpmAttributes *));
+DEF_IMGLIB_FN (XpmReadFileToImage, (Display *, char *, xpm_XImage **,
+ xpm_XImage **, XpmAttributes *));
+DEF_IMGLIB_FN (XImageFree, (xpm_XImage *));
static int
init_xpm_functions (Lisp_Object libraries)
@@ -5439,27 +5438,31 @@ png_image_p (Lisp_Object object)
#ifdef HAVE_NTGUI
/* PNG library details. */
-DEF_IMGLIB_FN (png_get_io_ptr);
-DEF_IMGLIB_FN (png_sig_cmp);
-DEF_IMGLIB_FN (png_create_read_struct);
-DEF_IMGLIB_FN (png_create_info_struct);
-DEF_IMGLIB_FN (png_destroy_read_struct);
-DEF_IMGLIB_FN (png_set_read_fn);
-DEF_IMGLIB_FN (png_set_sig_bytes);
-DEF_IMGLIB_FN (png_read_info);
-DEF_IMGLIB_FN (png_get_IHDR);
-DEF_IMGLIB_FN (png_get_valid);
-DEF_IMGLIB_FN (png_set_strip_16);
-DEF_IMGLIB_FN (png_set_expand);
-DEF_IMGLIB_FN (png_set_gray_to_rgb);
-DEF_IMGLIB_FN (png_set_background);
-DEF_IMGLIB_FN (png_get_bKGD);
-DEF_IMGLIB_FN (png_read_update_info);
-DEF_IMGLIB_FN (png_get_channels);
-DEF_IMGLIB_FN (png_get_rowbytes);
-DEF_IMGLIB_FN (png_read_image);
-DEF_IMGLIB_FN (png_read_end);
-DEF_IMGLIB_FN (png_error);
+DEF_IMGLIB_FN (png_get_io_ptr, (png_structp));
+DEF_IMGLIB_FN (png_sig_cmp, (png_bytep, png_size_t, png_size_t));
+DEF_IMGLIB_FN (png_create_read_struct, (png_const_charp, png_voidp,
+ png_error_ptr, png_error_ptr));
+DEF_IMGLIB_FN (png_create_info_struct, (png_structp));
+DEF_IMGLIB_FN (png_destroy_read_struct, (png_structpp, png_infopp, png_infopp));
+DEF_IMGLIB_FN (png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
+DEF_IMGLIB_FN (png_set_sig_bytes, (png_structp, int));
+DEF_IMGLIB_FN (png_read_info, (png_structp, png_infop));
+DEF_IMGLIB_FN (png_get_IHDR, (png_structp, png_infop,
+ png_uint_32 *, png_uint_32 *,
+ int *, int *, int *, int *, int *));
+DEF_IMGLIB_FN (png_get_valid, (png_structp, png_infop, png_uint_32));
+DEF_IMGLIB_FN (png_set_strip_16, (png_structp));
+DEF_IMGLIB_FN (png_set_expand, (png_structp));
+DEF_IMGLIB_FN (png_set_gray_to_rgb, (png_structp));
+DEF_IMGLIB_FN (png_set_background, (png_structp, png_color_16p,
+ int, int, double));
+DEF_IMGLIB_FN (png_get_bKGD, (png_structp, png_infop, png_color_16p *));
+DEF_IMGLIB_FN (png_read_update_info, (png_structp, png_infop));
+DEF_IMGLIB_FN (png_get_channels, (png_structp, png_infop));
+DEF_IMGLIB_FN (png_get_rowbytes, (png_structp, png_infop));
+DEF_IMGLIB_FN (png_read_image, (png_structp, png_bytepp));
+DEF_IMGLIB_FN (png_read_end, (png_structp, png_infop));
+DEF_IMGLIB_FN (png_error, (png_structp, png_const_charp));
static int
init_png_functions (Lisp_Object libraries)
@@ -6042,14 +6045,14 @@ jpeg_image_p (Lisp_Object object)
#ifdef HAVE_NTGUI
/* JPEG library details. */
-DEF_IMGLIB_FN (jpeg_CreateDecompress);
-DEF_IMGLIB_FN (jpeg_start_decompress);
-DEF_IMGLIB_FN (jpeg_finish_decompress);
-DEF_IMGLIB_FN (jpeg_destroy_decompress);
-DEF_IMGLIB_FN (jpeg_read_header);
-DEF_IMGLIB_FN (jpeg_read_scanlines);
-DEF_IMGLIB_FN (jpeg_std_error);
-DEF_IMGLIB_FN (jpeg_resync_to_restart);
+DEF_IMGLIB_FN (jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
+DEF_IMGLIB_FN (jpeg_start_decompress, (j_decompress_ptr));
+DEF_IMGLIB_FN (jpeg_finish_decompress, (j_decompress_ptr));
+DEF_IMGLIB_FN (jpeg_destroy_decompress, (j_decompress_ptr));
+DEF_IMGLIB_FN (jpeg_read_header, (j_decompress_ptr, boolean));
+DEF_IMGLIB_FN (jpeg_read_scanlines, (j_decompress_ptr, JSAMPARRAY, JDIMENSION));
+DEF_IMGLIB_FN (jpeg_std_error, (struct jpeg_error_mgr *));
+DEF_IMGLIB_FN (jpeg_resync_to_restart, (j_decompress_ptr, int));
static int
init_jpeg_functions (Lisp_Object libraries)
@@ -6575,14 +6578,17 @@ tiff_image_p (Lisp_Object object)
#ifdef HAVE_NTGUI
/* TIFF library details. */
-DEF_IMGLIB_FN (TIFFSetErrorHandler);
-DEF_IMGLIB_FN (TIFFSetWarningHandler);
-DEF_IMGLIB_FN (TIFFOpen);
-DEF_IMGLIB_FN (TIFFClientOpen);
-DEF_IMGLIB_FN (TIFFGetField);
-DEF_IMGLIB_FN (TIFFReadRGBAImage);
-DEF_IMGLIB_FN (TIFFClose);
-DEF_IMGLIB_FN (TIFFSetDirectory);
+DEF_IMGLIB_FN (TIFFSetErrorHandler, (TIFFErrorHandler));
+DEF_IMGLIB_FN (TIFFSetWarningHandler, (TIFFErrorHandler));
+DEF_IMGLIB_FN (TIFFOpen, (const char *, const char *));
+DEF_IMGLIB_FN (TIFFClientOpen, (const char *, const char *, thandle_t,
+ TIFFReadWriteProc, TIFFReadWriteProc,
+ TIFFSeekProc, TIFFCloseProc, TIFFSizeProc,
+ TIFFMapFileProc, TIFFUnmapFileProc));
+DEF_IMGLIB_FN (TIFFGetField, (TIFF *, ttag_t, ...));
+DEF_IMGLIB_FN (TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, int));
+DEF_IMGLIB_FN (TIFFClose, (TIFF *));
+DEF_IMGLIB_FN (TIFFSetDirectory, (TIFF *, tdir_t));
static int
init_tiff_functions (Lisp_Object libraries)
@@ -6787,8 +6793,9 @@ tiff_load (struct frame *f, struct image *img)
memsrc.len = SBYTES (specified_data);
memsrc.index = 0;
- /* Casting return value avoids a GCC warning on W32. */
- tiff = (TIFF *)fn_TIFFClientOpen ("memory_source", "r", &memsrc,
+ /* Casting arguments return value avoids a GCC warning on W32. */
+ tiff = (TIFF *)fn_TIFFClientOpen ("memory_source", "r",
+ (thandle_t) &memsrc,
(TIFFReadWriteProc) tiff_read_from_memory,
(TIFFReadWriteProc) tiff_write_from_memory,
tiff_seek_in_memory,
@@ -7024,10 +7031,10 @@ gif_image_p (Lisp_Object object)
#ifdef HAVE_NTGUI
/* GIF library details. */
-DEF_IMGLIB_FN (DGifCloseFile);
-DEF_IMGLIB_FN (DGifSlurp);
-DEF_IMGLIB_FN (DGifOpen);
-DEF_IMGLIB_FN (DGifOpenFileName);
+DEF_IMGLIB_FN (DGifCloseFile, (GifFileType *));
+DEF_IMGLIB_FN (DGifSlurp, (GifFileType *));
+DEF_IMGLIB_FN (DGifOpen, (void *, InputFunc));
+DEF_IMGLIB_FN (DGifOpenFileName, (const char *));
static int
init_gif_functions (Lisp_Object libraries)
@@ -8583,7 +8590,7 @@ Return non-nil if TYPE is a supported image type.
Image types pbm and xbm are prebuilt; other types are loaded here.
Libraries to load are specified in alist LIBRARIES (usually, the value
-of `image-library-alist', which see). */)
+of `dynamic-library-alist', which see). */)
(Lisp_Object type, Lisp_Object libraries)
{
Lisp_Object tested;
@@ -8659,20 +8666,6 @@ Each element of the list is a symbol for an image type, like 'jpeg or 'png.
To check whether it is really supported, use `image-type-available-p'. */);
Vimage_types = Qnil;
- DEFVAR_LISP ("image-library-alist", &Vimage_library_alist,
- doc: /* Alist of image types vs external libraries needed to display them.
-
-Each element is a list (IMAGE-TYPE LIBRARY...), where the car is a symbol
-representing a supported image type, and the rest are strings giving
-alternate filenames for the corresponding external libraries.
-
-Emacs tries to load the libraries in the order they appear on the
-list; if none is loaded, the running session of Emacs won't
-support the image type. Types 'pbm and 'xbm don't need to be
-listed; they are always supported. */);
- Vimage_library_alist = Qnil;
- Fput (intern_c_string ("image-library-alist"), Qrisky_local_variable, Qt);
-
DEFVAR_LISP ("max-image-size", &Vmax_image_size,
doc: /* Maximum size of images.
Emacs will not load an image into memory if its pixel width or
@@ -8718,11 +8711,11 @@ non-numeric, there is no explicit limit on the size of images. */);
staticpro (&QCheuristic_mask);
QCindex = intern_c_string (":index");
staticpro (&QCindex);
- QCgeometry = intern (":geometry");
+ QCgeometry = intern_c_string (":geometry");
staticpro (&QCgeometry);
- QCcrop = intern (":crop");
+ QCcrop = intern_c_string (":crop");
staticpro (&QCcrop);
- QCrotation = intern (":rotation");
+ QCrotation = intern_c_string (":rotation");
staticpro (&QCrotation);
QCmatrix = intern_c_string (":matrix");
staticpro (&QCmatrix);
@@ -8785,7 +8778,7 @@ non-numeric, there is no explicit limit on the size of images. */);
#endif
#if defined (HAVE_IMAGEMAGICK)
- Qimagemagick = intern ("imagemagick");
+ Qimagemagick = intern_c_string ("imagemagick");
staticpro (&Qimagemagick);
ADD_IMAGE_TYPE (Qimagemagick);
#endif
diff --git a/src/keyboard.c b/src/keyboard.c
index b77689bde06..7f770ae4df1 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -62,9 +62,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <unistd.h>
#endif
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
/* This is to get the definitions of the XK_ symbols. */
#ifdef HAVE_X_WINDOWS
@@ -647,18 +645,6 @@ static int store_user_signal_events (void);
static int cannot_suspend;
-/* Install the string STR as the beginning of the string of echoing,
- so that it serves as a prompt for the next character.
- Also start echoing. */
-
-void
-echo_prompt (Lisp_Object str)
-{
- current_kboard->echo_string = str;
- current_kboard->echo_after_prompt = SCHARS (str);
- echo_now ();
-}
-
/* Add C to the echo string, if echoing is going on.
C can be a character, which is printed prettily ("M-C-x" and all that
jazz), or a symbol, whose name is printed. */
@@ -757,6 +743,9 @@ echo_dash (void)
if (NILP (current_kboard->echo_string))
return;
+ if (this_command_key_count == 0)
+ return;
+
if (!current_kboard->immediate_echo
&& SCHARS (current_kboard->echo_string) == 0)
return;
@@ -1786,7 +1775,8 @@ command_loop_1 (void)
this_single_command_key_start = 0;
}
- if (!NILP (current_buffer->mark_active) && !NILP (Vrun_hooks))
+ if (!NILP (current_buffer->mark_active)
+ && !NILP (Vrun_hooks))
{
/* In Emacs 22, setting transient-mark-mode to `only' was a
way of turning it on for just one command. This usage is
@@ -1805,6 +1795,9 @@ command_loop_1 (void)
/* Even if not deactivating the mark, set PRIMARY if
`select-active-regions' is non-nil. */
if (!NILP (Fwindow_system (Qnil))
+ /* Even if mark_active is non-nil, the actual buffer
+ marker may not have been set yet (Bug#7044). */
+ && XMARKER (current_buffer->mark)->buffer
&& (EQ (Vselect_active_regions, Qonly)
? EQ (CAR_SAFE (Vtransient_mark_mode), Qonly)
: (!NILP (Vselect_active_regions)
@@ -9123,7 +9116,14 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
if (INTERACTIVE)
{
if (!NILP (prompt))
- echo_prompt (prompt);
+ {
+ /* Install the string STR as the beginning of the string of
+ echoing, so that it serves as a prompt for the next
+ character. */
+ current_kboard->echo_string = prompt;
+ current_kboard->echo_after_prompt = SCHARS (prompt);
+ echo_now ();
+ }
else if (cursor_in_echo_area
&& (FLOATP (Vecho_keystrokes) || INTEGERP (Vecho_keystrokes))
&& NILP (Fzerop (Vecho_keystrokes)))
diff --git a/src/lisp.h b/src/lisp.h
index d942e792957..89d01ec6872 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3328,6 +3328,7 @@ extern Lisp_Object Vbefore_init_time, Vafter_init_time;
extern Lisp_Object Vinstallation_directory;
extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
extern Lisp_Object Qfile_name_handler_alist;
+extern Lisp_Object Vdynamic_library_alist;
extern void (*fatal_error_signal_hook) (void);
EXFUN (Fkill_emacs, 1) NO_RETURN;
#if HAVE_SETLOCALE
diff --git a/src/lread.c b/src/lread.c
index 64633a6e442..e150078f6e2 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -54,12 +54,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <locale.h>
#endif /* HAVE_SETLOCALE */
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
#ifdef HAVE_FSEEKO
#define file_offset off_t
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 752a3c211b3..21bdeb8443f 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -37,7 +37,7 @@ TEMACS = $(BLD)/temacs.exe
TEMACS_TMP = $(BLD)/temacs.bin
TLIB0 = $(BLD)/temacs0.$(A)
TLIB1 = $(BLD)/temacs1.$(A)
-TLIBW32 = $(BLD)/temacw32.$(A)
+TLIB2 = $(BLD)/temacs2.$(A)
TOBJ = $(BLD)/firstfile.$(O)
TRES = $(BLD)/emacs.res
TLASTLIB = $(BLD)/lastfile.$(A)
@@ -94,8 +94,9 @@ OBJ1 = $(BLD)/alloc.$(O) \
$(BLD)/scroll.$(O) \
$(BLD)/search.$(O) \
$(BLD)/sound.$(O) \
- $(BLD)/syntax.$(O) \
- $(BLD)/sysdep.$(O) \
+ $(BLD)/syntax.$(O)
+
+OBJ2 = $(BLD)/sysdep.$(O) \
$(BLD)/term.$(O) \
$(BLD)/tparam.$(O) \
$(BLD)/undo.$(O) \
@@ -125,28 +126,27 @@ OBJ1 = $(BLD)/alloc.$(O) \
$(BLD)/fringe.$(O) \
$(BLD)/image.$(O) \
$(BLD)/terminal.$(O) \
- $(BLD)/menu.$(O)
-
-WIN32OBJ = $(BLD)/w32term.$(O) \
- $(BLD)/w32xfns.$(O) \
- $(BLD)/w32fns.$(O) \
- $(BLD)/xfaces.$(O) \
- $(BLD)/w32select.$(O) \
- $(BLD)/w32menu.$(O) \
- $(BLD)/w32reg.$(O)
-
-FONTOBJ = $(BLD)/w32font.$(O) $(BLD)/w32uniscribe.$(O)
+ $(BLD)/menu.$(O) \
+ $(BLD)/w32term.$(O) \
+ $(BLD)/w32xfns.$(O) \
+ $(BLD)/w32fns.$(O) \
+ $(BLD)/xfaces.$(O) \
+ $(BLD)/w32select.$(O) \
+ $(BLD)/w32menu.$(O) \
+ $(BLD)/w32reg.$(O) \
+ $(BLD)/w32font.$(O) \
+ $(BLD)/w32uniscribe.$(O)
LIBS = $(TLIB0) \
$(TLIB1) \
- $(TLIBW32) \
+ $(TLIB2) \
$(TLASTLIB) \
$(WINMM) \
$(ADVAPI32) \
$(GDI32) \
$(COMDLG32) \
$(USER32) \
- $(MPR) \
+ $(MPR) \
$(SHELL32) \
$(WINSPOOL) \
$(OLE32) \
@@ -174,7 +174,7 @@ $(EMACS): $(DOC) $(TEMACS)
# (it is the preload heap size in MB).
#
temacs: stamp_BLD $(TEMACS)
-$(TEMACS): $(TLIB0) $(TLIB1) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES) \
+$(TEMACS): $(TLIB0) $(TLIB1) $(TLIB2) $(TLASTLIB) $(TOBJ) $(TRES) \
../nt/$(BLD)/addsection.exe
$(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
"../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 21
@@ -190,16 +190,14 @@ make-buildobj-CMD:
echo #define BUILDOBJ ^"\> buildobj.h
echo $(OBJ0) \>> buildobj.h
echo $(OBJ1) \>> buildobj.h
- echo $(WIN32OBJ) \>> buildobj.h
- echo $(FONTOBJ) \>> buildobj.h
+ echo $(OBJ2) \>> buildobj.h
echo ^">> buildobj.h
make-buildobj-SH:
echo '#define BUILDOBJ $(DQUOTE)\' > buildobj.h
echo $(OBJ0) '\' >> buildobj.h
echo $(OBJ1) '\' >> buildobj.h
- echo $(WIN32OBJ) '\' >> buildobj.h
- echo $(FONTOBJ) '\' >> buildobj.h
+ echo $(OBJ2) '\' >> buildobj.h
echo '$(DQUOTE)' >> buildobj.h
bootstrap: bootstrap-emacs
@@ -249,7 +247,7 @@ $(TLIB0): $(OBJ0)
$(TLIB1): $(OBJ1)
- $(DEL) $@
$(AR) $(AR_OUT)$@ $(ALL_DEPS)
-$(TLIBW32): $(WIN32OBJ) $(FONTOBJ)
+$(TLIB2): $(OBJ2)
- $(DEL) $@
$(AR) $(AR_OUT)$@ $(ALL_DEPS)
@@ -293,6 +291,52 @@ cleanall: clean
- $(DEL_TREE) oo
- $(DEL_TREE) oo-spd
+## Arrange to make a tags table TAGS-LISP for ../lisp,
+## plus TAGS for the C files, which includes ../lisp/TAGS by reference.
+##
+## This works only with GNU Make.
+
+TAGS: $(OBJ0) $(OBJ1) $(OBJ2)
+ $(MAKE) $(MFLAGS) TAGS-$(MAKETYPE)
+
+TAGS-LISP: $(OBJ0) $(OBJ1) $(OBJ2)
+ $(MAKE) $(MFLAGS) TAGS-LISP-$(MAKETYPE)
+
+TAGS-gmake:
+ ../lib-src/$(BLD)/etags.exe --include=TAGS-LISP --include=../nt/TAGS \
+ --regex=@../nt/emacs-src.tags \
+ $(patsubst $(BLD)%.$(O),$(CURDIR)%.c,$(OBJ0))
+ ../lib-src/$(BLD)/etags.exe -a --regex=@../nt/emacs-src.tags \
+ $(patsubst $(BLD)%.$(O),$(CURDIR)%.c,$(OBJ1))
+ ../lib-src/$(BLD)/etags.exe -a --regex=@../nt/emacs-src.tags \
+ $(patsubst $(BLD)%.$(O),$(CURDIR)%.c,$(OBJ2)) \
+ $(CURDIR)/*.h
+
+TAGS-nmake:
+ echo This target is not supported with NMake
+ exit -1
+
+frc:
+TAGS-LISP-gmake: frc
+ $(MAKE) $(MFLAGS) -C ../lisp TAGS-LISP DEST=../src
+
+TAGS-LISP-nmake:
+ echo This target is not supported with NMake
+ exit -1
+
+../nt/TAGS: frc
+ $(MAKE) $(MFLAGS) nt-TAGS-$(MAKETYPE)
+
+nt-TAGS-gmake:
+ $(MAKE) $(MFLAGS) -C ../nt TAGS
+
+nt-TAGS-nmake:
+ echo This target is not supported with NMake
+ exit -1
+
+full-tags: TAGS TAGS-LISP ../nt/TAGS
+.PHONY: full-tags
+
### DEPENDENCIES ###
EMACS_ROOT = ..
@@ -1705,4 +1749,4 @@ $(BLD)/w32uniscribe.$(O) : \
# Each object file depends on stamp_BLD, because in parallel builds we must
# make sure $(BLD) exists before starting compilations.
#
-$(OBJ0) $(OBJ1) $(WIN32OBJ) $(FONTOBJ) $(BLD)/lastfile.$(O) $(BLD)/firstfile.$(O): stamp_BLD
+$(OBJ0) $(OBJ1) $(OBJ2) $(BLD)/lastfile.$(O) $(BLD)/firstfile.$(O): stamp_BLD
diff --git a/src/msdos.c b/src/msdos.c
index 086cad2ff84..0957221f597 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -29,13 +29,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <setjmp.h>
#include "lisp.h"
#include <stdio.h>
-#include <stdlib.h>
#include <time.h>
#include <sys/param.h>
#include <sys/time.h>
#include <dos.h>
#include <errno.h>
-#include <string.h> /* for memset and string functions */
#include <sys/stat.h> /* for _fixpath */
#include <unistd.h> /* for chdir, dup, dup2, etc. */
#include <dir.h> /* for getdisk */
@@ -4706,7 +4704,7 @@ syms_of_msdos (void)
#ifndef HAVE_X_WINDOWS
/* The following two are from xfns.c: */
- Qreverse = intern ("reverse");
+ Qreverse = intern_c_string ("reverse");
staticpro (&Qreverse);
DEFVAR_LISP ("dos-unsupported-char-glyph", &Vdos_unsupported_char_glyph,
diff --git a/src/nsfns.m b/src/nsfns.m
index 576131e0bdf..db8bbeb5f76 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -2598,7 +2598,7 @@ syms_of_nsfns (void)
{
int i;
- Qfontsize = intern ("fontsize");
+ Qfontsize = intern_c_string ("fontsize");
staticpro (&Qfontsize);
DEFVAR_LISP ("ns-icon-type-alist", &Vns_icon_type_alist,
diff --git a/src/nsmenu.m b/src/nsmenu.m
index 9534aec8f2b..d0276c50bf7 100644
--- a/src/nsmenu.m
+++ b/src/nsmenu.m
@@ -1808,7 +1808,7 @@ syms_of_nsmenu (void)
defsubr (&Sns_reset_menu);
defsubr (&Smenu_or_popup_active_p);
- Qdebug_on_next_call = intern ("debug-on-next-call");
+ Qdebug_on_next_call = intern_c_string ("debug-on-next-call");
staticpro (&Qdebug_on_next_call);
}
diff --git a/src/nsselect.m b/src/nsselect.m
index 9e434515edf..786ca36069c 100644
--- a/src/nsselect.m
+++ b/src/nsselect.m
@@ -549,10 +549,10 @@ nxatoms_of_nsselect (void)
void
syms_of_nsselect (void)
{
- QCLIPBOARD = intern ("CLIPBOARD"); staticpro (&QCLIPBOARD);
- QSECONDARY = intern ("SECONDARY"); staticpro (&QSECONDARY);
- QTEXT = intern ("TEXT"); staticpro (&QTEXT);
- QFILE_NAME = intern ("FILE_NAME"); staticpro (&QFILE_NAME);
+ QCLIPBOARD = intern_c_string ("CLIPBOARD"); staticpro (&QCLIPBOARD);
+ QSECONDARY = intern_c_string ("SECONDARY"); staticpro (&QSECONDARY);
+ QTEXT = intern_c_string ("TEXT"); staticpro (&QTEXT);
+ QFILE_NAME = intern_c_string ("FILE_NAME"); staticpro (&QFILE_NAME);
defsubr (&Sx_disown_selection_internal);
defsubr (&Sx_get_selection_internal);
@@ -605,7 +605,7 @@ The functions are called with one argument, the selection type\n\
\(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD').");
Vns_lost_selection_hooks = Qnil;
- Qforeign_selection = intern ("foreign-selection");
+ Qforeign_selection = intern_c_string ("foreign-selection");
staticpro (&Qforeign_selection);
}
diff --git a/src/nsterm.m b/src/nsterm.m
index f0efb948ab9..247ef4dd40c 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -142,22 +142,27 @@ Lisp_Object ns_input_spi_name, ns_input_spi_arg;
Lisp_Object Vx_toolkit_scroll_bars;
static Lisp_Object Qmodifier_value;
Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper, Qnone;
-extern Lisp_Object Qcursor_color, Qcursor_type, Qns;
+extern Lisp_Object Qcursor_color, Qcursor_type, Qns, Qleft;
/* Specifies which emacs modifier should be generated when NS receives
- the Alternate modifer. May be Qnone or any of the modifier lisp symbols. */
+ the Alternate modifier. May be Qnone or any of the modifier lisp symbols. */
Lisp_Object ns_alternate_modifier;
/* Specifies which emacs modifier should be generated when NS receives
- the Command modifer. May be any of the modifier lisp symbols. */
+ the right Alternate modifier. Has same values as ns_alternate_modifier plus
+ the value Qleft which means whatever value ns_alternate_modifier has. */
+Lisp_Object ns_right_alternate_modifier;
+
+/* Specifies which emacs modifier should be generated when NS receives
+ the Command modifier. May be any of the modifier lisp symbols. */
Lisp_Object ns_command_modifier;
/* Specifies which emacs modifier should be generated when NS receives
- the Control modifer. May be any of the modifier lisp symbols. */
+ the Control modifier. May be any of the modifier lisp symbols. */
Lisp_Object ns_control_modifier;
/* Specifies which emacs modifier should be generated when NS receives
- the Function modifer (laptops). May be any of the modifier lisp symbols. */
+ the Function modifier (laptops). May be any of the modifier lisp symbols. */
Lisp_Object ns_function_modifier;
/* Control via default 'GSFontAntiAlias' on OS X and GNUstep. */
@@ -218,12 +223,17 @@ static BOOL inNsSelect = 0;
/* Convert modifiers in a NeXTSTEP event to emacs style modifiers. */
#define NS_FUNCTION_KEY_MASK 0x800000
+#define NSRightAlternateKeyMask (0x000040 | NSAlternateKeyMask)
#define EV_MODIFIERS(e) \
((([e modifierFlags] & NSHelpKeyMask) ? \
hyper_modifier : 0) \
- | (([e modifierFlags] & NSAlternateKeyMask) ? \
+ | (!EQ (ns_right_alternate_modifier, Qleft) && \
+ (([e modifierFlags] & NSRightAlternateKeyMask) \
+ == NSRightAlternateKeyMask) ? \
+ parse_solitary_modifier (ns_right_alternate_modifier) : 0) \
+ | (([e modifierFlags] & NSAlternateKeyMask) ? \
parse_solitary_modifier (ns_alternate_modifier) : 0) \
- | (([e modifierFlags] & NSShiftKeyMask) ? \
+ | (([e modifierFlags] & NSShiftKeyMask) ? \
shift_modifier : 0) \
| (([e modifierFlags] & NSControlKeyMask) ? \
parse_solitary_modifier (ns_control_modifier) : 0) \
@@ -4440,7 +4450,13 @@ ns_term_shutdown (int sig)
emacs_event->modifiers |=
parse_solitary_modifier (ns_function_modifier);
- if (flags & NSAlternateKeyMask) /* default = meta */
+ if (!EQ (ns_right_alternate_modifier, Qleft)
+ && ((flags & NSRightAlternateKeyMask) == NSRightAlternateKeyMask))
+ {
+ emacs_event->modifiers |= parse_solitary_modifier
+ (ns_right_alternate_modifier);
+ }
+ else if (flags & NSAlternateKeyMask) /* default = meta */
{
if ((NILP (ns_alternate_modifier) || EQ (ns_alternate_modifier, Qnone))
&& !fnKeysym)
@@ -6203,6 +6219,14 @@ Set to none means that the alternate / option key is not interpreted by Emacs\n\
at all, allowing it to be used at a lower level for accented character entry.");
ns_alternate_modifier = Qmeta;
+ DEFVAR_LISP ("ns-right-alternate-modifier", &ns_right_alternate_modifier,
+ "This variable describes the behavior of the right alternate or option key.\n\
+Set to control, meta, alt, super, or hyper means it is taken to be that key.\n\
+Set to left means be the same key as `ns-alternate-modifier'.\n\
+Set to none means that the alternate / option key is not interpreted by Emacs\n\
+at all, allowing it to be used at a lower level for accented character entry.");
+ ns_right_alternate_modifier = Qleft;
+
DEFVAR_LISP ("ns-command-modifier", &ns_command_modifier,
"This variable describes the behavior of the command key.\n\
Set to control, meta, alt, super, or hyper means it is taken to be that key.");
diff --git a/src/point.h b/src/point.h
deleted file mode 100644
index 0156e1baed2..00000000000
--- a/src/point.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#define point_width 5
-#define point_height 19
-static char point_bits[] = {
- 0x1f, 0x0e, 0x0e, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x04, 0x0e, 0x0e, 0x1f};
-
-/* arch-tag: a8dad510-7254-4964-b71e-bb6f81cce572
- (do not change this comment) */
diff --git a/src/print.c b/src/print.c
index d4cbc2ac24a..0f8718877d2 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1401,7 +1401,7 @@ static void print_check_string_charset_prop (INTERVAL interval, Lisp_Object stri
#define PRINT_STRING_NON_CHARSET_FOUND 1
#define PRINT_STRING_UNSAFE_CHARSET_FOUND 2
-/* Bitwize or of the abobe macros. */
+/* Bitwise or of the above macros. */
static int print_check_string_result;
static void
diff --git a/src/process.c b/src/process.c
index a698e56fe39..e1515065957 100644
--- a/src/process.c
+++ b/src/process.c
@@ -31,7 +31,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
-#include <stdlib.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -68,10 +67,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <bsdtty.h>
#endif
-#ifdef HAVE_SYS_WAIT
-#include <sys/wait.h>
-#endif
-
#ifdef HAVE_RES_INIT
#include <netinet/in.h>
#include <arpa/nameser.h>
@@ -82,6 +77,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <util.h>
#endif
+#ifdef HAVE_PTY_H
+#include <pty.h>
+#endif
+
#endif /* subprocesses */
#include "lisp.h"
@@ -115,6 +114,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_NS
#include "nsterm.h"
#endif
+
extern int timers_run;
Lisp_Object Qeuid, Qegid, Qcomm, Qstate, Qppid, Qpgrp, Qsess, Qttname, Qtpgid;
@@ -171,13 +171,6 @@ extern Lisp_Object QCfilter;
/* Define first descriptor number available for subprocesses. */
#define FIRST_PROC_DESC 3
-/* Define SIGCHLD as an alias for SIGCLD. There are many conditionals
- testing SIGCHLD. */
-
-#if !defined (SIGCHLD) && defined (SIGCLD)
-#define SIGCHLD SIGCLD
-#endif /* SIGCLD */
-
extern const char *get_operating_system_release (void);
/* From sysdep.c or w32.c */
@@ -356,14 +349,6 @@ struct sockaddr_and_len {
/* Maximum number of bytes to send to a pty without an eof. */
static int pty_max_bytes;
-#ifdef HAVE_PTYS
-#ifdef HAVE_PTY_H
-#include <pty.h>
-#endif
-/* The file name of the pty opened by allocate_pty. */
-
-static char pty_name[24];
-#endif
struct fd_callback_data
@@ -563,6 +548,9 @@ status_message (struct Lisp_Process *p)
#ifdef HAVE_PTYS
+/* The file name of the pty opened by allocate_pty. */
+static char pty_name[24];
+
/* Open an available pty, returning a file descriptor.
Return -1 on failure.
The file name of the terminal corresponding to the pty
@@ -1682,6 +1670,11 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
val = XCDR (Vdefault_process_coding_system);
}
XPROCESS (proc)->encode_coding_system = val;
+ /* Note: At this momemnt, the above coding system may leave
+ text-conversion or eol-conversion unspecified. They will be
+ decided after we read output from the process and decode it by
+ some coding system, or just before we actually send a text to
+ the process. */
}
@@ -1724,6 +1717,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
tem = Fsubstring (tem, make_number (2), Qnil);
{
+ Lisp_Object arg_encoding = Qnil;
struct gcpro gcpro1;
GCPRO1 (tem);
@@ -1741,9 +1735,14 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
tem = Fcons (args[i], tem);
CHECK_STRING (XCAR (tem));
if (STRING_MULTIBYTE (XCAR (tem)))
- XSETCAR (tem,
- code_convert_string_norecord
- (XCAR (tem), XPROCESS (proc)->encode_coding_system, 1));
+ {
+ if (NILP (arg_encoding))
+ arg_encoding = (complement_process_encoding_system
+ (XPROCESS (proc)->encode_coding_system));
+ XSETCAR (tem,
+ code_convert_string_norecord
+ (XCAR (tem), arg_encoding, 1));
+ }
}
UNGCPRO;
@@ -1879,12 +1878,6 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
}
#endif
-#if 0
- /* Replaced by close_process_descs */
- set_exclusive_use (inchannel);
- set_exclusive_use (outchannel);
-#endif
-
#ifdef O_NONBLOCK
fcntl (inchannel, F_SETFL, O_NONBLOCK);
fcntl (outchannel, F_SETFL, O_NONBLOCK);
@@ -5547,12 +5540,21 @@ send_process (volatile Lisp_Object proc, const unsigned char *volatile buf,
&& !NILP (XBUFFER (object)->enable_multibyte_characters))
|| EQ (object, Qt))
{
+ p->encode_coding_system
+ = complement_process_encoding_system (p->encode_coding_system);
if (!EQ (Vlast_coding_system_used, p->encode_coding_system))
- /* The coding system for encoding was changed to raw-text
- because we sent a unibyte text previously. Now we are
- sending a multibyte text, thus we must encode it by the
- original coding system specified for the current process. */
- setup_coding_system (p->encode_coding_system, coding);
+ {
+ /* The coding system for encoding was changed to raw-text
+ because we sent a unibyte text previously. Now we are
+ sending a multibyte text, thus we must encode it by the
+ original coding system specified for the current process.
+
+ Another reason we comming here is that the coding system
+ was just complemented and new one was returned by
+ complement_process_encoding_system. */
+ setup_coding_system (p->encode_coding_system, coding);
+ Vlast_coding_system_used = p->encode_coding_system;
+ }
coding->src_multibyte = 1;
}
else
diff --git a/src/regex.c b/src/regex.c
index b563d93fe29..17158552a95 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -4089,7 +4089,7 @@ analyse_first (const re_char *p, const re_char *pend, char *fastmap, const int m
&& match_any_multibyte_characters == false)
{
/* Set fastmap[I] to 1 where I is a leading code of each
- multibyte characer in the range table. */
+ multibyte character in the range table. */
int c, count;
unsigned char lc1, lc2;
diff --git a/src/scroll.c b/src/scroll.c
index ce26acbce64..4d1c4045bd4 100644
--- a/src/scroll.c
+++ b/src/scroll.c
@@ -20,7 +20,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
-#include <string.h>
#include <setjmp.h>
#include "lisp.h"
#include "termchar.h"
diff --git a/src/sound.c b/src/sound.c
index b93099283da..3869f3a57ff 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -86,8 +86,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* BEGIN: Windows Specific Includes */
#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
#include <limits.h>
#include <windows.h>
#include <mmsystem.h>
diff --git a/src/sysdep.c b/src/sysdep.c
index e7d35d46bf7..f68d475d22c 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -71,10 +71,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#endif
#include <sys/file.h>
-
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
#include "systty.h"
#include "syswait.h"
@@ -126,19 +123,12 @@ struct utimbuf {
#endif
#endif
-/* LPASS8 is new in 4.3, and makes cbreak mode provide all 8 bits. */
-#ifndef LPASS8
-#define LPASS8 0
-#endif
-
static const int baud_convert[] =
{
0, 50, 75, 110, 135, 150, 200, 300, 600, 1200,
1800, 2400, 4800, 9600, 19200, 38400
};
-int emacs_ospeed;
-
void croak (char *) NO_RETURN;
/* Temporary used by `sigblock' when defined in terms of signprocmask. */
@@ -278,6 +268,8 @@ stuff_char (char c)
void
init_baud_rate (int fd)
{
+ int emacs_ospeed;
+
if (noninteractive)
emacs_ospeed = 0;
else
@@ -300,16 +292,6 @@ init_baud_rate (int fd)
}
-/*ARGSUSED*/
-void
-set_exclusive_use (int fd)
-{
-#ifdef FIOCLEX
- ioctl (fd, FIOCLEX, 0);
-#endif
- /* Ok to do nothing if this feature does not exist */
-}
-
int wait_debugging; /* Set nonzero to make following function work under dbx
(at least for bsd). */
@@ -373,22 +355,7 @@ wait_for_termination (int pid)
void
flush_pending_output (int channel)
{
-#ifndef DOS_NT
- /* If we try this, we get hit with SIGTTIN, because
- the child's tty belongs to the child's pgrp. */
-#else
-#ifdef TCFLSH
- ioctl (channel, TCFLSH, 1);
-#else
-#ifdef TIOCFLUSH
- int zero = 0;
- /* 3rd arg should be ignored
- but some 4.2 kernels actually want the address of an int
- and nonzero means something different. */
- ioctl (channel, TIOCFLUSH, &zero);
-#endif
-#endif
-#endif
+ /* FIXME: maybe this function should be removed */
}
/* Set up the terminal at the other end of a pseudo-terminal that
@@ -483,7 +450,7 @@ child_setup_tty (int out)
EMACS_SET_TTY (out, &s, 0);
#endif /* not WINDOWSNT */
}
-#endif /* MSDOS */
+#endif /* not MSDOS */
/* Record a signal code and the handler for it. */
@@ -1486,242 +1453,6 @@ init_system_name (void)
}
}
-#ifndef MSDOS
-#if !defined (HAVE_SELECT)
-
-#include "sysselect.h"
-#undef select
-
-#if defined (HAVE_X_WINDOWS) && !defined (HAVE_SELECT)
-/* Cause explanatory error message at compile time,
- since the select emulation is not good enough for X. */
-int *x = &x_windows_lose_if_no_select_system_call;
-#endif
-
-/* Emulate as much as select as is possible under 4.1 and needed by Gnu Emacs
- * Only checks read descriptors.
- */
-/* How long to wait between checking fds in select */
-#define SELECT_PAUSE 1
-int select_alarmed;
-
-/* For longjmp'ing back to read_input_waiting. */
-
-jmp_buf read_alarm_throw;
-
-/* Nonzero if the alarm signal should throw back to read_input_waiting.
- The read_socket_hook function sets this to 1 while it is waiting. */
-
-int read_alarm_should_throw;
-
-void
-select_alarm (int ignore)
-{
- select_alarmed = 1;
- signal (SIGALRM, SIG_IGN);
- SIGNAL_THREAD_CHECK (SIGALRM);
- if (read_alarm_should_throw)
- longjmp (read_alarm_throw, 1);
-}
-
-#ifndef WINDOWSNT
-/* Only rfds are checked. */
-int
-sys_select (int nfds,
- SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
- EMACS_TIME *timeout)
-{
- /* XXX This needs to be updated for multi-tty support. Is there
- anybody who needs to emulate select these days? */
- int ravail = 0;
- SELECT_TYPE orfds;
- int timeoutval;
- int *local_timeout;
- extern int proc_buffered_char[];
- extern int process_tick, update_tick;
- unsigned char buf;
-
-#if defined (HAVE_SELECT) && defined (HAVE_X_WINDOWS)
- /* If we're using X, then the native select will work; we only need the
- emulation for non-X usage. */
- if (!NILP (Vinitial_window_system))
- return select (nfds, rfds, wfds, efds, timeout);
-#endif
- timeoutval = timeout ? EMACS_SECS (*timeout) : 100000;
- local_timeout = &timeoutval;
- FD_ZERO (&orfds);
- if (rfds)
- {
- orfds = *rfds;
- FD_ZERO (rfds);
- }
- if (wfds)
- FD_ZERO (wfds);
- if (efds)
- FD_ZERO (efds);
-
- /* If we are looking only for the terminal, with no timeout,
- just read it and wait -- that's more efficient. */
- if (*local_timeout == 100000 && process_tick == update_tick
- && FD_ISSET (0, &orfds))
- {
- int fd;
- for (fd = 1; fd < nfds; ++fd)
- if (FD_ISSET (fd, &orfds))
- goto hardway;
- if (! detect_input_pending ())
- read_input_waiting ();
- FD_SET (0, rfds);
- return 1;
- }
-
- hardway:
- /* Once a second, till the timer expires, check all the flagged read
- * descriptors to see if any input is available. If there is some then
- * set the corresponding bit in the return copy of rfds.
- */
- while (1)
- {
- register int to_check, fd;
-
- if (rfds)
- {
- for (to_check = nfds, fd = 0; --to_check >= 0; fd++)
- {
- if (FD_ISSET (fd, &orfds))
- {
- int avail = 0, status = 0;
-
- if (fd == 0)
- avail = detect_input_pending (); /* Special keyboard handler */
- else
- {
-#ifdef FIONREAD
- status = ioctl (fd, FIONREAD, &avail);
-#else /* no FIONREAD */
- /* Hoping it will return -1 if nothing available
- or 0 if all 0 chars requested are read. */
- if (proc_buffered_char[fd] >= 0)
- avail = 1;
- else
- {
- avail = read (fd, &buf, 1);
- if (avail > 0)
- proc_buffered_char[fd] = buf;
- }
-#endif /* no FIONREAD */
- }
- if (status >= 0 && avail > 0)
- {
- FD_SET (fd, rfds);
- ravail++;
- }
- }
- }
- }
- if (*local_timeout == 0 || ravail != 0 || process_tick != update_tick)
- break;
-
- turn_on_atimers (0);
- signal (SIGALRM, select_alarm);
- select_alarmed = 0;
- alarm (SELECT_PAUSE);
-
- /* Wait for a SIGALRM (or maybe a SIGTINT) */
- while (select_alarmed == 0 && *local_timeout != 0
- && process_tick == update_tick)
- {
- /* If we are interested in terminal input,
- wait by reading the terminal.
- That makes instant wakeup for terminal input at least. */
- if (FD_ISSET (0, &orfds))
- {
- read_input_waiting ();
- if (detect_input_pending ())
- select_alarmed = 1;
- }
- else
- pause ();
- }
- (*local_timeout) -= SELECT_PAUSE;
-
- /* Reset the old alarm if there was one. */
- turn_on_atimers (1);
-
- if (*local_timeout == 0) /* Stop on timer being cleared */
- break;
- }
- return ravail;
-}
-#endif /* not WINDOWSNT */
-
-/* Read keyboard input into the standard buffer,
- waiting for at least one character. */
-
-void
-read_input_waiting (void)
-{
- /* XXX This needs to be updated for multi-tty support. Is there
- anybody who needs to emulate select these days? */
- int nread, i;
-
- if (read_socket_hook)
- {
- struct input_event hold_quit;
-
- EVENT_INIT (hold_quit);
- hold_quit.kind = NO_EVENT;
-
- read_alarm_should_throw = 0;
- if (! setjmp (read_alarm_throw))
- nread = (*read_socket_hook) (0, 1, &hold_quit);
- else
- nread = -1;
-
- if (hold_quit.kind != NO_EVENT)
- kbd_buffer_store_event (&hold_quit);
- }
- else
- {
- struct input_event e;
- char buf[3];
- nread = read (fileno (stdin), buf, 1);
- EVENT_INIT (e);
-
- /* Scan the chars for C-g and store them in kbd_buffer. */
- e.kind = ASCII_KEYSTROKE_EVENT;
- e.frame_or_window = selected_frame;
- e.modifiers = 0;
- for (i = 0; i < nread; i++)
- {
- /* Convert chars > 0177 to meta events if desired.
- We do this under the same conditions that read_avail_input does. */
- if (read_socket_hook == 0)
- {
- /* If the user says she has a meta key, then believe her. */
- if (meta_key == 1 && (buf[i] & 0x80))
- e.modifiers = meta_modifier;
- if (meta_key != 2)
- buf[i] &= ~0x80;
- }
-
- XSETINT (e.code, buf[i]);
- kbd_buffer_store_event (&e);
- /* Don't look at input that follows a C-g too closely.
- This reduces lossage due to autorepeat on C-g. */
- if (buf[i] == quit_char)
- break;
- }
- }
-}
-
-#if !defined (HAVE_SELECT)
-#define select sys_select
-#endif
-
-#endif /* not HAVE_SELECT */
-#endif /* not MSDOS */
-
/* POSIX signals support - DJB */
/* Anyone with POSIX signals should have ANSI C declarations */
@@ -2271,7 +2002,6 @@ dup2 (int oldd, int newd)
#ifndef HAVE_GETTIMEOFDAY
#ifdef HAVE_TIMEVAL
-/* ARGSUSED */
int
gettimeofday (struct timeval *tp, struct timezone *tzp)
{
diff --git a/src/term.c b/src/term.c
index a2f7a9cbabe..4baea231de3 100644
--- a/src/term.c
+++ b/src/term.c
@@ -23,7 +23,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
#include <ctype.h>
-#include <string.h>
#include <errno.h>
#include <sys/file.h>
@@ -3658,9 +3657,6 @@ use the Bourne shell command `TERM=... export TERM' (C-shell:\n\
add_keyboard_wait_descriptor (0);
- /* FIXME: this should be removed, done earlier. */
- Wcm_clear (tty);
-
tty->delete_in_insert_mode = 1;
UseTabs (tty) = 0;
diff --git a/src/termcap.c b/src/termcap.c
index ea4ef244f64..4ad0cee6264 100644
--- a/src/termcap.c
+++ b/src/termcap.c
@@ -20,24 +20,18 @@ Boston, MA 02110-1301, USA. */
/* Emacs config.h may rename various library functions such as malloc. */
#include <config.h>
#include <setjmp.h>
-#include <lisp.h> /* xmalloc is here */
-/* Get the O_* definitions for open et al. */
#include <sys/file.h>
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include "lisp.h"
+
#ifndef NULL
#define NULL (char *) 0
#endif
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-
/* BUFSIZE is the initial size allocated for the buffer
for reading the termcap file.
It is not a limit.
@@ -268,45 +262,20 @@ tgetst1 (char *ptr, char **area)
/* Outputting a string with padding. */
-#ifndef emacs
-short ospeed;
-/* If OSPEED is 0, we use this as the actual baud rate. */
-int tputs_baud_rate;
-#endif
-
char PC;
-#ifndef emacs
-/* Actual baud rate if positive;
- - baud rate / 100 if negative. */
-
-static const int speeds[] =
- {
- 0, 50, 75, 110, 135, 150, -2, -3, -6, -12,
- -18, -24, -48, -96, -192, -288, -384, -576, -1152
- };
-
-#endif /* not emacs */
-
void
tputs (register char *str, int nlines, register int (*outfun) (/* ??? */))
{
register int padcount = 0;
register int speed;
-#ifdef emacs
extern EMACS_INT baud_rate;
speed = baud_rate;
/* For quite high speeds, convert to the smaller
units to avoid overflow. */
if (speed > 10000)
speed = - speed / 100;
-#else
- if (ospeed == 0)
- speed = tputs_baud_rate;
- else
- speed = speeds[ospeed];
-#endif
if (!str)
return;
diff --git a/src/termhooks.h b/src/termhooks.h
index b16c36f9551..b9358896bae 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -44,11 +44,6 @@ extern void (*fullscreen_hook) (struct frame *f);
/* Input queue declarations and hooks. */
-/* Expedient hack: only provide the below definitions to files that
- are prepared to handle lispy things. CONSP is defined if lisp.h
- has been included before this file. */
-#ifdef CONSP
-
enum event_kind
{
NO_EVENT, /* nothing happened. This should never
@@ -317,8 +312,6 @@ extern void term_mouse_moveto (int, int);
extern struct tty_display_info *gpm_tty;
#endif
-#endif /* CONSP */
-
struct ns_display_info;
struct x_display_info;
diff --git a/src/unexaix.c b/src/unexaix.c
index 949616d5e31..2d128bc6806 100644
--- a/src/unexaix.c
+++ b/src/unexaix.c
@@ -31,33 +31,17 @@ what you give them. Help stamp out software-hoarding! */
* Mike Sperber <sperber@informatik.uni-tuebingen.de>
*
* Synopsis:
- * unexec (new_name, a_name, data_start, bss_start, entry_address)
- * char *new_name, *a_name;
- * unsigned data_start, bss_start, entry_address;
+ * unexec (const char *new_name, const *old_name);
*
* Takes a snapshot of the program and makes an a.out format file in the
* file named by the string argument new_name.
* If a_name is non-NULL, the symbol table will be taken from the given file.
* On some machines, an existing a_name file is required.
*
- * data_start and entry_address are ignored.
- *
- * bss_start indicates how much of the data segment is to be saved in the
- * a.out file and restored when the program is executed. It gives the lowest
- * unsaved address, and is rounded up to a page boundary. The default when 0
- * is given assumes that the entire data segment is to be stored, including
- * the previous data and bss as well as any additional storage allocated with
- * sbrk(2).
- *
*/
-#ifndef emacs
-#define PERROR(arg) perror (arg); return -1
-#else
#include <config.h>
#define PERROR(file) report_error (file, new)
-#endif
-
#include <a.out.h>
/* Define getpagesize () if the system does not.
Note that this may depend on symbols defined in a.out.h
@@ -103,7 +87,6 @@ static int adjust_lnnoptrs (int, int, char *);
static int pagemask;
-#ifdef emacs
#include <setjmp.h>
#include "lisp.h"
@@ -114,7 +97,6 @@ report_error (char *file, int fd)
close (fd);
report_file_error ("Cannot unexec", Fcons (build_string (file), Qnil));
}
-#endif /* emacs */
#define ERROR0(msg) report_error_1 (new, msg, 0, 0); return -1
#define ERROR1(msg,x) report_error_1 (new, msg, x, 0); return -1
@@ -124,12 +106,7 @@ static void
report_error_1 (int fd, char *msg, int a1, int a2)
{
close (fd);
-#ifdef emacs
error (msg, a1, a2);
-#else
- fprintf (stderr, msg, a1, a2);
- fprintf (stderr, "\n");
-#endif
}
static int make_hdr (int, int, unsigned, unsigned, unsigned, char *, char *);
@@ -143,10 +120,7 @@ static void write_segment (int, char *, char *);
*
* driving logic.
*/
-int unexec (char *new_name, char *a_name,
- unsigned data_start,
- unsigned bss_start,
- unsigned entry_address)
+int unexec (const char *new_name, const char *a_name)
{
int new = -1, a_out = -1;
@@ -159,8 +133,6 @@ int unexec (char *new_name, char *a_name,
PERROR (new_name);
}
if (make_hdr (new, a_out,
- data_start, bss_start,
- entry_address,
a_name, new_name) < 0
|| copy_text_and_data (new) < 0
|| copy_sym (new, a_out, a_name, new_name) < 0
@@ -186,12 +158,11 @@ int unexec (char *new_name, char *a_name,
*/
static int
make_hdr (int new, int a_out,
- unsigned data_start, unsigned bss_start,
- unsigned entry_address,
char *a_name, char *new_name)
{
int scns;
- unsigned int bss_end;
+ unsigned int bss_start;
+ unsigned int data_start;
struct scnhdr section[MAX_SECTIONS];
struct scnhdr * f_thdr; /* Text section header */
@@ -211,22 +182,8 @@ make_hdr (int new, int a_out,
data_start = data_start & ~pagemask; /* (Down) to page boundary. */
- bss_end = ADDR_CORRECT (sbrk (0)) + pagemask;
- bss_end &= ~ pagemask;
- /* Adjust data/bss boundary. */
- if (bss_start != 0)
- {
- bss_start = (ADDR_CORRECT (bss_start) + pagemask);
- /* (Up) to page bdry. */
- bss_start &= ~ pagemask;
- if (bss_start > bss_end)
- {
- ERROR1 ("unexec: Specified bss_start (%u) is past end of program",
- bss_start);
- }
- }
- else
- bss_start = bss_end;
+ bss_start = ADDR_CORRECT (sbrk (0)) + pagemask;
+ bss_start &= ~ pagemask;
if (data_start > bss_start) /* Can't have negative data size. */
{
@@ -311,7 +268,7 @@ make_hdr (int new, int a_out,
f_hdr.f_flags |= (F_RELFLG | F_EXEC);
f_ohdr.dsize = bss_start - f_ohdr.data_start;
- f_ohdr.bsize = bss_end - bss_start;
+ f_ohdr.bsize = 0;
f_dhdr->s_size = f_ohdr.dsize;
f_bhdr->s_size = f_ohdr.bsize;
diff --git a/src/unexcoff.c b/src/unexcoff.c
index cb4b8d603b5..0c6af414d82 100644
--- a/src/unexcoff.c
+++ b/src/unexcoff.c
@@ -34,37 +34,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
* Modified heavily since then.
*
* Synopsis:
- * unexec (new_name, a_name, data_start, bss_start, entry_address)
- * char *new_name, *a_name;
- * unsigned data_start, bss_start, entry_address;
+ * unexec (const char *new_name, const char *old_name);
*
* Takes a snapshot of the program and makes an a.out format file in the
* file named by the string argument new_name.
* If a_name is non-NULL, the symbol table will be taken from the given file.
* On some machines, an existing a_name file is required.
*
- * The boundaries within the a.out file may be adjusted with the data_start
- * and bss_start arguments. Either or both may be given as 0 for defaults.
- *
- * Data_start gives the boundary between the text segment and the data
- * segment of the program. The text segment can contain shared, read-only
- * program code and literal data, while the data segment is always unshared
- * and unprotected. Data_start gives the lowest unprotected address.
- * The value you specify may be rounded down to a suitable boundary
- * as required by the machine you are using.
- *
- * Specifying zero for data_start means the boundary between text and data
- * should not be the same as when the program was loaded.
- *
- * Bss_start indicates how much of the data segment is to be saved in the
- * a.out file and restored when the program is executed. It gives the lowest
- * unsaved address, and is rounded up to a page boundary. The default when 0
- * is given assumes that the entire data segment is to be stored, including
- * the previous data and bss as well as any additional storage allocated with
- * break (2).
- *
- * The new file is set up to start at entry_address.
- *
* If you make improvements I'd like to get them too.
* harpo!utah-cs!thomas, thomas@Utah-20
*
@@ -121,14 +97,6 @@ struct aouthdr
#include <sys/file.h>
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-#ifndef O_RDWR
-#define O_RDWR 2
-#endif
-
-
extern char *start_of_data (void); /* Start of initialized data */
static long block_copy_start; /* Old executable start point */
@@ -186,15 +154,16 @@ static void mark_x (const char *);
* Modify the text and data sizes.
*/
static int
-make_hdr (int new, int a_out, unsigned data_start, unsigned bss_start,
- unsigned entry_address, const char *a_name, const char *new_name)
+make_hdr (int new, int a_out,
+ const char *a_name, const char *new_name)
{
auto struct scnhdr f_thdr; /* Text section header */
auto struct scnhdr f_dhdr; /* Data section header */
auto struct scnhdr f_bhdr; /* Bss section header */
auto struct scnhdr scntemp; /* Temporary section header */
register int scns;
- unsigned int bss_end;
+ unsigned int bss_start;
+ unsigned int data_start;
pagemask = getpagesize () - 1;
@@ -203,23 +172,8 @@ make_hdr (int new, int a_out, unsigned data_start, unsigned bss_start,
data_start = ADDR_CORRECT (data_start);
data_start = data_start & ~pagemask; /* (Down) to page boundary. */
- bss_end = ADDR_CORRECT (sbrk (0)) + pagemask;
- bss_end &= ~ pagemask;
-
- /* Adjust data/bss boundary. */
- if (bss_start != 0)
- {
- bss_start = (ADDR_CORRECT (bss_start) + pagemask);
- /* (Up) to page bdry. */
- bss_start &= ~ pagemask;
- if (bss_start > bss_end)
- {
- ERROR1 ("unexec: Specified bss_start (%u) is past end of program",
- bss_start);
- }
- }
- else
- bss_start = bss_end;
+ bss_start = ADDR_CORRECT (sbrk (0)) + pagemask;
+ bss_start &= ~ pagemask;
if (data_start > bss_start) /* Can't have negative data size. */
{
@@ -300,7 +254,7 @@ make_hdr (int new, int a_out, unsigned data_start, unsigned bss_start,
f_hdr.f_flags |= (F_RELFLG | F_EXEC);
f_ohdr.dsize = bss_start - f_ohdr.data_start;
- f_ohdr.bsize = bss_end - bss_start;
+ f_ohdr.bsize = 0;
f_thdr.s_size = f_ohdr.tsize;
f_thdr.s_scnptr = sizeof (f_hdr) + sizeof (f_ohdr);
f_thdr.s_scnptr += (f_hdr.f_nscns) * (sizeof (f_thdr));
@@ -571,8 +525,7 @@ adjust_lnnoptrs (int writedesc, int readdesc, const char *new_name)
* driving logic.
*/
int
-unexec (const char *new_name, const char *a_name,
- unsigned data_start, unsigned bss_start, unsigned entry_address)
+unexec (const char *new_name, const char *a_name)
{
int new = -1, a_out = -1;
@@ -585,7 +538,7 @@ unexec (const char *new_name, const char *a_name,
PERROR (new_name);
}
- if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0
+ if (make_hdr (new, a_out, a_name, new_name) < 0
|| copy_text_and_data (new, a_out) < 0
|| copy_sym (new, a_out, a_name, new_name) < 0
|| adjust_lnnoptrs (new, a_out, new_name) < 0
diff --git a/src/unexcw.c b/src/unexcw.c
index 4930eb46315..c33d9d90215 100644
--- a/src/unexcw.c
+++ b/src/unexcw.c
@@ -248,8 +248,7 @@ add_exe_suffix_if_necessary (const char *name, char *modified)
}
int
-unexec (char *outfile, char *infile, unsigned start_data, unsigned d1,
- unsigned d2)
+unexec (const char *outfile, const char *infile)
{
char infile_buffer[FILENAME_MAX];
char outfile_buffer[FILENAME_MAX];
diff --git a/src/unexelf.c b/src/unexelf.c
index 0de69a4cabc..605b9f75ac0 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -33,34 +33,13 @@ what you give them. Help stamp out software-hoarding! */
* Modified heavily since then.
*
* Synopsis:
- * unexec (new_name, old_name, data_start, bss_start, entry_address)
- * char *new_name, *old_name;
- * unsigned data_start, bss_start, entry_address;
+ * unexec (const char *new_name, const char *old_name);
*
* Takes a snapshot of the program and makes an a.out format file in the
* file named by the string argument new_name.
* If old_name is non-NULL, the symbol table will be taken from the given file.
* On some machines, an existing old_name file is required.
*
- * The boundaries within the a.out file may be adjusted with the data_start
- * and bss_start arguments. Either or both may be given as 0 for defaults.
- *
- * Data_start gives the boundary between the text segment and the data
- * segment of the program. The text segment can contain shared, read-only
- * program code and literal data, while the data segment is always unshared
- * and unprotected. Data_start gives the lowest unprotected address.
- * The value you specify may be rounded down to a suitable boundary
- * as required by the machine you are using.
- *
- * Bss_start indicates how much of the data segment is to be saved in the
- * a.out file and restored when the program is executed. It gives the lowest
- * unsaved address, and is rounded up to a page boundary. The default when 0
- * is given assumes that the entire data segment is to be stored, including
- * the previous data and bss as well as any additional storage allocated with
- * break (2).
- *
- * The new file is set up to start at entry_address.
- *
*/
/* Even more heavily modified by james@bigtex.cactus.org of Dell Computer Co.
@@ -407,13 +386,8 @@ temacs:
/* We do not use mmap because that fails with NFS.
Instead we read the whole file, modify it, and write it out. */
-#ifndef emacs
-#define fatal(a, b, c) fprintf (stderr, a, b, c), exit (1)
-#include <string.h>
-#else
#include <config.h>
extern void fatal (const char *msgid, ...);
-#endif
#include <sys/types.h>
#include <stdio.h>
@@ -424,7 +398,7 @@ extern void fatal (const char *msgid, ...);
#include <fcntl.h>
#if !defined (__NetBSD__) && !defined (__OpenBSD__)
#include <elf.h>
-#endif
+#endif /* not __NetBSD__ and not __OpenBSD__ */
#include <sys/mman.h>
#if defined (_SYSTYPE_SYSV)
#include <sys/elf_mips.h>
@@ -610,7 +584,7 @@ round_up (ElfW(Addr) x, ElfW(Addr) y)
if NOERROR is 0; we return -1 if NOERROR is nonzero. */
static int
-find_section (const char *name, char *section_names, char *file_name,
+find_section (const char *name, const char *section_names, const char *file_name,
ElfW(Ehdr) *old_file_h, ElfW(Shdr) *old_section_h, int noerror)
{
int idx;
@@ -646,8 +620,7 @@ find_section (const char *name, char *section_names, char *file_name,
*
*/
void
-unexec (char *new_name, char *old_name, unsigned int data_start,
- unsigned int bss_start, unsigned int entry_address)
+unexec (const char *new_name, const char *old_name)
{
int new_file, old_file, new_file_size;
@@ -1309,13 +1282,8 @@ temacs:
/* Write out new_file, and free the buffers. */
if (write (new_file, new_base, new_file_size) != new_file_size)
-#ifndef emacs
- fatal ("Didn't write %d bytes: errno %d\n",
- new_file_size, errno);
-#else
fatal ("Didn't write %d bytes to %s: errno %d\n",
new_file_size, new_name, errno);
-#endif
munmap (old_base, old_file_size);
munmap (new_base, new_file_size);
diff --git a/src/unexhp9k800.c b/src/unexhp9k800.c
index cad2a5025ab..b9edd4f3a84 100644
--- a/src/unexhp9k800.c
+++ b/src/unexhp9k800.c
@@ -49,16 +49,11 @@
sigsetreturn (_sigreturn);
*/
-#ifdef emacs
#include <config.h>
-#endif
-
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
-
#include <a.out.h>
-
#include <dl.h>
/* brk value to restore, stored as a global.
@@ -79,12 +74,9 @@ run_time_remap (ignored)
/* Create a new a.out file, same as old but with current data space */
-
-unexec (new_name, old_name, new_end_of_text, dummy1, dummy2)
- char new_name[]; /* name of the new a.out file to be created */
- char old_name[]; /* name of the old a.out file */
- char *new_end_of_text; /* ptr to new edata/etext; NOT USED YET */
- int dummy1, dummy2; /* not used by emacs */
+int
+unexec (const char *new_name, /* name of the new a.out file to be created */
+ const char *old_name) /* name of the old a.out file */
{
int old, new;
int old_size, new_size;
diff --git a/src/unexmacosx.c b/src/unexmacosx.c
index 5c450e062c6..f48c8d7dfa6 100644
--- a/src/unexmacosx.c
+++ b/src/unexmacosx.c
@@ -190,6 +190,8 @@ static off_t data_segment_old_fileoff = 0;
static struct segment_command *data_segment_scp;
+static void unexec_error (const char *format, ...) NO_RETURN;
+
/* Read N bytes from infd into memory starting at address DEST.
Return true if successful, false otherwise. */
static int
@@ -1217,9 +1219,8 @@ dump_it (void)
from it. The file names of the output and input files are outfile
and infile, respectively. The three other parameters are
ignored. */
-void
-unexec (char *outfile, char *infile, void *start_data, void *start_bss,
- void *entry_address)
+int
+unexec (const char *outfile, const char *infile)
{
if (in_dumped_exec)
unexec_error ("Unexec from a dumped executable is not supported.");
@@ -1249,6 +1250,7 @@ unexec (char *outfile, char *infile, void *start_data, void *start_bss,
dump_it ();
close (outfd);
+ return 0;
}
diff --git a/src/unexsol.c b/src/unexsol.c
index 04e3f40799c..1d58ed46d4b 100644
--- a/src/unexsol.c
+++ b/src/unexsol.c
@@ -1,7 +1,6 @@
/* Trivial unexec for Solaris. */
#include <config.h>
-#include <stdlib.h>
#include <dlfcn.h>
#include <setjmp.h>
@@ -11,8 +10,7 @@
#include "coding.h"
int
-unexec (char *new_name, char *old_name, unsigned int data_start,
- unsigned int bss_start, unsigned int entry_address)
+unexec (const char *new_name, const char *old_name)
{
Lisp_Object data;
Lisp_Object errstring;
diff --git a/src/unexw32.c b/src/unexw32.c
index d3e4e812480..a4dba647f53 100644
--- a/src/unexw32.c
+++ b/src/unexw32.c
@@ -724,9 +724,8 @@ copy_executable_and_dump_data (file_data *p_infile,
/* Dump out .data and .bss sections into a new executable. */
-void
-unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
- void *entry_address)
+int
+unexec (const char *new_name, const char *old_name)
{
file_data in_file, out_file;
char out_filename[MAX_PATH], in_filename[MAX_PATH];
@@ -821,6 +820,8 @@ unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
close_file_data (&in_file);
close_file_data (&out_file);
+
+ return 0;
}
/* eof */
diff --git a/src/vm-limit.c b/src/vm-limit.c
index 63f0f47e2d0..813ee6163c9 100644
--- a/src/vm-limit.c
+++ b/src/vm-limit.c
@@ -17,12 +17,9 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
-#ifdef emacs
#include <config.h>
#include <setjmp.h>
#include "lisp.h"
-#endif
-
#include "mem-limits.h"
/*
diff --git a/src/w16select.c b/src/w16select.c
index ef1b974752b..4d471e97911 100644
--- a/src/w16select.c
+++ b/src/w16select.c
@@ -28,7 +28,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#ifdef MSDOS
#include <config.h>
-#include <string.h>
#include <dpmi.h>
#include <go32.h>
#include <sys/farptr.h>
diff --git a/src/w32.c b/src/w32.c
index 4ccda449b47..ae34ac6aadb 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -2970,7 +2970,7 @@ convert_time (FILETIME ft)
if (!init)
{
- initialize_utc_base();
+ initialize_utc_base ();
init = 1;
}
@@ -5037,7 +5037,7 @@ fcntl (int s, int cmd, int options)
unsigned long nblock = 1;
int rc = pfn_ioctlsocket (SOCK_HANDLE (s), FIONBIO, &nblock);
if (rc == SOCKET_ERROR)
- set_errno();
+ set_errno ();
/* Keep track of the fact that we set this to non-blocking. */
fd_info[s].flags |= FILE_NDELAY;
return rc;
@@ -5935,8 +5935,7 @@ serial_open (char *port)
/* For serial-process-configure */
void
-serial_configure (struct Lisp_Process *p,
- Lisp_Object contact)
+serial_configure (struct Lisp_Process *p, Lisp_Object contact)
{
Lisp_Object childp2 = Qnil;
Lisp_Object tem = Qnil;
diff --git a/src/w32console.c b/src/w32console.c
index 26fa544d670..35f0fc195f7 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -25,10 +25,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
-#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
-#include <string.h>
#include <setjmp.h>
#include "lisp.h"
@@ -585,28 +583,6 @@ w32_face_attributes (struct frame *f, int face_id)
return char_attr;
}
-
-
-/* Given a color index, return its standard name. */
-Lisp_Object
-vga_stdcolor_name (int idx)
-{
- /* Standard VGA colors, in the order of their standard numbering
- in the default VGA palette. */
- static char *vga_colors[16] = {
- "black", "blue", "green", "cyan", "red", "magenta", "brown",
- "lightgray", "darkgray", "lightblue", "lightgreen", "lightcyan",
- "lightred", "lightmagenta", "yellow", "white"
- };
-
- extern Lisp_Object Qunspecified;
-
- if (idx >= 0 && idx < sizeof (vga_colors) / sizeof (vga_colors[0]))
- return build_string (vga_colors[idx]);
- else
- return Qunspecified; /* meaning the default */
-}
-
void
initialize_w32_display (struct terminal *term)
{
diff --git a/src/w32fns.c b/src/w32fns.c
index 5e5f11c813d..808503547f1 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -245,7 +245,7 @@ struct MONITOR_INFO
};
/* Reportedly, VS 6 does not have this in its headers. */
-#if defined(_MSC_VER) && _MSC_VER < 1300
+#if defined (_MSC_VER) && _MSC_VER < 1300
DECLARE_HANDLE(HMONITOR);
#endif
@@ -1870,7 +1870,6 @@ x_set_title (struct frame *f, Lisp_Object name, Lisp_Object old_name)
}
}
-
void
x_set_scroll_bar_default_width (struct frame *f)
{
@@ -1900,7 +1899,7 @@ w32_load_cursor (LPCTSTR name)
return cursor;
}
-extern LRESULT CALLBACK w32_wnd_proc (HWND, UINT, WPARAM, LPARAM);
+static LRESULT CALLBACK w32_wnd_proc (HWND, UINT, WPARAM, LPARAM);
static BOOL
w32_init_class (HINSTANCE hinst)
@@ -2672,7 +2671,7 @@ post_character_message (HWND hwnd, UINT msg,
/* Main window procedure */
-LRESULT CALLBACK
+static LRESULT CALLBACK
w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
struct frame *f;
@@ -3918,7 +3917,6 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
return DefWindowProc (hwnd, msg, wParam, lParam);
}
-
/* The most common default return code for handled messages is 0. */
return 0;
}
@@ -4359,7 +4357,6 @@ This function is an internal primitive--use `make-frame' instead. */)
x_default_parameter (f, parameters, Qright_fringe, Qnil,
"rightFringe", "RightFringe", RES_TYPE_NUMBER);
-
/* Init faces before x_default_parameter is called for scroll-bar
parameters because that function calls x_set_scroll_bar_width,
which calls change_frame_size, which calls Fset_window_buffer,
@@ -5903,7 +5900,7 @@ extern Lisp_Object Qfile_name_history;
read-only when "Directories" is selected in the filter. This
allows us to work around the fact that the standard Open File
dialog does not support directories. */
-UINT CALLBACK
+static UINT CALLBACK
file_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (msg == WM_NOTIFY)
diff --git a/src/w32font.c b/src/w32font.c
index 46fca5d78d5..f489fe2d763 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -333,7 +333,7 @@ w32font_has_char (Lisp_Object entity, int c)
}
/* w32 implementation of encode_char for font backend.
- Return a glyph code of FONT for characer C (Unicode code point).
+ Return a glyph code of FONT for character C (Unicode code point).
If FONT doesn't have such a glyph, return FONT_INVALID_CODE.
For speed, the gdi backend uses unicode (Emacs calls encode_char
@@ -1058,7 +1058,7 @@ w32_enumfont_pattern_entity (Lisp_Object frame,
/* Convert generic families to the family portion of lfPitchAndFamily. */
-BYTE
+static BYTE
w32_generic_family (Lisp_Object name)
{
/* Generic families. */
@@ -1798,7 +1798,7 @@ w32_decode_weight (int fnweight)
if (fnweight >= FW_NORMAL) return 100;
if (fnweight >= FW_LIGHT) return 50;
if (fnweight >= FW_EXTRALIGHT) return 40;
- if (fnweight > FW_THIN) return 20;
+ if (fnweight > FW_THIN) return 20;
return 0;
}
@@ -1812,7 +1812,7 @@ w32_encode_weight (int n)
if (n >= 100) return FW_NORMAL;
if (n >= 50) return FW_LIGHT;
if (n >= 40) return FW_EXTRALIGHT;
- if (n >= 20) return FW_THIN;
+ if (n >= 20) return FW_THIN;
return 0;
}
@@ -1822,9 +1822,9 @@ static Lisp_Object
w32_to_fc_weight (int n)
{
if (n >= FW_EXTRABOLD) return intern ("black");
- if (n >= FW_BOLD) return intern ("bold");
- if (n >= FW_SEMIBOLD) return intern ("demibold");
- if (n >= FW_NORMAL) return intern ("medium");
+ if (n >= FW_BOLD) return intern ("bold");
+ if (n >= FW_SEMIBOLD) return intern ("demibold");
+ if (n >= FW_NORMAL) return intern ("medium");
return intern ("light");
}
@@ -1912,7 +1912,6 @@ fill_in_logfont (FRAME_PTR f, LOGFONT *logfont, Lisp_Object font_spec)
logfont->lfPitchAndFamily = family | DEFAULT_PITCH;
}
-
/* Set pitch based on the spacing property. */
tmp = AREF (font_spec, FONT_SPACING_INDEX);
if (INTEGERP (tmp))
@@ -2378,6 +2377,23 @@ in the font selection dialog. */)
return DECODE_SYSTEM (build_string (buf));
}
+static const char *w32font_booleans [] = {
+ NULL,
+};
+
+static const char *w32font_non_booleans [] = {
+ ":script",
+ ":antialias",
+ ":style",
+ NULL,
+};
+
+static void
+w32font_filter_properties (Lisp_Object font, Lisp_Object alist)
+{
+ font_filter_properties (font, alist, w32font_booleans, w32font_non_booleans);
+}
+
struct font_driver w32font_driver =
{
0, /* Qgdi */
@@ -2407,7 +2423,7 @@ struct font_driver w32font_driver =
NULL, /* shape */
NULL, /* check */
NULL, /* get_variation_glyphs */
- NULL, /* filter_properties */
+ w32font_filter_properties,
};
diff --git a/src/w32heap.c b/src/w32heap.c
index e307694a563..285325e3f8b 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -25,7 +25,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#endif
-#include <stdlib.h>
#include <stdio.h>
#include <setjmp.h>
@@ -279,7 +278,7 @@ round_heap (unsigned long align)
sbrk (need_to_alloc);
}
-#if (_MSC_VER >= 1000 && _MSC_VER < 1300 && !defined(USE_CRT_DLL))
+#if (_MSC_VER >= 1000 && _MSC_VER < 1300 && !defined (USE_CRT_DLL))
/* MSVC 4.2 invokes these functions from mainCRTStartup to initialize
a heap via HeapCreate. They are normally defined by the runtime,
diff --git a/src/w32inevt.c b/src/w32inevt.c
index 1ab0546d44f..1111f8dfa44 100644
--- a/src/w32inevt.c
+++ b/src/w32inevt.c
@@ -27,7 +27,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#endif
-#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <setjmp.h>
@@ -289,7 +288,7 @@ static int faked_key = 0;
/* return code -1 means that event_queue_ptr won't be incremented.
In other word, this event makes two key codes. (by himi) */
-int
+static int
key_event (KEY_EVENT_RECORD *event, struct input_event *emacs_ev, int *isdead)
{
static int mod_key_state = 0;
diff --git a/src/w32menu.c b/src/w32menu.c
index 0ed9bffe70c..ff6bd977bea 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -106,6 +106,7 @@ static Lisp_Object simple_dialog_show (FRAME_PTR, Lisp_Object, Lisp_Object);
#endif
static void utf8to16 (unsigned char *, int, WCHAR *);
+static int fill_in_menu (HMENU, widget_value *);
void w32_free_menu_strings (HWND);
@@ -996,7 +997,7 @@ w32_dialog_show (FRAME_PTR f, int keymaps,
Lisp_Object title, Lisp_Object header,
char **error)
{
- int i, nb_buttons=0;
+ int i, nb_buttons = 0;
char dialog_name[6];
int menu_item_selection;
@@ -1568,7 +1569,7 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
}
/* Construct native Windows menu(bar) based on widget_value tree. */
-int
+static int
fill_in_menu (HMENU menu, widget_value *wv)
{
int items_added = 0;
@@ -1739,7 +1740,7 @@ syms_of_w32menu (void)
void
globals_of_w32menu (void)
{
- /* See if Get/SetMenuItemInfo functions are available. */
+ /* See if Get/SetMenuItemInfo functions are available. */
HMODULE user32 = GetModuleHandle ("user32.dll");
get_menu_item_info = (GetMenuItemInfoA_Proc) GetProcAddress (user32, "GetMenuItemInfoA");
set_menu_item_info = (SetMenuItemInfoA_Proc) GetProcAddress (user32, "SetMenuItemInfoA");
diff --git a/src/w32proc.c b/src/w32proc.c
index ae4e725b6ef..49687574472 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -159,7 +159,7 @@ int child_proc_count = 0;
child_process child_procs[ MAX_CHILDREN ];
child_process *dead_child = NULL;
-DWORD WINAPI reader_thread (void *arg);
+static DWORD WINAPI reader_thread (void *arg);
/* Find an unused process slot. */
child_process *
@@ -168,7 +168,7 @@ new_child (void)
child_process *cp;
DWORD id;
- for (cp = child_procs+(child_proc_count-1); cp >= child_procs; cp--)
+ for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--)
if (!CHILD_ACTIVE (cp))
goto Initialise;
if (child_proc_count == MAX_CHILDREN)
@@ -268,7 +268,7 @@ find_child_pid (DWORD pid)
{
child_process *cp;
- for (cp = child_procs+(child_proc_count-1); cp >= child_procs; cp--)
+ for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--)
if (CHILD_ACTIVE (cp) && pid == cp->pid)
return cp;
return NULL;
@@ -279,7 +279,7 @@ find_child_pid (DWORD pid)
is normally blocked until woken by select() to check for input by
reading one char. When the read completes, char_avail is signaled
to wake up the select emulator and the thread blocks itself again. */
-DWORD WINAPI
+static DWORD WINAPI
reader_thread (void *arg)
{
child_process *cp;
@@ -495,7 +495,7 @@ sys_wait (int *status)
}
else
{
- for (cp = child_procs+(child_proc_count-1); cp >= child_procs; cp--)
+ for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--)
/* some child_procs might be sockets; ignore them */
if (CHILD_ACTIVE (cp) && cp->procinfo.hProcess
&& (cp->fd < 0 || (fd_info[cp->fd].flags & FILE_AT_EOF) != 0))
@@ -608,7 +608,7 @@ get_result:
# define IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER
#endif
-void
+static void
w32_executable_type (char * filename,
int * is_dos_app,
int * is_cygnus_app,
@@ -726,7 +726,7 @@ unwind:
close_file_data (&executable);
}
-int
+static int
compare_env (const void *strp1, const void *strp2)
{
const char *str1 = *(const char **)strp1, *str2 = *(const char **)strp2;
@@ -750,7 +750,7 @@ compare_env (const void *strp1, const void *strp2)
return 1;
}
-void
+static void
merge_and_sort_env (char **envp1, char **envp2, char **new_envp)
{
char **optr, **nptr;
@@ -895,7 +895,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
escape_char = is_cygnus_app ? '"' : '\\';
}
- /* Cygwin apps needs quoting a bit more often */
+ /* Cygwin apps needs quoting a bit more often. */
if (escape_char == '"')
sepchars = "\r\n\t\f '";
@@ -1245,7 +1245,7 @@ sys_select (int nfds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
count_children:
/* Add handles of child processes. */
nc = 0;
- for (cp = child_procs+(child_proc_count-1); cp >= child_procs; cp--)
+ for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--)
/* Some child_procs might be sockets; ignore them. Also some
children may have died already, but we haven't finished reading
the process output; ignore them too. */
@@ -1999,7 +1999,7 @@ human-readable form. */)
return make_number (GetThreadLocale ());
}
-DWORD
+static DWORD
int_from_hex (char * s)
{
DWORD val = 0;
@@ -2021,7 +2021,7 @@ int_from_hex (char * s)
function isn't given a context pointer. */
Lisp_Object Vw32_valid_locale_ids;
-BOOL CALLBACK
+static BOOL CALLBACK
enum_locale_fn (LPTSTR localeNum)
{
DWORD id = int_from_hex (localeNum);
@@ -2085,7 +2085,7 @@ If successful, the new locale id is returned, otherwise nil. */)
function isn't given a context pointer. */
Lisp_Object Vw32_valid_codepages;
-BOOL CALLBACK
+static BOOL CALLBACK
enum_codepage_fn (LPTSTR codepageNum)
{
DWORD id = atoi (codepageNum);
diff --git a/src/w32reg.c b/src/w32reg.c
index 77667eb7dc9..5c02dd376c7 100644
--- a/src/w32reg.c
+++ b/src/w32reg.c
@@ -26,7 +26,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "blockinput.h"
#include <stdio.h>
-#include <string.h>
#define REG_ROOT "SOFTWARE\\GNU\\Emacs"
diff --git a/src/w32select.c b/src/w32select.c
index bd013a5ece9..f9bab384062 100644
--- a/src/w32select.c
+++ b/src/w32select.c
@@ -1072,7 +1072,7 @@ syms_of_w32select (void)
When sending or receiving text via cut_buffer, selection, and
clipboard, the text is encoded or decoded by this coding system.
The default value is the current system default encoding on 9x/Me and
-`utf-16le-dos' (Unicode) on NT/W2K/XP. */);
+`utf-16le-dos' (Unicode) on NT/W2K/XP. */);
/* The actual value is set dynamically in the dumped Emacs, see
below. */
Vselection_coding_system = Qnil;
diff --git a/src/w32term.c b/src/w32term.c
index 992538e0e88..1f53860de2e 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -21,7 +21,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <signal.h>
#include <stdio.h>
-#include <stdlib.h>
#include <setjmp.h>
#include "lisp.h"
#include "blockinput.h"
@@ -894,7 +893,7 @@ w32_set_terminal_modes (struct terminal *term)
{
}
-/* This is called when exiting or suspending Emacs. Exiting will make
+/* This is called when exiting or suspending Emacs. Exiting will make
the W32 windows go away, and suspending requires no action. */
static void
@@ -3955,7 +3954,7 @@ static char dbcs_lead = 0;
recursively with different messages by the system.
*/
-int
+static int
w32_read_socket (struct terminal *terminal, int expected,
struct input_event *hold_quit)
{
@@ -4240,7 +4239,7 @@ w32_read_socket (struct terminal *terminal, int expected,
inev.frame_or_window = window;
}
- last_window=window;
+ last_window = window;
}
if (!note_mouse_movement (f, &msg.msg))
help_echo_string = previous_help_echo_string;
@@ -5602,7 +5601,7 @@ x_make_frame_visible (struct frame *f)
/* Adjust vertical window position in order to avoid being
covered by a task bar placed at the bottom of the desktop. */
SystemParametersInfo (SPI_GETWORKAREA, 0, &workarea_rect, 0);
- GetWindowRect (FRAME_W32_WINDOW(f), &window_rect);
+ GetWindowRect (FRAME_W32_WINDOW (f), &window_rect);
if (window_rect.bottom > workarea_rect.bottom
&& window_rect.top > workarea_rect.top)
f->top_pos = max (window_rect.top
diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c
index 05cc8346a50..6c29e6ee2d0 100644
--- a/src/w32uniscribe.c
+++ b/src/w32uniscribe.c
@@ -439,7 +439,7 @@ uniscribe_shape (Lisp_Object lgstring)
}
/* Uniscribe implementation of encode_char for font backend.
- Return a glyph code of FONT for characer C (Unicode code point).
+ Return a glyph code of FONT for character C (Unicode code point).
If FONT doesn't have such a glyph, return FONT_INVALID_CODE. */
static unsigned
uniscribe_encode_char (struct font *font, int c)
diff --git a/src/w32xfns.c b/src/w32xfns.c
index 8fee42dae48..4cbd812ec0f 100644
--- a/src/w32xfns.c
+++ b/src/w32xfns.c
@@ -408,7 +408,6 @@ XParseGeometry (char *string,
return (0);
strind = nextCharacter;
mask |= YNegative;
-
}
else
{
@@ -422,7 +421,7 @@ XParseGeometry (char *string,
}
}
- /* If strind isn't at the end of the string the it's an invalid
+ /* If strind isn't at the end of the string then it's an invalid
geometry specification. */
if (*strind != '\0') return (0);
diff --git a/src/xdisp.c b/src/xdisp.c
index 9b0f94ef657..4c007e572ce 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12494,8 +12494,10 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
/* Non-zero means we've seen at least one glyph that came from a
display string. */
int string_seen = 0;
- /* Largest buffer position seen so far during scan of glyph row. */
- EMACS_INT bpos_max = last_pos;
+ /* Largest and smalles buffer positions seen so far during scan of
+ glyph row. */
+ EMACS_INT bpos_max = pos_before;
+ EMACS_INT bpos_min = pos_after;
/* Last buffer position covered by an overlay string with an integer
`cursor' property. */
EMACS_INT bpos_covered = 0;
@@ -12585,6 +12587,8 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
if (glyph->charpos > bpos_max)
bpos_max = glyph->charpos;
+ if (glyph->charpos < bpos_min)
+ bpos_min = glyph->charpos;
if (!glyph->avoid_cursor_p)
{
/* If we hit point, we've found the glyph on which to
@@ -12659,6 +12663,8 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
if (glyph->charpos > bpos_max)
bpos_max = glyph->charpos;
+ if (glyph->charpos < bpos_min)
+ bpos_min = glyph->charpos;
if (!glyph->avoid_cursor_p)
{
if (dpos == 0)
@@ -12745,7 +12751,13 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
}
}
else if (match_with_avoid_cursor
- /* zero-width characters produce no glyphs */
+ /* A truncated row may not include PT among its
+ character positions. Setting the cursor inside the
+ scroll margin will trigger recalculation of hscroll
+ in hscroll_window_tree. */
+ || (row->truncated_on_left_p && pt_old < bpos_min)
+ || (row->truncated_on_right_p && pt_old > bpos_max)
+ /* Zero-width characters produce no glyphs. */
|| ((row->reversed_p
? glyph_after > glyphs_end
: glyph_after < glyphs_end)
diff --git a/src/xfont.c b/src/xfont.c
index 368587de6d8..d4c6af17c49 100644
--- a/src/xfont.c
+++ b/src/xfont.c
@@ -21,7 +21,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <stdio.h>
-#include <stdlib.h>
#include <setjmp.h>
#include <X11/Xlib.h>
@@ -842,7 +841,7 @@ xfont_open (FRAME_PTR f, Lisp_Object entity, int pixel_size)
val = Ffont_get (font_object, QCavgwidth);
if (INTEGERP (val))
- font->average_width = XINT (val);
+ font->average_width = XINT (val) / 10;
if (font->average_width < 0)
font->average_width = - font->average_width;
if (font->average_width == 0
diff --git a/src/xml.c b/src/xml.c
index 5829f1da538..a686e55f0b0 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -74,17 +74,24 @@ Lisp_Object make_dom (xmlNode *node)
}
static Lisp_Object
-parse_string (Lisp_Object string, Lisp_Object base_url, int htmlp)
+parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int htmlp)
{
xmlDoc *doc;
xmlNode *node;
Lisp_Object result = Qnil;
- int ibeg, iend;
- char *burl = "";
+ const char *burl = "";
+ EMACS_INT bytes;
+ EMACS_INT istart, iend;
LIBXML_TEST_VERSION;
- CHECK_STRING (string);
+ validate_region (&start, &end);
+
+ istart = XINT (start);
+ iend = XINT (end);
+
+ if (istart < GPT && GPT < iend)
+ move_gap (iend);
if (! NILP (base_url))
{
@@ -92,13 +99,18 @@ parse_string (Lisp_Object string, Lisp_Object base_url, int htmlp)
burl = SDATA (base_url);
}
- doc = htmlp
- ? htmlReadMemory (SDATA (string), SBYTES (string), burl, "utf-8",
- HTML_PARSE_RECOVER|HTML_PARSE_NONET|
- HTML_PARSE_NOWARNING|HTML_PARSE_NOERROR)
- : xmlReadMemory (SDATA (string), SBYTES (string), burl, "utf-8",
- XML_PARSE_NONET|XML_PARSE_NOWARNING|
- XML_PARSE_NOERROR);
+ bytes = CHAR_TO_BYTE (iend) - CHAR_TO_BYTE (istart);
+
+ if (htmlp)
+ doc = htmlReadMemory (BYTE_POS_ADDR (CHAR_TO_BYTE (istart)),
+ bytes, burl, "utf-8",
+ HTML_PARSE_RECOVER|HTML_PARSE_NONET|
+ HTML_PARSE_NOWARNING|HTML_PARSE_NOERROR);
+ else
+ doc = xmlReadMemory (BYTE_POS_ADDR (CHAR_TO_BYTE (istart)),
+ bytes, burl, "utf-8",
+ XML_PARSE_NONET|XML_PARSE_NOWARNING|
+ XML_PARSE_NOERROR);
if (doc != NULL)
{
@@ -112,24 +124,24 @@ parse_string (Lisp_Object string, Lisp_Object base_url, int htmlp)
return result;
}
-DEFUN ("xml-parse-html-string-internal", Fxml_parse_html_string_internal,
- Sxml_parse_html_string_internal,
- 1, 2, 0,
- doc: /* Parse STRING as an HTML document and return the parse tree.
+DEFUN ("libxml-parse-html-region", Flibxml_parse_html_region,
+ Slibxml_parse_html_region,
+ 2, 3, 0,
+ doc: /* Parse the region as an HTML document and return the parse tree.
If BASE-URL is non-nil, it is used to expand relative URLs. */)
- (Lisp_Object string, Lisp_Object base_url)
+ (Lisp_Object start, Lisp_Object end, Lisp_Object base_url)
{
- return parse_string (string, base_url, 1);
+ return parse_region (start, end, base_url, 1);
}
-DEFUN ("xml-parse-string-internal", Fxml_parse_string_internal,
- Sxml_parse_string_internal,
- 1, 2, 0,
- doc: /* Parse STRING as an XML document and return the parse tree.
+DEFUN ("libxml-parse-xml-region", Flibxml_parse_xml_region,
+ Slibxml_parse_xml_region,
+ 2, 3, 0,
+ doc: /* Parse the region as an XML document and return the parse tree.
If BASE-URL is non-nil, it is used to expand relative URLs. */)
- (Lisp_Object string, Lisp_Object base_url)
+ (Lisp_Object start, Lisp_Object end, Lisp_Object base_url)
{
- return parse_string (string, base_url, 0);
+ return parse_region (start, end, base_url, 0);
}
@@ -139,8 +151,8 @@ If BASE-URL is non-nil, it is used to expand relative URLs. */)
void
syms_of_xml (void)
{
- defsubr (&Sxml_parse_html_string_internal);
- defsubr (&Sxml_parse_string_internal);
+ defsubr (&Slibxml_parse_html_region);
+ defsubr (&Slibxml_parse_xml_region);
}
#endif /* HAVE_LIBXML2 */
diff --git a/src/xterm.c b/src/xterm.c
index f9dd21c87fe..d9d908d4396 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1942,18 +1942,38 @@ x_draw_relief_rect (struct frame *f,
gc = f->output_data.x->black_relief.gc;
XSetClipRectangles (dpy, gc, 0, 0, clip_rect, 1, Unsorted);
+ /* This code is more complicated than it has to be, because of two
+ minor hacks to make the boxes look nicer: (i) if width > 1, draw
+ the outermost line using the black relief. (ii) Omit the four
+ corner pixels. */
+
/* Top. */
if (top_p)
- for (i = 0; i < width; ++i)
- XDrawLine (dpy, window, gc,
- left_x + i * left_p, top_y + i,
- right_x + 1 - i * right_p, top_y + i);
+ {
+ if (width == 1)
+ XDrawLine (dpy, window, gc,
+ left_x + (left_p ? 1 : 0), top_y,
+ right_x + (right_p ? 0 : 1), top_y);
+
+ for (i = 1; i < width; ++i)
+ XDrawLine (dpy, window, gc,
+ left_x + i * left_p, top_y + i,
+ right_x + 1 - i * right_p, top_y + i);
+ }
/* Left. */
if (left_p)
- for (i = 0; i < width; ++i)
- XDrawLine (dpy, window, gc,
- left_x + i, top_y + i, left_x + i, bottom_y - i + 1);
+ {
+ if (width == 1)
+ XDrawLine (dpy, window, gc, left_x, top_y + 1, left_x, bottom_y);
+
+ XClearArea (dpy, window, left_x, top_y, 1, 1, False);
+ XClearArea (dpy, window, left_x, bottom_y, 1, 1, False);
+
+ for (i = (width > 1 ? 1 : 0); i < width; ++i)
+ XDrawLine (dpy, window, gc,
+ left_x + i, top_y + i, left_x + i, bottom_y - i + 1);
+ }
XSetClipMask (dpy, gc, None);
if (raised_p)
@@ -1962,18 +1982,40 @@ x_draw_relief_rect (struct frame *f,
gc = f->output_data.x->white_relief.gc;
XSetClipRectangles (dpy, gc, 0, 0, clip_rect, 1, Unsorted);
+ if (width > 1)
+ {
+ /* Outermost top line. */
+ if (top_p)
+ XDrawLine (dpy, window, gc,
+ left_x + (left_p ? 1 : 0), top_y,
+ right_x + (right_p ? 0 : 1), top_y);
+
+ /* Outermost left line. */
+ if (left_p)
+ XDrawLine (dpy, window, gc, left_x, top_y + 1, left_x, bottom_y);
+ }
+
/* Bottom. */
if (bot_p)
- for (i = 0; i < width; ++i)
+ {
XDrawLine (dpy, window, gc,
- left_x + i * left_p, bottom_y - i,
- right_x + 1 - i * right_p, bottom_y - i);
+ left_x + (left_p ? 1 : 0), bottom_y,
+ right_x + (right_p ? 0 : 1), bottom_y);
+ for (i = 1; i < width; ++i)
+ XDrawLine (dpy, window, gc,
+ left_x + i * left_p, bottom_y - i,
+ right_x + 1 - i * right_p, bottom_y - i);
+ }
/* Right. */
if (right_p)
- for (i = 0; i < width; ++i)
- XDrawLine (dpy, window, gc,
- right_x - i, top_y + i + 1, right_x - i, bottom_y - i);
+ {
+ XClearArea (dpy, window, right_x, top_y, 1, 1, False);
+ XClearArea (dpy, window, right_x, bottom_y, 1, 1, False);
+ for (i = 0; i < width; ++i)
+ XDrawLine (dpy, window, gc,
+ right_x - i, top_y + i + 1, right_x - i, bottom_y - i);
+ }
XSetClipMask (dpy, gc, None);
}
@@ -7729,18 +7771,6 @@ x_error_handler (Display *display, XErrorEvent *error)
/* .gdbinit puts a breakpoint here, so make sure it is not inlined. */
-#if __GNUC__ >= 3 /* On GCC 3.0 we might get a warning. */
-#define NO_INLINE __attribute__((noinline))
-#else
-#define NO_INLINE
-#endif
-
-/* Some versions of GNU/Linux define noinline in their headers. */
-
-#ifdef noinline
-#undef noinline
-#endif
-
/* On older GCC versions, just putting x_error_quitter
after x_error_handler prevents inlining into the former. */