# HG changeset patch # User cvs # Date 1186989311 -7200 # Node ID 4be1180a9e8991fddf959124d85b718c67417e55 # Parent 2d83cbd90d8dcf0057d5bbfee2974f7840829ccf Import from CVS: tag r20-1b2 diff -r 2d83cbd90d8d -r 4be1180a9e89 CHANGES-beta --- a/CHANGES-beta Mon Aug 13 09:13:58 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:15:11 2007 +0200 @@ -1,4 +1,37 @@ -*- indented-text -*- +to 20.1 beta2 +-- First cut at MS Windows NT support Courtesy of David Hobley +-- itimer.el-1.01 Courtesy of Kyle Jones +-- hm--html-menus-5.2 +-- redo.el-1.01 +-- VM-6.15 +-- miscellaneous efs/dired fixes +-- OO-Browser-2.10 Courtesy of Bob Weiner +-- Yet another man.el Courtesy of jwz +-- Addition to sample.emacs Courtesy of jwz +-- additions/corrections to about.el +-- hyperbole-4.021 Courtesy of Bob Weiner +-- Restoration of reportmail.el Courtesy of jwz +-- Restoration of passwd.el Courtesy of jwz +-- AUC TeX-9.7i Courtesy of Per Abrahamsen +-- viper-2.93 Courtesy of Michael Kifer +-- ediff-2.64 Courtesy of Michael Kifer +-- edmacro.el-3.05 +-- detached-minibuf.el Courtesy of Alvin Shelton +-- whitespace-mode.el Courtesy of Heiko Muenkel +-- winmgr-mode.el Courtesy of David Konerding, Stefan Strobel & Barry Warsaw +-- Gnus-5.4.15 +-- custom-1.44 +-- error-message-string ported from Emacs 19.34. +-- fast-lock.el-3.11.01 Courtesy of Simon Marshall +-- lazy-lock.el-1.16 Courtesy of Simon Marshall +-- speedbar.el Courtesy of Eric Ludlam and Jens Lautenbacher +-- W3-3.0.60 +-- Miscellaneous bug fixes +-- igrep.el-2.56 Courtesy of Kevin Rodgers +-- frame-icon.el Courtesy of Michael Lamoureux and Bob Weiner +-- xrdb-mode.el-1.17 Courtesy of Barry Warsaw + to 20.1 beta1 -- New symbol `signal-error-on-buffer-boundary'. Set to nil to avoid lossage of zmacs region when moving against buffer boundaries. @@ -29,6 +62,6 @@ -- floating-toolbar.el courtesy of Kyle Jones [New] -- Initial Wnn/egg support and bug fixes courtesy of Jareth Hein [New] -- Gnus-5.4.12 Courtesy of Lars Magne Ingebrigtsen [Upgrade] --- custom-1.39 Courtesy of Per Abrahamsen [New] +-- custom-1.40 Courtesy of Per Abrahamsen [New] -- W3-3.0.59 Courtesy of William Perry -- VM-6.13 Courtesy of Kyle Jones [Upgrade] diff -r 2d83cbd90d8d -r 4be1180a9e89 ChangeLog --- a/ChangeLog Mon Aug 13 09:13:58 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:15:11 2007 +0200 @@ -1,3 +1,16 @@ +Sun Feb 23 17:10:09 1997 Steven L Baur + + * XEmacs 20.1-b2 is released. + +Sat Feb 22 14:29:44 1997 Steven L Baur + + * XEmacs 19-15-b'95 is released. + +Thu Feb 20 12:40:57 1997 Jan Vroonhof + + * configure.in (with_xauth): Attempted correction of test for + libXmu on SunOS. + Sat Feb 15 14:11:03 1997 Steven L Baur * XEmacs 20.1-b1 is released. diff -r 2d83cbd90d8d -r 4be1180a9e89 configure --- a/configure Mon Aug 13 09:13:58 2007 +0200 +++ b/configure Mon Aug 13 09:15:11 2007 +0200 @@ -280,6 +280,8 @@ This is beta level code. --with-wnn6 Compile with support for WNN version 6 This is alpha level code. +--wnn-includes=DIR Search for WNN header files in DIR. +--wnn-libraries=DIR Search for WNN libraries in DIR. --with-i18n3 Compile with I18N level 3 (support for message translation). This doesn't currently work. @@ -445,6 +447,8 @@ native_sound_lib | \ x_includes | \ x_libraries | \ + wnn_includes | \ + wnn_libraries | \ site_includes | \ site_libraries | \ site_runtime_libraries ) @@ -3306,9 +3310,12 @@ :; fi + if test "${internal_cde_lib_found}" = "no" -a -f "/usr/dt/lib/libDtSvc.a"; then + internal_cde_lib_found="yes" + fi if test "${internal_cde_lib_found}" = "yes" ; then internal_cde_includes_found='no' - for arg in ${DEFS} /usr/include ; do + for arg in ${DEFS} /usr/include /usr/dt/include ; do if test -f `echo "${arg}/Dt/Dt.h" | sed 's/^\-I//'` ; then internal_cde_includes_found='yes' fi @@ -3331,6 +3338,13 @@ } +# having CDE implies Tooltalk +if test "${with_cde}" = "yes" -a \ + "${with_tooltalk}" != "no" -a \ + "${with_tooltalk}" != "none" ; then + with_tooltalk='yes' +fi + # # See if we can find OffiX. # @@ -3669,9 +3683,9 @@ :; fi } - # On SunOS4 we must kludge harder to try to detect Xmu + # On SunOS4 (and 5!) we must kludge harder to try to detect Xmu # Upgrade to autoconf 2 and use ac_check_lib - mrb - if test "${with_xmu}" != "yes" -a -n "$OPENWINHOME" ; then + if test "${with_xmu}" != "yes" ; then # begin expansion of ac_have_library ac_save_LIBS="${LIBS}" LIBS="${LIBS} -lXmu -lXt -lXext -lX11 -lm" @@ -4420,6 +4434,7 @@ \${ac_eA}XIM_MOTIF\${ac_eB}XIM_MOTIF\${ac_eC}1\${ac_eD} " } + fi # wnn6 implies wnn support if test "$with_wnn6" = "yes" ; then @@ -4435,6 +4450,26 @@ done fi +# +# set defaults for finding WNN includes and libs +# +if test "${with_wnn}" = "yes" ; then + for arg in "-I${wnn_includes}" "-I/usr/X11R6/include" + do + if test -f `echo "${arg}/wnnerror.h" | sed 's/^\-I//'` ; then + C_SWITCH_SITE="${C_SWITCH_SITE} ${arg}" + wnn_includes=${arg} + fi + done + for arg in "-L${wnn_libraries}" "-I/usr/X11R6/lib" + do + if test -f `echo "${arg}/libwnn.a" | sed 's/^\-L//'` ; then + LD_SWITCH_SITE="${LD_SWITCH_SITE} ${arg}" + wnn_libraries=${arg} + fi + done +fi + # If netdb.h doesn't declare h_errno, we must declare it by hand. test -n "$silent" || echo "checking for declaration of h_errno in netdb.h" cat > conftest.${ac_ext} <], @@ -2879,15 +2913,23 @@ AC_HEADER_EGREP(AuXtErrorJump,audio/Xtutil.h, , old_nas=true) fi +if test "${with_cde}" = "yes" ; then + if test -f "/usr/dt/include/Dt/Dt.h" ; then + C_SWITCH_X_SITE="${C_SWITCH_X_SITE} -I/usr/dt/include" + fi + if test -f "/usr/dt/lib/libDtSvc.a" ; then + LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} -L/usr/dt/lib" + fi +fi + if test "${with_tooltalk}" = "yes" ; then - for arg in ${DEFS} "-I/usr/include" "-I${OPENWINHOME-/usr/openwin}/include" + for arg in "-I/usr/include/desktop" "-I${OPENWINHOME-/usr/openwin}/include/desktop" "-I/usr/dt/include/Tt" do - if test -f `echo "${arg}/desktop/tt_c.h" | sed 's/^\-I//'` ; then - C_SWITCH_X_SITE="${C_SWITCH_X_SITE} ${arg}/desktop" + if test -f `echo "${arg}/tt_c.h" | sed 's/^\-I//'` ; then + C_SWITCH_X_SITE="${C_SWITCH_X_SITE} ${arg}" fi done - - for arg in ${LIBS} "-L/usr/lib" "-L${OPENWINHHOME-/usr/openwin}/lib" + for arg in "-L/usr/lib" "-L${OPENWINHHOME-/usr/openwin}/lib" "-L/usr/dt/lib" do case "${arg}" in -L*) if test -f `echo "${arg}/libtt.a" | sed 's/^\-L//'` ; then @@ -3130,7 +3172,10 @@ elif test -n "$site_runtime_libraries"; then echo " Additional libraries: ${site_runtime_libraries}" fi - +if test "$with_wnn"; then + echo " Finding WNN includes with: ${wnn_includes}" + echo " Loading WNN libs with: ${wnn_libraries}" +fi test "$with_socks" = yes && echo " Compiling in support for SOCKS." test "$with_term" = yes && echo " Compiling in support for TERM." test "$with_xauth" = yes && echo " Compiling in support for XAUTH." @@ -3161,7 +3206,6 @@ test "$with_ncurses" = yes && echo " Compiling in support for ncurses." test "$with_socks" = yes && echo " Compiling in support for SOCKS." -test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." test "$with_mule" = yes && echo " Compiling in Mule (multi-lingual) support." test "$with_xim" != no && echo " Compiling in XIM (X11R5+ I18N input method) support." @@ -3173,6 +3217,7 @@ test "$with_i18n3" = yes && echo " Compiling in I18N support, level 3 (doesn't currently work)." test "$with_cde" = yes && echo " Compiling in support for CDE." +test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." test "$with_offix" = yes && echo " Compiling in support for OffiX." test "$with_mocklisp" = yes && echo " Compiling in support for Mocklisp." test "$with_sparcworks" = yes && echo " Compiling in support for SparcWorks." diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/COOKIES --- a/etc/COOKIES Mon Aug 13 09:13:58 2007 +0200 +++ b/etc/COOKIES Mon Aug 13 09:15:11 2007 +0200 @@ -1,3 +1,4 @@ +Original annotation: [Someone sent this in from California, and we decided to extend our campaign against information hoarding to recipes as well as software. (Recipes are the closest thing, not involving computers, @@ -8,150 +9,86 @@ Therefore, this recipe can be thought of as a compatible replacement. We have reports that the cookies it makes are pretty good.] -Someone at PG&E called the Mrs. Fields Cookie office -and requested the recipe for her cookies. They asked -her for her charge card number, and she gave it to them -thinking the cost would be $15 to $25. It turned out -to be $200! +New annotation for XEmacs 19.15/20.1: +[This file originally contained SPAM. It has been updated for XEmacs. -sb] -Therefore, this person is giving the recipe to anyone -and everyone she knows (and doesn't know) so that -someone can get use of her $200. Anyway, just keep -passing it on. - -Cream together: 2 cups butter - 2 cups sugar - 2 cups brown sugar +From: jhayward@math.uiuc.edu (Jonathan Hayward) +Subject: A delicacy of delicacies +Date: 19 Feb 1997 16:30:02 -0800 -Add: 4 eggs - 2 tsp. vanilla +Okay, everyone... a true story of justice in the good old U.S. of A. Thought +y'all might enjoy this; if nothing else, it shows internet justice, if it can +be called that. -Mis together in -separate bowl: 4 cups flour - 5 cups oatmeal (put small - amounts of oatmeal in blender until it turns to - powder. Measure out 5 cups of oatmeal and only - "powderize" that, NOT 5 cups "powderized" oatmeal) - - 1 tsp salt - 2 tsp baking powder - 2 tsp baking soda - -Mix: All of the above +On a whim, I decided to visit Hormel's main plant, and, after a tour, we were +allowed to taste samples of their various products. And there was one... I +don't think that words can describe how it tasted. It was a meat product, but +to call it meat would not do it justice. The memory of the taste brings tears +to my eyes. -Add: 24 oz. bag of chocolate chips and - 1 finely grated 8 oz Hershey bar (plain) - -Add: 3 cups chopped nuts (any kind) - -Bake on greased cookie sheet (make golf ball sized balls) and -bake about two inches apart. Bake at 350 degrees for 8 - 10 -minutes. DO NOT OVERBAKE. Makes 112. - -From: ucdavis!lll-lcc!hplabs!parcvax!bane@ucbvax.berkeley.edu (John R. Bane) -Subject: Re: free cookie foundation? +I like to cook in my spare time, so I asked the tour guide if they could give +me the recipe. She frowned, and said, "I'm afraid not." Well, I said, would +you let me buy the recipe? With a cute smile, she said, "Yes." I asked how +much, and she responded, "Two-fifty." I said with approval, just add it to my +tab. -Hi! I "stole" your very expensive cookie recipe off the net. If you -want to send me your SnailMail address, I'll be glad to send you a -dollar (I would like to suggest this to the net, but I think there is -some netiquette rule against asking for money - or is that only money -for oneself?) to help defray the cost (it's not much, but if EVERYone -who took the recipe sent you a dollar, it would help). - -Here also is another cookie recipe which I'm very fond of. +Thirty days later, I received my VISA statement from Hormel and it was $285.00. +I looked again and remembered I had only spent $9.95 for a couple of tins, and +about $20.00 for an anti-nauseant. As I glanced at the bottom of the +statement, it said, "Recipe -- $250.00." Boy, was I upset! I called Hormel's +Accounting Dept. and told them the waitress said it was "two-fifty," and I did +not realize she meant $250.00 for a recipe. I asked them to take back the +recipe and reduce my bill and they said they were sorry, but because all the +recipes were this expensive so not just everyone could duplicate any of our +delicacies... the bill would stand. -Makes 6-8 dozen -Bake at 375 degrees for ~10 min. - -Cream together: - -1 cup shortening (I use Weight Watcher's Reduced Calorie Margarine!) -1/4 cup peanut butter (I recommend the non-sugared kind) -1/2 cup sugar -1/2 cup brown sugar -2 eggs -1 teaspoon vanilla - -Add: +I waited, thinking of how I could get even or even try and get any of my money +back. I just said, "Okay, you folks got my $250.00 and now I'm going to have +$250.00 worth of fun." I told her that I was going to see to it that every +gourmet will have a $250.00 recipe from Hormel for nothing. She replied, "I +wish you wouldn't do this." I said, "I'm sorry but this is the only way I feel +I could get even," and I will. -1/2 cup flour -1 teaspoon soda -1/2 teaspoon salt -2 cups rolled oats (I use the 5-min variety) -1-2 cups chocolate chips (I use 2 cups semi-sweet - ummmm!) -1 cup nuts (I use pecan pieces - don't get them crushed, or the extra - oil will make greasy cookies) -1 cup shredded or flaked coconut - -(The nuts were listed as optional and I added the coconut myself, but -I really love them there! You could also add things like m&m's, or -raisins (I don't care for raisins in cookies, but you might). I've -always wanted to try banana chips.) - -Mix well. Drop by teaspoonfuls on greased cookie sheet (I use pam). -Bake at 375 degrees for approx. 10 min. +So, here it is, and please pass it on to someone else or run a few copies... I +paid for it; now you can have it for free. -My aunt found this recipe in an Amish book called something like -"Eating Well When The Whole World Is Starving," and although I thought -a cookie recipe was a bit odd for a book like that, they are about the -healthiest a cookie is ever likely to get. - -They are also very easy to make (no blending, sifting, rolling, etc.) -and extremely delicious. I get rave reviews and recipe requests whenever -I make them. - - - rene - -Chocolate Chip Cookies - Glamorous, crunchy, rich with chocolate bits & nuts. - -Also known as "Toll House" Cookies ... from Kenneth and Ruth Wakefield's -charming New England Toll House on the outskirts of Whitman, Massachusetts. -These cookies were first introduced to American homemakers in 1939 through -our series of radio talks on "Famous Foods From Famous Eating Places." + (Trust me; this recipe is so good that you will want to make as much as + you can at once, which is why I list so much. This may be doubled, of + course): + 1 pig carcass (all parts that are technically digestible but can't be + used for any other purpose, even hot dogs) + 1 gallon castor oil + 1 salt lick + 1 gallon vomit + 16 lbs recycled plastic -Mix Thoroughly : - 2/3 cup soft shortening ( part butter ) - 1/2 cup granulated sugar - 1/2 cup brown sugar ( packed ) - 1 egg - 1 tsp vanilla - -Sift together and stir in : - 1-1/2 cups sifted flour (*) - 1/2 tsp soda - 1/2 tsp salt - -Stir in : - 1/2 cup cut-up nuts - 6 oz package of semi-sweet chocolate pieces ( about 1-1/4 cups ) - - -(*) for a softer, more rounded cookie, use 1-3/4 cups sifted flour. - + The cooking technique is simple. Use a blender, branch shredder, or + anything else handy to shred the carcass, salt, and plastic; mix evenly + in a sufficiently large container. There are a variety of ways to cook + it; in experimenting, I have found the best option to be slow boiling + in motor oil. But the specific method of cooking doesn't matter much; + with such an extraordinary combination of ingredients, nobody will know + the difference. When it is cooked, compress it into small tins (at + Hormel, it came in dark blue tins with four large white or yellow + letters -- I won't specify which four letter word, because there are + some people who find it to be more obscene and offensive than a certain + crude word for sex), and open and enjoy at leisure. You don't need to + worry about it spoiling; bacteria won't touch it, and at any rate + there is a specific reason why it _can't_ go bad. Makes at least 112 + tins. -Drop rounded teaspoonfuls about 2" apart on ungreased baking sheet. Bake until -delicately browned ... cookies should still be soft. Cool slightly before you -remove them from the baking sheet. +Have fun!! This is not a joke --- this is a true story. That's it. Please, +pass it along to everyone you know, single people, mailing lists, etc... -Temperature: 375 F. ( modern oven ) -Time: bake 8 - 10 minutes -Amount: 4 - 5 dozen 2" cookies - - -===== - -Personal comments : +Oh, and one last thing I almost forgot... -I find it tastes better with a mixture of shortening and butter, as they say. - -You don't need << all >> of that sugar, and it can be whatever color you want. - -The nuts are optional. Feel free to play with the recipe. I put oatmeal in it, -reducing flour accordingly, and sometimes cinnamon. +I feel a little guilty for presuming to speak about how to best serve a +delicacy so wonderful -- the final word must go to gourmets and chefs with a +taste far more refined than mine -- but there are a thousand ways in which it +may be served, and, after a little experimenting, I really HAVE to share with +you my personal favorite: -I also find it useful to grease the cookie sheets. - -I think I'm going to go bake some now ... - --- richard - + Open one tin; slice thinly. Marinate in pesto sauce, with a touch of + thyme. Roast slowly over an open flame (I have found wood -- + preferably oak -- to work best), then THROW THE STUPID THING OUT THE + WINDOW AND COOK YOURSELF A STEAK. diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/RIP.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/RIP.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define dead_width 64 +#define dead_height 54 +static char dead_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf5, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x5e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x13, + 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xec, 0x22, 0x22, 0x02, 0x00, 0x00, + 0x00, 0x00, 0xd6, 0x88, 0x88, 0x04, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x44, + 0x44, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x1a, 0x11, 0x11, 0x19, 0x00, 0x00, + 0x00, 0x80, 0x2d, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x40, 0x8b, 0x88, + 0x88, 0x28, 0x00, 0x00, 0x00, 0xc0, 0x45, 0x44, 0x44, 0x44, 0x00, 0x00, + 0x00, 0x60, 0x17, 0x11, 0x11, 0x51, 0x00, 0x00, 0x00, 0xa0, 0x25, 0x22, + 0x22, 0x62, 0x00, 0x00, 0x00, 0x70, 0x8b, 0x88, 0x88, 0x88, 0x00, 0x00, + 0x00, 0xf0, 0x46, 0x44, 0x44, 0xc4, 0x00, 0x00, 0x00, 0x50, 0x13, 0x11, + 0x11, 0x91, 0x00, 0x00, 0x00, 0xb0, 0x22, 0x22, 0x22, 0xa2, 0x00, 0x00, + 0x00, 0x50, 0x8b, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0xb0, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0xb0, 0xf6, 0x81, 0xc7, 0xcf, 0x00, 0x00, 0x00, 0x50, 0x67, 0x02, + 0x83, 0xd9, 0x00, 0x00, 0x00, 0xb0, 0x66, 0x06, 0x83, 0xd9, 0x00, 0x00, + 0x00, 0x50, 0x67, 0x06, 0x83, 0xd9, 0x00, 0x00, 0x00, 0xb0, 0x66, 0x02, + 0x83, 0xd9, 0x00, 0x00, 0x00, 0x50, 0xe7, 0x01, 0x83, 0xcf, 0x00, 0x00, + 0x00, 0xb0, 0x66, 0x01, 0x83, 0xc1, 0x00, 0x00, 0x00, 0x50, 0x67, 0x03, + 0x83, 0xc1, 0x00, 0x00, 0x00, 0xb0, 0x66, 0x03, 0x83, 0xc1, 0x00, 0x00, + 0x00, 0x50, 0x67, 0x2e, 0x93, 0xc9, 0x00, 0x00, 0x00, 0xb0, 0xf6, 0xac, + 0xd7, 0xcb, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0xb0, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x50, 0x13, 0x11, + 0x11, 0x91, 0x00, 0x00, 0x00, 0xb0, 0x22, 0x22, 0x22, 0xa2, 0x00, 0x00, + 0x00, 0x50, 0x8b, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0xb1, 0x46, 0x44, + 0x44, 0xc4, 0x00, 0x00, 0x00, 0x59, 0x13, 0x11, 0x11, 0x91, 0x00, 0x00, + 0x80, 0xba, 0x22, 0x22, 0x22, 0xa2, 0x10, 0x00, 0x80, 0x56, 0x8b, 0x88, + 0x88, 0x88, 0x10, 0x00, 0x80, 0xf6, 0x67, 0x44, 0x44, 0xc6, 0x38, 0x00, + 0x20, 0x5d, 0x33, 0x15, 0x51, 0xd3, 0x38, 0x01, 0x40, 0xfd, 0xb3, 0xaf, + 0xb2, 0xa2, 0xd5, 0x00, 0x40, 0xf5, 0xbb, 0xbe, 0xba, 0xeb, 0xf5, 0x00, + 0x80, 0xf9, 0xd7, 0x75, 0x55, 0xd6, 0xeb, 0x00, 0x80, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0xe7, 0x00, 0x00, 0x87, 0xe9, 0xea, 0x56, 0xea, 0x35, 0x01, + 0x00, 0x07, 0x69, 0xea, 0xba, 0x16, 0x2b, 0x01, 0x00, 0x00, 0x30, 0x5c, + 0x92, 0x7a, 0x14, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x6a, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/abacus.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/abacus.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define abicus_width 64 +#define abicus_height 54 +static char abicus_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x2f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, + 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x2e, 0x0e, 0x87, 0x83, + 0xe0, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0x87, 0xd0, 0xe9, 0x74, 0x2e, + 0x2e, 0x9f, 0xcf, 0x87, 0xf0, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0x83, + 0xe0, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x0e, 0x81, 0xd0, 0xe9, 0x74, 0x2e, + 0x2e, 0x9f, 0x0f, 0xc1, 0xf1, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x07, 0xa1, + 0xe3, 0x70, 0x38, 0x2e, 0x2e, 0x04, 0x02, 0xe1, 0x43, 0x20, 0x10, 0x2e, + 0x2e, 0x04, 0x82, 0xc3, 0x41, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0x42, 0xa7, + 0x43, 0x20, 0x10, 0x2e, 0x3e, 0x04, 0xc2, 0xe7, 0x43, 0x20, 0x10, 0x3e, + 0x22, 0x04, 0x82, 0xc3, 0x41, 0x20, 0x10, 0x22, 0xea, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x2b, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, + 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x20, 0xea, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x2b, 0x22, 0x04, 0x82, 0x83, 0x40, 0x20, 0x10, 0x22, + 0x3e, 0x04, 0x42, 0x87, 0x40, 0x20, 0x10, 0x3e, 0x2e, 0x04, 0xc2, 0x87, + 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0x82, 0x83, 0x40, 0x20, 0x10, 0x2e, + 0x2e, 0x04, 0x42, 0x87, 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0xc2, 0x87, + 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x04, 0x82, 0x83, 0x40, 0x20, 0x10, 0x2e, + 0x2e, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x2e, 0x2e, 0x0e, 0x07, 0xc1, + 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x0e, 0xa1, 0xd3, 0xe9, 0x74, 0x2e, + 0x2e, 0x9f, 0x0f, 0xe1, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x07, 0xc1, + 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x0e, 0xa1, 0xd3, 0xe9, 0x74, 0x2e, + 0x2e, 0x9f, 0x0f, 0xe1, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, + 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0xa7, 0xd3, 0xe9, 0x74, 0x2e, + 0x2e, 0x9f, 0xcf, 0xe7, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, + 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0xa7, 0xd3, 0xe9, 0x74, 0x2e, + 0x2e, 0x9f, 0xcf, 0xe7, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, + 0xe1, 0x70, 0x38, 0x2e, 0x2e, 0x9d, 0x4e, 0xa7, 0xd3, 0xe9, 0x74, 0x2e, + 0x2e, 0x9f, 0xcf, 0xe7, 0xf3, 0xf9, 0x7c, 0x2e, 0x2e, 0x0e, 0x87, 0xc3, + 0xe1, 0x70, 0x38, 0x2e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x2f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/archie.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/archie.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define archer_width 64 +#define archer_height 54 +static char archer_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x1f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x01, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x0e, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, + 0xd0, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x40, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0xd0, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x80, + 0x7f, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0xe8, 0x00, 0x00, 0xf8, + 0xff, 0x07, 0x00, 0x00, 0x68, 0x00, 0x00, 0xf8, 0xff, 0x0f, 0x1a, 0x00, + 0x68, 0x00, 0x00, 0x90, 0xff, 0x0f, 0xad, 0x00, 0x68, 0x00, 0x00, 0x18, + 0xf9, 0x0f, 0x52, 0x01, 0xfc, 0x0f, 0x00, 0x08, 0xfb, 0x8f, 0x29, 0x01, + 0x74, 0xfc, 0x07, 0xb0, 0xf9, 0x47, 0xb4, 0x00, 0x8a, 0x00, 0xfe, 0x28, + 0xfd, 0x87, 0x92, 0x00, 0x82, 0x00, 0x80, 0x07, 0xe6, 0xc7, 0x49, 0x00, + 0xc4, 0x01, 0x00, 0x0c, 0xe0, 0x87, 0x3e, 0x00, 0x02, 0x3e, 0x00, 0x10, + 0xf0, 0x43, 0x0a, 0x00, 0x3a, 0xc0, 0x01, 0x10, 0xa1, 0x3e, 0x05, 0x00, + 0x76, 0x20, 0xfe, 0xff, 0x10, 0x96, 0x02, 0x00, 0xba, 0x00, 0xf0, 0x37, + 0x00, 0x57, 0xff, 0x03, 0x1a, 0x23, 0xf8, 0x73, 0xc0, 0x6f, 0x01, 0x0c, + 0x1a, 0x0c, 0xf8, 0xf3, 0xff, 0xab, 0xe7, 0x31, 0x1a, 0x30, 0xf8, 0xf3, + 0xff, 0xd5, 0x1f, 0x26, 0x1a, 0xc0, 0xf9, 0xf3, 0xff, 0xea, 0x0f, 0x40, + 0x3a, 0x00, 0xf6, 0xf7, 0x93, 0xf5, 0x1f, 0x40, 0x3a, 0x00, 0xe0, 0xe7, + 0x71, 0xfa, 0x1f, 0x21, 0x3a, 0x00, 0x00, 0xe6, 0xa3, 0xff, 0x8f, 0x1c, + 0x7a, 0x00, 0x00, 0xee, 0x05, 0xe0, 0xf7, 0x03, 0x74, 0x00, 0x00, 0xcc, + 0x09, 0xe5, 0x03, 0x00, 0x74, 0x00, 0x00, 0x8e, 0x09, 0xe8, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x9d, 0x23, 0x70, 0x00, 0x00, 0xe8, 0x01, 0x80, 0xbc, + 0x14, 0x78, 0x00, 0x00, 0xd0, 0x01, 0x40, 0xbc, 0xe6, 0x7f, 0x00, 0x00, + 0xa0, 0x03, 0x30, 0x3c, 0x5d, 0x7c, 0x00, 0x00, 0x40, 0x0e, 0x08, 0x7c, + 0x96, 0x3c, 0x00, 0x00, 0x80, 0x0d, 0x04, 0x7c, 0x84, 0x3e, 0x00, 0x00, + 0x00, 0x1a, 0x03, 0x3c, 0x83, 0x3f, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x5c, + 0x53, 0x3f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x9c, 0x84, 0x1c, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x1c, 0x81, 0x11, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0c, + 0xe9, 0x1f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0c, 0xc0, 0x0f, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/batman.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/batman.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,47 @@ +#define batman_icon_width 64 +#define batman_icon_height 64 + +static char batman_icon_bits[] = { + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0xf4, 0xff, 0x44, 0x44, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x07, 0x00, 0x11, 0x11, 0x11, 0xd1, + 0xff, 0xff, 0x1f, 0x11, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, + 0x44, 0x44, 0x44, 0xfc, 0x2f, 0x2a, 0xff, 0x44, 0x00, 0x00, 0x00, 0xff, + 0xd9, 0xbe, 0xfd, 0x01, 0x11, 0x11, 0xd1, 0x7f, 0xf1, 0xff, 0xf3, 0x13, + 0x00, 0x00, 0xe0, 0x4f, 0xfd, 0xff, 0xf7, 0x03, 0x44, 0x44, 0xf4, 0x23, + 0xff, 0xff, 0xef, 0x47, 0x00, 0x00, 0xfc, 0xa9, 0xff, 0xff, 0xaf, 0x07, + 0x11, 0x11, 0x7e, 0xf3, 0xff, 0xff, 0x9f, 0x1f, 0x00, 0x00, 0x3f, 0xdc, + 0xff, 0xff, 0x7f, 0x0f, 0x44, 0xc4, 0x9f, 0xa6, 0xfe, 0xff, 0x3f, 0x4f, + 0x00, 0xc0, 0x47, 0x29, 0xfc, 0xff, 0xff, 0x0e, 0x11, 0xf1, 0x93, 0x15, + 0xf9, 0xff, 0x7f, 0x17, 0x00, 0xf0, 0x69, 0x00, 0xf8, 0xff, 0x7f, 0x0a, + 0x44, 0xfc, 0xd0, 0x44, 0xf4, 0xff, 0x7f, 0x57, 0x00, 0x78, 0xca, 0x11, + 0xf0, 0xff, 0xff, 0x02, 0x11, 0x7d, 0xd5, 0x03, 0xf9, 0xff, 0x7f, 0x15, + 0x00, 0x3e, 0xe0, 0x4f, 0xf8, 0xff, 0x7f, 0x02, 0x44, 0x9d, 0xfe, 0x3f, + 0xfc, 0xff, 0x7f, 0x55, 0x00, 0x0c, 0xfd, 0xff, 0xff, 0x7f, 0xfc, 0x00, + 0x11, 0x57, 0xf8, 0xff, 0xff, 0x3f, 0x79, 0x15, 0x40, 0x02, 0xf1, 0xff, + 0xff, 0x1f, 0xf8, 0x04, 0x04, 0x4b, 0xe4, 0xff, 0xff, 0x5f, 0x34, 0x55, + 0x20, 0x01, 0xe0, 0xff, 0xff, 0x1f, 0xb0, 0x04, 0x81, 0x10, 0xd1, 0xff, + 0xff, 0x1f, 0x11, 0x16, 0x80, 0x1a, 0xc0, 0xff, 0xff, 0x1f, 0xd4, 0x0e, + 0x54, 0x98, 0x84, 0xff, 0xff, 0x5f, 0x62, 0x46, 0x40, 0x3c, 0x80, 0xff, + 0xff, 0x00, 0x88, 0x0e, 0x49, 0x3d, 0x91, 0xff, 0x7f, 0x15, 0x51, 0x17, + 0x30, 0x7e, 0x84, 0xff, 0x7f, 0x40, 0x54, 0x07, 0x64, 0xfe, 0xc0, 0xff, + 0x7f, 0x35, 0xb3, 0x43, 0xb8, 0xfe, 0xf7, 0xff, 0x7f, 0x80, 0xda, 0x03, + 0x35, 0xff, 0xff, 0xff, 0x7f, 0x55, 0xd5, 0x13, 0x7c, 0xff, 0xff, 0xff, + 0xff, 0x50, 0xed, 0x01, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xea, 0x44, + 0xbc, 0xff, 0xff, 0xff, 0xe0, 0x9d, 0xf6, 0x00, 0x3d, 0xff, 0xff, 0x7f, + 0xc5, 0x53, 0x7b, 0x11, 0xbc, 0xff, 0xff, 0x7f, 0x48, 0xdf, 0x7d, 0x00, + 0x7c, 0xff, 0xff, 0x7f, 0xa5, 0xf6, 0x7e, 0x44, 0xbc, 0xff, 0xff, 0x7f, + 0x90, 0xaf, 0x1e, 0x00, 0x3d, 0xff, 0xff, 0x7f, 0xd9, 0x7d, 0x1f, 0x11, + 0xfc, 0xff, 0xff, 0x01, 0x54, 0xb5, 0x07, 0x00, 0x3c, 0xff, 0xff, 0x54, + 0x29, 0xdb, 0x47, 0x44, 0x7c, 0xff, 0x7f, 0xa0, 0xdc, 0xee, 0x03, 0x00, + 0x79, 0xff, 0x7f, 0x11, 0x75, 0xf7, 0x11, 0x11, 0x78, 0xfe, 0x7f, 0xc8, + 0x56, 0x7b, 0x00, 0x00, 0xfc, 0xfe, 0xff, 0x24, 0xfb, 0x7e, 0x44, 0x44, + 0xf0, 0xfc, 0xff, 0xe3, 0x6e, 0x1f, 0x00, 0x00, 0xf1, 0xfd, 0xff, 0x3f, + 0xbb, 0x1f, 0x11, 0x11, 0xe0, 0xf3, 0xff, 0x4f, 0xef, 0x07, 0x00, 0x00, + 0xe4, 0xef, 0xff, 0xf7, 0xfb, 0x45, 0x44, 0x44, 0xc0, 0x9f, 0xb5, 0xaa, + 0xfe, 0x00, 0x00, 0x00, 0x91, 0x7f, 0x55, 0xf5, 0x3f, 0x11, 0x11, 0x11, + 0x00, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x44, 0xfc, 0xff, 0xff, + 0x47, 0x44, 0x44, 0x44, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x81, 0xff, 0x17, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/broadcast.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/broadcast.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define noname_width 64 +#define noname_height 64 +static char noname_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x06,0x00,0x00,0x30,0x10,0x00,0x00, + 0x0e,0x01,0x00,0x00,0x40,0x28,0x00,0x00,0x89,0x00,0x00,0x00,0x80,0xc8,0x00, + 0xc0,0x68,0x00,0x00,0x00,0x00,0x0b,0xe1,0x30,0x10,0x00,0x00,0x00,0x00,0x04, + 0xf2,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe2,0x08,0x00,0x00,0x00,0x00, + 0x00,0x80,0x41,0x10,0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x20,0x00,0x00,0x00, + 0x00,0x00,0x18,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x10,0xe0,0x80,0x00,0x00, + 0x00,0x00,0x00,0x20,0xe0,0x00,0x01,0x00,0x00,0x00,0x00,0x40,0xe0,0xc0,0x00, + 0x00,0x00,0x00,0x00,0x20,0xe0,0x40,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x81, + 0x00,0x00,0x00,0x00,0x00,0x04,0x30,0x01,0x01,0x00,0x00,0x00,0x00,0x02,0x50, + 0x01,0x02,0x00,0x00,0x00,0x80,0x01,0x50,0x01,0x04,0x00,0x00,0x00,0x40,0x00, + 0x90,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x98,0x03,0x10,0x00,0x00,0x00,0x00, + 0x00,0xa8,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x02,0x00,0x00,0x00,0x00, + 0x00,0x00,0x98,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0c,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xb4,0x05,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc4,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x07,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0e,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x1a,0x0b, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe2,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xb2, + 0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x0e,0x00,0x00,0x00,0x00,0x00,0x00, + 0x07,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x13,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe1,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x13,0x00,0x00,0x00,0x00, + 0x00,0x00,0x07,0x1c,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x2c,0x00,0x00,0x00, + 0x00,0x00,0x80,0x9c,0x23,0x00,0x00,0x00,0x00,0x00,0x80,0xe0,0x20,0x00,0x00, + 0x00,0x00,0x00,0x80,0x1c,0x27,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x78,0x00, + 0x00,0x00,0x00,0x00,0x40,0x03,0x58,0x00,0x00,0x00,0x00,0x00,0x40,0x0c,0x46, + 0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x41,0x00,0x00,0x00,0x00,0x00,0x40,0xe0, + 0x40,0x00,0x00,0x00,0x00,0x00,0x20,0xb0,0x81,0x00,0x00,0x00,0x00,0x00,0x20, + 0x08,0x82,0x00,0x00,0x00,0x00,0x00,0x38,0x06,0x8c,0x00,0x00,0x00,0x00,0x00, + 0xa0,0x01,0xb0,0x02,0x00,0x00,0x00,0x00,0x66,0x00,0xc0,0x06,0x00,0x00,0x00, + 0x00,0xe4,0xff,0xff,0x20,0x00,0x00,0x00,0x00,0x68,0xc8,0x18,0x10,0x00,0x00, + 0x00,0x00,0x80,0x1c,0xc0,0x13,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/bug-48.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/bug-48.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,23 @@ +#define noname_width 48 +#define noname_height 48 +static char noname_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x01,0x00, + 0x03,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00, + 0x00,0x04,0x0a,0x06,0x00,0x00,0x00,0x88,0x07,0x0e,0x00,0x00,0x00,0xe0,0x0f, + 0x0c,0x00,0x00,0x00,0xc0,0xe7,0x18,0x00,0x00,0x00,0xa0,0xf9,0x19,0x01,0x00, + 0x20,0x80,0xfe,0x09,0x03,0x00,0xc0,0x01,0xff,0x8b,0x01,0x00,0x00,0x03,0xff, + 0x81,0x01,0x00,0x00,0x86,0xff,0x8d,0x00,0x00,0x00,0xc6,0xff,0x8e,0x00,0x00, + 0x00,0x8c,0x3f,0xff,0x00,0x00,0x00,0x98,0x8f,0x3f,0x00,0x00,0x00,0x18,0xb0, + 0x3f,0x00,0x00,0x00,0xf0,0x7f,0xff,0x01,0x00,0x00,0x00,0x7f,0xff,0x03,0x00, + 0x00,0x00,0xff,0xfe,0x06,0x00,0x00,0x08,0xfe,0xfc,0x0d,0x00,0x00,0x7c,0xfe, + 0xfd,0x19,0x00,0x00,0xf0,0xff,0xfb,0x31,0x00,0x00,0x00,0xf8,0xfb,0x63,0x00, + 0x00,0x00,0xf8,0xf7,0xc3,0x03,0x00,0x00,0xf8,0xe7,0x03,0x00,0x00,0x00,0xec, + 0xef,0x07,0x00,0x00,0x00,0xc8,0xcf,0x07,0x00,0x00,0x00,0x88,0x9f,0x07,0x00, + 0x00,0x00,0x88,0xbf,0x0f,0x00,0x00,0x00,0x18,0x3f,0x0f,0x00,0x00,0x00,0x10, + 0x7e,0x0f,0x00,0x00,0x00,0x30,0x7e,0x06,0x00,0x00,0x00,0x60,0xfc,0x00,0x00, + 0x00,0x00,0x60,0xf0,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x30, + 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/c++.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/c++.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define c++.xbm_width 64 +#define c++.xbm_height 64 +static char c++.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x7f, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, + 0xc0, 0x03, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x01, 0x00, 0x06, + 0x00, 0x00, 0x06, 0x00, 0xe0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, + 0xe0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x01, 0x00, 0x06, + 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, + 0xf0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0xff, 0xff, + 0x0f, 0xff, 0xff, 0x0f, 0xf0, 0x01, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, + 0xf0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0x06, + 0x00, 0x00, 0x06, 0x00, 0xf0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, + 0xe0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x01, 0x00, 0x06, + 0x00, 0x00, 0x06, 0x00, 0xe0, 0x03, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, + 0xe0, 0x03, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xe0, 0x03, 0x00, 0x06, + 0x00, 0x00, 0x06, 0x00, 0xc0, 0x07, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, + 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x3f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/c.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/c.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define c.xbm_width 64 +#define c.xbm_height 64 +static char c.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, + 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, + 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/calculator.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/calculator.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,19 @@ +#define icon_width 28 +#define icon_height 48 +static char icon_bits[] = { + 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x0f, 0x03, 0x00, 0x00, 0x0c, + 0xd3, 0x5d, 0x5d, 0x0c, 0x13, 0x51, 0x45, 0x0c, 0xd3, 0xdd, 0xdd, 0x0d, + 0x53, 0x10, 0x51, 0x0d, 0xd3, 0x1d, 0xdd, 0x0d, 0x03, 0x00, 0x00, 0x0c, + 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x00, 0x08, + 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, + 0xbd, 0xf7, 0xde, 0x0b, 0xa5, 0x94, 0x52, 0x0a, 0xbd, 0xf7, 0xde, 0x0b, + 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, + 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, + 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, + 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, + 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, + 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, + 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, + 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, + 0xbd, 0xff, 0xde, 0x0b, 0xbd, 0x80, 0xd2, 0x0b, 0xbd, 0x80, 0xd2, 0x0b, + 0xbd, 0xff, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0x0f}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/calendar.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/calendar.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define calendar_width 64 +#define calendar_height 54 +static char calendar_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0xa0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x68, 0x00, 0x20, 0x01, 0x00, 0x00, 0x80, 0xff, 0xcf, 0xff, + 0xbf, 0xff, 0x1f, 0x00, 0x80, 0x00, 0x68, 0x0a, 0x20, 0x29, 0x10, 0x00, + 0x80, 0x00, 0x48, 0x05, 0xa0, 0x15, 0x10, 0x00, 0x80, 0x00, 0xe8, 0x0a, + 0x20, 0x2b, 0xb0, 0x00, 0x80, 0x00, 0x48, 0x05, 0xa0, 0x15, 0x50, 0x01, + 0x80, 0x00, 0xec, 0x02, 0x30, 0x0b, 0xb0, 0x00, 0x80, 0x00, 0xcc, 0x01, + 0xb0, 0x07, 0x50, 0x01, 0x80, 0x00, 0xfc, 0x00, 0xf0, 0x03, 0xb0, 0x00, + 0x80, 0x00, 0x78, 0x00, 0xe0, 0x01, 0x50, 0x01, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, + 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x00, 0xf0, + 0x07, 0x00, 0x50, 0x01, 0x80, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xb0, 0x00, + 0x80, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x50, 0x01, 0x80, 0x00, 0x00, 0xfc, + 0x07, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x50, 0x01, + 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x00, 0xc0, + 0x07, 0x00, 0x50, 0x01, 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xb0, 0x00, + 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x50, 0x01, 0x80, 0x00, 0x00, 0xc0, + 0x07, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x50, 0x01, + 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x00, 0xc0, + 0x07, 0x00, 0x50, 0x01, 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xb0, 0x00, + 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x50, 0x01, 0x80, 0x00, 0x00, 0xc0, + 0x07, 0x00, 0xb0, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x50, 0x01, + 0x80, 0xff, 0x01, 0xc0, 0x07, 0x00, 0xb0, 0x00, 0x80, 0x01, 0x01, 0xc0, + 0x07, 0x00, 0x50, 0x01, 0x80, 0x02, 0x01, 0xc0, 0x07, 0x00, 0xb0, 0x00, + 0x80, 0x04, 0x01, 0xc0, 0x07, 0x00, 0x50, 0x01, 0x80, 0x08, 0x01, 0x00, + 0x00, 0x00, 0xb0, 0x00, 0x80, 0x10, 0x01, 0x00, 0x00, 0x00, 0x50, 0x01, + 0x80, 0x20, 0x01, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x80, 0x40, 0x01, 0x00, + 0x00, 0x00, 0x50, 0x01, 0x80, 0x80, 0x01, 0x00, 0x00, 0x00, 0xb0, 0x00, + 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x01, 0x00, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, + 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x54, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/candle.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/candle.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define candle_width 64 +#define candle_height 54 +static char candle_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x48, 0x04, 0x01, 0x00, 0x00, + 0x20, 0x88, 0x40, 0x01, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x82, 0x20, + 0x40, 0x20, 0x60, 0x00, 0x00, 0x02, 0x00, 0xc0, 0x20, 0x01, 0x18, 0x00, + 0x00, 0x80, 0x80, 0x20, 0x11, 0x08, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x20, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x10, 0x04, 0x10, 0x04, 0x00, + 0x70, 0x01, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x84, 0x40, 0xb0, + 0x04, 0x08, 0x10, 0x00, 0xc0, 0x10, 0x00, 0x60, 0x03, 0x01, 0x00, 0x78, + 0x00, 0x00, 0x02, 0xc0, 0x21, 0x00, 0x84, 0x00, 0x00, 0x09, 0x10, 0x80, + 0x00, 0x10, 0x80, 0x00, 0x20, 0x00, 0x00, 0x8e, 0x0e, 0x00, 0x40, 0x00, + 0x04, 0x12, 0x80, 0xf0, 0x30, 0x00, 0x21, 0x06, 0x00, 0x88, 0x40, 0x80, + 0x43, 0x22, 0x02, 0x18, 0x00, 0x40, 0x40, 0x60, 0x84, 0x10, 0x04, 0x00, + 0x00, 0x00, 0x40, 0x18, 0x84, 0x08, 0x08, 0x00, 0x00, 0x08, 0x80, 0x48, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x54, 0x51, 0x34, 0x20, 0x20, 0x00, + 0x00, 0x02, 0x00, 0xa1, 0x18, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x19, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x08, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x04, 0x0a, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, + 0x0d, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x00, 0xe0, 0x0f, + 0x00, 0x00, 0x00, 0x04, 0x0d, 0x00, 0xfc, 0x19, 0x00, 0x00, 0x00, 0x84, + 0x0a, 0x00, 0x3f, 0x38, 0x00, 0x00, 0x00, 0x04, 0x0d, 0x80, 0x0f, 0x30, + 0x00, 0x00, 0x00, 0x87, 0x3a, 0x80, 0x07, 0x30, 0x00, 0x00, 0xc0, 0x06, + 0xdd, 0x00, 0x0f, 0x18, 0x00, 0x00, 0xe0, 0x8c, 0x8a, 0x01, 0x1e, 0x0f, + 0x00, 0xc0, 0xe9, 0xf1, 0xc7, 0xe5, 0xf8, 0x03, 0x00, 0xfe, 0x9c, 0x00, + 0x78, 0xee, 0xdf, 0x00, 0x80, 0xc7, 0x1e, 0xfc, 0x0f, 0x6f, 0x78, 0x00, + 0xf0, 0xe1, 0x04, 0x00, 0xe0, 0xe7, 0xe7, 0x03, 0xf8, 0x00, 0x01, 0xf8, + 0xff, 0xf1, 0xdf, 0x07, 0xf0, 0x01, 0x00, 0xff, 0x7f, 0xfc, 0xe7, 0x03, + 0xc0, 0x07, 0x00, 0xf8, 0x07, 0x1e, 0xf8, 0x01, 0x00, 0x1e, 0x00, 0x00, + 0xe0, 0xe3, 0x3f, 0x00, 0x00, 0xf0, 0x01, 0x80, 0xff, 0xff, 0x0f, 0x00, + 0x00, 0x00, 0xfe, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/cat_black.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/cat_black.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define noname_width 64 +#define noname_height 64 +static char noname_bits[] = { + 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe6, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0xd7,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xf7,0x0f,0x00,0x00,0x00,0x00,0x00, + 0xc0,0xf7,0x1f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x39,0x00,0x00,0x00,0x00, + 0x00,0xe0,0xff,0x35,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00, + 0x00,0x00,0xe0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0x00, + 0x00,0xc0,0x03,0xe0,0xff,0x7f,0xf0,0x00,0x00,0xe0,0x07,0xd0,0xff,0x7f,0xf8, + 0x01,0x00,0xf8,0x07,0xd0,0xff,0x3f,0xfc,0x01,0x00,0xfc,0x07,0x18,0xff,0x1f, + 0xfe,0x01,0x00,0xfc,0x03,0x3c,0xfe,0x03,0xff,0x01,0x00,0xfe,0x01,0xfc,0xe0, + 0x80,0xff,0x00,0x00,0x7e,0x00,0xfe,0x3f,0xc0,0x7f,0x00,0x00,0x3f,0x00,0xfe, + 0x3f,0xf8,0x07,0x00,0x00,0x1f,0x00,0xfe,0x7f,0xfe,0x01,0x00,0x80,0x1f,0x00, + 0xfe,0xff,0xff,0x00,0x00,0x80,0x0f,0x00,0xfe,0xff,0x7f,0x00,0x00,0x80,0x0f, + 0x00,0xff,0xff,0x3f,0x00,0x00,0x80,0x0f,0x00,0xff,0xff,0x3f,0x00,0x00,0x80, + 0x07,0x80,0xff,0xff,0x1f,0x00,0x00,0x80,0x07,0x80,0xff,0xff,0x0f,0x00,0x00, + 0x80,0x07,0xc0,0xff,0xff,0x0f,0x00,0x00,0x80,0x07,0xf0,0xff,0xff,0x37,0x00, + 0x00,0x80,0x07,0xf8,0xff,0xff,0xfb,0x3e,0x00,0x00,0x0f,0xff,0xff,0xff,0xfd, + 0x6f,0x00,0x00,0xcf,0xff,0xff,0x31,0xfe,0x5f,0x00,0x00,0xee,0xff,0x7f,0x0f, + 0xe0,0x7f,0x00,0x00,0xee,0xff,0xbf,0x07,0x80,0x67,0x00,0x00,0xfc,0xff,0xff, + 0x07,0x00,0x3e,0x00,0x00,0xfc,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xf0,0xff, + 0xff,0x03,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xf0, + 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x00,0x00,0x00,0x00,0x00, + 0xe0,0xff,0xfb,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xfb,0x00,0x00,0x00,0x00, + 0x00,0xc0,0xff,0x7d,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x7e,0x00,0x00,0x00, + 0x00,0x00,0xe0,0xff,0x7e,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f,0x3f,0x00,0x00, + 0x00,0x00,0x00,0xf0,0xbf,0x3f,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf,0x1f,0x00, + 0x00,0x00,0x00,0x00,0xf0,0xdf,0x0f,0x00,0x00,0x00,0x00,0x00,0xf0,0xcf,0x03, + 0x00,0x00,0x00,0x00,0x00,0xe0,0xe7,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0xe7, + 0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0xe7,0x01,0x00,0x00,0x00,0x00,0x00,0xe0, + 0xe7,0x01,0x00,0x00,0x00,0x00,0x00,0xc0,0xc3,0x07,0x00,0x00,0x00,0x00,0x00, + 0xc0,0x83,0x1f,0x00,0x00,0x00,0x00,0x00,0xe0,0x87,0x3f,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x0f,0x3f,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00, + 0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00, + 0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/coffee.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/coffee.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define t_width 64 +#define t_height 54 +static char t_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0x3f, 0x00, 0x00, 0xcc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x38, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0xe0, 0xf8, 0xff, + 0xff, 0xff, 0xff, 0x07, 0x00, 0x80, 0xf3, 0xff, 0xff, 0x7f, 0xfc, 0x0f, + 0x00, 0x00, 0x6e, 0x06, 0xfc, 0x0f, 0xf0, 0x1f, 0x00, 0x00, 0xd4, 0xff, + 0xff, 0x07, 0xc0, 0x3f, 0x00, 0xc0, 0xfd, 0xff, 0xff, 0x0f, 0x00, 0x7f, + 0x00, 0xc0, 0xfd, 0xff, 0xff, 0x0f, 0x00, 0x7e, 0x00, 0x80, 0xfb, 0xff, + 0xff, 0x07, 0x00, 0xfc, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0xf8, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0, 0x00, 0xf0, 0xee, 0xa6, + 0xff, 0x0f, 0x40, 0xf0, 0xc4, 0xff, 0xb3, 0x54, 0xac, 0xfc, 0x01, 0xf0, + 0xfc, 0xe5, 0xff, 0xeb, 0xd6, 0x54, 0xff, 0xf0, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x01, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x01, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xcf, 0x03, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0x9f, 0x03, + 0xff, 0x07, 0xff, 0xff, 0x07, 0xfe, 0x9f, 0x03, 0xff, 0xc3, 0xff, 0xff, + 0x1f, 0xfc, 0x9f, 0x03, 0x3f, 0x06, 0xfc, 0xff, 0x00, 0xff, 0xdf, 0x03, + 0x1f, 0xc8, 0x00, 0x00, 0x9c, 0xff, 0xdf, 0x03, 0x4f, 0x09, 0x00, 0x62, + 0xab, 0xff, 0xef, 0x03, 0xaf, 0x0b, 0x00, 0x80, 0x94, 0xff, 0xf7, 0x01, + 0xae, 0x0f, 0x00, 0x00, 0xaa, 0xff, 0xff, 0x01, 0xae, 0x0f, 0x00, 0x00, + 0x94, 0xff, 0xf9, 0x00, 0x4c, 0x0e, 0x00, 0x00, 0xa8, 0x7f, 0xfe, 0x00, + 0x9c, 0x0a, 0x00, 0x00, 0x94, 0xff, 0x7f, 0x00, 0x78, 0x08, 0x00, 0x00, + 0xa9, 0xff, 0x7f, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x90, 0xff, 0x3f, 0x00, + 0xf0, 0x0f, 0x00, 0x00, 0xa8, 0xff, 0x3f, 0x00, 0xc0, 0x0f, 0x00, 0x00, + 0x90, 0xff, 0x1f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, + 0x00, 0x0c, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x80, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/connections-48.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/connections-48.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,27 @@ +#define cxism_width 48 +#define cxism_height 48 +static char cxism_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x10, 0x89, 0x44, 0x22, 0x91, 0x08, + 0x10, 0x89, 0x44, 0x22, 0x91, 0x08, 0x10, 0x89, 0x44, 0x22, 0x91, 0x08, + 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x80, 0xe3, 0x30, 0x0c, 0xc7, 0x01, + 0x00, 0x4d, 0x4b, 0xd2, 0xb2, 0x00, 0x00, 0x72, 0x8c, 0x31, 0x4e, 0x00, + 0x00, 0xc4, 0x99, 0x99, 0x23, 0x00, 0x00, 0x48, 0x66, 0x66, 0x12, 0x00, + 0x00, 0x88, 0xbc, 0x3d, 0x11, 0x00, 0x00, 0x90, 0xf2, 0x4f, 0x09, 0x00, + 0x00, 0xa0, 0xea, 0x57, 0x05, 0x00, 0x00, 0xc0, 0x3e, 0x7c, 0x03, 0x00, + 0x00, 0x80, 0x0f, 0xf0, 0x01, 0x00, 0x00, 0x80, 0x03, 0xc0, 0x01, 0x00, + 0x00, 0x40, 0x04, 0x20, 0x02, 0x00, 0x00, 0x40, 0x04, 0x20, 0x02, 0x00, + 0x00, 0x40, 0x04, 0x20, 0x02, 0x00, 0x00, 0x80, 0x03, 0xc0, 0x01, 0x00, + 0x00, 0x80, 0x0f, 0xf0, 0x01, 0x00, 0x00, 0xc0, 0x3e, 0x7c, 0x03, 0x00, + 0x00, 0xa0, 0xea, 0x57, 0x05, 0x00, 0x00, 0x90, 0xf2, 0x4f, 0x09, 0x00, + 0x00, 0x88, 0xbc, 0x3d, 0x11, 0x00, 0x00, 0x48, 0x66, 0x66, 0x12, 0x00, + 0x00, 0xc4, 0x99, 0x99, 0x23, 0x00, 0x00, 0x72, 0x8c, 0x31, 0x4e, 0x00, + 0x00, 0x4d, 0x4b, 0xd2, 0xb2, 0x00, 0x80, 0xe3, 0x30, 0x0c, 0xc7, 0x01, + 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x10, 0x89, 0x44, 0x22, 0x91, 0x08, + 0x10, 0x89, 0x44, 0x22, 0x91, 0x08, 0x10, 0x89, 0x44, 0x22, 0x91, 0x08, + 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/cray.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/cray.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define noname_width 64 +#define noname_height 64 +static char noname_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xe7,0xe3,0x1c, + 0x00,0x00,0x00,0x00,0xbc,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, + 0xff,0x03,0x00,0x00,0x00,0xbc,0x61,0x30,0xf8,0x03,0x00,0x00,0x00,0xb4,0x61, + 0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4, + 0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00, + 0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00, + 0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00, + 0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02, + 0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18, + 0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30, + 0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61, + 0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4, + 0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00, + 0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00, + 0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00, + 0x00,0x00,0xb4,0x61,0x30,0x18,0x02,0x00,0x00,0x00,0xb4,0x61,0x30,0x18,0x02, + 0x00,0x00,0xe0,0xb7,0x61,0x30,0x18,0x02,0x00,0x00,0xfc,0xb7,0x61,0x30,0x18, + 0x0e,0x00,0x80,0xff,0xb7,0x61,0x30,0x18,0x7e,0x00,0xe0,0xff,0xb7,0x61,0x30, + 0x18,0xfe,0x03,0xf0,0xff,0xbf,0x61,0x30,0xf8,0xff,0x0f,0xf8,0xff,0xbf,0x61, + 0x30,0xf8,0xff,0x3f,0xfc,0xff,0xff,0x63,0x30,0x18,0x00,0x20,0xfc,0xff,0xff, + 0xff,0x30,0x1e,0x00,0x20,0xfc,0xff,0xff,0xff,0xff,0x3f,0x00,0x20,0xf4,0xff, + 0xff,0xff,0xff,0x7f,0x00,0x20,0xe4,0xff,0xff,0xff,0xff,0xff,0x00,0x20,0x44, + 0xff,0xff,0xff,0xff,0xff,0x01,0x20,0x44,0xfc,0xff,0xff,0xff,0xff,0x03,0x20, + 0x44,0xf8,0xff,0xff,0xff,0xff,0x07,0x20,0x44,0x10,0xff,0xff,0xff,0xff,0x0f, + 0x20,0x44,0x10,0xe0,0xff,0xff,0x07,0x08,0x20,0x44,0x10,0x20,0x00,0x02,0x00, + 0x08,0x20,0x44,0x10,0x20,0x00,0x02,0x00,0xf8,0x3f,0x44,0x10,0x20,0x00,0x02, + 0x00,0xf8,0x3f,0x4c,0x10,0x20,0x00,0x02,0x00,0x08,0x00,0x58,0x10,0x20,0x00, + 0x02,0x00,0x08,0x00,0x70,0x10,0x20,0x00,0x02,0x00,0x08,0x00,0xe0,0x10,0x20, + 0x00,0x02,0x00,0x08,0x00,0xc0,0x13,0x20,0x00,0x02,0x00,0x08,0x00,0x80,0x1f, + 0x20,0x00,0x02,0x00,0x08,0x00,0x00,0xfe,0x21,0x00,0x02,0x00,0x08,0x00,0x00, + 0xf0,0xff,0x00,0x02,0xe0,0x0f,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0f,0x00, + 0x00,0x00,0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/dont_panic.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/dont_panic.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define dont_panic_new_width 64 +#define dont_panic_new_height 64 +static char dont_panic_new_bits[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xfc, + 0xff, 0xff, 0x5f, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0x5f, 0xf5, + 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x58, 0xf6, 0xff, 0xff, 0xfb, 0xff, + 0xff, 0xf7, 0x13, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xf8, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x0f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x8f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xf3, 0xcf, 0xfb, + 0xff, 0x3f, 0xfb, 0xff, 0xff, 0xf3, 0xcf, 0xff, 0xbf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, + 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0x3f, 0x00, + 0xf8, 0xff, 0xcf, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0xff, 0xcf, 0xff, + 0xff, 0xfd, 0x07, 0x00, 0xc0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0x03, 0x00, + 0x80, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xc7, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x06, + 0x00, 0xfe, 0xc1, 0xff, 0xff, 0x7f, 0x00, 0x06, 0x00, 0xc4, 0xe0, 0xff, + 0xff, 0x7f, 0x00, 0x1d, 0x00, 0x04, 0xf0, 0xff, 0xff, 0x7f, 0x1c, 0x2d, + 0x00, 0x04, 0xfc, 0xff, 0xff, 0x3f, 0xf0, 0xc0, 0x70, 0x08, 0xff, 0xff, + 0xff, 0x3f, 0xa0, 0xaa, 0xfb, 0xc8, 0xff, 0xff, 0xef, 0x3f, 0xe0, 0xaa, + 0xf9, 0xf9, 0xff, 0xff, 0xff, 0x3f, 0xac, 0xc0, 0xfc, 0xf9, 0xff, 0xff, + 0xff, 0x3f, 0x2e, 0x3d, 0xfe, 0xf9, 0xff, 0xf9, 0xff, 0x3f, 0x2f, 0x1f, + 0xfe, 0xf9, 0xff, 0xf9, 0xff, 0x2f, 0x9f, 0x00, 0xfd, 0xf9, 0xff, 0xff, + 0xff, 0x4f, 0x4f, 0xc1, 0xfe, 0xfc, 0xff, 0xff, 0xff, 0x4f, 0xc6, 0xbe, + 0xff, 0xfc, 0xff, 0xff, 0xff, 0x47, 0xe4, 0xd3, 0xff, 0xfc, 0xff, 0xff, + 0xff, 0xc7, 0xf2, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xe3, 0xf9, 0xff, + 0x3f, 0xfe, 0xf7, 0xff, 0xbf, 0xe3, 0xf4, 0xff, 0x1f, 0xff, 0xff, 0xff, + 0xff, 0x73, 0xe2, 0xff, 0x8d, 0xff, 0xff, 0xff, 0xff, 0x71, 0xc6, 0xff, + 0xdb, 0xff, 0xff, 0xfb, 0xff, 0x39, 0x0f, 0xdf, 0xe3, 0xff, 0xff, 0xff, + 0xff, 0x19, 0x3f, 0x3c, 0x84, 0xff, 0xff, 0xff, 0xff, 0x98, 0xff, 0x61, + 0x08, 0xfe, 0xff, 0xff, 0xff, 0xcc, 0xff, 0xff, 0x21, 0x80, 0xff, 0xff, + 0xff, 0xc4, 0xff, 0xff, 0x83, 0x83, 0xff, 0xff, 0xff, 0xe0, 0xef, 0xff, + 0x07, 0x80, 0xff, 0xff, 0x7f, 0xf0, 0xff, 0xff, 0x0f, 0xc0, 0xff, 0xff, + 0x7f, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x7f, 0xf8, 0xff, 0xff, + 0x7e, 0xf8, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/drawing.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/drawing.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,32 @@ +#define drafting_width 64 +#define drafting_height 54 +static char drafting_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf8,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0x1b,0x00,0x00,0x00,0x00,0x00, + 0x00,0x83,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xe1,0x1f,0x00,0x00,0x00,0x00, + 0x00,0xc0,0xf8,0x1f,0x00,0x00,0x00,0x00,0x00,0xc0,0x3e,0x3e,0x00,0x00,0x00, + 0x00,0x40,0xc0,0x07,0x33,0x00,0x00,0x00,0x00,0x80,0xe1,0x01,0x13,0x00,0x00, + 0x00,0x00,0x80,0x79,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x1e,0x80,0x19,0x00, + 0x00,0x00,0x00,0x00,0x0e,0xc0,0x08,0x00,0x00,0xc0,0x7f,0x00,0x0b,0xc0,0x0c, + 0x00,0x00,0xf0,0xff,0xc0,0x10,0x60,0x07,0x00,0x00,0xf8,0xff,0x31,0x20,0xe0, + 0x03,0x00,0x00,0xfc,0x7f,0x0c,0x40,0xf0,0x00,0x00,0x00,0xfe,0x1f,0x07,0x80, + 0x18,0x00,0x00,0x00,0xfe,0xcf,0x0f,0x00,0x19,0xf0,0x00,0x00,0xff,0xf3,0x1f, + 0x00,0x0e,0xff,0x00,0x00,0xff,0xfc,0x1f,0x00,0xfc,0x3f,0x00,0x00,0x7f,0xff, + 0x1f,0x00,0x7e,0x39,0x00,0x00,0xff,0xff,0x1f,0xd0,0x7e,0x3e,0x00,0x00,0xff, + 0xff,0x1f,0x7c,0xff,0x27,0x00,0x00,0xff,0xff,0xff,0x7f,0xff,0x3b,0x00,0x00, + 0xff,0x3f,0xe0,0xbf,0xfd,0x1f,0x00,0x00,0xff,0x3b,0x7e,0x85,0xf1,0x01,0x00, + 0x00,0xff,0xb1,0x03,0xc0,0x73,0x00,0x00,0x00,0xfe,0x21,0x00,0x40,0x7e,0x00, + 0x00,0x00,0xfe,0x40,0x00,0x60,0x38,0x00,0x00,0x00,0xfc,0x80,0x00,0x20,0x1c, + 0x00,0x00,0x00,0x78,0x00,0x01,0x30,0x1e,0x00,0x00,0x00,0x60,0x00,0x02,0x10, + 0x17,0x00,0x00,0x00,0x20,0x00,0x04,0x98,0x13,0x00,0x00,0x00,0x20,0x00,0x08, + 0xc8,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x6c,0x10,0x00,0x00,0x00,0x10,0x00, + 0x20,0x3c,0x10,0x00,0x00,0x00,0x08,0x00,0x40,0x0e,0x10,0x00,0x00,0x00,0x08, + 0x00,0x80,0x06,0x10,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x10,0x00,0x00,0x00, + 0x04,0x00,0x00,0x02,0x10,0x00,0x00,0x00,0xfe,0xff,0xff,0x03,0x10,0x00,0x00, + 0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00, + 0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10, + 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/elisp.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/elisp.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define elisp.xbm_width 64 +#define elisp.xbm_height 64 +static char elisp.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x07, 0x00, 0x1c, 0xc0, 0xe3, 0x07, + 0xfe, 0x3f, 0x07, 0x00, 0x1c, 0xf8, 0xe3, 0x0f, 0xfe, 0x3f, 0x07, 0x00, + 0x1c, 0xfe, 0xe3, 0x3e, 0xfe, 0x3f, 0x07, 0x00, 0x1c, 0x1f, 0xe0, 0x3c, + 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x0f, 0xe0, 0x78, 0x0e, 0x00, 0x07, 0x00, + 0x9c, 0x07, 0xe0, 0x70, 0x0e, 0x00, 0x07, 0x00, 0x9c, 0x03, 0xe0, 0x70, + 0x0e, 0x00, 0x07, 0x00, 0x9c, 0x03, 0xe0, 0xe0, 0x0e, 0x00, 0x07, 0x00, + 0x9c, 0x01, 0xe0, 0xe0, 0x0e, 0x00, 0x07, 0x00, 0x9c, 0x01, 0xe0, 0xe0, + 0x0e, 0x00, 0x07, 0x00, 0x9c, 0x01, 0xe0, 0xe0, 0x0e, 0x00, 0x07, 0x00, + 0x9c, 0x03, 0xe0, 0xe0, 0x0e, 0x00, 0x07, 0x00, 0x9c, 0x03, 0xe0, 0xe0, + 0x0e, 0x00, 0x07, 0x00, 0x9c, 0x03, 0xe0, 0xe0, 0x0e, 0x00, 0x07, 0x00, + 0x1c, 0x07, 0xe0, 0xf0, 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x0e, 0xe0, 0x78, + 0xfe, 0x3f, 0x07, 0x00, 0x1c, 0x1c, 0xe0, 0x3f, 0xfe, 0x3f, 0x07, 0x00, + 0x1c, 0x3c, 0xe0, 0x1f, 0xfe, 0x3f, 0x07, 0x00, 0x1c, 0x78, 0xe0, 0x03, + 0xfe, 0x3f, 0x07, 0x00, 0x1c, 0xf0, 0xe0, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x1c, 0xe0, 0xe1, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x1c, 0xc0, 0xe1, 0x00, + 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x80, 0xe3, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x1c, 0x00, 0xe3, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x00, 0xe7, 0x00, + 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x00, 0xe7, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x1c, 0x00, 0xe7, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x00, 0xe7, 0x00, + 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x00, 0xe7, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x1c, 0x00, 0xe7, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x1c, 0x80, 0xe3, 0x00, + 0x0e, 0x00, 0x07, 0x00, 0x1c, 0xc0, 0xe3, 0x00, 0xfe, 0x3f, 0x07, 0x00, + 0x1c, 0xf0, 0xe1, 0x00, 0xfe, 0x3f, 0xff, 0xff, 0x1c, 0xf8, 0xe0, 0x00, + 0xfe, 0x3f, 0xff, 0xff, 0x9c, 0x7f, 0xe0, 0x00, 0xfe, 0x3f, 0xff, 0xff, + 0x9c, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/escherknot.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/escherknot.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define escherknot_width 64 +#define escherknot_height 54 +static char escherknot_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x45, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x90, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, + 0x00, 0x00, 0x20, 0x09, 0x44, 0x02, 0x68, 0x00, 0x00, 0x00, 0x02, 0xa0, + 0x91, 0x04, 0xd2, 0x00, 0x00, 0x80, 0x50, 0x4d, 0xac, 0x12, 0xa4, 0x01, + 0x00, 0x00, 0x89, 0x52, 0x71, 0x2f, 0x68, 0x01, 0x00, 0x50, 0xd4, 0xaa, + 0xad, 0x1b, 0xc0, 0x01, 0x00, 0x00, 0x55, 0x6d, 0xd5, 0x3f, 0x50, 0x03, + 0x00, 0xa8, 0x7a, 0xaf, 0x55, 0x7e, 0xa0, 0x02, 0x00, 0x44, 0xd5, 0x7d, + 0xeb, 0x4b, 0xc8, 0x03, 0x00, 0x50, 0xff, 0xd7, 0x5a, 0x06, 0xa0, 0x02, + 0x00, 0xea, 0xfe, 0xff, 0xd7, 0x4d, 0x68, 0x03, 0x00, 0xb4, 0xff, 0xff, + 0xad, 0x1a, 0x90, 0x03, 0x00, 0xd9, 0xfe, 0xff, 0xbf, 0x37, 0xe8, 0x03, + 0x80, 0xec, 0x1f, 0xf4, 0xd7, 0x5a, 0xa4, 0x02, 0x00, 0xdb, 0x86, 0xea, + 0xbf, 0x36, 0xe8, 0x03, 0x80, 0xf4, 0x07, 0xb9, 0xff, 0x0d, 0x54, 0x01, + 0x40, 0x57, 0x23, 0xd7, 0xad, 0x05, 0xf5, 0x01, 0x80, 0xfa, 0x43, 0xf8, + 0x78, 0x07, 0xb4, 0x01, 0x40, 0xd7, 0x81, 0xed, 0xf0, 0x41, 0xdd, 0x00, + 0x40, 0x7d, 0x21, 0xf6, 0xe0, 0x11, 0xf5, 0x00, 0x40, 0xd7, 0xa2, 0xd9, + 0x40, 0x40, 0x7b, 0x00, 0x80, 0x77, 0x41, 0xfa, 0x00, 0x50, 0x7d, 0x00, + 0x40, 0xad, 0x51, 0x5b, 0x00, 0xa0, 0x1b, 0x00, 0x80, 0x5f, 0x55, 0xea, + 0x00, 0xda, 0x1e, 0x00, 0x80, 0xb6, 0x52, 0xbb, 0x52, 0xb4, 0x1f, 0x00, + 0x80, 0xdf, 0xa5, 0xd6, 0x04, 0xd5, 0x1f, 0x00, 0x00, 0xad, 0xaa, 0xaa, + 0xd1, 0x7a, 0x1f, 0x00, 0x00, 0x7f, 0xa5, 0xba, 0xab, 0xee, 0x3b, 0x00, + 0x00, 0xde, 0x1b, 0x55, 0xe9, 0xfb, 0x1f, 0x00, 0x00, 0x7c, 0x6d, 0xad, + 0x5a, 0x7f, 0x3f, 0x00, 0x00, 0xf8, 0x57, 0xb5, 0xfe, 0x7f, 0x3b, 0x00, + 0x00, 0xf0, 0x7d, 0x55, 0xe9, 0x4f, 0x3f, 0x00, 0x00, 0xe0, 0x6f, 0xad, + 0xfa, 0xa3, 0x3e, 0x00, 0x00, 0xc0, 0xff, 0xeb, 0xea, 0x40, 0x3b, 0x00, + 0x00, 0x00, 0x7f, 0x5d, 0x25, 0x80, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xab, + 0x1a, 0xa4, 0x3a, 0x00, 0x00, 0x00, 0x40, 0xdb, 0x26, 0x40, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0xf6, 0xb5, 0xa0, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x5c, + 0xab, 0xaa, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x7e, 0xed, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0xab, 0xbb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0xfe, 0xee, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf7, 0xff, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xbf, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/eye.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/eye.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define eye_width 64 +#define eye_height 54 +static char eye_bits[] = { + 0x00, 0x00, 0x0a, 0x92, 0x02, 0x00, 0x20, 0x45, 0x11, 0x22, 0xa1, 0xfd, + 0x6d, 0x4b, 0x8a, 0x90, 0x04, 0x48, 0xed, 0x6f, 0xff, 0x0d, 0x49, 0x16, + 0x40, 0xb5, 0x7e, 0xfb, 0xdb, 0xfe, 0x66, 0xc9, 0x51, 0xab, 0x95, 0xdf, + 0xff, 0xf7, 0x5b, 0xb6, 0xe8, 0x54, 0xc0, 0xea, 0xfe, 0x7f, 0xff, 0xeb, + 0xba, 0x17, 0x12, 0xf4, 0xbb, 0xed, 0x6b, 0xbf, 0xcc, 0x42, 0x80, 0x48, + 0xef, 0xff, 0xff, 0xf5, 0x75, 0x10, 0x09, 0xa2, 0xfd, 0x7f, 0xdb, 0x5f, + 0x9a, 0x06, 0xa0, 0x58, 0x6f, 0xdb, 0x7f, 0xfb, 0x06, 0x41, 0x04, 0xa8, + 0xfd, 0xff, 0xff, 0xef, 0x61, 0x00, 0x81, 0xc6, 0xaa, 0xf7, 0x6d, 0xbd, + 0x09, 0x14, 0x10, 0x58, 0xff, 0xfd, 0xff, 0xf7, 0x80, 0x00, 0x41, 0xed, + 0x76, 0x7f, 0xdb, 0x7f, 0x15, 0x20, 0x74, 0xba, 0xdf, 0xdf, 0xff, 0xee, + 0x00, 0x85, 0xd0, 0xef, 0xfb, 0xf7, 0xff, 0xff, 0x24, 0x10, 0xbe, 0xfd, + 0xfe, 0xff, 0x77, 0xbb, 0x00, 0x42, 0xed, 0xff, 0xff, 0xff, 0xfe, 0xdf, + 0xa9, 0xe8, 0xff, 0xd7, 0xff, 0xff, 0xbf, 0xf7, 0x00, 0x70, 0x07, 0xcd, + 0xfd, 0xf7, 0xff, 0xff, 0x44, 0xde, 0xa0, 0x7b, 0xff, 0xfe, 0xfb, 0xbe, + 0x10, 0x7c, 0xcc, 0xfe, 0xbf, 0xff, 0xbf, 0xef, 0x41, 0x3f, 0xfc, 0xff, + 0xff, 0xff, 0xef, 0xff, 0x94, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, + 0xc1, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xc8, 0xf6, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xee, 0xa0, 0xeb, 0xeb, 0xea, 0xff, 0xff, 0xbf, 0xbf, + 0xda, 0xf5, 0xee, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x60, 0xbf, 0x61, 0xf7, + 0xff, 0xff, 0xff, 0xed, 0x98, 0xfa, 0xf0, 0xfd, 0xff, 0xdb, 0xdf, 0xbf, + 0xe1, 0x3f, 0xe0, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0x40, 0x07, 0xf0, 0xff, + 0xff, 0xeb, 0xf7, 0x37, 0x88, 0x05, 0xe2, 0xfe, 0xff, 0x57, 0x7f, 0xdf, + 0x20, 0x50, 0xc0, 0xff, 0xff, 0xe9, 0xff, 0x55, 0x01, 0x30, 0xc0, 0xff, + 0xf7, 0xf7, 0x5f, 0x37, 0x00, 0x84, 0xc0, 0xff, 0x7f, 0xdb, 0xff, 0x8c, + 0x00, 0x00, 0x82, 0xdf, 0xfb, 0xf5, 0x37, 0x93, 0x00, 0x69, 0x08, 0xf7, + 0xbf, 0xda, 0x3e, 0x25, 0x00, 0x80, 0x01, 0xfc, 0x7f, 0xf7, 0xcf, 0x22, + 0x00, 0x40, 0x12, 0xf8, 0x97, 0xfd, 0x33, 0x44, 0x00, 0x90, 0x94, 0x44, + 0xf5, 0xdf, 0xae, 0x10, 0x00, 0x02, 0x32, 0xa0, 0xbe, 0xf5, 0x3f, 0x45, + 0x00, 0xa0, 0xdc, 0xd5, 0xf1, 0xbf, 0x0a, 0x00, 0x00, 0x00, 0xec, 0x7f, + 0x5f, 0xef, 0x5f, 0x12, 0x00, 0x48, 0x65, 0xdf, 0xfb, 0xfb, 0x0f, 0x00, + 0x00, 0x00, 0xba, 0xf5, 0xfe, 0xff, 0x45, 0x21, 0x00, 0x80, 0xb0, 0xff, + 0xbf, 0xff, 0x23, 0x08, 0x00, 0x20, 0xf2, 0xde, 0xfb, 0xdf, 0x08, 0x00, + 0x00, 0x00, 0x40, 0xf7, 0xfe, 0x77, 0x02, 0x41, 0x00, 0x04, 0x94, 0xbd, + 0xef, 0xbd, 0x40, 0x10, 0x00, 0x00, 0xa0, 0xea, 0x7f, 0x1f, 0x0a, 0x04, + 0x08, 0x01, 0x09, 0xfd, 0xfe, 0x87, 0x00, 0x00, 0x00, 0x00, 0x40, 0xaa, + 0xbb, 0x15, 0x40, 0x00, 0x00, 0x00, 0x10, 0xd4, 0xef, 0x41, 0x04, 0x21}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/filing.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/filing.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define filing_width 64 +#define filing_height 54 +static char filing_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x13, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x44, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x11, 0x91, 0x01, 0x00, 0x00, + 0x00, 0xf0, 0x44, 0x44, 0x44, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x11, 0x11, + 0x11, 0x19, 0x00, 0x00, 0x00, 0x4c, 0x44, 0x44, 0x44, 0x74, 0x00, 0x00, + 0x00, 0x34, 0x11, 0x11, 0x11, 0x6e, 0x00, 0x00, 0x00, 0xc4, 0x44, 0x44, + 0xc4, 0x55, 0x00, 0x00, 0x00, 0x04, 0x13, 0x11, 0xb9, 0x6a, 0x00, 0x00, + 0x00, 0x04, 0x4c, 0x44, 0x57, 0x55, 0x00, 0x00, 0x00, 0x04, 0x30, 0xf1, + 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x5c, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x04, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x84, 0x00, 0x56, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x84, 0x01, 0xaa, 0xaa, 0x6a, 0x00, 0x00, + 0x00, 0x04, 0x16, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x04, 0x18, 0xaa, + 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x56, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x1d, 0x00, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x71, 0x00, 0x56, + 0x55, 0x55, 0x00, 0x00, 0x00, 0xc1, 0x01, 0xaa, 0xaa, 0x6a, 0x00, 0x00, + 0x00, 0x01, 0x07, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x01, 0x1c, 0xaa, + 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x01, 0x70, 0x56, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x01, 0xc0, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x57, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x61, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, + 0x00, 0x81, 0x05, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x01, 0x06, 0xab, + 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x57, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x34, 0x00, 0x57, + 0x55, 0x55, 0x00, 0x00, 0x00, 0xc4, 0x00, 0xab, 0xaa, 0x6a, 0x00, 0x00, + 0x00, 0x04, 0x03, 0x57, 0x55, 0x55, 0x00, 0x00, 0x00, 0x04, 0x0c, 0xab, + 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x04, 0x30, 0x57, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x04, 0xc0, 0xab, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x84, 0x00, 0x56, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x84, 0x01, 0xaa, 0xaa, 0x6a, 0x00, 0x00, + 0x00, 0x04, 0x16, 0x56, 0x55, 0x55, 0x00, 0x00, 0x00, 0x04, 0x18, 0xaa, + 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x56, 0x55, 0x75, 0x00, 0x00, + 0x00, 0x30, 0x00, 0xaa, 0xaa, 0xbe, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x56, + 0xd5, 0xef, 0x06, 0x00, 0x00, 0x00, 0x03, 0xaa, 0xfa, 0xbb, 0x1b, 0x00, + 0x00, 0x00, 0x0c, 0x56, 0xef, 0xee, 0x6e, 0x00, 0x00, 0x00, 0x30, 0xea, + 0xbb, 0xbb, 0x3b, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0xee, 0xee, 0x6e, 0x00, + 0x00, 0x00, 0x00, 0xbf, 0xbb, 0xbb, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/finger.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/finger.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define finger_width 64 +#define finger_height 54 +static char finger_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x88, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x03, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x84, 0x83, 0x03, 0x00, 0x00, 0x00, 0x00, 0x08, 0x6c, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, 0x38, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x2e, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x11, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0xc4, 0x07, 0x3c, 0x40, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, + 0x47, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x84, 0xf0, 0x40, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x3f, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x12, 0x04, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x11, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, 0x09, + 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x88, 0x07, 0x0c, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x02, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, + 0x18, 0x80, 0x01, 0x00, 0x00, 0x00, 0x30, 0x09, 0x70, 0x40, 0x01, 0x00, + 0x00, 0x00, 0xa0, 0x48, 0xc1, 0x0b, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x08, + 0x02, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x07, 0x04, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x07, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/galaxy.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/galaxy.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define galaxy_width 64 +#define galaxy_height 64 +static char galaxy_bits[] = { + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff, + 0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xf7,0xff,0xff,0xfd,0xff, + 0x1f,0x7b,0xff,0xf3,0xff,0xff,0xfd,0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe4,0x1f,0x83,0xff,0xff,0xff, + 0xff,0x7f,0xf7,0xbb,0xff,0xff,0xff,0xff,0xff,0x1e,0xff,0xc0,0xee,0xff,0xff, + 0xff,0xff,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0x8e,0xf1,0xff,0xff,0xfb, + 0xff,0xff,0xff,0x3f,0xfe,0xaf,0xff,0xe7,0xbf,0xff,0x3f,0xc7,0xff,0x73,0xfe, + 0xff,0xbf,0xff,0xff,0xf7,0xee,0xff,0xf9,0x7f,0xbf,0xff,0x7f,0xf9,0x4f,0xff, + 0xf7,0xff,0xff,0xff,0xff,0xfd,0x9f,0xfb,0x8f,0xff,0xfd,0xff,0xff,0xec,0xd6, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x6d,0xf6,0xdf,0xff,0xfc,0xff,0xff,0x3d,0xff, + 0xf6,0xa3,0xff,0xff,0xfd,0xff,0xbf,0x7d,0x57,0x10,0xfd,0xff,0xfb,0xff,0xb9, + 0x75,0x4f,0x20,0xf8,0xf7,0xff,0xff,0x73,0x74,0x0f,0xf0,0xf9,0xf7,0xfd,0xff, + 0x7f,0xdc,0x0e,0x29,0xc3,0xff,0xff,0xff,0x77,0xec,0x0f,0xe0,0xe7,0xff,0xff, + 0xff,0xff,0xec,0x27,0x48,0x9f,0xef,0xff,0xff,0xef,0xe9,0x07,0x90,0x7e,0xef, + 0xff,0xff,0xbe,0x33,0x22,0x60,0x5f,0xff,0xff,0xff,0xff,0xf6,0x89,0xe0,0xfb, + 0xfe,0xff,0xff,0xff,0xc9,0x1f,0xb0,0xbf,0xfe,0xff,0xff,0xff,0x1f,0xc0,0x1a, + 0xfe,0xed,0xff,0xff,0xff,0xcf,0x7f,0x70,0xbd,0xfe,0xff,0xff,0xff,0xbf,0xc7, + 0x70,0x3c,0xfe,0xff,0xff,0xf7,0xff,0xfa,0x3f,0xa7,0xef,0xff,0xff,0xef,0xfb, + 0x0f,0x9f,0xbf,0xfe,0xff,0xff,0xcf,0xf7,0xff,0xdf,0xbf,0xfe,0xff,0xff,0xdf, + 0xe7,0xff,0xe7,0x7f,0xfb,0xff,0xff,0xbf,0x7f,0x73,0x61,0xba,0xff,0xff,0xff, + 0xff,0xff,0xc0,0xfc,0xbb,0xff,0xff,0xff,0xff,0xef,0x1f,0x7a,0xcb,0xff,0xdf, + 0xff,0xff,0xf9,0x77,0xbf,0xcf,0xff,0xdf,0xff,0xff,0x73,0xf9,0xff,0xef,0xff, + 0xdf,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfb, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0x8f,0xff,0xff, + 0xfe,0xff,0xff,0xff,0xff,0x7f,0xe8,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, + 0xf9,0xff,0xff,0xfe,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0x7f,0xff, + 0xff,0x7f,0xff,0xff,0xcf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/gnu.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/gnu.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,33 @@ +#define gnu_width 50 +#define gnu_height 50 +static unsigned char gnu_bits[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xf1, + 0xff, 0xff, 0xf3, 0xff, 0x8f, 0xff, 0xe1, 0xff, 0xff, 0xf9, 0x3f, 0x22, + 0xfe, 0xcb, 0xff, 0xff, 0xf8, 0xc3, 0xf8, 0xfc, 0xcb, 0xff, 0x7f, 0xfc, + 0xe0, 0xf9, 0xf9, 0xdb, 0xff, 0x7f, 0xfc, 0xf0, 0xfb, 0xf3, 0xd9, 0xff, + 0x3f, 0x7e, 0xf8, 0xff, 0xf7, 0xcc, 0xff, 0x9f, 0x3e, 0x1c, 0x7f, 0x44, + 0xce, 0xff, 0xcf, 0x1e, 0xcc, 0x01, 0x00, 0xe7, 0xff, 0xef, 0x0e, 0xce, + 0x38, 0x1c, 0xe0, 0xff, 0xef, 0x0e, 0x27, 0xfe, 0xfa, 0xc3, 0xff, 0xef, + 0x7c, 0x93, 0xff, 0xe5, 0xbf, 0xff, 0xef, 0x99, 0xc9, 0xab, 0x2a, 0x00, + 0xff, 0xcf, 0xc3, 0x24, 0x54, 0xc5, 0xd5, 0xff, 0x9f, 0x7f, 0x16, 0xab, + 0xca, 0xff, 0xff, 0x1f, 0x1f, 0x93, 0x46, 0x95, 0xff, 0xff, 0x7f, 0xc8, + 0x49, 0x99, 0x8a, 0xff, 0xff, 0xff, 0xf0, 0x49, 0x4b, 0x95, 0xff, 0xff, + 0xff, 0xf9, 0x4c, 0x88, 0x8a, 0xff, 0xff, 0xff, 0x1e, 0xe6, 0x58, 0x95, + 0xff, 0xff, 0x3f, 0x00, 0xe6, 0xb7, 0x0a, 0xff, 0xff, 0xbf, 0x8a, 0xea, + 0x50, 0x15, 0xff, 0xff, 0xff, 0x8f, 0xca, 0x99, 0x2a, 0xff, 0xff, 0xff, + 0xa7, 0x95, 0x7f, 0x15, 0xff, 0xff, 0xff, 0x23, 0x55, 0x7f, 0x2a, 0xfe, + 0xff, 0xff, 0x63, 0xd8, 0xfc, 0x14, 0xfe, 0xff, 0xff, 0x43, 0x9a, 0xfb, + 0x2b, 0xfe, 0xff, 0xff, 0xc3, 0xaa, 0x12, 0x94, 0xfc, 0xff, 0xff, 0xc1, + 0x32, 0xd5, 0xc1, 0xfd, 0xff, 0xff, 0x81, 0x46, 0xd5, 0x47, 0xfc, 0xff, + 0xff, 0x83, 0x6c, 0xc2, 0x6e, 0xfc, 0xff, 0xff, 0x83, 0x89, 0x88, 0x69, + 0xfe, 0xff, 0xff, 0x07, 0x92, 0x09, 0x3b, 0xfe, 0xff, 0xff, 0x07, 0x22, + 0x01, 0x3c, 0xfe, 0xff, 0xff, 0x0f, 0x4e, 0x02, 0x03, 0xfe, 0xff, 0xff, + 0x2f, 0xd0, 0x18, 0x3e, 0xff, 0xff, 0xff, 0x3f, 0xb0, 0x19, 0x9e, 0xff, + 0xff, 0xff, 0x7f, 0x00, 0x09, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x01, 0xe3, + 0xc1, 0xff, 0xff, 0xff, 0xff, 0x05, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/gopher.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/gopher.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define xgopher_width 64 +#define xgopher_height 54 +static char xgopher_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x39, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf9, + 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x06, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x30, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x78, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x20, 0x0f, 0xf8, 0x01, + 0x80, 0x3f, 0xf8, 0xf0, 0xff, 0x1f, 0x06, 0x06, 0xc0, 0xc0, 0xf8, 0xff, + 0xff, 0x97, 0x01, 0x0c, 0x20, 0x80, 0xf9, 0xff, 0xff, 0xe3, 0xf0, 0x08, + 0x90, 0x07, 0x1f, 0xff, 0xff, 0x40, 0xf8, 0x11, 0xd8, 0x1f, 0x26, 0x38, + 0x38, 0x4c, 0xfc, 0x12, 0xe8, 0x3f, 0x1a, 0xc0, 0x07, 0x90, 0x9e, 0x20, + 0x28, 0x3e, 0x8e, 0x01, 0xc0, 0xa3, 0x1f, 0x20, 0x08, 0x7e, 0xe4, 0x07, + 0x70, 0x8e, 0x0f, 0x20, 0x08, 0x7c, 0x31, 0x08, 0x10, 0x90, 0x03, 0x20, + 0x08, 0xf8, 0x11, 0x30, 0x08, 0x10, 0x07, 0x20, 0x18, 0xf8, 0x09, 0x20, + 0x08, 0x20, 0x07, 0x20, 0x18, 0xf0, 0x89, 0x67, 0xe8, 0x21, 0x03, 0x10, + 0x30, 0xa0, 0xe9, 0x67, 0xe8, 0xe7, 0x03, 0x10, 0x20, 0xc0, 0x01, 0x40, + 0x0b, 0x00, 0x03, 0x08, 0x60, 0xe0, 0x31, 0x80, 0x07, 0x58, 0x07, 0x04, + 0xc0, 0x41, 0x00, 0xc0, 0x0f, 0x00, 0x06, 0x03, 0x00, 0xdf, 0x0f, 0xc0, + 0x0f, 0xe0, 0xff, 0x01, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x00, 0xc0, 0x40, 0x0f, 0x00, 0x02, 0xf0, 0x87, 0x01, + 0x00, 0xe0, 0xc0, 0x00, 0x07, 0x0c, 0x06, 0x00, 0x00, 0xbe, 0x00, 0xff, + 0xff, 0xe3, 0x7b, 0x00, 0x80, 0x81, 0x13, 0x1e, 0xc2, 0xf1, 0x80, 0x01, + 0x00, 0x00, 0x3e, 0x08, 0xc2, 0x11, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, + 0xc2, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x10, 0x40, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x11, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, + 0x3f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x1f, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcc, 0x8f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, + 0x39, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x7f, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0xc0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd0, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0xf0, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x20, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x20, 0x72, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/help.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/help.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define help_width 64 +#define help_height 54 +static char help_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0x01, 0x00, + 0x00, 0xe0, 0x0f, 0x20, 0x02, 0xf0, 0x03, 0x00, 0x00, 0xf0, 0x1f, 0x84, + 0x48, 0xf8, 0x07, 0x00, 0x00, 0xf8, 0x3f, 0x50, 0x95, 0xfc, 0x0f, 0x00, + 0x00, 0xfc, 0x7f, 0xaa, 0x2a, 0xfe, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x55, + 0x55, 0xff, 0x1f, 0x00, 0x00, 0xf2, 0xff, 0xfb, 0xaf, 0xff, 0x3f, 0x00, + 0x00, 0xe2, 0xff, 0x0f, 0xf8, 0xff, 0x27, 0x00, 0x00, 0xc1, 0xff, 0x03, + 0xe0, 0xff, 0x23, 0x00, 0x00, 0x81, 0xff, 0x01, 0xc0, 0xff, 0x41, 0x00, + 0x00, 0x01, 0xff, 0x00, 0x80, 0xff, 0x40, 0x00, 0x80, 0x00, 0x7e, 0x00, + 0x00, 0x7f, 0x80, 0x00, 0x80, 0x00, 0x3c, 0x00, 0x00, 0x3e, 0x80, 0x00, + 0x80, 0x00, 0x1a, 0x00, 0x00, 0x5c, 0x80, 0x00, 0x80, 0x00, 0x14, 0x00, + 0x00, 0x28, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x40, 0x00, 0xe7, 0xfe, 0x0e, 0x3f, 0x00, 0x01, 0x40, 0x00, 0x42, 0x84, + 0x04, 0x62, 0x00, 0x01, 0x40, 0x00, 0x42, 0x04, 0x04, 0x42, 0x00, 0x01, + 0x40, 0x00, 0x42, 0x44, 0x04, 0x62, 0x00, 0x01, 0x40, 0x00, 0x7e, 0x7c, + 0x04, 0x3e, 0x00, 0x01, 0x40, 0x00, 0x42, 0x44, 0x04, 0x02, 0x00, 0x01, + 0x40, 0x00, 0x42, 0x04, 0x04, 0x02, 0x00, 0x01, 0x40, 0x00, 0x42, 0x84, + 0x44, 0x02, 0x00, 0x01, 0x80, 0x00, 0xe7, 0xfe, 0x7e, 0x07, 0x80, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x38, 0x00, + 0x00, 0x0e, 0x80, 0x00, 0x80, 0x00, 0x7c, 0x00, 0x00, 0x1f, 0x80, 0x00, + 0x00, 0x01, 0xfe, 0x00, 0x80, 0x3f, 0x40, 0x00, 0x00, 0x01, 0xff, 0x01, + 0xc0, 0x7f, 0x40, 0x00, 0x00, 0x82, 0xff, 0x03, 0xe0, 0xff, 0x20, 0x00, + 0x00, 0xc2, 0xff, 0x0f, 0xf8, 0xff, 0x21, 0x00, 0x00, 0xe2, 0xff, 0xfb, + 0xe7, 0xff, 0x13, 0x00, 0x00, 0xf4, 0xff, 0x01, 0xc0, 0xff, 0x17, 0x00, + 0x00, 0xfc, 0xff, 0x00, 0x80, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x00, + 0x00, 0xff, 0x0f, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0xfe, 0x07, 0x00, + 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0xc0, 0x0f, 0x00, + 0x00, 0xf8, 0x01, 0x00, 0x00, 0x80, 0x47, 0x00, 0x80, 0xf4, 0x00, 0x00, + 0x00, 0x00, 0x17, 0x12, 0x21, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x45, + 0x54, 0x1d, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xaa, 0xaa, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x57, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/hourglass.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/hourglass.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define hourglass_width 64 +#define hourglass_height 54 +static char hourglass_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x0f, 0x58, 0x25, 0x11, 0x04, 0x82, 0x10, 0x49, 0x15, + 0x58, 0x25, 0x55, 0x95, 0xaa, 0x54, 0x49, 0x15, 0xf0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x0f, 0xc0, 0xdf, 0x80, 0x03, 0x78, 0x00, 0xe2, 0x03, + 0xc0, 0x7a, 0x80, 0x02, 0x58, 0x00, 0xd4, 0x02, 0xc0, 0x5a, 0x80, 0x00, + 0x58, 0x00, 0xd4, 0x02, 0xc0, 0x1a, 0x00, 0x02, 0x58, 0x00, 0xd4, 0x02, + 0xc0, 0x32, 0x80, 0x02, 0x58, 0x00, 0xca, 0x02, 0xc0, 0x32, 0x80, 0x02, + 0x58, 0x00, 0xca, 0x02, 0xc0, 0x52, 0x81, 0x00, 0x58, 0x00, 0xca, 0x02, + 0xc0, 0xa2, 0x00, 0x82, 0x5a, 0x00, 0xc5, 0x02, 0xc0, 0xe2, 0x80, 0xd0, + 0x5d, 0x00, 0xc5, 0x02, 0xc0, 0x42, 0x81, 0x7e, 0x59, 0x80, 0xc2, 0x02, + 0xc0, 0x82, 0x83, 0xdf, 0x5c, 0x41, 0xc1, 0x02, 0xc0, 0x02, 0xe7, 0xbf, + 0xd9, 0xa4, 0xc0, 0x02, 0xc0, 0x02, 0xfa, 0xdb, 0x5a, 0x53, 0xc0, 0x02, + 0xc0, 0x02, 0xec, 0xef, 0xdd, 0x24, 0xc0, 0x02, 0xc0, 0x02, 0x98, 0xbf, + 0x5a, 0x19, 0xc0, 0x02, 0xc0, 0x02, 0x60, 0xd6, 0x59, 0x06, 0xc0, 0x02, + 0xc0, 0x02, 0x80, 0xb9, 0xda, 0x01, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0xa7, + 0x5d, 0x00, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0xcd, 0x59, 0x00, 0xc0, 0x02, + 0xc0, 0x02, 0x80, 0x95, 0x5b, 0x00, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0xa5, + 0x5c, 0x00, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0x25, 0x5d, 0x00, 0xc0, 0x02, + 0xc0, 0x02, 0x80, 0xa5, 0x5c, 0x00, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0x65, + 0x5d, 0x00, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0xd5, 0x5a, 0x00, 0xc0, 0x02, + 0xc0, 0x02, 0x80, 0x2d, 0x5d, 0x00, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0x97, + 0x59, 0x00, 0xc0, 0x02, 0xc0, 0x02, 0x80, 0x03, 0xd9, 0x01, 0xc0, 0x02, + 0xc0, 0x02, 0xe0, 0x84, 0x58, 0x06, 0xc0, 0x02, 0xc0, 0x02, 0xd8, 0x02, + 0x59, 0x19, 0xc0, 0x02, 0xc0, 0x02, 0x34, 0x82, 0x5a, 0x24, 0xc0, 0x02, + 0xc0, 0x02, 0x8a, 0x00, 0x58, 0x50, 0xc0, 0x02, 0xc0, 0x02, 0x85, 0x02, + 0x58, 0xa0, 0xc0, 0x02, 0xc0, 0x82, 0x83, 0x82, 0x59, 0x40, 0xc1, 0x02, + 0xc0, 0xc2, 0x01, 0x42, 0x5e, 0x80, 0xc2, 0x02, 0xc0, 0xe2, 0x80, 0xea, + 0x5a, 0x00, 0xc5, 0x02, 0xc0, 0xa2, 0x80, 0x5e, 0x5d, 0x00, 0xc5, 0x02, + 0xc0, 0x72, 0x81, 0xba, 0xdd, 0x00, 0xca, 0x02, 0xc0, 0xd2, 0x80, 0x6f, + 0x5a, 0x01, 0xca, 0x02, 0xc0, 0x2a, 0xc1, 0xf6, 0x59, 0x03, 0xd4, 0x02, + 0xc0, 0xba, 0xe0, 0x55, 0x5a, 0x04, 0xd4, 0x02, 0xc0, 0x6a, 0x79, 0xaf, + 0x5c, 0x09, 0xd4, 0x02, 0xc0, 0xaa, 0xfd, 0x5b, 0xda, 0x34, 0xd4, 0x02, + 0xc0, 0xd6, 0xfe, 0x6f, 0x5c, 0x50, 0xe8, 0x02, 0xc0, 0xb6, 0xff, 0x37, + 0x5b, 0xa5, 0xe9, 0x02, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, + 0x58, 0x25, 0x11, 0x04, 0x82, 0x10, 0x49, 0x15, 0x58, 0x25, 0x55, 0xa5, + 0xaa, 0x54, 0x49, 0x15, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/kotl.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/kotl.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define kotl.xbm_width 64 +#define kotl.xbm_height 64 +static char kotl.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x60, 0xfc, 0xff, 0xfc, 0x7f, 0x0e, 0x00, + 0x1c, 0x70, 0xfc, 0xff, 0xfc, 0x7f, 0x0e, 0x00, 0x1c, 0x38, 0xfc, 0xff, + 0xfc, 0x7f, 0x0e, 0x00, 0x1c, 0x1c, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0x1c, 0x0e, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, 0x1c, 0x07, 0x1c, 0xe0, + 0x80, 0x03, 0x0e, 0x00, 0x9c, 0x03, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0xdc, 0x01, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, 0xfc, 0x00, 0x1c, 0xe0, + 0x80, 0x03, 0x0e, 0x00, 0x7c, 0x00, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0x3c, 0x00, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, 0x3c, 0x00, 0x1c, 0xe0, + 0x80, 0x03, 0x0e, 0x00, 0x7c, 0x00, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0xfc, 0x00, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, 0xfc, 0x00, 0x1c, 0xe0, + 0x80, 0x03, 0x0e, 0x00, 0xdc, 0x01, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0xdc, 0x01, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, 0x9c, 0x03, 0x1c, 0xe0, + 0x80, 0x03, 0x0e, 0x00, 0x9c, 0x03, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0x1c, 0x07, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, 0x1c, 0x07, 0x1c, 0xe0, + 0x80, 0x03, 0x0e, 0x00, 0x1c, 0x0e, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0x1c, 0x0e, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, 0x1c, 0x1c, 0x1c, 0xe0, + 0x80, 0x03, 0x0e, 0x00, 0x1c, 0x1c, 0x1c, 0xe0, 0x80, 0x03, 0x0e, 0x00, + 0x1c, 0x38, 0xfc, 0xff, 0x80, 0x03, 0xfe, 0x3f, 0x1c, 0x78, 0xfc, 0xff, + 0x80, 0x03, 0xfe, 0x3f, 0x1c, 0x70, 0xfc, 0xff, 0x80, 0x03, 0xfe, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/library.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/library.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define library_width 64 +#define library_height 54 +static char library_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x04, 0x00, 0x00, + 0x00, 0x80, 0x3f, 0x00, 0xa0, 0x07, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, + 0x60, 0x04, 0x00, 0x00, 0x00, 0x80, 0x2e, 0xfc, 0x3f, 0x06, 0x00, 0x00, + 0x00, 0x80, 0x2a, 0x04, 0xe0, 0x05, 0x00, 0x00, 0x00, 0x80, 0x2e, 0x04, + 0x20, 0xff, 0x00, 0x00, 0x00, 0x80, 0x20, 0x04, 0xe0, 0x84, 0x00, 0x00, + 0x00, 0x80, 0x20, 0x04, 0x20, 0x87, 0x00, 0x00, 0x00, 0x80, 0x20, 0x54, + 0x63, 0xb4, 0x00, 0x00, 0x00, 0x80, 0x2a, 0xb4, 0xae, 0xa7, 0x00, 0x00, + 0x00, 0x86, 0x2c, 0x04, 0xe0, 0x84, 0x30, 0x00, 0x00, 0x85, 0xe8, 0x07, + 0x20, 0xb6, 0x50, 0x00, 0x00, 0x85, 0xec, 0x47, 0xe1, 0x84, 0x50, 0x00, + 0xe0, 0xce, 0x62, 0x46, 0xa2, 0x97, 0xb9, 0x03, 0x30, 0xd8, 0x60, 0xc7, + 0xe2, 0x95, 0x0d, 0x06, 0x90, 0xf0, 0xe6, 0x07, 0x23, 0xa7, 0x87, 0x04, + 0xc8, 0xe0, 0xe4, 0x46, 0x61, 0x84, 0x83, 0x09, 0x08, 0xc0, 0x6c, 0x87, + 0xa0, 0x87, 0x01, 0x08, 0x04, 0xc0, 0xe2, 0x07, 0xe1, 0xb5, 0x01, 0x10, + 0xa4, 0xc3, 0x64, 0xc6, 0x20, 0xa7, 0xe1, 0x12, 0x54, 0xc4, 0x62, 0x47, + 0xe2, 0x84, 0x11, 0x15, 0x34, 0xc4, 0xea, 0x47, 0x20, 0xb7, 0x11, 0x16, + 0x18, 0xc8, 0x6e, 0x87, 0x62, 0xa4, 0x09, 0x0c, 0x00, 0xc8, 0xe0, 0x86, + 0xa1, 0x87, 0x09, 0x00, 0x00, 0xc8, 0x62, 0x06, 0xe3, 0xa5, 0x09, 0x00, + 0x00, 0xcc, 0xe4, 0x47, 0x20, 0x96, 0x19, 0x00, 0x00, 0xc4, 0xe2, 0x07, + 0xe3, 0x94, 0x11, 0x00, 0x00, 0xc6, 0x60, 0x06, 0xa3, 0x87, 0x31, 0x00, + 0x00, 0xc3, 0xe0, 0xc7, 0xe2, 0x95, 0x61, 0x00, 0x80, 0xc1, 0x7f, 0x07, + 0x61, 0xa6, 0xc1, 0x00, 0xc0, 0xc0, 0xe4, 0x46, 0x60, 0xa5, 0x81, 0x01, + 0x60, 0xc0, 0x6a, 0x87, 0xa3, 0x97, 0x01, 0x03, 0x30, 0xc0, 0x7f, 0xc7, + 0x63, 0xb5, 0x01, 0x06, 0x18, 0xc0, 0xe0, 0x07, 0xa1, 0xa6, 0x01, 0x0c, + 0x08, 0xc0, 0xe0, 0xc7, 0xe1, 0x95, 0x01, 0x08, 0x08, 0xc0, 0xe0, 0x07, + 0x20, 0x87, 0x01, 0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/lisp.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/lisp.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define lisp.xbm_width 64 +#define lisp.xbm_height 64 +static char lisp.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x38, 0x80, 0xc7, 0x0f, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0xf0, 0xc7, 0x1f, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0xfc, 0xc7, 0x7d, 0x00, 0x00, 0x0e, 0x00, 0x38, 0x3e, 0xc0, 0x79, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0x1e, 0xc0, 0xf1, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0x0f, 0xc0, 0xe1, 0x00, 0x00, 0x0e, 0x00, 0x38, 0x07, 0xc0, 0xe1, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0x07, 0xc0, 0xc1, 0x01, 0x00, 0x0e, 0x00, 0x38, + 0x03, 0xc0, 0xc1, 0x01, 0x00, 0x0e, 0x00, 0x38, 0x03, 0xc0, 0xc1, 0x01, + 0x00, 0x0e, 0x00, 0x38, 0x03, 0xc0, 0xc1, 0x01, 0x00, 0x0e, 0x00, 0x38, + 0x07, 0xc0, 0xc1, 0x01, 0x00, 0x0e, 0x00, 0x38, 0x07, 0xc0, 0xc1, 0x01, + 0x00, 0x0e, 0x00, 0x38, 0x07, 0xc0, 0xc1, 0x01, 0x00, 0x0e, 0x00, 0x38, + 0x0e, 0xc0, 0xe1, 0x01, 0x00, 0x0e, 0x00, 0x38, 0x1c, 0xc0, 0xf1, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0x38, 0xc0, 0x7f, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0x78, 0xc0, 0x3f, 0x00, 0x00, 0x0e, 0x00, 0x38, 0xf0, 0xc0, 0x07, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0xe0, 0xc1, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0xc0, 0xc3, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, 0x80, 0xc3, 0x01, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0x00, 0xc7, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0x00, 0xc6, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, 0x00, 0xce, 0x01, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0x00, 0xce, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0x00, 0xce, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, 0x00, 0xce, 0x01, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0x00, 0xce, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0x00, 0xce, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, 0x00, 0xc7, 0x01, 0x00, + 0x00, 0x0e, 0x00, 0x38, 0x80, 0xc7, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x38, + 0xe0, 0xc3, 0x01, 0x00, 0x00, 0xfe, 0xff, 0x39, 0xf0, 0xc1, 0x01, 0x00, + 0x00, 0xfe, 0xff, 0x39, 0xff, 0xc0, 0x01, 0x00, 0x00, 0xfe, 0xff, 0x39, + 0x7f, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/load.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/load.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define load_width 64 +#define load_height 54 +static char load_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x3e, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x04, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x20, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x04, 0x80, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x04, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x20, + 0x04, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x20, 0x04, 0xe1, 0xff, 0x03, + 0x00, 0x00, 0x00, 0x20, 0x04, 0xe3, 0xff, 0x03, 0x00, 0x00, 0x00, 0x20, + 0x84, 0xf3, 0xff, 0x03, 0x00, 0x00, 0x00, 0x20, 0xc4, 0xf7, 0xff, 0x07, + 0x00, 0x00, 0x00, 0x20, 0xc4, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x20, + 0xc4, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x20, 0xe4, 0xff, 0xff, 0x0f, + 0x00, 0x00, 0x00, 0x20, 0xe4, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x20, + 0xe4, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x20, 0xe4, 0xff, 0xff, 0x1f, + 0x00, 0x00, 0x00, 0x20, 0xf4, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x20, + 0xf4, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x20, 0xf4, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x3f, 0xf4, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x20, + 0xfc, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x30, 0xfc, 0xff, 0xff, 0x7f, + 0x00, 0x00, 0x00, 0x30, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x30, + 0xfc, 0xff, 0xff, 0xff, 0x00, 0x04, 0x00, 0x38, 0xfc, 0xff, 0xff, 0xff, + 0x10, 0x16, 0x00, 0x38, 0xfc, 0xff, 0xff, 0xff, 0x39, 0x1e, 0x02, 0x3c, + 0xfc, 0xff, 0xff, 0xff, 0x7b, 0x3f, 0x27, 0x3e, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x7f, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/mail.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/mail.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define MailFull_width 64 +#define MailFull_height 64 +static char MailFull_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x50, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x75, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x7a, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x20, 0x8c, 0x79, 0x36, + 0xf8, 0x78, 0x66, 0x78, 0x50, 0xdc, 0xcd, 0x36, 0x98, 0xcd, 0x6e, 0x74, + 0x20, 0xac, 0xfd, 0x36, 0xf8, 0xcc, 0x18, 0x78, 0x50, 0x8c, 0xcd, 0x36, + 0x98, 0xcd, 0x76, 0x74, 0x20, 0x8c, 0xcd, 0xf6, 0xfb, 0x78, 0x66, 0x78, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xa0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7b, 0xd0, 0xff, 0x7f, 0xff, 0xe1, 0xc0, 0xff, 0x77, + 0xa0, 0xff, 0x3f, 0xfe, 0x40, 0x80, 0xff, 0x7b, 0x50, 0x55, 0x15, 0x7c, + 0x00, 0x00, 0x55, 0x75, 0xa0, 0xaa, 0x0a, 0x38, 0x20, 0x80, 0xab, 0x7a, + 0xf8, 0xff, 0x07, 0x30, 0x10, 0xc0, 0xff, 0x7f, 0xfc, 0xff, 0x03, 0x60, + 0x48, 0xe2, 0xff, 0x7f, 0xfe, 0xff, 0x21, 0xc0, 0x24, 0xf1, 0xff, 0x7f, + 0x00, 0x80, 0x40, 0x80, 0x93, 0x38, 0x00, 0x00, 0x00, 0x40, 0x90, 0x00, + 0x4b, 0x1c, 0x00, 0x00, 0x00, 0x40, 0x24, 0x01, 0x26, 0x0e, 0x00, 0x00, + 0x00, 0x80, 0x48, 0x02, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, + 0x98, 0x03, 0x00, 0x00, 0x00, 0x00, 0x22, 0x09, 0xf0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x44, 0x12, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, + 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x9f, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0xce, 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, + 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x03, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x78, 0x07, 0x19, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x7c, 0x8e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7e, 0x5c, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x3f, 0x38, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x90, + 0x07, 0x10, 0x87, 0x01, 0xe0, 0xff, 0xff, 0xf3, 0x03, 0x08, 0x02, 0x03, + 0x20, 0x00, 0x00, 0x0a, 0x01, 0x04, 0x00, 0x06, 0x20, 0x00, 0xe0, 0x06, + 0x00, 0x02, 0x00, 0x0e, 0x20, 0x00, 0xe0, 0x02, 0x08, 0x01, 0x10, 0x07, + 0x20, 0x00, 0xe0, 0x01, 0x84, 0x20, 0x89, 0x03, 0x20, 0x00, 0x80, 0x00, + 0x42, 0x90, 0xc4, 0x01, 0x20, 0xff, 0x00, 0x01, 0x29, 0x48, 0xe2, 0x00, + 0x20, 0x00, 0x00, 0x82, 0x14, 0x24, 0x70, 0x00, 0x20, 0xdf, 0x03, 0x46, + 0x0a, 0x92, 0x38, 0x00, 0x20, 0x00, 0x00, 0x0e, 0x05, 0x49, 0x1c, 0x00, + 0x20, 0xff, 0x07, 0x9e, 0x08, 0x24, 0x0e, 0x00, 0x20, 0x00, 0x00, 0x2e, + 0x18, 0x10, 0x07, 0x00, 0xe0, 0xff, 0xff, 0x4f, 0x3c, 0x88, 0x03, 0x00, + 0x80, 0xff, 0xff, 0x8f, 0x4e, 0xc0, 0x01, 0x00, 0x80, 0xff, 0xff, 0x0f, + 0x87, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/manpage.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/manpage.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define manpage_width 64 +#define manpage_height 54 +static char manpage_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, + 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x55, 0x92, 0x24, + 0x49, 0x92, 0x3c, 0x00, 0x00, 0x19, 0x49, 0x92, 0x24, 0x49, 0x3c, 0x00, + 0x00, 0x91, 0x24, 0x49, 0x92, 0x24, 0x7d, 0x01, 0x00, 0x59, 0x92, 0x24, + 0x49, 0x92, 0xac, 0x02, 0x00, 0x15, 0x49, 0x92, 0x24, 0x49, 0x7c, 0x01, + 0x00, 0x99, 0x24, 0x49, 0x92, 0x24, 0xbd, 0x02, 0x00, 0x51, 0x92, 0x24, + 0x49, 0x92, 0x7c, 0x01, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x02, + 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x99, 0x73, 0xfe, + 0x38, 0xe7, 0xb4, 0x02, 0x00, 0x91, 0x73, 0xfe, 0x39, 0xe7, 0x7c, 0x01, + 0x00, 0x99, 0x73, 0xfe, 0x39, 0xff, 0xbc, 0x02, 0x00, 0x95, 0x73, 0xce, + 0x39, 0x3c, 0x74, 0x01, 0x00, 0x99, 0x73, 0xce, 0x39, 0x18, 0xb4, 0x02, + 0x00, 0x91, 0x73, 0xce, 0x39, 0x3c, 0x74, 0x01, 0x00, 0x99, 0x7f, 0xce, + 0x39, 0xff, 0xbc, 0x02, 0x00, 0x95, 0x7f, 0xce, 0x39, 0xe7, 0x7c, 0x01, + 0x00, 0x19, 0x3f, 0xce, 0x39, 0xe7, 0xbc, 0x02, 0x00, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x01, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x02, + 0x00, 0x55, 0x92, 0x24, 0x49, 0x92, 0x74, 0x01, 0x00, 0x19, 0x49, 0x92, + 0x24, 0x49, 0xb4, 0x02, 0x00, 0x91, 0x24, 0x49, 0x92, 0x24, 0x6d, 0x01, + 0x00, 0x59, 0x92, 0x24, 0x49, 0x92, 0xac, 0x02, 0x00, 0x15, 0x49, 0x92, + 0x24, 0x49, 0x6c, 0x01, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02, + 0x00, 0x51, 0x14, 0x63, 0x92, 0x89, 0x7c, 0x01, 0x00, 0x19, 0xaa, 0x94, + 0x52, 0x0a, 0xac, 0x02, 0x00, 0x95, 0xa2, 0x97, 0xd2, 0x0b, 0x75, 0x01, + 0x00, 0x59, 0xa2, 0x94, 0x52, 0x8a, 0xbc, 0x02, 0x00, 0x11, 0xa2, 0x94, + 0x4c, 0x3a, 0x7c, 0x01, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x02, + 0x00, 0x55, 0x92, 0x24, 0x49, 0x92, 0x7c, 0x01, 0x00, 0x19, 0x49, 0x92, + 0x24, 0x49, 0xb4, 0x02, 0x00, 0x91, 0x24, 0x49, 0x92, 0x24, 0x6d, 0x01, + 0x00, 0x59, 0x92, 0x24, 0x49, 0x92, 0xb4, 0x02, 0x00, 0x15, 0x49, 0x92, + 0x24, 0x49, 0x74, 0x01, 0x00, 0x99, 0x24, 0x49, 0x92, 0x24, 0xb5, 0x02, + 0x00, 0x51, 0x92, 0x24, 0x49, 0x92, 0x74, 0x01, 0x00, 0x19, 0x49, 0x92, + 0x24, 0x49, 0xbc, 0x02, 0x00, 0x95, 0x24, 0x49, 0x92, 0x24, 0x7d, 0x01, + 0x00, 0x59, 0x92, 0x24, 0x49, 0x92, 0xac, 0x02, 0x00, 0x31, 0x00, 0x00, + 0x00, 0x00, 0x6e, 0x01, 0x00, 0xee, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x02, + 0x00, 0x51, 0x3f, 0x1e, 0xfb, 0x3f, 0x7d, 0x01, 0x00, 0xb1, 0xfa, 0xaf, + 0xef, 0xff, 0xbb, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, + 0x00, 0xa8, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 0x50, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x01, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x02}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/manpage2.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/manpage2.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define manpage_width 64 +#define manpage_height 54 +static char manpage_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, + 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xaa, 0x8a, 0x08, + 0x00, 0xa8, 0x1c, 0x00, 0x00, 0x32, 0x55, 0x00, 0x00, 0x40, 0x3d, 0x00, + 0x00, 0xa2, 0x02, 0x00, 0x00, 0x82, 0x7c, 0x01, 0x00, 0x32, 0x91, 0x04, + 0x26, 0x01, 0xad, 0x02, 0x00, 0xaa, 0xa0, 0x0a, 0x29, 0x80, 0x7c, 0x01, + 0x00, 0x32, 0x41, 0x0e, 0x29, 0x00, 0xbd, 0x02, 0x00, 0xa2, 0x20, 0x02, + 0x29, 0x00, 0x7c, 0x01, 0x00, 0x32, 0x11, 0x0c, 0x66, 0x80, 0xbc, 0x02, + 0x00, 0xaa, 0x02, 0x00, 0x00, 0x50, 0x74, 0x01, 0x00, 0x32, 0x04, 0x00, + 0x00, 0x00, 0xb4, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x01, + 0x00, 0xb2, 0x73, 0xfe, 0x38, 0xe7, 0xbc, 0x02, 0x00, 0xaa, 0x73, 0xfe, + 0x39, 0xe7, 0x74, 0x01, 0x00, 0xb2, 0x73, 0xfe, 0x39, 0xff, 0xb4, 0x02, + 0x00, 0xa2, 0x73, 0xce, 0x39, 0x3c, 0x74, 0x01, 0x00, 0xb2, 0x73, 0xce, + 0x39, 0x18, 0xbc, 0x02, 0x00, 0xaa, 0x73, 0xce, 0x39, 0x3c, 0x7c, 0x01, + 0x00, 0xb2, 0x7f, 0xce, 0x39, 0xff, 0xbc, 0x02, 0x00, 0xa2, 0x7f, 0xce, + 0x39, 0xe7, 0x7c, 0x01, 0x00, 0x32, 0x3f, 0xce, 0x39, 0xe7, 0xbc, 0x02, + 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0xb2, 0x00, 0x00, + 0x00, 0x00, 0xb4, 0x02, 0x00, 0x22, 0x85, 0x1d, 0x49, 0x00, 0x6d, 0x01, + 0x00, 0xb2, 0x4a, 0xa4, 0x4a, 0xa0, 0xac, 0x02, 0x00, 0x2a, 0x85, 0x9c, + 0x4b, 0x40, 0x6d, 0x01, 0x00, 0xb2, 0x02, 0x85, 0x48, 0x80, 0xb4, 0x02, + 0x00, 0x22, 0xc1, 0x04, 0xdb, 0x00, 0x7d, 0x01, 0x00, 0xb2, 0x00, 0x00, + 0x00, 0x10, 0xac, 0x02, 0x00, 0x2a, 0x09, 0xc6, 0x04, 0x09, 0x75, 0x01, + 0x00, 0xb2, 0x08, 0x29, 0x85, 0x02, 0xbc, 0x02, 0x00, 0x22, 0x38, 0x29, + 0x95, 0x03, 0x7d, 0x01, 0x00, 0xb2, 0x48, 0x29, 0x8d, 0x80, 0xbc, 0x02, + 0x00, 0x2a, 0x39, 0xc6, 0x14, 0x03, 0x7d, 0x01, 0x00, 0xb2, 0x02, 0x00, + 0x00, 0x00, 0xb4, 0x02, 0x00, 0x22, 0x01, 0x00, 0x00, 0x40, 0x6d, 0x01, + 0x00, 0xb2, 0x02, 0x80, 0x00, 0x80, 0xb4, 0x02, 0x00, 0x2a, 0x55, 0x10, + 0x40, 0x01, 0x75, 0x01, 0x00, 0xb2, 0xaa, 0xa2, 0x00, 0x80, 0xb4, 0x02, + 0x00, 0x22, 0x55, 0x55, 0x15, 0x50, 0x75, 0x01, 0x00, 0xb2, 0xaa, 0xaa, + 0x0a, 0xa0, 0xbc, 0x02, 0x00, 0x2a, 0x55, 0x55, 0x55, 0x51, 0x7c, 0x01, + 0x00, 0xb2, 0xaa, 0x22, 0x88, 0x00, 0xac, 0x02, 0x00, 0x62, 0x00, 0x00, + 0x00, 0x00, 0x6e, 0x01, 0x00, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xab, 0x02, + 0x00, 0x62, 0x3f, 0x1e, 0xfb, 0x3f, 0x7d, 0x01, 0x00, 0xa2, 0xfa, 0xaf, + 0xef, 0xff, 0xbb, 0x02, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x01, + 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 0x40, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x01, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x02}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/match.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/match.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define burn_width 64 +#define burn_height 54 +static char burn_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x84, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, + 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x9a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x62, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, + 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0d, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc1, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x01, 0x00, 0x00, + 0x00, 0xf0, 0x03, 0xbf, 0x1a, 0x01, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0xd5, + 0x1f, 0x01, 0x00, 0x00, 0x3e, 0x00, 0xfc, 0xfe, 0x9f, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x03, 0xfc, 0x9f, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0xfc, + 0x5f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/meter.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/meter.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define meter_width 64 +#define meter_height 64 +static char meter_bits[] = { + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc3, 0x01, 0x00, 0xfc, + 0x1f, 0x00, 0xc0, 0x61, 0x23, 0x02, 0x80, 0xff, 0xff, 0x00, 0x20, 0x62, + 0x13, 0x04, 0xf0, 0xff, 0xff, 0x07, 0x10, 0x64, 0x13, 0x04, 0xfc, 0x03, + 0xe0, 0x1f, 0x10, 0x64, 0x13, 0x04, 0x7f, 0x00, 0x00, 0x7f, 0x10, 0x64, + 0x23, 0x82, 0x0f, 0x00, 0x00, 0xf8, 0x20, 0x62, 0xc3, 0xc1, 0x07, 0x00, + 0x00, 0xf0, 0xc1, 0x61, 0x03, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x60, + 0x03, 0xf0, 0x00, 0x80, 0x00, 0x80, 0x07, 0x60, 0x03, 0x38, 0x80, 0x80, + 0x80, 0x00, 0x0e, 0x60, 0x03, 0x1c, 0x80, 0x80, 0x80, 0x00, 0x1c, 0x60, + 0x03, 0x1e, 0x02, 0x81, 0x40, 0x20, 0x3c, 0x60, 0x03, 0x0f, 0x02, 0x01, + 0x40, 0x20, 0x78, 0x60, 0x03, 0x07, 0x24, 0x00, 0x00, 0x10, 0x70, 0x60, + 0x83, 0x07, 0x64, 0x00, 0x00, 0x10, 0xf0, 0x60, 0x83, 0x03, 0xe0, 0x00, + 0x00, 0x00, 0xe0, 0x60, 0xc3, 0x09, 0xe0, 0x01, 0x00, 0x00, 0xc8, 0x61, + 0xc3, 0x11, 0xe0, 0x03, 0x00, 0x00, 0xc4, 0x61, 0xc3, 0x21, 0xe0, 0x03, + 0x00, 0x00, 0xc2, 0x61, 0xe3, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x80, 0x63, + 0xe3, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x63, 0xe3, 0x00, 0x80, 0x01, + 0x00, 0x00, 0x80, 0x63, 0x73, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x67, + 0x73, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x67, 0x73, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x67, 0x73, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x67, + 0x73, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x73, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x67, 0x73, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x67, + 0x73, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x67, 0x73, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x67, 0x73, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x67, + 0x73, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x67, 0xe3, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x80, 0x63, 0xe3, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x63, + 0xe3, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, 0x63, 0xc3, 0x01, 0x00, 0x70, + 0x00, 0x00, 0xc0, 0x61, 0xc3, 0x01, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x61, + 0xc3, 0x01, 0x00, 0xf8, 0x0f, 0x00, 0xc0, 0x61, 0x83, 0x03, 0x00, 0xff, + 0x7f, 0x00, 0xe0, 0x60, 0x83, 0x07, 0xe0, 0xff, 0xff, 0x03, 0xf0, 0x60, + 0x03, 0x07, 0xf0, 0xff, 0xff, 0x07, 0x70, 0x60, 0x03, 0x0f, 0xfc, 0xff, + 0xff, 0x1f, 0x78, 0x60, 0x03, 0x1e, 0xfe, 0xff, 0xff, 0x3f, 0x3c, 0x60, + 0x03, 0x1c, 0xff, 0x7f, 0xff, 0x7f, 0x1c, 0x60, 0x03, 0xb8, 0xff, 0xdf, + 0xfd, 0xff, 0x0e, 0x60, 0x03, 0xf0, 0xff, 0xaf, 0xfb, 0xff, 0x07, 0x60, + 0x03, 0xe0, 0xff, 0x6f, 0xfb, 0xff, 0x03, 0x60, 0xc3, 0xe1, 0xff, 0xef, + 0xfa, 0xff, 0xc3, 0x61, 0x23, 0xc2, 0xff, 0xdf, 0xfd, 0xff, 0x21, 0x62, + 0x13, 0x04, 0xff, 0x3f, 0xfe, 0x7f, 0x10, 0x64, 0x13, 0x04, 0xfc, 0xff, + 0xff, 0x1f, 0x10, 0x64, 0x13, 0x04, 0xf0, 0xff, 0xff, 0x07, 0x10, 0x64, + 0x23, 0x02, 0x80, 0xff, 0xff, 0x00, 0x20, 0x62, 0xc3, 0x01, 0x00, 0xfc, + 0x1f, 0x00, 0xc0, 0x61, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/mickey-wiz.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/mickey-wiz.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define mickey-wiz_width 64 +#define mickey-wiz_height 64 +static char mickey-wiz_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x26, 0x0d, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x23, 0x07, 0x00, 0x00, 0x90, 0x00, 0x00, 0x80, 0xa0, 0x02, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x40, 0xe2, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x20, + 0x02, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x10, 0x06, 0x01, 0x00, 0x00, + 0x40, 0x04, 0x00, 0x08, 0x05, 0x01, 0x00, 0x00, 0x80, 0x08, 0x00, 0xf4, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x32, 0xa3, 0x00, 0x00, 0x00, + 0x00, 0x21, 0xc0, 0xce, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x21, 0x20, 0x30, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x43, 0x10, 0xe0, 0x68, 0x00, 0x00, 0x00, + 0x80, 0xc1, 0xd0, 0x01, 0x7b, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x71, 0x1f, + 0x46, 0x00, 0x00, 0x00, 0x40, 0x64, 0x71, 0x34, 0x28, 0x00, 0x00, 0x00, + 0x40, 0xce, 0x11, 0x60, 0x38, 0x00, 0x00, 0x00, 0x80, 0x7d, 0x71, 0xe3, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x64, 0xf1, 0xe3, 0xf7, 0x03, 0x00, 0x00, + 0x00, 0x44, 0xf1, 0xe3, 0xff, 0x07, 0x00, 0x00, 0x00, 0x44, 0xd1, 0xf2, + 0xff, 0x0f, 0x00, 0x00, 0x00, 0x44, 0xaf, 0x01, 0xff, 0x0f, 0x00, 0x00, + 0x00, 0x48, 0x41, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, + 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x88, 0x01, 0x60, 0xfc, 0x07, 0x00, 0x00, + 0x00, 0xf0, 0x02, 0x60, 0xe6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x10, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xdc, 0x7f, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xc4, 0x77, 0x90, 0x81, 0x05, 0x00, 0x00, 0x00, 0x98, 0x2b, + 0x28, 0x42, 0x04, 0x00, 0x00, 0x00, 0xf0, 0x37, 0x48, 0x3e, 0x04, 0x00, + 0x00, 0x00, 0xe0, 0x1c, 0x88, 0x0f, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x91, + 0x17, 0x80, 0x19, 0x00, 0x00, 0x00, 0x40, 0x91, 0x6f, 0x80, 0x2f, 0x00, + 0x00, 0x00, 0xc0, 0x08, 0x56, 0x00, 0x20, 0x00, 0x00, 0x00, 0x80, 0x07, + 0x8a, 0x01, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x85, 0x81, 0x0f, 0x00, + 0x00, 0x00, 0x80, 0xe0, 0x7e, 0x3e, 0x03, 0x00, 0x00, 0x00, 0x80, 0x90, + 0x42, 0x60, 0x04, 0x00, 0x00, 0x00, 0x80, 0xab, 0x81, 0xc0, 0x0c, 0x00, + 0x00, 0x00, 0x80, 0x5e, 0x81, 0x01, 0x07, 0x00, 0x00, 0x00, 0x80, 0x37, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xd9, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0x37, + 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x6f, 0x04, 0x04, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0xdf, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, + 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x90, 0x0f, 0x0c, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x28, 0xff, 0xf0, 0x0f, 0x83, 0x1f, 0x00, 0x00, 0x68, 0xb9, + 0x80, 0x66, 0x44, 0x20, 0x00, 0x00, 0x70, 0xa6, 0x81, 0xf1, 0x39, 0x20, + 0x00, 0x00, 0x08, 0x80, 0x02, 0x80, 0xe7, 0x31, 0x00, 0x00, 0xf8, 0x7f, + 0x02, 0x03, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0xf7, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/network.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/network.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define network_width 64 +#define network_height 54 +static char network_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0f, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0xbf, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc1, 0xff, 0x83, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xff, + 0x07, 0x01, 0x00, 0x00, 0x00, 0x40, 0x80, 0xff, 0x07, 0x02, 0x00, 0x00, + 0x00, 0x40, 0x80, 0xff, 0x03, 0x02, 0x00, 0x00, 0x00, 0x20, 0xc0, 0xff, + 0x03, 0x04, 0x00, 0x00, 0x00, 0x20, 0xc0, 0xff, 0x03, 0x04, 0x00, 0x00, + 0x00, 0x20, 0x80, 0xff, 0x0b, 0x08, 0x00, 0x00, 0x00, 0x10, 0x80, 0x7f, + 0x02, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x7d, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x10, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0xc6, + 0x0f, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0xc0, 0x03, 0x08, 0x00, 0x00, + 0x00, 0x10, 0x00, 0xc0, 0xf7, 0x08, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x80, + 0xff, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xfc, 0x0e, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0xff, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0xdc, 0xff, 0xff, 0x01, + 0x00, 0x60, 0x30, 0x00, 0x2c, 0x00, 0x00, 0x02, 0x00, 0x10, 0x40, 0x00, + 0xac, 0xff, 0x7f, 0x02, 0x00, 0x08, 0x80, 0x00, 0xae, 0x55, 0xd5, 0x02, + 0x80, 0x0f, 0xc0, 0x07, 0xaf, 0xaa, 0xaa, 0x02, 0x60, 0x10, 0x20, 0x18, + 0xa7, 0x55, 0xc1, 0x02, 0x10, 0x00, 0x00, 0xe0, 0xa0, 0xaa, 0xa2, 0x02, + 0x08, 0x00, 0x00, 0x40, 0xa0, 0x55, 0xc1, 0x02, 0x04, 0x00, 0x00, 0x40, + 0xa0, 0xaa, 0xaa, 0x02, 0x04, 0x00, 0x00, 0x80, 0xa0, 0x55, 0xd5, 0x02, + 0x02, 0x00, 0x00, 0x80, 0xa0, 0xaa, 0xaa, 0x02, 0x02, 0x00, 0x00, 0x00, + 0xa1, 0x55, 0xd5, 0x02, 0x02, 0x00, 0x10, 0x20, 0xa1, 0xaa, 0xaa, 0x02, + 0x02, 0x00, 0x10, 0x20, 0x21, 0xff, 0x7f, 0x02, 0x82, 0x00, 0x30, 0x20, + 0x21, 0x00, 0x00, 0x02, 0x84, 0x00, 0x60, 0x18, 0xe1, 0xff, 0xff, 0x03, + 0x84, 0x01, 0x90, 0x07, 0xc1, 0xff, 0xff, 0x01, 0x08, 0x03, 0x08, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x0c, 0xc0, 0xf8, 0xff, 0xff, 0x0f, + 0x68, 0x18, 0x03, 0xb0, 0x04, 0x00, 0x00, 0x10, 0x98, 0xf7, 0x01, 0x40, + 0x52, 0x55, 0x55, 0x25, 0x10, 0x00, 0x00, 0x60, 0xa9, 0xaa, 0xaa, 0x4a, + 0x30, 0x10, 0x30, 0x18, 0x01, 0x00, 0x00, 0x40, 0x40, 0x18, 0xe0, 0x0f, + 0xff, 0xff, 0xff, 0x7f, 0x80, 0x3f, 0xc0, 0x00, 0xfe, 0xff, 0xff, 0x3f, + 0x00, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/news.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/news.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define news_width 64 +#define news_height 54 +static char news_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x1c, 0x00, + 0x00, 0xff, 0xff, 0x01, 0x00, 0xf0, 0x18, 0x00, 0x00, 0x3f, 0x00, 0xcc, + 0xdb, 0x36, 0x10, 0x00, 0x00, 0x03, 0xc0, 0xcc, 0xb0, 0xe4, 0x33, 0x00, + 0xf0, 0x87, 0xc2, 0x9b, 0xb3, 0x0d, 0x23, 0x00, 0xe0, 0xc7, 0x8f, 0x9f, + 0xe1, 0xef, 0x63, 0x00, 0xe0, 0x8f, 0x87, 0x39, 0xcf, 0xcc, 0x41, 0x00, + 0xc0, 0x8f, 0x05, 0x33, 0x00, 0x00, 0x40, 0x00, 0x80, 0x0f, 0x00, 0x03, + 0x00, 0xff, 0xc3, 0x00, 0xff, 0x1f, 0x00, 0xfc, 0xff, 0x00, 0x80, 0x00, + 0x9f, 0x1f, 0xfe, 0x01, 0x00, 0xff, 0x83, 0x01, 0x3f, 0x1f, 0x00, 0xfe, + 0xff, 0x00, 0x00, 0x01, 0x3f, 0x3f, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x3e, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x7e, 0x3e, 0x00, 0x00, + 0x00, 0xe0, 0x7f, 0x02, 0x7e, 0x7e, 0x00, 0x00, 0xf0, 0xf7, 0x77, 0x02, + 0x7c, 0x7e, 0x00, 0x9e, 0x1f, 0x64, 0xff, 0x06, 0xfc, 0x7c, 0xfc, 0xbf, + 0x01, 0xc8, 0xff, 0x04, 0xfc, 0xfc, 0x78, 0x2b, 0x01, 0xc8, 0xdb, 0x0d, + 0xf8, 0xfd, 0xb8, 0x5f, 0x03, 0x90, 0xff, 0x09, 0xf8, 0xf9, 0xd1, 0x7f, + 0x06, 0x90, 0xef, 0x09, 0xf8, 0xf9, 0x71, 0x7f, 0x04, 0x3f, 0x7c, 0x1a, + 0xf0, 0xf3, 0xe1, 0xf5, 0xfd, 0x01, 0xff, 0x13, 0xf0, 0xf3, 0xc3, 0x7f, + 0x01, 0x00, 0xff, 0x33, 0xe0, 0xf3, 0xc3, 0xdb, 0xf1, 0x3f, 0x46, 0x37, + 0xe0, 0xe7, 0xc3, 0xfb, 0xb2, 0x2b, 0xfe, 0x27, 0xe0, 0xe7, 0x87, 0xf7, + 0xf3, 0x7e, 0x7c, 0x6f, 0xc0, 0xe7, 0x87, 0xaf, 0x67, 0x5f, 0xfc, 0x67, + 0xc0, 0xcf, 0x0f, 0x5d, 0xe7, 0xef, 0x3c, 0x40, 0xc0, 0xcf, 0x0f, 0xf5, + 0xcb, 0xbf, 0x80, 0x4f, 0x80, 0xcf, 0x0f, 0xbf, 0xcf, 0xf7, 0xf8, 0x68, + 0x80, 0x9f, 0x1f, 0xee, 0xcf, 0xfe, 0x08, 0x68, 0x80, 0x9f, 0x1f, 0xbe, + 0xc9, 0xef, 0x08, 0x38, 0x00, 0xbf, 0x1f, 0xde, 0xcf, 0xff, 0x08, 0x1c, + 0x00, 0xff, 0x1f, 0xa6, 0xc7, 0xf9, 0x0c, 0x0e, 0x00, 0xff, 0x0f, 0xff, + 0xc7, 0x7f, 0xfe, 0x07, 0x00, 0xfe, 0x0f, 0xed, 0xe7, 0xff, 0x7f, 0x00, + 0x00, 0xfe, 0x07, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, + 0x07, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/news2.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/news2.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define noname_width 64 +#define noname_height 64 +static char noname_bits[] = { + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x01,0x00,0x88,0x00,0x00,0x00,0x00,0x80,0x21,0x20,0x98,0x00,0x00,0x00, + 0x04,0x84,0x21,0x20,0x98,0x38,0x22,0x0e,0x04,0x84,0x75,0x75,0xa9,0x44,0x22, + 0x91,0xae,0xae,0xf9,0xf8,0xa8,0x44,0x2a,0x01,0x1f,0x9f,0x71,0x70,0xc8,0x7c, + 0x2a,0x0e,0x0e,0x8e,0x51,0x50,0xc8,0x04,0x2a,0x10,0x0a,0x8a,0x89,0x88,0x88, + 0x44,0x2a,0x11,0x11,0x91,0x01,0x00,0x88,0x38,0x14,0x0e,0x00,0x80,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x71,0x57,0x77,0x55,0x00,0xee,0x62,0x8e, + 0x11,0x75,0x55,0x57,0x00,0xa2,0xa2,0x82,0x11,0x55,0x77,0x27,0x00,0xa6,0xa2, + 0x8e,0x11,0x55,0x51,0x25,0x00,0xa2,0xa2,0x88,0x71,0x57,0x51,0x25,0x00,0xe2, + 0x6e,0x8e,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x71,0x75,0x77,0x77,0x75, + 0xa0,0xae,0x8e,0x11,0x12,0x11,0x21,0x15,0xe0,0xa2,0x82,0x31,0x12,0x73,0x27, + 0x32,0xe0,0xe6,0x8e,0x11,0x15,0x41,0x24,0x12,0xa0,0xe2,0x88,0x71,0x75,0x77, + 0x77,0x72,0xa0,0xae,0x8e,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x71,0x27, + 0x73,0x75,0xe0,0x42,0xea,0x86,0x51,0x51,0x25,0x17,0xa0,0xa2,0x2e,0x8a,0x71, + 0x73,0x25,0x57,0xe0,0xe2,0x6e,0x8a,0x31,0x51,0x25,0x55,0xa0,0xa2,0x2a,0x8a, + 0x51,0x57,0x73,0x75,0xe0,0xae,0xea,0x86,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xfd,0xdf,0xff,0xfd,0xdf,0xff, + 0xff,0x9f,0x01,0x40,0x55,0x01,0x40,0x00,0x00,0x90,0xfd,0xdf,0xaa,0xfd,0xdf, + 0x00,0x00,0x90,0x01,0x40,0x55,0x01,0x40,0x01,0x00,0x90,0xfd,0xdf,0xaa,0xfd, + 0x5f,0x02,0x00,0x90,0x01,0x40,0x55,0x01,0x40,0x04,0x00,0x90,0xfd,0xdf,0xaa, + 0xfd,0x5f,0x88,0x01,0x90,0x01,0x40,0x55,0x01,0x40,0x50,0x02,0x90,0xfd,0xdf, + 0xaa,0xfd,0x5f,0x20,0x04,0x90,0x01,0x40,0x55,0x01,0x40,0x00,0x08,0x90,0xfd, + 0xdf,0xaa,0xfd,0x5f,0x00,0x10,0x90,0x01,0x40,0x55,0x01,0x40,0x00,0xa0,0x91, + 0xfd,0xdf,0xaa,0xfd,0x5f,0x00,0x40,0x92,0x01,0x40,0x55,0x01,0x40,0x00,0x00, + 0x94,0xfd,0xdf,0xaa,0xfd,0x5f,0x00,0x00,0x98,0x01,0xc0,0xff,0x01,0x40,0x00, + 0x00,0x90,0xfd,0x1f,0x00,0xfc,0x5f,0x00,0x00,0x90,0x01,0x00,0x00,0x00,0x40, + 0x00,0x00,0x90,0xfd,0xdf,0xff,0xfd,0x5f,0x00,0x00,0x90,0x01,0x00,0x00,0x00, + 0x40,0x00,0x00,0x90,0xfd,0xdf,0xff,0xfd,0xdf,0xff,0xff,0x9f,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x80,0xfd,0xdf,0xff,0xfd,0xdf,0xff,0xff,0x9f,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0xfd,0xdf,0xff,0xfd,0xdf,0xff,0xff,0x9f,0x01, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xfd,0xdf,0xff,0xfd,0xdf,0xff,0xff,0x9f, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xfd,0xdf,0xff,0xfd,0xdf,0xff,0xff, + 0x9f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/nuke.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/nuke.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define Nuke.xbm_width 64 +#define Nuke.xbm_height 64 +static char Nuke.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, + 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x55, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xa6, 0xaa, 0xaa, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x57, + 0xd5, 0x1d, 0x00, 0x00, 0x00, 0x80, 0xa7, 0xae, 0xea, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x57, 0x5d, 0x75, 0x15, 0x00, 0x00, 0x00, 0x80, 0xa2, 0xaa, + 0xaa, 0xaa, 0x0b, 0x00, 0x00, 0x40, 0x55, 0x55, 0x55, 0x15, 0x1f, 0x00, + 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0x1a, 0x00, 0x00, 0x7c, 0x55, 0x55, + 0x55, 0xd5, 0x0f, 0x00, 0x00, 0xe4, 0xaa, 0xaa, 0xaf, 0xaa, 0x0a, 0x00, + 0x00, 0x74, 0x5f, 0xd5, 0x55, 0x55, 0x15, 0x00, 0x00, 0xaa, 0xba, 0xaa, + 0xaa, 0xff, 0x6a, 0x00, 0x00, 0x54, 0x75, 0x57, 0x55, 0x55, 0xd5, 0x01, + 0x00, 0xa8, 0xaa, 0xae, 0xea, 0xae, 0x0a, 0x02, 0x00, 0x5e, 0x75, 0x75, + 0x55, 0x5d, 0x15, 0x02, 0x00, 0xaa, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0x06, + 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x02, 0x40, 0xab, 0xaa, 0xaa, + 0xaa, 0xaa, 0xab, 0x03, 0xc0, 0xf5, 0x5f, 0x7f, 0x55, 0x7f, 0xf7, 0x01, + 0x80, 0xbb, 0xfe, 0xff, 0xff, 0xbf, 0xbe, 0x00, 0x00, 0xff, 0xff, 0xdf, + 0xff, 0xff, 0xff, 0x01, 0x00, 0xee, 0xfa, 0xfb, 0xff, 0xfe, 0xfe, 0x00, + 0x00, 0xc0, 0x18, 0x6f, 0xd5, 0x8b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xbb, + 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xb4, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x5e, 0x55, 0x02, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xef, + 0xbb, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xec, 0x7e, 0xbf, 0x37, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xf7, 0xf7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x12, 0x5f, + 0x55, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6e, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, + 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x15, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xb6, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5e, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xbb, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x2e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6f, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xba, + 0xab, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0x7d, 0x1d, 0x00, 0x00, + 0x00, 0x00, 0xd8, 0xf7, 0xeb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x68, 0xff, + 0x7d, 0xf3, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xfb, 0xef, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xf5, 0xde, 0x57, 0xef, 0x03, 0x00, 0x00, 0x00, 0xbb, 0xb7, + 0xab, 0x97, 0x07, 0x00, 0x00, 0x80, 0xb7, 0x6e, 0x55, 0xb8, 0x07, 0x00, + 0x00, 0xa0, 0xdb, 0xdb, 0x3e, 0x7f, 0x1f, 0x00, 0x00, 0xc0, 0x0f, 0xde, + 0xff, 0xc9, 0x11, 0x00, 0x00, 0xc0, 0xfa, 0xf6, 0xae, 0x3b, 0x16, 0x00, + 0x00, 0xe0, 0xe7, 0x6f, 0x7f, 0xc8, 0x09, 0x00, 0x00, 0xe0, 0x3a, 0xff, + 0xbb, 0xbb, 0x09, 0x00, 0x00, 0xa0, 0xeb, 0xde, 0xd5, 0x9d, 0x1f, 0x00, + 0x00, 0x60, 0x86, 0xf6, 0xae, 0x41, 0x13, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/outline.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/outline.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define outline.xbm_width 64 +#define outline.xbm_height 64 +static char outline.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xf0, + 0xff, 0x71, 0x00, 0x00, 0x80, 0xff, 0xff, 0xf0, 0xff, 0x71, 0x00, 0x00, + 0x80, 0xff, 0xff, 0xf0, 0xff, 0x71, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, + 0x0e, 0x70, 0x00, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x80, 0xff, 0xff, 0x00, 0x0e, 0xf0, 0xff, 0x0f, 0x80, 0xff, 0xff, 0x00, + 0x0e, 0xf0, 0xff, 0x0f, 0x80, 0xff, 0xff, 0x00, 0x0e, 0xf0, 0xff, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/page.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/page.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define unknown_width 64 +#define unknown_height 54 +static char unknown_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x80, 0x38, 0xbf, + 0xf7, 0x84, 0x00, 0x00, 0x00, 0x80, 0x9c, 0xcf, 0xf3, 0x04, 0x01, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0xa8, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x50, 0x03, 0x00, + 0x00, 0x80, 0x7c, 0xfd, 0x8e, 0x7a, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xfc, 0xf6, 0xbe, 0x77, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xbc, 0xef, 0xb7, 0x6f, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xbc, 0xa5, 0xf7, 0x7f, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x64, 0xff, 0xe6, 0x77, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x74, 0xdf, 0xbf, 0x77, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x6c, 0x8e, 0x3e, 0x7f, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x7c, 0x3e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xa0, 0x8f, 0xcf, 0x7b, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xf4, 0xdb, 0x5c, 0x7b, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xe4, 0x5e, 0xcd, 0x7f, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x6c, 0xa4, 0xbd, 0x79, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xe4, 0xdb, 0xcf, 0x7b, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/perl.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/perl.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define perl.xbm_width 64 +#define perl.xbm_height 64 +static char perl.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0xf8, 0x03, 0xff, 0x1f, 0xf8, 0x0f, 0x07, 0x00, 0xf8, 0x07, 0xff, 0x9f, + 0xff, 0x1f, 0x07, 0x00, 0xb8, 0x0f, 0xff, 0x9f, 0xff, 0x1f, 0x07, 0x00, + 0x38, 0x0e, 0xff, 0x9f, 0x1f, 0x3e, 0x07, 0x00, 0x38, 0x1c, 0x07, 0x80, + 0x0f, 0x3c, 0x07, 0x00, 0x38, 0x1c, 0x07, 0x80, 0x0f, 0x38, 0x07, 0x00, + 0x38, 0x38, 0x07, 0x80, 0x0f, 0x3c, 0x07, 0x00, 0x38, 0x38, 0x07, 0x80, + 0x1f, 0x3c, 0x07, 0x00, 0x38, 0x38, 0x07, 0x80, 0x3f, 0x1f, 0x07, 0x00, + 0x38, 0x38, 0x07, 0x80, 0xff, 0x1f, 0x07, 0x00, 0x38, 0x38, 0x07, 0x80, + 0xfb, 0x0f, 0x07, 0x00, 0x38, 0x38, 0x07, 0x80, 0xe3, 0x03, 0x07, 0x00, + 0x38, 0x38, 0x07, 0x80, 0xe3, 0x01, 0x07, 0x00, 0x38, 0x3c, 0x07, 0x80, + 0xe3, 0x01, 0x07, 0x00, 0x38, 0x1e, 0x07, 0x80, 0xc3, 0x03, 0x07, 0x00, + 0xf8, 0x0f, 0x07, 0x80, 0xc3, 0x01, 0x07, 0x00, 0xf8, 0x07, 0xff, 0x9f, + 0xc3, 0x03, 0x07, 0x00, 0xf8, 0x00, 0xff, 0x9f, 0xc3, 0x03, 0x07, 0x00, + 0x38, 0x00, 0xff, 0x9f, 0xc3, 0x03, 0x07, 0x00, 0x38, 0x00, 0xff, 0x9f, + 0x83, 0x03, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, 0x83, 0x07, 0x07, 0x00, + 0x38, 0x00, 0x07, 0x80, 0x83, 0x07, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x83, 0x07, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, 0x83, 0x07, 0x07, 0x00, + 0x38, 0x00, 0x07, 0x80, 0x83, 0x07, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x07, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, 0x03, 0x07, 0x07, 0x00, + 0x38, 0x00, 0x07, 0x80, 0x03, 0x0f, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x0f, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, 0x03, 0x0e, 0x07, 0x00, + 0x38, 0x00, 0x07, 0x80, 0x03, 0x0e, 0x07, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x1e, 0x07, 0x00, 0x38, 0x00, 0xff, 0x9f, 0x03, 0x1e, 0x07, 0x00, + 0x38, 0x00, 0xff, 0x9f, 0x03, 0x1e, 0xff, 0x7f, 0x38, 0x00, 0xff, 0x9f, + 0x03, 0x3c, 0xff, 0x7f, 0x38, 0x00, 0xff, 0x9f, 0x03, 0x1c, 0xff, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/phone.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/phone.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define phone_width 64 +#define phone_height 54 +static char phone_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x3f, 0x00, 0x80, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, + 0xc0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x01, 0x70, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x07, 0xb8, 0xaa, 0xba, 0xaa, 0xaa, 0xae, 0xaa, 0x0e, + 0x5c, 0x55, 0xfd, 0xff, 0xff, 0x5f, 0x55, 0x1d, 0xac, 0xaa, 0x6a, 0x55, + 0x55, 0xab, 0xaa, 0x1a, 0x54, 0x55, 0xbd, 0xaa, 0xaa, 0x5d, 0x55, 0x15, + 0xac, 0xaa, 0xee, 0xff, 0xff, 0xbb, 0xaa, 0x1a, 0x54, 0x55, 0x57, 0x55, + 0x55, 0x55, 0x55, 0x1d, 0xac, 0xaa, 0xab, 0xaa, 0xaa, 0xea, 0xaa, 0x1e, + 0x54, 0xd5, 0xfd, 0xff, 0xff, 0xdf, 0x55, 0x1f, 0xac, 0xea, 0x07, 0x00, + 0x00, 0xf0, 0xab, 0x3a, 0x58, 0x35, 0xf5, 0xff, 0xff, 0x57, 0x56, 0x3d, + 0xf0, 0x0f, 0x97, 0x00, 0x80, 0x74, 0xf8, 0x37, 0x00, 0x00, 0x15, 0xb1, + 0x0d, 0x55, 0x00, 0x30, 0x00, 0x00, 0x57, 0xb4, 0x4d, 0x74, 0x00, 0x30, + 0x00, 0x00, 0x35, 0x02, 0x20, 0x56, 0x00, 0x30, 0x00, 0x00, 0x97, 0xb0, + 0x8d, 0x74, 0x3c, 0x30, 0x00, 0x00, 0x15, 0xb1, 0x0d, 0x55, 0x7f, 0x30, + 0x00, 0x00, 0x57, 0x04, 0x40, 0x74, 0xc3, 0x30, 0x00, 0x00, 0x35, 0xb2, + 0x2d, 0xd6, 0x81, 0x31, 0x00, 0x00, 0x97, 0xb0, 0x8d, 0xf4, 0x80, 0x31, + 0x00, 0x00, 0x15, 0x01, 0x00, 0x55, 0x80, 0x31, 0x00, 0x00, 0x57, 0xb4, + 0x4d, 0x74, 0x80, 0x31, 0x00, 0x00, 0x35, 0xb2, 0x2d, 0x56, 0xc0, 0x30, + 0x00, 0x00, 0x97, 0x00, 0x80, 0x74, 0x60, 0x30, 0x00, 0x00, 0x15, 0xfd, + 0x3f, 0x55, 0x30, 0x30, 0x00, 0x00, 0x57, 0x04, 0x60, 0x74, 0x18, 0x30, + 0x00, 0x00, 0x35, 0xfe, 0x3f, 0x56, 0x0c, 0x18, 0x00, 0x00, 0xf7, 0xff, + 0xff, 0x77, 0x06, 0x18, 0x00, 0x00, 0x05, 0x00, 0x00, 0x50, 0x03, 0x0c, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x03, 0x06, 0x00, 0x00, 0x57, 0x55, + 0x55, 0x75, 0x03, 0x06, 0x00, 0x00, 0xab, 0xaa, 0xaa, 0x6a, 0x03, 0x03, + 0x00, 0x00, 0x57, 0x55, 0x55, 0x75, 0x83, 0x01, 0x00, 0x00, 0xab, 0xaa, + 0xaa, 0x6a, 0xc3, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xfe, 0x00, + 0x00, 0x00, 0xab, 0xaa, 0xaa, 0x6a, 0x7c, 0x00, 0x00, 0x00, 0x56, 0x55, + 0x55, 0x35, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/quality.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/quality.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define ribbon_width 64 +#define ribbon_height 64 +static char ribbon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xcf, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xe7, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xff, 0xe7, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0xff, 0xf3, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xf3, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0xe0, 0xff, 0xf9, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0xff, 0xf9, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xfc, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0xf0, 0xff, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0x7f, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0xfe, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x3f, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x9b, 0xff, 0x03, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0x9b, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xc1, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x80, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, + 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x3f, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, + 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0xc0, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x3f, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, + 0x8c, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x1e, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x5f, 0x7e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, + 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xff, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x9f, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x9f, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, 0xff, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xcf, 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0xff, 0xe7, 0xff, 0x00, 0x00, + 0x00, 0xc0, 0xdf, 0xff, 0xe7, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0xff, + 0xf3, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xef, 0xff, 0xf3, 0x3f, 0x00, 0x00, + 0x00, 0xe0, 0xef, 0xff, 0xf9, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0xf7, 0xff, + 0xf9, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xf7, 0xff, 0xfc, 0x1f, 0x00, 0x00, + 0x00, 0xf8, 0xfb, 0xff, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xfb, 0x7f, + 0xfe, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xfd, 0x7f, 0xfe, 0x07, 0x00, 0x00, + 0x00, 0xfc, 0xfd, 0x3f, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3f, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x9f, 0xff, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x9f, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcf, + 0xff, 0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xcf, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xff, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x80, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x0f, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/question.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/question.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define qmark_width 64 +#define qmark_height 64 +static char qmark_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03, + 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0x07,0xfc, + 0x7f,0x00,0x00,0x00,0x00,0xff,0x01,0xf0,0xff,0x00,0x00,0x00,0x80,0x7f,0x00, + 0xe0,0xff,0x01,0x00,0x00,0xc0,0x1f,0x00,0xc0,0xff,0x03,0x00,0x00,0xe0,0x0f, + 0x00,0x80,0xff,0x07,0x00,0x00,0xe0,0x0f,0x00,0x80,0xff,0x07,0x00,0x00,0xf0, + 0x07,0x00,0x00,0xff,0x0f,0x00,0x00,0xf0,0x0f,0x00,0x00,0xff,0x0f,0x00,0x00, + 0xf8,0x1f,0x00,0x00,0xfe,0x1f,0x00,0x00,0xf8,0x1f,0x00,0x00,0xfe,0x1f,0x00, + 0x00,0xf8,0x1f,0x00,0x00,0xfe,0x1f,0x00,0x00,0xf8,0x1f,0x00,0x00,0xfe,0x1f, + 0x00,0x00,0xf0,0x0f,0x00,0x00,0xfe,0x1f,0x00,0x00,0xc0,0x03,0x00,0x00,0xfe, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, + 0x80,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00, + 0x00,0xc0,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x03,0x00,0x00,0x00, + 0x00,0x00,0xf0,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x3f,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03,0x00, + 0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,0x00, + 0x00,0x00,0x00,0x00,0x00,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,0x00,0x00,0x00,0x00, + 0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00, + 0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x03,0x00, + 0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, + 0x80,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0x00,0x00, + 0x00,0x80,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfe,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/radioactive.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/radioactive.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define danger_width 64 +#define danger_height 64 +static char danger_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, + 0x00, 0x80, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x80, 0x1f, 0x00, + 0x00, 0xf8, 0x07, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xfc, 0x0f, 0x00, + 0x00, 0xe0, 0x7f, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xe0, 0xff, 0x00, + 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0xff, 0x1f, 0x00, + 0x00, 0xf0, 0xff, 0x01, 0x80, 0xff, 0x3f, 0x00, 0x00, 0xf8, 0xff, 0x03, + 0x80, 0xff, 0x7f, 0x00, 0x00, 0xfc, 0xff, 0x03, 0xc0, 0xff, 0x7f, 0x00, + 0x00, 0xfc, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x0f, + 0xe0, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0x01, + 0x00, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x03, 0x80, 0xff, 0xff, 0x1f, + 0xf0, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x07, + 0xc0, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x3f, + 0xf8, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0x3f, 0xf8, 0xff, 0xff, 0x07, + 0xc0, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x83, 0x83, 0xff, 0xff, 0x7f, + 0xfc, 0xff, 0xff, 0xe3, 0x8f, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xf1, + 0x1f, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xf1, 0x1f, 0xff, 0xff, 0x7f, + 0xfc, 0xff, 0xff, 0xf9, 0x3f, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xf9, + 0x3f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, + 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, + 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, + 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, + 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/recycle.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/recycle.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,32 @@ +#define recycle_width 64 +#define recycle_height 54 +static char recycle_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x03, + 0x00,0x00,0x00,0x00,0x60,0x00,0x78,0x0d,0x00,0x00,0x00,0x00,0x10,0x00,0xbc, + 0x10,0x00,0x00,0x00,0x00,0x08,0x00,0x5e,0x20,0x00,0x00,0x00,0x00,0x08,0x00, + 0x2f,0x20,0x00,0x00,0x00,0x00,0x04,0x00,0x17,0x40,0x1c,0x00,0x00,0x00,0x04, + 0x80,0x0a,0x40,0x1f,0x00,0x00,0x00,0x02,0x80,0x06,0x80,0x0d,0x00,0x00,0x00, + 0x02,0x40,0x04,0x00,0x04,0x00,0x00,0x00,0x01,0x40,0x04,0x00,0x02,0x00,0x00, + 0x00,0x01,0x20,0x08,0x00,0x03,0x00,0x00,0x80,0x00,0x20,0x08,0x00,0x01,0x00, + 0x00,0x00,0x03,0x10,0x10,0x80,0x00,0x00,0x00,0x00,0x0c,0x10,0x18,0xc0,0x00, + 0x00,0x00,0x00,0x30,0x08,0x07,0x40,0x00,0x00,0x00,0x00,0xc0,0x08,0xff,0x3f, + 0x0e,0x00,0x80,0xff,0x1f,0x07,0x00,0x80,0x09,0x00,0x80,0x00,0x30,0x04,0x00, + 0x60,0x10,0x00,0x00,0x03,0x20,0x00,0x00,0x18,0x10,0x00,0x00,0x0c,0x60,0x00, + 0x00,0x06,0x20,0x00,0x00,0x08,0x40,0x00,0x00,0x01,0x20,0x00,0x00,0x04,0x80, + 0x00,0x00,0x01,0x40,0x00,0x00,0x04,0x80,0x01,0x00,0x02,0x40,0x00,0x00,0x02, + 0x00,0x01,0x00,0x02,0x80,0x00,0x00,0x02,0x00,0x02,0x00,0x04,0x80,0x00,0x00, + 0x02,0x40,0x06,0x00,0x04,0x80,0x00,0x00,0x02,0xe0,0x05,0x00,0x08,0x80,0x00, + 0x00,0x02,0x20,0x06,0x60,0x08,0x80,0x00,0x00,0x04,0x10,0x00,0x60,0x10,0x40, + 0x00,0x00,0x04,0x10,0x00,0x50,0x10,0x40,0x00,0x00,0x08,0x08,0x00,0x50,0x20, + 0x20,0x00,0x00,0x08,0x08,0x00,0x48,0x20,0x3c,0x00,0x00,0x10,0xfc,0x7f,0xc8, + 0xff,0x1f,0x00,0x00,0x10,0xbc,0x40,0x04,0x00,0x18,0x00,0x00,0x20,0x5e,0x40, + 0x04,0x00,0x0c,0x00,0x00,0x20,0x2e,0x40,0x02,0x00,0x0c,0x00,0x00,0x40,0x17, + 0x40,0x02,0x00,0x06,0x00,0x00,0x40,0x0f,0x40,0x01,0x00,0x06,0x00,0x00,0x80, + 0x07,0x40,0x01,0x00,0x02,0x00,0x00,0x80,0x07,0x40,0x02,0x00,0x03,0x00,0x00, + 0x00,0x07,0x40,0x02,0x80,0x01,0x00,0x00,0x00,0x02,0x40,0x04,0xc0,0x00,0x00, + 0x00,0x00,0x0c,0x40,0x04,0x70,0x00,0x00,0x00,0x00,0xf0,0x7f,0xc8,0x1f,0x00, + 0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/rlogin.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/rlogin.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define external_width 64 +#define external_height 54 +static char external_bits[] = { + 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xff, 0xaf, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x02, 0x29, 0x02, 0x00, 0x00, 0x00, 0x40, 0x6d, 0x5a, 0x29, + 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x02, 0x2f, 0x02, 0x00, 0x00, 0x00, + 0x40, 0xd5, 0x3a, 0x29, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x02, 0x2f, + 0x02, 0x00, 0x00, 0x00, 0x40, 0xff, 0x5b, 0x29, 0x02, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x02, 0x2f, 0x02, 0x00, 0x00, 0x00, 0x40, 0x55, 0x5a, 0x29, + 0x22, 0x00, 0x00, 0x00, 0x40, 0x01, 0x02, 0x2f, 0x32, 0x00, 0x00, 0x00, + 0x40, 0x05, 0x6a, 0x2f, 0xfa, 0x01, 0x00, 0x00, 0x40, 0x01, 0x02, 0x2f, + 0x32, 0x0e, 0x00, 0x00, 0x40, 0xff, 0xff, 0x2f, 0x22, 0x30, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x2e, 0x02, 0x40, 0x00, 0x00, 0x40, 0xff, 0xff, 0x2f, + 0x02, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x01, 0x00, + 0xc0, 0xff, 0xff, 0xff, 0x07, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x1e, + 0x07, 0x00, 0x02, 0x00, 0x00, 0xf3, 0xff, 0xc7, 0x04, 0x00, 0x02, 0x00, + 0xc0, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x02, 0x00, 0xe0, 0xff, 0xff, 0x0f, + 0x14, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x08, 0x13, 0x00, 0x04, 0x00, + 0xb0, 0x01, 0x00, 0xc8, 0x08, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x38, + 0x08, 0x00, 0x1f, 0x00, 0xe4, 0xff, 0xff, 0x0f, 0x04, 0x00, 0x0e, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0xf8, 0xff, 0xff, 0x0f, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0c, 0x01, 0xff, 0xff, 0x0f, + 0x52, 0x55, 0x55, 0x8e, 0x00, 0x01, 0x00, 0x08, 0xa9, 0xaa, 0x2a, 0xe7, + 0x01, 0xfd, 0xff, 0x08, 0x01, 0x00, 0x80, 0x93, 0x01, 0x55, 0xd5, 0x0a, + 0xff, 0xff, 0xff, 0xc9, 0x00, 0x2d, 0xaa, 0x08, 0xfe, 0xff, 0xff, 0x78, + 0x00, 0x15, 0xd4, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xaa, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xd5, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xad, 0xaa, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xd5, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xa9, 0x2a, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0xa9, 0x2a, 0xbf, 0x00, 0x00, 0x00, 0x00, + 0x10, 0xa8, 0x2a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0xa8, 0x2a, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x10, 0xa8, 0x2a, 0xbf, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/scroll.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/scroll.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define emacs2_width 64 +#define emacs2_height 64 +static char emacs2_bits[] = { + 0x55, 0x55, 0x55, 0x01, 0x00, 0x51, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0x00, + 0x00, 0xa1, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x0c, 0x80, 0x42, 0x55, 0x55, + 0xaa, 0xaa, 0x2a, 0x0f, 0xe0, 0x80, 0xaa, 0xaa, 0x55, 0x55, 0xd5, 0x31, + 0x64, 0x00, 0x55, 0x55, 0xaa, 0xaa, 0xca, 0xc1, 0x38, 0x00, 0xaa, 0xaa, + 0x55, 0x55, 0xa5, 0x40, 0x0d, 0x00, 0x54, 0x55, 0xaa, 0xaa, 0xb6, 0x40, + 0x07, 0x20, 0xa8, 0xaa, 0x55, 0x55, 0x99, 0x20, 0x02, 0x30, 0x50, 0x55, + 0xaa, 0xaa, 0xc8, 0x20, 0x42, 0x18, 0xa0, 0xaa, 0x55, 0x55, 0x41, 0x10, + 0x02, 0x08, 0x40, 0x55, 0xaa, 0x2a, 0x41, 0x08, 0x02, 0x07, 0x84, 0xaa, + 0x55, 0x95, 0x41, 0x00, 0x42, 0x01, 0x08, 0x55, 0xaa, 0xaa, 0x60, 0x00, + 0xc1, 0x01, 0x00, 0xaa, 0x55, 0x4d, 0x20, 0x80, 0x61, 0x02, 0x21, 0x54, + 0xaa, 0xb6, 0x20, 0x60, 0x39, 0x83, 0x06, 0xa8, 0x55, 0x05, 0x28, 0x18, + 0x11, 0x40, 0x01, 0x50, 0xaa, 0x06, 0x30, 0x00, 0x01, 0xa0, 0x00, 0xa0, + 0x55, 0x00, 0x1c, 0x00, 0x07, 0xa0, 0x00, 0x40, 0x2a, 0x00, 0x16, 0x80, + 0x02, 0x30, 0x00, 0x80, 0x75, 0x60, 0x14, 0x80, 0x01, 0x00, 0x00, 0x00, + 0x8a, 0x51, 0x1b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x85, 0xe2, 0x09, 0x60, + 0x00, 0x06, 0x00, 0x00, 0x46, 0x46, 0x08, 0x1f, 0x00, 0x05, 0x00, 0x00, + 0x25, 0x85, 0x08, 0x10, 0xa0, 0x06, 0x00, 0x00, 0xc6, 0x1a, 0x0c, 0x08, + 0xc0, 0x02, 0x00, 0x00, 0x45, 0x35, 0x04, 0x08, 0x00, 0x06, 0x00, 0x00, + 0xba, 0x6a, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x55, 0xd5, 0x04, 0x42, + 0x14, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xc5, 0x01, 0x0c, 0x00, 0x00, 0x00, + 0x55, 0x55, 0x07, 0x01, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x82, 0x94, + 0x02, 0x00, 0x06, 0x00, 0x55, 0x55, 0x43, 0xc8, 0x00, 0x00, 0x02, 0x00, + 0xaa, 0xaa, 0x42, 0x74, 0x00, 0x80, 0x05, 0x00, 0x55, 0x55, 0x3b, 0x20, + 0x00, 0x80, 0x33, 0x00, 0xaa, 0xaa, 0x63, 0x18, 0x00, 0x20, 0x49, 0x00, + 0x55, 0x55, 0xd1, 0x00, 0x00, 0x50, 0x40, 0x00, 0xaa, 0xaa, 0xb1, 0x01, + 0x02, 0x64, 0x20, 0x00, 0x55, 0xd5, 0x59, 0x03, 0x82, 0x08, 0x18, 0x00, + 0xaa, 0xaa, 0xad, 0x06, 0x02, 0x90, 0x06, 0x00, 0x55, 0xd5, 0x54, 0xcd, + 0x03, 0x42, 0x01, 0x00, 0xaa, 0xaa, 0xaa, 0xba, 0x41, 0x84, 0x02, 0x80, + 0x55, 0xd5, 0x56, 0x55, 0xa1, 0x61, 0x01, 0x40, 0xaa, 0xea, 0xab, 0xaa, + 0x60, 0x19, 0x00, 0xa0, 0x55, 0xfd, 0x57, 0xd5, 0x80, 0x04, 0x00, 0x50, + 0xaa, 0xc2, 0xad, 0xaa, 0x01, 0x02, 0x00, 0xa8, 0x55, 0xfd, 0x57, 0x55, + 0x03, 0x12, 0x00, 0x54, 0xaa, 0xe6, 0xaa, 0xaa, 0x06, 0x0c, 0x00, 0xaa, + 0x55, 0xe5, 0x56, 0x55, 0x0d, 0x00, 0x00, 0x55, 0xaa, 0xe6, 0xaa, 0xaa, + 0x1a, 0x00, 0x80, 0xaa, 0x55, 0x73, 0x54, 0x55, 0x35, 0x00, 0x40, 0x55, + 0xaa, 0x31, 0xa8, 0xaa, 0x6a, 0x00, 0xa0, 0xaa, 0xd5, 0x30, 0x50, 0x55, + 0xd5, 0x00, 0x50, 0x55, 0xea, 0xff, 0xbf, 0xaa, 0xaa, 0x01, 0xa8, 0xaa, + 0xf5, 0xff, 0x7f, 0x55, 0x55, 0x03, 0x54, 0x55, 0xea, 0xff, 0xbf, 0xaa, + 0xaa, 0x06, 0xaa, 0xaa, 0xf5, 0xff, 0x7f, 0x55, 0x55, 0x09, 0x55, 0x55, + 0xea, 0xff, 0xbf, 0xaa, 0xaa, 0x8c, 0xaa, 0xaa, 0xd5, 0xff, 0x5f, 0x55, + 0xd5, 0x52, 0x55, 0x55, 0xaa, 0xfe, 0xab, 0xaa, 0x2a, 0xb1, 0xaa, 0xaa, + 0x55, 0x55, 0x55, 0x55, 0x35, 0x50, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, + 0x2a, 0xa8, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55, 0xd5, 0x57, 0x55, 0x55, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/scroll2.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/scroll2.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define scroll_width 64 +#define scroll_height 54 +static char scroll_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x20, 0x00, 0x00, + 0x00, 0xf0, 0x7f, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x3f, + 0x06, 0x0c, 0x00, 0x00, 0x00, 0x40, 0x38, 0x20, 0xf2, 0x18, 0x00, 0x00, + 0x00, 0x20, 0x06, 0x20, 0x99, 0x31, 0x00, 0x00, 0x00, 0xa0, 0xe1, 0x13, + 0x09, 0x62, 0x40, 0x01, 0x00, 0x41, 0x1e, 0x1e, 0xc9, 0x64, 0xe8, 0x04, + 0x4a, 0x30, 0x00, 0x08, 0x92, 0x54, 0x10, 0x80, 0x22, 0x8c, 0x7f, 0x04, + 0x62, 0xce, 0x00, 0x30, 0x01, 0x73, 0xc0, 0x03, 0x0c, 0x83, 0x00, 0x20, + 0x80, 0x00, 0x00, 0x03, 0xf0, 0x80, 0x00, 0x00, 0x60, 0xf8, 0x87, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x90, 0x07, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x19, + 0x0c, 0x00, 0x30, 0x00, 0x00, 0x00, 0xb1, 0x04, 0x83, 0x7f, 0x08, 0x00, + 0x00, 0x00, 0x11, 0x83, 0x7c, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x21, 0x40, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x30, 0xfc, 0xc1, 0x01, 0x00, + 0x00, 0x00, 0x02, 0xc8, 0x03, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x02, 0x06, + 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x82, 0xe1, 0x87, 0x43, 0x01, 0x00, + 0x00, 0x00, 0x64, 0x1e, 0x78, 0x80, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x38, 0x40, 0x03, 0x00, 0x00, 0x00, 0x8c, 0x0f, 0x07, 0x80, 0x02, 0x00, + 0x00, 0x00, 0x72, 0xf0, 0x01, 0x40, 0x05, 0x00, 0x00, 0x80, 0x01, 0x3e, + 0x00, 0x80, 0x06, 0x00, 0x00, 0xe0, 0xc0, 0x01, 0x00, 0x40, 0x05, 0x00, + 0x00, 0x30, 0x3f, 0x00, 0x00, 0x80, 0x8a, 0x01, 0x00, 0x18, 0x10, 0x00, + 0x00, 0x40, 0x5d, 0x06, 0x00, 0x0f, 0x10, 0x00, 0x00, 0xa0, 0x3a, 0x0c, + 0xc0, 0x07, 0x20, 0x00, 0x00, 0x50, 0x1d, 0x18, 0xe0, 0x07, 0x20, 0x00, + 0x00, 0xa8, 0x06, 0x30, 0xf8, 0x01, 0x20, 0x00, 0x00, 0xd4, 0x01, 0x28, + 0x3c, 0x3e, 0x60, 0x00, 0x00, 0x3f, 0x00, 0x34, 0x8e, 0xc1, 0x40, 0xe0, + 0xff, 0x00, 0x00, 0x2a, 0x41, 0x7f, 0x41, 0x78, 0x00, 0x00, 0x00, 0x35, + 0xc0, 0x00, 0x41, 0x86, 0x01, 0x00, 0xa0, 0x1a, 0x80, 0xdb, 0x40, 0x32, + 0x03, 0x00, 0x54, 0x0f, 0x80, 0x24, 0x81, 0x5a, 0x06, 0x00, 0xea, 0x00, + 0x40, 0x24, 0x81, 0x92, 0x06, 0x40, 0x3f, 0x00, 0x20, 0x42, 0x82, 0x44, + 0x06, 0xe0, 0x01, 0x00, 0x10, 0x81, 0x0c, 0x39, 0x03, 0x1f, 0x00, 0x00, + 0xcc, 0xff, 0x11, 0x82, 0xf1, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xcc, + 0x0c, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xf0, 0x03, 0x00, 0x00, 0x00, + 0xfc, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/splat.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/splat.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,44 @@ +#define splat_width 65 +#define splat_height 54 +static char splat_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x80, 0x03, 0x0e, 0x00, + 0x43, 0x00, 0x00, 0x08, 0xa0, 0x01, 0x01, 0x04, 0x82, 0x23, 0x00, 0x00, + 0x00, 0xe0, 0x01, 0x01, 0x00, 0x03, 0x11, 0x00, 0x00, 0x00, 0x83, 0x01, + 0x01, 0x04, 0x40, 0xc0, 0x01, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x00, + 0x64, 0x03, 0x00, 0xc0, 0x0e, 0x04, 0x01, 0x04, 0x18, 0xa0, 0x03, 0x00, + 0xc0, 0x1e, 0x08, 0x03, 0x0e, 0x1f, 0xa1, 0xc3, 0x00, 0x86, 0x1f, 0x90, + 0xff, 0xff, 0x0f, 0xe0, 0x23, 0x00, 0x08, 0x3c, 0xf0, 0xff, 0xff, 0x0f, + 0xf0, 0x10, 0x00, 0x10, 0x20, 0xf0, 0x2b, 0xfd, 0x0f, 0x70, 0x00, 0x00, + 0x00, 0x80, 0x7f, 0xf5, 0xff, 0x0f, 0x10, 0x06, 0x00, 0x00, 0x00, 0xbf, + 0xfe, 0xff, 0x1f, 0x04, 0x00, 0x00, 0x7c, 0x00, 0x5f, 0xff, 0xff, 0x1f, + 0x04, 0x78, 0x00, 0xc6, 0x01, 0xae, 0xff, 0xff, 0x1f, 0x01, 0xfe, 0x00, + 0xfa, 0xe7, 0xdf, 0xff, 0xff, 0xbf, 0x01, 0xf5, 0x00, 0xfc, 0xff, 0xef, + 0xff, 0xff, 0xff, 0x80, 0x7f, 0x00, 0x00, 0xe0, 0xdf, 0xff, 0xff, 0x7f, + 0x40, 0x00, 0x00, 0x00, 0xc0, 0xef, 0xff, 0xff, 0x7f, 0x1e, 0x00, 0x00, + 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xef, + 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x20, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1b, 0x00, 0x00, 0xf6, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0xce, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, + 0x1e, 0x00, 0x84, 0x7f, 0xde, 0xff, 0x03, 0x00, 0x00, 0x0e, 0x04, 0xc4, + 0x1f, 0x88, 0xff, 0x07, 0x30, 0x00, 0x0c, 0x02, 0xc4, 0x1f, 0x00, 0x0f, + 0x1e, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x08, 0x0f, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x0c, 0x08, 0x06, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x08, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x06, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x02, 0x34, 0x00, + 0x00, 0x01, 0x02, 0x00, 0x1c, 0x04, 0x00, 0x68, 0x00, 0x80, 0x00, 0x01, + 0x00, 0x1c, 0x04, 0x00, 0xd0, 0x00, 0x00, 0x80, 0x40, 0x08, 0x08, 0x04, + 0x02, 0x60, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x08, 0x02, 0x04, 0x08, 0x00, 0x00, 0x08, 0x30, 0x00, + 0x08, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x02, 0x04, 0xe0, 0x01, 0x00, + 0x00, 0x0f, 0x00, 0x00, 0x02, 0x04, 0x20, 0x01, 0x00, 0x80, 0x07, 0x00, + 0x00, 0x02, 0x00, 0xc0, 0x01, 0x00, 0xc0, 0x07, 0x00, 0x08, 0x06, 0x04, + 0x00, 0x00, 0x00, 0xb0, 0x43, 0x00, 0x08, 0x05, 0x04, 0x00, 0x00, 0x00, + 0xd8, 0x01, 0x00, 0x1c, 0x07, 0x06, 0x04, 0x00, 0x00, 0xe8, 0x01, 0x20, + 0x88, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x80, 0x0e, 0x0e, + 0x00, 0x02, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/stopsign.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/stopsign.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define stopsign_width 64 +#define stopsign_height 64 +static char stopsign_bits[] = { + 0x00,0x00,0xfc,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x7f,0x00, + 0x00,0x00,0x00,0x07,0x00,0x00,0xe0,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0xc0, + 0x01,0x00,0x00,0xc0,0xf9,0xff,0xff,0x8f,0x03,0x00,0x00,0xe0,0xac,0xaa,0xaa, + 0x1a,0x07,0x00,0x00,0x70,0x56,0x55,0x55,0x35,0x0e,0x00,0x00,0x38,0xab,0xaa, + 0xaa,0x6a,0x1c,0x00,0x00,0x9c,0x55,0x55,0x55,0xd5,0x38,0x00,0x00,0xce,0xaa, + 0xaa,0xaa,0xaa,0x71,0x00,0x00,0x67,0x55,0x55,0x55,0x55,0xe3,0x00,0x80,0xb3, + 0xaa,0xaa,0xaa,0xaa,0xc6,0x01,0xc0,0x59,0x55,0x55,0x55,0x55,0x8d,0x03,0xe0, + 0xac,0xaa,0xaa,0xaa,0xaa,0x1a,0x07,0x70,0x56,0x55,0x55,0x55,0x55,0x35,0x0e, + 0x38,0xab,0xaa,0xaa,0xaa,0xaa,0x6a,0x1c,0x9c,0x55,0x55,0x55,0x55,0x55,0xd5, + 0x38,0xce,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x71,0x67,0x55,0x55,0x55,0x55,0x55, + 0x55,0xe3,0xb3,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xc6,0x53,0x55,0x55,0x55,0x55, + 0x55,0x55,0xcd,0xb3,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xca,0x53,0x55,0x55,0x55, + 0x55,0x55,0x55,0xcd,0xb3,0xfe,0xfb,0xff,0xfb,0xab,0xff,0xca,0x53,0x03,0x0d, + 0x00,0x0d,0x54,0x80,0xcd,0xb3,0x01,0x0a,0x00,0x07,0x68,0x00,0xcb,0xd3,0x78, + 0xf4,0xf9,0xe3,0x51,0x3e,0xce,0xb3,0xac,0xac,0xa9,0xb2,0x72,0x6a,0xca,0xd3, + 0xd4,0x54,0x59,0x53,0x53,0x56,0xce,0xb3,0xac,0xaf,0xa9,0xb2,0x72,0x6a,0xca, + 0xd3,0x54,0x55,0x59,0x53,0x53,0x56,0xce,0xb3,0xf8,0xaa,0xa9,0xb2,0x72,0x3e, + 0xca,0x53,0x01,0x55,0x59,0x53,0x53,0x00,0xcd,0xb3,0x02,0xaa,0xa9,0xb2,0x72, + 0x80,0xca,0x53,0x7d,0x54,0x59,0x53,0x53,0x7e,0xcd,0xb3,0xaa,0xac,0xa9,0xb2, + 0x72,0xaa,0xca,0x53,0xd7,0x54,0x59,0x53,0x53,0x56,0xcd,0xb3,0xac,0xac,0xa9, + 0xb2,0x72,0xaa,0xca,0xd3,0xd4,0x54,0x59,0x53,0x53,0x56,0xcd,0xb3,0x78,0xac, + 0xa9,0xe2,0x71,0xaa,0xca,0x53,0x01,0x56,0x59,0x05,0x58,0x56,0xcd,0xb3,0x02, + 0xab,0xa9,0x0a,0x6c,0xaa,0xca,0x53,0xfd,0x55,0x5f,0xf5,0xd7,0x55,0xcd,0xb3, + 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xca,0x63,0x55,0x55,0x55,0x55,0x55,0x55,0xcd, + 0xc7,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xe6,0x8e,0x55,0x55,0x55,0x55,0x55,0x55, + 0x73,0x1c,0xab,0xaa,0xaa,0xaa,0xaa,0xaa,0x39,0x38,0x56,0x55,0x55,0x55,0x55, + 0xd5,0x1c,0x70,0xac,0xaa,0xaa,0xaa,0xaa,0x6a,0x0e,0xe0,0x58,0x55,0x55,0x55, + 0x55,0x35,0x07,0xc0,0xb1,0xaa,0xaa,0xaa,0xaa,0x9a,0x03,0x80,0x63,0x55,0x55, + 0x55,0x55,0xcd,0x01,0x00,0xc7,0xaa,0xaa,0xaa,0xaa,0xe6,0x00,0x00,0x8e,0x55, + 0x55,0x55,0x55,0x73,0x00,0x00,0x1c,0xab,0xaa,0xaa,0xaa,0x39,0x00,0x00,0x38, + 0x56,0x55,0x55,0xd5,0x1c,0x00,0x00,0x70,0xac,0xaa,0xaa,0x6a,0x0e,0x00,0x00, + 0xe0,0x58,0x55,0x55,0x35,0x07,0x00,0x00,0xc0,0xf1,0xff,0xff,0x9f,0x03,0x00, + 0x00,0x80,0x03,0x00,0x00,0xc0,0x01,0x00,0x00,0x00,0x07,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0xfe,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x3f, + 0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/sundae.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/sundae.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define sundae_width 64 +#define sundae_height 64 +static char sundae_bits[] = { + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xff, 0x23, 0x22, 0x22, 0x22, 0x22, + 0x88, 0x88, 0x88, 0xcf, 0x89, 0x88, 0x88, 0x88, 0x88, 0xc8, 0x88, 0xf8, + 0x8e, 0x88, 0x88, 0x88, 0x22, 0x22, 0x22, 0xf2, 0x25, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x7a, 0x2f, 0x22, 0x22, 0x22, 0x88, 0x88, 0x88, 0xb8, + 0x9b, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xe8, 0xee, 0x88, 0x88, 0x88, + 0x22, 0x22, 0x22, 0xde, 0x9d, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x76, + 0x8f, 0x22, 0x22, 0x22, 0x88, 0x88, 0x88, 0xf7, 0x0f, 0x89, 0x88, 0x88, + 0x88, 0x88, 0x88, 0xc1, 0x03, 0x89, 0x88, 0x88, 0x22, 0x22, 0xa2, 0x00, + 0x41, 0x23, 0x22, 0x22, 0x22, 0x22, 0xa2, 0x00, 0x30, 0x26, 0x22, 0x22, + 0x88, 0x88, 0x88, 0x00, 0x18, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xfe, + 0x43, 0x98, 0x88, 0x88, 0x22, 0x22, 0xc2, 0x00, 0x20, 0x30, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x00, 0x18, 0x20, 0x22, 0x22, 0x88, 0x88, 0x18, 0x80, + 0x07, 0xf0, 0x88, 0x88, 0x88, 0x88, 0x18, 0xf9, 0x00, 0xfe, 0x88, 0x88, + 0x22, 0x22, 0xfc, 0x03, 0x80, 0xff, 0x23, 0x22, 0x22, 0x22, 0xfe, 0x03, + 0xf0, 0xff, 0x23, 0x22, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0x8b, 0x88, + 0x88, 0x88, 0xff, 0xff, 0xff, 0xf7, 0x8f, 0x88, 0x22, 0x22, 0xff, 0xff, + 0xff, 0xf3, 0x2f, 0x22, 0x22, 0x22, 0xff, 0xff, 0xdf, 0xc3, 0x39, 0x22, + 0x88, 0x88, 0xe7, 0xff, 0x9f, 0xc3, 0x91, 0x88, 0x88, 0x88, 0xe3, 0xfd, + 0x8f, 0x03, 0xa0, 0x88, 0x22, 0xa2, 0xe3, 0xf9, 0x8f, 0x03, 0x20, 0x22, + 0x22, 0x62, 0xe3, 0x83, 0x8f, 0x01, 0x20, 0x22, 0x88, 0x28, 0xe2, 0x83, + 0x0f, 0x00, 0xf0, 0x88, 0x88, 0x18, 0xe2, 0x81, 0x0f, 0x80, 0xd1, 0x88, + 0x22, 0x32, 0x02, 0x00, 0x87, 0x63, 0x60, 0x22, 0x22, 0x32, 0x03, 0x00, + 0x07, 0x3c, 0x60, 0x22, 0x88, 0xf8, 0x00, 0x00, 0x06, 0x00, 0xf0, 0x88, + 0x88, 0xe8, 0x01, 0x00, 0x06, 0x00, 0xdc, 0x88, 0x22, 0xa2, 0x0e, 0x00, + 0x06, 0x80, 0x2b, 0x22, 0x22, 0x62, 0x75, 0x00, 0x06, 0x70, 0x35, 0x22, + 0x88, 0xc8, 0xaa, 0x07, 0x02, 0xaf, 0x9a, 0x88, 0x88, 0x88, 0x55, 0xfd, + 0xff, 0x55, 0x8d, 0x88, 0x22, 0x22, 0xab, 0xaa, 0xaa, 0xaa, 0x26, 0x22, + 0x22, 0x22, 0x56, 0x55, 0x55, 0x55, 0x27, 0x22, 0x88, 0x88, 0xac, 0xaa, + 0xaa, 0xaa, 0x8b, 0x88, 0x88, 0x88, 0x5c, 0x55, 0x55, 0xd5, 0x89, 0x88, + 0x22, 0x22, 0xba, 0xaa, 0xaa, 0x6a, 0x22, 0x22, 0x22, 0x22, 0x72, 0x55, + 0x55, 0x7d, 0x22, 0x22, 0x88, 0x88, 0xc8, 0xaa, 0xaa, 0x8e, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x5f, 0xd5, 0x8b, 0x88, 0x88, 0x22, 0x22, 0x22, 0xf2, + 0x3f, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/swissknife.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/swissknife.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,38 @@ +#define swissknife_width 64 +#define swissknife_height 64 +static char swissknife_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfe,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xf7,0x7f,0x00,0x00,0x00,0x00,0x00, + 0x80,0xeb,0x7f,0x00,0x00,0x40,0x00,0x00,0xc0,0xcd,0x7f,0x00,0x00,0x40,0x01, + 0x00,0xe0,0x96,0x3f,0x00,0x00,0xc0,0x02,0x00,0x70,0x69,0x6f,0x00,0x00,0x00, + 0x02,0x00,0x78,0x15,0xa7,0x00,0x00,0x00,0x09,0x00,0x7c,0xd1,0x43,0x03,0x00, + 0x00,0x17,0x00,0x7e,0xef,0x41,0x04,0x00,0x00,0x10,0x00,0x7f,0xf0,0x42,0x08, + 0x00,0x00,0x08,0x80,0xff,0x7f,0x42,0x30,0x00,0x00,0x68,0xc0,0xff,0x3f,0xc3, + 0x40,0x00,0x00,0x90,0xe1,0xff,0x9f,0x84,0x91,0x00,0x00,0x40,0xf6,0xff,0x4f, + 0x84,0x22,0x01,0x00,0x40,0xfc,0xff,0x27,0xa4,0x44,0x06,0x00,0x80,0xfc,0xff, + 0x03,0xa4,0x88,0x08,0x00,0x00,0xff,0xff,0x19,0xa4,0x10,0x11,0x00,0x00,0xff, + 0xff,0x06,0xa8,0x60,0x10,0x00,0x80,0xff,0x7f,0x02,0x48,0x81,0x20,0x00,0xc0, + 0xff,0xbf,0x01,0x48,0x01,0x21,0x00,0xe0,0xff,0xdf,0x00,0x48,0x01,0x22,0x00, + 0xf0,0xff,0x4f,0x00,0x08,0x01,0x24,0x00,0xf8,0xff,0x37,0x00,0x10,0x01,0x28, + 0x00,0xfc,0xff,0x0b,0x00,0x10,0x02,0x30,0x00,0xfe,0xff,0x09,0x00,0x10,0x02, + 0x00,0x00,0xff,0xff,0x0e,0x00,0x10,0x02,0x00,0x00,0xff,0x7f,0x03,0x00,0x10, + 0x02,0x00,0x80,0xff,0x3f,0x01,0x00,0x20,0x02,0x00,0x80,0xff,0x9f,0x00,0x00, + 0x20,0x01,0x00,0x80,0xff,0x6f,0x00,0x00,0x20,0x01,0x00,0x80,0xff,0x17,0x00, + 0x00,0xe0,0x00,0x00,0x80,0xff,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0xfb,0x07, + 0x00,0x00,0x00,0x00,0x00,0x80,0x77,0x04,0x07,0x00,0x00,0x00,0x00,0x40,0x5c, + 0x04,0x05,0x00,0x00,0x00,0x00,0x20,0xc8,0x07,0x05,0x00,0x00,0x00,0x00,0x20, + 0x88,0x02,0x05,0x00,0x00,0x00,0x00,0x20,0x08,0x05,0x09,0x00,0x00,0x00,0x00, + 0x40,0x04,0x0a,0x09,0x00,0x00,0x00,0x00,0x80,0x03,0x0a,0x09,0x00,0x00,0x00, + 0x00,0x00,0x00,0x14,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x09,0x00,0x00, + 0x00,0x00,0x00,0x00,0x50,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x09,0x00, + 0x00,0x00,0x00,0x00,0x00,0xa0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x0c, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc1,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x0e,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0xd2,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x00, + 0x00,0x00,0x00,0x12,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00, + 0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/tardis.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/tardis.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define tardis_width 64 +#define tardis_height 64 +static char tardis_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0xac, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, + 0x55, 0x55, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, + 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 0x00, 0x80, 0x55, 0x55, + 0x55, 0x55, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, + 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x77, 0xdd, 0x9d, 0x00, 0x00, + 0x00, 0x00, 0x76, 0x77, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x72, 0x77, + 0xdd, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x76, 0x77, 0xdc, 0xdd, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x76, 0x77, + 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x72, 0x77, 0xdd, 0x9d, 0x00, 0x00, + 0x00, 0x00, 0x76, 0x77, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x72, 0x77, + 0xdd, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0xaa, 0xaa, 0xab, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x56, 0x55, + 0x55, 0xd5, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x0b, 0xa0, 0x00, 0x00, + 0x00, 0x00, 0x16, 0x50, 0xa5, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xa8, + 0x4b, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x16, 0x50, 0xa5, 0xd2, 0x00, 0x00, + 0x00, 0x00, 0x2a, 0xa8, 0x4b, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x16, 0x50, + 0xa5, 0xd2, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x4b, 0xa5, 0x00, 0x00, + 0x00, 0x00, 0x56, 0x55, 0x05, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0xab, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x56, 0x55, 0x55, 0xd5, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xa0, 0x0b, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x46, 0x45, + 0xa5, 0xd2, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x4b, 0xa5, 0x00, 0x00, + 0x00, 0x00, 0x46, 0x45, 0xa5, 0xd2, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0x4b, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x46, 0x45, 0xa5, 0xd2, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xa0, 0x0b, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x55, + 0x55, 0xd5, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xab, 0xaa, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x40, 0x05, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0x4b, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x46, 0x45, 0xa5, 0xd2, 0x00, 0x00, + 0x00, 0x00, 0xaa, 0xaa, 0x4b, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x46, 0x45, + 0xa5, 0xd2, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x4b, 0xa5, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x40, 0x05, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, + 0xab, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x56, 0x55, 0x55, 0xd5, 0x00, 0x00, + 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x80, 0xaa, 0xaa, + 0xaa, 0xaa, 0x02, 0x00, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0x00, + 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/terminal.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/terminal.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define terminal_width 64 +#define terminal_height 54 +static char terminal_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, + 0x80, 0x55, 0x55, 0x55, 0x55, 0x55, 0xd5, 0x00, 0x80, 0xfa, 0xff, 0xff, + 0xff, 0xff, 0xaf, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, + 0x80, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x00, 0x80, 0xf5, 0xff, 0xff, + 0xff, 0xff, 0xd7, 0x00, 0x80, 0x36, 0x00, 0xf0, 0xff, 0xff, 0xb7, 0x00, + 0x80, 0xb5, 0xff, 0xf7, 0xff, 0xff, 0xd7, 0x00, 0x80, 0x36, 0x00, 0xf0, + 0xff, 0xff, 0xb7, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xff, 0xff, 0xd7, 0x00, + 0x80, 0xb6, 0xff, 0xf7, 0xff, 0xff, 0xb7, 0x00, 0x80, 0xb5, 0xff, 0xf7, + 0xff, 0xff, 0xd7, 0x00, 0x80, 0xb6, 0xff, 0x07, 0x00, 0x00, 0xb7, 0x00, + 0x80, 0xb5, 0xff, 0xf7, 0xff, 0x7f, 0xd7, 0x00, 0x80, 0xb6, 0xff, 0x07, + 0x00, 0x00, 0xb7, 0x00, 0x80, 0xb5, 0xff, 0x57, 0x55, 0x55, 0xd7, 0x00, + 0x80, 0xb6, 0xff, 0xa7, 0xaa, 0x2a, 0xb7, 0x00, 0x80, 0x35, 0x00, 0x50, + 0x55, 0x55, 0xd7, 0x00, 0x80, 0xf6, 0xff, 0xa9, 0xaa, 0x2a, 0xb7, 0x00, + 0x80, 0xf5, 0xff, 0x55, 0x55, 0x55, 0xd7, 0x00, 0x80, 0xf6, 0xff, 0xa9, + 0xaa, 0x2a, 0xb7, 0x00, 0x80, 0xf5, 0xff, 0x55, 0x55, 0x55, 0xd7, 0x00, + 0x80, 0xf6, 0xff, 0xa9, 0xaa, 0x2a, 0xb7, 0x00, 0x80, 0xf5, 0xff, 0x55, + 0x55, 0x55, 0xd7, 0x00, 0x80, 0x36, 0xe2, 0xa9, 0xaa, 0x2a, 0xb7, 0x00, + 0x80, 0xb5, 0xea, 0x01, 0x00, 0x00, 0xd7, 0x00, 0x80, 0x36, 0xe2, 0xff, + 0xff, 0xff, 0xb7, 0x00, 0x80, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xd7, 0x00, + 0x80, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x00, 0x80, 0x05, 0x00, 0x00, + 0x00, 0x00, 0xd0, 0x00, 0x80, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x00, + 0x80, 0x55, 0x55, 0x55, 0x55, 0x55, 0xd5, 0x00, 0x80, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x7f, 0x75, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0x7a, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x75, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0xc0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x01, 0x40, 0xdf, 0x7b, 0x6f, + 0xef, 0xbd, 0x77, 0x01, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, + 0xe0, 0xf7, 0xde, 0xfb, 0x7b, 0xef, 0x7d, 0x03, 0xb0, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0x06, 0xd0, 0x7f, 0xef, 0xbd, 0xbd, 0xf7, 0xde, 0x05, + 0xa8, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x54, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x15, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, + 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0x2a, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/termlock.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/termlock.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define termlock_width 64 +#define termlock_height 54 +static char termlock_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, + 0x80, 0x55, 0x55, 0x55, 0x55, 0x55, 0xd5, 0x00, 0x80, 0xfa, 0xff, 0xff, + 0xff, 0xff, 0xaf, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x00, + 0x80, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xb3, 0x00, 0x80, 0xf5, 0xff, 0xff, + 0xff, 0xff, 0xd7, 0x00, 0x80, 0x36, 0x00, 0xf0, 0xff, 0xff, 0xb7, 0x00, + 0x80, 0xb5, 0xff, 0xf7, 0xff, 0xff, 0xd7, 0x00, 0x80, 0x36, 0x00, 0xf0, + 0xff, 0xff, 0xb7, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xff, 0xff, 0xd7, 0x00, + 0x20, 0xb6, 0xff, 0xf7, 0xff, 0xff, 0x37, 0x02, 0x50, 0xb4, 0xff, 0xf7, + 0xff, 0xff, 0x17, 0x05, 0x90, 0xb6, 0xff, 0x07, 0x00, 0x00, 0xb7, 0x04, + 0x50, 0xb0, 0xff, 0xf7, 0xff, 0x7f, 0x07, 0x05, 0xa0, 0xb2, 0xff, 0x07, + 0x00, 0x00, 0xa7, 0x02, 0x00, 0xa5, 0xff, 0x57, 0x55, 0x55, 0x53, 0x00, + 0x80, 0xa8, 0xff, 0xa7, 0xaa, 0x2a, 0x8b, 0x00, 0x00, 0x05, 0x00, 0x50, + 0x55, 0x55, 0x50, 0x00, 0x00, 0x2a, 0xff, 0xa9, 0xaa, 0x2a, 0x2a, 0x00, + 0x80, 0x50, 0xfe, 0x55, 0x55, 0x15, 0x85, 0x00, 0x80, 0x8a, 0xfe, 0xa9, + 0xaa, 0xaa, 0xa8, 0x00, 0x80, 0x51, 0xf8, 0x55, 0x55, 0x05, 0xc5, 0x00, + 0x80, 0xa6, 0xf2, 0xa9, 0xaa, 0xa2, 0xb2, 0x00, 0x80, 0x05, 0xe5, 0x55, + 0x55, 0x51, 0xd0, 0x00, 0x80, 0xb6, 0xe8, 0xa9, 0xaa, 0x8a, 0xb6, 0x00, + 0x80, 0x35, 0x85, 0x01, 0x00, 0x50, 0xd6, 0x00, 0x80, 0x36, 0x2a, 0xff, + 0x7f, 0x2a, 0xb7, 0x00, 0x80, 0xf5, 0x51, 0xfe, 0x3f, 0x85, 0xd7, 0x00, + 0x80, 0xe6, 0x8b, 0xfe, 0xbf, 0xe8, 0xb3, 0x00, 0x80, 0x05, 0x50, 0x00, + 0x00, 0x05, 0xd0, 0x00, 0x80, 0xfa, 0xa7, 0xf2, 0xa7, 0xf2, 0xaf, 0x00, + 0x80, 0x55, 0x05, 0x45, 0x51, 0x50, 0xd5, 0x00, 0x80, 0xaa, 0xaa, 0x88, + 0x8a, 0xaa, 0xaa, 0x00, 0x80, 0xff, 0x3f, 0xe5, 0x53, 0xfe, 0xff, 0x00, + 0x00, 0x00, 0x7f, 0x0a, 0x28, 0x75, 0x00, 0x00, 0x00, 0x00, 0xff, 0x10, + 0x84, 0x7a, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf7, 0x77, 0x75, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xf7, 0xf7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0x87, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x37, 0xf6, 0xff, 0xff, 0x00, + 0xc0, 0xaa, 0xaa, 0x32, 0xa6, 0xaa, 0xaa, 0x01, 0x40, 0xdf, 0x7b, 0xfb, + 0xef, 0xbd, 0x77, 0x01, 0xa0, 0xaa, 0xaa, 0xfa, 0xaf, 0xaa, 0xaa, 0x02, + 0xe0, 0xf7, 0xde, 0xfb, 0x6f, 0xef, 0x7d, 0x03, 0xb0, 0xaa, 0xaa, 0xfa, + 0xaf, 0xaa, 0xaa, 0x06, 0xd0, 0x7f, 0xef, 0x79, 0xaf, 0xf7, 0xde, 0x05, + 0xa8, 0xaa, 0xaa, 0x7a, 0xaf, 0xaa, 0xaa, 0x0a, 0x54, 0x55, 0x55, 0x79, + 0x4f, 0x55, 0x55, 0x15, 0xfa, 0xff, 0xff, 0x3b, 0xee, 0xff, 0xff, 0x2f, + 0x56, 0x55, 0x55, 0xf9, 0x4f, 0x55, 0x55, 0x35, 0xaa, 0xaa, 0xaa, 0x02, + 0xa0, 0xaa, 0xaa, 0x2a, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/tex-48.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/tex-48.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,23 @@ +#define noname_width 48 +#define noname_height 48 +static char noname_bits[] = { + 0xfc,0xff,0xff,0xff,0xff,0x1f,0x04,0x00,0x00,0x00,0x00,0x10,0x04,0xa2,0xaa, + 0x00,0x00,0x10,0x04,0x10,0xf5,0x77,0x00,0x10,0x84,0xaa,0xbb,0xa0,0x02,0x10, + 0x04,0xf1,0x5f,0x20,0x08,0x10,0xa4,0xea,0xaa,0x2e,0x20,0x10,0x04,0xff,0xff, + 0xff,0x01,0x10,0xa4,0xaa,0xff,0xff,0x8b,0x10,0x54,0xff,0xff,0xfb,0x1f,0x11, + 0xa4,0xea,0xee,0xe2,0x2e,0x12,0x54,0x7f,0xff,0x01,0x30,0x10,0xa4,0xba,0xfe, + 0x83,0xa0,0x10,0xc4,0x1f,0xff,0xc3,0x80,0x13,0xa4,0x0e,0xee,0xee,0x00,0x12, + 0x04,0x07,0xf6,0x7f,0x00,0x10,0x84,0x0b,0xaa,0x2a,0x00,0x10,0x04,0x0f,0xdc, + 0x7f,0x00,0x10,0x04,0x0a,0xa8,0x2a,0x00,0x10,0x04,0x16,0xf0,0x1f,0x00,0x10, + 0x04,0xa9,0xa0,0x02,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00, + 0x00,0x00,0x10,0xff,0x7f,0x00,0xe0,0xbf,0x7f,0xff,0x7f,0x00,0xe0,0xbf,0x7f, + 0xcf,0x79,0x00,0x80,0x1f,0x1e,0xc7,0x71,0x00,0x00,0x1f,0x0f,0xc3,0x61,0x00, + 0x00,0xbe,0x07,0xc3,0x61,0x00,0x00,0xfc,0x03,0xc3,0x61,0x00,0x00,0xf8,0x01, + 0xc0,0x01,0x00,0x00,0xf0,0x01,0xc0,0x01,0x00,0x00,0xf0,0x01,0xc0,0xf9,0xff, + 0x07,0xf8,0x03,0xc0,0xf9,0xff,0x07,0xfc,0x07,0xc0,0xe1,0x81,0x07,0x9e,0x0f, + 0xc0,0xc1,0x01,0x07,0x0f,0x1f,0xc0,0xc1,0x61,0x86,0x07,0x3e,0xf8,0xcf,0x61, + 0xe6,0x9f,0xff,0xf8,0xcf,0x71,0xe6,0x9f,0xff,0x00,0xc0,0x7f,0x00,0x00,0x00, + 0x00,0xc0,0x7f,0x00,0x00,0x00,0x00,0xc0,0x71,0x06,0x00,0x00,0x00,0xc0,0x61, + 0x06,0x00,0x00,0x00,0xc0,0x61,0x06,0x00,0x00,0x00,0xc0,0x01,0x07,0x00,0x00, + 0x00,0xe0,0x01,0x07,0x00,0x00,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,0xf8,0xff, + 0x07,0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/texinfo.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/texinfo.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define texinfo.xbm_width 64 +#define texinfo.xbm_height 54 +static char texinfo.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, + 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x55, 0x92, 0x24, + 0x49, 0x92, 0x3c, 0x00, 0x00, 0x19, 0x49, 0x92, 0x24, 0x49, 0x3c, 0x00, + 0x00, 0x91, 0x24, 0x49, 0x92, 0x24, 0x7d, 0x01, 0x00, 0x59, 0x92, 0x24, + 0x49, 0x92, 0xac, 0x02, 0x00, 0x15, 0x49, 0x92, 0x24, 0x49, 0x7c, 0x01, + 0x00, 0x99, 0x24, 0x49, 0x92, 0x24, 0xbd, 0x02, 0x00, 0x51, 0x92, 0x24, + 0x49, 0x92, 0x7c, 0x01, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x02, + 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x99, 0x7f, 0xfe, + 0x9c, 0x63, 0xb4, 0x02, 0x00, 0x91, 0x7f, 0xfe, 0x9c, 0x63, 0x7c, 0x01, + 0x00, 0x19, 0x0c, 0x06, 0xfc, 0x63, 0xbc, 0x02, 0x00, 0x15, 0x0c, 0x3e, + 0xf0, 0x60, 0x74, 0x01, 0x00, 0x19, 0x0c, 0x3e, 0x60, 0x60, 0xb4, 0x02, + 0x00, 0x11, 0x0c, 0x06, 0xf0, 0x60, 0x74, 0x01, 0x00, 0x19, 0x0c, 0x06, + 0xfc, 0x63, 0xbc, 0x02, 0x00, 0x15, 0x0c, 0xfe, 0x9c, 0x63, 0x7c, 0x01, + 0x00, 0x19, 0x0c, 0xfe, 0x9c, 0x63, 0xbc, 0x02, 0x00, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x01, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x02, + 0x00, 0x55, 0x92, 0x24, 0x49, 0x92, 0x74, 0x01, 0x00, 0x19, 0x49, 0x92, + 0x24, 0x49, 0xb4, 0x02, 0x00, 0x91, 0x24, 0x49, 0x92, 0x24, 0x6d, 0x01, + 0x00, 0x59, 0x92, 0x24, 0x49, 0x92, 0xac, 0x02, 0x00, 0x15, 0x49, 0x92, + 0x24, 0x49, 0x6c, 0x01, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02, + 0x00, 0x51, 0x14, 0x63, 0x92, 0x89, 0x7c, 0x01, 0x00, 0x19, 0xaa, 0x94, + 0x52, 0x0a, 0xac, 0x02, 0x00, 0x95, 0xa2, 0x97, 0xd2, 0x0b, 0x75, 0x01, + 0x00, 0x59, 0xa2, 0x94, 0x52, 0x8a, 0xbc, 0x02, 0x00, 0x11, 0xa2, 0x94, + 0x4c, 0x3a, 0x7c, 0x01, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x02, + 0x00, 0x55, 0x92, 0x24, 0x49, 0x92, 0x7c, 0x01, 0x00, 0x19, 0x49, 0x92, + 0x24, 0x49, 0xb4, 0x02, 0x00, 0x91, 0x24, 0x49, 0x92, 0x24, 0x6d, 0x01, + 0x00, 0x59, 0x92, 0x24, 0x49, 0x92, 0xb4, 0x02, 0x00, 0x15, 0x49, 0x92, + 0x24, 0x49, 0x74, 0x01, 0x00, 0x99, 0x24, 0x49, 0x92, 0x24, 0xb5, 0x02, + 0x00, 0x51, 0x92, 0x24, 0x49, 0x92, 0x74, 0x01, 0x00, 0x19, 0x49, 0x92, + 0x24, 0x49, 0xbc, 0x02, 0x00, 0x95, 0x24, 0x49, 0x92, 0x24, 0x7d, 0x01, + 0x00, 0x59, 0x92, 0x24, 0x49, 0x92, 0xac, 0x02, 0x00, 0x31, 0x00, 0x00, + 0x00, 0x00, 0x6e, 0x01, 0x00, 0xee, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x02, + 0x00, 0x51, 0x3f, 0x1e, 0xfb, 0x3f, 0x7d, 0x01, 0x00, 0xb1, 0xfa, 0xaf, + 0xef, 0xff, 0xbb, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, + 0x00, 0xa8, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x02, 0x00, 0x50, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x01, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x02}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/tree-48.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/tree-48.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,27 @@ +#define tree48_width 48 +#define tree48_height 48 +static char tree48_bits[] = { + 0x00, 0x00, 0x7f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0xbf, 0x16, 0x01, 0x00, + 0x00, 0x00, 0x6f, 0x05, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x1a, 0x01, 0x00, + 0x00, 0x00, 0x7f, 0x35, 0x01, 0x00, 0x00, 0x00, 0xbf, 0x1c, 0x01, 0x00, + 0x00, 0x00, 0x6f, 0x0b, 0x01, 0x00, 0x00, 0x00, 0xef, 0x09, 0x01, 0x00, + 0x00, 0x00, 0x7b, 0x05, 0x01, 0x00, 0x00, 0x00, 0xf1, 0x09, 0x01, 0x00, + 0x00, 0x00, 0x77, 0x1b, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x0d, 0x01, 0x00, + 0x00, 0x00, 0xff, 0x0f, 0x01, 0x00, 0x00, 0x00, 0xff, 0x0b, 0x01, 0x00, + 0x00, 0x00, 0xef, 0x0f, 0x01, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x01, 0x00, + 0x00, 0x00, 0xbb, 0x17, 0x01, 0x00, 0x00, 0x00, 0xe9, 0x1f, 0x01, 0x00, + 0x00, 0x00, 0xf3, 0x3f, 0x03, 0x00, 0x00, 0x80, 0xf9, 0x3f, 0x07, 0x00, + 0x00, 0x80, 0xe5, 0x2e, 0x07, 0x00, 0x00, 0xc0, 0x7b, 0xdf, 0x0e, 0x00, + 0x00, 0xf0, 0xff, 0xfc, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0xfd, 0xff, 0x00, + 0x00, 0xfc, 0xff, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x07, + 0x80, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0x7f, 0x79, 0x0e, + 0xf0, 0xe7, 0x3f, 0x7d, 0x79, 0x1d, 0xfc, 0x33, 0x1e, 0x39, 0x72, 0x3c, + 0xfc, 0x73, 0x3e, 0x39, 0xe4, 0x38, 0xde, 0x93, 0x5e, 0x39, 0xe2, 0x78, + 0xce, 0x15, 0x4f, 0x7a, 0xc4, 0x75, 0xcf, 0xa5, 0x1f, 0xbc, 0xa4, 0x45, + 0xcf, 0x95, 0x3b, 0x3a, 0x91, 0xc3, 0xcf, 0x89, 0x59, 0x3a, 0xca, 0x63, + 0xe3, 0x99, 0x59, 0xfa, 0xe0, 0x57, 0xe3, 0xab, 0x99, 0xd8, 0x71, 0xd6, + 0xe3, 0xcb, 0x91, 0xd8, 0x31, 0x56, 0xa3, 0xea, 0x12, 0x4c, 0x11, 0x55, + 0x92, 0x72, 0x12, 0x4a, 0x93, 0x8c, 0x92, 0x72, 0x11, 0x49, 0x57, 0x14, + 0x92, 0x32, 0x12, 0x4d, 0x94, 0x92, 0x11, 0x11, 0x22, 0x09, 0x82, 0x42, + 0x91, 0x12, 0xa1, 0x10, 0x61, 0x64, 0xca, 0x22, 0x10, 0x91, 0x50, 0x04, + 0x44, 0x22, 0x08, 0x09, 0x89, 0x08, 0x2a, 0x14, 0x10, 0x12, 0x89, 0x10}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/tree.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/tree.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define tree_width 64 +#define tree_height 64 +static char tree.bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x25, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x15, 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x11, 0x26, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x26, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x42, 0x83, 0x01, 0x00, 0x00, + 0x00, 0x98, 0x2d, 0xc2, 0x4a, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x47, 0xe0, + 0x5c, 0x29, 0x00, 0x00, 0x00, 0x80, 0x45, 0xa2, 0x29, 0x19, 0x00, 0x00, + 0x00, 0x06, 0x4b, 0xc2, 0x10, 0xee, 0x00, 0x00, 0x00, 0x34, 0x0a, 0xa3, + 0x98, 0x03, 0x00, 0x00, 0x80, 0x00, 0x16, 0x61, 0xe0, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x94, 0x51, 0x69, 0x04, 0x00, 0x00, 0x00, 0x01, 0x04, 0xb9, + 0x24, 0xeb, 0x02, 0x00, 0x00, 0x03, 0xd9, 0x14, 0x12, 0x04, 0x00, 0x00, + 0xe0, 0x17, 0x8c, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xda, 0x48, + 0x08, 0x00, 0x01, 0x00, 0x80, 0x01, 0x66, 0x28, 0x48, 0xaf, 0x01, 0x00, + 0x00, 0x00, 0x38, 0x38, 0x5e, 0x28, 0x00, 0x00, 0x00, 0x30, 0xb5, 0x10, + 0x06, 0x07, 0x00, 0x00, 0x00, 0x4d, 0x2c, 0x22, 0x02, 0x01, 0x01, 0x00, + 0xc0, 0xc1, 0x30, 0x66, 0xeb, 0x5d, 0x06, 0x00, 0x40, 0xa0, 0x21, 0x04, + 0x23, 0x00, 0x01, 0x00, 0x00, 0xc0, 0x23, 0x4c, 0x21, 0xe8, 0x06, 0x00, + 0xc0, 0x9b, 0x66, 0x0c, 0xa1, 0x50, 0x08, 0x00, 0x00, 0xb8, 0x65, 0x84, + 0x89, 0xa0, 0x03, 0x00, 0x00, 0x08, 0x6a, 0x98, 0x44, 0x10, 0x0c, 0x00, + 0x00, 0x96, 0x34, 0x80, 0x40, 0x08, 0x10, 0x00, 0x00, 0x00, 0x7a, 0x0c, + 0x40, 0x17, 0x0d, 0x00, 0x00, 0x00, 0x70, 0x98, 0xc0, 0x51, 0x1c, 0x00, + 0x00, 0x38, 0xc0, 0x18, 0x30, 0xc4, 0x03, 0x00, 0x00, 0x5c, 0xe1, 0x98, + 0x1c, 0x44, 0x01, 0x00, 0x00, 0x0c, 0x2c, 0x48, 0x07, 0x74, 0x00, 0x00, + 0x00, 0x76, 0x6a, 0x88, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, + 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0xbd, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x6b, 0x93, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/wizard.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/wizard.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define wizard_width 64 +#define wizard_height 54 +static char wizard_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, + 0x03, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x20, 0x40, + 0x00, 0x00, 0xf8, 0xfe, 0x07, 0x00, 0x50, 0x92, 0x00, 0x00, 0x3c, 0xfe, + 0x0f, 0x00, 0x68, 0xd9, 0x00, 0x00, 0x0c, 0xfc, 0x1f, 0x00, 0x64, 0x4d, + 0x00, 0x00, 0x04, 0xd7, 0x1f, 0x00, 0xb2, 0x7e, 0x00, 0x00, 0xc0, 0xff, + 0x1f, 0x00, 0xfc, 0x5f, 0x00, 0x00, 0xa0, 0xff, 0xcf, 0x0f, 0x10, 0x7f, + 0x00, 0xc0, 0x7f, 0x00, 0xf0, 0x33, 0x10, 0x4e, 0x00, 0x70, 0xf0, 0xff, + 0x7f, 0x40, 0x18, 0x26, 0x00, 0xe8, 0xc3, 0xff, 0x03, 0x9f, 0x1c, 0x22, + 0x00, 0xfc, 0x1f, 0x00, 0xc0, 0x7f, 0x9c, 0x11, 0x00, 0xfc, 0x7f, 0x00, + 0xf8, 0x7f, 0xce, 0x08, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x1f, 0x6e, 0x04, + 0x00, 0x00, 0x9e, 0x6d, 0x72, 0x07, 0x6f, 0x02, 0x00, 0x80, 0x3f, 0xc6, + 0x38, 0xff, 0x6f, 0x06, 0x00, 0xf8, 0xfb, 0xc3, 0xdf, 0x7e, 0x77, 0x06, + 0x00, 0xfc, 0xfd, 0xe7, 0x9f, 0x7d, 0x77, 0x07, 0x80, 0xff, 0xd7, 0xbd, + 0x03, 0x9f, 0xea, 0x0f, 0x70, 0xc0, 0xab, 0x7e, 0x0a, 0xd7, 0x73, 0x0f, + 0x88, 0x05, 0x1f, 0xba, 0x82, 0xce, 0xe6, 0x0f, 0x64, 0x00, 0x2e, 0x82, + 0xc0, 0x8f, 0x43, 0x0f, 0x36, 0x30, 0x0c, 0x00, 0x00, 0x37, 0xf8, 0x0f, + 0x3a, 0x18, 0xb9, 0x00, 0xc0, 0x5f, 0x76, 0x0f, 0x3a, 0x80, 0x19, 0x00, + 0x88, 0xff, 0xff, 0x0f, 0x7b, 0xc0, 0xd8, 0x02, 0xd0, 0xff, 0x7f, 0x0f, + 0x7b, 0xfc, 0x7c, 0x40, 0xf4, 0xff, 0xff, 0x07, 0xb3, 0xbb, 0xbe, 0x09, + 0xe5, 0xff, 0xbf, 0x07, 0xbf, 0x9b, 0xfd, 0x5d, 0xef, 0xff, 0xff, 0x07, + 0x3b, 0x99, 0xfe, 0xdf, 0xff, 0xff, 0xde, 0x03, 0x23, 0x49, 0xff, 0xff, + 0xff, 0xff, 0xdf, 0x03, 0x1f, 0xf2, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0x01, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0x01, 0xfe, 0xf7, 0xfd, 0xff, + 0xf7, 0xff, 0xfd, 0x01, 0xfe, 0xf7, 0xff, 0xff, 0xff, 0xbf, 0xdb, 0x00, + 0xfc, 0xb7, 0xff, 0xfe, 0x7f, 0xff, 0x0f, 0x00, 0xfc, 0xb7, 0xff, 0xff, + 0xf7, 0x7f, 0x01, 0x00, 0xfc, 0xdf, 0xff, 0xfe, 0xff, 0xfd, 0x03, 0x00, + 0xf8, 0xcb, 0xff, 0xff, 0xef, 0xf7, 0x0f, 0x00, 0xf0, 0xf1, 0x7b, 0xef, + 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xef, 0xff, 0xff, 0xef, 0x7f, 0x00, + 0x80, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x01, 0xf0, 0x0f, 0xfc, 0xef, + 0xff, 0x3e, 0xe0, 0x03, 0xf8, 0x27, 0xfa, 0xf7, 0xfb, 0x4d, 0x48, 0x00, + 0x80, 0xc1, 0xf7, 0xff, 0xfe, 0xf7, 0x85, 0x00, 0x80, 0x6a, 0xc0, 0xff, + 0x7f, 0x00, 0xaf, 0x01, 0x40, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x38, 0x02, + 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0xc0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/words.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/words.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define Words_width 64 +#define Words_height 54 +static char Words_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x24, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x92, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x24, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x92, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x48, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x04, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x92, 0x24, 0x01, 0x00, 0x00, + 0x00, 0x80, 0x24, 0x49, 0x12, 0x02, 0x00, 0x00, 0x00, 0x40, 0x12, 0x20, + 0x49, 0x04, 0x00, 0x00, 0x00, 0x20, 0x49, 0x92, 0x24, 0x09, 0x00, 0x00, + 0x00, 0x10, 0x20, 0x01, 0x82, 0x10, 0x00, 0x00, 0x00, 0x48, 0x92, 0x24, + 0x49, 0x22, 0x00, 0x00, 0x00, 0x24, 0x09, 0x92, 0x24, 0x41, 0x00, 0x00, + 0x00, 0x12, 0x20, 0x49, 0x92, 0x84, 0x00, 0x00, 0x00, 0x41, 0x92, 0x24, + 0x08, 0x02, 0x01, 0x00, 0x80, 0x24, 0x09, 0x82, 0x20, 0x01, 0x02, 0x00, + 0x40, 0x12, 0x20, 0x48, 0x12, 0x00, 0x04, 0x00, 0x20, 0x49, 0x92, 0x04, + 0x49, 0x00, 0x08, 0x00, 0x40, 0x24, 0x49, 0x92, 0x24, 0x00, 0x10, 0x00, + 0x80, 0x90, 0x04, 0x09, 0x12, 0x00, 0x20, 0x00, 0x00, 0x49, 0x10, 0x20, + 0x09, 0x00, 0x40, 0x00, 0x00, 0x22, 0x49, 0x92, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x84, 0x24, 0x09, 0x02, 0x00, 0x40, 0x00, 0x00, 0x48, 0x92, 0x24, + 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x49, 0x12, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x20, 0x24, 0x49, 0xf0, 0x03, 0x08, 0x00, 0x00, 0x40, 0x92, 0x20, + 0x08, 0x04, 0x04, 0x00, 0x00, 0x80, 0x48, 0x12, 0x04, 0x08, 0x02, 0x00, + 0x00, 0x00, 0x21, 0x01, 0x32, 0x10, 0x01, 0x00, 0x00, 0x00, 0x92, 0x04, + 0x4e, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf2, 0xfb, 0xc7, 0x03, 0x00, + 0x00, 0x00, 0x08, 0x09, 0x31, 0x80, 0x03, 0x00, 0x00, 0x00, 0x90, 0x04, + 0x02, 0x80, 0x03, 0x00, 0x00, 0x00, 0x20, 0x02, 0x04, 0x80, 0x03, 0x00, + 0x00, 0x00, 0x40, 0x00, 0x18, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, + 0xe0, 0x9f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe1, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x80, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/world-inv.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/world-inv.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define face_width 64 +#define face_height 64 +static char face_bits[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x45, 0xa0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbe, + 0x57, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xd3, 0xfa, 0xfa, 0xff, 0xff, + 0xff, 0xff, 0x77, 0xbe, 0xee, 0xeb, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xfd, + 0xb1, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xed, 0xef, 0xcb, 0xab, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x6e, 0xdd, 0xff, 0xff, 0xff, 0x7f, 0xdb, 0x7f, + 0xab, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xfe, 0xff, + 0xff, 0xbf, 0xfe, 0x6e, 0xf5, 0xbb, 0xfd, 0xff, 0xff, 0xff, 0xdb, 0xff, + 0xff, 0x57, 0xfd, 0xff, 0xff, 0xef, 0xfe, 0x5f, 0xfd, 0xaf, 0xfa, 0xff, + 0xff, 0xbf, 0x7f, 0xfb, 0xba, 0xaf, 0xf6, 0xff, 0xff, 0xf7, 0xdb, 0x7f, + 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xd5, 0xfe, 0xef, 0xed, 0xff, + 0xff, 0xf7, 0x5b, 0xfd, 0xb7, 0x7f, 0xfd, 0xff, 0xff, 0xff, 0x5f, 0xea, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xbd, 0xb9, 0xbe, 0xde, 0xff, 0xfd, 0xff, + 0xff, 0xfb, 0xab, 0x76, 0xfb, 0xff, 0xdf, 0xff, 0xff, 0xfd, 0x7f, 0xff, + 0xa4, 0xff, 0xfb, 0xff, 0xff, 0xdb, 0x5b, 0xdd, 0xd5, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0xfe, 0xbb, 0xa5, 0xef, 0xf6, 0xff, 0xff, 0xfb, 0x6f, 0xad, + 0x52, 0xdd, 0xbf, 0xff, 0xff, 0xf5, 0xdf, 0x55, 0x49, 0xfe, 0xff, 0xff, + 0xff, 0xbb, 0xef, 0x5e, 0x92, 0xae, 0xff, 0xff, 0xff, 0xf5, 0xfe, 0xad, + 0x22, 0xdb, 0xdf, 0xff, 0xff, 0xa5, 0xbb, 0x5f, 0x55, 0x74, 0xff, 0xff, + 0xff, 0xdb, 0xde, 0x3e, 0x89, 0xba, 0xd7, 0xff, 0xff, 0x55, 0xb5, 0x9f, + 0x64, 0xfc, 0xfd, 0xff, 0xff, 0xa3, 0xdf, 0x56, 0x4a, 0xb9, 0xef, 0xff, + 0xff, 0x27, 0xbf, 0x2f, 0xa9, 0xea, 0xfe, 0xff, 0xff, 0x47, 0xdf, 0x5f, + 0xa2, 0xac, 0xdb, 0xff, 0xff, 0x2f, 0x6d, 0x15, 0x50, 0x75, 0xfb, 0xff, + 0xff, 0x57, 0xba, 0x02, 0x2a, 0xa9, 0xee, 0xff, 0xff, 0xaf, 0xd6, 0x48, + 0x84, 0xaa, 0xfa, 0xff, 0xff, 0xbf, 0x2a, 0x02, 0x30, 0x55, 0xfa, 0xff, + 0xff, 0xbf, 0x8a, 0x00, 0x4a, 0x2b, 0xfd, 0xff, 0xff, 0xbf, 0x55, 0x11, + 0x51, 0x55, 0xff, 0xff, 0xff, 0x7f, 0xad, 0x04, 0x54, 0xd5, 0xfe, 0xff, + 0xff, 0xff, 0x95, 0x90, 0x28, 0xa9, 0xff, 0xff, 0xff, 0xff, 0x77, 0x05, + 0xaa, 0xea, 0xff, 0xff, 0xff, 0xff, 0xad, 0x50, 0x24, 0xb5, 0xff, 0xff, + 0xff, 0xff, 0x17, 0x05, 0x51, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x51, + 0x4a, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8a, 0xa4, 0xfe, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x25, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/world.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/world.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,46 @@ +#define world.xbm_width 64 +#define world.xbm_height 64 +static char world.xbm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x01, 0x70, 0x00, 0x00, 0x00, 0x80, 0x03, 0x40, 0x01, 0x80, 0x03, 0x00, + 0x00, 0x60, 0x00, 0xba, 0x5f, 0x00, 0x0c, 0x00, 0x00, 0x1c, 0x80, 0x41, + 0xa8, 0x02, 0x70, 0x00, 0x80, 0x03, 0x40, 0x2c, 0x05, 0x05, 0x80, 0x03, + 0x70, 0x00, 0x88, 0x41, 0x11, 0x14, 0x00, 0x04, 0x08, 0x00, 0x60, 0x02, + 0x4e, 0x09, 0x00, 0x0e, 0x1c, 0x00, 0x12, 0x10, 0x34, 0x54, 0x00, 0x1f, + 0x3e, 0x00, 0x00, 0x00, 0x91, 0x22, 0x00, 0x1f, 0x3e, 0x80, 0x24, 0x80, + 0x54, 0x88, 0x00, 0x1f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x20, 0x81, 0x0f, + 0xfc, 0x41, 0x01, 0x91, 0x0a, 0x44, 0x72, 0x04, 0x08, 0x1e, 0x24, 0x00, + 0x00, 0xa8, 0x0e, 0x04, 0x08, 0x10, 0x01, 0xa0, 0x02, 0x50, 0x05, 0x04, + 0x08, 0x40, 0x80, 0x04, 0x45, 0x50, 0x09, 0x04, 0x08, 0x08, 0x24, 0x80, + 0x00, 0x40, 0x00, 0x04, 0x08, 0x00, 0x41, 0x2a, 0x01, 0x10, 0x12, 0x04, + 0x08, 0x08, 0xa4, 0x02, 0x48, 0x80, 0x02, 0x04, 0x08, 0x00, 0xa0, 0x15, + 0x00, 0x00, 0x01, 0x04, 0x08, 0x42, 0x46, 0x41, 0x21, 0x00, 0x02, 0x04, + 0x08, 0x04, 0x54, 0x89, 0x04, 0x00, 0x20, 0x04, 0x08, 0x02, 0x80, 0x00, + 0x5b, 0x00, 0x04, 0x04, 0x08, 0x24, 0xa4, 0x22, 0x2a, 0x00, 0x00, 0x04, + 0x08, 0x02, 0x01, 0x44, 0x5a, 0x10, 0x09, 0x04, 0x08, 0x04, 0x90, 0x52, + 0xad, 0x22, 0x40, 0x04, 0x08, 0x0a, 0x20, 0xaa, 0xb6, 0x01, 0x00, 0x04, + 0x08, 0x44, 0x10, 0xa1, 0x6d, 0x51, 0x00, 0x04, 0x08, 0x0a, 0x01, 0x52, + 0xdd, 0x24, 0x20, 0x04, 0x08, 0x5a, 0x44, 0xa0, 0xaa, 0x8b, 0x00, 0x04, + 0x08, 0x24, 0x21, 0xc1, 0x76, 0x45, 0x28, 0x04, 0x08, 0xaa, 0x4a, 0x60, + 0x9b, 0x03, 0x02, 0x04, 0x08, 0x5c, 0x20, 0xa9, 0xb5, 0x46, 0x10, 0x04, + 0x08, 0xd8, 0x40, 0xd0, 0x56, 0x15, 0x01, 0x04, 0x08, 0xb8, 0x20, 0xa0, + 0x5d, 0x53, 0x24, 0x04, 0x08, 0xd0, 0x92, 0xea, 0xaf, 0x8a, 0x04, 0x04, + 0x08, 0xa8, 0x45, 0xfd, 0xd5, 0x56, 0x11, 0x04, 0x08, 0x50, 0x29, 0xb7, + 0x7b, 0x55, 0x05, 0x04, 0x08, 0x40, 0xd5, 0xfd, 0xcf, 0xaa, 0x05, 0x04, + 0x08, 0x40, 0x75, 0xff, 0xb5, 0xd4, 0x02, 0x04, 0x08, 0x40, 0xaa, 0xee, + 0xae, 0xaa, 0x01, 0x04, 0x08, 0xa0, 0x52, 0xfb, 0xab, 0x2a, 0x07, 0x04, + 0x08, 0x18, 0x6a, 0x6f, 0xd7, 0x56, 0x08, 0x04, 0x1c, 0x06, 0x88, 0xfa, + 0x55, 0x15, 0x10, 0x0e, 0xbe, 0x01, 0x52, 0xaf, 0xdb, 0x4a, 0x60, 0x1f, + 0x7e, 0x00, 0xe8, 0xfa, 0xae, 0x02, 0x80, 0x1f, 0x3e, 0x00, 0xa0, 0xae, + 0xb5, 0x0a, 0x00, 0x1f, 0x1c, 0x00, 0x00, 0x75, 0x5b, 0x01, 0x00, 0x0e, + 0x38, 0x00, 0x00, 0xda, 0x57, 0x00, 0x00, 0x07, 0xc0, 0x03, 0x00, 0x80, + 0x00, 0x00, 0xf0, 0x00, 0x00, 0x3c, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x00, + 0x00, 0xc0, 0x07, 0x80, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc0, + 0x01, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe7, 0xf3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/xmosaic.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/xmosaic.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,39 @@ +#define xmosaic_width 64 +#define xmosaic_height 54 +static char xmosaic_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, + 0x00, 0x00, 0xc0, 0x01, 0x00, 0xe0, 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, + 0x00, 0x30, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x18, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0x03, 0x00, 0x0c, 0x3e, 0x00, 0x00, 0x00, 0xc0, 0x01, + 0x00, 0x84, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x03, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0xe2, 0xc0, 0xff, 0xff, 0xff, 0x7f, 0x00, + 0x00, 0x61, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x31, 0xfc, 0xff, + 0xff, 0xff, 0x7f, 0x00, 0x00, 0x18, 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0xe0, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0xf8, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0xc2, 0x00, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0xfe, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, + 0x00, 0x20, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x10, 0x80, 0xff, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x10, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xff, 0xff, 0x03, 0x10, 0x00, 0x00, 0x00, 0x80, 0xff, + 0xff, 0x03, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x08, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0xff, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x00, 0x86, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0x0f, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x21, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x30, 0x00, 0x00, 0xfc, 0xff, 0xff, + 0xff, 0x7f, 0x18, 0x01, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x0c, 0x01, + 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x8e, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x80, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x43, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x60, 0x00, 0x80, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x30, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x18, 0x00, + 0x80, 0xff, 0xff, 0xff, 0xff, 0x03, 0x0e, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0xf0, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, + 0xf0, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/frame-icon/ying-yang-48.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/frame-icon/ying-yang-48.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,27 @@ +#define yinyang_width 48 +#define yinyang_height 48 +static char yinyang_bits[] = { + 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x01, 0x00, + 0x00, 0xc0, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x1f, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x06, 0x00, 0x00, 0xfe, 0x00, + 0x00, 0x01, 0x00, 0x00, 0xfe, 0x01, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x03, + 0x40, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x40, 0x00, 0x00, 0x00, 0xf8, 0x07, + 0x20, 0x00, 0x80, 0x03, 0xf8, 0x0f, 0x10, 0x00, 0xc0, 0x07, 0xf8, 0x1f, + 0x10, 0x00, 0xc0, 0x07, 0xf8, 0x1f, 0x08, 0x00, 0xc0, 0x07, 0xf8, 0x3f, + 0x08, 0x00, 0x80, 0x03, 0xf8, 0x3f, 0x04, 0x00, 0x00, 0x00, 0xf8, 0x7f, + 0x04, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0x04, 0x00, 0x00, 0x00, 0xfc, 0x7f, + 0x04, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc0, 0xff, 0xff, + 0x02, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x02, 0x00, 0xe0, 0xff, 0xff, 0xff, + 0x02, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x80, 0xff, 0xff, 0xff, 0xff, + 0x04, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x04, 0xc0, 0xff, 0xff, 0xff, 0x7f, + 0x04, 0xc0, 0xff, 0xff, 0xff, 0x7f, 0x04, 0xe0, 0xff, 0xff, 0xff, 0x7f, + 0x08, 0xe0, 0x7f, 0xfc, 0xff, 0x3f, 0x08, 0xe0, 0x3f, 0xf8, 0xff, 0x3f, + 0x10, 0xe0, 0x3f, 0xf8, 0xff, 0x1f, 0x10, 0xe0, 0x3f, 0xf8, 0xff, 0x1f, + 0x20, 0xe0, 0x7f, 0xfc, 0xff, 0x0f, 0x40, 0xe0, 0xff, 0xff, 0xff, 0x07, + 0x40, 0xc0, 0xff, 0xff, 0xff, 0x07, 0x80, 0xc0, 0xff, 0xff, 0xff, 0x03, + 0x00, 0x81, 0xff, 0xff, 0xff, 0x01, 0x00, 0x86, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x08, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x30, 0xfe, 0xff, 0x1f, 0x00, + 0x00, 0xc0, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xef, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/hypb-mouse.txt --- a/etc/hypb-mouse.txt Mon Aug 13 09:13:58 2007 +0200 +++ b/etc/hypb-mouse.txt Mon Aug 13 09:15:11 2007 +0200 @@ -37,12 +37,13 @@ Otherwise Action Key Hook Assist Key Hook Special Modes - C/C++ Mode Jumps to id/include def Jumps to next def + C,C++,Objective-C,Java Modes Jumps to id/include def Jumps to next def + Java Cross-Reference Tag Jumps to identifier def Jumps to next def Assembly Language Mode Jumps to id/include def Jumps to next def - Any Lisp mode Jumps to id def Jumps to next def + Any Lisp or Fortran Mode Jumps to id def Jumps to next def Emacs Lisp Compiler Error Jumps to def with error <- same - Grep or Occur match Jumps to match source line <- same - Multi-buffer occur match Jumps to match source line <- same + Grep or Occur Match Jumps to match source line <- same + Multi-buffer Occur Match Jumps to match source line <- same Outline Major/Minor Modes Collapses, expands, and moves outline entries Man Apropos Displays man page entry <- same Man Pages Follows cross refs, file refs and C code refs diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/ida-logo.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/ida-logo.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,198 @@ +/* XPM */ +static char * ida_name [] = { +"368 98 95 2", +/* pixels*/ +"a0 c #131313131313", +"a1 c #3d3d3d3d3d3d", +"a2 c #3e3e3e3e3e3e", +"a3 c #3c3c3c3c3c3c", +"a4 c #0e0e0e0e0e0e", +"a5 c #f0f0f0f0f0f0", +"a6 c #cfcfcfcfcfcf", +"a7 c #d2d2d2d2d2d2", +"a8 c #d5d5d5d5d5d5", +"a9 c #d3d3d3d3d3d3", +"b0 c #d6d6d6d6d6d6", +"b1 c #c7c7c7c7c7c7", +"b2 c #090909090909", +"b3 c #f1f1f1f1f1f1", +"b4 c #1a1a1a1a1a1a", +"b5 c #1c1c1c1c1c1c", +"b6 c #212121212121", +"b7 c #f4f4f4f4f4f4", +"b8 c #202020202020", +"b9 c #797979797979", +"c0 c #696969696969", +"c1 c #6b6b6b6b6b6b", +"c2 c #6f6f6f6f6f6f", +"c3 c #646464646464", +"c4 c #686868686868", +"c5 c #707070707070", +"c6 c #6e6e6e6e6e6e", +"c7 c #747474747474", +"c8 c #737373737373", +"c9 c #767676767676", +"d0 c #6c6c6c6c6c6c", +"d1 c #676767676767", +"d2 c #828282828282", +"d3 c #7b7b7b7b7b7b", +"d4 c #666666666666", +"d5 c #636363636363", +"d6 c #757575757575", +"d7 c #727272727272", +"d8 c #5f5f5f5f5f5f", +"d9 c #787878787878", +"e0 c #5c5c5c5c5c5c", +"e1 c #595959595959", +"e2 c #7d7d7d7d7d7d", +"e3 c #717171717171", +"e4 c #7a7a7a7a7a7a", +"e5 c #6a6a6a6a6a6a", +"e6 c #6d6d6d6d6d6d", +"e7 c #777777777777", +"e8 c #1f1f1f1f1f1f", +"e9 c #232323232323", +"f0 c #222222222222", +"f1 c #555555555555", +"f2 c #7c7c7c7c7c7c", +"f3 c #808080808080", +"f4 c #888888888888", +"f5 c #606060606060", +"f6 c #656565656565", +"f7 c #242424242424", +"f8 c #1e1e1e1e1e1e", +"f9 c #8e8e8e8e8e8e", +"g0 c #1d1d1d1d1d1d", +"g1 c #252525252525", +"g2 c #616161616161", +"g3 c #626262626262", +"g4 c #282828282828", +"g5 c #424242424242", +"g6 c #7e7e7e7e7e7e", +"g7 c #4f4f4f4f4f4f", +"g8 c #838383838383", +"g9 c #a5a5a5a5a5a5", +"h0 c #dfdfdfdfdfdf", +"h1 c #ffffffffffff", +"h2 c #b2b2b2b2b2b2", +"h3 c #f8f8f8f8f8f8", +"h4 c #fcfcfcfcfcfc", +"h5 c #ebebebebebeb", +"h6 c #969696969696", +"h7 c #c5c5c5c5c5c5", +"h8 c #b1b1b1b1b1b1", +"h9 c #2f2f2f2f2f2f", +"i0 c #e4e4e4e4e4e4", +"i1 c #363636363636", +"i2 c #000000000000", +"i3 c #4b4b4b4b4b4b", +"i4 c #060606060606", +"i5 c #2a2a2a2a2a2a", +"i6 c #474747474747", +"i7 c #323232323232", +"i8 c #525252525252", +"i9 c #3a3a3a3a3a3a", +"j0 c #2d2d2d2d2d2d", +"j1 c #343434343434", +"j2 c #1b1b1b1b1b1b", +"j3 c #181818181818", +"j4 c #171717171717", +"a0a1a1a2a2a2a2a2a2a2a1a2a2a2a2a2a2a2a2a2a1a2a2a2a1a2a2a2a2a2a1a1a1a2a2a2a1a2a2a2a2a2a2a2a2a2a2a2a1a2a2a1a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a2a2a2a1a2a2a2a2a2a1a1a1a2a2a2a1a2a2a2a2a2a2a2a2a2a2a2a1a2a2a1a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a2a2a1a1a2a2a2a2a2a1a1a1a2a2a2a1a2a2a2a2a2a2a2a2a2a2a2a1a2a2a1a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a1a2a2a2a2a2a2a2a2a2a2a2a2a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a2a2a1a1a2a2a2a2a2a1a1a1a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1a2a2a2a2a1a3a2a2a2a2a2a2a2a2a2a1a2a2a2a2a2a2a2a2a2a2a2a4", +"a2a5a6a6a7a6a8a7a7a7a7a7a8a6a7a7a9a9a7a9a7a8a8a7a7b0b0b0a9a6a6a6a8a9a7a7a7a9a7a7a9a8a6a8a8a6a9a8a6a6b0a6a7a8a7a9a7a6a9a8b0a8a9a7a8a9a7a7a7a7a8a8a8a7b0b0a8a8b0a8a8a9a8b0a6a6b0a7a7b0a8b0a8a9a8a9a9a6a6a6a7a6a8a7a7a7a7a7a8a6a7a7a9a9a7a9a7a8a8a7a7b0b0b0a9a6a6a6a8a9a7a7a7a9a7a7a9a8a6a8a8a6a9a8a6a6b0a6a7a8a7a9a7a6a9a8b0a8a9a7a8a9a7a7a7a7a8a8a8a7b0b0a8b0b0a8a8a9a8b0a6a6b0a7a7b0a8b0a8a9a8a9a9a6a6a6a7a6a8a7a7a7a7a7a8a6a7a7a9a9a7a9a7a8a8a7a7b0b0b0a7a6a6a6a8a9a7a7a7a9a7a7a9a8a6a8a8a6a8a8a6a6b0a6a7a8a7a9a7a6a9a8b0a8a9a7a8a9a7a7a7a7a8a8a8a7b0b0a8b0b0a8a8a9a8b0a6a6b0a7a7b0a8b0a8a8a9a9a9a6a6a6a7a6a8a7a7a7a7a7a8a6a7a7a9a9a7a9a7a8a8a7a7b0b0b0a9a6a6a6a8a9a7a7a7a9a7a7a8a9a6a8a8a6a8a8a6a6b0a6a7a8a7a9a7a6a9a8b0a8a8a7a8a9a7a7a7a7a8a8a8a7b0b0a8a9b1b2", +"a1a6b3a8a7a7a7a6a6b0a7a6a7a7a7a7a7a8a7a8a9a8b0a7a9b0b0b0a7a6a8a7b0b0b0a8a7a6a6a9a8b0a8a7b0a6a6a6a7a7a6a7a7a6a8a7a6a7a8a8b0b0a8a9a7a7a9a7a7a7a9a8a8a7a8b0b0a8a8b0a8b0b0a7a6a6b0b0a8b0b0b0a8a9a8a8a6a6a9a8a7a7a7a6a6b0a7a6a7a7a7a7a7a8a7a8a9a8b0a7a9b0b0b0a7a6a8a7b0b0b0a8a7a6a6a9a8b0a8a7b0a6a6a6a7a7a6a7a7a6a8a7a6a7a8a8b0b0a8a9a7a7a9a7a7a7a9a8a8a7a8b0b0a8a8b0a8b0b0a7a6a6b0b0a8b0b0b0a8a9a8a8a6a6a9a8a7a7a7a6a6b0a7a6a7a7a7a7a7a8a7a8a9a8b0a7a9b0b0b0a7a6a8a7b0b0b0a8a7a6a6a9a8b0a8a7b0a6a6a6a7a7a6a7a7a6a8a7a6a7a8a8b0b0a8a9a7a7a8a7a7a7a9a8a8a7a8b0b0a8a8b0a8b0b0a7a6a6b0b0a8b0b0b0a8a9a8a8a6a6a9a8a7a7a7a6a6b0a7a6a7a7a7a7a7a8a7a8a9a8b0a7a9b0b0b0a7a6a8a7b0b0b0a8a7a6a6a9a8b0a9a7b0a6a6a6a7a7a6a7a7a6a8a7a6a7a8a8b0b0a8a8a7a7a9a7a7a7a9a8a8a7a8b0b0b1b4b2", +"a1a6b0b3a8a9a7a6a6b0a9a6a7a7a7a7a7a8a7a8a9b0b0a9a7b0b0b0a6a6b0a8a9b0b0a8a8a9a7a8b0b0a9a6b1a6a7a7a7a9a6a7a8a7a8a7b1a8a8b0a8a8a8a7a8a7a7a7a8a8b0a8a8a9a8a8b0a7a8a9a9b0b0a7a6a7a8b0b0b0b0a8a8a9a8a8a6a6b0a8a8a9a7a6a6b0a9a6a7a7a7a7a7a8a7a8a9b0b0a9a7b0b0b0a6a6b0a8a9b0b0a8a8a9a7a8b0b0a9a6b1a6a7a7a7a9a6a7a8a7a8a7b1a8a8b0a8a8a8a7a8a7a7a7a8a8b0a8a8a8a8a8b0a7a8a9a9b0b0a7a6a7a8b0b0b0b0a8a8a9a8a8a6a6b0a8a8a9a7a6a6b0a9a6a7a7a7a7a7a8a7a8a9b0b0a9a7b0b0b0a7a6b0a8a9b0b0a8a8a9a7a8b0b0a8a6b1b1a7a7a7a9a6a7a8a7a8a7b1a8a8b0a8a8a8a7a8a7a7a7a8a8b0a8a8a9a8a8b0a7a8a9a9b0b0a7a6a7a8b0b0b0b0a8a8a9a8a8a6a6b0a8a8a9a7a6a6b0a9a6a7a7a7a7a7a8a7a8a9b0b0a9a7b0b0b0a6a6b0a8a9b0b0a8a8a9a7a8b0b0a8a6b1b1a7a7a7a9a6a7a8a7a8a7b1a8a8b0a8a8a9a7a7a7a7a7a8a8b0a8a8a8a9a7b1b5b6b2", +"a2a7a8a7b3b3b3b3a5a5b3b3b3b3b3b3b3b3b3b3b3b7b3b3b3b3b7b7b3a5a5b3b3b3b3b3b3b3b3b3b7b3b3b3a5a5a5b3b3b3a5b3a5b3b3a5a5b3b3b7b3b3b3b3b3b3b3b7b3b3b3b3b3b3b3b7b3b3b3b3b3b3b3b3a5a5b3b3b3b7b7b3b3b3b3b7b3a5b3b3b3b3b3b3a5a5b3b3b3b3b3b3b3b3b3b3b3b7b3b3b3b3b7b7b3a5a5b3b3b3b3b3b3b3b3b3b7b3b3b3a5a5a5b3b3b3a5b3a5b3b3a5a5b3b3b7b3b3b3b3b3b3b3b7b3b3b3b3b3b3b3b7b3b3b3b3b3b3b3b3a5a5b3b3b3b7b7b3b3b3b3b7b3a5b3b3b3b3b3b3a5a5b3b3b3b3b3b3b3b3b3b3b3b7b3b3b3b3b7b7a5a5a5b3b3b3b3b3b3b3b3b3b7b7b3b3a5b3b3b3b3b3a5b3a5b3b3a5a5b3b3b7b3b3b3b3b3b3b3b7b3b3b3b3b3b3b3b7b3b3b3b3b3b3b3b3a5a5b3b3b3b7b7b3b3b3b3b7b3a5b3b3b3b3b3b3a5a5b3b3b3b3b3b3b3b3b3b3b3b7b3b3b3b3b7b7a5a5a5b3b3b3b3b3b3b3b3b3b7b7b3b3a5b3b3b3b3b3a5b3a5b3b3a5a5b3b7b3b7b3b3b3b3b7b3b7b3b3b3b3b3b3b3b1b4b5b8b2", +"a2a7b0a8b3b9c0c1c2c2c3c1c4c2c5c4b9c6c2c7c6c8c9d0d1d2d3d2d4d5c3c9d2d3c9c5d6b9d7c8c1c8c1d8c5c6c6c1d8d9c3c6c2c4e0e1c5c5c0e2b9c4b9c4d7e3b9c4c5b9c5c1c1c1d7e3e2e4d7e5e5d7e6e6d8c4e5c3e7c7e3c6c2e3d6c7e5c4e2d7e4b9c0c1c2c2c3c1c4c2c5c4b9c6c2c7c6c8c9d0d1d2d3d2d4d5c3c9d2d3c9c5d6b9d7c8c1c8c1d8c5c6c6c1d8d9c3c6c2c4e0e1c5c5c0e2b9c4b9c4d7e3b9c4c5b9c5c1c1c1d7e3e2e4d7e5e5d7e6e6d8c4e5c3e7c7e3c6c2e3d6c7e5c4e2d7e4b9c0c1c2c2c3c1c4c2c5c4b9c6c2c7c6c8c9d0d1d2d3d2d4d5c3c9d2d3c9c5d6b9d7c8c1c8c1d8c5c6c6c1d8d9c3c6c2c4e0e1c5c5c0e2b9c4b9c4d7e3b9c4c5b9c5c1c1c1d7e3e2e4d7e5e5d7e6e6d8c4e5c3e7c7e3c6c2e3d6c7e5c4e2d7e4b9c0c1c2c2c3c1c4c2c5c4b9c6c2c7c6c8c9d0d1d2d3d2d4d5c3c9d2d3c9c5d6b9d7c8c1c8c1d8c5c6c6c1d8d9c3c6c2c4e0e1c5c5c0e2b9c4b9c4d7c2b9c4c5b9c5c1c1c1d7e8e9f0b6b2", +"a2b0a8a8b7c5c8c1c6c1c1d5f1c1c0b9c0c7c6c7c2d6e7c4e6f2d3f3c7e3d5d6d2f4b9e6c9c9c8c1d2e4d7d5c2e6c1d8c5d8c7d7c8d8c4c2e4b9b9c5e4c5b9b9c1c1e2c5c5d7c1c1c1c4d7d7b9e6d4d5e3e5e3e5c0f5e5f6c8c7c6c2c2d7d3c7e2e4b9d7e4c5c8c1c6c1c1d5f1c1c0b9c0c7c6c7c2d6e7c4e6f2d3f3c7e3d5d6d2f4b9e6c9c9c8c1d2e4d7d5c2e6c1d8c5d8c7d7c8d8c4c2e4b9b9c5e4c5b9b9c1c1e2c5c5d7c1c1c1c4d7d7b9e6d4d5e3e5e3e5c0f5e5f6c8c7c6c2c2d7d3c7e2e4b9d7e4c5c8c1c6c1c1d5f1c1c0b9c0c7c6c7c2d6e7c4e6f2d3f3c7e3d5d6d2f4b9e6c9c9c8c1d2e4d7d5c2e6c1d8c5d8c7d7c8d8c4c2e4b9b9c5e4c5b9b9c1c1e2c5c5d7c1c1c1c4d7d7b9e6d4d5e3e5e3e5c0f5e5f6c8c7c6c2c2d7d3c7e2e4b9d7e4c5c8c1c6c1c1d5f1c1c0b9c0c7c6c7c2d6e7c4e6f2d3f3c7e3d5d6d2f4b9e6c9c9c8c1d2e4d7d5c2e6c1d8c5d8c7d7c8d8c4c2e4b9b9c5e4c5b9b9c1c1e2c5c5d7c1c1c1c4d7b6f7b8f8b2", +"a2b0b0a9b3c5c6c6c2d5c3c3d5c5c4c4e4c8b9c9d7c9d6d5e6c2d9d2c8e6d4c5f9d7c6c9e6f2c1b9d2d3e5c1c0c2d5c2e1e5c8c6e5c2d4b9c5c0d7b9c5e4c2c5c1d5b9c5c4c5c1d7e3c6c6b9d7c4f5f5c1d4c3d6d1e1d4d7b9b9d7c1c9d6c7c7e2b9e4c5c5c5c6c6c2d5c3c3d5c5c4c4e4c8b9c9d7c9d6d5e6c2d9d2c8e6d4c5f9d7c6c9e6f2c1b9d2d3e5c1c0c2d5c2e1e5c8c6e5c2d4b9c5c0d7b9c5e4c2c5c1d5b9c5c4c5c1d7e3c6c6b9d7c4f5f5c1d4c3d6d1e1d4d7b9b9d7c1c9d6c7c7e2b9e4c5c5c5c6c6c2d5c3c3d5c5c4c4e4c8b9c9d7c9d6d5e6c2d9d2c8e6d4c5f9d7c6c9e6f2c1b9d2d3e5c1d4c2d5c2e1e5c8c6e5c2d4b9c5c0d7b9c5e4c2c5c1d5b9c5c4c5c1d7e3c6c6b9d7c4f5f5c1d4c3d6d1e1d4d7b9b9d7c1c9d6c7c7e2b9e4c5c5c5c6c6c2d5c3c3d5c5c4c4e4c8b9c9d7c9d6d5e6c2d9d2c8e6d4c5f9d7c6c9e6f2c1b9d2d3e5c1d4c2d5c2e1e5c8c6e5c2d4b9c5c0d7b9c5e4c2c5c1d5b9c5c4c5c1d7e3c6c6f7b6g0b5b2", +"a2a8a8a7b3b9c8c1c1c3c1c3b9c5c5d5c5c8c5d6c8d6c9f5d0d1c5e7c1d4e6d2f4b9c2e3c8d9e6e4b9d9c2d5e0d8e0c5c4c5c1c8d8c2c5c5c4c5e4c5b9b9c1c1d5c1d7c5c5c5c5c5c6c1c4d7f2e6c3d7d1d5d1d1d5f5d5c8d9c8e5c5d7d7c5e6e2b9c5c4c5b9c8c1c1c3c1c3b9c5c5d5c5c8c5d6c8d6c9f5d0d1c5e7c1d4e6d2f4b9c2e3c8d9e6e4b9d9c2d5e0d8e0c5c4c5c1c8d8c2c5c5c4c5e4c5b9b9c1c1d5c1d7c5c5c5c5c5c6c1c4d7f2e6c3d7d1d5d1d1d5f5d5c8d9c8e5c5d7d7c5e6e2b9c5c4c5b9c8c1c1c3c1c3b9c5c5d5c5c8c5d6c8d6c9f5d0d1c5e7c1d4e6d2f4b9c2e3c8d9e6e4b9d9c2d5e0d8e0c5c4c5c1c8d8c2c5c5c4c5e4c5b9b9c1c1d5c1d7c5c5c5c5c5c6c1c4d7f2e6c3d7d1d5d1d1d5f5d5c8d9c8e5c5d7d7c5e6e2b9c5c4c5b9c8c1c1c3c1c3b9c5c5d5c5c8c5d6c8d6c9f5d0d1c5e7c1d4e6d2f4b9c2e3c8d9e6e4b9d9c2d5e0d8e0c5c4c5c1c8d8c2c5c5c4c5e4c5b9b9c1c1d5c1d7c5c5c5c5c5c6c1c4b6g1e8g0b2", +"a2a8a8b0b3c4c4e0c1d7b9b9c5c5c4c4c2c1d7d6c9e3c6c7c0e5c2d6e6d4e5d2d2c9d7e6d7b9c1b9d2c6d0d4d8c4d8c5e4c8c6e5c4d5c5c5c5c5b9d7c4c4c5c4c1c4c5d4b9d7c5c5c1e5c6d7c1e5c0d4c4d4c8c7e1d8d4d6c7d7e5c8c1d7c1e2b9c5b9e2c5c4c4e0c1d7b9b9c5c5c4c4c2c1d7d6c9e3c6c7c0e5c2d6e6d4e5d2d2c9d7e6d7b9c1b9d2c6d0d4d8c4d8c5e4c8c6e5c4d5c5c5c5c5b9d7c4c4c5c4c1c4c5d4b9d7c5c5c1e5c6d7c1e5c0d4c4d4c8c7e1d8d4d6c7d7e5c8c1d7c1e2b9c5b9e2c5c4c4e0c1d7b9b9c5c5c4c4c2c1d7d6c9e3c6c7c0e5c2d6e6d4e5d2d2c9d7e6d7b9c1b9d2c6d0d4d8c4d8c5e4c8c6e5c4d5c5c5c5c5b9d7c4c4c5c4c1c4c5d4b9d7c5c5c1e5c6d7c1e5c0d4c4d4c8c7e1d8d4d6c7d7e5c8c1d7c1e2b9c5b9e2c5c4c4e0c1d7b9b9c5c5c4c4c2c1d7d6c9e3c6c7c0e5c2d6e6d4e5d2d2c9d7e6d7b9c1b9d2c6d0d4d8c4d8c5e4c8c6e5c4d5c5c5c5c5b9d7c4c4c5c4c1c4c5d4b9d7c5c5c1e5c6b6e8e8e8b2", +"a2a8a8a7b3c2c4c4d7f2b9c4c5c1c4c4c5c4c5c9d7e3c2c5c3e5e6c6c0f5d4b9e4d7c2c5c1e2c2g2e2e5c1c1e0b9c4c5b9c8c6e1c2e0c2c4d7c5d7b9b9c4c1c1c5b9c5e4c5b9d7c5e5c1d1e4c1e5e4c3d4d7e3d7f6d5d7d6c8e6c5c8c1e6e4b9c5d7d7c4c8c2c4c4d7f2b9c4c5c1c4c4c5c4c5c9d7e3c2c5c3e5e6c6c0f5d4b9e4d7c2c5c1e2c2g2e2e5c1c1e0b9c4c5b9c8c6e1c2e0c2c4d7c5d7b9b9c4c1c1c5b9c5e4c5b9d7c5e5c1d1e4c1e5e4c3d4d7e3d7f6d5d7d6c8e6c5c8c1e6e4b9c5d7d7c4c8c2c4c4d7f2b9c4c5c1c4c4c5c4c5c9d7e3c2c5c3e5e6c6c0f5d4b9e4d7c2c5c1e2c2g2e2e5c1c1e0b9c4c5b9c8c6e1c2e0c2c4d7c5d7b9b9c4c1c1c5b9c5e4c5b9d7c5e5c1d1e4c1e5e4c3d4d7e3d7f6d5d7d6c8e6c5c8c1e6e4b9c5d7d7c4c8c2c4c4d7f2b9c4c5c1c4c4c5c4c5c9d7e3c2c5c3e5e6c6c0f5d4b9e4d7c2c5c1e2c2g2e2e5c1c1e0b9c4c5b9c8c6e1c2e0c2c4d7c5d7b9b9c4c1c1c5b9c5e4c5b9d7c5e5c1d1f0e8f8f0b2", +"a2a8a7a7b3c2d7b9d7d4c5c4c1c4c5c1c0c1c4c5c2c1e5c9c5e6c1c2e6g3f5e6c6e6c6c2d7e4c3c2e2d0c4d4e0c5c5c5c5c2d0c4c4e1c1c1c4d7b9d7c5c1d8c4c5c4b9c5d7c1d7c1e5c7e2b9e6c2f3c1d1c8c8c2c4g3d7c7c2d1d7e5e6b9d7c5c4c5c4c4c8c2d7b9d7d4c5c4c1c4c5c1c0c1c4c5c2c1e5c9c5e6c1c2e6g3f5e6c6e6c6c2d7e4c3c2e2d0c4d4e0c5c5c5c5c2d0c4c4e1c1c1c4d7b9d7c5c1d8c4c5c4b9c5d7c1d7c1e5c7e2b9e6c2f3c1d1c8c8c2c4g3d7c7c2d1d7e5e6b9d7c5c4c5c4c4c8c2d7b9d7d4c5c4c1c4c5c1c0c1c4c5c2c1e5c9c5e6c1c2e6g3f5e6c6e6c6c2d7e4c3c2e2d0c4d4e0c5c5c5c5c2d0c4c4e1c1c1c4d7b9d7c5c1d8c4c5c4b9c5d7c1d7c1e5c7e2b9e6c2f3c1d1c8c8c2c4g3d7c7c2d1d7e5e6b9d7c5c4c5c4c4c8c2d7b9d7d4c5c4c1c4c5c1c0c1c4c5c2c1e5c9c5e6c1c2e6g3f5e6c6e6c6c2d7e4c3c2e2d0c4d4e0c5c5c5c5c2d0c4c4e1c1c1c4d7b9d7c5c1d8c4c5c4b9c5d7c1d7c1e5c7e2f7e8b6g1b2", +"a2a7a9a7b3c6c2c2d5c5c5c5e2c2c5d7c5c1c2d7c6d7d7c8c9e6c1e3e6c3d5c1c6d0f6d5c8b9c4c5d7c1c1e0e1c5c5c5c4c2c8c2d5e0c1c1c4d7b9b9d5d5g3d7c1c4c5d7c5c4b9d7c5c5e2d3c0c2e5e6e5c7c9d7d1d5d7d0c6e6c9c1c1e2c5c5c5c4c5c6c2c6c2c2d5c5c5c5e2c2c5d7c5c1c2d7c6d7d7c8c9e6c1e3e6c3d5c1c6d0f6d5c8b9c4c5d7c1c1e0e1c5c5c5c4c2c8c2d5e0c1c1c4d7b9b9d5d5g3d7c1c4c5d7c5c4b9d7c5c5e2d3c0c2e5e6e5c7c9d7d1d5d7d0c6e6c9c1c1e2c5c5c5c4c5c6c2c6c2c2d5c5c5c5e2c2c5d7c5c1c2d7c6d7d7c8c9e6c1e3e6c3d5c1c6d0f6d5c8b9c4c5d7c1c1e0e1c5c5c5c4c2c8c2d5e0c1c1c4d7b9b9d5d5g3d7c1c4c5d7c5c4b9d7c5c5e2d3c0c2e5e6e5c7c9d7d1d5d7d0c6e6c9c1c1e2c5c5c5c4c5c6c2c6c2c2d5c5c5c5e2c2c5d7c5c1c2d7c6d7d7c8c9e6c1e3e6c3d5c1c6d0f6d5c8b9c4c5d7c1c1e0e1c5c5c5c4c2c8c2d5e0c1c1c4d7b9b9d5d5g3d7c1c4c5d7c5c4b9d7c5c5e2f7f8b6e8b2", +"a2a7a7a7b3c2c1d5c5c5c4d7c5c5c5b9c4c4c5d7c6c2e6c1c5e5d4d6e5e5c6d0c6d7g3f6e4e4c2d4c1c1d0f1e0c4c5c5c4c8c6g2e1c4c1d5c5c4e2c5c3c4d5c4c5c5d7b9c5d7c5d7c5e4d6d0c1c5c1c0c8c7e3c6f5g2e5e5e3e3c5c4c1b9c4c1c1c4c1c4c1c2c1d5c5c5c4d7c5c5c5b9c4c4c5d7c6c2e6c1c5e5d4d6e5e5c6d0c6d7g3f6e4e4c2d4c1c1d0f1e0c4c5c5c4c8c6g2e1c4c1d5c5c4e2c5c3c4d5c4c5c5d7b9c5d7c5d7c5e4d6d0c1c5c1c0c8c7e3c6f5g2e5e5e3e3c5c4c1b9c4c1c1c4c1c4c1c2c1d5c5c5c4d7c5c5c5b9c4c4c5d7c6c2e6c1c5e5d4d6e5e5c6d0c6d7g3f6e4e4c2d4c1c1d0f1e0c4c5c5c4c8c6g2e1c4c1d5c5c4e2c5c3c4d5c4c5c5d7b9c5d7c5d7c5e4d6d0c1c5c1c0c8c7e3c6f5g2e5e5e3e3c5c4c1b9c4c1c1c4c1c4c1c2c1d5c5c5c4d7c5c5c5b9c4c4c5d7c6c2e6c1c5e5d4d6e5e5c6d0c6d7g3f6e4e4c2d4c1c1d0f1e0c4c5c5c4c8c6g2e1c4c1d5c5c4e2c5c3c4d5c4c5c5d7b9c5d7c5d7c5e4d6e8e8b6e8b2", +"a2a6a7a8b3c6c5c4c1c5d7e2d7c4c5c5c4c5c6c2d7c2e6d7c6d1c1c0c1d1d4c3d8c3c1e5d2e4e2f9c4c8c6c5c1d5c5c4c4c8d7g2c2c1d5c1d7c5e4c5c5d5c1d7c5c5c5c1c1d7c5c5b9c7e2c4c4d3e7c7c7c2c6d0d4f5g2b9e3c2d2c4d1d7c5c4e0e0c1c2c6c2c5c4c1c5d7e2d7c4c5c5c4c5c6c2d7c2e6d7c6d1c1c0c1d1d4c3d8c3c1e5d2e4e2f9c4c8c6c5c1d5c5c4c4c8d7g2c2c1d5c1d7c5e4c5c5d5c1d7c5c5c5c1c1d7c5c5b9c7e2c4c4d3e7c7c7c2c6d0d4f5g2b9e3c2d2c4d1d7c5c4e0e0c1c2c6c2c5c4c1c5d7e2d7c4c5c5c4c5c6c2d7c2e6d7c6d1c1c0c1d1d4c3d8c3c1e5d2e4e2f9c4c8c6c5c1d5c5c4c4c8d7g2c2c1d5c1d7c5e4c5c5d5c1d7c5c5c5c1c1d7c5c5b9c7e2c4c4d3e7c7c7c2c6d0d4f5g2b9e3c2d2c4d1d7c5c4e0e0c1c2c6c2c5c4c1c5d7e2d7c4c5c5c4c5c6c2d7c2e6d7c6d1c1c0c1d1d4c3d8c3c1e5d2e4e2f9c4c8c6c5c1d5c5c4c4c8d7g2c2c1d5c1d7c5e4c5c5d5c1d7c5c5c5c1c1d7c5c5b9c7e2f8f8f7f0b2", +"a2a6a6a7b3c2b9d5c4e4e4c5e4c5b9c4b9c4c1c9d0c1d1e6d7d7d5c5e5f6e0d8d8c1e6d2e4e2f2d7c5c5c5c4c1d5c1c4c2c8e5c1c4d5d5c4e4b9c5d7c4c1c1c0c5c5d7c1c4c5c5d7c7e7d9c4c3d2f4d3d9b9c7c5f6f5e4d2c5c4f4e6d1d7c5c4e0g2c3c1c6c2b9d5c4e4e4c5e4c5b9c4b9c4c1c9d0c1d1e6d7d7d5c5e5f6e0d8d8c1e6d2e4e2f2d7c5c5c5c4c1d5c1c4c2c8e5c1c4d5d5c4e4b9c5d7c4c1c1c0c5c5d7c1c4c5c5d7c7e7d9c4c3d2f4d3d9b9c7c5f6f5e4d2c5c4f4e6d1d7c5c4e0g2c3c1c6c2b9d5c4e4e4c5e4c5b9c4b9c4c1c9d0c1d1e6d7d7d5c5e5f6e0d8d8c1e6d2e4e2f2d7c5c5c5c4c1d5c1c4c2c8e5c1c4d5d5c4e4b9c5d7c4c1c1c0c5c5d7c1c4c5c5d7c7e7d9c4c3d2f4d3d9b9c7c5f6f5e4d2c5c4f4e6d1d7c5c4e0g2c3c1c6c2b9d5c4e4e4c5e4c5b9c4b9c4c1c9d0c1d1e6d7d7d5c5e5f6e0d8d8c1e6d2e4e2f2d7c5c5c5c4c1d5c1c4c2c8e5c1c4d5d5c4e4b9c5d7c4c1c1c0c5c5d7c1c4c5c5d7c7e7b9g0g0g1g4b2", +"a2a7a7a7b3d0c4c5b9c1c4c1b9c1b9c3c2e3c2c8c0e5g2d0c2c6g2c5e5c3d8c4d0d6c0d3d2c2e4b9g5e5c5c4c4c5c1e5c5c2e5c5c4c4c1b9c4e4c5c5c4c4c4c1d7c5c5c4c5c5c5d7c5d7d7d1d4d2d2d3b9c7c7c8c2c1f2f3b9d5b9c1e3c8c7c5e5d1d1c1c2c1c4c5b9c1c4c1b9c1b9c3c2e3c2c8c0e5g2d0c2c6g2c5e5c3d8c4d0d6c0d3d2c2e4b9g5e5c5c4c4c5c1e5c5c2e5c5c4c4c1b9c4e4c5c5c4c4c4c1d7c5c5c4c5c5c5d7c5d7d7d1d4d2d2d3b9c7c7c8c2c1f2f3b9d5b9c1e3c8c7c5e5d1d1c1c2c1c4c5b9c1c4c1b9c1b9c3c2e3c2c8c0e5g2d0c2c6g2c5e5c3d8c4d0d6c0d3d2c2e4b9g5e5c5c4c4c5c1e5c5c2e5c5c4c4c1b9c4e4c5c5c4c4c4c1d7c5c5c4c5c5c5d7c5d7d7d1d4d2d2d3b9c7c7c8c2c1f2f3b9d5b9c1e3c8c7c5e5d1d1c1c2c1c4c5b9c1c4c1b9c1b9c3c2e3c2c8c0e5g2d0c2c6g2c5e5c3d8c4d0d6c0d3d2c2e4b9g5e5c5c4c4c5c1e5c5c2e5c5c4c4c1b9c4e4c5c5c4c4c4c1d7c5c5c4c5c5c5d7c5d7d7f8g0g1g4b2", +"a2a6a7a7b3c2d5c3c1c5c5c1c5c1c4d7e3e3c6c3c1c0c4d1c6c6d4e5c0d4c1c6c5c9b9g6d3e2b9b9b9c5c5c1c4c3c5e5c3d1e5c4c1e0c2b9c0b9c5b9d5d5d4c1c1d7b9c4d7c5d7b9c5d7c8d5c0d6b9d3b9c7c5c8c6d7e4c5c5b9d6d7c2e6c1e5g2c4d1c1c4c2d5c3c1c5c5c1c5c1c4d7e3e3c6c3c1c0c4d1c6c6d4e5c0d4c1c6c5c9b9g6d3e2b9b9b9c5c5c1c4c3c5e5c3d1e5c4c1e0c2b9c0b9c5b9d5d5d4c1c1d7b9c4d7c5d7b9c5d7c8d5c0d6b9d3b9c7c5c8c6d7e4c5c5b9d6d7c2e6c1e5g2c4d1c1c4c2d5c3c1c5c5c1c5c1c4d7e3e3c6c3c1c0c4d1c6c6d4e5c0d4c1c6c5c9b9g6d3e2b9b9b9c5c5c1c4c3c5e5c3d1e5c4c1e0c2b9c0b9c5b9d5d5d4c1c1d7b9c4d7c5d7b9c5d7c8d5c0d6b9d3b9c7c5c8c6d7e4c5c5b9d6d7c2e6c1e5g2c4d1c1c4c2d5c3c1c5c5c1c5c1c4d7e3e3c6c3c1c0c4d1c6c6d4e5c0d4c1c6c5c9b9g6d3e2b9b9b9c5c5c1c4c3c5e5c3d1e5c4c1e0c2b9c0b9c5b9d5d5d4c1c1d7b9c4d7c5d7b9c5d7c8b5g0f0e9b2", +"a2a6a8a7b3b9c1c2c2e4c5c1c0d5c6c9d6c6c6c0c1c4g2d1c6d1c4c0d4c4e6e6e3c2c9c8g6e4c5b9b9d7c5c2c5c2c3d8e1d4c8e0d8d5b9c5d7b9c5d7c5c1c4c1c4e2c5c5d7c5d7d7d7c8b9f6c3d9b9e7c8b9c7c5c5c6b9e4c5b9d3d7c2c0c3d5g2c4c2c4c5b9c1c2c2e4c5c1c0d5c6c9d6c6c6c0c1c4g2d1c6d1c4c0d4c4e6e6e3c2c9c8g6e4c5b9b9d7c5c2c5c2c3d8e1d4c8e0d8d5b9c5d7b9c5d7c5c1c4c1c4e2c5c5d7c5d7d7d7c8b9f6c3d9b9e7c8b9c7c5c5c6b9e4c5b9d3d7c2c0c3d5g2c4c2c4c5b9c1c2c2e4c5c1c0d5c6c9d6c6c6c0c1c4g2d1c6d1c4c0d4c4e6e6e3c2c9c8g6e4c5b9b9d7c5c2c5c2c3d8e1d4c8e0d8d5b9c5d7b9c5d7c5c1c4c1c4e2c5c5d7c5d7d7d7c8b9f6c3d9b9e7c8b9c7c5c5c6b9e4c5b9d3d7c2c0c3d5g2c4c2c4c5b9c1c2c2e4c5c1c0d5c6c9d6c6c6c0c1c4g2d1c6d1c4c0d4c4e6e6e3c2c9c8g6e4c5b9b9d7c5c2c5c2c3d8e1d4c8e0d8d5b9c5d7b9c5d7c5c1c4c1c4e2c5c5d7c5d7d7d7c8b9g0g0f0f7b2", +"a2a7a9a7b3c4c5f2e5d7c5d5c4c1c1c6c6c0d5c5c0d5d5d5c8c2d4c2d0e5c1e6c6e6c0c1e4e4c2c5d7c5c5c5d5c4c5c5c3c2c1e0d8c1b9b9b9d2e4e4c5c4c5c5c5b9c4c5d7c5d7b9c8d7d7c7c5c5c6b9d7b9c5c7c2e6e2b9d7c5d9e6c1d4c3e6d1d1c2c4c5c4c5f2e5d7c5d5c4c1c1c6c6c0d5c5c0d5d5d5c8c2d4c2d0e5c1e6c6e6c0c1e4e4c2c5d7c5c5c5d5c4c5c5c3c2c1e0d8c1b9b9b9d2e4e4c5c4c5c5c5b9c4c5d7c5d7b9c8d7d7c7c5c5c6b9d7b9c5c7c2e6e2b9d7c5d9e6c1d4c3e6d1d1c2c4c5c4c5f2e5d7c5d5c4c1c1c6c6c0d5c5c0d5d5d5c8c2d4c2d0e5c1e6c6e6c0c1e4e4c2c5d7c5c5c5d5c4c5c5c3c2c1e0d8c1b9b9b9d2e4e4c5c4c5c5c5b9c4c5d7c5d7b9c8d7d7c7c5c5c6b9d7b9c5c7c2e6e2b9d7c5d9e6c1d4c3e6d1d1c2c4c5c4c5f2e5d7c5d5c4c1c1c6c6c0d5c5c0d5d5d5c8c2d4c2d0e5c1e6c6e6c0c1e4e4c2c5d7c5c5c5d5c4c5c5c3c2c1e0d8c1b9b9b9d2e4e4c5c4c5c5c5b9c4c5d7c5d7b9c8d7c7b6b6e8b6b2", +"a2a7a6a7b3c5d5c4c5d5b9d7c4c6d1c2c2c4d5b9c4d5d8e5b9d7d0d7c0e5c1c6e3c5e5c1e4e4d5c4e2b9c5c1c4d5e0e1c2c2e6d5d5d4b9b9c0e4b9b9c4e2e4c5e2c5c5c1d7c4e4b9c5e6e3d7c5e6d3e2c2d7e5b9c6c5d7c5c5f4b9c1d1c0d1c1d1c1g2c1c4c5d5c4c5d5b9d7c4c6d1c2c2c4d5b9c4d5d8e5b9d7d0d7c0e5c1c6e3c5e5c1e4e4d5c4e2b9c5c1c4d5e0e1c2c2e6d5d5d4b9b9c0e4b9b9c4e2e4c5e2c5c5c1d7c4e4b9c5e6e3d7c5e6d3e2c2d7e5b9c6c5d7c5c5f4b9c1d1c0d1c1d1c1g2c1c4c5d5c4c5d5b9d7c4c6d1c2c2c4d5b9c4d5d8e5b9d7d0d7c0e5c1c6e3c5e5c1e4e4d5c4e2b9c5c1c4d5e0e1c2c2e6d5d5d4b9b9c0e4b9b9c4e2e4c5e2c5c5c1d7c4e4b9c5e6e3d7c5e6d3e2c2d7e5b9c6c5d7c5c5f4b9c1d1c0d1c1d1c1g2c1c4c5d5c4c5d5b9d7c4c6d1c2c2c4d5b9c4d5d8e5b9d7d0d7c0e5c1c6e3c5e5c1e4e4d5c4e2b9c5c1c4d5e0e1c2c2e6d5d5d4b9b9c0e4b9b9c4e2e4c5e2c5c5c1d7c4e4b9c5e6e3b6e8b8f7b2", +"a2a7a7a7b3c0c0c5c4d5d5c1d5c6c1e6c5f5d5c4d7c2e6e6d6d6c5d1c1c1e6c0e3e3d0c2e4b9c4b9c5c4c5b9c4e0e0e1c4e5c6d5d5c5c0d7e4b9b9b9c5c5e2b9c4c5c4c5d7c5e2e2c5d7d7c5c1c5g6d3e7c2b9d7c6c7e2c5d7f9d6c1d4d4d5e5d1e5c4c1b9c0c0c5c4d5d5c1d5c6c1e6c5f5d5c4d7c2e6e6d6d6c5d1c1c1e6c0e3e3d0c2e4b9c4b9c5c4c5b9c4e0e0e1c4e5c6d5d5c5c0d7e4b9b9b9c5c5e2b9c4c5c4c5d7c5e2e2c5d7d7c5c1c5g6d3e7c2b9d7c6c7e2c5d7f9d6c1d4d4d5e5d1e5c4c1b9c0c0c5c4d5d5c1d5c6c1e6c5f5d5c4d7c2e6e6d6d6c5d1c1c1e6c0e3e3d0c2e4b9c4b9c5c4c5b9c4e0e0e1c4e5c6d5d5c5c0d7e4b9b9b9c5c5e2b9c4c5c4c5d7c5e2e2c5d7d7c5c1c5g6d3e7c2b9d7c6c7e2c5d7f9d6c1d4d4d5e5d1e5c4c1b9c0c0c5c4d5d5c1d5c6c1e6c5f5d5c4d7c2e6e6d6d6c5d1c1c1e6c0e3e3d0c2e4b9c4b9c5c4c5b9c4e0e0e1c4e5c6d5d5c5c0d7e4b9b9b9c5c5e2b9c4c5c4c5d7c5e2e2c5d7d7e8b8e8g1b2", +"a1a9a7a6b3b9c5c1c4c4d8d5c2c6c5d0c2g2d5c5c9c2d7c6c8c8c8g7c1e6d1c0c5c2c5d4d0e4e2c5c5c5c9d7c4d5e1d5c1e5d1e0c5c4c5c5c5c5c4b9d7c5e2e2c2c5c1c4c5b9d7b9e6d7c5d7c5e5d2b9d6e5d7d6c5d7e7c8b9c7c7c1e5d5d1c0c3c2d1d5c4b9c5c1c4c4d8d5c2c6c5d0c2g2d5c5c9c2d7c6c8c8c8g7c1e6d1c0c5c2c5d4d0e4e2c5c5c5c9d7c4d5e1d5c1e5d1e0c5c4c5c5c5c5c4b9d7c5e2e2c2c5c1c4c5b9d7b9e6d7c5d7c5e5d2b9d6e5d7d6c5d7e7c8b9c7c7c1e5d5d1c0c3c2d1d5c4b9c5c1c4c4d8d5c2c6c5d0c2g2d5c5c9c2d7c6c8c8c8g7c1e6d1c0c5c2c5d4d0e4e2c5c5c5c9d7c4d5e1d5c1e5d1e0c5c4c5c5c5c5c4b9d7c5e2e2c2c5c1c4c5b9d7b9e6d7c5d7c5e5d2b9d6e5d7d6c5d7e7c8b9c7c7c1e5d5d1c0c3c2d1d5c4b9c5c1c4c4d8d5c2c6c5d0c2g2d5c5c9c2d7c6c8c8c8g7c1e6d1c0c5c2c5d4d0e4e2c5c5c5c9d7c4d5e1d5c1e5d1e0c5c4c5c5c5c5c4b9d7c5e2e2c2c5c1c4c5b9d7b9e6d7c5b6e8e8g1b2", +"a2a7a7a7b3b9c5c4c1c1c4c4c4d7e6d0c1f5d5c6c9d7e3c2c2d7c2f1d7d7c4e5d7c4e4d7c4e2e2c5c4d7d9d7d5c4e0d5e0e5c8e4c5c5c2c5e4c5c5c5b9d7e2b9c1c4e2b9b9e2b9c1c5d6d9e5e5c2b9c7c8c6e5c7e4c7b9c7d2d3c1e5c0c3c3c4d1d1c4c4c5b9c5c4c1c1c4c4c4d7e6d0c1f5d5c6c9d7e3c2c2d7c2f1d7d7c4e5d7c4e4d7c4e2e2c5c4d7d9d7d5c4e0d5e0e5c8e4c5c5c2c5e4c5c5c5b9d7e2b9c1c4e2b9b9e2b9c1c5d6d9e5e5c2b9c7c8c6e5c7e4c7b9c7d2d3c1e5c0c3c3c4d1d1c4c4c5b9c5c4c1c1c4c4c4d7e6d0c1f5d5c6c9d7e3c2c2d7c2f1d7d7c4e5d7c4e4d7c4e2e2c5c4d7d9d7d5c4e0d5e0e5c8e4c5c5c2c5e4c5c5c5b9d7e2b9c1c4e2b9b9e2b9c1c5d6d9e5e5c2b9c7c8c6e5c7e4c7b9c7d2d3c1e5c0c3c3c4d1d1c4c4c5b9c5c4c1c1c4c4c4d7e6d0c1f5d5c6c9d7e3c2c2d7c2f1d7d7c4e5d7c4e4d7c4e2e2c5c4d7d9d7d5c4e0d5e0e5c8e4c5c5c2c5e4c5c5c5b9d7e2b9c1c4e2b9b9e2b9c1c5d6d9e8e8e8f0b2", +"a1a7a7a7b3c5c0c2c1d5c5d7d4c6c2e6e1c4c1b9c9c6e3c6c2d9e4f1b9d7b9e5d6c4e4d7c4e2e2c5c2d7c6c4d5e0d5e0c5b9f2e4b9c5c1b9b9d5c1c4e4b9b9c5c4c5c5d7c5e2b9c5d7d6d7c1e6d7c5d7c6e5d7e7d7c5b9c5e2b9d7c0c3d1d1d1d5c0c3c1c4c5c0c2c1d5c5d7d4c6c2e6e1c4c1b9c9c6e3c6c2d9e4f1b9d7b9e5d6c4e4d7c4e2e2c5c2d7c6c4d5e0d5e0c5b9f2e4b9c5c1b9b9d5c1c4e4b9b9c5c4c5c5d7c5e2b9c5d7d6d7c1e6d7c5d7c6e5d7e7d7c5b9c5e2b9d7c0c3d1d1d1d5c0c3c1c4c5c0c2c1d5c5d7d4c6c2e6e1c4c1b9c9c6e3c6c2d9e4f1b9d7b9e5d6c4e4d7c4e2e2c5c2d7c6c4d5e0d5e0c5b9f2e4b9c5c1b9b9d5c1c4e4b9b9c5c4c5c5d7c5e2b9c5d7d6d7c1e6d7c5d7c6e5d7e7d7c5b9c5e2b9d7c0c3d1d1d1d5c0c3c1c4c5c0c2c1d5c5d7d4c6c2e6e1c4c1b9c9c6e3c6c2d9e4f1b9d7b9e5d6c4e4d7c4e2e2c5c2d7c6c4d5e0d5e0c5b9f2e4b9c5c1b9b9d5c1c4e4b9b9c5c4c5c5d7c5e2b9c5d7d6d7b8b8b6b6b2", +"a2a7a7a6b3c5c4c2c1d5c5e2d5c1c2d1c3c0c4c2c6c2c2c2c2d7c5f1c2d7b9e4d7c2c5c6e5b9c2d7c9c6c5c1d5d8e0d8f2b9b9e4b9b9b9c0c5c4d7b9c5e2b9c4d4d7c1c5d7e2b9c5c4d7c5e5d7d7c7c2d7c5d3d3d7c1e2c5d7d9c2c0c0c5d4d4d1c0e5d5c4c5c4c2c1d5c5e2d5c1c2d1c3c0c4c2c6c2c2c2c2d7c5f1c2d7b9e4d7c2c5c6e5b9c2d7c9c6c5c1d5d8e0d8f2b9b9e4b9b9b9c0c5c4d7b9c5e2b9c4d4d7c1c5d7e2b9c5c4d7c5e5d7d7c7c2d7c5d3d3d7c1e2c5d7d9c2c0c0c5d4d4d1c0e5d5c4c5c4c2c1d5c5e2d5c1c2d1c3c0c4c2c6c2c2c2c2d7c5f1c2d7b9e4d7c2c5c6e5b9c2d7c9c6c5c1d5d8e0d8f2b9b9e4b9b9b9c0c5c4d7b9c5e2b9c4d4d7c1c5d7e2b9c5c4d7c5e5d7d7c7c2d7c5d3d3d7c1e2c5d7d9c2c0c0c5d4d4d1c0e5d5c4c5c4c2c1d5c5e2d5c1c2d1c3c0c4c2c6c2c2c2c2d7c5f1c2d7b9e4d7c2c5c6e5b9c2d7c9c6c5c1d5d8e0d8f2b9b9e4b9b9b9c0c5c4d7b9c5e2b9c4d4d7c1c5d7e2b9c5c4d7c5e8b6b6b6b2", +"a2a7a6a7b3c5c5c1c2d8c1d7c1d5c1d1d1f6f5c2c1d1c3d7d7c5d8f1c6c9c6d7d7d6c9d9d5e5c5c2d7d7c4d8c1c4d9d2b9c8f2c5e4c2b9c4c4c5c2c5b9c5e2c1e5c5c1c4d7b9b9d7d7e7c9e2b9e2d3d3b9b9g6e4e2b9d7e5c8d3b9c0c0d7d7d1c2c0g2c4c2c5c5c1c2d8c1d7c1d5c1d1d1f6f5c2c1d1c3d7d7c5d8f1c6c9c6d7d7d6c9d9d5e5c5c2d7d7c4d8c1c4d9d2b9c8f2c5e4c2b9c4c4c5c2c5b9c5e2c1e5c5c1c4d7b9b9d7d7e7c9e2b9e2d3d3b9b9g6e4e2b9d7e5c8d3b9c0c0d7d7d1c2c0g2c4c2c5c5c1c2d8c1d7c1d5c1d1d1f6f5c2c1d1c3d7d7c5d8f1c6c9c6d7d7d6c9d9d5e5c5c2d7d7c4d8c1c4d9d2b9c8f2c5e4c2b9c4c4c5c2c5b9c5e2c1e5c5c1c4d7b9b9d7d7e7c9e2b9e2d3d3b9b9g6e4e2b9d7e5c8d3b9c0c0d7d7d1c2c0g2c4c2c5c5c1c2d8c1d7c1d5c1d1d1f6f5c2c1d1c3d7d7c5d8f1c6c9c6d7d7d6c9d9d5e5c5c2d7d7c4d8c1c4d9d2b9c8f2c5e4c2b9c4c4c5c2c5b9c5e2c1e5c5c1c4d7b9b9d7d7e7c9e9f7e9f7b2", +"a2a7a6a9b3c5b9c6c1d8c2d6e6c2c3d4d7e1d8c2c6d5d1d5d1c4c1d7c6d6d7c9c9c8e2d9d5e5b9c5c5c5c4c4d5d6e4b9c5e4c5c5b9c4c4c1c1e2c5c5d7e2e4c4e4c5c1c4f2b9d7c5b9b9c5b9c9e7d3b9e4e4f2e2e2e3d7e5d7d9e6c1d4c5c2c1c2c0f5e6c4c5b9c6c1d8c2d6e6c2c3d4d7e1d8c2c6d5d1d5d1c4c1d7c6d6d7c9c9c8e2d9d5e5b9c5c5c5c4c4d5d6e4b9c5e4c5c5b9c4c4c1c1e2c5c5d7e2e4c4e4c5c1c4f2b9d7c5b9b9c5b9c9e7d3b9e4e4f2e2e2e3d7e5d7d9e6c1d4c5c2c1c2c0f5e6c4c5b9c6c1d8c2d6e6c2c3d4d7e1d8c2c6d5d1d5d1c4c1d7c6d6d7c9c9c8e2d9d5e5b9c5c5c5c4c4d5d6e4b9c5e4c5c5b9c4c4c1c1e2c5c5d7e2e4c4e4c5c1c4f2b9d7c5b9b9c5b9c9e7d3b9e4e4f2e2e2e3d7e5d7d9e6c1d4c5c2c1c2c0f5e6c4c5b9c6c1d8c2d6e6c2c3d4d7e1d8c2c6d5d1d5d1c4c1d7c6d6d7c9c9c8e2d9d5e5b9c5c5c5c4c4d5d6e4b9c5e4c5c5b9c4c4c1c1e2c5c5d7e2e4c4e4c5c1c4f2b9d7c5b9b9c5f7f0e9g1b2", +"a2a7a6a7b3c5b9c2c2c1c1c2c2e3d0c3c8d8c2c2c4d5d5d1d5d4c1c5d7c9c5c8d6e7d9b9c4d0d4c2c5c4c2c5c1b9e4b9c9d7e3c5c6c6c1c1d1c1c5d7d6c7e3e6c6c5c1c5b9c5d2d7d7c5d7c5d7e7d2f3b9b9e2f2d7c2c1c4d7f2e5f6e6c5c6c2c0c4f5c1d8c5b9c2c2c1c1c2c2e3d0c3c8d8c2c2c4d5d5d1d5d4c1c5d7c9c5c8d6e7d9b9c4d0d4c2c5c4c2c5c1b9e4b9c9d7e3c5c6c6c1c1d1c1c5d7d6c7e3e6c6c5c1c5b9c5d2d7d7c5d7c5d7e7d2f3b9b9e2f2d7c2c1c4d7f2e5f6e6c5c6c2c0c4f5c1d8c5b9c2c2c1c1c2c2e3d0c3c8d8c2c2c4d5d5d1d5d4c1c5d7c9c5c8d6e7d9b9c4d0d4c2c5c4c2c5c1b9e4b9c9d7e3c5c6c6c1c1d1c1c5d7d6c7e3e6c6c5c1c5b9c5d2d7d7c5d7c5d7e7d2f3b9b9e2f2d7c2c1c4d7f2e5f6e6c5c6c2c0c4f5c1d8c5b9c2c2c1c1c2c2e3d0c3c8d8c2c2c4d5d5d1d5d4c1c5d7c9c5c8d6e7d9b9c4d0d4c2c5c4c2c5c1b9e4b9c9d7e3c5c6c6c1c1d1c1c5d7d6c7e3e6c6c5c1c5b9c5d2d7d7c5d7b8b6e9g1b2", +"a2a6a7a9a5c5b9c6c6d8c1c1d7e5e6d5c4d8c6c6d5d4d1d5d1d7c5c1e3c5c1c2c8e7e4b9e4e0d5d8c5b9e4b9f2b9c5e2d7d7c5e6e6e6c1c6c2e3c5e3d6c9d6c6c1c4c4c1c1b9d7e2c5d7c5d7e7e4b9e2b9d2e3c1c2c6d7d0d9e5d1c3c5c2d7c6c0c3c4c2e0c5b9c6c6d8c1c1d7e5e6d5c4d8c6c6d5d4d1d5d1d7c5c1e3c5c1c2c8e7e4b9e4e0d5d8c5b9e4b9f2b9c5e2d7d7c5e6e6e6c1c6c2e3c5e3d6c9d6c6c1c4c4c1c1b9d7e2c5d7c5d7e7e4b9e2b9d2e3c1c2c6d7d0d9e5d1c3c5c2d7c6c0c3c4c2e0c5b9c6c6d8c1c1d7e5e6d5c4d8c6c6d5d4d1d5d1d7c5c1e3c5c1c2c8e7e4b9e4e0d5d8c5b9e4b9f2b9c5e2d7d7c5e6e6e6c1c6c2e3c5e3d6c9d6c6c1c4c4c1c1b9d7e2c5d7c5d7e7e4b9e2b9d2e3c1c2c6d7d0d9e5d1c3c5c2d7c6c0c3c4c2e0c5b9c6c6d8c1c1d7e5e6d5c4d8c6c6d5d4d1d5d1d7c5c1e3c5c1c2c8e7e4b9e4e0d5d8c5b9e4b9f2b9c5e2d7d7c5e6e6e6c1c6c2e3c5e3d6c9d6c6c1c4c4c1c1b9d7e2c5d7c5b6e9f0f0b2", +"a2a6a7a9a5d5c4d9c2e6c1c2c5e5c2d1c1d5c1d5d5d1c4c4c1d7c1c9c8e3e5e6c6c2c9d9c5d8d5f5e4c2e4b9e4c5d7f2d7d7c5c1c1c1c1c2d7e3d7e3d6e7b9c2c2c1c1c4b9b9c4e4d7c5c5c9b9c5b9d3f2c5c2d7c2b9d7d0c1e5c0c4d7e5d7c6e5g2d1c2d5d5c4d9c2e6c1c2c5e5c2d1c1d5c1d5d5d1c4c4c1d7c1c9c8e3e5e6c6c2c9d9c5d8d5f5e4c2e4b9e4c5d7f2d7d7c5c1c1c1c1c2d7e3d7e3d6e7b9c2c2c1c1c4b9b9c4e4d7c5c5c9b9c5b9d3f2c5c2d7c2b9d7d0c1e5c0c4d7e5d7c6e5g2d1c2d5d5c4d9c2e6c1c2c5e5c2d1c1d5c1d5d5d1c4c4c1d7c1c9c8e3e5e6c6c2c9d9c5d8d5f5e4c2e4b9e4c5d7f2d7d7c5c1c1c1c1c2d7e3d7e3d6e7b9c2c2c1c1c4b9b9c4e4d7c5c5c9b9c5b9d3f2c5c2d7c2b9d7d0c1e5c0c4d7e5d7c6e5g2d1c2d5d5c4d9c2e6c1c2c5e5c2d1c1d5c1d5d5d1c4c4c1d7c1c9c8e3e5e6c6c2c9d9c5d8d5f5e4c2e4b9e4c5d7f2d7d7c5c1c1c1c1c2d7e3d7e3d6e7b9c2c2c1c1c4b9b9c4e4d7c5c5f0f0b6f0b2", +"a2a7a7a7b3c4d5c2d1d7e6d7c4c2e0d5c1c6c2c4c2c1c1d5d7d7c2d7c5f6g3c1c0c4d9b9f5e5c4d5b9b9d5b9e4e4e4b9c2e3c6c1c1c4d0c2c6e3c9c9c8c9b9c8d7c4c1c4e2c4b9c5e4c5c2b9d7b9d3d2g8d6c2c2e4e2d7d0c6e5e2c1c2c1c1c6c1d1d1c4c1c4d5c2d1d7e6d7c4c2e0d5c1c6c2c4c2c1c1d5d7d7c2d7c5f6g3c1c0c4d9b9f5e5c4d5b9b9d5b9e4e4e4b9c2e3c6c1c1c4d0c2c6e3c9c9c8c9b9c8d7c4c1c4e2c4b9c5e4c5c2b9d7b9d3d2g8d6c2c2e4e2d7d0c6e5e2c1c2c1c1c6c1d1d1c4c1c4d5c2d1d7e6d7c4c2e0d5c1c6c2c4c2c1c1d5d7d7c2d7c5f6g3c1c0c4d9b9f5e5c4d5b9b9d5b9e4e4e4b9c2e3c6c1c1c4d0c2c6e3c9c9c8c9b9c8d7c4c1c4e2c4b9c5e4c5c2b9d7b9d3d2g8d6c2c2e4e2d7d0c6e5e2c1c2c1c1c6c1d1d1c4c1c4d5c2d1d7e6d7c4c2e0d5c1c6c2c4c2c1c1d5d7d7c2d7c5f6g3c1c0c4d9b9f5e5c4d5b9b9d5b9e4e4e4b9c2e3c6c1c1c4d0c2c6e3c9c9c8c9b9c8d7c4c1c4e2c4b9c5e4c5c2f0b6f0e9b2", +"a2a7a6a6a5c1c6d1d5d0d1e0c2d7d7c1c5c9d9g9h0b0d2d5d5d8c6d5d7d1c2c6c1c4c2c1c5c1d5e5c5e4c2c2c2e4b9c5c6c6c1d1c2b1b0h1a5a7g6f2d6c7d6d6d6c1c5c1c4c5c5d7c5d7c5d7e4b9g6e4e2b9c5h2b1h2h2h2h2h2h2h2h2f4e4d1c0d1d4c3d5c1c6d1d5d0d1e0c2d7d7c1c5c9d9c5c5c1c0d5d5d8c6d5d7d1c2c6c1c4c2c1c5c1d5e5c5e4c2c2c2e4b9c5c6c6c1d1d1g9h2h2c3d9g6f2d6c7d6d6d6c1c5c1c4c5c5d7c5d7c5d7e4b9g6e4e2b9c5e2e2e4d0c1c6e5h2h2h2g6d4d1c0d1d4c3d5c1c6d1d5d0d1e0c2d7d7c1c5c9d9c5c5c1c0d5d5d8c6d5d7d1c2c6c1c4c2c1c5c1d5e5c5e4c2c2c2e4b9c5c6c6c1d1d1d4c5c5c0d9g6f2d6c7d6d6d6c1c5c1c4c5c5d7c5d7c5d7e4b9g6e4e2b9c5e2e2e4d0g9h2h2d7c2c1e5c4d1c0d1d4c3d5c1c6d1d5d0d1e0c2d7d7c1c5c9d9c5c5c1c0d5d5d8c6d5d7d1c2c6c1c4c2c1c5c1d5e5c5e4c2c2c2e4b9c5c6c6c1d1d1d4c5c5c0d9g6f2d6c7d6d6d6c1c5c1c4c5c5d7c5d7c5b6e9f0g1b2", +"a2a8a6a7a5c2c2e1d5e6d5f1c2c1c5c5b9c2c9b1h3a5b0b9e1e1c1c2c4d5c1c5c4c1c3d5c4c2f6d5b9e5c5b9c5b9b9c4e6e6c1d2b7h4b7a5h5h5b0e4d7d7d6d6c8c1c4c4c5c5d7e4c5c9b9b9d7d9e2f9e4e4d9b3h3b7b7h3b7b7h3b7b7b7h3b3b1f4c3e5e0c2c2e1d5e6d5f1c2c1c5c5b9c2c9b9c5c2c4f6e1e1c1c2c4d5c1c5c4c1c3d5c4c2f6d5b9e5c5b9c5b9b9c4e6e6c1d4d5a5h5a5h6g6f3e4d7d7d6d6c8c1c4c4c5c5d7e4c5c9b9b9d7d9e2f9e4e4b9c5e4b9e5e5c5h2h1b7b7h7d6c0c0c5c3e5e0c2c2e1d5e6d5f1c2c1c5c5b9c2c9b9c5c2c4f6e1e1c1c2c4d5c1c5c4c1c3d5c4c2f6d5b9e5c5b9c5b9b9c4e6e6c1d4d1c1d7c6c1f3f3e4d7d7d6d6c8c1c4c4c5c5d7e4c5c9b9b9d7d9e2f9e4e4b9c5e4b9e5h1h3b7h8d1e5c1d4c0c0c5c3e5e0c2c2e1d5e6d5f1c2c1c5c5b9c2c9b9c5c2c4f6e1e1c1c2c4d5c1c5c4c1c3d5c4c2f6d5b9e5c5b9c5b9b9c4e6e6c1d4d1c1d7c6c1f3f3e4d7d7d6d6c8c1c4c4c5c5d7e4c5c9b9f0b6f0g1b2", +"a2a7a6a7a5e6c1f1d0c1d1e0d7c2c1c5c1d7c9h0a5h5h5h9g5e1c0c5d7c1f1d5d1e1d8c3c2c4d5d5b9c4d9c6c2b9c4b9e6c6c1h0h4h5h5h5h5h5i0f0e6d0d7e7c9c4c4c5c1e4c5c5e4c4d7c4e2b9g6d2d3b9d2h1h5h5h5h5h5h5h5h5h5h5h5h5h5b7a8d7d5c6c1f1d0c1d1e0d7c2c1c5c1d7c9e4c4c8c4d8e1d8e6d7d7c1f1d5d1e1d8c3c2c4d5d5b9c4d9c6c2b9c4b9e6c6c1c4c1h1h5i0h8g7f2b9c8e3c8e7c9c4c4c5c1e4c5c5e4c4d7c4e2b9g6d2d3b9e4b9e2b9e5c4f3b7b7h5h5h5g8e1d4c4d5c4d5c6c1f1d0c1d1e0d7c2c1c5c1d7c9e4c4c8c4d8e1d8e6d7d7c1f1d5d1e1d8c3c2c4d5d5b9c4d9c6c2b9c4b9e6c6c1c4c1e3c5c1c6f3d2e4c7e3c8e7c9c4c4c5c1e4c5c5e4c4d7c4e2b9g6d2d3b9e4b9e2b9d2h1h5h5b0i1c3c4d4d1c0c4c3d4d5c6c1f1d0c1d1e0d7c2c1c5c1d7c9e4c4c8c4d8e1d8e6d7d7c1f1d5d1e1d8c3c2c4d5d5b9c4d9c6c2b9c4b9e6c6c1c4c1e3c5c1c6f3d2e4c7e3c8e7c9c4c4c5c1e4c5c5e4c4d7f8g1f0g1b2", +"a2a7a7a7b3c2c1e0e6c6c1d5c2d7b9c1d5c5d7b7a5h5h5i2i3f6e5d7d2e3f1f6c4d8d8g3c1b9f5d0c4d5c2f2b9b9c0e2c6c1d2h1h5h5i0h8c9g2e1i2e1f5d4c5c9c5b9c4c5b9c0c5d3c8b9c0e2e4d2f9e4d9f9h1h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5i0d2d0e5e0e6c6c1d5c2d7b9c1d5c5d7e4b9d5e5d4d5c9c9c9f9e3f1f6c4d8d8g3c1b9f5d0c4d5c2f2b9b9c0e2c6c1d4d0f9h1h5h5c9g1e6e6e6c2e3c7c9c5b9c4c5b9c0c5d3c8b9c0e2e4d2f9e4b9c5c4b9c2c1c4b1h1h5h5h5h5h6h9e0d8d5d4c4c2c1e0e6c6c1d5c2d7b9c1d5c5d7e4b9d5e5d4d5c9c9c9f9e3f1f6c4d8d8g3c1b9f5d0c4d5c2f2b9b9c0e2c6c1d4c1c6e3d0c2g6d2g6b9c7d7e3c7c9c5b9c4c5b9c0c5d3c8b9c0e2e4d2f9e4b9c5c4b9c2d2h2h5h5h8i4g2e1e0f5c0d1d1c4c4c2c1e0e6c6c1d5c2d7b9c1d5c5d7e4b9d6e5d4d5c9c9c9f9e3f1f6c4d8d8g3c1b9f5d0c4d5c2f2b9b9c0e2c6c1d4c1c6e3d0c2g6d2g6b9c7d7e3c7c9c5b9c4c5b9c0c5d3c8b9b8e9f0g1b2", +"a2a7a7a6b3c2d7c4d7c2d1c5d7d7c5d5e5d7f4h1h5h5h8i2i3g7g7e1e7c6c4e5c1d5d8e1f5c2c2d5d5c4c2c2c2d7e4c2e5d4h2h4h5h5c9i2b5i5g1g1g5i6f1d4d7c4c4c2c5c0e2b9b9b9c5e2b9c5d7d2e2c2h2h4h5h5g2i2i2i2i2i2i2i5e1g8h5h5h5h5b0c2c0d5c5c2d1c5d7d7c5d5e5d7b9c9f6d4d8e5e3e7c6e5d3c2c4e5c1d5d8e1f5c2c2d5d5c4c2c2c2d7e4c2e5d4d8c1h2h3h5h5i3i7e1e1d8c0c6c8c9c4c4c2c5c0e2b9b9b9c5e2b9c5d7f3e2c2b9c5c1c2c3f4h1a5h5i0h8h5b0a0g5i8d8e0c4c2d7c4d7c2d1c5d7d7c5d5e5d7b9c9f6d4d8e5e3e7c6e5d3c2c4e5c1d5d8e1f5c2c2d5d5c4c2c2c2d7e4c2e5d4d8c1c5c1e3e4d2d2g6b9d7e3d7c8c9c4c4c2c5c0e2b9b9b9c5e2b9c5d7f3e2c2b9c5c1c2c3g8h8c9i3a0i6g5i3d8f6c0c1f5c4c2d7c4d7c2d1c5d7d7c5d5e5d7b9h2a5a8c2e5e3e7c6e5d3c2c4e5c1d5d8e1f5c2c2d5d5c4c2c2c2d7e4c2e5d4d8c1c5c1e3e4d2d2g6b9d7e3d7c8c9c4c4c2c5c0e2b9b9b9c5e9f7b6b6b2", +"a2a7a9a6a5c4e6d1c2c2c1c5c9c9d5b9c6c5g9h4h5h5g8a0i1i7i9f1d4e6d1e5c4c0c0d5d5g2c4g3e5e0d9c5c5c2b9c5d1f5a6b7h5h5g0j0i6i1i5g1g4h9g5e1e5c4c5c5c5c5e4d7d3c8b9e4b9c5d9b9d3d6b1b7h5h5i9f7i7j0g4g4i5i5g0g0b8h6h5h5h5h8i6e0c0e6c1c5c9c9d5b9c6d6d9b9d5d1c0d0c9d6c1d6c9e3e5e5c4c0c0d5d5g2c4g3e5e0d9c5c5c2b9c5d4d5g3c5h2h3h5h5g0i1i9a2g7e0c1e3c9c4c5c5c5c5e4d7d3c8b9e4b9c5d9b9d3d7c6d7c1e5c1b0h4h5h5c9g8h5h5a0h9i9g7f1d5c4e6d1c2c2c1c5c9c9d5b9c6d6d9b9d5d1c0d0c9d6c1d6c9e3e5e5c4c0c0d5d5g2c4g3e5e0d9c5c5c2b9c5d4g3d5c6c6c4d3d2f4f3b9c9c7e3e3c8c9c4c5c5c5c5e4d7d3c8b9e4b9c5d9b9d3d7c6d7c1e5c1d1e1i7i5i5j1j1a2g7d8c4c6d5c4c4e6d1c2c2c1c5c9c9d5b9c6c7d9b7h5i0b0d8c9d6c1d6c9e3e5e5c4c0c0d5d5g2c4g3e5e0d9c5c5c2b9c5d4g3d5c6c6c4d3d2f4f3b9c9c7e3e3c8c9c4c5c5c5c5e4d7d3c8b9f0f0b8f0b2", +"a2a8a9a6b3c1c4e6c5c1c5e4c9e6c1c1c9d9h2h3h5h5c9a4f7f0j0g5e1c4d8c1e6e6e5e6c3d5d8d5c4d5c5b9d5c2e2c2c4c1a5a5h5h8i4a2j1e8j2b4g0e9j1i6f5e5d7d9c4c5c5d9b9d7e4d7b9b9c9c8e7c9b0b7h5h5a4g1f0j2b4j2b4j3g0g0g0j3g8h5h5h5c9g7d8d5e6e4c9e6c1c1c9d9b9d6c9d4c4g2d5c5d6c5c8c6d5e5e6e6e5e6c3d5d8d5c4d5c5b9d5c2e2c2c4e6c7c8h0b7h5h5i2i7i5g4i9g7f5c1e3c6c8d9c4c5c5d9b9d7e4d7b9b9c9c8e7c9c5e6e5c4g9h1a5h5b0i2g9h5h5i9b8h9g5i3g2c0d4c6c5c1c5e4c9e6c1c1c9d9b9d6c9d4c4g2d5c5d6c5c8c6d5e5e6e6e5e6c3d5d8d5c4d5c5b9d5c2e2c2c4e6d6d7c1c6d2d2g6c9d7e3c5c5c6c5e3c6c8d9c4c5c5d9b9d7e4d7b9b9c9c8e7c9c5e6e5c4c6c1e5f6g7i9i5g1i7g5e1c6c2g3c1c1c4e6c5c1c5e4c9e6c1c1c9d9f4h1h5h5g8a0d8e5c5c5c8c6d5e5e6e6e5e6c3d5d8d5c4d5c5b9d5c2e2c2c4e6d6d7c1c6d2d2g6c9d7e3c5c5c6c5e3c6c8d9c4c5c5d9b9d7e4b6f0f0f0b2", +"a2a7a7a6b3c1c0c2d7e6c5d7d7c6c6c1c9d7a7b7h5h5i9b4e8j2g1i1f1e0f5c6c2e5e6d1c9d5c4f5f6b9e5e2c1c2e4c5c1c8h1h5h5h8a0i9f0b4b4f8f0i5i1i6d8c6d9c9c5d7b9d9d9b9b9e2e4c5c5c9d6c9h1h5h5i0i2i5g0j4j4j2e8g0g0g0g0g0i9b0h5h5b0g0i3e1c4c5d7c6c6c1c9d7d3b9e6d5f5f5f6c7d7c6c8c3f5c6c2e5e6d1c9d5c4f5f6b9e5e2c1c2e4c5c1c8f2e3b3a5h5h8i2i7b8b8j0i6e0c0c2c8d9c9c5d7b9d9d9b9b9e2e4c5c5c9d6c9e3e6c4c9a5b7h5h5i3b2h3h5h5c9a4b8h9a2e1d4c0c2d7e6c5d7d7c6c6c1c9d7d3b9e6d5f5f5f6c7d7c6c8c3f5c6c2e5e6d1c9d5c4f5f6b9e5e2c1c2e4c5c1c8f2e3d0d7f3g6b9c2e3c2e6c6e6c6c2c8d9c9c5d7b9d9d9b9b9e2e4c5c5c9d6c9e3e6c0c6e5c4d0d5f1g5h9g1j0i9f1f6c6d8c1c1c0c2d7e6c5d7d7c6c6c1c9c2g9h4h5h5g2b8i8f5d4d1c8c3f5c6c2e5e6d1c9d5c4f5f6b9e5e2c1c2e4c5c1c8f2e3d0d7f3g6b9c2e3c2e6c6e6c6c2c8d9c9c5d7b9d9d9b9b9e9f0b8b8b2", +"a2a9a8a6b3c6c4c8d7c2c2c5d7d7c5c0f2c9h0b7h5h5a4b8g0b4f7i8f3f4f5d5d9h2b0h0h0b0h2d4c4c0c5b9c3e4f9f9f9h2h1h5h5c9f0e5i9j4f8g4j1g5i6i8c8h2b0b0a5h0b1f9d7e7c6c2b9d7c5e2c5f9h1h5h5h8i2j0b5j4b5g1j0i7h9h9h9i7i7b1h5h5h5i5i9i6d8d1c5d7c5c0g9a6h0a5a8b0h2e5d4c9c7c2e3c3d5d5d4c2c6d7g6h2a7b0a5b0h2f4d4e4c5c1c5d9f2b9h1h5h5h6a4i5g0b5i5g5e0f9f9f9f3e6b9b9c0c7c2b9c6c2b9d7c5e2c5d3d7d4e5h2h1h5h5h8i2i7a6h5h5h8b2g0i5i1e1c0e5d7d7c2c2c5h2a6b0h0h0h0a6d3d5g2c1c3f6c9c7c2e3c3e6h2b0b0h0h0b0h2e5d8c4c0c5b9c3e4c5c1c5d9f4h2b0h0a5h0b1f9c5d0e6c6c6c1e6c5d9e6b9b9c0g9b1h0a5b0a6g9e3e2c5d3d7d4e5d6f9f9d2c4d8i8g5i7j1g5e1g9a7b0a5b0a6h2f2c2c2c5d7d7d9f4g9f9a6h3h5h5i9g5e6f1f1g2c1c3d5d5d4f4b1b0h0b0b0h2f4c0c5b9c3e4c5c1c5d9f2e3d2b1h0h0h0h0b0g9e6c6c6c1e6c5d9e6b9b9c0c7c2b9c6f0f0b6b6b2", +"a2a8b0a6b3c6c6f5c2d0c5c5d9c0b9c0d9e7h1h5h5b0i2g1b5b4g1b1h4h3g8h2b7h4b7a5a5a5a5b7d2c5c0d7c5d2h1h3h3h4b7h5h5c9f9h3f9j1e9i9i3f1c2a6h1h4b7a5a5h5a5a5h5c9c2c2e4c9b9d7e4g9h4h5h5c9a4g4b4b4g1i1i6g7g7i3i3g7f1f9a5h5h5g2b8j1i3f5c7c3h2b7h1h3a5a5h5a5a5h5g9d7c8d7d4d1c4e5c1c9c7b1h1h4b7a5a5h5a5b7h2c4e0e0d6d9c7f9h4h5h5g2j3i5b4b5j0e6h0h1h4h7g8d7c4c5b9c6c2c6c2c2e4c9b9d7c9d3c9b9e4b7b7h5h5i9a0i9g9a5h5h5i4j3g4i7g7c3d0f5c2e6g9b3h1h3a5a5h5a5a5a5b1c3f6c3d4d7c8d7g2b1h1h1b7a5a5a5a5a5b7g9g3c5c0d7c5c4e0e0f4a8h1h4b7a5a5h5a5a5a8c7c6e6e6c1c1c4c1c1c4f9a5h1h3a5a5h5a5a5h5f9c9d3c9b9c0f9h1h3g9b9d5d5f1g7i6f9b7h1h3a5a5h5a5a5b7g9c5c5d9c3h2h1h4h3h4a5h5h5i3b1h3d7i3f1e0c3e5f4b0h1h3b7a5a5a5a5b7b1c0d7c5c4e0e0d6d9g6b0h1h4b7a5a5a5a5a5b7f4e6c1c1c4c1c1c4c5b9c6e3c6e6f0f0f7f0b2", +"a2a7b0a6b3d7c0e1c3c3d7b9c4d8d5e2b9f9h1h5h5h8i4g1b4b5g4a7a5h5h5b1h5h5h5h5h5h5h5h5i0d3d6e6c5f9h4h5h5h5h5h5h5h5h5h5h5g2i5i6e0d2b7h4a5h5h5h5h5h5h5h5h5b0e2e6e6d6c9c9c9h2h3h5h5e1g0f7j3g0i5g5e1f5d5d8f5c3c4h2b7i0h5c9a4g1i9e1d8b1h1h3h5h5h5h5h5h5h5h5i0h7c0b9d1c0c1e6e6f4h0h4b7h5h5h5h5h5h5h5h5h7c3e5d6c9e3h2h4h5h5i9b8g1j3f8f3b7h4h5h5h5h6e1g2d9c5c8e6d7c8c2c5d6c9c9c9e7c2e5b1h4h5h5h6i2i7j0d9b7h5h5i5j3f7i5g7c3d1e1c3b1h1h3h5h5h5h5h5h5h5h5h5h7d8c3d1c7e3d2h0h1b7h5h5h5h5h5h5h5h5i0g9e6c9c5c5c4c1f4b7h4a5h5h5h5h5h5h5h5h5b0b9e5c1c0c6d7d7c1h2h1h3h5h5h5h5h5h5h5h5b0h6d7e6e5c4g9h4h5h5g8d8d4d5d8g9h1h3h5h5h5h5h5h5h5h5i0h6c9d4d8h2h5h5h5h5h5h5h5h5h5h5h5i9g7f1c3g9h1h4a5h5h5h5h5h5h5h5h5h7e5e6c4c1e5d9f9b7h1a5h5h5h5h5h5h5h5h5i0g8f6e6d7d7c1c4e4c5c8e6d7c8b8b6f0f0b2", +"a2a8b0a6b3d7c1e0c1c3c5c4e5f5c4e3e4g9h4h5h5c9a4f7b5g0j0b7a5h5h8h6h5h5h8c9c9h8b0h5h5b0i3f6c0e6g8h5h5h5h5h5h5h5h5h5h5i9f8i6e4h1h4h5h5h5b0h6c9c9h8h5h5i0b0c3d4d6e6c2b9b0b7h5h5i9e9b6j4e8i7g7d5d0d0e5e5d7d3f9b7h5h5c9a4g0j0g5b1h1a5h5h5h5h8c9c9c9b0h5h5h5g8d4g2d1c1e6c7a5h4a5h5h5b0h8c9c9h8h5h5h5c9e6c2d7e3b1b7h5h5a4j0f0f0h2h1h3i0h5i0i9i2j1c3c6d7c2e6c1c6c5c5b9e6e3c9c9c7f9h1a5h5b0g0b5i1b6a1b7h5h5g2j4f7g4i6d5c0e0f9h1a5h5h5i0h8c9c9c9b0h5h5h5e5e1e3c2d7h2h1h5h5h5b0h6c9c9c9b0h5h5h5f1d5c4e6c2d3h1h4h5h5h5b0h6c9c9h8h5h5i0b0d5c3f6e6d7c2h2h1b7h5h5h5h8c9c9h6b0h5h5b0e0e5d1e6h2h3h5h5g0g5d5c3f4h1b7h5h5i0h8c9c9c9b0h5h5i0g5d8e1c4h8h5h5h5h5h5h5h5h5h5h5i2j1g7f4h1b7h5h5i0b0h8c9h6h8h5h5h5h6d5e5d8e4c9h0h4h5h5h5b0c9c9c9h6h5h5i0b0i6f6c6c6c7c2b9b9c2e6c1c6b6b8f0b8b2", +"a2b0b0a6b3e3e6g2e6c1e5e4c4f5c2f2c2h2h3h5h5e1j3b8b4b6i7h1h5h5h5h5h8h9i4j3f0g0i3h8h5h5i9e1e1g7c0e1i2i2h8h5h8i2i2i2i2i2b6g7a5h3h5h5h5c9i2i4g0e9b4g5i0h5i0c9i8d1e6c8c9a5a5h5h5i2e9e8j4e8j1e1d5c1e6e5c1f2f3h2h3h5h5c9a0b5f0f9h1a5h5h5h8h9i4a0j0i5j3h6h5h5b0i9e1g3e6e6b1h4h5h5h5h6i2i2a0i5b6f1h5h5i0i9e0d4c1b0a5h5b0i4i7i6b0h1b7h5h5h8b2i4g5f1f1g2d5c1c4d7c8e5c5c7d7d6c9c7c4b0h3h5h5c9i4i9i5g0j4a5h5h5h6a0b8f7i6d8d4g3a7h3h5h5h8a0i2b4f0b6b8h6h5h5h8i5e0c1e3b7b7h5h5g8b2i4g0g4g1j1h8h5h5c9g5f6g2d8a5h3h5h5h5c9i2i4g0b8j2g5i0h5i0c9i8e0c0c2d2b7b7h5h5b0i5b2j3b8g0h9h8i0h5c9i3e0f5b0b7h5h5i2i6e1e1b0h3h5h5h8a4i2b4f7f8f0h8i0h5g2i3g7c3d6i1i2i2h5h5c9i2i2i2i2i2i7g7a5h3h5h5b0g2i2i2a0b8j3c9i0h5h5g5g5f5d9f4h1a5h5h5e1i2a4f7b8g0g7i0h5h5i9i8g2c1c8b9e2d7c8e5c7c8f8b6f0f0b2", +"a2b0b0b0b3c8c5c5d7c2c5e5d5c4c4d9c8h0b7h5h5i9f7e9b4e8e5h1h5h5h5h8a0b2i7a2i9h9f7h5h5h5c9g4g7e1g3e2e6h1h5h5h6b2f8b4j4j2f0g9h1h5h5h5e1i2g1i6i1i7i5b8h2h5h5b0g0e1c3c2d7h1h5h5h8i2j0b5b4g1i9d8e6d0c6c4e6f2f2b1b7h5h5c9a0g0a2b7b7h5h5h8a4a0i1i1i9h9g4e1b0h5h5g2a2f5d6f4h1b7h5h5e1i2g0a2h9j1i5e4b0h5h5i9a2f1f5h1a5h5h8i4f4h1h4h5h5h5c9i2j3g5g5i9i1i6g7e0e1c8c5c3e5d3c9c9d6d7g9h1a5h5b0a4g1i7f0j2j2b1h5h5b0a4f0j0a2e1e5e3h1a5h5h5a4a4g5a2i7h9b8d7h5h5h8a4i6i8f4h1h5h5h8i4g0g5i1h9g4j0g9h5h5c9f8g5e1h2h1h5h5h5e1i2g1i9j1j0g4b8h2h5h5b0f8i3e0c3h0h4h5h5h8a4i4g5i9i5i5i5a8h5h5h8f8i6e1b7a5h5h8i2a2a2g3a7h5h5i0a0a0g7a2i7i5g1h4h5h5c9g0g5i8e6c1g9h4h5h5e1a0f8b4j3g0g0b1h4h5h5i0g0i4j0g5j1i5b8g4h7h5h5h6j1i8c0h2h3h5h5c9i2h9g5j1i5g1a2h8h5h5i9j0i3e0c5e3b9c2c1d8d6c5g0f8e9f7b2", +"a2b0b0b0b7d1e3d9c2d6e4c4c4b9b9d9b9a5a5h5h5i2g4b8j3f0f4h3h5h5b0g0b2b8i5g4f7e8g0h4h5h5c9a0j0i6d8c6f4h4h5h5g2b2j3j4j4j4a2h1b7h5h5g2i2h9i9i5g1g0b4j3f4b0h5h5g0i9g7g3f9h1h5h5h8b2g4j2b5g4a2d5d7e6e6e5c1f2g6h0b7h5h5i9a0g0b1b7h5h5b0a4a0g5h9g1g1f8g0b5h3i0h5g8g0i3g3a5h3h5h5h8i2i7i9i7g1g0j2a2a8h5h5i9b8i9d9h1h5h5c9h9h1b7h5i0b0f7i2g4i6i7i5f7g4i7g5i8f1e6d6d8e2c8d6c2d6g6a5h3h5h5e1i4a2i5j2b5g1f9a5h5h5a4f7g1i9i6d1c9h1h5h5h8i2i6j1i5b6j2b4j2e5c9e1b2h9a2d2h3h5h5c9a0i9i5g1e8b5j2f8g8c9i9a0i7f5h1b7h5h5g2i2i5i1i5b6b5b4b4f4h5i0h5g0i1g7f9h1a5h5h5h9a0i1j1i5b5f8b5g9b0h5h8b2j1i8h1h5h5h6a4i7h9j1e1h8h8g2i4g7i9g4g0b5g0h1h5h5c9a0i1i3g3e5h2h3h5h5i5a0j3j3j4b4a2h1a5h5h5i9i4g5i9i5b6b5b5g0b1i0h5h8a4i9e1h2b7h5h5i9g1i9i5b8b5b4b5i1c9c9g0g0j1g7f5e3c2e3e5d8c5d6j2e9b6f0b2", +"a2b0b0b0b7d1d7d9c8b9b9e5e5e4b9f3d9h1h5h5h8i2i7e8g0g1g9h3h5h5c9i4b5j3j3g0b5b5b8h1h5h5c9a4e9j1i3e1h2h3h5h5i9a4j4j4j4j4g9h4h5h5h8i2i5j1g1b5b4b4g0f0g3b7h5h5g2g1i1g7g9h3h5i0c9a0g4j3g0i5i6c8e3e6d0c4c1d2f4h1a5h5h5i5f0g4h1a5h5h5i3b2g5h9e8b4g0e8f0g1b1h5h5i0a4j1e6h1h5h5b0b2b4a2i5f0j2j2e8g0i3h8h8i5j3j0e4h4h5h5e1f4a5h5i0h8a4b2i9i9h9f7g0b4b6j0g5i8g2e6c7d8c2c8c1d7c6h2h4h5h5h8i2i5i7e8b4f0j0f3b7h5h5i3b6f0i9i6d4c8b7h5h5b0h9i6g1f8j2g0f8f7h9g0a0j4e9h9e5h3h5i0h8a2g4g0j4j2f8b6g1i5a0a0b4g0h2h3h5h5h8i2i5i1g4b5j4b4g0g0d8b7h5h5g2b8i9b1h3h5h5c9i2i9h9f7b5a0j2e8b8h6h8c9b2g4e6h4h5h5c9j3i5g1g1i9i3b5b4i7a2g4g0j4g0e1h1h5h5c9a4g4i1f1g3b0b7h5h5i2j4b4j3b4g0g9h4h5h5c9i2i7h9g4g0j3j2f8g1b1h5h5h5b2i5i9g9b7h5h5e5i6g4g0j3j4g0b6g1f7a0a4g0g1i1i6f6c1d7c1c4c2c7j2f0b6b8b2", +"a2b0b0b0b3d0b9c9c6d9e4e5d0c5b9g6g9h1h5h5h8b2h9g0j2j0a7b7h5h5g0j3b8a0j4j2b6g1e5h1h5h5c9a4f8g1i9i8b1b7h5h5a4j3j3j4b4f0h0b7h5h5i9a4i9g1g0j3j2b6i5j0e6h4h5h5c9a0g4i9h2h3h5h5i3g0f0j4e8h9i6c4e3c8d0e5e3g6h2h1h5h5b0i4b6d9h1h5h5h8i2i1i1f7j4j4b6j0j1i9a6a5h5h5i2g1h2b3h5h5c9b2g5j0f8j2j2b6g1h9i1h9a4b2j3b6g9h3h5h5c9b0h5h5g2i2a4i9j1g4b8b4j2e8i5i9i3g7d5c7c7d8c2d6c1c5d2b7b7h5h5i9a0i9g4b4b4g1i9e5h3h5h5c9j3b6i5g5d5c8g9h5h5i0i0h5b1f4i9g4j0i1i3i3a2h9g1g4i1h2h5h5h5b0h5h2c2h9j0j1i9i6a2i1g4b8h0b7h5h5i9a0i9g4b5j4j3b8g4i7e6h4h5h5c9a0j1h1a5h5h5a4g1j0f0g0b4j3e9i7j1i9g0a0a0b8f4h3h5h5i9g0f7b5f0i1i3g9b1b0h1h1h1h1h1h1h3h5h5i9a0e8g4a2d8a5a5h5h8i4f0b4b4b8g1h0b7h5h5b8g7g9f4f4f4f4f4g9g9h0a5h5b0i4b8i5i9h5h5h5h5b0h0h2g3g0g4i7i9i9i9j0i5b8j0g5e1e5e6d8c1d6c7j2b6f0e8b2", +"a2h0a6a6b3e6b9c7c8d3b9c1e4b9c0e5h2h3h5i0c9j4j0b4f8h9b3a5i0b0i2g4e8a0j4e8j0i9f4h3h5h5i3a0g0f8i7i6b0a5h5i0i2b8b5b4g0e1h1h5h5b0i2i5i5g0b4b4b8i7g5a2f3h3h5h5c9a0f8j0a6b7h5h5i5f7e8j4e8i7g7d0e6c5e5c1d6f4a6b7h5i0h8i2f0b1b7h5h5e1a0i1f0j2j4b5i7a2i8f1a8a5h5h5i2f0h0b7h5h5i5f7i1b8b4g0f0j0i9i6g7i8g7i9g4b4b1b7h5h5h5h5b0i5i2a0i5i5f7b5j2j2f7j0i9i8f5e1e5c7d7d8c5d6c4c1b1h4h5i0h8i2i7j0f8j4b5h9a2e1h3h5h5h8a0b4g4a2g3e6e7g9h5h5h5h5h5a5b7h0g9e1c0e5f5i6j1j0i7g5h8h5h5i0h5h5a5h3h0f4f1g3d8g7i9f1h1h5h5b0i2h9j0g0j4j3b6h9i9i6e4h3h5h5c9a4d9h1h5i0h8i2i9f0b5b4g0f0i1i3i3e1i8i6j1f0h2b7h5h5a4g1b6j2b6e4h0h1h3a5a5h5h5h5h5h5h5h5h5g0g1b6g0h9g5h1h5h5h8a4j0j2j2g1g3h1h5h5b0c9h5h5b7h3b7h3h3h5h3h5h5h5h8i2b6b6j0g7b0h5h5h5h5i0b7h3b1d9i8f1g7g5i9j0i5i1g7d4d7d8d0c9c8j2b8f0f8b2", +"a2b0a6a6b7e6e5b9d7c6c2c5f2e2c5d7b1b7h5h5i3b8f0b4g0a2h1h5h5g8b2i5g0j4b4i5a2i6h2h3h5h5g0g0g0j2i5g5h1a5h5h8i2i5b5j2f0e6h4h5h5c9b2h9b8j3j3b8i5g5e1i8h2h3h5h5i3a0g0f0b3a5h5h5i2g1f8j4g1i1f1c4d0c5c2e5e6d2h1a5h5h5i3a0g1b1a5h5h5b2f7i5g0j2j2g1g5d8f5c3b7a5h5h8i4f7h1h5h5b0i2j1i5j3j4f0i7g5i8e0d8g2e0i3i9i5h0a5h5b0h5h5b0a4a0b5b8b5b5j3b5f7i7g5i3g3e6d8c1d6c5d8d8e5d6f9h1b7h5h5j3g7h1h1h1h1h1h1h1h1h1i0h5h5i4b4j0i1i8c6e3d7c2h8h5h5h5h5h5h5h5b7f4f2c3e1i6i9i9g5e1c9b0h5h5h5h5h5h5a5h5c1e6c3g7c2h4h5h5c9b2i1e9j3a0b8h9g5g7d8g9h4h5h5i3a4f4h3h5h5i3j3i7b5j3g0g1h9a2e1d1c3f5f5i6j1a6b7h5b0i2h9e8b4h2h1h3h5h5h5h5h5h5h5h5h5h5h5h5i2j0f0b5h9d9h1h5h5c9a0g4j2b5j0f9h4h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5h8b2b8b5i5g5c3c9i0i0h5h5h5h5i0a5h7f5c3f1i3i9i9g5i3c3c5d8d0d6c2j2j2b8f0b2", +"a2a8a9a7b3d4e6c2e3c8c0c2d3c5d9d0b0b7h5h5g0g4b6j3f0e6h4h5h5c9b4g4b5j4f8i1i8e1b0b7h5h5i2g4b5j2g4d4h1h5h5c9a4i5g0j2g4f4h3h5h5i3g0g4b4j4b8i5g5e1c0e1h0b7h5h5i9b8b8j0h1h5h5h8i2i5j2b4g1a2e1e5e6c6c5e6c4b1h1h5h5i0i4f0e8a5a5h5h8i2j1f0j4g0f0j1f1c0c4g9h1h5h5h8b2g1h1h5h5h8b2j1f0j4b4j0a2e1d8f5g2d4f6d8g7a2h1h5i0h8h6h5h5h8j3j3j3a0j3g0g4i7i3e1d5e6c5f5c6c8d7d5c1d6c9b0h3h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5i5f8g0h9g7c3e6c8d4i9i9g2h8h5h5h5h5h5i0b9c0d4e0i8i8g7e1e5h9i9g8h8h5h5h5h5h5b0e6e6e1g9h3h5h5i3g0j0f8a0f8i5g5i8e0c3h0b7h5h5i9f0f4b7h5h5i9g1g4j4j3f0i7g5e1c6d7c1d1f5f5a3h1a5h5h8i4h9g0e4h1b7h5h5h5b0c9c9e1i9i9i9h8h5h8i2j0g0g0j0f9h3h5h5i9f0g1b4f0i7h2b7h5h5h8h8h8h8h8h8h8h8h8h8h8h8h8h8c9b2b8b4g1g5e1i3h9i3g8b0h5h5h5h5h5h8d8f5e1i3g7g7e0c0e3f5c1c8d7b5b8f0f0b2", +"a2a8a7a7a5d4c1e6c8c2c7c2d6d3f2e6b7a5h5h5i2j0f8j3g4f4h4h5h5i9g0g1j2b4g1i6d5e1b7a5h5h8i2i5b4j2g4f3h4h5h5e1g0g4b4b8i5h2h5h5h5i9b8f7j3j3g1i9i8d4e3c6h1a5h5b0i2f7b8e1h1h5h5h6a4g4b4b5g4a2d8c4d0e5e3e6d2h1b7h5h5c9i2i5g0h1h5h5h8a4i7b5j4f0j0g5g3c2c6b1h3h5h5g2a4i6h1h5h5c9b2j0f8j4f8i9i8d1d5f5f5e5e5c4c0f3h1h5h5c9a0b0h5h5g8j3a0g0g0j0i9i3d8f6c1e3d7c3c1d6e6e0d8c9h2h1a5h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5h5g2j3b5i5i6e0c5c2c2g2g7h9a0a0e1g8h5h5h5h8i3f5e6d5d4e1g3d7f1g5f7a4b8g2h8h5h5h5c9d8e1h2h5h5h5i9i5g4j2j4b8i9i8c3g2c8h1a5h5b0i2f0h2b7h5h5i2g1f7a0b5j0g5i3e1d6c7d0c4c4c3d7h1h5h5c9a0i5j0b3h5h5h5b0i9i2b2j3a0j3a2b1h5h5c9a4f0b5b6i5h2h3h5h5g0i5f7j3f0i1h2h5h5h5i9b2b2i4i4i4b2b2b2a4a4a4a4a4a4a0g0b4g1i9f1i8i3i9g0b2i5c9b0i0h5h5g5d8g2e1g3f5d1c6d7c3c6d6e6b5j2f0b6b2", +"a2b0a7a7a5d5c7d7c4d0c1d0g6d2f4f3h1h5h5h8i2h9b5g0g1b1b7h5h5a4g1b6b4f8j0g7d1e5h1h5h5h6a4i5b5g0g4h2h3h5h5i9b8f7b4g0i7g9b7h5h5i9b8g0j3g0h9i6e1c1e5b1h4h5h5h6i4i5g0f4h3h5h5c9a0g1j2g0i5i6d8c4c6c1c1f3b7h3h5h5b0a4e8g4j3h1h5h5h8a4h9j2b4g4i1i3d0d6d3h1b7h5h5g0g0g3h4h5h5c9j4g4b4j4g1i6f1d5f9h2h2d7c9c9c2g9h3h5h5i3g0g7i0h5h5g2j3g0i5g5i8e1c1c5e5c2d0d8e5c7c6e0f5d7h0h3h5h5c9i9i9i9i9i9i9i9i9i9i9i9i9g2h5h5h6a4b4g1i6d8d5d0e5c3c3i8i9f7g0g0g8h5h5i0a0e1d8d0e3c3c4f2d8i8g5i5b8e8e8h8h5h5h8f0g7h2b7h5h5i9g4b6j3f8i5i6f5g2c1b1h4h5h5h6i4g4b1b7h5h5i2i5f8a0b8j1g7g7e5h2h2f9d7c5e5g9h4h5h5e1j2g4e6h1h5h5h8b2b2i9i1i5f0j2h2h3h5h5e5a4g0j2f0j0a6b7h5h5i2i7f8g0f0i9h2b7h5h5i9g1b8a0a0j2b8b8g1h9f4f9f4g1e9b8j2j2g1i9f1g2e1g7i9i5b8j3i9b0h5h5c9i9i8d8c1c6c0c2d0d8d1c7c6b5b5f8f8b2", +"a2b0a7a7a5d4e4c1c1c6c1f6f3e2f4f9h4h5h5h6a4g1b5b5g4a6b7h5b0i2h9f8b4b8i1f1c3f4h1h5h5g2j3i5b4b8i7b1b7h5h5i2g1f7b4b8i1f4b7h5h5g2b8g0j3b8i1f1g2e5f4h1a5h5h5i9j3g4b4h2h5h5h5i9j3f7j3g0h9e1g3e5e6c2f4a5h4h5h5h5i3i4j1e8j4b0h5h5b0a4j0b4j2i7g5i8d7c1b0h4h5h5h8i4j0j0h3h5h5h6a0b8j3b5h9i6d8e6b7h3b7h8d6b9d7b1h5h5h5g0b8b8f9h5h5b0i9i5i9g7d5d5e3d7c1e5c0e0e5c9c8c1d1h2h1h5h5b0a4b8f7j3a0a4a4b4g0b8f7g1g1h2h5h5b0i4j4g7a6a7g9e6e5d5c9d5f1j1g1g4h0i0h5h5i2i9f9b0h0f3e6d1d4d8f1i9h9g4a3h4h5h5h8b2i9f4b7h5h5g2f7e8j3b8i1f1d5g3f9h1b7h5h5i9g0g1g9a5h5h5g0g1j2a0e9g5e1g3h2h1b7h7h6d7e3h2h3h5h5i9b8j0f4h3h5h5e1a4g5i9f7f8b4j1h1b7h5h5i9b2b5b4g1i7b7a5h5h8i2j0e8j2g4a2g9h5h5h5i5b8e8a0j3b4j2b4b5e1h1h3h7c9b5g0g9b1b1a3f1e0d4c3g7j1j0b8d9h5i0h5c9j4g5i3d5c6c1e5c0d8d1c9c8g0f8e8f8b2", +"a2a7a7a9a5c3b9c2e6c2c0c4d2e4f3h2h3h5h5g2a0g4b4f8h9h1h5h5h8i4j0e8j2f7i9f5e6h2h3h5h5i9b8f7b4f0j1a5a5h5h8i2i7e8j4e9i9i8h5h5i0h8j3b5j3g1a2e0d4e3a5h3h5h5h8i4f7f0b4b1a5h5h5a4g1b6j4e8i7i8d5d0d7h2h1h3h5h5h5h6i2g1j0g0a0f4h5h5h5h9g4j3e8i9i3d8d1h2h1a5h5h5i9a4h9g0h2h5h5b0a4f0j3e8i9i6d8b1h1h5h5h8a2c9c5b0b7h5h5i2i5g0j4h8h5h5h8i5g5f1d8e5e6c8e6e5c1d8e5c9c7d5d9b7b7h5h5e1b2i9g1g0a0a0j3j3b5g0g0e8b4h2h5h5h5a4a0e1h4a5b0h6c0c4f2c2e5i6a2f4h1h5h5b0i2g4g9h3a5b0g8c4c0e6c3i8i6a3h2h4h5h5g8b2j0i9h5h5i0h8b4b5j3g1g5e1d8c7a5h3h5h5h8i4g1f0a2b7h5h5e1b8b4j3g4i6f5f2b7b7h5h5g2i8e6a7b7h5h5i2g1f0f4b7h5h5a4i5i7e8j2j4a0h2h4h5h5h5a4a0b5g0g4a2h1h5h5c9a4h9g0g0j0i6e6b7h5h5g2f7g0j4b4b6f7f7a2h0h3h5h5c9a0f0b1b7a5h8g7d4e3c0f1g7a2i1h0b7h5h5e1a4i5a2i8d1e5e5c1d8e5c9c7b5g0e8e8b2", +"a2a7a7a7a5d7c2c2c9c7c1f5b9d2e2b1b7h5h5i9g0b8j3b8g7h1h5h5c9a0i5e8e8g4g5c3d9a6b7h5h5a4i5g1j3e9i1h1h5h5h8b2j0b5j3g4g5e1b1i0h5b0g0g0b5j0i6d8d2h0h1h5h5b0g0a4h9b8j4h1a5h5b0i4i5f8j4f0i9d8f9a6b7h1b7h5h5h5g8i4j3i7b8b4b4a2b7h5h5c9g0b4f0i9e0g3h2h1b7h5h5c9i4j0g1j4f4a5i0h5i9b8g0i5i1i8h2h1a5h5h5e1g0g2f5b7a5h5h8i2j0f8j2j0h7h5h5h8j0g7g2c2e3e3c6c1e5e1c6c9d6d8b1h4h5h5h8i2h9j0e8j3j3j3b5g0b5b6e8g0b5f4b7i0h5i3a0h9h3h5h5g8g5d8d7g6c8g3f4b7h3h5h5c9i2f8e6b7h5h5i3i3d1d9c9d8e1h2h1b7h5h5i9a4b8j0h2h5h5b0g0g0j3i5i6e1f3h0h1h5h5b0g0a4h9b8j4h5h5h5h8a0j3j3j0i8d9a5h4h5h5b0i2i3c4h0a5h5b0i2i7b6f4h3h5h5a4j1g4b4j4j2h2b7b7h5h5b0i4b5b5g0g4e6h1h5h5c9g0g4b5g0h9g7f5h0h5h5h8b8e8j3e8i7a3c2b7h4h5h5b0i2b4h9h2a5h5h5j3d4c1f6f5c3e5b1h1h5h5b0a4a0b8i7g5d8f6c1e5e1c1c9d6j2g0b8b8b2", +"a2a7a7a7a5e3c2e5c8e5g3f5d2c9e4b0b7h5h5a4f0e8j4f0d9h4h5h5g2j3g1f8b6j0g5e5b9h0a5h5i0i2i7b6b4g1e6h1h5h5c9a0i5b5b5j0g7e1f2a5h5h5h8c2e1g3f3b1h1h4h5h5h5g2i4h9g1g0a2h1h5h5h8b2a6b1b1h1h1h1h1h3a5h5h5h5h5c9i4g0h9g1j2j4g0j0h2h5h5h5f3f1d8c2g9a5h1b7h5h5b0a0f7i9f8a0f0h5h5h5h8d9e1e5f4a5h1b7h5h5h8i2i7i3e1h1h5h5h6a4j0b5f8f7i3b0h5h5c9i9f1g2c6e3c3c6c1e1c2d6b9f4h1a5h5h5i9a0i9f7b5j4b5g1i5i5j0i7j0j0j0i8b7h5h5c9a4g0h0h5h5i0c7f3f9f9h2b0h1h3h5h5b0a4a0g0a1h3h5h5h8f3f4f4g9g9a5h1b7h5h5h8i2j3g0f0g7a5h5h5h8c2e1e5f3b1h1h4h5h5h5g2i4h9g1j2j4f4h5h5h5d7c2f1c2b1h1h4h5h5h5i3b2g7i8h1h5h5h6b2j0j2e1b7h5h5c9g3e1i8f4h0b7a5h5h5h5h8i2g0g0g0j0e6h3h5h5c9j1g3i1b8j1f1c3h2h5h5h5h6f4e5g3e4b1h1h3h5h5h5i9b2i9j1e4b7h5h5h6f9f4f9f4b1b7h1a5h5h5c9i4g0b5f0i1g7e1e5c1e1c2c9e7b5f8f8f0b2", +"a2a7a7a6a5f2c2c4c4c6c3d1d2d9d3h1a5h5b0i4g4g0b4f0g9h3h5h5i9b8g4g0e9h9i6e6g6h1a5h5h8i2i7b6g0g4f4h3h5h5i3g0g1j3f8h9g7f5e5g9i0h5h5b0h5h3h4h3a5h5h5h5c9i4i5i5g0j4e5h4h5h5b0h8a5a5a5a5h5h5h5h5h5h5h5h8i5i2f0i7f7e8j4b4f0i1i3h7h5h5h5h7h4h4h3h5h5h5h5b0b8b2a2i5b4b4f0d4b0h5h5b0b7b3h3b7h5h5h5b0a4a0i9i1e6h1h5h5g2j3g1b5g0j0i9e2i0h5h5e1g5f1d1e3f5c1c1f1b9b9d7b0h3h5h5h6i2h9i5f8b4j2g1i1g5i6i6i3i6i6i6g7h4h5h5h8a4b6i8h5h5h5b0a5b3h3h3h3a5h5h5b0i5i4i5b5b4f4h5h5h5b0h5h3h4h3h5h5h5h5h8a4a4f7f8g0j0d3i0h5h5b0h5h3h3h3a5h5h5h5c9i4i5h9g0j3b4g1h7h5h5h5h7h3h3h3a5h5h5h5g2i2i7i1e5h1h5h5c9a0i5b4j2h2h5h5h5h7h3b7h3h3i0i0b0h5h5g8a4b8b5f8i7i8h3h5h5b0g9h3f9i9i9e1c2d7h2h5h5h5b0h5h3h3h3a5h5h5b0e1i2i1i1j0i7h7h5h5h5h7b7h3h3h3b7h5h5h5h6i2b5f7j3g0h9i3i8c0c1f1b9b9d7b5f8f8b8b2", +"a2a7a6a9b3e4c1c6c6c1c1c1d2c9f3h2h5h5h8i4j0g0g0g4f3h7h5h5i2g4g1j2g1i7g7c8d2b1h5h5c9a4h9f8g0g4d9h7h5h5g0f7b6j3f7i7g7e0c4c2b9i0h5h5h5h5h5h5h5h5i0i3i4f7i1e9b4j4e1h2h5h5h5h5h5h5h5h5h5h5h5h5b0h6i5i2a0i7i5g1j2g0b4b8i7i6e1c3h8h5h5h5h5h5h5h5h5i0h8a4b2j1i7b8b4g0i5g5d7i0h5h5h5h5h5h5h5i0b0i5b2i9j0f0g3g9h5h5i9g0g4j3e8j0i6f1h6h5h5b0i9i6e0f6d8d4d1c6c8c9d2h2b0h5h5g0b5j1f0j2b4f0j1i3f1e1d8d4d8e1g3g3g9h5h5h5b2b6f0e1i0h5i0i0h5h5h5h5h5h5h8i5i4i1g4f8j4f7g8h5h5i0h5h5h5h5h5h5h5h6a4a4i7f7g0b5g4i9c2i0h5h5h5h5h5h5h5h5i0i3i4b8i7f7j3j4g0i7i6h8h5h5h5h5h5h5h5h5h5c9i2i5j1f7a2g9h5h5i3e8f0b4g0h9h8h5h5h5h5h5h5h5i0h8j3h5h5c9a4j2j2f0i7i6f9i0h5h5h5h5h5e5j1f1c5e7c7h6h5h5h5h5h5h5h5h5h5b0i5i4i7i9g4b6j0a3h8h5h5h5h5h5h5h5h5h5b0c9i2b5h9f8j4b5j0g5g7d5d1c6c8c9c2e8e8e8b6b2", +"a2a7a6a7b3f3c9d4d1e6g2f6c9e2c9c8h8c9i9a4i5j2g0j0i6h6g8c9i2j1b6j2g4i1i8d7d2d3h8c9i9g0i5b4f8h9i3g8h6c9i2g4f8j4e9i1f1f5d5c4c3i3c9i0h5h5h5h5h8e5b2i4i7i9b8b4j4g0i5c2h6c9c9c9c9c9c9c9c9c9i3j3i2i4j3i9i1g4g0b4g0g0f0i5i9f1e1f5e6e1h8h5h5h5h5b0h6i9i2j4i9i7f0b4j2f0i1g7g3i3g8i0i0h5h5h5h8e1i2i4i7j0b8b4f8g2g8c9a4f7b8j3f0i7i3e0e1c1c9c9i3i5i3e1g3d1e3c5c5c9g2d7h8g8i3i2j1g4j2j4f8j0g5e1d5c4d7e6e6c4e5g6c2h6c9c9a4b6f0h9i9c9i0h5h5h5h5b0g8i5i4a0i9i7e9j2j2g4i9g5h6h5h5h5h5h5h8c9g0i2g0i7i5g0j2b5i5g5e1i3c9i0h5h5h5h5h8e5b2i4i5i1g1b5j4j3g4i9f1e1e1h8h5h5h5h5b0g8b8i4g1i9g1j2j3i9g8c9g0f7f0j4f0j1g7e1h8h5h5h5h5h6i9i2j1h6c9i9a4j4j3e9i1g7g3h6h8h5h5h5h5i5f7f1d5e6d6e6g2h8i0h5h5h5b0h8i3i2b2j1i9g1b5j2e9i1i3i3h8h5h5h5h5h5h8e1a4i4f7j1g1j3j4g0h9i6e1c3e3c5c5c9e0b5g0f0f0b2", +"a2a6a6a7b7f2c1d5d5d1g3c9d3c5d9e5d5i1j0h9g4j2g0i7g7d5i3i7g4i7e8f8j0i9f1d9e4e7e0j0g1i5g4j2e8j1g7c3i8i5b6h9b5j3g1i9i8d8c1c3e6e1i3j3i2i9g0i2i4a4g4i9h9b8b5j3j3g4i1g7g5h9f7j3a4b2a4a4j4b5g0g1h9h9h9i7g1j2a0j4b6g4j0i9i3f5g2c9d7e0h9b2g0i9i2i2i4j3i7i1h9b8b5b4e8j0i6d8d0e1i3g0i2i9i2i2i2a4i5i9i5e8b4b4b6i5i9i5b8h9b8j3b6j1i8e1e5e1h9j3a0g0i9i3d8c3c5c7c0d4d5c4e1i9h9i1j1f0j4b4g1i1f1d8e5d7e4c8e3c1d6f4c9f6j1f7g0f0g0g4i9g5j3i2i5g0i2i2a4g0i9i9i7f7b5b4b6j0i6i8i3a0i2i9a4i2i4a4i5i9i7g1g0j3b4f7i7g7f5d5g7j3i2i9g0i2i4a4f7i7h9b8g0j4j3b8i7i6e0d8e1i5b2g0g0i2i2b2j3i9i7g1b5b4j2g4i9f7f7i5f0b4g4i9i8e1i9a4i5a4i2i2g0i9i9i5a0a4a4b4j2f0i9g7d5d9i6a0i5a4i2i2i5i6e1d4d7c2d5i9a4g0i5i2i2i2a0i5j1j0g1g0j3b5g1g5i8g7i7b2a4i9i2i2i2a4i5i7j1g1b5j3j3b8i1i3f5d4c5c7c0d4d5e8b8f0b6b2", +"a2a6a6a7b3d2d0e0c1e5f6d2d7d9c4d1c4c8f1g5g4g0f0i7i8c4e6c3i3i7f0f0i5a2e1d9e4d9d4e0i8i1i5g0f7j1i8d4c2e1i3i7b8b5i5g5i8d4f6d0c2c3f1g5i7b8b4e9j0h9j0i5b5j3j4j4b8i7i6e1c4f5g7j1b6j4j4j2e8e9g1b8e8e8e8b6j4a0j3e8j0a2g5i6g2c3d5d2c2d0g7i1g4b8b5j0h9h9j0f0e8j2b4e8g4i9f1e6d4g3f1f1i9i5j4b6g4g4i5e9f8j3j4g0i5i9g7e1i3j1f7g0g1i9i8d4e6c3f1g5i5g1h9g5e1c0d7e7d5d5d4d8c5e5e1i6h9e8b4e8h9i6e1e5e6d6c7e5e5c5d6d2e6d8e1i8a2j0g0f7i9i3g5g5i5g0g0g1i5i7i5g4b8b5j2b5i5a2i8d5e1g5j1g1j3b8g4j1i7j0b6b4j4j4b8j0g5i8g3e5e0g5i7f7j3b8j0i5i5f7g0b5j3j3b6h9g5g7c1c5d1e1g5h9b4b4f7g1i5g1e8j2j3b4f0h9i6g7i3i9f7g0g4i9i8g3d8i8i5j4j2g1i7j1g4g0g0j3j3g0j2g4i9g7g3b9d4e1a2b8b5b5g1j1i6f1d5c4c0g3a2i5g0e8i5h9i5g1f7g0b5b4b5e9i7i3f5e1i8i9i5g0j3g1i5i5i5g1b8b5j3j3e8j0i6f5e5d7c8e7d5d5d4j2b8b8e8b2", +"a1a6a6a8b7e5c4f6c1e6c2d6c9e7d1c0d7c5d8i3i1g1g4a2e1d4e6d8g7i9i5j0h9i6d4f2d7c7d4d5f1g5j1e9i5a2i8d4d4g2g7i1i5g1i7i3f1d5e5d0c2c4d5i8g5j1g4f7e8e8f8b4b4b5e8b8j1i6e1c3c1e6f1a2i5e8b5f8f8b6g0b5j2g0b6f0b5e8g4j1i6i6i8e1d4c1c2d6c7d6e1i3a2h9f7b6b6e8j2b5j2b5f0i5i9g7d8d6c3d4e6d4g7i9f7e8b5j2g0j3j3b4f8i5i1i3e1e1g7g5j0e9i5g5e1c4c2c4d8i8i9i7j0i9g7f6e3e5c2c8d7c4c5d7d8i3i1g4f0i5i9i8d5c5d7d3c2e6e6c9d2d2d5d8d5g3e1i7f7g4i9g7f1g7i1i5f8b5b8e8b5b5j2g0b6j0i9g7d8d5f5e1g5i1f0f8e8b6g0g0j3j3b4e8h9i9g7g2c0e5g2i8g5j0g1b8g0g0j3j3j3j3g0f7h9a2g7c3c2c8c2c0e1i9j0e9b6g0g0g0j3b4b5g1i7g5i8d8f1g5i7g4h9i6e1c1c8d5i1g4b6b6f0b5j3j3g0g0e9g1f7i7i9f1c1c9d0c3g7i1g1b8f8f0h9g5f1d1e5c2i3a2i7g4f0e8j2b4j3j3b5f8g1j1i6e1g2c3e0i3i9j0b6f8j2g0b4b5j2j3g0b6i5g5e1c1c2c9b9e6c2c8d7g0b8f0e8b2", +"a1a6a9a8b7e5c3e6e6c6c5d9c9e5e5d1d6c5c0d8i6i9i9i6e0d4c2d5f5i6i9i9i9g7d0d9f2d7d4f5e0g7i6i1i9g7f5d1d4d4e1i3i9i7i9i8g2d4c3c6c2g2e1f5e0g7i1j0g1f0e8e8f0g4i7a2i6e1f5e6d6d0g3i3i9h9j0h9j0h9i5j0i5j0i7h9j0h9g5g7c3d8e0e5e6c6c5d9c9c4d4e0f1g5i7j0g1b8b6b6f0i5i7a3i8e1d4c9e5d1c8e3d4g7i7g4b6e8b6b8f0g4i7i9i3e1e0f6e1i3i9i9i9i3e1e6c2g2e1d8e0i6i9i9i3f5e5c2d7d6b9b9c0e6g3e1i6i9j1i9i3d8e6g6d7f2e3c8e3c9g6d7g3f5e3e5e5g5i7i1g5e1g3d5g7i1i5f7f0b6b6f0g4j0j1a2g7e0c4c3c2f5f1g7i7g4g1f7f0f0f8b6g4i7i6i8f5c1e3e6f6f5g7i6j1g4e9b8f8f8g0g1j0i7i9i8c0d7c6d7d7e3g2i8g5j1i5g1f8b6e8g1h9i1i6i8d8d5d5d8g5a2a2i8d5c8d9d4i6i1j1i5g4e8g0f0i5h9i1i9i1i1i6e1c5c8e3c5g3i6i9g4f0f0j0i9f1e0c0c7d8g7i6i9j0f0f8b5f8b6i5h9i9g7f5f6c3c4f5d8g7i9i7g1b6g0g0b8f7b6g1j1i3e0c3c6d7c9c5d7d7c8b9f0b8b8e8b2", +"a1a6a8a8b3c4d4c1e6c7e6e7e7c0e5d9e4c7d7c0f5i8g7f1f5d1c3e5c0e1g7i8g7f1d0c9d9d9f6d5f5e0f1g7i8e0d4d1c2e5f6e1g7i6g7e0c3c3c6d0c5e1e0d4e1d8i8i6i9j1i1j1i1g5i6f1d8g3d0c7d7c5d1d8g7i6i6g7i6g5g5i3i6g7g5a2g5g7d8g3d4c3c3e6e6c7e6e7e7c0e5c2e6d8g7g5i9i1i7j1i1a2i6i8d5c4e5c9d1f6d7d6e6d4i6a2j1h9i7j1i9g5i3g7f5f6c1g3d5e1i8i6g7i8f6d0c5e1e0d4f1e1g7g7f1d8e6d7d7c8c7c9d7c1c1c0e1g7i3g7e1c3e3f2d9c2e6f2e4e2e5d5f5e5c8c2d5f1i6i3i8c3d1c2d4i3g5a2i9i1i1i1a2i6i3f1f5c3d5e6c2c4g3f5i6i9i9i1i1i1i7j1a2i6e1c3c2c7d7c1c2c4c3e1g7i9i9i7i7j0j1i9i6g5g7d5d8c2c5d7c8c2e6e5e1g7g5i9j1i7j1a2i6i8e1f5c4c4e6e6d8g7g7c3c5f2c4d8f1f1i3a2i1h9h9i1g5g7g7f1i8i6f1e6c9c9d9c5c6g3i3a2i1i7j1g5e1c3e5d6c3e1e0i8i6i9h9j0h9i7g5i3e1d5c1d1c2c1d0f5d8g7i3i9i1h9h9i7i1i7i9g7g7d4d0d7c8c2d7d7d7d6c7f7b6e8b6b2", +"a1b0a8a9b3f6d7c2c6d7d7e7c4d4e5e7d9e2e4d7c6e6g3d1c2c4c1d4c6c0d8e1d8d8c9b9c6d6f6c4d5d8d1d4d4c0d4c6c2c2c2f5g2e1d5g2c1c1c6c1c3c4e6d1e5g2d5f5e1i8i6g7i8g3d8c1c1c1c7c5d7e6c4c3d5e1d1g3e1e1e1g3d4d4e1e1f1c5c2c6c1f6d7c2c6d7d7e7c4d4e5d6c7c8e5d8e1e1i8i8e0f1e0f5c1c2c0d1d0d5e7b9c6c2e1f1i3i6i8i8e1e0e0c3c1e6c5c3c1g2g2e0d5d5c1c1c3c4d0d1e5g2d5c3f6c4g3c2c2e4c5c9e3e6c7c1c1d8d8d8e5e5f2c7c2d0d0d9d3b9e6g3f5e4c7e3c4d8f6d8f5c1c2c9d5e0e1e0e1e1e1e1e0c3d4e5c2c0c1d4c2c2d4f5d8g7d8e1g7f1i3g7i8f1e5c6c7d7c1c6c2c5c6f5g2f1i8i3g7i3i8f1e1d8d4c3c2d1c5c7c8d7c3c1d4e5f1e1i8g7f1f1d8d8c3c4e6d0e4c5c3d8d8e6d9b9e6d5d8c2c3e1g7i6i8i8e1g3f6c0e1e1g2d7d9e2e4c9d7c2d5d8e1i3g7i8c3c0d4d1e5f5c5c0e1e1i6i3i6i3e1f5c1c2e5c6c2c2c5c3e5d8f5i8i8i3g7g7i3i8e1d8d4c3c2c8c8d7d1c2c2b9c5f7b6e8f0b2", +"a1b0a8a7b3d5c5c6e3d7d9e5d4d1e7d6f2f3d2e4d7c5d0c4e5d1e5c2d7e5e5e5d4c2e3e7c8e3d4d1d5f5e3c6c2c1c2e5e3e6e5e5c3e5g2e5e3c6e6c2g2c2c2c5c5c0c6e5e0d5e1d5c0c4e6c1e3c6c7b9c7c7c8d0e6c2c7d4c4c4e6c8d9d2d5e1d8b9c7e5c1d5c5c6e3d7d9e5d4d1b9d6g6g6e4d7e6d1c3g3c3g2d4c6d7e5c6d0c0e3c8e7c8e3c3g3e0e1d4d1c0c0c1c4e3e6e5c1d4c2g2c4c2c1d0c2g2c2c2c5c5c0c6e6e0c1d5c2c8d7c5e6d7c6d7b9e3c5c2c1c6d7e7e6d0e6c7b9g6d2d4d8d8b9c9e5c1d5d0e5c6e3d6e5c3c3d7e6c5d7d9c6c2e6e6c0d0d1e5c2d7e5c6d0d4c1c0c1c4c3e0d8d8d8d7e3d7c5c5e5e3e6e5e5c3e5e0g2d4c3c3d4e0c2e6c5c5e5c5c2f5e6d5c6d7e6c1c3d4d5e5d7c2c5c8e6c5d7e7d0c1c4c2b9e4d2c3d8d8b9d7d5g3e1d4d4c1c6d6d1d5c3d6d6f2f3d2b9d9d7d0d5d5e0g2d1c6d1c6d0e5e3c8d7d0c0e0e0e1e1e6c6e3c2c2e5e3e6e5c1d1c2e0d1c4c3d5c3e1c1c1c6c5e5c5c2f5e6d5c6c8d7c5e8b6e8f0b2", +"a1a8a7a9b3b9e3c5c8c8e2e5d1d3g6e4d2g6d2g6d3d2d9d6c6c0d7d1c5d0f5c0e3e7d7e7d6d6e5c3d5d5d7c8c7e3c1c1d7c6c6c2d4c3c6c4c3e5c6c1c2c7e3d0c4d7c3g2c3e5d5c1c8d3c5c5c8d9d6c8e3c5d7e5e6e6c2d0c1e3b9d7c9d2d5d8d4c9d1d0e6b9e3c5c8c8e2e5d1d3g6e4d2g6d2g6d3g6d6c7c1e5d7d1c5c1f5c0e3e7d7e7d6d6e5c3d5f5c5d7c7e3c1c1d7c6c6c2d4c3c6c4c3e5c6c1c2d7e3d0c4d7c3g2d4e6d5d0c7d3c5c5c8d9e7d7e3c5d7e5e6e6c5d0c1c5b9d7c9d2d5f5d4d6d1d0e6d9e3c5c8c8e2d0d1d3g6e4d2f2f3g6d3d2d9d6c6c0d7d1c5c1f5c0e3e7d7e7c7d6e5c3d5f5d7c8c7e3c1c1d7c6c6c2d4c3c2d1d5e5c6c1c2d7e3d0c4d7c3g2d4d0d5d0c7d3c5c5d7d6e7d7e3c5d7e5e6e6c5e6c1c5e4d7e7d2d5f5d4c9d1d0c1b9e3c5c8c8d2c0d1b9g6e4d2g6d2g6d3d2d9d6d0c0c5d1c5d0f5e5e3e7d7e7d6c7c4g3d5d5d7c8c7e3c1c1d7c6c6c2d4c3c5c4c3e5c6c1c2c7e3d0c4c5d4g2d4d0d5d0c7d3c5b6b6f0f7b2", +"a2a8a6a7b3d9c2c2c8c8c1e5c4g6d9e2d2d2d2e4d3d2b9c1e5c5c3c5d1c7f5d0g6c9b9d6c2e7e5f5c3c0e7d6c9e6d7c1d7e3c6d4d0e5c1c6c1e3e6c1c8c5c8c1d7d4e5f6c2c1e6d7b9c5e3d7e4c9c7d7d7c2d0e6c6d0e5d0e6b9e4d6c2e4d8d5c7c9c3c4e5d9c2c2c8c8c1e5c4g6d9e2d2d2d2e4e4d2b9c1e5c5c3c5d1c7f5d0g6c9b9d6c2e7c4d8f6c0e7d6c9e6d7c1d7e3c6d4d0e5c1c6c1e3e6e5c8c5c8c1d7d4e5f6c6c1e6d7b9c5e3d7e4c9c7d7d7c2d0e6e6d0d0d0e6b9e4d6d7e4g3d5c7c9c3c4e5d9c2c2c8c8c1e5c4g6d9e2g6d2d2e4e4d2b9c1e5c5c3c5d1c7f5d0g6c9b9d6c2e7e5f5f6c0e7d6c9e6d7c1d7e3c6d4d0e5c1c6c1e3e6c1c8c5c8c1d7d4e5f6c6c1e6d7b9c5e3d7e4c9c7d7d7c2d0e6e6d0d0d0e6e7f2c9c2e4d5d8c7c9c3c4e5d9c2c2c8c8e5c1c4g6d9e2d2d2d2d3d3d2b9c1e5c5c3c5d1c7f5d0g6c9b9d6c2e7c1f5f6c0e7d6c9e6d7c1d7e3c6d4d0e5c1c6c1e3e6e5c8c5c8c1d7d1e5f6c6c1e6d7b9c5e3b6f0f0b6b2", +"a2a8a7a6b3c8e6d9e3c7f6c0c9d3c9g6f3d2f3e4d2d2b9e6c6c9e2c5c5b9d0e5d2g6d3b9d6c9c6d8d4c9c9d6d6c2e3d0e3c2c0c2f6c6d4c2c8c1e6c6e3c1c5c3d4d1d4c5e6e5c7d7e3c2c2b9d3b9d6c8c2d6c1c5d0d0d0e6e3f2c9c8c8d2d5d8c8c9c4f6c7c8e6d9e3c7f6c0c9d3c9g6f3d2d2b9d2d2b9e6c6c9e2c5c5b9d0e5d2g6d3b9d6c9c6d8d1c9c9d6d6c2e3d0e3c2c0c2f6c6d4c2c8c1e6c6e3c1c5c3d4d1d4c5e6e5c7d7e3c2c2b9d3b9d6c8c2d6c1c5d0d0c1e6e3f2c9d7c8d2d5d8c8c9c4f6c7c8e6d9e3c7f6c0c9d3d9g6f3d2d2b9d2d2b9e6c6c9e2c5c5b9d0e5d2g6d3b9d6c9c6d8d4c9c9d6d6c2e3d0e3c2c0c2d4c6d4c2c8c1e6c6e3c1c5c3d4d1d4c5e6e5c7d7e3c2c2b9d3b9d6c8c2d6c1c5d0d0c1e6e3f2c9d7c7d2d5d8c8c9c4f6c7c8e6d9e3c7f6c0c9d3d9g6f3d2f3b9d2d2b9e6c6c9e2c5c5b9d0e5d2g6d3b9d6c9c6d8d4c9c9d6d6c2e3d0e3c2c0c2f6c6d4c2c8c1e6c6e3c1c5c3d4d1d4c5e6e5c7d7e3c2c2f0f0f0f0b2", +"a2b0b0a8b3d5d5c1e3d4e5d1d6d7d9d3d2e2d2g6g6e3d7e7d7c9e4c4e2b9c4c3f4b9c2c9e3d4c4d8c1c7d6c9c2d7c6c1c1e5c2d1c1c1e5c6c7e3e6c5c2d8e0e0f6c4e6c0d4c3c7c2c2c2c9d7d3b9c7c2c2d7e6d7d0e6e3d7d6d7c7c8e7d0e6d4c8d6b9d7c8d5d5c1e3d4e5d1d6d7d9d3d2e2d2g6g6e3d7e7d7c9e4c4e2b9c4c3f4b9c2c9e3d4c4d8c1c7d6c9c2d7c6c1c1e5c2d1c1c1e5c6c7e3e6c5c2d8e0e0f6c4e6c0d4c3c7c2c2c2c9d7d3b9c7c2c2d7e6d7d0e6e3d7d6d7c7c8e7d0e6d4c8d6b9d7c8d5d5c1e3d4e5d1d6d7b9d3d2f2d2g6g6e3d7e7d7c9e4c4e2b9c4c3f4b9c2c9e3d4c4d8c1c7d6c9c2d7c6c1c1e5c2d1e5c1e5c6c7e3e6c5c2d8e0e0f6c4e6c0d4c3c7c2c2c2c9d7d3b9c7c2c2d7e6d7d0e6e3d7d6d7c7c8e7d0e6d4c8d6b9d7c8d5d5c1e3d4e5d1d6d7b9d3d2e2d2g6g6e3d7e7d7c9e4c4e2b9c4c3f4b9c2c9e3d4c4d8c1c7d6c9c2d7c6c1c1e5c2d1c1c1e5c6c7e3e6c5c2d8e0e0f6c4e6c0d4c3c7c2c2c2c9b6f7f0f0b2", +"a2b0b0a8a5g2f5c8c2d4c4d9d7d7d2f2d2d2g6e4f2c5d7b9e6d3c5d7e4c4f5e5c9c6c2d7d5d1e5c1c4c9d7c6d7e6e6c6d4d4e5c6d0d4e3e3c6c6d7c2d0c3e0c2d0c1c4d5d5d1c2e6c2e7e3d9d3d2b9b9c9d3c8b9e3f2c9b9b9e2c7c7d2e3c1c9c8f3d3d7f5g2f5c8c2d4c4d9d7d7d2f2d2d2g6e4f2c5d7b9e6d3c5d7e4c4f5e5c9c6c2d7d5d1e5c1c4c9d7c6d7e6e6c6d4d4e5c6d0d4e3e3c6c6d7c2d0c3e0c2d0c1c4d5d5d1c2e6c2e7e3d9d3d2b9b9c9d3c8b9e3f2c9b9b9e2c7c7d2c5c1c9c8f3d3d7f5g2f5c8c2d4c4d9d7d7d2f2d2d2g6e4f2d7d7b9e6d3c5d7e4c4f5e5c9c6c2d7d5d1e5c1c4c9d7c6d7e6e6c6d4d4e5c2d0d4e3e3c6c6d7c2d0c3e0c2d0c1c4d5d5d1c2e6c2e7e3d9d3d2b9b9c9d3c8b9e3f2c9b9b9e2c7c7d2e3e6c9c8f3d3d7f5g2f5c8c2d4c4d9d7d7d2f2d2d2g6e4f2c5d7b9e6d3c5d7e4c4f5e5c9c6c2d7d5d1e5c1c4c9d7c6d7e6e6c6d4d4e5c6d0d4e3e3c6c6d7c2d0c3e0c2d0c1c4d5d5d1c2e6c2e7e3f0e9g1f7b2", +"a2b0b0a8a5c3c8c6c5e3c9c7d7f3d3d2g6g6d2e4b9b9d7d7b9d7c0b9c5c4e5c5b9b9d7d7c3c4c0c1c4d9c2c6c5e3c6e5d4d1c4c3c1d4c6c4d4d6c2d6c6d5f1d8e3e3e5d5d5c1c7c7c7c9e3c9d3b9f2b9d6b9d6b9d3e2b9g6c9f2b9d2d2e6c1c7c8e4b9c8d5c3c8c6c5e3c9c7d7f3d3d2g6g6d2e4b9b9d7d7b9d7c0b9c5c4e5c5b9b9d7d7c3c4c0c1c4d9c2c6c5e3c6e5d4d1c4c3c1d4c6c4d4d6c2d6c6d5f1d8e3e3e5d5d5c1c7c7c7c9e3c9d3b9f2b9d6b9d6b9d3e2b9g6c9f2b9d2d2e6c1c7c8e4b9c8d5c3c8c6c5e3c9c7d7f3d3d2g6g6d2f2b9b9d7d7b9d7c0b9c5c4e5c5b9b9d7d7c3c4c0c1c4d9c2c6c5e3c6e5d4d1c4c3c1d4c6c4d4d6c2d6c6d5f1d8e3e3e5d5d5c1c7c7c7c9e3c9d3b9f2b9d6b9d6b9d3e2b9g6c9f2b9d2d2e5c1c7c8e4b9c8d5c3c8c6c5e3c9c7d7f3d3d2g6g6d2e4b9b9d7d7b9d7c0b9c5c4e5c5b9b9d7d7c3c4c0c1c4d9c2c6c5e3c6e5d4d1c4c3c1d4c6c4d4d6c2d6c6d5f1d8e3e3e5d5d5c1c7c7c7c9d7f0e9f7g1b2", +"a2b0b0a8b3c6c6e5c5e3c7c8f2d2g6b9b9d2b9e4d6d7c5c9c0b9b9c0d0e5f5e3d7c3f5e0d8d5e5c0c0d9c7e3d7d6e5e6d4d1c6d4c5c0c3c2d7c7d7c2c1d8d8e5c6d7c2c0c3d7c9d6e3d7c9b9c9d6b9b9c8c8e4b9c7d3e2d6d3b9b9d2d2f4b9c5c7e2c9d7e5c6c6e5c5e3c7c8f2d2g6b9d3d2b9e4d6d7c5c9c0b9b9c0d0e5f5e3d7c3f5e0d8d5e5c0c0d9c7e3d7d6e5e6d4d1c6d4c5c0c3c2d7c7d7c2c1d8d8e5c6d7c2c0c3d7c9d6e3d7c9b9c9d6b9b9c8c8e4b9c7d3e2d6d3b9b9d2d2f4b9c5c7e2c9d7e5c6c6e5c5e3c7c8f2d2g6b9d3d2b9e4d6d7c5c9c0b9b9c0d0e5f5e3d7c3f5e0d8d5e5c0c0d9c7e3d7d6e5e6d4d1c6d4c5c0c3c2d7c7d7c2c1d8d8e5c6d7c2c0c3d7c9d6e3d7c9b9c9d6b9b9c8c8e4b9c7d3e2d6d3b9b9d2d2f4f2c5d7e2c9d7e5c6c6e5c5e3c7c8f2d2g6b9b9d2b9e4d6d7c5c9c0b9b9c0d0e5f5e3d7c3f5e0d8d5e5c0c0d9c7e3d7d6e5e6d4d1c6d4c5c0c3c2d7c7d7c2c1d8d8e5c6d7c2c0c3d7c9d6e3d7c9f7f0b6f0b2", +"a2b0a7a6b3d0e5e3e3e3c6c8d6c4d0e2b9g6d6d6d7e6b9c0d7c1b9b9d5c3d4c6g2d8d8d8e0c7e5e5f2c9d7d7d7e7c2d1d1d4d0d1d0e5c6c6e6c1d7d7c3e1c2c4e6c2e5f6d4c8c7c8c6c5e3d9c9c9e4d7c8b9f2c9d9d3c9c8e4b9b9e3c5g6e4e6c2e2d4d4c6d0e5e3e3e3c6c8d6c4d0e2f2f2d6d6d7e6b9c0d7c1b9b9d5c3d4c6g2d8d8d8e0c7e5e5f2c9d7d7d7e7c2d1d1d4d0d1d0e5c6c6e6c1d7d7c3e1c2c4e6c2e5f6d4c8c7c8c6c5e3d9c9c9e4d7c8b9f2c9d9d3c9c8e4b9b9e3c5g6e4e6c2e2d4d4c6d0e5e3e3e3c6c8d6c4d0e2f2f2d6d6d7e6b9c0d7c1b9b9d5c3d4c6g2d8d8d8e0c7e5e5f2c9d7d7d7e7c2d1d1d4d0d1d0e5c6c6e6c1d7d7c3e1c2c4e6c2e5f6d4c8c7c8c6c5e3d9c9c9e4d7c8b9f2c9d9d3c9c8e4b9b9c5c8g6e4e6c2e2d4d4c6d0e5e3e3e3c6c8d6c4d0e2b9g6d6d6d7e6b9c0d7c1b9b9d5c3d4c6g2d8d8d8e0c7e5e5f2c9d7d7d7e7c2d1d1d4d0d1d0e5c6c6e6c1d7d7c3e1c2c4e6c2e5f6d4c8c7c8c6c5e3f0e9f0f0b2", +"a2a8a7a6b3c2c6c9c8e3d7d7g6e6e6g6f3f2d7c7e3c2c5c2c5d7c1e5f5g3g3c2f5d8e6c1e6c6d5c6d2d2c6c2e7d9e3c3c3e5c1f6c6c1c8c5d0e5c0d7c2f6b9c2e5e6d1d4c2c7e3e3c1c1c1c8d6e7d7c7d6b9d3d6d3c9c7c9b9b9c8e6c8c9c7e3c1b9c4c4c2c2c6c9c8e3d7d7g6e6e6g6g6f2d7c7e3c2c5c2c5d7c1e5f5g3g3c2f5d8e6c1e6c6d5c6d2d2c6c2e7d9e3c3c3e5c1f6c6c1c8c5d0e5c0d7c2f6b9c2e5e6d1d4c2c7e3e3c1c1c1c8d6e7d7c7d6b9d3d6d3c9c7c9b9b9c8e6c8c9c7e3c1b9c4c4c2c2c6c9c8e3d7d7g6e6e6g6g6f2d7c7e3c2c5c2c5d7c1e5f5g3g3c2f5d8e6c1e6c6d5c6d2d2c6c2e7d9e3c3c3e5c1f6c6c1c8c5d0e5c0d7c2f6b9c2e5e6d1d4c2c7e3e3c1c1c1c8d6e7d7c7d6b9d3d6d3c9c7c9b9b9d7e6c8c9c7e3c1b9c4c4c2c2c6c9c8e3d7d7g6e6e6g6f3f2d7c7e3c2c5c2c5d7c1e5f5g3g3c2f5d8e6c1e6c6d5c6d2d2c6c2e7d9e3c3c3e5c1f6c6c1c8c5d0e5c0d7c2f6b9c2e5e6d1d4c2c7e3e3c1c1c1b6f0f7b6b2", +"a2a8a6a6b3c8d9d6c8c7d2f3e6e6e6f3c8c5e6e3d7d7d9c7c2e5c2e6d8d8c5d7c6c6d0c2c1e6d5c3c8c1d7d7e3c1f6d1g3c1e5g2d4c6c5c2d4c1c1e3e6c5c3c2d5d5g2e6d7c9c2c6c1c1e5c9e4d6d6e4c7c7d7c8c9e7c9b9d6c2e6c2d3c9f2e6d3e3f5c3d6c8d9d6c8c7d2f3e6e6e6f3c7c5e6e3d7d7d9c7c2e5c2e6d8d8c5d7c6c6d0c2c1e6d5c3c8c1d7d7e3c1f6d1g3c1e5g2d4c6c5c2d4c1c1e3e6c5c3c2d5d5g2e6d7c9c2c6c1c1e5c9e4d6d6e4c7c7d7c8c9e7c9b9d6c2e6c2d3c9f2e6d3e3f5c3d6c8d9d6c8c7d2f3e6e6e6f3c7c5e6e3d7d7d9c7c2e5c2e6d8d8c5d7c6c6d0c2c1e6d5c3c8c1d7d7e3c1f6d1g3c1e5g2d4c6c5c2d4c1c1e3e6c5c3c2d5d5g2e6d7c9c2c6c1c1e5c9e4d6d6e4c7c7d7c8c9e7c9b9d6c2e6c2d3c9f2e6d3e3f5c3d6c8d9d6c8c7d2f3e6e6e6f3c8c5e6e3d7d7d9c7c2e5c2e6d8d8c5d7c6c6d0c2c1e6d5c3c8c1d7d7e3c1f6d1g3c1e5g2d4c6c5c2d4c1c1e3e6c5c3c2d5d5g2e6d7c9c2c6c1c1e5f0f0f0f0b2", +"a2a7a6a7b3c8e7e7c8c7d2g6e6e6g6d9e5c5d7c2d7c6d9c9c2c0d1d1c6c1d7c6f6c4c0c5c4d7d7c7c2c4c5e6c5e5c3c3c3c4d0g2c4c3d7c2e6e6c6c5c1c2d5c5c4d5c1c6c5e3c6c1c2c5c6c2d7d6d7c8e2d7c7c9d9d7d9e3c5c2e3c1e4f2g6c9d3e5d5c6d6c8e7e7c8c7d2g6e6e6g6d9e5c5d7c2d7c6d9c9c2c0d1d1c6c1d7c6f6c4c0c5c4d7d7c7c2c4c5e6c5e5c3c3c3c4d0g2c4c3d7c2e6e6c6c5c1c2d5c5c4d5c1c6c5e3c6c1c2c5c6c2d7d6d7c8e2d7c7c9d9d7d9e3c5c2e3c1e4f2g6c9d3e5d5c6d6c8e7e7c8c7d2g6e6e6g6d9e5c5d7c2d7c6d9c9c2c0d1d1c6c1d7c6f6c4c0c5c4d7d7c7c2c4c5e6c5e5c3c3c3c4d0g2c4c3d7c2e6e6c6c5c1c2d5c5c4d5c1c6c5e3c6c1c2c5c6c2d7d6d7c8e2d7c7c9d9d7d9e3c5c2e3c1e4f2g6c9d3e5d5c6d6c8e7e7c8c7d2g6e6e6g6d9e5c5d7c2d7c6d9c9c2c0d1d1c6c1d7c6f6c4c0c5c4d7d7c7c2c4c5e6c5e5c3c3c3c4d0g2c4c3d7c2e6e6c6c5c1c2d5c5c4d5c1c6c5e3c6c1c2c5c6b8b6f0b6b2", +"a2a7a9a8b3c7c9c7d7c7g6e5e6c1f2d9c4c4e6e3c5c5b9b9e5e5d9c1e5e5e3c3c6e5c1e5d0d1c8c5e5c6e5e6c1e5d4c0d5c3c0d8e5e5c2e3d6c6c5d6c2c7e4b9c2c2c1c2c6c2c1c1e3c5c6c4b9e5b9d7c7e3c5f2d7d9c7e6d0c5d2e4b9g6d2d3e5c4e3d7d6c7c9c7d7c7g6e5e6c1f2d9c4c4e6e3c5c5b9b9e5e5d9c1e5e5e3c3c6e5c1e5d0d1c8c5e5c6e5e6c1e5d4c0d5c3c0d8e5e5c2e3d6c6c5d6c2c7e4b9c2c2c1c2c6c2c1c1e3c5c6c4b9e5b9d7c7e3c5f2d7d9c7e6d0c5d2e4b9g6d2d3e5c4e3d7d6c7c9c7d7c7g6e5e6c1f2d9c4c4e6e3c5c5b9b9e5e5d9c1e5e5e3c3c6e5c1e5d0d1c8c5e5c6e5e6c1e5d4c0d5c3c0d8e5e5c2e3d6c6c5d6c2c7e4b9c2c2c1c2c6c2c1c1e3c5c6c4b9e5b9d7c7e3c5f2d7d9c7e6d0c5d2e4b9g6d2d3e5c4e3d7d6c7c9c7d7c7g6e5e6c1f2d9c4c4e6e3c5c5b9b9e5e5d9c1e5e5e3c3c6e5c1e5d0d1c8c5e5c6e5e6c1e5d4c0d5c3c0d8e5e5c2e3d6c6c5d6c2c7e4b9c2c2c1c2c6c2c1c1e3c5c6f8f0b8f0b2", +"a2a7a9a8b3d9c7c8d7c8c7d4e6g6e4c1c4c8e5d7d9c7c8c1b9c0e1d8g2c0d5e5c0c6e6c1c1e5d7c8c4c2e5g2d5d1d0e3c1c4d5c3c8d6c0c8d7c7c2d6c5e7b9b9d6d7c6c1c8e3e6e6c5c6e6e3e5d0c9c6c7c9c9d7d7c2c1d4d0c9d3b9d2e2f4d6c2e5d0c7c9d9c7c8d7c8c7d4e6g6e4c1c4c8e5d7d9c7c8c1b9c0e1d8g2c0d5e5c0c6e6c1c1e5d7c8c4c2e5g2d5d1d0e3c1c4d5c3c8d6c0c8d7c7c2d6c5e7b9b9d6d7c6c1c8e3e6e6c5c6e6e3e5d0c9c6c7c9c9d7d7c2c1d4d0c9d3b9d2e2f4d6c2e5d0c7c9d9c7c8d7c8c7d4e6g6e4c1c4c8e5d7d9c7c8c1b9c0e1d8g2c0d5e5c0c6e6c1c1e5d7c8c4c2e5g2d5d1d0e3c1c4d5c3c8d6c0c8d7c7c2d6c5e7b9b9d6d7c6c1c8e3e6e6c5c6e6e3e5d0c9c6c7c9c9d7d7c2c1d4d0c9d3b9d2e2f4d6c2e5d0c7c9d9c7c8d7c8c7d4e6g6e4c1c4c8e5d7d9c7c8c1b9c0e1d8g2c0d5e5c0c6e6c1c1e5d7c8c4c2e5g2d5d1d0e3c1c4d5c3c8d6c0c8d7c7c2d6c5e7b9b9d6d7c6c1c8e3e6e6c5c6e6b8b8b8f0b2", +"a1a7a9b0b3d6e7c5e3g6c1d4c7d2e2d6c5c2c5c7c8c5c0c1c5e5c4e0c4e3c0e6c1d0c8c4c1f6c2d4c5c1d5c6e6c6e3e3c5d5f5c1c1d6c1c6d7c8b9d9c7c9b9c2c2c5g2d4c5c3c4c5d7c1c1c8e5d1c6d6c5b9c5d6e3d1c1c2d7d3b9d6d2c9d3c4c2e5c6c7c9d6e7c5e3g6c1d4c7d2e2d6c5c2c5c7c8c5c0c1c5e5c4e0c4e3c0e6c1d0c8c4c1f6c2d4c5c1d5c6e6c6e3e3c5d5f5c1c1d6c1c6d7c8b9d9c7c9b9c2c2c5g2d4c5c3c4c5d7c1c1c8e5d1c6d6c5b9c5d6e3d1c1c2d7d3b9d6d2c9d3c4c2e5c6c7c9d6e7c5e3g6c1d4c7d2e2d6c5c2c5c7c8c5c0c1c5e5c4e0c4e3c0e6c1d0c8c4c1f6c2d4c5c1d5c6e6c6e3e3c5d5f5c1c1d6c1c6d7c8b9d9c7c9b9c2c2c5g2d4c5c3c4c5d7c1c1c8e5d1c6d6c5b9c5d6e3d1c1c2d7d3b9d6d2c9d3c4c2e5c6c7c9d6e7c5e3g6c1d4c7d2e2d6c5c2c5c7c8c5c0c1c5e5c4e0c4e3c0e6c1d0c8c4c1f6c2d4c5c1d5c6e6c6e3e3c5d5f5c1c1d6c1c6d7c8b9d9c7c9b9c2c2c5g2d4c5c3c4c5d7c1e5b6b8f8b8b2", +"a2b0a9a8b3c8e7e3c2c4c8c8d2d2g6c5e6e6c6c7d7c2c5c1e5c0d4e5e3c7g2c3e6e3c4c2e3c6c0f6f5e5c1c5c6d7e3e3c4f6g2e5c7c1c0c7d7c1d7d6c9c8g6c2d5c1e1g2d4c1b9c4c2d5d4c2d0c0e6c2c2b9c1d6c1d1c2g2c1b9b9c1e6d3c2d5d6d3d0c7c7c7e7e3c2c4c8c8d2d2g6c5e6e6c6c7d7c2c5c1e5c0d4e5e3c7g2c3e6e3c4c2e3c6c0f6f5e5c1c5c6d7e3e3c4f6g2e5c7c1c0c7d7c1d7d6c9c8g6c2d5c1e1g2d4c1b9c4c2d5d4c2d0c0e6c2c2b9c1d6c1d1c2g2c1b9b9c1e6d3c2d5d6d3d0c7c7c7e7e3c2c4c8c8d2d2g6c5e6e6c6c7d7c2c5c1e5c0d4e5e3c7g2c3e6e3c4c2e3c6c0f6f5e5c1c5c6d7e3e3c4f6g2e5c7c1c0c7d7c1d7d6c9c8g6c2d5c1e1g2d4c1b9c4c2d5d4c2d0c0e6c2c2b9c1d6c1d1c2g2c1b9b9c1e6d3c2d5d6d3d0c7c7c7e7e3c2c4c8c8d2d2g6c5e6e6c6c7d7c2c5c1e5c0d4e5e3c7g2c3e6e3c4c2e3c6c0f6f5e5c1c5c6d7e3e3c4f6g2e5c7c1c0c7d7c1d7d6c9c8g6c2d5c1e1g2d4c1b9c4c2d5d4b8b8e8b8b2", +"a2b0a9a9b3c7e3c5c8e6c5f9e4e7d7e5c8c8d7c7c2c2c1d4c5c6c2c6c0e5c4d4c4e3c2d7d7e3c0e5c5d7c6c2c5d0c5d5c4d4d1c5d6c8d5c1c2e6d5c6c7f2e4e1e1e0e0d5d4c4c1c4c1c1e5c4d7c9c5e6g3c6c6c0e6e6e7c2e6b9c1f5d5b9d5d5d9d3e6d7c7c7e3c5c8e6c5f9e4e7d7e5c8c8d7c7c2c2c1d4c5c6c2c6c0e5c4d4c4e3c2d7d7e3c0e5c5d7c6c2c5d0c5d5c4d4d1c5d6c8d5c1c2e6d5c6c7f2e4e1e1e0e0d5d4c4c1c4c1c1e5c4d7c9c5e6g3c6c6c0e6e6e7c2e6b9c1f5d5b9d5d5d9d3e6d7c7c7e3c5c8e6c5f9e4e7d7e5c8c8d7c7c2c2c1d4c5c6c2c6c0e5c4d4c4e3c2d7d7e3c0e5c5d7c6c2c5d0c5d5c4d4d1c5d6c8d5c1c2e6d5c6c7f2e4e1e1e0e0d5d4c4c1c4c1c1e5c4d7c9c5e6g3c6c6c0e6e6e7c2e6b9c1f5d5b9d5d5d9d3e6d7c7c7e3c5c8e6c5f9e4e7d7e5c8c8d7c7c2c2c1d4c5c6c2c6c0e5c4d4c4e3c2d7d7e3c0e5c5d7c6c2c5d0c5d5c4d4d1c5d6c8d5c1c2e6d5c6c7f2e4e1e1e0e0d5d4c4c1c4c1c1c0f8b6f7b8b2", +"a2b0a9a9b3d2c5c7d2e6c4e2d6d7e3d1c2e3c8c9d7d8d4c6c6c9c8c2c5c2c4d1c4c3d7c2c1c1e5c0c5c5c6c1e3e6e3c1c1c3f5e6c5c8d4c3c7c6d5c3b9c5b9e1e1c4g2c1c4c1b9c1c4c4c6c2c5c9c0d4c1c0f6d4e6g6d2e2d2e6d8d5e6d6f5f6f9d9e3c5e2d2c5c7d2e6c4e2d6d7e3d1c2e3c8c9d7d8d4c6c6c9c8c2c5c2c4d1c4c3d7c2c1c1e5c0c5c5c6c1e3e6e3c1c1c3f5e6c5c8d4c3c7c6d5c3b9c5b9e1e1c4g2c1c4c1b9c1c4c4c6c2c5c9c0d4c1c0f6d4e6g6d2e2d2e6d8d5e6d6f5f6f9d9e3c5e2d2c5c7d2e6c4e2d6d7e3d1c2e3c8c9d7d8d4c6c6c9c8c2c5c2c4d1c4c3d7c2c1c1e5c0c5c5c6c1e3e6e3c1c1c3f5e6c5c8d4c3c7c6d5c3b9c5b9e1e1c4g2c1c4c1b9c1c4c4c6c2c5c9c0d4c1c0f6d4e6g6d2e2d2e6d8d5e6d6f5f6f9d9e3c5e2d2c5c7d2e6c4e2d6d7e3d1c2e3c8c9d7d8d4c6c6c9c8c2c5c2c4d1c4c3d7c2c1c1e5c0c5c5c6c1e3e6e3c1c1c3f5e6c5c8d4c3c7c6d5c3b9c5b9e1e1c4g2c1c4c1b9c1c4c4c6b8b8f0f8b2", +"a2a8a9a9b7c5c7c9c9c9d9e4c7c5c6c1c3c2d6e3d7d5c1d7d7c8d6c8e7e6c5d5e6d1c6d6d0c1c0c1c2e3c4c0c6d7d6c6c3c4g2d7c5c6g2d4c8d7f6e1f2c4c3i3c1d5c4c5c5c3d5c4e4c5e6d9e5c9c1c3e6c0f6f6d6d2d2f2d2f5d8e6f2e4d5d5f9e7c5d7e4c5c7c9c9c9d9e4c7c5c6c1c3c2d6e3d7d5c1d7d7c8d6c8e7e6c5d5e6d1c6d6d0c1c0c1c2e3c4c0c6d7d6c6c3c4g2d7c5c6g2d4c8d7f6e1f2c4c3i3c1d5c4c5c5c3d5c4e4c5e6d9e5c9c1c3e6c0f6f6d6d2d2f2d2f5d8e6f2e4d5d5f9e7c5d7e4c5c7c9c9c9d9e4c7c5c6c1c3c2d6e3d7d5c1d7d7c8d6c8e7e6c5d5e6d1c6d6d0c1c0c1c2e3c4c0c6d7d6c6c3c4g2d7c5c6g2d4c8d7f6e1f2c4c3i3c1d5c4c5c5c3d5c4e4c5e6d9e5c9c1c3e6c0f6f6d6d2d2f2d2f5d8e6f2e4d5d5f9e7c5d7e4c5c7c9c9c9d9e4c7c5c6c1c3c2d6e3d7d5c1d7d7c8d6c8e7e6c5d5e6d1c6d6d0c1c0c1c2e3c4c0c6d7d6c6c3c4g2d7c5c6g2d4c8d7f6e1f2c4c3i3c1d5c4c5c5c3d5c4e4c5c6f0b8b6b8b2", +"a2b0a9a8b3c5c7d4e5d9d9e4e4e6e5e6c1e3c7c5e6c8c8c1c1c8c8e5e5d8f5c4c2d7d6c7d0c4d5c5d7e3c6c5c1d0d5c3d4d5c5c2g2e6c0e0c6f6g2e6c5d5e1g2c4c2c1c4c2c5b9c4d7b9c2c5e6c6c2d0d1c0c4c6e7c5e6c1c2g3e1e5d2g6d8f5f9d9c2d7d7d7c8d4e5d9d9e4e4e6e5e6c1e3c7c5e6c8c8c1c1c8c8e5e5d8f5c4c2d7d6c7d0c4d5c5d7e3c6c5c1d0d5c3d4d5c5c2g2e6c0e0c6f6g2e6c5d5e1g2c4c2c1c4c2c5b9c4d7b9c2c5e6c6c2d0d1c0c4c6e7c5e6c1c2g3e1e5d2g6d8f5f9d9c2d7d7d7c8d4e5d9d9e4e4e6e5e6c1e3c7c5e6c8c8c1c1c8c8e5e5d8f5c4c2d7d6c7d0c4d5c5d7e3c6c5c1d0d5c3d4d5c5c2g2e6c0e0c6f6g2e6c5d5e1g2c4c2c1c4c2c5b9c4d7b9c2c5e6c6c2d0d1c0c4c6e7c5e6c1c2g3e1e5d2g6d8f5f9d9c2d7d7d7c8d4e5d9d9e4e4e6e5e6c1e3c7c5e6c8c8c1c1c8c8e5e5d8f5c4c2d7d6c7d0c4d5c5d7e3c6c5c1d0d5c3d4d5c5c2g2e6c0e0c6f6g2e6c5d5e1g2c4c2c1c4c2c5b9c4d7b9c2b6b8b8b8b2", +"a2a8a9a8b3c4b9d4f6c7d9g6g6c9d7c2d7c2d7e6c4c6e5c1e5d3e3c6e1e1f5c2e6d6e7d6d1c3c1e3c2e6c5c6c1d4f6d5c3e6c1e5e1d4d7c3d0d1d4c2c1e1e1c2c5c4c1c4c5b9c0c5c5b9e5c5d9e5e6d1c6e5c1c1b9c8c4e5c1d8f5g6d2c2d8d5d2c8c2c7e6e5b9d4f6c7d9g6g6c9d7c2d7c2d7e6c4c6e5c1e5d3e3c6e1e1f5c2e6d6e7d6d1c3c1e3c2e6c5c6c1d4f6d5c3e6c1e5e1d4d7c3d0d1d4c2c1e1e1c2c5c4c1c4c5b9c0c5c5b9e5c5d9e5e6d1c6e5c1c1b9c8c4e5c1d8f5g6d2c2d8d5d2c8c2c7e6e5b9d4f6c7d9g6g6c9d7c2d7c2d7e6c4c6e5c1e5d3e3c6e1e1f5c2e6d6e7d6d1c3c1e3c2e6c5c6c1d4f6d5c3e6c1e5e1d4d7c3d0d1d4c2c1e1e1c2c5c4c1c4c5b9c0c5c5b9e5c5d9e5e6d1c6e5c1c1b9c8c4e5c1d8f5g6d2c2d8d5d2c8c2c7e6e5b9d4f6c7d9g6g6c9d7c2d7c2d7e6c4c6e5c1e5d3e3c6e1e1f5c2e6d6e7d6d1c3c1e3c2e6c5c6c1d4f6d5c3e6c1e5e1d4d7c3d0d1d4c2c1e1e1c2c5c4c1c4c5b9c0c5c5b9e5b8f7b8e8b2", +"a2a8a8a8b3c7e7d5e5b9d9g6f2f2f2d7d7d6c1d7c4c3e5c3e4b9c7e5e0g2g2e6c7d7d6c6c3e6d0c5c1c0c2e6c3c4d5c3d4c1c6g2e1e0c2f5c3c1g3d7d1e1c4b9c4c5c5b9c4c2c5b9c4e2b9c5c6c5d1d1c9c5c5d7d6d7d6c1e6d5d0e4d2d1c3c6g6c7c7d7c5c7e7d5e5b9d9g6f2f2f2d7d7d6c1d7c4c3e5c3e4b9c7e5e0g2g2e6c7d7d6c6c3e6d0c5c1c0c2e6c3c4d5c3d4c1c6g2e1e0c2f5c3c1g3d7d1e1c4b9c4c5c5b9c4c2c5b9c4e2b9c5c6c5d1d1c9c5c5d7d6d7d6c1e6d5d0e4d2d1c3c6g6c7c7d7c5c7e7d5e5b9d9g6f2f2f2d7d7d6c1d7c4c3e5c3e4b9c7e5e0g2g2e6c7d7d6c6c3e6d0c5c1c0c2e6c3c4d5c3d4c1c6g2e1e0c2f5c3c1g3d7d1e1c4b9c4c5c5b9c4c2c5b9c4e2b9c5c6c5d1d1c9c5c5d7d6d7d6c1e6d5d0e4d2d1c3c6g6c7c7d7c5c7e7d5e5b9d9g6f2f2f2d7d7d6c1d7c4c3e5c3e4b9c7e5e0g2g2e6c7d7d6c6c3e6d0c5c1c0c2e6c3c4d5c3d4c1c6g2e1e0c2f5c3c1g3d7d1e1c4b9c4c5c5b9c4c2c5b9c4e2b9b8b8b8g0b2", +"a2b0a8b0b3e6e3e6d7d6f3g6b9e7d6d7d7d7c2c1f6f6d1d1c0d9c5e1d8e0d0c7d4f6c1c4e6c5c1e3d5e5e6d5g3d5c4e5c0c2e6e0d8d5e0c8d9d7c2c9e0c4c2b9c4c5c4c2c4c5b9c4c5b9c7e5c5e5c6b9d6c5e6b9c6e3c1d0c2g6e7e4e5c1d5e3f2e7e7d9c7e6e3e6d7d6f3g6b9e7d6d7d7d7c2c1f6f6d1d1c0d9c5e1d8e0d0c7d4f6c1c4e6c5c1e3d5e5e6d5g3d5c4e5c0c2e6e0d8d5e0c8d9d7c2c9e0c4c2b9c4c5c4c2c4c5b9c4c5b9c7e5c5e5c6b9d6c5e6b9c6e3c1d0c2g6e7e4e5c1d5e3f2e7e7d9c7e6e3e6d7d6f3g6b9e7d6d7d7d7c2c1f6f6d1d1c0d9c5e1d8e0d0c7d4f6c1c4e6c5c1e3d5e5e6d5g3d5c4e5c0c2e6e0d8d5e0c8d9d7c2c9e0c4c2b9c4c5c4c2c4c5b9c4c5b9c7e5c5e5c6b9d6c5e6b9c6e3c1d0c2g6e7e4e5c1d5e3f2e7e7d9c7e6e3e6d7d6f3g6b9e7d6d7d7d7c2c1f6f6d1d1c0d9c5e1d8e0d0c7d4f6c1c4e6c5c1e3d5e5e6d5g3d5c4e5c0c2e6e0d8d5e0c8d9d7c2c9e0c4c2b9c4c5c4c2c4c5b9c4c5b9c7b8b8e8b8b2", +"a2b0b0b0b7d4d4e6e3c9f2d9d7c4d7d1c7c5c2c2d1e5d4d5c2e5d1g3d8c6c9d1c3d5c1c6c1c1d1c0d5c0c6d5g2e0c1c6e3c6e5d5f1d5e0b9c8c5c2b9e1c2d7c5c4c2c1c1e5b9c4c4c5c4c9d3f4d2f9g6e6c2d6c7e6f5d4c1d2d2d6d2e5c6c8d7f9e2d9d2d6d4d4e6e3c9f2d9d7c4d7d1c7c5c2c2d1e5d4d5c2e5d1g3d8c6c9d1c3d5c1c6c1c1d1c0d5c0c6d5g2e0c1c6e3c6e5d5f1d5e0b9c8c5c2b9e1c2d7c5c4c2c1c1e5b9c4c4c5c4c9d3f4d2f9g6e6c2d6c7e6f5d4c1d2d2d6d2e5c6c8d7f9e2d9d2d6d4d4e6e3c9f2d9d7c4d7d1c7c5c2c2d1e5d4d5c2e5d1g3d8c6c9d1c3d5c1c6c1c1d1c0d5c0c6d5g2e0c1c6e3c6e5d5f1d5e0b9c8c5c2b9e1c2d7c5c4c2c1c1e5b9c4c4c5c4c9d3f4d2f9g6e6c2d6c7e6f5d4c1d2d2d6d2e5c6c8d7f9e2d9d2d6d4d4e6e3c9f2d9d7c4d7d1c7c5c2c2d1e5d4d5c2e5d1g3d8c6c9d1c3d5c1c6c1c1d1c0d5c0c6d5g2e0c1c6e3c6e5d5f1d5e0b9c8c5c2b9e1c2d7c5c4c2c1c1e5b9c4c4c5c4c9e9g4g1g4b2", +"a2b0a8b0a5d4d1c6c1e6f2d9c8c4c2c6c7d6e5d0f6d1e0c8c2e6f6d8e1b9c7d4d5d0c0c6d0c4d5c3e6c1e6f5d8c1c8e6d6e6c4e0d5e5d8c6d7c2c5d5c2c5b9c5c4c2c1c4c2c4c4c2c4e4e3d2d2f4d2b9c6e6c9d7g3f5g3c9e5e6c9d3c7c5e5c9f2f4d7d6d4d4d1c6c1e6f2d9c8c4c2c6c7d6e5d0f6d1e0c8c2e6f6d8e1b9c7d4d5d0c0c6d0c4d5c3e6c1e6f5d8c1c8e6d6e6c4e0d5e5d8c6d7c2c5d5c2c5b9c5c4c2c1c4c2c4c4c2c4e4e3d2d2f4d2b9c6e6c9d7g3f5g3c9e5e6c9d3c7c5e5c9f2f4d7d6d4d4d1c6c1e6f2d9c8c4c2c6c7d6e5d0f6d1e0c8c2e6f6d8e1b9c7d4d5d0c0c6d0c4d5c3e6c1e6f5d8c1c8e6d6e6c4e0d5e5d8c6d7c2c5d5c2c5b9c5c4c2c1c4c2c4c4c2c4e4e3d2d2f4d2b9c6e6c9d7g3f5g3c9e5e6c9d3c7c5e5c9f2f4d7d6d4d4d1c6c1e6f2d9c8c4c2c6c7d6e5d0f6d1e0c8c2e6f6d8e1b9c7d4d5d0c0c6d0c4d5c3e6c1e6f5d8c1c8e6d6e6c4e0d5e5d8c6d7c2c5d5c2c5b9c5c4c2c1c4c2c4c4c2c4e4c5g1g4g4g4b2", +"a2b0b0a7a5c4d7c6c1d0e5d6c8e6c2c7c9e3c1c1d1d8c8c2e6f6d1c4c9g6d5d1e5e6c2c2c1d1c3d4c1c1c4c1g2c4c6d0c6c7e6f1c5b9c5c8c8c2e1e1c6c5c5c4c2c4d8c1c4c5c4b9c5d7c9e7d2d2d3c7c1c1d0c4d8d1f2c3f5d4c2e7b9e3d7c9e2d3c7d4d4c4d7c6c1d0e5d6c8e6c2c7c9e3c1c1d1d8c8c2e6f6d1c4c9g6d5d1e5e6c2c2c1d1c3d4c1c1c4c1g2c4c6d0c6c7e6f1c5b9c5c8c8c2e1e1c6c5c5c4c2c4d8c1c4c5c4b9c5d7c9e7d2d2d3c7c1c1d0c4d8d1f2c3f5d4c2e7b9e3d7c9e2d3c7d4d4c4d7c6c1d0e5d6c8e6c2c7c9e3c1c1d1d8c8c2e6f6d1c4c9g6d5d1e5e6c2c2c1d1c3d4c1c1c4c1g2c4c6d0c6c7e6f1c5b9c5c8c8c2e1e1c6c5c5c4c2c4d8c1c4c5c4b9c5d7c9e7d2d2d3c7c1c1d0c4d8d1f2c3f5d4c2e7b9e3d7c9e2d3c7d4d4c4d7c6c1d0e5d6c8e6c2c7c9e3c1c1d1d8c8c2e6f6d1c4c9g6d5d1e5e6c2c2c1d1c3d4c1c1c4c1g2c4c6d0c6c7e6f1c5b9c5c8c8c2e1e1c6c5c5c4c2c4d8c1c4c5c4b9c5d7c9f0g1g1f0b2", +"a2b0a6a6b1g4e9e9b6e8f0f0b8b8b8f0b8b8g0f8g0b8b8f8b5g0b5f0f0e9g0f8f0f8e8e8g0e8g0g0e8e8f8b8b5e8e8b6f8b6e8j2f0f0b8b8f0g0j3j3b8f0b8b8b8b5b8b8b8b8b8f8f0f0f0g1g1f0b6f8e8e8b8f8j2g0g1b8b8b8b8b8f0f0b6b6f0g1e8f8f8g4e9e9b6e8f0f0b8b8b8f0b8b8g0f8g0b8b8f8b5g0b5f0f0e9g0f8f0f8e8e8g0e8g0g0e8e8f8b8b5e8e8b6f8b6e8j2f0f0b8b8f0g0j3j3b8f0b8b8b8b5b8b8b8b8b8f8f0f0f0g1g1f0b6f8e8e8b8f8j2g0g1b8b8b8b8b8f0f0b6b6f0g1e8f8f8g4e9e9b6e8f0f0b8b8b8f0b8b8g0f8g0b8b8f8b5g0b5f0f0e9g0f8f0f8e8e8g0e8g0g0e8e8f8b8b5e8e8b6f8b6e8j2f0f0b8b8f0g0j3j3b8f0b8b8b8b5b8b8b8b8b8f8f0f0f0g1g1f0b6f8e8e8b8f8j2g0g1b8b8b8b8b8f0f0b6b6f0g1e8f8f8g4e9e9b6e8f0f0b8b8b8f0b8b8g0f8g0b8b8f8b5g0b5f0f0e9g0f8f0f8e8e8g0e8g0g0e8e8f8b8b5e8e8b6f8b6e8j2f0f0b8b8f0g0j3j3b8f0b8b8b8b5b8b8b8b8b8f8f0f0f0b2g1f0b6b2", +"a2b0a7b1b4f0g1e9f0b8f0g1b6b8b6b8b6j3g0b8j3b8f8b6g0f8g0f7f0f8b5j2b6b6b6e8g0f8f8e8e8g0e8f8e8b8b6g0b6b6b6j2j2b8f0f8g0b5j3g0e8f8e9b6b8f8f0f0f8f8b8b6b8e9f7f7f7f7b8b8e8b8b6b6e8e8g1g0g0f0b8b8b6b6b6b6f0f0f8f8b6g1g1e9f0b8f0g1b6b8b6b8b6j3g0b8j3b8f8b6g0f8g0f7f0f8b5j2b6b6b6e8g0f8f8e8e8g0e8f8e8b8b6g0b6b6b6j2j2b8f0f8g0b5j3g0e8f8e9b6b8f8f0f0f8f8b8b6b8e9f7f7f7f7b8b8e8b8b6b6e8e8g1g0g0f0b8b8b6b6b6b6f0f0f8f8b6g1g1e9f0b8f0g1b6b8b6b8b6j3g0b8j3b8f8b6g0f8g0f7f0f8b5j2b6b6b6e8g0f8f8e8e8g0e8f8e8b8b6g0b6b6b6j2j2b8f0f8g0b5j3g0e8f8e9b6b8f8f0f0f8f8b8b6b8e9f7f7f7f7b8b8e8b8b6b6e8e8g1g0g0f0b8b8b6b6b6b6f0f0f8f8b6g1g1e9f0b8f0g1b6b8b6b8b6j3g0b8j3b8f8b6g0f8g0f7f0f8b5j2b6b6b6e8g0f8f8e8e8g0e8f8e8b8b6g0b6b6b6j2j2b8f0f8g0b5j3g0e8f8e9b6b8f8f0f0f8f8b8b6b8e9f7g1b2f0b8b2", +"a1a6b1b4g0b6b5b8e9b5b6b6b8f0b8b8f8j2b8b8f8b5e8b6f8b5f0f7f0f7j2b5g0b8e8b8b8e8g0b8f8e8f8f0b5b6f0e8b8b6j2b6g0b6f8b8b5b4g0f7f8g1b8f0b6f0f7b8b5b8f7b8b6b6g1e9g1f0b6e9f0e9e8b6f8b6g1f8e8e9b8f0e8e8b6b6b6g0g0g0g0b8b5b8e9b5b6b6b8f0b8b8f8j2b8b8f8b5e8b6f8b5f0f7f0f7j2b5g0b8e8b8b8e8g0b8f8e8f8f0b5b6f0e8b8b6j2b6g0b6f8b8b5b4g0f7f8g1b8f0b6f0f7b8b5b8f7b8b6b6g1e9g1f0b6e9f0e9e8b6f8b6g1f8e8e9b8f0e8e8b6b6b6g0g0g0g0b8b5b8e9b5b6b6b8f0b8b8f8j2b8b8f8b5e8b6f8b5f0f7f0f7j2b5g0b8e8b8b8e8g0b8f8e8f8f0b5b6f0e8b8b6j2b6g0b6f8b8b5b4g0f7f8g1b8f0b6f0f7b8b5b8f7b8b6b6g1e9g1f0b6e9f0e9e8b6f8b6g1f8e8e9b8f0e8e8b6b6b6g0g0g0g0b8b5b8e9b5b6b6b8f0b8b8f8j2b8b8f8b5e8b6f8b5f0f7f0f7j2b5g0b8e8b8b8e8g0b8f8e8f8f0b5b6f0e8b8b6j2b6g0b6f8b8b5b4g0f7f8g1b8f0b6f0f7b8b5b8f7b8b6b6g1e9g1b2b6b2", +"a2b1a0j2e8e8f8b8b8b8f8b8b8b6b8b6b8g0b8b8b5b6b6f8f8f8g1e9g1g1j2b5b5f7f0g0g0b8g0e8b6b8b8b6f8b6f0b6b5b8b8f8b8e8e8f8j2j3b8b8f0g1b6f8b6g1b8g0f8b8f0f0f7b8b6e9g1e9f7f7e9e8f0e8g0b5g1f8e8g1b6b6b6b6b6b6g0j2b5f8e8b8f8b8b8b8f8b8b8b6b8b6b8g0b8b8b5b6b6f8f8f8g1e9g1g1j2b5b5f7f0g0g0b8g0e8b6b8b8b6f8b6f0b6b5b8b8f8b8e8e8f8j2j3b8b8f0g1b6f8b6g1b8g0f8b8f0f0f7b8b6e9g1e9f7f7e9e8f0e8g0b5g1f8e8g1b6b6b6b6b6b6g0j2b5f8e8b8f8b8b8b8f8b8b8b6b8b6b8g0b8b8b5b6b6f8f8f8g1e9g1g1j2b5b5f7f0g0g0b8g0e8b6b8b8b6f8b6f0b6b5b8b8f8b8e8e8f8j2j3b8b8f0g1b6f8b6g1b8g0f8b8f0f0f7b8b6e9g1e9f7f7e9e8f0e8g0b5g1f8e8g1b6b6b6b6b6b6g0j2b5f8e8b8f8b8b8b8f8b8b8b6b8b6b8g0b8b8b5b6b6f8f8f8g1e9g1g1j2b5b5f7f0g0g0b8g0e8b6b8b8b6f8b6f0b6b5b8b8f8b8e8e8f8j2j3b8b8f0g1b6f8b6g1b8g0f8b8f0f0f7b8b6e9g1e9b2b2", +"a4i4i4b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2i4b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2i4b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2i4b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2i4b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2i2", +}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/sample.emacs --- a/etc/sample.emacs Mon Aug 13 09:13:58 2007 +0200 +++ b/etc/sample.emacs Mon Aug 13 09:15:11 2007 +0200 @@ -258,11 +258,44 @@ ; t ;; don't do the normal operations. ; ))) - )) )) +;; Oh, and here's a cute hack you might want to put in the sample .emacs +;; file: it changes the color of the window if it's not on the local +;; machine, or if it's running as root: + +;; local emacs background: whitesmoke +;; remote emacs background: palegreen1 +;; root emacs background: coral2 +(cond + ((and (string-match "XEmacs" emacs-version) + (eq window-system 'x) + (boundp 'emacs-major-version) + (= emacs-major-version 19) + (>= emacs-minor-version 12)) + (let* ((root-p (eq 0 (user-uid))) + (dpy (or (getenv "DISPLAY") "")) + (remote-p (not + (or (string-match "^\\(\\|unix\\|localhost\\):" dpy) + (let ((s (system-name))) + (if (string-match "\\.\\(netscape\\|mcom\\)\\.com" s) + (setq s (substring s 0 (match-beginning 0)))) + (string-match (concat "^" (regexp-quote s)) dpy))))) + (bg (cond (root-p "coral2") + (remote-p "palegreen1") + (t nil)))) + (cond (bg + (let ((def (color-name (face-background 'default))) + (faces (list-faces))) + (while faces + (let ((obg (face-background (car faces)))) + (if (and obg (equal def (color-name obg))) + (set-face-background (car faces) bg))) + (setq faces (cdr faces))))))))) + + ;;; Older versions of emacs did not have these variables ;;; (emacs-major-version and emacs-minor-version.) ;;; Let's define them if they're not around, since they make @@ -320,16 +353,50 @@ ;;; ******************** -;;; Load ange-ftp, which uses the FTP protocol as a pseudo-filesystem. +;;; Load efs, which uses the FTP protocol as a pseudo-filesystem. ;;; When this is loaded, the pathname syntax /user@host:/remote/path ;;; refers to files accessible through ftp. ;;; (require 'dired) -(require 'ange-ftp) -(setq ange-ftp-default-user "anonymous" ; id to use for /host:/remote/path - ange-ftp-generate-anonymous-password t ; use $USER@`hostname` - ange-ftp-binary-file-name-regexp "." ; always transfer in binary mode +;; compatible ange-ftp/efs initialization derived from code +;; from John Turner +;; As of 19.15, efs is bundled instead of ange-ftp. +;; NB: doesn't handle 20.0 properly, efs didn't appear until 20.1. +;; +;; The environment variable EMAIL_ADDRESS is used as the password +;; for access to anonymous ftp sites, if it is set. If not, one is +;; constructed using the environment variables USER and DOMAINNAME +;; (e.g. turner@lanl.gov), if set. + +(if (and running-xemacs (< emacs-major-version 20) (>= emacs-minor-version 15)) + (progn + (message "Loading and configuring bundled packages... efs") + (require 'efs-auto) + (if (getenv "USER") + (setq efs-default-user (getenv "USER"))) + (if (getenv "EMAIL_ADDRESS") + (setq efs-generate-anonymous-password (getenv "EMAIL_ADDRESS")) + (if (and (getenv "USER") + (getenv "DOMAINNAME")) + (setq efs-generate-anonymous-password + (concat (getenv "USER")"@"(getenv "DOMAINNAME"))))) + (setq efs-auto-save 1) + )) +(if (and running-xemacs (< emacs-major-version 20) (< emacs-minor-version 15)) + (progn + (message "Loading and configuring bundled packages... ange-ftp") + (require 'ange-ftp) + (if (getenv "USER") + (setq ange-ftp-default-user (getenv "USER"))) + (if (getenv "EMAIL_ADDRESS") + (setq ange-ftp-generate-anonymous-password (getenv "EMAIL_ADDRESS")) + (if (and (getenv "USER") + (getenv "DOMAINNAME")) + (setq ange-ftp-generate-anonymous-password + (concat (getenv "USER")"@"(getenv "DOMAINNAME"))))) + (setq ange-ftp-auto-save 1) ) + ) ;;; ******************** @@ -339,8 +406,8 @@ (setq auto-save-directory (expand-file-name "~/autosave/") auto-save-directory-fallback auto-save-directory auto-save-hash-p nil - ange-ftp-auto-save t - ange-ftp-auto-save-remotely nil + efs-auto-save t + efs-auto-save-remotely nil ;; now that we have auto-save-timeout, let's crank this up ;; for better interactive response. auto-save-interval 2000 diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/audio_stamp.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/audio_stamp.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,43 @@ +/* XPM */ +static char *audio_stamp[] = { +/* width height num_colors chars_per_pixel */ +" 18 24 12 1", +/* colors */ +". c #000000", +"# c #00ffff", +"a c #00ff00", +"b c #bebebe s background", +"c c #ff00ff", +"d c #ff0000", +"e c #6e6e6e", +"f c #ffffff", +"g c #ffff00", +"h c #e7e7e7", +"i c #bfbfbf", +"j c #0000ff", +/* pixels */ +"bbbbbbbbbbbbbbbbbb", +"bbbbbbbbbbbbabbbbb", +"bbbbbbbbbbbebbbbbb", +"bbbbbbbeebbbbbebbb", +"bbbbbbbe.bbbbjebbb", +"bbbbbbeh.bbejijhbb", +"bbbbbebh.bijhieiib", +"bbbbiehh.bieiejibb", +"b..e.hhh.biebjjiib", +"b.hehhhh.bejibebci", +"b.hhhhhh.ijjiibiib", +"b.hhhhhh.ihiiieiii", +"b.hhhhhh.ibiiieiii", +"b.hhhhhh.bhfbbdhii", +"b.hhhhhh.bbbbieiib", +"b.hehhhh.bbbideiib", +"b..e.hhh.bbbidebbb", +"bbbbbehh.bbbiibbbb", +"bbbbbebh.bbbbbbbgi", +"bbbbiieh.bbbbbbbgg", +"bbbbiibe.bb#bbbbib", +"bbbbbbbeebbbh#bbgb", +"bbbbbbbbbbbbbbbbii", +"bbbbbbbbbbbbbbbbgb" +}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/document.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/document.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,69 @@ +/* XPM */ +static char *document2[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 32 1", +/* colors */ +". c #000000", +"# c #a4a5a4", +"a c #9f9f9f", +"b c #999999", +"c c #919191", +"d c #818181", +"e c #6d6d6d", +"f c #5d5d5d", +"g c #494949", +"h c #eaeaea", +"i c #373737", +"j c #e3e4e3", +"k c #d4d4d4", +"l c #c8c8c8", +"m c #0d0d0d", +"n c #b4b4b4", +"o c #b0aeb0", +"p c #aeaeae", +"q c #aaaaaa s background", +"r c #888888", +"s c #767676", +"t c #646464", +"u c #545454", +"v c #ffffff", +"w c #f6f7f6", +"x c #efefef", +"y c #dfdfdf", +"z c #dad9da", +"A c #242424", +"B c #cfcfcf", +"C c #bfbfbf", +"D c #b9b9b9", +/* pixels */ +"qqqqqaetr#qqqqqqqqqqqqqq", +"qqqq#errefd#qqqqqqqqqqqq", +"qqq#rzklCqcdsdra#qqqqqqq", +"qqqrkvvxzkkln#rtfdaqqqqq", +"qq#dvvvvvvxxzklCqcrdsr#q", +"qq#rresr#lxvvvvxhzl#tisq", +"qqqqqdsefgieCxvvvvxiAiiq", +"qqqqqrCttffuuuernkagtiiq", +"qqqq#nxvxxcsuetsuigrsitq", +"qqqqczhzxhzzlC#seffscifq", +"qqqqrvlyxxzlCCzxxkCaCmrq", +"qqqq#vvlzqhzvvvklalvciaq", +"qqqckhlkzzhlCCkhhxvvguqq", +"qqqrvvxvklalxxxlq#xvmd#q", +"qqqcvxklkvxvxllkhxvlArqq", +"qq#Cvvvvvvvvvvvvhxvtgqqq", +"qqrxxvvvvvvvvvvvvvvAeqqq", +"qqrvkzhzhxxvvvvvvvkmrqqq", +"qqqlhvvlCrnkhvvvvvci#qqq", +"qckxxxhxxkzzllllvvguqqqq", +"qrvklklxxxhlnlzxvhmrqqqq", +"qahzvvhCcCnxvxlhvqicqqqq", +"clxkkqlzhkkklCzvvfg#qqqq", +"txvvvvxlrzlzvvkvvAeqqqqq", +"dtalvvvvvvxknzhvlArqqqqq", +"rgimmgdqhvvvvvvvei#qqqqq", +"qq#rtiA..i#xvvvvitqqqqqq", +"qqqqqarsgimmis#Cmrqqqqqq", +"qqqqqqqqq#ceiA..icqqqqqq", +"qqqqqqqqqqqq#rdfeqqqqqqq" +}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/film.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/film.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,69 @@ +/* XPM */ +static char *film[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 32 1", +/* colors */ +". c #000000", +"# c #799fa1", +"a c #060919", +"b c #411707", +"c c #8fc7ff", +"d c #3f4040", +"e c #873d06", +"f c #62b1e6", +"g c #392e26", +"h c #292a2a", +"i c #9a9e9f", +"j c #284367", +"k c #646666", +"l c #aacae6", +"m c #238fc1", +"n c #182a50", +"o c #93673e", +"p c #7f7f80", +"q c #131516", +"r c #aaaaaa s background", +"s c #ddf2fd", +"t c #6991ac", +"u c #1c0804", +"v c #494b4a", +"w c #948b79", +"x c #733006", +"y c #151c34", +"z c #592009", +"A c #9f4c05", +"B c #54585d", +"C c #376389", +"D c #231305", +/* pixels */ +"rrrrrrrrwirrrrrrrrrrrrrr", +"rrrrpddv..prrrrrrrrrrrrr", +"rrrpjdkyajjprriiiwiiwirr", +"rrrnf.pfu.tgri.q....agir", +"rrktC.dlC.hCpiivqCCjjhBr", +"rrdcv..lca.tjrrddoBoogdr", +"rptcj.ulcj.djrrvdAAAAzBr", +"rBtcj..lcCuapprvgxxxxbdr", +"rvcfB.alkr..#BrBdDDDDuBr", +"rdjkt.kB.#..#vrBgnnnhadr", +"rjq.lCla.kq.BvrBgttmtjhr", +"rn..llc..Bh.BvrkvAAAAbBr", +"rh..rjl..Bh.kvrkgAAAAzdr", +"rn..#tla.pa.pdrBgxxxxbdr", +"rv..rccq.py.pBrvgzbzbqkr", +"rjhhlniC.ra.rdrvha.auhBr", +"rv#lt.Bctc..fBrdgCmCChkr", +"rvcct.qlc#.utkrhztCtpnBr", +"rBflC..lcC.nCiidxAAAxdkr", +"rptcB..lcj.Cvrphbeeezhpr", +"rrdcC.qlfuutkrkhDbzbqhrr", +"rrktt.Bcv.Cnrrkq....ddrr", +"rrihtnrtaaBkrrhnCCCnhBrr", +"rrrdq#t..avrrpBepppDqwrr", +"rrrp..BipwrrrvDeeexqdrrr", +"rrrrh.krrrrrkqDbDbDhkrrr", +"rrrrp.qrrrrphynnyaudrrrr", +"rrrrrd.hkpBqhoBkjqdprrrr", +"rrrrrrv......u.qhhprrrrr", +"rrrrrrrpvqu..uadpirrrrrr" +}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/gear.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/gear.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,278 @@ +/* XPM */ +static char *gear[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 241 2", +/* colors */ +".. c #aaaaaa s background", +".# c #8e8e8e", +".a c #4d4d4d", +".b c #9f9f9f", +".c c #888888", +".d c #848484", +".e c #838383", +".f c #828282", +".g c #484848", +".h c #303030", +".i c #131313", +".j c #141414", +".k c #707070", +".l c #777777", +".m c #2b2b2b", +".n c #1d1d1d", +".o c #121212", +".p c #393939", +".q c #727272", +".r c #a0a0a0", +".s c #8b8b8b", +".t c #3e3e3e", +".u c #878787", +".v c #151515", +".w c #2d2d2d", +".x c #8a8a8a", +".y c #171717", +".z c #202020", +".A c #0c0c0c", +".B c #191919", +".C c #222222", +".D c #333333", +".E c #2f2f2f", +".F c #353535", +".G c #cacaca", +".H c #e9e9e9", +".I c #5c5c5c", +".J c #c5c5c5", +".K c #323232", +".L c #d9d9d9", +".M c #f9f9f9", +".N c #ffffff", +".O c #fbfbfb", +".P c #c7c7c7", +".Q c #1e1e1e", +".R c #6c6c6c", +".S c #a7a7a7", +".T c #242424", +".U c #1a1a1a", +".V c #6e6e6e", +".W c #bababa", +".X c #efefef", +".Y c #fefefe", +".Z c #f6f6f6", +".0 c #eaeaea", +".1 c #e8e8e8", +".2 c #454545", +".3 c #d3d3d3", +".4 c #e0e0e0", +".5 c #f7f7f7", +".6 c #4f4f4f", +".7 c #232323", +".8 c #e4e4e4", +".9 c #f0f0f0", +"#. c #e7e7e7", +"## c #e5e5e5", +"#a c #bfbfbf", +"#b c #fcfcfc", +"#c c #d1d1d1", +"#d c #d2d2d2", +"#e c #ececec", +"#f c #f5f5f5", +"#g c #111111", +"#h c #363636", +"#i c #7f7f7f", +"#j c #e6e6e6", +"#k c #e2e2e2", +"#l c #e1e1e1", +"#m c #f4f4f4", +"#n c #cfcfcf", +"#o c #cdcdcd", +"#p c #d5d5d5", +"#q c #1c1c1c", +"#r c #101010", +"#s c #919191", +"#t c #666666", +"#u c #dfdfdf", +"#v c #dddddd", +"#w c #2e2e2e", +"#x c #dbdbdb", +"#y c #cecece", +"#z c #cccccc", +"#A c #c8c8c8", +"#B c #c6c6c6", +"#C c #c3c3c3", +"#D c #a3a3a3", +"#E c #1f1f1f", +"#F c #212121", +"#G c #a1a1a1", +"#H c #272727", +"#I c #565656", +"#J c #4e4e4e", +"#K c #b2b2b2", +"#L c #dedede", +"#M c #5d5d5d", +"#N c #6a6a6a", +"#O c #dadada", +"#P c #d0d0d0", +"#Q c #cbcbcb", +"#R c #c9c9c9", +"#S c #c4c4c4", +"#T c #c2c2c2", +"#U c #c1c1c1", +"#V c #373737", +"#W c #0f0f0f", +"#X c #969696", +"#Y c #d7d7d7", +"#Z c #d8d8d8", +"#0 c #d6d6d6", +"#1 c #d4d4d4", +"#2 c #bdbdbd", +"#3 c #494949", +"#4 c #181818", +"#5 c #343434", +"#6 c #dcdcdc", +"#7 c #bebebe", +"#8 c #bcbcbc", +"#9 c #0e0e0e", +"a. c #c0c0c0", +"a# c #bbbbbb", +"aa c #b8b8b8", +"ab c #414141", +"ac c #b6b6b6", +"ad c #f8f8f8", +"ae c #b9b9b9", +"af c #b7b7b7", +"ag c #b5b5b5", +"ah c #3d3d3d", +"ai c #404040", +"aj c #7b7b7b", +"ak c #b4b4b4", +"al c #afafaf", +"am c #444444", +"an c #161616", +"ao c #4b4b4b", +"ap c #b3b3b3", +"aq c #b1b1b1", +"ar c #adadad", +"as c #ababab", +"at c #8f8f8f", +"au c #b0b0b0", +"av c #aeaeae", +"aw c #acacac", +"ax c #a9a9a9", +"ay c #a6a6a6", +"az c #a4a4a4", +"aA c #9d9d9d", +"aB c #9b9b9b", +"aC c #a8a8a8", +"aD c #a5a5a5", +"aE c #9e9e9e", +"aF c #9c9c9c", +"aG c #9a9a9a", +"aH c #989898", +"aI c #383838", +"aJ c #8c8c8c", +"aK c #959595", +"aL c #939393", +"aM c #6d6d6d", +"aN c #a2a2a2", +"aO c #999999", +"aP c #979797", +"aQ c #949494", +"aR c #929292", +"aS c #909090", +"aT c #8d8d8d", +"aU c #292929", +"aV c #858585", +"aW c #3f3f3f", +"aX c #474747", +"aY c #868686", +"aZ c #525252", +"a0 c #2c2c2c", +"a1 c #7a7a7a", +"a2 c #4c4c4c", +"a3 c #585858", +"a4 c #686868", +"a5 c #7e7e7e", +"a6 c #898989", +"a7 c #717171", +"a8 c #3a3a3a", +"a9 c #515151", +"b. c #5a5a5a", +"b# c #424242", +"ba c #818181", +"bb c #050505", +"bc c #797979", +"bd c #505050", +"be c #747474", +"bf c #808080", +"bg c #7c7c7c", +"bh c #2a2a2a", +"bi c #4a4a4a", +"bj c #fafafa", +"bk c #1b1b1b", +"bl c #767676", +"bm c #737373", +"bn c #262626", +"bo c #f1f1f1", +"bp c #0d0d0d", +"bq c #0b0b0b", +"br c #787878", +"bs c #757575", +"bt c #6f6f6f", +"bu c #434343", +"bv c #3b3b3b", +"bw c #5e5e5e", +"bx c #696969", +"by c #252525", +"bz c #5f5f5f", +"bA c #575757", +"bB c #282828", +"bC c #010101", +"bD c #6b6b6b", +"bE c #676767", +"bF c #646464", +"bG c #636363", +"bH c #616161", +"bI c #000000", +"bJ c #5b5b5b", +"bK c #464646", +"bL c #656565", +"bM c #595959", +"bN c #3c3c3c", +"bO c #606060", +"bP c #555555", +"bQ c #545454", +"bR c #626262", +"bS c #535353", +"bT c #7d7d7d", +"bU c #313131", +/* pixels */ +"................................................", +"..................aB.I.l.#.a.a.IaB..............", +".................l.n.i.m.n.i.i.i.i#t............", +"...............p.i.i#N.i.i.i.i.n.n.a............", +"...........H.0.z.iab.M.Gab.i.n.i.i#t............", +".......W.M.0.H.l.i#N.H.3.0#N.i.i.i.m.r...r......", +"......#K#X.H.4...p...3.G.J.I.i.i.i.i.6ab.z.r....", +"......#N.m.4.3.3.G.G.J.J.W.z.i.i.i.n.i.i.i.I....", +".....J.6.r.4.3.G.G.J.W.W#K#X.n.6#t.i.i.i.i.n.#..", +"..#K.0.0.0.3.G.J.J.W.W#K.....#.H.#.n.i.i.i.i#t..", +"...G.H.3.3.G.J.J.W.W#K.....r.raB#X.6.i.i.i.aaB..", +"...4.3.G.G.J.J.W#K#K.....r.raB#X#X#i.n.i.n#i....", +"..#X.r.G.J.J#K.W#K.raB.r.raB#X.#.#.c.a.n.i.6....", +"..aB.p.r.J.W#K#KaB.p.m#NaB#X.#.#.c.l.z.i.i.m....", +"....aBaB.W#K#K..#t.n.i.h.#.#.#.c#iab.i.i.i.i#g.I", +"....#K#K#K.....r.a.z.a.i#X.c.c#i.l.a.i.i.i.i.i.6", +"...W.H.....r.raB.a.I.m.i.l.##i.l.l.I.i.i.i.n.h#t", +"...J.G...r.raB#X#tab#t.i.I...l#N#N#N.a.p.n.h.6#t", +".....3.r.raB#X#X#N.p.p#g.m#K.l#N#N#t.I.I.h.6ab.l", +".....3aBaB#X#X.#.c.c.i.i#t.r#N#t#t.I.6.6ababab..", +".....3.#.c.#.c.c.c...l.p.J.l#t.I.I.I.6.6.pab....", +"....#X.a.p#N.c#i#i#i#K.G.c#t.I.I.6.6abab.n.p....", +"..........#t#i#i.l#N#N#t.I.I.I.6.6ab.m.z.i.naB..", +"...........J.l#N#N#N#t.I.I.6.6.a.a.h.i.i.i#i....", +"........#K.r.l#N#N#t.I.I.6.6.aabab.h.i.i.a......", +"..........#N#t#t#t.I.I.6.6.aabab.p.p.z.p.r......", +"...........rab.6.m.p.6.6.aab.p.p.h.h.p.r........", +".............r.I.c.c.p.aab.h.n.n.h.h#X..........", +"..................aB.mab.p.p.i.i.z.#............", +"...................r.z.m.m.mab#N................" +}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/getmail-dn.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/getmail-dn.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,26 @@ +#define getmail-dn_width 64 +#define getmail-dn_height 42 +static char getmail-dn_bits[] = { + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,0xff, + 0xff,0xff,0xff,0x9f,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x0f,0xff,0xff, + 0xff,0xff,0xff,0xff,0x4f,0x3d,0xfc,0xff,0xff,0xff,0xff,0xff,0x07,0xea,0xf0, + 0xff,0xff,0xff,0xff,0xff,0x07,0xd0,0xc3,0xff,0xff,0xff,0xff,0xff,0x13,0xa0, + 0x0e,0xff,0xff,0xff,0xff,0xff,0xab,0x00,0x3d,0xfc,0xff,0xff,0xff,0xff,0x53, + 0x05,0x2a,0xf9,0xff,0xff,0xff,0xff,0xfb,0x0a,0x90,0xf2,0xff,0xff,0xff,0xff, + 0x1b,0x57,0x40,0xf5,0xff,0xff,0xff,0xff,0x1b,0xac,0xaa,0xe8,0xff,0xff,0xff, + 0xff,0x1b,0x70,0x55,0xe0,0xff,0xff,0xff,0xff,0x1b,0xc0,0x22,0xe3,0xff,0xff, + 0xff,0xff,0x1b,0x02,0x55,0xe0,0xff,0xff,0xff,0xff,0x1b,0x0e,0xa4,0xe0,0xff, + 0xff,0xff,0xff,0x33,0x3e,0x56,0xe1,0xff,0xff,0xff,0xff,0xcf,0xff,0xa6,0xea, + 0xff,0xff,0xff,0xff,0x3f,0xff,0x57,0xe5,0xff,0xff,0xff,0xff,0xff,0xfc,0xa7, + 0xea,0xff,0xff,0xff,0xff,0xff,0xf1,0x57,0xe5,0xff,0xff,0xff,0xff,0xff,0xcf, + 0xa7,0xf8,0xff,0xff,0xff,0xff,0xff,0x1f,0x57,0xfe,0xff,0xff,0xff,0xff,0xff, + 0x7f,0x84,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0x83,0xff,0xf9,0xf3,0xf9,0x27,0xff, + 0xff,0x39,0xff,0xf9,0xf3,0xf9,0x3f,0xff,0xff,0xfc,0xc3,0xf0,0xe3,0x18,0x26, + 0xff,0xff,0xfc,0x99,0xf9,0xe3,0xc8,0x24,0xff,0xff,0x0c,0x99,0xf9,0x43,0xf8, + 0x24,0xff,0xff,0x3c,0x81,0xf9,0x53,0x19,0x24,0xff,0xff,0x3c,0xf9,0xf9,0x13, + 0xc9,0x24,0xff,0xff,0x39,0x99,0xe9,0xb3,0xc9,0x24,0xff,0xff,0x43,0xc3,0xf3, + 0xb3,0x19,0x21,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/getmail-dn.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/getmail-dn.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,51 @@ +/* XPM */ +static char * getmail-up_xpm[] = { +"64 42 6 1", +" c gray75 s backgroundToolBarColor", +"@ c #C0C0C0C0C0C0", +". c gray60", +"X c #808080808080", +"o c #FFFFFFFFFFFF", +"O c gray60", +" ", +" ..... ", +" ..@@@XX.. ", +" .Xo@@@@@XX.. ", +" .o@o@o@@@@XX.. ", +" .ooooo@o@o@@@XX.. ", +" .oooooooo@o@@@@XX.. ", +" .o@oooooooo@o@o@@@XX.. ", +" .@o@o@oooooooo@o@@@@XX.. ", +" .o@o@o@o@oooooo@o@o@..@X. ", +" .@@@@@o@o@oooooooo@.X@X@X. ", +" .@@..X@@@o@o@ooooo.X@X@X@. ", +" .@@.O..X@@o@o@o@o@.@X@..X@. ", +" .@@.OO...X@@@o@o@.@X@.XX.X. ", +" .@@.OO.....X@@o@o.X@X.@@X.. ", +" .@@.OO.@X....X@o@.@X@X.oX.. ", +" .@@..O.@@@X....X@.X@X@.oX.. ", +" ..@@X..@@@@@X..@@.@X@X@..X. ", +" ..@@@@@@@@@@X@@.X@X@X@X@. ", +" ..@@@@@@@@@@@.@X@X@X@X. ", +" ..@@@@@@@@@.X@X@X@X@. ", +" ...@@@@@@@.@X@X@X@.. ", +" ..@@@@@.X@X@X.. ", +" ...@@@.@X@.. ", +" X..@.X.. ", +" .... ", +" ", +" ", +" . ", +" ..... .. .. .. .. .. ", +" .. .. .. .. .. .. ", +" .. .... .... ... ... .... .. .. ", +" .. .. .. .. ... ... .. .. .. .. ", +" .. .... .. .. .. .... .... .. .. .. ", +" .. .. ...... .. .. . . .. ..... .. .. ", +" .. .. .. .. .. ... .. .. .. .. .. ", +" .. .. .. .. .. . .. . .. .. .. .. .. ", +" .... . .... .. .. . .. ... .... .. ", +" ", +" ", +" ", +" "}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/getmail-up.xbm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/getmail-up.xbm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,26 @@ +#define getmail-up_width 64 +#define getmail-up_height 42 +static char getmail-up_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,0x00, + 0x00,0x00,0x00,0x60,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xf0,0x00,0x00, + 0x00,0x00,0x00,0x00,0xb0,0xc2,0x03,0x00,0x00,0x00,0x00,0x00,0xf8,0x15,0x0f, + 0x00,0x00,0x00,0x00,0x00,0xf8,0x2f,0x3c,0x00,0x00,0x00,0x00,0x00,0xec,0x5f, + 0xf1,0x00,0x00,0x00,0x00,0x00,0x54,0xff,0xc2,0x03,0x00,0x00,0x00,0x00,0xac, + 0xfa,0xd5,0x06,0x00,0x00,0x00,0x00,0x04,0xf5,0x6f,0x0d,0x00,0x00,0x00,0x00, + 0xe4,0xa8,0xbf,0x0a,0x00,0x00,0x00,0x00,0xe4,0x53,0x55,0x17,0x00,0x00,0x00, + 0x00,0xe4,0x8f,0xaa,0x1f,0x00,0x00,0x00,0x00,0xe4,0x3f,0xdd,0x1c,0x00,0x00, + 0x00,0x00,0xe4,0xfd,0xaa,0x1f,0x00,0x00,0x00,0x00,0xe4,0xf1,0x5b,0x1f,0x00, + 0x00,0x00,0x00,0xcc,0xc1,0xa9,0x1e,0x00,0x00,0x00,0x00,0x30,0x00,0x59,0x15, + 0x00,0x00,0x00,0x00,0xc0,0x00,0xa8,0x1a,0x00,0x00,0x00,0x00,0x00,0x03,0x58, + 0x15,0x00,0x00,0x00,0x00,0x00,0x0e,0xa8,0x1a,0x00,0x00,0x00,0x00,0x00,0x30, + 0x58,0x07,0x00,0x00,0x00,0x00,0x00,0xe0,0xa8,0x01,0x00,0x00,0x00,0x00,0x00, + 0x80,0x7b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x06,0x0c,0x06,0xd8,0x00, + 0x00,0xc6,0x00,0x06,0x0c,0x06,0xc0,0x00,0x00,0x03,0x3c,0x0f,0x1c,0xe7,0xd9, + 0x00,0x00,0x03,0x66,0x06,0x1c,0x37,0xdb,0x00,0x00,0xf3,0x66,0x06,0xbc,0x07, + 0xdb,0x00,0x00,0xc3,0x7e,0x06,0xac,0xe6,0xdb,0x00,0x00,0xc3,0x06,0x06,0xec, + 0x36,0xdb,0x00,0x00,0xc6,0x66,0x16,0x4c,0x36,0xdb,0x00,0x00,0xbc,0x3c,0x0c, + 0x4c,0xe6,0xde,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/getmail-up.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/getmail-up.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,51 @@ +/* XPM */ +static char * getmail-up_xpm[] = { +"64 42 6 1", +" c #C3C3C3C3C3C3 s backgroundToolBarColor", +"@ c #C0C0C0C0C0C0", +". c #000000000000", +"X c #808080808080", +"o c #FFFFFFFFFFFF", +"O c #FFFF00000000", +" ", +" ..... ", +" ..@@@XX.. ", +" .Xo@@@@@XX.. ", +" .o@o@o@@@@XX.. ", +" .ooooo@o@o@@@XX.. ", +" .oooooooo@o@@@@XX.. ", +" .o@oooooooo@o@o@@@XX.. ", +" .@o@o@oooooooo@o@@@@XX.. ", +" .o@o@o@o@oooooo@o@o@..@X. ", +" .@@@@@o@o@oooooooo@.X@X@X. ", +" .@@..X@@@o@o@ooooo.X@X@X@. ", +" .@@.O..X@@o@o@o@o@.@X@..X@. ", +" .@@.OO...X@@@o@o@.@X@.XX.X. ", +" .@@.OO.....X@@o@o.X@X.@@X.. ", +" .@@.OO.@X....X@o@.@X@X.oX.. ", +" .@@..O.@@@X....X@.X@X@.oX.. ", +" ..@@X..@@@@@X..@@.@X@X@..X. ", +" ..@@@@@@@@@@X@@.X@X@X@X@. ", +" ..@@@@@@@@@@@.@X@X@X@X. ", +" ..@@@@@@@@@.X@X@X@X@. ", +" ...@@@@@@@.@X@X@X@.. ", +" ..@@@@@.X@X@X.. ", +" ...@@@.@X@.. ", +" X..@.X.. ", +" .... ", +" ", +" ", +" . ", +" ..... .. .. .. .. .. ", +" .. .. .. .. .. .. ", +" .. .... .... ... ... .... .. .. ", +" .. .. .. .. ... ... .. .. .. .. ", +" .. .... .. .. .. .... .... .. .. .. ", +" .. .. ...... .. .. . . .. ..... .. .. ", +" .. .. .. .. .. ... .. .. .. .. .. ", +" .. .. .. .. .. . .. . .. .. .. .. .. ", +" .... . .... .. .. . .. ... .... .. ", +" ", +" ", +" ", +" "}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/getmail-xx.xbm Binary file etc/vm/getmail-xx.xbm has changed diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/message.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/message.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,62 @@ +/* XPM */ +static char *message[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 25 1", +/* colors */ +". c #000000", +"# c #a4a579", +"a c #9f9c66", +"b c #918e5d", +"c c #817f53", +"d c #6d6b46", +"e c #5d5b3c", +"f c #49482f", +"g c #eae696", +"h c #373623", +"i c #d4d088", +"j c #c8c480", +"k c #0d0d08", +"l c #b4b173", +"m c #aaa76d s background", +"n c #888657", +"o c #76744c", +"p c #646240", +"q c #545236", +"r c #fffaa3", +"s c #efeb99", +"t c #dfdb8f", +"u c #bac384", +"v c #242317", +"w c #bfbc7a", +/* pixels */ +"mmmmmadpn#mmmmmmmmmmmmmm", +"mmmm#dnndec#mmmmmmmmmmmm", +"mmm#nuijwmbcocna#mmmmmmm", +"mmmnirrsuiijl#npecammmmm", +"mm#crrrrrrssuijwmbncon#m", +"mm#nndon#jsrrrrsguj#phom", +"mmmmmcodefhdwsrrrrshvhhm", +"mmmmmnwppeeqqqdnliafphhm", +"mmmm#lsrssboqdpoqhfnohpm", +"mmmmbugusguujw#odeeobhem", +"mmmmnrjtssujwwussiwawknm", +"mmmm#rrjumgurrrijajrbham", +"mmmbigjiuugjwwiggsrrfqmm", +"mmmnrrsrijajsssjm#srkc#m", +"mmmbrsijirsrsjjigsrjvnmm", +"mm#wrrrrrrrrrrrrgsrpfmmm", +"mmnssrrrrrrrrrrrrrrvdmmm", +"mmnriugugssrrrrrrriknmmm", +"mmmjgrrjwnligrrrrrbh#mmm", +"mbisssgssiuujjjjrrfqmmmm", +"mnrijijsssgjljusrgknmmmm", +"magurrgwbwlsrsjgrmhbmmmm", +"bjsiimjugiiijwurref#mmmm", +"psrrrrsjnujurrirrvdmmmmm", +"cpajrrrrrrsilugrjvnmmmmm", +"nfhkkfcmgrrrrrrrdh#mmmmm", +"mm#nphv..h#srrrrhpmmmmmm", +"mmmmmanofhkkho#wknmmmmmm", +"mmmmmmmmm#bdhv..hbmmmmmm", +"mmmmmmmmmmmm#ncedmmmmmmm" +}; diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/mona_stamp.gif Binary file etc/vm/mona_stamp.gif has changed diff -r 2d83cbd90d8d -r 4be1180a9e89 etc/vm/stuffed_box.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/stuffed_box.xpm Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,291 @@ +/* XPM */ +static char *stuffed_box[] = { +/* width height num_colors chars_per_pixel */ +" 24 30 254 2", +/* colors */ +".. c #000000", +".# c #b1b1b1", +".a c #242120", +".b c #505955", +".c c #491909", +".d c #3e1608", +".e c #a9a9a9 s background", +".f c #eeeef0", +".g c #a7a7a7", +".h c #a3411c", +".i c #663622", +".j c #5c210b", +".k c #a83e17", +".l c #2f2824", +".m c #9f7b71", +".n c #d38141", +".o c #a3a3a3", +".p c #d27f40", +".q c #a1a1a1", +".r c #511c0a", +".s c #ccc1be", +".t c #9d9d9d", +".u c #cd773b", +".v c #903a13", +".w c #592a15", +".x c #1e1d1d", +".y c #cdcccc", +".z c #959595", +".A c #939393", +".B c #e8ac69", +".C c #919191", +".D c #8f8f8f", +".E c #8d8d8d", +".F c #240e05", +".G c #652810", +".H c #a55f3b", +".I c #878787", +".J c #f2f1f0", +".K c #a0491f", +".L c #8a4a27", +".M c #0c0401", +".N c #efbf80", +".O c #7d7d7d", +".P c #3d3531", +".Q c #2a0b04", +".R c #7b7b7b", +".S c #81401e", +".T c #797979", +".U c #adacac", +".V c #904d26", +".W c #eab071", +".X c #11132a", +".Y c #737373", +".Z c #999695", +".0 c #ab4119", +".1 c #d16d31", +".2 c #b3b8b5", +".3 c #030305", +".4 c #212129", +".5 c #b74c1e", +".6 c #ca7b41", +".7 c #696969", +".8 c #404644", +".9 c #2d1e17", +"#. c #656565", +"## c #8b3417", +"#a c #dfae7d", +"#b c #f5eeef", +"#c c #5e260f", +"#d c #d58445", +"#e c #5f5f5f", +"#f c #763416", +"#g c #5a200b", +"#h c #301006", +"#i c #7a2f10", +"#j c #edb87a", +"#k c #4e1b09", +"#l c #da8e4d", +"#m c #8b8a8a", +"#n c #d97435", +"#o c #d58648", +"#p c #32160b", +"#q c #fefefe", +"#r c #e8ad6b", +"#s c #020000", +"#t c #474747", +"#u c #bfbfc0", +"#v c #4f505c", +"#w c #6b280e", +"#x c #fcdf9c", +"#y c #e39e5c", +"#z c #160803", +"#A c #3f3f3f", +"#B c #61230e", +"#C c #140601", +"#D c #3c0e04", +"#E c #7e3010", +"#F c #eaeaea", +"#G c #a4a3a2", +"#H c #bb5121", +"#I c #cd642c", +"#J c #b94f1f", +"#K c #cb622a", +"#L c #333333", +"#M c #d88747", +"#N c #110601", +"#O c #d58344", +"#P c #070301", +"#Q c #511e0b", +"#R c #bf9f84", +"#S c #d2d2d2", +"#T c #6f290e", +"#U c #eed6b2", +"#V c #c55c27", +"#W c #441708", +"#X c #bab8b7", +"#Y c #e9ae6b", +"#Z c #823110", +"#0 c #171717", +"#1 c #eccba6", +"#2 c #51200e", +"#3 c #a33c16", +"#4 c #983915", +"#5 c #7f6352", +"#6 c #eab26f", +"#7 c #361207", +"#8 c #bd5222", +"#9 c #d0672e", +"a. c #a35326", +"a# c #da8f52", +"aa c #aaaaaa", +"ab c #a8a8a8", +"ac c #a6a6a6", +"ad c #a4a4a4", +"ae c #d38041", +"af c #303246", +"ag c #a2a2a2", +"ah c #b85020", +"ai c #d17e3f", +"aj c #521d0b", +"ak c #a0a0a0", +"al c #e6a764", +"am c #d07c3e", +"an c #cf7a3d", +"ao c #9e9e9e", +"ap c #9c9c9c", +"aq c #c75d28", +"ar c #1b0a03", +"as c #d88a49", +"at c #433f3e", +"au c #989898", +"av c #65250d", +"aw c #969696", +"ax c #0a0806", +"ay c #949494", +"az c #581e0a", +"aA c #c6c5c5", +"aB c #909090", +"aC c #d67d3d", +"aD c #9ea0a1", +"aE c #121211", +"aF c #db7838", +"aG c #414249", +"aH c #8a8a8a", +"aI c #d88c4c", +"aJ c #b0461b", +"aK c #28322d", +"aL c #4f5150", +"aM c #833613", +"aN c #848484", +"aO c #361306", +"aP c #808080", +"aQ c #551e0a", +"aR c #762d10", +"aS c #837b79", +"aT c #17110f", +"aU c #cfcfd4", +"aV c #943413", +"aW c #767676", +"aX c #98534f", +"aY c #ad461b", +"aZ c #727272", +"a0 c #1c1917", +"a1 c #c06a34", +"a2 c #6c6c6c", +"a3 c #722b0f", +"a4 c #c96029", +"a5 c #9a9999", +"a6 c #60616a", +"a7 c #67240e", +"a8 c #764a37", +"a9 c #3b1407", +"b. c #504e4d", +"b# c #100601", +"ba c #e7aa67", +"bb c #f4e0b9", +"bc c #d4d6d5", +"bd c #423028", +"be c #545454", +"bf c #d66f32", +"bg c #c05623", +"bh c #d36b2f", +"bi c #d2692e", +"bj c #4a4a4a", +"bk c #762e0f", +"bl c #461d0e", +"bm c #56150a", +"bn c #6c290f", +"bo c #ecb472", +"bp c #c58859", +"bq c #404040", +"br c #5f220c", +"bs c #3a3a3a", +"bt c #cd652c", +"bu c #363636", +"bv c #e7e7e7", +"bw c #732c0f", +"bx c #fee4a1", +"by c #68270e", +"bz c #dfdfdf", +"bA c #7a3819", +"bB c #2c2c2c", +"bC c #dbdbdb", +"bD c #f0ece9", +"bE c #d48243", +"bF c #282828", +"bG c #4e4b4a", +"bH c #5c5b5b", +"bI c #988f8c", +"bJ c #de7c39", +"bK c #b54c1e", +"bL c #b44a1d", +"bM c #b3481c", +"bN c #342f2d", +"bO c #220701", +"bP c #c45b26", +"bQ c #190802", +"bR c #c35925", +"bS c #d56c30", +"bT c #3f3d3b", +"bU c #e0803e", +"bV c #fbfafa", +"bW c #dd9252", +"bX c #afb0b6", +"bY c #772b0f", +"bZ c #f7f6f6", +"b0 c #220b04", +"b1 c #0e0e0e", +"b2 c #cb763d", +"b3 c #dd9b5f", +"b4 c #ad4219", +"b5 c #fadb99", +"b6 c #67756f", +"b7 c #e9e8e8", +/* pixels */ +".e.e.e.e.e.e.e.e.e.e.e.e.o.e.e.e.e.e.e.e.e.e.e.e", +".e.e.e.e.e.e.e.e.e.e.e.o.2.Z.m.o.e.e.e.e.o.o.e.e", +".e.e.e.e.e.e.e.e.e.e.obcbZ.6bp.H.m.o.e.e.e.s.o.o", +".e.e.e.e.e.e.e.e.e.e.fbZbZbbbc.Nbp.H.map.2.mbZbz", +".e.e.e.e.e.e.e.e.e.e#RbIbc#b.qbp.W.Bbpa.a8.YaA.7", +".e.e.e.e.e.e.e.ebIa8.y.sbD#S.Ibe.L.B#rbob3.Lbl.o", +".e.e.e.e.e.e.o#5a1#abe.y.o.qb.#e.q#U.Nbobob5.w.e", +".e.e.e.e.ebI.H.n#RbI.q#eaPbdb..o.I#X.N.W.N#lbl.e", +".e.e.e.oaXa1.nai.Vblb.#..9.x.Rbc#S.i#a.N#daF.d.e", +".e.e.e.ia1bU.uai.n.6bdbs.3#z.dbI#jal.N#n#n.SaLaA", +".e.e.e#W#c.Hai.u.6a#.m.3a8aI.H.Hal.N#n.1.Sat#XbI", +".e.e.e#W.v.j.V.uai.n#l.6bpas#lal#1#n#I.S.vbnaTaN", +".e.e.e.Q.v.v#w.Ga1.u#d#das#lbW.N#I#I.S#Z.1#Ibl.e", +".e.e.e.9bO#T.v#Z.j.H.u.n.na#.N.u#V.v.F#Ra#.1.9.U", +".e.e.e.P#haE.G.v.v.jbA.ua#.N.ubg.haTb.#b#obfbl.e", +".e.e.A.o#SbHbF#p#T.v#E.Gbpa4#HbnaTaLbIbp#Va.bT.U", +".e.e.e.IbcaubH#7#7.j.v#i.v.5#E##bY.v.h#V#Hbdak.e", +".e.e.eb.a8#S.9.G#ibl.d#T##.vaY#H.5.5bgbgblaN.q.e", +".e.e.eb..Ga8.i#ZbYbY.j.Q.jaY.5.5#H#H.m.w.7.o.e.e", +".e.e.ebGbYbn#w#i#T#T#T.j#ZaJ.5.5.5.S.y#u.A.o.e.e", +".e.e.oaL.d#Tbn#T#T#T#w.G#ZaY.5.h.i.Dbz.fbV.y#u.o", +".e.eapbHaxbObTa2#T#w.G.j#iaYaYb..2aua6.Obzbz#q.2", +".e.e.o.RaL.a.q.Ube#w.j.jaR.k#4#h#A.o.Dbzau#qbcap", +".e.eapaN#Aa2.ybv#Xa8#g#g#T.k#Z.PbG#L.o.2.2bZ.A.o", +".o.I.Aak.fbZbXaZbz#.#gbl#T##bd.IaNbH#L.Obz.2.z.e", +".Aa2.Rbz.eaAaDaNaU.lax.d.j.9aP.q.e.AbHbsa2aN.o.e", +"ap.Y#AaA#S.o.DbZ.obebBb1aTaS.o.e.e.o.Ia2.Yap.e.e", +".o.AbHbeaAaU.faA.I.I.7be.Rak.e.e.e.e.eap.o.e.e.e", +".e.o.Ibe#A#u.e.R.o.oap.A.o.e.e.e.e.e.e.e.e.e.e.e", +".e.e.oaNbHbe.R.o.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e" +}; diff -r 2d83cbd90d8d -r 4be1180a9e89 info/dir --- a/info/dir Mon Aug 13 09:13:58 2007 +0200 +++ b/info/dir Mon Aug 13 09:15:11 2007 +0200 @@ -46,6 +46,7 @@ Packages: +* AUC TeX:: Mode for editing TeX files. * CC-MODE:: Mode for editing C, C++, and Objective-C code. * CL:: A Common Lisp compatibility package for Emacs-Lisp. * Custom:: Customization Library for Emacs diff -r 2d83cbd90d8d -r 4be1180a9e89 lib-src/ChangeLog --- a/lib-src/ChangeLog Mon Aug 13 09:13:58 2007 +0200 +++ b/lib-src/ChangeLog Mon Aug 13 09:15:11 2007 +0200 @@ -1,3 +1,7 @@ +Wed Feb 19 18:24:49 1997 Steven L Baur + + * update-elc.sh: Added lisp/auctex. + Thu Feb 13 11:32:47 1997 Steven L Baur * Makefile.in.in: Install pstogif script. diff -r 2d83cbd90d8d -r 4be1180a9e89 lib-src/update-elc.sh --- a/lib-src/update-elc.sh Mon Aug 13 09:13:58 2007 +0200 +++ b/lib-src/update-elc.sh Mon Aug 13 09:15:11 2007 +0200 @@ -50,7 +50,7 @@ # Compute patterns to ignore when searching for files -ignore_dirs="egg its quail" # ### Not ported yet... +ignore_dirs="its quail" # ### Not ported yet... # Only use Mule XEmacs to compile Mule-specific elisp dirs echo "Checking for Mule support..." @@ -94,6 +94,7 @@ make_special oobr HYPB_ELC='' elc make_special eos -k # not stricly necessary... make_special ilisp elc +make_special auctex ignore_pattern='' for dir in $ignore_dirs ; do @@ -106,7 +107,6 @@ ignore_pattern="$ignore_pattern"' \!/,!d \!/edebug/edebug-test.el$!d -\!/emulators/edt.el$!d \!/energize/energize-load.el$!d \!/energize/write-file.el$!d \!/paths.el$!d diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/ChangeLog --- a/lisp/ChangeLog Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:15:11 2007 +0200 @@ -1,3 +1,173 @@ +Sun Feb 23 12:56:28 1997 Steven L Baur + + * edebug/edebug.el: Synch up with Emacs 19.34. + + * prim/itimer-autosave.el (auto-save-timeout): Increase to 960. + +Sat Feb 22 17:11:31 1997 Steven L Baur + + * prim/loadup.el: Dump new file itimer-autosave.el. + +Sat Feb 22 17:06:32 1997 Kyle Jones + + * prim/itimer.el: Cleanup, removal of autosave cruft. + +Fri Feb 21 09:41:44 1997 Steven L Baur + + * prim/simple.el (line-move-ignore-invisible): Reverse previous + change to make this default to nil again. + +Thu Feb 20 14:30:50 1997 Jamie Zawinski + + * prim/files.el (hack-local-variables-prop-line): New version. + +Thu Feb 20 11:14:22 1997 Steven L Baur + + * prim/files.el: Delete definition of dired-kept-versions. + + * prim/about.el (about-xemacs-xref): Added Kyle's picture. :-) + +Wed Feb 19 15:47:47 1997 Steven L Baur + + * packages/vc.el (diff-switches): Restore since this global + variable went away with the passing of ange-ftp. + + * utils/autoload.el (generate-file-autoloads-1): Don't let + find-file-hooks be run. + (update-file-autoloads): Ditto. + (update-autoloads-from-directory): Ditto. + + * x11/x-menubar.el (default-menubar): Correct unguarded reference + to fast-lock-mode variable. + +Wed Feb 19 08:04:02 1997 Noah Friedman + + * eldoc.el (eldoc-message-commands): Doc fixes. + (eldoc-message): Make function, not macro. + + * eldoc.el (eldoc-last-message): New internal variable. + (eldoc-mode): Initialize it to nil. + (eldoc-message): Use it. + (eldoc-print-current-symbol-info): Use it. + + * eldoc.el (eldoc-pre-command-refresh-echo-area): New function. + (eldoc-mode): Put it on pre-command-hook if in XEmacs or using + idle timers in Emacs. + + * eldoc.el (eldoc-message-commands-table-size): New constant. + (eldoc-add-command): Use it to initialize eldoc-message-commands. + + * eldoc.el (eldoc-display-message-no-interference-p): New function. + (eldoc-display-message-p): Use it. + + * eldoc.el (eldoc-print-fnsym-args, eldoc-print-var-docstring): + Arg sym no longer optional. + Do not initialize arg if nil. + + * eldoc.el (eldoc-forward-sexp-safe): Function deleted. + (eldoc-beginning-of-sexp): New function. + (eldoc-fnsym-in-current-sexp): Use eldoc-beginning-of-sexp. + Use eldoc-current-symbol to get symbol at point. + + * eldoc.el (eldoc-function-argstring-from-docstring-method-table): + Forge docstrings for `and', `or', `list', `+', and `-'. + + * eldoc.el (eldoc-add-command-completions): New function. + (eldoc-add-command): Take list of args. + No longer interactive. + (eldoc-remove-command-completions): New function. + (eldoc-remove-command): Take list of args. + No longer interactive. + + * eldoc.el: Initialize eldoc-message-commands using + eldoc-add-command-completions. + + * eldoc.el (eldoc-display-message-p): New function. + Return nil if cursor-in-echo-area, or using idle timers and a + command is still active. + (eldoc-print-current-symbol-info): Use eldoc-display-message-p. + +Tue Feb 18 14:20:01 1997 David Byers + + * packages/paren.el (paren-highlight): Minor typo correction. + +Tue Feb 18 13:05:33 1997 Steven L Baur + + * prim/loadup.el: Dump new file custom-xmas. + +Mon Feb 17 21:01:38 1997 Steven L Baur + + * prim/help.el (function-compatible-p): New function. + (function-compatibility-doc): New function. + (describe-function-1): Use them. + (variable-compatible-p): New function. + (variable-compatibility-doc): New function. + (describe-variable): Use them. + +Mon Feb 17 19:12:55 1997 Per Abrahamsen + + * prim/obsolete.el (x-color-values): Added for Emacs + compatibility. + +Mon Feb 17 18:11:24 1997 Michael Kifer + + * prim/files.el (file-remote-p): Force load of EFS if not already + loaded. + +Mon Feb 17 17:45:23 1997 Bob Weiner + + * modes/lisp-mode.el (eval-last-sexp): Do something special if + evaluating (interactive ...). + +Sun Feb 16 21:49:18 1997 Bjorn Victor + + * utils/facemenu.el (facemenu-adjust-face-sizes): Strip size when + face is neither nil nor cons. + +Sun Feb 16 14:26:03 1997 Steven L Baur + + * prim/loadup.el: Try not dumping font.elc. + + * prim/obsolete.el (display-column-mode): Remove column.el and + leave a forwarding address. + +Sat Feb 15 23:21:11 1997 Kyle Jones + + * prim/minibuf.el (read-from-minibuffer): Don't put evaluated + expressions in the minibuffer history list. + +Sat Feb 15 22:57:11 1997 Steven L Baur + + * packages/scroll-in-place.el (scroll-signal-boundary-error): + Allow user to suspend error signals. + +Sat Feb 15 21:43:49 1997 John Turner + + * packages/column.el (current-line): Correct defaults for starting + at 1, remove an obsolete variable. + +Sat Feb 15 20:17:46 1997 Hal Peterson + + * packages/vc.el (vc-backend-print-log): Change `cvs rlog' to + `cvs log' + +Mon Feb 17 02:01:27 1997 Hrvoje Niksic + + * utils/edmacro.el (edmacro-format-keys): Would bug out on empty + macro. + +Mon Feb 17 02:01:27 1997 Hrvoje Niksic + + * utils/edmacro.el (edmacro-format-keys): Would bug out on empty + macro. + (edmacro-fix-menu-commands): Would bug out on 'control, etc. + (edmacro-events-to-keys): New function. + (edmacro-format-keys): Use it. + (edmacro-finish-edit): Compare to macros, not strings. + (edmacro-fkeys): New function. + (edmacro-format-keys): Use it. + (edit-kbd-macro): Tweak. + Sat Feb 15 13:58:14 1997 Kyle Jones * packages/info.el: Don't call switch-to-buffer if the Info frame diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/CHANGES --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/CHANGES Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,5 @@ +News in 9.7 +=========== + + * Added minimal support for `sentence-end-double-space'. + diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/ChangeLog --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/ChangeLog Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,875 @@ +Thu Feb 20 11:30:50 1997 Per Abrahamsen + + * Version 9.7i released. + +Thu Feb 20 10:59:38 1997 Per Abrahamsen + + * tex.el: Removed autoloads that conflicts with `tex-mode.el'. + (TeX-lisp-directory): Default to data-directory. + +Sat Feb 15 18:00:48 1997 Per Abrahamsen + + * Version 9.7h released. + +Sat Feb 15 13:39:30 1997 Per Abrahamsen + + * tex-buf.el (TeX-lisp-directory): Removed. + +Fri Feb 07 14:58:29 1997 Per Abrahamsen + + * Version 9.7g released. + +Thu Feb 6 11:01:35 1997 Karl Eichwalder + + * Makefile (install-lisp): Don't install $(aucdir)/lpath.el and + $(aucdir)/tex-site.el. + (contrib, install-contrib): New targets. + +Thu Jan 30 06:59:57 1997 Per Abrahamsen + + * latex.el (LaTeX-math-default): uparow -> uparrow. Reported by + Kyeong Soo Kim . + +Wed Jan 29 04:57:42 1997 Per Abrahamsen + + * Makefile (AUCSRC): Removed `ltx-help.el'. + +Mon Jan 27 00:52:51 1997 Per Abrahamsen + + * Version 9.7f released. + +Mon Jan 27 00:40:35 1997 Per Abrahamsen + + * latex.el (LaTeX-label-function): New variable. + (LaTeX-label): New function. + (LaTeX-section-label): Use it. + (LaTeX-env-figure): Ditto. + (LaTeX-env-label): Ditto. + Patch supplied by Carsten Dominik for + better RevTeX.el support. + + * latex.el (LaTeX-env-figure): Don't insert \leavevmode, at the + request of David Carlisle . + +Mon Jan 20 18:41:23 1997 Per Abrahamsen + + * Version 9.7e released. + +Mon Jan 20 18:38:58 1997 Per Abrahamsen + + * tex-buf.el (TeX-parse-error): Support LaTeX warnings. Patch by + Frederic Devernay . + (TeX-warning): Ditto. + +Fri Jan 17 17:42:20 1997 Per Abrahamsen + + * Version 9.7d released. + +Fri Jan 17 17:40:39 1997 Per Abrahamsen + + * tex-jp.el: XEmacs 20 support by Soren Dayton + . + +Mon Jan 13 00:52:26 1997 Per Abrahamsen + + * Makefile (CP): Use `cp -p'. Suggested by Graham Gough + . + + * Version 9.7c released. + +Wed Jan 8 15:00:06 1997 Per Abrahamsen + + * doc/intro.texi: Spelling fixes by Franklin Chen . + + * tex-buf.el (TeX-shell-command-option): Insitialize from + shell-command-switch. Suggested by Fabio@Colorado.EDU (Fabio + Somenzi). + + * latex.el (LaTeX-mode-menu): Added sans serif. Patch by Ralf + Fassel . + +Fri Jan 3 13:49:44 1997 Per Abrahamsen + + * Makefile (install-lisp): Also install `.el' files. Requested by + several people. + +Wed Dec 11 07:32:47 1996 Per Abrahamsen + + * Makefile (tex.elc): New entry. + (install-lisp): Use it. Trevor Jim + reported that `make install' wouldn't make the elc files. + +Tue Dec 10 16:48:59 1996 Per Abrahamsen + + * Version 9.7b released. + +Tue Dec 10 07:49:54 1996 Per Abrahamsen + + * tex-buf.el (TeX-run-format): Bind `buffer' before `process' to + avoid side effect. Suggested by Frederic Devernay + . + + * Version 9.7a released. + +Tue Dec 10 07:49:56 1996 Per Abrahamsen + + * latex.el (LaTeX-fill-region-as-para-do): Minimal support for + `sentence-end-double-space'. + +Mon Dec 09 14:58:18 1996 Per Abrahamsen + + * Version 9.6m released. + +Sun Dec 01 17:33:49 1996 Per Abrahamsen + + * Version 9.6l released. + +Sun Dec 1 17:31:48 1996 Per Abrahamsen + + * tex-jp.el: Patch from IKEMOTO Masahiro + . + +Fri Nov 29 18:50:26 1996 Per Abrahamsen + + * Version 9.6k released. + +Fri Nov 22 14:40:05 1996 Per Abrahamsen + + * latex.el (LaTeX-mode-menu): Made `LaTeX-math-mode' a toggle. + +Sat Nov 16 19:24:39 1996 Per Abrahamsen + + * Version 9.6j released. + +Thu Nov 14 15:42:38 1996 Per Abrahamsen + + * latex.el (LaTeX-common-initialization): Added eqref to + LaTeX-label-list. Suggested by Martin Hagstrom + . + +Wed Nov 13 16:15:36 1996 Per Abrahamsen + + * tex-buf.el (TeX-region-create): Disable font lock. Suggested by + several, patch by Christoph Wedler . + +Tue Nov 5 20:21:07 1996 Per Abrahamsen + + * tex.el (TeX-file-extensions): Added "texinfo". + +Mon Sep 30 18:45:42 1996 Per Abrahamsen + + * latex.el (LaTeX-mode-map): Do not overwrite standard binding of + `M-g'. + + * tex.el (popup-mode-menu): Run `LaTeX-menu-update' if present. + Workaround for bug reported by Hendrik Visage + and othors. + + * latex.el (LaTeX-float): Allow nil. + (LaTeX-env-figure): Don't insert float if nil. Feature suggested + by Andre Eickler . + +Mon Sep 16 17:17:59 1996 Per Abrahamsen + + * Version 9.6i released. + +Mon Sep 16 17:15:02 1996 Per Abrahamsen + + * tex.el (TeX-mode-syntax-table): Made `$' have the syntax class + `$' at the suggestion of Mats Bengtsson . + +Sat Aug 31 16:03:52 1996 Per Abrahamsen + + * latex.el (TeX-arg-cite): Use `multi-prompt' when asking for + entries. + (TeX-arg-bibliography): Ditto. + +Thu Aug 29 22:22:14 1996 Per Abrahamsen + + * Makefile: Simplified installation (I hope). + +Wed Aug 28 00:22:11 1996 Per Abrahamsen + + * Makefile: Removed lacheck. + +Fri Aug 23 10:23:45 1996 Per Abrahamsen + + * tex-buf.el (TeX-run-command): Change to master directory before + executing command. + (TeX-region-file): Allow dummy second argument. + (TeX-run-background): Run in master directory. + (TeX-run-interactive): Run in master directory. + + * tex.el (TeX-master-file): Allow second argument `NONDIRECTOPRY'. + (TeX-expand-list): Set second argument `NONDIRECTORY' to file + entries. + (TeX-master-directory): New function. + * tex.el (TeX-auto-write): Write in master directory. + +Thu Aug 22 22:33:45 1996 Per Abrahamsen + + * latex.el (LaTeX-current-environment): Ignore comments. Reported + by Stephen Eglen . + + * tex.el (TeX-directory-absolute-p): Added `windows-nt'. + + * tex-buf.el (TeX-shell): Added `windows-nt'. + (TeX-shell-command-option): Added `emx' and `windows-nt'. + Reported by Ulrich Poetter . + +Wed Aug 21 13:57:43 1996 Per Abrahamsen + + * tex.el (VirTeX-common-initialization): Removed duplicate + initialization of `words-include-escapes'. Reperted by Mark Hovey + . + +Wed Aug 14 19:43:31 1996 Per Abrahamsen + + * Makefile (CONTRIB): Added `font-latex.el'. + +Tue Jul 30 12:19:01 1996 Per Abrahamsen + + * Makefile (aucdir): Changed `lib' to `share' per new emacs + conventions. Reported by "Edward J. Huff" + . + +Tue Jul 16 20:18:59 1996 Per Abrahamsen + + * latex.el (LaTeX-fill-region-as-para-do): Make sure `.}' gets + two spaces at end of sentence when filling. + +Mon Jul 15 12:13:36 1996 Per Abrahamsen + + * tex.el (TeX-parse-path): Ignore tralining //. Suggested by + Göran Uddeborg . + +Sun May 5 11:06:37 1996 Per Abrahamsen + + * all: Use version number instead of CVS id. + + * tex.el (TeX-mode-map): Don't bind `del'. We aren't supposed to + have any tabs in the first place. + +Thu May 2 01:28:52 1996 Per Abrahamsen + + * tex.el (TeX-mark-active, TeX-active-mark) [XEmacs]: The + definition of these two were swapped. Bug reported by + Vladimir Alexiev . + +Thu Apr 25 11:20:03 1996 Per Abrahamsen + + * tex.el (TeX-update-style): Don't run parent style hooks for + files that doesn't match `TeX-one-master'. Suggested by many + people. + +Wed Apr 24 14:44:13 1996 Per Abrahamsen + + * latex.el (LaTeX-close-environment): Bind + `next-line-add-newlines' to t. Patch by Fritz Knabe + . + +Mon Apr 1 16:36:04 1996 Per Abrahamsen + + * latex.el (LaTeX-fill-region-as-para-do): Fill `.}' as a sentence + end. Patch by Fritz Knabe . + +Mon Mar 11 22:56:30 1996 Per Abrahamsen + + * latex.el (LaTeX-math-cal): Use `\mathcal{}' under LaTeX2e. + Reported by Mate Wierdl . + +Tue Mar 5 17:27:39 1996 Per Abrahamsen + + * tex-info.el (texinfo-mode): Rely on texinfo.el to provide the + outline regexp. + +Tue Feb 20 09:43:29 1996 Per Abrahamsen + + * tex.el (TeX-command-menu-queue, TeX-command-menu-queue-entry): + New functions supporting printer queue queries from the menu. By + Ulrik Dickow + (TeX-command-menu-entry): Use them. + +Tue Feb 13 19:50:18 1996 Per Abrahamsen + + * style/swedish.el: Support for Swedish quotation style by "G\vran + Uddeborg" . + +Thu Dec 21 16:49:19 1995 Per Abrahamsen + + * latex.el (LaTeX-math-default): Added more definitions by Mehmet + Balcilar . + +Mon Dec 18 18:58:22 1995 Per Abrahamsen + + * latex.el (LaTeX-fill-region-as-paragraph): Removed old version. + (LaTeX-math-menu): Redefined the math mode menu. + +Thu Dec 14 19:51:15 1995 Per Abrahamsen + + * latex.el (LaTeX-math-menu): New variable. + (LaTeX-mode-menu): Use it. Suggested by Peter S Galbraith + . + +Mon Nov 13 23:49:16 1995 Per Abrahamsen + + * tex.el (VirTeX-common-initialization): Set `comment-multi-line' + to nil. + +Fri Oct 13 14:16:36 1995 Per Abrahamsen + + * PROBLEMS: Some easymenu explanations. + + * tex.el: Require easymenu.el instead of auc-menu.el. + * Makefile (AUCSRC): Removed easymenu.el and auc-menu.el. + (MINMAPSRC): Removed easymenu.el, column.el and cpp.el. + * easymenu.el: File deleted. + * column.el: File deleted. + * cpp.el: File deleted. + + * latex.el (LaTeX-math-insert): Don't check if `TeX-insert-macro' + is defined. + (LaTeX-close-environment): Work better when called on an empty + line. Fixed by David Aspinall . + +Thu Oct 12 15:45:00 1995 Per Abrahamsen + + * tex.el ('LaTeX-math-mode): Autoload from latex.el instead of + ltx-math.el. Reported by Richard Brankin . + +Tue Feb 14 20:36:00 1995 Per Abrahamsen + + * latex.el (LaTeX-fill-region-as-paragraph): Should now format \\ + correctly. Patch by michal@ellpspace.math.ualberta.ca (Michal + Jaegermann). + (LaTeX-fill-region-as-para-do): New function. + (LaTeX-fill-region-as-paragraph): Do not fill paragraphs inside + special environments. + +Sun Feb 12 15:40:15 1995 Per Abrahamsen + + * tex.el (TeX-byte-compile): Make it default to nil. Suggested by + michal@ellpspace.math.ualberta.ca (Michal Jaegermann). + + * tex-buf.el (TeX-command-query): Also offer to save files when + started from a menu. Reported by wscoas@win.tue.nl (Anton + A. Stoorvogel). + (TeX-LaTeX-sentinel): Don't suggest BibTeX if there is no + bibliographies. Suggested by Piet van Oostrum . + +Sat Feb 11 21:44:19 1995 Per Abrahamsen + + * tex-buf.el (TeX-run-format): Protect against being run from a + different buffer. Patch by Michael Kifer + . + + * latex.el (LaTeX-math-default): Moved `Phi' from V to F in + LaTeX-math-mode. Suggested by dak@ind.rwth-aachen.de (David + Kastrup). + * doc/math-ref.tex: Documented it. + +Thu Feb 2 11:24:46 1995 Per Abrahamsen + + * tex-buf.el (TeX-home-buffer): Added interactive, reported by + edavid@lami.univ-evry.fr. + +Wed Feb 1 11:12:35 1995 Per Abrahamsen + + * hilit-LaTeX.el: Upgraded to 1.06. + + * Makefile (CONTRIB, EXTRAFILES): Moved tex-jp.el to CONTRIB. + +Fri Jan 27 21:56:32 1995 Per Abrahamsen + + * latex.el (LaTeX-paragraph-commands): Incorrectly placed + parenthesis. Reported by mic@cs.ucsd.edu (Michelangelo Grigni). + +Thu Jan 26 13:39:56 1995 Per Abrahamsen + + * latex.el (LaTeX-fill-region): Use marker to mark end of region + instead of integer, as the formatting may change the size of the + region. + (LaTeX-common-initialization): Fixed bug in paragraph definitions. + Reported by Steve Anderson . + + * tex.el (save-match-data): Added by koba@flab.fujitsu.co.jp + (Kobayashi Shinji). + (bibtex-mode-hook): Don't use add-hook yet. Reported by + koba@flab.fujitsu.co.jp (Kobayashi Shinji). + +Wed Jan 25 14:59:57 1995 Per Abrahamsen + + * tex.el (change-major-mode-hook): Also clear + `LaTeX-environment-list'. + + * Makefile (AUCSRC): Add `auc-menu.el'. + + * tex.el: Use auc-menu instead of easymenu. + + * tex.el: Inserted comment to mark end of site customization. + Suggested by john@minster.york.ac.uk (John A. Murdie). + + * tex.el (change-major-mode-hook): Forgot a set of parentheses. + Reported by Frederic Devernay . + + * tex-buf.el (TeX-current-pages): Removed extra parentheses. + Reported by mic@cs.ucsd.edu (Michelangelo Grigni). + +Tue Jan 24 23:37:35 1995 Per Abrahamsen (abraham@iesd.auc.dk) + + * tex.el (change-major-mode-hook): Added workaround for error in + XEmacs 19.11's `kill-all-local-variables'. + +Mon Jan 23 16:03:35 1995 Per Abrahamsen + + * latex.el (LaTeX-common-initialization): Removed unnecessary + regexp quotes of `TeX-esc'. + + * style/amsart.el: Move `eqref' definition to `style/amstex.el' + and load that style hook. + * style/amstex.el: New file. + * Makefile (STYLESRC): Added it. + Suggested by vb1890@PLAY.CS.NYU.EDU (Victor Boyko). + +Sun Jan 22 14:18:12 1995 Per Abrahamsen + + * latex.el, ltx-math.el, Makefile: Integrated `ltx-math.el' in + `latex.el'. + * tex-site.el: Removed autoload for `LaTeX-math-mode'. + +Thu Jan 19 12:31:45 1995 Per Abrahamsen + + * latex.el (latex-mode): Epoch fix by Martin Sjolin + . + +Tue Jan 17 15:12:54 1995 Per Abrahamsen + + * bib-cite.el: New file contributed by Peter S. Galbraith + . + + * hilit-LaTeX.el: New file contributed by Peter S. Galbraith + . + + * Makefile (CONTRIB): New macro for user contributed emacs lisp + packages, initialized with `bib-cite.el' and `hilit-LaTeX.el'. + (EXTRAFILES): Added $(CONTRIB) to the list. + + * tex.el (TeX-directory-absolute-p): Moved definition before + `TeX-macro-private'. Reported by Frederic Devernay + . + + * latex.el (LaTeX-common-initialization): Remove extra and wrong + "\\\\par" from `paragraph-separate'. Bug reported by + nijhof@th.rug.nl (Jeroen Nijhof). + +Wed Jan 11 11:43:01 1995 Per Abrahamsen + + * tex-buf.el (TeX-command-region): Comment fix. Patch by + wlang@rs6000.mri.akh-wien.ac.at (Willi Langenberger). + (TeX-region-create): More outline-mode safe. Patch by + wlang@rs6000.mri.akh-wien.ac.at (Willi Langenberger). + + * Makefile (dist): Put version number in WWW page. Suggested by + several people. + + * latex.el (LaTeX-auto-regexp-list): Ignore first optional + argument to newenvironment if there is a second. Problem reported + by schiotz@ltf.dth.dk (Jakob Schiotz). + + * style/amsbook.el: New file. Problem reported by Denby Wong + <3dw16@qlink.queensu.ca>. + +Wed Jan 4 02:34:11 1995 Per Abrahamsen + + * tex-buf.el (TeX-TeX-sentinel-check): New function. Updates + `TeX-current-page' with regexp by dodd@roebling.poly.edu (Lawrence + R. Dodd) + (TeX-current-pages): New function. + (TeX-LaTeX-sentinel, TeX-TeX-sentinel): Use it. +y (TeX-format-filter): Removed unnecessary check before assignment. + +Tue Jan 3 03:38:54 1995 Per Abrahamsen + + * tex-buf.el (TeX-LaTeX-sentinel): Write number of pages even + when labels or citations are missing. Patch by + dodd@roebling.poly.edu (Lawrence R. Dodd). + +Wed Dec 7 11:47:56 1994 Per Abrahamsen + + * tex.el (TeX-directory-absolute-p): New function. Should work on + both Unix and MS DOS. Problem reported by schiotz@ltf.dth.dk + (Jakob Schiotz). + (TeX-parse-path): Use it. + (TeX-auto-generate): Use it. + +Mon Dec 5 12:11:12 1994 Per Abrahamsen + + * latex.el (BibTeX-auto-store): Set TeX-auto-parse-length to + 999999 locally. Problem reported by Christoph Wedler + . + +Fri Dec 2 08:20:10 1994 Per Abrahamsen + + * tex-buf.el (TeX-LaTeX-sentinel): Check whether the ".bbl" file + need to be udpated before setting TeX-command-next to "BibTeX". + (TeX-command-query): Remove previous change. + +Mon Nov 28 01:16:05 1994 Per Abrahamsen + + * latex.el (LaTeX-209-to-2e): New function by + Graham Gough . + + * latex.el (LaTeX-mode-menu): Move many commands to new + "Miscellaneous" submenu. + + * tex-buf.el (TeX-home-buffer): Don't take arg. + + * latex.el (LaTeX-left-right-indent-level): New variable + controling indentation for \left \right blocks. + (LaTeX-indent-level-count): New function. Previously only LaTeX + macros at the beginning of the line would affect indentation. + This problem was reported by many people. + (LaTeX-indent-calculate-last): Call `LaTeX-indent-level-count'. + Take into account that \end and \right at the beginning of the + line has immediate effect. + +Sun Nov 27 21:08:28 1994 Per Abrahamsen + + * latex.el (TeX-global-input-files): New variable. Idea and + sample code by Christophe Mignot . + (TeX-arg-input-file): Use it. + (BibTeX-global-style-files): Mention how it is reset in + `TeX-normal-mode'. + (BibTeX-global-files): Ditto. + + * tex.el (TeX-normal-mode): Reset `BibTeX-global-style-files', + `BibTeX-global-files', and `TeX-global-input-files' if invoked + with an argument. + + * tex-site.el: Ignore trailing `/' when adding TeX-lisp-directory + to load-path. Patch by Michael Ernst + . + + * tex-buf.el (TeX-LaTeX-sentinel): Don't rerun LaTeX on missing + references, unless they have changed. Patch by schiotz@ltf.dth.dk + (Jakob Schiotz). + + * latex.el (LaTeX2e-font-replace): New function. + (LaTeX-common-initialization): Set TeX-font-replace-function to + LaTeX2e-font-replace when using latex2e. + + * tex.el (TeX-font-replace-function): New variable. + (TeX-font): Use it. + + TeX-font-replace-function and LaTeX2e-font-replace were + contributed by Peter Thiemann + . + + +Tue Nov 22 14:21:05 1994 Per Abrahamsen + + * MSDOS: Added. Contributed by schiotz@ltf.dth.dk (Jakob + Schiotz). + + * OEMACS: Removed. + + * tex.el (VirTeX-common-initialization): Make + `words-include-escapes' a local variable before setting it. + Reported by Bo Nygaard Bai . + +Tue Nov 15 11:12:38 1994 Per Abrahamsen + + * tex.el (TeX-auto-store): Change to functions that prevent the + auto file buffer from entering emacs-lisp-mode. + (TeX-auto-insert): Don't rely on emacs-lisp-mode for indentation. + Suggested by Stefan Schöf (schoef@informatik.uni-oldenburg.de). + +Fri Nov 11 16:37:54 1994 Per Abrahamsen + + * tex.el (TeX-macro-global): Change to `standard' path. + +Wed Nov 9 22:35:21 1994 Per Abrahamsen + + * tex-buf.el (TeX-command-query): Suggest TeX-command-default + again if bbl file is newer than dvi file. + +Mon Nov 7 19:16:07 1994 Per Abrahamsen + + * tex.el (TeX-submit-bug-report): Indicate LaTeX-version. + Suggested by schiotz@ltf.dth.dk (Jakob Schiotz). + +Wed Oct 26 15:37:53 1994 Per Abrahamsen + + * Makefile (dist): Automatically update AUC-TeX-version and + AUC-TeX-date in tex.el + + * tex.el (AUC-TeX-version): Added AUC-TeX-version and + AUC-TeX-date from auc-ver.el. + + * auc-ver.el: File removed. + + * tex.el: Added version specific code from seperate files. + + * tex-19.el, tex-18.el, tex-lcd.el: Files removed. + +Tue Oct 25 13:05:36 1994 Per Abrahamsen + + * doc/auc-tex.texi (Projects): Removed an implemented item. + + * tex.el (TeX-command-current): New variable. + (TeX-command-select-master): New function. + (TeX-command-select-buffer): New function. + (TeX-command-select-region): New function. + (TeX-command-menu): Use TeX-command-current instead of explicit + file argument. + (TeX-command-menu-print): Remove file argument. + (TeX-command-menu-printer-entry): Don't pass file argument. + (TeX-command-create-menu): Removed. + (TeX-mode-menu): New menu. + (plain-TeX-mode-menu): Removed entries now in TeX-mode-menu. + (plain-TeX-mode-menu): Use `toggle' for bad boxes. + (plain-TeX-common-initialization): Enable TeX-mode-menu. + + * latex.el (LaTeX-mode-menu): Removed entries now in + TeX-mode-menu. + (LaTeX-mode-menu): Use `toggle' for bad boxes. + (LaTeX-common-initialization): Enable TeX-mode-menu. + + * tex-info.el (TeXinfo-command-menu): New menu. + (TeXinfo-mode-menu): Move commands to new menu. + (TeXinfo-mode-menu): Use `toggle' for bad boxes. + (texinfo-mode): Enable TeXinfo-command-menu. + +Mon Oct 24 22:49:51 1994 Per Abrahamsen + + * Makefile (AUCSRC): Removed auc-menu.el from AUC TeX distribution. + (MINMAPSRC): Added easymenu.el temporarily to min-map distribution. + + * auc-menu.el: Just load easymenu.el when using GNU Emacs. + + * easymenu.el Try to use RMS's easymenu instead of auc-menu. + (easy-menu-define): Call `easy-menu-do-define' to do + the real work. Document XEmacs keyword arguments. + (easy-menu-do-define): New function. + (easy-menu-create-keymaps): Support XEmacs keyword arguments in + menu definition. + (easy-menu-remove): Make is a function instead of a macro. + (easy-menu-add): Ditto. + +Fri Oct 21 14:46:16 1994 Per Abrahamsen + + * doc/auc-tex.texi (Completion): Less confusing BibTeX advice, I hope. + + * tex-jp.el: Added patch from koba@flab.fujitsu.co.jp (Kobayashi + Shinji). + + * latex.el (TeX-arg-insert-braces): Have \left and \right on + different lines. Patch by thiemann@informatik.uni-tuebingen.de + (Peter Thiemann). + + * Makefile (dist): Add CHANGES and ChangeLog files to the ftp + directory. Suggested by Frederic Devernay + . + + * latex.el (LaTeX-indent-calculate): Allow nil second element in + `LaTeX-indent-environment-list'. + (LaTeX-indent-environment-list): Added special environments + suggested by thiemann@informatik.uni-tuebingen.de (Peter + Thiemann). + +Thu Oct 20 22:58:59 1994 Per Abrahamsen + + * tex.el (TeX-auto-list-information): Spelling error. + +Tue Oct 18 13:24:26 1994 Per Abrahamsen + + * latex.el (LaTeX-common-initialization): Make "LaTeX2e" the + default command if you have set `LaTeX-version' to "2" and is + using "\documentclass". + +Thu Oct 6 14:38:52 1994 Per Abrahamsen + + * latex.el (LaTeX-paragraph-commands): End each word with a "\\b" + to avoid accidentally matching longer macros. + + * tex.el (TeX-add-local-master): Use three %'s when adding buffer + local variables. Suggested by Raymond Toy . + + * tex.el (TeX-format-list): Added entry for AmSTeX by Ulf Juergens + . + + * tex.el (ams-tex-mode): Run AmS-TeX-mode-hook, not + plain-TeX-mode-hook. Reported by Ulf Juergens + . + + * tex-buf.el (TeX-format-filter): Add `save-match-data'. Patch by + David Aspinall . + +Wed Sep 14 10:53:15 1994 Per Abrahamsen + + * cpp.el: Use RMS's version. + +Tue Sep 13 10:59:07 1994 Per Abrahamsen + + * doc/history.texi, doc/auc-tex.texi: Fixes from Chris Fearnley + <@vm.uni-c.dk:FEARNLCJ@DUVM>. + +Fri Sep 9 13:15:33 1994 Per Abrahamsen + + * latex.el (LaTeX-insert-environment): Don't fill environments + listed in `LaTeX-indent-environment-list'. Suggestion by Graham + Gough . + + * tex.el (LaTeX-command-style): Made latex2e first in the list. + Suggested by Frederic Devernay . + +Mon Sep 5 05:14:31 1994 Per Abrahamsen + + * tex.el (TeX-file-extensions): Added LaTeX2 `cls' extension after + query by jmv@di.uminho.pt (Jose Manuel Valenca). + +Tue Aug 30 00:05:28 1994 Per Abrahamsen + + * tex-jp.el: New version from koba@flab.fujitsu.co.jp (Kobayashi + Shinji). + + * tex.el (TeX-command-list): Fifth element is now ignored. + + * tex-buf.el (TeX-command-query): Check if region file is newer + than dvi file. + (TeX-command-region): Only query for command _after_ region file + is created. + (TeX-region-create): Only save file if the new content is + different than the original content. + +Mon Aug 29 13:41:59 1994 Per Abrahamsen (abraham@research.att.com) + + * tex-buf.el (TeX-warning): Use offset for line end. Fixed by + ddw2@sunbim.be (Dominique de Waleffe). + +Fri Aug 26 18:17:57 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * doc/auc-tex.texi (Projects): Removed preceding item from + wishlist. + + * latex.el (LaTeX-common-initialization): Fix to comments + separating paragraphs by koba@flab.fujitsu.co.jp (Kobayashi + Shinji). + + * tex-jp.el (LaTeX-fill-region-as-paragraph): New version for MULE + 2.0 by Tomotake FURUHATA . + + * tex.el (TeX-function-p): Spelling error in doc. + +Tue Aug 23 11:00:35 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * doc/intro.texi (Contacts): Some reformulations. + +Sun Aug 21 18:47:23 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * tex-jp.el (TeX-insert-punctuation): Japanese version from + koba@flab.fujitsu.co.jp (Kobayashi Shinji). + +Fri Aug 19 14:59:57 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * doc/install.texi: The `site-lisp' directory is also available in + Lucide Emacs 19.10. Reported by Tim Geisler + . + +Thu Aug 18 06:56:53 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * latex.el (TeX-arg-cite): Prompt for multiple keys. Suggested by + Masahiro Kitagawa . + +Wed Aug 17 14:00:16 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * style/german.el ("german"): Use `TeX-quote-after-quote'. + Suggested by te@informatik.uni-hannover.de (Thomas Esser). + + * latex.el (LaTeX-common-initialization): Error in regexp for + multiple arguments to `\cite', reported by Masahiro Kitagawa + . + +Wed Aug 17 01:24:55 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * latex.el (LaTeX-env-figure): Put caption inside center + environment. Suggested by Martin Wunderli . + + * tex.el (TeX-strip-extension): If NODIR is set to `path', remove + the directory part iff it is equal to the current directory, or is + a member of either `TeX-macro-global' or `TeX-macro-private'. + (TeX-master-file): Use `path' for NODIR when querying the user for + a file name. Reported finger@brachio.Informatik.Uni-Dortmund.DE + (Bernd Finger). + +Tue Aug 16 12:22:04 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * latex.el (LaTeX-common-initialization): `eqnarray*' should not + have a label. Reported by dodd@roebling.poly.edu (Lawrence R. + Dodd). + +Thu Aug 11 16:00:18 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * tex-buf.el (TeX-background-filter): Always show background + output. + +Wed Aug 10 19:14:42 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * Makefile (MINMAPSRC): Added `all.el'. + + * all.el: New file. + + * tex-buf.el (TeX-LaTeX-sentinel): Write "some" if + TeX-current-page is nil. Reported by Michail Rozman + . + +Tue Aug 9 01:26:58 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * auc-menu.el (easy-menu-add): Undid previous change. + (top level `cond'): Use Emacs 18 code if `window-system' is nil. + Patch by Patrice Belleville . + +Mon Aug 8 21:40:01 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * tex.el (TeX-electric-macro): No electricity after `.' or `\'. + +Sat Aug 6 13:53:01 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * latex.el (LaTeX-paragraph-commands): New variable. + (LaTeX-common-initialization): Use it. Suggested by + liyuan@allwise.research.att.com (Yuan P. Li). + + * auc-menu.el (easy-menu-add): Check that `x-popup-menu' is bound + and that we are running under X before calling it. Reported by + Adrian F. Clark + +Thu Aug 4 19:14:53 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * tex-jp.el (LaTeX-fill-region-as-paragraph): Patch for Emacs 19 + regexps by koba@flab.fujitsu.co.jp (Kobayashi Shinji) reported by + Uenami Ken'ichi . + + * doc/auc-tex.texi (European): Mention `iso-cvt.el' as suggested + by mike@vlsivie.tuwien.ac.at (Michael Gschwind). + +Wed Aug 3 15:36:02 1994 Per Abrahamsen (abraham@iesd.auc.dk) + + * doc/history.texi: New file. + + * doc/Makefile (HISTORY): Added rule. + + * Makefile (EXTRAFILES): Added `ChangeLog'. + (DOCFILES): Added `history.texi'. + + * doc/auc-tex.texi (History): Made ready for 9.2. Move history to + `history.texi'. + + * doc/changes.texi: Made ready for 9.2. Introduce ChangeLog. + + * Makefile (LispInstall): Use "/bin/pwd" instead of "pwd". + reported by mic@cs.ucsd.edu (Michelangelo Grigni). + + * ChangeLog: New file. + + * Version 9.1 released. + diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/INSTALLATION --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/INSTALLATION Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,117 @@ +Installation of AUC TeX +*********************** + +Compiling +========= + +The following describes how to install AUC TeX under Unix. You may +also be able to do use these instructions under some other operating +systems, if you have already installed the proper GNU tools, such as +`make'. + + To install AUC TeX for an entire site (which may just be your own +personal Linux box), issue the following two commands as root: + + make + make lispdir=/usr/local/share/emacs/site-lisp install + + except that instead of /usr/local/... you should use the location of +your sites emacs installation. AUC TeX will then be installed in a +subdirectory named `auctex' of the `site-lisp' directory, and the file +`tex-site.el' will be stored directly in the `site-lisp'. You can now +tell your users to enable AUC TeX by adding + + (require 'tex-site) + + to their `.emacs' file. + + If you use xemacs instead, or if your emacs binary is named something +else than `emacs', specify this by using the commands + + make EMACS=xemacs + make lispdir=/usr/local/share/emacs/site-lisp install + + to install. + + If you want to install AUC TeX in your personal account, you should +chose a directory for all your emacs add-ons, for example an `elisp' +subdirectory in your home directory. You can then install AUC TeX with +the commands + + make + make lispdir=$HOME/elisp install + + You will then need to add the following lines to your `.emacs' file: + + (setq load-path (cons "~/elisp" load-path)) + (require 'tex-site) + +Customizing +=========== + + Next, you should edit the file `tex-site.el' to fit your local site. +You do this by looking at the customization section in the beginning +of `tex.el' and copy the definitions that are wrong for your site to +`tex-site.el'. Do *not* edit `tex.el' directly, or you will have to do +all the work over again when you upgrade AUC TeX. AUC TeX will not +overwrite your old `tex-site.el' file next time you install, so you +will be able to keep all your customizations. + + There are two variables with a special significance. + + - User Option: TeX-lisp-directory + The directory where you want to install the AUC TeX lisp files. + + This variable is set automatically by the `make install' command. +If you don't issue a `make install', for example if you don't want to +install AUC TeX in a different place, you will have to set this +variable manually to the location of the compiled files. + + - User Option: TeX-macro-global + Directories containing the site's TeX style files. + + Normally, AUC TeX will only allow you to complete a short list of +build-in macros and environments and on the macros you define yourself. +If you issue the `M-x TeX-auto-generate-global' command after loading +AUC TeX, you will be able to complete on all macros available in the +standard style files used by your document. To do this, you must set +this variable to a list of directories where the standard style files +are located. The directories will be searched recursively, so there is +no reason to list subsirectories explicitly. + + You probably also need to change `TeX-command-list' to make sure +that the commands used for starting TeX, printing, etc. work on your +system. Copy the definition from `tex.el' to `tex-site.el' and edit +the command names appropriately. + + Finally, copy and edit `TeX-printer-list' to contain the printers +available at your site. + + To extract information from your sites TeX macros, type `M-x +TeX-auto-generate-global' in your emacs. This will only work if you +have set `TeX-macro-global' correctly in `tex-site.el'. + +Contributed files +================= + + There are several files that are not part of AUC TeX proper, but +included in the distribution in case they are useful. + +`hilit-LaTeX.el' + Better highlighting for the obsolete `hilit19' package. + +`font-latex.el' + Better highlighting for the FONT-LOCK package. + +`bib-cite.el' + Better support for bibliographies and much more. + +`tex-jp.el' + Support for Japanese. + +`func-doc.el' + Support for context sensitive online help for various languages. + + Read the comments in the start of each file for more information +about how to install, what they do, and who wrote and maintains them. + diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/Makefile Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,218 @@ +# Makefile - for the AUC TeX distribution. +# +# Maintainer: Per Abrahamsen +# Version: 9.7i +# +# Edit the makefile, type `make', and follow the instructions. + +##---------------------------------------------------------------------- +## YOU MUST EDIT THE FOLLOWING LINES +##---------------------------------------------------------------------- + +# Where local software is found +prefix=/usr/local + +# Where info files go. +infodir = $(prefix)/info + +# Where local lisp files go. +lispdir = $(prefix)/share/emacs/site-lisp + +# Where the AUC TeX emacs lisp files go. +aucdir=$(lispdir)/auctex + +# Name of your emacs binary +EMACS=emacs + +##---------------------------------------------------------------------- +## YOU MAY NEED TO EDIT THESE +##---------------------------------------------------------------------- + +# Do not change the definition of autodir below, unless you also +# update TeX-auto-global in tex-init.el + +# Where the automatically generated lisp files for your site go. +autodir=$(aucdir)/auto + +# Using emacs in batch mode. +BATCH=$(EMACS) -batch -q -l lpath.el + +# Specify the byte-compiler for compiling AUC TeX files +ELC= $(BATCH) -f batch-byte-compile + +# Specify the byte-compiler for generating style files +AUTO= $(EMACS) -batch -l $(aucdir)/tex.elc \ + -l $(aucdir)/latex.elc -f TeX-auto-generate-global + +# Specify the byte-compiler for compiling generated style files +AUTOC= $(ELC) + +# How to move the byte compiled files to their destination. +MV = mv + +# How to copy the lisp files to their distination. +CP = cp -p + +##---------------------------------------------------------------------- +## BELOW THIS LINE ON YOUR OWN RISK! +##---------------------------------------------------------------------- + +SHELL = /bin/sh + +FTPDIR = /home/ftp/pub/Staff/Per.Abrahamsen/auctex +#FTPDIR = /home/ftp/pub/Staff/Per.Abrahamsen/mirror/ftp/auctex + +WWWDIR = $(HOME)/.public_html/auctex +#WWWDIR = /home/ftp/pub/Staff/Per.Abrahamsen/mirror/www/auctex + +REMOVE = ltx-help.el + +MINMAPSRC = auc-menu.el maniac.el outln-18.el all.el multi-prompt.el + +CONTRIB = bib-cite.el tex-jp.el font-latex.el +CONTRIBELC = bib-cite.elc font-latex.elc + +AUCSRC = auc-old.el tex.el tex-buf.el latex.el tex-info.el multi-prompt.el +AUCELC = auc-old.elc tex.elc tex-buf.elc latex.elc tex-info.elc \ + multi-prompt.elc + + +STYLESRC = style/slides.el style/foils.el style/amstex.el \ + style/article.el style/book.el style/letter.el \ + style/report.el style/amsart.el style/amsbook.el \ + style/epsf.el style/psfig.el style/latexinfo.el \ + style/dutch.el style/german.el style/dk.el \ + style/j-article.el style/j-book.el style/j-report.el \ + style/jarticle.el style/jbook.el style/jreport.el \ + style/dinbrief.el style/virtex.el style/plfonts.el \ + style/plhb.el style/harvard.el style/swedish.el + +DOCFILES = doc/Makefile doc/auc-tex.texi doc/intro.texi doc/install.texi \ + doc/changes.texi doc/tex-ref.tex doc/math-ref.tex doc/history.texi + +EXTRAFILES = COPYING PROBLEMS MSDOS VMS OS2 WIN-NT Makefile ChangeLog \ + lpath.el tex-site.el $(CONTRIB) + +all: lisp + +lisp: + $(ELC) $(AUCSRC) $(STYLESRC) $(CONTRIB) + +install: install-lisp + +tex.elc: tex.el + $(ELC) $(AUCSRC) $(STYLESRC) + +contrib: + $(ELC) bib-cite.el + $(ELC) font-latex.el +# $(ELC) tex-jp.el # Doesn't compile without MULE +# $(ELC) hilit-LaTeX.el # Doesn't compile without X + +install-lisp: tex.elc + if [ ! -d $(lispdir) ]; then mkdir $(lispdir); else true; fi ; + if [ -f $(lispdir)/tex-site.el ]; \ + then \ + echo "Leaving old tex-site.el alone."; \ + else \ + sed -e 's#@AUCDIR#$(aucdir)/#' tex-site.el \ + > $(lispdir)/tex-site.el ; \ + fi + if [ ! -d $(aucdir) ]; then mkdir $(aucdir); else true; fi ; + if [ `/bin/pwd` != `(cd $(aucdir) && /bin/pwd)` ] ; \ + then \ + if [ ! -d $(aucdir)/style ]; then mkdir $(aucdir)/style; \ + else true; fi ; \ + $(MV) $(AUCELC) $(aucdir) ; \ + $(MV) style/*.elc $(aucdir)/style ; \ + $(CP) $(AUCSRC) $(aucdir) ; \ + $(CP) style/*.el $(aucdir)/style ; \ + else \ + echo "Leaving compiled files in place."; \ + fi + +install-contrib: + $(MV) $(CONTRIBELC) $(aucdir) + $(MV) bib-cite.elc $(aucdir) + $(MV) font-latex.elc $(aucdir) + $(CP) $(CONTRIB) $(aucdir) + +install-info: + -(cd doc; $(MAKE) install infodir=$(infodir)) + + +install-auto: + @echo "Use \"M-x TeX-auto-generate-global RET\" instead." + + +.el.elc: + $(ELC) $< + +clean: + rm -rf *~ #*# lex.yy.c idetex auctex + (cd doc; $(MAKE) clean) + +wc: + wc $(AUCSRC) $(STYLESRC) + +dist: + @if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi + if [ "X$(OLD)" = "X" ]; then echo "No patch"; exit 1; fi + @echo "**********************************************************" + @echo "** Making distribution of auctex for release $(TAG)" + @echo "**********************************************************" + if [ -d auctex-$(TAG) ]; then rm -r auctex-$(TAG) ; fi + rm -f $(WWWDIR)/version + echo $(TAG) > $(WWWDIR)/version + perl -pi.bak -e "s/Version: $(OLD)/Version: $(TAG)/" \ + $(AUCSRC) $(EXTRAFILES) + mv ChangeLog ChangeLog.old + echo `date "+%a %b %d %T %Y "` \ + " Per Abrahamsen " > ChangeLog + echo >> ChangeLog + echo " * Version" $(TAG) released. >> ChangeLog + echo >> ChangeLog + cat ChangeLog.old >> ChangeLog + cvs commit -m "Release $(OLD)++" tex.el + rm -f tex.el.orig + mv tex.el tex.el.orig + sed -e '/defconst AUC-TeX-date/s/"[^"]*"/"'"`date`"'"/' \ + -e '/defconst AUC-TeX-version/s/"[^"]*"/"'$(TAG)'"/' \ + < tex.el.orig > tex.el + rm -f $(REMOVE) + -cvs remove $(REMOVE) + -cvs add $(AUCSRC) $(EXTRAFILES) + -(cd doc; cvs add `echo $(DOCFILES) | sed -e s@doc/@@g` ) + -(cd style; cvs add `echo $(STYLESRC) | sed -e s@style/@@g` ) + cvs commit -m "Release $(TAG)" + cvs tag release_`echo $(TAG) | sed -e 's/[.]/_/g'` + mkdir auctex-$(TAG) + mkdir auctex-$(TAG)/style + mkdir auctex-$(TAG)/doc + cp $(AUCSRC) $(EXTRAFILES) auctex-$(TAG) + cp $(STYLESRC) auctex-$(TAG)/style + cp $(DOCFILES) auctex-$(TAG)/doc + (cd doc; $(MAKE) dist; cp auctex auctex-* ../auctex-$(TAG)/doc ) + (cd doc; cp INSTALLATION README CHANGES ../auctex-$(TAG)/ ) + cp doc/CHANGES $(FTPDIR)/CHANGES-$(TAG) + cp doc/auc-tex.ps $(FTPDIR) + cp ChangeLog $(FTPDIR) + cp doc/*.html $(WWWDIR)/doc + rm -f $(FTPDIR)/auctex-$(TAG).tar.gz $(FTPDIR)/auctex.tar.gz + rm -f $(FTPDIR)/auctex.tar.Z $(FTPDIR)/auctex.zip + tar -cf - auctex-$(TAG) | gzip --best > $(FTPDIR)/auctex-$(TAG).tar.gz + tar -cf - auctex-$(TAG) | compress > $(FTPDIR)/auctex.tar.Z + zip -r $(FTPDIR)/auctex auctex-$(TAG) + (cd $(FTPDIR); ln -s auctex-$(TAG).tar.gz auctex.tar.gz) + cvs rdiff -r release_`echo $(OLD) | sed -e 's/[.]/_/g'` \ + -r release_`echo $(TAG) | sed -e 's/[.]/_/g'` auctex \ + > $(FTPDIR)/auctex-$(OLD)-to-$(TAG).patch ; exit 0 + +patch: + cvs rdiff -r release_`echo $(OLD) | sed -e 's/[.]/_/g'` \ + -r release_`echo $(TAG) | sed -e 's/[.]/_/g'` auctex + +min-map: + -cvs add $(MINMAPSRC) + cvs commit -m "Update" + cp $(MINMAPSRC) doc/math-ref.tex $(FTPDIR) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/PROBLEMS --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/PROBLEMS Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,105 @@ +* Your Emacs is missing easymenu.el. + +Please upgrade. + +If that is absolutely impossible, you can try installing + + + +under the name easymenu.el at some place where emacs can find it. +The best place is in the standard Emacs lisp directory, because that +will automatically be removed when you upgrade. + +* Missing menus or menus containing just the word "Bug". + +You probably have an old version of easymenu.el or auc-menu.el. Find +it, delete it, and recompile AUC TeX. If you are using an old Emacs, +the easymenu.el may have been distributed with it. In that case, see +the previous point. + +* You are not using UNIX or can't figure out how to install. + +0. Delete any old version you have. + +1. Edit tex-site.el. Read the comments in the file. + +2. Add (load-file "/tex-site.el") to your .emacs file. + +If you start a fresh emacs, AUC TeX should be loaded now. +The two next steps are optional: + +3. Byte compile the files with "M-x byte-compile-file" for speed. + +4. Do a `M-x TeX-auto-generate-global' to get full macro completion. + +Look also for files with names like MSDOS, OS2, or VMS that might be +applicable for your system. + +* You get errors during byte compilation. + +This often indicates a type in your customizations. If you have +modified `tex-site.el', try to enter that file from Emacs and type +`M-x eval-current-buffer RET' to find the error. + +This is can also be because some old version of AUC TeX gets loaded +during the compilation. Make sure to remove all old versions, and try +again. The Emacs 19 byte-compiler will give warning about free +variables and unknown functions. Ignore them. + +tex-jp.el will fail unless you have an emacs that understands japanese. + +NEmacs-3.3.2 cannot `make install-auto', use `M-x TeX-auto-generate-global' +instead. + +Mule-1.0-KIRITSUBO fails to parse some of the style files. + +* You are using NeXT Emacs. + +NeXT Emacs is broken, a workaround is available by ftp: + +host: sunsite.auc.dk +file: /packages/auctex/get-proc-env.el.z (gzip'ed) + +* You are mixing Emacs 18, FSF Emacs 19, and Lucid Emacs 19. + +Make sure to use the correct byte-compiled files for each version. +You may want to disable the automatic byte compilation by setting + + (setq TeX-byte-compile nil) + +in your .emacs file. + +* None if this completion or multifile stuff works... + +It must be enabled first, insert this in your emacs: + + (setq-default TeX-master nil) + (setq TeX-parse-self t) + (setq TeX-auto-save t) + +Read also the chapters about parsing and multifile documents in the +manual. + +* When I save `foo.bib' AUC TeX forgets the information in `foo.tex'. + +For various reasons, AUC TeX ignores the extension when it store +information about a file, so you should use unique base names for your +files. E.g. rename `foo.bib' to `foob.bib'. + +* (La)TeX Interactive does not work. + +You need comint.el on Emacs 18. Look at your favorite elisp archive. + +* TeX-save-document does not work. + +Make sure TeX-check-path contains "./" somewhere. + +* Ispell does not ignore TeX macros. + +GNU ispell 4.0 does not understand TeX. Upgrade to International +Ispell 3.1 which works much better on TeX documents. + + +% Local Variables: +% mode: outline-minor +% End: diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/README Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,170 @@ +Introduction to AUC TeX +*********************** + +This section of the AUC TeX manual gives a brief overview of what AUC +TeX is, and the section is also available as a `README' file. It is +*not* an attempt to document AUC TeX. Real documentation for AUC TeX +is available in the rest of the manual, which you can find in the `doc' +directory. + + Read the `INSTALLATION' file for information about how to install +AUC TeX. It is identical to the Installation chapter in the AUC TeX +manual. + + If you are upgrading from the previous version of AUC TeX, the +latest changes can be found in the `CHANGES' file. If you are +upgrading from an older version, read the History chapter in the AUC +TeX manual. + + AUC TeX is a comprehensive customizable integrated environment for +writing input files for LaTeX using GNU Emacs. + + AUC TeX lets you run TeX/LaTeX and other LaTeX-related tools, such +as a output filters or post processor from inside Emacs. Especially +`running LaTeX' is interesting, as AUC TeX lets you browse through the +errors TeX reported, while it moves the cursor directly to the reported +error, and displays some documentation for that particular error. This +will even work when the document is spread over several files. + + AUC TeX automatically indents your `LaTeX-source', not only as you +write it -- you can also let it indent and format an entire document. +It has a special outline feature, which can greatly help you `getting an +overview' of a document. + + Apart from these special features, AUC TeX provides an large range of +handy Emacs macros, which in several different ways can help you write +your LaTeX documents fast and painless. + + All features of AUC TeX are documented using the GNU Emacs online +documentation system. That is, documentation for any command is just a +key click away! + + AUC TeX is written entirely in Emacs-Lisp, and hence you can easily +add new features for your own needs. It was not made as part of any +particular employment or project (apart from the AUC TeX project +itself). AUC TeX is distributed under the `GNU Emacs General Public +License' and may therefore almost freely be copied and redistributed. + + The next sections are a short introduction to some `actual' features. +For further information, refer to the build-in online documentation of +AUC TeX. + +Indentation and formatting +========================== + + AUC TeX may automatically indent your document as you write it. By +pressing lfd instead of ret at the end of a line, the current line is +indented by two spaces according to the current environment level, and +the cursor is moved down one line. By pressing tab, the current line +is indented, and the cursor stays where it is. The well-known Emacs +feature `format-paragraph' (`M-q') is reimplemented especially for AUC +TeX to follow the indentation. A special command `LaTeX-fill-buffer' +lets you indent an entire document like the well-known C utility indent +(this time, only according to the LaTeX structure :-). + +Completion +========== + + By studying your `\documentstyle' command (in the top of your +document), and consulting a precompiled list of (La)TeX symbols from a +large number of TeX and LaTeX files, AUC TeX is aware of the LaTeX +commands you should able to use in this particular document. This +`knowledge' of AUC TeX is used for two purposes. + + 1. To make you able to `complete' partly written LaTeX commands. You + may e.g. write `\renew' and press `M-tab' (`TeX-complete-symbol'), + and then AUC TeX will complete the word `\renewcommand' for you. + In case of ambiguity it will display a list of possible + completions. + + 2. To aid you inserting environments, that is \begin - \end pairs. + This is done by pressing C-c C-e (LaTeX-environment), and you will + be prompted for which `environment' to insert. + +Editing your document +===================== + + A number of more or less intelligent keyboard macros have been +defined to aid you editing your document. The most important are +listed here below. + +`LaTeX-environment' + (`C-c C-e') Insert a `\begin{}' -- `\end{}' pair as described + above. + +`LaTeX-section' + (`C-c C-s') Insert one of `\chapter', `\section', etc. + +`TeX-font' + (`C-c C-f C-r', `C-c C-f C-i', `C-c C-f C-b') Insert one of + `{\textrm }'), `{\textit \/}' `{\textbf }' etc. + + A number of additional functions are available. But it would be far +too much to write about here. Refer to the rest of the AUC TeX +documentation for further information. + +Running LaTeX +============= + + When invoking on of the commands `TeX-command-master' (`C-c C-c') or +`TeX-command-region' (`C-c C-r') LaTeX is run on either the entire +current document or a given region of it. The Emacs view is split in +two, and the output of TeX is printed in the second half of the screen, +as you may simultaneously continue editing your document. In case TeX +found any errors when processing your input you can call the function +`TeX-next-error' (`C-c `') which will move the cursor to the first +given error, and display a short explanatory text along with the +message TeX gave. This procedure may be repeated until all errors have +been displayed. By pressing `C-c C-w' (`TeX-toggle-debug-boxes') you +can toggle whether the browser also should notify over-full/under-full +boxes or not. + + Once you've successfully formatted your document, you may preview or +print it by invoking `TeX-command-master' again. + +Outlines +======== + + Along with AUC TeX comes support for outline mode for Emacs, which +lets you browse the sectioning structure of your document, while you +will still be able to use the full power of the rest of the AUC TeX +functionality. + +Availability +============ + + The most recent version is always available by ftp at + + `ftp://ftp.iesd.auc.dk/pub/emacs-lisp/auctex.tar.gz' + + In case you don't have access anonymous ftp, you can get it by email +requests to `'. + + WWW users may want to check out the AUC TeX page at + + `http://www.iesd.auc.dk/~amanda/auctex/' + +Contacts +======== + + There has been established a mailing list for help, bug reports, +feature requests and general discussion about AUC TeX. You're very +welcome to join. Traffic average at an article by day, but they come +in bursts. If you are only interested in information on updates, you +could refer to the newsgroups `comp.text.tex' and `gnu.emacs.sources'. + + If you want to contact the AUC TeX mailing list, send mail to +`' in order to join. Articles should be +send to `'. + + To contact the current maintainers of auc-TeX directly, email +`'. + + AUC TeX development + c/o Kresten Krab Thorup + + Mathematics and Computer Science + University of Aalborg + DK 9000 Aalborg + Denmark + diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/auc-old.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/auc-old.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,249 @@ +;;; auc-old.el - Compatibility with AUC TeX 6.* +;; +;; Maintainer: Per Abrahamsen +;; Version: 9.7i +;; +;; Copyright (C) 1991 Kresten Krab Thorup +;; Copyright (C) 1993 Per Abrahamsen +;; +;; 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 1, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Commentary: + +;; This file contains an alternative keymapping, compatible with +;; older versions of AUC TeX. You are strongly suggested to try the +;; new keyboard layout, as we would like this file to go away +;; eventually. + +;;; Code: + +(require 'latex) + +;;; Keymaps + +(defun TeX-define-key (key value) + "OBSOLETE: Define KEY to VALUE in TeX and LaTeX mode." + (define-key plain-TeX-mode-map key value) + (define-key LaTeX-mode-map key value)) + +(TeX-define-key "\n" 'TeX-terminate-paragraph) +(TeX-define-key "\e}" 'up-list) +(TeX-define-key "\e{" 'TeX-insert-braces) +(TeX-define-key "\C-c\C-b" 'TeX-bold) +(TeX-define-key "\C-c\C-i" 'TeX-italic) +(TeX-define-key "\C-c\C-s" 'TeX-slanted) +(TeX-define-key "\C-c\C-r" 'TeX-roman) +(TeX-define-key "\C-c\C-e" 'TeX-emphasize) +(TeX-define-key "\C-c\C-t" 'TeX-typewriter) +(TeX-define-key "\C-c\C-y" 'TeX-small-caps) +(TeX-define-key "\C-c\C-d" 'TeX-region) +(TeX-define-key "\C-c\C-a" 'TeX-buffer) +(TeX-define-key "\C-c\C-p" 'TeX-preview) +(TeX-define-key "\C-c\C-n" 'TeX-next-error) +(TeX-define-key "\C-c!" 'TeX-print) +(TeX-define-key "\e\t" 'TeX-complete-symbol) +(TeX-define-key "\C-c$" 'TeX-run-lacheck) + +(define-key LaTeX-mode-map "\C-c\n" 'TeX-terminate-paragraph) +(define-key LaTeX-mode-map "\C-c\C-x" 'LaTeX-section) +(define-key LaTeX-mode-map "\C-c\C-c" 'LaTeX-environment) +(define-key LaTeX-mode-map "\C-c@" 'LaTeX-bibtex) +(define-key LaTeX-mode-map "\C-c#" 'LaTeX-makeindex) +(define-key LaTeX-mode-map "\em" 'LaTeX-math-mode) +(define-key LaTeX-mode-map "\es" 'LaTeX-fill-section) +(define-key LaTeX-mode-map "\e\C-e" 'LaTeX-mark-environment) +(define-key LaTeX-mode-map "\e\C-x" 'LaTeX-mark-section) +(define-key LaTeX-mode-map "\e\C-q" 'LaTeX-fill-environment) + +;;; Buffer + +(defun TeX-region (begin end) + "OBSOLETE: Run TeX-command-default on current region." + (interactive "r") + (require 'tex-buf) + (setq TeX-current-process-region-p t) + (if (nth 4 (assoc TeX-command-default TeX-command-list)) + (TeX-region-create (TeX-region-file "tex") + (buffer-substring begin end) + (file-name-nondirectory (buffer-file-name)) + (count-lines (point-min) begin))) + (TeX-command TeX-command-default 'TeX-region-file)) + +(defun TeX-buffer () + "OBSOLETE: Run TeX-command-default on the current document." + (interactive) + (save-some-buffers) ; added for compatibility reasons + (require 'tex-buf) + (setq TeX-current-process-region-p nil) + (TeX-command TeX-command-default 'TeX-master-file)) + +(defun TeX-old-command (name) + "OBSOLETE: Run command NAME on either the current document or region." + (require 'tex-buf) + (if TeX-current-process-region-p + (TeX-command name 'TeX-region-file) + (TeX-command name 'TeX-master-file))) + +(defun TeX-preview () + "OBSOLETE: Run View command on either the current document or region." + (interactive) + (TeX-old-command "View")) + +(defun TeX-print () + "OBSOLETE: Run Print command on either the current document or region." + (interactive) + (TeX-old-command "Print")) + +(defun TeX-run-lacheck() + "OBSOLETE: Run lacheck command on either the current document or region." + (interactive) + (TeX-old-command "Check")) + +(defun LaTeX-bibtex () + "OBSOLETE: Run BibTeX command on either the current document or region." + (interactive) + (TeX-old-command TeX-command-BibTeX)) + +(defun LaTeX-makeindex () + "OBSOLETE: Run Index command on either the current document or region." + (interactive) + (TeX-old-command "Index")) + +;;; Fonts + +(defun TeX-bold () + (interactive "*") + (insert TeX-grop TeX-esc "bf " TeX-grcl) + (backward-char 1)) + +(defun TeX-italic () + (interactive "*") + (insert TeX-grop TeX-esc "it " TeX-esc "/" TeX-grcl) + (backward-char 3)) + +(defun TeX-slanted () + (interactive "*") + (insert TeX-grop TeX-esc "sl " TeX-esc "/" TeX-grcl) + (backward-char 3)) + +(defun TeX-roman () + (interactive "*") + (insert TeX-grop TeX-esc "rm " TeX-grcl) + (backward-char 1)) + +(defun TeX-emphasize () + (interactive "*") + (insert TeX-grop TeX-esc "em " TeX-esc "/" TeX-grcl) + (backward-char 3)) + +(defun TeX-typewriter () + (interactive "*") + (insert TeX-grop TeX-esc "tt " TeX-grcl) + (backward-char 1)) + +(defun TeX-small-caps () + (interactive "*") + (insert TeX-grop TeX-esc "sc " TeX-grcl) + (backward-char 1)) + +;;; AUC (La)TeX Mode +;; +;; Added by marsj@ida.liu.se Thu Mar 5 17:52:38 1992 to support +;; automatic mode change after using insert-mode-line hook. Also +;; modified regexp to choose tex mode to be more aware of latex +;; (documentstyle is uniq, isn'it) + +(defun insert-mode-line () + "This little macro inserts `% -*- mode-name -*-' if not present. +You should insert this in your TeX-mode-hook!" + (interactive "*") + (save-excursion + (goto-char (point-min)) + (if (not (re-search-forward "-\\*-.*-\\*-" 100 t)) + (insert-string (concat "% -*- " + (substring (symbol-name major-mode) 0 -5) + " -*-\n"))))) + +(defun auc-tex-mode () + "Called when we have a mode line specification in first line." + (interactive) + (plain-tex-mode)) + +(defun auc-latex-mode () + "Called when we have a mode line specification in first line." + (interactive) + (latex-mode)) + +;;; Validation + +(defun TeX-validate-buffer () + "Check current buffer for paragraphs containing mismatched $'s. +As each such paragraph is found, a mark is pushed at its beginning, +and the location is displayed for a few seconds." + (interactive) + (let ((opoint (point))) + (goto-char (point-max)) + ;; Does not use save-excursion + ;; because we do not want to save the mark. + (unwind-protect + (while (and (not (input-pending-p)) (not (bobp))) + (let ((end (point))) + (search-backward "\n\n" nil 'move) + (or (TeX-validate-paragraph (point) end) + (progn + (push-mark (point)) + (message "Mismatch found in pararaph starting here") + (sit-for 4))))) + (goto-char opoint)))) + +(defun TeX-validate-paragraph (start end) + (condition-case () + (save-excursion + (save-restriction + (narrow-to-region start end) + (goto-char start) + (forward-sexp (- end start)) + t)) + (error nil))) + +(defun TeX-terminate-paragraph (inhibit-validation) + "Insert two newlines, breaking a paragraph for TeX. +Check for mismatched braces/$'s in paragraph being terminated. +A prefix arg inhibits the checking." + (interactive "*P") + (or inhibit-validation + (TeX-validate-paragraph + (save-excursion + (search-backward "\n\n" nil 'move) + (point)) + (point)) + (message "Paragraph being closed appears to contain a mismatch")) + (reindent-then-newline-and-indent) + (newline-and-indent)) + +;;; Miscellaneous + +(defun TeX-cmd-on-region (begin end command) + "Reads a (La)TeX-command. Makes current region a TeX-group. +Inserts command at the start of the group." + (interactive "*r\ns(La)TeX-command on region: ") + (save-excursion + (goto-char end) (insert TeX-grcl) + (goto-char begin) (insert TeX-grop TeX-esc command " "))) + +(provide 'auc-old) +(provide 'auc-tex) + +;;; auc-old.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/bib-cite.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/bib-cite.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,2722 @@ +;; bib-cite.el - Display \cite, \ref or \label / Extract refs from BiBTeX file. + +;; Copyright (C) 1994, 1995, 1996, 1997 Peter S. Galbraith + +;; Author: Peter S. Galbraith +;; Created: 06 July 1994 +;; Version: 2.28 (22 January 97) +;; Keywords: bibtex, cite, auctex, emacs, xemacs + +;; RCS $Id: bib-cite.el,v 1.1 1997/02/20 02:17:35 steve Exp $ +;; Note: RCS version number does not correspond to release number. + +;; Everyone is granted permission to copy, modify and redistribute this +;; file provided: +;; 1. All copies contain this copyright notice. +;; 2. All modified copies shall carry a prominant notice stating who +;; made modifications and the date of such modifications. +;; 3. The name of the modified file be changed. +;; 4. No charge is made for this software or works derived from it. +;; This clause shall not be construed as constraining other software +;; distributed on the same medium as this software, nor is a +;; distribution fee considered a charge. + +;; LCD Archive Entry: +;; bib-cite|Peter Galbraith|galbraith@mixing.qc.dfo.ca| +;; Display \cite, \ref or \label / Extract refs from BiBTeX file.| +;; 22-Jan-1997|2.28|~/misc/bib-cite.el.gz| + +;; ---------------------------------------------------------------------------- +;;; Commentary: + +;; New versions of this package (if they exist) may be found at: +;; ftp://ftp.phys.ocean.dal.ca/users/rhogee/elisp/bib-cite.el + +;; Operating Systems: +;; Works in unix, DOS and OS/2. Developped under Linux. +;; VMS: I have no clue if this works under VMS. I don't know how emacs handle +;; logical names (i.e. for BIBINPUTS) but I am willing to fix this package for +;; VMS if someone if willing to test it and answer questions. + +;; AUC-TEX USERS: +;; auc-tex is a super-charged LaTeX mode for emacs. Get it at: +;; ftp://ftp.iesd.auc.dk/pub/emacs-lisp/auctex.tar.gz <-stable release +;; ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/auctex/ <-alpha release +;; +;; WWW users may want to check out the AUC TeX page at +;; http://www.iesd.auc.dk/~amanda/auctex/ +;; +;; bib-cite.el is included in the auc-tex distribution. Therefore, if +;; you use auc-tex, you probably have an old version of bib-cite.el in +;; your load-path which may get loaded instead of this file (unless this +;; is the auc-tex file!). Make sure you replace that file, or rename it, +;; or delete it!!! + +;; MS-DOS USERS: +;; Multifile documents are supported by bib-cite by using etags (TAGS files) +;; which contains a bug for MSDOS (at least for emacs 19.27 it does). +;; Get the file +;; ftp://ftp.phys.ocean.dal.ca/users/rhogee/elisp/bib-cite.etags-bug-report +;; to see what patches to make to etags.c to fix it. + +;; Description: +;; ~~~~~~~~~~~ +;; This package is used in various TeX modes to display or edit references +;; associated with \cite commands, or matching \ref and \label commands. +;; (so I actually overstep BiBTeX bounds here...) +;; These are the functions: +;; +;; bib-display bib-display-mouse +;; - Display citation, \ref or \label under point +;; bib-find bib-find-mouse +;; - Edit citation, \ref or \label under point +;; bib-make-bibliography - Make BiBTeX file containing only cite keys used. +;; bib-apropos - Search BiBTeX source files for keywords. +;; bib-etags - Refreshes (or builds) the TAGS files for +;; multi-file documents. +;; bib-create-auto-file - Used in bibtex-mode to create cite key +;; completion .el file for auctex. +;; bib-highlight-mouse - Highlight \cite, \ref and \label commands in +;; green when the mouse is over them. + +;; About Cite Commands and related functions: +;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +;; Various flavors of \cite commands are allowed (as long as they contain +;; the word `cite') and they may optionally have bracketed [] options. +;; Bibtex Cross-references are displayed, and @string abbreviations are +;; substituted or included. +;; +;; The \cite text is found (by emacs) in the bibtex source files listed in the +;; \bibliography command. The BiBTeX files can be located in a search path +;; defined by an environment variable (typically BIBINPUTS, but you can change +;; this). +;; +;; All citations used in a buffer can also be listed in a new bibtex buffer by +;; using bib-make-bibliography. This is useful to make a bibtex file for a +;; document from a large bibtex database. In this case, cross-references are +;; included, as well as the @string commands used. The @string abbreviations +;; are not substituted. +;; +;; The bibtex files can also be searched for entries matching a regular +;; expression using bib-apropos. + +;; Usage instructions: +;; ~~~~~~~~~~~~~~~~~~ +;; bib-display Bound to Mouse-3 when specially highlighted. +;; In Hyperbole, bound to the Assist key. +;; Bound to `\C-c b d' +;; +;; bib-display will show the bibtex entry or the corresponding label or +;; ref commands from anywhere within a document. +;; With cursor on the \cite command itslef +;; -> display all citations of the cite command from the BiBTeX source. +;; With cursor on a particular cite key within the brackets +;; -> display that citation's text from the BiBTeX source file(s). +;; +;; Example: +;; +;; \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} +;; ^Cursor -> Display-all-citations ^Cursor -> Display-this-citation +;; +;; With cursor on a \label command +;; -> Display first matching \ref command in the document +;; With cursor on a \ref command +;; -> Display environment associated with the matching \label command. +;; +;; Finding a ref or label within a multi-file document requires a TAGS file, +;; which is automatically generated for you. This enables you to then use +;; any tags related emacs features. +;; +;; bib-find Bound to Mouse-2 when specially highlighted. +;; In Hyperbole, bound to the Action key. +;; Bound to `\C-c b f' +;; +;; bib-find will select the buffer and move point to the BiBTeX source file +;; at the proper citation for a cite command, or move point to anywhere +;; within a document for a label or ref command. The ref chosen is the +;; first occurrance within a document (using a TAGS file). If point is +;; moved within the same buffer, mark is set before the move and a message +;; stating so is given. If point is moved to another file, this is done in +;; a new window using tag functions. Within a plain file, the search +;; pattern is set for another similar \ref command (since TAGS file are not +;; used). Within a multi-file document the following tag functions are +;; appropriately setup: +;; +;; C-u M-. Find next alternate definition of last tag specified. +;; +;; C-u - M-. Go back to previous tag found. +;; +;; +;; For multi-file documents, you must be using auctex (so that bib-cite can +;; find the master file) and all \input and \include commands must be first +;; on a line (not preceeded by any non-white text). +;; +;; imenu support (Suggested key binding: Shift-Mouse-3) +;; +;; If you want to bind imenu globally to Shift-Mouse-3, do so by adding the +;; following to your ~/.emacs +;; +;; (require 'imenu) +;; (define-key global-map [S-mouse-3] 'imenu) +;; +;; Another good place to define Imenu is in the menu-bar. You can try this +;; manually with +;; +;; M-x imenu-add-to-menubar RET Imenu RET +;; +;; or in a hook such as: +;; +;; (add-hook 'LaTeX-mode-hook '(lambda () (imenu-add-to-menubar "Imenu"))) +;; +;; The imenu facility (distributed with emacs) is supported by bib-cite to +;; move point to a LaTeX section (or chapter) division or to a label +;; declaration. When editing a multi-file document, all such declarations +;; within the document are displayed in the menu (again using a TAGS file). +;; If you do not want to load imenu.el and use these features, set +;; bib-use-imenu to nil. (This feature is disabled in xemacs because I'm +;; told it doesn't have imenu). +;; +;; bib-make-bibliography: Bound to `\C-c b m' +;; +;; Extract citations used in the current document from the \bibliography{} +;; file(s). Put them into a new suitably-named buffer. In a auctex +;; multi-file document, the .aux files are used to find the cite keys (for +;; speed). You will be warned if these are out of date. +;; +;; This buffer is not saved to a file. It is your job to save it to whatever +;; name you wish. Note that auctex has a unique name space for LaTeX and +;; BiBTeX files, so you should *not* name the bib file associated with +;; example.tex as example.bib! Rather, name it something like +;; example-bib.bib. +;; +;; bib-apropos: Bound to `\C-c b a' +;; +;; Searches the \bibliography{} file(s) for entries containing a keyword and +;; display them in the *help* buffer. You can trim down your search by using +;; bib-apropos in the *Help* buffer after the first invocation. the current +;; buffer is also searched for keyword matches if it is in bibtex-mode. +;; +;; It doesn't display cross-references nor does it substitute or display +;; @string commands used. It could easily be added, but it's faster this +;; way. Drop me a line if this would be a useful addition. +;; +;; If you find yourself entering a cite command and have forgotten which key +;; you want, but have entered a few initial characters as in `\cite{Gal', +;; then invoke bib-apropos. It will take that string (in this case `Gal') as +;; an initial response to the apropos prompt. You are free to edit it, or +;; simply press carriage return. +;; +;; bib-etags: Bound to `\C-c b e' +;; +;; Creates a TAGS file for auc-tex's multi-file document (or refreshes it). +;; This is used by bib-find when editing multi-file documents. The TAGS file +;; is created automatically, but it isn't refreshed automatically. So if +;; bib-find can't find something, try running bib-etags again. The *rescan* +;; in imenu also calls bib-etags to refresh the TAGS file, so that is another +;; way to generate it. +;; +;; bib-create-auto-file: +;; +;; Use this when editing a BiBTeX buffer to generate the auc-tex .el file +;; which tell emacs about all its cite keys. I've added this command to +;; bibtex-mode pull-down menu. +;; +;; bib-highlight-mouse: Bound to `\C-c b h' +;; +;; Highlights \cite, \ref and \label commands in green when the mouse is over +;; them. By default, a call to this function is added to LaTeX-mode-hook +;; (via bib-cite-initialize) if you set bib-highlight-mouse-t to true. But +;; you may want to run this command to refresh the highlighting for newly +;; edited text. + +;; Installation instructions: +;; ~~~~~~~~~~~~~~~~~~~~~~~~~ +;; If you use a menued environment (e.g. X Window System), bib-cite must be +;; loaded *after* your LaTeX-mode menus are created in order to bypass an +;; annoying bug in bib-cite. This is done by loading bib-cite via a +;; mode-hook: +;; - If you are using AUC-TeX (http://sunsite.auc.dk/auctex/), add the +;; following lines to your ~/.emacs file: +;; +;; (defun my-LaTeX-mode-hook () +;; (require 'bib-cite)) +;; (add-hook 'LaTeX-mode-hook 'my-LaTeX-mode-hook) +;; +;; - If you are using Emacs' regulare LaTeX-mode, use instead: +;; +;; (defun my-LaTeX-mode-hook () +;; (require 'bib-cite)) +;; (add-hook 'latex-mode-hook 'my-TeX-mode-hook) +;; +;; If you do not use a windowed environment, all you need to do is add this +;; line to your .emacs file: +;; +;; (require 'bib-cite) +;; +;; bib-cite can be used with auctex, or stand-alone. If used with auctex on a +;; multi-file document (and auctex's parsing is used), then all \bibliography +;; commands in the document will be found and used. +;; --- +;; The following variable can be unset (like shown) to tell bib-cite to +;; not give advice messages about which commands to use to find the next +;; occurrence of a search: +;; +;; (setq bib-novice nil) +;; --- +;; By default, bib-cite adds a menu-bar pull-down menu under a separate name. +;; Under emacs' tex-mode and auctex's latex-mode, it can be placed within +;; the existing menu if you set the following: +;; +;; (setq bib-cite-put-menu-separately nil) +;; +;; This variable has no effect under XEmacs. Should I change this? +;; --- +;; The imenu features will be disabled if you set this variable to nil +;; +;; (setq bib-use-imenu nil) +;; +;; This variable has no effect under XEmacs. +;; --- +;; If you use hilit19 (or hl319), then bib-display will use it to highlight +;; the display unless you turn this off with: +;; +;; (setq bib-hilit-if-available nil) +;; +;; If you don't use hilit19, or if this is nil, and if you use font-lock +;; then it will be used by bib-display. +;; --- +;; The variable bib-switch-to-buffer-function sets the function used to +;; select buffers (if they differ from the original) in bib-cite commands +;; bib-make-bibliography, bib-display, bib-find +;; You may use `switch-to-buffer' `switch-to-buffer-other-window' or +;; `switch-to-buffer-other-frame'. +;; --- +;; The following variable determines whether we will attempt to highlight +;; citation, ref and label commands in green when they are under the +;; mouse. When highlighted, the mouse keys work to call bib-display +;; (bound to [mouse-3]) and bib-find (bound to [mouse-2]). If you use a +;; mode other than LaTeX-mode, you'll want to call bib-highlight-mouse with +;; a hook (See how we do this at the end of this file with the add-hook +;; command). +;; +;; (setq bib-highlight-mouse-t nil) +;; --- +;; If you use DOS or OS/2, you may have to set the following variable: +;; +;; (setq bib-dos-or-os2-variable t) +;; +;; if bib-cite.el fails to determine that you are using DOS or OS/2. +;; Try `C-h v bib-dos-or-os2-variable' to see if it needs to be set manually. +;; --- +;; bib-cite needs to call the etags program with its output file option +;; and also with the append option (usually -a). +;; I figured that DOS and OS/2 would use "etags /o=" instead of the unix +;; variant "etags -o ", but users have reported differently. So while the +;; unix notation is used here, you can reset it if you need to like so: +;; +;; (setq bib-etags-command "etags /o=") +;; (setq bib-etags-append-command "etags /a /o=") +;; --- +;; For multi-file documents, a TAGS file is generated by etags. +;; By default, its name is TAGS. You can change this like so: +;; +;; (setq bib-etags-filename "TAGSLaTeX") +;; --- +;; If your environment variable to find BiBTeX files is not BIBINPUTS, then +;; reset it with the following variable (here, assuming it's TEXBIB instead): +;; +;; (setq bib-bibtex-env-variable "TEXBIB") +;; +;; Note that any directory ending in a double slash will cause bib-cite to +;; search recursively through subdirectories for your .bib files. This can +;; be slow, so use this judiciously. +;; e.g. setenv BSTINPUTS .:/home/rhogee/LaTeX/bibinputs// +;; -> all directories below /home/rhogee/LaTeX/bibinputs/ will be +;; searched. +;; --- +;; If you do not wish bib-display to substitute @string abbreviations, +;; then set the following variable like so: +;; +;; (setq bib-substitute-string-in-display nil) +;; --- +;; Warnings are given when @string abbreviations are not defined in your bib +;; files. The exception is for months, usually defined in style files. If you +;; use other definitions in styles file (e.g. journals), then you may add them +;; to the `bib-substitute-string-in-display' list variable. + +;; If you find circumstances in which this package fails, please let me know. + +;; Things for me to do in later versions: +;; - jmv@di.uminho.pt (Jose Manuel Valenca) wants: +;; - prompt for \cite as well as \label and \ref +;; (and use auctex's completion list) +;; - implement string concatenation, with #[ \t\n]*STRING_NAME +;; - Create new command to substitute @string text in any bibtex buffer. + +;; ---------------------------------------------------------------------------- +;;; Change log: +;; V2.28 Jan 22 97 - Peter Galbraith (RCS V1.9) +;; - Bug in bib-create-auto-file. +;; V2.27 Dec 31 96 - Peter Galbraith (RCS V1.8) +;; - allow spaces between cite keys. +;; - Vladimir Alexiev +;; Allow () delimiters as well as {}. +;; Better check on bibtex-menu +;; Erase *bibtex-bibliography* buffer. +;; V2.26 Sep 24 96 - Peter Galbraith (RCS V1.7) +;; imenu bug fix. +;; V2.25 Sep 23 96 - Anders Stenman (RCS V1.6) +;; XEmacs bib-cite-fontify-help-as-latex bug fix. +;; V2.24 Aug 19 96 - Peter Galbraith (RCS V1.3) +;; XEmacs bug fix, minor defvars - Vladimir Alexiev +;; V2.23 Aug 13 96 - Peter Galbraith (RCS V1.2) +;; XEmacs - Add bib-cite entries to bibtex-mode popup menu. +;; V2.22 July 22 96 - Peter Galbraith (RCS V1.1) +;; local-map has `m' for bib-make-bibliography instead of `b' +;; set-buffer-menubar in XEmacs so that menu disappears after use. +;; V2.21 July 12 96 - Peter Galbraith +;; Define `\C-c b' keymap for both plain tex and auctex, in XEmacs and emacs. +;; Separate menu-bar menu in gnu emacs. +;; font-lock support for bib-display'ed citations (bibtex fontification) +;; and for matching \ref{} and \labels (latex fontification). +;; buffer-substring-no-properties in bib-apropos +;; (bug in completing-read with mouse faces) +;; imenu-sort-function made local and nil. +;; imenu--LaTeX-name-and-position fixed for section name containing "\" +;; Various other things... (whitespace within label strings, etc...) +;; V2.20 June 25 96 - Peter Galbraith +;; imenu fixed for emacs-19.31. +;; V2.19 May 13 96 +;; PSG: +;; - @string substitution fixed; bib-edit-citation fixed when buffer exists; +;; Christoph Wedler : +;; - Added bib-switch-to-buffer-function +;; - (setq tags-always-exact nil) for xemacs +;; - removed eval-after-load foe xemacs +;; V2.18 May 06 96 - PSG +;; New eval-after-load from Fred Devernay +;; V2.17 May 03 96 - PSG +;; Fixed bug introduced in V2.16, reported by Dennis Dams +;; V2.16 May 02 96 - Vladimir Alexiev +;; - somewhat compatible with Hyperbole by binding bib-find and bib-display to +;; the Action and Assist keys inside the bib-highlight-mouse-keymap. +;; - makes more liberal provisions for users with a tty. +;; V2.15 Apr 09 96 - +;; - fix "Buffer read-only" error caused by mouse-face text properties +;; patch by Piet van Oostrum +;; - Use tmm non-X menu, patch by Vladimir Alexiev +;; - input{file.txt} would not work. +;; bug report: David Kastrup +;; V2.14 Feb 26 96 - PSG - define eval-after-load for xemacs +;; Frederic Devernay's suggestion. +;; V2.13 Feb 08 96 - Peter Galbraith - Fixed recursive use of bib-apropos. +;; V2.12 Jan 19 96 - Peter Galbraith +;; emacs-19.30's [down-mouse-1] is defined (rather than [mouse-1]), so +;; bib-highlight-mouse-keymap now has [down-mouse-1] defined to override it. +;; V2.11 Nov 21 95 - Peter Galbraith +;; - Fixed bib-create-auto-file when bib file loaded before LaTeX file. +;; - Michal Mnuk's better imenu labels menu +;; - [mouse-1] and [mouse-2] key defs for highlighted regions. +;; - Improve X menus. +;; - Skip over style files in bib-document-TeX-files. +;; - Add menus and mouse highlighting for xemacs +;; Anders Stenman Dima Barsky +;; - Check bib-use-imenu before calling LaTeX-hook-setq-imenu. +;; From: Kurt Hornik +;; - Remove mouse face properties before inserting new ones. +;; From: Peter Whaite +;; V2.10 Aug 17 95 - Peter Galbraith - fatal bugs in bib-make-bibliography. +;; V2.09 Jul 19 95 - Peter Galbraith +;; - Had introduced bug in search-directory-tree. synced with ff-paths.el. +;; V2.08 Jul 13 95 - Peter Galbraith +;; Fred Douglis says etags should be required +;; V2.07 Jul 04 95 - Peter Galbraith +;; - Minor changes with filename manipulations (careful with DOS...) +;; - Problem if auc-tex not already loaded -> LaTeX-mode-map +;; V2.06 Jul 03 95 - Peter Galbraith - Added recursion through BIBINPUTS path. +;; V2.05 Jun 22 95 - Peter Galbraith Bug: Hanno Wirth +;; bib-get-citations would truncate @String{KEY ="J. {\"u} Res."} +;; V2.04 Jun 19 95 - Peter Galbraith - +;; - use bibtex-mode syntax table in bib buffer, else bib-apropos truncates +;; an article if it contains an unbalanced closing parenthesis. +;; - bib-highlight-mouse would mark a buffer modified +;; V2.03 May 16 95 - Peter Galbraith - +;; auc-tec menu compatible with old "AUC TeX" pull-down name +;; V2.02 May 10 95 - Peter Galbraith - +;; bug report by Bodo Huckestein (getenv env) under DOS +;; V2.01 Mar 27 95 - Peter Galbraith - No imenu on xemacs; check BIBINPUT also +;; V2.00 Mar 27 95 - Peter Galbraith +;; - bib-find and bib-display replace bib-edit-citation and +;; bib-display-citation +;; - bib-apropos now take initial guess from start of cite argument at point. +;; - Multi-file support for bib-make-bibliography using .aux files. +;; - \label and \ref functionality for bib-find and bib-display: +;; - \label may appear within an \begin\end or to label a (sub-)section. +;; - Cursor on \label, goto first \ref, set next i-search to pattern. +;; - Cursor on \ref, goto \label or display it's environment or section. +;; - Works on hidden code! +;; V1.08 Jan 16 95 - Peter Galbraith +;; bib-apropos can be used within *Help* buffer to trim a search. +;; V1.07 Dec 13 94 - Peter Galbraith +;; - Fixed: multi-line @string commands in non-inserted display. +;; - Fixed: quoted \ character in @string commands. +;; - BiBTeX comments should not affect bib-cite +;; - Fixed bib-apropos (from Christoph Wedler ) +;; Faster now, and avoids infinite loops. +;; - Added bib-edit-citation to edit a bibtex files about current citation. +;; - Allow space and newlines between citations: \cite{ entry1, entry2} +;; - Added bib-substitute-string-in-display, bib-string-ignored-warning +;; and bib-string-regexp. +;; - bib-display-citation (from Markus Stricker ) +;; Could not find entry with trailing spaces +;; V1.06 Nov 20 94 - Peter Galbraith +;; - Fixed bib-apropos for: +;; hilighting without invoking bibtex mode. +;; display message when no matches found. +;; would search only last bib file listed (forgot to `goto-char 1') +;; - Fixed bib-make-bibliography that would only see first citation in a +;; multi-key \cite command (found by Michail Rozman +;; - bib-make-bibliography didn't see \cite[A-Z]* commands. +;; Found by Richard Stanton +;; ************************************************** +;; - * Completely rewritten code to support crossrefs * +;; ************************************************** +;; - autodetection of OS/2 and DOS for bib-dos-or-os2-variable +;; - Created bib-display-citation-mouse +;; - bib-apropos works in bibtex-mode on the current buffer +;; - bibtex entry may have comma on next line (!) +;; @ARTICLE{Kiryati-91 +;; , YEAR = {1991 } +;; ... +;; V1.05 Nov 02 94 - Peter Galbraith +;; - bug fix by rossmann@TI.Uni-Trier.DE (Jan Rossmann) +;; for (boundp 'TeX-check-path) instead of fboundp. Thanks! +;; - Translate environment variable set by bib-bibtex-env-variable. +;; (suggested by Richard Stanton ) +;; - add bib-dos-or-os2-variable to set environment variable path separator +;; - Add key-defs for any tex-mode and auc-tex menu-bar entries. +;; [in auc-tec TeX-mode-map is common to both TeX and LaTeX at startup +;; (but TeX-mode-map is only copied to LaTeX-mode-map at initilisation) +;; in plain emacs, use tex-mode-map for both TeX and LaTeX.] +;; - Add key def for bibtex-mode to create auc-tex's parsing file. +;; - Fix bugs found by +;; - fix bib-get-citation for options +;; - fix bib-get-citation for commas preceeded citation command +;; - better regexp for citations and their keys. +;; - Added @string support for any entry (not just journal entries). +;; (I had to disallow numbers in @string keys because of years. +;; Is that ok?) +;; - added bib-apropos +;; V1.04 Oct 24 94 - Peter Galbraith +;; - Don't require dired-aux, rather define the function we need from it. +;; - Regexp-quote the re-search for keys. +;; - Name the bib-make-bibliography buffer diffently than LaTeX buffer +;; because auc-tex's parsing gets confused if same name base is used. +;; V1.03 Oct 24 94 - Peter Galbraith - require dired-aux for dired-split +;; V1.02 Oct 19 94 - Peter Galbraith +;; - If using auc-tex with parsing activated, use auc-tex's functions +;; to find all \bibliography files in a multi-file document. +;; - Find bib files in pwd, BIBINPUTS environment variable path and +;; TeX-check-path elisp variable path. +;; - Have the parser ignore \bibliography that is on a commented `%' line. +;; (patched by Karl Eichwalder ) +;; - Allow for spaces between entry type and key in bib files: +;; (e.g @Article{ key} ) +;; (suggested by Nathan E. Doss ) +;; - Allows options in \cite command (e.g. agu++ package \cite[e.g.][]{key}) +;; - Includes @String{} abbreviations for `journal' entries +;; V1.01 July 07 94 - Peter Galbraith - \bibliography command may have list of +;; BibTeX files. All must be readable. +;; V1.00 July 06 94 - Peter Galbraith - Created +;; ---------------------------------------------------------------------------- +;;; Code: + +;;>>>>>>User-Modifiable variables start here: + +(defvar bib-novice t + "*Give advice to novice users about what commands to use next.") + +(defvar bib-use-imenu (not (string-match "XEmacs\\|Lucid" emacs-version)) + "*Use imenu package for LaTeX modes (coded in bib-cite).") + +(defvar bib-hilit-if-available t + "*Use hilit19 or hl319 to hilit bib-display if available") + +(defvar bib-switch-to-buffer-function 'switch-to-buffer + "*Function used to select buffers if they differ from the original. +You may use `switch-to-buffer' `switch-to-buffer-other-window' or +`switch-to-buffer-other-frame'.") + +(defvar bib-highlight-mouse-t t + "*Call bib-highlight-mouse from LaTeX-mode-hook to add green highlight.") + +(defvar bib-bibtex-env-variable "BIBINPUTS" + "*Environment variable setting the path where BiBTeX input files are found. +BiBTeX 0.99b manual says this should be TEXBIB. +Another version says it should BSTINPUTS. I don't know anymore! + +The colon character (:) is the default path separator in unix, but you may +use semi-colon (;) for DOS or OS/2 if you set bib-dos-or-os2-variable to `t'.") + +(defvar bib-dos-or-os2-variable (or (equal 'emx system-type) + (equal 'ms-dos system-type)) +;; Under OS/2 system-type equals emx +;; Under DOS system-type equals ms-dos + "*`t' if you use DOS or OS/2 for bib-make-bibliography/bib-display + +It tells bib-make-bibliography and bib-display to translate +the BIBINPUTS environment variable using the \";\" character as +a path separator and to translate DOS' backslash to slash. + +e.g. Use a path like \"c:\\emtex\\bibinput;c:\\latex\\bibinput\" + +(You can change the environment variable which is searched by setting the +elisp variable bib-bibtex-env-variable)") + +(defvar bib-etags-command "etags -o " + "*Variable for the etags command and its output option. +In unix, this is usually \"etags -o \" +In DOS and OS/2, this *may* be \"etags /o=\" If so, set it this variable.") + +(defvar bib-etags-append-command "etags -a -o " + "*Variable for the etags command and its append and output option. +In unix, this is usually \"etags -a -o \" +In DOS and OS/2, this *may* be \"etags /a /o=\" If so, set it this variable.") + +(defvar bib-etags-filename "TAGS" + "*Variable for the filename generated by etags, by defaults this TAGS +but you may want to change this to something like TAGSLaTeX such that it can +coexist with some other tags file in your master file directory.") + +(defvar bib-substitute-string-in-display t + "*Determines if bib-display will substitute @string definitions. +If t, then the @string text is substituted. +If nil, the text is not substituted but the @string entry is included.") + +(defvar bib-string-ignored-warning + '("jan" "feb" "mar" "apr" "may" "jun" "jul" "aug" "sep" "sept" "oct" "nov" + "dec") + "*List of @string abbreviations for which a warning is given if not defined. +These are usually month abbreviations (or journals) defined in a style file.") + +;;<<<<<-]+\\)?" + (2 font-lock-function-name-face) + (3 font-lock-reference-face nil t)) + ;; reference type and reference label + ("^[ \t]*\\(OPT[^\"#%'(),={} \t\n0-9][^\"#%'(),={} \t\n]*\\)[ \t]*=" + 1 font-lock-comment-face) + ;; optional field names (treated as comments) + ("^[ \t]*\\([^\"#%'(),={} \t\n0-9][^\"#%'(),={} \t\n]*\\)[ \t]*=" + 1 font-lock-variable-name-face) + ;; field names + "Default expressions to fontify in BibTeX mode.")) + +(defvar bib-cite-bibtex-mode-syntax-table + (let ((st (make-syntax-table))) + ;; [alarson:19920214.1004CST] make double quote a string quote + (modify-syntax-entry ?\" "\"" st) + (modify-syntax-entry ?$ "$$ " st) + (modify-syntax-entry ?% "< " st) + (modify-syntax-entry ?' "w " st) + (modify-syntax-entry ?@ "w " st) + (modify-syntax-entry ?\\ "\\" st) + (modify-syntax-entry ?\f "> " st) + (modify-syntax-entry ?\n "> " st) + (modify-syntax-entry ?~ " " st) + st)) +;; Code from bibtex.el ends + +;; @string starts with a letter and does not contain any of ""#%'(),={} +;; Here we do not check that the field contains only one string field and +;; nothing else. +(defvar bib-string-regexp + "^[, \t]*[a-zA-Z]+[ \t]*=[ \t]*\\([a-zA-Z][^#%'(),={}\" \t\n]*\\)" + "Regular expression for field containing a @string") + +(defvar bib-ext-list nil + "xemacs buffer-local list of bib-cite extents.") +(make-variable-buffer-local 'bib-ext-list) + +(defun bib-display () + "Display BibTeX citation or matching \\ref or \\label command under point. + +If text under cursor is a \\cite command, then display its BibTeX info from +\\bibliography input file. + Example with cursor located over cite command or arguments: + \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} + ^Display-all-citations ^Display-this-citation + +If text under cursor is a \\ref command, then display environment associated +with its matching \\label command. + +If text under cursor is a \\label command, then display the text around +the first matching \\ref command. + +The user is prompted for a \\label or \\ref is nothing suitable is found under +the cursor. The first prompt is for a label. If you answer with an empty +string, a second prompt for a ref will be given. + +A TAGS file is created and used for multi-file documents under auctex." + (interactive) + (let ((cite)) + (save-excursion + (if (not (looking-at "\\\\")) + (re-search-backward "[\\]" nil t)) + (if (looking-at "\\\\[a-zA-Z]*cite") + (setq cite t))) + (if cite + (bib-display-citation) + (bib-display-label)))) + +(defun bib-find () + "Edit BibTeX citation or find matching \\ref or \\label command under point. + +For multi-entry cite commands, the cursor should be on the actual cite key +desired (otherwise a random entry will be selected). +e.g.: \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} + ^Display-this-citation + +If text under cursor is a \\ref command, then point is moved to its matching +\\label command. + +If text under cursor is a \\label command, then point is moved to the first +matching \\ref command. + +The user is prompted for a \\label or \\ref is nothing suitable is found under +the cursor. The first prompt is for a label. If you answer with an empty +string, a second prompt for a ref will be given. + +A TAGS file is created and used for multi-file documents under auctex." + (interactive) + (let ((cite)) + (save-excursion + (if (not (looking-at "\\\\")) + (re-search-backward "[ \\\n]" nil t)) + (if (looking-at "\\\\[a-zA-Z]*cite") + (setq cite t))) + (if cite + (bib-edit-citation) + (bib-find-label)))) + +(defun bib-display-mouse (EVENT) + "Display BibTeX citation or matching \\ref or \\label command under mouse. +See bib-display." + (interactive "e") + (mouse-set-point EVENT) + (bib-display)) + +(defun bib-find-mouse (EVENT) + "Edit BibTeX citation or find matching \\ref or \\label command under mouse. +See bib-find." + (interactive "e") + (mouse-set-point EVENT) + (bib-find)) + +(defun bib-apropos () + "Display BibTeX entries containing a keyword from bibliography file. +The files specified in the \\bibliography command are searched unless +the current buffer is in bibtex-mode or is the Help buffer. In those +cases, *it* is searched. This allows you to trim down a search further +by using bib-apropos sequentially." + ;;(interactive "sBibTeX apropos: ") + (interactive) + (let* ((keylist (and (boundp 'TeX-auto-update) ;Avoid error in FRAMEPOP + (fboundp 'LaTeX-bibitem-list) ;Use this if using auctex + (LaTeX-bibitem-list))) + (keyword (bib-apropos-keyword-at-point)) + (keyword (completing-read "BiBTeX apropos: " keylist nil nil keyword)) + (the-text)(key-point)(start-point) + (new-buffer-f (and (not (string-match "^bib" mode-name)) + (not (string-equal "*Help*" (buffer-name))))) + (bib-buffer (or (and new-buffer-f (bib-get-bibliography nil)) + (current-buffer)))) + (save-excursion + (set-buffer bib-buffer) + (goto-char (point-min)) + (while (and (re-search-forward "^[ \t]*@" nil t) + (re-search-forward keyword nil t)) + (setq key-point (point)) ;To make sure this is within entry + (re-search-backward "^[ \t]*@" nil t) + (setq start-point (point)) + (forward-list 1) + (if (< (point) key-point) ;And this is that test... + (goto-char key-point) ;Not within entry, skip it. + (setq the-text + (cons (concat (buffer-substring start-point (point)) "\n") + the-text)))) + (if (not the-text) + (message "Sorry, no matches found.") + (with-output-to-temp-buffer "*Help*" + (mapcar 'princ (nreverse the-text))) + (if bib-novice + (message + (substitute-command-keys + (concat "Use \\[bib-apropos] again in the *help* buffer" + " to trim the search")))) + (cond + ((and bib-hilit-if-available + (fboundp 'hilit-highlight-region)) + (set-buffer "*Help*") + (hilit-highlight-region (point-min) (point-max) 'bibtex-mode t)) + ;; font-lock? + ((featurep 'font-lock) + (set-buffer "*Help*") + (set (make-local-variable 'font-lock-defaults) + '(bib-cite-bibtex-font-lock-keywords + nil t ((?$ . "\"")(?\" . ".")))) + (font-lock-fontify-buffer)))) + (if new-buffer-f + (kill-buffer bib-buffer))))) + +(defvar bib-document-citekeys-obarray-warnings nil + "bib-cite internal variable") + +(defun bib-make-bibliography () + "Extract citations used in the current document from \bibliography{} file(s). +Put them into a buffer named after the current buffer, with extension .bib. + +In an auc-tex multi-file document, parsing must be on and the citation keys +are extracted from the .aux files. + +In a plain LaTeX buffer (not multi-file), the cite keys are extracted from +the text itself. Therefore the text need not have been previously processed +by LaTeX. + +This function is useful when you want to share a LaTeX file, and therefore want +to create a bibtex file containing only the references used in the document." + (interactive) + (let* ((the-keys-obarray (or (bib-document-citekeys-obarray) + (bib-buffer-citekeys-obarray))) + ;1st in case of error + (new-buffer + (create-file-buffer + (concat (substring (buffer-name) 0 + (or (string-match "\\." (buffer-name)) + (length (buffer-name)))) + "-bib.bib"))) + (bib-buffer (bib-get-bibliography nil)) + (the-warnings (bib-get-citations the-keys-obarray + bib-buffer + new-buffer + nil))) + (kill-buffer bib-buffer) +;;; (switch-to-buffer new-buffer) + (funcall bib-switch-to-buffer-function new-buffer) + (bibtex-mode) + (cond + ((and bib-hilit-if-available + (fboundp 'hilit-highlight-region)) + (hilit-highlight-buffer t)) + ((featurep 'font-lock) ;Perhaps let the user's setup determine + (font-lock-fontify-buffer))) ; if font-lock fontifies? + (if (or bib-document-citekeys-obarray-warnings + the-warnings) + (progn + (cond + ((and bib-document-citekeys-obarray-warnings the-warnings) + (with-output-to-temp-buffer "*Help*" + (princ bib-document-citekeys-obarray-warnings the-warnings))) + (bib-document-citekeys-obarray-warnings + (with-output-to-temp-buffer "*Help*" + (princ bib-document-citekeys-obarray-warnings))) + (the-warnings + (with-output-to-temp-buffer "*Help*" (princ the-warnings)))) + (setq bib-document-citekeys-obarray-warnings nil) ;Reset + (bib-cite-fontify-red))) + (if bib-novice + (message + (substitute-command-keys + "Use \\[save-buffer] to save this buffer to a file."))))) + +(defun bib-cite-fontify-red (&optional limit) + "Fontify *Help* buffer in red-bold up to optional limit" + (if (and window-system ;Not exactly correct for XEmacs + (not (facep 'red-bold))) + (progn + (copy-face 'bold 'red-bold) + (set-face-foreground 'red-bold "red"))) + (save-excursion + (set-buffer "*Help*") + (let ((before-change-functions) (after-change-functions)) + (put-text-property (point-min)(or limit (point-max)) + 'face 'red-bold)))) + +(defun bib-cite-fontify-help-as-latex () + (save-excursion + (cond + ((and bib-hilit-if-available + (fboundp 'hilit-highlight-region)) + (set-buffer "*Help*") + (hilit-highlight-region (point-min) (point-max) 'LaTeX-mode t)) + ;; font-lock? + ((and (featurep 'font-lock) + (featurep 'font-latex)) + (set-buffer "*Help*") + (setq font-lock-defaults '(font-latex-keywords-2 nil nil ((?$ . "\"")))) + ;; Add all syntax table for `proper' fontification? + (font-lock-fontify-buffer)) + ((featurep 'font-lock) + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '(tex-font-lock-keywords nil nil ((?$ . "\"")))) + (set-buffer "*Help*") + (font-lock-fontify-buffer))))) + +(defvar bib-document-TeX-files-warnings nil + "bib-cite internal variable") + +(defun bib-etags (&optional masterdir) + "Invoke etags on all tex files of the document, storing the TAGS file +in the master-directory. Expect errors if you use this outside of auctex +or within a plain single-file document. +Also makes sure that the TAGS buffer is updated. +See variables bib-etags-command and bib-etags-filename" + (interactive) + (require 'etags) + (let* ((the-file-list (bib-document-TeX-files)) + (the-file (car the-file-list)) + (dir (or masterdir (bib-master-directory))) + (the-tags-file (expand-file-name bib-etags-filename dir)) + (the-tags-buffer (get-file-buffer the-tags-file))) + ;; Create TAGS file with first TeX file (master file) + (shell-command (concat bib-etags-command the-tags-file " " the-file)) + (setq the-file-list (cdr the-file-list)) + ;; Append to TAGS file for all other TeX files. + (while the-file-list + (setq the-file (car the-file-list)) + (shell-command + (concat bib-etags-append-command the-tags-file " " the-file)) + (setq the-file-list (cdr the-file-list))) + (if the-tags-buffer ;buffer existed; we must refresh it. + (save-excursion + (set-buffer the-tags-buffer) + (revert-buffer t t))) + + ;; Check value of tags-file-name against the-tags-file + (or (equal the-tags-file tags-file-name) ;make sure it's current + (visit-tags-table the-tags-file)) + + ;(set (make-local-variable 'tags-file-name) the-tags-file)) + ;; above should not be needed + + ;; Weird Bug: + ;; (visit-tags-table-buffer) seems to get called twice when called by + ;; find-tag on an undefined tag. The second time, it's in the TAGS + ;; buffer and returns an error because TAGS buffer does have + ;; tags-file-name set. + ;; To get around this. I'm setting this variable in the TAGS buffer. + ;; Skip this in XEmacs (Changed by Anders Stenman) + (if (not (string-match "XEmacs\\|Lucid" emacs-version)) + (save-excursion + (set-buffer (get-file-buffer the-tags-file)) + (set (make-local-variable 'tags-file-name) the-tags-file)))) + + + (if bib-document-TeX-files-warnings ;free variable loose in emacs! + (progn + (with-output-to-temp-buffer "*Help*" + (princ bib-document-TeX-files-warnings)) + (setq bib-document-TeX-files-warnings nil) ;Reset + (bib-cite-fontify-red) + ;;;(if (and bib-hilit-if-available + ;;; (fboundp 'hilit-region-set-face)) + ;;; (save-excursion + ;;; (set-buffer "*Help*") + ;;; (hilit-region-set-face + ;;; 1 (point-max) + ;;; (cdr (assq 'error hilit-face-translation-table))))) + ))) + +(defun bib-Is-hidden () + "Return true is current point is hidden" + (if (not selective-display) + nil ;Not hidden if not using this... + (save-excursion + (if (not (re-search-backward "[\n\^M]" nil t)) + nil ;Play safe + (if (string-equal (buffer-substring (match-beginning 0)(match-end 0)) + "\n") + nil + t))))) + +(defun bib-highlight-mouse () + "Make that nice green highlight when the mouse is over LaTeX commands" + (interactive) +;;;Comment this out. User should be able to use bib-highlight-mouse +;;;to try it out regardless of bib-highlight-mouse-t. +;;;Check bib-highlight-mouse-t only in automated cases. +;;; +;;; (if (and bib-highlight-mouse-t +;;; ;;window-system) ;Do nothing unless under X +;;; ) +;;; *all of code was here* +;;; ) + (save-excursion + (let ((s)(e)(extent) + (inhibit-read-only t) + (modified (buffer-modified-p))) ;put-text-property changing this? + (goto-char (point-min)) + ;; * peta Wed Nov 8 16:27:29 1995 -- better remove the mouse face + ;; properties first. + (if (string-match "XEmacs\\|Lucid" emacs-version) + (while bib-ext-list + (delete-extent (car bib-ext-list)) + (setq bib-ext-list (cdr bib-ext-list))) + ;; Remove properties for regular emacs + ;; FIXME This detroys all mouse-faces and local-maps! + ;; FIXME Hope no other package is using them in this buffer! + (let ((before-change-functions) (after-change-functions)) + (remove-text-properties (point-min) (point-max) + '(mouse-face t local-map t)))) + (while + (re-search-forward + "\\\\\\(ref\\|label\\|[A-Za-z]*cite[A-Za-z]*\\(\\[.*\\]\\)?\\){[^}]*}" + nil t) + (setq s (match-beginning 0)) + (setq e (match-end 0)) + (cond + ((string-match "XEmacs\\|Lucid" emacs-version) + (setq extent (make-extent s e)) + (setq bib-ext-list (cons extent bib-ext-list)) + (set-extent-property extent 'highlight t) + (set-extent-property extent 'start-open t) + (set-extent-property extent 'keymap bib-highlight-mouse-keymap)) + (t + (let ((before-change-functions) (after-change-functions) + ;;(this-overlay (make-overlay s e)) + ) +;;; Even using overlays doens't help here. If bib-highlight-mouse-keymap +;;; does not include the AucTeX menus, then these disappear when we click +;;; onto a \cite command. Perhaps using bib-cite as a minor mode will fix +;;; this? For now, bib-cite must be loaded after these menus are built. +;;; It must therefore be loaded in a mode-hook. + (put-text-property s e 'local-map bib-highlight-mouse-keymap) + (put-text-property s e 'mouse-face 'highlight) + ;;(overlay-put this-overlay 'local-map bib-highlight-mouse-keymap) + ;;(overlay-put this-overlay 'mouse-face 'highlight) + )))) + (set-buffer-modified-p modified)))) + +(defun bib-toggle-highlight () + (interactive) + (if (setq bib-highlight-mouse-t (not bib-highlight-mouse-t)) + (bib-highlight-mouse) + (let ((modified (buffer-modified-p)) + (inhibit-read-only t)) + (cond + ((string-match "XEmacs\\|Lucid" emacs-version) + (while bib-ext-list + (delete-extent (car bib-ext-list)) + (setq bib-ext-list (cdr bib-ext-list)))) + (t + (let ((before-change-functions) (after-change-functions)) + (remove-text-properties (point-min) (point-max) + '(mouse-face local-map))))) + (set-buffer-modified-p modified)))) + +;;---------------------------------------------------------------------------- +;; Routines to display or edit a citation's bibliography + +(defun bib-display-citation () + "Do the displaying of cite info. Returns t if found cite key, nil otherwise. +Example with cursor located over cite command or arguments: +\cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} + ^Display-all-citations ^Display-this-citation" + (save-excursion + (let* ((the-keys-obarray (bib-get-citekeys-obarray)) ;1st in case of error + (work-buffer (get-buffer-create "*bibtex-work*")) + (bib-buffer (bib-get-bibliography nil)) + (the-warnings (bib-get-citations + the-keys-obarray + bib-buffer + work-buffer + bib-substitute-string-in-display)) + (the-warn-point)) + (if the-warnings + (progn + (set-buffer work-buffer) + (goto-char 1) + (insert the-warnings) + (setq the-warn-point (point)))) + (with-output-to-temp-buffer + "*Help*" + (set-buffer work-buffer) + (princ (buffer-substring 1 (point-max)))) + (cond + ((and bib-hilit-if-available + (fboundp 'hilit-highlight-region)) + (set-buffer "*Help*") + (hilit-highlight-region (point-min) (point-max) 'bibtex-mode t) + (if the-warn-point + (hilit-region-set-face + 1 the-warn-point + (cdr (assq 'error hilit-face-translation-table))))) + ((featurep 'font-lock) + (set-buffer "*Help*") + (set (make-local-variable 'font-lock-defaults) + '(bib-cite-bibtex-font-lock-keywords + nil t ((?$ . "\"")(?\" . ".")))) + (font-lock-fontify-buffer) + (if the-warn-point + (bib-cite-fontify-red the-warn-point)))) + (kill-buffer bib-buffer) + (kill-buffer work-buffer)))) + +(defun bib-edit-citation () + "Do the edit of cite info. Returns t if found cite key, nil otherwise. +Find and and put edit point in bib file associated with a BibTeX citation +under cursor from \bibliography input file. +In a multi-entry cite command, the cursor should be on the actual cite key +desired (otherwise a random entry will be selected). +e.g.: \cite{Wadhams81,Bourke.et.al87,SchneiderBudeus94} + ^Display-this-citation" + (let ((the-keys-obarray (bib-get-citekeys-obarray)) ;1st in case of error + (bib-buffer (bib-get-bibliography t)) + (the-key)(the-file)) + (save-excursion + (mapatoms ;Do this for each cite-key found... + (function (lambda (cite-key) + (setq the-key (symbol-name cite-key)))) + the-keys-obarray) + (set-buffer bib-buffer) + (goto-char (point-min)) + (if (not (re-search-forward + (concat "@[^{(]+[{(][\t ]*" the-key "[ ,\n]") nil t)) + (progn + (kill-buffer bib-buffer) + (error "Sorry, could not find bib entry for %s" the-key)) + (re-search-backward "%%%Filename: \\([^\n]*\\)" nil t) + (setq the-file (buffer-substring (match-beginning 1)(match-end 1))) + (kill-buffer bib-buffer))) +;;; (find-file the-file) + (funcall bib-switch-to-buffer-function (find-file-noselect the-file)) + (goto-char (point-min)) ;V2.19 fix + (re-search-forward (concat "@[^{(]+[{(][\t ]*" the-key "[ ,\n]") nil t))) + +;;-------------------------------------------------------------------------- +;; Function for bib-apropos + +(defun bib-apropos-keyword-at-point () + ;; Returns the keyword under point for initial input to bib-apropos prompt + (save-excursion + (let ((here (point))) + (cond + ((and (re-search-backward "[\n{, ]" nil t) + (string-equal "{" (buffer-substring (match-beginning 0) + (match-end 0)))) + (if (fboundp 'buffer-substring-no-properties) + (buffer-substring-no-properties (1+ (point)) here) + (buffer-substring (1+ (point)) here))))))) + +;;-------------------------------------------------------------------------- +;; Functions for Displaying or moving to matching \ref or \label command + +(defun bib-display-label () +;; "Display environment associated with a label or first ref assoc. with label +;;The label or ref name is extracted from the text under the cursor, or the +;;user is prompted is nothing suitable is found. The first prompt is for a +;;label. If you answer with an empty string, a second prompt for a ref will +;;be given." + (let ((the-name (bib-guess-or-prompt-for-label))) + (if (not the-name) + (message "No name given") + (bib-display-or-find-label the-name t)))) + +(defun bib-find-label () + "Move to a label, or the first occurance of a ref. +The label or ref name is extracted from the text under the cursor. +;;If nothing suitable is found, the user is prompted. The first prompt is for a +;;label. If you answer with an empty string, a second prompt for a ref will be +;;given. +;; +;;If within a single file document: +;; You can move back with C-x C-x as the mark is set before moving. +;; You can search for next occurrances of a ref command with C-s C-s. +;; +;;If within a multi-file document (in auctex only) +;; You can move back with C-x C-x if within the same buffer. If not, just +;; select your previous buffer. +;; You can search for next occurrances of a ref command with tag commands: +;; C-u M-. Find next alternate definition of last tag specified. +;; C-u - M-. Go back to previous tag found." + (let ((the-name (bib-guess-or-prompt-for-label))) + (if (not the-name) + (message "No name given") + (bib-display-or-find-label the-name nil)))) + +;;-------------------------------------------------------------------------- +;; Functions for Displaying or moving to matching \ref or \label command + +(defun bib-display-or-find-label (the-name displayf) +;; work horse for bib-find-label and bib-display-label + (let* ((masterfile (bib-master-file)) + (masterdir (and masterfile + (file-name-directory masterfile))) + (new-point)(new-buffer)) + (save-excursion + ;; Now we are either in a simple file, or with a multi-file document + (cond + (masterfile ;Multi-file document + (cond + (displayf ;Display only + (set-buffer (bib-etags-find-noselect the-name masterdir)) + (re-search-forward the-name nil t) ;'cos tags puts point line begin + (if (string-match "^\\\\label" the-name) + (bib-display-this-environment) ;display the label's environment + (bib-display-this-ref))) ; display the ref's context + (t ;Move to it + (setq new-buffer (bib-etags-find-noselect the-name masterdir)) + (if bib-novice + (message + (substitute-command-keys + (concat "Use C-u \\[find-tag] to find the next occurrence; " + "Use C-u - \\[find-tag] to find the previous.")))) + (if (equal new-buffer (current-buffer)) + (setq new-point (point))) ;Moving with the same buffer + (and (string-match "^\\\\ref" the-name) + (setq search-ring (cons the-name search-ring)))))) + (t ;Single-file document + (goto-char (point-min)) + (if (search-forward the-name nil t) + (if displayf + (if (string-match "^\\\\label" the-name) + (bib-display-this-environment) ;Display the environment + (bib-display-this-ref)) ; display the ref's context + (setq new-point (match-beginning 0)) ;or move there + (if bib-novice + (message + (substitute-command-keys + (concat + "Use \\[isearch-forward] \\[isearch-forward] to find the " + "next occurrence; Use C-x C-x to go back.")))) + (if (string-match "^\\\\ref" the-name) + (setq search-ring (cons the-name search-ring)) + (setq search-ring (cons (concat "\\ref" (substring the-name 6)) + search-ring)))) + (message "Sorry, cannot find %s" the-name))))) + (if new-point + (progn + (push-mark (point) t nil) ;We've moving there... push mark + (goto-char new-point)) + (if new-buffer ;We've changing buffer +;; (switch-to-buffer new-buffer) + (funcall bib-switch-to-buffer-function new-buffer))) + (if (bib-Is-hidden) + (save-excursion + (beginning-of-line) + (show-entry))))) + +(defvar bib-label-prompt-map nil) +(if bib-label-prompt-map + () + (setq bib-label-prompt-map (copy-keymap minibuffer-local-completion-map)) + (define-key bib-label-prompt-map " " 'self-insert-command)) + +(defun bib-guess-or-prompt-for-label () + ;; Guess from context, or prompt the user for a label command + (save-excursion + (if (not (looking-at "\\\\")) ;If not on beginning of a command + (re-search-backward "[\\]" + (save-excursion (beginning-of-line)(point)) + t)) + (cond + ((looking-at "\\\\ref{") ;On \ref, looking for matching \label + (let ((b (progn (search-forward "{" nil t)(forward-char -1)(point))) + (e (progn (forward-sexp 1)(point)))) + (concat "\\label" (buffer-substring b e)))) + ((looking-at "\\\\label{") ;On \label, looking for matching \ref + (let ((b (progn (search-forward "{" nil t)(forward-char -1)(point))) + (e (progn (forward-sexp 1)(point)))) + (concat "\\ref" (buffer-substring b e)))) + (t ;Prompt the user + (let* ((minibuffer-local-completion-map bib-label-prompt-map) + (the-alist (create-alist-from-list + (cdr (reverse LaTeX-label-list)))) + ;;; LaTeX-label-list example: + ;;; '(("label3" "label4")("label1" "label2") nil) + ;; so let's get rid of that nil part in embedded list. + (the-name + (if (string-equal "18" (substring emacs-version 0 2)) + (completing-read "Label: " the-alist nil nil nil) + (completing-read "Label: " the-alist nil nil nil + 'LaTeX-find-label-hist-alist)))) + (if (not (equal the-name "")) + (concat "\\label{" the-name "}") + ;; else try to get a \ref + (if (string-equal "18" (substring emacs-version 0 2)) + (setq the-name (completing-read "Ref: " the-alist nil nil nil)) + (setq the-name (completing-read "Ref: " the-alist nil nil nil + 'LaTeX-find-label-hist-alist))) + (if (not (equal the-name "")) + (concat "\\ref{" the-name "}") + nil))))))) + +(defun bib-display-this-ref () + "Display a few lines around current point" + (cond + ((bib-Is-hidden) + (with-output-to-temp-buffer "*BiBTemp*" + (princ + (buffer-substring + (save-excursion + (let ((i 3)) + (while (and (> i 0) + (re-search-backward "[\n\^M]" nil t) + (setq i (1- i))))) + (point)) + (save-excursion + (let ((i 3)) + (while (and (> i 0) + (re-search-forward "[\n\^M]" nil t) + (setq i (1- i))))) + (point))))) + (set-buffer "*BiBTemp*") + (while (search-forward "\^M" nil t) + (replace-match "\n" nil t)) + (goto-char 1) + (if (looking-at "\n") ;Remove first empty line... + (delete-char 1)) + (with-output-to-temp-buffer "*Help*" + (princ (buffer-substring 1 (point-max)))) + (bib-cite-fontify-help-as-latex) + (kill-buffer "*BiBTemp*")) + (t + (with-output-to-temp-buffer ; display the ref's context + "*Help*" + (princ + (buffer-substring (save-excursion (forward-line -2)(point)) + (save-excursion (forward-line 3)(point))))) + (bib-cite-fontify-help-as-latex)))) + +(defun bib-display-this-environment () + "Display the environment associated with a label, or its section name +Assumes point is already on the label. +Does not save excursion." +;; Bugs: The method used here to detect the environment is *not* foolproof. +;; It will get confused, for example, between two figure environments, +;; picking out both instead of the section label above them. But since +;; users typically puts their labels next to the section declaration, +;; I'm satisfied with this... for now. +;; I could have used the following auc-tex functions: +;; LaTeX-current-environment +;; Function: Return the name (a string) of the enclosing LaTeX environment. +;; LaTeX-current-section +;; Function: Return the level of the section that contain point. +;; but then this code would only work as part of auc-tex... + (let ((the-point (point)) + (end-point (point)) + (the-environment)(foundf)) + (while (and (not foundf) + (goto-char end-point) ;Past end of last search + (re-search-forward "\\(^\\|\^M\\)[ \t]*\\\\end{\\([^}]*\\)}" + nil t)) + (setq end-point (point)) + (setq the-environment (buffer-substring (match-beginning 2) + (match-end 2))) + (and (not (string-match "document" the-environment)) + (re-search-backward (concat "\\(^\\|\^M\\)[ \t]*\\\\begin{" + (regexp-quote the-environment) "}")) + (<= (point) the-point) + (setq foundf t))) + (if foundf ;A good environment + (progn + (cond ((bib-Is-hidden) ;Better way is: replace-within-string + (with-output-to-temp-buffer "*BiBTemp*" + (princ (buffer-substring (point) end-point))) + (set-buffer "*BiBTemp*") + (while (search-forward "\^M" nil t) + (replace-match "\n" nil t)) + (goto-char 1) + (if (looking-at "\n") ;Remove first empty line... + (delete-char 1)) + (with-output-to-temp-buffer "*Help*" + (princ (buffer-substring 1 (point-max)))) + (kill-buffer "*BiBTemp*")) + (t + (with-output-to-temp-buffer "*Help*" + (princ (buffer-substring (point) end-point))))) + (bib-cite-fontify-help-as-latex)) + ;; Just find the section declaration + (goto-char the-point) + (if (re-search-backward + "\\(^\\|\^M\\)[ \t]*\\\\\\(sub\\)*section{\\([^}]*\\)}" nil t) + (message (buffer-substring (match-beginning 0)(match-end 0))) + (error + "Sorry, could not find an environment or section declaration"))))) + +(defvar LaTeX-find-label-hist-alist nil "History list for LaTeX-find-label") +(defvar LaTeX-label-list nil "Used by auc-tex to store label names") + + +(defun create-alist-from-list (the-list) +;;; Return a single list from a list that may contain either items +;;; or any number of list levels containing items. +;;; e.g. turns +;;; '(("label3" "label4")("label1" "label2") "label") +;;; into +;;; '(("label3") ("label4") ("label1") ("label2") ("label")) + (mapcar 'list (bib-cite-mh-list-to-string the-list))) + +;;; +;;; Following two functions from mh-utils.el (part of GNU emacs) +;;; I have changed the names in case these functions change what they do. +;;; + +(defun bib-cite-mh-list-to-string (l) + ;; Flattens the list L and makes every element of the new list into a string. + (nreverse (bib-cite-mh-list-to-string-1 l))) + +(defun bib-cite-mh-list-to-string-1 (l) + (let ((new-list nil)) + (while l + (cond ((null (car l))) + ((symbolp (car l)) + (setq new-list (cons (symbol-name (car l)) new-list))) + ((numberp (car l)) + (setq new-list (cons (int-to-string (car l)) new-list))) + ((equal (car l) "")) + ((stringp (car l)) (setq new-list (cons (car l) new-list))) + ((listp (car l)) + (setq new-list (nconc (bib-cite-mh-list-to-string-1 (car l)) + new-list))) + (t (error "Bad element in mh-list-to-string: %s" (car l)))) + (setq l (cdr l))) + new-list)) + +;; ------------------------------------------------------------------------- +;; Routines to extract cite keys from text + +;; ... is truly remarkable, as shown in \citeN{Thomson77,Test56}. Every +;; \cite[{\it e.g.}]{Thomson77,Test56} + +(defun bib-get-citations (keys-obarray bib-buffer new-buffer substitute) + "Put citations of KEYS-OBARRAY from BIB-BUFFER into NEW-BUFFER, +Substitute strings if SUBSTITUTE is t +Return the-warnings as text." + (let ((the-warnings) ;The only variable to remember... + (case-fold-search t)) ;All other results go into new-buffer + ;; bibtex is not case-sensitive for keys. + (save-excursion + (let ((the-text)) + (set-buffer bib-buffer) + (mapatoms ;Do this for each cite-key found... + (function + (lambda (cite-key) + (goto-char (point-min)) + (if (re-search-forward + (concat "@[^{(]+[{(][\t ]*" + (regexp-quote (symbol-name cite-key)) + "\\([, ]\\\|$\\)") + ;; ^^ ^ comma, space or end-of-line + nil t) + (setq the-text (concat the-text + (buffer-substring + (progn (beginning-of-line)(point)) + (progn (forward-sexp 2)(point))) + "\n\n")) + (setq the-warnings (concat the-warnings + "Cannot find entry for: " + (symbol-name cite-key) "\n"))))) + keys-obarray) + (if (not the-text) + (error "Sorry, could not find any of the references")) + ;; Insert the citations in the new buffer + (set-buffer new-buffer) + (insert the-text) + (goto-char 1)) + + ;; We are at beginning of new-buffer. + ;; Now handle crossrefs + (let ((crossref-obarray (make-vector 201 0))) + (while (re-search-forward + "[, \t]*crossref[ \t]*=[ \t]*\\(\"\\|\{\\)" nil t) + ;;handle {text} or "text" cases + (if (string-equal "{" (buffer-substring (match-beginning 1) + (match-end 1))) + (re-search-forward "[^\}]+" nil t) + (re-search-forward "[^\"]+" nil t)) + (intern (buffer-substring (match-beginning 0)(match-end 0)) + crossref-obarray)) + ;; Now find the corresponding keys, + ;; but add them only if not already in `keys-obarray' + (set-buffer bib-buffer) + (goto-char 1) + (let ((the-text)) + (mapatoms ;Do this for each crossref key found... + (function + (lambda (crossref-key) + (if (not (intern-soft (symbol-name crossref-key) keys-obarray)) + (progn + ;; Not in keys-obarray, so not yet displayed. + (goto-char (point-min)) + (if (re-search-forward + (concat "@[^{(]+[{(][\t ]*" + (regexp-quote (symbol-name crossref-key)) + "\\(,\\|$\\)") + nil t) + (setq the-text + (concat the-text + (buffer-substring + (progn (beginning-of-line)(point)) + (progn (forward-sexp 2)(point))) + "\n\n")) + (setq the-warnings + (concat the-warnings + "Cannot find crossref entry for: " + (symbol-name crossref-key) "\n"))))))) + crossref-obarray) + ;; Insert the citations in the new buffer + (set-buffer new-buffer) + (goto-char (point-max)) + (if the-text + (insert the-text))) + (goto-char 1)) + + ;; Now we have all citations in new-buffer, collect all used @String keys + ;; Ex: journal = JPO, + (let ((strings-obarray (make-vector 201 0))) + (while (re-search-forward bib-string-regexp nil t) + (intern (buffer-substring (match-beginning 1)(match-end 1)) + strings-obarray)) + ;; Now find the corresponding @String commands + ;; Collect either the @string commands, or the string to substitute + (set-buffer bib-buffer) + (goto-char 1) + (let ((string-alist) + (the-text)) + (mapatoms ;Do this for each string-key found... + (function + (lambda (string-key) + (goto-char (point-min)) + ;; search for @string{ key = {text}} or @string{ key = "text"} + (if (re-search-forward + (concat "^[ \t]*@string[{(]" + (regexp-quote (symbol-name string-key)) + "[\t ]*=[\t ]*\\(\"\\|\{\\)") + nil t) + (let ((the-string-start (1- (match-end 1))) ;catch bracket + ;;handle {text} or "text" cases + (the-string-end + (cond + ((string-equal "\"" + (buffer-substring (match-beginning 1) + (match-end 1))) + + (re-search-forward "[^\\]\"" nil t) + (point)) + (t + (forward-char -1) + (forward-list 1) + (point))))) + (if substitute ;Collect substitutions + (setq string-alist + (append + string-alist + (list + (cons (symbol-name string-key) + (regexp-quote + (buffer-substring the-string-start + the-string-end)))))) + ;;Collect the strings command themseves + (setq the-text + (concat the-text + (buffer-substring + (progn (forward-char 1)(point)) + (re-search-backward "^[ \t]*@string[{(]" + nil t)) + "\n")))) + ;; @string entry not found + (if (not (member (symbol-name string-key) + bib-string-ignored-warning)) + (setq the-warnings + (concat the-warnings + "Cannot find @String entry for: " + (symbol-name string-key) "\n")))))) + strings-obarray) + ;; Now we have `the-text' of @string commands, + ;; or the `string-alist' to substitute. + (set-buffer new-buffer) + (if substitute + (while string-alist + (goto-char 1) + (let ((the-key (car (car string-alist))) + (the-string (cdr (car string-alist)))) + (while (re-search-forward + (concat "\\(^[, \t]*[a-zA-Z]+[ \t]*=[ \t]*\\)" + the-key + "\\([, \t\n]\\)") + nil t) + (replace-match (concat "\\1" the-string "\\2") t))) + (setq string-alist (cdr string-alist))) + ;; substitute is nil; Simply insert text of @string commands + (goto-char 1) + (if the-text + (insert the-text "\n"))) + (goto-char 1)))) + + ;; We are done! + ;; Return the warnings... + the-warnings)) + +(defun bib-get-citekeys-obarray () + "Return obarray of citation key (within curly brackets) under cursor." + (save-excursion + ;; First find *only* a key *within a cite command + (let ((the-point (point)) + (keys-obarray (make-vector 201 0))) + ;; First try to match a cite command + (if (and (skip-chars-backward "a-zA-Z") ;Stops on \ or { + (looking-at "[a-zA-Z]*cite[a-zA-Z]*")) + (progn + ;;skip over any optional arguments to \cite[][]{key} command + (skip-chars-forward "a-zA-Z") + (while (looking-at "\\[") + (forward-list 1)) + (re-search-forward "{[ \n]*\\([^,} \n]+\\)" nil t) + (intern (buffer-substring (match-beginning 1)(match-end 1)) + keys-obarray) + (while (and (skip-chars-forward " \n") ;no effect on while + (looking-at ",")) + (forward-char 1) + ;;The following re-search skips over leading spaces + (re-search-forward "\\([^,} \n]+\\)" nil t) + (intern (buffer-substring (match-beginning 1)(match-end 1)) + keys-obarray))) + + ;; Assume we are on the keyword + (goto-char the-point) + (let ((the-start (re-search-backward "[\n{, ]" nil t)) + (the-end (progn (goto-char the-point) + (re-search-forward "[\n}, ]" nil t)))) + (if (and the-start the-end) + (intern (buffer-substring (1+ the-start) (1- the-end)) + keys-obarray) + ;; Neither... + (error "Sorry, can't find a reference here")))) + keys-obarray))) + +(defun bib-buffer-citekeys-obarray () + "Extract citations keys used in the current buffer" + (let ((keys-obarray (make-vector 201 0))) + (save-excursion + (goto-char (point-min)) + ;; Following must allow for \cite[e.g.][]{key} !!! + ;; regexp for \cite{key1,key2} was "\\\\[a-Z]*cite[a-Z]*{\\([^,}]+\\)" + (while (re-search-forward "\\\\[a-zA-Z]*cite[a-zA-Z]*\\(\\[\\|{\\)" + nil t) + (backward-char 1) + (while (looking-at "\\[") ; ...so skip all bracketted options + (forward-sexp 1)) + ;; then lookup first key + (if (looking-at "{[ \n]*\\([^,} \n]+\\)") + (progn + (intern (buffer-substring (match-beginning 1)(match-end 1)) + keys-obarray) + (goto-char (match-end 1)) + (while (and (skip-chars-forward " \n") + (looking-at ",")) + (forward-char 1) + (re-search-forward "\\([^,} \n]+\\)" nil t) + (intern (buffer-substring (match-beginning 1)(match-end 1)) + keys-obarray))))) + (if keys-obarray + keys-obarray + (error "Sorry, could not find any citation keys in this buffer."))))) + +;;--------------------------------------------------------------------------- +;; Multi-file document programming requirements: +;; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +;; bib-make-bibliography +;; bib-document-citekeys-obarray needs the master .aux file to extract +;; citation keys. +;; Included .aux files (corresponding to \include'd LaTeX files) are +;; then specified relative to the master-file-directory. +;; +;; bib-get-bibliography (used by interactive commands to extract bib sources) +;; +;; bibtex source filenames are returned from (LaTeX-bibliography-list) +;; unformatted. Since only a single \bibliogragrphy command is allowed +;; by BiBTeX in a document, it is safe to assume that their path is +;; relative to the master file's directory (since the path is relative +;; to where the BiBTeX program is actually ran). +;; +;; imenu +;; +;; Requires list of all tex files (complete with paths) to call etags on +;; them. +;; I used (TeX-style-list) to get the list of possible tex files, but +;; they are not in sorted order. Therefore the imenu would be somewhat +;; confusing. I'll have to do the scan myself, except that I'll only be +;; looking at the master file for \include statements. + +;; (See TeX-check-files, used in TeX-save-document. All documents related +;; files are returned by (TeX-style-list) and stored in TeX-active-styles. +;; Original idea was to search TeX-check-path for files listed in +;; TeX-active-styles (with possible relative or full paths) that end in .tex.) + +(defun bib-master-directory () +;; Returns the directory associated with the master file. +;; If no master file, then return current default. + (let ((masterfile (bib-master-file))) + (if masterfile + (file-name-directory (expand-file-name (TeX-master-file))) + default-directory))) + +(defun bib-master-file () +;; return master file full path, or nil if not a multi-file document +;; I wish there were a better way to tell about non multi-file documents... + (let ((master + (cond + ((not (boundp 'TeX-master)) + ;; This buffer doesn't know what a master file is, so return now. + nil) + ((and TeX-master ;Set, but not to t + (not (eq TeX-master 't))) ; then we have an actual name + (expand-file-name TeX-master)) + ((and (eq TeX-master 't) ;Test if master file itself + (progn ;But also require at least one \include + (save-excursion + (goto-char 1) ;Too bad I have to do this search... + ;; Require that user uses \input{file} + ;; rather than \input file + (re-search-forward "^[ \t]*\\\\\\(include\\|input\\){" + nil t)))) + (buffer-file-name)) + (t + nil)))) + (cond + ((not master) + nil) + ((string-match ".tex$" master) + master) + (t + (concat master ".tex"))))) + +;; I don't use this one because files are not returned in order... +;; (defun bib-document-TeX-files () +;; ;; Return all tex input files associated with a known multi-file document. +;; (let ((master-directory (bib-master-directory)) +;; (the-list (cons (file-name-nondirectory (TeX-master-file)) +;; (TeX-style-list))) +;; ;; TeX-style-list returns "../master" for the main file if TeX-master +;; ;; was set like that. "../master" would not be found relative +;; ;; to the master-directory! So let's add it to the list w/o directory. +;; (the-result) +;; (the-file)) +;; (while the-list +;; (setq the-file (expand-file-name (car the-list) master-directory)) +;; (setq the-list (cdr the-list)) +;; (and (not (string-match ".tex$" the-file)) +;; (setq the-file (concat the-file ".tex"))) +;; (and (file-readable-p the-file) +;; (not (member the-file the-result)) ;listed already? +;; (setq the-result (cons the-file the-result)))) +;; the-result)) + +(defun bib-document-TeX-files () + ;; For a multi-file document in auctex only. + ;; Return all tex input files associated with a *known* multi-file document. + ;; No checking is done that this is a real multi-file document. + + ;; sets global variable bib-document-TeX-files-warnings + + (setq bib-document-TeX-files-warnings nil) + (let* ((masterfile (bib-master-file)) + (dir (and masterfile (file-name-directory masterfile))) + (tex-buffer (get-buffer-create "*tex-document*")) + (the-list (list masterfile)) + (the-file)) + (if (not masterfile) + (progn + (kill-buffer tex-buffer) + (error + "Sorry, but this is not a multi-file document (Try C-u C-c C-n if using auctex)"))) + (save-excursion + (set-buffer tex-buffer) + ;; set its directory so relative includes work without expanding + (setq default-directory dir) + (insert-file-contents masterfile) + (goto-char (point-min)) + (while (re-search-forward "^[ \t]*\\\\\\(input\\|include\\){\\(.*\\)}" + nil t) + (let ((the-file (buffer-substring (match-beginning 2)(match-end 2)))) + (if (string-match ".sty$" the-file) ;Skip over style files! + nil + (if (and (not (file-readable-p (expand-file-name the-file dir))) + (not (string-match ".tex$" the-file))) + (setq the-file (concat the-file ".tex"))) + (setq the-file (expand-file-name the-file dir)) + (if (not (file-readable-p the-file)) + (setq bib-document-TeX-files-warnings + (concat + bib-document-TeX-files-warnings + (format "Warning: File not found: %s" the-file))) + (setq the-list (cons (expand-file-name the-file dir) the-list)) + (end-of-line)(insert "\n") + (insert-file-contents the-file)))))) + (kill-buffer tex-buffer) + (nreverse the-list))) + +(defun bib-document-citekeys-obarray () +;; Return cite keys obarray for multi-file document, or nil if not a multi-file +;; document. This is a auc-tex supported feature only. +;; Also, see bib-buffer-citekeys-obarray. +;; Sets global variable bib-document-citekeys-obarray-warnings. + (setq bib-document-citekeys-obarray-warnings nil) + (let ((master-tex (bib-master-file)) + (master-aux)) + (if (not master-tex) + nil ;Not a multifile document. No need... + (setq master-aux (bib-return-aux-file-from-tex master-tex "aux")) + (or (file-readable-p master-aux) + (error "Sorry, cannot read file %s" master-aux)) + (and (file-newer-than-file-p master-tex master-aux) + (setq bib-document-citekeys-obarray-warnings + (format "Warning: %s is out of date relative to %s.\n" + master-aux master-tex))) + (let ((work-buffer (get-buffer-create "*bib-cite-work*")) + (keys-obarray (make-vector 201 0))) + (save-excursion + (set-buffer work-buffer) + (insert-file-contents master-aux) + ;; Because we will be looking for \input statements, we need to set + ;; the default directory to that of the master file. + (setq default-directory (file-name-directory master-tex)) + ;; bib-make-bibliography will need this also to find .bib files + ;; look for \@input{chap1/part1.aux} + (while (re-search-forward "^\\\\@input{\\(.*\\)}$" nil t) + (let* ((auxfile (buffer-substring(match-beginning 1)(match-end 1))) + (texfile (bib-return-aux-file-from-tex auxfile "tex"))) + (if (not (file-readable-p auxfile)) + (setq bib-document-citekeys-obarray-warnings + (concat + bib-document-citekeys-obarray-warnings + (format "Warning: %s is not found or readable.\n" + auxfile))) + (if (file-newer-than-file-p texfile auxfile) + (setq bib-document-citekeys-obarray-warnings + (concat + bib-document-citekeys-obarray-warnings + (format + "Warning: %s is out of date relative to %s.\n" + auxfile texfile)))) + (end-of-line)(insert "\n") + (insert-file-contents (buffer-substring (match-beginning 1) + (match-end 1)))))) + (goto-char 1) + ;; look for \citation{gertsenshtein59} + (while (re-search-forward "^\\\\citation{\\(.*\\)}$" nil t) + (intern (buffer-substring (match-beginning 1)(match-end 1)) + keys-obarray))) + (kill-buffer work-buffer) + keys-obarray)))) + +(defun bib-return-aux-file-from-tex (texname ext) +;; given name.name.XXX return name.name.ext + (concat (substring texname 0 -3) ext)) + +(defun bib-etags-find-noselect (tag &optional masterdir) +;; Returns a buffer with point on `tag'. buffer is not selected. +;; Makes sure TAGS file exists, etc. + (require 'etags) + (let* ((master (or masterdir (bib-master-directory))) + (the-buffer (current-buffer)) + (new-buffer) + (the-tags-file-name (expand-file-name bib-etags-filename master))) + (or (file-exists-p the-tags-file-name) ;make sure TAGS exists + (bib-etags master)) + (or (equal the-tags-file-name tags-file-name) ;make sure it's current + (visit-tags-table the-tags-file-name)) + ;; find-tag-noselect should set the TAGS file for the new buffer + ;; that's what C-h f visit-tags-table says... + (if (string-match "XEmacs\\|Lucid" emacs-version) + (progn + (find-tag tag) + (setq new-buffer (current-buffer)) + (set-buffer the-buffer)) + (setq new-buffer (find-tag-noselect tag)) ;Seems to set buffer to TAGS + (set-buffer the-buffer)) + new-buffer)) + +;;--------------------------------------------------------------------------- +;; imenu stuff +;; All of this should only be loaded if imenu is *already* loaded because +;; we redefine imenu here. + +(cond + (bib-use-imenu + (require 'imenu) + (require 'cl) + ;;; Now done at end of this file: + ;;(add-hook 'LaTeX-mode-hook 'LaTeX-hook-setq-imenu) + + (defvar bib-imenu-document-counter nil + "bib-cite internal variable") + +;; FIXME: If bib-cite becomes a minor mode, then this hook will go away +;; and this will be done in the minor-mode function. + (defun LaTeX-hook-setq-imenu () + ;; User who *never* uses multi-file documents could change this to: + ;; 'imenu--create-LaTeX-index-for-buffer + (setq imenu-create-index-function 'imenu--create-LaTeX-index)) + + (defun imenu--create-LaTeX-index () + ;; dispatch to proper function, depending on whether a multi-file document. + (let ((masterfile (bib-master-file))) + (if masterfile + (imenu--create-LaTeX-index-for-document masterfile) + (imenu--create-LaTeX-index-for-buffer)))) + + (defun imenu--create-LaTeX-index-for-document (masterfile) + ;; For a multi-file document in auctex only. + ;; Create imenu--index-alist for master file buffer and use the same + ;; for all input files? This would be faster... Maybe in next version? + (bib-etags) ;Create a new TAGS file, user needs it. + (let ((tex-buffer (get-buffer-create "*imenu-tex*")) + (index-alist '()) + (index-label-alist '()) + (prev-pos)) + (save-excursion + (set-buffer tex-buffer) + ;; set its directory so relative includes work without expanding + (setq default-directory (file-name-directory masterfile)) + (insert-file-contents masterfile) + (goto-char (point-min)) + (while (re-search-forward + "^[ \t]*\\\\\\(input\\|include\\){\\([^}]*\\)}" nil t) + (let ((the-file (buffer-substring (match-beginning 2)(match-end 2)))) + (if (and (not (file-readable-p + (expand-file-name the-file default-directory))) + (not (string-match ".tex$" the-file))) + (setq the-file (concat the-file ".tex"))) + (end-of-line)(insert "\n") + (insert-file-contents the-file))) + ;; Now, the document is like any other tex file + (setq bib-imenu-document-counter -99) ;IDs menu entries start at -100 + (goto-char (point-max)) + (imenu-progress-message prev-pos 0 t) + (while + (re-search-backward +;;; "\\\\\\(\\(sub\\)*section\\|chapter\\|label\\){[^}]+}" + "\\(\\\\label\\)\\|\\(^[ ]*\\\\\\(\\(sub\\)*section\\|chapter\\)\\){[^}]+}" + nil t) + (imenu-progress-message prev-pos nil t) + (save-match-data + (save-excursion + (cond + ((looking-at "\\\\label") + (push (imenu--LaTeX-name-and-etags) + index-label-alist)) + (t + (push (imenu--LaTeX-name-and-etags) + index-alist)))))) + (kill-buffer tex-buffer) + (imenu-progress-message prev-pos 100 t) + ;;Michal Mnuk's add-on removes \label + ;;Plus PSG's fix for 19.31 w/o imenu-create-submenu-name + (and index-label-alist + (push (cons (or (and (fboundp 'imenu-create-submenu-name) + (imenu-create-submenu-name "Labels")) + "Labels") + (sort (imenu--remove-LaTeX-keyword-list + index-label-alist) 'imenu--label-cmp)) + index-alist)) + ;;(and index-label-alist + ;; (push (cons (imenu-create-submenu-name "Labels") + ;; index-label-alist) + ;; index-alist)) + index-alist))) + + (defun imenu--create-LaTeX-index-for-buffer () + ;; For non-multi-file documents. + (let ((index-alist '()) + (index-label-alist '()) + prev-pos) + (setq bib-imenu-document-counter -99) ;IDs menu entries starting at -100 + (goto-char (point-max)) + (imenu-progress-message prev-pos 0 t) + (while + (re-search-backward +;;; Better regexp, but slow +;;; "^[^;]*\\(\\\\\\)\\(\\(sub\\)*section\\|chapter\\|label\\){[^}]+}" +;;; Original regexp that would catch commented-out stuff +;;; "\\\\\\(\\(sub\\)*section\\|chapter\\|label\\){[^}]+}" + "\\(\\\\label\\)\\|\\(^[ ]*\\\\\\(\\(sub\\)*section\\|chapter\\)\\){[^}]+}" + nil t) + (imenu-progress-message prev-pos nil t) + (save-match-data + (save-excursion + (cond + ((looking-at "\\\\label") + (push (imenu--LaTeX-name-and-position) + index-label-alist)) + (t + (push (imenu--LaTeX-name-and-position) + index-alist)))))) + (imenu-progress-message prev-pos 100 t) + ;;Michal Mnuk's add-on removes \label + ;;Plus PSG's fix for 19.31 w/o imenu-create-submenu-name + (and index-label-alist + (push (cons (or (and (fboundp 'imenu-create-submenu-name) + (imenu-create-submenu-name "Labels")) + "Labels") + (sort (imenu--remove-LaTeX-keyword-list + index-label-alist) 'imenu--label-cmp)) + index-alist)) + ;;(and index-label-alist + ;; (push (cons (imenu-create-submenu-name "Labels") + ;; index-label-alist) + ;; index-alist)) + index-alist)) + + ;;Michal Mnuk's three routines: + (defun imenu--remove-LaTeX-keyword-list (llist) + "Remove the LaTeX KEYWORD from car's of all elements in LLIST." + (mapcar + (function (lambda (element) + (imenu--remove-LaTeX-keyword-el element "label"))) + llist)) + + (defun imenu--remove-LaTeX-keyword-el (element keyword) + "Remove the LaTeX KEYWORD from car of ELEMENT." + (save-match-data + ;; Shouls I have extra option here: "[ + (string-match (concat "\\\\" keyword "{\\(.*\\)}") (car element)) + (cons + (substring (car element) (match-beginning 1) (match-end 1)) + (cdr element)))) + + (defun imenu--label-cmp (el1 el2) + "Predicate to compare labels in lists produced by + imenu--create-LaTeX-index." + (string< (car el1) (car el2))) + + (defun imenu--LaTeX-name-and-position () + (save-excursion + ;; We're on the opening slash + (let ((beg (point)) + (end (progn (search-forward "{" nil t) + (forward-char -1) + (forward-sexp 1) + (point))) + (marker (make-marker))) + (set-marker marker beg) + (cons (buffer-substring beg end) marker)))) + + (defun imenu--LaTeX-name-and-etags () + (save-excursion + (setq bib-imenu-document-counter (1- bib-imenu-document-counter)) + (cons (buffer-substring (point) + (progn (search-forward "{") + (forward-char -1) + (forward-sexp 1) + (point))) + bib-imenu-document-counter))) + + ;; Updated to imenu in Emacs 19.33 + (defun imenu (index-item) + "Jump to a place in the buffer chosen using a buffer menu or mouse menu. +See `imenu-choose-buffer-index' for more information." + (interactive + (list (save-restriction + (widen) + (imenu-choose-buffer-index)))) + ;; Convert a string to an alist element. + (if (stringp index-item) + (setq index-item (assoc index-item (imenu--make-index-alist)))) + (and index-item + (progn + (push-mark) + (cond + ((markerp (cdr index-item)) + (if (or ( > (marker-position (cdr index-item)) (point-min)) + ( < (marker-position (cdr index-item)) (point-max))) + ;; widen if outside narrowing + (widen)) + (goto-char (marker-position (cdr index-item)))) + ;; PSG - Handle tags + ((and (numberp (cdr index-item)) + (< (cdr index-item) -99)) + (find-tag (car index-item))) + (t + (if (or ( > (cdr index-item) (point-min)) + ( < (cdr index-item) (point-max))) + ;; widen if outside narrowing + (widen)) + (goto-char (cdr index-item))))))) +;;; end of bib-use-imenu stuff + )) +;; -------------------------------------------------------------------------- +;; The following routines make a temporary bibliography buffer +;; holding all bibtex files found. + +(defun bib-get-bibliography (include-filenames-f) + "Returns a new bibliography buffer holding all bibtex files in the document. + +If using auc-tex, and either TeX-parse-self is set or C-c C-n is used to +parse the document, then the entire multifile document will be searched +for \bibliography commands. + +If this fails, the current buffer is searched for the first \bibliography +command. + +If include-filenames-f is true, include as a special header the filename +of each bib file. + +Puts the buffer in text-mode such that forward-sexp works with german \" +accents embeded in bibtex entries." + (let ((bib-list (or (and (fboundp 'LaTeX-bibliography-list) + (boundp 'TeX-auto-update) + (LaTeX-bibliography-list)) +;; LaTeX-bibliography-list (if bound) returns an unformatted list of +;; bib files used in the document, but only if parsing is turned on +;; or C-c C-n was used. + (bib-bibliography-list))) + (bib-buffer (get-buffer-create "*bibtex-bibliography*")) + ;; Path is relative to the master directory + (default-directory (bib-master-directory)) + (the-name)(the-warnings)(the-file)) + (save-excursion + ;; such that forward-sexp works with embeeded \" in german, + ;; and unbalanced () + (set-buffer bib-buffer) + (erase-buffer) + (set-syntax-table text-mode-syntax-table) +;; (if (boundp 'bibtex-mode-syntax-table) +;; (set-syntax-table bibtex-mode-syntax-table) +;; (text-mode)) + ) + ;;We have a list of bib files + ;;Search for them, include them, list those not readable + (while bib-list + (setq the-name (car (car bib-list))) ;Extract the string only + (setq bib-list (cdr bib-list)) + (setq the-name + (substring the-name + (string-match "[^ ]+" the-name) ;remove leading spaces + (string-match "[ ]+$" the-name))) ;remove trailing space + (if (not (string-match "\\.bib$" the-name)) + (setq the-name (concat the-name ".bib"))) + (setq the-file + (or + (and (file-readable-p (expand-file-name (concat "./" the-name))) + (expand-file-name (concat "./" the-name))) + (psg-checkfor-file-list the-name + (psg-list-env bib-bibtex-env-variable)) + ;; Check for BIBINPUT env variable as well (by popular demand!) + (psg-checkfor-file-list the-name (psg-list-env "BIBINPUT")) + (and (boundp 'TeX-check-path) + (psg-checkfor-file-list the-name TeX-check-path)))) + (if the-file + (progn + (save-excursion + (set-buffer bib-buffer) + (goto-char (point-max)) + (if include-filenames-f + (insert "%%%Filename: " the-file "\n")) + (insert-file-contents the-file nil) + (goto-char 1))) + (setq the-warnings + (concat the-warnings "Could not read file: " the-name "\n")))) + (if the-warnings + (progn + (with-output-to-temp-buffer "*Help*" + (princ the-warnings)) + (kill-buffer bib-buffer) + (error + "Sorry, can't find all bibtex files in \\bibliography command")) + bib-buffer))) + +(defun bib-bibliography-list () + "Return list of bib files listed in first \\bibliography command in buffer +Similar output to auc-tex's LaTeX-bibliography-list +The first element may contain trailing whitespace (if there was any in input) +although BiBTeX doesn't allow it!" + (save-excursion + (goto-char 1) + (if (not (re-search-forward "^[ \t]*\\\\bibliography{[ \t]*\\([^},]+\\)" + nil t)) + (error "Sorry, can't find \\bibliography command anywhere") + (let ((the-list (list (buffer-substring + (match-beginning 1)(match-end 1)))) + (doNext t)) + (while doNext + (if (looking-at ",") + (setq the-list + (append the-list + (list (buffer-substring + (progn (skip-chars-forward ", ")(point)) + (progn (re-search-forward "[,}]" nil t) + (backward-char 1) + (skip-chars-backward ", ") + (point)))))) + (setq doNext nil))) + (mapcar 'list the-list))))) + +;; BibTeX-mode key def to create auc-tex's parsing file. +(defun bib-create-auto-file () + "Force the creation of the auc-tex auto file for a bibtex buffer" + (interactive) + (if (not (require 'latex)) + (error "Sorry, This is only useful if you have auc-tex")) + (let ((TeX-auto-save t) + (TeX-auto-update t) + (TeX-auto-regexp-list BibTeX-auto-regexp-list)) + ;; TeX-auto-write + ;; -> calls TeX-auto-store + ;; -> calls TeX-auto-parse + ;; clears LaTeX-auto-bibtem (temporary holding space for bibitems) + ;; searches buffer using regexp in TeX-auto-regexp-list + ;; -> if LaTeX-auto-bibtem (the temporary holding space for bibitems) + ;; holds stuffs like + ;; ("Zimmermann:1991" "Anger_et_al:1993") + ;; as determined by + ;; (member nil (mapcar 'TeX-auto-entry-clear-p TeX-auto-parser)) + ;; then it creates the auto file. + + ;; TeX-auto-write may call TeX-master-file which may fail if + ;; TeX-header-end is unset (by LaTeX-common-initialization in latex-mode) + (if (not TeX-header-end) + (setq TeX-header-end LaTeX-header-end)) + + (TeX-auto-write))) + +;; --------------------------------------------------------------------------- +;; Key definitions start here... + +;; Christoph Wedler +;; Replace eval-after-load (which doesn't work with efs anyway) +;; with add-submenu in bib-cite-initialize + +;;(if ((and (string-match "XEmacs\\|Lucid" emacs-version) +;; (or window-system +;; (fboundp 'smart-menu)) ;text menus by Bob Weiner +;; (not (fboundp 'eval-after-load)))) +;; ;; define eval-after-load for XEmacs +;; (defun eval-after-load (file form) +;; "Arrange that, if FILE is ever loaded, FORM will be run at that +;;time. +;;This makes or adds to an entry on `after-load-alist'. +;;It does nothing if FORM is already on the list for FILE. +;;FILE should be the name of a library, with no directory name." +;; (or (assoc file after-load-alist) +;; (setq after-load-alist (cons (list file) after-load-alist))) +;; (let ((elt (assoc file after-load-alist))) +;; (or (member form (cdr elt)) +;; (nconc elt (list form)))) +;; form)) + +(defvar bib-cite-map + (let ((map (make-sparse-keymap))) + (define-key map "a" 'bib-apropos) + (define-key map "m" 'bib-make-bibliography) + (define-key map "d" 'bib-display) + (define-key map "e" 'bib-etags) + (define-key map "f" 'bib-find) + (define-key map "h" 'bib-highlight-mouse) + map) + "Keymap to bind to \\C-cb in latex keymap") + +(cond + ((and (string-match "XEmacs\\|Lucid" emacs-version) + (or window-system + (fboundp 'smart-menu))) ;text menus by Bob Weiner + ;; + ;; xemacs under X with auc-tex + ;; + + ;; Christoph Wedler + (defvar bib-cite-xemacs-menu + '("Bib-Cite" + ;;"---" + ["Make BibTeX bibliography buffer" bib-make-bibliography t] + ["Display citation or matching \\ref or \\label" bib-display t] + ["Find BibTeX citation or matching \\ref or \\label" bib-find t] + ["Search apropos BibTeX files" bib-apropos t] + ["Build TAGS file for multi-file document" bib-etags (bib-master-file)] + ["Refresh \\cite, \\ref and \\label mouse highlight" + bib-highlight-mouse t]) + "Submenu of LaTeX menu, used by bib-cite.") + +;;; Add to bibtex.el's popup menu + (defvar bib-cite-xemacs-bibtex-mode-menu + '("---" + "Bib-Cite" + "---" + ["Search apropos BibTeX files" bib-apropos t] + ["Create auc-tex auto parsing file" bib-create-auto-file t]) + "Submenu of bibtex-mode menu, used by bib-cite.") + + (if (boundp 'bibtex-menu) + ;; Add menu now + (setq bibtex-menu + (append + bibtex-menu + bib-cite-xemacs-bibtex-mode-menu)) + ;; Setup to add menu later + (defun bib-cite-bibtex-mode-hook () + (if (boundp 'bibtex-menu) + (progn + (setq bibtex-menu + (append + bibtex-menu + bib-cite-xemacs-bibtex-mode-menu)) + (remove-hook 'bibtex-mode-hook 'bib-cite-bibtex-mode-hook)))) + (add-hook 'bibtex-mode-hook 'bib-cite-bibtex-mode-hook)) +;;; Done - Add to bibtex.el's popup menu + +;; (eval-after-load +;; "latex" +;; '(progn +;; (add-menu-button '("LaTeX") ["----" nil t]) +;; (add-menu-button +;; '("LaTeX") ["Make BibTeX bibliography buffer" bib-make-bibliography t]) +;; (add-menu-button +;; '("LaTeX") ["Display citation or matching \\ref or \\label" +;; bib-display t]) +;; (add-menu-button +;; '("LaTeX") ["Find BibTeX citation or matching \\ref or \\label" +;; bib-find t]) +;; (add-menu-button +;; '("LaTeX") ["Search apropos BibTeX files" bib-apropos t]) +;; (add-menu-button +;; '("LaTeX") ["Build TAGS file for multi-file document" bib-etags t]) +;; (add-menu-button +;; '("LaTeX") +;; ["Refresh \\cite, \\ref and \\label mouse highlight" +;; bib-highlight-mouse t]) + + ) + + ((and (not (string-match "XEmacs\\|Lucid" emacs-version)) + (string-equal "19" (substring emacs-version 0 2)) + (or window-system + (fboundp 'tmm-menubar))) ; 19.30 - Will autoload if necessary + ;; + ;; emacs-19 under X-windows (or non-X with tmm) + ;; + + ;; This *almost* makes me want to switch over to XEmacs... + + ;; to auc-tex auto file for a bibtex buffer + (eval-after-load + "bibtex" + '(progn + (cond + ((lookup-key bibtex-mode-map [menu-bar move/edit]) + (define-key-after + (lookup-key bibtex-mode-map [menu-bar move/edit]) + [bib-nil] '("---" . nil) '"--") + (define-key-after + (lookup-key bibtex-mode-map [menu-bar move/edit]) + [bib-apropos] '("Search Apropos" . bib-apropos) 'bib-nil) + (define-key-after + (lookup-key bibtex-mode-map [menu-bar move/edit]) + [auc-tex-parse] + '("Create auc-tex auto parsing file" . bib-create-auto-file) + 'bib-apropos)) + ((lookup-key bibtex-mode-map [menu-bar bibtex-edit]) + (define-key-after + (lookup-key bibtex-mode-map [menu-bar bibtex-edit]) + [bib-nil] '("---" . nil) '"--") + (define-key-after + (lookup-key bibtex-mode-map [menu-bar bibtex-edit]) + [bib-apropos] '("Search Apropos" . bib-apropos) 'bib-nil) + (define-key-after + (lookup-key bibtex-mode-map [menu-bar bibtex-edit]) + [auc-tex-parse] + '("Create auc-tex auto parsing file" . bib-create-auto-file) + 'bib-apropos))))) + + (defvar bib-cite-put-menu-separately t + "*Put bib-cite menubar menu separately, not within LaTeX pull-down menu") + (cond + ((not bib-cite-put-menu-separately) ;Old method - Destroy code? + (defun bib-add-menu-keys (the-key) + (cond + (the-key ;make sure keymap exists + (define-key-after the-key [bib-nil] '("---" . nil) '"--") + (define-key-after the-key [bib-make-bibliography] + '("Make BiBTeX bibliography buffer" . bib-make-bibliography) + 'bib-nil) + (define-key-after the-key [bib-display] + '("Display citation or matching \\ref or \\label" . bib-display) + 'bib-make-bibliography) + (define-key-after the-key [bib-find] + '("Find BiBTeX citation or matching \\ref or \\label" . bib-find) + 'bib-display) + (define-key-after the-key [bib-apropos] + '("Search apropos BiBTeX files" . bib-apropos) 'bib-find) + ;;;(put 'ps-print-region-with-faces 'menu-enable 'mark-active) + ;;;(define-key menu-bar-tools-menu [ps-print-buffer] + ;;; '("Postscript Print Buffer" . ps-print-buffer-with-faces)) + (put 'bib-etags 'menu-enable '(bib-master-file)) + (define-key-after the-key [bib-etags] + '("Build TAGS file for multi-file document" . bib-etags) + 'bib-apropos) + (define-key-after the-key [bib-highlight-mouse] + '("Refresh \\cite, \\ref and \\label mouse highlight" . + bib-highlight-mouse) + 'bib-etags)))) + + ;;for auc-tex's LaTeX-mode + (eval-after-load + "latex" + '(let ((the-key (or (lookup-key LaTeX-mode-map [menu-bar LaTeX]) + (lookup-key LaTeX-mode-map [menu-bar AUC\ TeX])))) + ;;;(define-key LaTeX-mode-map [S-mouse-1] 'bib-display-mouse) + ;;;(define-key LaTeX-mode-map [S-mouse-2] 'bib-find-mouse) + (define-key LaTeX-mode-map "\C-cb" bib-cite-map) + (bib-add-menu-keys the-key))) + + ;;for auc-tex's TeX-mode + (eval-after-load + "tex" + '(let ((the-key (lookup-key TeX-mode-map [menu-bar TeX]))) + ;;;(define-key TeX-mode-map [S-mouse-1] 'bib-display-mouse) + ;;;(define-key TeX-mode-map [S-mouse-2] 'bib-find-mouse) + (define-key TeX-mode-map "\C-cb" bib-cite-map) + (bib-add-menu-keys the-key))) + + ;;for plain tex-mode + (eval-after-load + "tex-mode" + '(progn + (let ((the-key (lookup-key tex-mode-map [menu-bar tex]))) + ;;;(define-key tex-mode-map [S-mouse-1] 'bib-display-mouse) + ;;;(define-key tex-mode-map [S-mouse-2] 'bib-find-mouse) + (define-key tex-mode-map "\C-cb" bib-cite-map) + (bib-add-menu-keys the-key) + (define-key tex-mode-map [menu-bar tex bib-etags] + 'undefined))))) + + (t ;New method - separate menu + (setq bib-cite-menu-map (make-sparse-keymap "bib-cite")) + (define-key bib-cite-menu-map [bib-display] + '("Display citation or matching \\ref or \\label" . bib-display)) + (define-key bib-cite-menu-map [bib-find] + '("Find BiBTeX citation or matching \\ref or \\label" . bib-find)) + (define-key bib-cite-menu-map [bib-make-bibliography] + '("Make BiBTeX bibliography buffer" . bib-make-bibliography)) + (put 'bib-etags 'menu-enable '(bib-master-file)) + (define-key bib-cite-menu-map [bib-etags] + '("Build TAGS file for multi-file document" . bib-etags)) + (define-key bib-cite-menu-map [bib-apropos] + '("Search apropos BiBTeX files" . bib-apropos)) + (define-key bib-cite-menu-map [bib-highlight-mouse] + '("Refresh \\cite, \\ref and \\label mouse highlight" + . bib-highlight-mouse)) + + (eval-after-load + "tex-mode" + '(progn + ;;;(define-key tex-mode-map [S-mouse-1] 'bib-display-mouse) + ;;;(define-key tex-mode-map [S-mouse-2] 'bib-find-mouse) + (define-key tex-mode-map "\C-cb" bib-cite-map) + (define-key tex-mode-map [menu-bar bib-cite-menu-map] + (cons "Bib-Cite" bib-cite-menu-map)) + (define-key tex-mode-map [menu-bar bib-cite-menu-map bib-etags] + 'undefined))) + + ;;for auc-tex's LaTeX-mode + (eval-after-load + "latex" + '(progn + ;;;(define-key LaTeX-mode-map [S-mouse-1] 'bib-display-mouse) + ;;;(define-key LaTeX-mode-map [S-mouse-2] 'bib-find-mouse) + (define-key LaTeX-mode-map "\C-cb" bib-cite-map) + (define-key LaTeX-mode-map [menu-bar bib-cite-menu-map] + (cons "Bib-Cite" bib-cite-menu-map)))) + + ;;for auc-tex's TeX-mode + (eval-after-load + "tex" + '(progn + ;;;(define-key TeX-mode-map [S-mouse-1] 'bib-display-mouse) + ;;;(define-key TeX-mode-map [S-mouse-2] 'bib-find-mouse) + (define-key TeX-mode-map "\C-cb" bib-cite-map))) + )))) + +;; This must be after adding to LaTeX-mode-map because we copy it here. +(defvar bib-highlight-mouse-keymap + ;; First, copy the local keymap so we don't have `disappearing' menus + ;; when the mouse is moved over a \ref, \label or \cite command. + ;; FIXME: **This only works if bib-cite is loaded after TeX keymaps + ;; are constructed. Thus, if bib-cite is loaded in a hook. + + ;; FIXME: Check out (mouse-major-mode-menu) to see how it grabs the local + ;; menus to display. Maybe on `highlighted' commands we could only + ;; display the bib-cite stuff (or a subset of it). + (let ((m (cond + ((boundp 'LaTeX-mode-map) + (copy-keymap LaTeX-mode-map)) + ((boundp 'tex-mode-map) + (copy-keymap tex-mode-map)) + (t + (make-sparse-keymap))))) + (cond + ((string-match "XEmacs\\|Lucid" emacs-version) + (set-keymap-name m 'bib-highlight-mouse-keymap) + (cond + ;; action-key stuff from Vladimir Alexiev + ((commandp 'action-key) + ;; for hyperbole. The Right Way is to define implicit buttons + ;; (defib) bib-cite and label-ref instead of overriding action-key and + ;; assist key, so that eg smart key help can be obtained, but I'm + ;; lazy. + (substitute-key-definition 'action-key 'bib-find m global-map) + (substitute-key-definition 'assist-key 'bib-display m global-map) + (substitute-key-definition 'action-key-depress + 'bib-find-mouse m global-map) + (substitute-key-definition 'assist-key-depress + 'bib-display-mouse m global-map) + (substitute-key-definition 'action-mouse-key nil m global-map) + (substitute-key-definition 'assist-mouse-key nil m global-map)) + (t ; xemacs, not hyperbole + (define-key m "\e\r" 'bib-find-mouse) ; bug Fixed in V2.17 + (define-key m "\e\n" 'bib-display-mouse) ;bug Fixed in V2.17 + ;;(define-key m [(shift button1)] 'bib-display-mouse) + (define-key m [button3] 'bib-display-mouse) + (define-key m [button2] 'bib-find-mouse)))) + (t ; emacs 19 + (cond + ((commandp 'action-key) + (substitute-key-definition 'action-key 'bib-find m global-map) + (substitute-key-definition 'assist-key 'bib-display m global-map) + (substitute-key-definition 'action-mouse-key-emacs19 + 'bib-find-mouse m global-map) + (substitute-key-definition 'assist-mouse-key-emacs19 + 'bib-display-mouse m global-map) + (substitute-key-definition 'action-key-depress-emacs19 + nil m global-map) + (substitute-key-definition 'assist-key-depress-emacs19 + nil m global-map)) + (t ; emacs 19, not hyperbole + (define-key m [down-mouse-3] 'bib-display-mouse) + (define-key m [mouse-2] 'bib-find-mouse))))) + m)) +;; -------------------------------------------------------------------------- +;; The following routines are also defined in other packages... + +;; Must be in sync with function of same name in ff-paths.el +(defun psg-checkfor-file-list (filename list) + "Check for presence of FILENAME in directory LIST. Return 1st found path." + ;;USAGE: (psg-checkfor-file-list "gri.cmd" (psg-list-env "PATH")) + ;;USAGE: (psg-checkfor-file-list "gri-mode.el" load-path) + ;;USAGE: (psg-checkfor-file-list "gri.cmd" (psg-translate-ff-list "gri.tmp")) + (let ((the-list list) + (filespec)) + (while the-list + (if (not (car the-list)) ; it is nil + (setq filespec (expand-file-name filename "~")) + (setq filespec + (concat (file-name-as-directory (car the-list)) filename))) + (if (file-exists-p filespec) + (setq the-list nil) + (setq filespec nil) + (setq the-list (cdr the-list)))) + (if filespec + filespec + ;; If I have not found a file yet, then check if some directories + ;; ended in // and recurse through them. + (let ((the-list list)) + (while the-list + (if (not (string-match "//$" (car the-list))) nil + (setq filespec (car + (search-directory-tree + (substring (car the-list) 0 (match-beginning 0)) + (concat "^" filename "$") + t + t))) + (if filespec ;Success! + (setq the-list nil))) + (setq the-list (cdr the-list))) + filespec)))) + + +(defun search-directory-tree (directories extension-regexp recurse first-file) + "Return a list of all reachable files in DIRECTORIES ending with EXTENSION. +DIRECTORIES is a list or a single-directory string +EXTENSION is actually (any) regexp, usually \\\\.bib$ +If RECURSE is t, then we will recurse into the directory tree, + nil, we will only search the list given. +If FIRST-FILE is t, stop after first file is found." + (or (listp directories) + (setq directories (list directories))) + + (let (match) + (while directories + (let* ((directory (file-name-as-directory (car directories))) + (content (and directory + (file-readable-p directory) + (file-directory-p directory) + (directory-files directory)))) + (setq directories (cdr directories)) + (while content + (let ((file (expand-file-name (car content) directory))) + (cond ((string-match "[.]+$" (car content))) ;This or parent dir + ((not (file-readable-p file))) + ((and recurse + (file-directory-p file)) + (setq directories + (cons (file-name-as-directory file) directories))) + ((string-match extension-regexp + (file-name-nondirectory file)) + (and first-file + (setq content nil + directories nil)) + (setq match (cons file match))))) + (setq content (cdr content))))) + + match)) + +;;; (defun psg-checkfor-file-list (filename list) +;;; (let ((the-list list) +;;; (filespec)) +;;; (while the-list +;;; (if (not (car the-list)) ; it is nil +;;; (setq filespec (concat "~/" filename)) +;;; (setq filespec +;;; (concat (file-name-as-directory (car the-list)) filename))) +;;; (if (file-exists-p filespec) +;;; (setq the-list nil) +;;; (setq filespec nil) +;;; (setq the-list (cdr the-list)))) +;;; filespec)) + +(or (fboundp 'dired-replace-in-string) + ;; This code is part of GNU emacs + (defun dired-replace-in-string (regexp newtext string) + ;; Replace REGEXP with NEWTEXT everywhere in STRING and return result. + ;; NEWTEXT is taken literally---no \\DIGIT escapes will be recognized. + (let ((result "") (start 0) mb me) + (while (string-match regexp string start) + (setq mb (match-beginning 0) + me (match-end 0) + result (concat result (substring string start mb) newtext) + start me)) + (concat result (substring string start))))) + + +;; Could use fset here to equal TeX-split-string to dired-split if only +;; dired-split is defined. That would eliminate a check in psg-list-env. +(and (not (fboundp 'TeX-split-string)) + (not (fboundp 'dired-split)) + ;; This code is part of auc-tex + (defun TeX-split-string (char string) + "Returns a list of strings. given REGEXP the STRING is split into +sections which in string was seperated by REGEXP. + +Examples: + + (TeX-split-string \"\:\" \"abc:def:ghi\") + -> (\"abc\" \"def\" \"ghi\") + + (TeX-split-string \" *\" \"dvips -Plw -p3 -c4 testfile.dvi\") + + -> (\"dvips\" \"-Plw\" \"-p3\" \"-c4\" \"testfile.dvi\") + +If CHAR is nil, or \"\", an error will occur." + + (let ((regexp char) + (start 0) + (result '())) + (while (string-match regexp string start) + (let ((match (string-match regexp string start))) + (setq result (cons (substring string start match) result)) + (setq start (match-end 0)))) + (setq result (cons (substring string start nil) result)) + (nreverse result)))) + +;; Must be in sync with function of same name in ff-paths.el +;; (See also PC-include-file-path in standard emacs ditsribution.) +(defun psg-list-env (env) + "Return a list of directory elements in ENVIRONMENT variable (w/o leading $) +argument may consist of environment variable plus a trailing directory, e.g. +HOME or HOME/bin (trailing directory not supported in dos or OS/2). + +bib-dos-or-os2-variable affects: + path separator used (: or ;) + whether backslashes are converted to slashes" + (if (not (getenv env)) + nil ;Because dired-replace-in-string fails + (let* ((value (if bib-dos-or-os2-variable + (dired-replace-in-string "\\\\" "/" (getenv env)) + (getenv env))) + (sep-char (or (and bib-dos-or-os2-variable ";") ":")) + (entries (and value + (or (and (fboundp 'TeX-split-string) + (TeX-split-string sep-char value)) + (dired-split sep-char value)))) + entry + answers) + (while entries + (setq entry (car entries)) + (setq entries (cdr entries)) + (if (file-directory-p entry) + (setq answers (cons entry answers)))) + (nreverse answers)))) + +;; +;; Create the unified hook to call from LaTeX-mode-hook +;; +(defun bib-cite-initialize () + ;; Christoph Wedler's suggestion for xemacs + ;; Added for version 2.19 + (if (boundp 'tags-always-exact) + (progn + (make-local-variable 'tags-always-exact) + (setq tags-always-exact nil))) + + ;; Christoph Wedler + (and (boundp 'bib-cite-xemacs-menu) + bib-cite-xemacs-menu + (fboundp 'add-submenu) ;Insurance for emacs + ;;;FIXME: I can do this to add a main menu. + ;;(add-submenu nil bib-cite-xemacs-menu) + ;; This makes it buffer-specific so I don't need to remove it. + (set-buffer-menubar (copy-sequence current-menubar)) + (add-submenu '("LaTeX") bib-cite-xemacs-menu)) + + (cond + ((string-match "XEmacs\\|Lucid" emacs-version) + ;; Define keys for XEmacs + ;; Could do all modes like this for emacs also... + (local-set-key "\C-cba" 'bib-apropos) + (local-set-key "\C-cbm" 'bib-make-bibliography) + (local-set-key "\C-cbd" 'bib-display) + (local-set-key "\C-cbe" 'bib-etags) + (local-set-key "\C-cbf" 'bib-find) + (local-set-key "\C-cbh" 'bib-highlight-mouse))) + + (if bib-highlight-mouse-t + (bib-highlight-mouse)) + (if bib-use-imenu + (LaTeX-hook-setq-imenu)) + + ;; Make sure that imenu-sort-function is nil + (and (boundp 'imenu-sort-function) + imenu-sort-function + (make-local-variable 'imenu-sort-function) + (setq imenu-sort-function nil)) + ) + +(add-hook 'LaTeX-mode-hook 'bib-cite-initialize t) ;auctex's latex-mode +(add-hook 'latex-mode-hook 'bib-cite-initialize t) ;emacs' plain latex-mode + +;; If bib-cite.el is loaded in a mode hook, bib-highlight-mouse and +;; LaTeX-hook-setq-imenu are not called on the buffer... +;; so invoke it now for .tex buffers. Same for imenu. +;(if (string-match ".tex$" (buffer-name)) +; (bib-cite-initialize)) + +(if (or (eq major-mode 'latex-mode) + (eq major-mode 'plain-tex-mode)) + (bib-cite-initialize)) + +(provide 'bib-cite) +;;; bib-cite.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/font-latex.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/font-latex.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,790 @@ +;;; font-latex.el --- LaTeX fontification for Font Lock mode. + +;; Copyright (C) 1996 Peter S. Galbraith + +;; Authors: Peter S. Galbraith +;; Simon Marshall +;; Maintainer: Peter S. Galbraith +;; Created: 06 July 1996 +;; Version: 0.403 *Beta* (19 Nov 96) +;; Keywords: LaTeX faces + +;; RCS $Id: font-latex.el,v 1.1 1997/02/20 02:17:35 steve Exp $ +;; Note: RCS version number does not correspond to release number. + +;; LCD Archive Entry: (Not yet submitted!) +;; font-latex|Peter Galbraith|galbraith@mixing.qc.dfo.ca| +;; LaTeX fontification for font-lock| +;; 06-Jul-1996|0.01|~/modes/font-latex.el| + +;; The archive is archive.cis.ohio-state.edu in /pub/gnu/emacs/elisp-archive. + +;;; This file is not part of GNU Emacs. + +;; This package is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This package is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: + +;; New versions of this package (if they exist) may be found at: +;; ftp://ftp.phys.ocean.dal.ca/users/rhogee/elisp/font-latex.el + +;; Description: +;; This package enhances font-lock fontification patterns for LaTeX. +;; font-lock mode is a minor mode that causes your comments to be +;; displayed in one face, strings in another, reserved words in another, +;; and so on. +;; +;; Please see the accompanying file font-latex.tex for a demo of what +;; font-latex is supposed to do at different fontification levels. + +;; Installation instructions: +;; +;; Put this file in your emacs load-path, and byte-compile it: +;; M-x byte-compile-file +;; ** It runs faster when you byte-compile it! ** +;; +;; Then all you need to do is add this form to your .emacs file: +;; +;; (if window-system +;; (require 'font-latex)) +;; +;; There are two levels of fontification, selected by the value of the +;; font-lock variable font-lock-maximum-decoration. font-latex uses two +;; levels. There are ways documented in font-latex.el to set this +;; differently for each mode that uses font-lock, but if you are unsure and +;; are running on a fast enough machine, try putting this in your ~/.emacs +;; file: +;; (setq font-lock-maximum-decoration t) +;; It probably best to put it before the (require 'font-latex) statement. +;; +;; Lazy-lock users: +;; +;; lazy-lock and font-lock don't work too well together (up to Emacs 19.33 +;; and XEmacs 19.14 anyway). font-latex uses functions to find text to +;; fontify that may span more than one line, and this doesn't suit +;; lazy-lock's search limits too well. +;; +;; Old hilit19 (and hilit-LaTeX) users: +;; +;; If you are upgrading from using hilit-LaTeX.el or were using hilit19, +;; you must disable hilit19 (at least for latex mode) in order to use +;; font-latex.el. Here's how: +;; +;; - If you don't care to use hilit19 at all, don't `load' or `require' it +;; in your ~/.emacs file by removing the "(require 'hilit-LaTeX)" line. +;; - If you wish to use hilit19 everywhere but in latex mode, add the +;; following before your `load' or `require' hilit19: +;; +;; (setq hilit-mode-enable-list '(not latex-mode)) +;; +;; You can tell you using font-latex instead of hilit-LaTeX because: +;; +;; - colours will be different +;; - You'll see a message like `Fontifying font-latex.tex...done' +;; instead of `highlighting 1: \(^\|[^\\]\)\(\\[a-zA-Z\\]+\)' +;; ---------------------------------------------------------------------------- +;;; Change log: +;; V0.403 19Nov96 (RCS V1.37) +;; - Christoph Wedler +;; XEmacs patch for local math-font +;; - Changed scheme for fontification of \section*{...} +;; V0.402 13Nov96 PSG (RCS V1.35) +;; - Embeded comments handled. +;; - Better XEmacs initilisation. +;; V0.401 12Nov96 PSG (RCS V1.34) - Nothing fontified when commented-out. +;; V0.400 11Nov96 PSG (RCS V1.33) +;; - Stab at on-the-fly multiline. +;; - mono support: +;; V0.314 16Oct96 PSG - Support for dark background removed for XEmacs. +;; V0.313 07Oct96 PSG (RCS V1.31) - Support for dark background. +;; V0.312 26Aug96 PSG (RCS V1.30) - Added font-latex-commented-outp. +;; V0.311 22Aug96 PSG (RCS V1.29) - fixed for XEmacs. +;; V0.310 22Aug96 simon (RCS V1.27) +;; - make font-latex-setup run font-lock-make-faces before variable trickery. +;; - set font-latex-string-face to the global value of font-lock-string-face. +;; V0.309 21Aug96 PSG (RCS V1.26) +;; - new font-latex-math-face done by string syntax. User may modify it. +;; - new font-latex-string-face. +;; V0.308 15Aug96 PSG (RCS V1.25) +;; - $$...$$ gets font-latex-math-face +;; - font-latex-match-math-envII fixed. +;; V0.307 14Aug96 PSG (RCS V1.23) - setup okay if loaded in a latex-mode-hook +;; V0.306 14Aug96 PSG (RCS V1.22) - added "item" to font-latex-match-function +;; V0.305 14Aug96 PSG (RCS V1.20) - use keep in font-latex-match-math-envII +;; V0.304 14Aug96 PSG (RCS V1.18) - minor comment edits. +;; V0.303 14Aug96 simon (RCS V1.17) +;; - rewrote font-latex-match-math-envII like font-latex-match-quotation +;; V0.302 12Aug96 PSG (RCS V1.16) +;; - (goto-char end) in condition-case error to avoid infinite loops. +;; V0.301 08Aug96 PSG (RCS V1.14) +;; - Better faces in XEmacs. +;; V0.300 07Aug96 PSG (RCS V1.12) +;; - Changed font-latex-match-font-inside-braces again for stranded \bf +;; - "[a-z]+box" changed +;; - font-latex-match-math-env checks preceding-char for \\[ +;; - use eval-after-compile in font-latex-match-math-envII +;; V0.201 05Aug96 PSG added \\(display\\)?math to Simon's changes +;; V0.200 05Aug96 simon: (RCS V1.10) +;; - fixed font-latex-match-command-outside-arguments +;; - rewrote font-latex-match-font-outside-braces like above +;; - rewrote font-latex-match-font-inside-braces like above +;; V0.101 01Aug96 PSG added \\(display\\)?math +;; V0.100 01Aug96 PSG - massive new test version +;; V0.061 23Jul96 PSG +;; - Removed trailing "\\>" in warning-face regexp (fails with \\ \- \\*) +;; V0.06 23Jul96 PSG +;; - fixed dobib in font-latex-labels. +;; - shorter font regexp in levels 3+4. +;; - removed \item and & from type +;; - fixed font-latex-math-envII regexp +;; V0.05 22Jul96 PSG +;; - changed \ref etc to reference-face. +;; - \\b added in buggy \item[option] regexp (not really fixed). +;; - font-latex-labels regexp bug +;; V0.041 simon: +;; - added font-latex-match-command-outside-arguments +;; - rewrote font-latex-match-quotation and font-latex-bib-highlight-mouse +;; - rewrote then removed bib-cite functionality. +;; - general top-level cleanup +;; V0.04 11Jul96 PSG +;; - added font-lock-comment-start-regexp defined in 19.32 +;; - encoded 8-bit characters to 7-bit. +;; V0.03 10Jul96 PSG +;; - font-latex-bib-cite-mouse-highlight-p can change after font-lock-defaults +;; is constructed. +;; V0.02 09Jul96 PSG +;; - added font-latex-bib-cite-mouse-highlight-p +;; - Fixed `overwrite' flags +;; V0.01 06Jul96 Peter S Galbraith - Created +;; ---------------------------------------------------------------------------- +;;; Code: +(require 'font-lock) + +(defvar font-latex-warning-face 'font-latex-warning-face + "Face to use for LaTeX major keywords.") +(defvar font-latex-sedate-face 'font-latex-sedate-face + "Face to use for LaTeX minor keywords.") +(defvar font-latex-italic-face 'font-latex-italic-face + "Face to use for LaTeX italics.") +(defvar font-latex-bold-face 'font-latex-bold-face + "Face to use for LaTeX bolds.") +(defvar font-latex-math-face 'font-latex-math-face + "Face to use for LaTeX math environments.") + +;; End-User can stop reading here. + +;; Make sure font-latex.el is supported. I don't claim to have tested this... +(if (if (save-match-data (string-match "Lucid\\|XEmacs" (emacs-version))) + (and (= emacs-major-version 19) (< emacs-minor-version 14)) + (and (= emacs-major-version 19) (< emacs-minor-version 29))) + (error "`font-latex' was written for Emacs 19.29/XEmacs 19.14 or later")) + +(defvar font-latex-is-XEmacs + (not (null (save-match-data (string-match "XEmacs\\|Lucid" emacs-version))))) + +(defvar font-latex-string-face nil + "Face to use for strings. This is set by Font LaTeX.") + +(defvar font-lock-comment-start-regexp nil + "Regexp to match the start of a comment.") + +(eval-when-compile + (require 'cl)) + +(cond + ((not font-latex-is-XEmacs) + ;;; emacs: + ;; Otherwise I overwrite fock-lock-face-attributes. + ;; font-lock.el needs a better way to add these faces! + (if (not font-lock-face-attributes) + (font-lock-make-faces)) + (unless (assq 'font-latex-sedate-face font-lock-face-attributes) + (cond + ;; FIXME: Add better conditions for grayscale. + ((memq font-lock-display-type '(mono monochrome grayscale greyscale + grayshade greyshade)) + (setq font-lock-face-attributes + (append + font-lock-face-attributes + (list '(font-latex-bold-face nil nil t nil nil) + '(font-latex-italic-face nil nil nil t nil) + '(font-latex-math-face nil nil nil nil t) + '(font-latex-sedate-face nil nil nil t nil) + (list + 'font-latex-warning-face + (cdr (assq 'background-color (frame-parameters))) + (cdr (assq 'foreground-color (frame-parameters))) + nil nil nil))))) + ((eq font-lock-background-mode 'light) ; light colour background + (setq font-lock-face-attributes + (append + font-lock-face-attributes + ;;;FIXME: These won't follow font-lock-type-face's changes. + ;;; Should I change to a (copy-face) scheme? + '((font-latex-bold-face "DarkOliveGreen" nil t nil nil) + (font-latex-italic-face "DarkOliveGreen" nil nil t nil) + (font-latex-math-face "green4") + (font-latex-sedate-face "grey50") + (font-latex-warning-face "red" nil t nil nil))))) + (t ; dark colour background + (setq font-lock-face-attributes + (append + font-lock-face-attributes + '((font-latex-bold-face "OliveGreen" nil t nil nil) + (font-latex-italic-face "OliveGreen" nil nil t nil) + (font-latex-math-face "LightSeaGreen") + ;; good are > LightSeaGreen, LightCoral, coral, orchid, orange + (font-latex-sedate-face "grey60") + (font-latex-warning-face "red" nil t nil nil)))))))) + (t + ;;; XEmacs: + (make-face 'font-latex-string-face "Face to use for LaTeX string.") + (copy-face 'font-lock-string-face 'font-latex-string-face) + + (make-face 'font-latex-bold-face "Face to use for LaTeX bolds.") + (copy-face 'font-lock-type-face 'font-latex-bold-face) + (make-face-bold 'font-latex-bold-face) + + (make-face 'font-latex-italic-face "Face to use for LaTeX italics.") + (copy-face 'font-lock-type-face 'font-latex-italic-face) + (make-face-italic 'font-latex-italic-face) + + (make-face 'font-latex-math-face "Face to use for LaTeX math.") + (make-face 'font-latex-sedate-face "Face to use for LaTeX minor keywords.") + (make-face 'font-latex-warning-face "Face to use for LaTeX major keywords.") + (make-face-bold 'font-latex-warning-face) + ;; XEmacs uses a tag-list thingy to determine if we are using color + ;; or mono (and I assume a dark background). + (set-face-foreground 'font-latex-math-face "green4" 'global nil 'append) + (set-face-foreground 'font-latex-sedate-face "grey50" 'global nil 'append) + (set-face-foreground 'font-latex-warning-face "red" 'global nil 'append))) + +(defun font-latex-setup () + "Setup this buffer for LaTeX font-lock. Usually called from a hook." + ;; Trickery to make $$ fontification be in `font-latex-math-face' while + ;; strings get whatever `font-lock-string-face' has been set to. + (if font-latex-is-XEmacs + ;; Cool patch from Christoph Wedler... + (let (instance) + (mapcar (function + (lambda (property) + (setq instance + (face-property-instance 'font-latex-math-face property + nil 0 t)) + (if (numberp instance) + (setq instance + (face-property-instance 'default property nil 0))) + (or (numberp instance) + (set-face-property 'font-lock-string-face property + instance (current-buffer))))) + (built-in-face-specifiers))) + (font-lock-make-faces) + (make-local-variable 'font-lock-string-face) + (setq font-lock-string-face font-latex-math-face + font-latex-string-face (default-value 'font-lock-string-face)) + ;; Tell Font Lock about the support. + (make-local-variable 'font-lock-defaults) + ;; Parentheses () are disabled because they should not delimit fontification + ;; in LaTeX text. + (setq font-lock-defaults + '((font-latex-keywords font-latex-keywords-1 font-latex-keywords-2) + nil nil ((?\( . ".") (?\) . ".") (?$ . "\"")) nil + (font-lock-comment-start-regexp . "%") + (font-lock-mark-block-function . mark-paragraph))))) + +(when font-latex-is-XEmacs + (put 'latex-mode 'font-lock-defaults + '((font-latex-keywords font-latex-keywords-1 font-latex-keywords-2) + nil nil ((?\( . ".") (?\) . ".") (?$ . "\"")) nil + (font-lock-comment-start-regexp . "%") + (font-lock-mark-block-function . mark-paragraph))) + (put 'latex-tex-mode 'font-lock-defaults 'latex-mode) + (put 'LaTex-tex-mode 'font-lock-defaults 'latex-mode) + (put 'LaTeX-mode 'font-lock-defaults 'latex-mode) + (put 'japanese-LaTeX-mode 'font-lock-defaults 'latex-mode) + (put 'LATeX-MoDe 'font-lock-defaults 'latex-mode) + (put 'lATEx-mODe 'font-lock-defaults 'latex-mode)) + +(defconst font-latex-keywords-1 + (list + ;; FIXME: Maybe I should put this in a function, use override but let + ;; the function determine if commented-out. + (list (concat "\\\\\\(\\(no\\)?pagebreak\\|\\(new\\|clear\\(double\\)?\\)" + "page\\|enlargethispage\\|\\(no\\)?linebreak\\|newline\\|" + "-\\|\\\\\\(\*\\)?\\|displaybreak\\|allowdisplaybreaks\\)") + '(0 font-latex-warning-face)) + '("\\$\\$\\([^$]+\\)\\$\\$" 1 font-latex-math-face) ;;; $$...$$ + '(font-latex-match-quotation . font-latex-string-face) ;;; ``...'' + '(font-latex-match-font-outside-braces ;;;\textit{text} + (0 font-lock-keyword-face + append ;Override? [t 'keep 'prepend 'append] + ;; Can't use prepend because that overwrites syntax fontification + ;; e.g. comments. + t) ;Laxmatch? if t, do not signal error + (1 font-latex-italic-face append t) + (2 font-latex-bold-face append t) + (3 font-lock-type-face append t)) + '(font-latex-match-font-inside-braces ;;;{\it text} + (0 font-lock-keyword-face append t) + (1 font-latex-italic-face append t) + (2 font-latex-bold-face append t) + (3 font-lock-type-face append t))) + "Subdued level highlighting for LaTeX modes.") + +(defconst font-latex-keywords-2 + (append font-latex-keywords-1 + '((font-latex-match-reference ;;;\cite + (0 font-lock-keyword-face append t) + (1 font-lock-variable-name-face append t) ;;; [opt] + (2 font-lock-reference-face append t)) ;;; {key} + (font-latex-match-function ;;;\section + (0 font-lock-keyword-face append t) + (1 font-lock-variable-name-face append t) ;;; [opt] + (2 font-lock-function-name-face append t)) ;;; {text} + (font-latex-match-variable + (0 font-lock-keyword-face nil t) + (1 font-lock-variable-name-face nil t) + (2 font-lock-variable-name-face nil t)) + (font-latex-match-math-env + (0 font-latex-math-face append t)) ;;;\(...\) + (font-latex-match-math-envII ;;;Math environ. + (0 font-latex-math-face append t)) + ("\\\\[@A-Za-z]+" ;;;Other commands + (0 font-latex-sedate-face append)))) + "High level highlighting for LaTeX modes.") + +(defvar font-latex-keywords font-latex-keywords-1 + "Default expressions to highlight in TeX mode.") + + +(defun font-latex-match-reference (limit) + (font-latex-match-command-outside-arguments + (eval-when-compile + (concat "\\\\" "\\(" + (mapconcat 'identity + '("[A-Za-z]*cite[A-Za-z]*" "label" "\\(page\\|v\\|eq\\)?ref" + "index" "glossary" "\\(footnote\\(mark\\|text\\)?\\)") + "\\|") + "\\)\\>")) + limit nil nil)) + +(defun font-latex-match-function (limit) + "Fontify things like \\section{text}" + (font-latex-match-command-outside-arguments + (eval-when-compile + (concat "\\\\" "\\(" + (mapconcat 'identity + ;; \\*? doesn't work with \\> at the end of the regexp. + ;; Instead, allow `*' for all commands (!) + '("item" ;;;FIXME: does not have an {arg} so should treated elsewhere. + "include" "input" "bibliography" + "part" "chapter" "\\(sub\\)*section" "\\(sub\\)*paragraph" + "begin" "end" + "title" "author" "date" "thanks" "address" + "pagenumbering" + "\\(this\\)?pagestyle" + "nofiles" "includeonly" + "bibliographystyle" "\\(document\\(style\\|class\\)\\)" + "\\(re\\)?new\\(environment\\|command\\|length\\|theorem\\|counter\\)" + "usepackage" "caption" "\\(f\\|m\\|s\\)box" "\\(v\\|h\\)space") + "\\|") + "\\)\\>")) + limit nil t)) + +(defun font-latex-match-variable (limit) + "Fontify things like \\newcommand{stuff}" + (font-latex-match-command-outside-arguments + (eval-when-compile + (concat "\\\\" "\\(" + "set\\(length\\|towidth\\|counter\\)\\|" + "addto\\(length\\|counter\\)" + "\\)\\>")) + limit t nil)) + + +;; FIXME: --About font-latex-commented-outp-- +;; Fontification is *slower* for affected functions (in particular +;; font-latex-match-function), so it will be worth it to increase +;; performance in the algorithm. +;; - don't return (store-match-data (list nil nil)) in +;; font-latex-match-command-outside-arguments, instead skip over +;; commented-out parts internally. +;; - Perhaps handling outlined code is excessive and slows down the +;; search too much? +;; - Is save-match-data expensive? The calling function could store +;; the match-data before it calls (font-latex-commented-outp) knowing +;; that is would trash the list. +(defun font-latex-commented-outp () + "Return t is comment character is found between bol and point." + (save-excursion + (let ((limit (point))) + (save-match-data + ;; Handle outlined code + (re-search-backward "^\\|\C-m" (point-min) t) + (if (re-search-forward "^%\\|[^\\]%" limit t) + t + nil))))) + +(defvar font-latex-match-command-cache-state nil + "Cache state of unterminated match to fontify") +(defvar font-latex-match-command-cache-start nil + "Cache start of unterminated match to fontify") +(defvar font-latex-match-command-cache-limit nil + "Cache end of unterminated match to fontify") +(defvar font-latex-match-command-cache-keywords nil + "Cache keywords of unterminated match to fontify") +(make-variable-buffer-local 'font-latex-match-command-cache-state) +(make-variable-buffer-local 'font-latex-match-command-cache-start) +(make-variable-buffer-local 'font-latex-match-command-cache-limit) +(make-variable-buffer-local 'font-latex-match-command-cache-keywords) + +;; FIXME - Note to myself +;; In call to font-latex-match-command-outside-arguments, I could arrange +;; such that keywords which cannot use [options] have this set to nil. +;; LaTeX code woulldn't fontify if options are used illegally in commands, +;; cuing users in that they are doing something wrong. (See RCS V1.11 for +;; useopt option) +;; +;; NOTE - Without an override flag, font-lock does not re-fontify the +;; option `opt' when the `t' is typed-in in "\cite[opt". The first `o' +;; was fontified and now has a face, which font-lock-apply-highlight +;; won't override. The `p' and `t' get a face as they are typed by +;; inheriting from left-stickyness on the `o'. +;; THEREFORE, I cannot rely on font-lock-apply-highlight to continue +;; multi-line incomplete patterns, because the first character of the +;; pattern on the first line has a face. I must use `prepend'. +(defun font-latex-match-command-outside-arguments (keywords limit twoargs + asterix) + "Search for regexp command KEYWORDS[opt]{arg} before LIMIT. +If TWOARG is t, allow two arguments {arg1}{arg2} +If ASTERIX is t, fontify trailing asterix in command. +Sets `match-data' so that: + subexpression 0 is the keyword, + subexpression 1 is the contents of any following [...] forms + subexpression 2 is the contents of any following {...} forms. +Returns nil if none of KEYWORDS is found." + ;; Prior incomplete match? + (if font-latex-match-command-cache-state + (setq font-latex-match-command-cache-state nil) ;Stop now! + (when (and font-latex-match-command-cache-keywords + (equal font-latex-match-command-cache-keywords keywords) + (>= font-latex-match-command-cache-limit (point)) + (< font-latex-match-command-cache-start (point))) + (goto-char font-latex-match-command-cache-start) + (setq font-latex-match-command-cache-state 'stop)) ;Can only do once + (when (re-search-forward keywords limit t) + (let ((this-start (match-beginning 0))) + (cond + ((font-latex-commented-outp) + ;; Return a nul match such that we skip over this pattern. + ;; (Would be better to skip over internally to this function) + (store-match-data (list nil nil)) + t) + (t + (let ((kbeg (match-beginning 0)) + (kend (+ (match-end 0) + (if (and asterix (eq (following-char) ?\*)) 1 0))) + sbeg send cbeg cend) + (goto-char kend) ;May be moved by asterix + (while (eq (following-char) ?\[) + (save-restriction + ;; Restrict to LIMIT. + (narrow-to-region (point-min) limit) + (setq sbeg (1+ kend)) + (if (condition-case nil + (goto-char (or (scan-sexps (point) 1) (point-max))) + (error)) + (setq send (1- (point))) + (setq send (point-max)) + (goto-char send) + (setq font-latex-match-command-cache-state 'stop)))) + (when (eq (following-char) ?\{) + (save-restriction + ;; Restrict to LIMIT. + (narrow-to-region (point-min) limit) + (setq cbeg (1+ (point))) + (if (condition-case nil + (goto-char (or (scan-sexps (point) 1) (point-max))) + (error)) + (setq cend (1- (point))) + (setq cend (point-max)) + (goto-char cend) + (setq font-latex-match-command-cache-state 'stop)))) + (when (and twoargs (eq (following-char) ?\{)) + (save-restriction + ;; Restrict to LIMIT. + (narrow-to-region (point-min) limit) + (if (condition-case nil + (goto-char (or (scan-sexps (point) 1) (point-max))) + (error)) + (setq cend (1- (point))) + (setq cend (point-max)) + (goto-char cend) + (setq font-latex-match-command-cache-state 'stop)))) + (store-match-data (list kbeg kend sbeg send cbeg cend)) + (when font-latex-match-command-cache-state + (setq font-latex-match-command-cache-start this-start) + (setq font-latex-match-command-cache-limit (point)) + (setq font-latex-match-command-cache-keywords keywords)) + t))))))) + +(defvar font-latex-match-font-cache-state nil + "Cache state of unterminated match to fontify") +(defvar font-latex-match-font-cache-start nil + "Cache start of unterminated match to fontify") +(defvar font-latex-match-font-cache-limit nil + "Cache end of unterminated match to fontify") +(defvar font-latex-match-font-cache-keywords nil + "Cache keywords of unterminated match to fontify") +(make-variable-buffer-local 'font-latex-match-font-cache-state) +(make-variable-buffer-local 'font-latex-match-font-cache-start) +(make-variable-buffer-local 'font-latex-match-font-cache-limit) +(make-variable-buffer-local 'font-latex-match-font-cache-keywords) + +(defun font-latex-match-font-outside-braces (limit) + "Search for font-changing command like \textbf{fubar} before LIMIT. +Sets `match-data' so that: + subexpression 0 is the keyword, + subexpression 1 is the content to fontify in italic. + subexpression 2 is the content to fontify in bold. + subexpression 3 is the content to fontify in type-face. +Returns nil if no font-changing command is found." + (if font-latex-match-font-cache-state + (setq font-latex-match-font-cache-state nil) ;Stop now! + (when (and font-latex-match-font-cache-keywords + (equal font-latex-match-font-cache-keywords keywords) + (>= font-latex-match-font-cache-limit (point)) + (< font-latex-match-font-cache-start (point))) + (goto-char font-latex-match-font-cache-start) + (setq font-latex-match-font-cache-state 'stop)) ;Can only do once + (when (re-search-forward + (eval-when-compile + (concat "\\\\" "\\(" + "\\(emph\\)\\|" ;;; 2 - italic + "\\(text\\(" + "\\(it\\|sl\\)\\|" ;;; 5 - italic + "\\(md\\|rm\\|sf\\|tt\\)\\|" ;;; 6 - type + "\\(bf\\|sc\\|up\\)" ;;; 7 - bold + "\\)\\)\\|" + "\\(boldsymbol\\|pmb\\)" ;;; 8 - bold + "\\)" "{")) + limit t) + (cond + ((font-latex-commented-outp) + ;; Return a nul match such that we skip over this pattern. + ;; (Would be better to skip over internally to this function) + ;; Using `prepend' won't help here, because the problem is that + ;; scan-sexp *fails* to find a commented-out matching bracket! + (store-match-data (list nil nil)) + t) + (t + (let ((kbeg (match-beginning 0)) (kend (match-end 1)) + (beg (match-end 0)) end itbeg itend bfbeg bfend ttbeg ttend) + (goto-char kend) + (save-restriction + ;; Restrict to LIMIT. + (narrow-to-region (point-min) limit) + (if (condition-case nil + (goto-char (or (scan-sexps (point) 1) (point-max))) + (error)) + (setq end (1- (point))) + (setq end (point-max)) + (goto-char end) + (setq font-latex-match-font-cache-state 'stop))) + (cond ((or (match-beginning 2) (match-beginning 5)) + (setq itbeg beg + itend end)) + ((match-beginning 6) + (setq ttbeg beg + ttend end)) + (t + (setq bfbeg beg + bfend end))) + (store-match-data + (list kbeg kend itbeg itend bfbeg bfend ttbeg ttend)) + (when font-latex-match-font-cache-state + (setq font-latex-match-font-cache-start kbeg) + (setq font-latex-match-font-cache-limit (point)) + (setq font-latex-match-font-cache-keywords keywords)) + ;; Start the subsequent search immediately after this keyword. + (goto-char kend) + t)))))) + +(defvar font-latex-match-infont-cache-state nil + "Cache state of unterminated match to fontify") +(defvar font-latex-match-infont-cache-start nil + "Cache start of unterminated match to fontify") +(defvar font-latex-match-infont-cache-limit nil + "Cache end of unterminated match to fontify") +(defvar font-latex-match-infont-cache-keywords nil + "Cache keywords of unterminated match to fontify") +(make-variable-buffer-local 'font-latex-match-infont-cache-state) +(make-variable-buffer-local 'font-latex-match-infont-cache-start) +(make-variable-buffer-local 'font-latex-match-infont-cache-limit) +(make-variable-buffer-local 'font-latex-match-infont-cache-keywords) + +(defun font-latex-match-font-inside-braces (limit) + "Search for font-changing command like {\bf fubar} before LIMIT. +Sets `match-data' so that: + subexpression 0 is the keyword. + subexpression 1 is the content to fontify in italic. + subexpression 2 is the content to fontify in bold. + subexpression 3 is the content to fontify in type-face. +Returns nil if no font-changing command is found." + (if font-latex-match-infont-cache-state + (setq font-latex-match-infont-cache-state nil) ;Stop now! + (when (and font-latex-match-infont-cache-keywords + (equal font-latex-match-infont-cache-keywords keywords) + (>= font-latex-match-infont-cache-limit (point)) + (< font-latex-match-infont-cache-start (point))) + (goto-char font-latex-match-infont-cache-start) + (setq font-latex-match-infont-cache-state 'stop)) ;Can only do once + (when (re-search-forward + (eval-when-compile + (concat "\\\\" "\\(" + ;;; 2 - italic + "\\(em\\|it\\(shape\\)?\\|sl\\(shape\\)?\\)\\|" + ;;; 5 - bold + "\\(bf\\(series\\)?\\|upshape\\|sc\\(shape\\)?\\)\\|" + "mdseries\\|tt\\(family\\)?\\|" + "sf\\(family\\)?\\|rm\\(family\\)?\\|" + "tiny\\|scriptsize\\|footnotesize\\|" + "small\\|normalsize\\|large\\|Large\\|LARGE\\|huge\\|Huge" + "\\)\\>[ \t]*")) + limit t) + (cond + ((font-latex-commented-outp) + ;; Return a nul match such that we skip over this pattern. + ;; (Would be better to skip over internally to this function) + ;; Using `prepend' won't help here, because the problem is that + ;; scan-sexp *fails* to find a commented-out matching bracket! + (store-match-data (list nil nil)) + t) + (t + (let ((kbeg (match-beginning 0)) (kend (match-end 1)) + (beg (match-end 0)) end itbeg itend bfbeg bfend ttbeg ttend) + (goto-char (match-beginning 0)) + (cond + ((not (eq (preceding-char) ?\{)) + ;; Fontify only the keyword as bf/it/type (no argument found). + (cond ((match-beginning 2) (setq itbeg kbeg itend kend)) + ((match-beginning 5) (setq bfbeg kbeg bfend kend)) + (t (setq ttbeg kbeg ttend kend))) + (goto-char (match-end 0)) + (store-match-data + (list nil nil itbeg itend bfbeg bfend ttbeg ttend)) + t) + (t + (condition-case nil + (forward-char -1) + (error)) + (save-restriction + ;; Restrict to LIMIT. + (narrow-to-region (point-min) limit) + (if (condition-case nil + (goto-char (or (scan-sexps (point) 1) (point-max))) + (error)) + (setq end (1- (point))) + (setq end (point-max)) + (goto-char end) + (setq font-latex-match-infont-cache-state 'stop))) + (cond ((match-beginning 2) (setq itbeg beg itend end)) + ((match-beginning 5) (setq bfbeg beg bfend end)) + (t (setq ttbeg beg ttend end))) + (store-match-data + (list kbeg kend itbeg itend bfbeg bfend ttbeg ttend)) + (when font-latex-match-infont-cache-state + (setq font-latex-match-infont-cache-start kbeg) + (setq font-latex-match-infont-cache-limit (point)) + (setq font-latex-match-infont-cache-keywords keywords)) + ;; Start the subsequent search immediately after this keyword. + (goto-char kend))))))))) + +;;; FIXME: Add caches for math-env, math-envII and quotations. +(defun font-latex-match-math-env (limit) + "Used for patterns like: +\\( F = ma \\) +\\ [ F = ma \\] but not \\\\ [len]" + (when (re-search-forward "\\(\\\\(\\)\\|\\(\\\\\\[\\)" limit t) + (goto-char (match-beginning 0)) + (if (eq (preceding-char) ?\\) ; \\[ is not a math environment + (progn + (goto-char (match-end 0)) + (store-match-data (list nil nil)) + t) + (let ((b1start (point))) + (search-forward (cond ((match-beginning 1) "\\)") + (t "\\]")) + limit 'move) + (let ((b2end (or (match-end 0) (point)))) + (store-match-data (list b1start b2end)) + t))))) + +(defun font-latex-match-math-envII (limit) + "Used for patterns like: +\\begin{equation} + fontified stuff +\\end{equation} +The \\begin{equation} and \\end{equation are not fontified here." + (when (re-search-forward + (eval-when-compile + (concat "\\\\begin{\\(\\(display\\)?math\\|equation\\|eqnarray" + "\\|gather\\|multline\\|align\\|x*alignat" + "\\)\\*?}")) + limit t) + (let ((beg (match-end 0)) end) + (if (search-forward (concat "\\end{" (buffer-substring + (match-beginning 1)(match-end 0))) + limit 'move) + (setq end (match-beginning 0)) + (setq end (point))) + (store-match-data (list beg end)) + t))) + +(defun font-latex-match-quotation (limit) + "Used for patterns like: +``this is a normal quote'' and these are multilingual quoted strings: +\"< french \"> and \"`german\"' quotes, << french >> and 8-bit french." + (when (re-search-forward + (eval-when-compile + (concat "\\(``\\)\\|\\(\"<\\)\\|\\(\"`\\)\\|\\(<<\\)\\|" + "\\(" (char-to-string 171) "\\)")) ; An 8-bit "<<" + limit t) + (let ((beg (match-beginning 0))) + (search-forward + (cond ((match-beginning 1) "''") + ((match-beginning 2) "\">") + ((match-beginning 3) "\"'") + ((match-beginning 4) ">>") + ((match-beginning 5) (eval-when-compile (char-to-string 187)))) + limit 'move) + (store-match-data (list beg (point))) + t))) + +;; Install ourselves + +(add-hook 'LaTeX-mode-hook 'font-latex-setup) +(add-hook 'latex-mode-hook 'font-latex-setup) +;; If font-latex is loaded using a latex-mode-hook, then the add-hook above +;; won't be called this time around. Check for this now: +(if (eq major-mode 'latex-mode) + (font-latex-setup)) + +;; Provide ourselves: + +(provide 'font-latex) + +;;; font-latex.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/latex.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/latex.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,3075 @@ +;;; latex.el --- Support for LaTeX documents. +;; +;; Maintainer: Per Abrahamsen +;; Version: 9.7i +;; Keywords: wp +;; X-URL: http://sunsite.auc.dk/auctex + +;; Copyright 1991 Kresten Krab Thorup +;; Copyright 1993, 1994, 1995, 1996, 1997 Per Abrahamsen +;; +;; 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 1, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Code: + +(require 'tex) + +;;; Syntax + +(defvar LaTeX-optop "[" + "The LaTeX optional argument opening character.") +(make-variable-buffer-local 'LaTeX-optop) + +(defvar LaTeX-optcl "]" + "The LaTeX optional argument closeing character.") +(make-variable-buffer-local 'LaTeX-optcl) + +;;; Style + +(defvar LaTeX-default-style "article" + "*Default when creating new documents.") + + (make-variable-buffer-local 'LaTeX-default-style) + +(defvar LaTeX-default-options nil + "*Default options to documentstyle. +A list of strings.") + + (make-variable-buffer-local 'LaTeX-default-options) + +;;; Syntax Table + +(defvar LaTeX-mode-syntax-table (copy-syntax-table TeX-mode-syntax-table) + "Syntax table used in LaTeX mode.") + +(progn ; set [] to match for LaTeX. + (modify-syntax-entry (string-to-char LaTeX-optop) + (concat "(" LaTeX-optcl) + LaTeX-mode-syntax-table) + (modify-syntax-entry (string-to-char LaTeX-optcl) + (concat ")" LaTeX-optop) + LaTeX-mode-syntax-table)) + +;;; Sections + +(defun LaTeX-section (arg) + "Insert a template for a LaTeX section. +Determinate the type of section to be inserted, by the argument ARG. + +If ARG is nil or missing, use the current level. +If ARG is a list (selected by C-u), go downward one level. +If ARG is negative, go up that many levels. +If ARG is positive or zero, use absolute level: + + 0 : part + 1 : chapter + 2 : section + 3 : subsection + 4 : subsubsection + 5 : paragraph + 6 : subparagraph + +The following variables can be set to customize: + +LaTeX-section-hook Hooks to run when inserting a section. +LaTeX-section-label Prefix to all section labels." + + (interactive "*P") + (let* ((val (prefix-numeric-value arg)) + (level (cond ((null arg) + (LaTeX-current-section)) + ((listp arg) + (LaTeX-down-section)) + ((< val 0) + (LaTeX-up-section (- val))) + (t val))) + (name (LaTeX-section-name level)) + (toc nil) + (title "") + (done-mark (make-marker))) + (newline) + (run-hooks 'LaTeX-section-hook) + (newline) + (if (marker-position done-mark) + (goto-char (marker-position done-mark))) + (set-marker done-mark nil))) + +(defun LaTeX-current-section () + "Return the level of the section that contain point. +See also LaTeX-section for description of levels." + (save-excursion + (max (LaTeX-largest-level) + (if (re-search-backward (LaTeX-outline-regexp) nil t) + (- (LaTeX-outline-level) (LaTeX-outline-offset)) + (LaTeX-largest-level))))) + +(defun LaTeX-down-section () + "Return the value of a section one level under the current. Tries to +find what kind of section that have been used earlier in the text, If +this fail, it will just return one less than the current section." + (save-excursion + (let ((current (LaTeX-current-section)) + (next nil) + (regexp (LaTeX-outline-regexp))) + (if (not (re-search-backward regexp nil t)) + (1+ current) + (while (not next) + (cond + ((eq (LaTeX-current-section) current) + (if (re-search-forward regexp nil t) + (if (<= (setq next (LaTeX-current-section)) current) ;Wow! + (setq next (1+ current))) + (setq next (1+ current)))) + ((not (re-search-backward regexp nil t)) + (setq next (1+ current))))) + next)))) + +(defun LaTeX-up-section (arg) + "Return the value of the section ARG levels above this one." + (save-excursion + (if (zerop arg) + (LaTeX-current-section) + (let ((current (LaTeX-current-section))) + (while (and (>= (LaTeX-current-section) current) + (re-search-backward (LaTeX-outline-regexp) + nil t))) + (LaTeX-up-section (1- arg)))))) + +(defvar LaTeX-section-list '(("part" 0) + ("chapter" 1) + ("section" 2) + ("subsection" 3) + ("subsubsection" 4) + ("paragraph" 5) + ("subparagraph" 6)) + "List which elements is the names of the sections used by LaTeX.") + +(defun LaTeX-section-name (level) + "Return the name of the section corresponding to LEVEL." + (let ((entry (TeX-member level LaTeX-section-list + (function (lambda (a b) (equal a (nth 1 b))))))) + (if entry + (nth 0 entry) + nil))) + +(defun LaTeX-section-level (name) + "Return the level of the section NAME." + (let ((entry (TeX-member name LaTeX-section-list + (function (lambda (a b) (equal a (nth 0 b))))))) + + (if entry + (nth 1 entry) + nil))) + +(defvar TeX-outline-extra nil + "*List of extra TeX outline levels. + +Each element is a list with two entries. The first entry is the +regular expression matching a header, and the second is the level of +the header. See LaTeX-section-list for existing header levels.") + +(defun LaTeX-outline-regexp (&optional anywhere) + "Return regexp for LaTeX sections. + +If optional argument ANYWHERE is not nil, do not require that the +header is at the start of a line." + (concat (if anywhere "" "^") + "[ \t]*" + (regexp-quote TeX-esc) + "\\(appendix\\|documentstyle\\|documentclass\\|" + (mapconcat 'car LaTeX-section-list "\\|") + "\\)\\b" + (if TeX-outline-extra + "\\|" + "") + (mapconcat 'car TeX-outline-extra "\\|") + "\\|" TeX-header-end + "\\|" TeX-trailer-start)) + +(defvar LaTeX-largest-level nil + "Largest sectioning level with current document style") + +(make-variable-buffer-local 'LaTeX-largest-level) + +(defun LaTeX-largest-level () + (TeX-update-style) + LaTeX-largest-level) + +(defun LaTeX-outline-offset () + "Offset to add to LaTeX-section-list levels to get outline level." + (- 2 (LaTeX-largest-level))) + +(defun TeX-look-at (list) + "Check if we are looking at the first element of a member of LIST. +If so, return the second element, otherwise return nil." + (while (and list + (not (looking-at (nth 0 (car list))))) + (setq list (cdr list))) + (if list + (nth 1 (car list)) + nil)) + +(defun LaTeX-outline-level () + "Find the level of current outline heading in an LaTeX document." + (cond ((looking-at LaTeX-header-end) 1) + ((looking-at LaTeX-trailer-start) 1) + ((TeX-look-at TeX-outline-extra) + (max 1 (+ (TeX-look-at TeX-outline-extra) + (LaTeX-outline-offset)))) + (t + (save-excursion + (skip-chars-forward " \t") + (forward-char 1) + (cond ((looking-at "appendix") 1) + ((looking-at "documentstyle") 1) + ((looking-at "documentclass") 1) + ((TeX-look-at LaTeX-section-list) + (max 1 (+ (TeX-look-at LaTeX-section-list) + (LaTeX-outline-offset)))) + (t + (error "Unrecognized header"))))))) + +(add-hook 'TeX-remove-style-hook + (function (lambda () (setq LaTeX-largest-level nil)))) + +(defvar LaTeX-section-hook + '(LaTeX-section-heading + LaTeX-section-title +;; LaTeX-section-toc ; Most people won't want this + LaTeX-section-section + LaTeX-section-label) + "*List of hooks to run when a new section is inserted. + +The following variables are set before the hooks are run + +level - numeric section level, see the documentation of `LaTeX-section'. +name - name of the sectioning command, derived from `level'. +title - The title of the section, default to an empty string. +toc - Entry for the table of contents list, default nil. +done-mark - Position of point afterwards, default nil (meaning end). + +The following standard hook exist - + +LaTeX-section-heading: Query the user about the name of the +sectioning command. Modifies `level' and `name'. + +LaTeX-section-title: Query the user about the title of the +section. Modifies `title'. + +LaTeX-section-toc: Query the user for the toc entry. Modifies +`toc'. + +LaTeX-section-section: Insert LaTeX section command according to +`name', `title', and `toc'. If `toc' is nil, no toc entry is +enserted. If `toc' or `title' are empty strings, `done-mark' will be +placed at the point they should be inserted. + +LaTeX-section-label: Insert a label after the section command. +Controled by the variable `LaTeX-section-label'. + +To get a full featured LaTeX-section command, insert + + (setq LaTeX-section-hook + '(LaTeX-section-heading + LaTeX-section-title + LaTeX-section-toc + LaTeX-section-section + LaTeX-section-label)) + +in your .emacs file.") + +(defvar LaTeX-section-label + '(("chapter" . "cha:") + ("section" . "sec:") + ("subsection" . "sec:")) + "*Default prefix when asking for a label. + +If it is a string, it it used unchanged for all kinds of sections. +If it is nil, no label is inserted. +If it is a list, the list is searched for a member whose car is equal +to the name of the sectioning command being inserted. The cdr is then +used as the prefix. If the name is not found, or if the cdr is nil, +no label is inserted.") + +;;; Section Hooks. + +(defun LaTeX-section-heading () + "Hook to prompt for LaTeX section name. +Insert this hook into LaTeX-section-hook to allow the user to change +the name of the sectioning command inserted with M-x LaTeX-section." + (let ((string (completing-read + (concat "Select level: (default " name ") ") + LaTeX-section-list + nil nil nil))) + ; Update name + (if (not (zerop (length string))) + (setq name string)) + ; Update level + (setq level (LaTeX-section-level name)))) + +(defun LaTeX-section-title () + "Hook to prompt for LaTeX section title. +Insert this hook into LaTeX-section-hook to allow the user to change +the title of the section inserted with M-x LaTeX-section." + (setq title (read-string "What title: "))) + +(defun LaTeX-section-toc () + "Hook to prompt for the LaTeX section entry in the table of content . +Insert this hook into LaTeX-section-hook to allow the user to insert +a different entry for the section in the table of content." + (setq toc (read-string "Toc Entry: ")) + (if (zerop (length toc)) + (setq toc nil))) + +(defun LaTeX-section-section () + "Hook to insert LaTeX section command into the file. +Insert this hook into LaTeX-section-hook after those hooks which sets +the `name', `title', and `toc' variables, but before those hooks which +assumes the section already is inserted." + (insert TeX-esc name) + (cond ((null toc)) + ((zerop (length toc)) + (insert LaTeX-optop) + (set-marker done-mark (point)) + (insert LaTeX-optcl)) + (t + (insert LaTeX-optop toc LaTeX-optcl))) + (insert TeX-grop) + (if (zerop (length title)) + (set-marker done-mark (point))) + (insert title TeX-grcl) + (newline)) + +(defun LaTeX-section-label () + "Hook to insert a label after the sectioning command. +Insert this hook into LaTeX-section-hook to prompt for a label to be +inserted after the sectioning command. + +The beaviour of this hook is controled by LaTeX-section-label." + (and (LaTeX-label name) + (newline))) + +;;; Environments + +(defvar LaTeX-default-environment "itemize" + "*The default environment when creating new ones with LaTeX-environment.") + (make-variable-buffer-local 'LaTeX-default-environment) + +(defun LaTeX-environment (arg) + "Make LaTeX environment (\\begin{...}-\\end{...} pair). +With optional ARG, modify current environment. + +It may be customized with the following variables: + +LaTeX-default-environment Your favorite environment. +LaTeX-default-style Your favorite document style. +LaTeX-default-options Your favorite document style options. +LaTeX-float Where you want figures and tables to float. +LaTeX-table-label Your prefix to labels in tables. +LaTeX-figure-label Your prefix to labels in figures. +LaTeX-default-format Format for array and tabular. +LaTeX-default-position Position for array and tabular." + + (interactive "*P") + (let ((environment (completing-read (concat "Environment type: (default " + (if (TeX-near-bobp) + "document" + LaTeX-default-environment) + ") ") + (LaTeX-environment-list)))) + ;; Get default + (cond ((and (zerop (length environment)) + (TeX-near-bobp)) + (setq environment "document")) + ((zerop (length environment)) + (setq environment LaTeX-default-environment)) + (t + (setq LaTeX-default-environment environment))) + + (let ((entry (assoc environment (LaTeX-environment-list)))) + (if (null entry) + (LaTeX-add-environments (list environment))) + + (if arg + (LaTeX-modify-environment environment) + (LaTeX-environment-menu environment))))) + +(defun LaTeX-environment-menu (environment) + ;; Insert ENVIRONMENT around point or region. + (let ((entry (assoc environment (LaTeX-environment-list)))) + (cond ((not (and entry (nth 1 entry))) + (LaTeX-insert-environment environment)) + ((numberp (nth 1 entry)) + (let ((count (nth 1 entry)) + (args "")) + (while (> count 0) + (setq args (concat args TeX-grop TeX-grcl)) + (setq count (- count 1))) + (LaTeX-insert-environment environment args))) + ((stringp (nth 1 entry)) + (let ((prompts (cdr entry)) + (args "")) + (while prompts + (setq args (concat args + TeX-grop + (read-from-minibuffer (concat (car prompts) + ": ")) + TeX-grcl)) + (setq prompts (cdr prompts))) + (LaTeX-insert-environment environment args))) + (t + (apply (nth 1 entry) environment (nthcdr 2 entry)))))) + +(defun LaTeX-close-environment () + "Creates an \\end{...} to match the current environment." + (interactive "*") + (if (> (point) + (save-excursion + (beginning-of-line) + (skip-chars-forward " \t") + (point))) + (insert "\n")) + (insert "\\end{" (LaTeX-current-environment 1) "}") + (LaTeX-indent-line) + (if (not (looking-at "[ \t]*$")) + (insert "\n") + (let ((next-line-add-newlines t)) + (next-line 1) + (beginning-of-line))) + (LaTeX-indent-line)) + +(autoload 'outline-flag-region "outline") + +(defun LaTeX-hide-environment () + "Hide current LaTeX environment using selective display." + (interactive) + (outline-flag-region (save-excursion (LaTeX-find-matching-begin) (point)) + (save-excursion (LaTeX-find-matching-end) (point)) + ?\r)) + +(defun LaTeX-show-environment () + "Show current LaTeX environment." + (interactive) + (outline-flag-region (save-excursion (LaTeX-find-matching-begin) (point)) + (save-excursion (LaTeX-find-matching-end) (point)) + ?\n)) + +(defun LaTeX-insert-environment (environment &optional extra) + "Insert environment of type ENV, with optional argument EXTRA." + (if (and (TeX-active-mark) + (not (eq (mark) (point)))) + (progn + (if (< (mark) (point)) + (exchange-point-and-mark)) + (or (TeX-looking-at-backward "^[ \t]*") + (newline)) + (insert TeX-esc "begin" TeX-grop environment TeX-grcl) + (LaTeX-indent-line) + (if extra (insert extra)) + (newline) + (goto-char (mark)) + (or (TeX-looking-at-backward "^[ \t]*") + (newline)) + (insert TeX-esc "end" TeX-grop environment TeX-grcl) + (or (looking-at "[ \t]*$") + (save-excursion (newline-and-indent))) + (LaTeX-indent-line) + (end-of-line 0) + (or (assoc environment LaTeX-indent-environment-list) + (LaTeX-fill-environment nil))) + (or (TeX-looking-at-backward "^[ \t]*") + (newline)) + (insert TeX-esc "begin" TeX-grop environment TeX-grcl) + (LaTeX-indent-line) + (if extra (insert extra)) + (newline-and-indent) + (newline) + (insert TeX-esc "end" TeX-grop environment TeX-grcl) + (or (looking-at "[ \t]*$") + (save-excursion (newline-and-indent))) + (LaTeX-indent-line) + (end-of-line 0))) + +(defun LaTeX-modify-environment (environment) + ;; Modify current environment. + (save-excursion + (LaTeX-find-matching-end) + (re-search-backward (concat (regexp-quote TeX-esc) + "end" + (regexp-quote TeX-grop) + " *\\([a-zA-Z*]*\\)" + (regexp-quote TeX-grcl)) + (save-excursion (beginning-of-line 1) (point))) + (replace-match (concat TeX-esc "end" TeX-grop environment TeX-grcl) t t) + (beginning-of-line 1) + (LaTeX-find-matching-begin) + (re-search-forward (concat (regexp-quote TeX-esc) + "begin" + (regexp-quote TeX-grop) + " *\\([a-zA-Z*]*\\)" + (regexp-quote TeX-grcl)) + (save-excursion (end-of-line 1) (point))) + (replace-match (concat TeX-esc "begin" TeX-grop environment TeX-grcl) t t))) + +(defun LaTeX-current-environment (&optional arg) + "Return the name (a string) of the enclosing LaTeX environment. +With optional ARG>=1, find that outer level." + (setq arg (if arg (if (< arg 1) 1 arg) 1)) + (save-excursion + (while (and + (/= arg 0) + (re-search-backward + (concat (regexp-quote TeX-esc) "begin" (regexp-quote TeX-grop) + "\\|" + (regexp-quote TeX-esc) "end" (regexp-quote TeX-grop)) + nil t 1)) + (cond ((TeX-in-comment) + (beginning-of-line 1)) + ((looking-at (concat (regexp-quote TeX-esc) + "end" (regexp-quote TeX-grop))) + (setq arg (1+ arg))) + (t + (setq arg (1- arg))))) + (if (/= arg 0) + "document" + (search-forward TeX-grop) + (let ((beg (point))) + (search-forward TeX-grcl) + (backward-char 1) + (buffer-substring beg (point)))))) + +(defun TeX-near-bobp () + ;; Return t iff there's nothing but whitespace between (bob) and (point). + (save-excursion + (skip-chars-backward " \t\n") + (bobp))) + +;;; Environment Hooks + +(defvar LaTeX-document-style-hook nil + "List of hooks to run when inserting a document style environment. + +To insert a hook here, you must insert it in the appropiate style file.") + +(defun LaTeX-env-document (&optional ignore) + "Create new LaTeX document." + + (TeX-insert-macro (if (string-equal LaTeX-version "2") + "documentstyle" + "documentclass")) + + (newline 3) + (end-of-line 0) + (LaTeX-insert-environment "document") + (run-hooks 'LaTeX-document-style-hook) + (setq LaTeX-document-style-hook nil)) + +(defvar LaTeX-float "htbp" + "*Default float when creating figure and table environments. +Set to nil if you don't want any float.") + (make-variable-buffer-local 'LaTeX-float) + +(defvar LaTeX-label-function nil + "*A function inserting a label at point. +Sole argument of the function is the environment. The function has to return +the label inserted, or nil if no label was inserted.") + +(defvar LaTeX-figure-label "fig:" + "*Default prefix to figure labels.") + (make-variable-buffer-local 'LaTeX-figure-label) + +(defvar LaTeX-table-label "tab:" + "*Default prefix to table labels.") + (make-variable-buffer-local 'LaTeX-table-label) + +(defvar LaTeX-default-format "" + "Specifies the default format string for array and tabular environments.") + (make-variable-buffer-local 'LaTeX-default-format) + +(defvar LaTeX-default-position "" + "Specifies the default position string for array and tabular environments.") + (make-variable-buffer-local 'LaTeX-default-position) + +(defun LaTeX-env-item (environment) + "Insert ENVIRONMENT and the first item." + (LaTeX-insert-environment environment) + (if (TeX-active-mark) + (progn + (LaTeX-find-matching-begin) + (end-of-line 1)) + (end-of-line 0)) + (delete-char 1) + (delete-horizontal-space) + (LaTeX-insert-item)) + +(defun LaTeX-label (environment) + "Insert a label for ENVIRONMENT at point. +If LaTeX-label-function is a valid function, LaTeX label will transfer the +job to this function." + (let (label) + (if (and (boundp 'LaTeX-label-function) + LaTeX-label-function + (fboundp LaTeX-label-function)) + + (setq label (funcall LaTeX-label-function environment)) + (let ((prefix + (cond + ((string= "figure" environment) LaTeX-figure-label) + ((string= "table" environment) LaTeX-table-label) + ((assoc environment LaTeX-section-list) + (cond + ((stringp LaTeX-section-label) LaTeX-section-label) + ((and (listp LaTeX-section-label) + (assoc environment LaTeX-section-label)) + (cdr (assoc environment LaTeX-section-label))) + (t nil))) + (t "")))) + (if prefix + (progn + (setq label (read-string "What label: " prefix)) + (if (string= prefix label) + (setq label nil) ; No label eneterd + (insert TeX-esc "label" TeX-grop label TeX-grcl))))) + (if label + (progn + (LaTeX-add-labels label) + label) + nil)))) + + +(defun LaTeX-env-figure (environment) + "Create ENVIRONMENT with \\label and \\caption commands." + (let ((float (read-string "Float to: " LaTeX-float)) + (caption (read-string "Caption: ")) + (center (y-or-n-p "Center: "))) + + (setq LaTeX-float (if (zerop (length float)) + LaTeX-float + float)) + + (LaTeX-insert-environment environment + (and LaTeX-float + (concat LaTeX-optop + LaTeX-float + LaTeX-optcl))) + + (if center + (progn + (LaTeX-insert-environment "center"))) + + (newline-and-indent) + (LaTeX-label environment) + (end-of-line 0) + (LaTeX-indent-line) + + (if (zerop (length caption)) + () + ;; NOTE: Caption is _inside_ center because that looks best typeset. + (newline-and-indent) + (insert TeX-esc "caption" TeX-grop caption TeX-grcl) + (end-of-line 0) + (LaTeX-indent-line)) + + (if (string= environment "table") (LaTeX-env-array "tabular")))) + +(defun LaTeX-env-array (environment) + "Insert ENVIRONMENT with position and column specifications +like array and tabular." + (let ((pos (read-string "Position: ")) + (fmt (read-string "Format: " LaTeX-default-format))) + (setq LaTeX-default-position pos) + (setq LaTeX-default-format fmt) + (LaTeX-insert-environment environment + (concat + (if (not (zerop (length pos))) + (format "[%s]" pos)) + (format "{%s}" fmt))) + (end-of-line 0) + (next-line 1) + (delete-horizontal-space))) + +(defun LaTeX-env-label (environment) + "Insert ENVIRONMENT and prompt for label." + (LaTeX-insert-environment environment) + (and (LaTeX-label environment) + (newline-and-indent))) + +(defun LaTeX-env-list (environment) + "Insert ENVIRONMENT and the first item." + (let ((label (read-string "Default Label: "))) + (LaTeX-insert-environment environment + (format "{%s}{}" label)) + (end-of-line 0) + (delete-char 1) + (delete-horizontal-space)) + (LaTeX-insert-item)) + +(defun LaTeX-env-minipage (environment) + "Create new LaTeX minipage." + (let ((pos (read-string "Position: " LaTeX-default-position)) + (width (read-string "Width: "))) + (setq LaTeX-default-position pos) + (if (zerop (length width)) + (setq width "4cm")) + (LaTeX-insert-environment environment + (concat (if (not (zerop (length pos))) + (format "[%s]" pos)) + (format "{%s}" width))) + (end-of-line 0) + (next-line 1) + (delete-horizontal-space))) + +(defun LaTeX-env-tabular* (environment) + "Insert ENVIRONMENT with width, position and column specifications." + (let ((width (read-string "Width: ")) + (pos (read-string "Position: " LaTeX-default-position)) + (fmt (read-string "Format: " LaTeX-default-format))) + (setq LaTeX-default-position pos) + (setq LaTeX-default-format fmt) + (LaTeX-insert-environment environment + (concat + (if (not (zerop (length width))) + (format "{%s}" width)) + (if (not (zerop (length pos))) + (format "[%s]" pos)) + (format "{%s}" fmt))) + (end-of-line 0) + (next-line 1) + (delete-horizontal-space))) + +(defun LaTeX-env-picture (environment) + "Insert ENVIRONMENT with width, height specifications." + (let ((width (read-string "Width: ")) + (height (read-string "Height: ")) + (x-offset (read-string "X Offset: ")) + (y-offset (read-string "Y Offset: "))) + (if (zerop (length x-offset)) + (setq x-offset "0")) + (if (zerop (length y-offset)) + (setq y-offset "0")) + (LaTeX-insert-environment environment + (concat (format "(%s,%s)" width height) + (if (not (and (string= x-offset "0") + (string= y-offset "0"))) + (format "(%s,%s)" x-offset y-offset)))) + + (end-of-line 0) + (next-line 1) + (delete-horizontal-space))) + +(defun LaTeX-env-bib (environment) + "Insert ENVIRONMENT with label for bibitem." + (LaTeX-insert-environment environment + (concat TeX-grop + (read-string "Label for BibItem: " "99") + TeX-grcl)) + (end-of-line 0) + (delete-char 1) + (delete-horizontal-space) + (LaTeX-insert-item)) + +;;; Item hooks + +(defvar LaTeX-item-list nil + "An list of environments where items have a special syntax. +The cdr is the name of the function, used to insert this kind of items.") + +(defun LaTeX-insert-item () + "Insert a new item in an environment. +You may use LaTeX-item-list to change the routines used to insert the item." + (interactive "*") + (let ((environment (LaTeX-current-environment))) + (newline) + (if (assoc environment LaTeX-item-list) + (funcall (cdr (assoc environment LaTeX-item-list))) + (TeX-insert-macro "item")) + (LaTeX-indent-line))) + +(defun LaTeX-item-argument () + "Insert a new item with an optional argument." + (let ((TeX-arg-item-label-p t)) + (TeX-insert-macro "item"))) + +(defun LaTeX-item-bib () + "Insert a new bibitem." + (TeX-insert-macro "bibitem")) + +;;; Parser + +(defvar LaTeX-auto-minimal-regexp-list + '(("\\\\document\\(style\\|class\\)\ +\\(\\[\\(\\([^#\\\\\\.%]\\|%[^\n\r]*[\n\r]\\)+\\)\\]\\)?\ +{\\([^#\\\\\\.\n\r]+\\)}" + (3 5 1) LaTeX-auto-style)) + "Minimal list of regular expressions matching LaTeX macro definitions.") + +(defvar LaTeX-auto-label-regexp-list + '(("\\\\label{\\([^\n\r%\\{}]+\\)}" 1 LaTeX-auto-label)) + "List of regular expression matching LaTeX labels only.") + +(defvar LaTeX-auto-regexp-list + (append + '(("\\\\newcommand{?\\\\\\([a-zA-Z]+\\)}?\\[\\([0-9]+\\)\\]\ +\\[\\([^\]\\\\\n\r]+\\)\\]" + (1 2 3) LaTeX-auto-optional) + ("\\\\newcommand{?\\\\\\([a-zA-Z]+\\)}?\\[\\([0-9]+\\)\\]" + (1 2) LaTeX-auto-arguments) + ("\\\\newcommand{?\\\\\\([a-zA-Z]+\\)}?" 1 TeX-auto-symbol) + ("\\\\newenvironment{?\\([a-zA-Z]+\\)}?\\[\\([0-9]+\\)\\]\\[" + 1 LaTeX-auto-environment) + ("\\\\newenvironment{?\\([a-zA-Z]+\\)}?\\[\\([0-9]+\\)\\]" + (1 2) LaTeX-auto-env-args) + ("\\\\newenvironment{?\\([a-zA-Z]+\\)}?" 1 LaTeX-auto-environment) + ("\\\\newtheorem{\\([a-zA-Z]+\\)}" 1 LaTeX-auto-environment) + ("\\\\input{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" + 1 TeX-auto-file) + ("\\\\include{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" + 1 TeX-auto-file) + ("\\\\usepackage\\(\\[[^\]\\\\]*\\]\\)?\ +{\\(\\([^#}\\\\\\.%]\\|%[^\n\r]*[\n\r]\\)+\\)}" + (2) LaTeX-auto-style) + ("\\\\bibitem{\\([a-zA-Z][^, \n\r\t%\"#'()={}]*\\)}" 1 LaTeX-auto-bibitem) + ("\\\\bibitem\\[[^][\n\r]+\\]{\\([a-zA-Z][^, \n\r\t%\"#'()={}]*\\)}" + 1 LaTeX-auto-bibitem) + ("\\\\bibliography{\\([^#}\\\\\n\r]+\\)}" 1 LaTeX-auto-bibliography)) + LaTeX-auto-label-regexp-list + LaTeX-auto-minimal-regexp-list) + "List of regular expression matching common LaTeX macro definitions.") + +(defun LaTeX-auto-prepare () + ;; Prepare for LaTeX parsing. + (setq LaTeX-auto-arguments nil + LaTeX-auto-optional nil + LaTeX-auto-env-args nil + LaTeX-auto-style nil + LaTeX-auto-end-symbol nil)) + +(add-hook 'TeX-auto-prepare-hook 'LaTeX-auto-prepare) + +(defun LaTeX-auto-cleanup () + ;; Cleanup after LaTeX parsing. + + ;; Cleanup BibTeX files + (setq LaTeX-auto-bibliography + (apply 'append (mapcar (function (lambda (arg) + (TeX-split-string "," arg))) + LaTeX-auto-bibliography))) + + ;; Cleanup document styles and packages + (if (null LaTeX-auto-style) + () + (while LaTeX-auto-style + (let* ((entry (car LaTeX-auto-style)) + (options (nth 0 entry)) + (style (nth 1 entry)) + (class (nth 2 entry))) + + ;; Next document style. + (setq LaTeX-auto-style (cdr LaTeX-auto-style)) + + ;; Get the options. + (setq options (TeX-split-string + "\\([ \t\r\n]\\|%[^\n\r]*[\n\r]\\|,\\)+" + options)) + + ;; Strip empty options. + (if (string-equal (car options) "") + (setq options (cdr options))) + (let ((index options)) + (while (cdr-safe index) + (if (string-equal (car (cdr index)) "") + (setcdr index (cdr (cdr index))) + (setq index (cdr index))))) + + ;; Add them, to the style list. + (setq TeX-auto-file (append options TeX-auto-file)) + + ;; The second argument if present is a normal style file. + (if (null style) + () + (setq TeX-auto-file (cons style TeX-auto-file)) + + ;; And a special "art10" style file combining style and size. + (setq TeX-auto-file + (cons (concat + (cond ((string-equal "article" style) + "art") + ((string-equal "book" style) + "bk") + ((string-equal "report" style) + "rep") + ((string-equal "jarticle" style) + "jart") + ((string-equal "jbook" style) + "jbk") + ((string-equal "jreport" style) + "jrep") + ((string-equal "j-article" style) + "j-art") + ((string-equal "j-book" style) + "j-bk") + ((string-equal "j-report" style ) + "j-rep") + (t style)) + (cond ((member "11pt" options) + "11") + ((member "12pt" options) + "12") + (t + "10"))) + TeX-auto-file))) + + ;; The third argument if "class" indicates LaTeX2e features. + (cond ((equal class "class") + (setq TeX-auto-file (cons "latex2e" TeX-auto-file))) + ((equal class "style") + (setq TeX-auto-file (cons "latex2" TeX-auto-file))))))) + + ;; Cleanup optional arguments + (mapcar (function (lambda (entry) + (setq TeX-auto-symbol + (cons (list (nth 0 entry) + (string-to-int (nth 1 entry))) + TeX-auto-symbol)))) + LaTeX-auto-arguments) + + ;; Cleanup default optional arguments + (mapcar (function (lambda (entry) + (setq TeX-auto-symbol + (cons (list (nth 0 entry) + (vector "argument") + (1- (string-to-int (nth 1 entry)))) + TeX-auto-symbol)))) + LaTeX-auto-optional) + + ;; Cleanup environments arguments + (mapcar (function (lambda (entry) + (setq LaTeX-auto-environment + (cons (list (nth 0 entry) + (string-to-int (nth 1 entry))) + LaTeX-auto-environment)))) + LaTeX-auto-env-args) + + ;; Cleanup use of def to add environments + ;; NOTE: This uses an O(N^2) algorithm, while an O(N log N) + ;; algorithm is possible. + (mapcar (function (lambda (symbol) + (if (not (TeX-member symbol TeX-auto-symbol 'equal)) + ;; No matching symbol, insert in list + (setq TeX-auto-symbol + (cons (concat "end" symbol) TeX-auto-symbol)) + ;; Matching symbol found, remove from list + (if (equal (car TeX-auto-symbol) symbol) + ;; Is it the first symbol? + (setq TeX-auto-symbol (cdr TeX-auto-symbol)) + ;; Nope! Travel the list + (let ((list TeX-auto-symbol)) + (while (consp (cdr list)) + ;; Until we find it. + (if (equal (car (cdr list)) symbol) + ;; Then remove it. + (setcdr list (cdr (cdr list)))) + (setq list (cdr list))))) + ;; and add the symbol as an environment. + (setq LaTeX-auto-environment + (cons symbol LaTeX-auto-environment))))) + LaTeX-auto-end-symbol)) + +(add-hook 'TeX-auto-cleanup-hook 'LaTeX-auto-cleanup) + +(TeX-auto-add-type "label" "LaTeX") +(TeX-auto-add-type "bibitem" "LaTeX") +(TeX-auto-add-type "environment" "LaTeX") +(TeX-auto-add-type "bibliography" "LaTeX" "bibliographies") + +(fset 'LaTeX-add-bibliographies-auto + (symbol-function 'LaTeX-add-bibliographies)) +(defun LaTeX-add-bibliographies (&rest bibliographies) + "Add BIBLIOGRAPHIES to the list of known bibliographies and style files." + (apply 'LaTeX-add-bibliographies-auto bibliographies) + (apply 'TeX-run-style-hooks bibliographies)) + +(fset 'LaTeX-add-environments-auto + (symbol-function 'LaTeX-add-environments)) +(defun LaTeX-add-environments (&rest environments) + "Add ENVIRONMENTS to the list of known environments." + (apply 'LaTeX-add-environments-auto environments) + (setq LaTeX-menu-changed t)) + +;;; BibTeX + +;;;###autoload +(defun BibTeX-auto-store () + "This function should be called from bibtex-mode-hook. +It will setup BibTeX to store keys in an auto file." + ;; We want this to be early in the list, so we do not + ;; add it before we enter BibTeX mode the first time. + (if (boundp 'local-write-file-hooks) + (add-hook 'local-write-file-hooks 'TeX-safe-auto-write) + (add-hook 'write-file-hooks 'TeX-safe-auto-write)) + (make-local-variable 'TeX-auto-update) + (setq TeX-auto-update 'BibTeX) + (make-local-variable 'TeX-auto-untabify) + (setq TeX-auto-untabify nil) + (make-local-variable 'TeX-auto-parse-length) + (setq TeX-auto-parse-length 999999) + (make-local-variable 'TeX-auto-regexp-list) + (setq TeX-auto-regexp-list BibTeX-auto-regexp-list)) + +(defvar BibTeX-auto-regexp-list + '(("@[Ss][Tt][Rr][Ii][Nn][Gg]" 1 ignore) + ("@[a-zA-Z]+[{(][ \t]*\\([a-zA-Z][^, \n\r\t%\"#'()={}]*\\)" + 1 LaTeX-auto-bibitem)) + "List of regexp-list expressions matching BibTeX items.") + +;;; Macro Argument Hooks + +(defun TeX-arg-conditional (optional expr then else) + "Implement if EXPR THEN ELSE. + +If EXPR evaluate to true, parse THEN as an argument list, else parse +ELSE as an argument list." + (TeX-parse-arguments (if (eval expr) then else))) + +(defun TeX-arg-free (optional &optional &rest args) + "Parse its arguments but use no braces when they are inserted." + (let ((< "") + (> "")) + (if (equal (length args) 1) + (TeX-parse-argument optional (car args)) + (TeX-parse-argument optional args)))) + +(defun TeX-arg-literal (optional &optional &rest args) + "Insert its arguments into the buffer. +Used for specifying extra syntax for a macro." + (apply 'insert args)) + +(defun TeX-arg-eval (optional &rest args) + "Evaluate args and insert value in buffer." + (TeX-argument-insert (eval args) optional)) + +(defun TeX-arg-label (optional &optional prompt definition) + "Prompt for a label completing with known labels." + (let ((label (completing-read (TeX-argument-prompt optional prompt "Key") + (LaTeX-label-list)))) + (if (and definition (not (string-equal "" label))) + (LaTeX-add-labels label)) + (TeX-argument-insert label optional optional))) + +(defun TeX-arg-macro (optional &optional prompt definition) + "Prompt for a TeX macro with completion." + (let ((macro (completing-read (TeX-argument-prompt optional prompt + (concat "Macro: " + TeX-esc) + t) + (TeX-symbol-list)))) + (if (and definition (not (string-equal "" macro))) + (TeX-add-symbols macro)) + (TeX-argument-insert macro optional TeX-esc))) + +(defun TeX-arg-environment (optional &optional prompt definition) + "Prompt for a LaTeX environment with completion." + (let ((environment (completing-read (TeX-argument-prompt optional prompt + "Environment") + (TeX-symbol-list)))) + (if (and definition (not (string-equal "" environment))) + (LaTeX-add-environments environment)) + + (TeX-argument-insert environment optional))) + +(defun TeX-arg-cite (optional &optional prompt definition) + "Prompt for a BibTeX citation with completion." + (setq prompt (concat (if optional "(Optional) " "") + (if prompt prompt "Add key") + ": (default none) ")) + (let ((items (multi-prompt "," t prompt (LaTeX-bibitem-list)))) + (apply 'LaTeX-add-bibitems items) + (TeX-argument-insert (mapconcat 'identity items ",") optional optional))) + +(defun TeX-arg-counter (optional &optional prompt definition) + "Prompt for a LaTeX counter." + ;; Completion not implemented yet. + (TeX-argument-insert + (read-string (TeX-argument-prompt optional prompt "Counter")) + optional)) + +(defun TeX-arg-savebox (optional &optional prompt definition) + "Prompt for a LaTeX savebox." + ;; Completion not implemented yet. + (TeX-argument-insert + (read-string (TeX-argument-prompt optional prompt + (concat "Savebox: " TeX-esc) + t)) + optional TeX-esc)) + +(defun TeX-arg-file (optional &optional prompt) + "Prompt for a filename in the current directory." + (TeX-argument-insert (read-file-name (TeX-argument-prompt optional + prompt "File") + "" "" nil) + optional)) + +(defun TeX-arg-define-label (optional &optional prompt) + "Prompt for a label completing with known labels." + (TeX-arg-label optional prompt t)) + +(defun TeX-arg-define-macro (optional &optional prompt) + "Prompt for a TeX macro with completion." + (TeX-arg-macro optional prompt t)) + +(defun TeX-arg-define-environment (optional &optional prompt) + "Prompt for a LaTeX environment with completion." + (TeX-arg-environment optional prompt t)) + +(defun TeX-arg-define-cite (optional &optional prompt) + "Prompt for a BibTeX citation." + (TeX-arg-cite optional prompt t)) + +(defun TeX-arg-define-counter (optional &optional prompt) + "Prompt for a LaTeX counter." + (TeX-arg-counter optional prompt t)) + +(defun TeX-arg-define-savebox (optional &optional prompt) + "Prompt for a LaTeX savebox." + (TeX-arg-savebox optional prompt t)) + +(defvar LaTeX-style-list '(("book") + ("article") + ("letter") + ("slides") + ("report")) + "*List of document styles.") + + (make-variable-buffer-local 'LaTeX-style-list) + +(defun TeX-arg-document (optional &optional ignore) + "Insert arguments to documentstyle and documentclass." + (let ((style (completing-read + (concat "Document style: (default " LaTeX-default-style ") ") + LaTeX-style-list)) + (options (read-string "Options: " + (if (stringp LaTeX-default-options) + LaTeX-default-options + (mapconcat 'identity + LaTeX-default-options + ","))))) + (if (zerop (length style)) + (setq style LaTeX-default-style)) + (if (not (zerop (length options))) + (insert LaTeX-optop options LaTeX-optcl)) + (insert TeX-grop style TeX-grcl)) + + ;; remove old information + (TeX-remove-style) + + ;; defined in individual style hooks + (TeX-update-style)) + +(defvar TeX-global-input-files nil + "*List of the non-local TeX input files. + +Initialized once at the first time you prompt for an input file. +May be reset with `C-u \\[TeX-normal-mode]'.") + +(defun TeX-arg-input-file (optionel &optional prompt local) + "Prompt for a tex or sty file. + +First optional argument is the promt, the second is a flag. +If the flag is set, only complete with local files." + (if (or TeX-global-input-files local) + () + (message "Searching for files...") + (setq TeX-global-input-files + (mapcar 'list (TeX-search-files (append TeX-macro-private + TeX-macro-global) + TeX-file-extensions t t)))) + (let ((file (if TeX-check-path + (completing-read + (TeX-argument-prompt optionel prompt "File") + (append (mapcar 'list + (TeX-search-files '(".") + TeX-file-extensions + t t)) + (if local + nil + TeX-global-input-files))) + (read-file-name + (TeX-argument-prompt optionel prompt "File"))))) + (if (null file) + (setq file "")) + (if (not (string-equal "" file)) + (TeX-run-style-hooks file)) + (TeX-argument-insert file optionel))) + +(defvar BibTeX-global-style-files nil + "*Association list of BibTeX style files. + +Initialized once at the first time you prompt for an input file. +May be reset with `C-u \\[TeX-normal-mode]'.") + +(defun TeX-arg-bibstyle (optional &optional prompt) + "Prompt for a BibTeX style file." + (message "Searching for BibTeX styles...") + (or BibTeX-global-style-files + (setq BibTeX-global-style-files + (mapcar 'list + (TeX-search-files (append TeX-macro-private + TeX-macro-global) + BibTeX-style-extensions t t)))) + + (TeX-argument-insert + (completing-read (TeX-argument-prompt optional prompt "BibTeX style") + (append (mapcar 'list + (TeX-search-files '(".") + BibTeX-style-extensions + t t)) + BibTeX-global-style-files)) + optional)) + +(defvar BibTeX-global-files nil + "*Association list of BibTeX files. + +Initialized once at the first time you prompt for an BibTeX file. +May be reset with `C-u \\[TeX-normal-mode]'.") + +(defun TeX-arg-bibliography (optional &optional prompt) + "Prompt for a BibTeX database file." + (message "Searching for BibTeX files...") + (or BibTeX-global-files + (setq BibTeX-global-files + (mapcar 'list (TeX-search-files nil BibTeX-file-extensions t t)))) + + (let ((styles (multi-prompt + "," t + (TeX-argument-prompt optional prompt "BibTeX files") + (append (mapcar 'list + (TeX-search-files '(".") + BibTeX-file-extensions + t t)) + BibTeX-global-files)))) + (apply 'LaTeX-add-bibliographies styles) + (TeX-argument-insert (mapconcat 'identity styles ",") optional))) + +(defun TeX-arg-corner (optional &optional prompt) + "Prompt for a LaTeX side or corner position with completion." + (TeX-argument-insert + (completing-read (TeX-argument-prompt optional prompt "Position") + '(("") ("l") ("r") ("t") ("b") ("tl") ("tr") ("bl") ("br")) + nil t) + optional)) + +(defun TeX-arg-lr (optional &optional prompt) + "Prompt for a LaTeX side with completion." + (TeX-argument-insert + (completing-read (TeX-argument-prompt optional prompt "Position") + '(("") ("l") ("r")) + nil t) + optional)) + +(defun TeX-arg-tb (optional &optional prompt) + "Prompt for a LaTeX side with completion." + (TeX-argument-insert + (completing-read (TeX-argument-prompt optional prompt "Position") + '(("") ("t") ("b")) + nil t) + optional)) + +(defun TeX-arg-pagestyle (optional &optional prompt) + "Prompt for a LaTeX pagestyle with completion." + (TeX-argument-insert + (completing-read (TeX-argument-prompt optional prompt "Pagestyle") + '(("plain") ("empty") ("headings") ("myheadings"))) + optional)) + +(defun TeX-arg-verb (optional &optional ignore) + "Prompt for delimiter and text." + (let ((del (read-quoted-char "Delimiter: ")) + (text (read-from-minibuffer "Text: "))) + (insert del text del))) + +(defun TeX-arg-pair (optional first second) + "Insert a pair of number, prompted by FIRST and SECOND. + +The numbers are surounded by parenthesizes and separated with a +comma." + (insert "(" (read-string (concat first ": ")) "," + (read-string (concat second ": ")) ")")) + +(defun TeX-arg-size (optional) + "Insert width and height as a pair." + (TeX-arg-pair optional "Width" "Height")) + +(defun TeX-arg-coordinate (optional) + "Insert x and y coordinate as a pair." + (TeX-arg-pair optional "X position" "Y position")) + +(defconst TeX-braces-default-association + '(("[" . "]") + ("\\{" . "\\}") + ("(" . ")") + ("|" . "|") + ("\\|" . "\\|") + ("/" . "/") + ("\\backslash" . "\\backslash") + ("\\lfloor" . "\\rfloor") + ("\\lceil" . "\\rceil") + ("\\langle" . "\\rangle"))) + +(defvar TeX-braces-user-association nil + "A list of your personal association of brace symbols for \\left and \\right + +The car of each entry is the brace used with \\left, +the cdr is the brace used with \\right.") + +(defvar TeX-braces-association + (append TeX-braces-user-association + TeX-braces-default-association) + "A list of association of brace symbols for \\left and \\right. +The car of each entry is the brace used with \\left, +the cdr is the brace used with \\right.") + +(defvar TeX-left-right-braces + '(("[") ("]") ("\\{") ("\\}") ("(") (")") ("|") ("\\|") + ("/") ("\\backslash") ("\\lfloor") ("\\rfloor") + ("\\lceil") ("\\rceil") ("\\langle") ("\\rangle") + ("\\uparrow") ("\\Uparrow") ("\\downarrow") ("\\Downarrow") + ("\\updownarrow") ("\\Updownarrow") (".")) + "List of symbols which can follow the \\left or \\right command") + +(defun TeX-arg-insert-braces (optional &optional prompt) + (save-excursion + (backward-word 1) + (backward-char) + (newline-and-indent) + (beginning-of-line 0) + (if (looking-at "^[ \t]*$") + (progn (delete-horizontal-space) + (delete-char 1)))) + (let ((left-brace (completing-read + (TeX-argument-prompt optional prompt "Which brace") + TeX-left-right-braces))) + (insert left-brace) + (newline-and-indent) + (save-excursion + (let ((right-brace (cdr (assoc left-brace + TeX-braces-association)))) + (newline) + (insert TeX-esc "right") + (if (and TeX-arg-right-insert-p + right-brace) + (insert right-brace) + (insert (completing-read + (TeX-argument-prompt optional prompt "Which brace") + TeX-left-right-braces))) + (LaTeX-indent-line))))) + +;;; Indentation + +(defvar LaTeX-indent-level 2 + "*Indentation of begin-end blocks in LaTeX.") + +(defvar LaTeX-item-indent (- LaTeX-indent-level) + "*Extra indentation for lines beginning with an item.") + +(defvar LaTeX-item-regexp "\\(bib\\)?item\\b" + "*Regular expression matching macros considered items.") + +(defun LaTeX-indent-line () + "Indent the line containing point, as LaTeX source. +Add LaTeX-indent-level indentation in each \\begin{ - \\end{ block. +Lines starting with an item is given an extra indentation of +LaTeX-item-indent." + (interactive) + (let ((indent (LaTeX-indent-calculate))) + (save-excursion + (if (/= (current-indentation) indent) + (let ((beg (progn + (beginning-of-line) + (point)))) + (back-to-indentation) + (delete-region beg (point)) + (indent-to indent)))) + (if (< (current-column) indent) + (back-to-indentation)))) + +(defun LaTeX-fill-region-as-paragraph (from to &optional justify-flag) + "Fill region as one paragraph: break lines to fit fill-column, +but leave all lines ending with \\\\ (plus its optional argument) alone. +Prefix arg means justify too. +From program, pass args FROM, TO and JUSTIFY-FLAG." + (interactive "*r\nP") + (or (assoc (LaTeX-current-environment) LaTeX-indent-environment-list) + (save-restriction + (narrow-to-region from to) + (goto-char from) + (while (not (eobp)) + (LaTeX-indent-line) + (forward-line)) + (goto-char from) + (while (not (eobp)) + (if + (re-search-forward (concat "^.*" + (regexp-quote TeX-esc) + (regexp-quote TeX-esc) + "\\(\\s-*\\*\\)?" + "\\(\\s-*\\[[^]]*\\]\\)?\\s-*$") + nil t) + (progn + (goto-char (match-end 0)) + (delete-horizontal-space) + ;; I doubt very much if we want justify - + ;; this is a line with \\ + ;; if you think otherwise - uncomment the next line + ;; (and justify-flag (justify-current-line)) + (forward-char) + ;; keep our position in a buffer + (save-excursion + (LaTeX-fill-region-as-para-do + from (match-beginning 0) justify-flag)) + (setq from (point))) + ;; ELSE part follows - loop termination relies on a fact + ;; that (LaTeX-fill-region-as-para-do) moves point past + ;; the filled region + (LaTeX-fill-region-as-para-do from to justify-flag))) + ;; the following four lines are clearly optional, but I like my + ;; LaTeX code that way + (goto-char (point-min)) + (while (search-forward "$$ " nil t) + (replace-match "$$\n" t t) + (LaTeX-indent-line))))) + +(defun LaTeX-fill-region-as-para-do (from to justify-flag) + "Fill region as one paragraph: break lines to fit fill-column." + (if (< from to) + (progn + ;; (save-restriction) here is likely not needed because + ;; it was done by a caller, but I am not sure - mj + (save-restriction + (goto-char from) + (skip-chars-forward " \n") + (LaTeX-indent-line) + (beginning-of-line) + (narrow-to-region (point) to) + (setq from (point)) + + ;; from is now before the text to fill, + ;; but after any fill prefix on the first line. + + ;; Make sure sentences ending at end of line get an extra space. + (if (or (not (boundp 'sentence-end-double-space)) + sentence-end-double-space) + (progn + (goto-char from) + (while (re-search-forward "[.?!][]})\"']*$" nil t) + (insert ? )))) + ;; The change all newlines to spaces. + (subst-char-in-region from (point-max) ?\n ?\ ) + ;; Flush excess spaces, except in the paragraph indentation. + (goto-char from) + (skip-chars-forward " \t") + (while (re-search-forward " *" nil t) + (delete-region + (+ (match-beginning 0) + (if (save-excursion + (skip-chars-backward " ]})\"'") + (memq (preceding-char) '(?. ?? ?!))) + 2 1)) + (match-end 0))) + (goto-char (point-max)) + (delete-horizontal-space) + (insert " ") + (goto-char (point-min)) + (let ((prefixcol 0)) + (while (not (eobp)) + (move-to-column (1+ fill-column)) + (if (eobp) + nil + (skip-chars-backward "^ \n") + (if (if (zerop prefixcol) + (bolp) + (>= prefixcol (current-column))) + (skip-chars-forward "^ \n") + (forward-char -1))) + (delete-horizontal-space) + (if (equal (preceding-char) ?\\) + (insert ? )) + (insert ?\n) + (LaTeX-indent-line) + (setq prefixcol (current-column)) + (and justify-flag (not (eobp)) + (progn + (forward-line -1) + (justify-current-line) + (forward-line 1))) + ) + (goto-char (point-max)) + (delete-horizontal-space)))))) + +(defun LaTeX-fill-paragraph (prefix) + "Fill and indent paragraph at or after point. +Prefix arg means justify as well." + (interactive "*P") + (save-excursion + (beginning-of-line) + (if (looking-at "[ \t]*%]") + (re-search-forward "^[ \t]*[^% \t\n]")) + (forward-paragraph) + (or (bolp) (newline 1)) + (and (eobp) (open-line 1)) + (let ((end (point-marker)) + (start (progn + (backward-paragraph) + (point)))) + (LaTeX-fill-region-as-paragraph start end prefix)))) + +(defun LaTeX-fill-region (from to &optional justify what) + "Fill and indent each of the paragraphs in the region as LaTeX text. +Prefix arg (non-nil third arg, if called from program) +means justify as well. Fourth arg WHAT is a word to be displayed when +formatting." + (interactive "*r\nP") + (save-restriction + (save-excursion + (let ((length (- to from)) + (to (set-marker (make-marker) to))) + (goto-char from) + (beginning-of-line) + (while (< (point) to) + (message "Formatting%s ... %d%%" + (if (not what) + "" + what) + (/ (* 100 (- (point) from)) length)) + (save-excursion (LaTeX-fill-paragraph justify)) + (forward-paragraph 2) + (if (not (eobp)) + (backward-paragraph))) + (set-marker to nil))) + (message "Finished"))) + +(defun LaTeX-find-matching-end () + "Move point to the \\end of the current environment" + (interactive) + (let ((regexp (concat (regexp-quote TeX-esc) "\\(begin\\|end\\)\\b")) + (level 1)) + (beginning-of-line 1) + (if (looking-at (concat " *" (regexp-quote TeX-esc) "begin\\b")) + (end-of-line 1)) + (while (and (> level 0) (re-search-forward regexp nil t)) + (if (= (char-after (1+ (match-beginning 0))) ?b);;begin + (setq level (1+ level)) + (setq level (1- level)))) + (if (= level 0) + (search-forward "}") + (error "Can't locate end of current environment")))) + +(defun LaTeX-find-matching-begin () + "Move point to the \\begin of the current environment" + (interactive) + (let ((regexp (concat (regexp-quote TeX-esc) "\\(begin\\|end\\)\\b")) + (level 1)) + (beginning-of-line 1) + (if (looking-at (concat " *" (regexp-quote TeX-esc) "begin\\b")) + (end-of-line 1)) + (while (and (> level 0) (re-search-backward regexp nil t)) + (if (= (char-after (1+ (match-beginning 0))) ?e);;end + (setq level (1+ level)) + (setq level (1- level)))) + (or (= level 0) + (error "Can't locate beginning of current environment")))) + +(defun LaTeX-mark-environment () + "Set mark to end of current environment and point to the matching begin +will not work properly if there are unbalanced begin-end pairs in +comments and verbatim environments" + (interactive) + (let ((cur (point))) + (LaTeX-find-matching-end) + (beginning-of-line 2) + (set-mark (point)) + (goto-char cur) + (LaTeX-find-matching-begin) + (TeX-activate-region))) + +(defun LaTeX-fill-environment (justify) + "Fill and indent current environment as LaTeX text." + (interactive "*P") + (save-excursion + (LaTeX-mark-environment) + (re-search-forward "{\\([^}]+\\)}") + (LaTeX-fill-region + (region-beginning) + (region-end) + justify + (concat " environment " (TeX-match-buffer 1))))) + +(defun LaTeX-fill-section (justify) + "Fill and indent current logical section as LaTeX text." + (interactive "*P") + (save-excursion + (LaTeX-mark-section) + (re-search-forward "{\\([^}]+\\)}") + (LaTeX-fill-region + (region-beginning) + (region-end) + justify + (concat " section " (TeX-match-buffer 1))))) + +(defun LaTeX-mark-section () + "Set mark at end of current logical section, and point at top." + (interactive) + (re-search-forward (concat "\\(" (LaTeX-outline-regexp) + "\\|\\'\\)")) + (re-search-backward "^") + (set-mark (point)) + (re-search-backward (concat "\\(" (LaTeX-outline-regexp) + "\\|\\`\\)")) + (TeX-activate-region)) + +(defun LaTeX-fill-buffer (justify) + "Fill and indent current buffer as LaTeX text." + (interactive "*P") + (save-excursion + (LaTeX-fill-region + (point-min) + (point-max) + justify + (concat " buffer " (buffer-name))))) + +(defvar LaTeX-indent-environment-list + '(("verbatim" current-indentation) + ("verbatim*" current-indentation) + ;; The following should have there own, smart indentation function. + ;; Some other day. + ("alltt") + ("array") + ("displaymath") + ("eqnarray") + ("eqnarray*") + ("equation") + ("equation*") + ("picture") + ("tabbing") + ("table") + ("table*") + ("tabular") + ("tabular*")) + "Alist of environments with special indentation. +The second element in each entry is the function to calculate the +indentation level in columns.") + +(defvar LaTeX-indent-environment-check t + "*If non-nil, check for any special environments.") + +(defvar LaTeX-left-comment-regexp "%%%" + "*Regexp matching comments that should be placed on the left margin.") + +(defvar LaTeX-right-comment-regexp "%[^%]" + "*Regexp matching comments that should be placed to the right margin.") + +(defvar LaTeX-ignore-comment-regexp nil + "*Regexp matching comments that whose indentation should not be touched.") + +(defun LaTeX-indent-calculate () + ;; Return the correct indentation of line of LaTeX source. (I hope...) + (save-excursion + (back-to-indentation) + (cond ((looking-at (concat (regexp-quote TeX-esc) + "\\(begin\\|end\\){verbatim\\*?}")) + ;; \end{verbatim} must be flush left, otherwise an unwanted + ;; empty line appears in LaTeX's output. + 0) + ((and LaTeX-left-comment-regexp + (looking-at LaTeX-left-comment-regexp)) + ;; Comments to the left margin. + 0) + ((and LaTeX-right-comment-regexp + (looking-at LaTeX-right-comment-regexp)) + ;; Comments to the right margin. + comment-column) + ((and LaTeX-ignore-comment-regexp + (looking-at LaTeX-ignore-comment-regexp)) + ;; Comments best left alone. + (current-indentation)) + ((and LaTeX-indent-environment-check + ;; Special environments. + (let ((entry (assoc (LaTeX-current-environment) + LaTeX-indent-environment-list))) + (and entry + (nth 1 entry) + (funcall (nth 1 entry)))))) + ((looking-at (concat (regexp-quote TeX-esc) "end\\b")) + ;; Backindent at \end. + (- (LaTeX-indent-calculate-last) LaTeX-indent-level)) + ((looking-at (concat (regexp-quote TeX-esc) "right\\b")) + ;; Backindent at \right. + (- (LaTeX-indent-calculate-last) LaTeX-left-right-indent-level)) + ((looking-at (concat (regexp-quote TeX-esc) LaTeX-item-regexp)) + ;; Items. + (+ (LaTeX-indent-calculate-last) LaTeX-item-indent)) + (t (LaTeX-indent-calculate-last))))) + +(defvar LaTeX-left-right-indent-level LaTeX-indent-level + "*The level of indentation produced by a \\left macro.") + +(defun LaTeX-indent-level-count () + ;; Count indentation change caused by all \left, \right, \begin, and + ;; \end commands in the current line. + (save-excursion + (save-restriction + (let ((count 0)) + (narrow-to-region (point) + (save-excursion + (re-search-forward (concat "[^" + (regexp-quote TeX-esc) + "]%\\|\n\\|\\'")) + (backward-char) + (point))) + (while (search-forward TeX-esc nil t) + (cond + ((looking-at "left\\b") + (setq count (+ count LaTeX-left-right-indent-level))) + ((looking-at "right\\b") + (setq count (- count LaTeX-left-right-indent-level))) + ((looking-at "begin\\b") + (setq count (+ count LaTeX-indent-level))) + ((looking-at "end\\b") + (setq count (- count LaTeX-indent-level))) + ((looking-at (regexp-quote TeX-esc)) + (forward-char 1)))) + count)))) + +(defun LaTeX-indent-calculate-last () + "Return the correct indentation of a normal line of text. +The point is supposed to be at the beginning of the current line." + (save-restriction + (widen) + (skip-chars-backward "\n\t ") + (move-to-column (current-indentation)) + + ;; Ignore comments. + (while (and (looking-at (regexp-quote comment-start)) (not (bobp))) + (skip-chars-backward "\n\t ") + (if (not (bobp)) + (move-to-column (current-indentation)))) + + (cond ((bobp) 0) + ((looking-at (concat (regexp-quote TeX-esc) "begin{document}")) + ;; I dislike having all of the document indented... + (current-indentation)) + ((looking-at (concat (regexp-quote TeX-esc) "begin *" + (regexp-quote TeX-grop) + "verbatim\\*?" + (regexp-quote TeX-grcl))) + 0) + ((looking-at (concat (regexp-quote TeX-esc) "end" + (regexp-quote TeX-grop) + "verbatim\\*?" + (regexp-quote TeX-grcl))) + ;; If I see an \end{verbatim} in the previous line I skip + ;; back to the preceding \begin{verbatim}. + (save-excursion + (if (re-search-backward (concat (regexp-quote TeX-esc) + "begin *" + (regexp-quote TeX-grop) + "verbatim\\*?" + (regexp-quote TeX-grcl)) 0 t) + (LaTeX-indent-calculate-last) + 0))) + (t (+ (current-indentation) + (TeX-brace-count-line) + (LaTeX-indent-level-count) + (cond ((looking-at (concat (regexp-quote TeX-esc) "end\\b")) + LaTeX-indent-level) + ((looking-at (concat (regexp-quote TeX-esc) "right\\b")) + LaTeX-left-right-indent-level) + ((looking-at (concat (regexp-quote TeX-esc) + LaTeX-item-regexp)) + (- LaTeX-item-indent)) + (t 0))))))) + +;;; Math Minor Mode + +(defvar LaTeX-math-list nil + "AList of your personal LaTeX math symbols. + +Each entry should be a list with three elements, KEY, VALUE, and MENU. +KEY is the key to be redefined (under `LaTeX-math-abbrev-prefix' in +math minor mode, VALUE can be a string with the name of the macro to +be inserted, or a function to be called. The optional third element is +the name of the submenu where the command should be added. + +See also `LaTeX-math-menu'.") + +(defconst LaTeX-math-default + '((?a "alpha" "greek") + (?b "beta" "greek") + (?c LaTeX-math-cal "Cal-whatever") + (?d "delta" "greek") + (?e "epsilon" "greek") + (?f "phi" "greek") + (?g "gamma" "greek") + (?h "eta" "greek") + (?k "kappa" "greek") + (?l "lambda" "greek") + (?m "mu" "greek") + (?N "nabla" "greek") + (?n "nu" "greek") + (?o "omega" "greek") + (?p "pi" "greek") + (?q "theta" "greek") + (?r "rho" "greek") + (?s "sigma" "greek") + (?t "tau" "greek") + (?u "upsilon" "greek") + (?x "chi" "greek") + (?y "psi" "greek") + (?z "zeta" "greek") + (?D "Delta" "Greek") + (?F "Phi" "Greek") + (?G "Gamma" "Greek") + (?Q "Theta" "Greek") + (?L "Lambda" "Greek") + (?Y "Psi" "Greek") + (?P "Pi" "Greek") + (?S "Sigma" "Greek") + (?U "Upsilon" "Greek") + (?O "Omega" "Greek") + (nil "pm" "Binary Op") + (nil "mp" "Binary Op") + (?* "times" "Binary Op") + (nil "div" "Binary Op") + (nil "ast" "Binary Op") + (nil "star" "Binary Op") + (nil "circ" "Binary Op") + (nil "bullet" "Binary Op") + (?. "cdot" "Binary Op") + (?- "cap" "Binary Op") + (?+ "cup" "Binary Op") + (nil "uplus" "Binary Op") + (nil "sqcap" "Binary Op") + (?| "vee" "Binary Op") + (?& "wedge" "Binary Op") + (?\\ "setminus" "Binary Op") + (nil "wr" "Binary Op") + (nil "diamond" "Binary Op") + (nil "bigtriangleup" "Binary Op") + (nil "bigtriangledown" "Binary Op") + (nil "triangleleft" "Binary Op") + (nil "triangleright" "Binary Op") + (nil "lhd" "Binary Op") + (nil "rhd" "Binary Op") + (nil "unlhd" "Binary Op") + (nil "unrhd" "Binary Op") + (nil "oplus" "Binary Op") + (nil "ominus" "Binary Op") + (nil "otimes" "Binary Op") + (nil "oslash" "Binary Op") + (nil "odot" "Binary Op") + (nil "bigcirc" "Binary Op") + (nil "dagger" "Binary Op") + (nil "ddagger" "Binary Op") + (nil "amalg" "Binary Op") + (?< "leq" "Relational") + (?> "geq" "Relational") + (nil "qed" "Relational") + (nil "equiv" "Relational") + (nil "models" "Relational") + (nil "prec" "Relational") + (nil "succ" "Relational") + (nil "sim" "Relational") + (nil "perp" "Relational") + (nil "preceq" "Relational") + (nil "succeq" "Relational") + (nil "simeq" "Relational") + (nil "mid" "Relational") + (nil "ll" "Relational") + (nil "gg" "Relational") + (nil "asymp" "Relational") + (nil "parallel" "Relational") + (?{ "subset" "Relational") + (?} "supset" "Relational") + (nil "approx" "Relational") + (nil "bowtie" "Relational") + (?\[ "subseteq" "Relational") + (?\] "supseteq" "Relational") + (nil "cong" "Relational") + (nil "Join" "Relational") + (nil "sqsubset" "Relational") + (nil "sqsupset" "Relational") + (nil "neq" "Relational") + (nil "smile" "Relational") + (nil "sqsubseteq" "Relational") + (nil "sqsupseteq" "Relational") + (nil "doteq" "Relational") + (nil "frown" "Relational") + (?i "in" "Relational") + (nil "ni" "Relational") + (nil "propto" "Relational") + (nil "vdash" "Relational") + (nil "dashv" "Relational") + (?\C-b "leftarrow" "Arrows") + (nil "Leftarrow" "Arrows") + (?\C-f "rightarrow" "Arrows") + (nil "Rightarrow" "Arrows") + (nil "leftrightarrow" "Arrows") + (nil "Leftrightarrow" "Arrows") + (nil "mapsto" "Arrows") + (nil "hookleftarrow" "Arrows") + (nil "leftharpoonup" "Arrows") + (nil "leftharpoondown" "Arrows") + (nil "longleftarrow" "Arrows") + (nil "Longleftarrow" "Arrows") + (nil "longrightarrow" "Arrows") + (nil "Longrightarrow" "Arrows") + (nil "longleftrightarrow" "Arrows") + (nil "Longleftrightarrow" "Arrows") + (nil "longmapsto" "Arrows") + (nil "hookrightarrow" "Arrows") + (nil "rightharpoonup" "Arrows") + (nil "rightharpoondown" "Arrows") + (?\C-p "uparrow" "Arrows") + (nil "Uparrow" "Arrows") + (?\C-n "downarrow" "Arrows") + (nil "Downarrow" "Arrows") + (nil "updownarrow" "Arrows") + (nil "Updownarrow" "Arrows") + (nil "nearrow" "Arrows") + (nil "searrow" "Arrows") + (nil "swarrow" "Arrows") + (nil "nwarrow" "Arrows") + (nil "ldots" "Misc Symbol") + (nil "cdots" "Misc Symbol") + (nil "vdots" "Misc Symbol") + (nil "ddots" "Misc Symbol") + (nil "aleph" "Misc Symbol") + (nil "prime" "Misc Symbol") + (?A "forall" "Misc Symbol") + (?I "infty" "Misc Symbol") + (nil "hbar" "Misc Symbol") + (?0 "emptyset" "Misc Symbol") + (?E "exists" "Misc Symbol") + (nil "nabla" "Misc Symbol") + (nil "surd" "Misc Symbol") + (nil "Box" "Misc Symbol") + (nil "triangle" "Misc Symbol") + (nil "Diamond" "Misc Symbol") + (nil "imath" "Misc Symbol") + (nil "jmath" "Misc Symbol") + (nil "ell" "Misc Symbol") + (nil "neg" "Misc Symbol") + (?/ "not" "Misc Symbol") + (nil "top" "Misc Symbol") + (nil "flat" "Misc Symbol") + (nil "natural" "Misc Symbol") + (nil "sharp" "Misc Symbol") + (nil "wp" "Misc Symbol") + (nil "bot" "Misc Symbol") + (nil "clubsuit" "Misc Symbol") + (nil "diamondsuit" "Misc Symbol") + (nil "heartsuit" "Misc Symbol") + (nil "spadesuit" "Misc Symbol") + (nil "mho" "Misc Symbol") + (nil "Re" "Misc Symbol") + (nil "Im" "Misc Symbol") + (nil "angle" "Misc Symbol") + (nil "partial" "Misc Symbol") + (nil "sum" "Var Symbol") + (nil "prod" "Var Symbol") + (nil "coprod" "Var Symbol") + (nil "int" "Var Symbol") + (nil "oint" "Var Symbol") + (nil "bigcap" "Var Symbol") + (nil "bigcup" "Var Symbol") + (nil "bigsqcup" "Var Symbol") + (nil "bigvee" "Var Symbol") + (nil "bigwedge" "Var Symbol") + (nil "bigodot" "Var Symbol") + (nil "bigotimes" "Var Symbol") + (nil "bigoplus" "Var Symbol") + (nil "biguplus" "Var Symbol") + (nil "arccos" "Log-like") + (nil "arcsin" "Log-like") + (nil "arctan" "Log-like") + (nil "arg" "Log-like") + (?\C-c "cos" "Log-like") + (nil "cosh" "Log-like") + (nil "cot" "Log-like") + (nil "coth" "Log-like") + (nil "csc" "Log-like") + (nil "deg" "Log-like") + (?\C-d "det" "Log-like") + (nil "dim" "Log-like") + (?\C-e "exp" "Log-like") + (nil "gcd" "Log-like") + (nil "hom" "Log-like") + (?\C-_ "inf" "Log-like") + (nil "ker" "Log-like") + (nil "lg" "Log-like") + (?\C-l "lim" "Log-like") + (nil "liminf" "Log-like") + (nil "limsup" "Log-like") + (nil "ln" "Log-like") + (nil "log" "Log-like") + (nil "max" "Log-like") + (nil "min" "Log-like") + (nil "Pr" "Log-like") + (nil "sec" "Log-like") + (?\C-s "sin" "Log-like") + (nil "sinh" "Log-like") + (?\C-^ "sup" "Log-like") + (?\C-t "tan" "Log-like") + (nil "tanh" "Log-like") + (nil "uparrow" "delimiters") + (nil "Uparrow" "delimiters") + (nil "downarrow" "delimiters") + (nil "Downarrow" "delimiters") + (nil "{" "delimiters") + (nil "}" "delimiters") + (nil "updownarrow" "delimiters") + (nil "Updownarrow" "delimiters") + (nil "lfloor" "delimiters") + (nil "rfloor" "delimiters") + (nil "lceil" "delimiters") + (nil "rceil" "delimiters") + (?\( "langle" "delimiters") + (?\) "rangle" "delimiters") + (nil "backslash" "delimiters") + (nil "|" "delimiters") + (nil "rmoustache" "Delimiters") + (nil "lmoustache" "Delimiters") + (nil "rgroup" "Delimiters") + (nil "lgroup" "Delimiters") + (nil "arrowvert" "Delimiters") + (nil "Arrowvert" "Delimiters") + (nil "bracevert" "Delimiters") + (nil "widetilde" "Constructs") + (nil "widehat" "Constructs") + (nil "overleftarrow" "Constructs") + (nil "overrightarrow" "Constructs") + (nil "overline" "Constructs") + (nil "underline" "Constructs") + (nil "overbrace" "Constructs") + (nil "underbrace" "Constructs") + (nil "sqrt" "Constructs") + (nil "frac" "Constructs") + (?^ "hat" "Accents") + (nil "acute" "Accents") + (nil "bar" "Accents") + (nil "dot" "Accents") + (nil "breve" "Accents") + (nil "check" "Accents") + (nil "grave" "Accents") + (nil "vec" "Accents") + (nil "ddot" "Accents") + (?~ "tilde" "Accents") + (nil "ulcorner" ("AMS" "Hebrew")) + (nil "urcorner" ("AMS" "Hebrew")) + (nil "llcorner" ("AMS" "Hebrew")) + (nil "lrcorner" ("AMS" "Hebrew")) + (nil "dashrightarrow" ("AMS" "Arrows")) + (nil "dashleftarrow" ("AMS" "Arrows")) + (nil "leftleftarrows" ("AMS" "Arrows")) + (nil "leftrightarrows" ("AMS" "Arrows")) + (nil "Lleftarrow" ("AMS" "Arrows")) + (nil "twoheadleftarrow" ("AMS" "Arrows")) + (nil "leftarrowtail" ("AMS" "Arrows")) + (nil "looparrowleft" ("AMS" "Arrows")) + (nil "leftrightharpoons" ("AMS" "Arrows")) + (nil "curvearrowleft" ("AMS" "Arrows")) + (nil "circlearrowleft" ("AMS" "Arrows")) + (nil "Lsh" ("AMS" "Arrows")) + (nil "upuparrows" ("AMS" "Arrows")) + (nil "upharpoonleft" ("AMS" "Arrows")) + (nil "downharpoonleft" ("AMS" "Arrows")) + (nil "multimap" ("AMS" "Arrows")) + (nil "leftrightsquigarrow" ("AMS" "Arrows")) + (nil "looparrowright" ("AMS" "Arrows")) + (nil "rightleftharpoons" ("AMS" "Arrows")) + (nil "curvearrowright" ("AMS" "Arrows")) + (nil "circlearrowright" ("AMS" "Arrows")) + (nil "Rsh" ("AMS" "Arrows")) + (nil "downdownarrows" ("AMS" "Arrows")) + (nil "upharpoonright" ("AMS" "Arrows")) + (nil "downharpoonright" ("AMS" "Arrows")) + (nil "rightsquigarrow" ("AMS" "Arrows")) + (nil "nleftarrow" ("AMS" "Neg Arrows")) + (nil "nrightarrow" ("AMS" "Neg Arrows")) + (nil "nLeftarrow" ("AMS" "Neg Arrows")) + (nil "nRightarrow" ("AMS" "Neg Arrows")) + (nil "nleftrightarrow" ("AMS" "Neg Arrows")) + (nil "nLeftrightarrow" ("AMS" "Neg Arrows")) + (nil "leqq" ("AMS" "Relational I")) + (nil "leqslant" ("AMS" "Relational I")) + (nil "eqslantless" ("AMS" "Relational I")) + (nil "lesssim" ("AMS" "Relational I")) + (nil "lessapprox" ("AMS" "Relational I")) + (nil "approxeq" ("AMS" "Relational I")) + (nil "lessdot" ("AMS" "Relational I")) + (nil "lll" ("AMS" "Relational I")) + (nil "lessgtr" ("AMS" "Relational I")) + (nil "lesseqgtr" ("AMS" "Relational I")) + (nil "lesseqqgtr" ("AMS" "Relational I")) + (nil "doteqdot" ("AMS" "Relational I")) + (nil "risingdotseq" ("AMS" "Relational I")) + (nil "fallingdotseq" ("AMS" "Relational I")) + (nil "backsim" ("AMS" "Relational I")) + (nil "backsimeq" ("AMS" "Relational I")) + (nil "subseteqq" ("AMS" "Relational I")) + (nil "Subset" ("AMS" "Relational I")) + (nil "sqsubset" ("AMS" "Relational I")) + (nil "preccurlyeq" ("AMS" "Relational I")) + (nil "curlyeqprec" ("AMS" "Relational I")) + (nil "precsim" ("AMS" "Relational I")) + (nil "precapprox" ("AMS" "Relational I")) + (nil "vartriangleleft" ("AMS" "Relational I")) + (nil "trianglelefteq" ("AMS" "Relational I")) + (nil "vDash" ("AMS" "Relational I")) + (nil "Vvdash" ("AMS" "Relational I")) + (nil "smallsmile" ("AMS" "Relational I")) + (nil "smallfrown" ("AMS" "Relational I")) + (nil "bumpeq" ("AMS" "Relational I")) + (nil "Bumpeq" ("AMS" "Relational I")) + (nil "geqq" ("AMS" "Relational II")) + (nil "geqslant" ("AMS" "Relational II")) + (nil "eqslantgtr" ("AMS" "Relational II")) + (nil "gtrsim" ("AMS" "Relational II")) + (nil "gtrapprox" ("AMS" "Relational II")) + (nil "gtrdot" ("AMS" "Relational II")) + (nil "ggg" ("AMS" "Relational II")) + (nil "gtrless" ("AMS" "Relational II")) + (nil "gtreqless" ("AMS" "Relational II")) + (nil "gtreqqless" ("AMS" "Relational II")) + (nil "eqcirc" ("AMS" "Relational II")) + (nil "circeq" ("AMS" "Relational II")) + (nil "triangleq" ("AMS" "Relational II")) + (nil "thicksim" ("AMS" "Relational II")) + (nil "thickapprox" ("AMS" "Relational II")) + (nil "supseteqq" ("AMS" "Relational II")) + (nil "Supset" ("AMS" "Relational II")) + (nil "sqsupset" ("AMS" "Relational II")) + (nil "succcurlyeq" ("AMS" "Relational II")) + (nil "curlyeqsucc" ("AMS" "Relational II")) + (nil "succsim" ("AMS" "Relational II")) + (nil "succapprox" ("AMS" "Relational II")) + (nil "vartriangleright" ("AMS" "Relational II")) + (nil "trianglerighteq" ("AMS" "Relational II")) + (nil "Vdash" ("AMS" "Relational II")) + (nil "shortmid" ("AMS" "Relational II")) + (nil "shortparallel" ("AMS" "Relational II")) + (nil "between" ("AMS" "Relational II")) + (nil "pitchfork" ("AMS" "Relational II")) + (nil "varpropto" ("AMS" "Relational II")) + (nil "blacktriangleleft" ("AMS" "Relational II")) + (nil "therefore" ("AMS" "Relational II")) + (nil "backepsilon" ("AMS" "Relational II")) + (nil "blacktriangleright" ("AMS" "Relational II")) + (nil "because" ("AMS" "Relational II")) + (nil "nless" ("AMS" "Neg Rel I")) + (nil "nleq" ("AMS" "Neg Rel I")) + (nil "nleqslant" ("AMS" "Neg Rel I")) + (nil "nleqq" ("AMS" "Neg Rel I")) + (nil "lneq" ("AMS" "Neg Rel I")) + (nil "lneqq" ("AMS" "Neg Rel I")) + (nil "lvertneqq" ("AMS" "Neg Rel I")) + (nil "lnsim" ("AMS" "Neg Rel I")) + (nil "lnapprox" ("AMS" "Neg Rel I")) + (nil "nprec" ("AMS" "Neg Rel I")) + (nil "npreceq" ("AMS" "Neg Rel I")) + (nil "precnsim" ("AMS" "Neg Rel I")) + (nil "precnapprox" ("AMS" "Neg Rel I")) + (nil "nsim" ("AMS" "Neg Rel I")) + (nil "nshortmid" ("AMS" "Neg Rel I")) + (nil "nmid" ("AMS" "Neg Rel I")) + (nil "nvdash" ("AMS" "Neg Rel I")) + (nil "nvDash" ("AMS" "Neg Rel I")) + (nil "ntriangleleft" ("AMS" "Neg Rel I")) + (nil "ntrianglelefteq" ("AMS" "Neg Rel I")) + (nil "nsubseteq" ("AMS" "Neg Rel I")) + (nil "subsetneq" ("AMS" "Neg Rel I")) + (nil "varsubsetneq" ("AMS" "Neg Rel I")) + (nil "subsetneqq" ("AMS" "Neg Rel I")) + (nil "varsubsetneqq" ("AMS" "Neg Rel I")) + (nil "ngtr" ("AMS" "Neg Rel II")) + (nil "ngeq" ("AMS" "Neg Rel II")) + (nil "ngeqslant" ("AMS" "Neg Rel II")) + (nil "ngeqq" ("AMS" "Neg Rel II")) + (nil "gneq" ("AMS" "Neg Rel II")) + (nil "gneqq" ("AMS" "Neg Rel II")) + (nil "gvertneqq" ("AMS" "Neg Rel II")) + (nil "gnsim" ("AMS" "Neg Rel II")) + (nil "gnapprox" ("AMS" "Neg Rel II")) + (nil "nsucc" ("AMS" "Neg Rel II")) + (nil "nsucceq" ("AMS" "Neg Rel II")) + (nil "succnsim" ("AMS" "Neg Rel II")) + (nil "succnapprox" ("AMS" "Neg Rel II")) + (nil "ncong" ("AMS" "Neg Rel II")) + (nil "nshortparallel" ("AMS" "Neg Rel II")) + (nil "nparallel" ("AMS" "Neg Rel II")) + (nil "nvDash" ("AMS" "Neg Rel II")) + (nil "nVDash" ("AMS" "Neg Rel II")) + (nil "ntriangleright" ("AMS" "Neg Rel II")) + (nil "ntrianglerighteq" ("AMS" "Neg Rel II")) + (nil "nsupseteq" ("AMS" "Neg Rel II")) + (nil "nsupseteqq" ("AMS" "Neg Rel II")) + (nil "supsetneq" ("AMS" "Neg Rel II")) + (nil "varsupsetneq" ("AMS" "Neg Rel II")) + (nil "supsetneqq" ("AMS" "Neg Rel II")) + (nil "varsupsetneqq" ("AMS" "Neg Rel II")) + (nil "dotplus" ("AMS" "Binary Op")) + (nil "smallsetminus" ("AMS" "Binary Op")) + (nil "Cap" ("AMS" "Binary Op")) + (nil "Cup" ("AMS" "Binary Op")) + (nil "barwedge" ("AMS" "Binary Op")) + (nil "veebar" ("AMS" "Binary Op")) + (nil "doublebarwedge" ("AMS" "Binary Op")) + (nil "boxminus" ("AMS" "Binary Op")) + (nil "boxtimes" ("AMS" "Binary Op")) + (nil "boxdot" ("AMS" "Binary Op")) + (nil "boxplus" ("AMS" "Binary Op")) + (nil "divideontimes" ("AMS" "Binary Op")) + (nil "ltimes" ("AMS" "Binary Op")) + (nil "rtimes" ("AMS" "Binary Op")) + (nil "leftthreetimes" ("AMS" "Binary Op")) + (nil "rightthreetimes" ("AMS" "Binary Op")) + (nil "curlywedge" ("AMS" "Binary Op")) + (nil "curlyvee" ("AMS" "Binary Op")) + (nil "circleddash" ("AMS" "Binary Op")) + (nil "circledast" ("AMS" "Binary Op")) + (nil "circledcirc" ("AMS" "Binary Op")) + (nil "centerdot" ("AMS" "Binary Op")) + (nil "intercal" ("AMS" "Binary Op")) + (nil "hbar" ("AMS" "Misc")) + (nil "hslash" ("AMS" "Misc")) + (nil "vartriangle" ("AMS" "Misc")) + (nil "triangledown" ("AMS" "Misc")) + (nil "square" ("AMS" "Misc")) + (nil "lozenge" ("AMS" "Misc")) + (nil "circledS" ("AMS" "Misc")) + (nil "angle" ("AMS" "Misc")) + (nil "measuredangle" ("AMS" "Misc")) + (nil "nexists" ("AMS" "Misc")) + (nil "mho" ("AMS" "Misc")) + (nil "Finv" ("AMS" "Misc")) + (nil "Game" ("AMS" "Misc")) + (nil "Bbbk" ("AMS" "Misc")) + (nil "backprime" ("AMS" "Misc")) + (nil "varnothing" ("AMS" "Misc")) + (nil "blacktriangle" ("AMS" "Misc")) + (nil "blacktriangledown" ("AMS" "Misc")) + (nil "blacksquare" ("AMS" "Misc")) + (nil "blacklozenge" ("AMS" "Misc")) + (nil "bigstar" ("AMS" "Misc")) + (nil "sphericalangle" ("AMS" "Misc")) + (nil "complement" ("AMS" "Misc")) + (nil "eth" ("AMS" "Misc")) + (nil "diagup" ("AMS" "Misc")) + (nil "diagdown" ("AMS" "Misc")) + (nil "Hat" ("AMS" "Accents")) + (nil "Check" ("AMS" "Accents")) + (nil "Tilde" ("AMS" "Accents")) + (nil "Acute" ("AMS" "Accents")) + (nil "Grave" ("AMS" "Accents")) + (nil "Dot" ("AMS" "Accents")) + (nil "Ddot" ("AMS" "Accents")) + (nil "Breve" ("AMS" "Accents")) + (nil "Bar" ("AMS" "Accents")) + (nil "Vec" ("AMS" "Accents")) + (nil "dddot" ("AMS" "Accents")) + (nil "ddddot" ("AMS" "Accents")) + (nil "bigl" ("AMS" "Delimiters")) + (nil "bigr" ("AMS" "Delimiters")) + (nil "Bigl" ("AMS" "Delimiters")) + (nil "Bigr" ("AMS" "Delimiters")) + (nil "biggl" ("AMS" "Delimiters")) + (nil "biggr" ("AMS" "Delimiters")) + (nil "Biggl" ("AMS" "Delimiters")) + (nil "Biggr" ("AMS" "Delimiters")) + (nil "lvert" ("AMS" "Delimiters")) + (nil "rvert" ("AMS" "Delimiters")) + (nil "lVert" ("AMS" "Delimiters")) + (nil "rVert" ("AMS" "Delimiters")) + (nil "nobreakdash" ("AMS" "Special")) + (nil "leftroot" ("AMS" "Special")) + (nil "uproot" ("AMS" "Special")) + (nil "accentedsymbol" ("AMS" "Special")) + (nil "xleftarrow" ("AMS" "Special")) + (nil "xrightarrow" ("AMS" "Special")) + (nil "overset" ("AMS" "Special")) + (nil "underset" ("AMS" "Special")) + (nil "dfrac" ("AMS" "Special")) + (nil "genfrac" ("AMS" "Special")) + (nil "tfrac" ("AMS" "Special")) + (nil "binom" ("AMS" "Special")) + (nil "dbinom" ("AMS" "Special")) + (nil "tbinom" ("AMS" "Special")) + (nil "smash" ("AMS" "Special")) + (nil "eucal" ("AMS" "Special")) + (nil "boldsymbol" ("AMS" "Special")) + (nil "text" ("AMS" "Special")) + (nil "intertext" ("AMS" "Special")) + (nil "substack" ("AMS" "Special")) + (nil "subarray" ("AMS" "Special")) + (nil "sideset" ("AMS" "Special")))) + +(defvar LaTeX-math-abbrev-prefix "`" + "Prefix key for use in LaTeX-math-mode.") + +(defvar LaTeX-math-keymap (make-sparse-keymap) + "Keymap used for LaTeX-math-mode commands.") + +(defvar LaTeX-math-menu + '("Math" + ("Greek") ("greek") ("Binary Op") ("Relational") ("Arrows") + ("Misc Symbol") ("Var Symbol") ("Log-like") ("delimiters") + ("Delimiters") ("Constructs") ("Accents") ("AMS")) + "Menu containing LaTeX math commands. +The menu entries will be generated dynamically, but you can specify +the sequence by initializing this variable.") + +(define-key LaTeX-math-keymap + (concat LaTeX-math-abbrev-prefix LaTeX-math-abbrev-prefix) + 'LaTeX-math-insert-prefix) + +(let ((math (reverse (append LaTeX-math-list LaTeX-math-default))) + (map (lookup-key LaTeX-math-keymap LaTeX-math-abbrev-prefix))) + (while math + (let* ((entry (car math)) + (key (nth 0 entry)) + value menu name) + (setq math (cdr math)) + (if (listp (cdr entry)) + (setq value (nth 1 entry) + menu (nth 2 entry)) + (setq value (cdr entry) + menu nil)) + (if (stringp value) + (progn + (setq name (intern (concat "LaTeX-math-" value))) + (fset name (list 'lambda (list 'arg) (list 'interactive "*P") + (list 'LaTeX-math-insert value 'arg)))) + (setq name value)) + (if key + (progn + (setq key (if (numberp key) (char-to-string key) (vector key))) + (define-key map key name))) + (if menu + (let ((parent LaTeX-math-menu)) + (if (listp menu) + (progn + (while (cdr menu) + (let ((sub (assoc (car menu) LaTeX-math-menu))) + (if sub + (setq parent sub) + (setcdr parent (cons (list (car menu)) (cdr parent)))) + (setq menu (cdr menu)))) + (setq menu (car menu)))) + (let ((sub (assoc menu parent))) + (if sub + (if (stringp value) + (setcdr sub (cons (vector value name t) (cdr sub))) + (error "Cannot have multiple special math menu items")) + (setcdr parent + (cons (if (stringp value) + (list menu (vector value name t)) + (vector menu name t)) + (cdr parent)))))))))) + +(easy-menu-define LaTeX-math-mode-menu + LaTeX-math-keymap + "Menu used in math minor mode." + LaTeX-math-menu) + +(defvar LaTeX-math-mode nil + "Is LaTeX-math-mode on or off? non nil means on.") + + (make-variable-buffer-local 'LaTeX-math-mode) + +(or (assoc 'LaTeX-math-mode minor-mode-alist) + (setq minor-mode-alist (cons '(LaTeX-math-mode " Math") minor-mode-alist))) + +(or (assoc 'LaTeX-math-mode minor-mode-map-alist) + (setq minor-mode-map-alist + (cons (cons 'LaTeX-math-mode LaTeX-math-keymap) + minor-mode-map-alist))) + +(defun LaTeX-math-mode (&optional arg) + "A minor mode with easy acces to TeX math macros. + +Easy insertion of LaTeX math symbols. If you give a prefix argument, +the symbols will be surrounded by dollar signs. The following +commands are defined: + +\\{LaTeX-math-keymap}" + (interactive "P") + (setq LaTeX-math-mode + (not (or (and (null arg) LaTeX-math-mode) + (<= (prefix-numeric-value arg) 0)))) + (if LaTeX-math-mode + (easy-menu-add LaTeX-math-mode-menu LaTeX-math-keymap) + (easy-menu-remove LaTeX-math-mode-menu)) + (set-buffer-modified-p (buffer-modified-p))) + +(fset 'latex-math-mode 'LaTeX-math-mode) + +(defun LaTeX-math-insert-prefix () + "Insert the value of `LaTeX-math-abbrev-prefix'." + (interactive "*") + (let (LaTeX-math-mode) + (call-interactively (key-binding LaTeX-math-abbrev-prefix)))) + +(defun LaTeX-math-insert (string dollar) + ;; Inserts \STRING{}. If DOLLAR is non-nil, put $'s around it. + (if dollar (insert "$")) + (TeX-insert-macro string) + (if dollar (insert "$"))) + +(defun LaTeX-math-cal (char dollar) + "Inserts a {\\cal CHAR}. If DOLLAR is non-nil, put $'s around it." + (interactive "*c\nP") + (if dollar (insert "$")) + (if (member "latex2e" (TeX-style-list)) + (insert "\\mathcal{" (char-to-string char) "}") + (insert "{\\cal " (char-to-string char) "}")) + (if dollar (insert "$"))) + +(provide 'latex) + +;;; Keymap + +(defvar LaTeX-mode-map + (let ((map (copy-keymap TeX-mode-map))) + + ;; Standard + (define-key map "\n" 'reindent-then-newline-and-indent) + + ;; From latex.el + (define-key map "\t" 'LaTeX-indent-line) + (define-key map "\eq" 'LaTeX-fill-paragraph) ;*** Alias + ;; This key is now used by Emacs for face settings. + ;; (define-key map "\eg" 'LaTeX-fill-region) ;*** Alias + (define-key map "\e\C-e" 'LaTeX-find-matching-end) + (define-key map "\e\C-a" 'LaTeX-find-matching-begin) + + (define-key map "\C-c\C-q\C-p" 'LaTeX-fill-paragraph) + (define-key map "\C-c\C-q\C-r" 'LaTeX-fill-region) + (define-key map "\C-c\C-q\C-s" 'LaTeX-fill-section) + (define-key map "\C-c\C-q\C-e" 'LaTeX-fill-environment) + + (define-key map "\C-c." 'LaTeX-mark-environment) ;*** Dubious + (define-key map "\C-c*" 'LaTeX-mark-section) ;*** Dubious + + (define-key map "\C-c\C-e" 'LaTeX-environment) + (define-key map "\C-c\n" 'LaTeX-insert-item) + (or (key-binding "\e\r") + (define-key map "\e\r" 'LaTeX-insert-item)) ;*** Alias + (define-key map "\C-c]" 'LaTeX-close-environment) + (define-key map "\C-c\C-s" 'LaTeX-section) + + ;; Outline commands... + ;; We want to use the right prefix, if possible. + (let ((outline (cond ((not (boundp 'outline-minor-mode-prefix)) + (lookup-key map "\C-c")) + ((keymapp (lookup-key map outline-minor-mode-prefix)) + (lookup-key map outline-minor-mode-prefix)) + (t + (define-key map + outline-minor-mode-prefix (make-sparse-keymap)) + (lookup-key map outline-minor-mode-prefix))))) + (define-key outline "\C-z" 'LaTeX-hide-environment) + (define-key outline "\C-x" 'LaTeX-show-environment)) + + (define-key map "\C-c~" 'LaTeX-math-mode) ;*** Dubious + + map) + "Keymap used in LaTeX-mode.") + +(defvar LaTeX-environment-menu-name "Insert Environment (C-c C-e)") + +(defun LaTeX-environment-menu-entry (entry) + ;; Create an entry for the environment menu. + (vector (car entry) (list 'LaTeX-environment-menu (car entry)) t)) + +(defvar LaTeX-environment-modify-menu-name "Change Environment (C-u C-c C-e)") + +(defun LaTeX-environment-modify-menu-entry (entry) + ;; Create an entry for the change environment menu. + (vector (car entry) (list 'LaTeX-modify-environment (car entry)) t)) + +(defun LaTeX-section-enable-symbol (LEVEL) + ;; Symbol used to enable section LEVEL in the menu bar. + (intern (concat "LaTeX-section-" (int-to-string (nth 1 entry)) "-enable"))) + +(defun LaTeX-section-enable (entry) + ;; Enable or disable section ENTRY from LaTeX-section-list. + (let ((level (nth 1 entry))) + (set (LaTeX-section-enable-symbol level) + (>= level LaTeX-largest-level)))) + +(defun LaTeX-section-menu (level) + ;; Insert section from menu. + (let ((LaTeX-section-hook (delq 'LaTeX-section-heading + (copy-sequence LaTeX-section-hook)))) + (LaTeX-section level))) + +(defun LaTeX-section-menu-entry (entry) + ;; Create an entry for the section menu. + (let ((enable (LaTeX-section-enable-symbol (nth 1 entry)))) + (set enable t) + (vector (car entry) (list 'LaTeX-section-menu (nth 1 entry)) enable))) + +(defun LaTeX-section-menu-create () + ;; Create a menu over LaTeX sections. + (append '("Section (C-c C-s)") + (mapcar 'LaTeX-section-menu-entry LaTeX-section-list))) + +(defvar LaTeX-menu-changed nil) +;; Need to update LaTeX menu. +(make-variable-buffer-local 'LaTeX-menu-changed) + +(defun LaTeX-menu-update () + ;; Update entries on AUC TeX menu. + (or (not (eq major-mode 'latex-mode)) + (null LaTeX-menu-changed) + (not (fboundp 'easy-menu-change)) + (progn + (TeX-update-style) + (setq LaTeX-menu-changed nil) + (message "Updating section menu...") + (mapcar 'LaTeX-section-enable LaTeX-section-list) + (message "Updating environment menu...") + (easy-menu-change '("LaTeX") LaTeX-environment-menu-name + (mapcar 'LaTeX-environment-menu-entry + (LaTeX-environment-list))) + (message "Updating modify environment menu...") + (easy-menu-change '("LaTeX") LaTeX-environment-modify-menu-name + (mapcar 'LaTeX-environment-modify-menu-entry + (LaTeX-environment-list))) + (message "Updating...done")))) + +(add-hook 'activate-menubar-hook 'LaTeX-menu-update) + +(easy-menu-define LaTeX-mode-menu + LaTeX-mode-map + "Menu used in LaTeX mode." + (list "LaTeX" + (list LaTeX-environment-menu-name "Bug.") + (list LaTeX-environment-modify-menu-name "Bug.") + (LaTeX-section-menu-create) + ["Macro..." TeX-insert-macro t] + ["Complete" TeX-complete-symbol t] + ["Item" LaTeX-insert-item t] + (list "Insert Font" + ["Emphasize" (TeX-font nil ?\C-e) :keys "C-c C-f C-e"] + ["Bold" (TeX-font nil ?\C-b) :keys "C-c C-f C-b"] + ["Typewriter" (TeX-font nil ?\C-t) :keys "C-c C-f C-t"] + ["Small Caps" (TeX-font nil ?\C-c) :keys "C-c C-f C-c"] + ["Sans Serif" (TeX-font nil ?\C-f) :keys "C-c C-f C-f"] + ["Italic" (TeX-font nil ?\C-i) :keys "C-c C-f C-i"] + ["Slanted" (TeX-font nil ?\C-s) :keys "C-c C-f C-s"] + ["Roman" (TeX-font nil ?\C-r) :keys "C-c C-f C-r"]) + (list "Change Font" + ["Emphasize" (TeX-font t ?\C-e) :keys "C-u C-c C-f C-e"] + ["Bold" (TeX-font t ?\C-b) :keys "C-u C-c C-f C-b"] + ["Typewriter" (TeX-font t ?\C-t) :keys "C-u C-c C-f C-t"] + ["Small Caps" (TeX-font t ?\C-c) :keys "C-u C-c C-f C-c"] + ["Sans Serif" (TeX-font t ?\C-f) :keys "C-u C-c C-f C-f"] + ["Italic" (TeX-font t ?\C-i) :keys "C-u C-c C-f C-i"] + ["Slanted" (TeX-font t ?\C-s) :keys "C-u C-c C-f C-s"] + ["Roman" (TeX-font t ?\C-r) :keys "C-u C-c C-f C-r"]) + ["Delete Font" (TeX-font t ?\C-d) :keys "C-c C-f C-d"] + "-" + ["Next Error" TeX-next-error t] + (list "TeX Output" + ["Kill Job" TeX-kill-job t] + ["Debug Bad Boxes" TeX-toggle-debug-boxes + :style toggle :selected TeX-debug-bad-boxes ] + ["Switch to Original File" TeX-home-buffer t] + ["Recenter Output Buffer" TeX-recenter-output-buffer t]) + (list "Formatting and Marking" + ["Format Environment" LaTeX-fill-environment t] + ["Format Paragraph" LaTeX-fill-paragraph t] + ["Format Region" LaTeX-fill-region t] + ["Format Section" LaTeX-fill-section t] + ["Mark Environment" LaTeX-mark-environment t] + ["Mark Section" LaTeX-mark-section t] + ["Beginning of Environment" LaTeX-find-matching-begin t] + ["End of Environment" LaTeX-find-matching-end t] + ["Hide Environment" LaTeX-hide-environment t] + ["Show Environment" LaTeX-show-environment t]) + (list "Miscellaneous" + ["Uncomment Region" TeX-un-comment-region t] + ["Comment Region" TeX-comment-region t] + ["Switch to Master file" TeX-home-buffer t] + ["Save Document" TeX-save-document t] + ["Math Mode" LaTeX-math-mode + :style toggle :selected LaTeX-math-mode ] + ["Documentation" TeX-goto-info-page t] + ["Submit bug report" TeX-submit-bug-report t] + [ "Convert 209 to 2e" LaTeX-209-to-2e + :active (member "latex2" (TeX-style-list)) ] + ["Reset Buffer" TeX-normal-mode t] + ["Reset AUC TeX" (TeX-normal-mode t) :keys "C-u C-c C-n"]))) + +(defvar LaTeX-font-list + '((?\C-b "\\textbf{" "}") + (?\C-c "\\textsc{" "}") + (?\C-e "\\emph{" "}") + (?\C-f "\\textsf{" "}") + (?\C-i "\\textit{" "}") + (?\C-m "\\textmd{" "}") + (?\C-n "\\textnormal{" "}") + (?\C-r "\\textrm{" "}") + (?\C-s "\\textsl{" "}") + (?\C-t "\\texttt{" "}") + (?\C-u "\\textup{" "}") + (?\C-d "" "" t)) + "Font commands used with LaTeX2e. See `TeX-font-list'.") + +;;; Mode + +(defvar TeX-arg-cite-note-p nil + "*If non-nil, ask for optional note in citations.") + +(defvar TeX-arg-footnote-number-p nil + "*If non-nil, ask for optional number in footnotes.") + +(defvar TeX-arg-item-label-p nil + "*If non-nil, always ask for optional label in items. +Otherwise, only ask in description environments.") + +(defvar TeX-arg-right-insert-p t + "*If non-nil, always insert automatically the corresponding +\\right if \\left is inserted.") + +(defvar LaTeX-paragraph-commands + (concat "\\[\\|\\]\\|" ; display math delimitors + "begin\\b\\|end\\b\\|part\\b\\|chapter\\b\\|label\\b\\|" + "caption\\b\\|section\\b\\|subsection\\b\\|subsubsection\\b\\|" + "par\\b\\|noindent\\b\\|paragraph\\b\\|include\\b\\|" + "includeonly\\b\\|tableofcontents\\b\\|appendix\\b") + "Regexp matching names of LaTeX macros that should have their own line.") + +;;; Do not ;;;###autoload because of conflict with standard tex-mode.el. +(defun latex-mode () + "Major mode for editing files of input for LaTeX. +See info under AUC TeX for full documentation. + +Special commands: +\\{LaTeX-mode-map} + +Entering LaTeX mode calls the value of text-mode-hook, +then the value of TeX-mode-hook, and then the value +of LaTeX-mode-hook." + (interactive) + (LaTeX-common-initialization) + (setq mode-name "LaTeX") + (setq major-mode 'latex-mode) + (setq TeX-command-default "LaTeX") + (run-hooks 'text-mode-hook 'TeX-mode-hook 'LaTeX-mode-hook) + + ;; Defeat filladapt if auto-fill-mode is set in text-mode-hook. + (and (boundp 'filladapt-function-table) + (boundp 'auto-fill-function) + (eq auto-fill-function 'do-auto-fill) + (setq auto-fill-function + (cdr (assoc 'do-auto-fill filladapt-function-table))))) + +(defvar LaTeX-header-end + (concat (regexp-quote TeX-esc) "begin *" TeX-grop "document" TeX-grcl) + "Default end of header marker for LaTeX documents.") + +(defvar LaTeX-trailer-start + (concat (regexp-quote TeX-esc) "end *" TeX-grop "document" TeX-grcl) + "Default start of trailer marker for LaTeX documents.") + +(defun LaTeX2e-font-replace (start end) + "Replace LaTeX2e font specification around point with START and END." + (save-excursion + (catch 'done + (while t + (if (/= ?\\ (following-char)) + (skip-chars-backward "a-zA-Z ")) + (skip-chars-backward "\\\\") + (if (looking-at "\\\\\\(emph\\|text[a-z]+\\){") + (throw 'done t) + (up-list -1)))) + (forward-sexp 2) + (save-excursion + (replace-match start t t)) + (delete-backward-char 1) + (insert end))) + +(defun LaTeX-common-initialization () + ;; Common initialization for LaTeX derived modes. + (VirTeX-common-initialization) + (set-syntax-table LaTeX-mode-syntax-table) + (make-local-variable 'indent-line-function) + (setq indent-line-function 'LaTeX-indent-line) + (use-local-map LaTeX-mode-map) + (easy-menu-add TeX-mode-menu LaTeX-mode-map) + (easy-menu-add LaTeX-mode-menu LaTeX-mode-map) + + (or LaTeX-largest-level + (setq LaTeX-largest-level (LaTeX-section-level "section"))) + + (setq TeX-header-end LaTeX-header-end + TeX-trailer-start LaTeX-trailer-start) + + (require 'outline) + (make-local-variable 'outline-level) + (setq outline-level 'LaTeX-outline-level) + (make-local-variable 'outline-regexp) + (setq outline-regexp (LaTeX-outline-regexp t)) + + (make-local-variable 'TeX-auto-full-regexp-list) + (setq TeX-auto-full-regexp-list + (append LaTeX-auto-regexp-list plain-TeX-auto-regexp-list)) + + (setq paragraph-start + (concat + "\\(" + "^.*[^" TeX-esc "\n]%.*$\\|" + "^%.*$\\|" + "^[ \t]*$\\|" + "^[ \t]*" + (regexp-quote TeX-esc) + "\\(" + LaTeX-paragraph-commands + "\\|item\\b" + "\\)" + "\\|" + "^[ \t]*\\$\\$" ; display math delimitor + "\\)" )) + (setq paragraph-separate + (concat + "\\(" + "^.*[^" TeX-esc "\n]%.*$\\|" + "^%.*$\\|" + "^[ \t]*$\\|" + "^[ \t]*" + (regexp-quote TeX-esc) + "\\(" + LaTeX-paragraph-commands + "\\)" + "\\)")) + (setq selective-display t) + + (make-local-variable 'LaTeX-item-list) + (setq LaTeX-item-list '(("description" . LaTeX-item-argument) + ("thebibliography" . LaTeX-item-bib))) + + (setq TeX-complete-list + (append '(("\\\\cite\\[[^]\n\r\\%]*\\]{\\([^{}\n\r\\%,]*\\)" + 1 LaTeX-bibitem-list "}") + ("\\\\cite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") + ("\\\\cite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)" + 2 LaTeX-bibitem-list) + ("\\\\nocite{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-bibitem-list "}") + ("\\\\nocite{\\([^{}\n\r\\%]*,\\)\\([^{}\n\r\\%,]*\\)" + 2 LaTeX-bibitem-list) + ("\\\\ref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") + ("\\\\eqref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") + ("\\\\pageref{\\([^{}\n\r\\%,]*\\)" 1 LaTeX-label-list "}") + ("\\\\begin{\\([A-Za-z]*\\)" 1 LaTeX-environment-list "}") + ("\\\\end{\\([A-Za-z]*\\)" 1 LaTeX-environment-list "}") + ("\\\\renewcommand{\\\\\\([A-Za-z]*\\)" + 1 LaTeX-symbol-list "}") + ("\\\\renewenvironment{\\([A-Za-z]*\\)" + 1 LaTeX-environment-list "}")) + TeX-complete-list)) + + (LaTeX-add-environments + '("document" LaTeX-env-document) + '("enumerate" LaTeX-env-item) + '("itemize" LaTeX-env-item) + '("list" LaTeX-env-list) + '("trivlist" LaTeX-env-item) + '("picture" LaTeX-env-picture) + '("tabular" LaTeX-env-array) + '("tabular*" LaTeX-env-array) + '("array" LaTeX-env-array) + '("eqnarray" LaTeX-env-label) + '("equation" LaTeX-env-label) + '("minipage" LaTeX-env-minipage) + + ;; The following have no special support, but are included in + ;; case the auto files are missing. + + "sloppypar" "picture" "tabbing" "verbatim" "verbatim*" + "flushright" "flushleft" "displaymath" "math" "quote" "quotation" + "abstract" "center" "titlepage" "verse" "eqnarray*" + + ;; The following are not defined in latex.el, but in a number of + ;; other style files. I'm to lazy to copy them to all the + ;; corresponding .el files right now. + + ;; This means that AUC TeX will complete e.g. + ;; ``thebibliography'' in a letter, but I guess we can live with + ;; that. + + '("description" LaTeX-env-item) + '("figure" LaTeX-env-figure) + '("figure*" LaTeX-env-figure) + '("table" LaTeX-env-figure) + '("table*" LaTeX-env-figure) + '("thebibliography" LaTeX-env-bib) + '("theindex" LaTeX-env-item)) + + (TeX-add-symbols + '("addtocounter" TeX-arg-counter "Value") + '("alph" TeX-arg-counter) + '("arabic" TeX-arg-counter) + '("fnsymbol" TeX-arg-define-counter) + '("newcounter" TeX-arg-define-counter + [ TeX-arg-counter "Within counter" ]) + '("roman" TeX-arg-counter) + '("setcounter" TeX-arg-counter "Value") + '("usecounter" TeX-arg-counter) + '("value" TeX-arg-counter) + '("stepcounter" TeX-arg-counter) + '("refstepcounter" TeX-arg-counter) + '("label" TeX-arg-define-label) + '("pageref" TeX-arg-label) + '("ref" TeX-arg-label) + '("newcommand" TeX-arg-define-macro [ "Number of arguments" ] t) + '("renewcommand" TeX-arg-macro [ "Number of arguments" ] t) + '("newenvironment" TeX-arg-define-environment + [ "Number of arguments"] t t) + '("renewenvironment" TeX-arg-environment + [ "Number of arguments"] t t) + '("newtheorem" TeX-arg-define-environment + [ TeX-arg-environment "Numbered like" ] + t [ (TeX-arg-eval progn (if (eq (save-excursion + (backward-char 2) + (preceding-char)) ?\]) + () + (TeX-arg-counter t "Within counter")) + "") ]) + '("newfont" TeX-arg-define-macro t) + '("circle" "Diameter") + '("circle*" "Diameter") + '("dashbox" "Dash Length" TeX-arg-size + [ TeX-arg-corner ] t) + '("frame" t) + '("framebox" (TeX-arg-conditional + (string-equal (LaTeX-current-environment) "picture") + (TeX-arg-size [ TeX-arg-corner ] t) + ([ "Length" ] [ TeX-arg-lr ] t))) + '("line" (TeX-arg-pair "X slope" "Y slope") "Length") + '("linethickness" "Dimension") + '("makebox" (TeX-arg-conditional + (string-equal (LaTeX-current-environment) "picture") + (TeX-arg-size [ TeX-arg-corner ] t) + ([ "Length" ] [ TeX-arg-lr ] t))) + '("multiput" + TeX-arg-coordinate + (TeX-arg-pair "X delta" "Y delta") + "Number of copies" + t) + '("oval" TeX-arg-size [ TeX-arg-corner "Portion" ]) + '("put" TeX-arg-coordinate t) + '("savebox" TeX-arg-define-savebox + (TeX-arg-conditional + (string-equal (LaTeX-current-environment) "picture") + (TeX-arg-size [ TeX-arg-corner ] t) + ([ "Length" ] [ TeX-arg-lr ] t))) + '("shortstack" [ TeX-arg-lr ] t) + '("vector" (TeX-arg-pair "X slope" "Y slope") "Length") + '("cline" "Span `i-j'") + '("multicolumn" "Columns" "Position" t) + '("item" + (TeX-arg-conditional (or TeX-arg-item-label-p + (string-equal (LaTeX-current-environment) + "description")) + ([ "Item label" ]) + ()) + (TeX-arg-literal " ")) + '("bibitem" [ "Bibitem label" ] TeX-arg-define-cite) + '("cite" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) ()) + TeX-arg-cite) + '("nocite" TeX-arg-cite) + '("bibliographystyle" TeX-arg-bibstyle) + '("bibliography" TeX-arg-bibliography) + '("footnote" + (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) + t) + '("footnotetext" + (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) + t) + '("footnotemark" + (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil)) + '("newlength" TeX-arg-define-macro) + '("setlength" TeX-arg-macro "Length") + '("addtolength" TeX-arg-macro "Length") + '("settowidth" TeX-arg-macro t) + '("\\" [ "Space" ]) + '("\\*" [ "Space" ]) + '("hyphenation" t) + '("linebreak" [ "How much [0 - 4]" ]) + '("nolinebreak" [ "How much [0 - 4]" ]) + '("nopagebreak" [ "How much [0 - 4]" ]) + '("pagebreak" [ "How much [0 - 4]" ]) + '("stackrel" t nil) + '("frac" t nil) + '("lefteqn" t) + '("overbrace" t) + '("overline" t) + '("sqrt" [ "Root" ] t) + '("underbrace" t) + '("underline" t) + '("author" t) + '("date" t) + '("thanks" t) + '("title" t) + '("pagenumbering" (TeX-arg-eval + completing-read "Numbering style: " + '(("arabic") ("roman") ("Roman") ("alph") ("Alph")))) + '("pagestyle" TeX-arg-pagestyle) + '("markboth" t nil) + '("markright" t) + '("thispagestyle" TeX-arg-pagestyle) + '("addvspace" "Length") + '("fbox" t) + '("hspace*" "Length") + '("hspace" "Length") + '("mbox" t) + '("newsavebox" TeX-arg-define-savebox) + '("parbox" [ TeX-arg-tb] "Width" t) + '("raisebox" "Raise" [ "Height above" ] [ "Depth below" ] t) + '("rule" [ "Raise" ] "Width" "Thickness") + '("sbox" TeX-arg-define-savebox t) + '("usebox" TeX-arg-savebox) + '("vspace*" "Length") + '("vspace" "Length") + '("documentstyle" TeX-arg-document) + '("include" (TeX-arg-input-file "File" t)) + '("includeonly" t) + '("input" TeX-arg-input-file) + '("addcontentsline" TeX-arg-file + (TeX-arg-eval + completing-read "Numbering style: " LaTeX-section-list) + t) + '("addtocontents" TeX-arg-file t) + '("typeout" t) + '("typein" [ TeX-arg-define-macro ] t) + '("verb" TeX-arg-verb) + '("verb*" TeX-arg-verb) + '("extracolsep" t) + '("index" t) + '("glossary" t) + '("numberline" "Section number" "Heading") + '("caption" t) + '("marginpar" [ "Left margin text" ] "Text") + '("left" TeX-arg-insert-braces) + + ;; These have no special support, but are included in case the + ;; auto files are missing. + + "LaTeX" "SLiTeX" "samepage" "newline" "smallskip" "medskip" + "bigskip" "stretch" "nonumber" "centering" "raggedright" + "raggedleft" "kill" "pushtabs" "poptabs" "protect" "arraystretch" + "hline" "vline" "cline" "thinlines" "thicklines" "and" "makeindex" + "makeglossary" "reversemarginpar" "normalmarginpar" + "raggedbottom" "flushbottom" "sloppy" "fussy" "newpage" + "clearpage" "cleardoublepage" "twocolumn" "onecolumn") + + (TeX-run-style-hooks "LATEX") + + (make-local-variable 'TeX-font-list) + (make-local-variable 'TeX-font-replace-function) + (if (string-equal LaTeX-version "2") + () + (setq TeX-font-list LaTeX-font-list) + (setq TeX-font-replace-function 'LaTeX2e-font-replace) + (TeX-add-symbols + '("newcommand" TeX-arg-define-macro + [ "Number of arguments" ] [ "Default value for first argument" ] t) + '("renewcommand" TeX-arg-macro + [ "Number of arguments" ] [ "Default value for first argument" ] t) + '("usepackage" [ "Options" ] (TeX-arg-input-file "Package")) + '("documentclass" TeX-arg-document))) + + (TeX-add-style-hook "latex2e" + ;; Use new fonts for `\documentclass' documents. + (function (lambda () + (setq TeX-font-list LaTeX-font-list) + (setq TeX-font-replace-function 'LaTeX2e-font-replace) + (if (equal LaTeX-version "2") + (setq TeX-command-default "LaTeX2e")) + (run-hooks 'LaTeX2e-hook)))) + + (TeX-add-style-hook "latex2" + ;; Use old fonts for `\documentstyle' documents. + (function (lambda () + (setq TeX-font-list (default-value 'TeX-font-list)) + (setq TeX-font-replace-function + (default-value 'TeX-font-replace-function)) + (run-hooks 'LaTeX2-hook))))) + +(defvar LaTeX-builtin-opts + '("12pt" "11pt" "10pt" "twocolumn" "twoside" "draft") + "Built in options for LaTeX standard styles") + +(defun LaTeX-209-to-2e () + "Make a stab at changing 2.09 doc header to 2e style." + (interactive) + (TeX-home-buffer) + (let (optstr optlist 2eoptlist 2epackages docline docstyle) + (goto-char (point-min)) + (if + (search-forward-regexp + "\\documentstyle\\[\\([^]]*\\)\\]{\\([^}]*\\)}" + (point-max) t) + (setq optstr (buffer-substring (match-beginning 1) (match-end 1)) + docstyle (buffer-substring (match-beginning 2) + (match-end 2)) + optlist (TeX-split-string "," optstr)) + (if (search-forward-regexp + "\\documentstyle{\\([^}]*\\)}" + (point-max) t) + (setq docstyle (buffer-substring (match-beginning 1) + (match-end 1))) + (error "No documentstyle defined"))) + (beginning-of-line 1) + (setq docline (point)) + (insert "%%%") + (while optlist + (if (member (car optlist) LaTeX-builtin-opts) + (setq 2eoptlist (cons (car optlist) 2eoptlist)) + (setq 2epackages (cons (car optlist) 2epackages))) + (setq optlist (cdr optlist))) + ;;(message (format "%S %S" 2eoptlist 2epackages)) + (goto-char docline) + (next-line 1) + (insert "\\documentclass") + (if 2eoptlist + (insert "[" + (mapconcat (function (lambda (x) x)) + (nreverse 2eoptlist) ",") "]")) + (insert "{" docstyle "}\n") + (if 2epackages + (insert "\\usepackage{" + (mapconcat (function (lambda (x) x)) + (nreverse 2epackages) "}\n\\usepackage{") "}\n")) + (if (equal docstyle "slides") + (progn + (goto-char (point-min)) + (while (re-search-forward "\\\\blackandwhite{" nil t) + (replace-match "\\\\input{" nil nil))))) + (TeX-normal-mode nil)) + +;;; latex.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/lpath.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/lpath.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,8 @@ +;;; This file is only used for installing AUC TeX. +;;; It is not a part of AUC TeX itself. + +;; Make sure we get the right files. +(setq load-path (cons "." load-path) + byte-compile-warnings nil + TeX-lisp-directory "") + diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/multi-prompt.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/multi-prompt.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,138 @@ +;;; multi-prompt.el --- completing read of multiple strings. + +;; Copyright (C) 1996, 1997 Per Abrahamsen. + +;; Author: Per Abrahamsen +;; Keywords: extensions +;; Version: 0.2 +;; Bogus-Bureaucratic-Cruft: How 'bout ESR and the LCD people agreed +;; on a common format? + +;; LCD Archive Entry: +;; multi-prompt|Per Abrahamsen|abraham@dina.kvl.dk| +;; completing read of multiple strings| +;; 1996-08-31|0.1|~/functions/multi-prompt.el.Z| + +;; 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 2, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Commentary: + +;; This package is written for use in emacs lisp programs, where the +;; user is prompted for a string of the form: +;; +;; FOO,BAR,BAZ +;; +;; where FOO, BAR, and BAZ are elements of some table. The function +;; `multi-prompt' is a replacement `completing-read' that will allow +;; the user to enter a string like the above, yet get completion on +;; both FOO, BAR, and BAZ. + +;;; Change Log: +;; +;; Sat Feb 15 17:58:31 MET 1997 +;; * Version 0.2 released. +;; Renamed predicate to `mp-predicate'. +;; Sat Aug 31 18:32:20 MET DST 1996 +;; * Version 0.1 released. +;; Fixed `predicate' bug. +;; Added provide. +;; Added `multi-prompt-found' variable. +;; Sat Aug 31 16:29:14 MET DST 1996 +;; * Created. + +;;; Code: + +(provide 'multi-prompt) + +(defvar multi-prompt-found nil + "List of entries currently added during a `multi-prompt'.") + +(defun multi-prompt (separator + unique prompt table + &optional mp-predicate require-match initial history) + "Completing prompt for a list of strings. +The first argument SEPARATOR should be the string (of length 1) to +separate the elements in the list. The second argument UNIQUE should +be non-nil, if each element must be unique. The remaining elements +are the arguments to `completing-read'. See that." + (let ((old-map (if require-match + minibuffer-local-must-match-map + minibuffer-local-completion-map)) + (new-map (make-sparse-keymap))) + (if (fboundp 'set-keymap-parent) + ;; `set-keymap-parent' was introduced in Emacs 19.32. + (set-keymap-parent new-map old-map) + (setq new-map (copy-keymap old-map))) + (define-key new-map separator (if require-match + 'multi-prompt-next-must-match + 'multi-prompt-next)) + (define-key new-map "\C-?" 'multi-prompt-delete) + (let* ((minibuffer-local-completion-map new-map) + (minibuffer-local-must-match-map new-map) + (multi-prompt-found nil) + (done nil) + (filter (cond (unique + (lambda (x) + (and (not (member (car x) multi-prompt-found)) + (or (null mp-predicate) + (funcall mp-predicate x))))) + (mp-predicate))) + (answer (catch 'multi-prompt-exit + (while t + (let ((extra (catch 'multi-prompt-next + (throw 'multi-prompt-exit + (completing-read prompt + table + filter + require-match + initial + history))))) + (cond ((eq extra 'back) + (when multi-prompt-found + (setq prompt (substring + prompt 0 + (- 0 (length separator) + (length + (car multi-prompt-found)))) + initial (car multi-prompt-found)) + (setq multi-prompt-found + (cdr multi-prompt-found)))) + (t + (setq prompt (concat prompt extra separator) + initial nil) + (setq multi-prompt-found + (cons extra multi-prompt-found))))))))) + (if answer + (nreverse (cons answer multi-prompt-found)) + multi-prompt-found)))) + +(defun multi-prompt-delete () + (interactive) + (if (bobp) + (throw 'multi-prompt-next 'back) + (call-interactively 'backward-delete-char))) + +(defun multi-prompt-next () + (interactive) + (throw 'multi-prompt-next + (buffer-substring-no-properties (point-min) (point-max)))) + +(defun multi-prompt-next-must-match () + (interactive) + (if (call-interactively 'minibuffer-complete) + (throw 'multi-prompt-next + (buffer-substring-no-properties (point-min) (point-max))))) + +;;; multi-prompt.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/amsart.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/amsart.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,10 @@ +;;; amsart.el --- AMS article style hook. + +;;; Code: + +(TeX-add-style-hook "amsart" + (function + (lambda () + (TeX-run-style-hooks "amstex")))) + +;;; amsart.el ends here. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/amsbook.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/amsbook.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,10 @@ +;;; amsbook.el --- AMS book style hook. + +;;; Code: + +(TeX-add-style-hook "amsbook" + (function + (lambda () + (TeX-run-style-hooks "amstex")))) + +;;; amsbook.el ends here. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/amstex.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/amstex.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; amstex.el --- AMS LaTeX support. + +;;; Code: + +(TeX-add-style-hook "amstex" + (function + (lambda () + (TeX-add-symbols + '("eqref" TeX-arg-label))))) + +;;; amstex.el ends here. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/article.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/article.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; article.el - Special code for article style. + +;; $Id: article.el,v 1.1 1997/02/20 02:15:41 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "article" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "section"))))) + +;;; article.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/book.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/book.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; book.el - Special code for book style. + +;; $Id: book.el,v 1.1 1997/02/20 02:15:41 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "book" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "chapter"))))) + +;;; book.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/dinbrief.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/dinbrief.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,163 @@ +;;; dinbrief.el - Special code for LaTeX-Style dinbrief. + +;; Contributed by Werner Fink +;; Please direct comments to him. + +;;; Commentary: + +;; LaTeX-Style: dinbrief.sty +;; Server: rusinfo.rus.uni-stuttgart.de +;; Directory: /pub/soft/tex/macros/latex/contrib/letters + +;;; Code: + +(TeX-add-style-hook "dinbrief" + (function + (lambda () + (LaTeX-add-environments + '("letter" LaTeX-recipient-hook)) + (TeX-add-symbols + '("Absender" "Absender: ") + '("Postvermerk" "Postvermerk: ") + '("Datum" "Datum: ") + '("Betreff" "Betreff: ") + '("Behandlungsvermerk" "Behandlungsvermerk: ") + '("Verteiler" "Verteiler: ") + "makelabel" "Retourlabel" + '("Anlagen" "Anlagen: ") + '("Fenster" "Fenster \(ja/nein\): ") + '("Retouradresse" "Retouradresse: ") + '("signature" "Unterschrift: ") + '("opening" "Anrede: ") + '("closing" "Schlu\"s: "))))) + +(defun LaTeX-recipient-hook (environment) + "Insert ENVIRONMENT and prompt for recipient and address." + (let ((sender (read-input "Absender: " (user-full-name))) + (recipient (read-input "Empf\"anger: ")) + (address (read-input "Anschrift: ")) + (postvermerk (read-input "Postvermerk: ")) + (date (read-input "Datum: " (LaTeX-today))) + (betreff (read-input "Betreff: ")) + (vermerk (read-input "Behandlungsvermerk: ")) + (verteil (read-input "Verteiler: ")) + (anlage (read-input "Anlagen: ")) + (opening (read-input "Anrede: ")) + (closing (read-input "Schlu\"s: ")) + (fenster (read-input "Fenster \(ja/nein\): ")) + (signature (read-input "Unterschrift: ")) + ) + + (if (not (zerop (length sender))) + (progn + (insert TeX-esc "Absender" TeX-grop sender TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length postvermerk))) + (progn + (insert TeX-esc "Postvermerk" TeX-grop postvermerk TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length betreff))) + (progn + (insert TeX-esc "Betreff" TeX-grop betreff TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length vermerk))) + (progn + (insert TeX-esc "Behandlungsvermerk" TeX-grop vermerk TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length verteil))) + (progn + (insert TeX-esc "Verteiler" TeX-grop verteil TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length anlage))) + (progn + (insert TeX-esc "Anlagen" TeX-grop anlage TeX-grcl) + (newline-and-indent))) + (if (string= fenster "ja") + (progn + (insert TeX-esc "Fenster") + (let ((retouradr (read-input "Retouradresse: " (user-full-name)))) + (newline-and-indent) + (if (not (zerop (length retouradr))) + (progn + (insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl) + (newline-and-indent)))))) + (if (not (zerop (length signature))) + (progn + (insert TeX-esc "signature" TeX-grop signature TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length date))) + (progn + (insert TeX-esc "Datum" TeX-grop date TeX-grcl) + (newline-and-indent))) + (newline-and-indent) + + (let ((indentation (current-column))) + (LaTeX-insert-environment + environment + (concat TeX-grop recipient + (if (not (zerop (length address))) + (concat + (if (not (zerop (length recipient))) + (concat " " TeX-esc TeX-esc " ")) + address)) + TeX-grcl)) + (save-excursion ; Fix indentation of address + (if (search-backward TeX-grcl nil 'move) + (let ((addr-end (point-marker))) + (if (search-backward TeX-grop nil 'move) + (let ((addr-column (current-column))) + (while (search-forward + (concat TeX-esc TeX-esc) + (marker-position addr-end) 'move) + (progn + (newline) + (indent-to addr-column)))))))) + (insert "\n") + (indent-to indentation)) + (insert TeX-esc "opening" + TeX-grop + (if (zerop (length opening)) + (concat TeX-esc " ") + opening) + TeX-grcl "\n") + + (indent-relative-maybe) + (save-excursion + (insert "\n" TeX-esc "closing" + TeX-grop + (if (zerop (length closing)) + (concat TeX-esc " ") + closing) + TeX-grcl "\n") + (indent-relative-maybe)))) + +(defun LaTeX-today nil + "Return a string representing todays date according to flavor." + (interactive) + (let ((ctime-string (current-time-string)) + (month-alist '(("Jan" . "Januar") + ("Feb" . "Februar") + ("Mar" . "M\\\"arz") + ("Apr" . "April") + ("May" . "Mai") + ("Jun" . "Juni") + ("Jul" . "Juli") + ("Aug" . "August") + ("Sep" . "September") + ("Oct" . "Oktober") + ("Nov" . "November") + ("Dec" . "Dezember")))) + (string-match + "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" + ctime-string) + (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) + (month (substring ctime-string (match-beginning 1) (match-end 1))) + (day (substring ctime-string (match-beginning 2) (match-end 2)))) + (if (assoc month month-alist) + (progn + (setq month (cdr (assoc month month-alist))) + (if (> 2 (length day)) + (setq day (concat "0" day))))) + (format "Stuttgart, den %s. %s %s" day month year)))) + +;;; dinbrief.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/dk.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/dk.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; dk.el - Setup AUC TeX for editing Danish text. + +;; $Id: dk.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "dk" + (function (lambda () + (run-hooks 'TeX-language-dk-hook)))) + +;;; dk.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/dutch.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/dutch.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; dutch.el - Setup AUC TeX for editing Dutch text. + +;; $Id: dutch.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "dutch" + (function (lambda () + (run-hooks 'TeX-language-nl-hook)))) + +;;; dutch.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/epsf.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/epsf.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,96 @@ +;;; epsf.el - Support for the epsf style option. + +;; Contributed by Marc Gemis + +;;; Code: + +(TeX-add-style-hook "epsf" + (function + (lambda () + (TeX-add-symbols + '("epsfsize" TeX-arg-epsfsize) + '("epsffile" TeX-arg-file) + '("epsfbox" TeX-arg-file) + "epsflly" "epsfury" "testit" "epsfgetlitbb" + "epsfnormal" "epsfgetbb" "other" "epsfsetgraph" + "PsFragSpecialArgs" "epsfaux" "testit" "epsfgrab" + "epsfllx" "epsflly" "epsfury" "epsfverbosetrue" + ) + (LaTeX-add-environments + '("epsffig" LaTeX-env-epsffigure) + ) + + ))) + + +(defun LaTeX-env-epsffigure (environment) + "Create a `figure'-environment with \\label and \\caption and \\epsfbox +commands. Eventually a `psfrags'-environment is inserted round the \\epsfbox." + + (let ((float (read-input "Float to: " LaTeX-float)) + (caption (read-input "Caption: ")) + (label (read-input "Label: " LaTeX-figure-label)) + ; gf: ask if there is an psfrag environment needed + (psfrag (y-or-n-p "PS fragments: ")) + (psfile (read-file-name "EPS-file: " "" "" nil)) + ) + + (setq LaTeX-float (if (zerop (length float)) + LaTeX-float + float)) + + (LaTeX-insert-environment "figure" + (concat LaTeX-optop LaTeX-float LaTeX-optcl)) + (LaTeX-insert-environment "center") + (if psfrag + (progn + (LaTeX-insert-environment "psfrags") + (newline-and-indent) + )) + (if (or (zerop (length label)) + (and (string= "figure" environment) + (equal LaTeX-figure-label label)) + ) + () + (newline-and-indent) + (insert TeX-esc "label" TeX-grop label TeX-grcl) + (end-of-line 0) + (LaTeX-indent-line)) + + + (newline-and-indent) + (insert TeX-esc "leavevmode") + (newline-and-indent) + (insert TeX-esc "epsfbox" TeX-grop psfile TeX-grcl) + (if (zerop (length caption)) + () + (newline-and-indent) + (insert TeX-esc "caption" TeX-grop caption TeX-grcl)) + (newline) + (forward-line 4) + (newline) + +)) + +(defun TeX-arg-epsfsize (optional &optional prompt definition) + "Create a line that print epsf figures at a certain percentage" + (interactive) + (let ((scale (read-input "Scale (%): ")) + ) + (setq scalestr (if (zerop (length scale)) + "75" + (format "%s" scale) + )) + (save-excursion + ; append #1#{scale#1} + (insert "#1#2" TeX-grop "0." scale "#1" TeX-grcl) + ; insert \def before \epsfsize + (beginning-of-line 1) + (newline) + (insert TeX-esc "def") + (forward-line -1) + (insert "% From now on print figures at " scale "% of original size") + ) + (end-of-line))) + +;;; epsf.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/foils.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/foils.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,47 @@ +;;; foils.el - Special code for FoilTeX. + +;; $Id: foils.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;;; Code: + +(require 'latex) + +(TeX-add-style-hook "foils" + (function + (lambda () + (add-hook 'LaTeX-document-style-hook 'LaTeX-style-foils) + (setq LaTeX-default-style "foils") + (setq LaTeX-default-options '("landscape")) + (TeX-add-symbols + '("foilhead" [ "Rubric-body separation" ] "Foil rubric"))))) + +(defun LaTeX-style-foils nil + "Prompt for and insert foiltex options." + (require 'timezone) + (let* ((date (timezone-parse-date (current-time-string))) + (year (string-to-int (aref date 0))) + (month (string-to-int (aref date 1))) + (day (string-to-int (aref date 2))) + (title (read-input "Title: "))) + (save-excursion + (goto-char (point-max)) + (re-search-backward ".begin.document.") + (insert TeX-esc "title" + TeX-grop title TeX-grcl "\n") + (insert TeX-esc "author" + TeX-grop (user-full-name) TeX-grcl "\n") + (insert TeX-esc "date" TeX-grop + (format "%d-%02d-%02d" year month day) + TeX-grcl "\n") + (insert "" TeX-esc "\nMyLogo" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "Restriction" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "rightfooter" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "leftheader" TeX-grop TeX-grcl "\n") + (insert "%" TeX-esc "rightheader" TeX-grop TeX-grcl "\n\n") + (re-search-forward ".begin.document.") + (end-of-line) + (newline-and-indent) + (insert "" TeX-esc "maketitle\n\n")) + (forward-line -1))) + +;;; foils.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/german.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/german.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,28 @@ +;;; german.el - Setup AUC TeX for editing German text. + +;; $Id: german.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;;; Commentary: +;; +;; `german.sty' use `"' to give next character an umlaut. + +;;; Code: + +(defvar LaTeX-german-mode-syntax-table + (copy-syntax-table LaTeX-mode-syntax-table) + "Syntax table used in LaTeX mode when using `german.sty'.") + +(modify-syntax-entry ?\" "w" LaTeX-german-mode-syntax-table) + +(TeX-add-style-hook "german" + (function (lambda () + (set-syntax-table LaTeX-german-mode-syntax-table) + (make-local-variable 'TeX-open-quote) + (make-local-variable 'TeX-close-quote) + (make-local-variable 'TeX-quote-after-quote) + (setq TeX-quote-after-quote t) + (setq TeX-open-quote "\"`") + (setq TeX-close-quote "\"'") + (run-hooks 'TeX-language-de-hook)))) + +;;; german.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/harvard.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/harvard.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,97 @@ +;; harvard.el --- Support for Harvard Citation style package for AUC-TeX + +;; Copyright (C) 1994 Berwin Turlach + +;; Version: $Id: harvard.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;; 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 1, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Commentary: + +;; Harvard citation style is from Peter Williams available on the CTAN +;; servers + +;;; Code: + +(require 'latex) + +(TeX-add-style-hook "harvard" + (function + (lambda () + + (LaTeX-add-environments + '("thebibliography" LaTeX-env-harvardbib ignore)) + + (TeX-add-symbols + "harvardand" + '("citeasnoun" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("possessivecite" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("citeaffixed" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite "Affix") + '("citeyear" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("citename" + (TeX-arg-conditional TeX-arg-cite-note-p ([ "Note" ]) nil) + TeX-arg-cite) + '("citationstyle" + (TeX-arg-eval completing-read "Citation style: " '(("agsm") ("dcu")))) + '("citationmode" + (TeX-arg-eval completing-read "Citation mode: " + '(("full") ("abbr") ("default")))) + '("harvardparenthesis" + (TeX-arg-eval completing-read "Harvardparenthesis: " + '(("round") ("curly") ("angle") ("square")))) + '("bibliographystyle" + (TeX-arg-eval + completing-read "Bibliography style: " + '(("agsm") ("dcu") ("jmr") ("jphysicsB") ("kluwer") ("nederlands"))) + ignore) + '("harvarditem" [ "Short citation" ] + "Complete citation" "Year" TeX-arg-define-cite)) + + (setq TeX-complete-list + (append '(("\\\\citeasnoun{\\([^{}\n\m\\%]*\\)" + 1 LaTeX-bibitem-list "}") + ("\\\\citeyear{\\([^{}\n\m\\%]*\\)" + 1 LaTeX-bibitem-list "}") + ("\\\\citename{\\([^{}\n\m\\%]*\\)" + 1 LaTeX-bibitem-list "}")) + TeX-complete-list)) + + (setq LaTeX-item-list + (cons '("thebibliography" . LaTeX-item-harvardbib) + LaTeX-item-list))))) + +(defun LaTeX-env-harvardbib (environment &optional ignore) + "Insert ENVIRONMENT with label for harvarditem." + (LaTeX-insert-environment environment + (concat TeX-grop "xx" TeX-grcl)) + (end-of-line 0) + (delete-char 1) + (delete-horizontal-space) + (LaTeX-insert-item)) + +;; Analog to LaTeX-item-bib from latex.el +(defun LaTeX-item-harvardbib () + "Insert a new harvarditem." + (TeX-insert-macro "harvarditem")) + +;; harvard.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/j-article.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/j-article.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; j-article.el - Special code for j-article style. + +;; $Id: j-article.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "j-article" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "section"))))) + +;;; j-article.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/j-book.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/j-book.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; j-book.el - Special code for j-book style. + +;; $Id: j-book.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "j-book" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + +;;; j-book.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/j-report.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/j-report.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; j-report.el - Special code for j-report style. + +;; $Id: j-report.el,v 1.1 1997/02/20 02:15:42 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "j-report" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + +;;; j-report.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/jarticle.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/jarticle.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,10 @@ +;;; jarticle.el - Special code for jarticle style. + +;; $Id: jarticle.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "jarticle" + (function (lambda () (setq LaTeX-largest-level 2)))) + +;;; jarticle.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/jbook.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/jbook.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; jbook.el - Special code for jbook style. + +;; $Id: jbook.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "jbook" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + +;;; jbook.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/jreport.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/jreport.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,12 @@ +;;; jreport.el - Special code for jreport style. + +;; $Id: jreport.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "jreport" + (function (lambda () (setq LaTeX-largest-level + (LaTeX-section-level "chapter"))))) + + +;;; jreport.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/latexinfo.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/latexinfo.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,183 @@ +;;; latexinfo.el - Support for LaTeXinfo files. + +;; Copyright (C) 1993 Marc Gemis + +;; Author: Marc Gemis +;; Version: $Id: latexinfo.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;; 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 2, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Code: + +(require 'latex) + +;;; LaTeXinfo mode + +(defvar TeX-latexinfo-node-regexp + '("\\\\node[ \t]+\\([^,\n\r%]+\\)" 1 TeX-auto-label) + "Matches LaTeXinfo \\node commands, only current node will be found. +We ignore next, previous and up fields.") + +(defvar LaTeXinfo-mode nil + "Non-nil means LaTeXinfo minor mode is active.") + (make-variable-buffer-local 'LaTeXinfo-mode) + +(defvar LaTeXinfo-mode-map nil + "Keymap containing LaTeXinfo commands.") + +(if LaTeXinfo-mode-map + () + (setq LaTeXinfo-mode-map (make-sparse-keymap)) + (define-key LaTeXinfo-mode-map "\C-c\C-u\C-b" 'latexinfo-format-buffer) + (define-key LaTeXinfo-mode-map "\C-c\C-u\C-r" 'latexinfo-format-region) + (define-key LaTeXinfo-mode-map "\C-c\C-u\C-s" 'latexinfo-show-structure) + (define-key LaTeXinfo-mode-map "\C-c\C-ud" 'makke:latexinfo-delete-structure) + (define-key LaTeXinfo-mode-map "\C-c\C-ug" 'latexinfo-goto-node) + (define-key LaTeXinfo-mode-map "\C-c\C-ui" 'makke:latexinfo-structure)) + +(or (assq 'LaTeXinfo-mode minor-mode-map-alist) + (setq minor-mode-map-alist + (cons (cons 'LaTeXinfo-mode LaTeXinfo-mode-map) + minor-mode-map-alist))) + +(defun TeX-arg-latexinfo-index (optional &optional prompt) + "Prompt for a LaTeXinfo index type with completion." + (TeX-argument-insert + (completing-read (TeX-argument-prompt optional prompt "Index") + '(("cp") ("vr") ("fn") ("tp") ("pg") ("ky")) + nil t) + optional)) + +(defun LaTeX-item-latexinfo-menu () + "Insert a new menu item" + (insert "* ::") + (backward-char 2)) + +(defun latexinfo-goto-node () ; temporarily here, later in latexinfo-upd.el ?? + "Place pointer on the node given by the user, read node with completion +This fails when the user types in the label of something else" + (interactive) + (let ((node-name (completing-read "Goto Node: " (LaTeX-label-list)))) + (goto-char (point-min)) + (if (re-search-forward + (concat + TeX-esc "node[ \\t]+" node-name "," + "\\|" + TeX-esc "label{" LaTeX-section-label node-name + "\\|" + TeX-esc "label{" node-name + ) + (point-max) t) + (beginning-of-line 1) + (error "No such node")))) + +;;; Hook + +(TeX-add-style-hook "latexinfo" + (function + (lambda () + (require 'latexinfo) + (require 'latexinfo-structure) + + (require 'min-map) + (setq LaTeXinfo-mode t) + + (TeX-auto-add-regexp TeX-latexinfo-node-regexp) + + (TeX-add-symbols + '("node" + (TeX-arg-literal " ") + (TeX-arg-free TeX-arg-define-label "Node name") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-label "Next node") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-label "Previous node") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-label "Up node")) + '("setfilename" TeX-arg-file) + + '("var" t) + '("dfn" t) + '("emph" t) + '("kbd" t) + '("code" t) + '("samp" t) + '("key" t) + '("ctrl" t) + '("file" t) + + '("comment" + (TeX-arg-literal " ") + (TeX-arg-free "Comment")) + '("c" + (TeX-arg-literal " ") + (TeX-arg-free "Comment")) + + '("cindex" t) + '("cpsubindex" 2) + '("cpindexbold" t) + + '("newindex" TeX-arg-latexinfo-index) + + '("br" nil) + '("w" "Text") + '("dots" nil) + '("refill" nil) + '("bullet" nil) + '("copyright" nil) + '("sp" nil) + + '("xref" TeX-arg-label) + '("pxref" TeX-arg-label) + '("inforef" + (TeX-arg-literal "{") + (TeX-arg-free "Name of node") + (TeX-arg-literal ", ") + (TeX-arg-free "Name for note") + (TeX-arg-literal ", ") + (TeX-arg-free TeX-arg-file "Info file") + (TeX-arg-literal "}"))) + + (LaTeX-add-environments "menu" "tex" "ignore" "ifinfo" "iftex" + "example" "same" "display" "format") + + ; Menu's have a special kind of items + (make-local-variable 'LaTeX-item-list) + (setq LaTeX-item-list (cons '("menu" . LaTeX-item-latexinfo-menu) + LaTeX-item-list)) + + (make-local-variable 'TeX-font-list) + (setq TeX-font-list + (list (list ?\C-b (concat TeX-esc "b{") "}") + (list ?\C-c (concat TeX-esc "sc{") "}") + (list ?\C-e (concat TeX-esc "emph{") "}") + (list ?\C-i (concat TeX-esc "i{") "}") + (list ?\C-r (concat TeX-esc "r{") "}") + (list ?\C-s (concat TeX-esc "samp{") "}") + (list ?\C-t (concat TeX-esc "t{") "}") + (list ?s (concat TeX-esc "strong{") "}") + (list ?\C-f (concat TeX-esc "file{") "}") + (list ?\C-d (concat TeX-esc "dfn{") "}") + (list ?\C-v (concat TeX-esc "var{") "}") + (list ?k (concat TeX-esc "key{") "}") + (list ?\C-k (concat TeX-esc "kbd{") "}") + (list ?c (concat TeX-esc "code{") "}") + (list ?C (concat TeX-esc "cite{") "}"))) + + ;; need the following stuff to let xref and pxref work + (make-local-variable 'LaTeX-section-label) + (setq LaTeX-section-label "")))) + +;;; latexinfo.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/letter.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/letter.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,122 @@ +;;; letter.el - Special code for letter style. + +;; $Id: letter.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;;; Code: + +;; You may want to define this in tex-site.el to contain your +;; organizations address. +(defvar LaTeX-letter-sender-address "" + "Initial value when prompting for a sender address in the letter style.") + +(TeX-add-style-hook "letter" + (function + (lambda () + (LaTeX-add-environments + '("letter" LaTeX-env-recipient)) + (TeX-add-symbols + '("name" "Sender: ") + '("address" "Sender address: ") + '("signature" "Signature: ") + '("opening" "Opening: ") + '("closing" "Closing: "))))) + +(defun LaTeX-env-recipient (environment) + "Insert ENVIRONMENT and prompt for recipient and address." + (let ((sender (read-input "Sender: " (user-full-name))) + (sender-address (read-input "Sender address: " + LaTeX-letter-sender-address)) + (recipient (read-input "Recipient: ")) + (address (read-input "Recipient address: ")) + (signature (read-input "Signature: ")) + (opening (read-input "Opening: ")) + (closing (read-input "Closing: ")) + (date (read-input "Date: " (LaTeX-today)))) + + (insert TeX-esc "name" TeX-grop sender TeX-grcl) + (newline-and-indent) + (if (not (zerop (length sender-address))) + (progn + (setq LaTeX-letter-sender-address sender-address) + (insert TeX-esc "address" TeX-grop sender-address TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length signature))) + (progn + (insert TeX-esc "signature" TeX-grop signature TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length date))) + (progn + (insert TeX-esc "def" TeX-esc "today" TeX-grop date TeX-grcl) + (newline-and-indent))) + (newline-and-indent) + + (let ((indentation (current-column))) + (LaTeX-insert-environment + environment + (concat TeX-grop recipient + (if (not (zerop (length address))) + (concat + (if (not (zerop (length recipient))) + (concat " " TeX-esc TeX-esc " ")) + address)) + TeX-grcl)) + (save-excursion ; Fix indentation of address + (if (search-backward TeX-grcl nil 'move) + (let ((addr-end (point-marker))) + (if (search-backward TeX-grop nil 'move) + (let ((addr-column (current-column))) + (while (search-forward + (concat TeX-esc TeX-esc) + (marker-position addr-end) 'move) + (progn + (newline) + (indent-to addr-column)))))))) + (insert "\n") + (indent-to indentation)) + (insert TeX-esc "opening" + TeX-grop + (if (zerop (length opening)) + (concat TeX-esc " ") + opening) + TeX-grcl "\n") + + (indent-relative-maybe) + (save-excursion + (insert "\n" TeX-esc "closing" + TeX-grop + (if (zerop (length closing)) + (concat TeX-esc " ") + closing) + TeX-grcl "\n") + (indent-relative-maybe)))) + +(defun LaTeX-today nil + "Return a string representing todays date according to flavor." + (interactive) + (let ((ctime-string (current-time-string)) + (month-alist '(("Jan". "01") + ("Feb" . "02") + ("Mar" . "03") + ("Apr" . "04") + ("May" . "05") + ("Jun" . "06") + ("Jul" . "07") + ("Aug" . "08") + ("Sep" . "09") + ("Oct" . "10") + ("Nov" . "11") + ("Dec" . "12")))) + (string-match + "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" + ctime-string) + (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) + (month (substring ctime-string (match-beginning 1) (match-end 1))) + (day (substring ctime-string (match-beginning 2) (match-end 2)))) + (if (assoc month month-alist) + (progn + (setq month (cdr (assoc month month-alist))) + (if (> 2 (length day)) + (setq day (concat "0" day))))) + (format "%s-%s-%s" year month day)))) + +;;; letter.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/plfonts.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/plfonts.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,31 @@ +;;; plfonts.el - Setup AUC TeX for editing Polish text with plfonts.sty + +;; $Id: plfonts.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;;; Commentary: +;; +;; `plfonts.sty' use `"' to make next character Polish. +;; `plfonts.sty' L. Holenderski, IIUW, lhol@mimuw.edu.pl + +;;; Code: + +(defvar LaTeX-plfonts-mode-syntax-table + (copy-syntax-table LaTeX-mode-syntax-table) + "Syntax table used in LaTeX mode when using `plfonts.sty'.") + +(modify-syntax-entry ?\" "w" LaTeX-plfonts-mode-syntax-table) + +(TeX-add-style-hook "plfonts" + (function (lambda () + (set-syntax-table LaTeX-plfonts-mode-syntax-table) + (make-local-variable 'TeX-open-quote) + (make-local-variable 'TeX-close-quote) + (make-local-variable 'TeX-quote-after-quote) + (make-local-variable 'TeX-command-default) + (setq TeX-open-quote "\"<") + (setq TeX-close-quote "\">") + (setq TeX-quote-after-quote t) + (setq TeX-command-default "plLaTeX") + (run-hooks 'TeX-language-pl-hook)))) + +;;; plfonts.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/plhb.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/plhb.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,31 @@ +;;; plhb.el - Setup AUC TeX for editing Polish text with plhb.sty + +;; $Id: plhb.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;;; Commentary: +;; +;; `plhb.sty' use `"' to make next character Polish. +;; `plhb.sty' J. S. Bie\'n, IIUW, jsbien@mimuw.edu.pl + +;;; Code: + +(defvar LaTeX-plhb-mode-syntax-table + (copy-syntax-table LaTeX-mode-syntax-table) + "Syntax table used in LaTeX mode when using `plhb.sty'.") + +(modify-syntax-entry ?\" "w" LaTeX-plhb-mode-syntax-table) + +(TeX-add-style-hook "plhb" + (function (lambda () + (set-syntax-table LaTeX-plhb-mode-syntax-table) + (make-local-variable 'TeX-open-quote) + (make-local-variable 'TeX-close-quote) + (make-local-variable 'TeX-command-default) + (make-local-variable 'TeX-quote-after-quote) + (setq TeX-open-quote "\"<") + (setq TeX-close-quote "\">") + (setq TeX-quote-after-quote t) + (setq TeX-command-default "plLaTeX") + (run-hooks 'TeX-language-pl-hook)))) + +;;; plhb.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/psfig.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/psfig.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,79 @@ +;;; psfig.el - Support for the psfig style option. + +;; Contributed by Marc Gemis +;; Please direct comments to him. + +;;; Code: + +(TeX-add-style-hook "psfig" + (function + (lambda () + ;; probable some of the following symbols may be removed + (TeX-add-symbols "protect" "figurepath" "fbox" + "other" "letter" "other" "then" "Sine" "Cosine" + "psdraft" "psfull" "psscalefirst" "psrotatefirst" + "psnodraftbox" "psdraftbox" "pssilent" "psnoisy" + "minmaxtest" + '("psfig" TeX-arg-psfig) + '("psfigurepath" t) + ) + (LaTeX-add-environments + '("psfigure" LaTeX-env-psfigure) + ) + ))) + +(defun TeX-arg-psfig (optional) + "Ask for file, width and length. Insert psfig macro" + (let ((psfile (read-file-name "PS-file: " "" "" nil)) + (figwidth (read-input "Figure width: ")) + (figheight (read-input "Figure height: ")) + ) + + (insert TeX-grop "figure=" psfile) + (if (not (zerop (length figwidth))) + (insert ",width=" figwidth)) + (if (not (zerop (length figheight))) + (insert ",height=" figheight)) + (insert TeX-grcl) + ) + ) + + +(defun LaTeX-env-psfigure (environment) + "Create with \\label and \\caption and \\psfig commands." + (let ((float (read-input "Float to: " LaTeX-float)) + (caption (read-input "Caption: ")) + (label (read-input "Label: " LaTeX-figure-label)) + ; gf: ask if this should be centered + (psfile (read-file-name "PS-file: " "" "" nil)) + (figwidth (read-input "Figure width: ")) + (figheight (read-input "Figure height: ")) + ) + + (setq LaTeX-float (if (zerop (length float)) + LaTeX-float + float)) + + (LaTeX-insert-environment "figure" + (concat LaTeX-optop LaTeX-float LaTeX-optcl)) + + (insert TeX-esc "centerline" TeX-grop TeX-esc "psfig" TeX-grop + "figure=" psfile) + (if (not (zerop (length figwidth))) + (insert ",width=" figwidth)) + (if (not (zerop (length figheight))) + (insert ",height=" figheight)) + (insert TeX-grcl TeX-grcl) + (if (zerop (length caption)) + () + (newline-and-indent) + (insert TeX-esc "caption" TeX-grop caption TeX-grcl)) + (if (or (zerop (length label)) + (equal LaTeX-figure-label label)) + () + (newline-and-indent) + (insert TeX-esc "label" TeX-grop label TeX-grcl)) + + (forward-line 2))) + +;;; psfig.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/report.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/report.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,11 @@ +;;; report.el - Special code for report style. + +;; $Id: report.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "report" + (function (lambda () + (setq LaTeX-largest-level (LaTeX-section-level "chapter"))))) + +;;; report.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/slides.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/slides.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,52 @@ +;;; slides.el - Special code for slitex. +;; +;; $Id: slides.el,v 1.1 1997/02/20 02:15:43 steve Exp $ + +(require 'latex) + +;;; Code: + +(TeX-add-style-hook "slides" + (function + (lambda () + (setq LaTeX-default-style "slides") + (add-hook 'LaTeX-document-style-hook 'LaTeX-style-slides) + (LaTeX-add-environments '("slide" LaTeX-env-slide) + '("overlay" LaTeX-env-slide)) + (TeX-run-style-hooks "SLITEX")))) + +(defvar LaTeX-slide-color "" + "*Default slide color.") + + (make-variable-buffer-local 'LaTeX-slide-color) + +(defun LaTeX-style-slides () + "Prompt for and insert SliTeX options." + (let ((slide-file (read-input "Slide file: ")) + (slide-colors (read-input "Slide colors (comma separetade list): " + "black"))) + (save-excursion + (goto-char (point-min)) ; insert before \end{document} + (if (re-search-forward ".end.document." (point-max) t) + (beginning-of-line 1)) + (open-line 2) + (indent-relative-maybe) + (if (equal slide-colors "black") + (insert TeX-esc "blackandwhite" + TeX-grop slide-file TeX-grcl) + (progn + (insert TeX-esc "colors" + TeX-grop slide-colors TeX-grcl) + (newline-and-indent) + (insert TeX-esc "colorslides" + TeX-grop slide-file TeX-grcl)))))) + +(defun LaTeX-env-slide (environment) + "Insert ENVIRONMENT and prompt for slide colors." + (setq LaTeX-slide-color + (read-input "Slide colors: " LaTeX-slide-color)) + (LaTeX-insert-environment environment + (concat TeX-grop LaTeX-slide-color TeX-grcl))) + + +;;; slides.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/swedish.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/swedish.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,13 @@ +;;; swedish.el - Setup AUC TeX for editing Swedish text. + +;; $Id: swedish.el,v 1.1 1997/02/20 02:15:44 steve Exp $ + +;;; Commentary: +;; +;; Apparently the Swedes use ''this style'' quotations. + +(TeX-add-style-hook "swedish" + (function (lambda () + (make-local-variable 'TeX-open-quote) + (setq TeX-open-quote "''") + (run-hooks 'TeX-language-sv-hook)))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/style/virtex.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/virtex.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,83 @@ +;;; virtex.el - Common code for all TeX formats. + +;; $Id: virtex.el,v 1.1 1997/02/20 02:15:44 steve Exp $ + +;;; Code: + +(TeX-add-style-hook "virtex" + (function + (lambda () + (TeX-add-symbols "/" "above" "abovedisplayshortskip" + "abovedisplayskip" "abovewithdelims" "accent" + "adjdemerits" "advance" "afterassignment" + "aftergroup" "atop" "atopwithdelims" "badness" + "baselineskip" "batchmode" "begingroup" + "belowdisplayshortskip" "belowdisplayskip" + "binoppenalty" "botmark" "box" "boxmaxdepth" + "brokenpenalty" "catcode" "char" "chardef" + "cleaders" "closein" "closeout" "clubpenalty" + "copy" "count" "countdef" "cr" "crcr" "csname" + "day" "deadcycles" "def" "defaulthyphenchar" + "defaultskewchar" "delcode" "delimiter" + "delimiterfactor" "delimitershortfall" "dimen" + "dimendef" "discretionary" "displayindent" + "displaylimits" "displaystyle" + "displaywidowpenalty" "displaywidth" "divide" + "doublehyphendemerits" "dp" "dump" "edef" "else" + "emergencystretch" "end" "endcsname" "endgroup" + "endinput" "endlinechar" "eqno" "errhelp" + "errmessage" "errorcontextlines" "errorstopmode" + "escapechar" "everycr" "everydisplay" + "everyhbox" "everyjob" "everymath" "everypar" + "everyvbox" "exhyphenpenalty" "expandafter" + "fam" "fi" "finalhyphendemerits" "firstmark" + "floatingpenalty" "font" "fontdimen" "fontname" + "futurelet" "gdef" "global" "globaldefs" + "halign" "hangafter" "hangindent" "hbadness" + "hbox" "hfil" "hfill" "hfilneg" "hfuzz" + "hoffset" "holdinginserts" "hrule" "hsize" + "hskip" "hss" "ht" "hyphenpenation" "hyphenchar" + "hyphenpenalty" "if" "ifcase" "ifcat" "ifdim" + "ifeof" "iffalse" "ifhbox" "ifinner" "ifhmode" + "ifmmode" "ifnum" "ifodd" "iftrue" "ifvbox" + "ifvoid" "ifx" "ignorespaces" "immediate" + "indent" "input" "inputlineno" "insert" + "insertpenalties" "interlinepenalty" "jobname" + "kern" "language" "lastbox" "lastkern" + "lastpenalty" "lastskip" "lccode" "leaders" + "left" "lefthyphenmin" "leftskip" "leqno" "let" + "limits" "linepenalty" "lineskip" + "lineskiplimit" "long" "looseness" "lower" + "lowercase" "mag" "markaccent" "mathbin" + "mathchar" "mathchardef" "mathchoise" + "mathclose" "mathcode" "mathinner" "mathhop" + "mathopen" "mathord" "mathpunct" "mathrel" + "mathsurround" "maxdeadcycles" "maxdepth" + "meaning" "medmuskip" "message" "mkern" "month" + "moveleft" "moveright" "mskip" "multiply" + "muskip" "muskipdef" "newlinechar" "noalign" + "noboundary" "noexpand" "noindent" "nolimits" + "nonscript" "nonstopmode" "nulldelimiterspace" + "nullfont" "number" "omit" "openin" "openout" + "or" "outer" "output" "outputpenalty" + "overfullrule" "parfillskip" "parindent" + "parskip" "pausing" "postdisplaypenalty" + "predisplaypenalty" "predisplaysize" + "pretolerance" "relpenalty" "rightskip" + "scriptspace" "showboxbreadth" "showboxdepth" + "smallskipamount" "spaceskip" "splitmaxdepth" + "splittopskip" "tabskip" "thickmuskip" + "thinmuskip" "time" "tolerance" "topskip" + "tracingcommands" "tracinglostchars" + "tracingmacros" "tracingonline" "tracingoutput" + "tracingpages" "tracingparagraphs" + "tracingrestores" "tracingstats" "uccode" + "uchyph" "underline" "unhbox" "unhcopy" "unkern" + "unpenalty" "unskip" "unvbox" "unvcopy" + "uppercase" "vadjust" "valign" "vbadness" "vbox" + "vcenter" "vfil" "vfill" "vfilneg" "vfuzz" + "voffset" "vrule" "vsize" "vskip" "vss" "vtop" + "wd" "widowpenalty" "write" "xdef" "xleaders" + "xspaceskip" "year")))) + +;;; virtex.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/tex-buf.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/tex-buf.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,1610 @@ +;;; tex-buf.el - External commands for AUC TeX. +;; +;; Maintainer: Per Abrahamsen +;; Version: 9.7i + +;; Copyright (C) 1991 Kresten Krab Thorup +;; Copyright (C) 1993, 1996 Per Abrahamsen +;; +;; 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 1, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Code: + +(defvar no-doc + "This function is part of AUC TeX, but has not yet been loaded. +Full documentation will be available after autoloading the function." + "Documentation for autoload functions.") + +;;; Customization: + +(defvar TeX-process-asynchronous (not (eq system-type 'ms-dos)) + "*Use asynchronous processes.") + +(defvar TeX-shell + (if (memq system-type '(ms-dos emx windows-nt)) + shell-file-name + "/bin/sh") + "Name of shell used to parse TeX commands.") + +(defvar TeX-shell-command-option + (cond ((memq system-type '(ms-dos emx windows-nt) ) + (cond ((boundp 'shell-command-option) + shell-command-option) + ((boundp 'shell-command-switch) + shell-command-switch) + (t + "/c"))) + (t ;Unix & EMX (Emacs 19 port to OS/2) + "-c")) + "Shell argument indicating that next argument is the command.") + +;;; Interactive Commands +;; +;; The general idea is, that there is one process and process buffer +;; associated with each master file, and one process and process buffer +;; for running TeX on a region. Thus, if you have N master files, you +;; can run N + 1 processes simultaneously. +;; +;; Some user commands operates on ``the'' process. The following +;; algorithm determine what ``the'' process is. +;; +;; IF last process started was on a region +;; THEN ``the'' process is the region process +;; ELSE ``the'' process is the master file (of the current buffer) process + +(defun TeX-save-document (name) + "Save all files belonging to the current document. +Return non-nil if document need to be re-TeX'ed." + (interactive (list (TeX-master-file))) + (if (string-equal name "") + (setq name (TeX-master-file))) + + (TeX-check-files (concat name ".dvi") + (cons name (TeX-style-list)) + TeX-file-extensions)) + +(defun TeX-command-master () + "Run command on the current document." + (interactive) + (TeX-command (TeX-command-query (TeX-master-file)) 'TeX-master-file)) + +(defvar TeX-command-region-begin nil) +(defvar TeX-command-region-end nil) +;; Used for marking the last region. + +(make-variable-buffer-local 'TeX-command-region-begin) +(make-variable-buffer-local 'TeX-command-region-end) + +(defun TeX-command-region (&optional old) + "Run TeX on the current region. + +Query the user for a command to run on the temporary file specified by +the variable TeX-region. If the chosen command is so marked in +TeX-command-list, and no argument (or nil) is given to the command, +the region file file be recreated with the current region. If mark is +not active, the new text in the previous used region will be used. + +If the master file for the document has a header, it is written to the +temporary file before the region itself. The document's header is all +text before TeX-header-end. + +If the master file for the document has a trailer, it is written to +the temporary file before the region itself. The document's trailer is +all text after TeX-trailer-start." + (interactive "P") + (if (and (TeX-mark-active) (not old)) + (let ((begin (min (point) (mark))) + (end (max (point) (mark)))) + (if TeX-command-region-begin + () + (setq TeX-command-region-begin (make-marker) + TeX-command-region-end (make-marker))) + (set-marker TeX-command-region-begin begin) + (set-marker TeX-command-region-end end))) + (if (null TeX-command-region-begin) + (error "Mark not set")) + (let ((begin (marker-position TeX-command-region-begin)) + (end (marker-position TeX-command-region-end))) + (TeX-region-create (TeX-region-file TeX-default-extension) + (buffer-substring begin end) + (file-name-nondirectory (buffer-file-name)) + (count-lines (save-restriction (widen) (point-min)) + begin))) + (TeX-command (TeX-command-query (TeX-region-file)) 'TeX-region-file)) + +(defun TeX-command-buffer () + "Run TeX on the current buffer. + +Query the user for a command to run on the temporary file specified by +the variable TeX-region. The region file file be recreated from the +visible part of the buffer." + (interactive) + (let ((TeX-command-region-begin (point-min-marker)) + (TeX-command-region-end (point-max-marker))) + (TeX-command-region t))) + +(defun TeX-recenter-output-buffer (line) + "Redisplay buffer of TeX job output so that most recent output can be seen. +The last line of the buffer is displayed on line LINE of the window, or +at bottom if LINE is nil." + (interactive "P") + (let ((buffer (TeX-active-buffer))) + (if buffer + (let ((old-buffer (current-buffer))) + (pop-to-buffer buffer t) + (bury-buffer buffer) + (goto-char (point-max)) + (recenter (if line + (prefix-numeric-value line) + (/ (window-height) 2))) + (pop-to-buffer old-buffer)) + (message "No process for this document.")))) + +(defun TeX-kill-job () + "Kill the currently running TeX job." + (interactive) + (let ((process (TeX-active-process))) + (if process + (kill-process process) + ;; Should test for TeX background process here. + (error "No TeX process to kill")))) + +(defun TeX-home-buffer () + "Go to the buffer where you last issued a TeX command. +If there is no such buffer, or you already are in that buffer, find +the master file." + (interactive) + (if (or (null TeX-command-buffer) + (eq TeX-command-buffer (current-buffer))) + (find-file (TeX-master-file TeX-default-extension)) + (switch-to-buffer TeX-command-buffer))) + +(defun TeX-next-error (reparse) + "Find the next error in the TeX output buffer. +Prefix by C-u to start from the beginning of the errors." + (interactive "P") + (if (null (TeX-active-buffer)) + (error "No TeX output buffer") + (funcall (TeX-process-get-variable (TeX-active-master) 'TeX-parse-function) + reparse))) + +(defun TeX-toggle-debug-boxes () + "Toggle if the debugger should display \"bad boxes\" too." + (interactive) + (cond (TeX-debug-bad-boxes + (setq TeX-debug-bad-boxes nil)) + (t + (setq TeX-debug-bad-boxes t))) + (message (concat "TeX-debug-bad-boxes: " (cond (TeX-debug-bad-boxes "on") + (t "off"))))) + +;;; Command Query + +(defun TeX-command (name file) + "Run command NAME on the file you get by calling FILE. + +FILE is a function return a file name. It has one optional argument, +the extension to use on the file. + +Use the information in TeX-command-list to determine how to run the +command." + (setq TeX-current-process-region-p (eq file 'TeX-region-file)) + (let ((command (TeX-command-expand (nth 1 (assoc name TeX-command-list)) + file)) + (hook (nth 2 (assoc name TeX-command-list))) + (confirm (nth 3 (assoc name TeX-command-list)))) + + ;; Verify the expanded command + (if confirm + (setq command + (read-from-minibuffer (concat name " command: ") command))) + + ;; Now start the process + (TeX-process-set-variable name 'TeX-command-next TeX-command-Show) + (apply hook name command (apply file nil) nil))) + +(defun TeX-command-expand (command file &optional list) + "Expand COMMAND for FILE as described in LIST. +LIST default to TeX-expand-list." + (if (null list) + (setq list TeX-expand-list)) + (while list + (let ((case-fold-search nil) ; Do not ignore case. + (string (car (car list))) ;First element + (expansion (car (cdr (car list)))) ;Second element + (arguments (cdr (cdr (car list))))) ;Remaining elements + (while (string-match string command) + (let ((prefix (substring command 0 (match-beginning 0))) + (postfix (substring command (match-end 0)))) + (setq command (concat prefix + (cond ((TeX-function-p expansion) + (apply expansion arguments)) + ((boundp expansion) + (apply (eval expansion) arguments)) + (t + (error "Nonexpansion %s" expansion))) + postfix))))) + (setq list (cdr list))) + command) + +(defun TeX-check-files (derived originals extensions) + "Check that DERIVED is newer than any of the ORIGINALS. +Try each original with each member of EXTENSIONS, in all directories +in TeX-check-path." + (let ((found nil) + (regexp (concat "\\`\\(" + (mapconcat (function (lambda (dir) + (regexp-quote (expand-file-name dir)))) + TeX-check-path "\\|") + "\\).*\\(" + (mapconcat 'regexp-quote originals "\\|") + "\\)\\.\\(" + (mapconcat 'regexp-quote extensions "\\|") + "\\)\\'")) + (buffers (buffer-list))) + (while buffers + (let* ((buffer (car buffers)) + (name (buffer-file-name buffer))) + (setq buffers (cdr buffers)) + (if (and name (string-match regexp name)) + (progn + (and (buffer-modified-p buffer) + (or (not TeX-save-query) + (y-or-n-p (concat "Save file " + (buffer-file-name buffer) + "? "))) + (save-excursion (set-buffer buffer) (save-buffer))) + (if (file-newer-than-file-p name derived) + (setq found t)))))) + found)) + +(defvar TeX-save-query t + "*If non-nil, ask user for permission to save files before starting TeX.") + +(defun TeX-command-query (name) + "Query the user for a what TeX command to use." + (let* ((default (cond ((if (string-equal name TeX-region) + (TeX-check-files (concat name ".dvi") + (list name) + TeX-file-extensions) + (TeX-save-document (TeX-master-file))) + TeX-command-default) + ((and (eq major-mode 'latex-mode) + (TeX-check-files (concat name ".bbl") + (mapcar 'car + (LaTeX-bibliography-list)) + BibTeX-file-extensions)) + ;; We should check for bst files here as well. + TeX-command-BibTeX) + ((TeX-process-get-variable name + 'TeX-command-next + TeX-command-Show)) + (TeX-command-Show))) + (completion-ignore-case t) + (answer (or TeX-command-force + (completing-read + (concat "Command: (default " default ") ") + TeX-command-list nil t)))) + ;; If the answer "latex" it will not be expanded to "LaTeX" + (setq answer (car-safe (TeX-assoc answer TeX-command-list))) + (if (and answer + (not (string-equal answer ""))) + answer + default))) + +(defvar TeX-command-next nil + "The default command next time TeX-command is invoked.") + + (make-variable-buffer-local 'TeX-command-next) + +(defun TeX-printer-query (&optional command element) + "Query the user for a printer name. +COMMAND is the default command to use if the entry for the printer in +TeX-printer-list does not itself have it specified in the ELEMENT'th +entry." + (or command (setq command TeX-print-command)) + (or element (setq element 1)) + (let ((printer (if TeX-printer-list + (let ((completion-ignore-case t)) + (completing-read (concat "Printer: (default " + TeX-printer-default ") ") + TeX-printer-list)) + ""))) + + (setq printer (or (car-safe (TeX-assoc printer TeX-printer-list)) + printer)) + (if (or (null printer) (string-equal "" printer)) + (setq printer TeX-printer-default) + (setq TeX-printer-default printer)) + + (let ((expansion (let ((entry (assoc printer TeX-printer-list))) + (if (and entry (nth element entry)) + (nth element entry) + command)))) + (if (string-match "%p" printer) + (error "Don't use %s in printer names" "%p")) + (while (string-match "%p" expansion) + (setq expansion (concat (substring expansion 0 (match-beginning 0)) + printer + (substring expansion (match-end 0))))) + expansion))) + +(defun TeX-style-check (styles) + "Check STYLES compared to the current style options." + + (let ((files (TeX-style-list))) + (while (and styles + (not (TeX-member (car (car styles)) files 'string-match))) + (setq styles (cdr styles)))) + (if styles + (nth 1 (car styles)) + "")) + +;;; Command Hooks + +(defvar TeX-after-start-process-function nil + "Hooks to run after starting an asynchronous process. +Used by Japanese TeX to set the coding system.") + +(defvar TeX-show-compilation nil + "*If non-nil, show output of TeX compilation in other window.") + +(defun TeX-run-command (name command file) + "Create a process for NAME using COMMAND to process FILE. +Return the new process." + (let ((default TeX-command-default) + (buffer (TeX-process-buffer-name file)) + (dir (TeX-master-directory))) + (TeX-process-check file) ; Check that no process is running + (setq TeX-command-buffer (current-buffer)) + (get-buffer-create buffer) + (set-buffer buffer) + (erase-buffer) + (if dir (cd dir)) + (insert "Running `" name "' on `" file "' with ``" command "''\n") + (setq mode-name name) + (if TeX-show-compilation + (display-buffer buffer) + (message "Type `C-c C-l' to display results of compilation.")) + (setq TeX-parse-function 'TeX-parse-command) + (setq TeX-command-default default) + (setq TeX-sentinel-function + (function (lambda (process name) + (message (concat name ": done."))))) + (if TeX-process-asynchronous + (let ((process (start-process name buffer TeX-shell + TeX-shell-command-option command))) + (if TeX-after-start-process-function + (funcall TeX-after-start-process-function process)) + (TeX-command-mode-line process) + (set-process-filter process 'TeX-command-filter) + (set-process-sentinel process 'TeX-command-sentinel) + (set-marker (process-mark process) (point-max)) + (setq compilation-in-progress (cons process compilation-in-progress)) + process) + (setq mode-line-process ": run") + (set-buffer-modified-p (buffer-modified-p)) + (sit-for 0) ; redisplay + (call-process TeX-shell nil buffer nil + TeX-shell-command-option command)))) + +(defun TeX-run-format (name command file) + "Create a process for NAME using COMMAND to format FILE with TeX." + (let ((buffer (TeX-process-buffer-name file)) + (process (TeX-run-command name command file))) + ;; Hook to TeX debuger. + (save-excursion + (set-buffer buffer) + (TeX-parse-reset) + (setq TeX-parse-function 'TeX-parse-TeX) + (setq TeX-sentinel-function 'TeX-TeX-sentinel) + (if TeX-process-asynchronous + (progn + ;; Updating the mode line. + (setq TeX-current-page "[0]") + (TeX-format-mode-line process) + (set-process-filter process 'TeX-format-filter))) + process))) + +(defun TeX-run-TeX (name command file) + "Create a process for NAME using COMMAND to format FILE with TeX." + (let ((process (TeX-run-format name command file))) + (if TeX-process-asynchronous + process + (TeX-synchronous-sentinel name file process)))) + +(defun TeX-run-LaTeX (name command file) + "Create a process for NAME using COMMAND to format FILE with TeX." + (let ((process (TeX-run-format name command file))) + (setq TeX-sentinel-function 'TeX-LaTeX-sentinel) + (if TeX-process-asynchronous + process + (TeX-synchronous-sentinel name file process)))) + +(defun TeX-run-BibTeX (name command file) + "Create a process for NAME using COMMAND to format FILE with BibTeX." + (let ((process (TeX-run-command name command file))) + (setq TeX-sentinel-function 'TeX-BibTeX-sentinel) + (if TeX-process-asynchronous + process + (TeX-synchronous-sentinel name file process)))) + +(defun TeX-run-compile (name command file) + "Ignore first and third argument, start compile with second argument." + (compile command)) + +(defun TeX-run-shell (name command file) + "Ignore first and third argument, start shell-command with second argument." + (shell-command command) + (if (eq system-type 'ms-dos) + (redraw-display))) + +(defun TeX-run-discard (name command file) + "Start process with second argument, discarding its output." + (process-kill-without-query (start-process (concat name " discard") + nil TeX-shell + TeX-shell-command-option + command))) + +(defun TeX-run-dviout (name command file) + "Call process wbith second argument, discarding its output. With support +for the dviout previewer, especially when used with PC-9801 series." + (if (and (boundp 'dos-machine-type) (eq dos-machine-type 'pc98)) ;if PC-9801 + (send-string-to-terminal "\e[2J")) ; clear screen + (call-process TeX-shell (if (eq system-type 'ms-dos) "con") nil nil + TeX-shell-command-option command) + (if (eq system-type 'ms-dos) + (redraw-display))) + +(defun TeX-run-background (name command file) + "Start process with second argument, show output when and if it arrives." + (let ((dir (TeX-master-directory))) + (set-buffer (get-buffer-create "*TeX background*")) + (if dir (cd dir)) + (erase-buffer) + (let ((process (start-process (concat name " background") + nil TeX-shell + TeX-shell-command-option command))) + (if TeX-after-start-process-function + (funcall TeX-after-start-process-function process)) + (set-process-filter process 'TeX-background-filter) + (process-kill-without-query process)))) + +(defun TeX-run-interactive (name command file) + "Run TeX interactively. +Run command in a buffer (in comint-shell-mode) so that it accepts user +interaction. If you return to the file buffer after the TeX run, +Error parsing on C-x ` should work with a bit of luck." + (require 'comint) + (let ((default TeX-command-default) + (buffer (TeX-process-buffer-name file)) + (process nil) + (dir (TeX-master-directory))) + (TeX-process-check file) ; Check that no process is running + (setq TeX-command-buffer (current-buffer)) + (with-output-to-temp-buffer buffer) + (set-buffer buffer) + (if dir (cd dir)) + (insert "Running `" name "' on `" file "' with ``" command "''\n") + (comint-exec buffer name TeX-shell nil + (list TeX-shell-command-option command)) + (comint-mode) + (setq mode-name name) + (setq TeX-command-default default) + (setq process (get-buffer-process buffer)) + (if TeX-after-start-process-function + (funcall TeX-after-start-process-function process)) + (TeX-command-mode-line process) + (set-process-sentinel process 'TeX-command-sentinel) + (set-marker (process-mark process) (point-max)) + (setq compilation-in-progress (cons process compilation-in-progress)) + (TeX-parse-reset) + (setq TeX-parse-function 'TeX-parse-TeX) + (setq TeX-sentinel-function 'TeX-LaTeX-sentinel))) + +;;; Command Sentinels + +(defun TeX-synchronous-sentinel (name file result) + "Process TeX command output buffer after the process dies." + (let* ((buffer (TeX-process-buffer file))) + (save-excursion + (set-buffer buffer) + + ;; Append post-mortem information to the buffer + (goto-char (point-max)) + (insert "\n" mode-name (if (and result (zerop result)) + " finished" " exited") " at " + (substring (current-time-string) 0 -5)) + (setq mode-line-process ": exit") + + ;; Do command specific actions. + (setq TeX-command-next TeX-command-Show) + (goto-char (point-min)) + (apply TeX-sentinel-function nil name nil) + + ;; Force mode line redisplay soon + (set-buffer-modified-p (buffer-modified-p))))) + +(defun TeX-command-sentinel (process msg) + "Process TeX command output buffer after the process dies." + (let* ((buffer (process-buffer process)) + (name (process-name process))) + (cond ((null (buffer-name buffer)) ; buffer killed + (set-process-buffer process nil) + (set-process-sentinel process nil)) + ((memq (process-status process) '(signal exit)) + (save-excursion + (set-buffer buffer) + + ;; Append post-mortem information to the buffer + (goto-char (point-max)) + (insert "\n" mode-name " " msg) + (forward-char -1) + (insert " at " + (substring (current-time-string) 0 -5)) + (forward-char 1) + + ;; Do command specific actions. + (TeX-command-mode-line process) + (setq TeX-command-next TeX-command-Show) + (goto-char (point-min)) + (apply TeX-sentinel-function process name nil) + + + ;; If buffer and mode line will show that the process + ;; is dead, we can delete it now. Otherwise it + ;; will stay around until M-x list-processes. + (delete-process process) + + ;; Force mode line redisplay soon + (set-buffer-modified-p (buffer-modified-p)))))) + (setq compilation-in-progress (delq process compilation-in-progress))) + + +(defvar TeX-sentinel-function (function (lambda (process name))) + "Hook to cleanup TeX command buffer after temination of PROCESS. +NAME is the name of the process.") + + (make-variable-buffer-local 'TeX-sentinel-function) + +(defun TeX-TeX-sentinel (process name) + "Cleanup TeX output buffer after running TeX." + (if (TeX-TeX-sentinel-check process name) + () + (message (concat name ": formatted " (TeX-current-pages))) + (setq TeX-command-next TeX-command-Show))) + +(defun TeX-current-pages () + ;; String indictating the number of pages formatted. + (cond ((null TeX-current-page) + "some pages.") + ((string-match "[^0-9]1[^0-9]" TeX-current-page) + (concat TeX-current-page " page.")) + (t + (concat TeX-current-page " pages.")))) + +(defun TeX-TeX-sentinel-check (process name) + "Cleanup TeX output buffer after running TeX. +Return nil ifs no errors were found." + (save-excursion + (goto-char (point-max)) + (if (re-search-backward "^Output written on.* (\\([0-9]+\\) page" nil t) + (setq TeX-current-page (concat "{" (TeX-match-buffer 1) "}")))) + (if process (TeX-format-mode-line process)) + (if (re-search-forward "^! " nil t) + (progn + (message (concat name " errors in `" (buffer-name) + "'. Use C-c ` to display.")) + (setq TeX-command-next TeX-command-default) + t) + (setq TeX-command-next TeX-command-Show) + nil)) + +(defun TeX-LaTeX-sentinel (process name) + "Cleanup TeX output buffer after running LaTeX." + (cond ((TeX-TeX-sentinel-check process name)) + ((and (save-excursion + (re-search-forward "^LaTeX Warning: Citation" nil t)) + (let ((current (current-buffer))) + (set-buffer TeX-command-buffer) + (prog1 (and (LaTeX-bibliography-list) + (TeX-check-files (TeX-master-file "bbl") + (TeX-style-list) + (append TeX-file-extensions + BibTeX-file-extensions))) + (set-buffer current)))) + (message (concat "You should run BibTeX to get citations right, " + (TeX-current-pages))) + (setq TeX-command-next TeX-command-BibTeX)) + ((re-search-forward "^LaTeX Warning: Label(s)" nil t) + (message (concat "You should run LaTeX again " + "to get references right, " + (TeX-current-pages))) + (setq TeX-command-next TeX-command-default)) + ((re-search-forward "^LaTeX Warning: Reference" nil t) + (message (concat name ": there were unresolved references, " + (TeX-current-pages))) + (setq TeX-command-next TeX-command-Show)) + ((re-search-forward "^LaTeX Warning: Citation" nil t) + (message (concat name ": there were unresolved citations, " + (TeX-current-pages))) + (setq TeX-command-next TeX-command-Show)) + ((re-search-forward + "^\\(\\*\\* \\)?J?I?p?\\(La\\|Sli\\)TeX\\(2e\\)? \\(Version\\|ver\\.\\|<[0-9/]*>\\)" nil t) + (message (concat name ": successfully formatted " + (TeX-current-pages))) + (setq TeX-command-next TeX-command-Show)) + (t + (message (concat name ": problems after " + (TeX-current-pages))) + (setq TeX-command-next TeX-command-default)))) + +(defun TeX-BibTeX-sentinel (process name) + "Cleanup TeX output buffer after running BibTeX." + (message "You should perhaps run LaTeX again to get citations right.") + (setq TeX-command-next TeX-command-default)) + +;;; Process Control + + +;; This variable is chared with `compile.el'. +(defvar compilation-in-progress nil + "List of compilation processes now running.") + +(or (assq 'compilation-in-progress minor-mode-alist) + (setq minor-mode-alist (cons '(compilation-in-progress " Compiling") + minor-mode-alist))) + +(defun TeX-process-get-variable (name symbol &optional default) + "Return the value in the process buffer for NAME of SYMBOL. + +Return DEFAULT if the process buffer does not exist or SYMBOL is not +defined." + (let ((buffer (TeX-process-buffer name))) + (if buffer + (save-excursion + (set-buffer buffer) + (if (boundp symbol) + (eval symbol) + default)) + default))) + +(defun TeX-process-set-variable (name symbol value) + "Set the variable SYMBOL in the process buffer to VALUE. +Return nil iff no process buffer exist." + (let ((buffer (TeX-process-buffer name))) + (if buffer + (save-excursion + (set-buffer buffer) + (set symbol value) + t) + nil))) + +(defun TeX-process-check (name) + "Check if a process for the TeX document NAME already exist. +If so, give the user the choice of aborting the process or the current +command." + (let ((process (TeX-process name))) + (cond ((null process)) + ((not (eq (process-status process) 'run))) + ((yes-or-no-p (concat "Process `" + (process-name process) + "' for document `" + name + "' running, kill it? ")) + (delete-process process)) + (t + (error "Cannot have two processes for the same document"))))) + +(defun TeX-process-buffer-name (name) + "Return name of AUC TeX buffer associated with the document NAME." + (concat "*" (abbreviate-file-name (expand-file-name name)) " output*")) + +(defun TeX-process-buffer (name) + "Return the AUC TeX buffer associated with the document NAME." + (get-buffer (TeX-process-buffer-name name))) + +(defun TeX-process (name) + "Return AUC TeX process associated with the document NAME." + (and TeX-process-asynchronous + (get-buffer-process (TeX-process-buffer name)))) + +;;; Process Filters + +(defun TeX-command-mode-line (process) + "Format the mode line for a buffer containing output from PROCESS." + (setq mode-line-process (concat ": " + (symbol-name (process-status process)))) + (set-buffer-modified-p (buffer-modified-p))) + +(defun TeX-command-filter (process string) + "Filter to process normal output." + (save-excursion + (set-buffer (process-buffer process)) + (save-excursion + (goto-char (process-mark process)) + (insert-before-markers string) + (set-marker (process-mark process) (point))))) + +(defvar TeX-current-page nil + "The page number currently being formatted, enclosed in brackets.") + + (make-variable-buffer-local 'TeX-current-page) + +(defun TeX-format-mode-line (process) + "Format the mode line for a buffer containing TeX output from PROCESS." + (setq mode-line-process (concat " " TeX-current-page ": " + (symbol-name (process-status process)))) + (set-buffer-modified-p (buffer-modified-p))) + +(defun TeX-format-filter (process string) + "Filter to process TeX output." + (save-excursion + (set-buffer (process-buffer process)) + (save-excursion + (goto-char (process-mark process)) + (insert-before-markers string) + (set-marker (process-mark process) (point))) + (save-excursion + (save-match-data + (if (re-search-backward "\\[[0-9]+\\(\\.[0-9\\.]+\\)?\\]" nil t) + (setq TeX-current-page (TeX-match-buffer 0))))) + (TeX-format-mode-line process))) + +(defvar TeX-parse-function nil + "Function to call to parse content of TeX output buffer.") + (make-variable-buffer-local 'TeX-parse-function) + +(defun TeX-background-filter (process string) + "Filter to process background output." + (let ((old-window (selected-window)) + (pop-up-windows t)) + (pop-to-buffer "*TeX background*") + (goto-char (point-max)) + (insert string) + (select-window old-window))) + + +;;; Active Process + +(defvar TeX-current-process-region-p nil + "This variable is set to t iff the last TeX command is on a region.") + +(defun TeX-active-process () + "Return the active process for the current buffer." + (if TeX-current-process-region-p + (TeX-process (TeX-region-file)) + (TeX-process (TeX-master-file)))) + +(defun TeX-active-buffer () + "Return the buffer of the active process for this buffer." + (if TeX-current-process-region-p + (TeX-process-buffer (TeX-region-file)) + (TeX-process-buffer (TeX-master-file)))) + +(defun TeX-active-master (&optional extension) + "The master file currently being compiled." + (if TeX-current-process-region-p + (TeX-region-file extension) + (TeX-master-file extension))) + +(defvar TeX-command-buffer nil + "The buffer from where the last TeX command was issued.") + +;;; Region File + +(defun TeX-region-create (file region original offset) + "Create a new file named FILE with the string REGION +The region is taken from ORIGINAL starting at line OFFSET. + +The current buffer and master file is searched, in order to ensure +that the TeX header and trailer information is also included. + +The OFFSET is used to provide the debugger with information about the +original file." + (let* (;; We shift buffer a lot, so we must keep track of the buffer + ;; local variables. + (header-end TeX-header-end) + (trailer-start TeX-trailer-start) + + ;; We seach for header and trailer in the master file. + (master-name (TeX-master-file TeX-default-extension)) + (master-buffer (find-file-noselect master-name)) + + ;; Attempt to disable font lock. + (font-lock-defaults-alist nil) + (font-lock-defaults nil) + (font-lock-maximum-size 0) + (font-lock-mode-hook nil) + (font-lock-auto-fontify nil) + (font-lock-mode-enable-list nil) + ;; And insert them into the FILE buffer. + (file-buffer (find-file-noselect file)) + ;; But remember original content. + original-content + + ;; We search for the header from the master file, if it is + ;; not present in the region. + (header (if (string-match header-end region) + "" + (save-excursion + (save-restriction + (set-buffer master-buffer) + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + ;; NOTE: We use the local value of + ;; TeX-header-end from the master file. + (if (not (re-search-forward TeX-header-end nil t)) + "" + (re-search-forward "[\r\n]" nil t) + (buffer-substring (point-min) (point))))))))) + + ;; We search for the trailer from the master file, if it is + ;; not present in the region. + (trailer-offset 0) + (trailer (if (string-match trailer-start region) + "" + (save-excursion + (save-restriction + (set-buffer master-buffer) + (save-excursion + (save-restriction + (widen) + (goto-char (point-max)) + ;; NOTE: We use the local value of + ;; TeX-trailer-start from the master file. + (if (not (re-search-backward TeX-trailer-start nil t)) + "" + ;;(beginning-of-line 1) + (re-search-backward "[\r\n]" nil t) + (setq trailer-offset + (count-lines (point-min) (point))) + (buffer-substring (point) (point-max)))))))))) + (save-excursion + (set-buffer file-buffer) + (setq original-content (buffer-string)) + (erase-buffer) + (insert "\\message{ !name(" master-name ")}" + header + "\n\\message{ !name(" original ") !offset(") + (insert (int-to-string (- offset + (count-lines (point-min) (point)))) + ") }\n" + region + "\n\\message{ !name(" master-name ") !offset(") + (insert (int-to-string (- trailer-offset + (count-lines (point-min) (point)))) + ") }\n" + trailer) + (if (string-equal (buffer-string) original-content) + (set-buffer-modified-p nil) + (save-buffer 0))))) + +(defun TeX-region-file (&optional extension nondirectory) + "Return TeX-region file name with EXTENSION. +If optional second argument NONDIRECTORY is nil, do not include +the directory." + (concat (if nondirectory "" (TeX-master-directory)) + (cond ((eq extension t) + (concat TeX-region "." TeX-default-extension)) + (extension + (concat TeX-region "." extension)) + (t + TeX-region)))) + +(defvar TeX-region "_region_" + "*Base name for temporary file for use with TeX-region.") + +;;; Parsing + +;;; - Global Parser Variables + +(defvar TeX-error-point nil + "How far we have parsed until now.") + + (make-variable-buffer-local 'TeX-error-point) + +(defvar TeX-error-file nil + "Stack of files in which errors have occured") + + (make-variable-buffer-local 'TeX-error-file) + +(defvar TeX-error-offset nil + "Add this to any line numbers from TeX. Stack like TeX-error-file.") + + (make-variable-buffer-local 'TeX-error-offset) + +(defun TeX-parse-reset () + "Reset all variables used for parsing TeX output." + (setq TeX-error-point (point-min)) + (setq TeX-error-offset nil) + (setq TeX-error-file nil)) + +;;; - Parsers Hooks + +(defun TeX-parse-command (reparse) + "We can't parse anything but TeX." + (error "I cannot parse %s output, sorry" + (if (TeX-active-process) + (process-name (TeX-active-process)) + "this"))) + +(defun TeX-parse-TeX (reparse) + "Find the next error produced by running TeX. +Prefix by C-u to start from the beginning of the errors. + +If the file occurs in an included file, the file is loaded (if not +already in an Emacs buffer) and the cursor is placed at the error." + + (let ((old-buffer (current-buffer))) + (pop-to-buffer (TeX-active-buffer)) + (if reparse + (TeX-parse-reset)) + (goto-char TeX-error-point) + (TeX-parse-error old-buffer))) + +;;; - Parsing (La)TeX + +(defvar TeX-translate-location-hook nil + "List of functions to be called before showing an error or warning. + +You might want to examine and modify the free variables `file', +`offset', `line', `string', `error', and `context' from this hook.") + +(defun TeX-parse-error (old) + "Goto next error. Pop to OLD buffer if no more errors are found." + (while + (progn + (re-search-forward (concat "\\(" + "^! \\|" + "(\\|" + ")\\|" + "\\'\\|" + "!offset([---0-9]*)\\|" + "!name([^)]*)\\|" + "^.*erfull \\\\.*[0-9]*--[0-9]*\\|" + "^LaTeX Warning: .*[0-9]+\\.$" + "\\)")) + (let ((string (TeX-match-buffer 1))) + + (cond (;; TeX error + (string= string "! ") + (TeX-error) + nil) + + ;; LaTeX warning + ((string-match (concat "\\(" + "^.*erfull \\\\.*[0-9]*--[0-9]*\\|" + "^LaTeX Warning: .*[0-9]+\\.$" + "\\)") + + string) + (TeX-warning string)) + + ;; New file -- Push on stack + ((string= string "(") + (re-search-forward "\\([^()\n \t]*\\)") + (setq TeX-error-file + (cons (TeX-match-buffer 1) TeX-error-file)) + (setq TeX-error-offset (cons 0 TeX-error-offset)) + t) + + ;; End of file -- Pop from stack + ((string= string ")") + (setq TeX-error-file (cdr TeX-error-file)) + (setq TeX-error-offset (cdr TeX-error-offset)) + t) + + ;; Hook to change line numbers + ((string-match "!offset(\\([---0-9]*\\))" string) + (rplaca TeX-error-offset + (string-to-int (substring string + (match-beginning 1) + (match-end 1)))) + t) + + ;; Hook to change file name + ((string-match "!name(\\([^)]*\\))" string) + (rplaca TeX-error-file (substring string + (match-beginning 1) + (match-end 1))) + t) + + ;; No more errors. + (t + (message "No more errors.") + (beep) + (pop-to-buffer old) + nil)))))) + +(defun TeX-error () + "Display an error." + + (let* (;; We need the error message to show the user. + (error (progn + (re-search-forward "\\(.*\\)") + (TeX-match-buffer 1))) + + ;; And the context for the help window. + (context-start (point)) + + ;; And the line number to position the cursor. + (line (if (re-search-forward "l\\.\\([0-9]+\\)" nil t) + (string-to-int (TeX-match-buffer 1)) + 1)) + ;; And a string of the context to search for. + (string (progn + (beginning-of-line) + (re-search-forward " \\(\\([^ \t]*$\\)\\|\\($\\)\\)") + (TeX-match-buffer 1))) + + ;; And we have now found to the end of the context. + (context (buffer-substring context-start (progn + (forward-line 1) + (end-of-line) + (point)))) + ;; We may use these in another buffer. + (offset (car TeX-error-offset) ) + (file (car TeX-error-file))) + + ;; Remember where we was. + (setq TeX-error-point (point)) + + ;; Find the error. + (if (null file) + (error "Error occured after last TeX file closed")) + (run-hooks 'TeX-translate-location-hook) + (find-file-other-window file) + (goto-line (+ offset line)) + (if (not (string= string " ")) + (search-forward string nil t)) + + ;; Explain the error. + (if TeX-display-help + (TeX-help-error error context) + (message (concat "! " error))))) + +(defun TeX-warning (string) + "Display a warning for STRING. +Return nil if we gave a report." + + (let* ((error (concat "** " string)) + + ;; bad-box is nil if this is a "LaTeX Warning" + (bad-box (string-match "^.*erfull \\\\.*[0-9]*--[0-9]*" string)) + ;; line-string: match 1 is beginning line, match 2 is end line + (line-string (if bad-box " \\([0-9]*\\)--\\([0-9]*\\)" + "on input line \\([0-9]*\\)\\.")) + ;; word-string: match 1 is the word + (word-string (if bad-box "[][\\W() ---]\\(\\w+\\)[][\\W() ---]*$" + "`\\(\\w+\\)'")) + + ;; Get error-line (warning) + (line (progn + (re-search-backward line-string) + (string-to-int (TeX-match-buffer 1)))) + (line-end (if bad-box (string-to-int (TeX-match-buffer 2)) + line)) + + ;; Find the context + (context-start (progn (if bad-box (end-of-line) + (beginning-of-line)) + (point))) + + (context (progn + (forward-line 1) + (end-of-line) + (while (equal (current-column) 79) + (forward-line 1) + (end-of-line)) + (buffer-substring context-start (point)))) + + ;; This is where we want to be. + (error-point (point)) + + ;; Now find the error word. + (string (progn + (re-search-backward word-string + context-start t) + (TeX-match-buffer 1))) + + ;; We might use these in another file. + (offset (car TeX-error-offset)) + (file (car TeX-error-file))) + + ;; This is where we start next time. + (goto-char error-point) + (setq TeX-error-point (point)) + + ;; Go back to TeX-buffer + (if TeX-debug-bad-boxes + (progn + (run-hooks 'TeX-translate-location-hook) + (find-file-other-window file) + ;; Find line and string + (goto-line (+ offset line)) + (beginning-of-line 0) + (let ((start (point))) + (goto-line (+ offset line-end)) + (end-of-line) + (search-backward string start t) + (search-forward string nil t)) + ;; Display help + (if TeX-display-help + (TeX-help-error error (if bad-box context (concat "\n" context))) + (message (concat "! " error))) + nil) + t))) + +;;; - Help + +(defun TeX-help-error (error output) + "Print ERROR in context OUTPUT in another window." + + (let ((old-buffer (current-buffer)) + (log-file (TeX-active-master "log")) + (TeX-error-pointer 1)) + + ;; Find help text entry. + (while (not (string-match (car (nth TeX-error-pointer + TeX-error-description-list)) + error)) + (setq TeX-error-pointer (+ TeX-error-pointer 1))) + + (pop-to-buffer (get-buffer-create "*TeX Help*")) + (erase-buffer) + (insert "ERROR: " error + "\n\n--- TeX said ---" + output + "\n--- HELP ---\n" + (save-excursion + (if (and (string= (cdr (nth TeX-error-pointer + TeX-error-description-list)) + "No help available") + (let* ((log-buffer (find-file-noselect log-file))) + (set-buffer log-buffer) + (auto-save-mode nil) + (setq buffer-read-only t) + (goto-line (point-min)) + (search-forward error nil t 1))) + (progn + (re-search-forward "^l.") + (re-search-forward "^ [^\n]+$") + (forward-char 1) + (let ((start (point))) + (re-search-forward "^$") + (concat "From the .log file...\n\n" + (buffer-substring start (point))))) + (cdr (nth TeX-error-pointer + TeX-error-description-list))))) + (goto-char (point-min)) + (pop-to-buffer old-buffer))) + +;;; Error Messages + +(defvar TeX-error-description-list + '(("Bad \\\\line or \\\\vector argument.*" . +"The first argument of a \\line or \\vector command, which specifies the +slope, is illegal\.") + + ("Bad math environment delimiter.*" . +"TeX has found either a math-mode-starting command such as \\[ or \\( +when it is already in math mode, or else a math-mode-ending command +such as \\) or \\] while in LR or paragraph mode. The problem is caused +by either unmatched math mode delimiters or unbalanced braces\.") + + ("Bad use of \\\\\\\\.*" . +"A \\\\ command appears between paragraphs, where it makes no sense. This +error message occurs when the \\\\ is used in a centering or flushing +environment or else in the scope of a centering or flushing +declaration.") + + ("\\\\begin{[^ ]*} ended by \\\\end{[^ ]*}." . +"LaTeX has found an \\end command that doesn't match the corresponding +\\begin command. You probably misspelled the environment name in the +\\end command, have an extra \\begin, or else forgot an \\end.") + + ("Can be used only in preamble." . +"LaTeX has encountered, after the \\begin{document}, one of the +following commands that should appear only in the preamble: +\\documentstyle, \\nofiles, \\includeonly, \\makeindex, or +\\makeglossary. The error is also caused by an extra \\begin{document} +command.") + + ("Command name [^ ]* already used.*" . +"You are using \\newcommand, \\newenvironment, \\newlength, \\newsavebox, +or \\newtheorem to define a command or environment name that is +already defined, or \\newcounter to define a counter that already +exists. (Defining an environment named gnu automatically defines the +command \\gnu.) You'll have to choose a new name or, in the case of +\\newcommand or \\newenvironment, switch to the \\renew ... command.") + + ("Counter too large." . +"Some object that is numbered with letters, probably an item in a +enumerated list, has received a number greater than 26. Either you're +making a very long list or you've been resetting counter values.") + + ("Environment [^ ]* undefined." . +"LaTeX has encountered a \\begin command for a nonexistent environment. +You probably misspelled the environment name. ") + + ("Float(s) lost." . +"You put a figure or table environment or a \\marginpar command inside a +parbox---either one made with a minipage environment or \\parbox +command, or one constructed by LaTeX in making a footnote, figure, +etc. This is an outputting error, and the offending environment or +command may be quite a way back from the point where LaTeX discovered +the problem. One or more figures, tables, and/or marginal notes have +been lost, but not necessarily the one that caused the error.") + + ("Illegal character in array arg." . +"There is an illegal character in the argument of an array or tabular +environment, or in the second argument of a \\multicolumn command.") + + ("Missing \\\\begin{document}." . +"LaTeX produced printed output before encountering a \\begin{document} +command. Either you forgot the \\begin{document} command or there is +something wrong in the preamble. The problem may be a stray character +or an error in a declaration---for example, omitting the braces around +an argument or forgetting the \\ in a command name.") + + ("Missing p-arg in array arg.*" . +"There is a p that is not followed by an expression in braces in the +argument of an array or tabular environment, or in the second argument +of a \\multicolumn command.") + + ("Missing @-exp in array arg." . +"There is an @ character not followed by an @-expression in the +argument of an array or tabular environment, or in the second argument +of a \\multicolumn command.") + + ("No such counter." . +"You have specified a nonexistent counter in a \\setcounter or +\\addtocounter command. This is probably caused by a simple typing +error. However, if the error occurred while a file with the extension +aux is being read, then you probably used a \\newcounter command +outside the preamble.") + + ("Not in outer par mode." . +"You had a figure or table environment or a \\marginpar command in math +mode or inside a parbox.") + + ("\\\\pushtabs and \\\\poptabs don't match." . +"LaTeX found a \\poptabs with no matching \\pushtabs, or has come to the +\\end{tabbing} command with one or more unmatched \\pushtabs commands.") + + ("Something's wrong--perhaps a missing \\\\item." . +"The most probable cause is an omitted \\item command in a list-making +environment. It is also caused by forgetting the argument of a +thebibliography environment.") + + ("Tab overflow." . +"A \\= command has exceeded the maximum number of tab stops that LaTeX +permits.") + + ("There's no line here to end." . +"A \\newline or \\\\ command appears between paragraphs, where it makes no +sense. If you're trying to ``leave a blank line'', use a \\vspace +command.") + + ("This may be a LaTeX bug." . +"LaTeX has become thoroughly confused. This is probably due to a +previously detected error, but it is possible that you have found an +error in LaTeX itself. If this is the first error message produced by +the input file and you can't find anything wrong, save the file and +contact the person listed in your Local Guide.") + + ("Too deeply nested." . +"There are too many list-making environments nested within one another. +How many levels of nesting are permitted may depend upon what computer +you are using, but at least four levels are provided, which should be +enough.") + + ("Too many unprocessed floats." . +"While this error can result from having too many \\marginpar commands +on a page, a more likely cause is forcing LaTeX to save more figures +and tables than it has room for. When typesetting its continuous +scroll, LaTeX saves figures and tables separately and inserts them as +it cuts off pages. This error occurs when LaTeX finds too many figure +and/or table environments before it is time to cut off a page, a +problem that is solved by moving some of the environments farther +towards the end of the input file. The error can also be caused by a +``logjam''---a figure or table that cannot be printed causing others +to pile up behind it, since LaTeX will not print figures or tables out +of order. The jam can be started by a figure or table that either is +too large to fit on a page or won't fit where its optional placement +argument says it must go. This is likely to happen if the argument +does not contain a p option.") + + ("Undefined tab position." . +"A \\>, \\+, \\-, or \\< command is trying to go to a nonexistent tab +position---one not defined by a \\= command.") + + ("\\\\< in mid line." . +"A \\< command appears in the middle of a line in a tabbing environment. +This command should come only at the beginning of a line.") + + ("Counter too large." . +"Footnotes are being ``numbered'' with letters or footnote symbols and +LaTeX has run out of letters or symbols. This is probably caused by +too many \\thanks commands.") + + ("Double subscript." . +"There are two subscripts in a row in a mathematical +formula---something like x_{2}_{3}, which makes no sense.") + + ("Double superscript." . +"There are two superscripts in a row in a mathematical +formula---something like x^{2}^{3}, which makes no sense.") + + ("Extra alignment tab has been changed to \\\\cr." . +"There are too many separate items (column entries) in a single row of +an array or tabular environment. In other words, there were too many & +'s before the end of the row. You probably forgot the \\\\ at the end of +the preceding row.") + + ("Extra \\}, or forgotten \\$." . +"The braces or math mode delimiters don't match properly. You probably +forgot a {, \\[, \\(, or $.") + + ("Font [^ ]* not loaded: Not enough room left." . +"The document uses more fonts than TeX has room for. If different parts +of the document use different fonts, then you can get around the +problem by processing it in parts.") + + ("I can't find file `.*'." . +"TeX can't find a file that it needs. If the name of the missing file +has the extension tex, then it is looking for an input file that you +specified---either your main file or another file inserted with an +\\input or \\include command. If the missing file has the extension sty +, then you have specified a nonexistent document style or style +option.") + + ("Illegal parameter number in definition of .*" . +"This is probably caused by a \\newcommand, \\renewcommand, +\\newenvironment, or \\renewenvironment command in which a # is used +incorrectly. A # character, except as part of the command name \\#, +can be used only to indicate an argument parameter, as in #2, which +denotes the second argument. This error is also caused by nesting one +of the above four commands inside another, or by putting a parameter +like #2 in the last argument of a \\newenvironment or \\renewenvironment +command.") + + ("Illegal unit of measure ([^ ]* inserted)." . +"If you just got a + + ! Missing number, treated as zero. + +error, then this is part of the same problem. If not, it means that +LaTeX was expecting a length as an argument and found a number +instead. The most common cause of this error is writing 0 instead of +something like 0in for a length of zero, in which case typing return +should result in correct output. However, the error can also be caused +by omitting a command argument.") + + ("Misplaced alignment tab character \\&." . +"The special character &, which should be used only to separate items +in an array or tabular environment, appeared in ordinary text. You +probably meant to type \\&.") + + ("Missing control sequence inserted." . +"This is probably caused by a \\newcommand, \\renewcommand, \\newlength, +or \\newsavebox command whose first argument is not a command name.") + + ("Missing number, treated as zero." . +"This is usually caused by a LaTeX command expecting but not finding +either a number or a length as an argument. You may have omitted an +argument, or a square bracket in the text may have been mistaken for +the beginning of an optional argument. This error is also caused by +putting \\protect in front of either a length command or a command such +as \\value that produces a number.") + + ("Missing [{}] inserted." . +"TeX has become confused. The position indicated by the error locator +is probably beyond the point where the incorrect input is.") + + ("Missing \\$ inserted." . +"TeX probably found a command that can be used only in math mode when +it wasn't in math mode. Remember that unless stated otherwise, all +the commands of Section can be used only in math mode. TeX is not in +math mode when it begins processing the argument of a box-making +command, even if that command is inside a math environment. This error +also occurs if TeX encounters a blank line when it is in math mode.") + + ("Not a letter." . +"Something appears in the argument of a \\hyphenation command that +doesn't belong there.") + + ("Paragraph ended before [^ ]* was complete." . +"A blank line occurred in a command argument that shouldn't contain +one. You probably forgot the right brace at the end of an argument.") + + ("\\\\[^ ]*font [^ ]* is undefined .*" . +"These errors occur when an uncommon font is used in math mode---for +example, if you use a \\sc command in a formula inside a footnote, +calling for a footnote-sized small caps font. This problem is solved +by using a \\load command.") + + ("Font .* not found." . +"You requested a family/series/shape/size combination that is totally +unknown. There are two cases in which this error can occur: + 1) You used the \\size macro to select a size that is not available. + 2) If you did not do that, go to your local `wizard' and + complain fiercely that the font selection tables are corrupted!") + + ("TeX capacity exceeded, sorry .*" . +"TeX has just run out of space and aborted its execution. Before you +panic, remember that the least likely cause of this error is TeX not +having the capacity to process your document. It was probably an +error in your input file that caused TeX to run out of room. The +following discussion explains how to decide whether you've really +exceeded TeX's capacity and, if so, what to do. If the problem is an +error in the input, you may have to use the divide and conquer method +described previously to locate it. LaTeX seldom runs out of space on a +short input file, so if running it on the last few pages before the +error indicator's position still produces the error, then there's +almost certainly something wrong in the input file. + +The end of the error indicator tells what kind of space TeX ran out +of. The more common ones are listed below, with an explanation of +their probable causes. + +buffer size +=========== +Can be caused by too long a piece of text as the argument +of a sectioning, \\caption, \\addcontentsline, or \\addtocontents +command. This error will probably occur when the \\end{document} is +being processed, but it could happen when a \\tableofcontents, +\\listoffigures, or \\listoftables command is executed. To solve this +problem, use a shorter optional argument. Even if you're producing a +table of contents or a list of figures or tables, such a long entry +won't help the reader. + +exception dictionary +==================== +You have used \\hyphenation commands to give TeX +more hyphenation information than it has room for. Remove some of the +less frequently used words from the \\hyphenation commands and insert +\\- commands instead. + +hash size +========= +Your input file defines too many command names and/or uses +too many cross-ref- erencing labels. + +input stack size +================ +This is probably caused by an error in a command +definition. For example, the following command makes a circular +definition, defining \\gnu in terms of itself: + + \\newcommand{\\gnu}{a \\gnu} % This is wrong! + +When TeX encounters this \\gnu command, it will keep chasing its tail +trying to figure out what \\gnu should produce, and eventually run out +of ``input stack''. + +main memory size +================ +This is one kind of space that TeX can run out of when processing a +short file. There are three ways you can run TeX out of main memory +space: (1) defining a lot of very long, complicated commands, (2) +making an index or glossary and having too many \\index or \\glossary +commands on a single page, and (3) creating so complicated a page of +output that TeX can't hold all the information needed to generate it. +The solution to the first two problems is obvious: define fewer +commands or use fewer \\index and \\glossary commands. The third problem +is nastier. It can be caused by large tabbing, tabular, array, and +picture environments. TeX's space may also be filled up with figures +and tables waiting for a place to go. To find out if you've really +exceeded TeX's capacity in this way, put a \\clearpage command in your +input file right before the place where TeX ran out of room and try +running it again. If it doesn't run out of room with the \\clearpage +command there, then you did exceed TeX's capacity. If it still runs +out of room, then there's probably an error in your file. If TeX is +really out of room, you must give it some help. Remember that TeX +processes a complete paragraph before deciding whether to cut the +page. Inserting a \\newpage command in the middle of the paragraph, +where TeX should break the page, may save the day by letting TeX write +the current page before processing the rest of the paragraph. (A +\\pagebreak command won't help.) If the problem is caused by +accumulated figures and tables, you can try to prevent them from +accumulating---either by moving them further towards the end of the +document or by trying to get them to come out sooner. If you are +still writing the document, simply add a \\clearpage command and forget +about the problem until you're ready to produce the final version. +Changes to the input file are likely to make the problem go away. + +pool size +========= +You probably used too many cross-ref-erencing \\labels and/or defined +too many new command names. More precisely, the labels and command +names that you define have too many characters, so this problem can be +solved by using shorter names. However, the error can also be caused +by omitting the right brace that ends the argument of either a counter +command such as \\setcounter, or a \\newenvironment or \\newtheorem +command. + +save size +========= +This occurs when commands, environments, and the scopes of +declarations are nested too deeply---for example, by having the +argument of a \\multiput command contain a picture environment that in +turn has a \\footnotesize declaration whose scope contains a \\multiput +command containing a ....") + + ("Text line contains an invalid character." . +"The input contains some strange character that it shouldn't. A mistake +when creating the file probably caused your text editor to insert this +character. Exactly what could have happened depends upon what text +editor you used. If examining the input file doesn't reveal the +offending character, consult the Local Guide for suggestions.") + + ("Undefined control sequence." . +"TeX encountered an unknown command name. You probably misspelled the +name. If this message occurs when a LaTeX command is being processed, +the command is probably in the wrong place---for example, the error +can be produced by an \\item command that's not inside a list-making +environment. The error can also be caused by a missing \\documentstyle +command.") + + ("Use of [^ ]* doesn't match its definition." . +"It's probably one of the picture-drawing commands, and you have used +the wrong syntax for specifying an argument. If it's \\@array that +doesn't match its definition, then there is something wrong in an +@-expression in the argument of an array or tabular +environment---perhaps a fragile command that is not \\protect'ed.") + + ("You can't use `macro parameter character \\#' in [^ ]* mode." . +"The special character # has appeared in ordinary text. You probably +meant to type \\#.") + + ("Overfull \\\\hbox .*" . +"Because it couldn't find a good place for a line break, TeX put more +on this line than it should.") + + ("Overfull \\\\vbox .*" . +"Because it couldn't find a good place for a page break, TeX put more +on the page than it should. ") + + ("Underfull \\\\hbox .*" . +"Check your output for extra vertical space. If you find some, it was +probably caused by a problem with a \\\\ or \\newline command---for +example, two \\\\ commands in succession. This warning can also be +caused by using the sloppypar environment or \\sloppy declaration, or +by inserting a \\linebreak command.") + + ("Underfull \\\\vbox .*" . +"TeX could not find a good place to break the page, so it produced a +page without enough text on it. ") + +;; New list items should be placed here +;; +;; ("err-regexp" . "context") +;; +;; the err-regexp item should match anything + + (".*" . "No help available")) ; end definition +"A list of the form (\"err-regexp\" . \"context\") used by function +\\{TeX-help-error} to display help-text on an error message or warning. +err-regexp should be a regular expression matching the error message +given from TeX/LaTeX, and context should be some lines describing that +error") + +(provide 'tex-buf) + +;;; tex-buf.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/tex-info.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/tex-info.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,394 @@ +;;; tex-info.el - Support for editing TeXinfo source. +;; +;; Maintainer: Per Abrahamsen +;; Version: 9.7i + +;; Copyright (C) 1993, 1994, 1997 Per Abrahamsen +;; +;; 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 2, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Code: + +(require 'tex) +(condition-case nil ;Lucid is not providing. + (require 'texinfo) + (error)) + +;;; Environments: + +(defvar TeXinfo-environment-list + '(("cartouche") + ("defcv") + ("deffn") ("defivar") ("defmac") + ("defmethod") ("defop") ("defopt") ("defspec") ("deftp") + ("deftypefn") ("deftypefun") ("deftypevar") ("deftypevr") + ("defun") ("defvar") ("defvr") ("description") ("display") + ("enumerate") ("example") ("ifset") ("ifclear") ("flushleft") + ("flushright") ("format") ("ftable") ("iftex") ("itemize") + ("lisp") ("quotation") ("smallexample") ("smalllisp") ("table") + ("tex") ("titlepage") ("vtable")) + "Alist of TeXinfo environments.") + +(defconst texinfo-environment-regexp + ;; Overwrite version from `texinfo.el'. + (concat "^@\\(" + (mapconcat 'car TeXinfo-environment-list "\\|") + "\\|end\\)") + "Regexp for environment-like TeXinfo list commands. +Subexpression 1 is what goes into the corresponding `@end' statement.") + +(defun TeXinfo-insert-environment (env) + "Insert TeXinfo environment ENV. +When called interactively, prompt for an environment." + (interactive (list (completing-read "Environment: " + TeXinfo-environment-list))) + (insert "@" env "\n\n@end " env "\n") + (if (null (cdr-safe (assoc "defcv" TeXinfo-environment-list))) + (forward-line -2) + ;; apply arguments + )) + +;;; Keymap: + +(defvar TeXinfo-mode-map nil + "Keymap for TeXinfo mode.") + +(if TeXinfo-mode-map + () + (setq TeXinfo-mode-map (make-sparse-keymap)) + + ;; From texinfo.el + + ;; bindings for updating nodes and menus + (define-key TeXinfo-mode-map "\C-c\C-um" 'texinfo-master-menu) + (define-key TeXinfo-mode-map "\C-c\C-u\C-m" 'texinfo-make-menu) + (define-key TeXinfo-mode-map "\C-c\C-u\C-n" 'texinfo-update-node) + (define-key TeXinfo-mode-map "\C-c\C-u\C-e" 'texinfo-every-node-update) + (define-key TeXinfo-mode-map "\C-c\C-u\C-a" 'texinfo-all-menus-update) + + ;; From TeX-mode + + ;; Standard + (define-key TeXinfo-mode-map "\177" 'backward-delete-char-untabify) + (define-key TeXinfo-mode-map "\C-c}" 'up-list) + (define-key TeXinfo-mode-map "\C-c#" 'TeX-normal-mode) + (define-key TeXinfo-mode-map "\C-c\C-n" 'TeX-normal-mode) + (define-key TeXinfo-mode-map "\C-c?" 'describe-mode) + + ;; From tex.el + (define-key TeXinfo-mode-map "\C-c{" 'TeX-insert-braces) + (define-key TeXinfo-mode-map "\C-c\C-f" 'TeX-font) + (define-key TeXinfo-mode-map "\C-c\C-m" 'TeX-insert-macro) + (define-key TeXinfo-mode-map "\e\t" 'TeX-complete-symbol) + + (define-key TeXinfo-mode-map "\C-c;" 'TeX-comment-region) + (define-key TeXinfo-mode-map "\C-c%" 'TeX-comment-paragraph) + (define-key TeXinfo-mode-map "\C-c'" 'TeX-comment-paragraph) ;*** Old way + (define-key TeXinfo-mode-map "\C-c:" 'TeX-un-comment-region) ;*** Old way + (define-key TeXinfo-mode-map "\C-c\"" 'TeX-un-comment) ;*** Old way + + ;; From tex-buf.el + (define-key TeXinfo-mode-map "\C-c\C-c" 'TeX-command-master) + (define-key TeXinfo-mode-map "\C-c\C-k" 'TeX-kill-job) + (define-key TeXinfo-mode-map "\C-c\C-l" 'TeX-recenter-output-buffer) + (define-key TeXinfo-mode-map "\C-c^" 'TeX-home-buffer) + (define-key TeXinfo-mode-map "\C-c`" 'TeX-next-error) + (define-key TeXinfo-mode-map "\C-c\C-w" 'TeX-toggle-debug-boxes) + + ;; From tex.cpl.el + + ;; Simulating LaTeX-mode + + (define-key TeXinfo-mode-map "\C-c\C-e" 'TeXinfo-insert-environment) + (define-key TeXinfo-mode-map "\C-c\n" 'texinfo-insert-@item) + (define-key TeXinfo-mode-map "\C-c\C-s" 'texinfo-insert-@node) + (define-key TeXinfo-mode-map "\C-c]" 'texinfo-insert-@end)) + +(easy-menu-define TeXinfo-mode-menu + TeXinfo-mode-map + "Menu used in TeXinfo mode." + (list "TeXinfo" + ["Environment..." TeXinfo-insert-environment t] + ["Node..." texinfo-insert-@node t] + ["Macro..." TeX-insert-macro t] + ["Complete" TeX-complete-symbol t] + ["Item" texinfo-insert-@item t] + (list "Insert Font" + ["Emphasize" (TeX-font nil ?\C-e) :keys "C-c C-f C-e"] + ["Bold" (TeX-font nil ?\C-b) :keys "C-c C-f C-b"] + ["Typewriter" (TeX-font nil ?\C-t) :keys "C-c C-f C-t"] + ["Small Caps" (TeX-font nil ?\C-c) :keys "C-c C-f C-c"] + ["Italic" (TeX-font nil ?\C-i) :keys "C-c C-f C-i"] + ["Sample" (TeX-font nil ?\C-s) :keys "C-c C-f C-s"] + ["Roman" (TeX-font nil ?\C-r) :keys "C-c C-f C-r"]) + (list "Change Font" + ["Emphasize" (TeX-font t ?\C-e) :keys "C-u C-c C-f C-e"] + ["Bold" (TeX-font t ?\C-b) :keys "C-u C-c C-f C-b"] + ["Typewriter" (TeX-font t ?\C-t) :keys "C-u C-c C-f C-t"] + ["Small Caps" (TeX-font t ?\C-c) :keys "C-u C-c C-f C-c"] + ["Italic" (TeX-font t ?\C-i) :keys "C-u C-c C-f C-i"] + ["Sample" (TeX-font t ?\C-s) :keys "C-u C-c C-f C-s"] + ["Roman" (TeX-font t ?\C-r) :keys "C-u C-c C-f C-r"]) + "-" + ["Save Document" TeX-save-document t] + ["Next Error" TeX-next-error t] + (list "TeX Output" + ["Kill Job" TeX-kill-job t] + ["Debug Bad Boxes" TeX-toggle-debug-boxes + :style toggle :selected TeX-debug-bad-boxes ] + ["Switch to original file" TeX-home-buffer t] + ["Recenter Output Buffer" TeX-recenter-output-buffer t]) + "--" + ["Create Master Menu" texinfo-master-menu t] + ["Create Menu" texinfo-make-menu t] + ["Update Node" texinfo-update-node t] + ["Update Every Node" texinfo-every-node-update t] + ["Update All Menus" texinfo-all-menus-update t] + ["Uncomment Region" TeX-un-comment-region t] + ["Comment Region" TeX-comment-region t] + ["Switch to Master file" TeX-home-buffer t] + ["Submit bug report" TeX-submit-bug-report t] + ["Reset Buffer" TeX-normal-mode t] + ["Reset AUC TeX" (TeX-normal-mode t) :keys "C-u C-c C-n"])) + +(easy-menu-define TeXinfo-command-menu + TeXinfo-mode-map + "Menu used in TeXinfo mode for external commands." + (append '("Command") + (mapcar 'TeX-command-menu-entry TeX-command-list))) + +(defvar TeXinfo-font-list + '((?\C-b "@b{" "}") + (?\C-c "@sc{" "}") + (?\C-e "@emph{" "}") + (?\C-i "@i{" "}") + (?\C-r "@r{" "}") + (?\C-s "@samp{" "}") + (?\C-t "@t{" "}") + (?s "@strong{" "}") + (?\C-f "@file{" "}") + (?\C-d "@dfn{" "}") + (?\C-v "@var{" "}") + (?k "@key{" "}") + (?\C-k "@kbd{" "}") + (?c "@code{" "}") + (?C "@cite{" "}")) + "Font commands used in TeXinfo mode. See `TeX-font-list'.") + +;;; Mode: + +;;; Do not ;;;###autoload because of conflict with standard tex-mode.el. +(defun texinfo-mode () + "Major mode for editing files of input for TeXinfo. + +Special commands: +\\{TeXinfo-mode-map} + +Entering TeXinfo mode calls the value of text-mode-hook, +then the value of TeX-mode-hook, and then the value of +TeXinfo-mode-hook." + (interactive) + ;; Mostly stolen from texinfo.el + (setq mode-name "TeXinfo") + (setq major-mode 'texinfo-mode) + (use-local-map TeXinfo-mode-map) + (set-syntax-table texinfo-mode-syntax-table) + (make-local-variable 'page-delimiter) + (setq page-delimiter + (concat + "^@node [ \t]*[Tt]op\\|^@\\(" + texinfo-chapter-level-regexp + "\\)")) + (make-local-variable 'require-final-newline) + (setq require-final-newline t) + (make-local-variable 'indent-tabs-mode) + (setq indent-tabs-mode nil) + (make-local-variable 'paragraph-separate) + (setq paragraph-separate + (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-separate)) + (make-local-variable 'paragraph-start) + (setq paragraph-start + (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-start)) + (make-local-variable 'fill-column) + (setq fill-column 72) + (make-local-variable 'comment-start) + (setq comment-start "@c ") + (make-local-variable 'comment-start-skip) + (setq comment-start-skip "@c +\\|@comment +") + (make-local-variable 'words-include-escapes) + (setq words-include-escapes t) + (if (not (boundp 'texinfo-imenu-generic-expression)) + ;; This was introduced in 19.30. + () + (make-local-variable 'imenu-generic-expression) + (setq imenu-generic-expression texinfo-imenu-generic-expression)) + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '(texinfo-font-lock-keywords t)) + (if (not (boundp 'texinfo-section-list)) + ;; This was included in 19.31. + () + (make-local-variable 'outline-regexp) + (setq outline-regexp + (concat "@\\(" + (mapconcat 'car texinfo-section-list "\\>\\|") + "\\>\\)")) + (make-local-variable 'outline-level) + (setq outline-level 'texinfo-outline-level)) + + ;; Mostly AUC TeX stuff + (easy-menu-add TeXinfo-command-menu TeXinfo-mode-map) + (easy-menu-add TeXinfo-mode-menu TeXinfo-mode-map) + (make-local-variable 'TeX-command-current) + (setq TeX-command-current 'TeX-command-master) + + (setq TeX-default-extension "texi") + (make-local-variable 'TeX-esc) + (setq TeX-esc "@") + + (make-local-variable 'TeX-auto-regexp-list) + (setq TeX-auto-regexp-list 'TeX-auto-empty-regexp-list) + (make-local-variable 'TeX-auto-update) + (setq TeX-auto-update t) + + (setq TeX-command-default "TeX") + (setq TeX-header-end "%**end") + (setq TeX-trailer-start (regexp-quote (concat TeX-esc "bye"))) + + (make-local-variable 'TeX-complete-list) + (setq TeX-complete-list + (list (list "@\\([a-zA-Z]*\\)" 1 'TeX-symbol-list nil) + (list "" TeX-complete-word))) + + (make-local-variable 'TeX-font-list) + (setq TeX-font-list TeXinfo-font-list) + + (TeX-add-symbols + '("appendix" "Title") + '("appendixsec" "Title") + '("appendixsection" "Title") + '("appendixsubsec" "Title") + '("appendixsubsubsec" "Title") + '("asis") + '("author" "Author") + '("b" "Text") + '("bullet") + '("bye") + '("c" "Comment") + '("center" "Line-of-text") + '("chapheading" "Title") + '("chapter" "Title") + '("cindex" "Entry") + '("cite" "Reference") + '("clear" "Flag") + '("code" "Sample-code") + '("comment" "Comment") + '("contents") + '("copyright") + '("defcodeindex" "Index-name") + '("defindex" "Index-name") + '("dfn" "Term") + '("dmn" "Dimension") + '("dots") + '("emph" "Text") + '("equiv") + '("error") + '("evenfooting" TeXinfo-lrc-argument-hook) + '("evenheading" TeXinfo-lrc-argument-hook) + '("everyfooting" TeXinfo-lrc-argument-hook) + '("everyheading" TeXinfo-lrc-argument-hook) + '("exdent" "Line-of-text") + '("expansion") + '("file" "Filename") + '("finalout") + '("findex" "Entry") + '("footnote" "Text-of-footnote") + '("footnotestyle" "Style") + '("group") + '("heading" "Title") + '("headings" "On-off-single-double") + '("i" "Text") + '("ignore") + '("include" "Filename") + '("inforef" "Node-name" "Info-file-name") + '("item") + '("itemx") + '("kbd" "Keyboard-characters") + '("key" "Key-name") + '("kindex" "Entry") + '("majorheading" "Title") + '("menu") + '("minus") + '("need" "N") + '("node" "Name" "Next" "Previous" "Up") + '("noindent") + '("oddfooting" TeXinfo-lrc-argument-hook) + '("oddheading" TeXinfo-lrc-argument-hook) + '("page") + '("paragraphindent" "Indent") + '("pindex" "Entry") + '("point") + '("print") + '("printindex" "Index-name") + '("pxref" "Node-name") + '("r" "Text") + '("ref" "Node-name") + '("refill") + '("result") + '("samp" "Text") + '("sc" "Text") + '("section" "Title") + '("set" "Flag") + '("setchapternewpage" "On-off-odd") + '("setfilename" "Info-file-name") + '("settitle" "Title") + '("shortcontents") + '("smallbook") + '("sp" "N") + '("strong" "Text") + '("subheading" "Title") + '("subsection" "Title") + '("subsubheading" "Title") + '("subsubsection" "Title") + '("subtitle" "Title") + '("summarycontents") + '("syncodeindex" "From-index" "Into-index") + '("synindex" "From-index" "Into-index") + '("t" "Text") + '("TeX") + '("thischapter") + '("thischaptername") + '("thisfile") + '("thispage") + '("tindex" "Entry") + '("title" "Title") + '("titlefont" "Text") + '("titlepage") + '("today") + '("top" "Title") + '("unnumbered" "Title") + '("unnumberedsec" "Title") + '("unnumberedsubsec" "Title") + '("unnumberedsubsubsec" "Title") + '("value" "Flag") + '("var" "Metasyntactic-variable") + '("vindex" "Entry") + '("vskip" "Amount") + '("w" "Text")) + + (run-hooks 'text-mode-hook 'TeXinfo-mode-hook)) + +(provide 'tex-info) + +;;; tex-info.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/tex-jp.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/tex-jp.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,1197 @@ +;;; tex-jp.el - Support for Japanese TeX. + +;;; Code: + +(require 'latex) + +;;; Customization + +(setq TeX-format-list + (append '(("JLATEX" japanese-latex-mode + "\\\\\\(\\\\documentstyle[^%\n]*{j\\|\\\\documentclass[^%\n]*{j\\)") + ("JTEX" japanese-plain-tex-mode + "-- string likely in Japanese TeX --")) + TeX-format-list)) + +(setq TeX-command-list + (append (list (list "jTeX" "jtex '\\nonstopmode\\input %t'" + 'TeX-run-TeX nil t) + (list "pTeX" "ptex '\\nonstopmode\\input %t'" + 'TeX-run-TeX nil t) + (list "jBibTeX" "jbibtex %s" 'TeX-run-BibTeX nil nil)) + TeX-command-list)) + +(setq LaTeX-command-style + (append (if (string-equal LaTeX-version "2") + '(("^ams" "amsjlatex") + ("^jslides$" "jslitex") + ("^j-?\\(article\\|report\\|book\\)$" "jlatex")) + '(("^j-\\(article\\|report\\|book\\)$" "jlatex") + ("^j\\(article\\|report\\|book\\)$" "platex") + ("." "jlatex"))) + LaTeX-command-style)) + +(setcdr (assoc "%l" TeX-expand-list) + (list 'TeX-style-check LaTeX-command-style)) + +(defvar japanese-TeX-error-messages t + "If non-nil, explain TeX error messages in Japanese.") + +(if (or (boundp 'MULE) + (featurep 'mule)) + (if (string-match "XEmacs" emacs-version) + (progn + (defvar TeX-japanese-process-input-coding-system + (find-coding-system 'euc-japan) + "TeX-process' coding system with standard input.") + (defvar TeX-japanese-process-output-coding-system + (find-coding-system 'junet) + "TeX-process' coding system with standard output.")) + (progn + (defvar TeX-japanese-process-input-coding-system *euc-japan* + "TeX-process' coding system with standard input.") + (defvar TeX-japanese-process-output-coding-system *junet* + "TeX-process' coding system with standard output.")))) + +(if (boundp 'NEMACS) + (defvar TeX-process-kanji-code 2 + "TeX-process' kanji code with standard I/O. +0:No-conversion 1:Shift-JIS 2:JIS 3:EUC/AT&T/DEC")) + +(defvar japanese-LaTeX-default-style "j-article" + "*Default when creating new Japanese documents.") +(make-variable-buffer-local 'japanese-LaTeX-default-style) + +(defvar japanese-LaTeX-style-list + '(("book") + ("article") + ("letter") + ("slides") + ("report") + ("jbook") + ("j-book") + ("jarticle") + ("j-article") + ("jslides") + ("jreport") + ("j-report")) + "*List of Japanese document styles.") +(make-variable-buffer-local 'japanese-LaTeX-style-list) + +;;; Coding system + +(if (boundp 'MULE) + (setq TeX-after-start-process-function + (function (lambda (process) + (set-process-coding-system + process + TeX-japanese-process-input-coding-system + TeX-japanese-process-output-coding-system))))) +(if (boundp 'NEMACS) + (setq TeX-after-start-process-function + (function + (lambda (process) + (set-process-kanji-code process TeX-process-kanji-code))))) + +(if (and (string-match "XEmacs" emacs-version) + (featurep 'mule)) + (setq TeX-after-start-process-function + (function (lambda (process) + (set-process-input-coding-system + process + TeX-japanese-process-input-coding-system) + (set-process-output-coding-system + process + TeX-japanese-process-output-coding-system))))) + +;;; Japanese Parsing + +(if (or (boundp 'MULE) + (featurep 'mule)) +(progn + +(defconst LaTeX-auto-regexp-list + (append + '(("\\\\newcommand{?\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)}?\\[\\([0-9]+\\)\\]\ +\\[\\([^\]\\\\\n\r]+\\)\\]" + (1 3 4) LaTeX-auto-optional) + ("\\\\newcommand{?\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)}?\\[\\([0-9]+\\)\\]" + (1 3) LaTeX-auto-arguments) + ("\\\\newcommand{?\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)}?" 1 TeX-auto-symbol) + ("\\\\newenvironment{?\\(\\([a-zA-Z]\\|\\cj\\)+\\)}?\\[\\([0-9]+\\)\\]" + (1 3) LaTeX-auto-env-args) + ("\\\\newenvironment{?\\(\\([a-zA-Z]\\|\\cj\\)+\\)}?" 1 LaTeX-auto-environment) + ("\\\\newtheorem{\\(\\([a-zA-Z]\\|\\cj\\)+\\)}" 1 LaTeX-auto-environment) + ("\\\\input{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" + 1 TeX-auto-file) + ("\\\\include{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" + 1 TeX-auto-file) + ("\\\\usepackage\\(\\[[^\]\\\\]*\\]\\)?\ +{\\(\\([^#}\\\\\\.%]\\|%[^\n\r]*[\n\r]\\)+\\)}" + (2) LaTeX-auto-style) + ("\\\\bibitem{\\(\\([a-zA-Z]\\|\\cj\\)[^, \n\r\t%\"#'()={}]*\\)}" 1 LaTeX-auto-bibitem) + ("\\\\bibitem\\[[^][\n\r]+\\]{\\(\\([a-zA-Z]\\|\\cj\\)[^, \n\r\t%\"#'()={}]*\\)}" + 1 LaTeX-auto-bibitem) + ("\\\\bibliography{\\([^#}\\\\\n\r]+\\)}" 1 LaTeX-auto-bibliography)) + LaTeX-auto-label-regexp-list + LaTeX-auto-minimal-regexp-list) + "List of regular expression matching common LaTeX macro definitions.") + +(defconst plain-TeX-auto-regexp-list + '(("\\\\def\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)[^a-zA-Z@]" 1 + TeX-auto-symbol-check) + ("\\\\let\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)[^a-zA-Z@]" 1 + TeX-auto-symbol-check) + ("\\\\font\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)[^a-zA-Z@]" 1 TeX-auto-symbol) + ("\\\\chardef\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)[^a-zA-Z@]" 1 TeX-auto-symbol) + ("\\\\new\\(count|dimen|muskip|skip\\)\\\\\\(\\([a-z]\\|\\cj\\)+\\)[^a-zA-Z@]" + 2 TeX-auto-symbol) + ("\\\\newfont{?\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)}?" 1 TeX-auto-symbol) + ("\\\\typein\\[\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)\\]" 1 TeX-auto-symbol) + ("\\\\input +\\(\\.*[^#%\\\\\\.\n\r]+\\)\\(\\.[^#%\\\\\\.\n\r]+\\)?" + 1 TeX-auto-file) + ("\\\\mathchardef\\\\\\(\\([a-zA-Z]\\|\\cj\\)+\\)[^a-zA-Z@]" 1 + TeX-auto-symbol)) + "List of regular expression matching common LaTeX macro definitions.") + +(defconst BibTeX-auto-regexp-list + '(("@[Ss][Tt][Rr][Ii][Nn][Gg]" 1 ignore) + ("@[a-zA-Z]+[{(][ \t]*\\(\\([a-zA-Z]\\|\\cj\\)[^, \n\r\t%\"#'()={}]*\\)" + 1 LaTeX-auto-bibitem)) + "List of regexp-list expressions matching BibTeX items.") + +)) + +(if (boundp 'NEMACS) +(progn + +(defconst LaTeX-auto-regexp-list + (append + '(("\\\\newcommand{?\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)}?\\[\\([0-9]+\\)\\]\ +\\[\\([^\]\\\\\n\r]+\\)\\]" + (1 3 4) LaTeX-auto-optional) + ("\\\\newcommand{?\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)}?\\[\\([0-9]+\\)\\]" + (1 3) LaTeX-auto-arguments) + ("\\\\newcommand{?\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)}?" 1 TeX-auto-symbol) + ("\\\\newenvironment{?\\(\\([a-zA-Z]\\|\\z\\)+\\)}?\\[\\([0-9]+\\)\\]" + (1 3) LaTeX-auto-env-args) + ("\\\\newenvironment{?\\(\\([a-zA-Z]\\|\\z\\)+\\)}?" 1 LaTeX-auto-environment) + ("\\\\newtheorem{\\(\\([a-zA-Z]\\|\\z\\)+\\)}" 1 LaTeX-auto-environment) + ("\\\\input{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" + 1 TeX-auto-file) + ("\\\\include{\\(\\.*[^#}%\\\\\\.\n\r]+\\)\\(\\.[^#}%\\\\\\.\n\r]+\\)?}" + 1 TeX-auto-file) + ("\\\\usepackage\\(\\[[^\]\\\\]*\\]\\)?\ +{\\(\\([^#}\\\\\\.%]\\|%[^\n\r]*[\n\r]\\)+\\)}" + (2) LaTeX-auto-style) + ("\\\\bibitem{\\(\\([a-zA-Z]\\|\\z\\)[^, \n\r\t%\"#'()={}]*\\)}" 1 LaTeX-auto-bibitem) + ("\\\\bibitem\\[[^][\n\r]+\\]{\\(\\([a-zA-Z]\\|\\z\\)[^, \n\r\t%\"#'()={}]*\\)}" + 1 LaTeX-auto-bibitem) + ("\\\\bibliography{\\([^#}\\\\\n\r]+\\)}" 1 LaTeX-auto-bibliography)) + LaTeX-auto-label-regexp-list + LaTeX-auto-minimal-regexp-list) + "List of regular expression matching common LaTeX macro definitions.") + +(defconst plain-TeX-auto-regexp-list + '(("\\\\def\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)[^a-zA-Z@]" 1 + TeX-auto-symbol-check) + ("\\\\let\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)[^a-zA-Z@]" 1 + TeX-auto-symbol-check) + ("\\\\font\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)[^a-zA-Z@]" 1 TeX-auto-symbol) + ("\\\\chardef\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)[^a-zA-Z@]" 1 TeX-auto-symbol) + ("\\\\new\\(count|dimen|muskip|skip\\)\\\\\\(\\([a-z]\\|\\z\\)+\\)[^a-zA-Z@]" + 2 TeX-auto-symbol) + ("\\\\newfont{?\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)}?" 1 TeX-auto-symbol) + ("\\\\typein\\[\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)\\]" 1 TeX-auto-symbol) + ("\\\\input +\\(\\.*[^#%\\\\\\.\n\r]+\\)\\(\\.[^#%\\\\\\.\n\r]+\\)?" + 1 TeX-auto-file) + ("\\\\mathchardef\\\\\\(\\([a-zA-Z]\\|\\z\\)+\\)[^a-zA-Z@]" 1 + TeX-auto-symbol)) + "List of regular expression matching common LaTeX macro definitions.") + +(defconst BibTeX-auto-regexp-list + '(("@[Ss][Tt][Rr][Ii][Nn][Gg]" 1 ignore) + ("@[a-zA-Z]+[{(][ \t]*\\(\\([a-zA-Z]\\|\\z\\)[^, \n\r\t%\"#'()={}]*\\)" + 1 LaTeX-auto-bibitem)) + "List of regexp-list expressions matching BibTeX items.") + +)) + +(defconst TeX-auto-full-regexp-list + (append LaTeX-auto-regexp-list plain-TeX-auto-regexp-list) + "Full list of regular expression matching TeX macro definitions.") + +;;; Japanese TeX modes + +(defvar japanese-TeX-mode nil + "Flag to determine if Japanese initialization is needed.") + +(add-hook 'plain-TeX-mode-hook 'japanese-plain-tex-mode-initialization) + +;;;###autoload +(defun japanese-plain-tex-mode () + "Major mode for editing files of input for Japanese plain TeX. +Set japanese-TeX-mode to t, and enters plain-tex-mode." + (interactive) + (setq japanese-TeX-mode t) + (plain-tex-mode)) + +(defun japanese-plain-tex-mode-initialization () + "Japanese plain-TeX specific initializations." + (if japanese-TeX-mode + (setq TeX-command-default "jTeX"))) + +(add-hook 'LaTeX-mode-hook 'japanese-latex-mode-initialization) + +;;;###autoload +(defun japanese-latex-mode () + "Major mode for editing files of input for Japanese plain TeX. +Set japanese-TeX-mode to t, and enters latex-mode." + (interactive) + (setq japanese-TeX-mode t) + (latex-mode)) + +(defun japanese-latex-mode-initialization () + "Japanese LaTeX specific initializations." + (if japanese-TeX-mode + (progn + (setq LaTeX-default-style japanese-LaTeX-default-style) + (setq LaTeX-style-list japanese-LaTeX-style-list) + (setq TeX-command-BibTeX "jBibTeX") + (setq japanese-TeX-mode nil)))) + +;;; MULE and NEMACS paragraph filling. + +(if (boundp 'MULE) +(if (string-lessp emacs-version "19") +(defun LaTeX-fill-region-as-paragraph (from to &optional justify-flag) + "Fill region as one paragraph: break lines to fit fill-column. +Prefix arg means justify too. +From program, pass args FROM, TO and JUSTIFY-FLAG." + (interactive "*r\nP") + (save-restriction + (goto-char from) + (skip-chars-forward "\n") + (LaTeX-indent-line) + (beginning-of-line) + (narrow-to-region (point) to) + (setq from (point)) + + ;; Delete whitespace at beginning of line from every line, + ;; except the first line. + (goto-char (point-min)) + (forward-line 1) + (while (not (eobp)) + (delete-horizontal-space) + (forward-line 1)) + + ;; Ignore the handling routine related with `fill-prefix'. + + ;; from is now before the text to fill, + ;; but after any fill prefix on the first line. + + ;; Make sure sentences ending at end of line get an extra space. + (goto-char from) + ;;; patch by S.Tomura 88-Jun-30 + ;;$B!cE}9g!d(B + ;; . + CR ==> . + SPC + SPC + ;; . + SPC + CR + ==> . + SPC + + ;;(while (re-search-forward "[.?!][])""']*$" nil t) + ;; (insert ? )) + (while (re-search-forward "[.?!][])\"']*$" nil t) + (if (eobp) + nil + ;; replace CR by two spaces. + (delete-char 1) ; delete newline + (insert " "))) + ;; end of patch + ;; The change all newlines to spaces. + ;; patched by S.Tomura 87-Dec-7 + ;; bug fixed by S.Tomura 88-May-25 + ;; modified by S.Tomura 88-Jun-21 + ;;(subst-char-in-region from (point-max) ?\n ?\ ) + ;; modified by K.Handa 92-Mar-2 + ;; Spacing is not necessary for charcters of no word-separater. + ;; The regexp word-across-newline is used for this check. + (if (not (stringp word-across-newline)) + (subst-char-in-region from (point-max) ?\n ?\ ) + (goto-char from) + (end-of-line) + (while (not (eobp)) + (delete-char 1) + (if (eobp) nil ; 92.6.30 by K.Handa + (if (not (looking-at word-across-newline)) + (progn + (forward-char -1) + (if (and (not (eq (following-char) ? )) + (not (looking-at word-across-newline))) + (progn + (forward-char 1) + (insert ? )) + (forward-char 1)))) + (end-of-line)))) + ;; After the following processing, there's two spaces at end of sentence + ;; and single space at end of line within sentence. + ;; end of patch + ;; Flush excess spaces, except in the paragraph indentation. + (goto-char from) + (skip-chars-forward " \t") + (while (re-search-forward " *" nil t) + (delete-region + (+ (match-beginning 0) + (if (save-excursion + (skip-chars-backward " ])\"'") + (memq (preceding-char) '(?. ?? ?!))) + 2 1)) + (match-end 0))) + (goto-char (point-max)) + (delete-horizontal-space) + (insert " ") + (goto-char (point-min)) + (let ((prefixcol 0) + ;; patch by K.Handa 92-Mar-2 + (re-break-point (concat "[ \t\n]\\|" word-across-newline)) + ;; end of patch + ) + (while (not (eobp)) + (move-to-column (1+ fill-column)) + (if (eobp) + nil + ;; patched by S.Tomura 87-Jun-2 + ;; Big change by K.Handa 92-Mar-2 + ;; Move back to start of word. + ;; (skip-chars-backward "^ \n") + ;; (if (if (zerop prefixcol) (bolp) (>= prefixcol (current-column))) + ;; ;; Move back over whitespace before the word. + ;; (skip-chars-forward "^ \n") + ;; ;; Normally, move back over the single space between the words. + ;; (forward-char -1)) + + ;; At first, find breaking point at the left of fill-column, + ;; but after kinsoku-shori, the point may be right of fill-column. + ;; 92.4.15 by K.Handa -- re-search-backward will back to prev line. + ;; 92.4.27 by T.Enami -- We might have gone back too much... + (let ((p (point)) ch) + (re-search-backward re-break-point nil 'mv) + (setq ch (following-char)) + (if (or (= ch ? ) (= ch ?\t)) + (skip-chars-backward " \t") + (forward-char 1) + (if (<= p (point)) + (forward-char -1)))) + (kinsoku-shori) + ;; Check if current column is at the right of prefixcol. + ;; If not, find break-point at the right of fill-column. + ;; This time, force kinsoku-shori-nobashi. + (if (>= prefixcol (current-column)) + (progn + (move-to-column (1+ fill-column)) + ;; 92.4.15 by K.Handa -- suppress error in re-search-forward + (re-search-forward re-break-point nil t) + (forward-char -1) + (kinsoku-shori-nobashi)))) + ;; end of patch S.Tomura + + ;; Replace all whitespace here with one newline. + ;; Insert before deleting, so we don't forget which side of + ;; the whitespace point or markers used to be on. + ;; patch by S. Tomura 88-Jun-20 + ;; 92.4.27 by K.Handa + (skip-chars-backward " \t") + (if mc-flag + ;; $B!cJ,3d!d(B WAN means chars which match word-across-newline. + ;; (0) | SPC + SPC* --> NL + ;; (1) WAN | SPC + SPC* --> WAN + SPC + NL + ;; (2) | SPC + SPC* + WAN --> SPC + NL + WAN + ;; (3) '.' | SPC + nonSPC --> '.' + SPC + NL + nonSPC + ;; (4) '.' | SPC + SPC --> '.' + NL + ;; (5) | SPC* --> NL + (let ((start (point)) ; 92.6.30 by K.Handa + (ch (following-char))) + (if (and (= ch ? ) + (progn ; not case (0) -- 92.6.30 by K.Handa + (skip-chars-forward " \t") + (not (eobp))) + (or + (progn ; case (1) + (goto-char start) + (forward-char -1) + (looking-at word-across-newline)) + (progn ; case (2) + (goto-char start) + (skip-chars-forward " \t") + (and (not (eobp)) + (looking-at word-across-newline))) + (progn ; case (3) + (goto-char (1+ start)) + (and (not (eobp)) + (/= (following-char) ? ) + (progn + (skip-chars-backward " ])\"'") + (memq (preceding-char) '(?. ?? ?!))))))) + ;; We should keep one SPACE before NEWLINE. (1),(2),(3) + (goto-char (1+ start)) + ;; We should delete all SPACES around break point. (4),(5) + (goto-char start)))) + ;; end of patch + (if (equal (preceding-char) ?\\) + (insert ? )) + (insert ?\n) + (delete-horizontal-space) + + ;; Ignore the handling routine related with `fill-prefix'. + + (LaTeX-indent-line) + (setq prefixcol (current-column)) + ;; Justify the line just ended, if desired. + (and justify-flag (not (eobp)) + (progn + (forward-line -1) + (justify-current-line) + (forward-line 1))) + ) + (goto-char (point-max)) + (delete-horizontal-space)))) +(defun LaTeX-fill-region-as-paragraph (from to &optional justify-flag) + "Fill region as one paragraph: break lines to fit fill-column.\n\ +Prefix arg means justify too.\n\ +From program, pass args FROM, TO and JUSTIFY-FLAG." + (interactive "*r\nP") + (save-restriction + (goto-char from) + (skip-chars-forward " \n") + (LaTeX-indent-line) + (beginning-of-line) + (narrow-to-region (point) to) + (setq from (point)) + + ;; Delete whitespace at beginning of line from every line, + ;; except the first line. + (goto-char (point-min)) + (forward-line 1) + (while (not (eobp)) + (delete-horizontal-space) + (forward-line 1)) + + ;; from is now before the text to fill, + ;; but after any fill prefix on the first line. + + ;; Make sure sentences ending at end of line get an extra space. + (goto-char from) + ;; patch by S.Tomura 88-Jun-30 + ;;$B!cE}9g!d(B + ;; . + CR ==> . + SPC + SPC + ;; . + SPC + CR + ==> . + SPC + + ;; (while (re-search-forward "[.?!][])\"']*$" nil t) + ;; (insert ? )) + (while (re-search-forward "[.?!][])}\"']*$" nil t) + (if (eobp) + nil + ;; replace CR by two spaces. + ;; insert before delete to preserve marker. + (insert " ") + ;; delete newline + (delete-char 1))) + ;; end of patch + ;; The change all newlines to spaces. + ;; (subst-char-in-region from (point-max) ?\n ?\ ) + ;; patched by S.Tomura 87-Dec-7 + ;; bug fixed by S.Tomura 88-May-25 + ;; modified by S.Tomura 88-Jun-21 + ;; modified by K.Handa 92-Mar-2 + ;; Spacing is not necessary for charcters of no word-separater. + ;; The regexp word-across-newline is used for this check. + (if (not (stringp word-across-newline)) + (subst-char-in-region from (point-max) ?\n ?\ ) + ;; + ;; WAN +NL+WAN --> WAN + WAN + ;; not(WAN)+NL+WAN --> not(WAN) + WAN + ;; WAN +NL+not(WAN) --> WAN + not(WAN) + ;; SPC +NL+not(WAN) --> SPC + not(WAN) + ;; not(WAN)+NL+not(WAN) --> not(WAN) + SPC + not(WAN) + ;; + (goto-char from) + (end-of-line) + (while (not (eobp)) + ;; 92.8.26 , 92.8.30 by S. Tomura + + ;; Insert SPC only when point is between nonWAN. Insert + ;; before deleting to preserve marker if possible. + (if (or (prog2 ; check following char. + (forward-char) ; skip newline + (or (eobp) + (looking-at word-across-newline)) + (forward-char -1)) + (prog2 ; check previous char. + (forward-char -1) + (or (eq (following-char) ?\ ) + (looking-at word-across-newline)) + (forward-char))) + nil + (insert ?\ )) + (delete-char 1) ; delete newline + (end-of-line))) + ;; Flush excess spaces, except in the paragraph indentation. + (goto-char from) + (skip-chars-forward " \t") + (while (re-search-forward " *" nil t) + (delete-region + (+ (match-beginning 0) + (if (save-excursion + (skip-chars-backward " ])\"'") + (memq (preceding-char) '(?. ?? ?!))) + 2 1)) + (match-end 0))) + (goto-char (point-max)) + (delete-horizontal-space) + (insert " ") + (goto-char (point-min)) + (let ((prefixcol 0) linebeg + ;; patch by K.Handa 92-Mar-2 + (re-break-point (concat "[ \n]\\|" word-across-newline)) + ;; end of patch + ) + (while (not (eobp)) + (setq linebeg (point)) + (move-to-column (1+ fill-column)) + (if (eobp) + nil + ;;(skip-chars-backward "^ \n") + (fill-move-backward-to-break-point re-break-point) + (if sentence-end-double-space + (while (and (> (point) (+ linebeg 2)) + (eq (preceding-char) ?\ ) + (not (eq (following-char) ?\ )) + (eq (char-after (- (point) 2)) ?\.)) + (forward-char -2) + (fill-move-backward-to-break-point re-break-point linebeg))) + (kinsoku-shori) + (if (if (zerop prefixcol) + (save-excursion + (skip-chars-backward " " linebeg) + (bolp)) + (>= prefixcol (current-column))) + ;; Keep at least one word even if fill prefix exceeds margin. + ;; This handles all but the first line of the paragraph. + ;; Meanwhile, don't stop at a period followed by one space. + (let ((first t)) + (move-to-column prefixcol) + (while (and (not (eobp)) + (or first + (and (not (bobp)) + sentence-end-double-space + (save-excursion (forward-char -1) + (and (looking-at "\\. ") + (not (looking-at "\\. "))))))) + (skip-chars-forward " ") + ;; (skip-chars-forward "^ \n") + (fill-move-forward-to-break-point re-break-point) + (setq first nil))) + ;; Normally, move back over the single space between the words. + (if (eq (preceding-char) ? ) + (forward-char -1)))) + (if mc-flag + ;; $B!cJ,3d!d(B WAN means chars which match word-across-newline. + ;; (0) | SPC + SPC* --> NL + ;; (1) WAN | SPC + SPC* --> WAN + SPC + NL + ;; (2) | SPC + SPC* + WAN --> SPC + NL + WAN + ;; (3) '.' | SPC + nonSPC --> '.' + SPC + NL + nonSPC + ;; (4) '.' | SPC + SPC --> '.' + NL + ;; (5) | SPC* --> NL + (let ((start (point)) ; 92.6.30 by K.Handa + (ch (following-char))) + (if (and (= ch ? ) + (progn ; not case (0) -- 92.6.30 by K.Handa + (skip-chars-forward " \t") + (not (eobp))) + (or + (progn ; case (1) + (goto-char start) + (forward-char -1) + (looking-at word-across-newline)) + (progn ; case (2) + (goto-char start) + (skip-chars-forward " \t") + (and (not (eobp)) + (looking-at word-across-newline) + ;; never leave space after the end of sentence + (not (fill-end-of-sentence-p)))) + (progn ; case (3) + (goto-char (1+ start)) + (and (not (eobp)) + (/= (following-char) ? ) + (fill-end-of-sentence-p))))) + ;; We should keep one SPACE before NEWLINE. (1),(2),(3) + (goto-char (1+ start)) + ;; We should delete all SPACES around break point. (4),(5) + (goto-char start)))) + ;; end of patch + (delete-horizontal-space) + (if (equal (preceding-char) ?\\) + (insert ? )) + (insert ?\n) + (LaTeX-indent-line) + (setq prefixcol (current-column)) + (and justify-flag (not (eobp)) + (progn + (forward-line -1) + (justify-current-line) + (forward-line 1))) + ) + (goto-char (point-max)) + (delete-horizontal-space)))))) + +(if (boundp 'NEMACS) +(defun LaTeX-fill-region-as-paragraph (from to &optional justify-flag) + "Fill region as one paragraph: break lines to fit fill-column. +Prefix arg means justify too. +From program, pass args FROM, TO and JUSTIFY-FLAG." + (interactive "r\nP") + (save-restriction + (goto-char from) + (skip-chars-forward " \n") + (LaTeX-indent-line) + (beginning-of-line) + (narrow-to-region (point) to) + (setq from (point)) + + ;; Delete whitespace at beginning of line from every line, + ;; except the first line. + (goto-char (point-min)) + (forward-line 1) + (while (not (eobp)) + (delete-horizontal-space) + (forward-line 1)) + + ;; from is now before the text to fill, + ;; but after any fill prefix on the first line. + + ;; Make sure sentences ending at end of line get an extra space. + (goto-char from) + ;;; patch by S.Tomura 88-Jun-30 + ;;$B!cE}9g!d(B + ;; . + CR ==> . + SPC + SPC + ;; . + SPC + CR + ==> . + SPC + + ;;(while (re-search-forward "[.?!][])""']*$" nil t) + ;; (insert ? )) + (while (re-search-forward "[.?!][])""']*$" nil t) + (if (eobp) + nil + (delete-char 1) + (insert " "))) ;; replace CR by two spaces. + ;; end of patch + ;; The change all newlines to spaces. + ;; patched by S.Tomura 87-Dec-7 + ;; bug fixed by S.Tomura 88-May-25 + ;; modified by S.Tomura 88-Jun-21 + ;;(subst-char-in-region from (point-max) ?\n ?\ ) + ;;$BF|K\8l$N8l$N8e$K$O6uGr$O$J$$!#(B + (goto-char from) + (end-of-line) + (while (not (eobp)) + (delete-char 1) + (if (and (< ? (preceding-char)) ;; + SPC + CR + X ==> + SPC + X + (< (preceding-char) 128) + (<= ? (following-char)) + (< (following-char) 128)) + (insert ?\ )) + (end-of-line)) + ;; $Bl9g$K$O(Bfill-column$B$h$jBg$-$/$J$k$3$H$,$"$k!#(B + (or (>= fill-column (current-column)) (backward-char 1)) + ;; end of patch + (if (eobp) + nil + ;; patched by S.Tomura 87-Jun-2 + ;;(skip-chars-backward "^ \n") + ;;(if (if (zerop prefixcol) (bolp) (>= prefixcol (current-column))) + ;; (skip-chars-forward "^ \n") + ;; (forward-char -1))) + ;; $B86B'$H$7$F(Bfill-column$B$h$j:8B&$KJ,3dE@$rC5$9!#(B + ;; Find a point to break lines + (skip-chars-backward " \t") ;; skip SPC and TAB + (if (or (<= 128 (preceding-char)) + (<= 128 (following-char)) ;; 88-Aug-25 + (= (following-char) ? ) + (= (following-char) ?\t)) + (kinsoku-shori) + (if(re-search-backward "[ \t\n]\\|\\z" ;; 89-Nov-17 + (point-min) (point-min)) + (forward-char 1)) + (skip-chars-backward " \t") + (kinsoku-shori)) + ;; prifixcol$B$h$j1&B&$KJ,3dE@$rC5$9!#(B + ;; $B$3$N>l9g$OJ,3dE@$O(Bfill-column$B$h$j1&B&$K$J$k!#(B + (if (>= prefixcol (current-column)) + (progn + (move-to-column prefixcol) + (if (re-search-forward "[ \t]\\|\\z" ;; 89-Nov-17 + (point-max) (point-max)) + (backward-char 1)) + (skip-chars-backward " \t") + (kinsoku-shori) + ;; $B$=$l$bBLL\$J$iJ,3d$rD|$a$k!#(B + (if (>= prefixcol (current-column)) (goto-char (point-max)))))) + ;; end of patch S.Tomura + ;; patch by S. Tomura 88-Jun-20 + ;;(delete-horizontal-space) + ;;$B!cJ,3d!d(B + ;; $BA43Q(B | SPC + SPC$B!v(B --> $BA43Q(B + SPC + CR + ;; | SPC + SPC* + $BA43Q(B --> SPC + CR + $BA43Q(B + ;; . | SPC + SPC + --> . + CR + ;; . | SPC + nonSPC --> . + SPC + CR + nonSPC + ;; + ;; . | $BH>3Q(B --> $BJ,3d$7$J$$(B + ;; . | $BA43Q(B --> $BJ,3d$7$J$$(B + (if (not kanji-flag) (delete-horizontal-space) + (let ((start) (end)) + (skip-chars-backward " \t") + (setq start (point)) + (skip-chars-forward " \t") + (setq end (point)) + (delete-region start end) + (if (and (not + (and (save-excursion + (skip-chars-backward " ])\"'") + (memq (preceding-char) '(?. ?? ?!))) + (= end (+ start 2)))) + (or (and (or (<= 128 (preceding-char)) + (<= 128 (following-char))) + (< start end) + (not (eobp))) + (and (memq (preceding-char) '(?. ?? ?!)) + (= (1+ start) end) + (not (eobp))))) + (insert ? )))) + ;; end of patch + (if (equal (preceding-char) ?\\) + (insert ? )) + (insert ?\n) + (LaTeX-indent-line) + (setq prefixcol (current-column)) + (and justify-flag (not (eobp)) + (progn + (forward-line -1) + (justify-current-line) + (forward-line 1))) + ) + (goto-char (point-max)) + (delete-horizontal-space))))) + +;;; Support for various self-insert-command + +(cond ((fboundp 'can-n-egg-self-insert-command) + (fset 'tex-jp-self-insert-command 'can-n-egg-self-insert-command)) + ((fboundp 'egg-self-insert-command) + (fset 'tex-jp-self-insert-command 'egg-self-insert-command)) + ((fboundp 'canna-self-insert-command) + (fset 'tex-jp-self-insert-command 'canna-self-insert-command)) + (t + (fset 'tex-jp-self-insert-command 'self-insert-command))) + +(defun TeX-insert-punctuation () + "Insert point or comma, cleaning up preceding space." + (interactive) + (if (TeX-looking-at-backward "\\\\/\\(}+\\)" 50) + (replace-match "\\1" t)) + (call-interactively 'tex-jp-self-insert-command)) + +;;; Error Messages + +(if japanese-TeX-error-messages + (setq TeX-error-description-list + '(("Bad \\\\line or \\\\vector argument.*" . +"$B@~$N79$-$r;XDj$9$k!$(B\\line$B$^$?$O(B\\vector$B$N:G=i$N0z?t$,IT@5$G$9!%(B") + + ("Bad math environment delimiter.*" . +"$B?t<0%b!<%ICf$G?t<0%b!<%I3+;O%3%^%s%I(B\\[$B$^$?$O(B\\($B!$$^$?$O!$?t<0%b!<%I30$G(B +$B?t<0%b!<%I=*N;%3%^%s%I(B\\[$B$^$?$O(B\\($B$r(BTeX$B$,8+$D$1$^$7$?!%$3$NLdBj$O!$?t<0%b!<(B +$B%I$N%G%j%_%?$,%^%C%A$7$F$$$J$+$C$?$j!$3g8L$N%P%i%s%9$,$H$l$F$$$J$+$C$?$j$9(B +$B$k$?$a$K@8$8$^$9!%(B") + + ("Bad use of \\\\\\\\.*" . +"\\\\$B%3%^%s%I$,%Q%i%0%i%UCf$K$"$j$^$7$?!%$3$N;H$$$+$?$OL50UL#$G$9!%(B +$B$3$N%(%i!<%a%C%;!<%8$O(B\\\\$B$,(Bcentering$B4D6-$d(Bflushing$B4D6-$G;H$o$l$?(B +$B;~!$$"$k$$$O(Bcentering/flushing$B@k8@$,M-8z$J$H$3$m$G;H$o$l$?;~$K@8$8$^$9!%(B") + + ("\\\\begin{[^ ]*} ended by \\\\end{[^ ]*}." . +"$BBP1~$9$k(B\\begin$BL?Na$N$J$$(B\\end$BL?Na$r(BLaTeX$B$,8+$D$1$^$7$?!%(B\\end$BL?Na$N4D(B +$B6-L>$r4V0c$($?$+!$M>J,$J(B\\begin$BL?Na$,$"$k$+!$(B\\end$BL?Na$r$o$9$l$?$+$N$$$:(B +$B$l$+$G$7$g$&!%(B") + + ("Can be used only in preamble." . +"$B%W%j%"%s%V%k$G$7$+;H$($J$$(B\\documentstyle$B!&(B\\nofiles$B!&(B\\includeonly +\\makeindex$B!&(B\\makeglossary$B$N$&$A$N$$$:$l$+$,(B\\begin{document}$B$h$j$b(B +$B8e$G;H$o$l$F$$$k$N$r(BLaTeX$B$,8!=P$7$^$7$?!%$3$N%(%i!<$O(B\\begin{document} +$B$,M>J,$K$"$C$?;~$K$b@8$8$^$9!%(B") + + ("Command name [^ ]* already used.*" . +"$B$9$G$KDj5A$5$l$F$$$kL?NaL>$^$?$O4D6-L>$KBP$7$F(B\\newcommand$B!&(B +\\newenvironment$B!&(B\\newlength$B!&(B\\newsavebox$B!&(B\\newtheorem$B$N$&$A$N$$$:(B +$B$l$+$rA0$NL?Na$,<+F0(B +$BE*$KDj5A$5$l$k$N$G!$4{$KB8:_$9$k4D6-$HF1L>$NL?Na$ODj5A$G$-$^$;$s(B)$B!%?7(B +$B$7$$L>A0$r9M$($k$+!$(B\\newcommand$B$+(B\\newenvironment$B$N>l9g$J$iBP1~$9$k(B +\\renew...$BL?Na$r;H$o$J$1$l$P$J$j$^$;$s!%(B") + + ("Counter too large." . +"$BJ8;z$G=g=xIU$1$5$l$?$b$N!$$?$V$sHV9fIU$1$5$l$?%j%9%H4D6-$N%i%Y%k$,!$(B +26$B$h$j$bBg$-$$HV9f$ro$KD9$$%j%9%H$r;H$C$F$$$k$+!$(B +$B%+%&%s%?$r:F@_Dj$7$F$7$^$C$?$+$N$$$:$l$+$G$7$g$&!%(B") + + ("Environment [^ ]* undefined." . +"$BDj5A$5$l$F$$$J$$4D6-$KBP$9$k(B\\begin$BL?Na$r(BLaTeX$B$,8+$D$1$^$7$?!%$*$=$i$/(B +$B4D6-L>$r4V0c$($?$N$G$7$g$&!%(B") + + ("Float(s) lost." . +"parbox$B$N$J$+$K(Bfigure$B4D6-!&(Btable$B4D6-$^$?$O(B\\marginpar$BL?Na$,$"$j$^$7$?(B +\($B$J$*!$(Bparbox$B$O(Bminipage$B4D6-$+(B\\parbox$BL?Na$K$h$C$F:n$i$l$k$+!$5SCm$d?^(B +$B$J$I$KBP$7$F(BLaTeX$B$,@8@.$9$k$b$N$G$9(B\)$B!%$3$l$O=PNO;~$N%(%i!<$J$N$G!$860x(B +$B$H$J$C$F$$$k4D6-$"$k$$$OL?Na$O!$(BLaTeX$B$,LdBj$rH/8+$7$?>l=j$h$j$b$@$$$V(B +$B$sA0$K$"$k2DG=@-$,$"$j$^$9!%=PNO$5$l$F$$$J$$?^!&I=!&K5Cm$J$I$,$$$/$D$+(B +$B$"$k$+$b$7$l$^$;$s$,!$$=$l$i$,860x$G$"$k$H$O8B$j$^$;$s!%(B") + + ("Illegal character in array arg." . +"array$B4D6-$^$?$O(Btabular$B4D6-$N0z?t!$$^$?$O(B\\multicolumn$BL?Na$NBh(B2$B0z?t(B +$B$NCf$KIT@5$JJ8;z$,$"$j$^$7$?!%(B") + + ("Missing \\\\begin{document}." . +"\\begin{document}$BL?Na$h$jA0$K(BLaTeX$B$,=PNO$r9T$J$C$F$7$^$$$^$7$?!%(B +\\begin{document}$BL?Na$rK:$l$?$+!$%W%j%"%s%V%k$K2?$+4V0c$$$,$"$k$N$G$7$g$&!%(B +$BBG$A4V0c$$$K$h$kJ8;z$d!$@k8@$N8m$j$K$h$k2DG=@-$b$"$j$^$9!%Nc$($P!$0z?t$r(B +$B0O$`3g8L$rH4$+$7$?$H$+!$L?NaL>$N(B\\$B$rK:$l$?>l9g$J$I$G$9!%(B") + + ("Missing p-arg in array arg.*" . +"array$B4D6-!&(Btabular$B4D6-$N0z?t!$$"$k$$$O(B\\multicolumn$BL?Na$NBh(B2$B0z?t$NCf$K!$(B +$B3g8L$K0O$^$l$?I=8=$N$D$$$F$$$J$$(Bp$B$,$"$j$^$7$?!%(B") + + ("Missing @-exp in array arg." . +"array$B4D6-!&(Btabular$B4D6-$N0z?t!$$"$k$$$O(B\\multicolumn$BL?Na$NBh(B2$B0z?t$NCf$K!$(B +@$BI=8=$N$D$$$F$$$J$$(B@$B$,$"$j$^$7$?!%(B") + + ("No such counter." . +"\\setcounter$BL?Na$^$?$O(B\\addtocounter$BL?Na$G!$B8:_$7$J$$%+%&%s%?$,;XDj$5$l(B +$B$^$7$?!%$*$=$i$/$?$@$N%?%$%W%_%9$G$7$g$&!%$?$@$7!$%(%i!<$,(Baux$B%U%!%$%k$NCf(B +$B$G@8$8$?>l9g$O!$(B\\newcounter$BL?Na$r%W%j%"%s%V%k$N30$G;H$C$?$N$@$H;W$o$l$^$9!%(B") + + ("Not in outer par mode." . +"figure$B4D6-!&(Btable$B4D6-$"$k$$$O(B\\marginpar$BL?Na$,?t<0%b!<%I$^$?$O(Bparbox$B$NCf(B +$B$G;H$o$l$^$7$?!%(B") + + ("\\\\pushtabs and \\\\poptabs don't match." . +"\\pushtabs$B$HBP1~$7$J$$(B\\poptabs$B$,$_$D$+$C$?$+!$$^$?$O!$BP1~$9$k(B\\poptabs +$B$r$b$?$J$$(B\\pushtabs$B$,$"$k$N$K(B\\end{tabbing}$B$,8=$l$F$7$^$$$^$7$?!%(B") + + ("Something's wrong--perhaps a missing \\\\item." . +"$B%j%9%H4D6-$NCf$K(B\\item$BL?Na$,$J$$$N$,:G$b$"$j$=$&$J%1!<%9$G$9!%(B +thebibliography$B4D6-$G0z?t$rK:$l$?>l9g$K$b@8$8$^$9!%(B") + + ("Tab overflow." . +"\\=$B$,!$(BLaTeX$B$G5v$5$l$k%?%V%9%H%C%W$N:GBg?t$rD6$($F$$$^$9!%(B") + + ("There's no line here to end." . +"\\newline$BL?Na$^$?$O(B\\\\$BL?Na$,%Q%i%0%i%U4V$K$"$j$^$9!%$3$N;H$$$+$?$O(B +$BL50UL#$G$9!%$b$76u9T$r$"$1$?$$$N$G$7$?$i!$(B\\vspace$B$r;H$C$F$/$@$5$$!%(B") + + ("This may be a LaTeX bug." . +"$B$^$C$?$/$o$1$,$o$+$i$J$/$J$C$F$7$^$$$^$7$?!%$?$V$s$3$l0JA0$K8!=P$5$l$?(B +$B%(%i!<$N$;$$$@$H;W$o$l$^$9!%$7$+$7!$(BLaTeX$B<+BN$N%P%0$G$"$k2DG=@-$b$"$j$^$9!%(B +$B$b$7$3$N%(%i!<$,F~NO%U%!%$%k$KBP$9$k:G=i$N%(%i!<$G$"$j!$2?$b4V0c$$$,8+$D(B +$B$+$i$J$$>l9g$O!$$=$N%U%!%$%k$rJ]B8$7$F!$%m!<%+%k%,%$%I$K=q$+$l$F$$$k@UG$(B +$B/$J$/$H$b(B4$BCJ3,$^$G$O5v$5$l$F$$$^$9(B($BIaDL$O(B +$B$=$l$G==J,$G$7$g$&(B)$B!%(B") + + ("Too many unprocessed floats." . +"$B$3$N%(%i!<$O(B1$B%Z!<%8Cf$N(B\\marginpar$BL?Na$,B?$9$.$k$?$a$K@8$8$k>l9g$b$"(B +$B$j$^$9$,!$$b$C$H$"$j$=$&$J$N$O!$8B3&$rD6$($F?^$dI=$rJ]B8$7$h$&$H$7$?>l(B +$B9g$G$9!%D9$$J8=q$rAHHG$7$F$$$/$H$-!$(BLaTeX$B$O?^$dI=$r8D!9$KJ]B8$7!$%Z!<(B +$B%8$NJ,3d$r9T$J$&;~$K$=$l$i$rA^F~$7$^$9!%$3$N%(%i!<$O!$%Z!<%8$X$NJ,3d$,(B +$B9T$J$o$l$kA0$K!$$"$^$j$K$bB?$/$N(Bfigure$B4D6-$d(Btable$B4D6-$,8+$D$+$C$?>l9g(B +$B$K@8$8$^$9!%$3$NLdBj$O4D6-$N$&$A$N$$$/$D$+$rJ8=q$N=*$o$j$NJ}$K0\F0$9$l(B +$B$P2r7h$G$-$^$9!%$^$?!$$3$N%(%i!<$O(B``logjam''$B$K$h$C$F@8$8$k$3$H$b$"$j$^(B +$B$9!%(B``logjam''$B$H$O!$(BLaTeX$B$,=P8==g=xDL$j$K$7$+?^I=$r=PNO$G$-$J$$$;$$$G!$(B +$B$D$^$C$F$$$k8e$m$N?^I=$N$?$a$KA0$N?^I=$r=PNO$G$-$J$/$J$k$3$H$r$$$$$^$9!%(B +$B$3$N%8%c%`$N860x$O!$Bg$-$9$.$F(B1$B%Z!<%8$J$$$7$O;XDj$5$l$?NN0h$K<}$^$i$J(B +$B$$$h$&$J?^$dI=$G$"$k2DG=@-$,$"$j$^$9!%$3$l$O!$0z?t$K(Bp$B%*%W%7%g%s$,;XDj(B +$B$5$l$F$$$J$$$H5/$-$d$9$/$J$j$^$9!%(B") + + ("Undefined tab position." . +"\\>$B!&(B\\+$B!&(B\\-$B$^$?$O(B\\<$BL?Na$G!$B8:_$7$J$$%?%V0LCV!$$9$J$o$A(B\\=$BL?Na$GDj(B +$B5A$5$l$F$$$J$$%?%V0LCV$r;XDj$7$h$&$H$7$F$$$^$9!%(B") + + ("\\\\< in mid line." . +"\\<$BL?Na$,(Btabbing$B4D6-$N9T$NESCf$K8=$l$^$7$?!%$3$NL?Na$O9T$N@hF,$K$J$1$l$P(B +$B$J$j$^$;$s!%(B") + + ("Counter too large." . +"$B5SCm$,J8;z$^$?$O5SCm5-9f$G=g=x$E$1$5$l$F$$$^$9$,!$J8;z$^$?$O5-9f$r;H$$(B +$B@Z$C$F$7$^$$$^$7$?!%$*$=$i$/(B\\thanks$BL?Na$N;H$$$9$.$G$9!%(B") + + ("Double subscript." . +"$B?t<0Cf$N(B1$B$D$NNs$K(B2$B$D$N2eIU$-J8;z$,$D$$$F$$$^$9!%Nc$($P(Bx^{2}^{3}$B$N$h$&$K!%(B +$B$3$N$h$&$JI=8=$OL50UL#$G$9!%(B") + + ("Extra alignment tab has been changed to \\\\cr." . +"array$B4D6-$^$?$O(Btabular$B4D6-$N(B1$BNsCf$K$"$k9`L\$,B?$9$.$^$9!%8@$$49$($k$H!$(B +$BNs$N=*$o$j$^$G$K$"$k(B&$B$N?t$,B?$9$.$^$9!%$*$=$i$/A0$NNs$N:G8e$K(B\\\\$B$r$D$1(B +$B$k$N$rK:$l$?$N$G$7$g$&!%(B") + + ("Extra \\}, or forgotten \\$." . +"$B3g8L$^$?$O?t<0%b!<%I$N%G%j%_%?$,@5$7$/BP1~$7$F$$$^$;$s!%$*$=$i$/(B{$B!&(B\\[$B!&(B +\\($B$"$k$$$O(B$$B$N$&$A$N$$$:$l$+$r=q$-K:$l$?$N$G$7$g$&!%(B") + + ("Font [^ ]* not loaded: Not enough room left." . +"$B$3$NJ8=q$O8B3&$h$j$bB?$/$N%U%)%s%H$r;H$C$F$$$^$9!%$b$7J8=q$NItJ,$4$H$K(B +$BJL!9$N%U%)%s%H$,;H$o$l$F$$$k$N$J$i!$J,3d$7$F=hM}$9$l$PLdBj$O2r7h$5$l$^$9!%(B") + + ("I can't find file `.*'." . +"$BI,MW$J%U%!%$%k$,8+$D$+$j$^$;$s$G$7$?!%$b$78+$D$+$i$J$$%U%!%$%k$N3HD%;R(B +$B$,(Btex$B$N>l9g!$$"$J$?$,;XDj$7$?%U%!%$%k!$$9$J$o$A%a%$%s%U%!%$%k$^$?$O(B +\\input$BL?Na!&(B\\include$BL?Na$GA^F~$5$l$k%U%!%$%k$,8+$D$+$i$J$$$N$G$9!%(B +$B3HD%;R$,(Bsty$B$G$"$l$P!$B8:_$7$J$$J8=q%9%?%$%k$^$?$O%9%?%$%k%*%W%7%g%s$r(B +$B;XDj$7$h$&$H$7$F$$$^$9!%(B") + + ("Illegal parameter number in definition of .*" . +"$B$3$l$O$*$=$i$/!$(B\\newcommand$B!&(B\\renewcommand$B!&(B\\newenvironment$B$^$?$O(B +\\renewenvironment$BL?Na$N$J$+$G(B#$B$,@5$7$/;H$o$l$J$+$C$?$?$a$K@8$8$?%(%i!<(B +$B$G$9!%(B\\#$BL?Na$H$7$F;H$o$l$k>l9g$r=|$1$P!$(B#$B$H$$$&J8;z$O!$Nc$($P(B2$BHVL\$N(B +$B0z?t$r;XDj$9$k(B#2$B$N$h$&$K!$0z?t%Q%i%a!<%?$H$7$F$7$+;H$($^$;$s!%$^$?!$(B +$B$3$N%(%i!<$O!$>e$K$"$2$?(B4$B$D$N%3%^%s%I$,$*8_$$$KF~$l;R$K$J$C$F$$$k>l9g(B +$B$d!$(B\\newenvironment$BL?Na!&(B\\renewenvironment$BL?Na$G(B#2$B$N$h$&$J%Q%i%a!<%?(B +$B$,:G8e$N0z?t$NCf$G;H$o$l$F$$$k>l9g$K$b@8$8$^$9!%(B") + + ("Illegal unit of measure ([^ ]* inserted)." . +"$B$b$7(B + ! Missing number, treated as zero. +$B$H$$$&%(%i!<$,5/$-$?D>8e$G$"$l$P!$$3$N%(%i!<$N860x$b$=$l$HF1$8$G$9!%(B +$B$=$&$G$J$$>l9g$O!$(BLaTeX$B$,0z?t$H$7$F(Blength$B$r4|BT$7$F$$$k$N$K(Bnumber$B$,(B +$B8=$l$?$3$H$r0UL#$7$F$$$^$9!%$3$N%(%i!<$N:G$b$"$j$,$A$J860x$OD9$5(B0$B$r(B +$BI=$o$9(B0in$B$N$h$&$JI=8=$NBe$o$j$K(B0$B$H$+$$$F$7$^$&$3$H$K$"$j$^$9!%$?$@$7!$(B +$BL?Na$N0z?t$r=q$-K:$l$?>l9g$K$b$3$N%(%i!<$,@8$8$k$3$H$,$"$j$^$9!%(B") + + ("Misplaced alignment tab character \\&." . +"array$B$^$?$O(Btabular$B4D6-$G$N9`L\6h@Z$j$K$N$_;H$o$l$k$Y$-J8;z(B&$B$,IaDL$NJ8(B +$B$NCf$K$"$j$^$7$?!%$?$V$s(B\\&$B$HF~NO$7$?$+$C$?$N$G$7$g$&!%(B") + + ("Missing control sequence inserted." . +"$B$3$N%(%i!<$O!$$*$=$i$/L?NaL>$G$J$$$b$N$r(B\\newcommand$B!&(B\\renewcommand$B!&(B +\\newlength$B$^$?$O(B\\newsavebox$B$NBh(B1$B0z?t$H$7$F;H$C$?$?$a$K@8$8$?$N$G$7$g$&!%(B") + + ("Missing number, treated as zero." . +"$B$3$N%(%i!<$O$?$$$F$$!$0z?t$H$7$F(Bnumber$B$^$?$O(Blength$B$rI,MW$H$7$F$$$kL?Na$K(B +$BBP$7$F0z?t$,M?$($i$l$J$+$C$?$?$a$K@8$8$^$9!%0z?t$r=q$-K:$l$?$N$+!$%F%-%9%H(B +$B$NCf$NBg3g8L(B([])$B$,%*%W%7%g%s0z?t$N;XDj$H4V0c$($i$l$F$7$^$C$?$+$N$I$A$i$+$G(B +$B$7$g$&!%$^$?!$?t$r@8@.$9$k(B\\value$B$N$h$&$JL?Na$d(Blength$BL?Na$NA0$K(B\\protect$B$r(B +$BCV$$$?>l9g$K$b$3$N%(%i!<$O@8$8$^$9!%(B") + + ("Missing [{}] inserted." . +"TeX$B$O4{$K$o$1$,$o$+$i$J$/$J$C$F$$$^$9!%%(%i!<%a%C%;!<%8$K$h$C$F<($5$l$F(B +$B$$$k>l=j$O$?$V$sF~NO$K4V0c$$$,$"$C$?$H$3$m$h$j$b8e$m$K$J$C$F$7$^$C$F$$$k(B +$B$G$7$g$&!%(B") + + ("Missing \\$ inserted." . +"$B$*$=$i$/!$?t<0%b!<%ICf$G$7$+;H$($J$$L?Na$r(BTeX$B$,?t<0%b!<%I30$G8!=P$7$?(B +$B$N$@$H;W$o$l$^$9!%FC$K5-=R$5$l$F$$$J$$8B$j!$(BLaTeX Book(Lamport$BCx(B,$BLu=q(B +$B$O%"%9%-!<=PHG(B)$B$N(B3.3$B@a$K$"$kE:;z!&J,?t!&?t3X5-9f$J$I$N%3%^%s%I$O$9$Y$F(B +$B?t<0%b!<%I$G$7$+;H$($J$$$N$@$H$$$&$3$H$KCm0U$7$F$/$@$5$$!%$?$H$(L?Na$,(B +$B?t<04D6-$NCf$K$"$C$?$H$7$F$b!$(Bbox$B$r@8@.$9$kL?Na$N0z?t$r=hM}$7$O$8$a$?(B +$B;~E@$G$O!$(BTeX$B$O$^$@?t<0%b!<%I$KF~$C$F$$$J$$$N$G$9!%$^$?!$$3$N%(%i!<$O!$(B +$B?t<0%b!<%ICf$G(BTeX$B$,6u9T$r8!=P$7$?>l9g$K$b@8$8$^$9!%(B") + + ("Not a letter." . +"\\hyphenation$BL?Na$N0z?t$NCf$K$J$K$+@5$7$/$J$$$b$N$,$"$j$^$9!%(B") + + ("Paragraph ended before [^ ]* was complete." . +"$BL?Na$N0z?t$NCf$KIT@5$J6u9T$,F~$C$F$7$^$C$F$$$^$9!%$*$=$i$/0z?t$N=*$o$j(B +$B$KJD$83g8L$r$D$1$k$N$rK:$l$?$N$G$7$g$&!%(B") + + ("\\\\[^ ]*font [^ ]* is undefined .*" . +"$B$3$N%(%i!<$O$"$^$j0lHLE*$G$J$$%U%)%s%H$,?t<0%b!<%I$G;H$o$l$?;~$K@8$8(B +$B$^$9!%Nc$($P!$5SCm$NCf$N?t<0$G(B\\sc$BL?Na$,;H$o$l$k$H!$(Bfootnotesize$B$N(B +small caps$B%U%)%s%H$,8F$S$@$5$l$k$3$H$K$J$j$^$9!%$3$NLdBj$O(B\\load$BL?Na$r(B +$B;H$($P2r7h$G$-$^$9!%(B") + + ("Font .* not found." . +"$BL$CN$N(Bfamily/series/shape/size$B$NAH$_9g$o$;$N%U%)%s%H$,;XDj$5$l$^$7$?!%(B +$B$3$N%(%i!<$,5/$-$k%1!<%9$O(B2$B$D9M$($i$l$^$9!%(B + 1) \\size$B%^%/%m$G;H$($J$$%5%$%:$rA*Br$7$h$&$H$7$?!%(B + 2) $B$=$&$G$J$1$l$P!$4IM}l9g$I$&$9$l(B +$B$P$$$$$N$+$rH=CG$9$kJ}K!$r0J2<$K@bL@$7$^$9!%$b$7LdBj$,F~NO%U%!%$%kCf$N(B +$B%(%i!<$K$"$k>l9g$O!$8D!9$N%(%i!<$r2r7h$7$F$$$/J}K!$r$H$k$N$,$h$$$G$7$g(B +$B$&!%(BLaTeX$B$,C;$$%U%!%$%k$G%a%b%j$r;H$$$-$k$3$H$O$a$C$?$K$"$j$^$;$s$+$i!$(B +$B%(%i!<$N5/$-$?0LCV$h$jA0$K=hM}$7$?%Z!<%8$,?t%Z!<%8$7$+$J$1$l$P!$$^$:4V(B +$B0c$$$J$/F~NO%U%!%$%k$KLdBj$,$"$k$O$:$G$9!%(B + +$B%(%i!<%a%C%;!<%8$N:G8e$K!$(BTeX$B$,;H$$$-$C$F$7$^$C$?%a%b%j$NO@a!&(B\\caption$B!&(B\\addcontentsline$B$"$k$$$O(B\\addtocontents$BL?Na$N0z?t$H(B +$B$7$FM?$($?%F%-%9%H$,D9$9$.$k>l9g$K@8$8$k$3$H$,$"$j$^$9!%$3$N%(%i!<$O(B +$B$?$$$F$$(B\\end{document}$B$r=hM}$7$F$$$k;~$K@8$8$^$9$,!$(B\\tableofcontents$B!&(B +\\listoffigures$B$"$k$$$O(B\\listoftables$BL?Na$rl9g$K$b5/$-$k(B +$B$3$H$,$"$j$^$9!%$3$NLdBj$r2r7h$9$k$K$O!$$b$C$HC;$$%F%-%9%H$r%*%W%7%g%s(B +$B0z?t$H$7$FM?$($F$/$@$5$$!%L\e$K%O%$%U%M!<%7%g%s>pJs$rM?$($h$&$H$7$F$$$^$9!%(B +$B$"$^$j;H$o$J$$C18l$N(B\\hyphenation$BL?Na$r$NDj5A$^$?$OAj8_;2>H%i%Y%k$NDj5A$,B?$9$.$^$9!%(B + +input stack size +================ +$B$3$N%(%i!<$O$*$=$i$/L?NaDj5ACf$N8m$j$K$h$k$b$N$G$9!%Nc$($P!$l9g$N$$$:$l$+$G$9!%(B +\(1\)$BHs>o$KD9$/J#;($JL?Na$r?tB?$/Dj5A$7$?!%(B(2)index$B$^$?$O(Bglossary$B$r:n$C(B +$B$F$$$k$H$-!$(B1$B%Z!<%8Cf$K$"$^$j$K$bB?$/$N(B\\index$B$^$?$O(B\\glossary$BL?Na$,$"(B +$B$k!%(B(3)$B@8@.$N$?$a$N>pJs$r(BTeX$B$,J];}$7$-$l$J$$$h$&$J!$$"$^$j$K$bJ#;($J%Z!<(B +$B%8$r@8@.$7$h$&$H$7$?!%:G=i$N(B2$B$D$NLdBj$N2r7hJ}K!$OL@$i$+$G$9!%L?NaDj5A(B +$B$N?t$"$k$$$O(B\\index$B!&(B\\glossary$BL?Na$N?t$r8:$i$9$3$H$G$9!%(B3$BHVL\$NLdBj$O(B +$B$A$g$C$HLq2p$G$9!%$3$l$O!$Bg$-$J(Btabbin$B!&(Btabular$B!&(Barray$B!&(Bpicture$B4D6-$N(B +$B$;$$$G@8$8$k$3$H$,$"$j$^$9!%=PNO0LCV$,7hDj$5$l$k$N$rBT$C$F$$$k?^$dI=$G(B +TeX$B$N%a%b%j$,$$$C$Q$$$K$J$C$F$$$k$N$+$b$7$l$^$;$s!%K\Ev$K(BTeX$B$NMFNL$rD6(B +$B$($F$7$^$C$?$N$+$I$&$+D4$Y$k$?$a$K$O!$%(%i!<$N5/$3$C$?>l=j$ND>A0$K(B +\\clearpage$BL?Na$rF~$l$F$b$&0lEY%3%s%Q%$%k$rM5$,$G$-$k$+$b$7$l$^$;$s(B(\\pagebreak$BL?Na$G$O$@$a$G$9(B)$B!%$b$7?^$dI=(B +$B$,N/$^$C$F$$$k$3$H$,LdBj$J$N$J$i$P!$?^I=$r$b$C$H8e$m$NJ}$K0\F0$9$k$H$+!$(B +$B$"$k$$$O$b$C$HA0$N;~E@$G=PNO$5$l$k$h$&$K$9$l$P2sHr$G$-$^$9!%$b$7$^$@J8(B +$B=q$r:n@.$7$F$$$kESCf$J$i!$$H$j$"$($:(B\\clearpage$BL?Na$rF~$l$F$*$$$F!$:G(B +$B=*HG$r:n$k;~$^$G$3$NLdBj$OC*>e$2$7$F$*$-$^$7$g$&!%F~NO%U%!%$%k$,JQ$o$k(B +$B$HLdBj$,2r>C$5$l$k>l9g$b$"$k$N$G$9!%(B + +pool size +========= +$BAj8_;2>H$N(B\\label$B$,B?$9$.$k$+!$L?Na$NDj5A$,B?$9$.$k$+$N$I$A$i$+$G$9!%(B +$B@53N$K$$$($P!$Dj5A$7$?%i%Y%kL>$*$h$SL?NaL>$K;H$C$?J8;z?t$,B?$9$.$k$H$$(B +$B$&$3$H$G$9!%$G$9$+$i!$$b$C$HC;$$L>A0$r;H$($P$3$NLdBj$O2r7h$7$^$9!%$?$@(B +$B$7!$$3$N%(%i!<$O!$(B\\setcounter$B$J$I$N%+%&%s%?L?Na$d(B\\newenvironment$B!&(B +\\newtheorem$BL?Na$N0z?t$N=*$o$j$r<($91&3g8L$rK:$l$?>l9g$K$b@8$8$^$9!%(B + +save size +========= +$B$3$N%(%i!<$O!$@k8@$NM-8zHO0O$dL?Na!&4D6-$,$"$^$j$K$b?<$/F~$l;R$K$J$C$F(B +$B$$$k>l9g$K@8$8$^$9!%$?$H$($P!$(B\\multiput$BL?Na$N0z?t$K(Bpicture$B4D6-$,$"$j!$(B +$B$=$N$J$+$K(B\\footnotesize$B@k8@$,$"$j!$$=$N@k8@$NM-8zHO0O$K(B\\multiput$BL?Na(B +$B$,$"$C$F!$$=$N0z?t$K(B... $B$H$$$&$h$&$J>l9g$G$9!%(B") + + ("Text line contains an invalid character." . +"$BF~NOCf$KIT@5$JJ8;z$,4^$^$l$F$$$^$9!%%U%!%$%k:n@.$N8m$j$K$h$C$F%F%-%9%H(B +$B%(%G%#%?$,$3$NJ8;z$rA^F~$7$F$7$^$C$?$N$G$7$g$&!%l9g$K$O%m!<%+%k%,%$%I$r8+$F$/$@$5$$!%(B") + + ("Undefined control sequence." . +"TeX$B$,L$Dj5A$NL?NaL>$rH/8+$7$^$7$?!%$*$=$i$/F~NO$N8m$j$G$7$g$&!%$b$7$3(B +$B$N%(%i!<$,(BLaTeX$BL?Na$N=hM}Cf$K@8$8$?>l9g$O!$$=$NL?Na$O4V0c$C$?0LCV$KCV$+(B +$B$l$F$$$^$9!%Nc$($P!$%j%9%H4D6-$NCf$G$J$$$N$K(B\\item$BL?Na$,;H$o$l$?>l9g$J$I(B +$B$G$9!%$^$?!$(B\\documentstyle$BL?Na$,$J$$>l9g$K$b$3$N%(%i!<$,@8$8$^$9!%(B") + + ("Use of [^ ]* doesn't match its definition." . +"$B$*$=$i$/IA2h$N$?$a$NL?Na$@$H;W$o$l$^$9$,!$0z?t$N;H$$$+$?$,4V0c$C$F$$(B +$B$^$9!%4V0c$C$F$$$k$N$,(B\\@array$BL?Na$N>l9g$O!$(Barray$B4D6-$+(Btabular$B4D6-$G$N(B +@$BI=8=$N0z?t$K$J$K$+8m$j$,$"$k$N$G$7$g$&!%(Bfragile$B$JL?Na$,(B\\protect$B$5$l$F(B +$B$$$J$$$N$+$b$7$l$^$;$s!%(B") + + ("You can't use `macro parameter character \\#' in [^ ]* mode." . +"$BFCl=j$,8+$D$+$i$J$+$C$?$N$G!$(B1$B9T$K<}$^$k$Y$-J,NL0J>e(B +$B$N=PNO$,9T$J$o$l$F$7$^$$$^$7$?!%(B") + + ("Overfull \\\\vbox .*" . +"$B%Z!<%8J,3d$N$?$a$NE,@Z$J>l=j$,8+$D$+$i$J$+$C$?$N$G!$(B1$B%Z!<%8$K<}$^$k$Y$-(B +$BJ,NL0J>e$N=PNO$,9T$J$o$l$F$7$^$$$^$7$?!%(B") + + ("Underfull \\\\hbox .*" . +"$BM>J,$J?bD>%9%Z!<%9$,$J$$$+$I$&$+=PNO$r3N$+$a$F$/$@$5$$!%$b$7$"$l$P!$$=(B +$B$l$O(B\\\\$BL?Na$^$?$O(B\\newline$BL?Na$K4X78$9$kLdBj$N$?$a$K@8$8$?$b$N$G$9!%Nc(B +$B$($P(B2$B$D$N(B\\\\$BL?Na$,B3$$$F$$$k>l9g$J$I$G$9!%$3$N7Y9p$O(Bsloppypar$B4D6-$d(B +\\sloppy$B@k8@$N;HMQ!$$"$k$$$O(B\\linebreak$BL?Na$NA^F~$J$I$K$h$k>l9g$b$"$j$^$9!%(B") + + ("Underfull \\\\vbox .*" . +"$B%Z!<%8$rJ,3d$9$k$?$a$NE,@Z$J>l=j$,8+$D$1$i$l$:!$==J,$J%F%-%9%H$N$J$$(B +$B%Z!<%8$,$G$-$F$7$^$$$^$7$?!%(B") + +;; New list items should be placed here +;; +;; ("err-regexp" . "context") +;; +;; the err-regexp item should match anything + + (".*" . "$B$4$a$s$J$5$$!%3:Ev$9$k%X%k%W%a%C%;!<%8$,$"$j$^$;$s!%(B")))) + +(provide 'tex-jp) + +;;; tex-jp.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/tex-site.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/tex-site.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,61 @@ +;;; tex-site.el - Select AUC TeX as your tex mode. + +;; Copyright (C) 1991 Kresten Krab Thorup +;; Copyright (C) 1993, 1994, 1997 Per Abrahamsen + +;; Author: Per Abrahamsen +;; Maintainer: Per Abrahamsen +;; Version: XEmacs +;; Keywords: wp + +;; 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 2, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Commentary: + +;; This file contains variables customized for the local site. + +;; It also contains all necessary autoloads, so the user can simple +;; enable AUC TeX by putting (load "tex-site") in his .emacs file, +;; or the administrator can insert it in the site-start.el file. +;; +;; The ideal place for this file is in the `site-lisp' directory. + +;;; Code: + +(defvar no-doc + "This function is part of AUC TeX, but has not yet been loaded. +Full documentation will be available after autoloading the function." + "Documentation for autoload functions.") + +;;; Customization: +;; +;; Copy variables you need to change from the start of `tex.el' and +;; insert them here. + +;;; Autoloads: + +;; This hook will store bibitems when you save a BibTeX buffer. +(add-hook 'bibtex-mode-hook 'BibTeX-auto-store) + +;; Load from AUC TeX files instead of standard files. +(autoload 'tex-mode "tex" no-doc t) +(autoload 'plain-tex-mode "tex" no-doc t) +(autoload 'tex-insert-quote "tex" no-doc t) +(autoload 'texinfo-mode "tex-info" no-doc t) +(autoload 'latex-mode "latex" no-doc t) + +(provide 'tex-site) + +;;; tex-site.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/auctex/tex.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/tex.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,2640 @@ +;;; tex.el --- Support for TeX documents. + +;; Maintainer: Per Abrahamsen +;; Version: 9.7i +;; Keywords: wp +;; X-URL: http://sunsite.auc.dk/auctex + +;; Copyright (C) 1985, 1986 Free Software Foundation, Inc. +;; Copyright (C) 1987 Lars Peter Fischer +;; Copyright (C) 1991 Kresten Krab Thorup +;; Copyright (C) 1993, 1994, 1996, 1997 Per Abrahamsen +;; +;; 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 1, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Code: + +;;; Site Customization +;; +;; The following variables are likely to need to be changed for your +;; site. It is suggested that you do this by *not* changing this +;; file, but instead copy those definitions you need to change to +;; `tex-site.el'. + +(defvar TeX-lisp-directory "auctex/" + "*The directory where the AUC TeX lisp files are located.") + +;; Change this to point to the place where the TeX macros are stored +;; at yourt site. [Ignore when bundled with XEmacs] +(defvar TeX-macro-global '("/usr/lib/texmf/tex/") + "*Directories containing the sites TeX macro files and style files. + +The directory names *must* end with a slash.") + +;; How to print. + +(defvar TeX-print-command "dvips %s -P%p" + "*Command used to print a file. + +First %p is expanded to the printer name, then ordinary expansion is +performed as specified in TeX-expand-list.") + +(defvar TeX-queue-command "lpq -P%p" + "*Command used to show the status of a printer queue. + +First %p is expanded to the printer name, then ordinary expansion is +performed as specified in TeX-expand-list.") + +;; This is the major configuration variable. Most sites will only +;; need to change the second string in each entry, which is the name +;; of a command to send to the shell. If you use other formatters +;; like AMSLaTeX or AMSTeX, you can add those to the list. See +;; TeX-expand-list for a description of the % escapes + +(defvar TeX-command-list + ;; You may have to remove the single quotes around the command + ;; arguments if you use DOS. + (list (list "TeX" "tex '\\nonstopmode\\input %t'" 'TeX-run-TeX nil t) + (list "TeX Interactive" "tex %t" 'TeX-run-interactive nil t) + (list "LaTeX" "%l '\\nonstopmode\\input{%t}'" + 'TeX-run-LaTeX nil t) + (list "LaTeX Interactive" "%l %t" 'TeX-run-interactive nil t) + (list "LaTeX2e" "latex2e '\\nonstopmode\\input{%t}'" + 'TeX-run-LaTeX nil t) + (if (or window-system (getenv "DISPLAY")) + (list "View" "%v " 'TeX-run-background t nil) + (list "View" "dvi2tty -q -w 132 %s " 'TeX-run-command t nil)) + (list "Print" "%p " 'TeX-run-command t nil) + (list "Queue" "%q" 'TeX-run-background nil nil) + (list "File" "dvips %d -o %f " 'TeX-run-command t nil) + (list "BibTeX" "bibtex %s" 'TeX-run-BibTeX nil nil) + (list "Index" "makeindex %s" 'TeX-run-command nil t) + ;; (list "Check" "chktex -v3 %s" 'TeX-run-compile nil t) + ;; Uncomment the above line and comment out the next line to + ;; use `chktex' instead of `lacheck'. + (list "Check" "lacheck %s" 'TeX-run-compile nil t) + (list "Spell" "" 'TeX-run-ispell nil nil) + (list "Other" "" 'TeX-run-command t t) + ;; Not part of standard TeX. + (list "Makeinfo" "makeinfo %t" 'TeX-run-compile nil t) + (list "AmSTeX" "amstex '\\nonstopmode\\input %t'" + 'TeX-run-TeX nil t)) + "*List of commands to execute on the current document. + +Each element is a list, whose first element is the name of the command +as it will be presented to the user. + +The second element is the string handed to the shell after being +expanded. The expansion is done using the information found in +TeX-expand-list. + +The third element is the function which actually start the process. +Several such hooks has been defined: + +TeX-run-command: Start up the process and show the output in a +separate buffer. Check that there is not two commands running for the +same file. Return the process object. + +TeX-run-format: As TeX-run-command, but assume the output is created +by a TeX macro package. Return the process object. + +TeX-run-TeX: For TeX output. + +TeX-run-LaTeX: For LaTeX output. + +TeX-run-interactive: Run TeX or LaTeX interactively. + +TeX-run-BibTeX: For BibTeX output. + +TeX-run-compile: Use `compile' to run the process. + +TeX-run-shell: Use `shell-command' to run the process. + +TeX-run-discard: Start the process in the background, discarding its +output. + +TeX-run-background: Start the process in the background, show output +in other window. + +TeX-run-dviout: Special hook for the Japanese dviout previewer for +PC-9801. + +To create your own hook, define a function taking three arguments: The +name of the command, the command string, and the name of the file to +process. It might be useful to use TeX-run-command in order to +create an asynchronous process. + +If the fourth element is non-nil, the user will get a chance to +modify the expanded string. + +The fifth element is obsolete and ignored.") + +;; You may want to change the default LaTeX version for your site. +(defvar LaTeX-version "2e" + "Default LaTeX version. Currently recognized is \"2\" and \"2e\".") + +;; You may want special options to the view command depending on the +;; style options. Only works if parsing is enabled. + +(defvar LaTeX-command-style + (if (string-equal LaTeX-version "2") + ;; There is a lot of different LaTeX 2 based formats. + '(("^latex2e$" "latex2e") + ("^foils$" "foiltex") + ("^ams" "amslatex") + ("^slides$" "slitex") + ("^plfonts\\|plhb$" "platex") + ("." "latex")) + ;; They have all been combined in LaTeX 2e. + '(("." "latex"))) + "*List of style options and LaTeX commands. + +If the first element (a regular expresion) matches the name of one of +the style files, any occurrence of the string %l in a command in +TeX-command-list will be replaced with the second element. The first +match is used, if no match is found the %l is replaced with the empty +string.") + +;; Enter the names of the printers available at your site, or nil if +;; you only have one printer. + +(defvar TeX-printer-list + '(("Local" "dvips -f %s | lpr" "lpq") + ("lw") ("ps")) + "*List of available printers. + +The first element of each entry is the printer name. + +The second element is the command used to print to this +printer. It defaults to the value of TeX-print-command. + +The third element is the command used to examine the print queue for +this printer. It defaults to the value of TeX-queue-command. + +Any occurence of `%p' in the second or third element is expanded to +the printer name given in the first element, then ordinary expansion +is performed as specified in TeX-expand-list.") + +;; The name of the most used printer. + +(defvar TeX-printer-default (or (getenv "PRINTER") + (and TeX-printer-list + (car (car TeX-printer-list))) + "lw") + "*Default printer to use with TeX-command.") + +;; You may want special options to the view command depending on the +;; style options. Only works if parsing is enabled. + +(defvar TeX-view-style '(("^a5$" "xdvi %d -paper a5") + ("^landscape$" "xdvi %d -paper a4r -s 4") + ;; The latest xdvi can show embedded postscript. + ;; If you don't have that, uncomment next line. + ;; ("^epsf$" "ghostview %f") + ("." "xdvi %d")) + "*List of style options and view options. + +If the first element (a regular expresion) matches the name of one of +the style files, any occurrence of the string %v in a command in +TeX-command-list will be replaced with the second element. The first +match is used, if no match is found the %v is replaced with the empty +string.") + +;; This is the list of expansion for the commands in +;; TeX-command-list. Not likely to be changed, but you may e.g. want +;; to handle .ps files. + +(defvar TeX-expand-list + (list (list "%p" 'TeX-printer-query) ;%p must be the first entry + (list "%q" (function (lambda () + (TeX-printer-query TeX-queue-command 2)))) + (list "%v" 'TeX-style-check TeX-view-style) + (list "%l" 'TeX-style-check LaTeX-command-style) + (list "%s" 'file nil t) + (list "%t" 'file 't t) + (list "%d" 'file "dvi" t) + (list "%f" 'file "ps" t)) + "*List of expansion strings for TeX command names. + +Each entry is a list with two or more elements. The first element is +the string to be expanded. The second element is the name of a +function returning the expanded string when called with the remaining +elements as arguments. The special value `file' will be expanded to +the name of the file being processed, with an optional extension.") + +;; End of Site Customization. + +;;; Import + +(or (assoc TeX-lisp-directory (mapcar 'list load-path)) ;No `member' yet. + (setq load-path (cons TeX-lisp-directory load-path))) + +(defvar no-doc + "This function is part of AUC TeX, but has not yet been loaded. +Full documentation will be available after autoloading the function." + "Documentation for autoload functions.") + +;; This hook will store bibitems when you save a BibTeX buffer. +(defvar bibtex-mode-hook nil) +(or (memq 'BibTeX-auto-store bibtex-mode-hook) ;No `add-hook' yet. + (setq bibtex-mode-hook (cons 'BibTeX-auto-store bibtex-mode-hook))) + +(autoload 'BibTeX-auto-store "latex" no-doc t) + +(autoload 'LaTeX-math-mode "latex" no-doc t) +(autoload 'japanese-plain-tex-mode "tex-jp" no-doc t) +(autoload 'japanese-latex-mode "tex-jp" no-doc t) +(autoload 'japanese-slitex-mode "tex-jp" no-doc t) +(autoload 'texinfo-mode "tex-info" no-doc t) +(autoload 'latex-mode "latex" no-doc t) + +(autoload 'multi-prompt "multi-prompt" no-doc nil) + +;;; Portability. + +(require 'easymenu) + +;; An GNU Emacs 19 function. +(or (fboundp 'set-text-properties) + (fset 'set-text-properties (symbol-function 'ignore))) + +;; An GNU Emacs 19 variable. +(defvar minor-mode-map-alist nil) + +;;; Special support for Emacs 18 + +(cond ((< (string-to-int emacs-version) 19) + +(condition-case error + (require 'outline) ;No provide in Emacs 18 outline.el + (error (provide 'outline))) + +;; Emacs 18 grok this regexp, but you loose the ability to use +;; whitespace anywhere in your documentstyle command. +(defvar LaTeX-auto-minimal-regexp-list + '(("\\\\documentstyle\\[\\([^#\\\\\\.\n\r]+\\)\\]{\\([^#\\\\\\.\n\r]+\\)}" + (1 2) LaTeX-auto-style) + ("\\\\documentstyle{\\([^#\\\\\\.\n\r]+\\)}" (1) LaTeX-auto-style) + ("\\\\documentclass\\[\\([^#\\\\\\.\n\r]+\\)\\]{\\([^#\\\\\\.\n\r]+\\)}" + (1 2) LaTeX-auto-style) + ("\\\\documentclass{\\([^#\\\\\\.\n\r]+\\)}" (1) LaTeX-auto-style)) + "Minimal list of regular expressions matching LaTeX macro definitions.") + +;; The Emacs 19 definition of `comment-region'. +(defun comment-region (beg end &optional arg) + "Comment the region; third arg numeric means use ARG comment characters. +If ARG is negative, delete that many comment characters instead. +Comments are terminated on each line, even for syntax in which newline does +not end the comment. Blank lines do not get comments." + ;; if someone wants it to only put a comment-start at the beginning and + ;; comment-end at the end then typing it, C-x C-x, closing it, C-x C-x + ;; is easy enough. No option is made here for other than commenting + ;; every line. + (interactive "r\np") + (or comment-start (error "No comment syntax is defined")) + (if (> beg end) (let (mid) (setq mid beg beg end end mid))) + (save-excursion + (save-restriction + (let ((cs comment-start) (ce comment-end)) + (cond ((not arg) (setq arg 1)) + ((> arg 1) + (while (> (setq arg (1- arg)) 0) + (setq cs (concat cs comment-start) + ce (concat ce comment-end))))) + (narrow-to-region beg end) + (goto-char beg) + (while (not (eobp)) + (if (< arg 0) + (let ((count arg)) + (while (and (> 1 (setq count (1+ count))) + (looking-at (regexp-quote cs))) + (delete-char (length cs))) + (if (string= "" ce) () + (setq count arg) + (while (> 1 (setq count (1+ count))) + (end-of-line) + ;; this is questionable if comment-end ends in whitespace + ;; that is pretty brain-damaged though + (skip-chars-backward " \t") + (backward-char (length ce)) + (if (looking-at (regexp-quote ce)) + (delete-char (length ce))))) + (forward-line 1)) + (if (looking-at "[ \t]*$") () + (insert cs) + (if (string= "" ce) () + (end-of-line) + (insert ce))) + (search-forward "\n" nil 'move))))))) + +;; The Emacs 19 definition of `add-hook'. +(defun add-hook (hook function &optional append) + "Add to the value of HOOK the function FUNCTION. +FUNCTION is not added if already present. +FUNCTION is added (if necessary) at the beginning of the hook list +unless the optional argument APPEND is non-nil, in which case +FUNCTION is added at the end. + +HOOK should be a symbol, and FUNCTION may be any valid function. If +HOOK is void, it is first set to nil. If HOOK's value is a single +function, it is changed to a list of functions." + (or (boundp hook) (set hook nil)) + ;; If the hook value is a single function, turn it into a list. + (let ((old (symbol-value hook))) + (if (or (not (listp old)) (eq (car old) 'lambda)) + (set hook (list old)))) + (or (if (consp function) + ;; Clever way to tell whether a given lambda-expression + ;; is equal to anything in the hook. + (let ((tail (assoc (cdr function) (symbol-value hook)))) + (equal function tail)) + (memq function (symbol-value hook))) + (set hook + (if append + (nconc (symbol-value hook) (list function)) + (cons function (symbol-value hook)))))) + +;; An Emacs 19 function. +(defun make-directory (dir) + "Create the directory DIR." + (shell-command (concat "mkdir " (if (string-match "/$" dir) + (substring dir 0 -1) + dir)))) + +;; An Emacs 19 function. +(defun abbreviate-file-name (name) + name) + +;; Different interface for each variant. +(defun TeX-active-mark () + ;; Emacs 18 does not have active marks. + nil) + +;; Different interface for each variant. +(defun TeX-mark-active () + ;; In Emacs 18 (mark) returns nil when not active. + (mark)) + +;; An Emacs 19 function. +(defun member (elt list) + "Return non-nil if ELT is an element of LIST. Comparison done with EQUAL. +The value is actually the tail of LIST whose car is ELT." + (while (and list (not (equal elt (car list)))) + (setq list (cdr list))) + list) + +;; An Emacs 19 macro. +(defmacro save-match-data (&rest body) + "Execute the BODY forms, restoring the global value of the match data." + (let ((original (make-symbol "match-data"))) + (list + 'let (list (list original '(match-data))) + (list 'unwind-protect + (cons 'progn body) + (list 'store-match-data original))))) + +) + +;;; Special support for XEmacs + +((or (string-match "Lucid" emacs-version) + (string-match "XEmacs" emacs-version)) + +(if (eq emacs-minor-version 13) + ;; XEmacs 19.13 had a partial defintion of set-text-properties. + (defadvice set-text-properties (around ignore-strings activate) + "Ignore strings." + (or (stringp (ad-get-arg 3)) + ad-do-it))) + +(defadvice popup-mode-menu (before LaTeX-update activate) + "Run `LaTeX-menu-update' before showing menu." + (and (fboundp 'LaTeX-menu-update) + (LaTeX-menu-update))) + +(defun TeX-mark-active () + ;; In Lucid (mark) returns nil when not active. + (if zmacs-regions + (mark) + (mark t))) + +(defun TeX-active-mark () + (and zmacs-regions (mark))) + +;; Lucid 19.11 have no idea what `kill-all-local-variables' is +;; supposed to do. I have to explicitly clear `TeX-symbol-list' +;; despite it being buffer local. You can verify this by removing the +;; hook below, setting a breakpoint just after the call to +;; `kill-all-local-variables' in `VirTeX-common-initialization' and +;; examine the local and global value of `TeX-symbol-list'. Make sure +;; you have a `%%% mode: latex' line in your file variable section, +;; and have latex-mode as your default mode for ".tex" files. +;; Unfortunately I have been unable to isolate the error further. +(add-hook 'change-major-mode-hook + '(lambda () (setq TeX-symbol-list nil + LaTeX-environment-list nil))) + +;; Lucid 19.6 grok this regexp, but you loose the ability to use +;; whitespace in your documentstyle command. +(string-match "\\`[0-9]+\\.\\([0-9]+\\)" emacs-version) +(or (> (string-to-int (substring emacs-version + (match-beginning 1) (match-end 1))) + 8) + (> (string-to-int emacs-version) 19) + (boundp 'LaTeX-auto-minimal-regexp-list) + (setq LaTeX-auto-minimal-regexp-list + '(("\\\\documentstyle\\[\\([^#\\\\\\.\n\r]+\\)\\]{\\([^#\\\\\\.\n\r]+\\)}" + (1 2) LaTeX-auto-style) + ("\\\\documentstyle{\\([^#\\\\\\.\n\r]+\\)}" (1) LaTeX-auto-style) + ("\\\\documentclass\\[\\([^#\\\\\\.\n\r]+\\)\\]{\\([^#\\\\\\.\n\r]+\\)}" + (1 2) LaTeX-auto-style) + ("\\\\documentclass{\\([^#\\\\\\.\n\r]+\\)}" (1) LaTeX-auto-style)))) + +;; Lucid only +(fset 'TeX-activate-region (symbol-function 'zmacs-activate-region)) + +) +;;; Special support for GNU Emacs 19 + +(t + +(defun TeX-mark-active () + ;; In FSF 19 mark-active indicates if mark is active. + mark-active) + +(defun TeX-active-mark () + (and transient-mark-mode mark-active)) + +(defun TeX-activate-region ()) + +)) + +;;; Version + +;; These two variables are automatically updated with "make dist", so +;; be careful before changing anything. + +(defconst AUC-TeX-version "9.7i" + "AUC TeX version number") + +(defconst AUC-TeX-date "Thu Feb 20 11:30:55 MET 1997" + "AUC TeX release date") + +;;; Buffer + +(defvar TeX-display-help t + "*Non-nil means popup help when stepping thrugh errors with \\[TeX-next-error]") + +(defvar TeX-debug-bad-boxes nil + "*Non-nil means also find overfull/underfull boxes warnings with TeX-next-error") + +(defvar TeX-command-BibTeX "BibTeX" + "*The name of the BibTeX entry in TeX-command-list.") + (make-variable-buffer-local 'TeX-command-BibTeX) + +(defvar TeX-command-Show "View" + "*The default command to show (view or print) a TeX file. +Must be the car of an entry in TeX-command-list.") + (make-variable-buffer-local 'TeX-command-Show) + +(defvar TeX-command-Print "Print" + "The name of the Print entry in TeX-command-Print.") + +(defvar TeX-command-Queue "Queue" + "The name of the Queue entry in TeX-command-Queue.") + +(autoload 'TeX-region-create "tex-buf" no-doc nil) +(autoload 'TeX-save-document "tex-buf" no-doc t) +(autoload 'TeX-home-buffer "tex-buf" no-doc t) +(autoload 'TeX-command-region "tex-buf" no-doc t) +(autoload 'TeX-command-buffer "tex-buf" no-doc t) +(autoload 'TeX-command-master "tex-buf" no-doc t) +(autoload 'TeX-command "tex-buf" no-doc nil) +(autoload 'TeX-kill-job "tex-buf" no-doc t) +(autoload 'TeX-recenter-output-buffer "tex-buf" no-doc t) +(autoload 'TeX-next-error "tex-buf" no-doc t) +(autoload 'TeX-toggle-debug-boxes "tex-buf" no-doc t) +(autoload 'TeX-region-file "tex-buf" no-doc nil) + +(defvar TeX-trailer-start nil + "Regular expression delimiting start of trailer in a TeX file.") + + (make-variable-buffer-local 'TeX-trailer-start) + +(defvar TeX-header-end nil + "Regular expression delimiting end of header in a TeX file.") + + (make-variable-buffer-local 'TeX-header-end) + +(defvar TeX-command-default nil + "The default command for TeX-command in the current major mode.") + + (make-variable-buffer-local 'TeX-command-default) + + +;;; Master File + +(defvar TeX-one-master "\\.tex$" + "*Regular expression matching ordinary TeX files. + +You should set this variable to match the name of all files, where +automatically adding a file variable with the name of the master file +is a good idea. When AUC TeX add the name of the master file as a +file variable, it does not need to ask next time you edit the file. + +If you dislike AUC TeX automatically modifying your files, you can set +this variable to \"\".") + +(defun TeX-master-file (&optional extension nondirectory) + "Return the name of the master file for the current document. + +If optional argument EXTENSION is non-nil, add that file extension to +the name. Special value `t' means use `TeX-default-extension'. + +If optional second argument NONDIRECTORY is non-nil, do not include +the directory. + +Currently is will check for the presence of a ``Master:'' line in +the beginning of the file, but that feature will be phased out." + (if (eq extension t) + (setq extension TeX-default-extension)) + (let ((my-name (if (buffer-file-name) + (TeX-strip-extension nil (list TeX-default-extension) t) + ""))) + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + (cond + ;; Special value 't means it is own master (a free file). + ((equal TeX-master my-name) + (setq TeX-master t)) + + ;; For files shared between many documents. + ((eq 'shared TeX-master) + (setq TeX-master + (TeX-strip-extension + (read-file-name "Master file: (default this file) " + nil "///") + (list TeX-default-extension) + 'path)) + (if (or (string-equal TeX-master "///") + (string-equal TeX-master "")) + (setq TeX-master t))) + + ;; We might already know the name. + (TeX-master) + + ;; Support the ``Master:'' line (under protest!) + ((re-search-forward + "^%% *[Mm]aster:?[ \t]*\\([^ \t\n]+\\)" 500 t) + (setq TeX-master + (TeX-strip-extension (TeX-match-buffer 1) + (list TeX-default-extension))) + (if TeX-convert-master + (progn + (beginning-of-line) + (kill-line 1) + (TeX-add-local-master)))) + + ;; Is this a master file? + ((re-search-forward TeX-header-end 10000 t) + (setq TeX-master my-name)) + + ;; Ask the user (but add it as a local variable). + (t + (setq TeX-master + (TeX-strip-extension + (condition-case name + (read-file-name "Master file: (default this file) " + nil "") + (quit "")) + (list TeX-default-extension) + 'path)) + (cond ((string-equal TeX-master "") + (setq TeX-master t)) + ((or (string-equal TeX-master "") + (string-equal TeX-master "")) + (setq TeX-master t) + (TeX-add-local-master)) + (t + (TeX-add-local-master))))))) + + (let ((name (if (eq TeX-master t) + my-name + TeX-master))) + + (if (TeX-match-extension name) + ;; If it already have an extension... + (if (equal extension TeX-default-extension) + ;; Use instead of the default extension + (setq extension nil) + ;; Otherwise drop it. + (setq name (TeX-strip-extension name)))) + + ;; Remove directory if needed. + (if nondirectory + (setq name (file-name-nondirectory name))) + + (if extension + (concat name "." extension) + name)))) + +(defun TeX-master-directory () + "Directory of master file." + (abbreviate-file-name + (expand-file-name + (concat (file-name-directory buffer-file-name) + (file-name-directory (TeX-master-file)))))) + +(defvar TeX-master t + "*The master file associated with the current buffer. +If the file being edited is actually included from another file, you +can tell AUC TeX the name of the master file by setting this variable. +If there are multiple levels of nesting, specify the top level file. + +If this variable is nil, AUC TeX will query you for the name. + +If the variable is t, AUC TeX will assume the file is a master file +itself. + +If the variable is 'shared, AUC TeX will query for the name, but not +change the file. + +It is suggested that you use the File Variables (see the info node in +the Emacs manual) to set this variable permanently for each file.") + + (make-variable-buffer-local 'TeX-master) + +(defvar TeX-convert-master t + "*If not nil, automatically convert ``Master:'' lines to file variables. +This will be done when AUC TeX first try to use the master file.") + +(defun TeX-add-local-master () + "Add local variable for TeX-master." + + (if (and (buffer-file-name) + (string-match TeX-one-master + (file-name-nondirectory (buffer-file-name))) + (not buffer-read-only)) + (progn + (goto-char (point-max)) + (if (re-search-backward (concat "^\\([^\n]+\\)Local " "Variables:") + (- (point-max) 3000) t) + (let ((prefix (TeX-match-buffer 1))) + (re-search-forward (regexp-quote (concat prefix + "End:"))) + (beginning-of-line 1) + (insert prefix "TeX-master: " (prin1-to-string TeX-master) "\n")) + (insert "\n%%% Local " "Variables: \n" + "%%% mode: " (substring (symbol-name major-mode) 0 -5) + "\n" + "%%% TeX-master: " (prin1-to-string TeX-master) "\n" + "%%% End: \n"))))) + +;;; Style Paths + +(or (string-match "/\\'" TeX-lisp-directory) + (setq TeX-lisp-directory (concat TeX-lisp-directory "/"))) + +(defvar TeX-auto-global (concat TeX-lisp-directory "auto/") + "*Directory containing automatically generated information. +Must end with a slash. + +For storing automatic extracted information about the TeX macros +shared by all users of a site.") + +(defvar TeX-style-global (concat TeX-lisp-directory "style/") + "*Directory containing hand generated TeX information. +Must end with a slash. + +These correspond to TeX macros shared by all users of a site.") + +(defvar TeX-auto-local "auto/" + "*Directory containing automatically generated TeX information. +Must end with a slash. + +This correspond to TeX macros found in the current directory.") + +(defvar TeX-style-local "style/" + "*Directory containing hand generated TeX information. +Must end with a slash. + +These correspond to TeX macros found in the current directory.") + +(defun TeX-split-string (regexp string) + "Returns a list of strings. given REGEXP the STRING is split into +sections which in string was seperated by REGEXP. + +Examples: + + (TeX-split-string \"\:\" \"abc:def:ghi\") + -> (\"abc\" \"def\" \"ghi\") + + (TeX-split-string \" *\" \"dvips -Plw -p3 -c4 testfile.dvi\") + + -> (\"dvips\" \"-Plw\" \"-p3\" \"-c4\" \"testfile.dvi\") + +If REGEXP is nil, or \"\", an error will occur." + + (let ((start 0) + (result '())) + (while (string-match regexp string start) + (let ((match (string-match regexp string start))) + (setq result (cons (substring string start match) result)) + (setq start (match-end 0)))) + (setq result (cons (substring string start nil) result)) + (nreverse result))) + +(defun TeX-directory-absolute-p (dir) + ;; Non-nil iff DIR is the name of an absolute directory. + (if (memq system-type '(ms-dos emx windows-nt)) + (string-match "^\\([A-Za-z]:\\)?/" dir) + (string-match "^/" dir))) + +(defun TeX-parse-path (env) + ;; Return a list if private TeX directories found in environment + ;; variable ENV. + (let* ((value (getenv env)) + (entries (and value (TeX-split-string ":" value))) + entry + answers) + (while entries + (setq entry (car entries)) + (setq entries (cdr entries)) + (or (string-match "/$" entry) + (setq entry (concat entry "/"))) + (and (string-match "//$" entry) + (setq entry (substring entry 0 -1))) + (or (not (TeX-directory-absolute-p entry)) + (member entry TeX-macro-global) + (string-equal "/" entry) + (setq answers (cons entry answers)))) + answers)) + +(defvar TeX-macro-private (append (TeX-parse-path "TEXINPUTS") + (TeX-parse-path "BIBINPUTS")) + "*Directories where you store your personal TeX macros. +Each must end with a slash.") + +(defvar TeX-auto-private (mapcar (function (lambda (entry) + (concat entry TeX-auto-local))) + TeX-macro-private) + "*List of directories containing automatically generated information. +Must end with a slash. + +These correspond to the personal TeX macros.") + +(if (stringp TeX-auto-private) ;Backward compatibility + (setq TeX-auto-private (list TeX-auto-private))) + +(defvar TeX-style-private (mapcar (function (lambda (entry) + (concat entry + TeX-style-local))) + TeX-macro-private) + "*List of directories containing hand generated information. +Must end with a slash. + +These correspond to the personal TeX macros.") + +(if (stringp TeX-style-private) ;Backward compatibility + (setq TeX-style-private (list TeX-style-private))) + +(defvar TeX-style-path + (let ((path)) + (mapcar (function (lambda (file) (if file (setq path (cons file path))))) + (append (list TeX-auto-global TeX-style-global) + TeX-auto-private TeX-style-private + (list TeX-auto-local TeX-style-local))) + path) + "*List of directories to search for AUC TeX style files.") + +(defvar TeX-check-path (append (list "./") TeX-macro-private TeX-macro-global) + "*Directory path to search for dependencies. + +If nil, just check the current file. +Used when checking if any files have changed.") + +;;; Style Files + +(defvar TeX-style-hook-list nil + "List of TeX style hooks currently loaded. + +Each entry is a list where the first element is the name of the style, +and the remaining elements are hooks to be run when that style is +active.") + +(defvar TeX-byte-compile nil + "*Not nil means try to byte compile auto files before loading.") + +(defun TeX-load-style (style) + "Search for and load each definition for style in TeX-style-path." + (cond ((assoc style TeX-style-hook-list)) ; We already found it + ((string-match "\\`\\(.+/\\)\\([^/]*\\)\\'" style) ;Complex path + (let* ((dir (substring style (match-beginning 1) (match-end 1))) + (style (substring style (match-beginning 2) (match-end 2))) + (TeX-style-path (append (list (concat dir TeX-auto-local) + (concat dir TeX-style-local)) + TeX-style-path))) + (TeX-load-style style))) + (t ;Relative path + ;; Insert empty list to mark the fact that we have searched. + (setq TeX-style-hook-list (cons (list style) TeX-style-hook-list)) + ;; Now check each element of the path + (mapcar (function (lambda (name) + (TeX-load-style-file (if (string-match "/$" name) + (concat name style) + (concat name "/" style))))) + TeX-style-path)))) + +(defun TeX-load-style-file (file) + ;; Load FILE checking for a lisp extensions. + (let ((el (concat file ".el")) + (elc (concat file ".elc"))) + (cond ((and (null TeX-byte-compile) + (file-readable-p el)) + (load-file el)) + ((file-newer-than-file-p el elc) + (if (not (file-writable-p elc)) + (load-file el) + (byte-compile-file el) + (load-file elc))) + ((file-readable-p elc) + (load-file elc)) + ((file-readable-p el) + (load-file el))))) + +(defun TeX-add-style-hook (style hook) + "Give STYLE yet another HOOK to run." + (let ((entry (assoc style TeX-style-hook-list))) + (if (null entry) + (setq TeX-style-hook-list (cons (list style hook) TeX-style-hook-list)) + (setcdr entry (cons hook (cdr entry)))))) + +(defun TeX-unload-style (style) + "Forget that we once loaded STYLE." + (cond ((null (assoc style TeX-style-hook-list))) + ((equal (car (car TeX-style-hook-list)) style) + (setq TeX-style-hook-list (cdr TeX-style-hook-list))) + (t + (let ((entry TeX-style-hook-list)) + (while (not (equal (car (car (cdr entry))) style)) + (setq entry (cdr entry))) + (setcdr entry (cdr (cdr entry))))))) + +(defvar TeX-virgin-style (if (and TeX-auto-global + (file-directory-p TeX-auto-global)) + "virtex" + "NoVirtexSymbols") + "Style all documents use.") + +(defvar TeX-active-styles nil + "List of styles currently active in the document.") + + (make-variable-buffer-local 'TeX-active-styles) + +(defun TeX-run-style-hooks (&rest styles) + "Run the TeX following style hooks." + (mapcar (function + (lambda (style) + (if (TeX-member style TeX-active-styles 'string-equal) + () ;Avoid recursion. + (setq TeX-active-styles + (cons style TeX-active-styles)) + (TeX-load-style style) + (if (string-match "\\`\\(.+/\\)\\([^/]*\\)\\'" style) + (setq style ; Complex path + (substring style (match-beginning 2) (match-end 2)))) + (mapcar 'funcall + (cdr-safe (assoc style TeX-style-hook-list)))))) + styles)) + +(defvar TeX-parse-self nil + "*Parse file after loading it if no style hook is found for it.") + +(defvar TeX-style-hook-applied-p nil + "Nil, unless the style specific hooks have been applied.") + (make-variable-buffer-local 'TeX-style-hook-applied-p) + +(defun TeX-update-style (&optional force) + "Run style specific hooks for the current document. + +Only do this if it has not been done before, or if optional argument +FORCE is not nil." + + (if (or (eq TeX-auto-update 'BibTeX) ; Not a real TeX buffer + (and (not force) TeX-style-hook-applied-p)) + () + (setq TeX-style-hook-applied-p t) + (message "Applying style hooks...") + (TeX-run-style-hooks (TeX-strip-extension nil nil t)) + ;; Run parent style hooks if it has a single parent that isn't itself. + (if (or (not (memq TeX-master '(nil t))) + (and (buffer-file-name) + (string-match TeX-one-master + (file-name-nondirectory (buffer-file-name))))) + (TeX-run-style-hooks (TeX-master-file))) + + (if (and TeX-parse-self + (null (cdr-safe (assoc (TeX-strip-extension nil nil t) + TeX-style-hook-list)))) + (TeX-auto-apply)) + + (message "Applying style hooks... done"))) + +(defvar TeX-remove-style-hook nil + "List of hooks to call when we remove the style specific information.") + (make-variable-buffer-local 'TeX-remove-style-hook) + +(defun TeX-remove-style () + "Remnove all style specific information." + (setq TeX-style-hook-applied-p nil) + (run-hooks 'TeX-remove-style-hooks) + (setq TeX-active-styles (list TeX-virgin-style))) + +(defun TeX-style-list () + "Return a list of all styles (subfils) use by the current document." + (TeX-update-style) + TeX-active-styles) + +;;; Special Characters + +(defvar TeX-esc "\\" "The TeX escape character.") + (make-variable-buffer-local 'TeX-esc) + +(defvar TeX-grop "{" "The TeX group opening character.") + (make-variable-buffer-local 'TeX-grop) + +(defvar TeX-grcl "}" "The TeX group closing character.") + (make-variable-buffer-local 'TeX-grcl) + +;;; Symbols + +;; Must be before keymaps. + +(defvar TeX-complete-word 'ispell-complete-word + "*Function to call for completing non-macros in tex-mode.") + +(defvar TeX-complete-list nil + "List of ways to complete the preceding text. + +Each entry is a list with the following elements: + +0. Regexp matching the preceding text. +1. A number indicating the subgroup in the regexp containing the text. +2. A function returning an alist of possible completions. +3. Text to append after a succesful completion. + +Or alternatively: + +0. Regexp matching the preceding text. +1. Function to do the actual completion.") + +(defun TeX-complete-symbol () + "Perform completion on TeX/LaTeX symbol preceding point." + (interactive "*") + (let ((list TeX-complete-list) + entry) + (while list + (setq entry (car list) + list (cdr list)) + (if (TeX-looking-at-backward (car entry) 250) + (setq list nil))) + (if (numberp (nth 1 entry)) + (let* ((sub (nth 1 entry)) + (close (nth 3 entry)) + (begin (match-beginning sub)) + (end (match-end sub)) + (pattern (TeX-match-buffer 0)) + (symbol (buffer-substring begin end)) + (list (funcall (nth 2 entry))) + (completion (try-completion symbol list))) + (cond ((eq completion t) + (and close + (not (looking-at (regexp-quote close))) + (insert close))) + ((null completion) + (error "Can't find completion for \"%s\"" pattern)) + ((not (string-equal symbol completion)) + (delete-region begin end) + (insert completion) + (and close + (eq (try-completion completion list) t) + (not (looking-at (regexp-quote close))) + (insert close))) + (t + (message "Making completion list...") + (let ((list (all-completions symbol list nil))) + (with-output-to-temp-buffer "*Completions*" + (display-completion-list list))) + (message "Making completion list...done")))) + (funcall (nth 1 entry))))) + +(defvar TeX-default-macro "ref" + "*The default macro when creating new ones with TeX-insert-macro.") + + (make-variable-buffer-local 'TeX-default-macro) + +(defvar TeX-insert-braces t + "*If non-nil, append a empty pair of braces after inserting a macro.") + +(defun TeX-math-mode-p () + "Are we in TeX math mode?" + ;; This should check for dollar signs, but thats to hard for now. + (and (boundp 'LaTeX-math-mode) LaTeX-math-mode)) + +(defun TeX-insert-macro (symbol) + "Insert TeX macro with completion. + +AUC TeX knows of some macros, and may query for extra arguments." + (interactive (list (completing-read (concat "Macro (default " + TeX-default-macro + "): " + TeX-esc) + (TeX-symbol-list)))) + (cond ((string-equal symbol "") + (setq symbol TeX-default-macro)) + ((interactive-p) + (setq TeX-default-macro symbol))) + (TeX-parse-macro symbol (cdr-safe (assoc symbol (TeX-symbol-list))))) + +(defvar TeX-electric-macro-map nil) + +(if TeX-electric-macro-map + () + (setq TeX-electric-macro-map (copy-keymap minibuffer-local-completion-map)) + (define-key TeX-electric-macro-map " " 'minibuffer-complete-and-exit)) + +(defun TeX-electric-macro () + "Insert TeX macro with completion. + +AUC TeX knows of some macros, and may query for extra arguments. +Space will complete and exit." + (interactive) + (if (memq (preceding-char) '(?\\ ?.)) + (call-interactively 'self-insert-command) + (let ((minibuffer-local-completion-map TeX-electric-macro-map)) + (call-interactively 'TeX-insert-macro)))) + +(defun TeX-parse-macro (symbol args) + "How to parse TeX macros which takes one or more arguments." + + ;; First argument is the name of the macro. + + ;; If called with no additional arguments, insert macro with point + ;; inside braces. Otherwise, each argument of this function should + ;; match an argument to the TeX macro. What is done depend on the + ;; argument type. + + ;; string: Use the string as a prompt to prompt for the argument. + + ;; number: Insert that many braces, leave point inside the first. + + ;; nil: Insert empty braces. + + ;; t: Insert empty braces, leave point between the braces. + + ;; other symbols: Call the symbol as a function. You can define + ;; your own hook, or use one of the predefined argument hooks. If + ;; you add new hooks, you can assume that point is placed directly + ;; after the previous argument, or after the macro name if this is + ;; the first argument. Please leave point located efter the + ;; argument you are inserting. If you want point to be located + ;; somewhere else after all hooks have been processed, set the value + ;; of `exit-mark'. It will point nowhere, until the argument hook + ;; set it. By convention, these hook all start with `TeX-arg-'. + + ;; list: If the car is a string, insert it as a prompt and the next + ;; element as initial input. Otherwise, call the car of the list + ;; with the remaining elements as arguments. + + ;; vector: Optional argument. If it has more than one element, + ;; parse it as a list, otherwise parse the only element as above. + ;; Use square brackets instead of curly braces, and is not inserted + ;; on empty user input. + + (insert TeX-esc symbol) + (let ((exit-mark (make-marker)) + (position (point))) + (TeX-parse-arguments args) + (cond ((marker-position exit-mark) + (goto-char (marker-position exit-mark)) + (set-marker exit-mark nil)) + ((and TeX-insert-braces + (equal position (point)) + (string-match "[a-zA-Z]+" symbol) + (not (TeX-math-mode-p))) + (insert TeX-grop TeX-grcl))))) + +(defun TeX-arg-string (optional &optional prompt input) + "Prompt for a string." + (TeX-argument-insert + (read-string (TeX-argument-prompt optional prompt "Text") input) + optional)) + +(defun TeX-parse-arguments (args) + "Parse TeX macro arguments. + +See TeX-parse-macro for details." + (let ((last-optional-rejected nil)) + (while args + (if (vectorp (car args)) + (if last-optional-rejected + () + (let ((< LaTeX-optop) + (> LaTeX-optcl)) + (TeX-parse-argument t (if (equal (length (car args)) 1) + (aref (car args) 0) + (append (car args) nil))))) + (let ((< TeX-grop) + (> TeX-grcl)) + (setq last-optional-rejected nil) + (TeX-parse-argument nil (car args)))) + (setq args (cdr args))))) + +(defun TeX-parse-argument (optional arg) + "Depending on OPTIONAL, insert TeX macro argument ARG in curly braces. +If OPTIONAL is set, only insert if there is anything to insert, and +then use scare brackets. + +See TeX-parse-macro for details." + + (cond ((stringp arg) + (TeX-arg-string optional arg)) + ((numberp arg) + (if (< arg 1) + () + (TeX-parse-argument optional t) + (while (> arg 1) + (TeX-parse-argument optional nil) + (setq arg (- arg 1))))) + ((null arg) + (insert < >)) + ((eq arg t) + (insert < ) + (set-marker exit-mark (point)) + (insert >)) + ((symbolp arg) + (funcall arg optional)) + ((listp arg) + (let ((head (car arg)) + (tail (cdr arg))) + (cond ((stringp head) + (apply 'TeX-arg-string optional arg)) + ((symbolp head) + (apply head optional tail)) + (t (error "Unknown list argument type %s" + (prin1-to-string head)))))) + (t (error "Unknown argument type %s" (prin1-to-string arg))))) + +(defun TeX-argument-insert (name optional &optional prefix) + "Insert NAME surrounded by curly braces. + +If OPTIONAL, only insert it if not empty, and then use scuare brackets." + (if (and optional (string-equal name "")) + (setq last-optional-rejected t) + (insert <) + (if prefix + (insert prefix)) + (if (and (string-equal name "") + (null (marker-position exit-mark))) + (set-marker exit-mark (point)) + (insert name)) + (insert >))) + +(defun TeX-argument-prompt (optional prompt default &optional complete) + "Return a argument prompt. + +If OPTIONAL is not nil then the prompt will start with ``(Optional) ''. + +PROMPT will be used if not nil, otherwise use DEFAULT. + +Unless optional argument COMPLETE is non-nil, ``: '' will be appended." + (concat (if optional "(Optional) " "") + (if prompt prompt default) + (if complete "" ": "))) + +;;; The Mode + +(defvar TeX-format-list + '(("AMSTEX" ams-tex-mode + "\\\\document\\b") + ("LATEX" latex-mode + "\\\\\\(begin\\|section\\|chapter\\|documentstyle\\|documentclass\\)\\b") + ("TEX" plain-tex-mode ".")) + "*List of format packages to consider when choosing a TeX mode. + +A list with a entry for each format package available at the site. + +Each entry is a list with three elements. + +1. The name of the format package. +2. The name of the major mode. +3. A regexp typically matched in the beginning of the file. + +When entering tex-mode, each regexp is tried in turn in order to find +when major mode to enter.") + +(defvar TeX-default-mode 'latex-mode + "*Mode to enter for a new file when it can't be determined whether +the file is plain TeX or LaTeX or what.") + +(defvar TeX-force-default-mode nil + "*If set to nil, try to infer the mode of the file from its content.") + +;;; Do not ;;;###autoload because of conflict with standard tex-mode.el. +(defun tex-mode () + "Major mode for editing files of input for TeX or LaTeX. +Tries to guess whether this file is for plain TeX or LaTeX. + +The algorithm is as follows: + + 1) if the file is empty or TeX-force-default-mode is not set to nil, + TeX-default-mode is chosen + 2) If \\documentstyle or \\begin{, \\section{, \\part{ or \\chapter{ is + found, latex-mode is selected. + 3) Otherwise, use plain-tex-mode " + (interactive) + + (funcall (if (or (equal (buffer-size) 0) + TeX-force-default-mode) + TeX-default-mode + (save-excursion + (goto-char (point-min)) + (let ((comment-start-skip ;Used by TeX-in-comment + (concat + "\\(\\(^\\|[^\\]\\)\\(" + (regexp-quote TeX-esc) + (regexp-quote TeX-esc) + "\\)*\\)\\(%+ *\\)")) + (entry TeX-format-list) + answer) + (while (and entry (not answer)) + (if (re-search-forward (nth 2 (car entry)) + 10000 t) + (if (not (TeX-in-comment)) + (setq answer (nth 1 (car entry)))) + (setq entry (cdr entry)))) + (if answer + answer + TeX-default-mode)))))) + +;;; Do not ;;;###autoload because of conflict with standard tex-mode.el. +(defun plain-tex-mode () + "Major mode for editing files of input for plain TeX. +See info under AUC TeX for documentation. + +Special commands: +\\{TeX-mode-map} + +Entering plain-tex-mode calls the value of text-mode-hook, +then the value of TeX-mode-hook, and then the value +of plain-TeX-mode-hook." + (interactive) + (plain-TeX-common-initialization) + (setq mode-name "TeX") + (setq major-mode 'plain-tex-mode) + (setq TeX-command-default "TeX") + (run-hooks 'text-mode-hook 'TeX-mode-hook 'plain-TeX-mode-hook)) + +;;;###autoload +(defun ams-tex-mode () + "Major mode for editing files of input for AmS TeX. +See info under AUC TeX for documentation. + +Special commands: +\\{TeX-mode-map} + +Entering AmS-tex-mode calls the value of text-mode-hook, +then the value of TeX-mode-hook, and then the value +of AmS-TeX-mode-hook." + (interactive) + (plain-TeX-common-initialization) + (setq mode-name "AmS TeX") + (setq major-mode 'ams-tex-mode) + (setq TeX-command-default "AmSTeX") + (run-hooks 'text-mode-hook 'TeX-mode-hook 'AmS-TeX-mode-hook)) + +(defun VirTeX-common-initialization () + ;; Initialize + (kill-all-local-variables) + (setq local-abbrev-table text-mode-abbrev-table) + (setq indent-tabs-mode nil) + + ;; Ispell support + (make-local-variable 'ispell-parser) + (setq ispell-parser 'tex) + (make-local-variable 'ispell-tex-p) + (setq ispell-tex-p t) + + ;; Redefine some standard varaibles + (make-local-variable 'paragraph-start) + (make-local-variable 'paragraph-separate) + (make-local-variable 'comment-start) + (setq comment-start "%") + (make-local-variable 'comment-start-skip) + (setq comment-start-skip + (concat + "\\(\\(^\\|[^\\]\\)\\(" + (regexp-quote TeX-esc) + (regexp-quote TeX-esc) + "\\)*\\)\\(%+ *\\)")) + (make-local-variable 'comment-indent-hook) + (setq comment-indent-hook 'TeX-comment-indent) + (make-local-variable 'comment-multi-line) + (setq comment-multi-line nil) + (make-local-variable 'compile-command) + (if (boundp 'compile-command) + () + (setq compile-command "make")) + (make-local-variable 'words-include-escapes) + (setq words-include-escapes nil) + + ;; Make TAB stand out + ;; (make-local-variable 'buffer-display-table) + ;; (setq buffer-display-table (if standard-display-table + ;; (copy-sequence standard-display-table) + ;; (make-display-table))) + ;; (aset buffer-display-table ?\t (apply 'vector (append "" nil))) + + ;; Symbol completion. + (make-local-variable 'TeX-complete-list) + (setq TeX-complete-list + (list (list "\\\\\\([a-zA-Z]*\\)" + 1 'TeX-symbol-list (if TeX-insert-braces "{}")) + (list "" TeX-complete-word))) + + ;; We want this to be early in the list, so we do not add it before + ;; we enter TeX mode the first time. + (if (boundp 'local-write-file-hooks) + (add-hook 'local-write-file-hooks 'TeX-safe-auto-write) + (add-hook 'write-file-hooks 'TeX-safe-auto-write)) + (make-local-variable 'TeX-auto-update) + (setq TeX-auto-update t)) + +(defun plain-TeX-common-initialization () + ;; Common initialization for plain TeX like modes. + (VirTeX-common-initialization) + (use-local-map plain-TeX-mode-map) + (easy-menu-add TeX-mode-menu plain-TeX-mode-map) + (easy-menu-add plain-TeX-mode-menu plain-TeX-mode-map) + (set-syntax-table TeX-mode-syntax-table) + (setq paragraph-start + (concat + "\\(^[ \t]*$" + "\\|" (regexp-quote TeX-esc) "par\\|" + "^[ \t]*" + (regexp-quote TeX-esc) + "\\(" + "begin\\|end\\|part\\|chapter\\|" + "section\\|subsection\\|subsubsection\\|" + "paragraph\\|include\\|includeonly\\|" + "tableofcontents\\|appendix\\|label\\|caption\\|" + "\\[\\|\\]" ; display math delimitors + "\\)" + "\\|" + "^[ \t]*\\$\\$" ; display math delimitor + "\\)" )) + (setq paragraph-separate + (concat + "\\(" + (regexp-quote TeX-esc) + "par\\|" + "^[ \t]*$\\|" + "^[ \t]*" + (regexp-quote TeX-esc) + "\\(" + "begin\\|end\\|label\\|caption\\|part\\|chapter\\|" + "section\\|subsection\\|subsubsection\\|" + "paragraph\\|include\\|includeonly\\|" + "tableofcontents\\|appendix\\|" (regexp-quote TeX-esc) + "\\)" + "\\)")) + (setq TeX-header-end (regexp-quote "%**end of header")) + (setq TeX-trailer-start (regexp-quote (concat TeX-esc "bye"))) + (TeX-run-style-hooks "TEX")) + +;;; Hilighting + +(if (boundp 'hilit-patterns-alist) + (let ((latex-patterns (cdr-safe (assq 'latex-mode hilit-patterns-alist))) + (plain-tex-patterns (cdr-safe (assq 'plain-tex-mode + hilit-patterns-alist)))) + (if (and latex-patterns plain-tex-patterns) + (setq hilit-patterns-alist + (append (list (cons 'ams-tex-mode plain-tex-patterns)) + hilit-patterns-alist))))) + +;;; Parsing + +(defvar TeX-auto-parser '((styles TeX-auto-file TeX-run-style-hooks))) +;; Alist of parsed information. +;; Each entry is a list with the following elements: +;; +;; 0. Name of information type. +;; 1. Name of temporary variable used when parsing. +;; 2. Name of function to add information to add to #3. +;; 3. Name of variable holding buffer local information. +;; 4. Name of variable indicating that #3 has changed. + + +(defconst TeX-auto-parser-temporary 1) +(defconst TeX-auto-parser-add 2) +(defconst TeX-auto-parser-local 3) +(defconst TeX-auto-parser-change 4) + +(defun TeX-auto-add-type (name prefix &optional plural) + "Add information about name to the parser using PREFIX. + +Optional third argument PLURAL is the plural form of TYPE. +By default just add a `s'. + +This function create a set of variables and functions to maintain a +separate type of information in the parser." + (let* ((names (or plural (concat name "s"))) + (tmp (intern (concat prefix "-auto-" name))) + (add (intern (concat prefix "-add-" names))) + (local (intern (concat prefix "-" name "-list"))) + (change (intern (concat prefix "-" name "-changed")))) + (setq TeX-auto-parser + (cons (list name tmp add local change) TeX-auto-parser)) + (set local nil) + (make-variable-buffer-local local) + (set change nil) + (make-variable-buffer-local change) + (fset add (list 'lambda '(&rest entries) + (concat "Add information about " (upcase name) + " to the current buffer.") + (list 'TeX-auto-add-information name 'entries))) + (fset local (list 'lambda nil + (concat "List of " names + " active in the current buffer.") + (list 'TeX-auto-list-information name))) + (add-hook 'TeX-remove-style-hook + (list 'lambda nil (list 'setq (symbol-name local) nil))))) + +(defun TeX-auto-add-information (name entries) + ;; For NAME in `TeX-auto-parser' add ENTRIES. + (let* ((entry (assoc name TeX-auto-parser)) + (change (nth TeX-auto-parser-change entry)) + (change-value (symbol-value change)) + (local (nth TeX-auto-parser-local entry)) + (local-value (symbol-value local))) + (if change-value + (set local (cons entries local-value)) + (set change t) + (set local (list entries local-value))))) + +(defun TeX-auto-list-information (name) + ;; Return information in `TeX-auto-parser' about NAME. + (TeX-update-style) + (let* ((entry (assoc name TeX-auto-parser)) + (change (nth TeX-auto-parser-change entry)) + (change-value (symbol-value change)) + (local (nth TeX-auto-parser-local entry))) + (if (not change-value) + () + (set change nil) + ;; Sort it + (message "Sorting " name "...") + (set local + (sort (mapcar 'TeX-listify (apply 'append (symbol-value local))) + 'TeX-car-string-lessp)) + ;; Make it unique + (message "Removing duplicates...") + (let ((entry (symbol-value local))) + (while (and entry (cdr entry)) + (let ((this (car entry)) + (next (car (cdr entry)))) + (if (not (string-equal (car this) (car next))) + (setq entry (cdr entry)) + ;; We have two equal symbols. Use the one with + ;; most arguments. + (if (> (length next) (length this)) + (setcdr this (cdr next))) + (setcdr entry (cdr (cdr entry))))))) + (message "Removing duplicates... done")) + (symbol-value local))) + +(TeX-auto-add-type "symbol" "TeX") + +(defvar TeX-auto-apply-hook nil + "Hook run when a buffer is parsed and the information is applied.") + +(defun TeX-auto-apply () + ;; Parse and apply TeX information in the current buffer. + (TeX-auto-parse) + (run-hooks 'TeX-auto-apply-hook) + (mapcar 'TeX-auto-apply-entry TeX-auto-parser)) + +(defun TeX-auto-apply-entry (entry) + ;; Apply the information in an entry in `TeX-auto-parser'. + (let ((value (symbol-value (nth TeX-auto-parser-temporary entry))) + (add (nth TeX-auto-parser-add entry))) + (if value (apply add value)))) + +(defun TeX-safe-auto-write () + ;; Call TeX-auto-write safely + (condition-case name + (and (boundp 'TeX-auto-update) + TeX-auto-update + (TeX-auto-write)) + (error nil)) + ;; Continue with the other write file hooks. + nil) + +(defvar TeX-auto-save nil + "*Automatically save style information when saving the buffer.") + +(defvar TeX-auto-untabify t + "*Automatically untabify when saving the buffer.") + +(defun TeX-auto-write () + ;; Save all relevant TeX information from the current buffer. + (if TeX-auto-untabify + (untabify (point-min) (point-max))) + (if (and TeX-auto-save TeX-auto-local) + (let* ((file (concat (TeX-master-directory) + TeX-auto-local + (if (string-match "/$" TeX-auto-local) "" "/") + (TeX-strip-extension nil TeX-all-extensions t) + ".el")) + (dir (file-name-directory file))) + ;; Create auto directory if possible. + (if (not (file-exists-p dir)) + (condition-case name + (make-directory (substring dir 0 -1)) + (error nil))) + (if (file-writable-p file) + (save-excursion + (TeX-update-style) + (TeX-auto-store file)) + (message "Can't write style information."))))) + +(defvar TeX-macro-default (car-safe TeX-macro-private) + "*Default directory to search for TeX macros.") + +(defvar TeX-auto-default (car-safe TeX-auto-private) + "*Default directory to place automatically generated TeX information.") + +;;;###autoload +(defun TeX-auto-generate (tex auto) + "Generate style file for TEX and store it in AUTO. +If TEX is a directory, generate style files for all files in the directory." + (interactive (list (setq TeX-macro-default + (expand-file-name (read-file-name + "TeX file or directory: " + TeX-macro-default + TeX-macro-default 'confirm))) + (setq TeX-auto-default + (expand-file-name (read-file-name + "AUTO lisp directory: " + TeX-auto-default + TeX-auto-default 'confirm))))) + (cond ((not (file-readable-p tex))) + ((string-match TeX-ignore-file tex)) + ((file-directory-p tex) + (let ((files (directory-files tex)) + (default-directory (concat (if (TeX-directory-absolute-p tex) + "" + default-directory) + (if (string-match "/$" tex) + tex + (concat tex "/"))))) + (mapcar (function (lambda (file) + (if (or TeX-file-recurse + (not (file-directory-p file))) + (TeX-auto-generate file auto)))) + files))) + ((TeX-match-extension tex (append TeX-file-extensions + BibTeX-file-extensions)) + (save-excursion + (set-buffer (find-file-noselect tex)) + (message "Parsing %s..." tex) + (TeX-auto-store (concat auto + (if (string-match "/$" auto) "" "/") + (TeX-strip-extension tex + TeX-all-extensions + t) + ".el")) + (kill-buffer (current-buffer)) + (message "Parsing %s... done" tex))))) + +;;;###autoload +(defun TeX-auto-generate-global () + "Create global auto directory for global TeX macro definitions." + (interactive) + (make-directory (if (string-match "/$" TeX-auto-global) + (substring TeX-auto-global 0 -1) + TeX-auto-global)) + (mapcar (function (lambda (macro) (TeX-auto-generate macro TeX-auto-global))) + TeX-macro-global) + (byte-recompile-directory TeX-auto-global 0)) + +(defun TeX-auto-store (file) + ;; Extract information for auc tex from current buffer and store it in FILE. + (TeX-auto-parse) + + (if (member nil (mapcar 'TeX-auto-entry-clear-p TeX-auto-parser)) + (let ((style (TeX-strip-extension nil TeX-all-extensions t))) + (TeX-unload-style style) + (save-excursion + (set-buffer (generate-new-buffer file)) + (erase-buffer) + (insert "(TeX-add-style-hook \"" style "\"\n" + " (function\n" + " (lambda ()") + (mapcar 'TeX-auto-insert TeX-auto-parser) + (insert ")))\n\n") + (write-region (point-min) (point-max) file nil 'silent) + (kill-buffer (current-buffer)))) + (if (file-exists-p (concat file "c")) + (delete-file (concat file "c"))) + (if (file-exists-p file) + (delete-file file)))) + +(defun TeX-auto-entry-clear-p (entry) + ;; Check if the temporary for `TeX-auto-parser' entry ENTRY is clear. + (null (symbol-value (nth TeX-auto-parser-temporary entry)))) + +(defun TeX-auto-insert (entry) + ;; Insert code to initialize ENTRY from `TeX-auto-parser'. + (let ((name (symbol-name (nth TeX-auto-parser-add entry))) + (list (symbol-value (nth TeX-auto-parser-temporary entry)))) + (if (null list) + () + (insert "\n (" name) + (while list + (insert "\n ") + (if (stringp (car list)) + (insert (prin1-to-string (car list))) + (insert "'" (prin1-to-string (car list)))) + (setq list (cdr list))) + (insert ")")))) + +(defvar TeX-auto-ignore + '("csname" "filedate" "fileversion" "docdate" "next" "labelitemi" + "labelitemii" "labelitemiii" "labelitemiv" "labelitemv" + "labelenumi" "labelenumii" "labelenumiii" "labelenumiv" + "labelenumv" "theenumi" "theenumii" "theenumiii" "theenumiv" + "theenumv" "document" "par" "do" "expandafter") + "List of symbols to ignore when scanning a TeX style file.") + +(defun TeX-auto-add-regexp (regexp) + "Add REGEXP to TeX-auto-regexp-list if not already a member." + (if (symbolp TeX-auto-regexp-list) + (setq TeX-auto-regexp-list (symbol-value TeX-auto-regexp-list))) + (or (memq regexp TeX-auto-regexp-list) + (setq TeX-auto-regexp-list (cons regexp TeX-auto-regexp-list)))) + +(defvar TeX-auto-empty-regexp-list + '(("\\(\\'\\`\\)" 1 ignore)) + "List of regular expressions guaranteed to match nothing.") + +(defvar plain-TeX-auto-regexp-list + '(("\\\\def\\\\\\([a-zA-Z]+\\)[^a-zA-Z@]" 1 TeX-auto-symbol-check) + ("\\\\let\\\\\\([a-zA-Z]+\\)[^a-zA-Z@]" 1 TeX-auto-symbol-check) + ("\\\\font\\\\\\([a-zA-Z]+\\)[^a-zA-Z@]" 1 TeX-auto-symbol) + ("\\\\chardef\\\\\\([a-zA-Z]+\\)[^a-zA-Z@]" 1 TeX-auto-symbol) + ("\\\\new\\(count|dimen|muskip|skip\\)\\\\\\([a-z]+\\)[^a-zA-Z@]" + 2 TeX-auto-symbol) + ("\\\\newfont{?\\\\\\([a-zA-Z]+\\)}?" 1 TeX-auto-symbol) + ("\\\\typein\\[\\\\\\([a-zA-Z]+\\)\\]" 1 TeX-auto-symbol) + ("\\\\input +\\(\\.*[^#%\\\\\\.\n\r]+\\)\\(\\.[^#%\\\\\\.\n\r]+\\)?" + 1 TeX-auto-file) + ("\\\\mathchardef\\\\\\([a-zA-Z]+\\)[^a-zA-Z@]" 1 TeX-auto-symbol)) + "List of regular expression matching common LaTeX macro definitions.") + +(defvar TeX-auto-full-regexp-list plain-TeX-auto-regexp-list + "Full list of regular expression matching TeX macro definitions.") + +(defvar TeX-auto-prepare-hook nil + "List of hooks to be called before parsing a TeX file.") + +(defvar TeX-auto-cleanup-hook nil + "List of hooks to be called after parsing a TeX file.") + +(defvar TeX-auto-parse-length 999999 + "*Maximal length of TeX file that will be parsed.") + (make-variable-buffer-local 'TeX-auto-parse-length) + +(defun TeX-auto-parse () + "Parse TeX information in current buffer. + +Call the functions in TeX-auto-prepare-hook before parsing, and the +functions in TeX-auto-cleanup-hook after parsing." + + (let ((case-fold-search nil) + (regexp-list (if (symbolp TeX-auto-regexp-list) + (symbol-value TeX-auto-regexp-list) + TeX-auto-regexp-list))) + + (mapcar 'TeX-auto-clear-entry TeX-auto-parser) + (run-hooks 'TeX-auto-prepare-hook) + + ;; Parse + (save-excursion + (goto-char (min (point-max) TeX-auto-parse-length)) + ;; Extract the information. + (let ((regexp (concat "\\(" + (mapconcat 'car regexp-list "\\)\\|\\(") + "\\)"))) + (while (re-search-backward regexp nil t) + (if (TeX-in-comment) + () + (let* ((entry (TeX-member nil regexp-list + (function (lambda (a b) + (looking-at (nth 0 b)))))) + (symbol (nth 2 entry)) + (match (nth 1 entry))) + (if (fboundp symbol) + (funcall symbol match) + (set symbol (cons (if (listp match) + (mapcar 'TeX-match-buffer match) + (TeX-match-buffer match)) + (symbol-value symbol))))))))) + + ;; Cleanup ignored symbols. + + ;; NOTE: This is O(N M) where it could be O(N log N + M log M) if we + ;; sorted the lists first. + (while (member (car TeX-auto-symbol) TeX-auto-ignore) + (setq TeX-auto-symbol (cdr TeX-auto-symbol))) + (let ((list TeX-auto-symbol)) + (while (and list (cdr list)) + (if (member (car (cdr list)) TeX-auto-ignore) + (setcdr list (cdr (cdr list))) + (setq list (cdr list))))) + + (run-hooks 'TeX-auto-cleanup-hook))) + +(defun TeX-auto-clear-entry (entry) + ;; Set the temporary variable in ENTRY to nil. + (set (nth TeX-auto-parser-temporary entry) nil)) + +(defvar LaTeX-auto-end-symbol nil) + +(defun TeX-auto-symbol-check (match) + "Add MATCH to TeX-auto-symbols. +Check for potential LaTeX environments." + (let ((symbol (if (listp match) + (mapcar 'TeX-match-buffer match) + (TeX-match-buffer match)))) + (if (and (stringp symbol) + (string-match "^end\\(.+\\)$" symbol)) + (setq LaTeX-auto-end-symbol + (cons (substring symbol (match-beginning 1) (match-end 1)) + LaTeX-auto-end-symbol)) + (setq TeX-auto-symbol (cons symbol TeX-auto-symbol))))) + +;;; Utilities +;; +;; Some of these functions has little to do with TeX, but nonetheless we +;; should use the "TeX-" prefix to avoid name clashes. + +(defvar TeX-auto-regexp-list 'TeX-auto-full-regexp-list + "*List of regular expresions used for parsing the current file.") + (make-variable-buffer-local 'TeX-auto-regexp-list) + +(defvar TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "texinfo") + "*File extensions used by manually generated TeX files.") + +(defvar TeX-all-extensions '("[^.\n]+") + "All possible file extensions.") + +(defvar TeX-default-extension "tex" + "*Default extension for TeX files.") + + (make-variable-buffer-local 'TeX-default-extension) + +(defvar BibTeX-file-extensions '("bib") + "Valid file extensions for BibTeX files.") + +(defvar BibTeX-style-extensions '("bst") + "Valid file extensions for BibTeX styles.") + +(defvar TeX-ignore-file "\\(^\\|/\\)\\(\\.\\|\\.\\.\\|RCS\\|SCCS\\|CVS\\)$" + "*Regular expression matching file names to ignore. + +These files or directories will not be considered when searching for +TeX files in a directory.") + +(defvar TeX-file-recurse t + "*If not nil, search TeX directories recursivly.") + +(defun TeX-match-extension (file &optional extensions) + "Return non-nil if FILE has an one of EXTENSIONS. + +If EXTENSIONS is not specified or nil, the value of +TeX-file-extensions is used instead." + + (if (null extensions) + (setq extensions TeX-file-extensions)) + + (let ((regexp (concat "\\.\\(" + (mapconcat 'identity extensions "\\|") + "\\)$"))) + (string-match regexp file))) + +(defun TeX-strip-extension (&optional string extensions nodir nostrip) + "Return STRING without any trailing extension in EXTENSIONS. +If NODIR is `t', also remove directory part of STRING. +If NODIR is `path', remove directory part of STRING if it is equal to +the current directory, TeX-macro-private or TeX-macro-global. +If NOSTRIP is set, do not remove extension after all. +STRING defaults to the name of the current buffer. +EXTENSIONS defaults to TeX-file-extensions." + + (if (null string) + (setq string (or (buffer-file-name) ""))) + + (if (null extensions) + (setq extensions TeX-file-extensions)) + + (let* ((strip (if (and (not nostrip) + (TeX-match-extension string extensions)) + (substring string 0 (match-beginning 0)) + string)) + (dir (file-name-directory (expand-file-name strip)))) + (if (or (eq nodir t) + (string-equal dir (expand-file-name "./")) + (member dir TeX-macro-global) + (member dir TeX-macro-private)) + (file-name-nondirectory strip) + strip))) + +(defun TeX-search-files (&optional directories extensions nodir strip) + "Return a list of all reachable files in DIRECTORIES ending with EXTENSIONS. +If optional argument NODIR is set, remove directory part. +If optional argument STRIP is set, remove file extension. +If optional argument DIRECTORIES is set, search in those directories. +Otherwise, search in all TeX macro directories. +If optional argument EXTENSIONS is not set, use TeX-file-extensions" + + (if (null extensions) + (setq extensions TeX-file-extensions)) + + (if (null directories) + (setq directories + (cons "./" (append TeX-macro-private TeX-macro-global)))) + + (let (match) + + (while directories + (let* ((directory (car directories)) + (content (and directory + (file-readable-p directory) + (file-directory-p directory) + (directory-files directory)))) + + (setq directories (cdr directories)) + + (while content + (let ((file (concat directory (car content)))) + + (setq content (cdr content)) + (cond ((string-match TeX-ignore-file file)) + ((not (file-readable-p file))) + ((file-directory-p file) + (if TeX-file-recurse + (setq directories + (cons (concat file "/") directories)))) + ((TeX-match-extension file extensions) + (setq match (cons (TeX-strip-extension file + extensions + nodir + (not strip)) + match)))))))) + + match)) + +(defun TeX-car-string-lessp (a b) + (string-lessp (car a) (car b))) + +(defun TeX-listify (a) + (if (listp a) a (list a))) + +(defun TeX-member (elt list how) + "Returns the member ELT in LIST. Comparison done with HOW. + +Return nil if ELT is not a member of LIST." + (while (and list (not (funcall how elt (car list)))) + (setq list (cdr list))) + (car-safe list)) + +(defun TeX-assoc (elem list) + "Like assoc, except case incentive." + (let ((case-fold-search t)) + (TeX-member elem list + (function (lambda (a b) + (string-match (concat "^" (regexp-quote a) "$") + (car b))))))) + +(defun TeX-match-buffer (n) + "Return the substring corresponding to the N'th match. +See match-data for details." + (if (match-beginning n) + (let ((str (buffer-substring (match-beginning n) (match-end n)))) + (set-text-properties 0 (length str) nil str) + (copy-sequence str)) + "")) + +(defun TeX-function-p (arg) + "Return non-nil if ARG is callable as a function." + (or (and (fboundp 'byte-code-function-p) + (byte-code-function-p arg)) + (and (listp arg) + (eq (car arg) 'lambda)) + (and (symbolp arg) + (fboundp arg)))) + +(defun TeX-looking-at-backward (regexp &optional limit) + ;; Return non-nil if the text before point matches REGEXP. + ;; Optional second argument LIMIT gives a max number of characters + ;; to look backward for. + (let ((pos (point))) + (save-excursion + (and (re-search-backward regexp + (if limit (max (point-min) (- (point) limit))) + t) + (eq (match-end 0) pos))))) + +;;; Syntax Table + +(defvar TeX-mode-syntax-table (make-syntax-table) + "Syntax table used while in TeX mode.") + + (make-variable-buffer-local 'TeX-mode-syntax-table) + +(progn ; Define TeX-mode-syntax-table. + (modify-syntax-entry (string-to-char TeX-esc) + "\\" TeX-mode-syntax-table) + (modify-syntax-entry ?\f ">" TeX-mode-syntax-table) + (modify-syntax-entry ?\n ">" TeX-mode-syntax-table) + (modify-syntax-entry (string-to-char TeX-grop) + (concat "(" TeX-grcl) + TeX-mode-syntax-table) + (modify-syntax-entry (string-to-char TeX-grcl) + (concat ")" TeX-grop) + TeX-mode-syntax-table) + (modify-syntax-entry ?% "<" TeX-mode-syntax-table) + (modify-syntax-entry ?\" "." TeX-mode-syntax-table) + (modify-syntax-entry ?& "." TeX-mode-syntax-table) + (modify-syntax-entry ?_ "." TeX-mode-syntax-table) + (modify-syntax-entry ?@ "_" TeX-mode-syntax-table) + (modify-syntax-entry ?~ " " TeX-mode-syntax-table) + (modify-syntax-entry ?$ "$" TeX-mode-syntax-table) + (modify-syntax-entry ?' "w" TeX-mode-syntax-table)) + +;;; Menu Support + +(defvar TeX-command-current 'TeX-command-master) +;; Function used to run external command. + +(defun TeX-command-select-master () + (interactive) + (message "Next command will be on the master file") + (setq TeX-command-current 'TeX-command-master)) + +(defun TeX-command-select-buffer () + (interactive) + (message "Next command will be on the buffer") + (setq TeX-command-current 'TeX-command-buffer)) + +(defun TeX-command-select-region () + (interactive) + (message "Next command will be on the region") + (setq TeX-command-current 'TeX-command-region)) + +(defvar TeX-command-force nil) +;; If non-nil, TeX-command-query will return the value of this +;; variable instead of quering the user. + +(defun TeX-command-menu (name) + ;; Execute TeX-command-list NAME from a menu. + (let ((TeX-command-force name)) + (funcall TeX-command-current))) + +(defun TeX-command-menu-print (printer command name) + ;; Print on PRINTER using method COMMAND to run NAME. + (let ((TeX-printer-default printer) + (TeX-printer-list nil) + (TeX-print-command command)) + (TeX-command-menu name))) + +(defun TeX-command-menu-printer-entry (entry) + ;; Return TeX-printer-list ENTRY as a menu item. + (vector (nth 0 entry) + (list 'TeX-command-menu-print + (nth 0 entry) + (or (nth lookup entry) command) + name) + t)) + +;; Begin fix part 1 by Ulrik Dickow 16-Feb-1996, +;; to make queue command usable. Easy but ugly code duplication again. + +(defun TeX-command-menu-queue (printer command name) + ;; Show queue for PRINTER using method COMMAND to run NAME. + (let ((TeX-printer-default printer) + (TeX-printer-list nil) + (TeX-queue-command command)) + (TeX-command-menu name))) + +(defun TeX-command-menu-queue-entry (entry) + ;; Return TeX-printer-list ENTRY as a menu item. + (vector (nth 0 entry) + (list 'TeX-command-menu-queue + (nth 0 entry) + (or (nth lookup entry) command) + name) + t)) + +;; End fix part 1. + +(defun TeX-command-menu-entry (entry) + ;; Return TeX-command-list ENTRY as a menu item. + (let ((name (car entry))) + (cond ((and (string-equal name TeX-command-Print) + TeX-printer-list) + (let ((command TeX-print-command) + (lookup 1)) + (append (list TeX-command-Print) + (mapcar 'TeX-command-menu-printer-entry + TeX-printer-list)))) + ((and (string-equal name TeX-command-Queue) + TeX-printer-list) + (let ((command TeX-queue-command) + (lookup 2)) + (append (list TeX-command-Queue) + (mapcar 'TeX-command-menu-queue-entry ; dickow fix part 2. + TeX-printer-list)))) + (t + (vector name (list 'TeX-command-menu name) t))))) + +;;; Keymap + +(defvar TeX-electric-escape nil + "If this is non-nil when AUC TeX is loaded, the TeX escape +character ``\\'' will be bound to `TeX-electric-macro'.") + +(defvar TeX-mode-map nil + "Keymap for common TeX and LaTeX commands.") + +(if TeX-mode-map + () + (setq TeX-mode-map (make-sparse-keymap)) + + ;; Standard + ;; (define-key TeX-mode-map "\177" 'backward-delete-char-untabify) + (define-key TeX-mode-map "\C-c}" 'up-list) + (define-key TeX-mode-map "\C-c#" 'TeX-normal-mode) + (define-key TeX-mode-map "\C-c\C-n" 'TeX-normal-mode) + (define-key TeX-mode-map "\C-c?" 'describe-mode) + (define-key TeX-mode-map "\C-c\C-i" 'TeX-goto-info-page) + + ;; From tex.el + (define-key TeX-mode-map "\"" 'TeX-insert-quote) + (define-key TeX-mode-map "$" 'TeX-insert-dollar) + (define-key TeX-mode-map "." 'TeX-insert-punctuation) + (define-key TeX-mode-map "," 'TeX-insert-punctuation) + (define-key TeX-mode-map "\C-c{" 'TeX-insert-braces) + (define-key TeX-mode-map "\C-c\C-f" 'TeX-font) + (define-key TeX-mode-map "\C-c\C-m" 'TeX-insert-macro) + (if TeX-electric-escape + (define-key TeX-mode-map "\\" 'TeX-electric-macro)) + (define-key TeX-mode-map "\e\t" 'TeX-complete-symbol) ;*** Emacs 19 way + + (define-key TeX-mode-map "\C-c;" 'TeX-comment-region) + (define-key TeX-mode-map "\C-c%" 'TeX-comment-paragraph) + + (define-key TeX-mode-map "\C-c'" 'TeX-comment-paragraph) ;*** Old way + (define-key TeX-mode-map "\C-c:" 'TeX-un-comment-region) ;*** Old way + (define-key TeX-mode-map "\C-c\"" 'TeX-un-comment) ;*** Old way + + ;; From tex-buf.el + (define-key TeX-mode-map "\C-c\C-d" 'TeX-save-document) + (define-key TeX-mode-map "\C-c\C-r" 'TeX-command-region) + (define-key TeX-mode-map "\C-c\C-b" 'TeX-command-buffer) + (define-key TeX-mode-map "\C-c\C-c" 'TeX-command-master) + (define-key TeX-mode-map "\C-c\C-k" 'TeX-kill-job) + (define-key TeX-mode-map "\C-c\C-l" 'TeX-recenter-output-buffer) + (define-key TeX-mode-map "\C-c^" 'TeX-home-buffer) + (define-key TeX-mode-map "\C-c`" 'TeX-next-error) + (define-key TeX-mode-map "\C-c\C-w" 'TeX-toggle-debug-boxes)) + +(easy-menu-define TeX-mode-menu + TeX-mode-map + "Menu used in TeX mode." + (append '("Command") + '(("Command on" + [ "Master File" TeX-command-select-master + :keys "C-c C-c" :style radio + :selected (eq TeX-command-current 'TeX-command-master) ] + [ "Buffer" TeX-command-select-buffer + :keys "C-c C-b" :style radio + :selected (eq TeX-command-current 'TeX-command-buffer) ] + [ "Region" TeX-command-select-region + :keys "C-c C-r" :style radio + :selected (eq TeX-command-current 'TeX-command-region) ])) + (let ((file 'TeX-command-on-current)) + (mapcar 'TeX-command-menu-entry TeX-command-list)))) + +(defvar plain-TeX-mode-map (copy-keymap TeX-mode-map) + "Keymap used in plain TeX mode.") + +(easy-menu-define plain-TeX-mode-menu + plain-TeX-mode-map + "Menu used in plain TeX mode." + (list "TeX" + ["Macro..." TeX-insert-macro t] + ["Complete" TeX-complete-symbol t] + ["Save Document" TeX-save-document t] + ["Next Error" TeX-next-error t] + ["Kill Job" TeX-kill-job t] + ["Debug Bad Boxes" TeX-toggle-debug-boxes + :style toggle :selected TeX-debug-bad-boxes ] + ["Switch to Original File" TeX-home-buffer t] + ["Recenter Output Buffer" TeX-recenter-output-buffer t] + ;; ["Uncomment" TeX-un-comment t] + ["Uncomment Region" TeX-un-comment-region t] + ;; ["Comment Paragraph" TeX-comment-paragraph t] + ["Comment Region" TeX-comment-region t] + ["Switch to Master file" TeX-home-buffer t] + ["Documentation" TeX-goto-info-page t] + ["Submit bug report" TeX-submit-bug-report t] + ["Reset Buffer" TeX-normal-mode t] + ["Reset AUC TeX" (TeX-normal-mode t) :keys "C-u C-c C-n"])) + +;;; Comments + +(defun TeX-un-comment-region (start end level) + "Remove up to LEVEL comment characters from each line in the region." + (interactive "*r\np") + (comment-region start end (- level))) + +(defun TeX-un-comment (level) + "Delete up to LEVEL %'s from the beginning of each line in a comment." + (interactive "*p") + (save-excursion + ; Find first comment line + (re-search-backward (concat "^[^" comment-start "]") nil 'limit) + (let ((beg (point))) + (forward-line 1) + ; Find last comment line + (re-search-forward (concat "^[^" comment-start "]") nil 'limit) + ; Uncomment region + (comment-region beg (point) (- level))))) + +(fset 'TeX-comment-region 'comment-region) + +(defun TeX-comment-paragraph (level) + "Inserts LEVEL %'s at the beginning of every line in the current paragraph." + (interactive "*p") + (if (< level 0) + (TeX-un-comment (- level)) + (save-excursion + (mark-paragraph) + (comment-region (point) (mark) level)))) + +(defun TeX-in-comment () + ;; Return non-nil if point is in a comment. + (if (or (bolp) + (null comment-start-skip) + (eq (preceding-char) ?\r)) + nil + (save-excursion + (let ((pos (point))) + (re-search-backward "^\\|\r" nil t) + (or (looking-at comment-start-skip) + (re-search-forward comment-start-skip pos t)))))) + +;;; Indentation + +(defun TeX-brace-count-line () + "Count number of open/closed braces." + (save-excursion + (save-restriction + (let ((count 0)) + (narrow-to-region (point) + (save-excursion + (re-search-forward "[^\\\\]%\\|\n\\|\\'") + (backward-char) + (point))) + + (while (re-search-forward "\\({\\|}\\|\\\\.\\)" nil t) + (cond + ((string= "{" (TeX-match-buffer 1)) + (setq count (+ count TeX-brace-indent-level))) + ((string= "}" (TeX-match-buffer 1)) + (setq count (- count TeX-brace-indent-level))))) + count)))) + +(defvar TeX-brace-indent-level 2 + "*The level of indentation produced by a open brace.") + +(defun TeX-comment-indent () + (if (looking-at "%%%") + (current-column) + (skip-chars-backward " \t") + (max (if (bolp) 0 (1+ (current-column))) + comment-column))) + +;;; Fonts + +(defvar TeX-font-list '((?\C-b "{\\bf " "}") + (?\C-c "{\\sc " "}") + (?\C-e "{\\em " "\\/}") + (?\C-i "{\\it " "\\/}") + (?\C-r "{\\rm " "}") + (?\C-s "{\\sl " "\\/}") + (?\C-t "{\\tt " "}") + (?\C-d "" "" t)) + "*List of fonts used by TeX-font. + +Each entry is a list with three elements. The first element is the +key to active the font. The second element is the string to insert +before point, and the third element is the string to insert after +point. An optional fourth element means always replace if not nil.") + +(defvar TeX-font-replace-function 'TeX-font-replace + "Determines the function which is called when a font should be replaced.") + +(defun TeX-describe-font-entry (entry) + ;; A textual description of an ENTRY in TeX-font-list. + (concat (format "%8s\t" (key-description (char-to-string (nth 0 entry)))) + (if (nth 3 entry) + "-- delete font" + (format "%10s %s" (nth 1 entry) (nth 2 entry))))) + +(defun TeX-font (replace what) + "Insert template for font change command. +If REPLACE is not nil, replace current font. WHAT determines the font +to use, as specified by TeX-font-list." + (interactive "*P\nc") + (TeX-update-style) + (let* ((entry (assoc what TeX-font-list))) + (setq replace (or replace (nth 3 entry))) + (cond ((null entry) + (let ((help (concat "Font list:\n\n" + (mapconcat 'TeX-describe-font-entry + TeX-font-list "\n")))) + (with-output-to-temp-buffer "*Help*" + (set-buffer "*Help*") + (insert help)))) + (replace + (funcall TeX-font-replace-function (nth 1 entry) (nth 2 entry))) + ((TeX-active-mark) + (save-excursion + (cond ((> (mark) (point)) + (insert (nth 1 entry)) + (goto-char (mark)) + (insert (nth 2 entry))) + (t + (insert (nth 2 entry)) + (goto-char (mark)) + (insert (nth 1 entry)))))) + (t + (insert (nth 1 entry)) + (save-excursion + (insert (nth 2 entry))))))) +(defun TeX-font-replace (start end) + "Replace font specification around point with START and END." + (save-excursion + (while (not (looking-at "{\\\\[a-zA-Z]+ ")) + (up-list -1)) + (forward-sexp) + (save-excursion + (replace-match start t t)) + (if (save-excursion + (backward-char 3) + (if (looking-at (regexp-quote "\\/}")) + (progn + (delete-char 3) + nil) + t)) + (delete-backward-char 1)) + (insert end))) + +;;; Dollars +;; +;; Originally stolen from VorTeX. +;; Copyright (C) 1986, 1987, 1988 Pehong Chen (phc@renoir.berkeley.edu) + +(defvar TeX-dollar-sign ?$ + "*Character user to enter and leaver math mode in TeX.") + +(defconst TeX-dollar-string (char-to-string TeX-dollar-sign)) + +(defconst TeX-dollar-regexp + (concat "^" (regexp-quote TeX-dollar-string) "\\|[^" TeX-esc "]" + (regexp-quote TeX-dollar-string))) + +(defvar TeX-dollar-list nil) + (make-variable-buffer-local 'TeX-match-dollar-on) + +(defvar TeX-par-start nil) + (make-variable-buffer-local 'TeX-par-start) + +(defvar TeX-par-end nil) + (make-variable-buffer-local 'TeX-par-end) + +(defvar TeX-symbol-marker nil) + +(defvar TeX-symbol-marker-pos 0) + +(defun TeX-bouncing-point (m) + (save-excursion + (if (pos-visible-in-window-p) + (sit-for 1) + (let* ((pos1 (point)) + (pos2 (+ pos1 m)) + (sym (buffer-substring pos1 pos2)) + (msg1 (progn (beginning-of-line) (buffer-substring (point) pos1))) + (msg2 (progn (end-of-line) (buffer-substring pos2 (point))))) + (message "%s`%s'%s" msg1 sym msg2))))) + +(defun TeX-locate-delimiter (pos sym symlst) + (let ((marker nil) + (marker-pos 0) + (pair t) + (head nil)) + (catch 'loop + (while symlst + (setq marker (car symlst)) + (setq marker-pos (1- (marker-position marker))) + (if (and (/= pos marker-pos) (= (char-after marker-pos) sym)) + (if (> pos marker-pos) + (progn + (setq TeX-symbol-marker-pos marker-pos) + (setq TeX-symbol-marker marker) + (setq head (cons marker head)) + (setq pair (not pair))) + (if pair (setq TeX-symbol-marker nil)) + (throw 'loop (append (reverse head) + (cons (set-marker (make-marker) (1+ pos)) + symlst))))) + (setq symlst (cdr symlst))) + (if pair (setq TeX-symbol-marker nil)) + (reverse (cons (set-marker (make-marker) (1+ pos)) head))))) + +(defun TeX-dollar-verify () + ;; Verify if the current paragraph is the same as last. + ;; If so, do nothing, otherwise reset TeX-par-start and TeX-par-end and + ;; reconstruct the symbol-list. + (let ((start (save-excursion + (if (re-search-backward paragraph-separate nil t) + (point) + 1))) + (end (save-excursion + (if (re-search-forward paragraph-separate nil t) + (1+ (point)) + (1+ (point-max))))) + (init nil)) + (if (null TeX-par-start) + (setq TeX-par-start (set-marker (make-marker) 1))) + (if (/= (marker-position TeX-par-start) start) + (progn + (set-marker TeX-par-start start) + (setq init t))) + (if (null TeX-par-end) + (setq TeX-par-end (set-marker (make-marker) 1))) + (if (/= (marker-position TeX-par-end) end) + (progn + (set-marker TeX-par-end end) + (setq init t))) + (if init + (save-excursion + (setq TeX-dollar-list nil) + (goto-char start) + (while (re-search-forward TeX-dollar-regexp end t) + (setq TeX-dollar-list + (append TeX-dollar-list + (list (set-marker (make-marker) + (if (= (following-char) + TeX-dollar-sign) + (progn + (forward-char 1) + (point)) + (point))))))))))) + +(defun TeX-insert-dollar (&optional arg) + "Insert dollar sign. + +Show matching dollar sign if this dollar sign end the TeX math mode. +Ensure double dollar signs match up correctly by inserting extra +dollar signs when needed. + +With optional ARG, insert that many dollar signs." + (interactive "P") + (if arg + (let ((count (prefix-numeric-value arg))) + (if (listp arg) + (self-insert-command 1) ;C-u always inserts just one + (self-insert-command count))) + (let ((pc (preceding-char)) + (pos (point)) + (pt (point)) + (single t)) + (TeX-dollar-verify) + (if (= pc (string-to-char TeX-esc)) + (insert TeX-dollar-sign) + (if (and (= pc TeX-dollar-sign) + (/= (char-after (- (point) 2)) (string-to-char TeX-esc))) + (progn + (setq single nil) + (if (and (> pos 2) (= (char-after (- pos 2)) TeX-dollar-sign)) + (setq pt (1- pos)) ; Doesn't echo 3rd $, if $$ already + (backward-char 1) + (insert TeX-dollar-sign) + (goto-char (1+ pos)))) + (insert TeX-dollar-sign)) + (setq TeX-dollar-list + (TeX-locate-delimiter pt TeX-dollar-sign TeX-dollar-list)) + (if TeX-symbol-marker + (save-excursion + (goto-char TeX-symbol-marker-pos) + (if (and (= (preceding-char) TeX-dollar-sign) + (/= (char-after (- (point) 2)) TeX-dollar-sign)) + (progn + (backward-char 1) + (if single + (save-excursion + (goto-char pos) + (insert TeX-dollar-sign)))) ; $$foo$`$' + (if (not single) + (progn + (insert TeX-dollar-sign) ; `$'$foo$$ + (backward-char 1)))) + (TeX-bouncing-point (if single 1 2)))))))) + +;;; Simple Commands + +(defun TeX-normal-mode (arg) + "Remove all information about this buffer, and apply the style hooks again. +Save buffer first including style information. +With optional argument, also reload the style hooks." + (interactive "*P") + (if arg + (setq TeX-style-hook-list nil + BibTeX-global-style-files nil + BibTeX-global-files nil + TeX-global-input-files nil)) + (let ((TeX-auto-save t)) + (if (buffer-modified-p) + (save-buffer) + (TeX-auto-write))) + (normal-mode) + (TeX-update-style)) + +(defvar TeX-open-quote "``" + "*String inserted by typing \\[TeX-insert-quote] to open a quotation.") + +(defvar TeX-close-quote "''" + "*String inserted by typing \\[TeX-insert-quote] to close a quotation.") + +(defvar TeX-quote-after-quote nil + "*Behaviour of \\[TeX-insert-quote]. Nil means standard behaviour; +when non-nil, opening and closing quotes are inserted only after \".") + +;;;###autoload +(defun TeX-insert-quote (arg) + "Insert the appropriate quote marks for TeX. +Inserts the value of `TeX-open-quote' (normally ``) or `TeX-close-quote' +\(normally '') depending on the context. If `TeX-quote-after-quote' +is non-nil, this insertion works only after \". +With prefix argument, always inserts \" characters." + (interactive "*P") + (if arg + (self-insert-command (prefix-numeric-value arg)) + (TeX-update-style) + (if TeX-quote-after-quote + (insert (cond ((bobp) + ?\") + ((not (= (preceding-char) ?\")) + ?\") + ((save-excursion + (forward-char -1) + (bobp)) + (delete-backward-char 1) + TeX-open-quote) + ((save-excursion + (forward-char -2) ;;; at -1 there is double quote + (looking-at "[ \t\n]\\|\\s(")) + (delete-backward-char 1) + TeX-open-quote) + (t + (delete-backward-char 1) + TeX-close-quote))) + (insert (cond ((bobp) + TeX-open-quote) + ((= (preceding-char) (string-to-char TeX-esc)) + ?\") + ((= (preceding-char) ?\") + ?\") + ((save-excursion + (forward-char (- (length TeX-open-quote))) + (looking-at (regexp-quote TeX-open-quote))) + (delete-backward-char (length TeX-open-quote)) + ?\") + ((save-excursion + (forward-char (- (length TeX-close-quote))) + (looking-at (regexp-quote TeX-close-quote))) + (delete-backward-char (length TeX-close-quote)) + ?\") + ((save-excursion + (forward-char -1) + (looking-at "[ \t\n]\\|\\s(")) + TeX-open-quote) + (t + TeX-close-quote)))))) + +;; For the sake of BibTeX... +;;; Do not ;;;###autoload because of conflict with standard tex-mode.el. +(fset 'tex-insert-quote 'TeX-insert-quote) + +(defun TeX-insert-punctuation () + "Insert point or comma, cleaning up preceding space." + (interactive) + (if (TeX-looking-at-backward "\\\\/\\(}+\\)" 50) + (replace-match "\\1" t)) + (call-interactively 'self-insert-command)) + +(defun TeX-insert-braces (arg) + "Make a pair of braces around next ARG sexps and leave point inside. +No argument is equivalent to zero: just insert braces and leave point +between." + (interactive "P") + (insert TeX-grop) + (save-excursion + (if arg (forward-sexp (prefix-numeric-value arg))) + (insert TeX-grcl))) + +(defun TeX-goto-info-page () + "Read documentation for AUC TeX in the info system." + (interactive) + (require 'info) + (Info-goto-node "(auctex)")) + +;;;###autoload +(defun TeX-submit-bug-report () + "Submit via mail a bug report on AUC TeX" + (interactive) + (require 'reporter) + (reporter-submit-bug-report + "auc-tex@iesd.auc.dk" + (concat "AUC TeX " AUC-TeX-version) + (list 'window-system + 'LaTeX-version + 'TeX-style-path + 'TeX-auto-save + 'TeX-parse-self + 'TeX-master) + nil nil + "Remember to cover the basics, that is, what you expected to happen and +what in fact did happen.")) + +;;; Ispell Support + +;; The FSF ispell.el use this. +(defun ispell-tex-buffer-p () + (and (boundp 'ispell-tex-p) ispell-tex-p)) + +;; The FSF ispell.el might one day use this. +(setq ispell-enable-tex-parser t) + +(defun TeX-run-ispell (command string file) + "Run ispell on current TeX buffer." + (cond ((and (string-equal file (TeX-region-file)) + (fboundp 'ispell-region)) + (call-interactively 'ispell-region)) + ((string-equal file (TeX-region-file)) + (call-interactively 'spell-region)) + ((fboundp 'ispell-buffer) + (ispell-buffer)) + ((fboundp 'ispell) + (ispell)) + (t + (spell-buffer)))) + +;; Some versions of ispell 3 use this. +(defvar ispell-tex-major-modes nil) +(setq ispell-tex-major-modes + (append '(plain-tex-mode ams-tex-mode latex-mode) + ispell-tex-major-modes)) + +(provide 'tex) + +;;; tex.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/ChangeLog --- a/lisp/custom/ChangeLog Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/custom/ChangeLog Mon Aug 13 09:15:11 2007 +0200 @@ -1,3 +1,62 @@ +Thu Feb 20 11:55:45 1997 Per Abrahamsen + + * Version 1.44 released. + +Thu Feb 20 11:44:33 1997 Per Abrahamsen + + * custom-edit.el (custom-variable-action): Pass symbol to + `custom-unlispify-tag-name'. + (custom-group-action): Ditto. + (custom-face-action): Ditto. + +Wed Feb 19 19:41:38 1997 Per Abrahamsen + + * custom.el (get-face-documentation): New function. + (set-face-documentation): Ditto. + (custom-declare-face): Use it. + + * custom-edit.el (custom-face): Ditto. + +Tue Feb 18 21:42:38 1997 Per Abrahamsen + + * Version 1.43 released. + +Tue Feb 18 19:57:28 1997 Per Abrahamsen + + * widget.el: Don't call autoloads when `load-gc' is fbound. + + * Version 1.42 released. + +Tue Feb 18 08:39:59 1997 Per Abrahamsen + + * custom.el (custom-background-mode): Doc fix. + (custom-declare-variable): Ditto. + Patch by Simon Marshall . + + * custom.el (custom-face-display-set): Pass frame parameter to + `copy-face'. + (custom-face-attribites-set): Pass frame parameter. + + * custom-xmas.el: Cleanup. + + * custom.el (XEmacs): Load "custom-xmas" instead of requiring. + + * widget-edit.el (widget-keymap): Removed duplicate key binding. + +Mon Feb 17 12:58:40 1997 Per Abrahamsen + + * Version 1.41 released. + +Mon Feb 17 12:43:12 1997 Per Abrahamsen + + * custom-edit.el (custom-variable-action): Use + `custom-unlispify-tag-name' instead of `capitalize'. + (custom-face-action): Ditto. + (custom-group-action): Ditto. + + * custom-xmas.el: New file. + * custom.el: Move XEmacs code there. + Sat Feb 15 22:27:07 1997 Per Abrahamsen * Version 1.40 released. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/custom-edit.el --- a/lisp/custom/custom-edit.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/custom/custom-edit.el Mon Aug 13 09:15:11 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.40 +;; Version: 1.44 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -911,8 +911,8 @@ (widget-put widget :custom-state 'unknown) (custom-redraw widget)) (let* ((completion-ignore-case t) - (answer (widget-choose (capitalize - (symbol-name (widget-get widget :value))) + (answer (widget-choose (custom-unlispify-tag-name + (widget-get widget :value)) custom-variable-menu event))) (if answer @@ -1075,7 +1075,8 @@ :format-handler 'custom-face-format-handler :sample-face 'custom-face-tag-face :help-echo "Push me to set or reset this face." - :documentation-property 'face-documentation + :documentation-property '(lambda (face) + (get-face-documentation face)) :value-create 'custom-face-value-create :action 'custom-face-action :custom-set 'custom-face-set @@ -1153,7 +1154,7 @@ (custom-redraw widget)) (let* ((completion-ignore-case t) (symbol (widget-get widget :value)) - (answer (widget-choose (capitalize (symbol-name symbol)) + (answer (widget-choose (custom-unlispify-tag-name symbol) custom-face-menu event))) (if answer (funcall answer widget))))) @@ -1376,8 +1377,8 @@ (widget-put widget :custom-state 'unknown) (custom-redraw widget)) (let* ((completion-ignore-case t) - (answer (widget-choose (capitalize - (symbol-name (widget-get widget :value))) + (answer (widget-choose (custom-unlispify-tag-name + (widget-get widget :value)) custom-group-menu event))) (if answer diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/custom-xmas.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/custom/custom-xmas.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,78 @@ +;;; custom-xmas.el -- XEmacs specific custom support. +;; +;; Copyright (C) 1996, 1997 Free Software Foundation, Inc. +;; +;; Author: Per Abrahamsen +;; Keywords: help, faces +;; Version: 1.44 +;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ + +;;; Commentary: +;; +;; See `custom.el'. + +;;; Code: + +(unless (featurep 'custom) + (error "Load `custom.el' instead")) + +;; Emacs function missing in XEmacs 19.14. +(unless (fboundp 'x-color-values) + (defun x-color-values (color &optional frame) + "Return a description of the color named COLOR on frame FRAME. +The value is a list of integer RGB values--(RED GREEN BLUE). +These values appear to range from 0 to 65280 or 65535, depending +on the system; white is (65280 65280 65280) or (65535 65535 65535). +If FRAME is omitted or nil, use the selected frame." + (color-instance-rgb-components (make-color-instance color)))) + +;; Overwrite Emacs definition. +(defun custom-facep (face) + "Face symbol or object." + (or (facep face) + (find-face face))) + +;; Support for special XEmacs font attributes. +(autoload 'font-create-object "font" nil) + +(unless (fboundp 'face-font-name) + (defun face-font-name (face &rest args) + (apply 'face-font face args))) + +(defun custom-set-face-font-size (face size &rest args) + "Set the font of FACE to SIZE" + (let* ((font (apply 'face-font-name face args)) + (fontobj (font-create-object font))) + (set-font-size fontobj size) + (apply 'set-face-font face fontobj args))) + +(defun custom-set-face-font-family (face family &rest args) + "Set the font of FACE to FAMILY" + (let* ((font (apply 'face-font-name face args)) + (fontobj (font-create-object font))) + (set-font-family fontobj family) + (apply 'set-face-font face fontobj args))) + +(nconc custom-face-attributes + '((:family (editable-field :format "Family: %v") + custom-set-face-font-family) + (:size (editable-field :format "Size: %v") + custom-set-face-font-size))) + +;; Overwrite Emacs definition. +(defun custom-menu-reset () + "Reset customize menu." + (remove-hook 'custom-define-hook 'custom-menu-reset) + (when (fboundp 'add-submenu) + ;; XEmacs with menus. + (add-submenu '("Help") custom-help-menu))) + +(defun get-face-documentation (face) + "Get the documentation string for FACE." + (face-property face 'doc-string)) + +(defun set-face-documentation (face string) + "Set the documentation string for FACE to STRING." + (set-face-property face 'doc-string string)) + +;; custom-xmas.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/custom.el --- a/lisp/custom/custom.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/custom/custom.el Mon Aug 13 09:15:11 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.40 +;; Version: 1.44 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -35,16 +35,6 @@ ;;; Compatibility. -(unless (fboundp 'x-color-values) - ;; Emacs function missing in XEmacs 19.14. - (defun x-color-values (color) - "Return a description of the color named COLOR on frame FRAME. -The value is a list of integer RGB values--(RED GREEN BLUE). -These values appear to range from 0 to 65280 or 65535, depending -on the system; white is (65280 65280 65280) or (65535 65535 65535). -If FRAME is omitted or nil, use the selected frame." - (color-instance-rgb-components (make-color-instance color)))) - (unless (fboundp 'frame-property) ;; XEmacs function missing in Emacs 19.34. (defun frame-property (frame property &optional default) @@ -53,7 +43,7 @@ default))) (defun custom-background-mode () - "Kludge to detext background mode." + "Kludge to detect background mode." (let* ((bg-resource (condition-case () (x-get-resource ".backgroundMode" "BackgroundMode" 'string) @@ -80,22 +70,16 @@ ;; XEmacs and Emacs have different definitions of `facep'. ;; The Emacs definition is the useful one, so emulate that. -(cond ((not (fboundp 'facep)) - (defun custom-facep (face) - "No faces" - nil)) - ((string-match "XEmacs" emacs-version) - (defun custom-facep (face) - "Face symbol or object." - (or (facep face) - (find-face face)))) - (t - (defalias 'custom-facep 'facep))) +(if (fboundp 'facep) + (defalias 'custom-facep 'facep) + (defun custom-facep (face) + "No faces" + nil)) ;;; The `defcustom' Macro. (defun custom-declare-variable (symbol value doc &rest args) - "Like `defcustom', but SYMBOL and VALUE are evaluated as notmal arguments." + "Like `defcustom', but SYMBOL and VALUE are evaluated as normal arguments." (unless (and (default-boundp symbol) (not (get symbol 'saved-value))) (set-default symbol (if (get symbol 'saved-value) @@ -154,6 +138,15 @@ ;;; The `defface' Macro. + +;(defun get-face-documentation (face) +; "Get the documentation string for FACE." +; (get face 'face-documentation)) + +;(defun set-face-documentation (face string) +; "Set the documentation string for FACE to STRING." +; (put face 'face-documentation string)) + (defun custom-declare-face (face spec doc &rest args) "Like `defface', but FACE is evaluated as a normal argument." (put face 'factory-face spec) @@ -163,8 +156,8 @@ ;; If the user has already created the face, respect that. (let ((value (or (get face 'saved-face) spec))) (custom-face-display-set face value)))) - (when doc - (put face 'face-documentation doc)) + (when (and doc (null (get-face-documentation face))) + (set-face-documentation face doc)) (custom-handle-all-keywords face args 'custom-face) (run-hooks 'custom-define-hook) face) @@ -337,7 +330,7 @@ Iff optional FRAME is non-nil, set it for that frame only. See `defface' for information about SPEC." (when (fboundp 'copy-face) - (copy-face 'custom-face-empty face) + (copy-face 'custom-face-empty face frame) (while spec (let* ((entry (car spec)) (display (nth 0 entry)) @@ -408,34 +401,6 @@ value of the attribute, and optionally the frame where the face should be changed.") -(when (string-match "XEmacs" emacs-version) - ;; Support for special XEmacs font attributes. - (require 'font) - - (unless (fboundp 'face-font-name) - (defun face-font-name (face &rest args) - (apply 'face-font face args))) - - (defun set-face-font-size (face size &rest args) - "Set the font of FACE to SIZE" - (let* ((font (apply 'face-font-name face args)) - (fontobj (font-create-object font))) - (set-font-size fontobj size) - (apply 'set-face-font face fontobj args))) - - (defun set-face-font-family (face family &rest args) - "Set the font of FACE to FAMILY" - (let* ((font (apply 'face-font-name face args)) - (fontobj (font-create-object font))) - (set-font-family fontobj family) - (apply 'set-face-font face fontobj args))) - - (nconc custom-face-attributes - '((:family (editable-field :format "Family: %v") - set-face-font-family) - (:size (editable-field :format "Size: %v") - set-face-font-size)))) - (defun custom-face-attribites-set (face frame &rest atts) "For FACE on FRAME set the attributes [KEYWORD VALUE].... Each keyword should be listed in `custom-face-attributes'. @@ -447,7 +412,7 @@ (fun (nth 2 (assq name custom-face-attributes)))) (setq atts (cdr (cdr atts))) (condition-case nil - (funcall fun face value) + (funcall fun face value frame) (error nil))))) (defun custom-set-face-bold (face value &optional frame) @@ -557,27 +522,24 @@ ["Apropos..." customize-apropos t]) "Customize menu") -(defun custom-menu-reset () - "Reset customize menu." - (remove-hook 'custom-define-hook 'custom-menu-reset) - (cond ((fboundp 'add-submenu) - ;; XEmacs with menus. - (add-submenu '("Help") custom-help-menu)) - ((string-match "XEmacs" emacs-version) - ;; XEmacs without menus. - ) - (t - ;; Emacs. - (define-key global-map [menu-bar help-menu customize-menu] - (cons (car custom-help-menu) - (easy-menu-create-keymaps (car custom-help-menu) - (cdr custom-help-menu))))))) - -(unless (fboundp 'load-gc) - (custom-menu-reset)) +;(defun custom-menu-reset () +; "Reset customize menu." +; (remove-hook 'custom-define-hook 'custom-menu-reset) +; (define-key global-map [menu-bar help-menu customize-menu] +; (cons (car custom-help-menu) +; (easy-menu-create-keymaps (car custom-help-menu) +; (cdr custom-help-menu))))) ;;; The End. (provide 'custom) +(when (and (not (fboundp 'load-gc)) + (string-match "XEmacs" emacs-version)) + ;; Overwrite definitions for XEmacs. + (load-library "custom-xmas")) + +(unless (fboundp 'load-gc) + (custom-menu-reset)) + ;; custom.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/widget-browse.el --- a/lisp/custom/widget-browse.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/custom/widget-browse.el Mon Aug 13 09:15:11 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.40 +;; Version: 1.44 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/widget-edit.el --- a/lisp/custom/widget-edit.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/custom/widget-edit.el Mon Aug 13 09:15:11 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.40 +;; Version: 1.44 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -47,15 +47,14 @@ (unless (and (featurep 'custom) (fboundp 'custom-declare-variable)) ;; We have the old custom-library, hack around it! (defmacro defgroup (&rest args) nil) - (defmacro defcustom (&rest args) nil) + (defmacro defcustom (var value doc &rest args) + `(defvar ,var ,value ,doc)) (defmacro defface (&rest args) nil) (define-widget-keywords :prefix :tag :load :link :options :type :group) (when (fboundp 'copy-face) (copy-face 'default 'widget-documentation-face) (copy-face 'bold 'widget-button-face) - (copy-face 'italic 'widget-field-face)) - (defvar widget-mouse-face 'highlight) - (defvar widget-menu-max-size 40))) + (copy-face 'italic 'widget-field-face)))) ;;; Compatibility. @@ -564,7 +563,6 @@ (define-key widget-keymap "\t" 'widget-forward) (define-key widget-keymap "\M-\t" 'widget-backward) (define-key widget-keymap [(shift tab)] 'widget-backward) - (define-key widget-keymap [(shift tab)] 'widget-backward) (define-key widget-keymap [backtab] 'widget-backward) (if (string-match "XEmacs" (emacs-version)) (progn diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/widget-example.el --- a/lisp/custom/widget-example.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/custom/widget-example.el Mon Aug 13 09:15:11 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.40 +;; Version: 1.44 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (require 'widget) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/custom/widget.el --- a/lisp/custom/widget.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/custom/widget.el Mon Aug 13 09:15:11 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.40 +;; Version: 1.44 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -42,12 +42,12 @@ :hide-rear-space) ;; These autoloads should be deleted when the file is added to Emacs. -(autoload 'widget-create "widget-edit") -(autoload 'widget-insert "widget-edit") -(autoload 'widget-browse "widget-browse" nil t) -(autoload 'widget-browse-at "widget-browse" nil t) +(unless (fboundp 'load-gc) + (autoload 'widget-create "widget-edit") + (autoload 'widget-insert "widget-edit") + (autoload 'widget-browse "widget-browse" nil t) + (autoload 'widget-browse-at "widget-browse" nil t)) -;;;###autoload (defun define-widget (name class doc &rest args) "Define a new widget type named NAME from CLASS. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/edebug/edebug.el --- a/lisp/edebug/edebug.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/edebug/edebug.el Mon Aug 13 09:15:11 2007 +0200 @@ -22,14 +22,14 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: Not in FSF +;;; Synched up with: FSF 19.34. ;;; Commentary: ;; LCD Archive Entry: ;; edebug|Daniel LaLiberte|liberte@cs.uiuc.edu ;; |A source level debugger for Emacs Lisp. -;; |$Date: 1996/12/18 22:51:47 $|$Revision: 1.1.1.2 $|~/modes/edebug.el| +;; |$Date: 1997/02/24 01:13:06 $|$Revision: 1.2 $|~/modes/edebug.el| ;; This minor mode allows programmers to step through Emacs Lisp ;; source code while executing functions. You can also set @@ -38,7 +38,7 @@ ;; expressions, trap errors normally caught by debug, and display a ;; debug style backtrace. -;; Installation +;;; Installation ;; ============= ;; Put edebug.el in some directory in your load-path and @@ -59,7 +59,7 @@ ;; `debugger' to `edebug-debug'. This is no longer necessary ;; since Edebug automatically sets it whenever Edebug is active. -;; Minimal Instructions +;;; Minimal Instructions ;; ===================== ;; First evaluate a defun with C-xx, then run the function. Step @@ -82,25 +82,23 @@ ;; uiucdcs!liberte ;; liberte@cs.uiuc.edu -;; =============================== ;; For the early revision history, see edebug-history. ;;; Code: (defconst edebug-version - (let ((raw-version "$Revision: 1.1.1.2 $")) + (let ((raw-version "$Revision: 1.2 $")) (substring raw-version (string-match "[0-9.]*" raw-version) (match-end 0)))) (require 'backquote) -;; Emacs 18 doesnt have defalias. +;; Emacs 18 doesn't have defalias. (eval-and-compile (or (fboundp 'defalias) (fset 'defalias 'fset))) -;; Bug reporting -;; ============== +;;; Bug reporting (defconst edebug-maintainer-address "liberte@cs.uiuc.edu") @@ -128,9 +126,7 @@ 'edebug-print-circle )))) - -;; Options -;; =============================== +;;; Options (defvar edebug-setup-hook nil "*Functions to call before edebug is used. @@ -252,9 +248,7 @@ "*If non-nil, an expression to test for at every stop point. If the result is non-nil, then break. Errors are ignored.") - -;; Form spec utilities. -;; =============================== +;;; Form spec utilities. ;;;###autoload (defmacro def-edebug-spec (symbol spec) @@ -279,9 +273,7 @@ edebug-form-spec )) - -;; Utilities -;; =============================== +;;; Utilities ;; Define edebug-gensym - from old cl.el (defvar edebug-gensym-index 0 @@ -330,7 +322,7 @@ (defun edebug-window-list () "Return a list of windows, in order of `next-window'." - ;; This doesnt work for epoch. + ;; This doesn't work for epoch. (let* ((first-window (selected-window)) (window-list (list first-window)) (next (next-window first-window))) @@ -372,7 +364,7 @@ "Returns the function named by OBJECT, or nil if it is not a function." (setq object (edebug-lookup-function object)) (if (or (subrp object) - (compiled-function-p object) + (compiled-function-p object) ; XEmacs (and (listp object) (eq (car object) 'lambda) (listp (car (cdr object))))) @@ -403,8 +395,7 @@ (set-buffer (marker-buffer edebug:s-r-beg)) (narrow-to-region edebug:s-r-beg edebug:s-r-end)))))) -;; Display -;; ============ +;;; Display (defconst edebug-trace-buffer "*edebug-trace*" "Name of the buffer to put trace info in.") @@ -426,7 +417,7 @@ (split-window)) ;; (message "next window: %s" (next-window)) (sit-for 1) (if (eq (get-buffer-window edebug-trace-buffer) (next-window)) - ;; Dont select trace window + ;; Don't select trace window nil (select-window (next-window)))) (set-window-buffer (selected-window) buffer) @@ -498,8 +489,7 @@ (defalias 'edebug-input-pending-p 'input-pending-p) -;; Redefine read and eval functions -;; ================================= +;;; Redefine read and eval functions ;; read is redefined to maybe instrument forms. ;; eval-defun is redefined to check edebug-all-forms and edebug-all-defs. @@ -522,7 +512,7 @@ t (read text line using minibuffer and use it). This version, from Edebug, maybe instruments the expression. But the -STREAM must be the current buffer to do so. Whether it instuments is +STREAM must be the current buffer to do so. Whether it instruments is also dependent on the values of `edebug-all-defs' and `edebug-all-forms'." (or stream (setq stream standard-input)) @@ -533,6 +523,8 @@ (or (fboundp 'edebug-original-eval-defun) (defalias 'edebug-original-eval-defun (symbol-function 'eval-defun))) +;; We should somehow arrange to be able to do this +;; without actually replacing the eval-defun command. (defun edebug-eval-defun (edebug-it) "Evaluate the top-level form containing point, or after point. @@ -542,13 +534,16 @@ argument. If instrumenting, it prints: `Edebug: FUNCTIONNAME'. Otherwise, it prints in the minibuffer." (interactive "P") - (let ((edebugging (not (eq (not edebug-it) (not edebug-all-defs)))) - (edebug-result)) - (setq edebug-result - (eval - (let ((edebug-all-forms edebugging) - (edebug-all-defs (eq edebug-all-defs (not edebug-it)))) - (edebug-read-top-level-form)))) + (let* ((edebugging (not (eq (not edebug-it) (not edebug-all-defs)))) + (edebug-result) + (form + (let ((edebug-all-forms edebugging) + (edebug-all-defs (eq edebug-all-defs (not edebug-it)))) + (edebug-read-top-level-form)))) + (if (and (eq (car form) 'defvar) + (cdr-safe (cdr-safe form))) + (setq form (cons 'defconst (cdr form)))) + (setq edebug-result (eval form)) (if (not edebugging) (princ edebug-result) edebug-result))) @@ -565,7 +560,7 @@ or if an error occurs, leave point after it with mark at the original point." (interactive) (eval - ;; Bind edebug-all-forms only while reading, not while evaling + ;; Bind edebug-all-forms only while reading, not while evalling ;; but this causes problems while edebugging edebug. (let ((edebug-all-forms t) (edebug-all-defs t)) @@ -616,8 +611,7 @@ (defalias 'eval-defun (symbol-function 'edebug-original-eval-defun))) -;; Edebug internal data -;; =============================== +;;; Edebug internal data ;; The internal data that is needed for edebugging is kept in the ;; buffer-local variable `edebug-form-data'. @@ -702,10 +696,7 @@ ;; (set-marker (nth 2 entry) nil) (setq edebug-form-data (delq entry edebug-form-data))))) - -;; Parser utilities -;; =============================== - +;;; Parser utilities (defun edebug-syntax-error (&rest args) ;; Signal an invalid-read-syntax with ARGS. @@ -723,6 +714,8 @@ (aset table ?\( 'lparen) (aset table ?\) 'rparen) (aset table ?\' 'quote) + (aset table ?\` 'backquote) + (aset table ?\, 'comma) (aset table ?\" 'string) (aset table ?\? 'char) (aset table ?\[ 'lbracket) @@ -730,12 +723,13 @@ (aset table ?\. 'dot) (aset table ?\# 'hash) ;; We treat numbers as symbols, because of confusion with -, -1, and 1-. - ;; We dont care about any other chars since they wont be seen. + ;; We don't care about any other chars since they won't be seen. table)) (defun edebug-next-token-class () ;; Move to the next token and return its class. We only care about - ;; lparen, rparen, dot, quote, string, char, vector, or symbol. + ;; lparen, rparen, dot, quote, backquote, comma, string, char, vector, + ;; or symbol. (edebug-skip-whitespace) (aref edebug-read-syntax-table (following-char))) @@ -772,12 +766,14 @@ (forward-char -1)))) ((eq class 'quote) (forward-char 1) (list 'quote (edebug-read-sexp))) + ((eq class 'backquote) + (list '\` (edebug-read-sexp))) + ((eq class 'comma) + (list '\, (edebug-read-sexp))) (t ; anything else, just read it. (edebug-original-read (current-buffer)))))) - -;; Offsets for reader -;; ============================== +;;; Offsets for reader ;; Define a structure to represent offset positions of expressions. ;; Each offset structure looks like: (before . after) for constituents, @@ -852,8 +848,8 @@ (edebug-store-after-offset (point))))) -;; Reader for Emacs Lisp. -;; ========================================== +;;; Reader for Emacs Lisp. + ;; Uses edebug-next-token-class (and edebug-skip-whitespace) above. (defconst edebug-read-alist @@ -861,6 +857,8 @@ (lparen . edebug-read-list) (string . edebug-read-string) (quote . edebug-read-quote) + (backquote . edebug-read-backquote) + (comma . edebug-read-comma) (lbracket . edebug-read-vector) (hash . edebug-read-function) )) @@ -897,6 +895,42 @@ (edebug-storing-offsets (point) 'quote) (edebug-read-storing-offsets stream))) +(defun edebug-read-backquote (stream) + ;; Turn `thing into (\` thing) + (let ((opoint (point))) + (forward-char 1) + ;; Generate the same structure of offsets we would have + ;; if the resulting list appeared verbatim in the input text. + (edebug-storing-offsets opoint + (list + (edebug-storing-offsets opoint '\`) + (edebug-read-storing-offsets stream))))) + +(defvar edebug-read-backquote-new nil + "Non-nil if reading the inside of a new-style backquote with no parens around it. +Value of nil means reading the inside of an old-style backquote construct +which is surrounded by an extra set of parentheses. +This controls how we read comma constructs.") + +(defun edebug-read-comma (stream) + ;; Turn ,thing into (\, thing). Handle ,@ and ,. also. + (let ((opoint (point))) + (forward-char 1) + (let ((symbol '\,)) + (cond ((eq (following-char) ?\.) + (setq symbol '\,\.) + (forward-char 1)) + ((eq (following-char) ?\@) + (setq symbol '\,@) + (forward-char 1))) + ;; Generate the same structure of offsets we would have + ;; if the resulting list appeared verbatim in the input text. + (if edebug-read-backquote-new + (list + (edebug-storing-offsets opoint symbol) + (edebug-read-storing-offsets stream)) + (edebug-storing-offsets opoint symbol))))) + (defun edebug-read-function (stream) ;; Turn #'thing into (function thing) (forward-char 1) @@ -912,7 +946,18 @@ (prog1 (let ((elements)) (while (not (memq (edebug-next-token-class) '(rparen dot))) - (setq elements (cons (edebug-read-storing-offsets stream) elements))) + (if (eq (edebug-next-token-class) 'backquote) + (let ((edebug-read-backquote-new (not (null elements))) + (opoint (point))) + (if edebug-read-backquote-new + (setq elements (cons (edebug-read-backquote stream) elements)) + (forward-char 1) ; Skip backquote. + ;; Call edebug-storing-offsets here so that we + ;; produce the same offsets we would have had + ;; if the backquote were an ordinary symbol. + (setq elements (cons (edebug-storing-offsets opoint '\`) + elements)))) + (setq elements (cons (edebug-read-storing-offsets stream) elements)))) (setq elements (nreverse elements)) (if (eq 'dot (edebug-next-token-class)) (let (dotted-form) @@ -937,10 +982,7 @@ (forward-char 1) ; skip \] )) - - -;; Cursors for traversal of list and vector elements with offsets. -;;==================================================================== +;;; Cursors for traversal of list and vector elements with offsets. (defvar edebug-dotted-spec nil) @@ -1017,8 +1059,7 @@ (setq offset (cdr offset))) offset)) -;; The Parser -;; =============================== +;;; The Parser ;; The top level function for parsing forms is ;; edebug-read-and-maybe-wrap-form; it calls all the rest. It checks the @@ -1070,7 +1111,7 @@ (let (result edebug-top-window-data edebug-def-name;; make sure it is locally nil - ;; I dont like these here!! + ;; I don't like these here!! edebug-&optional edebug-&rest edebug-gate @@ -1094,7 +1135,7 @@ def-kind defining-form-p def-name - ;; These offset things dont belong here, but to support recursive + ;; These offset things don't belong here, but to support recursive ;; calls to edebug-read, they need to be here. edebug-offsets edebug-offsets-stack @@ -1113,7 +1154,7 @@ (eq 'name (car (cdr spec))) (eq 'symbol (edebug-next-token-class))) (edebug-original-read (current-buffer)))))) -;;(message "all defs: %s all forms: %s" edebug-all-defs edebug-all-forms) +;;;(message "all defs: %s all forms: %s" edebug-all-defs edebug-all-forms) (cond (defining-form-p (if (or edebug-all-defs edebug-all-forms) @@ -1188,7 +1229,7 @@ (quote (, edebug-def-name)) (, (if edebug-inside-func (` (list (,@ - ;; Doesnt work with more than one def-body!! + ;; Doesn't work with more than one def-body!! ;; But the list will just be reversed. (nreverse edebug-def-args)))) 'nil)) @@ -1217,7 +1258,7 @@ ;; (edebug-after (edebug-before BEFORE-INDEX) AFTER-INDEX FORM) ;; Also increment the offset index for subsequent use. ;; if (not edebug-stop-before-symbols) and form is a symbol, - ;; then dont call edebug-before. + ;; then don't call edebug-before. (list 'edebug-after (list 'edebug-before before-index) after-index form)) @@ -1406,7 +1447,7 @@ ((symbolp form) (cond - ;; Check for constant symbols that dont get wrapped. + ;; Check for constant symbols that don't get wrapped. ((or (memq form '(t nil)) (and (fboundp 'edebug-keywordp) (edebug-keywordp form))) form) @@ -1495,9 +1536,7 @@ "Head of list form must be a symbol or lambda expression."))) )) - -;; Matching of specs. -;; =================== +;;; Matching of specs. (defvar edebug-after-dotted-spec nil) @@ -1505,8 +1544,8 @@ (defconst edebug-max-depth 150) ;; maximum number of matching recursions. -;; Failure to match -;; ================== +;;; Failure to match + ;; This throws to no-match, if there are higher alternatives. ;; Otherwise it signals an error. The place of the error is found ;; with the two before- and after-offset functions. @@ -1594,7 +1633,7 @@ ;; Define specs for all the symbol specs with functions used to process them. -;; Perhaps we shouldnt be doing this with edebug-form-specs since the +;; Perhaps we shouldn't be doing this with edebug-form-specs since the ;; user may want to define macros or functions with the same names. ;; We could use an internal obarray for these primitive specs. @@ -1712,7 +1751,7 @@ (let (edebug-gate ;; only while matching each spec edebug-best-error edebug-error-point) - ;; Doesnt support e.g. &or symbolp &rest form + ;; Doesn't support e.g. &or symbolp &rest form (edebug-match-one-spec cursor (car specs))))) ;; Match failed, so reset and try again. (setq specs (cdr specs)) @@ -1741,7 +1780,7 @@ (defun edebug-match-&key (cursor specs) ;; Following specs must look like ( ) ... ;; where is the name of a keyword, and spec is its spec. - ;; This really doesnt save much over the expanded form and takes time. + ;; This really doesn't save much over the expanded form and takes time. (edebug-match-&rest cursor (cons '&or @@ -1845,7 +1884,7 @@ (defun edebug-match-&define (cursor specs) ;; Match a defining form. - ;; Normally, &define is interpretted specially other places. + ;; Normally, &define is interpreted specially other places. ;; This should only be called inside of a spec list to match the remainder ;; of the current list. e.g. ("lambda" &define args def-body) (edebug-make-form-wrapper @@ -1932,12 +1971,12 @@ (list (edebug-wrap-def-body (edebug-forms cursor))))) -;; Edebug Form Specs -;; ========================================================== -;; See cl-specs.el for common lisp specs. - -;;* Spec for def-edebug-spec -;; Out of date. +;;;; Edebug Form Specs +;;; ========================================================== +;;; See cl-specs.el for common lisp specs. + +;;;;* Spec for def-edebug-spec +;;; Out of date. (defun edebug-spec-p (object) "Return non-nil if OBJECT is a symbol with an edebug-form-spec property." @@ -1967,7 +2006,7 @@ )) -;;* Emacs special forms and some functions. +;;;* Emacs special forms and some functions. ;; quote expects only one argument, although it allows any number. (def-edebug-spec quote sexp) @@ -1984,7 +2023,7 @@ (def-edebug-spec defmacro (&define name lambda-list def-body)) -(def-edebug-spec arglist lambda-list) ;; denegrated - use lambda-list. +(def-edebug-spec arglist lambda-list) ;; deprecated - use lambda-list. (def-edebug-spec lambda-list (([&rest arg] @@ -2085,7 +2124,6 @@ ;; Anything else? -;;==================== ;; Some miscellaneous specs for macros in public packages. ;; Send me yours. @@ -2103,13 +2141,11 @@ [&optional ("interactive" interactive)] def-body)) - -;; The debugger itself -;; =============================== +;;; The debugger itself (defvar edebug-active nil) ;; Non-nil when edebug is active -;; add minor-mode-alist entry +;;; add minor-mode-alist entry (or (assq 'edebug-active minor-mode-alist) (setq minor-mode-alist (cons (list 'edebug-active " *Debugging*") minor-mode-alist))) @@ -2171,8 +2207,7 @@ (defvar cl-lexical-debug) ;; Defined in cl.el -;; Handling signals -;; ================= +;;; Handling signals (if (not (fboundp 'edebug-original-signal)) (defalias 'edebug-original-signal (symbol-function 'signal))) @@ -2200,8 +2235,7 @@ (edebug-original-signal edebug-signal-name edebug-signal-data)) -;; Entering Edebug -;; ================== +;;; Entering Edebug (defun edebug-enter (edebug-function edebug-args edebug-body) ;; Entering FUNC. The arguments are ARGS, and the body is BODY. @@ -2518,8 +2552,8 @@ (setq edebug-buffer-points (edebug-get-displayed-buffer-points))) ;; First move the edebug buffer point to edebug-point - ;; so that window start doesnt get changed when we display it. - ;; I dont know if this is going to help. + ;; so that window start doesn't get changed when we display it. + ;; I don't know if this is going to help. ;;(set-buffer edebug-buffer) ;;(goto-char edebug-point) @@ -2614,7 +2648,7 @@ (eq edebug-arg-mode 'error)) (progn ;; (setq edebug-execution-mode 'step) - ;; (edebug-overlay-arrow) ; this doesnt always show up. + ;; (edebug-overlay-arrow) ; this doesn't always show up. (edebug-recursive-edit))) ; <---------- Recursive edit ;; Reset the edebug-window-data to whatever it is now. @@ -2660,7 +2694,7 @@ 'no-force) ;; Unrestore edebug-buffer's window-point. ;; Needed in addition to setting the buffer point - ;; - otherwise quitting doesnt leave point as is. + ;; - otherwise quitting doesn't leave point as is. ;; But this causes point to not be restored at times. ;; Also, it may not be a visible window. ;; (set-window-point window edebug-point) @@ -2680,8 +2714,8 @@ (set-buffer edebug-outside-buffer) ;; Restore point, and mark. ;; Needed even if restoring windows because - ;; that doesnt restore point and mark in the current buffer. - ;; But dont restore point if edebug-buffer is current buffer. + ;; that doesn't restore point and mark in the current buffer. + ;; But don't restore point if edebug-buffer is current buffer. (if (not (eq edebug-buffer edebug-outside-buffer)) (goto-char edebug-outside-point)) (if (marker-buffer (edebug-mark-marker)) @@ -2904,13 +2938,12 @@ )) -;; Display related functions -;; =============================== +;;; Display related functions (defun edebug-adjust-window (old-start) ;; If pos is not visible, adjust current window to fit following context. -;; (message "window: %s old-start: %s window-start: %s pos: %s" -;; (selected-window) old-start (window-start) (point)) (sit-for 5) +;;; (message "window: %s old-start: %s window-start: %s pos: %s" +;;; (selected-window) old-start (window-start) (point)) (sit-for 5) (if (not (pos-visible-in-window-p)) (progn ;; First try old-start @@ -3078,9 +3111,7 @@ (message "Displaying %s %s" buffer (if already-displaying "off" "on")))) - -;; Breakpoint related functions -;; =============================== +;;; Breakpoint related functions (defun edebug-find-stop-point () ;; Return (function . index) of the nearest edebug stop point. @@ -3144,7 +3175,8 @@ (goto-char (+ edebug-def-mark (aref offset-vector (car breakpoint)))) - (message (concat (if (nth 2 breakpoint) + (message "%s" + (concat (if (nth 2 breakpoint) "Temporary " "") (if (car (cdr breakpoint)) (format "Condition: %s" @@ -3238,8 +3270,7 @@ (setq edebug-global-break-condition expression)) -;; Mode switching functions -;; =============================== +;;; Mode switching functions (defun edebug-set-mode (mode shortmsg msg) ;; Set the edebug mode to MODE. @@ -3464,8 +3495,7 @@ ;; (edebug-set-mode 'exiting "Exit...")) -;; ----------------------------------------------------------------- -;; The following initial mode setting definitions are not used yet. +;;; The following initial mode setting definitions are not used yet. '(defconst edebug-initial-mode-alist '((edebug-Continue-fast . Continue-fast) @@ -3510,9 +3540,7 @@ (error "Key must map to one of the mode changing commands") ))) - -;; Evaluation of expressions -;; =============================== +;;; Evaluation of expressions (def-edebug-spec edebug-outside-excursion t) @@ -3620,8 +3648,8 @@ (get (car edebug-err) 'error-message) (car (cdr edebug-err)))))) -;; Printing -;; ========= +;;; Printing + ;; Replace printing functions. ;; obsolete names @@ -3703,8 +3731,7 @@ (interactive) (message "%s" edebug-previous-result)) -;; Read, Eval and Print -;; ===================== +;;; Read, Eval and Print (defun edebug-eval-expression (edebug-expr) "Evaluate an expression in the outside environment. @@ -3737,9 +3764,7 @@ (princ "\n") )) - -;; Edebug Minor Mode -;; =============================== +;;; Edebug Minor Mode ;; Global GUD bindings for all emacs-lisp-mode buffers. (define-key emacs-lisp-mode-map "\C-x\C-a\C-s" 'edebug-step-mode) @@ -3902,9 +3927,8 @@ " (use-local-map edebug-mode-map)) - -;; edebug eval list mode -;; =============================================== +;;; edebug eval list mode + ;; A list of expressions and their evaluations is displayed in *edebug*. (defun edebug-eval-result-list () @@ -4039,9 +4063,7 @@ (setq mode-name "Edebug-Eval") (use-local-map edebug-eval-mode-map)) - -;; Interface with standard debugger. -;; ======================================== +;;; Interface with standard debugger. ;; (setq debugger 'edebug) ; to use the edebug debugger ;; (setq debugger 'debug) ; use the standard debugger @@ -4120,8 +4142,7 @@ ))))) -;; Trace display -;; =============================== +;;; Trace display (defun edebug-trace-display (buf-name fmt &rest args) "In buffer BUF-NAME, display FMT and ARGS at the end and make it visible. @@ -4131,7 +4152,8 @@ ;; (edebug-trace-display "*trace-point*" ;; "saving: point = %s window-start = %s" ;; (point) (window-start)) - (let* ((selected-window (selected-window)) + (let* ((oldbuf (current-buffer)) + (selected-window (selected-window)) (buffer (get-buffer-create buf-name)) buf-window) ;; (message "before pop-to-buffer") (sit-for 1) @@ -4147,7 +4169,8 @@ ;; (set-window-point buf-window (point)) ;; (edebug-sit-for 0) (bury-buffer buffer) - (select-window selected-window)) + (select-window selected-window) + (set-buffer oldbuf)) buf-name) @@ -4156,8 +4179,7 @@ (apply 'edebug-trace-display edebug-trace-buffer fmt args)) -;; Frequency count and coverage -;; ============================== +;;; Frequency count and coverage (defun edebug-display-freq-count () "Display the frequency count data for each line of the current @@ -4240,8 +4262,7 @@ (undo))) -;; Menus -;;========= +;;; Menus (defun edebug-toggle (variable) (set variable (not (eval variable))) @@ -4308,12 +4329,12 @@ "XEmacs style menus for Edebug.") -;; Emacs version specific code -;;============================= -;; The default for all above is Emacs 18, because it is easier to compile -;; Emacs 18 code in Emacs 19 than vice versa. This default will -;; change once most people are using Emacs 19 or derivatives. - +;;; Emacs version specific code + +;;; The default for all above is Emacs 18, because it is easier to compile +;;; Emacs 18 code in Emacs 19 than vice versa. This default will +;;; change once most people are using Emacs 19 or derivatives. + ;; Epoch specific code is in a separate file: edebug-epoch.el. ;; The byte-compiler will complain about changes in number of arguments @@ -4375,7 +4396,7 @@ (edebug-safe-prin1-to-string (car values))))) (easy-menu-define edebug-menu edebug-mode-map "Edebug menus" edebug-mode-menus) - (if (eq (console-type) 'x) + (if (eq (console-type) 'x) ; XEmacs (x-popup-menu nil (lookup-key edebug-mode-map [menu-bar Edebug]))) ) @@ -4419,8 +4440,8 @@ (edebug-emacs-version-specific) -;; Byte-compiler -;; ==================== +;;; Byte-compiler + ;; Extension for bytecomp to resolve undefined function references. ;; Requires new byte compiler. @@ -4490,7 +4511,7 @@ popup-menu ;; CL cl-macroexpand-all - ;; And believe it or not, the byte compiler doesnt know about: + ;; And believe it or not, the byte compiler doesn't know about: byte-compile-resolve-functions )) @@ -4504,8 +4525,7 @@ ))) -;; Autoloading of Edebug accessories -;;=================================== +;;; Autoloading of Edebug accessories (if (featurep 'cl) (add-hook 'edebug-setup-hook @@ -4523,11 +4543,10 @@ (function (lambda () (require 'edebug-cl-read))))) -;; Finalize Loading -;;=================== - -;; Finally, hook edebug into the rest of Emacs. -;; There are probably some other things that could go here. +;;; Finalize Loading + +;;; Finally, hook edebug into the rest of Emacs. +;;; There are probably some other things that could go here. ;; Install edebug read and eval functions. (edebug-install-read-eval-functions) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/ediff/ediff-init.el --- a/lisp/ediff/ediff-init.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/ediff/ediff-init.el Mon Aug 13 09:15:11 2007 +0200 @@ -1156,11 +1156,13 @@ ;;; In-line functions -(defsubst ediff-file-remote-p (file-name) - (require 'ange-ftp) - (car (if ediff-xemacs-p - (ange-ftp-ftp-path file-name) - (ange-ftp-ftp-name file-name)))) +(or (fboundp 'ediff-file-remote-p) ; user supplied his own function + (defun ediff-file-remote-p (file-name) + (car (cond ((featurep 'efs) (efs-ftp-path file-name)) + ((fboundp 'file-remote-p) (efs-ftp-path file-name)) + (t (require 'ange-ftp) + ;; Can happen only in Emacs, since XEmacs has file-remote-p + (ange-ftp-ftp-name file-name)))))) (defsubst ediff-frame-unsplittable-p (frame) @@ -1601,10 +1603,10 @@ (apply 'message string args))) (defun ediff-file-attributes (filename attr-number) - (let ((handler (find-file-name-handler filename 'find-file-noselect))) - (if (and handler (string-match "ange-ftp" (format "%S" handler))) - -1 - (nth attr-number (file-attributes filename))))) + (if (ediff-file-remote-p filename) + -1 + (nth attr-number (file-attributes filename)))) + (defsubst ediff-file-size (filename) (ediff-file-attributes filename 7)) (defsubst ediff-file-modtime (filename) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/Makefile --- a/lisp/efs/Makefile Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/Makefile Mon Aug 13 09:15:11 2007 +0200 @@ -2,7 +2,7 @@ # # File: Makefile # Release: $efs release: 1.15 $ -# Version: $Revision: 1.2 $ +# Version: $Revision: 1.3 $ # RCS: # Description: Makefile for byte-compiling efs and dired. # Author: Andy Norman, HPLabs, Bristol, UK. @@ -83,7 +83,7 @@ COREOBJS = efs-defun.elc efs-ovwrt.elc efs-fnh.elc efs-cu.elc efs-netrc.elc \ efs.elc efs-dired.elc efs-report.elc \ - efs-cp-p.elc auto-save.elc + efs-cp-p.elc DOBJS = default-dir.elc dired.elc dired-mob.elc dired-oas.elc \ dired-rgxp.elc dired-shell.elc dired-vir.elc dired-xy.elc \ dired-grep.elc dired-uu.elc \ @@ -96,11 +96,14 @@ efs-tops-20.elc efs-dl.elc efs-guardian.elc efs-coke.elc \ efs-vms.elc efs-vos.elc efs-plan9.elc efs-ms-unix.elc VMOBJS = efs-vm.elc -GEOBJS = dired-fsf.elc dired-mule.elc efs-dired-mule.elc -XEOBJS = dired-xemacs.elc +GEOBJS = dired-fsf.elc dired-mule.elc efs-dired-mule.elc \ + passwd.elc diff.elc auto-save.elc +XEOBJS = dired-faces.elc dired-xemacs.elc OBJS = $(DOBJS) $(EFSOBJS) $(VMOBJS) $(GEOBJS) $(XEOBJS) \ + efs-18.elc efs-19.elc efs-19.23.elc \ efs-l19.11.elc efs-x19.15.elc \ - emacs-19.elc fn-handler.elc + emacs-19.elc fn-handler.elc \ + reporter.elc # fixup.el is never byte-compiled. It would do no harm, but be a waste # of time. @@ -142,7 +145,9 @@ dired-sex.elc: dired-sex.el dired-mule.elc: dired-mule.el dired-xemacs.elc: dired-xemacs.el +dired-faces.elc: dired-faces.el default-dir.elc: default-dir.el +diff.elc: diff.el # efs core files efs.elc: efs.el efs-defun.elc: efs-defun.el @@ -180,6 +185,9 @@ efs-plan9.elc: efs-plan9.el efs-ms-unix.elc: efs-ms-unix.el # efs support for different Emacs versions +efs-18.elc: efs-18.el +efs-19.elc: efs-19.el +efs-19.23.elc: efs-19.23.el efs-l19.11.elc: efs-l19.11.el efs-x19.15.elc: efs-x19.15.el # efs vm support @@ -187,8 +195,6 @@ # backward compatibility files fn-handler.elc: fn-handler.el emacs-19.elc: emacs-19.el -# auto-save package -auto-save.elc: auto-save.el # Core targets core: $(COREOBJS) @@ -225,6 +231,10 @@ all: $(OBJS) # Making for a specific emacs version +18: emacs-19.elc fn-handler.elc efs dired efs-18.elc dired-mule.elc \ + efs-dired-mule.elc reporter.elc passwd.elc diff.elc auto-save.elc +19: fn-handler.elc efs dired efs-19.elc $(GEOBJS) +19.23: efs dired efs-19.23.elc $(GEOBJS) l19.11: efs dired efs-l19.11.elc $(XEOBJS) x19.15: efs dired efs-x19.15.elc $(XEOBJS) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/auto-save.el --- a/lisp/efs/auto-save.el Mon Aug 13 09:13:58 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,513 +0,0 @@ -;; -*- Emacs-Lisp -*- -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; File: auto-save.el -;; Version: $Revision: 1.2 $ -;; RCS: -;; Description: Safer autosaving with support for efs and /tmp. -;; This version of auto-save is designed to work with efs, -;; instead of ange-ftp. -;; Author: Sebastian Kremer , -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defconst auto-save-version (substring "$Revision: 1.2 $" 11 -2) - "Version number of auto-save.") - -;;; Copyright (C) 1992 by Sebastian Kremer - -;;; 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 1, 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, write to the Free Software -;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -;;;; OVERVIEW ========================================================== - -;;; Combines autosaving for efs (to a local or remote directory) -;;; with the ability to do autosaves to a fixed directory on a local -;;; disk, in case NFS is slow. The auto-save file used for -;;; /usr/foo/bar/baz.txt -;;; will be -;;; AUTOSAVE/#\!usr\!foo\!bar\!baz.txt# -;;; assuming AUTOSAVE is the non-nil value of the variable -;;; `auto-save-directory'. - -;;; Takes care that autosave files for non-file-buffers (e.g. *mail*) -;;; from two simultaneous Emacses don't collide. - -;;; Autosaves even if the current directory is not writable. - -;;; Can limit autosave names to 14 characters using a hash function, -;;; see `auto-save-hash-p'. - -;;; See `auto-save-directory' and `make-auto-save-file-name' and -;;; references therein for complete documentation. - -;;; Meta-x recover-all-files will effectively do recover-file on all -;;; files whose autosave file is newer (one of the benefits of having -;;; all autosave files in the same place). - -;;;; INSTALLATION ====================================================== - -;;; Put this file into your load-path and the following in your ~/.emacs: - -;;; If you want to autosave in the fixed directory /tmp/USER-autosave/ -;;; (setq auto-save-directory -;;; (concat "/tmp/" (user-login-name) "-autosave/")) - -;;; If you don't want to save in /tmp (e.g., because it is swap -;;; mounted) but rather in ~/autosave/ -;;; (setq auto-save-directory (expand-file-name "~/autosave/")) - -;;; If you want to save each file in its own directory (the default) -;;; (setq auto-save-directory nil) -;;; You still can take advantage of autosaving efs remote files -;;; in a fixed local directory, `auto-save-directory-fallback' will -;;; be used. - -;;; If you want to use 14 character hashed autosave filenames -;;; (setq auto-save-hash-p t) - -;;; Finally, put this line after the others in your ~/.emacs: -;;; (require 'auto-save) - - -;;;; ACKNOWLEDGEMENT =================================================== - -;;; This code is loosely derived from autosave-in-tmp.el by Jamie -;;; Zawinski (the version I had was last modified 22 -;;; dec 90 jwz) and code submitted to ange-ftp-lovers on Sun, 5 Apr -;;; 92 23:20:47 EDT by drw@BOURBAKI.MIT.EDU (Dale R. Worley). -;;; auto-save.el tries to cover the functionality of those two -;;; packages. - -;;; Valuable comments and help from Dale Worley, Andy Norman, Jamie -;;; Zawinski and Sandy Rutherford are gratefully acknowledged. - -;;;; PROVISION ======================================================== - -(provide 'auto-save) - -;;;; CUSTOMIZATION ===================================================== - -(defvar auto-save-directory nil - - ;;; Don't make this user-variable-p, it should be set in .emacs and - ;;; left at that. In particular, it should remain constant across - ;;; several Emacs session to make recover-all-files work. - - "If non-nil, fixed directory for autosaving: all autosave files go -there. If this directory does not yet exist at load time, it is -created and its mode is set to 0700 so that nobody else can read your -autosave files. - -If nil, each autosave files goes into the same directory as its -corresponding visited file. - -A non-nil `auto-save-directory' could be on a local disk such as in -/tmp, then auto-saves will always be fast, even if NFS or the -automounter is slow. In the usual case of /tmp being locally mounted, -note that if you run emacs on two different machines, they will not -see each other's auto-save files. - -The value \(expand-file-name \"~/autosave/\"\) might be better if /tmp -is mounted from swap (possible in SunOS, type `df /tmp' to find out) -and thus vanishes after a reboot, or if your system is particularly -thorough when cleaning up /tmp, clearing even non-empty subdirectories. - -It should never be an efs remote filename because that would -defeat `efs-auto-save-remotely'. - -Unless you set `auto-save-hash-p', you shouldn't set this to a -directory in a filesystem that does not support long filenames, since -a file named - - /home/sk/lib/emacs/lisp/auto-save.el - -will have a longish filename like - - AUTO-SAVE-DIRECTORY/#\\!home\\!sk\\!lib\\!emacs\\!lisp\\!auto-save.el# - -as auto save file. - -See also variables `auto-save-directory-fallback', -`efs-auto-save' and `efs-auto-save-remotely'.") - -(defvar auto-save-hash-p nil - "If non-nil, hashed autosave names of length 14 are used. -This is to avoid autosave filenames longer than 14 characters. -The directory used is `auto-save-hash-directory' regardless of -`auto-save-directory'. -Hashing defeats `recover-all-files', you have to recover files -individually by doing `recover-file'.") - -;;; This defvar is in efs.el now, but doesn't hurt to give it here as -;;; well so that loading first auto-save.el does not abort. -(or (boundp 'efs-auto-save) (defvar efs-auto-save 0)) -(or (boundp 'efs-auto-save-remotely) (defvar efs-auto-save-remotely nil)) - -(defvar auto-save-offer-delete nil - "*If non-nil, `recover-all-files' offers to delete autosave files -that are out of date or were dismissed for recovering. -Special value 'always deletes those files silently.") - -;;;; end of customization - - -;;; Preparations to be done at load time - -(defvar auto-save-directory-fallback (expand-file-name "~/autosave/") - ;; not user-variable-p, see above - "Directory used for local autosaving of remote files if -both `auto-save-directory' and `efs-auto-save-remotely' are nil. -Also used if a working directory to be used for autosaving is not writable. -This *must* always be the name of directory that exists or can be -created by you, never nil.") - -(defvar auto-save-hash-directory - (expand-file-name "hash/" (or auto-save-directory - auto-save-directory-fallback)) - "If non-nil, directory used for hashed autosave filenames.") - -(defun auto-save-check-directory (var) - (let ((dir (symbol-value var))) - (if (null dir) - nil - ;; Expand and store back into the variable - (set var (setq dir (expand-file-name dir))) - ;; Make sure directory exists - (if (file-directory-p dir) - nil - ;; Else we create and chmod 0700 the directory - (setq dir (directory-file-name dir)) ; some systems need this - (if (fboundp 'make-directory) ; V19 or tree dired - (make-directory dir) - (call-process "mkdir" nil nil nil dir)) - (set-file-modes dir (* 7 8 8)))))) - -(mapcar (function auto-save-check-directory) - '(auto-save-directory auto-save-directory-fallback)) - -(and auto-save-hash-p - (auto-save-check-directory 'auto-save-hash-directory)) - - -;;; Computing an autosave name for a file and vice versa - -(defun make-auto-save-file-name ();; redefines files.el - ;; auto-save-file-name-p need not be redefined. - - "Return file name to use for auto-saves of current buffer. -Does not consider `auto-save-visited-file-name'; that is checked -before calling this function. - -Offers to autosave all files in the same `auto-save-directory'. All -autosave files can then be recovered at once with function -`recover-all-files'. - -Takes care to make autosave files for files accessed through efs -be local files if variable `efs-auto-save-remotely' is nil. - -Takes care of slashes in buffer names to prevent autosave errors. - -Takes care that autosave files for buffers not visiting any file (such -as `*mail*') from two simultaneous Emacses don't collide by prepending -the Emacs pid. - -Uses 14 character autosave names if `auto-save-hash-p' is true. - -Autosaves even if the current directory is not writable, using -directory `auto-save-directory-fallback'. - -You can redefine this for customization (he he :-). -See also function `auto-save-file-name-p'." - - ;; We have to be very careful about not signalling an error in this - ;; function since files.el does not provide for this (e.g. find-file - ;; would fail for each new file). - - (condition-case error-data - (let* ((file-name (or (and (boundp 'buffer-file-truename) - buffer-file-truename - ;; Make sure that the file name is expanded. - (expand-file-name buffer-file-name)) - (and buffer-file-name - (expand-file-name buffer-file-name)))) - ;; So autosavename looks like #%...#, roughly as with the - ;; old make-auto-save-file-name function. The - ;; make-temp-name inserts the pid of this Emacs: this - ;; avoids autosaving from two Emacses into the same file. - ;; It cannot be recovered automatically then because in - ;; the next Emacs session (the one after the crash) the - ;; pid will be different, but file-less buffers like - ;; *mail* must be recovered manually anyway. - (name-prefix (if file-name nil (make-temp-name "#%"))) - (save-name (or file-name - ;; Prevent autosave errors. Buffername - ;; (to become non-dir part of filename) will - ;; be unslashified twice. Don't care. - (auto-save-unslashify-name (buffer-name)))) - (remote-p (and (stringp file-name) - (fboundp 'efs-ftp-path) - (efs-ftp-path file-name)))) - ;; Return the appropriate auto save file name: - (expand-file-name;; a buffername needs this, a filename not - (if remote-p - (if efs-auto-save-remotely - (auto-save-name-in-same-directory save-name) - ;; We have to use the `fixed-directory' now since the - ;; `same-directory' would be remote. - ;; It will use the fallback if needed. - (auto-save-name-in-fixed-directory save-name)) - ;; Else it is a local file (or a buffer without a file, hence - ;; the name-prefix). - ;; Hashed files always go into the special hash dir, never - ;; in the same directory, to make recognizing reliable. - (if (or auto-save-directory auto-save-hash-p) - (auto-save-name-in-fixed-directory save-name name-prefix) - (auto-save-name-in-same-directory save-name name-prefix))))) - - ;; If any error occurs in the above code, return what the old - ;; version of this function would have done. It is not ok to - ;; return nil, e.g., when after-find-file tests - ;; file-newer-than-file-p, nil would bomb. - - (error (progn - (message "make-auto-save-file-name %s" error-data) - (sit-for 2) - (if buffer-file-name - (concat (file-name-directory buffer-file-name) - "#" - (file-name-nondirectory buffer-file-name) - "#") - (expand-file-name (concat "#%" (buffer-name) "#"))))))) - -(defun auto-save-original-name (savename) - "Reverse of `make-auto-save-file-name'. -Returns nil if SAVENAME was not associated with a file (e.g., it came -from an autosaved `*mail*' buffer) or does not appear to be an -autosave file at all. -Hashed files are not understood, see `auto-save-hash-p'." - (let ((basename (file-name-nondirectory savename)) - (savedir (file-name-directory savename))) - (cond ((or (not (auto-save-file-name-p basename)) - (string-match "^#%" basename)) - nil) - ;; now we know it looks like #...# thus substring is safe to use - ((or (equal savedir auto-save-directory) ; 2nd arg may be nil - (equal savedir auto-save-directory-fallback)) - ;; it is of the `-fixed-directory' type - (auto-save-slashify-name (substring basename 1 -1))) - (t - ;; else it is of `-same-directory' type - (concat savedir (substring basename 1 -1)))))) - -(defun auto-save-name-in-fixed-directory (filename &optional prefix) - ;; Unslashify and enclose the whole FILENAME in `#' to make an auto - ;; save file in the auto-save-directory, or if that is nil, in - ;; auto-save-directory-fallback (which must be the name of an - ;; existing directory). If the results would be too long for 14 - ;; character filenames, and `auto-save-hash-p' is set, hash FILENAME - ;; into a shorter name. - ;; Optional PREFIX is string to use instead of "#" to prefix name. - (let ((base-name (concat (or prefix "#") - (auto-save-unslashify-name filename) - "#"))) - (if (and auto-save-hash-p - auto-save-hash-directory - (> (length base-name) 14)) - (expand-file-name (auto-save-cyclic-hash-14 filename) - auto-save-hash-directory) - (expand-file-name base-name - (or auto-save-directory - auto-save-directory-fallback))))) - -(defun auto-save-name-in-same-directory (filename &optional prefix) - ;; Enclose the non-directory part of FILENAME in `#' to make an auto - ;; save file in the same directory as FILENAME. But if this - ;; directory is not writable, use auto-save-directory-fallback. - ;; FILENAME is assumed to be in non-directory form (no trailing slash). - ;; It may be a name without a directory part (pesumably it really - ;; comes from a buffer name then), the fallback is used then. - ;; Optional PREFIX is string to use instead of "#" to prefix name. - (let ((directory (file-name-directory filename))) - (or (null directory) - (file-writable-p directory) - (setq directory auto-save-directory-fallback)) - (concat directory ; (concat nil) is "" - (or prefix "#") - (file-name-nondirectory filename) - "#"))) - -(defun auto-save-unslashify-name (s) - ;; "Quote any slashes in string S by replacing them with the two - ;;characters `\\!'. - ;;Also, replace any backslash by double backslash, to make it one-to-one." - (let ((limit 0)) - (while (string-match "[/\\]" s limit) - (setq s (concat (substring s 0 (match-beginning 0)) - (if (string= (substring s - (match-beginning 0) - (match-end 0)) - "/") - "\\!" - "\\\\") - (substring s (match-end 0)))) - (setq limit (1+ (match-end 0))))) - s) - -(defun auto-save-slashify-name (s) - ;;"Reverse of `auto-save-unslashify-name'." - (let (pos) - (while (setq pos (string-match "\\\\[\\!]" s pos)) - (setq s (concat (substring s 0 pos) - (if (eq ?! (aref s (1+ pos))) "/" "\\") - (substring s (+ pos 2))) - pos (1+ pos)))) - s) - - -;;; Hashing for autosave names - -;;; Hashing function contributed by Andy Norman -;;; based upon C code from pot@fly.cnuce.cnr.IT (Francesco Potorti`). - -(defun auto-save-cyclic-hash-14 (s) - ;; "Hash string S into a string of length 14. - ;; A 7-bytes cyclic code for burst correction is calculated on a - ;; byte-by-byte basis. The polynomial used is D^7 + D^6 + D^3 +1. - ;; The resulting string consists of hexadecimal digits [0-9a-f]. - ;; In particular, it contains no slash, so it can be used as autosave name." - (let ((crc (make-string 7 0)) - result) - (mapcar - (function - (lambda (new) - (setq new (+ new (aref crc 6))) - (aset crc 6 (+ (aref crc 5) new)) - (aset crc 5 (aref crc 4)) - (aset crc 4 (aref crc 3)) - (aset crc 3 (+ (aref crc 2) new)) - (aset crc 2 (aref crc 1)) - (aset crc 1 (aref crc 0)) - (aset crc 0 new))) - s) - (setq result (format "%02x%02x%02x%02x%02x%02x%02x" - (aref crc 0) - (aref crc 1) - (aref crc 2) - (aref crc 3) - (aref crc 4) - (aref crc 5) - (aref crc 6))) - result)) - -;; This leaves two characters that could be used to wrap it in `#' or -;; make two filenames from it: one for autosaving, and another for a -;; file containing the name of the autosaved filed, to make hashing -;; reversible. -(defun auto-save-cyclic-hash-12 (s) - "Outputs the 12-characters ascii hex representation of a 6-bytes -cyclic code for burst correction calculated on STRING on a -byte-by-byte basis. The used polynomial is D^6 + D^5 + D^4 + D^3 +1." - (let ((crc (make-string 6 0))) - (mapcar - (function - (lambda (new) - (setq new (+ new (aref crc 5))) - (aset crc 5 (+ (aref crc 4) new)) - (aset crc 4 (+ (aref crc 3) new)) - (aset crc 3 (+ (aref crc 2) new)) - (aset crc 2 (aref crc 1)) - (aset crc 1 (aref crc 0)) - (aset crc 0 new))) - s) - (format "%02x%02x%02x%02x%02x%02x" - (aref crc 0) - (aref crc 1) - (aref crc 2) - (aref crc 3) - (aref crc 4) - (aref crc 5)))) - - - -;;; Recovering files - -(defun recover-all-files (&optional silent) - "Do recover-file for all autosave files which are current. -Only works if you have a non-nil `auto-save-directory'. - -Optional prefix argument SILENT means to be silent about non-current -autosave files. This is useful if invoked automatically at Emacs -startup. - -If `auto-save-offer-delete' is t, this function will offer to delete -old or rejected autosave files. - -Hashed files (see `auto-save-hash-p') are not understood, use -`recover-file' to recover them individually." - (interactive "P") - (let ((savefiles (directory-files auto-save-directory t "^#")) - afile ; the auto save file - file ; its original file - (total 0) ; # of files offered to recover - (count 0)) ; # of files actually recovered - (or (equal auto-save-directory auto-save-directory-fallback) - (setq savefiles - (append savefiles - (directory-files auto-save-directory-fallback t "^#")))) - (while savefiles - (setq afile (car savefiles) - file (auto-save-original-name afile) - savefiles (cdr savefiles)) - (cond ((and file (not (file-newer-than-file-p afile file))) - (message "autosave file \"%s\" is not current." afile) - (sit-for 2)) - (t - (setq total (1+ total)) - (with-output-to-temp-buffer "*Directory*" - (call-process "ls" nil standard-output nil - "-l" afile (if file (list file)))) - (if (yes-or-no-p (format "Recover %s from auto save file? " - file)) - (let* ((obuf (current-buffer)) - (buf (set-buffer - (if file - (find-file-noselect file t) - (generate-new-buffer "*recovered*")))) - (buffer-read-only nil)) - (erase-buffer) - (insert-file-contents afile nil) - (condition-case () - (after-find-file nil) - (error nil)) - (setq buffer-auto-save-file-name nil) - (setq count (1+ count)) - (message "\ -Auto-save off in buffer \"%s\" till you do M-x auto-save-mode." - (buffer-name)) - (set-buffer obuf) - (sit-for 1)) - ;; If not used for recovering, offer to delete - ;; autosave file - (and auto-save-offer-delete - (or (eq 'always auto-save-offer-delete) - (yes-or-no-p - (format "Delete autosave file for `%s'? " file))) - (delete-file afile)))))) - (if (zerop total) - (or silent (message "Nothing to recover.")) - (message "%d/%d file%s recovered." count total (if (= count 1) "" "s")))) - (if (get-buffer "*Directory*") (kill-buffer "*Directory*"))) - -;;; end of auto-save.el diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/default-dir.el --- a/lisp/efs/default-dir.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/default-dir.el Mon Aug 13 09:15:11 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: default-dir.el ;; RCS: -;; Version: $Revision: 1.2 $ +;; Version: $Revision: 1.3 $ ;; Description: Defines the function default-directory, for fancy handling ;; of the initial contents in the minibuffer when reading ;; file names. @@ -222,7 +222,9 @@ (efs-overwrite-fn "default-dir" 'load-file 'default-dir-load-file) -(require 'view) +(condition-case nil + (require 'view-less) + (error (require 'view))) (defun default-dir-view-file (file) "Documented as original" diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/dired-faces.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/efs/dired-faces.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,89 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; File: dired-faces.el +;; Dired Version: $Revision: 1.1 $ +;; RCS: +;; Description: rudimentary face customization support for dired +;; Author: Mike Sperber +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(provide 'dired-faces) + +(require 'custom) + +;;; Variables + +(defgroup dired nil + "Directory editing." + :group 'emacs) + +(defcustom dired-do-highlighting t + "Set if we should use highlighting according to filetype." + :type 'boolean + :group 'dired) + +(defcustom dired-do-interactive-permissions t + "Set if we should allow interactive chmod." + :type 'boolean + :group 'dired) + +(defface dired-face-marked '((((class color)) + (:background "PaleVioletRed")) + (t (:underline t))) + "Face used for marked files." + :group 'dired) + +(defface dired-face-flagged '((((class color)) + (:background "LightSlateGray")) + (t (:underline t))) + "Face used for flagged files." + :group 'dired) + +(defface dired-face-directory '((t (:bold t))) + "Face used for directories." + :group 'dired) + +(defface dired-face-executable '((((class color)) + (:foreground "SeaGreen")) + (t (:bold t))) + "Face used for executables." + :group 'dired) + +(defface dired-face-setuid '((((class color)) + (:foreground "Red")) + (t (:bold t))) + "Face used for setuid executables." + :group 'dired) + +(defface dired-face-boring '((((class color)) + (:foreground "Grey")) + (((class grayscale)) + (:foreground "Grey"))) + "Face used for unimportant files." + :group 'dired) + +(defface dired-face-permissions '((t (:background "grey75") + (:foreground "black"))) + "Face used for interactive permissions." + :group 'dired) + +(defface dired-face-deleted '((((class color)) + (:foreground "yellow3")) + (t (:reverse t))) + "Face used to indicate deleted files." + :group 'dired) + +(defface dired-face-socket '((((class color)) + (:foreground "magenta")) + (t (:bold nil))) + "Face used to indicate sockets." + :group 'dired) + +(defface dired-face-symlink '((((class color)) + (:foreground "cyan")) + (t (:bold t))) + "Face used to indicate symbolic links." + :group 'dired) + +;;; end of dired-faces.el diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/dired-xemacs.el --- a/lisp/efs/dired-xemacs.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/dired-xemacs.el Mon Aug 13 09:15:11 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-xemacs.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: $Revision: 1.2 $ ;; RCS: ;; Description: dired functions for XEmacs ;; Author: Mike Sperber @@ -10,10 +10,12 @@ (provide 'dired-xemacs) (require 'dired) +(require 'dired-faces) (require 'backquote) -;;; Variables + +;;; Variables not meant for user editing ;; kludge (defun dired-demarkify-regexp (re) @@ -24,12 +26,6 @@ (length re))) re)) -(defvar dired-do-highlighting t - "Set if we should use highlighting according to filetype.") - -(defvar dired-do-interactive-permissions t - "Set if we should allow interactive chmod.") - (defvar dired-re-raw-dir (dired-demarkify-regexp dired-re-dir)) (defvar dired-re-raw-sym (dired-demarkify-regexp dired-re-sym)) (defvar dired-re-raw-exe (dired-demarkify-regexp dired-re-exe)) @@ -46,90 +42,20 @@ (defvar dired-re-raw-setgid (concat "^" dired-re-inode-size - "-[-r][-w][-x][-r][-w][Ss][-r][-w][xst]") + "-[-r][-w][-x][-r][-w][sS][-r][-w][xst]") "setgid plain file (even if not executable)") (defvar dired-re-pre-permissions "^.? ?[0-9 ]*[-d]" "Regexp matching the preamble to file permissions part of a dired line. This shouldn't match socket or symbolic link lines (which aren't editable).") -(defvar dired-re-permissions "[-r][-w][-Ssx][-r][-w][-sx][-r][-w][-xst]" +(defvar dired-re-permissions "[-r][-w][-Ssx][-r][-w][-Ssx][-r][-w][-xst]" "Regexp matching the file permissions part of a dired line.") ;;; Setup (setq dired-modeline-tracking-cmds '(mouse-track)) -;;; Make needed faces if the user hasn't already done so. -;;; Respect X resources (`make-face' uses them when they exist). - -(let ((change-it - (function (lambda (face) - (or (if (fboundp 'facep) - (facep face) - (memq face (face-list))) - (make-face face)) - (not (face-differs-from-default-p face)))))) - - (if (funcall change-it 'dired-face-marked) - (progn - (set-face-background 'dired-face-marked "PaleVioletRed" - 'global '(color) 'append) - (set-face-underline-p 'dired-face-marked t - 'global '(mono) 'append) - (set-face-underline-p 'dired-face-marked t - 'global '(grayscale) 'append))) - (if (funcall change-it 'dired-face-deleted) - (progn - (set-face-background 'dired-face-deleted "LightSlateGray" - 'global '(color) 'append) - (set-face-underline-p 'dired-face-deleted t - 'global '(mono) 'append) - (set-face-underline-p 'dired-face-deleted t - 'global '(grayscale) 'append))) - (if (funcall change-it 'dired-face-directory) - (make-face-bold 'dired-face-directory)) - (if (funcall change-it 'dired-face-executable) - (progn - (set-face-foreground 'dired-face-executable "SeaGreen" - 'global '(color) 'append) - (make-face-bold 'dired-face-executable))) - (if (funcall change-it 'dired-face-setuid) - (progn - (set-face-foreground 'dired-face-setuid "Red" - 'global '(color) 'append) - (make-face-bold 'dired-face-setuid))) - (if (funcall change-it 'dired-face-socket) - (progn - (set-face-foreground 'dired-face-socket "Gold" - 'global '(color) 'append) - (make-face-italic 'dired-face-socket))) - (if (funcall change-it 'dired-face-symlink) - (progn - (set-face-foreground 'dired-face-symlink "MediumBlue" - 'global '(color) 'append) - (make-face-bold 'dired-face-symlink))) - - (if (funcall change-it 'dired-face-boring) - (progn - (set-face-foreground 'dired-face-boring "Grey" - 'global '(color) 'append) - (set-face-background-pixmap - 'dired-face-boring - [xbm :data (32 2 "\125\125\125\125\252\252\252\252")] - 'global '(mono) 'append) - (set-face-background-pixmap - 'dired-face-boring - [xbm :data (32 2 "\125\125\125\125\252\252\252\252")] - 'global '(grayscale) 'append))) - (if (funcall change-it 'dired-face-permissions) - (progn - (set-face-foreground 'dired-face-permissions "MediumOrchid" - 'global '(color) 'append) - (set-face-underline-p 'dired-face-deleted t - 'global '(mono) 'append) - (set-face-underline-p 'dired-face-deleted t - 'global '(grayscale) 'append)))) ;;; Menus @@ -569,7 +495,7 @@ ((char-equal dired-default-marker mark) 'dired-face-marked) ((char-equal dired-del-marker mark) - 'dired-face-deleted) + 'dired-face-flagged) (t 'default)))) (set-extent-face extent @@ -658,7 +584,7 @@ ;; This is probably overdoing it. ;; Someone give me lexical scoping here ... -(defun dired-setup-chmod-keymap (domain id keys) +(defun dired-setup-chmod-keymap (domain id keys &optional toggle-keys) (let* ((names (mapcar (function @@ -692,7 +618,7 @@ (interactive) (cond ((looking-at "-") (dired-do-interactive-chmod ,(concat (list domain ?+ (car keys))))) - ,@(let ((l keys) + ,@(let ((l (or toggle-keys keys)) (c '())) (while l (setq c @@ -704,7 +630,9 @@ (concat (list domain ?+ (cadr l)))))) c)) (setq l (cdr l))) - (reverse c))))) + (reverse c)) + (t (dired-do-interactive-chmod + ,(concat (list domain ?+ (car keys)))))))) (eval `(defun ,mouse-toggle-name (event) @@ -762,13 +690,13 @@ (setq dired-u-r-keymap (dired-setup-chmod-keymap ?u ?r '(?r)) dired-u-w-keymap (dired-setup-chmod-keymap ?u ?w '(?w)) - dired-u-x-keymap (dired-setup-chmod-keymap ?u ?x '(?s ?S ?x)) + dired-u-x-keymap (dired-setup-chmod-keymap ?u ?x '(?x ?s ?S) '(?x)) dired-g-r-keymap (dired-setup-chmod-keymap ?g ?r '(?r)) dired-g-w-keymap (dired-setup-chmod-keymap ?g ?w '(?w)) - dired-g-x-keymap (dired-setup-chmod-keymap ?g ?x '(?s ?x)) + dired-g-x-keymap (dired-setup-chmod-keymap ?g ?x '(?x ?s ?S) '(?x)) dired-o-r-keymap (dired-setup-chmod-keymap ?o ?r '(?r)) dired-o-w-keymap (dired-setup-chmod-keymap ?o ?w '(?w)) - dired-o-x-keymap (dired-setup-chmod-keymap ?o ?x '(?s ?t ?x)))) + dired-o-x-keymap (dired-setup-chmod-keymap ?o ?x '(?x ?s ?t) '(?x)))) (defun dired-make-permissions-interactive (beg) (save-excursion diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/dired.el --- a/lisp/efs/dired.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/dired.el Mon Aug 13 09:15:11 2007 +0200 @@ -5,7 +5,7 @@ ;; ;; File: dired.el ;; RCS: -;; Dired Version: $Revision: 1.2 $ +;; Dired Version: $Revision: 1.3 $ ;; Description: The DIRectory EDitor is for manipulating, and running ;; commands on files in a directory. ;; Authors: FSF, @@ -36,7 +36,7 @@ ;;; Dired Version -(defconst dired-version (substring "$Revision: 1.2 $" 11 -2) +(defconst dired-version (substring "$Revision: 1.3 $" 11 -2) "The revision number of Tree Dired (as a string). Don't forget to mention this when reporting bugs to: @@ -1254,8 +1254,6 @@ (define-key dired-mode-map "\M-v" 'dired-scroll-down) (define-key dired-mode-map "\M-<" 'dired-beginning-of-buffer) (define-key dired-mode-map "\M->" 'dired-end-of-buffer) - ;; This is silly, I'm changing it. -sb - ;; (define-key dired-mode-map "\C-m" 'dired-goto-file) (define-key dired-mode-map "\C-m" 'dired-advertised-find-file) ;; motion by subdirectories (define-key dired-mode-map "^" 'dired-up-directory) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/efs-cu.el --- a/lisp/efs/efs-cu.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/efs-cu.el Mon Aug 13 09:15:11 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-cu.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: $Revision: 1.3 $ ;; RCS: ;; Description: Common utilities needed by efs files. ;; Author: Sandy Rutherford @@ -55,7 +55,7 @@ (defconst efs-cu-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "$Revision: 1.3 $" 11 -2))) (defconst efs-case-insensitive-host-types '(vms cms mts ti-twenex ti-explorer dos mvs tops-20 mpe ka9q dos-distinct diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/efs-dired.el --- a/lisp/efs/efs-dired.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/efs-dired.el Mon Aug 13 09:15:11 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-dired.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: $Revision: 1.3 $ ;; RCS: ;; Description: Extends much of Dired to work under efs. ;; Authors: Sebastian Kremer , @@ -25,7 +25,7 @@ (defconst efs-dired-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "$Revision: 1.3 $" 11 -2))) ;;;; ---------------------------------------------------------------- ;;;; User Configuration Variables diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/efs-kerberos.el --- a/lisp/efs/efs-kerberos.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/efs-kerberos.el Mon Aug 13 09:15:11 2007 +0200 @@ -1,9 +1,9 @@ ;; -*-Emacs-Lisp-*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; File: efs-efs-kerberos.el +;; File: efs-kerberos.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: $Revision: 1.2 $ ;; RCS: ;; Description: Support for Kerberos gateways. ;; Author: Sandy Rutherford @@ -21,7 +21,7 @@ (defconst efs-kerberos-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "$Revision: 1.2 $" 11 -2))) ;;; Internal Variables diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/efs-x19.15.el --- a/lisp/efs/efs-x19.15.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/efs-x19.15.el Mon Aug 13 09:15:11 2007 +0200 @@ -2,8 +2,8 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: efs-x19.15.el -;; Release: $efs release: 1.14 $ -;; Version: $Revision: 1.1 $ +;; Release: $efs release: 1.15 $ +;; Version: $Revision: 1.2 $ ;; RCS: ;; Description: efs support for XEmacs, versions 19.15, and later. ;; Author: Sandy Rutherford @@ -18,9 +18,9 @@ (require 'efs-ovwrt) (defconst efs-x19\.15-version - (concat (substring "$efs release: 1.14 $" 14 -2) + (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "$Revision: 1.2 $" 11 -2))) ;;; Functions requiring special defs. for these XEmacs versions. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/efs/efs.el --- a/lisp/efs/efs.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/efs/efs.el Mon Aug 13 09:15:11 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: $Revision: 1.3 $ ;; RCS: ;; Description: Transparent FTP support for the original GNU Emacs ;; from FSF and Lucid Emacs @@ -97,7 +97,8 @@ ;;; ;;; (require 'efs) ;;; -;;; in your .emacs file. +;;; in your .emacs file. Note this takes awhile, and some users have +;;; found this to be unbearably slow. Therefore ... ;;; ;;; If you would like efs to be autoloaded when you attempt to access ;;; a remote file, put @@ -905,7 +906,7 @@ ;;; efs|Andy Norman and Sandy Rutherford ;;; |ange@hplb.hpl.hp.com and sandy@ibm550.sissa.it ;;; |transparent FTP Support for GNU Emacs -;;; |$Date: 1997/02/15 22:20:36 $|$efs release: 1.15 beta $| +;;; |$Date: 1997/02/24 01:13:11 $|$efs release: 1.15 beta $| ;;; Host and listing type notation: ;;; @@ -1052,7 +1053,7 @@ (defconst efs-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "$Revision: 1.3 $" 11 -2))) (defconst efs-time-zero 1970) ; we count time from midnight, Jan 1, 1970 GMT. @@ -7438,8 +7439,6 @@ (efs-internal-file-name-extension filename))) (type (efs-xfer-type host-type filename nil nil)) (abbr (efs-relativize-filename filename)) - (temp (concat (car (efs-make-tmp-name nil host)) - (or (substring abbr (string-match "\\." abbr)) ""))) (i-f-c-size 0)) (unwind-protect diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/ChangeLog Mon Aug 13 09:15:11 2007 +0200 @@ -1,3 +1,173 @@ +Thu Feb 20 04:16:50 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.15 is released. + +Thu Feb 20 03:28:00 1997 Lars Magne Ingebrigtsen + + * gnus-xmas.el (gnus-xmas-mode-line-buffer-identification): + Respect non-standard mode line settings. + + * gnus-group.el (gnus-group-line-format): Doc fix. + + * nndoc.el (nndoc-rfc934-type-p): New function. + (nndoc-type-alist): Define RFC934 type. + +Wed Feb 19 05:18:06 1997 Hrvoje Niksic + + * gnus-group.el (gnus-group-set-mode-line): Mark the change with + two asterisks. + +Thu Feb 20 03:19:28 1997 Joev Dubach + + * gnus-topic.el (gnus-topic-prepare-topic): Show empty topics. + +Thu Feb 20 02:30:27 1997 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-process-prefix): Use + `gnus-region-active-p'. + + * gnus-score.el (gnus-hierarchial-home-score-file): Respect short + file names. + (gnus-hierarchial-home-adapt-file): Ditto. + +Wed Feb 19 00:44:41 1997 Lars Magne Ingebrigtsen + + * nnml.el (nnml-request-regenerate): Return t. + + * gnus-srvr.el (gnus-server-regenerate-server): Better messaging. + + * gnus.el: Autoload gnus-quote-arg-for-sh-or-csh. + +Tue Feb 18 23:26:28 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.14 is released. + +Tue Feb 18 21:47:18 1997 Lars Magne Ingebrigtsen + + * gnus-xmas.el (gnus-xmas-modeline-glyph): Didn't work when the + etc dir couldn't be found. + + * gnus-topic.el (gnus-topic-fold): Enter into dribble. + + * nnbabyl.el (nnbabyl-request-scan): Put things in right dir. + * nnmbox.el (nnmbox-request-scan): Ditto. + + * gnus-sum.el (gnus-offer-save-summaries): Use + `switch-to-buffer'. + + * nnkiboze.el (nnkiboze-enter-nov): Removed debug. + + * gnus-sum.el (gnus-summary-insert-pseudos): Quote when not + viewing separately. + +Sun Feb 16 23:43:19 1997 Hrvoje Niksic + + * gnus-topic.el (gnus-topic-edit-parameters): Print the topic + name. + + * gnus-group.el (gnus-group-edit-group): Print the group name. + +Sun Feb 16 18:30:27 1997 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-adaptive): Respect score adapt + settings. + + * gnus-sum.el (gnus-summary-prev-page): Search all frames for + window. + (gnus-summary-next-page): Ditto. + +Sun Feb 16 18:12:01 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.13 is released. + +Sun Feb 16 16:20:33 1997 Lars Magne Ingebrigtsen + + * gnus-nocem.el (gnus-nocem-scan-groups): Allow NULL references. + + * message.el (message-make-caesar-translation-table): New function. + (message-caesar-region): Use it. + + * messagexmas.el (message-xmas-make-caesar-translation-table): New + function. + + * gnus-art.el (gnus-article-add-buttons): Respect previous + buttons. + (gnus-button-in-region-p): New function. + (gnus-article-add-buttons): Use it. + + * nnweb.el (nnweb-max-hits): Fixed default. + +Tue Feb 11 20:25:42 1997 Hrvoje Niksic + + * gnus-srvr.el (gnus-server-regenerate-server): Typo. + +Sun Feb 16 15:24:40 1997 Lars Magne Ingebrigtsen + + * message.el: Removed `message-point-at-bol' and `eol'. + + * gnus-start.el (gnus-read-active-file): Allow FORCE argument. + (gnus-check-bogus-newsgroups): Use it. + + * gnus-srvr.el (gnus-server-copy-server): Allow copying of + unreadable servers. + +Thu Feb 13 19:44:33 1997 Steven L Baur + + * gnus-util.el (gnus-output-to-mail): Make sure `From ' lines in + saved messages are preceded by a newline. + +Wed Feb 12 05:28:32 1997 Zlatko Calusic + + * gnus-sum.el (gnus-summary-copy-article): Use TO-NEWSGROUP. + +Sat Feb 15 21:48:23 1997 Per Abrahamsen + + * nnmail.el: Organized customization options. + * gnus.el: Updated. + +Wed Feb 12 18:06:11 1997 Per Abrahamsen + + * gnus-kill.el: Reorganized customization + options. + * gnus-sum.el: Ditto. + * gnus-score.el: Ditto. + * gnus-start.el: Ditto. + * gnus.el: Ditto. + +Fri Feb 14 09:30:42 1997 Lars Magne Ingebrigtsen + + * gnus-art.el (article-strip-multiple-blank-lines): Inhibit + point-motion hooks. + (article-hide-pgp): Don't hide the leading newline. + + * gnus-group.el (gnus-group-quick-select-group): Bind + gnus-home-score-file to nil. + + * gnus-start.el (gnus-dribble-read-file): Changed prompt. + +Wed Feb 12 09:39:53 1997 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-get-new-mail): Make sure we're using directory + file names. + +Tue Feb 11 14:00:56 1997 Lars Magne Ingebrigtsen + + * message.el (message-followup): Respect Posted-To. + +Tue Feb 11 08:15:38 1997 Rich Pieri + + * nnmail.el (nnmail-pop3-movemail): New function. + +Tue Feb 11 03:44:43 1997 Karl Kleinpaste + + * gnus-art.el (gnus-emphasis-alist): Made compounds available + again. + +Mon Feb 10 08:54:09 1997 Steven L Baur + + * dgnushack.el (dgnushack-compile): XEmacs doesn't complain about + portability variables any more. + Mon Feb 10 14:19:55 1997 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.4.12 is released. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/custom-opt.el --- a/lisp/gnus/custom-opt.el Mon Aug 13 09:13:58 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -;;; custom-opt.el --- An option group. -;; -;; Copyright (C) 1996 Free Software Foundation, Inc. -;; -;; Author: Per Abrahamsen -;; Keywords: help, faces -;; Version: 1.24 -;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ - -;;; Code: - -(require 'custom) - -(defgroup options nil - "This group contains often used customization options." - :group 'emacs) - -(defvar custom-options - '((line-number-mode boolean) - (column-number-mode boolean) - (debug-on-error boolean) - (debug-on-quit boolean) - (case-fold-search boolean) - (case-replace boolean) - (transient-mark-mode boolean)) - "Alist of customization options. -The first element of each entry should be a variable name, the second -a widget type.") - -(let ((options custom-options) - option name type) - (while options - (setq option (car options) - options (cdr options) - name (nth 0 option) - type (nth 1 option)) - (put name 'custom-type type) - (custom-add-to-group 'options name 'custom-variable)) - (run-hooks 'custom-define-hook)) - -;;; The End. - -(provide 'custom-opt) - -;; custom-edit.el ends here diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/dgnushack.el --- a/lisp/gnus/dgnushack.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/dgnushack.el Mon Aug 13 09:15:11 2007 +0200 @@ -60,9 +60,6 @@ (cond ((or (string= file "custom.el") (string= file "browse-url.el")) (setq byte-compile-warnings nil)) - (xemacs - (setq byte-compile-warnings - '(free-vars unresolved callargs redefine))) (t (setq byte-compile-warnings '(free-vars unresolved callargs redefine obsolete)))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-art.el Mon Aug 13 09:15:11 2007 +0200 @@ -179,11 +179,10 @@ '(("_" "_" underline) ("/" "/" italic) ("\\*" "\\*" bold) - ;;("_/" "/_" underline-italic) - ;;("_\\*" "\\*_" underline-bold) + ("_/" "/_" underline-italic) + ("_\\*" "\\*_" underline-bold) ("\\*/" "/\\*" bold-italic) - ;;("_\\*/" "/\\*_" underline-bold-italic) - ))) + ("_\\*/" "/\\*_" underline-bold-italic)))) `(("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]\\)" 2 3 gnus-emphasis-underline) ,@(mapcar @@ -931,7 +930,8 @@ (goto-char (point-min)) ;; Hide the "header". (when (search-forward "\n-----BEGIN PGP SIGNED MESSAGE-----\n" nil t) - (gnus-article-hide-text-type (match-beginning 0) (match-end 0) 'pgp)) + (gnus-article-hide-text-type (1+ (match-beginning 0)) + (match-end 0) 'pgp)) (setq beg (point)) ;; Hide the actual signature. (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t) @@ -1010,13 +1010,16 @@ "Replace consecutive blank lines with one empty line." (interactive) (save-excursion - (let (buffer-read-only) + (let ((inhibit-point-motion-hooks t) + buffer-read-only) ;; First make all blank lines empty. (goto-char (point-min)) + (search-forward "\n\n" nil t) (while (re-search-forward "^[ \t]+$" nil t) (replace-match "" nil t)) ;; Then replace multiple empty lines with a single empty line. (goto-char (point-min)) + (search-forward "\n\n" nil t) (while (re-search-forward "\n\n\n+" nil t) (replace-match "\n\n" t t))))) @@ -2459,9 +2462,9 @@ :type 'regexp) (defcustom gnus-button-alist - `(("\\(\\b<\\(url: ?\\)?news:\\([^>\n\t ]*\\)>\\)" 1 t - gnus-button-message-id 3) - ("\\bnews:\\([^\n\t ]+\\)" 0 t gnus-button-message-id 1) + `(("<\\(url: ?\\)?news:\\([^>\n\t ]*@[^>\n\t ]*\\)>" 0 t + gnus-button-message-id 2) + ("\\bnews:\\([^>\n\t ]*@[^>\n\t ]*+\\)" 0 t gnus-button-message-id 1) ("\\(\\b<\\(url: ?\\)?news:\\(//\\)?\\([^>\n\t ]*\\)>\\)" 1 t gnus-button-fetch-group 4) ("\\bnews:\\(//\\)?\\([^>\n\t ]+\\)" 0 t gnus-button-fetch-group 2) @@ -2674,6 +2677,10 @@ (gnus-article-add-button start (1- end) 'gnus-signature-toggle end))))))) +(defun gnus-button-in-region-p (b e prop) + "Say whether PROP exists in the region." + (text-property-not-all b e prop nil)) + (defun gnus-article-add-buttons (&optional force) "Find external references in the article and make buttons of them. \"External references\" are things like Message-IDs and URLs, as @@ -2703,7 +2710,7 @@ (from (match-beginning 0))) (when (and (or (eq t (nth 1 entry)) (eval (nth 1 entry))) - (not (get-text-property (point) 'gnus-callback))) + (not (gnus-button-in-region-p from end 'gnus-callback))) ;; That optional form returned non-nil, so we add the ;; button. (gnus-article-add-button @@ -2818,14 +2825,19 @@ (defun gnus-button-fetch-group (address) "Fetch GROUP specified by ADDRESS." - (if (not (string-match "^\\([^:/]+\\)\\(:\\([^/]+\\)\\)?/\\(.*\\)$" address)) - (error "Can't parse %s" address) - (gnus-group-read-ephemeral-group - (match-string 4 address) - `(nntp ,(match-string 1 address) (nntp-address ,(match-string 1 address)) - (nntp-port-number ,(if (match-end 3) - (match-string 3 address) - "nntp")))))) + (if (not (string-match "[:/]" address)) + ;; This is just a simple group url. + (gnus-group-read-ephemeral-group address gnus-select-method) + (if (not (string-match "^\\([^:/]+\\)\\(:\\([^/]+\\)/\\)?\\(.*\\)$" + address)) + (error "Can't parse %s" address) + (gnus-group-read-ephemeral-group + (match-string 4 address) + `(nntp ,(match-string 1 address) + (nntp-address ,(match-string 1 address)) + (nntp-port-number ,(if (match-end 3) + (match-string 3 address) + "nntp"))))))) (defun gnus-split-string (string pattern) "Return a list of substrings of STRING which are separated by PATTERN." diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-group.el --- a/lisp/gnus/gnus-group.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-group.el Mon Aug 13 09:15:11 2007 +0200 @@ -155,7 +155,7 @@ %l Whether there are GroupLens predictions for this group (string) %n Select from where (string) %z A string that look like `<%s:%n>' if a foreign select method is used -?d The date the group was last entered. +%d The date the group was last entered. %u User defined specifier. The next character in the format string should be a letter. Gnus will call the function gnus-user-format-function-X, where X is the letter following %u. The function will be passed the @@ -1208,7 +1208,7 @@ (mode-string (eval gformat))) ;; Say whether the dribble buffer has been modified. (setq mode-line-modified - (if modified "---*- " "----- ")) + (if modified "--**- " "----- ")) ;; If the line is too long, we chop it off. (when (> (length mode-string) max-len) (setq mode-string (substring mode-string 0 (- max-len 4)))) @@ -1413,10 +1413,7 @@ (setq n (1- n)) (gnus-group-next-group way))) (nreverse groups))) - ((and (boundp 'transient-mark-mode) - transient-mark-mode - (boundp 'mark-active) - mark-active) + ((gnus-region-active-p) ;; Work on the region between point and mark. (let ((max (max (point) (mark))) groups) @@ -1501,6 +1498,7 @@ (require 'gnus-score) (let (gnus-visual gnus-score-find-score-files-function + gnus-home-score-file gnus-apply-kill-hook gnus-summary-expunge-below) (gnus-group-read-group all t))) @@ -1882,11 +1880,12 @@ (t info)) ;; The proper documentation. (format - "Editing the %s." + "Editing the %s for `%s'." (cond ((eq part 'method) "select method") ((eq part 'params) "group parameters") - (t "group info"))) + (t "group info")) + group) `(lambda (form) (gnus-group-edit-group-done ',part ,group form))))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-kill.el --- a/lisp/gnus/gnus-kill.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-kill.el Mon Aug 13 09:15:11 2007 +0200 @@ -32,22 +32,23 @@ (defcustom gnus-kill-file-mode-hook nil "Hook for Gnus kill file mode." - :group 'gnus-score + :group 'gnus-score-kill :type 'hook) (defcustom gnus-kill-expiry-days 7 "*Number of days before expiring unused kill file entries." - :group 'gnus-score + :group 'gnus-score-kill + :group 'gnus-score-expire :type 'integer) (defcustom gnus-kill-save-kill-file nil "*If non-nil, will save kill files after processing them." - :group 'gnus-score + :group 'gnus-score-kill :type 'boolean) (defcustom gnus-winconf-kill-file nil "What does this do, Lars?" - :group 'gnus-score + :group 'gnus-score-kill :type 'sexp) (defcustom gnus-kill-killed t @@ -55,7 +56,7 @@ If it is nil, Gnus will never apply kill files to articles that have already been through the scoring process, which might very well save lots of time." - :group 'gnus-score + :group 'gnus-score-kill :type 'boolean) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-nocem.el --- a/lisp/gnus/gnus-nocem.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-nocem.el Mon Aug 13 09:15:11 2007 +0200 @@ -145,7 +145,9 @@ ;; ignore scanning followups. (and (string-match "@@NCM" (mail-header-subject header)) (or gnus-nocem-liberal-fetch - (and (string= "" (mail-header-references header)) + (and (or (string= "" (mail-header-references + header)) + (null (mail-header-references header))) (not (member (mail-header-message-id header) gnus-nocem-seen-message-ids)))) (gnus-nocem-check-article group header))))))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-score.el --- a/lisp/gnus/gnus-score.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-score.el Mon Aug 13 09:15:11 2007 +0200 @@ -43,7 +43,7 @@ (setq gnus-global-score-files '(\"/ftp.ifi.uio.no:/pub/larsi/ding/score/soc.motss.SCORE\" \"/ftp.some-where:/pub/score\"))" - :group 'gnus-score + :group 'gnus-score-files :type '(repeat file)) (defcustom gnus-score-file-single-match-alist nil @@ -58,7 +58,7 @@ These score files are loaded in addition to any files returned by gnus-score-find-score-files-function (which see)." - :group 'gnus-score + :group 'gnus-score-files :type '(repeat (cons regexp (repeat file)))) (defcustom gnus-score-file-multiple-match-alist nil @@ -74,17 +74,18 @@ These score files are loaded in addition to any files returned by gnus-score-find-score-files-function (which see)." - :group 'gnus-score + :group 'gnus-score-files :type '(repeat (cons regexp (repeat file)))) (defcustom gnus-score-file-suffix "SCORE" "Suffix of the score files." - :group 'gnus-score + :group 'gnus-score-files :type 'string) (defcustom gnus-adaptive-file-suffix "ADAPT" "Suffix of the adaptive score files." - :group 'gnus-score + :group 'gnus-score-files + :group 'gnus-score-adapt :type 'string) (defcustom gnus-score-find-score-files-function 'gnus-score-find-bnews @@ -104,7 +105,7 @@ This variable can also be a list of functions to be called. Each function should either return a list of score files, or a list of score alists." - :group 'gnus-score + :group 'gnus-score-files :type '(radio (function-item gnus-score-find-single) (function-item gnus-score-find-hierarchical) (function-item gnus-score-find-bnews) @@ -112,13 +113,13 @@ (defcustom gnus-score-interactive-default-score 1000 "*Scoring commands will raise/lower the score with this number as the default." - :group 'gnus-score + :group 'gnus-score-default :type 'integer) (defcustom gnus-score-expiry-days 7 "*Number of days before unused score file entries are expired. If this variable is nil, no score file entries will be expired." - :group 'gnus-score + :group 'gnus-score-expire :type '(choice (const :tag "never" nil) number)) @@ -126,34 +127,34 @@ "*In non-nil, update matching score entry dates. If this variable is nil, then score entries that provide matches will be expired along with non-matching score entries." - :group 'gnus-score + :group 'gnus-score-expire :type 'boolean) (defcustom gnus-orphan-score nil "*All orphans get this score added. Set in the score file." - :group 'gnus-score + :group 'gnus-score-default :type 'integer) (defcustom gnus-decay-scores nil "*If non-nil, decay non-permanent scores." - :group 'gnus-score + :group 'gnus-score-decay :type 'boolean) (defcustom gnus-decay-score-function 'gnus-decay-score "*Function called to decay a score. It is called with one parameter -- the score to be decayed." - :group 'gnus-score + :group 'gnus-score-decay :type '(radio (function-item gnus-decay-score) (function :tag "Other"))) (defcustom gnus-score-decay-constant 3 "*Decay all \"small\" scores with this amount." - :group 'gnus-score + :group 'gnus-score-decay :type 'integer) (defcustom gnus-score-decay-scale .05 "*Decay all \"big\" scores with this factor." - :group 'gnus-score + :group 'gnus-score-decay :type 'number) (defcustom gnus-home-score-file nil @@ -186,7 +187,7 @@ The list will be traversed from the beginning towards the end looking for matches." - :group 'gnus-score + :group 'gnus-score-files :type '(choice string (repeat (choice string (cons regexp (repeat file)) @@ -196,7 +197,8 @@ (defcustom gnus-home-adapt-file nil "Variable to control where new adaptive score entries are to go. This variable allows the same syntax as `gnus-home-score-file'." - :group 'gnus-score + :group 'gnus-score-adapt + :group 'gnus-score-files :type '(choice string (repeat (choice string (cons regexp (repeat file)) @@ -211,7 +213,7 @@ (gnus-killed-mark (from -1) (subject -20)) (gnus-del-mark (from -2) (subject -15))) "Alist of marks and scores." -:group 'gnus-score +:group 'gnus-score-adapt :type '(repeat (cons (symbol :tag "Mark") (repeat (list (choice :tag "Header" (const from) @@ -221,7 +223,7 @@ (defcustom gnus-ignored-adaptive-words nil "List of words to be ignored when doing adaptive word scoring." - :group 'gnus-score + :group 'gnus-score-adapt :type '(repeat string)) (defcustom gnus-default-ignored-adaptive-words @@ -240,7 +242,7 @@ "both" "true" "off" "say" "another" "state" "might" "under" "start" "try" "re") "Default list of words to be ignored when doing adaptive word scoring." - :group 'gnus-score + :group 'gnus-score-adapt :type '(repeat string)) (defcustom gnus-default-adaptive-word-score-alist @@ -249,13 +251,13 @@ (,gnus-killed-mark . -20) (,gnus-del-mark . -15)) "Alist of marks and scores." -:group 'gnus-score +:group 'gnus-score-adapt :type '(repeat (cons (character :tag "Mark") (integer :tag "Score")))) (defcustom gnus-score-mimic-keymap nil "*Have the score entry functions pretend that they are a keymap." - :group 'gnus-score + :group 'gnus-score-default :type 'boolean) (defcustom gnus-score-exact-adapt-limit 10 @@ -266,12 +268,13 @@ than this variable, exact matching will be used. If this variable is nil, exact matching will always be used." - :group 'gnus-score + :group 'gnus-score-adapt :type '(choice (const nil) integer)) (defcustom gnus-score-uncacheable-files "ADAPT$" "All score files that match this regexp will not be cached." - :group 'gnus-score + :group 'gnus-score-adapt + :group 'gnus-score-files :type 'regexp) (defcustom gnus-score-default-header nil @@ -291,7 +294,7 @@ f: followup If nil, the user will be asked for a header." - :group 'gnus-score + :group 'gnus-score-default :type '(choice (const :tag "from" a) (const :tag "subject" s) (const :tag "body" b) @@ -320,7 +323,7 @@ =: equal to number If nil, the user will be asked for a match type." - :group 'gnus-score + :group 'gnus-score-default :type '(choice (const :tag "substring" s) (const :tag "exact string" e) (const :tag "fuzzy string" f) @@ -334,7 +337,7 @@ (defcustom gnus-score-default-fold nil "Use case folding for new score file entries iff not nil." - :group 'gnus-score + :group 'gnus-score-default :type 'boolean) (defcustom gnus-score-default-duration nil @@ -347,14 +350,14 @@ i: immediate If nil, the user will be asked for a duration." - :group 'gnus-score + :group 'gnus-score-default :type '(choice (const :tag "temporary" t) (const :tag "permanent" p) (const :tag "immediate" i))) (defcustom gnus-score-after-write-file-function nil "Function called with the name of the score file just written to disk." - :group 'gnus-score + :group 'gnus-score-files :type 'function) @@ -2050,7 +2053,7 @@ (defun gnus-score-adaptive () "Create adaptive score rules for this newsgroup." - (when gnus-use-adaptive-scoring + (when gnus-newsgroup-adaptive ;; We change the score file to the adaptive score file. (save-excursion (set-buffer gnus-summary-buffer) @@ -2059,8 +2062,8 @@ (gnus-score-file-name gnus-newsgroup-name gnus-adaptive-file-suffix)))) ;; Perform ordinary line scoring. - (when (or (not (listp gnus-use-adaptive-scoring)) - (memq 'line gnus-use-adaptive-scoring)) + (when (or (not (listp gnus-newsgroup-adaptive)) + (memq 'line gnus-newsgroup-adaptive)) (save-excursion (let* ((malist (gnus-copy-sequence gnus-adaptive-score-alist)) (alist malist) @@ -2119,8 +2122,8 @@ (setq data (cdr data)))))) ;; Perform adaptive word scoring. - (when (and (listp gnus-use-adaptive-scoring) - (memq 'word gnus-use-adaptive-scoring)) + (when (and (listp gnus-newsgroup-adaptive) + (memq 'word gnus-newsgroup-adaptive)) (nnheader-temp-write nil (let* ((hashtb (gnus-make-hashtable 1000)) (date (gnus-day-number (current-time-string))) @@ -2702,14 +2705,16 @@ (if (string-match "^[^.]+\\." group) (concat (match-string 0 group) gnus-score-file-suffix) ;; Group name without any dots. - (concat group "." gnus-score-file-suffix))) + (concat group (if (gnus-use-long-file-name 'not-score) "." "/") + gnus-score-file-suffix))) (defun gnus-hierarchial-home-adapt-file (group) "Return the adapt file of the top-level hierarchy of GROUP." (if (string-match "^[^.]+\\." group) (concat (match-string 0 group) gnus-adaptive-file-suffix) ;; Group name without any dots. - (concat group "." gnus-adaptive-file-suffix))) + (concat group (if (gnus-use-long-file-name 'not-score) "." "/") + gnus-adaptive-file-suffix))) ;;; ;;; Score decays diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-srvr.el --- a/lisp/gnus/gnus-srvr.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-srvr.el Mon Aug 13 09:15:11 2007 +0200 @@ -242,8 +242,7 @@ (when entry (gnus-dribble-enter (concat "(gnus-server-set-info \"" server "\" '" - (prin1-to-string (cdr entry)) ") -"))) + (prin1-to-string (cdr entry)) ")\n"))) (when (or entry oentry) ;; Buffer may be narrowed. (save-restriction @@ -401,8 +400,8 @@ (defun gnus-server-copy-server (from to) (interactive (list - (unless (gnus-server-server-name) - (error "No server on the current line")) + (or (gnus-server-server-name) + (error "No server on the current line")) (read-string "Copy to: "))) (unless from (error "No server on current line")) @@ -410,9 +409,10 @@ (error "No name to copy to")) (when (assoc to gnus-server-alist) (error "%s already exists" to)) - (unless (assoc from gnus-server-alist) + (unless (gnus-server-to-method from) (error "%s: no such server" from)) - (let ((to-entry (gnus-copy-sequence (assoc from gnus-server-alist)))) + (let ((to-entry (cons from (gnus-copy-sequence + (gnus-server-to-method from))))) (setcar to-entry to) (setcar (nthcdr 2 to-entry) to) (push to-entry gnus-server-killed-servers) @@ -735,9 +735,10 @@ (if (not (gnus-check-backend-function 'request-regenerate (car (gnus-server-to-method server)))) (error "This backend doesn't support regeneration") - (gnus-message 5 "Requesing regeneration of %s..." server) - (when (gnus-request-regenerate server) - (gnus-message 5 "Requesing regeneration of %s...done" server))))) + (gnus-message 5 "Requesting regeneration of %s..." server) + (if (gnus-request-regenerate server) + (gnus-message 5 "Requesting regeneration of %s...done" server) + (gnus-message 5 "Couldn't regenerate %s" server))))) (provide 'gnus-srvr) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-start.el --- a/lisp/gnus/gnus-start.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-start.el Mon Aug 13 09:15:11 2007 +0200 @@ -69,14 +69,14 @@ "*Non-nil means that Gnus will use a dribble file to store user updates. If Emacs should crash without saving the .newsrc files, complete information can be restored from the dribble file." - :group 'gnus-start + :group 'gnus-dribble-file :type 'boolean) (defcustom gnus-dribble-directory nil "*The directory where dribble files will be saved. If this variable is nil, the directory where the .newsrc files are saved will be used." - :group 'gnus-start + :group 'gnus-dribble-file :type '(choice directory (const nil))) (defcustom gnus-check-new-newsgroups t @@ -120,7 +120,7 @@ "*Non-nil means that Gnus will check and remove bogus newsgroup at startup. If this variable is nil, then you have to tell Gnus explicitly to check for bogus newsgroups with \\\\[gnus-group-check-bogus-groups]." - :group 'gnus-start + :group 'gnus-start-server :type 'boolean) (defcustom gnus-read-active-file t @@ -137,48 +137,48 @@ be told about new newsgroups that arrive. To do that, set `gnus-check-new-newsgroups' to `ask-server'. This may not work properly with all servers." - :group 'gnus-start + :group 'gnus-start-server :type '(choice (const nil) (const some) (const t))) (defcustom gnus-level-subscribed 5 "*Groups with levels less than or equal to this variable are subscribed." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-level-unsubscribed 7 "*Groups with levels less than or equal to this variable are unsubscribed. Groups with levels less than `gnus-level-subscribed', which should be less than this variable, are subscribed." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-level-zombie 8 "*Groups with this level are zombie groups." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-level-killed 9 "*Groups with this level are killed." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-level-default-subscribed 3 "*New subscribed groups will be subscribed at this level." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-level-default-unsubscribed 6 "*New unsubscribed groups will be unsubscribed at this level." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-activate-level (1+ gnus-level-subscribed) "*Groups higher than this level won't be activated on startup. Setting this variable to something low might save lots of time when you have many groups that you aren't interested in." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-activate-foreign-newsgroups 4 @@ -193,7 +193,7 @@ might take a while. By setting this variable to nil, you'll save time, but you won't be told how many unread articles there are in the groups." - :group 'gnus-start + :group 'gnus-group-levels :type 'integer) (defcustom gnus-save-newsrc-file t @@ -203,7 +203,7 @@ be readily understood by other newsreaders. If you don't plan on using other newsreaders, set this variable to nil to save some time on exit." - :group 'gnus-start + :group 'gnus-newsrc :type 'boolean) (defcustom gnus-save-killed-list t @@ -218,7 +218,7 @@ This variable can also be a regexp. In that case, all groups that do not match this regexp will be removed before saving the list." - :group 'gnus-start + :group 'gnus-newsrc :type 'boolean) (defcustom gnus-ignored-newsgroups @@ -232,7 +232,7 @@ Any lines in the active file matching this regular expression are removed from the newsgroup list before anything else is done to it, thus making them effectively non-existent." - :group 'gnus-start + :group 'gnus-group-new :type 'regexp) (defcustom gnus-subscribe-newsgroup-method 'gnus-subscribe-zombies @@ -244,7 +244,7 @@ in hierarchical newsgroup order; `gnus-subscribe-interactively' asks for your decision; `gnus-subscribe-killed' kills all new groups; `gnus-subscribe-zombies' will make all new groups into zombies." - :group 'gnus-start + :group 'gnus-group-new :type '(radio (function-item gnus-subscribe-randomly) (function-item gnus-subscribe-alphabetically) (function-item gnus-subscribe-hierarchically) @@ -266,7 +266,7 @@ Gnus will the subscribe all new newsgroups in these hierarchies with the subscription method in this variable." - :group 'gnus-start + :group 'gnus-group-new :type '(radio (function-item gnus-subscribe-randomly) (function-item gnus-subscribe-alphabetically) (function-item gnus-subscribe-hierarchically) @@ -284,7 +284,7 @@ If the user pressed `d', Gnus will descend the hierarchy, `y' will subscribe to all newsgroups in the hierarchy and `s' will skip this hierarchy in its entirety." - :group 'gnus-start + :group 'gnus-group-new :type 'boolean) (defcustom gnus-auto-subscribed-groups @@ -296,7 +296,7 @@ New groups that match this regexp will not be handled by `gnus-subscribe-newsgroup-method'. Instead, they will be subscribed using `gnus-subscribe-options-newsgroup-method'." - :group 'gnus-start + :group 'gnus-group-new :type 'regexp) (defcustom gnus-options-subscribe nil @@ -307,7 +307,7 @@ New groups that match this regexp will not be handled by `gnus-subscribe-newsgroup-method'. Instead, they will be subscribed using `gnus-subscribe-options-newsgroup-method'." - :group 'gnus-start + :group 'gnus-group-new :type '(choice regexp (const :tag "none" nil))) @@ -315,7 +315,7 @@ "*All new groups matching this regexp will be ignored. Note that this variable deals only with new newsgroups. This variable does not affect old (already subscribed) newsgroups." - :group 'gnus-start + :group 'gnus-group-new :type '(choice regexp (const :tag "none" nil))) @@ -323,12 +323,12 @@ "*Non-nil means .newsrc should be deleted prior to save. Its use is due to the bogus appearance that .newsrc was modified on disc." - :group 'gnus-start + :group 'gnus-newsrc :type 'boolean) (defcustom gnus-check-bogus-groups-hook nil "A hook run after removing bogus groups." - :group 'gnus-start + :group 'gnus-start-server :type 'hook) (defcustom gnus-startup-hook nil @@ -339,31 +339,31 @@ (defcustom gnus-get-new-news-hook nil "A hook run just before Gnus checks for new news." - :group 'gnus-start + :group 'gnus-group-new :type 'hook) (defcustom gnus-after-getting-new-news-hook (when (gnus-boundp 'display-time-timer) '(display-time-event-handler)) "A hook run after Gnus checks for new news." - :group 'gnus-start + :group 'gnus-group-new :type 'hook) (defcustom gnus-save-newsrc-hook nil "A hook called before saving any of the newsrc files." - :group 'gnus-start + :group 'gnus-newsrc :type 'hook) (defcustom gnus-save-quick-newsrc-hook nil "A hook called just before saving the quick newsrc file. Can be used to turn version control on or off." - :group 'gnus-start + :group 'gnus-newsrc :type 'hook) (defcustom gnus-save-standard-newsrc-hook nil "A hook called just before saving the standard newsrc file. Can be used to turn version control on or off." - :group 'gnus-start + :group 'gnus-newsrc :type 'hook) ;;; Internal variables @@ -757,7 +757,7 @@ (set-file-modes dribble-file modes)) ;; Possibly eval the file later. (when (gnus-y-or-n-p - "Auto-save file exists. Do you want to read it? ") + "Gnus auto-save file exists. Do you want to read it? ") (setq gnus-dribble-eval-file t))))))) (defun gnus-dribble-eval-file () @@ -1216,7 +1216,7 @@ bogus group entry info) (gnus-message 5 "Checking bogus newsgroups...") (unless (gnus-read-active-file-p) - (gnus-read-active-file)) + (gnus-read-active-file t)) (when (gnus-read-active-file-p) ;; Find all bogus newsgroup that are subscribed. (while newsrc @@ -1541,7 +1541,7 @@ (gnus-dribble-touch)) ;; Get the active file(s) from the backend(s). -(defun gnus-read-active-file () +(defun gnus-read-active-file (&optional force) (gnus-group-set-mode-line) (let ((methods (append @@ -1574,7 +1574,8 @@ (gnus-request-scan nil method)) (cond ((and (eq gnus-read-active-file 'some) - (gnus-check-backend-function 'retrieve-groups (car method))) + (gnus-check-backend-function 'retrieve-groups (car method)) + (not force)) (let ((newsrc (cdr gnus-newsrc-alist)) (gmethod (gnus-server-get-method nil method)) groups info) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-sum.el Mon Aug 13 09:15:11 2007 +0200 @@ -159,7 +159,7 @@ (defcustom gnus-summary-default-score 0 "*Default article score level. If this variable is nil, scoring will be disabled." - :group 'gnus-score + :group 'gnus-score-default :type '(choice (const :tag "disable") integer)) @@ -489,7 +489,7 @@ "*Mark all articles with a score below this variable as read. This variable is local to each summary buffer and usually set by the score file." - :group 'gnus-score + :group 'gnus-score-default :type 'integer) (defcustom gnus-article-sort-functions '(gnus-article-sort-by-number) @@ -538,7 +538,7 @@ (defcustom gnus-summary-expunge-below nil "All articles that have a score less than this variable will be expunged." - :group 'gnus-score + :group 'gnus-score-default :type '(choice (const :tag "off" nil) integer)) @@ -547,7 +547,7 @@ See `gnus-thread-score-function' for en explanation of what a \"thread score\" is." :group 'gnus-treading - :group 'gnus-score + :group 'gnus-score-default :type '(choice (const :tag "off" nil) integer)) @@ -1037,30 +1037,6 @@ (equal s1 (gnus-simplify-subject-fully s2))))) -(defun gnus-offer-save-summaries () - "Offer to save all active summary buffers." - (save-excursion - (let ((buflist (buffer-list)) - buffers bufname) - ;; Go through all buffers and find all summaries. - (while buflist - (and (setq bufname (buffer-name (car buflist))) - (string-match "Summary" bufname) - (save-excursion - (set-buffer bufname) - ;; We check that this is, indeed, a summary buffer. - (and (eq major-mode 'gnus-summary-mode) - ;; Also make sure this isn't bogus. - gnus-newsgroup-prepared)) - (push bufname buffers)) - (setq buflist (cdr buflist))) - ;; Go through all these summary buffers and offer to save them. - (when buffers - (map-y-or-n-p - "Update summary buffer %s? " - (lambda (buf) (set-buffer buf) (gnus-summary-exit)) - buffers))))) - (defun gnus-summary-bubble-group () "Increase the score of the current group. This is a handy function to add to `gnus-summary-exit-hook' to @@ -3908,8 +3884,7 @@ (setq mode-string (format (format "%%-%ds" max-len) mode-string)))) ;; Update the mode line. (setq mode-line-buffer-identification - (gnus-mode-line-buffer-identification - (list mode-string))) + (gnus-mode-line-buffer-identification (list mode-string))) (set-buffer-modified-p t)))) (defun gnus-create-xref-hashtb (from-newsgroup headers unreads) @@ -5395,7 +5370,7 @@ (setq gnus-summary-buffer (current-buffer)) (gnus-set-global-variables) (let ((article (gnus-summary-article-number)) - (article-window (get-buffer-window gnus-article-buffer)) + (article-window (get-buffer-window gnus-article-buffer t)) (endp nil)) (gnus-configure-windows 'article) (if (eq (cdr (assq article gnus-newsgroup-reads)) gnus-canceled-mark) @@ -5431,7 +5406,7 @@ (interactive "P") (gnus-set-global-variables) (let ((article (gnus-summary-article-number)) - (article-window (get-buffer-window gnus-article-buffer))) + (article-window (get-buffer-window gnus-article-buffer t))) (gnus-configure-windows 'article) (if (or (null gnus-current-article) (null gnus-article-current) @@ -6688,7 +6663,7 @@ If SELECT-METHOD is non-nil, do not move to a specific newsgroup, but re-spool using this method." (interactive "P") - (gnus-summary-move-article n nil select-method 'copy)) + (gnus-summary-move-article n to-newsgroup select-method 'copy)) (defun gnus-summary-crosspost-article (&optional n) "Crosspost the current article to some other group." @@ -8276,7 +8251,12 @@ (funcall (if (string-match "%s" action) 'format 'concat) action - (mapconcat (lambda (f) f) files " "))))) + (mapconcat + (lambda (f) + (if (equal f " ") + f + (gnus-quote-arg-for-sh-or-csh f))) + files " "))))) (setq ps (cdr ps))))) (if (and gnus-view-pseudos (not not-view)) (while pslist @@ -8533,6 +8513,32 @@ (gnus-get-unread-articles-in-group info (gnus-active group)) t))) +(defun gnus-offer-save-summaries () + "Offer to save all active summary buffers." + (save-excursion + (let ((buflist (buffer-list)) + buffers bufname) + ;; Go through all buffers and find all summaries. + (while buflist + (and (setq bufname (buffer-name (car buflist))) + (string-match "Summary" bufname) + (save-excursion + (set-buffer bufname) + ;; We check that this is, indeed, a summary buffer. + (and (eq major-mode 'gnus-summary-mode) + ;; Also make sure this isn't bogus. + gnus-newsgroup-prepared + ;; Also make sure that this isn't a dead summary buffer. + (not gnus-dead-summary-mode))) + (push bufname buffers)) + (setq buflist (cdr buflist))) + ;; Go through all these summary buffers and offer to save them. + (when buffers + (map-y-or-n-p + "Update summary buffer %s? " + (lambda (buf) (switch-to-buffer buf) (gnus-summary-exit)) + buffers))))) + (provide 'gnus-sum) (run-hooks 'gnus-sum-load-hook) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-topic.el --- a/lisp/gnus/gnus-topic.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-topic.el Mon Aug 13 09:15:11 2007 +0200 @@ -430,8 +430,7 @@ gnus-topic-tallied-groups))) (push (gnus-info-group info) gnus-topic-tallied-groups) (incf unread (car entry))) - (when (and (listp entry) - (numberp (car entry))) + (when (listp entry) (setq tick t))) (goto-char beg) ;; Insert the topic line. @@ -490,7 +489,8 @@ (gnus-topic-alist gnus-topic-active-alist) (gnus-group-list-mode (cons 5 t))) (gnus-topic-remove-topic - (or insert (not (gnus-topic-visible-p))) nil nil 9))))))) + (or insert (not (gnus-topic-visible-p))) nil nil 9) + (gnus-topic-enter-dribble))))))) (defun gnus-topic-insert-topic-line (name visiblep shownp level entries &optional unread) @@ -1280,7 +1280,8 @@ (let ((topic (gnus-group-topic-name))) (gnus-edit-form (gnus-topic-parameters topic) - "Editing the topic parameters." + (format "Editing the topic parameters for `%s'." + (or group topic)) `(lambda (form) (gnus-topic-set-parameters ,topic form))))))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus-xmas.el --- a/lisp/gnus/gnus-xmas.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus-xmas.el Mon Aug 13 09:15:11 2007 +0200 @@ -741,22 +741,28 @@ (glyph (make-glyph file))) (when (and (featurep 'x) (file-exists-p file)) - (set-glyph-face glyph 'modeline-buffer-id)) - (set-glyph-property glyph 'image (cons 'tty "Gnus:")) - glyph))) + (set-glyph-face glyph 'modeline-buffer-id) + (set-glyph-property glyph 'image (cons 'tty "Gnus:")) + glyph)))) (defun gnus-xmas-mode-line-buffer-identification (line) (let ((line (car line)) chop) - (if (not (stringp line)) - (list line) - (when (string-match "^Gnus:" line) - (setq chop (match-end 0)) - (list - (if gnus-xmas-modeline-glyph - (cons gnus-xmas-modeline-left-extent gnus-xmas-modeline-glyph) - (cons gnus-xmas-modeline-left-extent (substring line 0 chop))) - (cons gnus-xmas-modeline-right-extent (substring line chop))))))) + (cond + ;; This is some weird type of id. + ((not (stringp line)) + (list line)) + ;; This is non-standard, so we just pass it through. + ((not (string-match "^Gnus:" line)) + (list line)) + ;; We have a standard line, so we colorize and glyphize it a bit. + (t + (setq chop (match-end 0)) + (list + (if gnus-xmas-modeline-glyph + (cons gnus-xmas-modeline-left-extent gnus-xmas-modeline-glyph) + (cons gnus-xmas-modeline-left-extent (substring line 0 chop))) + (cons gnus-xmas-modeline-right-extent (substring line chop))))))) (defun gnus-xmas-splash () (when (eq (device-type) 'x) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/gnus.el --- a/lisp/gnus/gnus.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/gnus.el Mon Aug 13 09:15:11 2007 +0200 @@ -39,6 +39,10 @@ "Starting your favorite newsreader." :group 'gnus) +(defgroup gnus-start-server nil + "Server options at startup." + :group 'gnus-start) + ;; These belong to gnus-group.el. (defgroup gnus-group nil "Group buffers." @@ -50,6 +54,10 @@ :link '(custom-manual "(gnus)Foreign Groups") :group 'gnus-group) +(defgroup gnus-group-new nil + "Automatic subscription of new groups." + :group 'gnus-group) + (defgroup gnus-group-levels nil "Group levels." :link '(custom-manual "(gnus)Group Levels") @@ -152,6 +160,18 @@ "Adaptive score files." :group 'gnus-score) +(defgroup gnus-score-default nil + "Default values for score files." + :group 'gnus-score) + +(defgroup gnus-score-expire nil + "Expiring score rules." + :group 'gnus-score) + +(defgroup gnus-score-decay nil + "Decaying score rules." + :group 'gnus-score) + (defgroup gnus-score-files nil "Score and kill file names." :group 'gnus-score @@ -166,14 +186,19 @@ "Options controling the visual fluff." :group 'gnus) -(defgroup gnus-mail-expire nil - "Expiring articles in mail backends." - :group 'gnus-mail) - (defgroup gnus-files nil "Files used by Gnus." :group 'gnus) +(defgroup gnus-dribble-file nil + "Auto save file." + :link '(custom-manual "(gnus)Auto Save") + :group 'gnus-files) + +(defgroup gnus-newsrc nil + "Storing Gnus state." + :group 'gnus-files) + (defgroup gnus-server nil "Options related to newsservers and other servers used by Gnus." :group 'gnus) @@ -198,7 +223,7 @@ :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.4.12" +(defconst gnus-version-number "5.4.15" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) @@ -1174,7 +1199,7 @@ "*Groups in which to automatically mark read articles as expirable. If non-nil, this should be a regexp that should match all groups in which to perform auto-expiry. This only makes sense for mail groups." - :group 'gnus-mail-expire + :group 'nnmail-expire :type '(choice (const nil) regexp)) @@ -1184,7 +1209,7 @@ expiring - which means that all read articles will be deleted after \(say) one week. (This only goes for mail groups and the like, of course.)" - :group 'gnus-mail-expire + :group 'nnmail-expire :type '(choice (const nil) regexp)) @@ -1577,7 +1602,7 @@ gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view gnus-uu-decode-binhex-view) - ("gnus-uu" gnus-uu-delete-work-dir) + ("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh) ("gnus-msg" (gnus-summary-send-map keymap) gnus-article-mail gnus-copy-article-buffer gnus-extended-version) ("gnus-msg" :interactive t diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/message.el --- a/lisp/gnus/message.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/message.el Mon Aug 13 09:15:11 2007 +0200 @@ -727,6 +727,8 @@ (eval-and-compile (autoload 'message-setup-toolbar "messagexmas") (autoload 'mh-send-letter "mh-comp") + (autoload 'gnus-point-at-eol "gnus-util") + (autoload 'gnus-point-at-bol "gnus-util") (autoload 'gnus-output-to-mail "gnus-util") (autoload 'gnus-output-to-rmail "gnus-util")) @@ -736,22 +738,6 @@ ;;; Utility functions. ;;; -(defun message-point-at-bol () - "Return point at the beginning of the line." - (let ((p (point))) - (beginning-of-line) - (prog1 - (point) - (goto-char p)))) - -(defun message-point-at-eol () - "Return point at the end of the line." - (let ((p (point))) - (end-of-line) - (prog1 - (point) - (goto-char p)))) - (defmacro message-y-or-n-p (question show &rest text) "Ask QUESTION, displaying the rest of the arguments in a temp. buffer if SHOW" `(message-talkative-question 'y-or-n-p ,question ,show ,@text)) @@ -1277,20 +1263,8 @@ ;; We build the table, if necessary. (when (or (not message-caesar-translation-table) (/= (aref message-caesar-translation-table ?a) (+ ?a n))) - (let ((i -1) - (table (make-string 256 0))) - (while (< (incf i) 256) - (aset table i i)) - (setq table - (concat - (substring table 0 ?A) - (substring table (+ ?A n) (+ ?A n (- 26 n))) - (substring table ?A (+ ?A n)) - (substring table (+ ?A 26) ?a) - (substring table (+ ?a n) (+ ?a n (- 26 n))) - (substring table ?a (+ ?a n)) - (substring table (+ ?a 26) 255))) - (setq message-caesar-translation-table table))) + (setq message-caesar-translation-table + (message-make-caesar-translation-table n))) ;; Then we translate the region. Do it this way to retain ;; text properties. (while (< b e) @@ -1299,6 +1273,21 @@ (aref message-caesar-translation-table (char-after b))) (incf b)))) +(defun message-make-caesar-translation-table (n) + "Create a rot table with offset N." + (let ((i -1) + (table (make-string 256 0))) + (while (< (incf i) 256) + (aset table i i)) + (concat + (substring table 0 ?A) + (substring table (+ ?A n) (+ ?A n (- 26 n))) + (substring table ?A (+ ?A n)) + (substring table (+ ?A 26) ?a) + (substring table (+ ?a n) (+ ?a n (- 26 n))) + (substring table ?a (+ ?a n)) + (substring table (+ ?a 26) 255)))) + (defun message-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). @@ -2523,7 +2512,7 @@ (forward-line -1)) ;; The value of this header was empty, so we clear ;; totally and insert the new value. - (delete-region (point) (message-point-at-eol)) + (delete-region (point) (gnus-point-at-eol)) (insert value)) ;; Add the deletable property to the headers that require it. (and (memq header message-deletable-headers) @@ -2928,7 +2917,7 @@ references message-id follow-to (inhibit-point-motion-hooks t) (message-this-is-news t) - followup-to distribution newsgroups gnus-warning) + followup-to distribution newsgroups gnus-warning posted-to) (save-restriction (narrow-to-region (goto-char (point-min)) @@ -2945,6 +2934,7 @@ message-id (message-fetch-field "message-id" t) followup-to (message-fetch-field "followup-to") newsgroups (message-fetch-field "newsgroups") + posted-to (message-fetch-field "posted-to") reply-to (message-fetch-field "reply-to") distribution (message-fetch-field "distribution") mct (message-fetch-field "mail-copies-to")) @@ -2983,7 +2973,9 @@ A typical situation where `Followup-To: poster' is used is when the poster does not read the newsgroup, so he wouldn't see any replies sent to it.")) - (cons 'To (or reply-to from "")) + (progn + (setq message-this-is-news nil) + (cons 'To (or reply-to from ""))) (cons 'Newsgroups newsgroups))) (t (if (or (equal followup-to newsgroups) @@ -3006,6 +2998,8 @@ responses here are directed to other newsgroups.")) (cons 'Newsgroups followup-to) (cons 'Newsgroups newsgroups)))))) + (posted-to + `((Newsgroups . ,posted-to))) (t `((Newsgroups . ,newsgroups)))) ,@(and distribution (list (cons 'Distribution distribution))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/messagexmas.el --- a/lisp/gnus/messagexmas.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/messagexmas.el Mon Aug 13 09:15:11 2007 +0200 @@ -97,6 +97,27 @@ font-lock-auto-fontify) (turn-on-font-lock))) +(defun message-xmas-make-caesar-translation-table (n) + "Create a rot table with offset N." + (let ((i -1) + (table (make-string 256 0)) + (a (char-int ?a)) + (A (char-int ?A))) + (while (< (incf i) 256) + (aset table i i)) + (concat + (substring table 0 A) + (substring table (+ A n) (+ A n (- 26 n))) + (substring table A (+ A n)) + (substring table (+ A 26) a) + (substring table (+ a n) (+ a n (- 26 n))) + (substring table a (+ a n)) + (substring table (+ a 26) 255)))) + +(when (>= emacs-major-version 20) + (fset 'message-make-caesar-translation-table + 'message-xmas-make-caesar-translation-table)) + (add-hook 'message-mode-hook 'message-xmas-maybe-fontify) (provide 'messagexmas) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nnbabyl.el --- a/lisp/gnus/nnbabyl.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nnbabyl.el Mon Aug 13 09:15:11 2007 +0200 @@ -218,7 +218,8 @@ (save-excursion (set-buffer nnbabyl-mbox-buffer) (save-buffer))) - nnbabyl-mbox-file group + (file-name-directory nnbabyl-mbox-file) + group (lambda () (save-excursion (let ((in-buf (current-buffer))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nndoc.el --- a/lisp/gnus/nndoc.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nndoc.el Mon Aug 13 09:15:11 2007 +0200 @@ -37,8 +37,8 @@ (defvoo nndoc-article-type 'guess "*Type of the file. One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward', -`mime-digest', `standard-digest', `slack-digest', `clari-briefs' or -`guess'.") +`rfc934', `mime-digest', `standard-digest', `slack-digest', +`clari-briefs' or `guess'.") (defvoo nndoc-post-type 'mail "*Whether the nndoc group is `mail' or `post'.") @@ -64,6 +64,10 @@ (article-begin . "^-+ Start of forwarded message -+\n+") (body-end . "^-+ End of forwarded message -+$") (prepare-body-function . nndoc-unquote-dashes)) + (rfc934 + (article-begin . "^-.*\n+") + (body-end . "^-.*$") + (prepare-body-function . nndoc-unquote-dashes)) (clari-briefs (article-begin . "^ \\*") (body-end . "^\t------*[ \t]^*\n^ \\*") @@ -407,6 +411,13 @@ (not (re-search-forward "^From:" nil t 2))) t)) +(defun nndoc-rfc934-type-p () + (when (and (re-search-forward "^-+ Start of forwarded.*\n+" nil t) + (not (re-search-forward "^Subject:.*digest" nil t)) + (not (re-search-backward "^From:" nil t 2)) + (not (re-search-forward "^From:" nil t 2))) + t)) + (defun nndoc-clari-briefs-type-p () (when (let ((case-fold-search nil)) (re-search-forward "^\t[^a-z]+ ([^a-z]+) --" nil t)) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nnkiboze.el --- a/lisp/gnus/nnkiboze.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nnkiboze.el Mon Aug 13 09:15:11 2007 +0200 @@ -314,7 +314,6 @@ (save-excursion (set-buffer buffer) (goto-char (point-max)) - (debug) (let ((xref (mail-header-xref header)) (prefix (gnus-group-real-prefix group)) (oheader (copy-sequence header)) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nnmail.el --- a/lisp/gnus/nnmail.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nnmail.el Mon Aug 13 09:15:11 2007 +0200 @@ -31,10 +31,43 @@ (eval-when-compile (require 'cl)) (require 'custom) -(defgroup gnus-mail nil - "Mailreading.." +(defgroup nnmail nil + "Reading mail with Gnus." :group 'gnus) +(defgroup nnmail-retrieve nil + "Retrieving new mail." + :group 'nnmail) + +(defgroup nnmail-prepare nil + "Preparing (or mangling) new mail after retrival." + :group 'nnmail) + +(defgroup nnmail-duplicate nil + "Handling of duplicate mail messages." + :group 'nnmail) + +(defgroup nnmail-split nil + "Organizing the incomming mail in folders." + :group 'nnmail) + +(defgroup nnmail-files nil + "Mail files." + :group 'gnus-files + :group 'nnmail) + +(defgroup nnmail-expire nil + "Expiring old mail." + :group 'nnmail) + +(defgroup nnmail-procmail nil + "Interfacing with procmail and other mail agents." + :group 'nnmail) + +(defgroup nnmail-various nil + "Various mail options." + :group 'nnmail) + (defcustom nnmail-split-methods '(("mail.misc" "")) "Incoming mail will be split according to this variable. @@ -62,7 +95,7 @@ The last element should always have \"\" as the regexp. This variable can also have a function as its value." - :group 'gnus-mail + :group 'nnmail-split :type '(choice (repeat :tag "Alist" (group (string :tag "Name") regexp)) (function-item nnmail-split-fancy) (function :tag "Other"))) @@ -71,7 +104,7 @@ (defcustom nnmail-crosspost t "If non-nil, do crossposting if several split methods match the mail. If nil, the first match found will be used." - :group 'gnus-mail + :group 'nnmail-split :type 'boolean) ;; Added by gord@enci.ucalgary.ca (Gordon Matzigkeit). @@ -79,19 +112,20 @@ "If non-nil, nnmail will never delete the last expired article in a directory. You may need to set this variable if other programs are putting new mail into folder numbers that Gnus has marked as expired." - :group 'gnus-mail + :group 'nnmail-procmail + :group 'nnmail-various :type 'boolean) (defcustom nnmail-use-long-file-names nil "If non-nil the mail backends will use long file and directory names. If nil, groups like \"mail.misc\" will end up in directories like \"mail/misc/\"." - :group 'gnus-mail + :group 'nnmail-files :type 'boolean) (defcustom nnmail-default-file-modes 384 "Set the mode bits of all new mail files to this integer." - :group 'gnus-mail + :group 'nnmail-files :type 'integer) (defcustom nnmail-expiry-wait 7 @@ -99,7 +133,7 @@ This variable can either be a number (which will be interpreted as a number of days) -- this doesn't have to be an integer. This variable can also be `immediate' and `never'." - :group 'gnus-mail + :group 'nnmail-expire :type '(choice (const immediate) (integer :tag "days") (const never))) @@ -119,7 +153,7 @@ ((string-match \"junk\" newsgroup) 1) ((string-match \"important\" newsgroup) 'never) (t 7))))" - :group 'gnus-mail + :group 'nnmail-expire :type '(choice (const :tag "nnmail-expiry-wait" nil) (function :format "%v" nnmail-))) @@ -133,41 +167,41 @@ used as incoming mailboxes. If this variable is a directory (i. e., it's name ends with a \"/\"), treat all files in that directory as incoming spool files." - :group 'gnus-mail + :group 'nnmail-files :type 'file) (defcustom nnmail-crash-box "~/.gnus-crash-box" "File where Gnus will store mail while processing it." - :group 'gnus-mail + :group 'nnmail-files :type 'file) (defcustom nnmail-use-procmail nil "*If non-nil, the mail backends will look in `nnmail-procmail-directory' for spool files. The file(s) in `nnmail-spool-file' will also be read." - :group 'gnus-mail + :group 'nnmail-procmail :type 'boolean) (defcustom nnmail-procmail-directory "~/incoming/" "*When using procmail (and the like), incoming mail is put in this directory. The Gnus mail backends will read the mail from this directory." - :group 'gnus-mail + :group 'nnmail-procmail :type 'directory) (defcustom nnmail-procmail-suffix "\\.spool" "*Suffix of files created by procmail (and the like). This variable might be a suffix-regexp to match the suffixes of several files - eg. \".spool[0-9]*\"." - :group 'gnus-mail + :group 'nnmail-procmail :type 'regexp) (defcustom nnmail-resplit-incoming nil "*If non-nil, re-split incoming procmail sorted mail." - :group 'gnus-mail + :group 'nnmail-procmail :type 'boolean) (defcustom nnmail-delete-file-function 'delete-file "Function called to delete files in some mail backends." - :group 'gnus-mail + :group 'nnmail-files :type 'function) (defcustom nnmail-crosspost-link-function 'add-name-to-file @@ -175,7 +209,7 @@ This is `add-name-to-file' by default, which means that crossposts will use hard links. If your file system doesn't allow hard links, you could set this variable to `copy-file' instead." - :group 'gnus-mail + :group 'nnmail-files :type '(radio (function-item add-name-to-file) (function-item copy-file) (function :tag "Other"))) @@ -187,12 +221,13 @@ This can also be a function. In that case, the function will be called with two parameters -- the name of the INBOX file, and the file to be moved to." - :group 'gnus-mail + :group 'nnmail-files + :group 'nnmail-retrieve :type 'string) (defcustom nnmail-pop-password-required nil "*Non-nil if a password is required when reading mail using POP." - :group 'gnus-mail + :group 'nnmail-retrieve :type 'boolean) (defcustom nnmail-read-incoming-hook @@ -224,43 +259,44 @@ ;; the flag that says you have mail. (when (eq (process-status \"display-time\") 'run) (display-time-filter display-time-process \"\"))))" - :group 'gnus-mail + :group 'nnmail-prepare :type 'hook) ;; Suggested by Erik Selberg . (defcustom nnmail-prepare-incoming-hook nil "Hook called before treating incoming mail. The hook is run in a buffer with all the new, incoming mail." - :group 'gnus-mail + :group 'nnmail-prepare :type 'hook) (defcustom nnmail-prepare-incoming-header-hook nil "Hook called narrowed to the headers of each message. This can be used to remove excessive spaces (and stuff like that) from the headers before splitting and saving the messages." - :group 'gnus-mail + :group 'nnmail-prepare :type 'hook) (defcustom nnmail-prepare-incoming-message-hook nil "Hook called narrowed to each message." - :group 'gnus-mail + :group 'nnmail-prepare :type 'hook) (defcustom nnmail-list-identifiers nil "Regexp that matches list identifiers to be removed. This can also be a list of regexps." - :group 'gnus-mail - :type '(choice regexp + :group 'nnmail-prepare + :type '(choice (const :tag "none" nil) + regexp (repeat regexp))) (defcustom nnmail-pre-get-new-mail-hook nil "Hook called just before starting to handle new incoming mail." - :group 'gnus-mail + :group 'nnmail-retrieve :type 'hook) (defcustom nnmail-post-get-new-mail-hook nil "Hook called just after finishing handling new incoming mail." - :group 'gnus-mail + :group 'nnmail-retrieve :type 'hook) (defcustom nnmail-split-hook nil @@ -268,13 +304,15 @@ The functions in this hook are free to modify the buffer contents in any way they choose -- the buffer contents are discarded after running the split process." - :group 'gnus-mail + :group 'nnmail-split :type 'hook) ;; Suggested by Mejia Pablo J . (defcustom nnmail-tmp-directory nil - "*If non-nil, use this directory for temporary storage when reading incoming mail." - :group 'gnus-mail + "*If non-nil, use this directory for temporary storage. +Used when reading incoming mail." + :group 'nnmail-files + :group 'nnmail-retrieve :type '(choice (const :tag "default" nil) (directory :format "%v"))) @@ -282,7 +320,7 @@ "*The number of the articles which indicates a large newsgroup. If the number of the articles is greater than the value, verbose messages will be shown to indicate the current status." - :group 'gnus-mail + :group 'nnmail-various :type 'integer) (defcustom nnmail-split-fancy "mail.misc" @@ -338,7 +376,7 @@ (any \"larsi@ifi\\\\.uio\\\\.no\" \"people.Lars Magne Ingebrigtsen\")) ;; Unmatched mail goes to the catch all group. \"misc.misc\"))" - :group 'gnus-mail + :group 'nnmail-split ;; Sigh! :type 'sexp) @@ -346,26 +384,27 @@ '((any . "from\\|to\\|cc\\|sender\\|apparently-to\\|resent-from\\|resent-to\\|resent-cc") (mail . "mailer-daemon\\|postmaster\\|uucp")) "Alist of abbreviations allowed in `nnmail-split-fancy'." - :group 'gnus-mail + :group 'nnmail-split :type '(repeat (cons :format "%v" symbol regexp))) (defcustom nnmail-delete-incoming t "*If non-nil, the mail backends will delete incoming files after splitting." - :group 'gnus-mail + :group 'nnmail-retrieve :type 'boolean) (defcustom nnmail-message-id-cache-length 1000 "*The approximate number of Message-IDs nnmail will keep in its cache. If this variable is nil, no checking on duplicate messages will be performed." - :group 'gnus-mail + :group 'nnmail-duplicate :type '(choice (const :tag "disable" nil) (integer :format "%v"))) (defcustom nnmail-message-id-cache-file "~/.nnmail-cache" "*The file name of the nnmail Message-ID cache." - :group 'gnus-mail + :group 'nnmail-duplicate + :group 'nnmail-files :type 'file) (defcustom nnmail-treat-duplicates 'warn @@ -378,7 +417,7 @@ This variable can also be a function. It will be called from a buffer narrowed to the article in question with the Message-ID as a parameter. It should return nil, `warn' or `delete'." - :group 'gnus-mail + :group 'nnmail-duplicate :type '(choice (const :tag "off" nil) (const warn) (const delete))) @@ -1473,8 +1512,9 @@ (if nnmail-tmp-directory (concat (file-name-as-directory nnmail-tmp-directory) - (file-name-nondirectory (concat temp "Incoming"))) - (concat temp "Incoming"))))) + (file-name-nondirectory + (concat (file-name-as-directory temp) "Incoming"))) + (concat (file-name-as-directory temp) "Incoming"))))) (rename-file nnmail-crash-box incoming t) (push incoming incomings)))) ;; If we did indeed read any incoming spools, we save all info. @@ -1632,7 +1672,14 @@ (setq found t his nil))) found)) - + +(defun nnmail-pop3-movemail (inbox crashbox) + "Function to move mail from INBOX on a pop3 server to file CRASHBOX." + (require 'pop3) + (let ((pop3-maildrop + (substring inbox (match-end (string-match "^po:" inbox))))) + (pop3-movemail crashbox))) + (run-hooks 'nnmail-load-hook) (provide 'nnmail) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nnmbox.el --- a/lisp/gnus/nnmbox.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nnmbox.el Mon Aug 13 09:15:11 2007 +0200 @@ -194,7 +194,8 @@ (save-excursion (set-buffer nnmbox-mbox-buffer) (save-buffer))) - nnmbox-mbox-file group + (file-name-directory nnmbox-mbox-file) + group (lambda () (save-excursion (let ((in-buf (current-buffer))) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nnmh.el --- a/lisp/gnus/nnmh.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nnmh.el Mon Aug 13 09:15:11 2007 +0200 @@ -228,7 +228,8 @@ (deffoo nnmh-request-newgroups (date &optional server) (nnmh-request-list server)) -(deffoo nnmh-request-expire-articles (articles newsgroup &optional server force) +(deffoo nnmh-request-expire-articles (articles newsgroup + &optional server force) (nnmh-possibly-change-directory newsgroup server) (let* ((active-articles (mapcar diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nnml.el --- a/lisp/gnus/nnml.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nnml.el Mon Aug 13 09:15:11 2007 +0200 @@ -159,7 +159,8 @@ (defun nnml-request-regenerate (server) (nnml-possibly-change-directory nil server) - (nnml-generate-nov-databases)) + (nnml-generate-nov-databases) + t) (deffoo nnml-request-article (id &optional group server buffer) (nnml-possibly-change-directory group server) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/gnus/nnweb.el --- a/lisp/gnus/nnweb.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/gnus/nnweb.el Mon Aug 13 09:15:11 2007 +0200 @@ -70,7 +70,7 @@ (defvoo nnweb-search nil "Search string to feed to DejaNews.") -(defvoo nnweb-max-hits 30 +(defvoo nnweb-max-hits 100 "Maximum number of hits to display.") (defvoo nnweb-ephemeral-p nil diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/ANNOUNCEMENT --- a/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 09:15:11 2007 +0200 @@ -1,9 +1,9 @@ Hello, -I've written a new version (5.1) of my html package for the XEmacs +I've written a new version (5.2) of my html package for the XEmacs and the GNU Emacs 19. The name of the package is: - hm--html-menus-5.1.tar.gz + hm--html-menus-5.2.tar.gz With this package it is very easy to write html pages for the World Wide Web (WWW). Eg: In most cases the user gets help to construct a specific @@ -11,7 +11,8 @@ It is also possible to insert links and images by just clicking on its source and destination (drag and drop feature). -The biggest new features in this release are: +The biggest new features compared with release 5.0 are: +- commands to insert all elements, which are used by HTML 3.2. - a better drag and drop interface to insert links with the mouse - help feature for the drag and drop commands - there's now also a default drag and drop table for other modes @@ -24,7 +25,7 @@ - a lot of bug fixes Read the NEWS file to see news in detail... -You should find hm--html-menus-5.1.tar.gz on the following ftp server: +You should find hm--html-menus-5.2.tar.gz on the following ftp server: sunsite.unc.edu in /pub/Linux/apps/editors/emacs/ ftp.rrzn.uni-hannover.de in /pub/unix/editors/lemacs/contrib ftp.tnt.uni-hannover.de in /pub/editors/xemacs/contrib @@ -41,32 +42,35 @@ The package provides functions to insert the following stuff in html-pages: 1. Anchors: + relative links, general link; html link, info link, gopher link, file link; ftp link, news link, mail link, wais (direct) link, wais (gateway) link; - proggate link, local proggate link, general link; + proggate link, local proggate link, link target; 2. Frame elements: - full html frame with html, head, body, title, header and signature - elements or only the single elements; - link element; + full html frame with doctype, html, head, body, title, + header and signature elements or only the single elements; + meta, isindex, link and base element; html 'created'- and 'changed'- comments; the current date in the title; 3. Structure elements: menu or list item, menu, unordered list, ordered list, directory list; description list, description title, description entry; - new paragraph, new line, horizontal rule, table, table title, - table header, table row, table entry; + new paragraph, new line, horizontal rule, document division, + table, table title, table header, table row, table entry; 4. for formatting paragraphs: without links, with links, blockquote, listing, abstract; + basefont, font, center; 5. formatting: bold, italic, underline, typewriter, strikethru, super and subscript, - emphasized, strong, big, + emphasized, strong, small, big, definition, keyboard, variable, code, sample, citation, html comment; 6. include: - top aligned image, middle aligned image, bottom aligned image, - applet, parameter + top aligned image, middle aligned image, bottom aligned image; + general image element, map, area and all together; + applet, parameter; 7. forms: form; text, password, isindex, integer, float, date, url, scribble fields; @@ -95,7 +99,7 @@ expanded automatically; - preview html documents with the netscape - preview html documents with the xmosaic -- preview html documents with the w3 package for the lemacs and emacs +- preview html documents with the w3 package for the XEmacs and emacs You can insert links and images by clicking with Meta Button1 on its source and then on its destination. For this drag and drop interface diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/NEWS --- a/lisp/hm--html-menus/NEWS Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/NEWS Mon Aug 13 09:15:11 2007 +0200 @@ -1,3 +1,21 @@ +18.02.97 + Fixed a compilation bug. + -- BUILDED the version 5.2 of the package +17.02.97 + Changed the function `hm--html-read-alignment' according to the + HTML version 3.2. + Added a more general command for adding images. + Added the HTML elements MAP and AREA. + Added a command for adding an image and a map. +15.02.97 + Fixed some bugs in the insert full frame stuff. + Added the DOCTYPE to the full frame stuff. + Added the HTML elements DIV, FONT and BASEFONT. +14.02.97 + Added the HTML elements DOCTYPE, ISINDEX, BASE, META. + Added all one tag elements used in HTML 3.2 to the list + `hm--html-tag-name-alist' to make the indentation happy. + Fixed a bug in the indentation after one tag elements. 12.02.97 Renamed command-description.tmpl to command-description.html.tmpl. The indentation stuff can now be disabled by setting the diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/README --- a/lisp/hm--html-menus/README Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/README Mon Aug 13 09:15:11 2007 +0200 @@ -1,4 +1,4 @@ -This README file describes the emacs lisp package hm--html-menus-5.1. +This README file describes the emacs lisp package hm--html-menus-5.2. The package provides functions and various popup and pulldown menus for a html mode called hm--html-mode, a mode for writing html pages. @@ -25,7 +25,7 @@ only UNIX ?) platforms. NOTE: The current release isn't tested with the Emacs 19 (5.0 is but -5.1 isn't). One of the next releases in the near future :-) will be a +5.1 and 5.2 are not). One of the next releases in the near future :-) will be a bug fix only release for the Emacs 19. So please report any bugs to muenkel@tnt.uni-hannover.de to shorten the time until the Emacs 19 related bugs are fixed. @@ -36,8 +36,8 @@ Thanks to Richard Stallman, who has helped me to port this package to the Emacs 19 and thanks to John Ladwig, who has corrected a lot of the text and comments in this package and to all the other people like -Jerry G. DeLapp, Andreas Ernst and so on, who had provided code, -ideas, bug fixes or bug reports for this package. +Jerry G. DeLapp, Andreas Ernst, Bob Weiner and so on, who had provided +code, ideas, bug fixes or bug reports for this package. The package consists of the following files: @@ -53,7 +53,7 @@ some of these functions are similar to functions of the html-mode.el; hm--html-indentation.el : provides the indentation stuff; -hm--html-keys.el : provides the new keybindings; +hm--html-keys.el : provides the keybindings; hm--html-menu.el : provides the menus; hm--html-mode.el : provides the functions for the definition of the hm--html-mode; this is now the diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/command-description.html.tmpl Binary file lisp/hm--html-menus/command-description.html.tmpl has changed diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/frame.html.tmpl Binary file lisp/hm--html-menus/frame.html.tmpl has changed diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/hm--html-configuration.el --- a/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 09:15:11 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-configuration.el - Configurationfile for the html-mode ;;; -;;; $Id: hm--html-configuration.el,v 1.2 1997/02/15 22:21:03 steve Exp $ +;;; $Id: hm--html-configuration.el,v 1.3 1997/02/24 01:13:26 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -74,6 +74,11 @@ "*Your Name for the signature. For example: \"Heiko Münkel\".") +;;; HTML Doctype +(defvar hm--html-html-doctype-version "-//W3C//DTD HTML 3.2 Final//EN" + "The HTML version. This is used in the doctype element.") + + ;;; Your favorite server (eg: the name of the host of your own http server) ;;; This is used in some other variables @@ -471,6 +476,10 @@ Linux : (setq html-sigusr1-signal-value 10))") +;;; Meta information +(defvar hm--html-meta-name-alist '(("Expires") ("Keys") ("Author")) + "*Alist with possible names for the name or http-equiv attribute of meta.") + ;;; indentation (defvar hm--html-disable-indentation nil @@ -489,6 +498,124 @@ (defvar hm--html-tag-name-alist '(("!--" (:hm--html-one-element-tag t)) + ("!doctype" (:hm--html-one-element-tag t)) + ("isindex" (:hm--html-one-element-tag t) + (:hm--html-optional-attributes (prompt))) + ("base" (:hm--html-one-element-tag t) + (:hm--html-required-attributes (href))) + ("meta" (:hm--html-one-element-tag t) + (:hm--html-required-attributes (content)) + (:hm--html-optional-attributes (http-equiv name))) + ("link" (:hm--html-one-element-tag t) + (:hm--html-optional-attributes (href rel rev title))) + ("hr" (:hm--html-one-element-tag t) + (:hm--html-optional-attributes (align noshade size width))) + ("input" (:hm--html-one-element-tag t) + (:hm--html-optional-attributes + (type name value checked size maxlength src align))) + ("img" (:hm--html-one-element-tag t) + (:hm--html-required-attributes (src)) + (:hm--html-optional-attributes + (alt align height width border hspace vspace usemap ismap))) + ("param" (:hm--html-one-element-tag t) + (:hm--html-required-attributes (name)) + (:hm--html-optional-attributes (value))) + ("br" (:hm--html-one-element-tag t) + (:hm--html-optional-attributes (clear))) + ("basefont" (:hm--html-one-element-tag t) + (:hm--html-optional-attributes size)) + ("area" (:hm--html-one-element-tag t) + (:hm--html-required-attributes (alt)) + (:hm--html-optional-attributes (shape coords href nohref))) + ("option" (:hm--html-one-element-tag t) + (:hm--html-optional-attributes (selected value))) + + ("html" (:hm--html-two-element-tag t)) + ("head" (:hm--html-two-element-tag t)) + ("body" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (bgcolor text link vlink alink background)) + ) + ("h1" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("h2" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("h3" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("h4" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("h5" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("h6" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("address" (:hm--html-two-element-tag t)) + ("p" (:hm--html-one-or-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("ul" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (type compact))) + ("ol" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (type start compact))) + ("dl" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (compact))) + ("li" (:hm--html-one-or-two-element-tag t) + (:hm--html-optional-attributes (type (value "ol")))) + ("dt" (:hm--html-one-or-two-element-tag t)) + ("dd" (:hm--html-one-or-two-element-tag t)) + ("dir" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (compact))) + ("menu" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (compact))) + ("pre" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (width))) + ("div" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("center" (:hm--html-two-element-tag t)) + ("blockquote" (:hm--html-two-element-tag t)) + ("form" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (action method enctype))) + ("select" (:hm--html-two-element-tag t) + (:hm--html-required-attributes (name)) + (:hm--html-optional-attributes (size multiple))) + ("textarea" (:hm--html-two-element-tag t) + (:hm--html-required-attributes (name rows cols))) + ("table" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes + (align width border cellspacing cellpading))) + ("caption" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (align))) + ("tr" (:hm--html-one-or-two-element-tag t) + (:hm--html-optional-attributes (align valign))) + ("th" (:hm--html-one-or-two-element-tag t) + (:hm--html-optional-attributes + (nowrap rowspan colspan align valign width height))) + ("td" (:hm--html-one-or-two-element-tag t) + (:hm--html-optional-attributes + (nowrap rowspan colspan align valign width height))) + ("tt" (:hm--html-two-element-tag t)) + ("i" (:hm--html-two-element-tag t)) + ("b" (:hm--html-two-element-tag t)) + ("u" (:hm--html-two-element-tag t)) + ("strike" (:hm--html-two-element-tag t)) + ("big" (:hm--html-two-element-tag t)) + ("small" (:hm--html-two-element-tag t)) + ("sub" (:hm--html-two-element-tag t)) + ("sup" (:hm--html-two-element-tag t)) + ("em" (:hm--html-two-element-tag t)) + ("strong" (:hm--html-two-element-tag t)) + ("dfn" (:hm--html-two-element-tag t)) + ("code" (:hm--html-two-element-tag t)) + ("samp" (:hm--html-two-element-tag t)) + ("kbd" (:hm--html-two-element-tag t)) + ("var" (:hm--html-two-element-tag t)) + ("cite" (:hm--html-two-element-tag t)) + ("a" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (name href rel rev title))) + ("applet" (:hm--html-two-element-tag t) + (:hm--html-required-attributes (code width height)) + (:hm--html-optional-attributes (codebase alt name align hspace vspace))) + ("font" (:hm--html-two-element-tag t) + (:hm--html-optional-attributes (size color))) + ("map" (:hm--html-two-element-tag t) + (:hm--html-required-attributes (name))) ) "An alist with tag names known by the `hm--html-mode'. CURRENTLY THIS LIST CONTAINS NOT ALL TAGS!!!!. @@ -496,7 +623,9 @@ It is used to determine, if a tag is a one element tag or not. In the future it should also be used to get possible parameters of -the tag.") +the tag. + +Use lower case characters in this list!!!!") ;;; Announce the feature hm--html-configuration diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/hm--html-indentation.el --- a/lisp/hm--html-menus/hm--html-indentation.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-indentation.el Mon Aug 13 09:15:11 2007 +0200 @@ -151,7 +151,9 @@ (defun hm--html-is-one-element-tag-p (tag-name) "Returns t, if the tag with the tag-name is a one element tag." (assoc :hm--html-one-element-tag - (cdr (assoc* tag-name hm--html-tag-name-alist :test 'string=)))) + (cdr (assoc* (downcase tag-name) + hm--html-tag-name-alist + :test 'string=)))) (defun hm--html-calculate-indent-according-to-previous-tags () "Calculate the indent according to the previous tags in this line. diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/hm--html-keys.el --- a/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 09:15:11 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html-keys.el,v 1.2 1997/02/15 22:21:04 steve Exp $ +;;; $Id: hm--html-keys.el,v 1.3 1997/02/24 01:13:27 steve Exp $ ;;; ;;; Copyright (C) 1995, 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -27,8 +27,6 @@ ;;; Put this file in one of your load path directories. ;;; -(require 'hm--html-configuration) - (if (adapt-emacs19p) (progn diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/hm--html-menu.el --- a/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 09:15:11 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-menu --- A menu for the hm--html-mode. ;;; -;;; $Id: hm--html-menu.el,v 1.2 1997/02/15 22:21:04 steve Exp $ +;;; $Id: hm--html-menu.el,v 1.3 1997/02/24 01:13:27 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -37,14 +37,6 @@ ;;; for further installation points. ;;; -;(provide 'hm--html-menu) -;(require 'hm--html-drag-and-drop) -;(require 'html-mode) -;(require 'hm--html-mode) -;(require 'hm--html) -;(require 'adapt) - - ;; ;; Menu "HTML" ;; @@ -88,6 +80,7 @@ (hm--html-insert-template hm--html-frame-template-file) (file-exists-p hm--html-frame-template-file)] "----" + ["Doctype" hm--html-add-doctype t] ["Html" hm--html-add-html t] ["Head" hm--html-add-head t] ["Body" hm--html-add-body t] @@ -95,10 +88,14 @@ ["Title and Header..." hm--html-add-title-and-header t] ["Title..." hm--html-add-title t] ["Header..." hm--html-add-header t] - ["Node Link..." hm--html-add-normal-node-link t] ["Address" hm--html-add-address t] ["Signature" hm--html-add-signature t] "----" + ["Meta information..." hm--html-add-meta t] + ["Node Link..." hm--html-add-normal-node-link t] + ["Isindex..." hm--html-add-isindex t] + ["Document Base..." hm--html-add-base t] + "----" ["Created comment" hm--html-insert-created-comment t] ["Changed comment" hm--html-insert-changed-comment t] ["New date in title" hm--html-new-date t] @@ -131,6 +128,7 @@ "----" ["Paragraph container" hm--html-add-paragraph t] ["Paragraph start tag" hm--html-add-paragraph-separator t] + ["Document division" hm--html-add-document-division t] ["New line" hm--html-add-line-break t] ["Horizontal rule" hm--html-add-horizontal-rule t] ) @@ -138,6 +136,8 @@ ["Without links" hm--html-add-plaintext t] ["With links" hm--html-add-preformated t] "----" + ["Basefont..." hm--html-add-basefont t] + ["Font..." hm--html-add-font t] ["Blockquote" hm--html-add-blockquote t] ["Listing" hm--html-add-listing t] ["Abstract" hm--html-add-abstract t] @@ -210,11 +210,16 @@ ["Top aligned image..." hm--html-add-image-top t] ["Middle aligned image..." hm--html-add-image-middle t] ["Bottom aligned image..." hm--html-add-image-bottom t] + ["Image as map? ..." hm--html-add-image t] ["Drag & Drop" idd-start-mouse-drag-and-drop :active t :keys "\\[idd-mouse-drag-and-drop]"] "----" + ["Image map..." hm--html-add-image-map t] + ["Map..." hm--html-add-map t] + ["Area..." hm--html-add-area t] + "----" ["Applet..." hm--html-add-applet t] ["Parameter..." hm--html-add-applet-parameter t] ; "----" @@ -345,11 +350,13 @@ ) "----" ["Paragraph container" hm--html-add-paragraph-to-region t] + ["Document division" hm--html-add-document-division-to-region t] ) ("Formatting Paragraphs" ["Without links" hm--html-add-plaintext-to-region t] ["With links" hm--html-add-preformated-to-region t] "----" + ["Font..." hm--html-add-font-to-region t] ["Blockquote" hm--html-add-blockquote-to-region t] ["Listing" hm--html-add-listing-to-region t] ["Abstract" hm--html-add-abstract-to-region t] @@ -418,6 +425,11 @@ "----" ["HTML Comment" hm--html-add-comment-to-region t] ) + ("Include" + ["Map..." hm--html-add-map-to-region t] + "----" + ["Applet..." hm--html-add-applet-to-region t] + ) ("Forms" ["Form..." hm--html-add-form-to-region t]) )) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/hm--html-mode.el --- a/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 09:15:11 2007 +0200 @@ -2,7 +2,7 @@ ;;; ;;; Keywords: hypermedia languages help docs wp ;;; -;;; $Id: hm--html-mode.el,v 1.2 1997/02/15 22:21:04 steve Exp $ +;;; $Id: hm--html-mode.el,v 1.3 1997/02/24 01:13:27 steve Exp $ ;;; ;;; Copyright (C) 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -63,11 +63,12 @@ (require 'adapt) (require 'hm--date) (require 'hm--html) +(eval-when-compile + (require 'hm--html-configuration)) (hm--html-load-config-files) (require 'hm--html-indentation) (require 'hm--html-menu) (require 'hm--html-drag-and-drop) -;(hm--html-load-config-files) ; Load the system and user configuration files (require 'hm--html-keys) @@ -76,7 +77,7 @@ (defconst hm--html-menus-package-name "hm--html-menus") -(defconst hm--html-menus-package-version "5.1") +(defconst hm--html-menus-package-version "5.2") ;;; Generate the help buffer faces @@ -136,9 +137,6 @@ (hm--install-html-menu hm--html-mode-pulldown-menu-name) (make-variable-buffer-local 'write-file-hooks) (add-hook 'write-file-hooks 'hm--html-maybe-new-date-and-changed-comment) -; (make-local-variable 'font-lock-keywords) -; (setq font-lock-keywords-case-fold-search t) -; (setq font-lock-keywords hm--html-font-lock-keywords) (put major-mode 'font-lock-defaults '((hm--html-font-lock-keywords hm--html-font-lock-keywords-1 hm--html-font-lock-keywords-2) @@ -204,30 +202,6 @@ ) -;(or (assq 'hm--html-region-mode minor-mode-alist) -; (setq minor-mode-alist -; (purecopy -; (append minor-mode-alist -; '((hm--html-region-mode " Region")))))) - - - -;(defun hm--html-region-mode (on) -; "Turns the minor mode hm--html-region-mode on or off. -;The function turns the hm--html-region-mode on, if ON is t and off otherwise." -; (if (eq major-mode 'hm--html-mode) -; ;;(string= mode-name "HTML") -; (if on -; ;; html-region-mode on -; (progn -; (setq hm--html-region-mode t) -; (use-local-map hm--html-region-mode-map)) -; ;; html-region-mode off -; (setq hm--html-region-mode nil) -; (use-local-map hm--html-mode-map)))) - - - ;;; hm--html-minor-mode diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hm--html-menus/hm--html.el --- a/lisp/hm--html-menus/hm--html.el Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hm--html-menus/hm--html.el Mon Aug 13 09:15:11 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html.el,v 1.2 1997/02/15 22:21:04 steve Exp $ +;;; $Id: hm--html.el,v 1.3 1997/02/24 01:13:28 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -27,10 +27,6 @@ ;;; Put this file in one of your load path directories. ;;; -;(require 'hm--date) -;(require 'adapt) - - (defun hm--html-set-marker-at-position (&optional position) "Creates a new marker and set the marker at the POSITION. If POSITION is nil, then the marker is set at the current point. @@ -156,6 +152,12 @@ (hm--html-add-tags-to-region 'hm--html-insert-start-tag "
  • " 'hm--html-insert-end-tag "
  • ")) +(defun hm--html-add-basefont (size) + "Adds the HTML tag for a basefont." + (interactive (list (hm--html-read-font-size t))) + (hm--html-add-tags 'hm--html-insert-start-tag + (concate ""))) + (defun hm--html-add-line-break () "Adds the HTML tag for a line break." (interactive) @@ -191,6 +193,105 @@ (interactive) (hm--html-add-tags 'hm--html-insert-start-tag "

    ")) +(defun hm--html-add-doctype () + "Adds the tag with the doctype." + (interactive) + (goto-char (point-min)) + (hm--html-add-tags 'hm--html-insert-start-tag + (concat "")) + (newline)) + +(defun hm--html-search-place-for-element-in-head (end-point) + "Searches the point for inserting an element between the head tags." + (let ((point (point))) + (if (and end-point (< (point) end-point)) + (point) + (goto-char (point-min)) + (if (re-search-forward + (concat "\\(]*>" head-end-point t) + (delete-region (match-beginning 0) (match-end 0))) + (t (goto-char point) + (hm--html-search-place-for-element-in-head head-end-point))) + (hm--html-add-tags 'hm--html-insert-start-tag + (concat "") + ">"))))) + +(defun hm--html-add-base (href) + "Inserts the base tag. HREF is the value of the href attribute." + (interactive (list (hm--html-read-url "URL of this document: " + nil + nil + t + nil))) + (save-excursion + (let ((point (point)) + (case-fold-search t) + (head-end-point)) + (goto-char (point-min)) + (setq head-end-point (when (re-search-forward + "\\(]*>" head-end-point t) + (delete-region (match-beginning 0) (match-end 0))) + (t (goto-char point) + (hm--html-search-place-for-element-in-head head-end-point))) + (hm--html-add-tags 'hm--html-insert-start-tag + (concat "") + ">"))))) + +(defun hm--html-add-meta (name content &optional name-instead-of-http-equiv) + "Inserts the meta tag." + (interactive (list (completing-read "Name: " hm--html-meta-name-alist) + (read-string "Content: "))) + (save-excursion + (let ((point (point)) + (case-fold-search t) + (head-end-point)) + (goto-char (point-min)) + (setq head-end-point (when (re-search-forward + "\\(")))) ;;; Functions which include something in HTML- documents @@ -245,9 +346,7 @@ (let ((alttype (string-to-int (completing-read -; "0: No ALT atribute, 1: ALT=\"\", 2: ALT=Text, 3: ALT=External Viewer: " "0: No ALT atribute, 1: ALT=\"\", 2: ALT=Text: " -; '(("0") ("1") ("2") ("3")) '(("0") ("1") ("2")) nil t @@ -261,13 +360,121 @@ (string-match "\\." (file-name-nondirectory url))))) -; ((= alttype 3) (concat "" -; (file-name-nondirectory url) -; "")) ))) +(defun hm--html-read-alignment (prompt) + "Read the value for the align attribute." + (upcase (completing-read prompt + '(("left") ("right") ("top") ("bottom") ("middle")) + nil + t + "left"))) + +(defvar hm--html-shape-history nil + "History variable for reading the shape of an image map.") + +(defun hm--html-read-shape () + "Reads the shap for an area element." + (upcase(completing-read "The shape of the area: " + '(("rect") ("circle") ("poly")) + nil + t + (or (car hm--html-shape-history) "rect") + 'hm--html-shape-history))) + +(defun hm--html-read-rect-coords () + "Reads rectangle coordinates for the area element." + (concat (read-string "Left x position of the rectangle: ") ", " + (read-string "Top y position of the rectangle: ") ", " + (read-string "Right x position of the rectangle: ") ", " + (read-string "Bottom y position of the rectangle: "))) + +(defun hm--html-read-circle-coords () + "Reads circle coordinates for the area element." + (concat (read-string "x position of the center of the circle: ") ", " + (read-string "y position of the center of the circle: ") ", " + (read-string "Radius: "))) + +(defun hm--html-read-one-poly-coordinate (&optional empty-string-prompt) + "Reads one poly coordinate pair." + (let* ((x (read-string (concat "x coordinate" + (or empty-string-prompt "") + ": "))) + (y (unless (string= "" x) + (read-string "y coordinate: ")))) + (if (string= "" x) + "" + (concat x ", " y)))) + +(defun hm--html-read-more-poly-coordinates () + "Reads poly coordinates until an empty string is given." + (let ((coord (hm--html-read-one-poly-coordinate + " (Empty string for no further coords!)"))) + (cond ((string= "" coord) "") + (t (concat ", " coord (hm--html-read-more-poly-coordinates)))))) + +(defun hm--html-read-poly-coords () + "Reads poly coordinates for the area element." + (concat (hm--html-read-one-poly-coordinate) ", " + (hm--html-read-one-poly-coordinate) ", " + (hm--html-read-one-poly-coordinate) + (hm--html-read-more-poly-coordinates))) + +(defun hm--html-add-area (href alt shape coords) + "Adds the tags for an area at the current point." + (interactive (let* ((href (hm--html-read-url "Url for the image area: ")) + (alt (hm--html-read-altenate href)) + (shape (hm--html-read-shape)) + (coords (cond ((string= shape "RECT") + (hm--html-read-rect-coords)) + ((string= shape "CIRCLE") + (hm--html-read-circle-coords)) + ((string= shape "POLY") + (hm--html-read-poly-coords)) + (t (error "No function to read \"" + shape + "\" coordinates!"))))) + (list href alt shape coords))) + (hm--html-add-tags 'hm--html-insert-end-tag-with-newline + (concat ""))) + +(defvar hm--html-use-image-as-map ':ask + "Internal variable of `hm--html-add-image'. +nil => insert the image element without an usemap attribute. +t => insert the image element with an usemap attribute. +:ask => ask, if the image element should have an usemap attribute.") + +(defun hm--html-add-image (href alt alignment mapname) + "Add an image." + (interactive (let* ((href (hm--html-read-url "Image URL: ")) + (alt (hm--html-read-altenate href)) + (alignment (hm--html-read-alignment + "Alignment of the image: ")) + (use-as-map (if (eq hm--html-use-image-as-map ':ask) + (y-or-n-p + "Use the image as a map with links? ") + hm--html-use-image-as-map)) + (mapname (and use-as-map (hm--html-read-mapname)))) + (list href alt alignment mapname))) + (hm--html-add-tags + 'hm--html-insert-start-tag + (concat ""))) + (defun hm--html-add-image-bottom (href alt) "Add an image, bottom aligned." @@ -679,6 +886,23 @@ " -->")) +(defun hm--html-add-document-division (alignment) + "Adds the HTML tags for document division at the current point." + (interactive (list (hm--html-read-alignment "Alignment of the division: "))) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + (concat "

    ") + 'hm--html-insert-end-tag-with-newline + "
    ")) + + +(defun hm--html-add-document-division-to-region () + "Adds the HTML tags for document division to the region." + (interactive (list (hm--html-read-alignment "Alignment of the division: "))) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline + (concat "
    ") + 'hm--html-insert-end-tag-with-newline + "
    ")) + (defun hm--html-add-preformated () "Adds the HTML tags for preformated text at the point in the current buffer." @@ -756,9 +980,9 @@ "Adds the HTML tags for Strikethru at the point in the current buffer." (interactive) (hm--html-add-tags 'hm--html-insert-start-tag - "" + "" 'hm--html-insert-end-tag - "")) + "")) (defun hm--html-add-strikethru-to-region () @@ -1111,8 +1335,77 @@ 'hm--html-insert-end-tag "")) - - +(defun hm--html-read-font-size (&optional only-absolute-size) + "Reads the size for the FONT element. +It returns nil, if the size should not be changed." + (let ((size + (if only-absolute-size + (completing-read "The absolute font size (1 .. 7): " + '(("7") ("6") ("5") ("4") ("3") ("2") ("1")) + nil + t + "4") + (completing-read "The relative (+/-) or absolute font size: " + '(("-7") ("-6") ("-5") ("-4") ("-3") ("-2") ("-1") + ("+7") ("+6") ("+5") ("+4") ("+3") ("+2") ("+1") + ("7") ("6") ("5") ("4") ("3") ("2") ("1") + ("use-basefont")) + nil + t + "use-basefont-size")))) + (if (string= size "use-basefont-size") + nil + size))) + +(defun hm--html-read-font-color () + "Reads the size for the FONT element. +It returns nil, if the color should not be changed." + (let ((color + (completing-read "The font color: " + '(("Black") ("Silver") ("Gray") ("White") ("Maroon") + ("Green") ("Lime") ("Olive") ("Yellow") ("Navy") + ("Red") ("Purple") ("Fuchsia") ("Blue") ("Teal") + ("Aqua") ("dont-set-color")) + nil + nil + "dont-set-color"))) + (if (string= color "dont-set-color") + nil + color))) + + +(defun hm--html-add-font (size color) + "Adds the HTML tags for Font at the point in the current buffer." + (interactive (list (hm--html-read-font-size) + (hm--html-read-font-color))) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + (concat "") + 'hm--html-insert-end-tag-with-newline + "")) + + +(defun hm--html-add-font-to-region () + "Adds the HTML tags for Font to the region." + (interactive (list (hm--html-read-font-size) + (hm--html-read-font-color))) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline + (concat "") + 'hm--html-insert-end-tag-with-newline + "")) ;;; Lists @@ -1151,6 +1444,49 @@ 'hm--html-insert-end-tag-with-newline "")) + +(defvar hm--html-mapname-history nil + "The history variable for the function `hm--html-read-mapname'.") + +(defun hm--html-read-mapname () + "Reads the name of an image map." + (let ((name (read-string "The name of the image map: " + (or (car hm--html-mapname-history) + "map") + 'hm--html-mapname-history))) + name)) + +(defun hm--html-add-image-map () + "Adds an image and a map element." + (interactive) + (let* ((href (hm--html-read-url "Image URL: ")) + (alt (hm--html-read-altenate href)) + (alignment (hm--html-read-alignment + "Alignment of the image: ")) + (mapname (hm--html-read-mapname))) + (hm--html-add-image href alt alignment mapname) + (newline) + (hm--html-add-map mapname) + (call-interactively 'hm--html-add-area))) + +(defun hm--html-add-map (name) + "Adds the HTML tags for map at the current point." + (interactive (list (hm--html-read-mapname))) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + (concat "") + 'hm--html-insert-end-tag + "") + (end-of-line 0)) + +(defun hm--html-add-map-to-region (name) + "Adds the HTML tags for map to the region." + (interactive (list (hm--html-read-mapname))) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline + (concat "") + 'hm--html-insert-end-tag-with-newline + "")) + + (defun hm--html-add-numberlist () "Adds the HTML tags for a numbered list at the point in the current buffer." (interactive) @@ -1170,8 +1506,6 @@ "
      " 'hm--html-insert-end-tag-with-newline "
    ")) -; 'hm--html-insert-start-tag -; "
  • ")) (defun hm--html-add-directory-list () @@ -1193,8 +1527,6 @@ "" 'hm--html-insert-end-tag-with-newline "")) -; 'hm--html-insert-start-tag -; "
  • ")) (defun hm--html-add-list () @@ -1217,19 +1549,6 @@ "
      " 'hm--html-insert-end-tag-with-newline "
    ")) -; 'hm--html-insert-start-tag -; "
  • ")) - - -;(defun hm--html-add-menu () -; "Adds the HTML tags for a menu." -; (interactive) -; (hm--html-add-tags 'hm--html-insert-start-tag-with-newline -; "" -; 'hm--html-insert-end-tag-with-newline -; "" -; 'hm--html-insert-start-tag -; "
  • ")) (defun hm--html-add-menu () @@ -1253,9 +1572,6 @@ 'hm--html-insert-end-tag-with-newline "")) -; 'hm--html-insert-start-tag -; "
  • ")) - (defun hm--html-add-description-title-and-entry () "Adds a definition title and entry. @@ -1356,30 +1672,33 @@ (defun hm--html-make-signature-link-string (signature-file-name) "Returns a string which is a link to a signature file." (concat - "")) - + (defun hm--html-delete-old-signature () "Searches for the old signature and deletes it, if the user want it" (save-excursion (goto-char (point-min)) (let ((case-fold-search t)) - (if (search-forward (concat "
    " - "[ \t\n]*" + "" nil t) + (re-search-forward "
    [ \t]*[\n]?" + nil + t) (point)))) - (if (yes-or-no-p "Delete the old signature (yes or no) ?") - (delete-region signature-start signature-end))))))) + (when (yes-or-no-p "Delete the old signature (yes or no) ?") + (delete-region signature-start signature-end) + (hm--html-indent-line))))))) (defun hm--html-set-point-for-signature () @@ -1392,7 +1711,7 @@ (cond ((search-backward "" nil t) (end-of-line 0) (if (> (current-column) 0) - (newline 2))) + (newline 1))) ((search-backward "" nil t) (end-of-line 0) (if (> (current-column) 0) @@ -1412,10 +1731,10 @@ (save-excursion (hm--html-delete-old-signature) (hm--html-set-point-for-signature) - (hm--html-add-tags 'hm--html-insert-start-tag - "
    " + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + "
    " 'hm--html-insert-end-tag - "
    " + "\n
    " 'hm--html-insert-start-tag (hm--html-make-signature-link-string hm--html-signature-file) @@ -1459,9 +1778,9 @@ this tag or the beginning of the file otherwise." (goto-char (point-min)) (let ((case-fold-search t)) - (cond ((search-forward-regexp "" nil t) (newline)) - ((search-forward-regexp "" nil t) (newline)) - ((search-forward-regexp "" nil t) (newline)) + (cond ((search-forward-regexp "]*>" nil t) (newline)) + ((search-forward-regexp "]*>" nil t) (newline)) + ((search-forward-regexp "]*>" nil t) (newline)) (t)))) @@ -1522,7 +1841,8 @@ (defun hm--html-add-html () "Adds the HTML tags and in the buffer. -The tag will be inserted at the beginning and at the +The tag will be inserted at the beginning (after the +, if it is already there.) and at the end of the file." (interactive) (let ((new-cursor-position nil) @@ -1531,6 +1851,7 @@ (goto-char (point-min)) (if (search-forward "" nil t) (error "There is an old tag in the current buffer !") + (re-search-forward "]*>[ \t\n]*" nil t) (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "") ; (newline 1) ) @@ -1545,11 +1866,13 @@ (defun hm--html-add-head () "Adds the HTML tags and in the buffer. -The tags will be inserted after or at the beginning of the file. +The tags will be inserted after or at the beginning +of the file after (if it is already there). The function also looks for the tags and ." (interactive) (let ((case-fold-search t)) (goto-char (point-min)) + (re-search-forward "]*>[ \t\n]*" nil t) (if (search-forward "" nil t) (if (search-forward "" nil t) (error "There is an old tag in the current buffer !") @@ -1607,7 +1930,7 @@ (if (search-backward "" nil t) (error "There is an old tag in the current buffer !"))) (forward-char -1))) - (let ((end-tag-position (point))) + (let ((end-tag-position (set-marker (make-marker) (point)))) (if (search-backward "" nil t) (progn (forward-char 7) @@ -1615,7 +1938,7 @@ (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "") (let ((cursor-position (point))) - (goto-char (+ end-tag-position 8)) + (goto-char end-tag-position) (hm--html-add-tags 'hm--html-insert-end-tag-with-newline "") (goto-char cursor-position) @@ -1637,9 +1960,6 @@ (defun hm--html-add-title-and-header (title) "Adds the HTML tags for a title and a header in the current buffer." -; (interactive "sTitle and Header String: \nnHeader Size (1 .. 6): ") -; (if (> size 6) -; (message "The size must be a number from 1 to 6 !") (interactive "sTitle and Header String: ") (let ((case-fold-search t)) (hm--html-add-title title) @@ -1661,10 +1981,6 @@ (defun hm--html-add-title-and-header-to-region () "Adds the HTML tags for a title and a header to the region." -;The parameter 'size' spezifies the size of the header.";" -; (interactive "nSize (1 .. 6): ") -; (if (> size 6) -; (message "The size must be a number from 1 to 6 !") (interactive) (let ((title (buffer-substring (region-beginning) (region-end)))) (hm--html-add-header-to-region 1) @@ -1678,6 +1994,7 @@ title and the header of the document." (interactive "sTitle and Header String: ") (let ((case-fold-search t)) + (hm--html-add-doctype) (hm--html-add-html) (hm--html-add-head) (hm--html-add-body) @@ -1698,6 +2015,7 @@ the string for the title and the header of the document." (interactive) (hm--html-add-title-and-header-to-region) + (hm--html-add-doctype) (hm--html-add-html) (hm--html-add-head) (hm--html-add-body) diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hyperbole/ChangeLog --- a/lisp/hyperbole/ChangeLog Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hyperbole/ChangeLog Mon Aug 13 09:15:11 2007 +0200 @@ -1,12 +1,222 @@ -Sat Nov 4 04:41:49 1995 Bob Weiner +Fri Feb 21 17:49:01 1997 Bob Weiner + +* hmouse-reg.el (hmouse-get-bindings): + (hmouse-setup): +* hmouse-sh.el (hmouse-get-bindings): + (hmouse-setup): +* hmouse-key.el (hmouse-set-bindings): +Modified to do nothing when running in batch mode (noninteractively). + + +============================================================================== +V4.021 changes ^^^^: +============================================================================== + +Tue Feb 18 18:57:27 1997 Bob Weiner + +* hui-mini.el (hui:menus): Added "Doc/About" menu item +* hui-menu.el (infodock-hyperbole-menu): Added "About" menu item. +* hypb.el (hypb:ida-logo-keymap): + (hypb:ida-home-page): + (hypb:display-file-with-logo): Added to support About Hyperbole command. + +Mon Feb 17 15:27:21 1997 Bob Weiner + +* hversion.el (hyperb:microcruft-os-p): Added. + +Sat Feb 15 16:03:42 1997 Bob Weiner + +* hpath.el (hpath:find): Fixed bug that returned nil (now is 't) if file + was displayed using a specialized function. + (hpath:find-line): Added to handle displaying of all files at + specific lines (hpath:find does not work for this use since it + may call external display functions). +* hactypes.el (link-to-file-line): Rewrote to call hpath:find-line. + +Fri Feb 14 11:39:09 1997 Bob Weiner + +* hrmail.el (rmail-forward): Updated to V19 compatibility. + +Sun Jan 26 14:32:28 1997 Bob Weiner + +* hmouse-sh.el (hmouse-get-bindings): +* hmouse-reg.el (hmouse-get-bindings): Rearranged order of initial + conditional so that lemacs or emacs19 always takes precedence over + hyperb:window-system setting, which may be "xterm". + +* hmouse-key.el (or hyperb:xemacs-p hyperb:emacs19-p): Prevent any attempt + to load pre-dumped mouse libraries when running under X terms on these + versions of emacs. + +* hyperbole.el (hbut:key-src): Added this autoload to avert error if the + rolodex is loaded before the Hyperbole system and then a rolo-edit, {e}, + request is made within the match buffer. -* kotl/kfill.el (fill-paragraph): Fixed interface problem with Emacs 19 - which expected justify-flag = 'full. +* hgnus.el: Updated to support new Gnus gnus-msg.el replacement for gnuspost.el. + +* hversion.el (sm-window-sys-term): +* hbmap.el (hbmap:dir-user): Patched to support GNU Emacs running + natively under Windows NT. + +Tue Jan 14 15:45:14 1997 Bob Weiner + +* ../../etc/hypb-mouse.txt (Special Modes): Added Objective-C, Java and + Fortran support documentation. + +Mon Jan 6 18:59:13 1997 Bob Weiner + +* kotl/klink.el (klink:at-p): Eliminated matches to URLs for now. + +Wed Dec 25 22:01:05 1996 Bob Weiner + +* hmouse-tag.el: Changed all opening quotes in comments from ' to `. + +Tue Dec 10 16:40:09 1996 Bob Weiner + +* wrolo.el (wrolo-mode-syntax-table): Added to support syntactic selection + of delimited e-mail addresses. + +Fri Dec 6 12:34:31 1996 Bob Weiner + +* hmail.el (hmail:region): Fixed bug that extracted region from the wrong + buffer. + +Thu Dec 5 15:34:55 1996 Bob Weiner + +* hibtypes.el (annot-bib): Eliminated conflict with PPG-sw-process-id + ibtype. + +* hpath.el (hpath:is-p): Fixed error triggered when tried to format a path + with more than one %s. + +Wed Dec 4 13:39:09 1996 Bob Weiner + +* kotl/kmenu.el (id-menubar-kotl): Fixed so this mode menu is properly + installed under InfoDock. + +Tue Nov 26 21:21:50 1996 Bob Weiner + +* hui-menu.el (infodock-hyperbole-menu): Added Customization option that + sets the program used to display URLs. + +Thu Nov 14 18:11:36 1996 Bob Weiner + +* hmouse-tag.el (smart-*-at-tag-p): Modified to flash tag as a hyperbutton + when pressed, if Hyperbole has been loaded and flashing is supported + on the current device. + +* hbut.el (ibut:label-set): Made this return its LABEL argument. Useful + when label has not yet been saved in a variable. -* hmail.el (hmail:region): Fixed bug with wrong current buffer that caused - outliner {C-c @} command to fail. +* kotl/klink.el (klink:at-p): Ignore HTML and SGML tags when looking for Klinks. + +Sun Nov 10 01:47:01 1996 Bob Weiner + +* wrolo.el (rolo-sort-level): Made case-insensitive. + (rolo-add): Fixed bug caused by a call to widen that sometimes + failed to leave point at the newly added entry if the rolodex + buffer was already displayed when the rolo-add call was made. + +* hmouse-tag.el (smart-lisp): Display message and beep when tag is not found. + +* hibtypes.el (function-in-buffer): +* hactypes.el (function-in-buffer): Added to follow function references + that are defined in the same buffer as the reference. + (annot-bib): + (exec-shell-cmd): + (man-show): + (rfc-toc): Updated all of these to use hpath:display-where + output display setting. + (link-to-elisp-doc): Also modified to move point to the + documentation buffer. + +* hui.el (hui:hbut-current-act): Added. + +Fri Nov 8 21:37:34 1996 Bob Weiner + +* hbut.el (ebut:act): Added for use when activating an explicit button + from a menu. + (ebut:list): Fixed bug that returned (nil) when no explicit + buttons were found. +* hui-menu.el (hui-menu-explicit-buttons): Added to display a list of + explicit buttons for activation via the Explicit-Button menu. +* hui-menu.el (hyperbole-gbut-menu): Added to display a list of existing + global buttons for activation via the Global-Button menu. + +Tue Nov 5 19:26:17 1996 Bob Weiner + +* hibtypes.el (pathname): Modified to display Emacs Lisp libraries when + given as delimited filenames, without any path. + +Fri Nov 1 00:26:13 1996 Bob Weiner + +* hui-mouse.el (hkey-alist): Moved OO-Browser handler to near bottom so + that it does not override mode-specific handlers. + +Thu Oct 31 20:01:34 1996 Bob Weiner -Fri Nov 3 22:40:34 1995 Bob Weiner +* hui-mouse.el (hkey-alist): Added Action and Assist key support for Java + identifiers. +* hyperbole.el: Added Java autoloads. +* hmouse-tag.el (smart-java-package-dirs): Added this variable as the + setting of where Java package source code can be found when the + OO-Browser is not in use. Defaults to a single item list of + "${JAVA_HOME}/src/" if JAVA_HOME is set. + (smart-java-*): Added point and click identifier jumping for Java. + (smart-tags-file): Added optional argument NAME-OF-TAGS-FILE + so can search for OO-Browser lookup tables. + (smart-java-cross-reference): Added to follow @see cross-references. + +Sat Oct 26 01:05:29 1996 Bob Weiner + +* hui-menu.el (infodock-hyperbole-menu): Added Customization submenu. +* hui-mini.el (hui:menus): Added Cust/ submenu. + +* hbut.el (hbut:source): Fixed bug that neglected to account for double + quotes around the name within the printed representation of + a buffer object. + +Fri Oct 25 13:52:51 1996 Bob Weiner + +* hmouse-tag.el: Updated function to use with new buffer display protocol. +* hactypes.el: Updated many definitions here to use hpath:find and + hpath:display-buffer. +* hui-mouse.el (smart-dired): Changed call of hpath:find-other-window to + hpath:find to use new user-definable display location protocol. +* hpath.el (hpath:find): Expanded optional values of 2nd arg and made + default location of an internally displayed file be given by the + value of the hpath:display-where variable. +* hpath.el (hpath:display-buffer): + (hpath:display-buffer-other-frame): Added for linked to buffers. + (hpath:find-other-frame): Added for use in hpath:display-where-alist. +* hsite-ex.el (hpath:display-where): + (hpath:display-where-alist): + (hpath:display-buffer-alist): + Added these new variables to control where Hyperbole displays link referents. + The first one documents the possibilities and the second two specify + the function to call for each possibility. + +Tue Oct 22 01:21:53 1996 Bob Weiner + +* kotl/kvspec.el (kvspec:update-modeline): Fixed to accomodate specialized + extents in the modeline introduced by XEmacs 19.14. + +* hui-mouse.el (hkey-alist): Added support for new id-edit-mode which + can be setup to activate whenever a region is highlighted with the + mouse. When id-edit-mode is active the Action Key (or the Assist Key) + will paste the region that was highlighted at point. The key {y} also + happens to do the same thing in this mode, but has the additional + property that it will cycle through previous entries in the kill-ring. + +Fri Sep 20 22:19:33 1996 Bob Weiner + +* Changed `cs.uiuc.edu' to `xemacs.org', the new Hyperbole distribution site. + +============================================================================== +V4.02 changes ^^^^: +============================================================================== + +Fri Nov 3 22:40:34 1995 Bob Weiner * hsys-w3.el: Renamed entries in this file and added action-key-url-function definition in "hyperbole.el", which can be @@ -14,18 +224,18 @@ the Action Key. Also, loaded this library by default instead of requiring that it be set up in "hsite.el". -Fri Nov 3 19:25:24 1995 Bob Weiner +Fri Nov 3 19:25:24 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode): Fixed so re-narrows a formatted koutline to just its cells when invoked. -Fri Nov 3 19:29:58 1995 Bob Weiner +Fri Nov 3 19:29:58 1995 Bob Weiner * kotl/kvspec.el (kvspec:blank-lines): Modified to allow toggling blank lines in a read-only outline and to not change the modification status of the buffer when kvspec:toggle-blank-lines is used. -Fri Nov 3 01:28:44 1995 Bob Weiner +Fri Nov 3 01:28:44 1995 Bob Weiner * man/hypb-mouse.txt: Updated to reflect new smart-scroll-proportional default setting. @@ -38,7 +248,7 @@ V4.01 changes ^^^^: ============================================================================== -Thu Nov 2 00:52:26 1995 Bob Weiner +Thu Nov 2 00:52:26 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:cell-help): Fixed this, the {C-c h} command to properly deal with a cell-ref = 0. In this case, always display @@ -47,7 +257,7 @@ * kotl/kview.el (kcell-view:previous): Fixed bug that moved to a hidden cell when visible-p flag was given. -Wed Nov 1 02:05:36 1995 Bob Weiner +Wed Nov 1 02:05:36 1995 Bob Weiner * kotl/klink.el (klink:parse): Changed to require a common following any pathname in a link to prevent parsing, <3g |en>, as a pathname followed @@ -61,7 +271,7 @@ * kotl/kotl-mode.el: Fixed improper modification of global minor-mode-alist and mode-line-format values. -Tue Oct 31 00:45:44 1995 Bob Weiner +Tue Oct 31 00:45:44 1995 Bob Weiner * wrolo.el (rolo-mail-to): Added to compose mail to current or next e-mail address when in a rolodex or mail buffer. Bound to {m} in rolodex @@ -73,7 +283,7 @@ * kotl/kotl-mode.el (kotl-mode:to-valid-position): Optimized a bit further. -Mon Oct 30 01:37:31 1995 Bob Weiner +Mon Oct 30 01:37:31 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:copy-to-buffer): Made the default buffer to copy to the buffer in the other window of this frame, if any. Also @@ -102,7 +312,7 @@ * kotl/kimport.el: Rewrote all of these functions to handle importation at an arbitrary level in an existing koutline. -Sun Oct 29 01:26:25 1995 Bob Weiner +Sun Oct 29 01:26:25 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:demote-tree): (kotl-mode:promote-tree): Fixed bug that could leave @@ -135,7 +345,7 @@ foreign text buffer when kotl-mode calls this function within a foreign format buffer. -Sat Oct 28 02:32:12 1995 Bob Weiner +Sat Oct 28 02:32:12 1995 Bob Weiner * kotl/klink.el (klink:create): (link-to-kotl): @@ -148,7 +358,7 @@ character from : to |. Augment viewspec characters preceded by a colon are ignored, for now. -Fri Oct 27 15:16:11 1995 Bob Weiner +Fri Oct 27 15:16:11 1995 Bob Weiner * kotl/kview.el (kview:set-label-separator): Rewrote so properly changes the separator in the current view. Made it interactive and removed @@ -161,7 +371,7 @@ * kotl/kprop-xe.el (kproperty:properties): Changed definition since text-properties-at did not return the list of kproperties. -Thu Oct 26 00:06:49 1995 Bob Weiner +Thu Oct 26 00:06:49 1995 Bob Weiner * hui-mini.el (hui:menus): Simplified a number of documentation display entries. @@ -194,7 +404,7 @@ (kimport:text-cells): Added to import text paragraph as cells all at the same level. -Wed Oct 25 02:24:35 1995 Bob Weiner +Wed Oct 25 02:24:35 1995 Bob Weiner * kotl/kfile.el (kfile:update): Added kotl-mode setting to the first line of koutline files so they are read in with the right mode even if they @@ -218,11 +428,11 @@ Hyperbole, installing it and filled out the whole Hyperbole Outliner chapter. -Tue Oct 24 03:52:40 1995 Bob Weiner +Tue Oct 24 03:52:40 1995 Bob Weiner * man/hyperbole.texi (Configuration): Renamed from Initializing. -Mon Oct 23 01:00:54 1995 Bob Weiner +Mon Oct 23 01:00:54 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:top-cells): Simplified and fixed to utilize blank lines setting. @@ -260,7 +470,7 @@ * kotl/EXAMPLE.kotl: Updated to explain view spec handling. -Sun Oct 22 00:38:45 1995 Bob Weiner +Sun Oct 22 00:38:45 1995 Bob Weiner * hbut.el (ebut:key-src): Fixed bug that prevented match to hbut:source-prefix line when in a collapsed outline line. @@ -281,7 +491,7 @@ wrolo-menu.el (wrolo-menubar-menu): Fixed bug when current-menubar was nil, would not display menubar entry under Emacs 19 even though it should. -Sat Oct 21 01:07:32 1995 Bob Weiner +Sat Oct 21 01:07:32 1995 Bob Weiner * kotl/kview.el (kview:default-blank-lines): (kview:default-levels-to-show): @@ -307,23 +517,23 @@ * kotl/kfill.el (kfill:prefix-table): Generalized supercite citation prefix. -Tue Oct 17 01:21:37 1995 Bob Weiner +Tue Oct 17 01:21:37 1995 Bob Weiner * hinit.el (hyperb:check-dir-user): Call make-directory function if available. -Mon Oct 16 01:02:19 1995 Bob Weiner +Mon Oct 16 01:02:19 1995 Bob Weiner * wrolo.el (rolo-file-list): Set to c:/_rolodex.otl under MS-DOS and Windows. * hbmap.el (hbmap:dir-user): Set to c:/_hyperb/ under MS-DOS and Windows. * hbut.el (hattr:filename): Set to _hypb under MS-DOS and Windows. -Sun Oct 15 17:32:46 1995 Bob Weiner +Sun Oct 15 17:32:46 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:copy-region-as-kill): Don't trigger error when called in a read-only buffer. -Fri Oct 6 12:56:57 1995 Bob Weiner +Fri Oct 6 12:56:57 1995 Bob Weiner * hui-mouse.el (hkey-alist): Moved Smart Menu display code closer to highest priority so that hkey-always-display-menu works as advertised. @@ -332,18 +542,18 @@ Emacs 19 when depress in a minibuffer window. This fixes the problem of the Action Key not properly selecting Hyperbole minibuffer menu items. -Thu Oct 5 14:31:56 1995 Bob Weiner +Thu Oct 5 14:31:56 1995 Bob Weiner * hui-menu.el (hyperbole-menubar-menu): Added omitted (require 'lmenu) for Emacs 19 that prevented Hyperbole menubar from appearing under Emacs 19. -Wed Oct 4 12:41:24 1995 Bob Weiner +Wed Oct 4 12:41:24 1995 Bob Weiner * hsite-ex.el (hkey-always-display-menu): Added this definition to prevent it from being unbound if smart-menu is invoked and the Smart Menu system is loaded under InfoDock. -Wed Sep 27 01:56:53 1995 Bob Weiner +Wed Sep 27 01:56:53 1995 Bob Weiner * wrolo.el (rolo-edit): Modified to treat an empty string argument for NAME as a null argument, so one can just hit RET interactively. Also, @@ -354,7 +564,7 @@ within the rolodex match buffer. * man/hyperbole.texi (Rolo Keys): Documented {e} key. -Mon Sep 25 11:15:49 1995 Bob Weiner +Mon Sep 25 11:15:49 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:indent-line): (kotl-mode:indent-region): Added. Each signals an @@ -364,7 +574,7 @@ * hyperbole.el (hmail:msg-narrow): Added autoload. -Fri Sep 22 17:14:05 1995 Bob Weiner +Fri Sep 22 17:14:05 1995 Bob Weiner * hsite-ex.el (hpath:display-alist): Fixed bug in handling info-suffix variable scoping that prevented Action Key from browsing info files in diff -r 2d83cbd90d8d -r 4be1180a9e89 lisp/hyperbole/ChangeLog.1 --- a/lisp/hyperbole/ChangeLog.1 Mon Aug 13 09:13:58 2007 +0200 +++ b/lisp/hyperbole/ChangeLog.1 Mon Aug 13 09:15:11 2007 +0200 @@ -1,9 +1,9 @@ -Thu Sep 21 11:44:51 1995 Bob Weiner +Thu Sep 21 11:44:51 1995 Bob Weiner * wrolo.el (rolo-name-and-email): Fixed bug that could cause current buffer to scroll. -Wed Sep 20 11:46:09 1995 Bob Weiner +Wed Sep 20 11:46:09 1995 Bob Weiner * hypb.el (hypb:supercite-p): Fixed bug that returned nil when should have returned t. @@ -14,14 +14,14 @@ V3.19.09 changes ^^^^: ============================================================================== -Fri Sep 15 12:59:40 1995 Bob Weiner +Fri Sep 15 12:59:40 1995 Bob Weiner * wrolo.el (rolo-name-and-email): Modified to work if point is in a mail or news summary listing buffer. * hui-window.el (assist-key-modeline): Simplified unburying of buffer. -Thu Sep 14 14:03:17 1995 Bob Weiner +Thu Sep 14 14:03:17 1995 Bob Weiner * hmail.el (hmail:buffer): Modified to use logic in hmail:region. (hmail:region): @@ -43,7 +43,7 @@ * hactypes.el (link-to-Info-node): Removed hpath:validate call since that will cause some valid node references to not be accepted. -Wed Sep 13 13:23:24 1995 Bob Weiner +Wed Sep 13 13:23:24 1995 Bob Weiner * kotl/kfill.el: Renamed most functions from filladapt- to kfill:, to avoid conflicts with the new minor mode filladapt. @@ -75,7 +75,7 @@ * hsite-ex.el: (hpath:display-alist): Modified to handle compressed info files. -Mon Sep 11 14:00:29 1995 Bob Weiner +Mon Sep 11 14:00:29 1995 Bob Weiner * hmouse-tag.el (smart-c-include-file): (smart-asm-include-file): Fixed to display include file in @@ -86,7 +86,7 @@ * hargs.el (hargs:at-p): Return klink as a list, not a string. (hargs:read): Convert klink to a string after reading it. -Wed Aug 30 16:34:34 1995 Bob Weiner +Wed Aug 30 16:34:34 1995 Bob Weiner * man/hyperbole.texi (Smart Keyboard Keys): Updated to describe URL and gomoku support. @@ -98,22 +98,22 @@ V3.19.08 changes ^^^^: ============================================================================== -Sun Aug 27 04:55:17 1995 Bob Weiner +Sun Aug 27 04:55:17 1995 Bob Weiner * hibtypes.el (patch-msg): Jumps to source associated with patch output lines that begin with "Hunk" or "Patching". -Sat Aug 26 21:30:45 1995 Bob Weiner +Sat Aug 26 21:30:45 1995 Bob Weiner * hibtypes.el (grep-msg): Added support for Perl5 error message parsing. -Fri Aug 25 00:30:08 1995 Bob Weiner +Fri Aug 25 00:30:08 1995 Bob Weiner * kotl/kmenu.el (id-menubar-kotl): (id-popup-kotl-menu): Added Hide-Levels, Hide-Subtree, Show-Subtree menu items. Also enabled Copy-Before/After-Cell menu items. - hui-menus.el (hui:menus): Added 'Below' (same as {C-x $}) and 'Kill' + hui-menus.el (hui:menus): Added `Below' (same as {C-x $}) and `Kill' (same as {C-c C-k}) menu items to Outliner menu. ============================================================================== @@ -132,20 +132,20 @@ collapsed subtree but was not itself collapsed and point was not on the final line of the cell. -Thu Aug 24 23:32:28 1995 Bob Weiner +Thu Aug 24 23:32:28 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:hide-subtree): Added to hide the subtree, excluding root of a cell. Bound to {C-M-h}. (kotl-mode:show-subtree): Added to show the subtree, excluding root of a cell. -Wed Aug 23 12:34:48 1995 Bob Weiner +Wed Aug 23 12:34:48 1995 Bob Weiner * hpath.el (hpath:url-at-p): (hpath:url-p): Fixed to handle more URL specifications and to delete trailing periods and other characters properly. -Tue Aug 22 12:08:53 1995 Bob Weiner +Tue Aug 22 12:08:53 1995 Bob Weiner * hui-menu.el (hyperbole-menubar-menu): wrolo-menu.el (wrolo-menubar-menu): @@ -156,12 +156,12 @@ V3.19.06 changes ^^^^: ============================================================================== -Wed Aug 16 12:41:09 1995 Bob Weiner +Wed Aug 16 12:41:09 1995 Bob Weiner * hibtypes.el (mail-address-regexp): Corrected omission of underscores in addresses. -Thu Aug 10 17:36:23 1995 Bob Weiner +Thu Aug 10 17:36:23 1995 Bob Weiner * hpath.el (hpath:at-p): Modified to handle local file URLs like file://localhost/ just as other local file references. @@ -169,7 +169,7 @@ * hargs.el (hargs:delimited): Modified to accomodate long string delimiters where point might be in the middle of the opening delimiter. -Wed Aug 9 18:37:54 1995 Bob Weiner +Wed Aug 9 18:37:54 1995 Bob Weiner * hactypes.el (hyp-config): Reversed order of listing of Editor: and Hyperbole: lines. @@ -178,14 +178,14 @@ V3.19.05 changes ^^^^: ============================================================================== -Tue Aug 8 10:53:38 1995 Bob Weiner +Tue Aug 8 10:53:38 1995 Bob Weiner * hgnus.el hsmail.el (smail:comment-add): Add to front of hook if add-hook exists so that if the mail/news buffer headers are highlighted, so is this comment header. -Mon Jul 31 15:33:29 1995 Bob Weiner +Mon Jul 31 15:33:29 1995 Bob Weiner * kotl/kview.el (kview:insert-contents): (kcell-view:create): Moved call to kfile:narrow-to-kcells @@ -193,7 +193,7 @@ Otherwise, this call would leave kotl data exposed when a cell was inserted at the end of an outline. -Tue Jul 25 16:26:16 1995 Bob Weiner +Tue Jul 25 16:26:16 1995 Bob Weiner * hibtypes.el (mail-address): Prevented from triggering in a mail or news summary buffer. @@ -204,12 +204,12 @@ V3.19.04 changes ^^^^: ============================================================================== -Fri Jul 14 17:03:27 1995 Bob Weiner +Fri Jul 14 17:03:27 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode): Changed hook used to save koutline data from write-contents-hooks to local-write-file-hooks. -Thu Jul 13 16:37:30 1995 Bob Weiner +Thu Jul 13 16:37:30 1995 Bob Weiner * hui-em19-b.el (hproperty:but-add): Under Emacs 19, modified to highlight explicit buttons when mouse passes over them if @@ -222,13 +222,13 @@ called when only hyperbole.el has been loaded by a site initialization but the individual user never uses Hyperbole. -Mon Jul 10 11:49:52 1995 Bob Weiner +Mon Jul 10 11:49:52 1995 Bob Weiner * hui-mouse.el (hkey-alist): * hmouse-tag.el (smart-fortran): (smart-fortran-at-tag-p): Added Fortran tags browsing support. -Fri Jul 7 14:02:28 1995 Bob Weiner +Fri Jul 7 14:02:28 1995 Bob Weiner * hsite-ex.el (hpath:display-alist): Modified to display files below an /info/ directory but with a non-info suffix, in whatever their normal @@ -259,12 +259,12 @@ separator search routines. Inheritance was already off by default for characters preceding this region. -Thu Jul 6 14:24:40 1995 Bob Weiner +Thu Jul 6 14:24:40 1995 Bob Weiner * hmouse-drv.el (hkey-help-show): Fixed a bug that failed to properly check whether a help buffer was already displayed. -Sun Jun 25 17:16:21 1995 Bob Weiner +Sun Jun 25 17:16:21 1995 Bob Weiner * kotl/kimport.el (kimport:star-outline): Modified to handle start outlines whose stars are preceded by whitespace. @@ -281,7 +281,7 @@ * kotl/kview.el (kview:add-cell): Added optional parameter no-fill to skip filling of any initial cell contents. -Fri Jun 23 11:58:24 1995 Bob Weiner +Fri Jun 23 11:58:24 1995 Bob Weiner * hyperbole.el (Info-goto-node): Added autoload of this for Hyperbole menus. @@ -302,7 +302,7 @@ V3.19.02 changes ^^^^: ============================================================================== -Wed Jun 21 00:42:12 1995 Bob Weiner +Wed Jun 21 00:42:12 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:fill-tree): Modified to support filling 0 rooted tree, i.e. all cells in outline, when given a prefix argument. @@ -320,7 +320,7 @@ * MANIFEST: * Makefile (EL_KOTL, ELC_KOTL): Added references to new kprop-* files. -Tue Jun 20 10:54:18 1995 Bob Weiner +Tue Jun 20 10:54:18 1995 Bob Weiner * kotl/kproperty.el (kproperty:put): Fixed XEmacs version of this function by using raw extents instead of text properties. @@ -333,7 +333,7 @@ * kotl/kproperty.el (kproperty:map): Added to map over a matching property in a buffer and to return the result. -Mon Jun 19 18:50:34 1995 Bob Weiner +Mon Jun 19 18:50:34 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:demote-tree): (kotl-mode:promote-tree): @@ -348,7 +348,7 @@ V3.19.01 changes ^^^^: ============================================================================== -Thu Jun 15 00:24:34 1995 Bob Weiner +Thu Jun 15 00:24:34 1995 Bob Weiner * kotl/kview.el (kcell-view:previous): Expanded cases that will find previous cell. @@ -363,7 +363,7 @@ * kotl/kview.el (kcell-view:previous): (kcell-view:next): Optimized. -Wed Jun 14 01:49:45 1995 Bob Weiner +Wed Jun 14 01:49:45 1995 Bob Weiner * kotl/kview.el (kview:goto-cell-id): Speeded up by up to 10x with optimized implementations for each Emacs variant. @@ -394,27 +394,27 @@ * kotl/kview.el (kview:move): Optimized to skip mapping over a tree to re-collapse cells if none were collapsed. -Tue Jun 13 16:35:42 1995 Bob Weiner - -* hmous-info.el (Info-handle-in-note): Added support for 'See' +Tue Jun 13 16:35:42 1995 Bob Weiner + +* hmous-info.el (Info-handle-in-note): Added support for `See' cross-references used by XEmacs. ============================================================================== V3.19 changes ^^^^: ============================================================================== -Tue Jun 13 16:35:42 1995 Bob Weiner +Tue Jun 13 16:35:42 1995 Bob Weiner * hinit.el (hyperb:init-menubar): * hui-menu.el (hyperbole-menubar-menu): Modified to re-install Hyperbole menu in InfoDock menubar after using the menu's Quit item. -Mon Jun 12 19:31:28 1995 Bob Weiner +Mon Jun 12 19:31:28 1995 Bob Weiner * kotl/klabel.el (klabel-type:set-alpha): Optimized alpha and legal renumbering. Cut time by about 50% for multi-level outlines. -Tue Jun 6 12:34:47 1995 Bob Weiner +Tue Jun 6 12:34:47 1995 Bob Weiner * kotl/klabel.el kview.el @@ -424,7 +424,7 @@ * kotl/kotl-mode.el (kotl-mode-map): Fixed to handle {M-q} bound to fill-paragraph-or-region in XEmacs. -Mon Jun 5 16:56:58 1995 Bob Weiner +Mon Jun 5 16:56:58 1995 Bob Weiner * hui-menu.el (infodock-hyperbole-menu): Made "Quit" menu item remove Hyperbole comment from future outgoing mail and remove Hyperbole menu @@ -434,7 +434,7 @@ V3.18.13 changes ^^^^: ============================================================================== -Fri Jun 2 11:29:11 1995 Bob Weiner +Fri Jun 2 11:29:11 1995 Bob Weiner * kotl/kotl-mode.el (kotl-mode:beginning-of-tree): Added and bound to {C-c ^}. (kotl-mode:end-of-tree): Addded and bound to {C-c $}. @@ -448,7 +448,7 @@ * man/hyperbole.texi (Outliner Keys): kotl/kotl-mode.el (kotl-mode:copy-to-buffer): Added and bound to {C-c M-c}. -Thu Jun 1 11:10:03 1995 Bob Weiner +Thu Jun 1 11:10:03 1995 Bob Weiner * hui-window.el (smart-window-of-coords): (smart-coords-in-window-p): @@ -458,14 +458,14 @@ V3.18.12 changes ^^^^: ============================================================================== -Fri May 19 15:32:37 1995 Bob Weiner +Fri May 19 15:32:37 1995 Bob Weiner * hui-menus.el (hyperbole): Added call to hyperb:init-menubar. * hinit.el (hyperb:init-menubar): Added to add Hyperbole menu to menubar. * hui-menu.el (infodock-hyperbole-menu): Added Quit menu item to delete the Hyperbole menu from the menubar. {C-h h} will bring it back again. -Thu May 18 12:23:01 1995 Bob Weiner +Thu May 18 12:23:01 1995 Bob Weiner * Changed all cs.brown references to hub.ucsb.edu (for mail lists) and cs.uiuc.edu (for Hyperbole source). @@ -482,7 +482,7 @@ V3.18.11 changes ^^^^: ============================================================================== -Mon May 15 11:20:38 1995 Bob Weiner +Mon May 15 11:20:38 1995 Bob Weiner * hmous-info.el (Info-handle-in-node-hdr): (Info-handle-in-menu): Fixed to handle Info references @@ -499,20 +499,20 @@ V3.18.10 changes ^^^^: ============================================================================== -Fri May 12 12:54:19 1995 Bob Weiner +Fri May 12 12:54:19 1995 Bob Weiner * Makefile (dist): Updated to execute entire distribution build process. * hsite-ex.el (hyperb:lemacs-p): * hui-xe-but.el (hproperty:highlight-face): Fixed to highlight explicit - buttons and rolodex matches with the 'italic' face when used under + buttons and rolodex matches with the `italic' face when used under XEmacs on a tty. ============================================================================== V3.18.9 changes ^^^^: ============================================================================== -Tue May 9 12:45:21 1995 Bob Weiner +Tue May 9 12:45:21 1995 Bob Weiner * Makefile (install): Changed to install documentation. @@ -534,7 +534,7 @@ assertion failure which looks like: assert_failed (file=0xf3c78 "eval.c", line=1412, -Mon May 8 14:30:56 1995 Bob Weiner +Mon May 8 14:30:56 1995 Bob Weiner * man/hyperbole.texi (Operating Menus): * hui-menu.el (hyperbole-menubar-menu): @@ -554,10 +554,10 @@ V3.18.8 changes ^^^^: ============================================================================== -Fri May 5 14:33:51 1995 Bob Weiner +Fri May 5 14:33:51 1995 Bob Weiner * Makefile: Removed building of Info and Postscript versions of the - Hyperbole manual from default 'make'. Use 'make info' and 'make ps', + Hyperbole manual from default `make'. Use `make info' and `make ps', respectively. * hui-xe-but.el: @@ -567,17 +567,17 @@ * kotl/kfile.el (kfile:update): Added (let ((debug-on-error nil)) so one can easily save koutlines while debugging Emacs Lisp code. -Tue May 2 11:08:53 1995 Bob Weiner +Tue May 2 11:08:53 1995 Bob Weiner * Makefile (tags): Replaced all - with underscore in variable names to satisfy the AIX sh. -Mon May 1 15:50:33 1995 Bob Weiner +Mon May 1 15:50:33 1995 Bob Weiner * hsite-ex.el (hpath:display-alist): Added display of top node when Action Key is pressed over an Info file name. -Fri Apr 28 19:18:13 1995 Bob Weiner +Fri Apr 28 19:18:13 1995 Bob Weiner * hui-xe-but.el (hproperty:set-item-highlight): Fixed failure to set rolo-highlight-face when it is the same as the default font. @@ -586,28 +586,28 @@ V3.18.7 changes ^^^^: ============================================================================== -Mon Apr 24 10:49:30 1995 Bob Weiner +Mon Apr 24 10:49:30 1995 Bob Weiner * hui-mouse.el (hkey-alist): Simplified support for view major and minor modes. -Sun Apr 23 13:21:20 1995 Bob Weiner +Sun Apr 23 13:21:20 1995 Bob Weiner * hibtypes.el (debugger-source): Renamed from gdb-source and added dbx and xdb debugger support for jumping to source from a stack backtrace line. -Wed Apr 19 19:37:20 1995 Bob Weiner +Wed Apr 19 19:37:20 1995 Bob Weiner * hmouse-tag.el (smart-tags-file-path): Added this function, used by ibtype gdb-source and actype link-to-file-line to find non-local, relative files. * hyperbole.el (smart-tags-file-path): Added autoload. -Tue Apr 18 11:49:27 1995 Bob Weiner +Tue Apr 18 11:49:27 1995 Bob Weiner * hversion.el (id-tool-invoke): Fixed to handle interactive command calls. -Sun Apr 16 22:35:33 1995 Bob Weiner +Sun Apr 16 22:35:33 1995 Bob Weiner * hversion.el (sm-window-sys-term): Support Emacs under OS/2 which uses the Presentation Manger window manager. @@ -621,37 +621,37 @@ V3.18.6 changes ^^^^: ============================================================================== -Fri Apr 14 15:31:17 1995 Bob Weiner +Fri Apr 14 15:31:17 1995 Bob Weiner * man/hyperbole.ps: Removed from the distribution. Too large; users who need it can build it themselves. * man/hyperbole.texi (Action Types): Documented extension command - characters' use of '+' prefix. - -* hargs.el (hargs:iforms): Added basic support for new Emacs 19 'K' + characters' use of `+' prefix. + +* hargs.el (hargs:iforms): Added basic support for new Emacs 19 `K' command character. * *.el: Added KEYWORDS: header. -Wed Apr 12 11:26:03 1995 Bob Weiner +Wed Apr 12 11:26:03 1995 Bob Weiner * hui-window.el (smart-coords-in-window-p): (smart-window-of-coords): Fixed to work with XEmacs 19.11 which can return nil for (event-window) if event is over a modeline. -Tue Apr 11 12:48:18 1995 Bob Weiner +Tue Apr 11 12:48:18 1995 Bob Weiner * hargs.el (hargs:get): Added support for user extension interactive command characters that are being added to Emacs 19. Each such - character is preceded by a '+' character. + character is preceded by a `+' character. * hui-mouse.el (hkey-alist): Added Action/Assist key press support for OO-Browser listing buffers used when the full OO-Browser user interface is not displayed. -Mon Apr 10 17:41:54 1995 Bob Weiner +Mon Apr 10 17:41:54 1995 Bob Weiner * Makefile (ELC-COMPILE): Added hsys-* files so they will be built. @@ -659,11 +659,11 @@ V3.18.5 changes ^^^^: ============================================================================== -Sat Apr 8 13:53:27 1995 Bob Weiner +Sat Apr 8 13:53:27 1995 Bob Weiner * man/hyperbole.texi (Top): Added credits. -Fri Apr 7 17:21:04 1995 Bob Weiner +Fri Apr 7 17:21:04 1995 Bob Weiner * kotl/kfile.el (kfile:update): kotl/kotl.el (kotl-data:create): Modified to repair invalid cells when @@ -671,7 +671,7 @@ (kotl-data:to-kcell-v3): Modified to repair invalid cells when trying to load them from a file. -Thu Apr 6 10:22:07 1995 Bob Weiner +Thu Apr 6 10:22:07 1995 Bob Weiner * Makefile (PRELOADS): Added ref to $(SITE-PRELOADS) for customization of the Lisp libraries loaded before byte-compiling any files. @@ -681,7 +681,7 @@ * kotl/kmenu.el: Added this file of menus for the Koutliner from InfoDock and adapted for use under standard XEmacs. -Wed Apr 5 18:48:15 1995 Bob Weiner (weiner@mot.com) +Wed Apr 5 18:48:15 1995 Bob Weiner * hinit.el (hyperb:init): Added setup of XEmacs pulldown menu for Hyperbole. * hui-menu.el: Added this file to provide a global pulldown menu of InfoDock @@ -690,7 +690,7 @@ and adapted for use under standard XEmacs. Also defines a rolodex menu which may be used independently of the Hyperbole menu. -Mon Apr 3 10:03:09 1995 Bob Weiner +Mon Apr 3 10:03:09 1995 Bob Weiner * hyperbole.el (rolo-word): Autoloaded this command. @@ -698,17 +698,17 @@ V3.18.4 changes ^^^^: ============================================================================== -Tue Mar 28 12:22:27 1995 Bob Weiner +Tue Mar 28 12:22:27 1995 Bob Weiner * hui-window.el (hmouse-release-left-edge): (hmouse-release-right-edge): Fixed bug which improperly - called 'window-event' when 'event-window' was intended. + called `window-event' when `event-window' was intended. Sun Mar 26 00:39:18 1995 Bob Weiner * man/hyperbole.texi: Renamed from hypb.texi. -Sat Mar 25 23:20:02 1995 Bob Weiner +Sat Mar 25 23:20:02 1995 Bob Weiner * Makefile (elc): Cleaned up user output produced by this target. @@ -716,11 +716,11 @@ V3.18.3 changes ^^^^: ============================================================================== -Fri Mar 24 10:41:17 1995 Bob Weiner +Fri Mar 24 10:41:17 1995 Bob Weiner * hibtypes.el (rfc): Updated to support efs too. * hpath.el (hpath:ange-ftp-p): - (hpath:ange-ftp-at-p): Added support for 'efs' package, the + (hpath:ange-ftp-at-p): Added support for `efs' package, the successor to ange-ftp. Also changed so can jump to remote pathnames if ange-ftp will be autoloaded via file-name-handler-alist under Emacs V19. @@ -728,7 +728,7 @@ * Makefile (elc): Rewrote in a portable manner so that one emacs invocation builds all elc files. -Thu Mar 23 03:23:51 1995 Bob Weiner +Thu Mar 23 03:23:51 1995 Bob Weiner * kotl/klink.el (klink:at-p): Fixed so won't trigger in OO-Browser listing buffers, e.g. on a C++