# HG changeset patch # User cvs # Date 1186989929 -7200 # Node ID cca96a509cfee21672f83acc610d76778eeda6de # Parent d101af7320b8fb819239e80c93e014d5570e5c96 Import from CVS: tag r20-1b12 diff -r d101af7320b8 -r cca96a509cfe CHANGES-beta --- a/CHANGES-beta Mon Aug 13 09:24:19 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:25:29 2007 +0200 @@ -1,4 +1,20 @@ -*- indented-text -*- +to 20.1 beta12 +-- Synch to Emacs/MULE patches courtesy of MORIOKA Tomohiko +-- VM-6.24 +-- miscellaneous documentation fixes/updates +-- etc/GNUS-NEWS added from Gnus-5.4.42 distribution +-- xemacs-version.h version in C stack backtrace hack +-- More unimplemented NeXTstep cruft removed +-- W3-3.0.80 +-- Lots and lots of Custom-ization by Hrvoje Niksic +-- temp-buffer-shrink-to-fit (still needs a better name) defaults to nil. +-- Gnus-5.4.42 +-- Cleanup -- vms C files removed, dummy NeXTStep C files removed. They're + in the CVS attic if anyone wishes to revive this code. +-- Custom-1.74 +-- miscellaneous bug fixes + to 20.1 beta11 -- Move lisp/auctex/style/*.el to etc/auctex/style/. -- regenerated finder database (every lisp file should have a Keywords: line) diff -r d101af7320b8 -r cca96a509cfe ChangeLog --- a/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:25:29 2007 +0200 @@ -1,3 +1,12 @@ +Wed Apr 9 22:52:06 1997 Steven L Baur + + * XEmacs 20.1-b12 is released. + +Sun Apr 6 22:31:00 1997 Tatsuya Ichikawa + + * configure.in: Cosmetic change to summary print of POP/Kerberos/ + Hesiod options. + Sat Apr 5 09:11:36 1997 Steven L Baur * XEmacs 20.1-b11 is released. diff -r d101af7320b8 -r cca96a509cfe INSTALL --- a/INSTALL Mon Aug 13 09:24:19 2007 +0200 +++ b/INSTALL Mon Aug 13 09:25:29 2007 +0200 @@ -27,12 +27,13 @@ loadup dump', found in `./src/Makefile.in.in', or possibly when running the final dumped XEmacs. -Building XEmacs requires about 70 Mb of disk space (including the -XEmacs sources). Once installed, XEmacs occupies about 50 Mb in the -file system where it is installed; this includes the executable files, -Lisp libraries, miscellaneous data files, and on-line documentation. -If the building and installation take place in different directories, -then the installation procedure momentarily requires 70+50 Mb. +Building XEmacs requires about 88 Mb of disk space (including the XEmacs +sources). Once installed, XEmacs occupies about 50 Mb in the file system +where it is installed; this includes the executable files, Lisp libraries, +miscellaneous data files, and on-line documentation. The amount of storage +of the Lisp directories may be reduced by compressing the .el files. If +the building and installation take place in different directories, then +the installation procedure momentarily requires 88+50 Mb. XEmacs requires an ANSI C compiler, such as LCC or GCC. diff -r d101af7320b8 -r cca96a509cfe PROBLEMS --- a/PROBLEMS Mon Aug 13 09:24:19 2007 +0200 +++ b/PROBLEMS Mon Aug 13 09:25:29 2007 +0200 @@ -3,7 +3,37 @@ in compiling, installing and running XEmacs. (synched up with: 19.30) -(updated for 20.0) +(updated for 20.1) + +* Watch out for .emacs file + +~/.emacs is your Emacs init file. If you observe strange problems, +invoke XEmacs with the `-q' option and see if you can repeat the +problem. + +* "Symbol's value as variable is void: unread-command-char". +* "Wrong type argument: arrayp, #" +* "Wrong type argument: stringp, [#]" + +There are a few incompatible changes in XEmacs, and these are the +symptoms. Some of the emacs-lisp code you are running needs to be +updated to be compatible with XEmacs. + +The code should not treat keymaps as arrays (use `define-key', etc.), +should not use obsolete variables like `unread-command-char' (use +`unread-command-event'). Many (most) of the new ways of doing things +are compatible in GNU Emacs and XEmacs. + +Modern Emacs packages (Gnus, VM, etc) are written cleanly, as to +support GNU Emacs and XEmacs. We have provided modified versions of +several popular emacs packages (dired, etc) which are compatible with +this version of emacs. Check to make sure you have not set your +load-path so that your private copies of these packages are being +found before the versions in the lisp directory. + +Make sure that your load-path and your $EMACSLOADPATH environment +variable are not pointing at an Emacs18 lisp directory. This will +cripple emacs. * On Irix, I don't see the toolbar icons and I'm getting lots of entries in the warnings buffer. @@ -120,14 +150,12 @@ the emacstrs.sco is a suitable candidate for /usr/lib/keyboard/strings to take advantage of the keyboard map in emacskeys.sco. -* Don't use -O2 with gcc under Linux without also using - -fno-strength-reduce. gcc will generate incorrect code otherwise. - This bug is present in at least 2.6.x and 2.7.[0-2]. A patched - binary for 2.7.2 is available in +* Don't use -O2 with gcc 2.7.2 under Linux without also using + -fno-strength-reduce. - ftp://tsx-11.mit.edu/pub/linux/packages/GCC/gcc272-no-sr-bug.lbin.tgz - - Or use GCC 2.7.2.1. +gcc will generate incorrect code otherwise. This bug is present in at +least 2.6.x and 2.7.[0-2]. This bug has been fixed in GCC 2.7.2.1 and +later. * Under some versions of OSF XEmacs runs fine if built without optimization but will crash randomly if built with optimization. @@ -140,7 +168,6 @@ actually the GNU C compiler. Use the --with-gcc=no flag when running configure. - * When Emacs tries to ring the bell, you get an error like audio: sst_open: SETQSIZE" Invalid argument @@ -262,7 +289,7 @@ /bin/sh fixed by installing Patch-ID# 101613-01. * "Cannot find callback list" messages from dialog boxes on HPUX, in -Emacs built with Motif. + Emacs built with Motif. This problem resulted from a bug in GCC 2.4.5. Newer GCC versions such as 2.7.0 fix the problem. @@ -276,7 +303,7 @@ Compiler fixes in Irix 6.0.1 should eliminate this problem. * With certain fonts, when the cursor appears on a character, the -character doesn't appear--you get a solid box instead. + character doesn't appear--you get a solid box instead. One user on a Linux system reported that this problem went away with installation of a new X server. The failing server was XFree86 3.1.1. @@ -290,12 +317,12 @@ it can do perfectly well for SunOS). * On SunOS 4, Emacs processes keep going after you kill the X server -(or log out, if you logged in using X). + (or log out, if you logged in using X). Someone reported that recompiling with GCC 2.7.0 fixed this problem. * On AIX 4, some programs fail when run in a Shell buffer -with an error message like No terminfo entry for "unknown". + with an error message like No terminfo entry for "unknown". On AIX, many terminal type definitions are not installed by default. `unknown' is one of them. Install the "Special Generic Terminal @@ -324,15 +351,8 @@ Then change -lIM to ./libIM.a in the command to link temacs (in Makefile). -* Unpredictable segmentation faults on Solaris 2.3 and 2.4. - -A user reported that this happened in 19.29 when it was compiled with -the Sun compiler, but not when he recompiled with GCC 2.7.0. - -We do not know whether something in Emacs is partly to blame for this. - * Emacs exits with "X protocol error" when run with an X server for -Windows. + Windows. A certain X server for Windows had a bug which caused this. Supposedly the newer 32-bit version of this server doesn't have the @@ -366,7 +386,7 @@ ones available when you build Emacs. * The right Alt key works wrong on German HP keyboards (and perhaps -other non-English HP keyboards too). + other non-English HP keyboards too). This is because HPUX defines the modifiers wrong in X. Here is a shell script to fix the problem; be sure that it is run after VUE @@ -454,7 +474,7 @@ file is not necessary with this approach. * On Solaris 2.4, Dired hangs and C-g does not work. Or Emacs hangs -forever waiting for termination of a subprocess that is a zombie. + forever waiting for termination of a subprocess that is a zombie. casper@fwi.uva.nl says the problem is in X11R6. Rebuild libX11.so after changing the file xc/config/cf/sunLib.tmpl. Change the lines @@ -495,8 +515,8 @@ `-DXTHREAD*' flags and `-lthread' entries from lib/X11/Makefile and typing 'make install' in that directory also seemed to work. -* With M-x enable-flow-control, you need to type C-\ twice - to do incremental search--a single C-\ gets no response. +* With M-x enable-flow-control, you need to type C-\ twice to do + incremental search--a single C-\ gets no response. This has been traced to communicating with your machine via kermit, with C-\ as the kermit escape character. One solution is to use @@ -859,16 +879,6 @@ though the system itself is capable of it. Either use a different shell, or set the variable `cannot-suspend' to a non-nil value. -* Watch out for .emacs files and EMACSLOADPATH environment vars - -These control the actions of Emacs. -~/.emacs is your Emacs init file. -EMACSLOADPATH overrides which directories the function -"load" will search. - -If you observe strange problems, check for these and get rid -of them, then try again. - * After running emacs once, subsequent invocations crash. Some versions of SVR4 have a serious bug in the implementation of the @@ -949,7 +959,7 @@ * Emacs fails to understand most Internet host names, even though the names work properly with other programs on the same system. * Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0. -* GNUs can't make contact with the specified host for nntp. +* Gnus can't make contact with the specified host for nntp. This typically happens on Suns and other systems that use shared libraries. The cause is that the site has installed a version of the @@ -1092,16 +1102,11 @@ x-allow-sendevents to t. You can also cause fix this by telling OLWM to not grab the help key, with the null binding "OpenWindows.KeyboardCommand.Help:". -* Something awful happens when I type M-ESC, instead of `eval-expression'. - -MWM intercepts this and several other keys. Turn this off by adding this to -your resources: "mwm*keyBindings: NoKeyBindings". - -* Using X Windows, control-shift-leftbutton makes Emacs hang. +* Using X11, control-shift-leftbutton makes Emacs hang. Use the shell command `xset bc' to make the old X Menu package work. -* Emacs running under X Windows does not handle mouse clicks. +* Emacs running under X11 does not handle mouse clicks. * `emacs -geometry 80x20' finds a file named `80x20'. One cause of such problems is having (setq term-file-prefix nil) in @@ -1280,7 +1285,7 @@ should use those forms. See the man pages for X(1), xlsfonts(1), and xfontsel(1). -* The dumped Emacs (xemacs) crashes when run, trying to write pure data. +* The dumped Emacs (XEmacs) crashes when run, trying to write pure data. Two causes have been seen for such problems. @@ -1307,35 +1312,19 @@ Sorry, XEmacs does not work under VMS. You might consider working on the port if you really want to have XEmacs work under VMS. -* "Symbol's value as variable is void: unread-command-char". -* "Wrong type argument: arrayp, #" -* "Wrong type argument: stringp, [#]" - -There are a few incompatible changes in XEmacs, and these are the -symptoms. Some of the emacs-lisp code you are running needs to be -updated to be compatible with XEmacs. - -We have provided modified versions of several popular emacs packages (GNUS, -VM, etc) which are compatible with this version of emacs. Check to make -sure you have not set your load-path so that your private copies of these -packages are being found before the versions in the lisp directory. - -Make sure that your load-path and your $EMACSLOADPATH environment variable -are not pointing at an Emacs18 lisp directory. This will cripple emacs. - -* rmail or VM gets error getting new mail +* Mail agents (VM, Gnus, rmail) cannot get new mail rmail and VM get new mail from /usr/spool/mail/$USER using a program -called `movemail'. This program interlocks with /bin/mail using -the protocol defined by /bin/mail. +called `movemail'. This program interlocks with /bin/mail using the +protocol defined by /bin/mail. There are two different protocols in general use. One of them uses the `flock' system call. The other involves creating a lock file; `movemail' must be able to write in /usr/spool/mail in order to do -this. You control which one is used by defining, or not defining, -the macro MAIL_USE_FLOCK in config.h or the m- or s- file it includes. -IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR -SYSTEM, YOU CAN LOSE MAIL! +this. You control which one is used by defining, or not defining, the +macro MAIL_USE_FLOCK in config.h or the m- or s- file it includes. IF +YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR SYSTEM, +YOU CAN LOSE MAIL! If your system uses the lock file protocol, and fascist restrictions prevent ordinary users from writing the lock files in /usr/spool/mail, @@ -1348,8 +1337,8 @@ If your system uses the lock file protocol, and fascist restrictions prevent ordinary users from writing the lock files in /usr/spool/mail, you may need to make `movemail' setgid to a suitable group such as -`mail'. To do this, use the following commands (as root) after doing the -make install. +`mail'. To do this, use the following commands (as root) after doing +the make install. chgrp mail movemail chmod 2755 movemail @@ -1460,7 +1449,8 @@ into C-s and C-q using keyboard-translate-table. The example above shows how to do this with C-^ and C-\. -* Control-S and Control-Q commands are ignored completely on a net connection. +* Control-S and Control-Q commands are ignored completely on a net + connection. Some versions of rlogin (and possibly telnet) do not pass flow control characters to the remote system to which they connect. @@ -1470,14 +1460,14 @@ One way to cure this is to disable flow control on the local host (the one running rlogin, not the one running rlogind) using the stty command, before starting the rlogin process. On many systems, -"stty start u stop u" will do this. +`stty start u stop u' will do this. Some versions of tcsh will prevent even this from working. One way around this is to start another shell before starting rlogin, and issue the stty command to disable flow control from that shell. If none of these methods work, the best solution is to type -M-x enable-flow-control at the beginning of your emacs session, or +`M-x enable-flow-control' at the beginning of your emacs session, or if you expect the problem to continue, add a line such as the following to your .emacs (on the host running rlogind): @@ -1488,45 +1478,41 @@ * Screen is updated wrong, but only on one kind of terminal. -This could mean that the termcap entry you are using for that -terminal is wrong, or it could mean that Emacs has a bug handing -the combination of features specified for that terminal. +This could mean that the termcap entry you are using for that terminal +is wrong, or it could mean that Emacs has a bug handing the +combination of features specified for that terminal. The first step in tracking this down is to record what characters Emacs is sending to the terminal. Execute the Lisp expression -(open-termscript "./emacs-script") to make Emacs write all -terminal output into the file ~/emacs-script as well; then do -what makes the screen update wrong, and look at the file -and decode the characters using the manual for the terminal. -There are several possibilities: +(open-termscript "./emacs-script") to make Emacs write all terminal +output into the file ~/emacs-script as well; then do what makes the +screen update wrong, and look at the file and decode the characters +using the manual for the terminal. There are several possibilities: 1) The characters sent are correct, according to the terminal manual. In this case, there is no obvious bug in Emacs, and most likely you need more padding, or possibly the terminal manual is wrong. -2) The characters sent are incorrect, due to an obscure aspect - of the terminal behavior not described in an obvious way - by termcap. +2) The characters sent are incorrect, due to an obscure aspect of the + terminal behavior not described in an obvious way by termcap. -This case is hard. It will be necessary to think of a way for -Emacs to distinguish between terminals with this kind of behavior -and other terminals that behave subtly differently but are -classified the same by termcap; or else find an algorithm for -Emacs to use that avoids the difference. Such changes must be -tested on many kinds of terminals. +This case is hard. It will be necessary to think of a way for Emacs +to distinguish between terminals with this kind of behavior and other +terminals that behave subtly differently but are classified the same +by termcap; or else find an algorithm for Emacs to use that avoids the +difference. Such changes must be tested on many kinds of terminals. 3) The termcap entry is wrong. -See the file etc/TERMS for information on changes -that are known to be needed in commonly used termcap entries -for certain terminals. +See the file etc/TERMS for information on changes that are known to be +needed in commonly used termcap entries for certain terminals. -4) The characters sent are incorrect, and clearly cannot be - right for any terminal with the termcap entry you were using. +4) The characters sent are incorrect, and clearly cannot be right for + any terminal with the termcap entry you were using. -This is unambiguously an Emacs bug, and can probably be fixed -in termcap.c, tparam.c, term.c, scroll.c, cm.c or dispnew.c. +This is unambiguously an Emacs bug, and can probably be fixed in +termcap.c, tparam.c, term.c, scroll.c, cm.c or dispnew.c. * Output from Control-V is slow. @@ -1582,16 +1568,15 @@ * You type Control-H (Backspace) expecting to delete characters. -Emacs has traditionally used Control-H for help; unfortunately -this interferes with its use as Backspace on TTY's. This has not -been fixed due to an incredible arrogance on RMS's part. One way -to solve this problem is to put this in your .emacs: +Emacs has traditionally used Control-H for help; unfortunately this +interferes with its use as Backspace on TTY's. One way to solve this +problem is to put this in your .emacs: - (global-set-key "\b" 'delete-backward-char) - (global-set-key "\M-h" 'help-command) + (keyboard-translate ?\C-h ?\C-?) + (global-set-key "\M-?" 'help-command) This makes Control-H (Backspace) work sensibly, and moves help to -Meta-H (ESC H). +Meta-? (ESC ?). Note that you can probably also access help using F1. @@ -1718,8 +1703,8 @@ Most of the functions in GNU Emacs return type Lisp_Object, which is defined as a union on some rare architectures. -This problem will not happen if the m-...h file for your type -of machine defines NO_UNION_TYPE. That is the recommended setting now. +This problem will not happen if the m-...h file for your type of +machine defines NO_UNION_TYPE. That is the recommended setting now. * `Error: No ExtNode to pop!' on Linux systems with Lesstif. @@ -1739,18 +1724,18 @@ * Signaling: (error "Byte code stack underflow (byte compiler bug), pc 38") -This error is given when XEmacs v20 is compiled without MULE support +This error is given when XEmacs 20 is compiled without MULE support but is attempting to load a .elc which requires MULE support. The fix is to rebytecompile the offending file. * alloc.c will not compile without -P on HP-UX 9.05 Pekka Marjola writes: -Gcc (2.7.2, with cpplib IIRC) required something (-P worked :) to get -it to compile. Otherwise it failed on those DEFUN macros with comments -inside parameter lists (like buffer.c, line 296). + Gcc (2.7.2, with cpplib IIRC) required something (-P worked :) to + get it to compile. Otherwise it failed on those DEFUN macros with + comments inside parameter lists (like buffer.c, line 296). -* Excessive optimization with Gcc-2.7.2 and pgcc can break XEmacs +* Excessive optimization with pgcc can break XEmacs It has been reported on some systems that compiling with -O6 can lead to XEmacs failures. The workaround is to use a lower optimization @@ -1759,32 +1744,34 @@ * -O2 optimization on Irix 5.3 can cause compiler complaint. Nick J. Crabtree writes: -Comes up OK on a tty (all I have available over this slow link). Ill -give it a hammering tomorrow. The -O2 optimisation complained about -sizes exceeding thresholds; I haven't bothered to use the -Olimit -option it recommends. + Comes up OK on a tty (all I have available over this slow link). Ill + give it a hammering tomorrow. The -O2 optimisation complained about + sizes exceeding thresholds; I haven't bothered to use the -Olimit + option it recommends. * Excessive optimization on AIX 4.2 can lead to compiler failure. Valdis.Kletnieks@vt.edu writes: -At least at the b34 level, and the latest-and-greatest IBM xlc -(3.1.4.4), there are problems with -O3. I haven't investigated -further. + At least at the b34 level, and the latest-and-greatest IBM xlc + (3.1.4.4), there are problems with -O3. I haven't investigated + further. * Sed problems on Solaris 2.5 There have been reports of Sun sed truncating very lines in the -Makefile during configuration. The workaround is to use GNU sed. +Makefile during configuration. The workaround is to use GNU sed or, +even better, think of a better way to generate Makefile, and send us a +patch. :-) * CDE is not autodetected on HP. Richard Cognot writes: -I have to force /usr/dt/{lib,include} into the site include/lib -command line options. I could add these in hpux10.h, but then I would -think these should be pretty standard (to my knowledge, that's also -where Sun puts its CDE stuff), so that wouldn't fix the problem on -other architectures. AAMOF, when these path are given, CDE is -detected, and DragAndDrop works (more or less, see next issue). + I have to force /usr/dt/{lib,include} into the site include/lib + command line options. I could add these in hpux10.h, but then I + would think these should be pretty standard (to my knowledge, that's + also where Sun puts its CDE stuff), so that wouldn't fix the problem + on other architectures. AAMOF, when these path are given, CDE is + detected, and DragAndDrop works (more or less, see next issue). * Signalling: (wrong-type-argument ...) when loading mail-abbrevs @@ -1816,11 +1803,11 @@ * On Irix 5.x and 6.x, the dumped XEmacs (xemacs) core dumps when executed on another machine, or after newer SGI IRIX patches have been installed. -The xemacs binary must be executed with the same "libc.so" file which was used -when the xemacs binary was dumped. Some SGI IRIX patches update this file. -Make sure that all machines using the xemacs binary are using the same -set of IRIX patches. If xemacs core dumps after a patch upgrade then you -will have to redump it from temacs. +The xemacs binary must be executed with the same "libc.so" file which +was used when the xemacs binary was dumped. Some SGI IRIX patches +update this file. Make sure that all machines using the xemacs binary +are using the same set of IRIX patches. If xemacs core dumps after a +patch upgrade then you will have to redump it from temacs. * xemacs: can't resolve symbol '__malloc_hook' @@ -1830,5 +1817,5 @@ * VM appears to hang in large folders -This is normal (trust us) when upgrading to VM-6.22 from earlier versions. -Let VM finish what it is doing and all will be well. +This is normal (trust us) when upgrading to VM-6.22 from earlier +versions. Let VM finish what it is doing and all will be well. diff -r d101af7320b8 -r cca96a509cfe README --- a/README Mon Aug 13 09:24:19 2007 +0200 +++ b/README Mon Aug 13 09:25:29 2007 +0200 @@ -52,5 +52,6 @@ `msdos' holds configuration files for compiling XEmacs under MSDOG. See the file etc/MSDOS for more information. -`vms' holds instructions and useful files for running XEmacs under VMS. - (not supported) + +`nt' holds configuration files for compiling XEmacs under Microsoft Windows + NT. The support for NT is very tentative right now. diff -r d101af7320b8 -r cca96a509cfe configure --- a/configure Mon Aug 13 09:24:19 2007 +0200 +++ b/configure Mon Aug 13 09:25:29 2007 +0200 @@ -198,7 +198,6 @@ --with-x=no Don't support X. --x-includes=DIR Search for X header files in DIR. --x-libraries=DIR Search for X libraries in DIR. ---with-ns Support NeXTstep windows (not yet implemented). --with-menubars=TYPE Use TYPE menubars (lucid, motif, or no). The Lucid widgets emulate Motif (mostly) but are faster. *WARNING* The Motif menubar is currently broken. @@ -256,7 +255,6 @@ --native-sound-lib=LIB Native sound support library. Needed on Suns with --with-sound=both because both sound libraries are called libaudio. ---with-epoch Compile with additional Epoch compatibility. --with-mocklisp Compile with Mocklisp support. Don't do this unless you have a Mocklisp program that you need to run. @@ -337,15 +335,27 @@ # # ############################################################################ + + ### Record all the arguments, so we can save them in config.status. arguments="$@" ### Shell Magic: Quote the quoted arguments in ARGUMENTS. At a later date, ### in order to get the arguments back in $@, we have to do an ### `eval set x "$quoted_arguments"; shift'. +### We use sed to turn embedded ' into '"'"'. I truly hate sh's quoting. +quoted_sed_magic=s/"'"/"'"'"'"'"'"'"'"/g quoted_arguments= for i in "$@"; do - quoted_arguments="$quoted_arguments '$i'" + case "$i" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -norecursion | --norecursion | --norecursio | --norecursi \ + | --norecurs | --norecur | --norecu | --norec | --nore | --nor) ;; + *) + quoted_i="`echo $i | sed $quoted_sed_magic`" + quoted_arguments="$quoted_arguments '$quoted_i'" ;; + esac done ### Don't use shift -- that destroys the argument list, which autoconf needs @@ -398,7 +408,6 @@ with_gcc | \ with_lcc | \ with_gnu_make | \ - with_epoch | \ dynamic | \ with_term | \ with_cde | \ @@ -411,7 +420,6 @@ with_xface | \ with_xmu | \ quantify | \ - with_ns | \ with_toolbars | \ with_tty | \ with_i18n3 | \ @@ -427,7 +435,8 @@ with_kerberos | \ with_hesiod | \ external_widget | \ - extra_verbose | \ + verbose | \ + extra_verbose | \ const_is_losing | \ usage_tracking | \ use_union_type | \ @@ -439,11 +448,9 @@ case "${val}" in y | ye | yes ) val=yes ;; n | no ) val=no ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value. -Set it to either \`yes' or \`no'." - echo "${short_usage}") >&2 - exit 1 ;; + * ) (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option requires a boolean value: \`yes' or \`no'." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; esac eval "${opt}=\"${val}\"" ;; @@ -452,24 +459,23 @@ srcdir | \ compiler | \ puresize | \ - native_sound_lib | \ + native_sound_lib | \ x_includes | \ x_libraries | \ wnn_includes | \ wnn_libraries | \ - canna_includes | \ - canna_libraries | \ + canna_includes | \ + canna_libraries | \ site_includes | \ site_libraries | \ site_runtime_libraries ) ## If the value was omitted, get it from the next argument. if test "${valomitted}" = "yes" ; then ## Get the next argument from the argument list, if there is one. - if test $# = 0 ; then - (echo "${progname}: You must give a value for the \`--${optname}' option, as in - \`--${optname}=FOO'." - echo "${short_usage}") >&2 - exit 1 + if test "$#" = 0 ; then + (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option requires a value." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1; fi val="$1"; shift fi @@ -484,42 +490,39 @@ n | no ) val=no ;; d | de | def | defa | defau | defaul | default ) val=default ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value or \`default'. -Set it to either \`yes', \`no', or \`default'." - echo "${short_usage}") >&2 - exit 1 - ;; + * ) (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option requires one of these values: + \`yes', \`no', or \`default'." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; esac eval "${opt}=\"${val}\"" ;; ## Has the user requested database support? "with_database" ) - if test "${val}" = "no" ; then - with_database_berkdb=no - with_database_dbm=no - with_database_gnudbm=no - else - ## Make sure the value given was berkdb, dbm, gnudbm, or a list - for x in `echo "${val}" | sed 's/,/ /'` ; do - case "${x}" in - b | be | ber | berk | berkd | berkdb ) with_database_berkdb=yes ;; - d | db | dbm ) with_database_dbm=yes ;; + with_database_berkdb=no + with_database_dbm=no + with_database_gnudbm=no + ## Make sure the value given was `no' or a list of berkdb, dbm, gnudbm + for x in `echo "${val}" | sed 's/,/ /'` ; do + case "${x}" in + no ) : ;; + b | be | ber | berk | berkd | berkdb ) with_database_berkdb=yes ;; + d | db | dbm ) with_database_dbm=yes ;; g | gn | gnu | gnud | gnudb | gnudbm ) with_database_gnudbm=yes ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to be either \`no' - or a comma-separated list of one or more of \`berkdb', \`dbm', or \`gnudbm'." - echo "${short_usage}") >&2 - exit 1 - ;; - esac - done - if test "${with_database_dbm}" = "yes" -a "${with_database_gnudbm}" = "yes" - then - (echo "${progname}: only one of \`dbm' and \`gnudbm' should be specified.") >&2 - exit 1 - fi + * ) (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option value + must be either \`no' or a comma-separated list + of one or more of \`berkdb', \`dbm', or \`gnudbm'." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; + esac + done + if test "${with_database_dbm}" = "yes" -a \ + "${with_database_gnudbm}" = "yes" ; then + (echo "${progname}: Usage error:" +echo " " "Only one of \`dbm' and \`gnudbm' may be specified + with the \`--${optname}' option." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 fi ;; @@ -533,13 +536,10 @@ na | nat | nati | nativ | native ) val=native ;; ne | net | neta | netau | netaud | netaudi | netaudio | nas ) val=nas ;; b | bo | bot | both ) val=both;; - * ) - (echo "${progname}: the \`--${optname}' option should have one of the values:" - echo "\`native', \`nas', \`both', or \`none'." - echo "" - echo "${short_usage}") >&2 - exit 1 - ;; + * ) (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option must have one of these values: + \`native', \`nas', \`both', or \`none'." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; esac eval "${opt}=\"${val}\"" ;; @@ -547,19 +547,15 @@ ## Has the user requested XIM support? "with_xim" ) ## value can be xlib or motif - ## as a backwards compatible synonym for native case "${val}" in y | ye | yes ) val=yes ;; n | no | non | none ) val=no ;; x | xl | xli | xlib ) val=xlib ;; m | mo | mot | moti | motif ) val=motif ;; - * ) - (echo "${progname}: the \`--${optname}' option should have one of the values:" - echo "\`motif', \`xlib', \`yes', or \`no'." - echo "" - echo "${short_usage}") >&2 - exit 1 - ;; + * ) (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option must have one of these values: + \`motif', \`xlib', \`yes', or \`no'." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; esac eval "${opt}=\"${val}\"" ;; @@ -571,12 +567,10 @@ y | ye | yes ) val=yes ;; n | no ) val=no ;; g | gn | gnu | gnuz ) val=gnuz ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to - be either \`yes', \`no', or \`gnuz'." - echo "${short_usage}") >&2 - exit 1 - ;; + * ) (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option must have one of these values: + \`yes', \`no', or \`gnuz'." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; esac eval "${opt}=\"${val}\"" ;; @@ -612,14 +606,15 @@ esac if test "$bogus_error_check" -o \ \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then - ( echo "${progname}: Valid types for the \`--${optname}' option are:" if test $error_check_default = yes ; then - echo "\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'." + types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'." else - echo "\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'." + types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'." fi - echo "${short_usage}" ) >&2 - exit 1 + (echo "${progname}: Usage error:" +echo " " "Valid types for the \`--${optname}' option are: + $types." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 elif test "$new_default" ; then error_check_extents=$new_default error_check_typecheck=$new_default @@ -643,15 +638,12 @@ sitelispdir | docdir ) ## If the value was omitted, get it from the next argument. if test "${valomitted}" = "yes" ; then - if test $# = 0 ; then - (echo \ -"$progname: You must give a value for the \`--${optname}' option,"; - echo \ -"as in \`--${optname}=`eval echo '$'$optname`.'" - echo "$short_usage") >&2 - exit 1 - fi - val="$1"; shift + if test "$#" = 0 ; then + (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option requires a value." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1; + fi + val="$1"; shift fi eval "${opt}=\"${val}\"" @@ -677,13 +669,10 @@ cflags ) ## If the value was omitted, get it from the next argument. if test "${valomitted}" = "yes" ; then - if test $# = 0 ; then - (echo \ -"$progname: You must give a value for the \`--${optname}' option,"; - echo \ -"as in \`--${optname}=`eval echo '$'$optname`-g -O'" - echo "$short_usage") >&2 - exit 1 + if test "$#" = 0 ; then + (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option requires a value." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1; fi val="$1"; shift fi @@ -691,22 +680,14 @@ eval "${opt}_specified=1" ;; - ## Verbose flag, tested by autoconf macros. - "verbose" ) - verbose=yes - ;; - ## --no-create added by autoconf for use by config.status "no_create" ) ;; ## Has the user asked for some help? "usage" | "help" ) - if test -z "$PAGER" - then echo "${short_usage}" | more - else echo "${short_usage}" | $PAGER - fi - exit + echo "${short_usage}" | ${PAGER:-more} + exit 0 ;; ## Has the user specified what toolkit to use for the menubars, @@ -719,24 +700,18 @@ athena3d | athena-3d ) val=athena3d ;; a | at | ath | athe | athen | athena ) val=athena ;; n | no | non | none ) val=no ;; - * ) - (echo "${progname}: the \`--${optname}' option should have one of the values:" - echo "\`lucid', \`motif', \`athena', or \`no'." - echo "" - echo "${short_usage}") >&2 - exit 1 - ;; + * ) (echo "${progname}: Usage error:" +echo " " "The \`--${optname}' option must have one of these values: + \`lucid', \`motif', \`athena', or \`no'." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; esac eval "${opt}=\"${val}\"" ;; ## Fail on unrecognized arguments. - * ) - (echo "${progname}: Error: unrecognized option: ${arg}" - echo "" - echo "${short_usage}") >& 2 - exit 1 - ;; + * ) (echo "${progname}: Usage error:" +echo " " "Unrecognized option: ${arg}" +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 ;; esac ;; @@ -782,14 +757,14 @@ ### Can't specify 2 compilers if test "${with_gcc}" = "yes" -a "${with_lcc}" = "yes"; then - (echo "${progname}: only one of --with-gcc and --with-lcc may be specified." - echo "${short_usage}") >&2 - exit 1 + (echo "${progname}: Usage error:" +echo " " "Only one of --with-gcc and --with-lcc may be specified." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 fi ### Ignore useless run-in-place flag if test "${run_in_place}" = "yes"; then - echo "configure: warning: The --run-in-place option is ignored because it is unnecessary." >&2 + echo "configure: warning: The --run-in-place option is ignored because it is unnecessary." >&2 fi ########################################################################### @@ -800,9 +775,9 @@ if configuration=`${CONFIG_SHELL-/bin/sh} ${guesssys}` ; then echo "- Looks like this is a ${configuration}" 1>&2 else - echo '- Failed to guess the system type. You need to tell me.' 1>&2 - echo "${short_usage}" >&2 - exit 1 + (echo "${progname}: Usage error:" +echo " " "Failed to guess the system type. You need to tell me." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 fi fi @@ -812,41 +787,41 @@ ## If it's not specified, see if `.' or `..' might work. "" ) for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[^/]*$||'`" "." ".." ; do - if test -f "$dir/src/lisp.h" -a -f "$dir/lisp/version.el" ; then + if test -f "$dir/src/lisp.h" -a \ + -f "$dir/lisp/version.el" ; then srcdir="${dir}" break fi done if test -z "${srcdir}" ; then - echo "\ -${progname}: Neither the current directory nor its parent seem to -contain the XEmacs sources. If you do not want to build XEmacs in its -source tree, you should run \`${progname}' in the directory in which -you wish to build XEmacs, using its \`--srcdir' option to say where the -sources may be found. -${short_usage}" >&2 - exit 1 - fi + (echo "${progname}: Usage error:" +echo " " "Neither the current directory nor its parent seem to + contain the XEmacs sources. If you do not want to build XEmacs in its + source tree, you should run \`${progname}' in the directory in which + you wish to build XEmacs, using the \`--srcdir' option to say where the + sources may be found." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 + fi ;; ## Otherwise, check if the directory they specified is okay. * ) - if test ! -d "${srcdir}" -o ! -f "${srcdir}/src/lisp.h" -o ! -f "${srcdir}/lisp/version.el" ; then - (echo "\ -${progname}: The directory specified with the \`--srcdir' option, -\`${srcdir}', doesn't seem to contain the XEmacs sources. You should -either run the \`${progname}' script at the top of the XEmacs source -tree, or use the \`--srcdir' option to specify where the XEmacs sources -are." - echo "${short_usage}") >&2 - exit 1 + if test ! -d "${srcdir}" -o \ + ! -f "${srcdir}/src/lisp.h" -o \ + ! -f "${srcdir}/lisp/version.el" ; then + (echo "${progname}: Usage error:" +echo " " "The directory specified with the \`--srcdir' option, + \`${srcdir}', doesn't seem to contain the XEmacs sources. You should + either run the \`${progname}' script at the top of the XEmacs source + tree, or use the \`--srcdir' option to specify the XEmacs source directory." +echo " Use \`${progname} --help' for more details.") >&2 && exit 1 fi ;; esac ## We check for this now instead of later when we check for other ## programs because we need to use its return value now. - test -n "$silent" || echo "checking for ln -s" +test -n "$silent" || echo "checking for ln -s" rm -f conftestdata if ln -s X conftestdata 2>/dev/null then @@ -873,7 +848,6 @@ fi done - #### Make srcdir absolute, if it isn't already. It's important to #### avoid running the path through pwd unnecessary, since pwd can #### give you automounter prefixes, which can go away. @@ -993,15 +967,20 @@ ## Alpha (DEC) machines. ## XEmacs change: split apart into numerous files. - alpha-dec-osf1.3 | alpha-dec-osf2* ) machine=alpha opsys=decosf1-3 ;; - alpha-dec-osf1.2 | alpha-dec-osf1* ) machine=alpha opsys=decosf1-2 ;; - - ## XEmacs: Add switch for OSF 1 version 3 (roth@cse.ucsc.edu) - ## XEmacs: Add switch for Digital Unix version 4 (srivasta@pilgrim.umass.edu) - alpha-dec-osf3.[2-9] ) machine=alpha opsys=decosf3-2 ;; - alpha-dec-osf3* ) machine=alpha opsys=decosf3-1 ;; - alpha-dec-osf4* ) machine=alpha opsys=decosf4-0 ;; - alpha-*-linux* ) machine=alpha opsys=linux ;; + alpha-*-* ) + machine=alpha + case "${canonical}" in + *-dec-osf1.3 | *-dec-osf2* ) opsys=decosf1-3 ;; + *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;; + + ## XEmacs: Add switch for OSF 1 version 3 (roth@cse.ucsc.edu) + ## XEmacs: Add switch for Digital Unix version 4 (srivasta@pilgrim.umass.edu) + *-dec-osf3.[2-9] ) opsys=decosf3-2 ;; + *-dec-osf3* ) opsys=decosf3-1 ;; + *-dec-osf4* ) opsys=decosf4-0 ;; + *-*-linux* ) opsys=linux ;; + esac + ;; ## Altos 3068 m68*-altos-sysv* ) machine=altos opsys=usg5-2 ;; @@ -1053,16 +1032,22 @@ cydra*-cydrome-sysv* ) machine=cydra5 opsys=usg5-3 ;; ## Data General AViiON Machines - i586-dg-dgux*R4* | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;; + i586-dg-dgux*R4* | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;; m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) machine=aviion opsys=dgux5-4r3 ;; m88k-dg-dgux5.4R2* | m88k-dg-dgux5.4.2* ) machine=aviion opsys=dgux5-4r2 ;; m88k-dg-dgux* ) machine=aviion opsys=dgux ;; - mips-dec-ultrix[0-3].* | mips-dec-ultrix4.0* | mips-dec-bsd4.2* ) machine=pmax opsys=bsd4-2 ;; - mips-dec-ultrix4.[12]* | mips-dec-bsd* ) machine=pmax opsys=bsd4-3 ;; - mips-dec-ultrix* ) machine=pmax opsys=ultrix4-3 ;; - mips-dec-osf* ) machine=pmax opsys=osf1 ;; - mips-dec-mach_bsd4.3* ) machine=pmax opsys=mach-bsd4-3 ;; + ## Dec Mips machines + mips-dec-* ) + machine=pmax + case "${canonical}" in + *-*-ultrix[0-3].* | *-*-ultrix4.0* | *-*-bsd4.2* ) opsys=bsd4-2 ;; + *-*-ultrix4.[12]* | *-*-bsd* ) opsys=bsd4-3 ;; + *-*-ultrix* ) opsys=ultrix4-3 ;; + *-*-osf* ) opsys=osf1 ;; + *-*-mach_bsd4.3* ) opsys=mach-bsd4-3 ;; + esac + ;; ## Motorola Delta machines m68k-motorola-sysv* | m68000-motorola-sysv* ) @@ -1299,9 +1284,7 @@ ## Iris 4D mips-sgi-irix3.* ) machine=iris4d opsys=irix3-3 ;; mips-sgi-irix4.* ) machine=iris4d opsys=irix4-0 ;; - mips-sgi-irix6* ) machine=iris4d - opsys=irix6-0 - NON_GNU_CC="cc -Olimit 2000" ;; + mips-sgi-irix6* ) machine=iris4d opsys=irix6-0 NON_GNU_CC="cc -Olimit 2000" ;; mips-sgi-irix5.[3-9]* ) machine=iris4d opsys=irix5-3 ;; mips-sgi-irix5.2* ) machine=iris4d opsys=irix5-2 ;; mips-sgi-irix5.1* ) machine=iris4d opsys=irix5-1 ;; @@ -1326,7 +1309,7 @@ m68*-sunos1* ) machine=sun1 ;; m68*-sunos2* ) machine=sun2 ;; m68* ) machine=sun3 ;; - i[3-9]86*-sun-sunos[34]* ) machine=sun386 ;; + i[3-9]86*-sun-sunos[34]* ) machine=sun386 ;; i[3-9]86-*-* ) machine=intel386 ;; rs6000* ) machine=rs6000 ;; sparc* ) machine=sparc ;; @@ -1361,13 +1344,13 @@ *-sunos4.0* ) opsys=sunos4-0 ;; *-sunos4.1.2* ) opsys=sunos4-1-2 ;; *-sunos4.1.3* ) opsys=sunos4-1-3 ;; - *-sunos4.1.[4-9]* ) opsys=sunos4-1-4 ;; + *-sunos4.1.[4-9]* ) opsys=sunos4-1-4 ;; *-sunos4* | *-sunos ) opsys=sunos4-1 ;; *-solaris2.3* ) opsys=sol2-3 ;; *-solaris2.4* ) opsys=sol2-4 ;; *-solaris2.5* ) opsys=sol2-5 ;; - *-solaris2.[6-9]* ) opsys=sol2-6 ;; + *-solaris2.[6-9]* ) opsys=sol2-6 ;; *-solaris* ) opsys=sol2 ;; *-mach* ) opsys=mach-bsd4-3 ;; @@ -1437,7 +1420,7 @@ i[3-9]86-*-* ) machine=intel386 case "${canonical}" in - *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; + *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; *-isc2.2* ) opsys=isc2-2 ;; *-isc4.0* ) opsys=isc4-0 ;; *-isc4.* ) opsys=isc4-1 @@ -1551,7 +1534,6 @@ - ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='${CPP}' @@ -1683,8 +1665,6 @@ esac fi - - #### Some systems specify a CPP to use unless we are using GCC. #### Now that we know whether we are using GCC, we can decide whether #### to use that one. @@ -1725,7 +1705,6 @@ #### Some other nice autoconf tests. If you add a test here which #### should make an entry in src/config.h, don't forget to add an #### #undef clause to src/config.h.in for autoconf to modify. - test -n "$silent" || echo "checking how to run the C preprocessor" if test -z "$CPP"; then # This must be in double quotes, not single quotes, because CPP may get @@ -1910,7 +1889,69 @@ -for ac_hdr in mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h utime.h sys/wait.h libintl.h locale.h libgen.h linux/version.h kstat.h sys/pstat.h +for ac_hdr in mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h +do +ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./' '[A-Z]__'` +test -n "$silent" || echo "checking for ${ac_hdr}" +cat > conftest.${ac_ext} < +EOF +ac_err=`eval "(exec $ac_cpp conftest.${ac_ext} >/dev/null) 2>&1"` +if test "${extra_verbose}" = "yes" && test -n "$ac_err"; then + echo "$ac_err" +fi +if test -z "$ac_err"; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining ${ac_tr_hdr}" +echo "#define" ${ac_tr_hdr} "1" >> confdefs.h +DEFS="$DEFS -D${ac_tr_hdr}=1" +ac_sed_defs="${ac_sed_defs}\${ac_dA}${ac_tr_hdr}\${ac_dB}${ac_tr_hdr}\${ac_dC}1\${ac_dD} +\${ac_uA}${ac_tr_hdr}\${ac_uB}${ac_tr_hdr}\${ac_uC}1\${ac_uD} +\${ac_eA}${ac_tr_hdr}\${ac_eB}${ac_tr_hdr}\${ac_eC}1\${ac_eD} +" +} + + +fi +rm -f conftest* +done + +for ac_hdr in utime.h sys/wait.h libintl.h locale.h libgen.h +do +ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./' '[A-Z]__'` +test -n "$silent" || echo "checking for ${ac_hdr}" +cat > conftest.${ac_ext} < +EOF +ac_err=`eval "(exec $ac_cpp conftest.${ac_ext} >/dev/null) 2>&1"` +if test "${extra_verbose}" = "yes" && test -n "$ac_err"; then + echo "$ac_err" +fi +if test -z "$ac_err"; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining ${ac_tr_hdr}" +echo "#define" ${ac_tr_hdr} "1" >> confdefs.h +DEFS="$DEFS -D${ac_tr_hdr}=1" +ac_sed_defs="${ac_sed_defs}\${ac_dA}${ac_tr_hdr}\${ac_dB}${ac_tr_hdr}\${ac_dC}1\${ac_dD} +\${ac_uA}${ac_tr_hdr}\${ac_uB}${ac_tr_hdr}\${ac_uC}1\${ac_uD} +\${ac_eA}${ac_tr_hdr}\${ac_eB}${ac_tr_hdr}\${ac_eC}1\${ac_eD} +" +} + + +fi +rm -f conftest* +done + +for ac_hdr in linux/version.h kstat.h sys/pstat.h inttypes.h do ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./' '[A-Z]__'` test -n "$silent" || echo "checking for ${ac_hdr}" @@ -2439,7 +2480,6 @@ fi fi - # What the hell was this doing here?????? ### echo > confdefs.h # this gets nuked above... @@ -2482,7 +2522,6 @@ ;; esac - case "${window_system}" in "" | "x11" ) ### If the user hasn't specified where we should find X, try ### letting autoconf figure that out. @@ -2676,7 +2715,7 @@ echo "Unable to proceed." >&2 exit 1 fi - for feature in epoch cde offix menubars scrollbars toolbars dialogs xim tiff + for feature in cde offix menubars scrollbars toolbars dialogs xim tiff do if eval "test -n \"\$with_$feature\" -a \"\$with_$feature\" != no" ; then echo "configure: warning: --with-$feature ignored: Not valid without X support" >&2 @@ -2924,7 +2963,6 @@ #### Add the libraries to LIBS and check for some functions. - CPPFLAGS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $CPPFLAGS" DEFS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $DEFS" LIBS="${LD_SWITCH_SITE} $ld_switch_x_system $libsrc_libs $LIBS" @@ -2998,6 +3036,41 @@ ac_save_LIBS="${LIBS}" +LIBS="${LIBS} -lintl" +ac_have_lib="" +test -n "$silent" || echo "checking for -lintl" +cat > conftest.${ac_ext} <> confdefs.h +DEFS="$DEFS -DHAVE_LIBINTL=1" +ac_sed_defs="${ac_sed_defs}\${ac_dA}HAVE_LIBINTL\${ac_dB}HAVE_LIBINTL\${ac_dC}1\${ac_dD} +\${ac_uA}HAVE_LIBINTL\${ac_uB}HAVE_LIBINTL\${ac_uC}1\${ac_uD} +\${ac_eA}HAVE_LIBINTL\${ac_eB}HAVE_LIBINTL\${ac_eC}1\${ac_eD} +" +} + +else + :; +fi + + +ac_save_LIBS="${LIBS}" LIBS="${LIBS} -lXbsd" ac_have_lib="" test -n "$silent" || echo "checking for -lXbsd" @@ -6749,18 +6822,6 @@ " } -test "${with_epoch}" = yes && -{ -test -n "$verbose" && \ -echo " defining EPOCH" -echo "#define" EPOCH "1" >> confdefs.h -DEFS="$DEFS -DEPOCH=1" -ac_sed_defs="${ac_sed_defs}\${ac_dA}EPOCH\${ac_dB}EPOCH\${ac_dC}1\${ac_dD} -\${ac_uA}EPOCH\${ac_uB}EPOCH\${ac_uC}1\${ac_uD} -\${ac_eA}EPOCH\${ac_eB}EPOCH\${ac_eC}1\${ac_eD} -" -} - test "${external_widget}" = yes && { test -n "$verbose" && \ @@ -7048,7 +7109,7 @@ ( echo "uname -a: `uname -a`" echo "" -echo "$0 $configure_args" +echo "$0 $quoted_arguments" ) >> Installation # Start stdout redirection to '| tee -a Installation' ( @@ -7078,10 +7139,6 @@ elif test -n "$site_runtime_libraries"; then echo " Additional libraries: ${site_runtime_libraries}" fi -if test "$with_wnn" = yes ; 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." @@ -7099,7 +7156,6 @@ echo " (Using -lgz instead of -lz.)" fi test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion (not implemented)." -test "$with_epoch" = yes && echo " Compiling in extra Epoch compatibility." test "$with_sound" = nas && echo " Compiling in network sound support." test "$with_sound" = native && echo " Compiling in native sound support." @@ -7118,8 +7174,12 @@ test "$with_xim" = motif && echo " Using Motif to provide XIM support." test "$with_xim" = xlib && echo " Using raw Xlib to provide XIM support." test "$with_canna" = yes && echo " Compiling in support for Canna on Mule." -test "$with_wnn" = yes && echo " Compiling in support for WNN on Mule." -test "$with_wnn6" = yes && echo " WNN support for version 6." +if test "$with_wnn" = yes; then + echo " Compiling in support for the WNN input method on Mule." + test "$with_wnn6" = yes && echo " WNN support for version 6." + echo " Finding WNN includes with: ${wnn_includes}" + echo " Finding WNN libs with: ${wnn_libraries}" +fi 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." @@ -7142,9 +7202,9 @@ test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." -test "$with_pop" = yes && "Using POP for mail access" -test "$with_kerberos" = yes && "Using Kerberos for POP authentication" -test "$with_hesiod" = yes && "Using Hesiod to get POP server host" +test "$with_pop" = yes && " Using POP for mail access" +test "$with_kerberos" = yes && " Using Kerberos for POP authentication" +test "$with_hesiod" = yes && " Using Hesiod to get POP server host" test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." test "${debug}" = yes && echo " Compiling in extra code for debugging." @@ -7156,7 +7216,7 @@ echo "" - + # Remove any trailing slashes in these variables. test -n "${prefix}" && prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'` @@ -7203,15 +7263,15 @@ # This directory was configured as follows, # on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # -# $0 $configure_args +# $0 $quoted_arguments ac_cs_usage="Usage: config.status [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo running \${CONFIG_SHELL-/bin/sh} $0 $configure_args --no-create - exec \${CONFIG_SHELL-/bin/sh} $0 $configure_args --no-create ;; + echo running \${CONFIG_SHELL-/bin/sh} $0 $quoted_arguments --no-create + exec \${CONFIG_SHELL-/bin/sh} $0 $quoted_arguments --no-create ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "config.status generated by autoconf version 1.11" exit 0 ;; @@ -7475,7 +7535,7 @@ chmod +x config.status # Some shells look in PATH for config.status without the "./". test -n "$no_create" || ${CONFIG_SHELL-/bin/sh} ./config.status - + # Build: # src/Makefile from ${srcdir}/src/Makefile.in # lwlib/Makefile from ${srcdir}/lwlib/Makefile.in @@ -7642,3 +7702,7 @@ exit 0 + +# Local Variables: +# eval: (modify-syntax-entry ?\" "\"") +# End: diff -r d101af7320b8 -r cca96a509cfe configure.in --- a/configure.in Mon Aug 13 09:24:19 2007 +0200 +++ b/configure.in Mon Aug 13 09:25:29 2007 +0200 @@ -1,4 +1,4 @@ -dnl -*- mode: m4; m4-mode-hook : (lambda () (modify-syntax-entry ?\" "\"\"")) ; -*- +dnl -*- mode: m4; -*- dnl Synched up with: FSF 19.31. dnl (19.29 -- 19.31 use Autoconf 2.x instead of Autoconf 1.x. dnl Some stuff related to this change has not been synched because @@ -14,7 +14,7 @@ dnl explaining how to rebuild it. dnl AC_PREREQ(1.9)dnl means 'delete newline' and this one needs to be here -[#!/bin/sh +#!/bin/sh #### Configuration script for XEmacs. #### Copyright (C) 1994 Free Software Foundation, Inc. #### Copyright (C) 1993-1995 Board of Trustees, University of Illinois. @@ -158,7 +158,7 @@ # # ############################################################################ -short_usage="Usage: ${progname} CONFIGURATION [-OPTION[=VALUE] ...] +short_usage="Usage: ${progname} CONFIGURATION [[-OPTION[=VALUE] ...]] Set compilation and installation parameters for XEmacs, and report. CONFIGURATION specifies the machine and operating system to build for. @@ -214,7 +214,6 @@ --with-x=no Don't support X. --x-includes=DIR Search for X header files in DIR. --x-libraries=DIR Search for X libraries in DIR. ---with-ns Support NeXTstep windows (not yet implemented). --with-menubars=TYPE Use TYPE menubars (lucid, motif, or no). The Lucid widgets emulate Motif (mostly) but are faster. *WARNING* The Motif menubar is currently broken. @@ -272,7 +271,6 @@ --native-sound-lib=LIB Native sound support library. Needed on Suns with --with-sound=both because both sound libraries are called libaudio. ---with-epoch Compile with additional Epoch compatibility. --with-mocklisp Compile with Mocklisp support. Don't do this unless you have a Mocklisp program that you need to run. @@ -311,7 +309,7 @@ --debug Compile with support for debugging XEmacs. (Causes code-size increase and little loss of speed.) ---error-checking=TYPE[,TYPE]... +--error-checking=TYPE[[,TYPE]]... Compile with internal error-checking added. Causes noticeable loss of speed. Valid types are extents, bufpos, malloc, gc, typecheck. @@ -353,15 +351,30 @@ # # ############################################################################ +define([USAGE_ERROR], +[(echo "${progname}: Usage error:" +echo " " $1 +echo " Use \`${progname} --help' for more details.") >&2 && exit 1]) + ### Record all the arguments, so we can save them in config.status. arguments="$@" ### Shell Magic: Quote the quoted arguments in ARGUMENTS. At a later date, ### in order to get the arguments back in $@, we have to do an ### `eval set x "$quoted_arguments"; shift'. +### We use sed to turn embedded ' into '"'"'. I truly hate sh's quoting. +quoted_sed_magic=s/"'"/"'"'"'"'"'"'"'"/g quoted_arguments= for i in "$@"; do - quoted_arguments="$quoted_arguments '$i'" + case "$i" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -norecursion | --norecursion | --norecursio | --norecursi \ + | --norecurs | --norecur | --norecu | --norec | --nore | --nor) ;; + *) + quoted_i="`echo $i | sed $quoted_sed_magic`" + quoted_arguments="$quoted_arguments '$quoted_i'" ;; + esac done ### Don't use shift -- that destroys the argument list, which autoconf needs @@ -379,8 +392,8 @@ ## Separate the switch name from the value it's being given. case "${arg}" in -*=*) - opt=`echo '' ${arg} | sed -e 's:^ ::' -e 's:^-*\([^=]*\)=.*$:\1:'` - val=`echo '' ${arg} | sed -e 's:^ ::' -e 's:^-*[^=]*=\(.*\)$:\1:'` + opt=`echo '' ${arg} | sed -e 's:^ ::' -e 's:^-*\([[^=]]*\)=.*$:\1:'` + val=`echo '' ${arg} | sed -e 's:^ ::' -e 's:^-*[[^=]]*=\(.*\)$:\1:'` valomitted=no ;; # ## special case these strings since echo may @@ -414,7 +427,6 @@ with_gcc | \ with_lcc | \ with_gnu_make | \ - with_epoch | \ dynamic | \ with_term | \ with_cde | \ @@ -427,7 +439,6 @@ with_xface | \ with_xmu | \ quantify | \ - with_ns | \ with_toolbars | \ with_tty | \ with_i18n3 | \ @@ -443,7 +454,8 @@ with_kerberos | \ with_hesiod | \ external_widget | \ - extra_verbose | \ + verbose | \ + extra_verbose | \ const_is_losing | \ usage_tracking | \ use_union_type | \ @@ -455,11 +467,7 @@ case "${val}" in y | ye | yes ) val=yes ;; n | no ) val=no ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value. -Set it to either \`yes' or \`no'." - echo "${short_usage}") >&2 - exit 1 ;; + * ) USAGE_ERROR("The \`--${optname}' option requires a boolean value: \`yes' or \`no'.") ;; esac eval "${opt}=\"${val}\"" ;; @@ -468,24 +476,21 @@ srcdir | \ compiler | \ puresize | \ - native_sound_lib | \ + native_sound_lib | \ x_includes | \ x_libraries | \ wnn_includes | \ wnn_libraries | \ - canna_includes | \ - canna_libraries | \ + canna_includes | \ + canna_libraries | \ site_includes | \ site_libraries | \ site_runtime_libraries ) ## If the value was omitted, get it from the next argument. if test "${valomitted}" = "yes" ; then ## Get the next argument from the argument list, if there is one. - if test $# = 0 ; then - (echo "${progname}: You must give a value for the \`--${optname}' option, as in - \`--${optname}=FOO'." - echo "${short_usage}") >&2 - exit 1 + if test "$#" = 0 ; then + USAGE_ERROR("The \`--${optname}' option requires a value."); fi val="$1"; shift fi @@ -500,42 +505,33 @@ n | no ) val=no ;; d | de | def | defa | defau | defaul | default ) val=default ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value or \`default'. -Set it to either \`yes', \`no', or \`default'." - echo "${short_usage}") >&2 - exit 1 - ;; + * ) USAGE_ERROR(["The \`--${optname}' option requires one of these values: + \`yes', \`no', or \`default'."]) ;; esac eval "${opt}=\"${val}\"" ;; ## Has the user requested database support? "with_database" ) - if test "${val}" = "no" ; then - with_database_berkdb=no - with_database_dbm=no - with_database_gnudbm=no - else - ## Make sure the value given was berkdb, dbm, gnudbm, or a list - for x in `echo "${val}" | sed 's/,/ /'` ; do - case "${x}" in - b | be | ber | berk | berkd | berkdb ) with_database_berkdb=yes ;; - d | db | dbm ) with_database_dbm=yes ;; + with_database_berkdb=no + with_database_dbm=no + with_database_gnudbm=no + ## Make sure the value given was `no' or a list of berkdb, dbm, gnudbm + for x in `echo "${val}" | sed 's/,/ /'` ; do + case "${x}" in + no ) : ;; + b | be | ber | berk | berkd | berkdb ) with_database_berkdb=yes ;; + d | db | dbm ) with_database_dbm=yes ;; g | gn | gnu | gnud | gnudb | gnudbm ) with_database_gnudbm=yes ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to be either \`no' - or a comma-separated list of one or more of \`berkdb', \`dbm', or \`gnudbm'." - echo "${short_usage}") >&2 - exit 1 - ;; - esac - done - if test "${with_database_dbm}" = "yes" -a "${with_database_gnudbm}" = "yes" - then - (echo "${progname}: only one of \`dbm' and \`gnudbm' should be specified.") >&2 - exit 1 - fi + * ) USAGE_ERROR(["The \`--${optname}' option value + must be either \`no' or a comma-separated list + of one or more of \`berkdb', \`dbm', or \`gnudbm'."]) ;; + esac + done + if test "${with_database_dbm}" = "yes" -a \ + "${with_database_gnudbm}" = "yes" ; then + USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified + with the \`--${optname}' option.") fi ;; @@ -549,13 +545,8 @@ na | nat | nati | nativ | native ) val=native ;; ne | net | neta | netau | netaud | netaudi | netaudio | nas ) val=nas ;; b | bo | bot | both ) val=both;; - * ) - (echo "${progname}: the \`--${optname}' option should have one of the values:" - echo "\`native', \`nas', \`both', or \`none'." - echo "" - echo "${short_usage}") >&2 - exit 1 - ;; + * ) USAGE_ERROR(["The \`--${optname}' option must have one of these values: + \`native', \`nas', \`both', or \`none'."]) ;; esac eval "${opt}=\"${val}\"" ;; @@ -563,19 +554,13 @@ ## Has the user requested XIM support? "with_xim" ) ## value can be xlib or motif - ## as a backwards compatible synonym for native case "${val}" in y | ye | yes ) val=yes ;; n | no | non | none ) val=no ;; x | xl | xli | xlib ) val=xlib ;; m | mo | mot | moti | motif ) val=motif ;; - * ) - (echo "${progname}: the \`--${optname}' option should have one of the values:" - echo "\`motif', \`xlib', \`yes', or \`no'." - echo "" - echo "${short_usage}") >&2 - exit 1 - ;; + * ) USAGE_ERROR(["The \`--${optname}' option must have one of these values: + \`motif', \`xlib', \`yes', or \`no'."]) ;; esac eval "${opt}=\"${val}\"" ;; @@ -587,12 +572,8 @@ y | ye | yes ) val=yes ;; n | no ) val=no ;; g | gn | gnu | gnuz ) val=gnuz ;; - * ) - (echo "${progname}: the \`--${optname}' option is supposed to - be either \`yes', \`no', or \`gnuz'." - echo "${short_usage}") >&2 - exit 1 - ;; + * ) USAGE_ERROR(["The \`--${optname}' option must have one of these values: + \`yes', \`no', or \`gnuz'."]) ;; esac eval "${opt}=\"${val}\"" ;; @@ -628,14 +609,13 @@ esac if test "$bogus_error_check" -o \ \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then - ( echo "${progname}: Valid types for the \`--${optname}' option are:" if test $error_check_default = yes ; then - echo "\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'." + types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', and \`nomalloc'." else - echo "\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'." + types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', and \`malloc'." fi - echo "${short_usage}" ) >&2 - exit 1 + USAGE_ERROR(["Valid types for the \`--${optname}' option are: + $types."]) elif test "$new_default" ; then error_check_extents=$new_default error_check_typecheck=$new_default @@ -659,15 +639,10 @@ sitelispdir | docdir ) ## If the value was omitted, get it from the next argument. if test "${valomitted}" = "yes" ; then - if test $# = 0 ; then - (echo \ -"$progname: You must give a value for the \`--${optname}' option,"; - echo \ -"as in \`--${optname}=`eval echo '$'$optname`.'" - echo "$short_usage") >&2 - exit 1 - fi - val="$1"; shift + if test "$#" = 0 ; then + USAGE_ERROR("The \`--${optname}' option requires a value."); + fi + val="$1"; shift fi eval "${opt}=\"${val}\"" @@ -693,13 +668,8 @@ cflags ) ## If the value was omitted, get it from the next argument. if test "${valomitted}" = "yes" ; then - if test $# = 0 ; then - (echo \ -"$progname: You must give a value for the \`--${optname}' option,"; - echo \ -"as in \`--${optname}=`eval echo '$'$optname`-g -O'" - echo "$short_usage") >&2 - exit 1 + if test "$#" = 0 ; then + USAGE_ERROR("The \`--${optname}' option requires a value."); fi val="$1"; shift fi @@ -707,22 +677,14 @@ eval "${opt}_specified=1" ;; - ## Verbose flag, tested by autoconf macros. - "verbose" ) - verbose=yes - ;; - ## --no-create added by autoconf for use by config.status "no_create" ) ;; ## Has the user asked for some help? "usage" | "help" ) - if test -z "$PAGER" - then echo "${short_usage}" | more - else echo "${short_usage}" | $PAGER - fi - exit + echo "${short_usage}" | ${PAGER:-more} + exit 0 ;; ## Has the user specified what toolkit to use for the menubars, @@ -735,24 +697,14 @@ athena3d | athena-3d ) val=athena3d ;; a | at | ath | athe | athen | athena ) val=athena ;; n | no | non | none ) val=no ;; - * ) - (echo "${progname}: the \`--${optname}' option should have one of the values:" - echo "\`lucid', \`motif', \`athena', or \`no'." - echo "" - echo "${short_usage}") >&2 - exit 1 - ;; + * ) USAGE_ERROR(["The \`--${optname}' option must have one of these values: + \`lucid', \`motif', \`athena', or \`no'."]) ;; esac eval "${opt}=\"${val}\"" ;; ## Fail on unrecognized arguments. - * ) - (echo "${progname}: Error: unrecognized option: ${arg}" - echo "" - echo "${short_usage}") >& 2 - exit 1 - ;; + * ) USAGE_ERROR("Unrecognized option: ${arg}") ;; esac ;; @@ -798,14 +750,12 @@ ### Can't specify 2 compilers if test "${with_gcc}" = "yes" -a "${with_lcc}" = "yes"; then - (echo "${progname}: only one of --with-gcc and --with-lcc may be specified." - echo "${short_usage}") >&2 - exit 1 + USAGE_ERROR("Only one of --with-gcc and --with-lcc may be specified.") fi ### Ignore useless run-in-place flag if test "${run_in_place}" = "yes"; then - ] AC_WARN(The --run-in-place option is ignored because it is unnecessary.) [ + AC_WARN(The --run-in-place option is ignored because it is unnecessary.) fi ########################################################################### @@ -816,9 +766,7 @@ if configuration=`${CONFIG_SHELL-/bin/sh} ${guesssys}` ; then echo "- Looks like this is a ${configuration}" 1>&2 else - echo '- Failed to guess the system type. You need to tell me.' 1>&2 - echo "${short_usage}" >&2 - exit 1 + USAGE_ERROR("Failed to guess the system type. You need to tell me.") fi fi @@ -827,42 +775,38 @@ ## If it's not specified, see if `.' or `..' might work. "" ) - for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[^/]*$||'`" "." ".." ; do - if test -f "$dir/src/lisp.h" -a -f "$dir/lisp/version.el" ; then + for dir in "`echo $0 | sed 's|//|/|' | sed 's|/[[^/]]*$||'`" "." ".." ; do + if test -f "$dir/src/lisp.h" -a \ + -f "$dir/lisp/version.el" ; then srcdir="${dir}" break fi done if test -z "${srcdir}" ; then - echo "\ -${progname}: Neither the current directory nor its parent seem to -contain the XEmacs sources. If you do not want to build XEmacs in its -source tree, you should run \`${progname}' in the directory in which -you wish to build XEmacs, using its \`--srcdir' option to say where the -sources may be found. -${short_usage}" >&2 - exit 1 - fi + USAGE_ERROR(["Neither the current directory nor its parent seem to + contain the XEmacs sources. If you do not want to build XEmacs in its + source tree, you should run \`${progname}' in the directory in which + you wish to build XEmacs, using the \`--srcdir' option to say where the + sources may be found."]) + fi ;; ## Otherwise, check if the directory they specified is okay. * ) - if test ! -d "${srcdir}" -o ! -f "${srcdir}/src/lisp.h" -o ! -f "${srcdir}/lisp/version.el" ; then - (echo "\ -${progname}: The directory specified with the \`--srcdir' option, -\`${srcdir}', doesn't seem to contain the XEmacs sources. You should -either run the \`${progname}' script at the top of the XEmacs source -tree, or use the \`--srcdir' option to specify where the XEmacs sources -are." - echo "${short_usage}") >&2 - exit 1 + if test ! -d "${srcdir}" -o \ + ! -f "${srcdir}/src/lisp.h" -o \ + ! -f "${srcdir}/lisp/version.el" ; then + USAGE_ERROR(["The directory specified with the \`--srcdir' option, + \`${srcdir}', doesn't seem to contain the XEmacs sources. You should + either run the \`${progname}' script at the top of the XEmacs source + tree, or use the \`--srcdir' option to specify the XEmacs source directory."]) fi ;; esac ## We check for this now instead of later when we check for other ## programs because we need to use its return value now. -] AC_LN_S +AC_LN_S AC_VERBOSE("setting LN_S to ${LN_S}") @@ -879,7 +823,6 @@ fi done -[ #### Make srcdir absolute, if it isn't already. It's important to #### avoid running the path through pwd unnecessary, since pwd can #### give you automounter prefixes, which can go away. @@ -906,7 +849,7 @@ echo " use GNU make. If you do not have GNU make, then you must" echo " now do \`make distclean' in ${srcdir}," echo " and then run ${progname} again.") >&2 - extrasub='/^VPATH[ ]*=/c\ + extrasub='/^VPATH[[ ]]*=/c\ vpath %.c $(srcdir)\ vpath %.h $(srcdir)\ vpath %.y $(srcdir)\ @@ -975,7 +918,7 @@ opsys=netbsd case "${canonical}" in sparc-*-netbsd*) machine=sparc ;; - i[3-9]86-*-netbsd*) machine=intel386 ;; + i[[3-9]]86-*-netbsd*) machine=intel386 ;; hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* ) # Yes, this is somewhat bogus. machine=hp9000s300 ;; @@ -999,15 +942,20 @@ ## Alpha (DEC) machines. ## XEmacs change: split apart into numerous files. - alpha-dec-osf1.3 | alpha-dec-osf2* ) machine=alpha opsys=decosf1-3 ;; - alpha-dec-osf1.2 | alpha-dec-osf1* ) machine=alpha opsys=decosf1-2 ;; - - ## XEmacs: Add switch for OSF 1 version 3 (roth@cse.ucsc.edu) - ## XEmacs: Add switch for Digital Unix version 4 (srivasta@pilgrim.umass.edu) - alpha-dec-osf3.[2-9] ) machine=alpha opsys=decosf3-2 ;; - alpha-dec-osf3* ) machine=alpha opsys=decosf3-1 ;; - alpha-dec-osf4* ) machine=alpha opsys=decosf4-0 ;; - alpha-*-linux* ) machine=alpha opsys=linux ;; + alpha-*-* ) + machine=alpha + case "${canonical}" in + *-dec-osf1.3 | *-dec-osf2* ) opsys=decosf1-3 ;; + *-dec-osf1.2 | *-dec-osf1* ) opsys=decosf1-2 ;; + + ## XEmacs: Add switch for OSF 1 version 3 (roth@cse.ucsc.edu) + ## XEmacs: Add switch for Digital Unix version 4 (srivasta@pilgrim.umass.edu) + *-dec-osf3.[[2-9]] ) opsys=decosf3-2 ;; + *-dec-osf3* ) opsys=decosf3-1 ;; + *-dec-osf4* ) opsys=decosf4-0 ;; + *-*-linux* ) opsys=linux ;; + esac + ;; ## Altos 3068 m68*-altos-sysv* ) machine=altos opsys=usg5-2 ;; @@ -1053,22 +1001,28 @@ ;; ## Cubix QBx/386 - i[3-9]86-cubix-sysv* ) machine=intel386 opsys=usg5-3 ;; + i[[3-9]]86-cubix-sysv* ) machine=intel386 opsys=usg5-3 ;; ## Cydra 5 cydra*-cydrome-sysv* ) machine=cydra5 opsys=usg5-3 ;; ## Data General AViiON Machines - i586-dg-dgux*R4* | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;; + i586-dg-dgux*R4* | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;; m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) machine=aviion opsys=dgux5-4r3 ;; m88k-dg-dgux5.4R2* | m88k-dg-dgux5.4.2* ) machine=aviion opsys=dgux5-4r2 ;; m88k-dg-dgux* ) machine=aviion opsys=dgux ;; - mips-dec-ultrix[0-3].* | mips-dec-ultrix4.0* | mips-dec-bsd4.2* ) machine=pmax opsys=bsd4-2 ;; - mips-dec-ultrix4.[12]* | mips-dec-bsd* ) machine=pmax opsys=bsd4-3 ;; - mips-dec-ultrix* ) machine=pmax opsys=ultrix4-3 ;; - mips-dec-osf* ) machine=pmax opsys=osf1 ;; - mips-dec-mach_bsd4.3* ) machine=pmax opsys=mach-bsd4-3 ;; + ## Dec Mips machines + mips-dec-* ) + machine=pmax + case "${canonical}" in + *-*-ultrix[[0-3]].* | *-*-ultrix4.0* | *-*-bsd4.2* ) opsys=bsd4-2 ;; + *-*-ultrix4.[[12]]* | *-*-bsd* ) opsys=bsd4-3 ;; + *-*-ultrix* ) opsys=ultrix4-3 ;; + *-*-osf* ) opsys=osf1 ;; + *-*-mach_bsd4.3* ) opsys=mach-bsd4-3 ;; + esac + ;; ## Motorola Delta machines m68k-motorola-sysv* | m68000-motorola-sysv* ) @@ -1115,8 +1069,8 @@ m88k-harris-cxux* ) # Build needs to be different on 7.0 and later releases case "`uname -r`" in - [56].[0-9] ) machine=nh4000 opsys=cxux ;; - [7].[0-9] ) machine=nh4000 opsys=cxux7 ;; + [[56]].[[0-9]] ) machine=nh4000 opsys=cxux ;; + [[7]].[[0-9]] ) machine=nh4000 opsys=cxux7 ;; esac NON_GNU_CPP="/lib/cpp" ;; @@ -1178,8 +1132,8 @@ clipper-orion-bsd* ) machine=orion105 opsys=bsd4-2 ;; ## IBM machines - i[3-9]86-ibm-aix1.1* ) machine=ibmps2-aix opsys=usg5-2-2 ;; - i[3-9]86-ibm-aix1.[23]* | i[3-9]86-ibm-aix* ) machine=ibmps2-aix opsys=usg5-3 ;; + i[[3-9]]86-ibm-aix1.1* ) machine=ibmps2-aix opsys=usg5-2-2 ;; + i[[3-9]]86-ibm-aix1.[[23]]* | i[[3-9]]86-ibm-aix* ) machine=ibmps2-aix opsys=usg5-3 ;; i370-ibm-aix*) machine=ibm370aix opsys=usg5-3 ;; rs6000-ibm-aix3.1* | powerpc-ibm-aix3.1* ) machine=ibmrs6000 opsys=aix3-1 ;; rs6000-ibm-aix3.2.5 | powerpc-ibm-aix3.2.5 ) machine=ibmrs6000 opsys=aix3-2-5 ;; @@ -1201,24 +1155,24 @@ m68*-isi-bsd4.3* ) machine=isi-ov opsys=bsd4-3 ;; ## Intel 386 machines where we do care about the manufacturer - i[3-9]86-intsys-sysv* ) machine=is386 opsys=usg5-2-2 ;; + i[[3-9]]86-intsys-sysv* ) machine=is386 opsys=usg5-2-2 ;; ## Prime EXL - i[3-9]86-prime-sysv* ) machine=i386 opsys=usg5-3 ;; + i[[3-9]]86-prime-sysv* ) machine=i386 opsys=usg5-3 ;; ## Sequent Symmetry running Dynix - i[3-9]86-sequent-bsd* ) machine=symmetry opsys=bsd4-3 ;; + i[[3-9]]86-sequent-bsd* ) machine=symmetry opsys=bsd4-3 ;; ## Sequent Symmetry running DYNIX/ptx ## Use the old cpp rather than the newer ANSI one. - i[3-9]86-sequent-ptx* ) + i[[3-9]]86-sequent-ptx* ) machine=sequent-ptx opsys=ptx NON_GNU_CPP="/lib/cpp" ;; ## Unspecified sysv on an ncr machine defaults to svr4.2. ## (Plain usg5-4 doesn't turn on POSIX signals, which we need.) - i[3-9]86-ncr-sysv* ) machine=ncr386 opsys=usg5-4-2 ;; + i[[3-9]]86-ncr-sysv* ) machine=ncr386 opsys=usg5-4-2 ;; ## Intel Paragon OSF/1 i860-intel-osf1* ) machine=paragon opsys=osf1 NON_GNU_CPP=/usr/mach/lib/cpp ;; @@ -1305,10 +1259,8 @@ ## Iris 4D mips-sgi-irix3.* ) machine=iris4d opsys=irix3-3 ;; mips-sgi-irix4.* ) machine=iris4d opsys=irix4-0 ;; - mips-sgi-irix6* ) machine=iris4d - opsys=irix6-0 - NON_GNU_CC="cc -Olimit 2000" ;; - mips-sgi-irix5.[3-9]* ) machine=iris4d opsys=irix5-3 ;; + mips-sgi-irix6* ) machine=iris4d opsys=irix6-0 NON_GNU_CC="cc -Olimit 2000" ;; + mips-sgi-irix5.[[3-9]]* ) machine=iris4d opsys=irix5-3 ;; mips-sgi-irix5.2* ) machine=iris4d opsys=irix5-2 ;; mips-sgi-irix5.1* ) machine=iris4d opsys=irix5-1 ;; mips-sgi-irix* ) machine=iris4d opsys=irix5-0 ;; @@ -1332,8 +1284,8 @@ m68*-sunos1* ) machine=sun1 ;; m68*-sunos2* ) machine=sun2 ;; m68* ) machine=sun3 ;; - i[3-9]86*-sun-sunos[34]* ) machine=sun386 ;; - i[3-9]86-*-* ) machine=intel386 ;; + i[[3-9]]86*-sun-sunos[[34]]* ) machine=sun386 ;; + i[[3-9]]86-*-* ) machine=intel386 ;; rs6000* ) machine=rs6000 ;; sparc* ) machine=sparc ;; powerpc* ) machine=powerpc ;; @@ -1356,24 +1308,24 @@ test -f /usr/ccs/lib/cpp && NON_GNU_CPP=/usr/ccs/lib/cpp RANLIB=':' case "${canonical}" in - *-solaris2.[6-9]* ) need_dynodump=no ;; + *-solaris2.[[6-9]]* ) need_dynodump=no ;; *-solaris2* ) need_dynodump=yes ;; esac esac case "${canonical}" in ## The Sun386 didn't get past 4.0. - i[3-9]86-*-sunos4* ) opsys=sunos4-0 ;; + i[[3-9]]86-*-sunos4* ) opsys=sunos4-0 ;; *-sunos4.0* ) opsys=sunos4-0 ;; *-sunos4.1.2* ) opsys=sunos4-1-2 ;; *-sunos4.1.3* ) opsys=sunos4-1-3 ;; - *-sunos4.1.[4-9]* ) opsys=sunos4-1-4 ;; + *-sunos4.1.[[4-9]]* ) opsys=sunos4-1-4 ;; *-sunos4* | *-sunos ) opsys=sunos4-1 ;; *-solaris2.3* ) opsys=sol2-3 ;; *-solaris2.4* ) opsys=sol2-4 ;; *-solaris2.5* ) opsys=sol2-5 ;; - *-solaris2.[6-9]* ) opsys=sol2-6 ;; + *-solaris2.[[6-9]]* ) opsys=sol2-6 ;; *-solaris* ) opsys=sol2 ;; *-mach* ) opsys=mach-bsd4-3 ;; @@ -1421,9 +1373,9 @@ machine=vax case "${canonical}" in *-bsd4.1* ) opsys=bsd4-1 ;; - *-bsd4.2* | *-ultrix[0-3].* | *-ultrix4.0* ) opsys=bsd4-2 ;; + *-bsd4.2* | *-ultrix[[0-3]].* | *-ultrix4.0* ) opsys=bsd4-2 ;; *-bsd4.3* | *-ultrix* ) opsys=bsd4-3 ;; - *-sysv[01]* | *-sysvr[01]* ) opsys=usg5-0 ;; + *-sysv[[01]]* | *-sysvr[[01]]* ) opsys=usg5-0 ;; *-sysv2* | *-sysvr2* ) opsys=usg5-2 ;; *-vms* ) opsys=vms ;; *-mach* ) opsys=mach-bsd4-3 ;; @@ -1440,10 +1392,10 @@ m68*-wicat-sysv* ) machine=wicat opsys=usg5-2 ;; ## Intel 386 machines where we don't care about the manufacturer - i[3-9]86-*-* ) + i[[3-9]]86-*-* ) machine=intel386 case "${canonical}" in - *-isc1.* | *-isc2.[01]* ) opsys=386-ix ;; + *-isc1.* | *-isc2.[[01]]* ) opsys=386-ix ;; *-isc2.2* ) opsys=isc2-2 ;; *-isc4.0* ) opsys=isc4-0 ;; *-isc4.* ) opsys=isc4-1 @@ -1495,7 +1447,7 @@ if test -z "${opsys}" ; then case "${canonical}" in *-gnu* ) opsys=gnu ;; - *-bsd4.[01] ) opsys=bsd4-1 ;; + *-bsd4.[[01]] ) opsys=bsd4-1 ;; *-bsd4.2 ) opsys=bsd4-2 ;; *-bsd4.3 ) opsys=bsd4-3 ;; *-sysv0 | *-sysvr0 ) opsys=usg5-0 ;; @@ -1503,7 +1455,7 @@ *-sysv2.2 | *-sysvr2.2 ) opsys=usg5-2-2 ;; *-sysv3* | *-sysvr3* ) opsys=usg5-3 ;; *-sysv4.1* | *-sysvr4.1* ) opsys=usg5-4 NON_GNU_CPP=/usr/lib/cpp ;; - *-sysv4.[2-9]* | *-sysvr4.[2-9]* ) + *-sysv4.[[2-9]]* | *-sysvr4.[[2-9]]* ) if test -z "$NON_GNU_CPP" ; then if test -f /usr/ccs/lib/cpp then NON_GNU_CPP=/usr/ccs/lib/cpp @@ -1540,7 +1492,7 @@ case "${canonical}" in sparc* ) dynodump_arch=sparc ;; powerpc* ) dynodump_arch=ppc ;; - i[3-9]86* ) dynodump_arch=i386 ;; + i[[3-9]]86* ) dynodump_arch=i386 ;; esac fi @@ -1554,7 +1506,6 @@ # # ############################################################################ -] dnl ----------------------------------------------------------------------- dnl Let's do a couple of macro (re)definitions. dnl @@ -1675,8 +1626,6 @@ esac fi -[ - #### Some systems specify a CPP to use unless we are using GCC. #### Now that we know whether we are using GCC, we can decide whether #### to use that one. @@ -1717,10 +1666,9 @@ #### Some other nice autoconf tests. If you add a test here which #### should make an entry in src/config.h, don't forget to add an #### #undef clause to src/config.h.in for autoconf to modify. -] dnl checks for programs AC_PROG_CPP -[ + case "${canonical}" in *-sun-sunos* ) if test "${CPP}" = "acc -E" ; then @@ -1728,7 +1676,7 @@ fi ;; esac -] + AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_YACC @@ -1737,7 +1685,9 @@ AC_AIX dnl checks for header files -AC_HAVE_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h utime.h sys/wait.h libintl.h locale.h libgen.h linux/version.h kstat.h sys/pstat.h) +AC_HAVE_HEADERS(mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h) +AC_HAVE_HEADERS(utime.h sys/wait.h libintl.h locale.h libgen.h) +AC_HAVE_HEADERS(linux/version.h kstat.h sys/pstat.h inttypes.h) AC_STDC_HEADERS AC_TIME_WITH_SYS_TIME AC_SYS_SIGLIST_DECLARED @@ -1804,7 +1754,6 @@ fi dnl other checks for UNIX variants -[ # What the hell was this doing here?????? ### echo > confdefs.h # this gets nuked above... @@ -1847,7 +1796,6 @@ ;; esac -] case "${window_system}" in "" | "x11" ) ### If the user hasn't specified where we should find X, try ### letting autoconf figure that out. @@ -1866,7 +1814,7 @@ echo "Unable to proceed." >&2 exit 1 fi - for feature in epoch cde offix menubars scrollbars toolbars dialogs xim tiff + for feature in cde offix menubars scrollbars toolbars dialogs xim tiff do if eval "test -n \"\$with_$feature\" -a \"\$with_$feature\" != no" ; then AC_WARN(--with-$feature ignored: Not valid without X support) @@ -1876,7 +1824,7 @@ elif test -z "${with_toolbars}" ; then with_toolbars='yes' fi -[ + runtime_arg="-R${dash_r_space}" case "${canonical}" in @@ -2078,11 +2026,11 @@ CPP=`eval "echo $CPP"` eval `${CPP} -Isrc ${tempcname} \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([[^=]]*=\)\(.*\)$/\1"\2"/p'` if test "x$SPECIFIED_CFLAGS" = x ; then eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \([[^=]]*=\)\(.*\)$/\1"\2"/p'` else REAL_CFLAGS="$CFLAGS" fi @@ -2114,7 +2062,6 @@ #### Add the libraries to LIBS and check for some functions. -] CPPFLAGS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $CPPFLAGS" DEFS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $DEFS" LIBS="${LD_SWITCH_SITE} $ld_switch_x_system $libsrc_libs $LIBS" @@ -2131,6 +2078,9 @@ dnl Alternative to getloadavg() that doesn't require root priveleges AC_HAVE_LIBRARY(-lkstat) +dnl Use -lintl if Mule available. +AC_HAVE_LIBRARY(-lintl, AC_DEFINE(HAVE_LIBINTL)) + AC_HAVE_LIBRARY(-lXbsd, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd") dnl FSF 19.29 also checks for function cma_open. @@ -3179,7 +3129,6 @@ IF_YES_AC_DEFINE(with_lcc, USE_LCC) IF_YES_AC_DEFINE(with_socks, HAVE_SOCKS) IF_YES_AC_DEFINE(with_term, HAVE_TERM) -IF_YES_AC_DEFINE(with_epoch, EPOCH) IF_YES_AC_DEFINE(external_widget,EXTERNAL_WIDGET) IF_YES_AC_DEFINE(with_gnu_make, USE_GNU_MAKE) IF_YES_AC_DEFINE(no_doc_file, NO_DOC_FILE) @@ -3217,7 +3166,7 @@ ( echo "uname -a: `uname -a`" echo "" -echo "$0 $configure_args" +echo "$0 $quoted_arguments" ) >> Installation # Start stdout redirection to '| tee -a Installation' ( @@ -3247,10 +3196,6 @@ elif test -n "$site_runtime_libraries"; then echo " Additional libraries: ${site_runtime_libraries}" fi -if test "$with_wnn" = yes ; 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." @@ -3268,7 +3213,6 @@ echo " (Using -lgz instead of -lz.)" fi test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion (not implemented)." -test "$with_epoch" = yes && echo " Compiling in extra Epoch compatibility." test "$with_sound" = nas && echo " Compiling in network sound support." test "$with_sound" = native && echo " Compiling in native sound support." @@ -3287,8 +3231,12 @@ test "$with_xim" = motif && echo " Using Motif to provide XIM support." test "$with_xim" = xlib && echo " Using raw Xlib to provide XIM support." test "$with_canna" = yes && echo " Compiling in support for Canna on Mule." -test "$with_wnn" = yes && echo " Compiling in support for WNN on Mule." -test "$with_wnn6" = yes && echo " WNN support for version 6." +if test "$with_wnn" = yes; then + echo " Compiling in support for the WNN input method on Mule." + test "$with_wnn6" = yes && echo " WNN support for version 6." + echo " Finding WNN includes with: ${wnn_includes}" + echo " Finding WNN libs with: ${wnn_libraries}" +fi 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." @@ -3311,9 +3259,9 @@ test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." -test "$with_pop" = yes && "Using POP for mail access" -test "$with_kerberos" = yes && "Using Kerberos for POP authentication" -test "$with_hesiod" = yes && "Using Hesiod to get POP server host" +test "$with_pop" = yes && " Using POP for mail access" +test "$with_kerberos" = yes && " Using Kerberos for POP authentication" +test "$with_hesiod" = yes && " Using Hesiod to get POP server host" test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." test "${debug}" = yes && echo " Compiling in extra code for debugging." @@ -3329,14 +3277,14 @@ dnl ############################################################################ dnl This has to be called in order for this variable to get into config.status -AC_SUBST(internal_makefile_list) [ +AC_SUBST(internal_makefile_list) # Remove any trailing slashes in these variables. test -n "${prefix}" && - prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'` + prefix=`echo "${prefix}" | sed 's,\([[^/]]\)/*$,\1,'` test -n "${exec_prefix}" && - exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'` -] -AC_OUTPUT($internal_makefile_list) [ + exec_prefix=`echo "${exec_prefix}" | sed 's,\([[^/]]\)/*$,\1,'` + +AC_OUTPUT($internal_makefile_list) # Build: # src/Makefile from ${srcdir}/src/Makefile.in # lwlib/Makefile from ${srcdir}/lwlib/Makefile.in @@ -3364,7 +3312,7 @@ eval `echo ${CPP} -I. -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`; < junk.cpp '\ ' sed -e '\''s/^#.*//'\'' '\ -' -e '\''s/^[ \f\t][ \f\t]*$//'\'' '\ +' -e '\''s/^[[ \f\t]][[ \f\t]]*$//'\'' '\ ' -e '\''s/^ / /'\'' '\ ' | sed -n -e '\''/^..*$/p'\'' '\ ' > Makefile.new; @@ -3381,7 +3329,7 @@ eval `echo ${CPP} -I. -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`; < junk.cpp '\ ' sed -e '\''s/^#.*//'\'' '\ -' -e '\''s/^[ \f\t][ \f\t]*$//'\'' '\ +' -e '\''s/^[[ \f\t]][[ \f\t]]*$//'\'' '\ ' -e '\''s/^ / /'\'' '\ ' | sed -n -e '\''/^..*$/p'\'' '\ ' > Makefile.new; @@ -3398,7 +3346,7 @@ eval `echo ${CPP} -I. -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`; < junk.cpp '\ ' sed -e '\''s/^#.*//'\'' '\ -' -e '\''s/^[ \f\t][ \f\t]*$//'\'' '\ +' -e '\''s/^[[ \f\t]][[ \f\t]]*$//'\'' '\ ' -e '\''s/^ / /'\'' '\ ' | sed -n -e '\''/^..*$/p'\'' '\ ' > Makefile.new; @@ -3418,7 +3366,7 @@ eval `echo ${CPP} -I. -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`; < junk.cpp '\ ' sed -e '\''s/^#.*//'\'' '\ -' -e '\''s/^[ \f\t][ \f\t]*$//'\'' '\ +' -e '\''s/^[[ \f\t]][[ \f\t]]*$//'\'' '\ ' -e '\''s/^ / /'\'' '\ ' | sed -n -e '\''/^..*$/p'\'' '\ ' > Makefile.new; @@ -3437,7 +3385,7 @@ eval `echo ${CPP} -I. -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`; < junk.cpp '\ ' sed -e '\''s/^#.*//'\'' '\ -' -e '\''s/^[ \f\t][ \f\t]*$//'\'' '\ +' -e '\''s/^[[ \f\t]][[ \f\t]]*$//'\'' '\ ' -e '\''s/^ / /'\'' '\ ' | sed -n -e '\''/^..*$/p'\'' '\ ' > Makefile.new; @@ -3455,7 +3403,7 @@ eval `echo ${CPP} -I. -I${topsrcdir}/src ${CPPFLAGS} junk.c \>junk.cpp`; < junk.cpp '\ ' sed -e '\''s/^#.*//'\'' '\ -' -e '\''s/^[ \f\t][ \f\t]*$//'\'' '\ +' -e '\''s/^[[ \f\t]][[ \f\t]]*$//'\'' '\ ' -e '\''s/^ / /'\'' '\ ' | sed -n -e '\''/^..*$/p'\'' '\ ' > Makefile.new; @@ -3502,4 +3450,8 @@ fi exit 0 -] + + +# Local Variables: +# eval: (modify-syntax-entry ?\" "\"") +# End: diff -r d101af7320b8 -r cca96a509cfe etc/GNUS-NEWS --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/GNUS-NEWS Mon Aug 13 09:25:29 2007 +0200 @@ -0,0 +1,103 @@ +** Gnus changes. + +*** nntp.el has been totally rewritten in an asynchronous fashion. + +*** Article prefetching functionality has been moved up into +Gnus. + +*** Scoring can now be performed with logical operators like +`and', `or', `not', and parent redirection. + +*** Article washing status can be displayed in the +article mode line. + +*** gnus.el has been split into many smaller files. + +*** Suppression of duplicate articles based on Message-ID. + +(setq gnus-suppress-duplicates t) + +*** New variables for specifying what score and adapt files +are to be considered home score and adapt files. See +`gnus-home-score-file' and `gnus-home-adapt-files'. + +*** Groups can inherit group parameters from parent topics. + +*** Article editing has been revamped and is now usable. + +*** Signatures can be recognized in more intelligent fashions. +See `gnus-signature-separator' and `gnus-signature-limit'. + +*** Summary pick mode has been made to look more nn-like. +Line numbers are displayed and the `.' command can be +used to pick articles. + +*** Commands for moving the .newsrc.eld from one server to +another have been added. + + `M-x gnus-change-server' + +*** A way to specify that "uninteresting" fields be suppressed when +generating lines in buffers. + +*** Several commands in the group buffer can be undone with +`M-C-_'. + +*** Scoring can be done on words using the new score type `w'. + +*** Adaptive scoring can be done on a Subject word-by-word basis: + + (setq gnus-use-adaptive-scoring '(word)) + +*** Scores can be decayed. + + (setq gnus-decay-scores t) + +*** Scoring can be performed using a regexp on the Date header. The +Date is normalized to compact ISO 8601 format first. + +*** A new command has been added to remove all data on articles from +the native server. + + `M-x gnus-group-clear-data-on-native-groups' + +*** A new command for reading collections of documents +(nndoc with nnvirtual on top) has been added -- `M-C-d'. + +*** Process mark sets can be pushed and popped. + +*** A new mail-to-news backend makes it possible to post +even when the NNTP server doesn't allow posting. + +*** A new backend for reading searches from Web search engines +(DejaNews, Alta Vista, InReference) has been added. + + Use the `G w' command in the group buffer to create such + a group. + +*** Groups inside topics can now be sorted using the standard +sorting functions, and each topic can be sorted independently. + + See the commands under the `T S' submap. + +*** Subsets of the groups can be sorted independently. + + See the commands under the `G P' submap. + +*** Cached articles can be pulled into the groups. + + Use the `Y c' command. + +*** Score files are now applied in a more reliable order. + +*** Reports on where mail messages end up can be generated. + + `M-x nnmail-split-history' + +*** More hooks and functions have been added to remove junk +from incoming mail before saving the mail. + + See `nnmail-prepare-incoming-header-hook'. + +*** The nnml mail backend now understands compressed article files. + diff -r d101af7320b8 -r cca96a509cfe etc/MSDOS --- a/etc/MSDOS Mon Aug 13 09:24:19 2007 +0200 +++ b/etc/MSDOS Mon Aug 13 09:25:29 2007 +0200 @@ -1,63 +1,6 @@ -XEmacs does not yet work under MSDOS. If you would be interested in -porting XEmacs to MSDOS, please contact Chuck Thompson . - -The following information applies to FSF Emacs, not to XEmacs. - ---------------------------------------------------------------------------- -This file describes use of Emacs 19 on MS-DOG. - -* The commands `mode25' and `mode4350' change the number of -lines of the screen. You get 43 lines on an EGA monitor, 50 on -a VGA monitor. - -* Ctrl-Break takes the place of C-g. Using compilers prior to -djgpp 1.11 maint 5, you should not use Ctrl-Break unless you -run under DPMI (i.e., you are using Windows, Qdpmi, ...) - -Actually, if Emacs is in an endless loop, you might as well go -ahead and try. Usually it works, but sometimes Emacs crashes -with a stack trace. This is not an Emacs bug. - -* Character codes 0200-0237 are self-inserting. - -* The keyboard support is made as X-like as possible. This means -that events like M-S-f1 will be generated (by Shift + Alt + f1). - -* Mouse support is partially implemented. - -* The `compile' command works on MS-DOG, but it waits for the -compilation to finish before letting you edit again. There's no other -way to do it, given the lack of asynchronous processes. +XEmacs does not work under MSDOS. If you would be interested in porting +XEmacs to MSDOS, please contact Steve Baur . -* The function `expand-file-name' maps upper case letters to lower -case letters, since MS-DOG does not distinguish. - -* The new buffer-local variable `buffer-file-type' controls whether a -file contains text (newlines will be written as CR+LF) or binary data -(newlines written as LF). Text is specified by nil, and binary by t. -The status of a buffer can be seen in the mode line as "T:" or "B:" -before the major mode. - -Normally `buffer-file-type' is set automatically from the variable -`file-name-buffer-file-type-alist' which is an alist mapping regexps -to file types. - -You can visit a file explicitly as text, or as binary, using the -commands `find-file-binary' and `find-file-text'. - -* New variables `binary-process-input' and `binary-process-output' -control whether temporary files are opened as binary or as text -files. nil means text, and t means binary. The difference is -translation of CR+LF to LF and C-z handling. - -* Environment variables "HOME", "EMACSPATH", "TERM", "SHELL", -"USER", "NAME", and "TZ" are given default values as suitable -for a single user system. See src/msdos.c for details. - -* The function `substitute-in-file-name' disregards case in -environment variables, as the MS-DOG SET command does. - -* The variable `msdos-shells' contains a list of commands that -are shells. This variable is used to convert to map Unix-like -commands like "$SHELL -c /some/command" to MS-DOG commands -like "$SHELL /c \some\command". +As of 20.1 the old Emacs files have been removed from the XEmacs +distribution. Interested parties should probably grab updated versions +from a current Emacs distribution. diff -r d101af7320b8 -r cca96a509cfe etc/categories --- a/etc/categories Mon Aug 13 09:24:19 2007 +0200 +++ b/etc/categories Mon Aug 13 09:25:29 2007 +0200 @@ -33,5 +33,5 @@ performance:Performance Issues:gnats-admin:dmoore@ucsd.edu redisplay:Redisplay Issues:gnats-admin:cthomp@xemacs.org scrollbars:X11 scrollbars:gnats-amdin:mrb@eng.sun.com -tooblbars:X11 toolbars:gnats-admin: +toolbars:X11 toolbars:gnats-admin: test:*Test Category:gnats-admin: diff -r d101af7320b8 -r cca96a509cfe etc/mine/explosion3.au Binary file etc/mine/explosion3.au has changed diff -r d101af7320b8 -r cca96a509cfe etc/mine/pad.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/mine/pad.xpm Mon Aug 13 09:25:29 2007 +0200 @@ -0,0 +1,14 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"47 6 1 1", +/* colors */ +"` s None c None", +/* pixels */ +"```````````````````````````````````````````````", +"```````````````````````````````````````````````", +"```````````````````````````````````````````````", +"```````````````````````````````````````````````", +"```````````````````````````````````````````````", +"```````````````````````````````````````````````" +}; diff -r d101af7320b8 -r cca96a509cfe etc/mine/splash.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/mine/splash.xpm Mon Aug 13 09:25:29 2007 +0200 @@ -0,0 +1,100 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"340 78 15 1", +/* colors */ +"` c #3038C0", +"a c #484C88", +"b c #D0CCD8", +"c s None c None", +"d c #E89CA0", +"e c #985458", +"f c #481010", +"g c #A8ACB0", +"h c #909098", +"i c #901020", +"j c #787878", +"k c #080C10", +"l c #E05460", +"m c #686C88", +"n c #D01428", +/* pixels */ +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbbbbbbbbbccccbbbbbbbbbbcccccbbbbbbbbbbbbbbbbbghhhhhhhhgbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccg```````````````ccccm`````````bcccg``````````````````````````mbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccch```````````kkkkcccbam``````kkgccchka`````````kkkkk`````````khcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbgmm```````kkjggccccbb````kkfjbcccbgba```````kkjggghak``````khcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccb```````khbbbbcccbh```kkhbbbbccccbm```````kgbbbbbbbgm````kbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbm``````kjbbbbbbbg```kkgbbbbbbbccb````````kbbbbbbbbbbm```fggbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccch```````aggggbbb```kkgggggggbbbbb```````kahggggbbbbbg``kfhhggbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccb```````fjhhgbbm``kkbbgghhggbbbbh```````kajjhhggbbbbb``kmhhhgbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccba``````kmjhbbm``kkgbbghhhggbbcbm```````kmmjjhgbbbbbb``khhjhgbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccch```````ajgbm``kkgcbbgghggbbccb```````kkmmmjggbbcccb``kghhhgbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccg```````fgbm``kkgcbbbggggbbccbg```````kammjhgbbgbcccbkagghhgbcccccbccccccbbbcccccccccbbbccccccccccccccccccbbbcccccccccccccccccccccccbbbccccccccccccccbbbcccccbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccb```````abm``kkgccbbgggbbbcccbh```````kammjhgbm`hbcccggbgggbbbbbbggmcccbbgmmmbcccccbbgmmmgcccccccccccccbbghmmhccbbbggbcccccccccccbbghmmmgcccccccccbbghmmmhbbbgmbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccm``````mh``kkhccbbgggbbbccccbm```````kmmmjhbg``kbcccccbbbhhmmm````aacbga`````gcccbg``````mcccccccccccbga``````bh````agccccccccbbh```a````gccccccbbm`````a`mm``abcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccg`````````kkhbbbbbggbbbcccccb```````kkmmmhbba``kccccccbbb`````````kjbg````````gcbh````````accccccccbbh`````ka`ha`````accccccbbg````kfg````jcccccbm````kkam````kbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccb````````kkmbbbbbggbbbcccccbg```````amhhgbgm``kacccccccbbbam``````kbh`````````mbg``````````jccccccbbm````kkfgma`````kmcccccbbm````kabg`````hcccbg````kacccm```kccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccm```````kahgbbgggbbbccccccbm```````bhhhhm````kgccbbccccbbbh``````gba`kg``````bh`akmm``````abbbccbbm````kkgcbh``````kgbbbcbbm````kkbba`````fbbcbm````kccbbg```kbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccch```````fjhgggggbbbcccccccba`````````````````kbbbbbbcccccbh`````mg`mkab`````aj`akfbm`````kagbbbbbm`````kjbbbh``````kbbbbbbm`````kbcb``````kbbbb`````abbbbba``abbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccb```````kmjhhggbbbccccccccb````````k`````````kbbbbbbcccccbm`````gaakabg`````m`akabb``````kahggbbh`````kabbbbm`````kaggggbh`````kmbbb``````kggbb``````bggggh`kagggbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbm``````kajjhggbbccccccccbh```````kfakkfa```kmbbggbbcccccb`````ma`fkhgh```````kfhbg``````kmjhgbg``````kbbggbm`````kmhhhbg``````kbbggh````kahhgb``````mghggh`kjggggbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbg````````amjhgbbcccccccccbm```````kmmmjhg```kjggggbbcccccg`````m`akmhbm```````kmjbm``````kmmjgba`````kmbgggb``````khjjhba`````kmbggggjkkkkjjjhga`````ajhhgbhkjggggbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbga````````kmjhgbccccccccccb```````kkmmmjhgm``kghhhgbbccccbh```````kajhb```````kamhb``````kfmmjbh``````kgghhgg`````kfjjjgg``````kgghhhggbhhghjjhgh``````ahhgbbbbbgggbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbg``aa``````kmjhgbccccccccccg```````kammmjhgm`kkhhhhgbbccccba``````kkmjgh``````kkmmgg``````kmmmhb``````kaghhhbm`````kajmjba`````kfghhhhgbbbbghjjhgg```````ahgbbcbbggbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbg```kh```````ajhgbcccccccccbh```````kammmjhbm`kahhjhgbbccccb```````kamjbm``````kammbm``````kjmmgh``````khhjjhb``````kjjmhg``````kmhhjhggbbbbgghhggbh```````agbbcbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbba``kkg```````kjhgbcccccccccbm```````kmmmjhgbm`khghhggbccccbh``````kkmmhb``````kajmhb``````kajmmbm`````kfghjjgg`````kkjjjgh``````khhjjhgbbccbbggggbbcm```````mgbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbm``kkbba``````kmjgbbccccccccb```````kkmmmjggbgakbggggmbccccbm``````kmmmgg``````kjmmgh``````kmjmhb``````kahjjhbm`````kajjjbm``````khjjjhgbccccbbbbbbccc````````ggbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbm``kkbcbh```````ajhgbcccccccbh```````kammjhgbbcggbbgbm`mbcccb``````kkjmmbm`````kkjmmbm``````kjjmhh``````kjjjjgg``````kjjjjb``````kfjjjhgbbcccccbbbbccccb```````agbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbm``kkbccbg```````kjhgbcccccccbm```````kmmmjhgbccccbbbh``kcccbg``````kammjb``````kmjmjb``````kahmjgh``````khjjjbh``````khjjjb``````kajmjhgbcbccccccggccccch``````khgbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbm``kkgccbbba``````kjhgbbccccccba```````kmmmjgbbccccbbg``kacccbh``````kmmmhg``````khjmhg``````kjbmjgm`````kfjmjgg``````kfhgjhb``````kammjhgbbbhccccch`hbcccch``````ahgbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbbbbbbbbbkccccccccccbh``kkgccbbbbm```````ajhbbccccccg```````kkmmmhgbbccccbg```kjcccbm`````kkjmmgh`````kfjjmgh``````kbh`agm`````kajmhbm``````kmbjahb``````kammjgbbbm`acccbh`kgccccba`````khgbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbbbbbbbbkkcccccccccbh```kgccbbbggh```````fjhgbcccccbh```````kammjhgbcccbbh````kbcbbb``````kajmjba`````kmjmjbm`````khg`akhm``````amhbh`m`````kgg`afbm``````ammhgbbm``khccbm``hccccch`````kjhgbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkcccccccbbh```kaccbbbggbb````````jhgbbccccbm```````kmmmjhgbcbbgm`````fcbbbh``````kjmmhg``````khjmjb``````hba`kfgh``````hgbh`mm`````bg``kabh``````jhhgbbm``kacccbm``accccbb````kfjhgbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkfccccccbbm````accbbbggbbb````````mhgbbcccbg````````fmmmhgbbbgm``````kmbbbbm``````kjmmgh`````kfjjjjb``````aa``kjgg```````ma``mm`````m``kkgbb```````ahhm```kkbcccba```bbbbbg````kamjhgbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkccccbbh``````ahbbbgbbbhm`````````hggbbbgh`````````mgbbbghma````````kgbbgb``````kajmjbm`````kmjmjhg````````kkahgba`````````kfm```````kkjgbbg````````````kkbccbbb````hbbbbm```kkjjjhgbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkcccccm``````````hgggg```````````````bbg````````````````````````````kbgggg``````kmjmjg``````khjmjhgj``````kkajggbb````````kkgb``````kkahgbbbh``````````kkbccbbbb`````mhha```kkhjjjhgbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkcccccbakkkkkkkkkkmgbbjkkkkkkkkkkkkkkkbbjkkkkkkkkkkkkkkkkkkkkkkkkkkkagghhghkkkkkkjmmjhhkkkkkkhjjjhbba```kkkajjhgbbg`````kkkhgbg````kkajhggbbbgk``````kkabbbbbbbg`kkk``````kkfgghjjhgbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkccccccbgggghhjjmmhgbbbgggghhjmaaaaamjbbbgggghhjmaaaaaamjhhggghhhhhjhhhhhgghghhjjjmjhgghhhhjjjjjhgbbcjaaaammjjhggbbgakkkkajhggghfkkammjjhgbbbbbmfkkkkajgbbbbbbbbgkgbgakkkkahbbghhhgbbcccccdddcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkcccccccccccbbgghhhgbbcccccbbghjmmmjhggbbccccbbghjjmmmjhgbbbbbbbbbgghhjhggbcccbghjjjhgbbccbghjjjhgbcccbbghjmjjhggbbbbggjjmjjhggggghjjmjjhggbbbbbghjjjjhggggggbbbcccbbggggbbbbbghhhgbbccccblnnnbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkccccccccccbbgghhhhgbbcccccbbghjjjjjhhgbbbccbbbghhjjjjhhgbbbbbbbggghhhhhgbbcccbghhjhgbbcccbgghhhgbbcccbbghjjjhhgbbbcbbghjjjjhhggggghjjjhhgbbccbbgghjjjjhhggggbbccccbbgggggbbbbggggbbcccccblnnnkbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkccccccccccbbggghgggbbbcccbbbgghhhhhhggbbbbcbbbgghhhhhhggbbbbbbbgggghhggbbccccbbgghggbbcccbbgggggbcccccbbghhhggbbbcccbbghhhhhggbbbgghhhhgbbbcccbbgghhhhhhgggbbccccccbgggggbbbggggbbccccccblnnnkbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkccccccccccbbbbggggbbbcccccbbbggggggggbbbbccbbbbgggggggbbbbbbbbbbbgggggbbbccccbbbggbbbccccbbbggbbbcccccbbbggggbbbcccccbbggggggbbbbbbggggbbbcccccbbbgggggggbbbcccccccbbbbbbbbbbbbbbcccccccclnnnkggbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkcccccccccccbbbbbbbbbcccccccbbbbbbbbbbbbbcccccbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccbbbbbbccccccbbbbbbcccccccbbbbbbbccccccccbbbbbbbbccccbbbbbbcccccccccbbbbbbbbbbcccccccccbbbbbbbbbbbbccccccccccefkkhgbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbcccccccccbcccccccccccccccbbbbccccccccccccccccccccccccccccccccccchjjhgbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbkkkkkkkkkkkkkkkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbccccbbbbcccccccccccccccbbggggbbcccccccccccccbbbbccccccccccccccccbbbbbcccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckkkkkkkkkkkkkkkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdddddddbccbdddddddcbdddddddllldcddllllbcccccccddddddddbggbbccccccdddddbbddlllldcccccccccccbddlllllldcccccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbbbbbbbbbkbbbbbbbbbbbbbbbkbbbbbbbbbbbbbbbkbbbbbbbbbbbbbbbkbbbbbbbbbbbbbbbkbbbbbbbbbbbbbbbkcccccccccccccccccccccccccccccccccccccccccccccccccccccclnnnnnnnbcbnnnnnnneblnnnnlnnnnnldnnnnnngccccccbnnnnnnnebbbbccccccdnnnnldnnnnnnndcccccccccbdlnnnnnnnnndcccccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbbbbbbbbbkkbbbbbbbbbbbbbbkkbbbbbbbbbbbbbbkkbbbbbbbbbbbbbbkkbbbbbbbbbbbbbbkkbbbbbbbbbbbbbbkkccccccccccccccccccccccccccccccccccccccccccccccccccccccdnnnnnnikbblnnnnnniadnnnnnniinnnnnninnnigbbccccnnnnnnnfjbbcccccccbnnnnnnnniinnnnebbcccccbdnnnniiiinnnnlbbccccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccgfnnnikagbbdnnnkkkaggdnnnfkalnnnnkkhlnnkgbbcccckkadnnfmgbbcccccccbdnnnnikkaalnnijbbcccbdnnnnkkfaafinnnibbcccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkfbbggggggggggggkfbbggggggggggggkfbbggggggggggggkfbbggggggggggggkfbbggggggggggggkfccccccccccccccccccccccccccccccccccccccccccccccccccccccccbgnnnehgddnnnkkmmhgbdnnikahdnnnfkjglnnfggbcccccbbdnnfmggbccccccccdnnnikahhhdlnnfgbbccdlnnnkkjhhhhhennnabbccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbhnnneddnnnkkmjjhgbdnnffmjdlnnkajhdnnfmgbbccccbbdnnfahgbccccccccdnnnkkjjhhglnnfjgbccdnnnkkhhhhhhhglnnihgbcccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbhnnnlnnnkkjjjhggbdnnfamjdlnnkamhdnnfahgbccccbbdnnfahgbccccccccdnnikamjhggdnnfagbbbdnnnhddddddbbddnnnagbbccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbhnnnnnfkhhhhggbbdnnfajhdlnnkmjgdnnfahgbcccccbdnnfahgbccccccccdnnifmmhgbbdnnfahgbblnnnlllllllllllnnnkhgbccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbdnnnikmhhhgbbbbdnnfajhblnnkjjgdnnfahgbccccccdnnfahgbbcccccccdnnifjjhbbbdnnfahgbblnnnnnnnnnnnnnnnnnkjgbbcccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdlnnnnejjhgbbcccdnnfahgblnnkjhgdnnfahgbccccccdnnfahgbbcccccccdnnifjhgbcbdnnfahgbblnniiiiiiiiiiiiiifkjhbbcccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdlnnfnnnejhgbccccdnnfahgblnnkhhgdnnfahgbbcccccdnnfmhgbbcccccccdnnifjhgbccdnnfahgbblnnfkkkfffffffffffajhbbcccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdlnnfkannnehgbccccdnnfmhgblnnkhhgdnnfmhgbbcccccdnnfmhgbbcccccccdnnifhhgbccdnnfmhgbbdnniammjjhhhhhhghjjhgbbcccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkccccccccccccccccccccccccccccccccccccccccccccccccccccccccbdlnnfkmhmnnnegbbcccdnnfmhgblnnkhhgdnnfmhgbbcccccdnnfmhgbbcccccccdnnifhhgbccdnnfmhgbbbnnnammjhhggggdddhhggbccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkcccccccccccccccccccccccccccccccccccccccccccccccccccccccbdlnnikmhhhhnnnebbccbdnnimhgblnnkhhgdnnfmhgbbccccbdnnijggbbcccccccdnnnahhgbbbdnnimhgbbclnnnhjhggbbddlnnnggbbccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkbbggggggggggggkkcccccccccccccccccccccccccccccccccccccccccccccccccccccbddlnnnlaghgddlnnnlgbddlnnlljgblnnljhgdnnlehgdddddddlnnlddddddccccdddnnlljhgbddlnnlljgbbcbnnnnldddddlnnnnikbbbccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbkkkkkkkkkkkkkkkbkkkkkkkkkkkkkkkbkkkkkkkkkkkkkkkbkkkkkkkkkkkkkkkbkkkkkkkkkkkkkkkbkkkkkkkkkkkkkkkcccccccccccccccccccccccccccccccccccccccccccccccccccccbnnnnnnnnjhglnnnnnnndlnnnnnnnhblnnnnjgdnnnnegdnnnnnnnnnnnnnnnnecccdnnnnnnnmgblnnnnnnnhgbccbnnnnnnnnnnnnnikfgbbccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccckkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkcccccccccccccccccccccccccccccccccccccccccccccccccccccclnnnnnnikhghnnnnnniklnnnnnnikglnnnnkggnnnnkmgnnnnnnnnnnnnnnnnkhbcbnnnnnnnkgbdnnnnnnikgbbcbginnnnnnnnifkkahgbbccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccakkkkkkkhgbhkkkkkkfgakkkkkkkggakkkkhggkkkkmgbkkkkkkkkkkkkkkkkhbbcgkkkkkkkhgbjkkkkkkfgbbcbbgakfffffkkkahhhggbccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbghjjjhgbbbghjjjjhggghhjjhhgbgghhhgbbghhhgbbbbgghhhjjjjhhhhggbbcbbghjjjhgbbbbghjjhggbccbbggjammmmhhhhhhgbbccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbghhhhggbbbbghhhhggggghhhhggbbgggggbbbggggbbbbggghhhhhhhhhggbbbcbbgghhhggbbbbghhhhgbbcccbbggghhhhhhhgggbbcccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbggggbbbcbbbggggbbbbbggggbbbbbbbbbbbbbbbbbbbbbbgggggggggggbbbcccbbbgggbbbcbbbggggbbcccccbbbbgggggggbbbbccccccccccccc", +"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbbbbbbcccccbbbbbbbbbbbbbbbccccbbbccccbbbbccccbbbbbbbbbbbbbbbcccccbbbbbbcccccbbbbbbccccccccbbbbbbbbbbbccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", +"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" +}; diff -r d101af7320b8 -r cca96a509cfe etc/morioka.xpm.Z Binary file etc/morioka.xpm.Z has changed diff -r d101af7320b8 -r cca96a509cfe etc/moriokam.xpm.Z Binary file etc/moriokam.xpm.Z has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/XEmacs.clr --- a/etc/ns/XEmacs.clr Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,745 +0,0 @@ -743 -0 1.000 0.980 0.980 1.0 snow -0 0.972 0.972 1.000 1.0 ghost white -0 0.972 0.972 1.000 1.0 GhostWhite -0 0.960 0.960 0.960 1.0 white smoke -0 0.960 0.960 0.960 1.0 WhiteSmoke -0 0.862 0.862 0.862 1.0 gainsboro -0 1.000 0.980 0.941 1.0 floral white -0 1.000 0.980 0.941 1.0 FloralWhite -0 0.992 0.960 0.901 1.0 old lace -0 0.992 0.960 0.901 1.0 OldLace -0 0.980 0.941 0.901 1.0 linen -0 0.980 0.921 0.843 1.0 antique white -0 0.980 0.921 0.843 1.0 AntiqueWhite -0 1.000 0.937 0.835 1.0 papaya whip -0 1.000 0.937 0.835 1.0 PapayaWhip -0 1.000 0.921 0.803 1.0 blanched almond -0 1.000 0.921 0.803 1.0 BlanchedAlmond -0 1.000 0.894 0.768 1.0 bisque -0 1.000 0.854 0.725 1.0 peach puff -0 1.000 0.854 0.725 1.0 PeachPuff -0 1.000 0.870 0.678 1.0 navajo white -0 1.000 0.870 0.678 1.0 NavajoWhite -0 1.000 0.894 0.709 1.0 moccasin -0 1.000 0.972 0.862 1.0 cornsilk -0 1.000 1.000 0.941 1.0 ivory -0 1.000 0.980 0.803 1.0 lemon chiffon -0 1.000 0.980 0.803 1.0 LemonChiffon -0 1.000 0.960 0.933 1.0 seashell -0 0.941 1.000 0.941 1.0 honeydew -0 0.960 1.000 0.980 1.0 mint cream -0 0.960 1.000 0.980 1.0 MintCream -0 0.941 1.000 1.000 1.0 azure -0 0.941 0.972 1.000 1.0 alice blue -0 0.941 0.972 1.000 1.0 AliceBlue -0 0.901 0.901 0.980 1.0 lavender -0 1.000 0.941 0.960 1.0 lavender blush -0 1.000 0.941 0.960 1.0 LavenderBlush -0 1.000 0.894 0.882 1.0 misty rose -0 1.000 0.894 0.882 1.0 MistyRose -0 1.000 1.000 1.000 1.0 white -0 0.000 0.000 0.000 1.0 black -0 0.184 0.309 0.309 1.0 dark slate gray -0 0.184 0.309 0.309 1.0 DarkSlateGray -0 0.184 0.309 0.309 1.0 dark slate grey -0 0.184 0.309 0.309 1.0 DarkSlateGrey -0 0.411 0.411 0.411 1.0 dim gray -0 0.411 0.411 0.411 1.0 DimGray -0 0.411 0.411 0.411 1.0 dim grey -0 0.411 0.411 0.411 1.0 DimGrey -0 0.439 0.501 0.564 1.0 slate gray -0 0.439 0.501 0.564 1.0 SlateGray -0 0.439 0.501 0.564 1.0 slate grey -0 0.439 0.501 0.564 1.0 SlateGrey -0 0.466 0.533 0.600 1.0 light slate gray -0 0.466 0.533 0.600 1.0 LightSlateGray -0 0.466 0.533 0.600 1.0 light slate grey -0 0.466 0.533 0.600 1.0 LightSlateGrey -0 0.745 0.745 0.745 1.0 gray -0 0.745 0.745 0.745 1.0 grey -0 0.827 0.827 0.827 1.0 light grey -0 0.827 0.827 0.827 1.0 LightGrey -0 0.827 0.827 0.827 1.0 light gray -0 0.827 0.827 0.827 1.0 LightGray -0 0.098 0.098 0.439 1.0 midnight blue -0 0.098 0.098 0.439 1.0 MidnightBlue -0 0.000 0.000 0.501 1.0 navy -0 0.000 0.000 0.501 1.0 navy blue -0 0.000 0.000 0.501 1.0 NavyBlue -0 0.392 0.584 0.929 1.0 cornflower blue -0 0.392 0.584 0.929 1.0 CornflowerBlue -0 0.282 0.239 0.545 1.0 dark slate blue -0 0.282 0.239 0.545 1.0 DarkSlateBlue -0 0.415 0.352 0.803 1.0 slate blue -0 0.415 0.352 0.803 1.0 SlateBlue -0 0.482 0.407 0.933 1.0 medium slate blue -0 0.482 0.407 0.933 1.0 MediumSlateBlue -0 0.517 0.439 1.000 1.0 light slate blue -0 0.517 0.439 1.000 1.0 LightSlateBlue -0 0.000 0.000 0.803 1.0 medium blue -0 0.000 0.000 0.803 1.0 MediumBlue -0 0.254 0.411 0.882 1.0 royal blue -0 0.254 0.411 0.882 1.0 RoyalBlue -0 0.000 0.000 1.000 1.0 blue -0 0.117 0.564 1.000 1.0 dodger blue -0 0.117 0.564 1.000 1.0 DodgerBlue -0 0.000 0.749 1.000 1.0 deep sky blue -0 0.000 0.749 1.000 1.0 DeepSkyBlue -0 0.529 0.807 0.921 1.0 sky blue -0 0.529 0.807 0.921 1.0 SkyBlue -0 0.529 0.807 0.921 1.0 skyblue -0 0.529 0.807 0.980 1.0 light sky blue -0 0.529 0.807 0.980 1.0 LightSkyBlue -0 0.274 0.509 0.705 1.0 steel blue -0 0.274 0.509 0.705 1.0 SteelBlue -0 0.690 0.768 0.870 1.0 light steel blue -0 0.690 0.768 0.870 1.0 LightSteelBlue -0 0.678 0.847 0.901 1.0 light blue -0 0.678 0.847 0.901 1.0 LightBlue -0 0.690 0.878 0.901 1.0 powder blue -0 0.690 0.878 0.901 1.0 PowderBlue -0 0.686 0.933 0.933 1.0 pale turquoise -0 0.686 0.933 0.933 1.0 PaleTurquoise -0 0.000 0.807 0.819 1.0 dark turquoise -0 0.000 0.807 0.819 1.0 DarkTurquoise -0 0.282 0.819 0.800 1.0 medium turquoise -0 0.282 0.819 0.800 1.0 MediumTurquoise -0 0.250 0.878 0.815 1.0 turquoise -0 0.000 1.000 1.000 1.0 cyan -0 0.878 1.000 1.000 1.0 light cyan -0 0.878 1.000 1.000 1.0 LightCyan -0 0.372 0.619 0.627 1.0 cadet blue -0 0.372 0.619 0.627 1.0 CadetBlue -0 0.400 0.803 0.666 1.0 medium aquamarine -0 0.400 0.803 0.666 1.0 MediumAquamarine -0 0.498 1.000 0.831 1.0 aquamarine -0 0.000 0.392 0.000 1.0 dark green -0 0.000 0.392 0.000 1.0 DarkGreen -0 0.333 0.419 0.184 1.0 dark olive green -0 0.333 0.419 0.184 1.0 DarkOliveGreen -0 0.560 0.737 0.560 1.0 dark sea green -0 0.560 0.737 0.560 1.0 DarkSeaGreen -0 0.180 0.545 0.341 1.0 sea green -0 0.180 0.545 0.341 1.0 SeaGreen -0 0.235 0.701 0.443 1.0 medium sea green -0 0.235 0.701 0.443 1.0 MediumSeaGreen -0 0.125 0.698 0.666 1.0 light sea green -0 0.125 0.698 0.666 1.0 LightSeaGreen -0 0.596 0.984 0.596 1.0 pale green -0 0.596 0.984 0.596 1.0 PaleGreen -0 0.000 1.000 0.498 1.0 spring green -0 0.000 1.000 0.498 1.0 SpringGreen -0 0.486 0.988 0.000 1.0 lawn green -0 0.486 0.988 0.000 1.0 LawnGreen -0 0.000 1.000 0.000 1.0 green -0 0.498 1.000 0.000 1.0 chartreuse -0 0.000 0.980 0.603 1.0 medium spring green -0 0.000 0.980 0.603 1.0 MediumSpringGreen -0 0.678 1.000 0.184 1.0 green yellow -0 0.678 1.000 0.184 1.0 GreenYellow -0 0.196 0.803 0.196 1.0 lime green -0 0.196 0.803 0.196 1.0 LimeGreen -0 0.603 0.803 0.196 1.0 yellow green -0 0.603 0.803 0.196 1.0 YellowGreen -0 0.133 0.545 0.133 1.0 forest green -0 0.133 0.545 0.133 1.0 ForestGreen -0 0.419 0.556 0.137 1.0 olive drab -0 0.419 0.556 0.137 1.0 OliveDrab -0 0.741 0.717 0.419 1.0 dark khaki -0 0.741 0.717 0.419 1.0 DarkKhaki -0 0.941 0.901 0.549 1.0 khaki -0 0.933 0.909 0.666 1.0 pale goldenrod -0 0.933 0.909 0.666 1.0 PaleGoldenrod -0 0.980 0.980 0.823 1.0 light goldenrod yellow -0 0.980 0.980 0.823 1.0 LightGoldenrodYellow -0 1.000 1.000 0.878 1.0 light yellow -0 1.000 1.000 0.878 1.0 LightYellow -0 1.000 1.000 0.000 1.0 yellow -0 1.000 0.843 0.000 1.0 gold -0 0.933 0.866 0.509 1.0 light goldenrod -0 0.933 0.866 0.509 1.0 LightGoldenrod -0 0.854 0.647 0.125 1.0 goldenrod -0 0.854 0.647 0.125 1.0 Goldenrod -0 0.721 0.525 0.043 1.0 dark goldenrod -0 0.721 0.525 0.043 1.0 DarkGoldenrod -0 0.737 0.560 0.560 1.0 rosy brown -0 0.737 0.560 0.560 1.0 RosyBrown -0 0.803 0.360 0.360 1.0 indian red -0 0.803 0.360 0.360 1.0 IndianRed -0 0.545 0.270 0.074 1.0 saddle brown -0 0.545 0.270 0.074 1.0 SaddleBrown -0 0.627 0.321 0.176 1.0 sienna -0 0.803 0.521 0.247 1.0 peru -0 0.870 0.721 0.529 1.0 burlywood -0 0.960 0.960 0.862 1.0 beige -0 0.960 0.870 0.701 1.0 wheat -0 0.956 0.643 0.376 1.0 sandy brown -0 0.956 0.643 0.376 1.0 SandyBrown -0 0.823 0.705 0.549 1.0 tan -0 0.823 0.411 0.117 1.0 chocolate -0 0.698 0.133 0.133 1.0 firebrick -0 0.647 0.164 0.164 1.0 brown -0 0.913 0.588 0.478 1.0 dark salmon -0 0.913 0.588 0.478 1.0 DarkSalmon -0 0.980 0.501 0.447 1.0 salmon -0 1.000 0.627 0.478 1.0 light salmon -0 1.000 0.627 0.478 1.0 LightSalmon -0 1.000 0.647 0.000 1.0 orange -0 1.000 0.549 0.000 1.0 dark orange -0 1.000 0.549 0.000 1.0 DarkOrange -0 1.000 0.498 0.313 1.0 coral -0 0.941 0.501 0.501 1.0 light coral -0 0.941 0.501 0.501 1.0 LightCoral -0 1.000 0.388 0.278 1.0 tomato -0 1.000 0.270 0.000 1.0 orange red -0 1.000 0.270 0.000 1.0 OrangeRed -0 1.000 0.000 0.000 1.0 red -0 1.000 0.411 0.705 1.0 hot pink -0 1.000 0.411 0.705 1.0 HotPink -0 1.000 0.078 0.576 1.0 deep pink -0 1.000 0.078 0.576 1.0 DeepPink -0 1.000 0.752 0.796 1.0 pink -0 1.000 0.713 0.756 1.0 light pink -0 1.000 0.713 0.756 1.0 LightPink -0 0.858 0.439 0.576 1.0 pale violet red -0 0.858 0.439 0.576 1.0 PaleVioletRed -0 0.690 0.188 0.376 1.0 maroon -0 0.780 0.082 0.521 1.0 medium violet red -0 0.780 0.082 0.521 1.0 MediumVioletRed -0 0.815 0.125 0.564 1.0 violet red -0 0.815 0.125 0.564 1.0 VioletRed -0 1.000 0.000 1.000 1.0 magenta -0 0.933 0.509 0.933 1.0 violet -0 0.866 0.627 0.866 1.0 plum -0 0.854 0.439 0.839 1.0 orchid -0 0.729 0.333 0.827 1.0 medium orchid -0 0.729 0.333 0.827 1.0 MediumOrchid -0 0.600 0.196 0.800 1.0 dark orchid -0 0.600 0.196 0.800 1.0 DarkOrchid -0 0.580 0.000 0.827 1.0 dark violet -0 0.580 0.000 0.827 1.0 DarkViolet -0 0.541 0.168 0.886 1.0 blue violet -0 0.541 0.168 0.886 1.0 BlueViolet -0 0.627 0.125 0.941 1.0 purple -0 0.576 0.439 0.858 1.0 medium purple -0 0.576 0.439 0.858 1.0 MediumPurple -0 0.847 0.749 0.847 1.0 thistle -0 1.000 0.980 0.980 1.0 snow1 -0 0.933 0.913 0.913 1.0 snow2 -0 0.803 0.788 0.788 1.0 snow3 -0 0.545 0.537 0.537 1.0 snow4 -0 1.000 0.960 0.933 1.0 seashell1 -0 0.933 0.898 0.870 1.0 seashell2 -0 0.803 0.772 0.749 1.0 seashell3 -0 0.545 0.525 0.509 1.0 seashell4 -0 1.000 0.937 0.858 1.0 AntiqueWhite1 -0 0.933 0.874 0.800 1.0 AntiqueWhite2 -0 0.803 0.752 0.690 1.0 AntiqueWhite3 -0 0.545 0.513 0.470 1.0 AntiqueWhite4 -0 1.000 0.894 0.768 1.0 bisque1 -0 0.933 0.835 0.717 1.0 bisque2 -0 0.803 0.717 0.619 1.0 bisque3 -0 0.545 0.490 0.419 1.0 bisque4 -0 1.000 0.854 0.725 1.0 PeachPuff1 -0 0.933 0.796 0.678 1.0 PeachPuff2 -0 0.803 0.686 0.584 1.0 PeachPuff3 -0 0.545 0.466 0.396 1.0 PeachPuff4 -0 1.000 0.870 0.678 1.0 NavajoWhite1 -0 0.933 0.811 0.631 1.0 NavajoWhite2 -0 0.803 0.701 0.545 1.0 NavajoWhite3 -0 0.545 0.474 0.368 1.0 NavajoWhite4 -0 1.000 0.980 0.803 1.0 LemonChiffon1 -0 0.933 0.913 0.749 1.0 LemonChiffon2 -0 0.803 0.788 0.647 1.0 LemonChiffon3 -0 0.545 0.537 0.439 1.0 LemonChiffon4 -0 1.000 0.972 0.862 1.0 cornsilk1 -0 0.933 0.909 0.803 1.0 cornsilk2 -0 0.803 0.784 0.694 1.0 cornsilk3 -0 0.545 0.533 0.470 1.0 cornsilk4 -0 1.000 1.000 0.941 1.0 ivory1 -0 0.933 0.933 0.878 1.0 ivory2 -0 0.803 0.803 0.756 1.0 ivory3 -0 0.545 0.545 0.513 1.0 ivory4 -0 0.941 1.000 0.941 1.0 honeydew1 -0 0.878 0.933 0.878 1.0 honeydew2 -0 0.756 0.803 0.756 1.0 honeydew3 -0 0.513 0.545 0.513 1.0 honeydew4 -0 1.000 0.941 0.960 1.0 LavenderBlush1 -0 0.933 0.878 0.898 1.0 LavenderBlush2 -0 0.803 0.756 0.772 1.0 LavenderBlush3 -0 0.545 0.513 0.525 1.0 LavenderBlush4 -0 1.000 0.894 0.882 1.0 MistyRose1 -0 0.933 0.835 0.823 1.0 MistyRose2 -0 0.803 0.717 0.709 1.0 MistyRose3 -0 0.545 0.490 0.482 1.0 MistyRose4 -0 0.941 1.000 1.000 1.0 azure1 -0 0.878 0.933 0.933 1.0 azure2 -0 0.756 0.803 0.803 1.0 azure3 -0 0.513 0.545 0.545 1.0 azure4 -0 0.513 0.435 1.000 1.0 SlateBlue1 -0 0.478 0.403 0.933 1.0 SlateBlue2 -0 0.411 0.349 0.803 1.0 SlateBlue3 -0 0.278 0.235 0.545 1.0 SlateBlue4 -0 0.282 0.462 1.000 1.0 RoyalBlue1 -0 0.262 0.431 0.933 1.0 RoyalBlue2 -0 0.227 0.372 0.803 1.0 RoyalBlue3 -0 0.152 0.250 0.545 1.0 RoyalBlue4 -0 0.000 0.000 1.000 1.0 blue1 -0 0.000 0.000 0.933 1.0 blue2 -0 0.000 0.000 0.803 1.0 blue3 -0 0.000 0.000 0.545 1.0 blue4 -0 0.117 0.564 1.000 1.0 DodgerBlue1 -0 0.109 0.525 0.933 1.0 DodgerBlue2 -0 0.094 0.454 0.803 1.0 DodgerBlue3 -0 0.062 0.305 0.545 1.0 DodgerBlue4 -0 0.388 0.721 1.000 1.0 SteelBlue1 -0 0.360 0.674 0.933 1.0 SteelBlue2 -0 0.309 0.580 0.803 1.0 SteelBlue3 -0 0.211 0.392 0.545 1.0 SteelBlue4 -0 0.000 0.749 1.000 1.0 DeepSkyBlue1 -0 0.000 0.698 0.933 1.0 DeepSkyBlue2 -0 0.000 0.603 0.803 1.0 DeepSkyBlue3 -0 0.000 0.407 0.545 1.0 DeepSkyBlue4 -0 0.529 0.807 1.000 1.0 SkyBlue1 -0 0.494 0.752 0.933 1.0 SkyBlue2 -0 0.423 0.650 0.803 1.0 SkyBlue3 -0 0.290 0.439 0.545 1.0 SkyBlue4 -0 0.690 0.886 1.000 1.0 LightSkyBlue1 -0 0.643 0.827 0.933 1.0 LightSkyBlue2 -0 0.552 0.713 0.803 1.0 LightSkyBlue3 -0 0.376 0.482 0.545 1.0 LightSkyBlue4 -0 0.776 0.886 1.000 1.0 SlateGray1 -0 0.725 0.827 0.933 1.0 SlateGray2 -0 0.623 0.713 0.803 1.0 SlateGray3 -0 0.423 0.482 0.545 1.0 SlateGray4 -0 0.792 0.882 1.000 1.0 LightSteelBlue1 -0 0.737 0.823 0.933 1.0 LightSteelBlue2 -0 0.635 0.709 0.803 1.0 LightSteelBlue3 -0 0.431 0.482 0.545 1.0 LightSteelBlue4 -0 0.749 0.937 1.000 1.0 LightBlue1 -0 0.698 0.874 0.933 1.0 LightBlue2 -0 0.603 0.752 0.803 1.0 LightBlue3 -0 0.407 0.513 0.545 1.0 LightBlue4 -0 0.878 1.000 1.000 1.0 LightCyan1 -0 0.819 0.933 0.933 1.0 LightCyan2 -0 0.705 0.803 0.803 1.0 LightCyan3 -0 0.478 0.545 0.545 1.0 LightCyan4 -0 0.733 1.000 1.000 1.0 PaleTurquoise1 -0 0.682 0.933 0.933 1.0 PaleTurquoise2 -0 0.588 0.803 0.803 1.0 PaleTurquoise3 -0 0.400 0.545 0.545 1.0 PaleTurquoise4 -0 0.596 0.960 1.000 1.0 CadetBlue1 -0 0.556 0.898 0.933 1.0 CadetBlue2 -0 0.478 0.772 0.803 1.0 CadetBlue3 -0 0.325 0.525 0.545 1.0 CadetBlue4 -0 0.000 0.960 1.000 1.0 turquoise1 -0 0.000 0.898 0.933 1.0 turquoise2 -0 0.000 0.772 0.803 1.0 turquoise3 -0 0.000 0.525 0.545 1.0 turquoise4 -0 0.000 1.000 1.000 1.0 cyan1 -0 0.000 0.933 0.933 1.0 cyan2 -0 0.000 0.803 0.803 1.0 cyan3 -0 0.000 0.545 0.545 1.0 cyan4 -0 0.592 1.000 1.000 1.0 DarkSlateGray1 -0 0.552 0.933 0.933 1.0 DarkSlateGray2 -0 0.474 0.803 0.803 1.0 DarkSlateGray3 -0 0.321 0.545 0.545 1.0 DarkSlateGray4 -0 0.498 1.000 0.831 1.0 aquamarine1 -0 0.462 0.933 0.776 1.0 aquamarine2 -0 0.400 0.803 0.666 1.0 aquamarine3 -0 0.270 0.545 0.454 1.0 aquamarine4 -0 0.756 1.000 0.756 1.0 DarkSeaGreen1 -0 0.705 0.933 0.705 1.0 DarkSeaGreen2 -0 0.607 0.803 0.607 1.0 DarkSeaGreen3 -0 0.411 0.545 0.411 1.0 DarkSeaGreen4 -0 0.329 1.000 0.623 1.0 SeaGreen1 -0 0.305 0.933 0.580 1.0 SeaGreen2 -0 0.262 0.803 0.501 1.0 SeaGreen3 -0 0.180 0.545 0.341 1.0 SeaGreen4 -0 0.603 1.000 0.603 1.0 PaleGreen1 -0 0.564 0.933 0.564 1.0 PaleGreen2 -0 0.486 0.803 0.486 1.0 PaleGreen3 -0 0.329 0.545 0.329 1.0 PaleGreen4 -0 0.000 1.000 0.498 1.0 SpringGreen1 -0 0.000 0.933 0.462 1.0 SpringGreen2 -0 0.000 0.803 0.400 1.0 SpringGreen3 -0 0.000 0.545 0.270 1.0 SpringGreen4 -0 0.000 1.000 0.000 1.0 green1 -0 0.000 0.933 0.000 1.0 green2 -0 0.000 0.803 0.000 1.0 green3 -0 0.000 0.545 0.000 1.0 green4 -0 0.498 1.000 0.000 1.0 chartreuse1 -0 0.462 0.933 0.000 1.0 chartreuse2 -0 0.400 0.803 0.000 1.0 chartreuse3 -0 0.270 0.545 0.000 1.0 chartreuse4 -0 0.752 1.000 0.243 1.0 OliveDrab1 -0 0.701 0.933 0.227 1.0 OliveDrab2 -0 0.603 0.803 0.196 1.0 OliveDrab3 -0 0.411 0.545 0.133 1.0 OliveDrab4 -0 0.792 1.000 0.439 1.0 DarkOliveGreen1 -0 0.737 0.933 0.407 1.0 DarkOliveGreen2 -0 0.635 0.803 0.352 1.0 DarkOliveGreen3 -0 0.431 0.545 0.239 1.0 DarkOliveGreen4 -0 1.000 0.964 0.560 1.0 khaki1 -0 0.933 0.901 0.521 1.0 khaki2 -0 0.803 0.776 0.450 1.0 khaki3 -0 0.545 0.525 0.305 1.0 khaki4 -0 1.000 0.925 0.545 1.0 LightGoldenrod1 -0 0.933 0.862 0.509 1.0 LightGoldenrod2 -0 0.803 0.745 0.439 1.0 LightGoldenrod3 -0 0.545 0.505 0.298 1.0 LightGoldenrod4 -0 1.000 1.000 0.878 1.0 LightYellow1 -0 0.933 0.933 0.819 1.0 LightYellow2 -0 0.803 0.803 0.705 1.0 LightYellow3 -0 0.545 0.545 0.478 1.0 LightYellow4 -0 1.000 1.000 0.000 1.0 yellow1 -0 0.933 0.933 0.000 1.0 yellow2 -0 0.803 0.803 0.000 1.0 yellow3 -0 0.545 0.545 0.000 1.0 yellow4 -0 1.000 0.843 0.000 1.0 gold1 -0 0.933 0.788 0.000 1.0 gold2 -0 0.803 0.678 0.000 1.0 gold3 -0 0.545 0.458 0.000 1.0 gold4 -0 1.000 0.756 0.145 1.0 goldenrod1 -0 0.933 0.705 0.133 1.0 goldenrod2 -0 0.803 0.607 0.113 1.0 goldenrod3 -0 0.545 0.411 0.078 1.0 goldenrod4 -0 1.000 0.725 0.058 1.0 DarkGoldenrod1 -0 0.933 0.678 0.054 1.0 DarkGoldenrod2 -0 0.803 0.584 0.047 1.0 DarkGoldenrod3 -0 0.545 0.396 0.031 1.0 DarkGoldenrod4 -0 1.000 0.756 0.756 1.0 RosyBrown1 -0 0.933 0.705 0.705 1.0 RosyBrown2 -0 0.803 0.607 0.607 1.0 RosyBrown3 -0 0.545 0.411 0.411 1.0 RosyBrown4 -0 1.000 0.415 0.415 1.0 IndianRed1 -0 0.933 0.388 0.388 1.0 IndianRed2 -0 0.803 0.333 0.333 1.0 IndianRed3 -0 0.545 0.227 0.227 1.0 IndianRed4 -0 1.000 0.509 0.278 1.0 sienna1 -0 0.933 0.474 0.258 1.0 sienna2 -0 0.803 0.407 0.223 1.0 sienna3 -0 0.545 0.278 0.149 1.0 sienna4 -0 1.000 0.827 0.607 1.0 burlywood1 -0 0.933 0.772 0.568 1.0 burlywood2 -0 0.803 0.666 0.490 1.0 burlywood3 -0 0.545 0.450 0.333 1.0 burlywood4 -0 1.000 0.905 0.729 1.0 wheat1 -0 0.933 0.847 0.682 1.0 wheat2 -0 0.803 0.729 0.588 1.0 wheat3 -0 0.545 0.494 0.400 1.0 wheat4 -0 1.000 0.647 0.309 1.0 tan1 -0 0.933 0.603 0.286 1.0 tan2 -0 0.803 0.521 0.247 1.0 tan3 -0 0.545 0.352 0.168 1.0 tan4 -0 1.000 0.498 0.141 1.0 chocolate1 -0 0.933 0.462 0.129 1.0 chocolate2 -0 0.803 0.400 0.113 1.0 chocolate3 -0 0.545 0.270 0.074 1.0 chocolate4 -0 1.000 0.188 0.188 1.0 firebrick1 -0 0.933 0.172 0.172 1.0 firebrick2 -0 0.803 0.149 0.149 1.0 firebrick3 -0 0.545 0.101 0.101 1.0 firebrick4 -0 1.000 0.250 0.250 1.0 brown1 -0 0.933 0.231 0.231 1.0 brown2 -0 0.803 0.200 0.200 1.0 brown3 -0 0.545 0.137 0.137 1.0 brown4 -0 1.000 0.549 0.411 1.0 salmon1 -0 0.933 0.509 0.384 1.0 salmon2 -0 0.803 0.439 0.329 1.0 salmon3 -0 0.545 0.298 0.223 1.0 salmon4 -0 1.000 0.627 0.478 1.0 LightSalmon1 -0 0.933 0.584 0.447 1.0 LightSalmon2 -0 0.803 0.505 0.384 1.0 LightSalmon3 -0 0.545 0.341 0.258 1.0 LightSalmon4 -0 1.000 0.647 0.000 1.0 orange1 -0 0.933 0.603 0.000 1.0 orange2 -0 0.803 0.521 0.000 1.0 orange3 -0 0.545 0.352 0.000 1.0 orange4 -0 1.000 0.498 0.000 1.0 DarkOrange1 -0 0.933 0.462 0.000 1.0 DarkOrange2 -0 0.803 0.400 0.000 1.0 DarkOrange3 -0 0.545 0.270 0.000 1.0 DarkOrange4 -0 1.000 0.447 0.337 1.0 coral1 -0 0.933 0.415 0.313 1.0 coral2 -0 0.803 0.356 0.270 1.0 coral3 -0 0.545 0.243 0.184 1.0 coral4 -0 1.000 0.388 0.278 1.0 tomato1 -0 0.933 0.360 0.258 1.0 tomato2 -0 0.803 0.309 0.223 1.0 tomato3 -0 0.545 0.211 0.149 1.0 tomato4 -0 1.000 0.270 0.000 1.0 OrangeRed1 -0 0.933 0.250 0.000 1.0 OrangeRed2 -0 0.803 0.215 0.000 1.0 OrangeRed3 -0 0.545 0.145 0.000 1.0 OrangeRed4 -0 1.000 0.000 0.000 1.0 red1 -0 0.933 0.000 0.000 1.0 red2 -0 0.803 0.000 0.000 1.0 red3 -0 0.545 0.000 0.000 1.0 red4 -0 1.000 0.078 0.576 1.0 DeepPink1 -0 0.933 0.070 0.537 1.0 DeepPink2 -0 0.803 0.062 0.462 1.0 DeepPink3 -0 0.545 0.039 0.313 1.0 DeepPink4 -0 1.000 0.431 0.705 1.0 HotPink1 -0 0.933 0.415 0.654 1.0 HotPink2 -0 0.803 0.376 0.564 1.0 HotPink3 -0 0.545 0.227 0.384 1.0 HotPink4 -0 1.000 0.709 0.772 1.0 pink1 -0 0.933 0.662 0.721 1.0 pink2 -0 0.803 0.568 0.619 1.0 pink3 -0 0.545 0.388 0.423 1.0 pink4 -0 1.000 0.682 0.725 1.0 LightPink1 -0 0.933 0.635 0.678 1.0 LightPink2 -0 0.803 0.549 0.584 1.0 LightPink3 -0 0.545 0.372 0.396 1.0 LightPink4 -0 1.000 0.509 0.670 1.0 PaleVioletRed1 -0 0.933 0.474 0.623 1.0 PaleVioletRed2 -0 0.803 0.407 0.537 1.0 PaleVioletRed3 -0 0.545 0.278 0.364 1.0 PaleVioletRed4 -0 1.000 0.203 0.701 1.0 maroon1 -0 0.933 0.188 0.654 1.0 maroon2 -0 0.803 0.160 0.564 1.0 maroon3 -0 0.545 0.109 0.384 1.0 maroon4 -0 1.000 0.243 0.588 1.0 VioletRed1 -0 0.933 0.227 0.549 1.0 VioletRed2 -0 0.803 0.196 0.470 1.0 VioletRed3 -0 0.545 0.133 0.321 1.0 VioletRed4 -0 1.000 0.000 1.000 1.0 magenta1 -0 0.933 0.000 0.933 1.0 magenta2 -0 0.803 0.000 0.803 1.0 magenta3 -0 0.545 0.000 0.545 1.0 magenta4 -0 1.000 0.513 0.980 1.0 orchid1 -0 0.933 0.478 0.913 1.0 orchid2 -0 0.803 0.411 0.788 1.0 orchid3 -0 0.545 0.278 0.537 1.0 orchid4 -0 1.000 0.733 1.000 1.0 plum1 -0 0.933 0.682 0.933 1.0 plum2 -0 0.803 0.588 0.803 1.0 plum3 -0 0.545 0.400 0.545 1.0 plum4 -0 0.878 0.400 1.000 1.0 MediumOrchid1 -0 0.819 0.372 0.933 1.0 MediumOrchid2 -0 0.705 0.321 0.803 1.0 MediumOrchid3 -0 0.478 0.215 0.545 1.0 MediumOrchid4 -0 0.749 0.243 1.000 1.0 DarkOrchid1 -0 0.698 0.227 0.933 1.0 DarkOrchid2 -0 0.603 0.196 0.803 1.0 DarkOrchid3 -0 0.407 0.133 0.545 1.0 DarkOrchid4 -0 0.607 0.188 1.000 1.0 purple1 -0 0.568 0.172 0.933 1.0 purple2 -0 0.490 0.149 0.803 1.0 purple3 -0 0.333 0.101 0.545 1.0 purple4 -0 0.670 0.509 1.000 1.0 MediumPurple1 -0 0.623 0.474 0.933 1.0 MediumPurple2 -0 0.537 0.407 0.803 1.0 MediumPurple3 -0 0.364 0.278 0.545 1.0 MediumPurple4 -0 1.000 0.882 1.000 1.0 thistle1 -0 0.933 0.823 0.933 1.0 thistle2 -0 0.803 0.709 0.803 1.0 thistle3 -0 0.545 0.482 0.545 1.0 thistle4 -0 0.000 0.000 0.000 1.0 gray0 -0 0.000 0.000 0.000 1.0 grey0 -0 0.011 0.011 0.011 1.0 gray1 -0 0.011 0.011 0.011 1.0 grey1 -0 0.019 0.019 0.019 1.0 gray2 -0 0.019 0.019 0.019 1.0 grey2 -0 0.031 0.031 0.031 1.0 gray3 -0 0.031 0.031 0.031 1.0 grey3 -0 0.039 0.039 0.039 1.0 gray4 -0 0.039 0.039 0.039 1.0 grey4 -0 0.050 0.050 0.050 1.0 gray5 -0 0.050 0.050 0.050 1.0 grey5 -0 0.058 0.058 0.058 1.0 gray6 -0 0.058 0.058 0.058 1.0 grey6 -0 0.070 0.070 0.070 1.0 gray7 -0 0.070 0.070 0.070 1.0 grey7 -0 0.078 0.078 0.078 1.0 gray8 -0 0.078 0.078 0.078 1.0 grey8 -0 0.090 0.090 0.090 1.0 gray9 -0 0.090 0.090 0.090 1.0 grey9 -0 0.101 0.101 0.101 1.0 gray10 -0 0.101 0.101 0.101 1.0 grey10 -0 0.109 0.109 0.109 1.0 gray11 -0 0.109 0.109 0.109 1.0 grey11 -0 0.121 0.121 0.121 1.0 gray12 -0 0.121 0.121 0.121 1.0 grey12 -0 0.129 0.129 0.129 1.0 gray13 -0 0.129 0.129 0.129 1.0 grey13 -0 0.141 0.141 0.141 1.0 gray14 -0 0.141 0.141 0.141 1.0 grey14 -0 0.149 0.149 0.149 1.0 gray15 -0 0.149 0.149 0.149 1.0 grey15 -0 0.160 0.160 0.160 1.0 gray16 -0 0.160 0.160 0.160 1.0 grey16 -0 0.168 0.168 0.168 1.0 gray17 -0 0.168 0.168 0.168 1.0 grey17 -0 0.180 0.180 0.180 1.0 gray18 -0 0.180 0.180 0.180 1.0 grey18 -0 0.188 0.188 0.188 1.0 gray19 -0 0.188 0.188 0.188 1.0 grey19 -0 0.200 0.200 0.200 1.0 gray20 -0 0.200 0.200 0.200 1.0 grey20 -0 0.211 0.211 0.211 1.0 gray21 -0 0.211 0.211 0.211 1.0 grey21 -0 0.219 0.219 0.219 1.0 gray22 -0 0.219 0.219 0.219 1.0 grey22 -0 0.231 0.231 0.231 1.0 gray23 -0 0.231 0.231 0.231 1.0 grey23 -0 0.239 0.239 0.239 1.0 gray24 -0 0.239 0.239 0.239 1.0 grey24 -0 0.250 0.250 0.250 1.0 gray25 -0 0.250 0.250 0.250 1.0 grey25 -0 0.258 0.258 0.258 1.0 gray26 -0 0.258 0.258 0.258 1.0 grey26 -0 0.270 0.270 0.270 1.0 gray27 -0 0.270 0.270 0.270 1.0 grey27 -0 0.278 0.278 0.278 1.0 gray28 -0 0.278 0.278 0.278 1.0 grey28 -0 0.290 0.290 0.290 1.0 gray29 -0 0.290 0.290 0.290 1.0 grey29 -0 0.301 0.301 0.301 1.0 gray30 -0 0.301 0.301 0.301 1.0 grey30 -0 0.309 0.309 0.309 1.0 gray31 -0 0.309 0.309 0.309 1.0 grey31 -0 0.321 0.321 0.321 1.0 gray32 -0 0.321 0.321 0.321 1.0 grey32 -0 0.329 0.329 0.329 1.0 gray33 -0 0.329 0.329 0.329 1.0 grey33 -0 0.341 0.341 0.341 1.0 gray34 -0 0.341 0.341 0.341 1.0 grey34 -0 0.349 0.349 0.349 1.0 gray35 -0 0.349 0.349 0.349 1.0 grey35 -0 0.360 0.360 0.360 1.0 gray36 -0 0.360 0.360 0.360 1.0 grey36 -0 0.368 0.368 0.368 1.0 gray37 -0 0.368 0.368 0.368 1.0 grey37 -0 0.380 0.380 0.380 1.0 gray38 -0 0.380 0.380 0.380 1.0 grey38 -0 0.388 0.388 0.388 1.0 gray39 -0 0.388 0.388 0.388 1.0 grey39 -0 0.400 0.400 0.400 1.0 gray40 -0 0.400 0.400 0.400 1.0 grey40 -0 0.411 0.411 0.411 1.0 gray41 -0 0.411 0.411 0.411 1.0 grey41 -0 0.419 0.419 0.419 1.0 gray42 -0 0.419 0.419 0.419 1.0 grey42 -0 0.431 0.431 0.431 1.0 gray43 -0 0.431 0.431 0.431 1.0 grey43 -0 0.439 0.439 0.439 1.0 gray44 -0 0.439 0.439 0.439 1.0 grey44 -0 0.450 0.450 0.450 1.0 gray45 -0 0.450 0.450 0.450 1.0 grey45 -0 0.458 0.458 0.458 1.0 gray46 -0 0.458 0.458 0.458 1.0 grey46 -0 0.470 0.470 0.470 1.0 gray47 -0 0.470 0.470 0.470 1.0 grey47 -0 0.478 0.478 0.478 1.0 gray48 -0 0.478 0.478 0.478 1.0 grey48 -0 0.490 0.490 0.490 1.0 gray49 -0 0.490 0.490 0.490 1.0 grey49 -0 0.498 0.498 0.498 1.0 gray50 -0 0.498 0.498 0.498 1.0 grey50 -0 0.509 0.509 0.509 1.0 gray51 -0 0.509 0.509 0.509 1.0 grey51 -0 0.521 0.521 0.521 1.0 gray52 -0 0.521 0.521 0.521 1.0 grey52 -0 0.529 0.529 0.529 1.0 gray53 -0 0.529 0.529 0.529 1.0 grey53 -0 0.541 0.541 0.541 1.0 gray54 -0 0.541 0.541 0.541 1.0 grey54 -0 0.549 0.549 0.549 1.0 gray55 -0 0.549 0.549 0.549 1.0 grey55 -0 0.560 0.560 0.560 1.0 gray56 -0 0.560 0.560 0.560 1.0 grey56 -0 0.568 0.568 0.568 1.0 gray57 -0 0.568 0.568 0.568 1.0 grey57 -0 0.580 0.580 0.580 1.0 gray58 -0 0.580 0.580 0.580 1.0 grey58 -0 0.588 0.588 0.588 1.0 gray59 -0 0.588 0.588 0.588 1.0 grey59 -0 0.600 0.600 0.600 1.0 gray60 -0 0.600 0.600 0.600 1.0 grey60 -0 0.611 0.611 0.611 1.0 gray61 -0 0.611 0.611 0.611 1.0 grey61 -0 0.619 0.619 0.619 1.0 gray62 -0 0.619 0.619 0.619 1.0 grey62 -0 0.631 0.631 0.631 1.0 gray63 -0 0.631 0.631 0.631 1.0 grey63 -0 0.639 0.639 0.639 1.0 gray64 -0 0.639 0.639 0.639 1.0 grey64 -0 0.650 0.650 0.650 1.0 gray65 -0 0.650 0.650 0.650 1.0 grey65 -0 0.658 0.658 0.658 1.0 gray66 -0 0.658 0.658 0.658 1.0 grey66 -0 0.670 0.670 0.670 1.0 gray67 -0 0.670 0.670 0.670 1.0 grey67 -0 0.678 0.678 0.678 1.0 gray68 -0 0.678 0.678 0.678 1.0 grey68 -0 0.690 0.690 0.690 1.0 gray69 -0 0.690 0.690 0.690 1.0 grey69 -0 0.701 0.701 0.701 1.0 gray70 -0 0.701 0.701 0.701 1.0 grey70 -0 0.709 0.709 0.709 1.0 gray71 -0 0.709 0.709 0.709 1.0 grey71 -0 0.721 0.721 0.721 1.0 gray72 -0 0.721 0.721 0.721 1.0 grey72 -0 0.729 0.729 0.729 1.0 gray73 -0 0.729 0.729 0.729 1.0 grey73 -0 0.741 0.741 0.741 1.0 gray74 -0 0.741 0.741 0.741 1.0 grey74 -0 0.749 0.749 0.749 1.0 gray75 -0 0.749 0.749 0.749 1.0 grey75 -0 0.760 0.760 0.760 1.0 gray76 -0 0.760 0.760 0.760 1.0 grey76 -0 0.768 0.768 0.768 1.0 gray77 -0 0.768 0.768 0.768 1.0 grey77 -0 0.780 0.780 0.780 1.0 gray78 -0 0.780 0.780 0.780 1.0 grey78 -0 0.788 0.788 0.788 1.0 gray79 -0 0.788 0.788 0.788 1.0 grey79 -0 0.800 0.800 0.800 1.0 gray80 -0 0.800 0.800 0.800 1.0 grey80 -0 0.811 0.811 0.811 1.0 gray81 -0 0.811 0.811 0.811 1.0 grey81 -0 0.819 0.819 0.819 1.0 gray82 -0 0.819 0.819 0.819 1.0 grey82 -0 0.831 0.831 0.831 1.0 gray83 -0 0.831 0.831 0.831 1.0 grey83 -0 0.839 0.839 0.839 1.0 gray84 -0 0.839 0.839 0.839 1.0 grey84 -0 0.850 0.850 0.850 1.0 gray85 -0 0.850 0.850 0.850 1.0 grey85 -0 0.858 0.858 0.858 1.0 gray86 -0 0.858 0.858 0.858 1.0 grey86 -0 0.870 0.870 0.870 1.0 gray87 -0 0.870 0.870 0.870 1.0 grey87 -0 0.878 0.878 0.878 1.0 gray88 -0 0.878 0.878 0.878 1.0 grey88 -0 0.890 0.890 0.890 1.0 gray89 -0 0.890 0.890 0.890 1.0 grey89 -0 0.898 0.898 0.898 1.0 gray90 -0 0.898 0.898 0.898 1.0 grey90 -0 0.909 0.909 0.909 1.0 gray91 -0 0.909 0.909 0.909 1.0 grey91 -0 0.921 0.921 0.921 1.0 gray92 -0 0.921 0.921 0.921 1.0 grey92 -0 0.929 0.929 0.929 1.0 gray93 -0 0.929 0.929 0.929 1.0 grey93 -0 0.941 0.941 0.941 1.0 gray94 -0 0.941 0.941 0.941 1.0 grey94 -0 0.949 0.949 0.949 1.0 gray95 -0 0.949 0.949 0.949 1.0 grey95 -0 0.960 0.960 0.960 1.0 gray96 -0 0.960 0.960 0.960 1.0 grey96 -0 0.968 0.968 0.968 1.0 gray97 -0 0.968 0.968 0.968 1.0 grey97 -0 0.980 0.980 0.980 1.0 gray98 -0 0.980 0.980 0.980 1.0 grey98 -0 0.988 0.988 0.988 1.0 gray99 -0 0.988 0.988 0.988 1.0 grey99 -0 1.000 1.000 1.000 1.0 gray100 -0 1.000 1.000 1.000 1.0 grey100 -0 0.333 0.333 0.333 1.0 Dark Gray -0 0.500 0.500 0.500 1.0 Gray -0 0.667 0.667 0.667 1.0 Light Gray -0 0.000 0.000 0.000 0.0 Highlight diff -r d101af7320b8 -r cca96a509cfe etc/ns/XEmacs.post_install --- a/etc/ns/XEmacs.post_install Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -#!/bin/sh -PACKAGEDIR="$1" -INSTALLDIR="$2" -echo -echo "Creating links from /usr/local/bin to the XEmacs binaries." -/bin/mkdirs /usr/local/bin -/bin/ln -s $INSTALLDIR/XEmacs.app/bin/* /usr/local/bin - -echo "Creating links from /usr/local/man subdirectories to the XEmacs man pages." -/bin/mkdirs /usr/local/man/man1 /usr/local/man/man6 -/bin/ln -s $INSTALLDIR/XEmacs.app/man/man1/* $INSTALLDIR/XEmacs.app/lib/xemacs-*/etc/celibacy.1 $INSTALLDIR/XEmacs.app/lib/xemacs-*/etc/condom.1 /usr/local/man/man1 -/bin/ln -s $INSTALLDIR/XEmacs.app/lib/xemacs-*/etc/sex.6 /usr/local/man/man6 - -echo "Creating a link from /usr/local/lib/xemacs-19.13 to the XEmacs library directory." -/bin/mkdirs /usr/local/lib -/bin/ln -s $INSTALLDIR/XEmacs.app/lib/xemacs-19.13 /usr/local/lib - -echo "Done." -exit 0 diff -r d101af7320b8 -r cca96a509cfe etc/ns/XEmacs.pre_delete --- a/etc/ns/XEmacs.pre_delete Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -#!/bin/sh -PACKAGEDIR="$1" -INSTALLDIR="$2" -echo -echo "Removing links from /usr/local/bin to the XEmacs binaries." -cd $INSTALLDIR/XEmacs.app/bin -for i in *; do /bin/rm -f /usr/local/bin/$i; done - -echo "Removing links from /usr/local/man subdirectories to the XEmacs man pages." -cd $INSTALLDIR/XEmacs.app/man/man1 -for i in *; do /bin/rm -f /usr/local/man/man1/$i; done -/bin/rm -f /usr/local/man/man1/condom.1 /usr/local/man/man1/celibacy.1 /usr/local/man/man6/sex.6 - -echo "Removing link from /usr/local/lib/xemacs-19.13 to the XEmacs library directory." -/bin/rm -f /usr/local/lib/xemacs-19.13 - -echo "Done." -exit 0 diff -r d101af7320b8 -r cca96a509cfe etc/ns/bibfile.tiff Binary file etc/ns/bibfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/cfile.tiff Binary file etc/ns/cfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/elfile.tiff Binary file etc/ns/elfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/hfile.tiff Binary file etc/ns/hfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/lfile.tiff Binary file etc/ns/lfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/mfile.tiff Binary file etc/ns/mfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/texfile.tiff Binary file etc/ns/texfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/text.tiff Binary file etc/ns/text.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/xemacs.iconheader --- a/etc/ns/xemacs.iconheader Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -F XEmacs.app XEmacs app -F XEmacs XEmacs app -S c XEmacs cfile -S h XEmacs hfile -S m XEmacs mfile -S text XEmacs text -S cc XEmacs cfile -S cxx XEmacs cfile -S C XEmacs cfile -S bib XEmacs bibfile -S tex XEmacs texfile -S el XEmacs elfile -S elc XEmacs elcfile -S l XEmacs lfile -S y XEmacs yfile diff -r d101af7320b8 -r cca96a509cfe etc/ns/xemacs.tiff Binary file etc/ns/xemacs.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/ns/yfile.tiff Binary file etc/ns/yfile.tiff has changed diff -r d101af7320b8 -r cca96a509cfe etc/vm/audio_stamp-colorful.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/audio_stamp-colorful.xpm Mon Aug 13 09:25:29 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 d101af7320b8 -r cca96a509cfe etc/vm/audio_stamp-simple.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/vm/audio_stamp-simple.xpm Mon Aug 13 09:25:29 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 d101af7320b8 -r cca96a509cfe etc/vm/audio_stamp.xpm --- a/etc/vm/audio_stamp.xpm Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* 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 d101af7320b8 -r cca96a509cfe etc/vm/document.xpm --- a/etc/vm/document.xpm Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -/* 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 d101af7320b8 -r cca96a509cfe etc/vm/film.xpm --- a/etc/vm/film.xpm Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -/* 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 d101af7320b8 -r cca96a509cfe etc/vm/gear.xpm --- a/etc/vm/gear.xpm Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,279 +0,0 @@ -/* XPM */ -static char *gear[] = { -/* width height num_colors chars_per_pixel */ -" 24 30 242 2", -/* colors */ -".. c #aaaaaa s background", -"zz c #aaaaaa", -".# 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#Kzzzz.#.H.#.n.i.i.i.i#t..", -"...G.H.3.3.G.J.J.W.W#Kzzzz.r.raB#X.6.i.i.i.aaB..", -"...4.3.G.G.J.J.W#K#Kzzzz.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#Kzz#t.n.i.h.#.#.#.c#iab.i.i.i.i#g.I", -"....#K#K#Kzzzz.r.a.z.a.i#X.c.c#i.l.a.i.i.i.i.i.6", -"...W.Hzzzz.r.raB.a.I.m.i.l.##i.l.l.I.i.i.i.n.h#t", -"...J.Gzz.r.raB#X#tab#t.i.Izz.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.czz.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 d101af7320b8 -r cca96a509cfe etc/vm/message.xpm --- a/etc/vm/message.xpm Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* 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 d101af7320b8 -r cca96a509cfe etc/vm/mona_stamp-colorful.gif Binary file etc/vm/mona_stamp-colorful.gif has changed diff -r d101af7320b8 -r cca96a509cfe etc/vm/mona_stamp-simple.gif Binary file etc/vm/mona_stamp-simple.gif has changed diff -r d101af7320b8 -r cca96a509cfe etc/vm/mona_stamp.gif Binary file etc/vm/mona_stamp.gif has changed diff -r d101af7320b8 -r cca96a509cfe etc/vm/stuffed_box.xpm --- a/etc/vm/stuffed_box.xpm Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,291 +0,0 @@ -/* 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 d101af7320b8 -r cca96a509cfe info/dir --- a/info/dir Mon Aug 13 09:24:19 2007 +0200 +++ b/info/dir Mon Aug 13 09:25:29 2007 +0200 @@ -36,12 +36,12 @@ * Info:: Documentation browsing system. * XEmacs:: The extensible user-friendly self-documenting text editor. - This manual is for XEmacs 20.0. + This manual is for XEmacs 20.1. * Lispref:: XEmacs Lisp technical reference. - This manual is for XEmacs 20.0. + This manual is for XEmacs 20.1. * New-Users-Guide:: - XEmacs User's Guide for XEmacs 20.0. -* XEmacs-FAQ:: XEmacs Frequently Asked Questions for 20.0. + XEmacs User's Guide for XEmacs 20.1. +* XEmacs-FAQ:: XEmacs Frequently Asked Questions for 20.1. * Internals:: Guide to the internals of XEmacs. * send-pr:: Submitting Bug Reports * gnats:: GNU Problem Report Management System diff -r d101af7320b8 -r cca96a509cfe lib-src/ChangeLog --- a/lib-src/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ b/lib-src/ChangeLog Mon Aug 13 09:25:29 2007 +0200 @@ -1,3 +1,8 @@ +Tue Apr 8 03:08:22 1997 Steven L Baur + + * Makefile.in.in: C Comment out Make comments. No snide comments + from me, no sir. + Tue Apr 1 12:26:53 1997 Steven L Baur * Makefile.in.in: Added stuff for updated movemail.c. diff -r d101af7320b8 -r cca96a509cfe lib-src/Makefile.in.in --- a/lib-src/Makefile.in.in Mon Aug 13 09:24:19 2007 +0200 +++ b/lib-src/Makefile.in.in Mon Aug 13 09:25:29 2007 +0200 @@ -121,7 +121,7 @@ SOURCES = COPYING ChangeLog Makefile.in.in README aixcc.lex emacs.csh \ makedoc.com *.[chy] $(SCRIPTS) - +/* # Additional -D flags for movemail (add to MOVE_FLAGS if desired): # MAIL_USE_POP Support mail retrieval from a POP mailbox. # MAIL_USE_MMDF Support MMDF mailboxes. @@ -136,14 +136,16 @@ # HESIOD Support Hesiod lookups of user mailboxes. # MAILHOST A string, the host name of the default POP # mail host for the site. +*/ MOVE_FLAGS= - +/* # Additional libraries for movemail: # For KERBEROS # MOVE_LIBS= -lkrb -ldes -lcom_err # For KERBEROS + KRB5 # MOVE_LIBS= -lkrb5 -lcrypto -lisode -lcom_err # Add "-lhesiod" if HESIOD is defined. +*/ MOVE_LIBS= /* ========================== start of cpp stuff ======================= */ diff -r d101af7320b8 -r cca96a509cfe lisp/ChangeLog --- a/lisp/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:25:29 2007 +0200 @@ -1,3 +1,49 @@ +Wed Apr 9 19:45:46 1997 Per Abrahamsen + + * x-menubar.el (default-menubar): Inline definition of customize menu. + +Wed Apr 9 10:45:54 1997 Steven L Baur + + * prim/about.el (about-xemacs-xref): Add Jan Vroonhof to list of + contributors. + (about-xemacs-xref): Add MORIOKA Tomohiko's bio. + (about-xemacs-xref): Add Per Abrahamsen. + +Tue Apr 8 12:57:05 1997 Steven L Baur + + * modes/lisp-mode.el (eval-defun): Evaluate defcustom in defconst + style instead of defvar style (patch derived from Emacs 19.35/Lars + Magne Ingebrigtsen). + +Mon Apr 7 16:38:43 1997 Steven L Baur + + * prim/frame.el (temp-buffer-shrink-to-fit): Default to nil since + this feature has gotten broken. + +Sun Apr 6 06:56:03 1997 Steven L Baur + + * modes/outl-mouse.el (outline-down-arrow-mask): Set up arrow + glyphs to display on when no X11 support is available. + + * modes/outline.el (outline-install-menubar): short circuit if no + menubars are available. + + * x11/x-menubar.el (default-menubar): Use xmine not mine. + + * prim/help.el (describe-variable): Some doc strings weren't being + terminated with a newline. + +Sat Apr 5 20:20:00 1997 Steven L Baur + + * prim/about.el (about-xemacs-xref): Correct Jareth Hein's links. + +Sat Apr 5 13:18:05 1997 Tomasz J. Cholewo + + * packages/etags.el (tags-query-replace): Fixed DELIMITED argument + bug. `with-caps-disable-folding' moved to isearch-mode.el. + + * packages/info.el (Info-search): Use `with-caps-disable-folding'. + Sat Apr 5 09:32:43 1997 Steven L Baur * utils/finder-inf.el: Regenerated. diff -r d101af7320b8 -r cca96a509cfe lisp/README --- a/lisp/README Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/README Mon Aug 13 09:25:29 2007 +0200 @@ -29,6 +29,8 @@ site-init.el To pre-load additional libraries into XEmacs and dump them in the executable, load them from this file. + Read the instructions in this file for a description + of how to do this. site-load.el This is like site-init.el, but if you want the docstrings of your preloaded libraries to be kept in @@ -67,8 +69,6 @@ loads a file named $TERM.el from this directory, if that file exists. - vms VMS-specific code. (Not functional) - x11 X Window System-specific code. games Various ways to waste time. @@ -111,6 +111,9 @@ eterm A merge of the comint shell mode with an ANSI-compatible terminal-emulator. + gnats Interface to XEmacs bug reporting system based on + Cygnus GNATS. + gnus A network news and mail reader. hm--html-menus Menu interface to html-mode. @@ -137,8 +140,6 @@ mule Multi-lingual extensions for XEmacs. - ns NeXTStep support. - oobr An Object-Oriented class browser. pcl-cvs An interface to the Concurrent Version System. @@ -146,7 +147,7 @@ psgml General purpose SGML editing support with extra support for editing HTML. - quail MULE Input Method. + quail MULE Input Method. [NOT WORKING IN 20.1] rmail A BABYL-format mail reader. diff -r d101af7320b8 -r cca96a509cfe lisp/auctex/Makefile --- a/lisp/auctex/Makefile Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/auctex/Makefile Mon Aug 13 09:25:29 2007 +0200 @@ -97,6 +97,8 @@ all: lisp +.IGNORE: some + lisp: $(ELC) $(AUCSRC) $(STYLESRC) $(CONTRIB) diff -r d101af7320b8 -r cca96a509cfe lisp/custom/ChangeLog --- a/lisp/custom/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/ChangeLog Mon Aug 13 09:25:29 2007 +0200 @@ -1,3 +1,116 @@ +Wed Apr 09 21:11:14 1997 Per Abrahamsen + + * Version 1.74 released. + +Wed Apr 9 11:57:02 1997 Per Abrahamsen + + * cus-edit.el (custom-unlispify-menu-entry): Strip terminating + `-p' off booleans. + + * cus-edit.el (custom-save-faces): make sure `default' is saved first. + + * wid-edit.el (widget-vector-match): Pass arguments to + `widget-apply' in the correct order. + + * custom.el (custom-define-hook): Change to defvar. + * cus-edit.el (custom-define-hook): Add customization support. + + * cus-edit.el (custom-menu-update): Don't autoload. + (custom-menu-reset): Move here from `custom.el'. + Remove XEmacs support. + (custom-help-menu): Move here from `custom.el'. + Remove XEmacs support. + (custom-menu-create): Work even if custom-menu-nesting is + unbound. + (custom-menu-nesting): Don't define for XEmacs. + + * cus-face.el (after-make-frame-hook): Removed + `custom-initialize-frame', as this is now in `frame.el'. + +Tue Apr 08 19:24:17 1997 Per Abrahamsen + + * Version 1.73 released. + +Tue Apr 8 19:23:43 1997 Per Abrahamsen + + * widget.texi (push-button): Forgot `@end table'. + +Tue Apr 08 18:51:09 1997 Per Abrahamsen + + * Version 1.72 released. + +Tue Apr 8 09:21:15 1997 Per Abrahamsen + + * cus-edit.el (custom-guess-type-alist): New option. + (custom-guess-type): New function. + (custom-variable-type): New function. + (custom-variable-value-create): Use it. + + * cus-face.el (custom-face-attributes): Moved :family to the + beginning of the list. + Patch by Herve Poirier . + (custom-face-attributes): Added :strikethru attribute. + + * custom.texi (Declarations): Refer to `cus-edit.el' for + examples. + + * custom.el (custom-set-variables): If variable is already set, + overwrite it here. + (custom-declare-variable): Do not set saved variables, if they + already are bound. + (custom-declare-variable): Clear the `force-value' flag if set. + + * widget.el (:text-format): New keyword. + * wid-edit.el (push-button): Define it. + (widget-push-button-value-create): Use it. + * widget.texi (push-button): Documented it. + +Sun Apr 06 22:33:39 1997 Per Abrahamsen + + * Version 1.71 released. + +Sun Apr 6 22:25:45 1997 Per Abrahamsen + + * cus-face.el (custom-face-font-name): New alias. + (custom-face-attributes): Support `get' for remaining properties. + (custom-face-attributes-get): Require `font.el'. + (custom-face-font-size): New function. + (custom-face-font-family): New function. + (custom-face-bold): New function. + (custom-face-italic): New function. + (custom-face-stipple): New function. + Inspired by `rogue.el' by Hunter Kelly . + +Wed Apr 02 18:25:55 1997 Per Abrahamsen + + * Version 1.70 released. + +Wed Apr 2 10:41:48 1997 Per Abrahamsen + + * cus-edit.el (custom-buffer-create): Give progress report. + (customize-face): Remove message. + (custom-group-value-create): Give progress report. + (custom-face-value-create): Ditto. + + * cus-edit.el (custom-face-edit-selected): New function. + (custom-face-edit-all): New function. + (custom-face-edit-lisp): New function. + (custom-face-menu): Use them. + (custom-display-unselected): New widget. + (custom-display-unselected-match): New function. + (custom-face-selected): New widget. + (custom-face-selected): New constant. + (custom-face-value-create): Use them. + * custom.texi (The Face Options): Documented it. + + * cus-edit.el (custom-face-all): New widget. + (custom-face-all): New constant. + (custom-face-value-create): Use it. + + * cus-edit.el (custom-save-variables): Insert newline at eob. + (custom-save-faces): Ditto. + Reported by Jamie Zawinski . + Tue Apr 01 20:08:10 1997 Per Abrahamsen * Version 1.69 released. diff -r d101af7320b8 -r cca96a509cfe lisp/custom/cus-edit.el --- a/lisp/custom/cus-edit.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/cus-edit.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.69 +;; Version: 1.74 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -22,6 +22,10 @@ :custom-set :custom-save :custom-reset-current :custom-reset-saved :custom-reset-factory) +(put 'custom-define-hook 'custom-type 'hook) +(put 'custom-define-hook 'factory-value '(nil)) +(custom-add-to-group 'customize 'custom-define-hook 'custom-variable) + ;;; Customization Groups. (defgroup emacs nil @@ -258,6 +262,10 @@ (erase-buffer) (princ symbol (current-buffer)) (goto-char (point-min)) + (when (and (eq (get symbol 'custom-type) 'boolean) + (re-search-forward "-p\\'" nil t)) + (replace-match "" t t) + (goto-char (point-min))) (let ((prefixes custom-prefix-list) prefix) (while prefixes @@ -290,6 +298,41 @@ (concat (symbol-name symbol) "-")) prefixes)) +(defcustom custom-guess-type-alist + '(("-p\\'" boolean) + ("-hook\\'" hook) + ("-face\\'" face) + ("-file\\'" file) + ("-function\\'" function) + ("-functions\\'" (repeat function)) + ("-list\\'" (repeat sexp)) + ("-alist\\'" (repeat (cons sexp sexp)))) + "Alist of (MATCH TYPE). + +MATCH should be a regexp matching the name of a symbol, and TYPE should +be a widget suitable for editing the value of that symbol. The TYPE +of the first entry where MATCH matches the name of the symbol will be +used. + +This is used for guessing the type of variables not declared with +customize." + :type '(repeat (group regexp sexp)) + :group 'customize) + +(defun custom-guess-type (symbol) + "Guess a widget suitable for editing the value of SYMBOL. +This is done by matching SYMBOL with `custom-guess-type-alist'." + (let ((name (symbol-name symbol)) + (alist custom-guess-type-alist) + current found) + (while alist + (setq current (car alist) + alist (cdr alist)) + (when (string-match (nth 0 current) name) + (setq found (nth 1 current) + alist nil))) + found)) + ;;; The Custom Mode. (defvar custom-options nil @@ -456,7 +499,6 @@ (mapcar (lambda (symbol) (setq found (cons (list symbol 'custom-face) found))) (face-list)) - (message "Creating customization buffer...") (custom-buffer-create found)) (if (stringp symbol) (setq symbol (intern symbol))) @@ -512,6 +554,7 @@ OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where SYMBOL is a customization option, and WIDGET is a widget for editing that option." + (message "Creating customization buffer...") (kill-buffer (get-buffer-create "*Customization*")) (switch-to-buffer (get-buffer-create "*Customization*")) (custom-mode) @@ -524,24 +567,35 @@ "(custom)The Customization Buffer") (widget-insert " for more information.\n\n") (setq custom-options - (mapcar (lambda (entry) - (prog1 - (if (> (length options) 1) - (widget-create (nth 1 entry) + (if (= (length options) 1) + (mapcar (lambda (entry) + (widget-create (nth 1 entry) + :custom-state 'unknown + :tag (custom-unlispify-tag-name + (nth 0 entry)) + :value (nth 0 entry))) + options) + (let ((count 0) + (length (length options))) + (mapcar (lambda (entry) + (prog2 + (message "Creating customization items %2d%%..." + (/ (* 100.0 count) length)) + (widget-create (nth 1 entry) :tag (custom-unlispify-tag-name (nth 0 entry)) :value (nth 0 entry)) - ;; If there is only one entry, don't hide it! - (widget-create (nth 1 entry) - :custom-state 'unknown - :tag (custom-unlispify-tag-name - (nth 0 entry)) - :value (nth 0 entry))) - (unless (eq (preceding-char) ?\n) - (widget-insert "\n")) - (widget-insert "\n"))) - options)) + (setq count (1+ count)) + (unless (eq (preceding-char) ?\n) + (widget-insert "\n")) + (widget-insert "\n"))) + options)))) + (unless (eq (preceding-char) ?\n) + (widget-insert "\n")) + (widget-insert "\n") + (message "Creating customization magic...") (mapcar 'custom-magic-reset custom-options) + (message "Creating customization buttons...") (widget-create 'push-button :tag "Set" :help-echo "Set all modifications for this session." @@ -577,8 +631,10 @@ (when (memq 'down (event-modifiers event)) (read-event))))) (widget-insert "\n") + (message "Creating customization setup...") (widget-setup) - (goto-char (point-min))) + (goto-char (point-min)) + (message "Creating customization buffer...done")) ;;; Modification of Basic Widgets. ;; @@ -990,6 +1046,21 @@ :custom-reset-saved 'custom-variable-reset-saved :custom-reset-factory 'custom-variable-reset-factory) +(defun custom-variable-type (symbol) + "Return a widget suitable for editing the value of SYMBOL. +If SYMBOL has a `custom-type' property, use that. +Otherwise, look up symbol in `custom-guess-type-alist'." + (let* ((type (or (get symbol 'custom-type) + (custom-guess-type symbol) + 'sexp)) + (options (get symbol 'custom-options)) + (tmp (if (listp type) + (copy-list type) + (list type)))) + (when options + (widget-put tmp :options options)) + tmp)) + (defun custom-variable-value-create (widget) "Here is where you edit the variables value." (custom-load-widget widget) @@ -998,15 +1069,8 @@ (form (widget-get widget :custom-form)) (state (widget-get widget :custom-state)) (symbol (widget-get widget :value)) - (options (get symbol 'custom-options)) - (child-type (or (get symbol 'custom-type) 'sexp)) (tag (widget-get widget :tag)) - (type (let ((tmp (if (listp child-type) - (copy-list child-type) - (list child-type)))) - (when options - (widget-put tmp :options options)) - tmp)) + (type (custom-variable-type symbol)) (conv (widget-convert type)) (value (if (default-boundp symbol) (default-value symbol) @@ -1310,6 +1374,7 @@ (face-doc-string face)) :value-create 'custom-face-value-create :action 'custom-face-action + :custom-form 'selected :custom-set 'custom-face-set :custom-save 'custom-face-save :custom-reset-current 'custom-redraw @@ -1337,34 +1402,77 @@ (widget-put widget :buttons (cons child (widget-get widget :buttons)))))) +(define-widget 'custom-face-all 'editable-list + "An editable list of display specifications and attributes." + :entry-format "%i %d %v" + :insert-button-args '(:help-echo "Insert new display specification here.") + :append-button-args '(:help-echo "Append new display specification here.") + :delete-button-args '(:help-echo "Delete this display specification.") + :args '((group :format "%v" custom-display custom-face-edit))) + +(defconst custom-face-all (widget-convert 'custom-face-all) + "Converted version of the `custom-face-all' widget.") + +(define-widget 'custom-display-unselected 'item + "A display specification that doesn't match the selected display." + :match 'custom-display-unselected-match) + +(defun custom-display-unselected-match (widget value) + "Non-nil if VALUE is an unselected display specification." + (and (listp value) + (eq (length value) 2) + (not (custom-display-match-frame value (selected-frame))))) + +(define-widget 'custom-face-selected 'group + "Edit the attributes of the selected display in a face specification." + :args '((repeat :format "" + :inline t + (group custom-display-unselected sexp)) + (group (sexp :format "") custom-face-edit) + (repeat :format "" + :inline t + sexp))) + +(defconst custom-face-selected (widget-convert 'custom-face-selected) + "Converted version of the `custom-face-selected' widget.") + (defun custom-face-value-create (widget) ;; Create a list of the display specifications. (unless (eq (preceding-char) ?\n) (insert "\n")) (when (not (eq (widget-get widget :custom-state) 'hidden)) + (message "Creating face editor...") (custom-load-widget widget) (let* ((symbol (widget-value widget)) + (spec (or (get symbol 'saved-face) + (get symbol 'factory-face) + ;; Attempt to construct it. + (list (list t (custom-face-attributes-get + symbol (selected-frame)))))) + (form (widget-get widget :custom-form)) + (indent (widget-get widget :indent)) (edit (widget-create-child-and-convert - widget 'editable-list - :entry-format "%i %d %v" - :value (or (get symbol 'saved-face) - (get symbol 'factory-face) - ;; Attempt to construct it. - (list (list t (custom-face-attributes-get - symbol (selected-frame))))) - :insert-button-args '(:help-echo "\ -Insert new display specification here.") - :append-button-args '(:help-echo "\ -Append new display specification here.") - :delete-button-args '(:help-echo "\ -Delete this display specification.") - '(group :format "%v" - custom-display custom-face-edit)))) + widget + (cond ((and (eq form 'selected) + (widget-apply custom-face-selected :match spec)) + (when indent (insert-char ?\ indent)) + 'custom-face-selected) + ((and (not (eq form 'lisp)) + (widget-apply custom-face-all :match spec)) + 'custom-face-all) + (t + (when indent (insert-char ?\ indent)) + 'sexp)) + :value spec))) (custom-face-state-set widget) - (widget-put widget :children (list edit))))) + (widget-put widget :children (list edit))) + (message "Creating face editor...done"))) (defvar custom-face-menu - '(("Set" . custom-face-set) + '(("Edit Selected" . custom-face-edit-selected) + ("Edit All" . custom-face-edit-all) + ("Edit Lisp" . custom-face-edit-lisp) + ("Set" . custom-face-set) ("Save" . custom-face-save) ("Reset to Saved" . custom-face-reset-saved) ("Reset to Factory Setting" . custom-face-reset-factory)) @@ -1373,6 +1481,24 @@ lisp function taking the widget as an element which will be called when the action is chosen.") +(defun custom-face-edit-selected (widget) + "Edit selected attributes of the value of WIDGET." + (widget-put widget :custom-state 'unknown) + (widget-put widget :custom-form 'selected) + (custom-redraw widget)) + +(defun custom-face-edit-all (widget) + "Edit all attributes of the value of WIDGET." + (widget-put widget :custom-state 'unknown) + (widget-put widget :custom-form 'all) + (custom-redraw widget)) + +(defun custom-face-edit-lisp (widget) + "Edit the lisp representation of the value of WIDGET." + (widget-put widget :custom-state 'unknown) + (widget-put widget :custom-form 'lisp) + (custom-redraw widget)) + (defun custom-face-state-set (widget) "Set the state of WIDGET." (let ((symbol (widget-value widget))) @@ -1582,14 +1708,20 @@ (defun custom-group-value-create (widget) (let ((state (widget-get widget :custom-state))) (unless (eq state 'hidden) + (message "Creating group...") (custom-load-widget widget) (let* ((level (widget-get widget :custom-level)) (symbol (widget-value widget)) (members (get symbol 'custom-group)) (prefixes (widget-get widget :custom-prefixes)) (custom-prefix-list (custom-prefix-add symbol prefixes)) + (length (length members)) + (count 0) (children (mapcar (lambda (entry) (widget-insert "\n") + (message "Creating group members... %2d%%" + (/ (* 100.0 count) length)) + (setq count (1+ count)) (prog1 (widget-create-child-and-convert widget (nth 1 entry) @@ -1602,9 +1734,12 @@ (unless (eq (preceding-char) ?\n) (widget-insert "\n")))) members))) + (message "Creating group magic...") (mapcar 'custom-magic-reset children) + (message "Creating group state...") (widget-put widget :children children) - (custom-group-state-update widget))))) + (custom-group-state-update widget) + (message "Creating group... done"))))) (defvar custom-group-menu '(("Set" . custom-group-set) @@ -1740,7 +1875,7 @@ (princ ")") (princ " t)")))))) (princ ")") - (unless (eolp) + (unless (looking-at "\n") (princ "\n"))))) (defun custom-save-faces () @@ -1751,9 +1886,21 @@ (unless (bolp) (princ "\n")) (princ "(custom-set-faces") + (let ((value (get 'default 'saved-face))) + ;; The default face must be first, since it affects the others. + (when value + (princ "\n '(default ") + (prin1 value) + (if (or (get 'default 'factory-face) + (and (not (custom-facep 'default)) + (not (get 'default 'force-face)))) + (princ ")") + (princ " t)")))) (mapatoms (lambda (symbol) (let ((value (get symbol 'saved-face))) - (when value + (when (and (not (eq symbol 'default)) + ;; Don't print default face here. + value) (princ "\n '(") (princ symbol) (princ " ") @@ -1764,7 +1911,7 @@ (princ ")") (princ " t)")))))) (princ ")") - (unless (eolp) + (unless (looking-at "\n") (princ "\n"))))) ;;;###autoload @@ -1778,10 +1925,43 @@ ;;; The Customize Menu. -(defcustom custom-menu-nesting 2 - "Maximum nesting in custom menus." - :type 'integer - :group 'customize) +;;; Menu support + +(unless (string-match "XEmacs" emacs-version) + (defconst custom-help-menu '("Customize" + ["Update menu..." custom-menu-update t] + ["Group..." customize t] + ["Variable..." customize-variable t] + ["Face..." customize-face t] + ["Saved..." customize-customized t] + ["Apropos..." customize-apropos t]) + ;; This menu should be identical to the one defined in `menu-bar.el'. + "Customize menu") + + (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))))) + + (defun custom-menu-update (event) + "Update customize menu." + (interactive "e") + (add-hook 'custom-define-hook 'custom-menu-reset) + (let* ((emacs (widget-apply '(custom-group) :custom-menu 'emacs)) + (menu `(,(car custom-help-menu) + ,emacs + ,@(cdr (cdr custom-help-menu))))) + (let ((map (easy-menu-create-keymaps (car menu) (cdr menu)))) + (define-key global-map [menu-bar help-menu customize-menu] + (cons (car menu) map))))) + + (defcustom custom-menu-nesting 2 + "Maximum nesting in custom menus." + :type 'integer + :group 'customize)) (defun custom-face-menu-create (widget symbol) "Ignoring WIDGET, create a menu entry for customization face SYMBOL." @@ -1800,6 +1980,7 @@ `(custom-buffer-create '((,symbol custom-variable))) t)))) +;; Add checkboxes to boolean variable entries. (widget-put (get 'boolean 'widget-type) :custom-menu (lambda (widget symbol) (vector (custom-unlispify-menu-entry symbol) @@ -1822,6 +2003,7 @@ (let ((custom-menu-nesting (1- custom-menu-nesting))) (custom-menu-create symbol)))) +;;;###autoload (defun custom-menu-create (symbol &optional name) "Create menu for customization group SYMBOL. If optional NAME is given, use that as the name of the menu. @@ -1832,7 +2014,8 @@ (let ((item (vector name `(custom-buffer-create '((,symbol custom-group))) t))) - (if (and (>= custom-menu-nesting 0) + (if (and (or (not (boundp 'custom-menu-nesting)) + (>= custom-menu-nesting 0)) (< (length (get symbol 'custom-group)) widget-menu-max-size)) (let ((custom-prefix-list (custom-prefix-add symbol custom-prefix-list))) @@ -1848,19 +2031,6 @@ (get symbol 'custom-group)))) item))) -;;;###autoload -(defun custom-menu-update (event) - "Update customize menu." - (interactive "e") - (add-hook 'custom-define-hook 'custom-menu-reset) - (let* ((emacs (widget-apply '(custom-group) :custom-menu 'emacs)) - (menu `(,(car custom-help-menu) - ,emacs - ,@(cdr (cdr custom-help-menu))))) - (let ((map (easy-menu-create-keymaps (car menu) (cdr menu)))) - (define-key global-map [menu-bar help-menu customize-menu] - (cons (car menu) map))))) - ;;; Dependencies. ;;;###autoload diff -r d101af7320b8 -r cca96a509cfe lisp/custom/cus-face.el --- a/lisp/custom/cus-face.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/cus-face.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.69 +;; Version: 1.74 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -33,6 +33,10 @@ (color-instance-name (specifier-instance (face-foreground face) frame))) (defalias 'custom-face-foreground 'face-foreground)) +(defalias 'custom-face-font-name (if (string-match "XEmacs" emacs-version) + 'face-font-name + 'face-font)) + (eval-and-compile (unless (fboundp 'frame-property) ;; XEmacs function missing in Emacs 19.34. @@ -276,11 +280,13 @@ (defconst custom-face-attributes '((:bold (toggle :format "Bold: %[%v%]\n" :help-echo "Control whether a bold font should be used.") - custom-set-face-bold) + custom-set-face-bold + custom-face-bold) (:italic (toggle :format "Italic: %[%v%]\n" :help-echo "\ Control whether an italic font should be used.") - custom-set-face-italic) + custom-set-face-italic + custom-face-italic) (:underline (toggle :format "Underline: %[%v%]\n" :help-echo "\ Control whether the text should be underlined.") @@ -306,7 +312,7 @@ ;; (custom-invert-face face frame))) (:stipple (editable-field :format "Stipple: %v" :help-echo "Name of background bitmap file.") - set-face-stipple)) + set-face-stipple custom-face-stipple)) "Alist of face attributes. The elements are of the form (KEY TYPE SET GET) where KEY is a symbol @@ -339,6 +345,10 @@ Each keyword should be listed in `custom-face-attributes'. If FRAME is nil, use the default face." + (condition-case nil + ;; Attempt to get `font.el' from w3. + (require 'font) + (error nil)) (let ((atts custom-face-attributes) att result get) (while atts @@ -358,43 +368,80 @@ (make-face-bold face frame) (make-face-unbold face frame))) +(defun custom-face-bold (face &rest args) + "Return non-nil if the font of FACE is bold." + (let* ((font (apply 'custom-face-font-name face args)) + (fontobj (font-create-object font))) + (font-bold-p fontobj))) + (defun custom-set-face-italic (face value &optional frame) "Set the italic property of FACE to VALUE." (if value (make-face-italic face frame) (make-face-unitalic face frame))) +(defun custom-face-italic (face &rest args) + "Return non-nil if the font of FACE is italic." + (let* ((font (apply 'custom-face-font-name face args)) + (fontobj (font-create-object font))) + (font-italic-p fontobj))) + +(defun custom-face-stipple (face &rest args) + "Return the name of the stipple file used for FACE." + (if (string-match "XEmacs" emacs-version) + (let ((image (apply 'specifier-instance + (face-background-pixmap face) args))) + (when image + (image-instance-file-name image))) + (apply 'face-stipple face args))) + (when (string-match "XEmacs" emacs-version) ;; 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)) + (let* ((font (apply 'custom-face-font-name face args)) (fontobj (font-create-object font))) (set-font-size fontobj size) (apply 'font-set-face-font face fontobj args))) + (defun custom-face-font-size (face &rest args) + "Return the size of the font of FACE as a string." + (let* ((font (apply 'custom-face-font-name face args)) + (fontobj (font-create-object font))) + (format "%d" (font-size fontobj)))) + (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)) + "Set the font of FACE to FAMILY." + (let* ((font (apply 'custom-face-font-name face args)) (fontobj (font-create-object font))) (set-font-family fontobj family) (apply 'font-set-face-font face fontobj args))) - (nconc custom-face-attributes - '((:family (editable-field :format "Font Family: %v" - :help-echo "\ + (defun custom-face-font-family (face &rest args) + "Return the name of the font family of FACE." + (let* ((font (apply 'custom-face-font-name face args)) + (fontobj (font-create-object font))) + (font-family fontobj))) + + (setq custom-face-attributes + (append '((:family (editable-field :format "Font Family: %v" + :help-echo "\ Name of font family to use (e.g. times).") - custom-set-face-font-family) - (:size (editable-field :format "Size: %v" - :help-echo "\ + custom-set-face-font-family + custom-face-font-family) + (:size (editable-field :format "Size: %v" + :help-echo "\ Text size (e.g. 9pt or 2mm).") - custom-set-face-font-size)))) + custom-set-face-font-size + custom-face-font-size) + (:strikethru (toggle :format "Strikethru: %[%v%]\n" + :help-echo "\ +Control whether the text should be strikethru.") + set-face-strikethru-p + face-strikethru-p)) + custom-face-attributes))) ;;; Frames. @@ -502,10 +549,6 @@ (custom-get-frame-properties frame)) (custom-initialize-faces frame))) -;; Enable. This should go away when bundled with Emacs. -(unless (string-match "XEmacs" emacs-version) - (add-hook 'after-make-frame-hook 'custom-initialize-frame)) - ;;; Initializing. (and (fboundp 'make-face) diff -r d101af7320b8 -r cca96a509cfe lisp/custom/custom.el --- a/lisp/custom/custom.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/custom.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.69 +;; Version: 1.74 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -23,6 +23,9 @@ (define-widget-keywords :prefix :tag :load :link :options :type :group) +(defvar custom-define-hook nil + "Hook called after defining each customize option.") + ;; These autoloads should be deleted when the file is added to Emacs (unless (fboundp 'load-gc) @@ -33,7 +36,6 @@ (autoload 'customize-apropos "cus-edit" nil t) (autoload 'customize-customized "cus-edit" nil t) (autoload 'custom-buffer-create "cus-edit") - (autoload 'custom-menu-update "cus-edit") (autoload 'custom-make-dependencies "cus-edit") ;; From cus-face.el (autoload 'custom-declare-face "cus-face") @@ -43,12 +45,18 @@ (defun custom-declare-variable (symbol value doc &rest args) "Like `defcustom', but SYMBOL and VALUE are evaluated as normal arguments." - (unless (and (default-boundp symbol) - (not (get symbol 'saved-value))) + ;; Bind this variable unless it already is bound. + (unless (default-boundp symbol) + ;; Use the saved value if it exists, otherwise the factory setting. (set-default symbol (if (get symbol 'saved-value) (eval (car (get symbol 'saved-value))) (eval value)))) + ;; Remember the factory setting. (put symbol 'factory-value (list value)) + ;; Maybe this option was rogue in an earlier version. It no longer is. + (when (get symbol 'force-value) + ;; It no longer is. + (put symbol 'force-value nil)) (when doc (put symbol 'variable-documentation doc)) (while args @@ -278,9 +286,13 @@ (value (nth 1 entry)) (now (nth 2 entry))) (put symbol 'saved-value (list value)) - (when now - (put symbol 'force-value t) - (set-default symbol (eval value))) + (cond (now + ;; Rogue variable, set it now. + (put symbol 'force-value t) + (set-default symbol (eval value))) + ((default-boundp symbol) + ;; Something already set this, overwrite it. + (set-default symbol (eval value)))) (setq args (cdr args))) ;; Old format, a plist of SYMBOL VALUE pairs. (let ((symbol (nth 0 args)) @@ -288,43 +300,6 @@ (put symbol 'saved-value (list value))) (setq args (cdr (cdr args))))))) -;;; Meta Customization - -(defcustom custom-define-hook nil - "Hook called after defining each customize option." - :group 'customize - :type 'hook) - -;;; Menu support - -(defconst custom-help-menu - `("Customize" - ,(if (string-match "XEmacs" emacs-version) - '("Emacs" :filter (lambda (&rest junk) - (cdr (custom-menu-create 'emacs)))) - ["Update menu..." custom-menu-update t]) - ["Group..." customize t] - ["Variable..." customize-variable t] - ["Face..." customize-face t] - ["Saved..." customize-customized t] - ["Apropos..." customize-apropos t]) - "Customize menu") - -(defun custom-menu-reset () - "Reset customize menu." - (remove-hook 'custom-define-hook 'custom-menu-reset) - (if (string-match "XEmacs" emacs-version) - (when (fboundp 'add-submenu) - (add-submenu '("Options") custom-help-menu)) - (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)))))) - -(if (string-match "XEmacs" emacs-version) - (autoload 'custom-menu-create "cus-edit") - (custom-menu-reset)) - ;;; The End. (provide 'custom) diff -r d101af7320b8 -r cca96a509cfe lisp/custom/wid-browse.el --- a/lisp/custom/wid-browse.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/wid-browse.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.69 +;; Version: 1.74 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: diff -r d101af7320b8 -r cca96a509cfe lisp/custom/wid-edit.el --- a/lisp/custom/wid-edit.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/wid-edit.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.69 +;; Version: 1.74 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -1238,13 +1238,14 @@ (define-widget 'push-button 'item "A pushable button." :value-create 'widget-push-button-value-create + :text-format "[%s]" :format "%[%v%]") (defun widget-push-button-value-create (widget) ;; Insert text representing the `on' and `off' states. (let* ((tag (or (widget-get widget :tag) (widget-get widget :value))) - (text (concat "[" tag "]")) + (text (format (widget-get widget :text-format) tag)) (gui (cdr (assoc tag widget-push-button-cache)))) (if (and (fboundp 'make-gui-button) (fboundp 'make-glyph) @@ -2374,7 +2375,7 @@ (defun widget-vector-match (widget value) (and (vectorp value) (widget-group-match widget - (widget-apply :value-to-internal widget value)))) + (widget-apply widget :value-to-internal value)))) (define-widget 'cons 'group "A cons-cell." diff -r d101af7320b8 -r cca96a509cfe lisp/custom/widget-example.el --- a/lisp/custom/widget-example.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/widget-example.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.69 +;; Version: 1.74 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (require 'widget) diff -r d101af7320b8 -r cca96a509cfe lisp/custom/widget.el --- a/lisp/custom/widget.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/custom/widget.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.69 +;; Version: 1.74 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -27,8 +27,8 @@ (set (car keywords) (car keywords))) (setq keywords (cdr keywords))))))) -(define-widget-keywords :deactivate :active :inactive :activate - :sibling-args :delete-button-args +(define-widget-keywords :text-format :deactivate :active :inactive + :activate :sibling-args :delete-button-args :insert-button-args :append-button-args :button-args :tag-glyph :off-glyph :on-glyph :valid-regexp :secret :sample-face :sample-face-get :case-fold :widget-doc diff -r d101af7320b8 -r cca96a509cfe lisp/emulators/crisp.el --- a/lisp/emulators/crisp.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/emulators/crisp.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ -;; @(#) crisp.el -- Crisp/Brief Emacs emulator +;; @(#) crisp.el -- CRiSP/Brief Emacs emulator ;; Author: Gary D. Foster -;; $Revision: 1.1.1.2 $ +;; $Revision: 1.2 $ ;; Keywords: emulations brief crisp ;; This file is part of GNU Emacs. @@ -21,6 +21,8 @@ ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. +;; CRiSP is a registered trademark of Foxtrot Systems Ltd. + ;;; Commentary: ;; Keybindings and minor functions to duplicate the functionality and @@ -53,26 +55,26 @@ ;; local variables (defvar crisp-mode-map (copy-keymap (current-global-map)) - "Local keymap for Crisp mode. + "Local keymap for CRiSP mode. All the bindings are done here instead of globally to try and be nice to the world.") -(defvar crisp-mode-modeline-string " *Crisp*" - "String to display in the modeline when Crisp mode is enabled.") +(defvar crisp-mode-modeline-string " *CRiSP*" + "String to display in the modeline when CRiSP mode is enabled.") (defvar crisp-mode-original-keymap (copy-keymap (current-global-map)) - "The original keymap before Crisp mode remaps anything. -This keymap is restored when Crisp mode is disabled.") + "The original keymap before CRiSP mode remaps anything. +This keymap is restored when CRiSP mode is disabled.") (defvar crisp-mode-enabled 'nil - "Track status of Crisp mode. -A value of nil means Crisp mode is not enabled. A value of t -indicates Crisp mode is enabled.") + "Track status of CRiSP mode. +A value of nil means CRiSP mode is not enabled. A value of t +indicates CRiSP mode is enabled.") (defvar crisp-override-meta-x 't "Controls overriding the normal Emacs M-x key binding. The normal binding for M-x is `execute-extended-command', however -the normal Crisp keybinding for M-x is to exit the editor, while +the normal CRiSP keybinding for M-x is to exit the editor, while the F10 key is used to execute extended commands. If you don't want M-x to dump you out of emacs, set this to nil before loading the package.") @@ -80,11 +82,11 @@ (defvar crisp-load-scroll-lock 't "Controls loading of the Scroll Lock minor mode package. Default behavior is to load the scroll lock minor mode -package when Crisp mode is enabled. Set to nil prior +package when CRiSP mode is enabled. Set to nil prior to loading this package to prevent it.") (defvar crisp-load-hook nil - "Hooks to run after Crisp mode is enabled.") + "Hooks to run after CRiSP mode is enabled.") (defvar crisp-mode-running-xemacs (string-match "XEmacs\\Lucid" emacs-version)) @@ -157,7 +159,7 @@ (define-key crisp-mode-map [(end)] 'crisp-end) (defun crisp-home () - "Home the point according to Crisp conventions. + "Home the point according to CRiSP conventions. First call to this moves point to beginning of the line. Second consecutive call moves point to beginning of the screen. Third consecutive call moves the point to the beginning of the buffer." @@ -172,7 +174,7 @@ (setq last-last-command last-command)) (defun crisp-end () - "End the point according to Crisp conventions. + "End the point according to CRiSP conventions. First call to this moves point to end of the line. Second consecutive call moves point to the end of the screen. Third consecutive call moves point to the end of the buffer." @@ -190,7 +192,7 @@ ;; Now enable the mode (defun crisp-mode () - "Toggle Crisp minor mode." + "Toggle CRiSP minor mode." (interactive nil) (setq crisp-mode-enabled (not crisp-mode-enabled)) (cond diff -r d101af7320b8 -r cca96a509cfe lisp/games/mine.el --- a/lisp/games/mine.el Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1246 +0,0 @@ -;;; mine.el --- Mine game for GNU Emacs - -;; Author: Jacques Duthen -;; Keywords: games -;; Time-stamp: <97/01/20 14:37:36 duthen> -;; Version: 1.17 - -(defconst mine-version-number "1.17" "Emacs Mine version number.") -(defconst mine-version (format "XEmacs Mine v%sx by Jacques Duthen © 1997" - mine-version-number) - "Full Emacs Mine version number.") - -;; This file is not yet part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; The object of this classical game is to locate the hidden mines. -;; To do this, you hit the squares on the game board that do not -;; contain mines, and you mark the squares that do contain mines. - -;; The number of hidden mines remaining in the mine field is indicated -;; inside the buffer. Every time you mark a square as a mine, this -;; number decreases by one, even if you incorrectly mark a square. - -;; To hit a square: Point to the square, and click the left button. -;; If the square is a mine, you lose. -;; If the square isn't a mine, a number appears, which represents -;; the number of mines in the surrounding eight squares. - -;; To mark a square as a mine: Point to the square, and click -;; the right button. - -;; To play Mine, compile it if you want, load it, and type `M-x mine'. - -;; To get help and doc, see the functions `mine' and `mine-help' -;; (ie. type `?' in the *Mine* buffer or type `C-h f mine') - -;; This module has been developed and tested with GNU Emacs 19.31.1, -;; but it should run with any GNU Emacs 19.* (at least with versions -;; superior to 19.31). - -;; This module has not been tested (yet) with XEmacs. It may or may -;; not run (can anybody tell me?). - -;; Send any comment or bug report (do you expect to find any? ;-) to me: -;; duthen@cegelec-red.fr (Jacques Duthen) - -;; Good luck. - -;; 1.17 Thanks to Vladimir Alexiev . -;; Fix bug: (void-function unless), add minimal support for xemacs. -;; (mine-xemacs-p): Added. -;; (event-point): New function. -;; (mine-mouse-hit, mine-mouse-mark): Use (interactive "@e") and `event-point' -;; (mine-init-mode-map): Support xemacs mouse binding. -;; (mine-make-face): Support xemacs get-face. -;; (mine-goto): Support `auto-show-make-point-visible' as well as -;; `hscroll-point-visible'. - -;; 1.16 Initial released version. - -;;; Code: - -(defvar mine-xemacs-p (string-match "XEmacs\\|Lucid" emacs-version)) - -;;; ================================================================ -;;; User Variables: - -;;; -1- size - -;;; The mine field is a rectangle (mine-xmax x mine-ymax), which is -;;; duplicated to fill a bigger rectangle periodically tiled with the -;;; smaller one, the period being (mine-xmax x mine-ymax). - -(defvar mine-xmax 16 "*The logical width of the mine field.") -(defvar mine-ymax 24 "*The logical height of the mine field.") - -(defvar mine-mines-% 16 - "*Percentage (between 0 and 100) of mines in the mine field.") - -(defvar mine-torus (not mine-xemacs-p) - "*Non-nil to play the game on a periodic board (a torus). -This is the default unless using graphics (XEmacs)") - -(defvar mine-nb-tiles-x 2 - "*Number of duplications in the x direction, when `mine-torus' is non-nil. -Indicate the number of times the original mine field is duplicated -in the x direction. -It's better looking when it's an integer. -nil means fill exactly the whole window. -0 means fill the whole window with the biggest integer that fits. -a negative number means use exactly the opposite number. If it's -too big, the rows are truncated by emacs. Automatic horizontal -scrolling will occur if you move to an invisible point. -a positive float means limit to the window width if needed. -a positive integer means limit to the window width if needed, -with the biggest possible integer value anyway. -") - -(defvar mine-nb-tiles-y 2 - "*Number of duplications in the y direction, when `mine-torus' is non-nil. -Indicate the number of times the original mine field is duplicated -in the y direction. -It's better looking when it's an integer. -nil means fill exactly the whole window. -0 means fill the whole window with the biggest integer that fits. -a negative number means use exactly the opposite number. If it's -too big, the rows will be simply scrolled up or down by emacs. -a positive float means limit to the window height if needed. -a positive integer means limit to the window height if needed, -with the biggest possible integer value anyway. -") - -;;; -2- square characters - -;;; All these characters may be changed but the first three ones -;;; `unmarked' `marked' `zero' must differ from each other. - -(defvar mine-char-unmarked ?- - "*Character for a square not yet marked nor hit.") -(defvar mine-char-marked ?@ - "*Character for a square marked as containing a mine.") -(defvar mine-char-zero ?\ - "*Character for a square hit with no adjacent mine.") - -(defvar mine-char-pad ?\ - "*Character to pad in the x direction or nil (not yet implemented).") -(defvar mine-char-not-found ?o - "*Character for a square marked but with no mine.") -(defvar mine-char-bogus ?x - "*Character for a square not marked but with a mine.") - -;;; -3- colors - -(defvar mine-colorp (if window-system 't 'nil) - "*Non-nil means with colors. Nil means in black and white.") - -(defvar mine-colors nil - "*Set this variable to override the colors defined by -`mine-default-colors' (use the same format).") - -(defconst mine-default-colors - '((mine-face-unmarked . "LightBlue") - (mine-face-marked . "Red") - (0 . nil) - (1 . "Cyan") - (2 . "Green") - (3 . "Yellow") - (4 . "Orange") - (5 . "OrangeRed") - (6 . "Red") - (7 . "Red") - (8 . "Red") - (mine-face-pad . nil) - (mine-face-not-found . "Red") - (mine-face-bogus . "Red") - ) - "A-list of default colors for Mine faces. Don't change its value. -You can override these settings with `mine-colors' using the same format.") - -;;; -4- redisplay - -(defvar mine-level 2 - "*Redisplay speed. 0 is the slowest redisplay, 5 is the fastest one. -0 means redisplay when every single square changes. -1 means redisplay when one square and its periodic images change. -2 means redisplay every `mine-count1-max' change. -3 means redisplay every `mine-count1-max'*`mine-count2-max' change. --1 or nil means redisplay only when all the changes are done. -") - -(defvar mine-count1-max 16 - "*See `mine-level'. -Redisplay when the number of empty squares which have changed -is greater than `mine-count1-max'. -8 means redisplay each time 8 squares have been changed. --1 means redisplay only when all the changes are done.") - -(defvar mine-count2-max 4 - "*See `mine-level'. -Redisplay when the number of empty squares which have changed -is greater than `mine-count1-max'. -8 means redisplay each time 8 squares have been changed. --1 means redisplay only when all the changes are done.") - -(defvar mine-hscroll-step 4 - "*Local value for `hscroll-step'") - -(defvar mine-mode-hook nil - "*Hook called by `mine-mode-hook'.") - -;;; ================================================================ -;;; Internal variables: - -;; XEmacs stuffs -(defvar mine-glyph-directory (concat data-directory "mine") - "Directory where mine glyphs are kept.") -(defun mine-make-glyph (file) - (when mine-xemacs-p - (make-glyph (list (cons 'x - (expand-file-name file mine-glyph-directory)))))) -(defvar mine-default-glyphs - `((mine-face-unmarked . ,(mine-make-glyph "empty_16_up.gif")) - (mine-face-marked . ,(mine-make-glyph "flagged_16_up.gif")) - (0 . ,(mine-make-glyph "empty_16_flat.gif")) - (1 . ,(mine-make-glyph "1_16_flat.gif")) - (2 . ,(mine-make-glyph "2_16_flat.gif")) - (3 . ,(mine-make-glyph "3_16_flat.gif")) - (4 . ,(mine-make-glyph "4_16_flat.gif")) - (5 . ,(mine-make-glyph "5_16_flat.gif")) - (6 . ,(mine-make-glyph "6_16_flat.gif")) - (7 . ,(mine-make-glyph "7_16_flat.gif")) - (8 . ,(mine-make-glyph "8_16_flat.gif")) - (mine-face-pad . ,(mine-make-glyph "empty_16_down.gif")) - (mine-face-not-found . ,(mine-make-glyph "bomb_16_flat.gif")) - (mine-face-bogus . ,(mine-make-glyph "question_16_up.gif")) - ) - "A-list of default graphics for various mine characters. Unless you -have an entire replacement set of graphics I wouldn't suggest changing it.") - -(defvar mine-user-variables - '("Size" - mine-xmax mine-ymax mine-mines-% - mine-torus mine-nb-tiles-x mine-nb-tiles-y - "Square characters" - mine-char-unmarked mine-char-marked mine-char-zero - mine-char-pad mine-char-not-found mine-char-bogus - "Colors" - mine-colorp mine-colors - "Redisplay" - mine-level mine-count1-max mine-count2-max - "Scrolling" - mine-hscroll-step - "Hook" - mine-mode-hook)) - -(defvar mine-user-commands - '("Help" - mine mine-help mine-help-bindings mine-help-variables - "Mouse control" - mine-mouse-hit mine-mouse-mark - "Move" - mine-left mine-right mine-up mine-down - mine-bol mine-eol mine-top mine-bottom - "Hit and mark" - mine-hit-curpoint mine-mark-curpoint - "Quit" - mine-quit)) - -;; pad x factor == (if mine-char-pad 2 1) -(defvar mine-padx*) - -(defvar mine-width) -(defvar mine-height) - -;; (x y) of current point -(defvar mine-x) ;; 1 <= mine-x <= mine-width -(defvar mine-y) ;; 1 <= mine-y <= mine-height - -;; limits of the playable part of the board -(defvar mine-point-min) -(defvar mine-point-max) - -(defvar mine-point-remaining-mines) -(defvar mine-point-mines-hit) - -(defvar mine-mode-map nil) - -(defvar mine-real-mines) - -(defvar mine-nb-remaining-mines) -(defvar mine-nb-remaining-marks) -(defvar mine-nb-mines-hit) - -(defvar mine-faces) - -;;; This variable is more special rather than global. -(defvar mine-adjacent-points) - -(defvar mine-count1) -(defvar mine-count2) - -;;; ================================================================ -;;; Macros (stolen from "cl.el" (soon in "subr.el" (thanks to rms))) - -(eval-when-compile -(or (fboundp 'when) -(defmacro when (cond &rest body) - "(when COND BODY...): if COND yields non-nil, do BODY, else return nil." - (list 'if cond (cons 'progn body))))) - -;;; ================================================================ -;;; User commands - -;;;###autoload -(defun mine (num) - "Play Mine. Optional prefix argument is the number of mines. - -To play Mine, type `\\[mine]' or `\\[universal-argument] NUM \\[mine]'. - -An optional prefix argument specifies the number of mines to be hidden -in the field. If no prefix argument is given, a percentage -`mine-mines-%' of the field will contain mines. - -What is Mine?\\ - -Mine is a classical game of hide and seek played on a rectangular grid -containing `mine-xmax' by `mine-ymax' squares (the mine field). - -Your opponent (Emacs, in this case) has hidden several mines within -this field. The object of the game is to find every hidden mine. - -When you're sure a square does NOT contain a mine, you can hit it: -move the mouse over the square and press `\\[mine-mouse-hit]' or -move the cursor with the usual keys and press `\\[mine-hit-curpoint]'. - -If the square is a mine, you lose. -If the square isn't a mine, a number appears which represents -the number of mines in the surrounding eight squares. - -When you think a square DOES contain a mine, you can mark it: -move the mouse over the square and press `\\[mine-mouse-mark]' or -move the cursor with the usual keys and press `\\[mine-mark-curpoint]'. - -The number of hidden mines remaining in the mine field is indicated -inside the buffer. Every time you mark a square as a mine, this -number decreases by one, even if you incorrectly mark a square. - -If `mine-torus' is non-nil (the default), the Mine game is played over -a periodic field (like a torus). Each mine is hidden periodically -over the mine board `mine-nb-tiles-x' times in the x direction and -`mine-nb-tiles-y' times in the y direction. - -If `mine-colorp' is non-nil (the default, if the system allows it), -the game is displayed with colors. The colors can be chosen with the -variable `mine-colors'. - -If the redisplay is not fast enough, increase `mine-level'. If you -want to see a smoother (slower) redisplay, decrease `mine-level', -`mine-count1-max' and `mine-count2-max'. - -You can get help on `mine-mode' and its key bindings by pressing `\\[mine-help]' -while in the *Mine* buffer. -" - (interactive "P") - (switch-to-buffer "*Mine*") - (mine-mode) - (setq buffer-read-only 't) - (buffer-disable-undo (current-buffer)) - (setq mine-nb-remaining-mines - (or num (round (/ (* mine-xmax mine-ymax mine-mines-%) 100))) - mine-nb-remaining-marks mine-nb-remaining-mines) - (if (> mine-nb-remaining-mines (* mine-xmax mine-ymax)) - (error "Too many mines: %d" mine-nb-remaining-mines)) - (mine-init-faces) - (setq mine-real-mines (mine-init-mines mine-nb-remaining-mines)) - (setq mine-nb-mines-hit 0) - (mine-init-board) - (mine-reset-counters) - (mine-update-remaining-mines) - (setq hscroll-step mine-hscroll-step) - ;; initial position - (setq mine-x 1) - (setq mine-y 1) - (mine-goto mine-x mine-y) -) - -;; Mine mode is suitable only for specially formatted data. -(put 'mine-mode 'mode-class 'special) - -(defun mine-mode () - "Major mode for playing Mine. To learn how to play Mine, see `mine'. - -If you have a mouse, you can do:\\ - -`\\[mine-mouse-hit]' -- hit point -`\\[mine-mouse-mark]' -- mark or unmark a mine at point - -If you don't have a mouse, you can move the cursor over the mine -field with the usual mnemonic keys and: - -`\\[mine-hit-curpoint]' -- hit point -`\\[mine-mark-curpoint]' -- mark or unmark a mine at point - -`\\[mine-quit]' -- give up and see the hidden mines - -You can get help with: - -`\\[mine-help-variables]' -- get help on Mine variables -`\\[mine-help-bindings]' -- get help on Mine bindings - -\\{mine-mode-map} -" - (interactive) - (kill-all-local-variables) - (make-local-variable 'hscroll-step) - (use-local-map mine-mode-map) - (setq truncate-lines 't) - (setq major-mode 'mine-mode) - (setq mode-name "Mine") - (run-hooks 'mine-mode-hook) -) - -;;;###autoload -(defun mine-version () - "Return string describing the current version of Mine. -When called interactively, displays the version." - (interactive) - (if (interactive-p) - (message (mine-version)) - mine-version)) - -;;;###autoload -(defun mine-help () - "*Get help on `mine-mode'." - (interactive) - (save-excursion - (switch-to-buffer "*Mine*") - (mine-mode) - (describe-mode))) - -(defun mine-help-variables () - "*Get help on Mine variables." - (interactive) - (save-excursion - (switch-to-buffer "*Mine*") - (mine-mode) - (apropos-symbols mine-user-variables 't))) - -(defun mine-help-bindings () - "*Get help on Mine bindings." - (interactive) - (save-excursion - (switch-to-buffer "*Mine*") - (mine-mode) - (apropos-symbols mine-user-commands 't))) - -(defun mine-print-settings () - "*Print the current Mine settings (value of all the user variables)." - (interactive) - (with-output-to-temp-buffer "*scratch*" - (mine-print-variables mine-user-variables))) - -;;; ================================================================ -;;; Click events - nop hit mark - -;;; [jack] The elisp manual says: -;;; If you want to take action as soon as a button is pressed, -;;; you need to handle "button-down" events. -;;; The global map (cf. `mouse.el') has, by default, the binding: -;;; (define-key global-map [down-mouse-1] 'mouse-drag-region) -;;; It seems that this function "eats" the final event [mouse-1]. -;;; So, we need a local binding for [down-mouse-1] which shadows -;;; the global one and prevents `mouse-drag-region' from being called. -;;; Hence, in `mine-init-mode-map' I use the following binding: -;;; (define-key mine-mode-map [down-mouse-1] 'mine-mouse-nop) -;;; I found a better binding in "apropos.el" -;;; (define-key mine-mode-map [down-mouse-1] nil) -;;; but, as it does not work, let's go back to nop... - -(or (fboundp 'event-point) - (defun event-point (event) - (posn-point (event-end event)))) - -(defun mine-mouse-nop (event) - "Nop" - (interactive "e")) - -(defun mine-mouse-hit (event) - "Move point to the position clicked on with the mouse and hit this point." - (interactive "@e") - (if (mine-goto-point (event-closest-point event)) - (mine-hit-curpoint) - (mine-message 'mine-msg-click-precisely))) - -(defun mine-mouse-mark (event) - "Move point to the position clicked on with the mouse and mark or unmark -this point." - (interactive "@e") - (if (mine-goto-point (event-point event)) - (mine-mark-curpoint) - (mine-message 'mine-msg-click-precisely))) - -;;; ================================================================ -;;; Key events - hit mark quit - -(defun mine-hit-curpoint () - "Hit point" - (interactive) - (mine-reset-counters) - (let ((c (following-char))) - (save-excursion - (cond - ((eq c mine-char-marked) - (mine-message 'mine-msg-unmark-before-hit)) - ((not (eq c mine-char-unmarked)) - (mine-message 'mine-msg-point-already-hit)) - ((mine-mine-at-point-p (point) 'slowp) - (setq mine-nb-mines-hit (1+ mine-nb-mines-hit)) - (mine-update-mines-hit) - (mine-message 'mine-msg-lose) - (mine-quit)) - (t ;; the real job... - (let* ((x.y (mine-top-left (mine-point-to-x.y (point)))) - (pxy (cons (point) x.y)) - (mine-adjacent-points (list pxy))) ; special variable - (while mine-adjacent-points - (setq pxy (car mine-adjacent-points) - mine-adjacent-points (cdr mine-adjacent-points)) - (mine-deep-hit pxy)))))))) - -(defun mine-mark-curpoint () - "Mark or unmark current position" - (interactive) - (mine-reset-counters) - (let ((c (following-char))) - (save-excursion - (cond - ((eq c mine-char-unmarked) - (mine-mark-board (point)) - (setq mine-nb-remaining-marks - (1- mine-nb-remaining-marks)) - (if (mine-mine-at-point-p (point) 'slowp) - (setq mine-nb-remaining-mines - (1- mine-nb-remaining-mines)))) - ((eq c mine-char-marked) - (mine-unmark-board (point)) - (setq mine-nb-remaining-marks - (1+ mine-nb-remaining-marks)) - (if (mine-mine-at-point-p (point) 'slowp) - (setq mine-nb-remaining-mines - (1+ mine-nb-remaining-mines)))) - (t - (mine-message 'mine-msg-cannot-mark))) - (mine-update-remaining-mines)))) - -(defun mine-quit () - "*Display hidden and bogus mines." - (interactive) - (when (y-or-n-p "Do you want to see the remaining and bogus mines? ") - (mine-show-bogus-mines))) - -(defun mine-show-bogus-mines () - (mine-reset-counters) - (let ((nrb 0) (nbb 0) - (x.y (cons nil nil)) - (y 1) x - point c) - (while (<= y mine-ymax) - (setq x 1) - (setcdr x.y y) - (while (<= x mine-xmax) - (setq point (mine-xy-to-point x y) - c (char-after point)) - (cond - ((eq c mine-char-unmarked) - (setcar x.y x) - (when (mine-mine-at-xy-p x.y) - (setq nrb (1+ nrb)) - (mine-update-board point mine-char-not-found 'mine-face-not-found))) - ((eq c mine-char-marked) - (setcar x.y x) - (when (not (mine-mine-at-xy-p x.y)) - (setq nbb (1+ nbb)) - (mine-update-board point mine-char-bogus 'mine-face-bogus)))) - (setq x (1+ x))) - (setq y (1+ y))) - (mine-update-bogus-mines nrb nbb))) - -;;; ================================================================ -;;; Key events - moves - -(defun mine-left () - "Move left" - (interactive) - (setq mine-x (1- mine-x)) - (when (<= mine-x 0) - (while (<= mine-x mine-width) - (setq mine-x (+ mine-x mine-xmax))) - (setq mine-x (- mine-x mine-xmax))) - (mine-goto mine-x mine-y)) - -(defun mine-right () - "Move right" - (interactive) - (setq mine-x (1+ mine-x)) - (when (> mine-x mine-width) - (while (>= mine-x 0) - (setq mine-x (- mine-x mine-xmax))) - (setq mine-x (+ mine-x mine-xmax))) - (mine-goto mine-x mine-y)) - -(defun mine-up () - "Move up" - (interactive) - (setq mine-y (1- mine-y)) - (when (<= mine-y 0) - (while (<= mine-y mine-height) - (setq mine-y (+ mine-y mine-ymax))) - (setq mine-y (- mine-y mine-ymax))) - (mine-goto mine-x mine-y)) - -(defun mine-down () - "Move down" - (interactive) - (setq mine-y (1+ mine-y)) - (when (> mine-y mine-height) - (while (>= mine-y 0) - (setq mine-y (- mine-y mine-ymax))) - (setq mine-y (+ mine-y mine-ymax))) - (mine-goto mine-x mine-y)) - - -(defun mine-bol () - "Move to the beginning of the row" - (interactive) - (setq mine-x 1) - (mine-goto mine-x mine-y)) - -(defun mine-eol () - "Move to the end of the row" - (interactive) - (setq mine-x mine-width) - (mine-goto mine-x mine-y)) - -(defun mine-top () - "Move to the top of the column" - (interactive) - (setq mine-y 1) - (mine-goto mine-x mine-y)) - -(defun mine-bottom () - "Move to the bottom of the column" - (interactive) - (setq mine-y mine-height) - (mine-goto mine-x mine-y)) - -;;; ================================================================ -;;; Internal model functions - -(defun mine-init-mines (num-mines) - (random t) - (let ((mines (list)) (n num-mines) x y x.y) - (while (> n 0) - (setq n (1- n) - x (1+ (random mine-xmax)) - y (1+ (random mine-ymax)) - x.y (cons x y)) - (while (mine-member x.y mines 'nil) - ;; replace by the point to the right (or next row if eol) - (if (< x mine-xmax) - (setcar x.y (setq x (1+ x))) - (setcar x.y (setq x 1)) - (setcdr x.y (setq y (if (< y mine-ymax) (1+ y) 1))))) - (setq mines (cons x.y mines))) - mines)) - -(defun mine-mine-at-point-p (point slowp) - (mine-member (mine-top-left (mine-point-to-x.y point)) - mine-real-mines slowp)) - -(defun mine-mine-at-xy-p (x.y) - (mine-member x.y mine-real-mines 'nil)) - -;;; Returns non-nil if ELT is an element of LIST. -;;; Constant time execution if slowp is non-nil. -(defun mine-member (x.y list slowp) - (let ((found 'nil)) - (while (and list (or slowp (not found))) - (if (equal x.y (car list)) - (setq found 't)) - (setq list (cdr list))) - found)) - -;;; ================================================================ -;;; Internal model & interface functions - -(defun mine-pxy (x y) - (cons (mine-xy-to-point x y) (cons x y))) - -;; pxy == (point . (x . y)) -;; with 1 <= {xy} <= mine-{xy}max -(defun mine-deep-hit (pxy) - (interactive) - (let (point x.y c) - (setq point (car pxy) - x.y (cdr pxy) - c (char-after point)) - (cond - ((eq c mine-char-marked)) ;; free but marked (user bug) - ((not (eq c mine-char-unmarked))) ;; already done - ((mine-mine-at-xy-p x.y) - (error "Internal error: mine-deep-hit mine at %s" point)) - (t ;; the real job... - (let* ((adjacent-points (mine-adjacent-points point x.y)) - (nb-adjacent-mines (mine-nb-adjacent-mines adjacent-points))) - (mine-display-nb-adjacent-mines point nb-adjacent-mines) - (when (zerop nb-adjacent-mines) - ;; Stack overflow: "Lisp nesting exceeds max-lisp-eval-depth" - ;;(mapc 'mine-deep-hit adjacent-points) - (setq mine-adjacent-points - (nconc adjacent-points mine-adjacent-points)))))))) - -;; return == ((point . (x . y))*) -;; with 1 <= {xy} <= mine-{xy}max -(defun mine-adjacent-points (point x.y) - (mine-random-permut - (if mine-torus - (mine-adjacent-points-on-torus point x.y) - (mine-adjacent-points-no-torus point x.y)))) - -(defun mine-random-permut (l) - (let ((ll (nthcdr (random (length l)) l))) - (nconc ll l) - (prog1 (cdr ll) (setcdr ll ())))) - -(defun mine-adjacent-points-no-torus (point x.y) - (let ((x (car x.y)) (y (cdr x.y)) (points (list)) xx yy) - ;; left column - (when (not (= x 1)) - (setq xx (1- x)) - (when (not (= y 1)) - (setq yy (1- y)) - (setq points (cons (mine-pxy xx yy) points))) - (setq points (cons (mine-pxy xx y) points)) - (when (not (= y mine-ymax)) - (setq yy (1+ y)) - (setq points (cons (mine-pxy xx yy) points)))) - ;; middle column - (setq xx x) - (when (not (= y 1)) - (setq yy (1- y)) - (setq points (cons (mine-pxy xx yy) points))) - (when (not (= y mine-ymax)) - (setq yy (1+ y)) - (setq points (cons (mine-pxy xx yy) points))) - ;; right column - (when (not (= x mine-xmax)) - (setq xx (1+ x)) - (when (not (= y 1)) - (setq yy (1- y)) - (setq points (cons (mine-pxy xx yy) points))) - (setq points (cons (mine-pxy xx y) points)) - (when (not (= y mine-ymax)) - (setq yy (1+ y)) - (setq points (cons (mine-pxy xx yy) points)))) - (nreverse points))) - -(defun mine-adjacent-points-on-torus (point x.y) - (let ((x (car x.y)) (y (cdr x.y)) (points (list)) xx yy) - ;; left column - (setq xx (if (= x 1) mine-xmax (1- x))) - (setq yy (if (= y 1) mine-ymax (1- y))) - (setq points (cons (mine-pxy xx yy) points)) - (setq points (cons (mine-pxy xx y) points)) - (setq yy (if (= y mine-ymax) 1 (1+ y))) - (setq points (cons (mine-pxy xx yy) points)) - ;; middle column - (setq xx x) - (setq yy (if (= y 1) mine-ymax (1- y))) - (setq points (cons (mine-pxy xx yy) points)) - (setq yy (if (= y mine-ymax) 1 (1+ y))) - (setq points (cons (mine-pxy xx yy) points)) - ;; right column - (setq xx (if (= x mine-xmax) 1 (1+ x))) - (setq yy (if (= y 1) mine-ymax (1- y))) - (setq points (cons (mine-pxy xx yy) points)) - (setq points (cons (mine-pxy xx y) points)) - (setq yy (if (= y mine-ymax) 1 (1+ y))) - (setq points (cons (mine-pxy xx yy) points)) - (nreverse points))) - -;; l == ((p . (x . y))*) -(defun mine-nb-adjacent-mines (l) - (let ((nb 0) pxy x.y) - (while l - (setq pxy (car l) l (cdr l) x.y (cdr pxy)) - (if (mine-mine-at-xy-p x.y) - (setq nb (1+ nb)))) - nb)) - -;;; ================================================================ -;;; Mode map - -(defun mine-init-mode-map () - (let ((map (make-keymap)) (gm global-map)) - ;; All normally self-inserting keys (except digits) are undefined - (suppress-keymap map 'nil) - ;; Help - (define-key map "?" 'mine-help) - (define-key map "h" 'mine-help) - (define-key map "b" 'mine-help-bindings) - (define-key map "v" 'mine-help-variables) - (cond - (mine-xemacs-p - ;; Mouse control - (define-key map [mouse-1] 'mine-mouse-hit) - (define-key map [mouse-3] 'mine-mouse-mark) - ;; Mouse control to prevent problems - (define-key map [mouse-2] 'mine-mouse-nop)) - (t - ;; Mouse control - (define-key map [mouse-1] 'mine-mouse-hit) - (define-key map [mouse-3] 'mine-mouse-mark) - ;; Mouse control to prevent problems - (define-key map [mouse-2] 'mine-mouse-nop) - (define-key map [down-mouse-1] 'mine-mouse-nop) - (define-key map [down-mouse-2] 'mine-mouse-nop) - (define-key map [down-mouse-3] 'mine-mouse-nop) - (define-key map [drag-mouse-1] 'mine-mouse-nop) - (define-key map [drag-mouse-2] 'mine-mouse-nop) - (define-key map [drag-mouse-3] 'mine-mouse-nop) - (define-key map [mouse-2] 'mine-mouse-nop))) - ;; Move - (substitute-key-definition 'backward-char 'mine-left map gm) - (substitute-key-definition 'forward-char 'mine-right map gm) - (substitute-key-definition 'previous-line 'mine-up map gm) - (substitute-key-definition 'next-line 'mine-down map gm) - - (substitute-key-definition 'beginning-of-line 'mine-bol map gm) - (substitute-key-definition 'backward-word 'mine-bol map gm) - (substitute-key-definition 'backward-sexp 'mine-bol map gm) - (substitute-key-definition 'end-of-line 'mine-eol map gm) - (substitute-key-definition 'forward-word 'mine-eol map gm) - (substitute-key-definition 'forward-sexp 'mine-eol map gm) - (define-key map "\M-p" 'mine-top) - (define-key map "\M-n" 'mine-bottom) - ;; Hit and mark - (define-key map " " 'mine-hit-curpoint) - (define-key map "\C-m" 'mine-mark-curpoint) - (define-key map [kp-enter] 'mine-mark-curpoint) - (define-key map "m" 'mine-mark-curpoint) - (define-key map "q" 'mine-quit) - - (setq mine-mode-map map))) - -;;; ================================================================ -;;; Faces - -(defun mine-init-faces () - (setq mine-faces (list)) - (when mine-colorp - (let ((l (append mine-colors mine-default-colors)) - key.col key col name) - (while l - (setq key.col (car l) - l (cdr l) - key (car key.col) - col (cdr key.col)) - (when (null (assoc key mine-faces)) - (setq name - (cond - ((null key) nil) - ((symbolp key) (mine-make-face key col)) - ((not (integerp key)) - (error "Key should be a symbol or a number: '%s'" key)) - ((or (< key 0) (> key 8)) - (error "Key should be a number between 0 and 8: '%s'" key)) - (t - (setq name (intern (concat "mine-face-" key))) - (mine-make-face name col)))) - (setq mine-faces (cons (cons key name) mine-faces)))) - (setq mine-faces (nreverse mine-faces))))) - -(defun mine-make-face (name col) - (or (if (fboundp 'internal-find-face) - (internal-find-face name) - (find-face name)) - (let ((face (make-face name))) - (unless (or (not mine-xemacs-p) col) - (setq col (cdr (face-background 'default 'global)))) - (set-face-background face col) - face)) - name) - -(defun mine-get-face (key) - (cdr (assoc key mine-faces))) - -(defun mine-get-glyph (key) - (if mine-xemacs-p - (cdr (assoc key mine-default-glyphs)) - nil)) -;;; ================================================================ -;;; Init board - -(defun mine-init-board () - (setq mine-padx* (if mine-char-pad 2 1)) - (if (not mine-torus) - (setq mine-width mine-xmax - mine-height mine-ymax) - (let (window-xmax window-nb-tiles-x window-xmax-int - window-ymax window-nb-tiles-y window-ymax-int) - (setq window-xmax (/ (window-width) mine-padx*) - window-nb-tiles-x (/ window-xmax mine-xmax) - window-xmax-int (* window-nb-tiles-x window-xmax)) - (setq mine-width - (max mine-xmax ; at least mine-xmax - (cond - ((null mine-nb-tiles-x) window-xmax) - ((not (numberp mine-nb-tiles-x)) - (error "mine-nb-tiles-x should be nil or a number: %s" - mine-nb-tiles-x)) - ((zerop mine-nb-tiles-x) window-xmax-int) - ((< mine-nb-tiles-x 0) - (floor (* mine-xmax (- mine-nb-tiles-x)))) - ((floatp mine-nb-tiles-x) - (min window-xmax (floor (* mine-xmax mine-nb-tiles-x)))) - (t (min window-xmax-int (* mine-xmax mine-nb-tiles-x)))))) - (setq window-ymax (- (window-height) 5) - window-nb-tiles-y (/ window-ymax mine-ymax) - window-ymax-int (* window-nb-tiles-y window-ymax)) - (setq mine-height - (max mine-ymax - (cond - ((null mine-nb-tiles-y) window-ymax) - ((not (numberp mine-nb-tiles-y)) - (error "mine-nb-tiles-y should be nil or a number: %s" - mine-nb-tiles-y)) - ((zerop mine-nb-tiles-y) window-ymax-int) - ((< mine-nb-tiles-y 0) - (floor (* mine-ymax (- mine-nb-tiles-y)))) - ((floatp mine-nb-tiles-y) - (min window-ymax (floor (* mine-ymax mine-nb-tiles-y)))) - (t (min window-ymax-int (* mine-ymax mine-nb-tiles-y)))))))) - (let ((buffer-read-only 'nil) - (face-unmarked (mine-get-face 'mine-face-unmarked)) - (glyph-unmarked (mine-get-glyph 'mine-face-unmarked)) - (face-pad (mine-get-face 'mine-face-pad)) - (glyph-pad (mine-get-glyph 'mine-face-pad)) - row col) - (erase-buffer) - (mine-insert-copyright) - (mine-insert-remaining-mines) - (mine-insert-mines-hit) - (setq mine-point-min (point)) - (setq row mine-height) - (while (>= (setq row (1- row)) 0) - (setq col (1- mine-width)) - (insert mine-char-unmarked) - (when (and (not glyph-unmarked) face-unmarked) - (put-text-property (1- (point)) (point) 'face face-unmarked)) - (when glyph-unmarked - (let ((e)) - (setq e (make-extent (1- (point)) (point))) - (set-extent-property e 'invisible t) - (set-extent-property e 'end-open t) - (set-extent-property e 'start-open nil) - (set-extent-end-glyph e glyph-unmarked))) - (while (>= (setq col (1- col)) 0) - (when mine-char-pad - (insert mine-char-pad) - (when face-pad - (put-text-property (1- (point)) (point) 'face face-pad))) - (insert mine-char-unmarked) - (when (and (not glyph-unmarked) face-unmarked) - (put-text-property (1- (point)) (point) 'face face-unmarked)) - (when glyph-unmarked - (let ((e)) - (setq e (make-extent (1- (point)) (point))) - (set-extent-property e 'invisible t) - (set-extent-property e 'end-open t) - (set-extent-property e 'start-open nil) - (set-extent-end-glyph e glyph-unmarked)))) - - (insert ?\n)) - (setq mine-point-max (1- (point))) - (mine-update-remaining-mines) - (mine-update-mines-hit) - (set-buffer-modified-p 'nil))) - -;;; ================================================================ -;;; Internal moves - -(defun mine-goto-point (point) - (let ((x.y (mine-point-to-x.y point))) - (setq mine-x (car x.y) mine-y (cdr x.y)) - (mine-goto mine-x mine-y) - (= point (point)))) - -(defun mine-goto (x y) - (goto-char (mine-xy-to-point x y)) - (cond ((fboundp 'hscroll-point-visible) - (hscroll-point-visible)) - ((fboundp 'auto-show-make-point-visible) - (auto-show-make-point-visible)))) - -;;; ================================================================ -;;; Conversions - -(defun mine-xy-to-point (x y) - ;; p = pmin + 2*w*(y-1) + 2*(x-1) - (+ mine-point-min - (* mine-padx* mine-width (1- y)) - (* mine-padx* (1- x)))) - -;;; Returns the topleft equivalent of point, -;;; on the periodic board, ie. converts point to model coordinates. -(defun mine-top-left (x.y) - (setcar x.y (1+ (mod (1- (car x.y)) mine-xmax))) - (setcdr x.y (1+ (mod (1- (cdr x.y)) mine-ymax))) - x.y) - -(defun mine-point-to-x.y (point) - (let (x y (p0 (- point mine-point-min))) - (cond - ((<= p0 0) - (setq x 1 y 1)) - ((>= point mine-point-max) - (setq x mine-width y mine-height)) - (t - ;; p = pmin + 2*w*(y-1) + 2*(x-1) - ;; y = (p - pmin)/2w + 1 - ;; x = (p - pmin - 2*w*(y-1)) / 2 + 1 - (setq y (1+ (/ p0 mine-width mine-padx*)) - x (1+ (/ (- p0 (* mine-padx* mine-width (1- y))) mine-padx*))))) - (cons x y))) - -;;; ================================================================ -;;; Screen display - -(defun mine-mark-board (point) - (mine-update-board point mine-char-marked 'mine-face-marked)) - -(defun mine-unmark-board (point) - (mine-update-board point mine-char-unmarked 'mine-face-unmarked)) - -(defun mine-display-nb-adjacent-mines (point nb) - (mine-update-board point - (if (zerop nb) mine-char-zero (+ ?0 nb)) - nb)) - -;; todo: enumerer tous les points periodiques -(defun mine-update-board (point c key) - (let ((buffer-read-only 'nil) - (face (mine-get-face key)) - (glyph (mine-get-glyph key)) - (x.y (mine-top-left (mine-point-to-x.y point))) - x y) - (setq x (car x.y)) - (while (<= x mine-width) - (setq y (cdr x.y)) - (while (<= y mine-height) - (mine-update-point (mine-xy-to-point x y) c face glyph) - (setq y (+ y mine-ymax))) - (setq x (+ x mine-xmax))) - (mine-reach-level 1) ; redisplay point and its periodic images - (set-buffer-modified-p 'nil))) - -(defun mine-update-point (point c face &optional glyph) - (goto-char point) - (if glyph - (progn - (insert c) - (delete-char 1)) - (delete-char 1) - (insert c)) - (when (and (not glyph) face) - (put-text-property point (point) 'face face)) - (when glyph - ;; (set-extent-end-glyph (extent-at (point)) nil) - (set-extent-end-glyph (extent-at (point) nil 'end-glyph nil 'at) glyph)) - (mine-reach-level 0)) ; redisplay point - -(defun mine-reach-level (level) - (cond - ((null mine-level)) ; no update at all - ((< mine-level 0)) ; no update at all - ((zerop mine-level) ; unconditional update - (sit-for 0)) - ((zerop level)) ; wait for level 1 - ((= level 1) - (cond - ((= mine-level level) - (sit-for 0)) - ((= mine-count1 mine-count1-max) - (setq mine-count1 0) - (mine-reach-level (1+ level))) - (t (setq mine-count1 (1+ mine-count1))))) - ((= level 2) - (setq mine-count1 0) - (cond - ((= mine-level level) - (sit-for 0)) - ((= mine-count2 mine-count2-max) - (setq mine-count2 0) - (mine-reach-level (1+ level))) - (t (setq mine-count2 (1+ mine-count2))))) - ((= level 3) - (setq mine-count1 0) - (setq mine-count2 0) - (cond - ((= mine-level level) - (sit-for 0)))))) - -(defun mine-reset-counters () - (setq mine-count1 0 - mine-count2 0)) - -;;; ================================================================ -;;; Messages - init board - -(defun mine-insert-copyright () - (insert mine-version "\n\n")) - -(defun mine-insert-remaining-mines () - (insert (format "%16s" "Remaining mines") ":") - (setq mine-point-remaining-mines (point)) - (insert " \n")) - -(defun mine-insert-mines-hit () - (insert (format "%16s" "mines hit") ":") - (setq mine-point-mines-hit (point)) - (insert " \n\n")) - -;;; ================================================================ -;;; Messages - update board - -(defun mine-update-remaining-mines () - (let ((buffer-read-only 'nil)) - (save-excursion - (goto-char mine-point-remaining-mines) - (delete-char 3) - (insert (format "%3d" mine-nb-remaining-marks))) - (set-buffer-modified-p 'nil)) - (sit-for 0) - (message "mines remaining to find...%d" mine-nb-remaining-marks) - (when (and (zerop mine-nb-remaining-mines) - (zerop mine-nb-remaining-marks)) - (mine-message 'mine-msg-win))) - -(defun mine-update-mines-hit () - (let ((buffer-read-only 'nil)) - (save-excursion - (goto-char mine-point-mines-hit) - (delete-char 3) - (insert (format "%3d" mine-nb-mines-hit))) - (set-buffer-modified-p 'nil))) - -(defun mine-update-bogus-mines (nrb nbb) - (let ((buffer-read-only 'nil) - (msg (format "There were %d remaining mines and %d bogus mines" - nrb nbb))) - (save-excursion - (goto-char (point-max)) - (insert "\n" msg)) - (set-buffer-modified-p 'nil) - (message msg))) - -;;; ================================================================ -;;; Messages - write minibuffer - -(defun mine-message (msg) - (ding) - (cond - ((eq msg 'mine-msg-click-precisely) - (message "Please, click more precisely")) - ((eq msg 'mine-msg-unmark-before-hit) - (message "You must unmark point before hitting it.")) - ((eq msg 'mine-msg-point-already-hit) - (message "Point has already been hit.")) - ((eq msg 'mine-msg-cannot-mark) - (message "Can't (un)mark point...")) - ((eq msg 'mine-msg-lose) - (message "Sorry... There's a mine here...") - (sit-for 1) - (message "Sorry... There's a mine here... You lost!")) - ((eq msg 'mine-msg-win) - (message "Congratulations...") - (sit-for 1) - (message "Congratulations... You won!")) - (t - (message (format "%s" msg))))) - -(mine-init-mode-map) - -;;; ================================================================ - -(defun mine-print-variables (l) - (let (var) - (princ "(setq ") - (while l - (setq var (car l) l (cdr l)) - (cond - ((stringp var) (princ (format ";; %s\n " var))) - ((not (symbolp var)) (error "Not a symbol: %s" var)) - ((not (boundp var)) (error "Unboundp symbol: %s" var)) - (t (princ (format "%-20s'%s" var (symbol-value var))) - (when l (princ "\n "))))) - (princ "))\n"))) - -;;; ================================================================ - -;;(autoload 'apropos-print "apropos") -;;(autoload 'apropos-do-all "apropos") - -(if (not (boundp 'apropos-accumulator)) - (load "apropos")) - -(if (boundp 'apropos-item) -;; (Daniel.Pfeiffer's) old official version of apropos -(defun apropos-symbols (l &optional do-all) - (let ((ll (list))) - (while l - (when (not (stringp (car l))) - (setq ll (cons (car l) ll))) - (setq l (cdr l))) - (setq apropos-accumulator (nreverse ll))) - (or do-all (setq do-all apropos-do-all)) - (apropos-print - t - (lambda (p) - (let (doc symbol) - (while p - (setcar p - (list ; (s f v p) - (setq symbol (car p)) - (if (commandp symbol) - (if (setq doc (documentation symbol t)) - (substring doc 0 (string-match "\n" doc)) - "(not documented)")) - (and do-all - (user-variable-p symbol) - (if (setq doc (documentation-property - symbol 'variable-documentation t)) - (substring doc 0 (string-match "\n" doc)))))) - (setq p (cdr p))))) - t))) - -(provide 'mine) - -;;; mine.el ends here diff -r d101af7320b8 -r cca96a509cfe lisp/games/xmine.el --- a/lisp/games/xmine.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/games/xmine.el Mon Aug 13 09:25:29 2007 +0200 @@ -2,12 +2,7 @@ ;; Author: Jens Lautenbacher ;; Keywords: games -;; Version: 1.2 - -(defconst xmine-version-number "1.2" "XEmacs Mine version number.") -(defconst xmine-version (format "XEmacs Mine v%s by Jens Lautenbacher © 1997" - xmine-version-number) - "Full XEmacs Mine version number.") +;; Version: 1.4 ;; This file is part of XEmacs. @@ -49,6 +44,11 @@ ;; ;;; First of all we'll define the needed varibles. +(defconst xmine-version-number "1.4" "XEmacs Mine version number.") +(defconst xmine-version (format "XEmacs Mine v%s by Jens Lautenbacher © 1997" + xmine-version-number) + "Full XEmacs Mine version number.") + (defgroup xmine nil "The well known mine searching game." :group 'games) @@ -339,6 +339,7 @@ (set-extent-property ext 'action2 'xmine-action2) (if (not no-repaint) (progn + (xmine-unhide-sound) (xmine-field-repaint ext) (if (xmine-game-solved-p) (xmine-end-game))))))) @@ -348,19 +349,22 @@ you've marked all mines around the button correctly (or you're sure there isn't one)" (let ((list (xmine-get-neighbours ext)) + (xmine-no-unhide-sound t) next) + (if list (xmine-unhide-many-sound)) (while (setq next (pop list)) (if (not (xmine-flat-button-p next)) (xmine-action1 next))))) (defun xmine-action3 (ext) "This toggles the flagged status of a button. You flag a button if you know - or think - that there's a mine under it" -(if (extent-property ext 'xmine-flagged) + (if (extent-property ext 'xmine-flagged) (progn (set-annotation-glyph ext (xmine-up-glyph ext)) (set-extent-property ext 'action1 'xmine-action1) (set-extent-property ext 'xmine-flagged nil) (setq xmine-number-of-flagged (1- xmine-number-of-flagged)) + (xmine-flag-sound) (set-annotation-glyph xmine-count-ann (make-glyph (format "Mines: %2d" @@ -375,6 +379,7 @@ (set-extent-property ext 'action1 nil) (set-extent-property ext 'xmine-flagged t) (setq xmine-number-of-flagged (1+ xmine-number-of-flagged)) + (xmine-flag-sound) (if (xmine-game-solved-p) (xmine-end-game) (set-annotation-glyph xmine-count-ann (make-glyph @@ -383,6 +388,73 @@ xmine-number-of-flagged)))))))) +;;; the sounds... +(defcustom xmine-play-sounds nil + "If XMine should play some sounds for various events to happen." + :group 'xmine + :type 'boolean) + +(defun xmine-play-sounds-p () + (and xmine-play-sounds + (or (featurep 'native-sound) + (featurep 'nas-sound)) + (or (device-sound-enabled-p) + (and (featurep 'native-sound) + (not native-sound-only-on-console) + (eq (device-type) 'x))))) + + +(defcustom xmine-flag-sound (concat data-directory "sounds/click.au") + "The sound played when flagging/un-flagging a tile" + :group 'xmine + :type 'file) + +(defcustom xmine-unhide-sound (concat data-directory "sounds/drip.au") + "The sound played when unhiding a tile" + :group 'xmine + :type 'file) + +(defcustom xmine-unhide-many-sound (concat data-directory "sounds/boing.au") + "The sound played when unhiding all neighbours of a tile" + :group 'xmine + :type 'file) + +(defcustom xmine-explode-sound (concat xmine-glyph-dir "explosion3.au") + "The sound played when you unhide a mine" + :group 'xmine + :type 'file) + +(defcustom xmine-solved-sound (concat data-directory "sounds/im_so_happy.au") + "The sound played if you managed to win the game." + :group 'xmine + :type 'file) + +(defun xmine-flag-sound () + (if (xmine-play-sounds-p) + (play-sound-file xmine-flag-sound))) + +(defvar xmine-no-unhide-sound nil) + +(defun xmine-unhide-sound () + (if (and (xmine-play-sounds-p) + (not xmine-no-unhide-sound)) + (play-sound-file xmine-unhide-sound))) + +(defun xmine-unhide-many-sound () + (if (xmine-play-sounds-p) + (play-sound-file xmine-unhide-many-sound))) + +(defun xmine-explode-sound () + (if (xmine-play-sounds-p) + (play-sound-file xmine-explode-sound) + (beep))) + +(defun xmine-solved-sound () + (if (xmine-play-sounds-p) + (play-sound-file xmine-solved-sound) + (beep))) + + ;;; what to do after a button is unhidden: We (maybe) have to repaint ;;; parts of the board. This is done here recursively. @@ -441,12 +513,13 @@ (* xmine-width xmine-height))) (defun xmine-end-game () - (beep) (set-annotation-glyph xmine-count-ann - (make-glyph " Solved. "))) + (make-glyph " Solved. ")) + (sit-for 0) + (xmine-solved-sound)) (defun xmine-end-game-trapped () - (beep) + (xmine-explode-sound) (set-annotation-glyph xmine-count-ann (make-glyph "++ RIP ++"))) @@ -470,6 +543,7 @@ (> y xmine-height) (< y 1)) nil (aref xmine-field (+ (* (1- y) xmine-width) (1- x))))) +;;;###autoload (defun xmine-mode () "A mode for playing the well known mine searching game. @@ -505,6 +579,7 @@ (interactive) (xmine-field-create)) +;;;###autoload (fset 'xmine 'xmine-mode) (defun xmine-field-create () diff -r d101af7320b8 -r cca96a509cfe lisp/gnats/send-pr.el --- a/lisp/gnats/send-pr.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnats/send-pr.el Mon Aug 13 09:25:29 2007 +0200 @@ -64,7 +64,7 @@ (defconst send-pr::version "3.101") -(defvar gnats:root "/usr/lib/gnats/gnats-db" +(defvar gnats:root "/usr/share/gnats/gnats-db" "*The top of the tree containing the GNATS database.") ;;;;--------------------------------------------------------------------------- diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/ChangeLog Mon Aug 13 09:25:29 2007 +0200 @@ -1,9 +1,81 @@ +Sun Apr 6 23:17:21 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.42 is released. + +Sun Apr 6 23:13:50 1997 Lars Magne Ingebrigtsen + + * gnus-xmas.el (gnus-xmas-summary-set-display-table): There isn't + always a default table, it seems. + +Sun Apr 6 22:45:52 1997 Aaron M. Ucko + + * gnus-xmas.el (gnus-xmas-summary-set-display-table): Typo. + +Sun Apr 6 22:26:52 1997 Lars Magne Ingebrigtsen + + * gnus-group.el: All the sorting commands were shadowed. + +Sun Apr 6 21:46:05 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.41 is released. + +Thu Apr 3 21:08:57 1997 Hrvoje Niksic + + * gnus-xmas.el (gnus-xmas-summary-set-display-table): Don't change + the values that are non-nil in the default table. + +Sun Apr 6 20:58:38 1997 Kim-Minh Kaplan + + * gnus-picon.el (gnus-picons-insert-face-if-exists): "." instead + of "". + +Sun Apr 6 20:19:49 1997 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-sort-groups): Touch dribble. + +Sun Apr 6 19:28:19 1997 Stainless Steel Rat + + * pop3.el (pop3-quit): New version. + +Fri Apr 4 21:46:34 1997 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-page-broken): New variable. + (gnus-article-prepare): Use it. + +Fri Apr 4 05:08:00 1997 Gunnar Horrigmo + + * gnus-art.el (article-treat-overstrike): Search from beginning of + article. + +Thu Apr 3 15:16:05 1997 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-article-hidden-text-p): Be more thorough. + +Thu Apr 3 12:23:44 1997 Per Abrahamsen + + * gnus-score.el: (gnus-score-default-duration): Accept nil in + :type. + +Thu Apr 3 05:49:56 1997 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-next-group): Make sure buffer is alive + before switching to it. + Wed Apr 2 12:39:15 1997 Steven L Baur * gnus-util.el (gnus-kill-all-overlays): Force Gnus to use extents even when overlays are available. (From a patch by MORIOKA Tomohiko). +Thu Apr 3 05:28:03 1997 Lars Magne Ingebrigtsen + + * gnus-topic.el (gnus-topic-goto-missing-group): Make sure topic + exists. + + * gnus-srvr.el (gnus-browse-group-name): Remove text props. + + * gnus-sum.el (gnus-summary-move-article): Enter into dribble. + Wed Apr 2 14:12:45 1997 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.4.40 is released. diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-art.el Mon Aug 13 09:25:29 2007 +0200 @@ -527,7 +527,6 @@ (defvar gnus-number-of-articles-to-be-saved nil) (defvar gnus-inhibit-hiding nil) -(defvar gnus-newsgroup-name) (defsubst gnus-article-hide-text (b e props) "Set text PROPS on the B to E region, extending `intangible' 1 past B." @@ -744,6 +743,8 @@ "Translate overstrikes into bold text." (interactive) (save-excursion + (goto-char (point-min)) + (re-search-forward "\n\n") (let ((buffer-read-only nil)) (while (search-forward "\b" nil t) (let ((next (following-char)) @@ -1147,11 +1148,15 @@ (defun gnus-article-hidden-text-p (type) "Say whether the current buffer contains hidden text of type TYPE." - (let ((pos (text-property-any (point-min) (point-max) 'article-type type))) - (when pos - (if (get-text-property pos 'invisible) - 'hidden - 'shown)))) + (let ((start (point-min)) + (pos (text-property-any (point-min) (point-max) 'article-type type))) + (while (and pos + (not (get-text-property pos 'invisible))) + (setq pos + (text-property-any (1+ pos) (point-max) 'article-type type))) + (if pos + 'hidden + 'shown))) (defun gnus-article-show-hidden-text (type &optional hide) "Show all hidden text of type TYPE. @@ -1796,6 +1801,7 @@ (use-local-map gnus-article-mode-map) (gnus-update-format-specifications nil 'article-mode) (set (make-local-variable 'page-delimiter) gnus-page-delimiter) + (set (make-local-variable 'gnus-page-broken) nil) (set (make-local-variable 'gnus-button-marker-list) nil) (gnus-set-default-directory) (buffer-disable-undo (current-buffer)) @@ -1970,8 +1976,10 @@ (run-hooks 'gnus-article-display-hook)) ;; Do page break. (goto-char (point-min)) - (when gnus-break-pages - (gnus-narrow-to-page))) + (setq gnus-page-broken + (when gnus-break-pages + (gnus-narrow-to-page) + t))) (gnus-set-mode-line 'article) (gnus-configure-windows 'article) (goto-char (point-min)) @@ -2081,7 +2089,7 @@ (and (pos-visible-in-window-p) ;Not continuation line. (eobp))) ;; Nothing in this page. - (if (or (not gnus-break-pages) + (if (or (not gnus-page-broken) (save-excursion (save-restriction (widen) (forward-line 1) (eobp)))) ;Real end-of-buffer? @@ -2103,7 +2111,7 @@ Argument LINES specifies lines to be scrolled down." (interactive "p") (move-to-window-line 0) - (if (and gnus-break-pages + (if (and gnus-page-broken (bobp) (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer? (progn diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-group.el --- a/lisp/gnus/gnus-group.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-group.el Mon Aug 13 09:25:29 2007 +0200 @@ -523,7 +523,7 @@ "r" gnus-group-sort-groups-by-rank "m" gnus-group-sort-groups-by-method) - (gnus-define-keys (gnus-group-sort-map "P" gnus-group-group-map) + (gnus-define-keys (gnus-group-sort-selected-map "P" gnus-group-group-map) "s" gnus-group-sort-selected-groups "a" gnus-group-sort-selected-groups-by-alphabet "u" gnus-group-sort-selected-groups-by-unread @@ -2178,12 +2178,13 @@ (interactive (list gnus-group-sort-function current-prefix-arg)) (funcall gnus-group-sort-alist-function (gnus-make-sort-function func) reverse) - (gnus-group-list-groups)) + (gnus-group-list-groups) + (gnus-dribble-touch)) (defun gnus-group-sort-flat (func reverse) ;; We peel off the dummy group from the alist. (when func - (when (equal (car (gnus-info-group gnus-newsrc-alist)) "dummy.group") + (when (equal (gnus-info-group (car gnus-newsrc-alist)) "dummy.group") (pop gnus-newsrc-alist)) ;; Do the sorting. (setq gnus-newsrc-alist diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-picon.el --- a/lisp/gnus/gnus-picon.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-picon.el Mon Aug 13 09:25:29 2007 +0200 @@ -218,7 +218,7 @@ (if gnus-local-domain (nreverse (message-tokenize-header gnus-local-domain ".")) - '("")) + '(".")) (nreverse (message-tokenize-header (substring from (1+ at-idx)) "."))))) (set-buffer (get-buffer-create @@ -347,7 +347,7 @@ (domainp (and gnus-picons-display-as-address dots)) picons found bar-ann cur first) (when (string-match "/MISC" database) - (setq addrs '(""))) + (setq addrs '("."))) (while (and addrs (file-accessible-directory-p path)) (setq cur (pop addrs) diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-score.el --- a/lisp/gnus/gnus-score.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-score.el Mon Aug 13 09:25:29 2007 +0200 @@ -353,7 +353,8 @@ :group 'gnus-score-default :type '(choice (const :tag "temporary" t) (const :tag "permanent" p) - (const :tag "immediate" i))) + (const :tag "immediate" i) + (const :tag "ask" nil))) (defcustom gnus-score-after-write-file-function nil "Function called with the name of the score file just written to disk." diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-srvr.el --- a/lisp/gnus/gnus-srvr.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-srvr.el Mon Aug 13 09:25:29 2007 +0200 @@ -678,7 +678,10 @@ (save-excursion (beginning-of-line) (when (re-search-forward ": \\(.*\\)$" (gnus-point-at-eol) t) - (gnus-group-prefixed-name (match-string 1) gnus-browse-current-method)))) + (gnus-group-prefixed-name + ;; Remove text props. + (format "%s" (match-string 1)) + gnus-browse-current-method)))) (defun gnus-browse-unsubscribe-group () "Toggle subscription of the current group in the browse buffer." diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-start.el --- a/lisp/gnus/gnus-start.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-start.el Mon Aug 13 09:25:29 2007 +0200 @@ -1467,6 +1467,7 @@ (while alist (gnus-sethash (caar alist) + ;; Preserve number of unread articles in groups. (cons (and ohashtb (car (gnus-gethash (caar alist) ohashtb))) prev) gnus-newsrc-hashtb) diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-sum.el Mon Aug 13 09:25:29 2007 +0200 @@ -714,6 +714,7 @@ ;;; Internal variables (defvar gnus-scores-exclude-files nil) +(defvar gnus-page-broken nil) (defvar gnus-original-article nil) (defvar gnus-article-internal-prepare-hook nil) @@ -5127,8 +5128,9 @@ (progn (gnus-message 5 "Returning to the group buffer") (setq entered t) - (set-buffer current-buffer) - (gnus-summary-exit) + (when (buffer-live-p current-buffer) + (set-buffer current-buffer) + (gnus-summary-exit)) (run-hooks 'gnus-group-no-more-groups-hook)) ;; We try to enter the target group. (gnus-group-jump-to-group target-group) @@ -6428,7 +6430,7 @@ (gnus-eval-in-buffer-window gnus-article-buffer (widen) (goto-char (point-min)) - (when gnus-break-pages + (when gnus-page-broken (gnus-narrow-to-page)))) (defun gnus-summary-end-of-article () @@ -6441,7 +6443,7 @@ (widen) (goto-char (point-max)) (recenter -3) - (when gnus-break-pages + (when gnus-page-broken (gnus-narrow-to-page)))) (defun gnus-summary-print-article (&optional filename) @@ -6481,7 +6483,6 @@ gnus-visual) (gnus-summary-select-article nil 'force))) (gnus-summary-goto-subject gnus-current-article) - ; (gnus-configure-windows 'article) (gnus-summary-position-point)) (defun gnus-summary-verbose-headers (&optional arg) @@ -6753,7 +6754,12 @@ ;; Copy the marks to other group. (gnus-add-marked-articles to-group (cdar marks) (list to-article) info)) - (setq marks (cdr marks))))) + (setq marks (cdr marks))) + + (gnus-dribble-enter + (concat "(gnus-group-set-info '" + (gnus-prin1-to-string (gnus-get-info to-group)) + ")")))) ;; Update the Xref header in this article to point to ;; the new crossposted article we have just created. diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-topic.el --- a/lisp/gnus/gnus-topic.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-topic.el Mon Aug 13 09:25:29 2007 +0200 @@ -572,6 +572,7 @@ (forward-line 1) (setq unfound nil))) (when (and unfound + topic (not (gnus-topic-goto-missing-topic topic))) (gnus-topic-insert-topic-line topic t t (car (gnus-topic-find-topology topic)) nil 0))))) diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus-xmas.el --- a/lisp/gnus/gnus-xmas.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus-xmas.el Mon Aug 13 09:25:29 2007 +0200 @@ -182,9 +182,10 @@ (select-window selected)))))) (defun gnus-xmas-summary-set-display-table () - ;; Setup the display table -- like gnus-summary-setup-display-table, + ;; Setup the display table -- like `gnus-summary-setup-display-table', ;; but done in an XEmacsish way. (let ((table (make-display-table)) + (default-table (specifier-instance current-display-table)) (i 32)) ;; Nix out all the control chars... (while (>= (setq i (1- i)) 0) @@ -196,9 +197,11 @@ ;; We nix out any glyphs over 126 that are not set already. (let ((i 256)) (while (>= (setq i (1- i)) 127) - ;; Only modify if the entry is nil. - (unless (aref table i) + ;; Only modify if the default entry is nil. + (when (or (not default-table) + (not (aref default-table i))) (aset table i [??])))) + ;; Can't use `set-specifier' because of a bug in 19.14 and earlier (add-spec-to-specifier current-display-table table (current-buffer) nil))) (defun gnus-xmas-add-hook (hook function &optional append local) diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/gnus.el --- a/lisp/gnus/gnus.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/gnus.el Mon Aug 13 09:25:29 2007 +0200 @@ -226,7 +226,7 @@ :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.4.40" +(defconst gnus-version-number "5.4.42" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/message.el --- a/lisp/gnus/message.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/message.el Mon Aug 13 09:25:29 2007 +0200 @@ -1194,10 +1194,10 @@ (kill-all-local-variables) (make-local-variable 'message-reply-buffer) (setq message-reply-buffer nil) - (set (make-local-variable 'message-send-actions) nil) - (set (make-local-variable 'message-exit-actions) nil) - (set (make-local-variable 'message-kill-actions) nil) - (set (make-local-variable 'message-postpone-actions) nil) + (make-local-variable 'message-send-actions) + (make-local-variable 'message-exit-actions) + (make-local-variable 'message-kill-actions) + (make-local-variable 'message-postpone-actions) (set-syntax-table message-mode-syntax-table) (use-local-map message-mode-map) (setq local-abbrev-table message-mode-abbrev-table) diff -r d101af7320b8 -r cca96a509cfe lisp/gnus/pop3.el --- a/lisp/gnus/pop3.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/gnus/pop3.el Mon Aug 13 09:25:29 2007 +0200 @@ -4,7 +4,7 @@ ;; Author: Richard L. Pieri ;; Keywords: mail, pop3 -;; Version: 1.3c +;; Version: 1.3e ;; This file is part of GNU Emacs. @@ -229,7 +229,7 @@ (nth 1 date) (nth 0 date) (nth 3 date) (nth 2 date))) )) - (setq From_ (format "From %s %s\n" from date)) + (setq From_ (format "\nFrom %s %s\n" from date)) (while (string-match "," From_) (setq From_ (concat (substring From_ 0 (match-beginning 0)) (substring From_ (match-end 0))))) @@ -308,11 +308,13 @@ ;; bill@att.com (goto-char start)) (setq pop3-read-point (point-marker)) - (goto-char (match-beginning 0)) - (backward-char 2) - (if (not (looking-at "\r\n")) - (insert "\r\n")) - (re-search-forward "\\.\r\n") +;; this code does not seem to work for some POP servers... +;; and I cannot figure out why not. +; (goto-char (match-beginning 0)) +; (backward-char 2) +; (if (not (looking-at "\r\n")) +; (insert "\r\n")) +; (re-search-forward "\\.\r\n") (goto-char (match-beginning 0)) (setq end (point-marker)) (pop3-clean-region start end) diff -r d101af7320b8 -r cca96a509cfe lisp/modes/cc-mode.el --- a/lisp/modes/cc-mode.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/cc-mode.el Mon Aug 13 09:25:29 2007 +0200 @@ -6,7 +6,7 @@ ;; 1987 Dave Detlefs and Stewart Clamen ;; 1985 Richard M. Stallman ;; Created: a long, long, time ago. adapted from the original c-mode.el -;; Version: 4.390 +;; Version: 4.390-x ;; Last Modified: 1997/04/02 15:46:35 ;; Keywords: c languages oop @@ -83,25 +83,66 @@ ;; ;; ftp://ftp.python.org/pub/emacs +;; Customization added by Hrvoje Niksic + ;;; Code: ;; user definable variables ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv -(defvar c-inhibit-startup-warnings-p nil - "*If non-nil, inhibits start up compatibility warnings.") -(defvar c-strict-syntax-p nil +(defgroup cc-mode nil + "Major mode for editing C, C++, Objective-C, and Java code" + :group 'c + :prefix "c-") + +(defgroup cc-style nil + "Styles for cc mode" + :prefix "c-" + :group 'cc-mode) + +(defgroup cc-indent nil + "Indentation of cc-mode" + :prefix "c-" + :group 'cc-mode) + +(defgroup cc-syntax nil + "Syntactical analysis performed by cc-mode" + :prefix "c-" + :group 'cc-mode) + +(defgroup cc-comment nil + "Handling of comments by cc-mode" + :prefix "c-" + :group 'cc-mode) + +(defgroup cc-auto nil + "Auto-insertion features of cc-mode" + :prefix "c-" + :group 'cc-mode) + + +(defcustom c-inhibit-startup-warnings-p nil + "*If non-nil, inhibits start up compatibility warnings." + :type 'boolean + :group 'cc-mode) +(defcustom c-strict-syntax-p nil "*If non-nil, all syntactic symbols must be found in `c-offsets-alist'. If the syntactic symbol for a particular line does not match a symbol in the offsets alist, an error is generated, otherwise no error is -reported and the syntactic symbol is ignored.") -(defvar c-echo-syntactic-information-p nil - "*If non-nil, syntactic info is echoed when the line is indented.") -(defvar c-basic-offset 4 - "*Amount of basic offset used by + and - symbols in `c-offsets-alist'.") - -(defconst c-offsets-alist +reported and the syntactic symbol is ignored." + :type 'boolean + :group 'cc-syntax) +(defcustom c-echo-syntactic-information-p nil + "*If non-nil, syntactic info is echoed when the line is indented." + :type 'boolean + :group 'cc-syntax) +(defcustom c-basic-offset 4 + "*Amount of basic offset used by + and - symbols in `c-offsets-alist'." + :type 'integer + :group 'cc-indent) + +(defcustom c-offsets-alist '((string . -1000) (c . c-lineup-C-comments) (defun-open . 0) @@ -253,9 +294,12 @@ extern-lang-open -- brace that opens an external language block extern-lang-close -- brace that closes an external language block inextern-lang -- analogous to `inclass' syntactic symbol -") - -(defvar c-tab-always-indent t +" + :type '(repeat (cons symbol sexp)) + :group 'cc-syntax + :group 'cc-indent) + +(defcustom c-tab-always-indent t "*Controls the operation of the TAB key. If t, hitting TAB always just indents the current line. If nil, hitting TAB indents the current line if point is at the left margin or @@ -270,14 +314,20 @@ `c-insert-tab-function' is called. Note: indentation of lines containing only comments is also controlled -by the `c-comment-only-line-offset' variable.") - -(defvar c-insert-tab-function 'insert-tab +by the `c-comment-only-line-offset' variable." + :type '(choice (const :tag "on" t) + (const :tag "off" nil) + (const :tag "insert within literals" other)) + :group 'cc-indent) + +(defcustom c-insert-tab-function 'insert-tab "*Function used when inserting a tab for \\[TAB]. Only used when `c-tab-always-indent' indicates a `real' tab character -should be inserted. Value must be a function taking no arguments.") - -(defvar c-comment-only-line-offset 0 +should be inserted. Value must be a function taking no arguments." + :type 'function + :group 'cc-indent) + +(defcustom c-comment-only-line-offset 0 "*Extra offset for line which contains only the start of a comment. Can contain an integer or a cons cell of the form: @@ -286,15 +336,21 @@ Where NON-ANCHORED-OFFSET is the amount of offset given to non-column-zero anchored comment-only lines, and ANCHORED-OFFSET is the amount of offset to give column-zero anchored comment-only lines. -Just an integer as value is equivalent to ( . -1000).") - -(defvar c-indent-comments-syntactically-p nil +Just an integer as value is equivalent to ( . -1000)." + :type '(choice integer + (cons integer integer)) + :group 'cc-comment) + +(defcustom c-indent-comments-syntactically-p nil "*Specifies how comment-only lines should be indented. When this variable is non-nil, comment-only lines are indented according to syntactic analysis via `c-offsets-alist', even when -\\[indent-for-comment] is used.") - -(defvar c-cleanup-list '(scope-operator) +\\[indent-for-comment] is used." + :type 'boolean + :group 'cc-indent + :group 'cc-comment) + +(defcustom c-cleanup-list '(scope-operator) "*List of various C/C++/ObjC constructs to \"clean up\". These clean ups only take place when the auto-newline feature is turned on, as evidenced by the `/a' or `/ah' appearing next to the @@ -324,13 +380,17 @@ generate ambiguous situations. This clean up only takes place when there is nothing but whitespace between colons. Clean up occurs - when the second colon is typed.") - -(defvar c-hanging-braces-alist '((brace-list-open) - (substatement-open after) - (block-close . c-snug-do-while) - (extern-lang-open after) - ) + when the second colon is typed." + :type '(repeat (choice (const brace-else-brace) (const brace-elseif-brace) + (const empty-defun-braces) (const defun-close-semi) + (const list-close-comma) (const scope-operator))) + :group 'cc-auto) + +(defcustom c-hanging-braces-alist '((brace-list-open) + (substatement-open after) + (block-close . c-snug-do-while) + (extern-lang-open after) + ) "*Controls the insertion of newlines before and after braces. This variable contains an association list with elements of the following form: (SYNTACTIC-SYMBOL . ACTION). @@ -357,18 +417,28 @@ at which the brace was inserted. The function must return a list as described in the preceding paragraph. Note that during the call to the function, the variable `c-syntactic-context' is set to the entire -syntactic context for the brace line.") - -(defvar c-hanging-colons-alist nil +syntactic context for the brace line." + :type '(repeat (cons symbol (choice (const nil) + (repeat (choice (const before) + (const after))) + function + ))) + :group 'cc-auto) + +(defcustom c-hanging-colons-alist nil "*Controls the insertion of newlines before and after certain colons. This variable contains an association list with elements of the following form: (SYNTACTIC-SYMBOL . ACTION). See the variable `c-hanging-braces-alist' for the semantics of this variable. Note however that making ACTION a function symbol is -currently not supported for this variable.") - -(defvar c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist) +currently not supported for this variable." + :type '(repeat (cons symbol (choice (repeat (choice (const before) + (const after))) + ))) + :group 'cc-auto) + +(defcustom c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist) "*List of functions that decide whether to insert a newline or not. The functions in this list are called, in order, whenever the auto-newline minor mode is activated (as evidenced by a `/a' or `/ah' @@ -381,45 +451,63 @@ (anything else) -- insert a newline, and stop checking If every function in the list is called with no determination made, -then no newline is inserted.") - -(defvar c-hanging-comment-ender-p t +then no newline is inserted." + :type '(repeat function) + :group 'cc-auto) + +(defcustom c-hanging-comment-ender-p t "*Controls what \\[fill-paragraph] does to C block comment enders. When set to nil, C block comment enders are left on their own line. When set to t, block comment enders will be placed at the end of the -previous line (i.e. they `hang' on that line).") - -(defvar c-hanging-comment-starter-p t +previous line (i.e. they `hang' on that line)." + :type 'boolean + :group 'cc-comment) + +(defcustom c-hanging-comment-starter-p t "*Controls what \\[fill-paragraph] does to C block comment starters. When set to nil, C block comment starters are left on their own line. When set to t, text that follows a block comment starter will be placed on the same line as the block comment starter (i.e. the text -`hangs' on that line).") - -(defvar c-backslash-column 48 - "*Column to insert backslashes when macroizing a region.") -(defvar c-special-indent-hook nil +`hangs' on that line)." + :type 'boolean + :group 'cc-comment) + +(defcustom c-backslash-column 48 + "*Column to insert backslashes when macroizing a region." + :type 'integer + :group 'cc-mode) +(defcustom c-special-indent-hook nil "*Hook for user defined special indentation adjustments. -This hook gets called after a line is indented by the mode.") -(defvar c-delete-function 'backward-delete-char-untabify - "*Function called by `c-electric-delete' when deleting characters.") -(defvar c-electric-pound-behavior nil +This hook gets called after a line is indented by the mode." + :type 'hook + :group 'cc-indent) +(defcustom c-delete-function 'backward-delete-char-untabify + "*Function called by `c-electric-delete' when deleting characters." + :type 'function + :group 'cc-mode) +(defcustom c-electric-pound-behavior nil "*List of behaviors for electric pound insertion. -Only currently supported behavior is `alignleft'.") - -(defvar c-label-minimum-indentation 1 +Only currently supported behavior is `alignleft'." + :type '(repeat (choice (const alignleft))) + :group 'cc-auto) + +(defcustom c-label-minimum-indentation 1 "*Minimum indentation for lines inside of top-level constructs. This variable typically only affects code using the `gnu' style, which mandates a minimum of one space in front of every line inside top-level constructs. Specifically, the function `c-gnu-impose-minimum' on your `c-special-indent-hook' is what -enforces this.") - -(defvar c-progress-interval 5 +enforces this." + :type 'integer + :group 'cc-indent) + +(defcustom c-progress-interval 5 "*Interval used to update progress status during long re-indentation. If a number, percentage complete gets updated after each interval of that many seconds. Set to nil to inhibit updating. This is only -useful for Emacs 19.") +useful for Emacs 19." + :type 'integer + :group 'cc-indent) (defconst c-style-alist '(("gnu" @@ -554,16 +642,18 @@ Note that all styles inherit from the `cc-mode' style, which is computed at the time the mode is loaded.") -(defvar c-file-style nil +(defcustom c-file-style nil "*Variable interface for setting style via File Local Variables. In a file's Local Variable section, you can set this variable to a string suitable for `c-set-style'. When the file is visited, CC Mode will set the style of the file to this value automatically. Note that file style settings are applied before file offset settings -as designated in the variable `c-file-offsets'.") - -(defvar c-file-offsets nil +as designated in the variable `c-file-offsets'." + :type '(repeat (cons regexp (string :tag "Style"))) + :group 'cc-style) + +(defcustom c-file-offsets nil "*Variable interface for setting offsets via File Local Variables. In a file's Local Variable section, you can set this variable to an association list similar to the values allowed in `c-offsets-alist'. @@ -571,17 +661,21 @@ automatically. Note that file offset settings are applied after file style settings -as designated in the variable `c-file-style'.") - -(defvar c-site-default-style "gnu" +as designated in the variable `c-file-style'." + :type '(repeat (cons regexp (string :tag "Style"))) + :group 'cc-indent) + +(defcustom c-site-default-style "gnu" "Default style for your site. To change the default style at your site, you can set this variable to any style defined in `c-style-alist'. However, if CC Mode is usually loaded into your Emacs at compile time, you will need to set this variable in the `site-init.el' file before CC Mode is loaded, then -re-dump Emacs.") - -(defvar c-style-variables-are-local-p t +re-dump Emacs." + :type 'string + :group 'cc-style) + +(defcustom c-style-variables-are-local-p t "*Whether style variables should be buffer local by default. If non-nil, then all indentation style related variables will be made buffer local by default. If nil, they will remain global. Variables @@ -602,20 +696,32 @@ c-backslash-column c-label-minimum-indentation c-special-indent-hook - c-indentation-style") + c-indentation-style" + :type 'boolean + :group 'cc-style) -(defvar c-mode-hook nil - "*Hook called by `c-mode'.") -(defvar c++-mode-hook nil - "*Hook called by `c++-mode'.") -(defvar objc-mode-hook nil - "*Hook called by `objc-mode'.") -(defvar java-mode-hook nil - "*Hook called by `java-mode'.") - -(defvar c-mode-common-hook nil - "*Hook called by all CC Mode modes for common initializations.") +(defcustom c-mode-hook nil + "*Hook called by `c-mode'." + :type 'hook + :group 'cc-mode) +(defcustom c++-mode-hook nil + "*Hook called by `c++-mode'." + :type 'hook + :group 'cc-mode) +(defcustom objc-mode-hook nil + "*Hook called by `objc-mode'." + :type 'hook + :group 'cc-mode) +(defcustom java-mode-hook nil + "*Hook called by `java-mode'." + :type 'hook + :group 'cc-mode) + +(defcustom c-mode-common-hook nil + "*Hook called by all CC Mode modes for common initializations." + :type 'hook + :group 'cc-mode) (defvar c-mode-menu '(["Comment Out Region" comment-region (mark)] diff -r d101af7320b8 -r cca96a509cfe lisp/modes/cl-indent.el --- a/lisp/modes/cl-indent.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/cl-indent.el Mon Aug 13 09:25:29 2007 +0200 @@ -50,16 +50,25 @@ ;;; Code: -(defvar lisp-indent-maximum-backtracking 3 +(defgroup lisp-indent nil + "Indentation in Lisp" + :group 'lisp) + + +(defcustom lisp-indent-maximum-backtracking 3 "*Maximum depth to backtrack out from a sublist for structured indentation. If this variable is 0, no backtracking will occur and forms such as flet -may not be correctly indented.") +may not be correctly indented." + :type 'integer + :group 'lisp-indent) -(defvar lisp-tag-indentation 1 +(defcustom lisp-tag-indentation 1 "*Indentation of tags relative to containing list. -This variable is used by the function `lisp-indent-tagbody'.") +This variable is used by the function `lisp-indent-tagbody'." + :type 'integer + :group 'lisp-indent) -(defvar lisp-tag-body-indentation 3 +(defcustom lisp-tag-body-indentation 3 "*Indentation of non-tagged lines relative to containing list. This variable is used by the function `lisp-indent-tagbody' to indent normal lines (lines without tags). @@ -67,7 +76,9 @@ the special form. If the value is t, the body of tags will be indented as a block at the same indentation as the first s-expression following the tag. In this case, any forms before the first tag are indented -by `lisp-body-indent'.") +by `lisp-body-indent'." + :type 'integer + :group 'lisp-indent) ;;;###autoload diff -r d101af7320b8 -r cca96a509cfe lisp/modes/executable.el --- a/lisp/modes/executable.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/executable.el Mon Aug 13 09:25:29 2007 +0200 @@ -54,7 +54,13 @@ ;;; Code: -(defvar executable-insert 'not-modified + +(defgroup executable nil + "Base functionality for executable interpreter scripts" + :group 'processes) + + +(defcustom executable-insert 'other "*What to do when newly found file has no or wrong magic number: nil do nothing t insert or update magic number @@ -62,35 +68,51 @@ When the insertion is marked as unmodified, you can save it with \\[write-file] RET. This variable is used when `executable-set-magic' is called as a function, e.g. when Emacs sets some Un*x interpreter script mode. -With \\[executable-set-magic], this is always treated as if it were `t'.") +With \\[executable-set-magic], this is always treated as if it were `t'." + :type '(choice (const :tag "off" nil) + (const :tag "on" t) + symbol) + :group 'executable) -(defvar executable-query 'function +(defcustom executable-query 'function "*If non-`nil', ask user before inserting or changing magic number. -When this is `function', only ask when called non-interactively.") +When this is `function', only ask when called non-interactively." + :type '(choice (const :tag "Don't Ask" nil) + (const :tag "Ask" t) + (const :tag "Ask when non-interactive" function)) + :group 'executable) -(defvar executable-magicless-file-regexp "/[Mm]akefile$\\|/\\.\\(z?profile\\|bash_profile\\|z?login\\|bash_login\\|z?logout\\|bash_logout\\|.+shrc\\|esrc\\|rcrc\\|[kz]shenv\\)$" - "*On files with this kind of name no magic is inserted or changed.") +(defcustom executable-magicless-file-regexp "/[Mm]akefile$\\|/\\.\\(z?profile\\|bash_profile\\|z?login\\|bash_login\\|z?logout\\|bash_logout\\|.+shrc\\|esrc\\|rcrc\\|[kz]shenv\\)$" + "*On files with this kind of name no magic is inserted or changed." + :type 'regexp + :group 'executable) -(defvar executable-prefix "#! " - "*Interpreter magic number prefix inserted when there was no magic number.") +(defcustom executable-prefix "#! " + "*Interpreter magic number prefix inserted when there was no magic number." + :type 'string + :group 'executable) -(defvar executable-chmod 73 +(defcustom executable-chmod 73 "*After saving, if the file is not executable, set this mode. This mode passed to `set-file-modes' is taken absolutely when negative, or relative to the files existing modes. Do nothing if this is nil. -Typical values are 73 (+x) or -493 (rwxr-xr-x).") +Typical values are 73 (+x) or -493 (rwxr-xr-x)." + :type 'integer + :group 'executable) (defvar executable-command nil) -(defvar executable-self-display "tail" +(defcustom executable-self-display "tail" "*Command you use with argument `+2' to make text files self-display. -Note that the like of `more' doesn't work too well under Emacs \\[shell].") +Note that the like of `more' doesn't work too well under Emacs \\[shell]." + :type 'string + :group 'executable) (defvar executable-font-lock-keywords diff -r d101af7320b8 -r cca96a509cfe lisp/modes/lisp-mode.el --- a/lisp/modes/lisp-mode.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/lisp-mode.el Mon Aug 13 09:25:29 2007 +0200 @@ -407,9 +407,14 @@ (end-of-defun) (beginning-of-defun) (read (current-buffer))))) - (if (and (eq (car form) 'defvar) - (cdr-safe (cdr-safe form))) - (setq form (cons 'defconst (cdr form)))) + (cond ((and (eq (car form) 'defvar) + (cdr-safe (cdr-safe form))) + ;; Force variable to be bound. + (setq form (cons 'defconst (cdr form)))) + ((and (eq (car form) 'defcustom) + (default-boundp (nth 1 form))) + ;; Force variable to be bound. + (set-default (nth 1 form) (eval (nth 2 form))))) (prin1 (eval form)))) (defun lisp-comment-indent () diff -r d101af7320b8 -r cca96a509cfe lisp/modes/mail-abbrevs.el --- a/lisp/modes/mail-abbrevs.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/mail-abbrevs.el Mon Aug 13 09:25:29 2007 +0200 @@ -143,9 +143,16 @@ (require 'sendmail) +(defgroup mail-abbrevs nil + "Mail abbreviation (addressbook)" + :group 'mail) + ;;;###autoload -(defvar mail-abbrev-mailrc-file nil - "Name of file with mail aliases. If nil, ~/.mailrc is used.") +(defcustom mail-abbrev-mailrc-file nil + "Name of file with mail aliases. If nil, ~/.mailrc is used." + :type '(choice (const :tag "Default" nil) + file) + :group 'mail-abbrevs) (defmacro mail-abbrev-mailrc-file () '(or mail-abbrev-mailrc-file @@ -242,10 +249,12 @@ (set-buffer obuf))) (message "Parsing %s... done" file)) -(defvar mail-alias-separator-string ", " +(defcustom mail-alias-separator-string ", " "*A string inserted between addresses in multi-address mail aliases. This has to contain a comma, so \", \" is a reasonable value. You might -also want something like \",\\n \" to get each address on its own line.") +also want something like \",\\n \" to get each address on its own line." + :type 'string + :group 'mail-abbrevs) ;; define-mail-alias sets this flag, which causes mail-resolve-all-aliases ;; to be called before expanding abbrevs if it's necessary. @@ -376,14 +385,16 @@ ;;; Syntax tables and abbrev-expansion -(defvar mail-abbrev-mode-regexp +(defcustom mail-abbrev-mode-regexp "^\\(Resent-\\)?\\(To\\|From\\|CC\\|BCC\\|Reply-to\\):" "*Regexp to select mail-headers in which mail aliases should be expanded. This string it will be handed to `looking-at' with the point at the beginning of the current line; if it matches, abbrev mode will be turned on, otherwise it will be turned off. (You don't need to worry about continuation lines.) This should be set to match those mail fields in which you want abbreviations -turned on.") +turned on." + :type 'regexp + :group 'mail-abbrevs) (defvar mail-mode-syntax-table (copy-syntax-table text-mode-syntax-table) "The syntax table which is used in send-mail mode message bodies.") diff -r d101af7320b8 -r cca96a509cfe lisp/modes/make-mode.el --- a/lisp/modes/make-mode.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/make-mode.el Mon Aug 13 09:25:29 2007 +0200 @@ -93,6 +93,12 @@ (provide 'makefile) +(defgroup makefile-mode nil + "Makefile mode customizations" + :group 'tools + :prefix "makefile-") + + ;; Sadly we need this for a macro. (eval-when-compile (require 'imenu)) @@ -101,73 +107,106 @@ ;;; Configurable stuff ;;; ------------------------------------------------------------ -(defvar makefile-browser-buffer-name "*Macros and Targets*" - "Name of the macro- and target browser buffer.") +(defcustom makefile-browser-buffer-name "*Macros and Targets*" + "Name of the macro- and target browser buffer." + :type 'string + :group 'makefile-mode) -(defvar makefile-target-colon ":" +(defcustom makefile-target-colon ":" "String to append to all target names inserted by `makefile-insert-target'. -\":\" or \"::\" are common values.") +\":\" or \"::\" are common values." + :type 'string + :group 'makefile-mode) -(defvar makefile-macro-assign " = " +(defcustom makefile-macro-assign " = " "String to append to all macro names inserted by `makefile-insert-macro'. The normal value should be \" = \", since this is what standard make expects. However, newer makes such as dmake allow a larger variety of different macro assignments, so you -might prefer to use \" += \" or \" := \" .") +might prefer to use \" += \" or \" := \" ." + :type 'string + :group 'makefile-mode) -(defvar makefile-electric-keys nil +(defcustom makefile-electric-keys nil "If non-nil, install electric keybindings. -Default is nil.") +Default is nil." + :type 'boolean + :group 'makefile-mode) -(defvar makefile-use-curly-braces-for-macros-p nil +(defcustom makefile-use-curly-braces-for-macros-p nil "Controls the style of generated macro references. t (actually non-nil) means macro references should use curly braces, like `${this}'. -nil means use parentheses, like `$(this)'.") +nil means use parentheses, like `$(this)'." + :type 'boolean + :group 'makefile-mode) -(defvar makefile-tab-after-target-colon t +(defcustom makefile-tab-after-target-colon t "If non-nil, insert a TAB after a target colon. Otherwise, a space is inserted. -The default is t.") +The default is t." + :type 'boolean + :group 'makefile-mode) -(defvar makefile-browser-leftmost-column 10 - "Number of blanks to the left of the browser selection mark.") +(defcustom makefile-browser-leftmost-column 10 + "Number of blanks to the left of the browser selection mark." + :type 'integer + :group 'makefile-mode) -(defvar makefile-browser-cursor-column 10 +(defcustom makefile-browser-cursor-column 10 "Column in which the cursor is positioned when it moves -up or down in the browser.") +up or down in the browser." + :type 'integer + :group 'makefile-mode) -(defvar makefile-backslash-column 48 - "*Column in which `makefile-backslash-region' inserts backslashes.") +(defcustom makefile-backslash-column 48 + "*Column in which `makefile-backslash-region' inserts backslashes." + :type 'integer + :group 'makefile-mode) -(defvar makefile-browser-selected-mark "+ " - "String used to mark selected entries in the browser.") +(defcustom makefile-browser-selected-mark "+ " + "String used to mark selected entries in the browser." + :type 'string + :group 'makefile-mode) -(defvar makefile-browser-unselected-mark " " - "String used to mark unselected entries in the browser.") +(defcustom makefile-browser-unselected-mark " " + "String used to mark unselected entries in the browser." + :type 'string + :group 'makefile-mode) -(defvar makefile-browser-auto-advance-after-selection-p t - "If non-nil, cursor will move after item is selected in browser.") +(defcustom makefile-browser-auto-advance-after-selection-p t + "If non-nil, cursor will move after item is selected in browser." + :type 'boolean + :group 'makefile-mode) -(defvar makefile-pickup-everything-picks-up-filenames-p nil +(defcustom makefile-pickup-everything-picks-up-filenames-p nil "If non-nil, `makefile-pickup-everything' picks up filenames as targets. \(i.e. it calls `makefile-find-filenames-as-targets'). -Otherwise filenames are omitted.") +Otherwise filenames are omitted." + :type 'boolean + :group 'makefile-mode) -(defvar makefile-cleanup-continuations-p t +(defcustom makefile-cleanup-continuations-p t "If non-nil, automatically clean up continuation lines when saving. A line is cleaned up by removing all whitespace following a trailing backslash. This is done silently. IMPORTANT: Please note that enabling this option causes makefile-mode -to MODIFY A FILE WITHOUT YOUR CONFIRMATION when \'it seems necessary\'.") +to MODIFY A FILE WITHOUT YOUR CONFIRMATION when \'it seems necessary\'." + :type 'boolean + :group 'makefile-mode) ;;; those suspicious line warnings are really annoying and ;;; seem to be generated for every makefile I've ever seen. ;;; add a simple mechanism to disable them. -gk -(defvar makefile-warn-suspicious-lines-p t - "In non-nil, warn about suspicious lines when saving the makefile") +(defcustom makefile-warn-suspicious-lines-p t + "In non-nil, warn about suspicious lines when saving the makefile" + :type 'boolean + :group 'makefile-mode) -(defvar makefile-browser-hook '()) +(defcustom makefile-browser-hook '() + "The hook to run when entering makefile browser." + :type 'hook + :group 'makefile-mode) ;; ;; Special targets for DMake, Sun's make ... @@ -213,8 +252,23 @@ ;#### ;(add-to-list 'facemenu-unlisted-faces 'makefile-space-face) ; Bogus FSFmacs crap. -(defvar makefile-space-face 'makefile-space-face - "Face to use for highlighting leading spaces in Font-Lock mode.") +(defface makefile-space-face + '((((class color)) + (:background "hotpink")) ; uhm + (((class grayscale) + (background light)) + (:background "black")) + (((class grayscale) + (background black)) + (:background "white")) + (((class mono) + (background light)) + (:background "white")) + (((class mono) + (background dark)) + (:background "black"))) + "Face to use for highlighting leading spaces in Font-Lock mode." + :group 'makefile-mode) ;Older version of same. ;(defconst makefile-font-lock-keywords (purecopy @@ -248,15 +302,15 @@ ;; Highlight lines that contain just whitespace. ;; They can cause trouble, especially if they start with a tab. - '("^[ \t]+$" . makefile-space-face) + '("^[ \t]+$" . 'makefile-space-face) ;; Highlight shell comments that Make treats as commands, ;; since these can fool people. - '("^\t+#" 0 makefile-space-face t) + '("^\t+#" 0 'makefile-space-face t) ;; Highlight spaces that precede tabs. ;; They can make a tab fail to be effective. - '("^\\( +\\)\t" 1 makefile-space-face))) + '("^\\( +\\)\t" 1 'makefile-space-face))) "Additional expressions to highlight in makefiles") (put 'makefile-mode 'font-lock-defaults '(makefile-font-lock-keywords)) @@ -281,10 +335,12 @@ ;;; of `makefile-query-by-make-minus-q' . ;;; ------------------------------------------------------------ -(defvar makefile-brave-make "make" - "A make that can handle the `-q' option.") +(defcustom makefile-brave-make "make" + "A make that can handle the `-q' option." + :type 'string + :group 'makefile-mode) -(defvar makefile-query-one-target-method 'makefile-query-by-make-minus-q +(defcustom makefile-query-one-target-method 'makefile-query-by-make-minus-q "Function to call to determine whether a make target is up to date. The function must satisfy this calling convention: @@ -297,10 +353,14 @@ * It must return the integer value 0 (zero) if the given target should be considered up-to-date in the context of the given - makefile, any nonzero integer value otherwise.") + makefile, any nonzero integer value otherwise." + :type 'function + :group 'makefile-mode) -(defvar makefile-up-to-date-buffer-name "*Makefile Up-to-date overview*" - "Name of the Up-to-date overview buffer.") +(defcustom makefile-up-to-date-buffer-name "*Makefile Up-to-date overview*" + "Name of the Up-to-date overview buffer." + :type 'string + :group 'makefile-mode) ;;; --- end of up-to-date-overview configuration ------------------ @@ -522,8 +582,6 @@ (make-local-variable 'makefile-need-macro-pickup) ;; Font lock. - (if (fboundp 'make-face) - (makefile-define-space-face)) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(makefile-font-lock-keywords)) @@ -1428,24 +1486,4 @@ (imenu-progress-message stupid 100) (nreverse alist))) -(defun makefile-define-space-face () - (make-face 'makefile-space-face) - ;; XEmacs change - (let* ((light-bg t)) ; #### - (set-face-background 'makefile-space-face - (if light-bg "black" "white") - nil - '(mono x) - 'append) - (set-face-background 'makefile-space-face - (if light-bg "black" "white") - nil - '(grayscale x) - 'append) - (set-face-background 'makefile-space-face - "hotpink" - nil - '(color x) - 'append))) - ;;; make-mode.el ends here diff -r d101af7320b8 -r cca96a509cfe lisp/modes/outl-mouse.el --- a/lisp/modes/outl-mouse.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/outl-mouse.el Mon Aug 13 09:25:29 2007 +0200 @@ -110,10 +110,12 @@ ;; ;; No user definable variables beyond this point. ;; -(defconst outline-up-arrow - (make-pixmap ; an up-arrow - (if (featurep 'xpm) - (concat "/* XPM */ + +;; I'll bet there's a neat way to do this with specifiers -- a pity the +;; sucks so badly on it. -sb +(defconst outline-up-arrow ; XEmacs + (make-glyph ; an up-arrow + (cond ((featurep 'xpm) (vector 'xpm :data (concat "/* XPM */ static char * arrow[] = { \"10 10 5 1\", \" c none\", @@ -130,15 +132,19 @@ \" ..ooooXX \", \" ..ooooXX \", \"..OOOOOOXX\", -\"OOOOOOOOOO\"};") - (list 10 10 (concat "\000\000\000\000\060\000\060\000\150\000" - "\150\000\324\000\324\000\376\001\376\001")))) +\"OOOOOOOOOO\"};"))) + ((featurep 'x) + (vector 'xbm + :data + (list 10 10 + (concat "\000\000\000\000\060\000\060\000\150\000" + "\150\000\324\000\324\000\376\001\376\001")))) + (t "^"))) "Bitmap object for outline up glyph.") -(defconst outline-up-arrow-mask - (make-pixmap ; an up-arrow - (if (featurep 'xpm) - (concat "/* XPM */ +(defconst outline-up-arrow-mask ; XEmacs + (make-glyph ; an up-arrow + (cond ((featurep 'xpm) (vector 'xpm :data (concat "/* XPM */ static char * arrow[] = { \"10 10 5 1\", \" c none\", @@ -155,15 +161,19 @@ \" ..ooooXX \", \" ..ooooXX \", \"..OOOOOOXX\", -\"OOOOOOOOOO\"};") - (list 10 10 (concat "\000\000\000\000\060\000\060\000\130\000" - "\130\000\254\000\274\000\006\001\376\001")))) +\"OOOOOOOOOO\"};"))) + ((featurep 'x) + (vector 'xbm + :data + (list 10 10 + (concat "\000\000\000\000\060\000\060\000\130\000" + "\130\000\254\000\274\000\006\001\376\001")))) + (t "+"))) "Bitmap object for outline depressed up glyph.") -(defconst outline-down-arrow - (make-pixmap ; a down-arrow - (if (featurep 'xpm) - (concat "/* XPM */ +(defconst outline-down-arrow ; XEmacs + (make-glyph ; a down-arrow + (cond ((featurep 'xpm) (vector 'xpm :data (concat "/* XPM */ static char * down[] = { \"10 10 5 1\", \" c " outline-glyph-lit-colour "\", @@ -180,15 +190,19 @@ \"ooo..XXooo\", \"ooo..XXooo\", \"oooo.Xoooo\", -\"oooo.Xoooo\"};") - (list 10 10 (concat "\000\000\000\000\376\001\202\001\364\000" - "\324\000\150\000\150\000\060\000\060\000")))) +\"oooo.Xoooo\"};"))) + ((featurep 'x) + (vector 'xbm + :data + (list 10 10 + (concat "\000\000\000\000\376\001\202\001\364\000" + "\324\000\150\000\150\000\060\000\060\000")))) + (t "v"))) "Bitmap object for outline down glyph.") -(defconst outline-down-arrow-mask - (make-pixmap ; a down-arrow - (if (featurep 'xpm) - (concat "/* XPM */ +(defconst outline-down-arrow-mask ; XEmacs + (make-glyph ; a down-arrow + (cond ((featurep 'xpm) (vector 'xpm :data (concat "/* XPM */ static char * down[] = { \"10 10 5 1\", \" c " outline-glyph-shade-colour "\", @@ -205,15 +219,19 @@ \"ooo..XXooo\", \"ooo..XXooo\", \"oooo.Xoooo\", -\"oooo.Xoooo\"};") - (list 10 10 (concat "\000\000\000\000\376\001\376\001\254\000" - "\254\000\130\000\130\000\060\000\060\000")))) +\"oooo.Xoooo\"};"))) + ((featurep 'x) + (vector 'xbm + :data + (list 10 10 + (concat "\000\000\000\000\376\001\376\001\254\000" + "\254\000\130\000\130\000\060\000\060\000")))) + (t "+"))) "Bitmap object for outline depressed down glyph.") (defconst outline-right-arrow - (make-pixmap ; a right-arrow - (if (featurep 'xpm) - (concat "/* XPM */ + (make-glyph ; a right-arrow + (cond ((featurep 'xpm) (vector 'xpm :data (concat "/* XPM */ static char * right[] = { \"10 10 5 1\", \" c " outline-glyph-lit-colour "\", @@ -230,15 +248,19 @@ \" ooOOOOXX\", \" OOOOXXXX\", \" OOOXXXXXX\", -\" OXXXXXXXX\"};") - (list 10 10 (concat "\000\000\006\000\032\000\142\000\232\001" - "\352\001\172\000\036\000\006\000\000\000")))) +\" OXXXXXXXX\"};"))) + ((featurep 'x) + (vector 'xbm + :data + (list 10 10 + (concat "\000\000\006\000\032\000\142\000\232\001" + "\352\001\172\000\036\000\006\000\000\000")))) + (t ">"))) "Bitmap object for outline right glyph.") (defconst outline-right-arrow-mask - (make-pixmap ; a right-arrow - (if (featurep 'xpm) - (concat "/* XPM */ + (make-glyph ; a right-arrow + (cond ((featurep 'xpm) (vector 'xpm :data (concat "/* XPM */ static char * right[] = { \"10 10 5 1\", \" c " outline-glyph-shade-colour "\", @@ -255,9 +277,14 @@ \" ooOOOOXX\", \" OOOOXXXX\", \" OOOXXXXXX\", -\" OXXXXXXXX\"};") - (list 10 10 (concat "\000\000\006\000\036\000\176\000\346\001" - "\236\001\146\000\036\000\006\000\000\000")))) +\" OXXXXXXXX\"};"))) + ((featurep 'x) + (vector 'xbm + :data + (list 10 10 + (concat "\000\000\006\000\036\000\176\000\346\001" + "\236\001\146\000\036\000\006\000\000\000")))) + (t "+"))) "Bitmap object for outline depressed right glyph.") (defvar outline-glyph-menu diff -r d101af7320b8 -r cca96a509cfe lisp/modes/outline.el --- a/lisp/modes/outline.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/outline.el Mon Aug 13 09:25:29 2007 +0200 @@ -172,16 +172,19 @@ ;;; #+XEmacs (defun outline-install-menubar (&optional remove) ;; install or remove the outline menus - (let ((menus (cdr outline-mode-menu)) path) - (and (not remove) - (set-buffer-menubar (copy-sequence current-menubar))) - (while menus - (setq path (list (car (car menus)))) - (if (and remove (find-menu-item current-menubar path)) - (delete-menu-item path) - (or (car (find-menu-item current-menubar path)) - (add-menu nil (car (car menus)) (cdr (car menus)) nil))) - (setq menus (cdr menus))))) + ;; This is a nop if menubars aren't available + (when (and (featurep 'menubar) ; XEmacs + current-menubar) + (let ((menus (cdr outline-mode-menu)) path) + (and (not remove) + (set-buffer-menubar (copy-sequence current-menubar))) + (while menus + (setq path (list (car (car menus)))) + (if (and remove (find-menu-item current-menubar path)) + (delete-menu-item path) + (or (car (find-menu-item current-menubar path)) + (add-menu nil (car (car menus)) (cdr (car menus)) nil))) + (setq menus (cdr menus)))))) ;;;###autoload (defvar outline-minor-mode nil diff -r d101af7320b8 -r cca96a509cfe lisp/modes/sendmail.el --- a/lisp/modes/sendmail.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/sendmail.el Mon Aug 13 09:25:29 2007 +0200 @@ -290,7 +290,9 @@ ;; Emacs and XEmacs less stupid about default mail addresses. ;; We trust the administrator if he has set `mail-host-address'. -(defcustom query-user-mail-address (not mail-host-address) +;; We trust the user if he has already customized `user-mail-address'. +(defcustom query-user-mail-address (and (not mail-host-address) + (not user-mail-address)) "If non-nil, prompt the user for his mail address." :group 'message :type 'boolean) diff -r d101af7320b8 -r cca96a509cfe lisp/modes/sh-script.el --- a/lisp/modes/sh-script.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/sh-script.el Mon Aug 13 09:25:29 2007 +0200 @@ -49,6 +49,17 @@ (require 'executable) +(defgroup sh nil + "Shell programming utilities" + :group 'unix + :group 'languages) + +(defgroup sh-script nil + "Shell script mode" + :group 'sh + :prefix "sh-") + + ;;; interpreter-mode-alist is not compatible between Emacs and XEmacs. ;;; So fake it. @@ -92,13 +103,17 @@ the name of the interpreter specified in the first line. If it matches, mode MODE is selected.") -(defvar sh-mode-hook nil - "*Hook run by `sh-mode'.") +(defcustom sh-mode-hook nil + "*Hook run by `sh-mode'." + :type 'hook + :group 'sh-script) -(defvar sh-set-shell-hook nil - "*Hook run by `sh-set-shell'.") +(defcustom sh-set-shell-hook nil + "*Hook run by `sh-set-shell'." + :type 'hook + :group 'sh-script) -(defvar sh-ancestor-alist +(defcustom sh-ancestor-alist '((ash . sh) (bash . jsh) (dtksh . ksh) @@ -137,10 +152,12 @@ zsh Z Shell oash SCO OA (curses) Shell posix IEEE 1003.2 Shell Standard - wsh ? Shell") + wsh ? Shell" + :type '(repeat (cons symbol symbol)) + :group 'sh-script) -(defvar sh-alias-alist +(defcustom sh-alias-alist ;; XEmacs: Linux is spelled `linux' (nconc (if (eq system-type 'linux) '((csh . tcsh) @@ -150,14 +167,18 @@ (sh5 . sh))) "*Alist for transforming shell names to what they really are. Use this where the name of the executable doesn't correspond to the type of -shell it really is.") +shell it really is." + :type '(repeat (cons symbol symbol)) + :group 'sh-script) -(defvar sh-shell-file (or (getenv "SHELL") "/bin/sh") - "*The executable file name for the shell being programmed.") +(defcustom sh-shell-file (or (getenv "SHELL") "/bin/sh") + "*The executable file name for the shell being programmed." + :type 'string + :group 'sh-script) -(defvar sh-shell-arg +(defcustom sh-shell-arg ;; bash does not need any options when run in a shell script, '((bash) (csh . "-f") @@ -171,7 +192,14 @@ (wksh) ;; -f means don't run .zshrc. (zsh . "-f")) - "*Single argument string for the magic number. See `sh-feature'.") + "*Single argument string for the magic number. See `sh-feature'." + :type '(repeat (cons (symbol :tag "Shell") + (choice (const :tag "No Arguments" nil) + (string :tag "Arguments") + (cons :format "Evaluate: %v" + (const :format "" eval) + sexp)))) + :group 'sh-script) (defvar sh-shell-variables nil "Alist of shell variable names that should be included in completion. @@ -315,33 +343,47 @@ -(defvar sh-dynamic-complete-functions +(defcustom sh-dynamic-complete-functions '(shell-dynamic-complete-environment-variable shell-dynamic-complete-command comint-dynamic-complete-filename) - "*Functions for doing TAB dynamic completion.") + "*Functions for doing TAB dynamic completion." + :type '(repeat function) + :group 'sh-script) -(defvar sh-require-final-newline +(defcustom sh-require-final-newline '((csh . t) (pdksh . t) (rc eval . require-final-newline) (sh eval . require-final-newline)) "*Value of `require-final-newline' in Shell-Script mode buffers. -See `sh-feature'.") +See `sh-feature'." + :type '(repeat (cons (symbol :tag "Shell") + (choice (const :tag "require" t) + (cons :format "Evaluate: %v" + (const :format "" eval) + sexp)))) + :group 'sh-script) -(defvar sh-comment-prefix +(defcustom sh-comment-prefix '((csh . "\\(^\\|[^$]\\|\\$[^{]\\)") (rc eval identity csh) (sh . "\\(^\\|[ \t|&;()]\\)")) "*Regexp matching what may come before a comment `#'. This must contain one \\(grouping\\) since it is the basis for fontifying comments as well as for `comment-start-skip'. -See `sh-feature'.") +See `sh-feature'." + :type '(repeat (cons (symbol :tag "Shell") + (choice regexp + (cons :format "Evaluate: %v" + (const :format "" eval) + sexp)))) + :group 'sh-script) -(defvar sh-assignment-regexp +(defcustom sh-assignment-regexp '((csh . "\\<\\([a-zA-Z0-9_]+\\)\\(\\[.+\\]\\)?[ \t]*[-+*/%^]?=") ;; actually spaces are only supported in let/(( ... )) (ksh88 . "\\<\\([a-zA-Z0-9_]+\\)\\(\\[.+\\]\\)?[ \t]*\\([-+*/%&|~^]\\|<<\\|>>\\)?=") @@ -349,15 +391,25 @@ (sh . "\\<\\([a-zA-Z0-9_]+\\)=")) "*Regexp for the variable name and what may follow in an assignment. First grouping matches the variable name. This is upto and including the `=' -sign. See `sh-feature'.") +sign. See `sh-feature'." + :type '(repeat (cons (symbol :tag "Shell") + (choice regexp + (cons :format "Evaluate: %v" + (const :format "" eval) + sexp)))) + :group 'sh-script) -(defvar sh-indentation 4 - "The width for further indentation in Shell-Script mode.") +(defcustom sh-indentation 4 + "The width for further indentation in Shell-Script mode." + :type 'integer + :group 'sh-script) -(defvar sh-remember-variable-min 3 - "*Don't remember variables less than this length for completing reads.") +(defcustom sh-remember-variable-min 3 + "*Don't remember variables less than this length for completing reads." + :type 'integer + :group 'sh-script) (defvar sh-header-marker nil @@ -365,16 +417,20 @@ That command is also used for setting this variable.") -(defvar sh-beginning-of-command +(defcustom sh-beginning-of-command "\\([;({`|&]\\|\\`\\|[^\\]\n\\)[ \t]*\\([/~a-zA-Z0-9:]\\)" "*Regexp to determine the beginning of a shell command. -The actual command starts at the beginning of the second \\(grouping\\).") +The actual command starts at the beginning of the second \\(grouping\\)." + :type 'regexp + :group 'sh-script) -(defvar sh-end-of-command +(defcustom sh-end-of-command "\\([/~a-zA-Z0-9:]\\)[ \t]*\\([;#)}`|&]\\|$\\)" "*Regexp to determine the end of a shell command. -The actual command ends at the end of the first \\(grouping\\).") +The actual command ends at the end of the first \\(grouping\\)." + :type 'regexp + :group 'sh-script) @@ -387,7 +443,9 @@ "Initial input in Bourne if, while and until skeletons. See `sh-feature'.") -(defvar sh-builtins +;; customized this out of sheer bravado. not for the faint of heart. +;; but it *did* have an asterisk in the docstring! +(defcustom sh-builtins '((bash eval sh-append posix "alias" "bg" "bind" "builtin" "declare" "dirs" "enable" "fc" "fg" "help" "history" "jobs" "kill" "let" "local" "popd" "pushd" "source" @@ -450,11 +508,17 @@ "which")) "*List of all shell builtins for completing read and fontification. Note that on some systems not all builtins are available or some are -implemented as aliases. See `sh-feature'.") +implemented as aliases. See `sh-feature'." + :type '(repeat (cons (symbol :tag "Shell") + (choice (repeat string) + (cons :format "Evaluate: %v" + (const :format "" eval) + sexp)))) + :group 'sh-script) -(defvar sh-leading-keywords +(defcustom sh-leading-keywords '((csh "else") (es "true" "unwind-protect" "whatis") @@ -465,10 +529,16 @@ "*List of keywords that may be immediately followed by a builtin or keyword. Given some confusion between keywords and builtins depending on shell and system, the distinction here has been based on whether they influence the -flow of control or syntax. See `sh-feature'.") +flow of control or syntax. See `sh-feature'." + :type '(repeat (cons (symbol :tag "Shell") + (choice (repeat string) + (cons :format "Evaluate: %v" + (const :format "" eval) + sexp)))) + :group 'sh-script) -(defvar sh-other-keywords +(defcustom sh-other-keywords '((bash eval sh-append bourne "bye" "logout") @@ -495,7 +565,13 @@ (zsh eval sh-append bash "select")) "*List of keywords not in `sh-leading-keywords'. -See `sh-feature'.") +See `sh-feature'." + :type '(repeat (cons (symbol :tag "Shell") + (choice (repeat string) + (cons :format "Evaluate: %v" + (const :format "" eval) + sexp)))) + :group 'sh-script) diff -r d101af7320b8 -r cca96a509cfe lisp/modes/tcl.el --- a/lisp/modes/tcl.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/tcl.el Mon Aug 13 09:25:29 2007 +0200 @@ -377,17 +377,27 @@ ;; User variables. ;; -(defvar tcl-indent-level 4 - "*Indentation of Tcl statements with respect to containing block.") +(defgroup tcl nil + "Tcl programming language" + :group 'languages) -(defvar tcl-continued-indent-level 4 - "*Indentation of continuation line relative to first line of command.") +(defcustom tcl-indent-level 4 + "*Indentation of Tcl statements with respect to containing block." + :type 'integer + :group 'tcl) -(defvar tcl-auto-newline nil +(defcustom tcl-continued-indent-level 4 + "*Indentation of continuation line relative to first line of command." + :type 'integer + :group 'tcl) + +(defcustom tcl-auto-newline nil "*Non-nil means automatically newline before and after braces -inserted in Tcl code.") +inserted in Tcl code." + :type 'boolean + :group 'tcl) -(defvar tcl-tab-always-indent t +(defcustom tcl-tab-always-indent t "*Control effect of TAB key. If t (the default), always indent current line. If nil and point is not in the indentation area at the beginning of @@ -400,48 +410,68 @@ 3. Move forward to start of comment, indenting if necessary. 4. Move forward to end of line, indenting if necessary. 5. Create an empty comment. - 6. Move backward to start of comment, indenting if necessary.") + 6. Move backward to start of comment, indenting if necessary." + :type '(choice (const :tag "on" t) + (const :tag "off" nil) + (const :tag "The Works" other)) + :group 'tcl) -(defvar tcl-use-hairy-comment-detector t +(defcustom tcl-use-hairy-comment-detector t "*If not `nil', then the more complicated, but slower, comment detecting function is used. This variable is only used in GNU Emacs -19 (the fast function is always used elsewhere).") +19 (the fast function is always used elsewhere)." + :type 'boolean + :group 'tcl) -(defvar tcl-electric-hash-style 'smart +(defcustom tcl-electric-hash-style 'smart "*Style of electric hash insertion to use. Possible values are 'backslash, meaning that `\\' quoting should be done; 'quote, meaning that `\"' quoting should be done; 'smart, meaning that the choice between 'backslash and 'quote should be made depending on the number of hashes inserted; or nil, meaning that no quoting should be done. Any other value for this variable is -taken to mean 'smart. The default is 'smart.") +taken to mean 'smart. The default is 'smart." + :type '(choice (const backslash) (const quote) (const smart)) + :group 'tcl) -(defvar tcl-help-directory-list nil - "*List of topmost directories containing TclX help files") +(defcustom tcl-help-directory-list nil + "*List of topmost directories containing TclX help files" + :type '(repeat directory) + :group 'tcl) -(defvar tcl-use-smart-word-finder t +(defcustom tcl-use-smart-word-finder t "*If not nil, use a better way of finding the current word when -looking up help on a Tcl command.") - -(defvar tcl-application "wish" - "*Name of Tcl application to run in inferior Tcl mode.") +looking up help on a Tcl command." + :type 'boolean + :group 'tcl) -(defvar tcl-command-switches nil - "*Switches to supply to `tcl-application'.") +(defcustom tcl-application "wish" + "*Name of Tcl application to run in inferior Tcl mode." + :type 'string + :group 'tcl) -(defvar tcl-prompt-regexp "^\\(% \\|\\)" +(defcustom tcl-command-switches nil + "*Switches to supply to `tcl-application'." + :type '(repeat string) + :group 'tcl) + +(defcustom tcl-prompt-regexp "^\\(% \\|\\)" "*If not nil, a regexp that will match the prompt in the inferior process. If nil, the prompt is the name of the application with \">\" appended. The default is \"^\\(% \\|\\)\", which will match the default primary -and secondary prompts for tclsh and wish.") +and secondary prompts for tclsh and wish." + :type 'regexp + :group 'tcl) -(defvar inferior-tcl-source-command "source %s\n" +(defcustom inferior-tcl-source-command "source %s\n" "*Format-string for building a Tcl command to load a file. This format string should use `%s' to substitute a file name and should result in a Tcl expression that will command the inferior Tcl to load that file. The filename will be appropriately -quoted for Tcl.") +quoted for Tcl." + :type 'string + :group 'tcl) ;; ;; Keymaps, abbrevs, syntax tables. @@ -623,7 +653,7 @@ ;; Hooks and other customization. ;; -(defvar tcl-mode-hook nil +(defcustom tcl-mode-hook nil "Hook run on entry to Tcl mode. Several functions exist which are useful to run from your @@ -646,11 +676,15 @@ Emacs 18 users must use `setq': - (setq tcl-mode-hook (cons 'tcl-guess-application tcl-mode-hook))") + (setq tcl-mode-hook (cons 'tcl-guess-application tcl-mode-hook))" + :type 'hook + :group 'tcl) -(defvar inferior-tcl-mode-hook nil - "Hook for customizing Inferior Tcl mode.") +(defcustom inferior-tcl-mode-hook nil + "Hook for customizing Inferior Tcl mode." + :type 'hook + :group 'tcl) (defvar tcl-proc-list '("proc" "method" "itcl_class") diff -r d101af7320b8 -r cca96a509cfe lisp/modes/texinfo.el --- a/lisp/modes/texinfo.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/texinfo.el Mon Aug 13 09:25:29 2007 +0200 @@ -26,6 +26,10 @@ ;;; Synched up with: FSF 19.30. +(defgroup texinfo nil + "Texinfo Mode" + :group 'docs) + ;;; Autoloads: @@ -630,20 +634,28 @@ ;;; The tex and print function definitions: -(defvar texinfo-texi2dvi-command "texi2dvi" - "*Command used by `texinfo-tex-buffer' to run TeX and texindex on a buffer.") +(defcustom texinfo-texi2dvi-command "texi2dvi" + "*Command used by `texinfo-tex-buffer' to run TeX and texindex on a buffer." + :type 'string + :group 'texinfo) -(defvar texinfo-tex-command "tex" - "*Command used by `texinfo-tex-region' to run TeX on a region.") +(defcustom texinfo-tex-command "tex" + "*Command used by `texinfo-tex-region' to run TeX on a region." + :type 'string + :group 'texinfo) -(defvar texinfo-texindex-command "texindex" - "*Command used by `texinfo-texindex' to sort unsorted index files.") +(defcustom texinfo-texindex-command "texindex" + "*Command used by `texinfo-texindex' to sort unsorted index files." + :type 'string + :group 'texinfo) -(defvar texinfo-delete-from-print-queue-command "lprm" +(defcustom texinfo-delete-from-print-queue-command "lprm" "*Command string used to delete a job from the line printer queue. Command is used by \\[texinfo-delete-from-print-queue] based on number provided by a previous \\[tex-show-print-queue] -command.") +command." + :type 'string + :group 'texinfo) (defvar texinfo-tex-trailer "@bye" "String appended after a region sent to TeX by `texinfo-tex-region'.") diff -r d101af7320b8 -r cca96a509cfe lisp/modes/vrml-mode.el --- a/lisp/modes/vrml-mode.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/modes/vrml-mode.el Mon Aug 13 09:25:29 2007 +0200 @@ -44,14 +44,28 @@ ;; User variables. ;; -(defvar vrml-indent-level 3 - "*Indentation of VRML statements with respect to containing block.") +(defgroup vrml nil + "VRML Language" + :group 'languages) + +(defgroup vrml-mode nil + "VRML mode customization" + :group 'vrml + :prefix "vrml-") + -(defvar vrml-auto-newline nil +(defcustom vrml-indent-level 3 + "*Indentation of VRML statements with respect to containing block." + :type 'integer + :group 'vrml-mode) + +(defcustom vrml-auto-newline nil "*Non-nil means automatically newline before and after braces -inserted in VRML code.") +inserted in VRML code." + :type 'boolean + :group 'vrml-mode) -(defvar vrml-tab-always-indent t +(defcustom vrml-tab-always-indent t "*Control effect of TAB key. If t (the default), always indent current line. If nil and point is not in the indentation area at the beginning of @@ -64,11 +78,17 @@ 3. Move forward to start of comment, indenting if necessary. 4. Move forward to end of line, indenting if necessary. 5. Create an empty comment. - 6. Move backward to start of comment, indenting if necessary.") + 6. Move backward to start of comment, indenting if necessary." + :type '(choice (const :tag "on" t) + (const :tag "off" nil) + (const :tag "The Works" other)) + :group 'vrml-mode) -(defvar vrml-use-hairy-comment-detector t +(defcustom vrml-use-hairy-comment-detector t "*If not `nil', then the more complicated, but slower, comment -detecting function is used.") +detecting function is used." + :type 'boolean + :group 'vrml-mode) (defvar vrml-mode-abbrev-table nil "Abbrev table used while in VRML mode.") @@ -115,8 +135,10 @@ (modify-syntax-entry ?+ "." vrml-mode-syntax-table) (modify-syntax-entry ?\' "\"" vrml-mode-syntax-table)) -(defvar vrml-mode-hook nil - "Hook run on entry to VRML mode.") +(defcustom vrml-mode-hook nil + "Hook run on entry to VRML mode." + :type 'hook + :group 'vrml-mode) (defvar vrml-keyword-list '( diff -r d101af7320b8 -r cca96a509cfe lisp/mule/canna.el --- a/lisp/mule/canna.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/canna.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,87 +1,83 @@ ;;; canna.el --- Interface to the Canna input method. -;; This file is part of XEmacs. +;; Copyright (C) 1994 Akira Kon, NEC Corporation. +;; Copyright (C) 1996,1997 MORIOKA Tomohiko + +;; Author: Akira Kon +;; MORIOKA Tomohiko +;; Version: $Revision: 1.5 $ +;; Keywords: Canna, Japanese, input method, mule, multilingual -;; XEmacs 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 file is not a part of Emacs yet. -;; XEmacs is distributed in the hope that it will be useful, but +;; 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 XEmacs; see the file COPYING. If not, write to the +;; 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. -;;; Synched up with: Mule 2.3. - -;; Egg offered some influences to the implementation of -;; Canna on Nemacs/Mule, and this file contains a few part -;; of Egg which is written by S.Tomura, Electrotechnical -;; Lab. (tomura@etl.go.jp) - -;; Written by Akira Kon, NEC Corporation. -;; E-Mail: kon@d1.bs2.mt.nec.co.jp. - -;; #### This is far from working in XEmacs. - -;; added by MORIOKA Tomohiko , 1996/6/18 -(defvar running-xemacs (string-match "XEmacs" emacs-version)) - -(if running-xemacs (require 'overlay)) +;;; Commentary: -;; added by MORIOKA Tomohiko , 1996/6/7 -(or (fboundp 'minibuffer-prompt-width) - (defun minibuffer-prompt-width () - (save-excursion - (set-buffer (window-buffer (minibuffer-window))) - (current-column) - )) - ) -(or (fboundp 'char-before) - (defun char-before (pos) - (char-after (1- (point))) - ) - ) +;; Egg offered some influences to the implementation of Canna on +;; Nemacs/Mule, and this file contains a few part of Egg which is +;; written by S.Tomura, Electrotechnical Lab. (tomura@etl.go.jp) -(if running-xemacs - (progn - (defun self-insert-string (string) - (let ((len (length string)) - (i 0) - ;; $BA^F~$NESCf$G(B blink $B$,5/$-$k$H$&$C$H$*$7$$$N$G!"(B - ;; $B0l;~E*$K(B blink $B$rM^;_$9$k!#(B - (blink-matching-paren nil)) - (while (< i len) - (self-insert-internal (aref canna-kakutei-string i)) - (setq i (1+ i)) - ))) - ) - (defun self-insert-string (string) - (let ((len (length string)) - (i 0) chr - ;; $BA^F~$NESCf$G(B blink $B$,5/$-$k$H$&$C$H$*$7$$$N$G!"(B - ;; $B0l;~E*$K(B blink $B$rM^;_$9$k!#(B - (blink-matching-paren nil)) - (while (< i len) - (setq chr (sref canna-kakutei-string i)) - (self-insert-internal chr) - (setq i (+ i (char-bytes chr))) - ))) - ) +;; This program is rewritten for Emacs/mule and XEmacs/mule by MORIOKA +;; Tomohiko. +;;; Code: ;; -*-mode: emacs-lisp-*- -(defconst canna-rcs-version "Canna/mule 2.x, based on Canna 2.2/3.2. : canna.el,v x.xx 1994/11/7 00:00:00") +;; by $B 1996/11/11 +(or (boundp 'CANNA) + (let ((handle (dynamic-link (expand-file-name "canna.so" exec-directory)))) + (dynamic-call "emacs_canna_init" handle)) + ) + +(defvar self-insert-after-hook nil) +;; (defalias 'self-insert-internal 'self-insert-command) +;; end + +(defconst canna-rcs-version + "$Id: canna.el,v 1.5 1997/04/10 05:55:27 steve Exp $") (defun canna-version () + "Display version of canna.el in mini-buffer." (interactive) - (message (concat (substring canna-rcs-version 0 72) " ...")) ) + (message (concat + (substring canna-rcs-version + 5 + (if (string-match "[0-9] [a-z]" canna-rcs-version) + (1+ (match-beginning 0)) + )) + " ..."))) + +(require 'emu) + +(if running-xemacs + (defun canna-self-insert-string (string) + (let ((len (length string)) + (i 0) + ;; $BA^F~$NESCf$G(B blink $B$,5/$-$k$H$&$C$H$*$7$$$N$G!"(B + ;; $B0l;~E*$K(B blink $B$rM^;_$9$k!#(B + (blink-matching-paren nil)) + (while (< i len) + (self-insert-internal (aref canna-kakutei-string i)) + (setq i (1+ i)) + ))) + (defalias 'canna-self-insert-string 'insert) + ) + ;;; $B$+$s$J$NJQ?t(B @@ -157,8 +153,8 @@ (setq minibuffer-preprompt str) ;else (setq mode-line-canna-mode-in-minibuffer str)) - (setq mode-line-canna-mode str)) - (redraw-modeline)) + (setq mode-line-canna-mode str) ) + (set-buffer-modified-p (buffer-modified-p)) ) ;; memq $B$r6/D4$9$k$J$i!"0J2<$@$,!"(B ;(defun canna:memq-recursive (a l) @@ -173,19 +169,42 @@ (canna:memq-recursive a (cdr l)) ))) (defun canna:create-mode-line () - (if (not (canna:memq-recursive 'mode-line-canna-mode mode-line-format)) - (setq-default - mode-line-format - (append (list (list 'minibuffer-window-selected - (list 'display-minibuffer-mode-in-minibuffer - "-" "m") "-") - (list 'minibuffer-window-selected - (list 'display-minibuffer-mode-in-minibuffer - 'mode-line-canna-mode - 'mode-line-canna-mode-in-minibuffer) - 'mode-line-canna-mode)) - mode-line-format))) - (mode-line-canna-mode-update mode-line-canna-mode) ) + "Add string of Canna status into mode-line." + (cond (running-xemacs + (or (canna:memq-recursive 'mode-line-canna-mode + default-modeline-format) + (setq-default default-modeline-format + (nconc '("" mode-line-canna-mode) + default-modeline-format)) + ) + (mapcar (function + (lambda (buffer) + (save-excursion + (set-buffer buffer) + (or (canna:memq-recursive 'mode-line-canna-mode + modeline-format) + (setq modeline-format + (nconc '("" mode-line-canna-mode) + modeline-format)) + ) + ))) + (buffer-list)) + ) + (t + (or (canna:memq-recursive 'mode-line-canna-mode mode-line-format) + (setq-default + mode-line-format + (append (list (list 'minibuffer-window-selected + (list 'display-minibuffer-mode-in-minibuffer + "-" "m") "-") + (list 'minibuffer-window-selected + (list 'display-minibuffer-mode-in-minibuffer + 'mode-line-canna-mode + 'mode-line-canna-mode-in-minibuffer) + 'mode-line-canna-mode)) + mode-line-format)) + ))) + (mode-line-canna-mode-update mode-line-canna-mode)) (defun canna:mode-line-display () (mode-line-canna-mode-update mode-line-canna-mode)) @@ -268,20 +287,38 @@ (define-key canna-mode-map (make-string 1 ch) 'canna-functional-insert-command) (setq ch (1+ ch)))) -(define-key canna-mode-map [up] "\C-p") -(define-key canna-mode-map [(shift up)] "\C-p") -(define-key canna-mode-map [(control up)] "\C-p") -(define-key canna-mode-map [down] "\C-n") -(define-key canna-mode-map [(shift down)] "\C-n") -(define-key canna-mode-map [(control down)] "\C-n") -(define-key canna-mode-map [right] "\C-f") -(define-key canna-mode-map [(shift right)] "\C-f") -(define-key canna-mode-map [(control right)] "\C-f") -(define-key canna-mode-map [left] "\C-b") -(define-key canna-mode-map [(shift left)] "\C-b") -(define-key canna-mode-map [(control left)] "\C-b") -(define-key canna-mode-map [kanji] " ") -(define-key canna-mode-map [(control space)] [(control @)]) +(cond (running-xemacs + (define-key canna-mode-map [up] "\C-p") + (define-key canna-mode-map [(shift up)] "\C-p") + (define-key canna-mode-map [(control up)] "\C-p") + (define-key canna-mode-map [down] "\C-n") + (define-key canna-mode-map [(shift down)] "\C-n") + (define-key canna-mode-map [(control down)] "\C-n") + (define-key canna-mode-map [right] "\C-f") + (define-key canna-mode-map [(shift right)] "\C-f") + (define-key canna-mode-map [(control right)] "\C-f") + (define-key canna-mode-map [left] "\C-b") + (define-key canna-mode-map [(shift left)] "\C-b") + (define-key canna-mode-map [(control left)] "\C-b") + (define-key canna-mode-map [kanji] " ") + (define-key canna-mode-map [(control space)] [(control @)]) + ) + (t + (define-key canna-mode-map [up] [?\C-p]) + (define-key canna-mode-map [S-up] [?\C-p]) + (define-key canna-mode-map [C-up] [?\C-p]) + (define-key canna-mode-map [down] [?\C-n]) + (define-key canna-mode-map [S-down] [?\C-n]) + (define-key canna-mode-map [C-down] [?\C-n]) + (define-key canna-mode-map [right] [?\C-f]) + (define-key canna-mode-map [S-right] [?\C-f]) + (define-key canna-mode-map [C-right] [?\C-f]) + (define-key canna-mode-map [left] [?\C-b]) + (define-key canna-mode-map [S-left] [?\C-b]) + (define-key canna-mode-map [C-left] [?\C-b]) + (define-key canna-mode-map [kanji] [? ]) + (define-key canna-mode-map [?\C- ] [?\C-@]) + )) ;; $B%_%K%P%C%U%!$K2?$+$rI=<($7$F$$$k;~$N%m!<%+%k%^%C%W(B (defvar canna-minibuffer-mode-map (make-sparse-keymap)) @@ -291,20 +328,38 @@ (define-key canna-minibuffer-mode-map (make-string 1 ch) 'canna-minibuffer-insert-command) (setq ch (1+ ch)))) -(define-key canna-minibuffer-mode-map [up] "\C-p") -(define-key canna-minibuffer-mode-map [(shift up)] "\C-p") -(define-key canna-minibuffer-mode-map [(control up)] "\C-p") -(define-key canna-minibuffer-mode-map [down] "\C-n") -(define-key canna-minibuffer-mode-map [(shift down)] "\C-n") -(define-key canna-minibuffer-mode-map [(control down)] "\C-n") -(define-key canna-minibuffer-mode-map [right] "\C-f") -(define-key canna-minibuffer-mode-map [(shift right)] "\C-f") -(define-key canna-minibuffer-mode-map [(control right)] "\C-f") -(define-key canna-minibuffer-mode-map [left] "\C-b") -(define-key canna-minibuffer-mode-map [(shift left)] "\C-b") -(define-key canna-minibuffer-mode-map [(control left)] "\C-b") -(define-key canna-minibuffer-mode-map [kanji] " ") -(define-key canna-minibuffer-mode-map [(control space)] [(control @)]) +(cond (running-xemacs + (define-key canna-minibuffer-mode-map [up] "\C-p") + (define-key canna-minibuffer-mode-map [(shift up)] "\C-p") + (define-key canna-minibuffer-mode-map [(control up)] "\C-p") + (define-key canna-minibuffer-mode-map [down] "\C-n") + (define-key canna-minibuffer-mode-map [(shift down)] "\C-n") + (define-key canna-minibuffer-mode-map [(control down)] "\C-n") + (define-key canna-minibuffer-mode-map [right] "\C-f") + (define-key canna-minibuffer-mode-map [(shift right)] "\C-f") + (define-key canna-minibuffer-mode-map [(control right)] "\C-f") + (define-key canna-minibuffer-mode-map [left] "\C-b") + (define-key canna-minibuffer-mode-map [(shift left)] "\C-b") + (define-key canna-minibuffer-mode-map [(control left)] "\C-b") + (define-key canna-minibuffer-mode-map [kanji] " ") + (define-key canna-minibuffer-mode-map [(control space)] [(control @)]) + ) + (t + (define-key canna-minibuffer-mode-map [up] [?\C-p]) + (define-key canna-minibuffer-mode-map [S-up] [?\C-p]) + (define-key canna-minibuffer-mode-map [C-up] [?\C-p]) + (define-key canna-minibuffer-mode-map [down] [?\C-n]) + (define-key canna-minibuffer-mode-map [S-down] [?\C-n]) + (define-key canna-minibuffer-mode-map [C-down] [?\C-n]) + (define-key canna-minibuffer-mode-map [right] [?\C-f]) + (define-key canna-minibuffer-mode-map [S-right] [?\C-f]) + (define-key canna-minibuffer-mode-map [C-right] [?\C-f]) + (define-key canna-minibuffer-mode-map [left] [?\C-b]) + (define-key canna-minibuffer-mode-map [S-left] [?\C-b]) + (define-key canna-minibuffer-mode-map [C-left] [?\C-b]) + (define-key canna-minibuffer-mode-map [kanji] [? ]) + (define-key canna-minibuffer-mode-map [?\C- ] [?\C-@]) + )) ;;; ;;; $B%0%m!<%P%k4X?t$N=q$-BX$((B @@ -323,7 +378,8 @@ ; (progn ;; (setq canna:*japanese-mode* nil) ; (setq canna:*fence-mode* nil) -; (buffer-enable-undo (current-buffer)) +; (if (boundp 'disable-undo) +; (setq disable-undo canna:*fence-mode*)) ; (canna:mode-line-display) )) ; (canna-sys:keyboard-quit) ) @@ -340,7 +396,8 @@ ; (progn ; (setq canna:*japanese-mode* nil) ; (setq canna:*fence-mode* nil) -; (buffer-enable-undo (current-buffer)) +; (if (boundp 'disable-undo) +; (setq disable-undo canna:*fence-mode*)) ; (canna:mode-line-display) )) ; (canna-sys:abort-recursive-edit) ) @@ -416,7 +473,7 @@ (set-marker canna:*spos-undo-text* (point)) ;; ;; update kbnes - (self-insert-string canna-kakutei-string) + (canna-self-insert-string canna-kakutei-string) ;; $BL$3NDj$NJ8;z$,$J$/!"3NDjJ8;zNs$N:G8e$,JD$83g8L$N(B ;; $BN`$@$C$?$H$-$O(B blink $B$5$;$k!#(B (if (and canna-empty-info @@ -444,7 +501,7 @@ (t ;; ;; update kbnes - (self-insert-string canna-kakutei-string) + (canna-self-insert-string canna-kakutei-string) ;; $BL$3NDj$NJ8;z$,$J$/!"3NDjJ8;zNs$N:G8e$,JD$83g8L$N(B ;; $BN`$@$C$?$H$-$O(B blink $B$5$;$k!#(B (if (and canna-empty-info @@ -486,34 +543,34 @@ (canna:yomi-attr-on canna:*region-start* canna:*region-end*)) (setq canna:*last-kouho* canna-henkan-length) )) - - ;; $B8uJdNN0h$G$O6/D4$7$?$$J8;zNs$,B8:_$9$k$b$N$H9M$($i(B - ;; $B$l$k!#6/D4$7$?$$J8;z$O(BEmacs$B$G$O%+!<%=%k%]%8%7%g%s$K$FI=<((B - ;; $B$9$k$3$H$H$9$k!#6/D4$7$?$$J8;z$,$J$$$N$G$"$l$P!"%+!<%=%k(B - ;; $B$O0lHV8e$NItJ,(B($BF~NO$,9T$o$l$k%]%$%s%H(B)$B$KCV$$$F$*$/!#(B - - ;; $B%+!<%=%k$r0\F0$9$k!#(B - (if (not canna-underline) - (backward-char - (- canna:*last-kouho* - ;; $B%+!<%=%k0LCV$O!"H?E>I=<(ItJ,$,B8:_$7$J$$$N$G$"$l$P!"(B - ;; $B8uJdJ8;zNs$N:G8e$NItJ,$H$7!"H?E>I=<(ItJ,$,B8:_$9$k$N(B - ;; $B$G$"$l$P!"$=$NItJ,$N;O$a$H$9$k!#(B - (cond ((zerop canna-henkan-revlen) - canna:*last-kouho*) - (t canna-henkan-revpos) )) ) - (if (and (> canna-henkan-revlen 0) - (> canna-henkan-length 0)) - ; $B8uJd$ND9$5$,(B0$B$G$J$/!"(B - ; $BH?E>I=<($ND9$5$,(B0$B$G$J$1$l$P!"(B - ; $B$=$NItJ,$rJQE>I=<($9$k!#(B - (let ((start (+ canna:*region-start* - (if canna-with-fences 1 0) - canna-henkan-revpos) )) - (if canna-underline - (canna:henkan-attr-on start - (+ start canna-henkan-revlen))))) - ) ) + + ;; $B8uJdNN0h$G$O6/D4$7$?$$J8;zNs$,B8:_$9$k$b$N$H9M$($i(B + ;; $B$l$k!#6/D4$7$?$$J8;z$O(BEmacs$B$G$O%+!<%=%k%]%8%7%g%s$K$FI=<((B + ;; $B$9$k$3$H$H$9$k!#6/D4$7$?$$J8;z$,$J$$$N$G$"$l$P!"%+!<%=%k(B + ;; $B$O0lHV8e$NItJ,(B($BF~NO$,9T$o$l$k%]%$%s%H(B)$B$KCV$$$F$*$/!#(B + + ;; $B%+!<%=%k$r0\F0$9$k!#(B + (if (not canna-underline) + (backward-char + (- canna:*last-kouho* + ;; $B%+!<%=%k0LCV$O!"H?E>I=<(ItJ,$,B8:_$7$J$$$N$G$"$l$P!"(B + ;; $B8uJdJ8;zNs$N:G8e$NItJ,$H$7!"H?E>I=<(ItJ,$,B8:_$9$k$N(B + ;; $B$G$"$l$P!"$=$NItJ,$N;O$a$H$9$k!#(B + (cond ((zerop canna-henkan-revlen) + canna:*last-kouho*) + (t canna-henkan-revpos) )) ) + (if (and (> canna-henkan-revlen 0) + (> canna-henkan-length 0)) + ; $B8uJd$ND9$5$,(B0$B$G$J$/!"(B + ; $BH?E>I=<($ND9$5$,(B0$B$G$J$1$l$P!"(B + ; $B$=$NItJ,$rJQE>I=<($9$k!#(B + (let ((start (+ canna:*region-start* + (if canna-with-fences 1 0) + canna-henkan-revpos) )) + (if canna-underline + (canna:henkan-attr-on start + (+ start canna-henkan-revlen))))) + ) ) (defun canna:display-candidates (strs) (cond ((stringp strs) ; $B%(%i!<$,5/$3$C$?>l9g(B @@ -580,12 +637,12 @@ ; (set-window-buffer (minibuffer-window) ; (get-buffer-create canna:*menu-buffer*)) ;; modified by $B, 1996/6/7 - ;; $B$H$j$"$($:(B comment out $B$7$F$*$3$&(B (^_^; - ;; (setq canna:*saved-redirection* (frame-focus (selected-frame))) - ;; (redirect-frame-focus (selected-frame) - ;; (window-frame (minibuffer-window))) - ;; end of modification - + (unless running-xemacs + ;; $B$H$j$"$($:(B XEmacs $B$G$OF0$+$5$J$$$3$H$K$7$F$*$3$&(B (^_^; + (setq canna:*saved-redirection* (frame-focus (selected-frame))) + (redirect-frame-focus (selected-frame) + (window-frame (minibuffer-window))) + ) ;; $B%_%K%P%C%U%!$N%-!<%^%C%W$rJ]B8$7$F$*$/!#(B (setq canna:*minibuffer-local-map-backup* (current-local-map)) )) @@ -626,11 +683,12 @@ (set-window-buffer (minibuffer-window) canna:*saved-minibuffer*) ; (setq canna:*saved-minibuffer* nil) ;; modified by $B, 1996/6/7 - ;; $B$H$j$"$($:(B comment out $B$7$F$*$3$&(B (^_^; - ;; (redirect-frame-focus (window-frame canna:*previous-window*) - ;; canna:*saved-redirection*) - ;; end of modification - ;; $B%_%K%P%C%U%!$GF~NO$7$F$$$?$N$J$i0J2<$b$9$k!#(B + (unless running-xemacs + ;; $B$H$j$"$($:(B XEmacs $B$G$OF0$+$5$J$$$h$&$K$7$F$*$3$&(B (^_^; + (redirect-frame-focus (window-frame canna:*previous-window*) + canna:*saved-redirection*) + ) + ; $B%_%K%P%C%U%!$GF~NO$7$F$$$?$N$J$i0J2<$b$9$k!#(B ; (if (eq canna:*previous-window* (selected-window)) ; (progn ; (canna:insert-fixed nfixed) @@ -784,6 +842,8 @@ (setq canna:*fence-mode* t) ;; XEmacs change: (buffer-disable-undo (current-buffer)) + ;; (if (boundp 'disable-undo) + ;; (setq disable-undo canna:*fence-mode*)) (use-local-map canna-mode-map)) (defun canna:enter-canna-mode-and-functional-insert () @@ -804,6 +864,8 @@ (mode-line-canna-mode-update canna:*alpha-mode-string*) ))) ;; XEmacs change: (buffer-enable-undo (current-buffer)) + ;; (if (boundp 'disable-undo) + ;; (setq disable-undo canna:*fence-mode*)) )) (set-marker canna:*region-start* nil) (set-marker canna:*region-end* nil) @@ -935,7 +997,8 @@ (string-match "on\\|t" (or (if running-xemacs - (x-get-resource "ReverseVideo" "reverseVideo" 'string) + (x-get-resource "ReverseVideo" + "reverseVideo" 'string) (x-get-resource "ReverseVideo" "reverseVideo")) ""))) 'reverse) ;$BH?E>$7$F$$$k$J$i(B 'reverse @@ -1287,7 +1350,7 @@ (defun canna:yomi-attr-on (start end) (if (overlayp canna:*yomi-overlay*) (move-overlay canna:*yomi-overlay* start end) - (overlay-put (setq canna:*yomi-overlay* (make-overlay start end nil t)) + (overlay-put (setq canna:*yomi-overlay* (make-overlay start end nil nil t)) 'face (if canna:color-p 'attr-yomi 'underline)) ) @@ -1302,7 +1365,8 @@ (defun canna:henkan-attr-on (start end) (if (overlayp canna:*henkan-overlay*) (move-overlay canna:*henkan-overlay* start end) - (overlay-put (setq canna:*henkan-overlay* (make-overlay start end nil t)) + (overlay-put (setq canna:*henkan-overlay* + (make-overlay start end nil nil t)) 'face (if canna:color-p 'attr-taishou 'region)) ) @@ -1317,7 +1381,8 @@ (defun canna:select-attr-on (start end) (if (overlayp canna:*select-overlay*) (move-overlay canna:*select-overlay* start end) - (overlay-put (setq canna:*select-overlay* (make-overlay start end nil t)) + (overlay-put (setq canna:*select-overlay* + (make-overlay start end nil nil t)) 'face 'attr-select)) ) @@ -1328,4 +1393,7 @@ ) ) + (provide 'canna) + +;;; canna.el ends here diff -r d101af7320b8 -r cca96a509cfe lisp/mule/chinese-hooks.el --- a/lisp/mule/chinese-hooks.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/chinese-hooks.el Mon Aug 13 09:25:29 2007 +0200 @@ -182,10 +182,10 @@ (let ((proc (get-buffer-process (current-buffer)))) (set-process-input-coding-system proc 'euc-china) (set-process-output-coding-system proc 'euc-china)))) - (set-buffer-file-coding-system-for-read 'autodetect) + (set-buffer-file-coding-system-for-read 'automatic-conversion) (set-default-buffer-file-coding-system 'euc-china) - (setq keyboard-coding-system 'euc-china) - (setq terminal-coding-system 'euc-china) + (setq keyboard-coding-system 'euc-china) + (setq terminal-coding-system 'euc-china) (when (eq 'x (device-type (selected-device))) (x-use-halfwidth-roman-font 'chinese-gb2312 "gb1988")))) ;; (when (featurep 'egg) diff -r d101af7320b8 -r cca96a509cfe lisp/mule/european-hooks.el --- a/lisp/mule/european-hooks.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/european-hooks.el Mon Aug 13 09:25:29 2007 +0200 @@ -93,10 +93,7 @@ (lambda () ;;(set-coding-category-system 'iso-8-designate 'iso-8859-1) ;;(set-coding-priority-list '(iso-8-designate iso-8-1)) - (set-default-buffer-file-coding-system 'no-conversion) ; iso-8859-1 ;;(setq locale-coding-system 'no-conversion) ; iso-8859-1 - (setq process-input-coding-system 'no-conversion) ; iso-8859-1 - (setq process-output-coding-system 'no-conversion) ; iso-8859-1 (set-default-buffer-file-coding-system 'no-conversion) ; iso-8859-1 (set-buffer-file-coding-system-for-read 'no-conversion) ; iso-8859-1 ;;(setq display-coding-system 'iso-8859-1) diff -r d101af7320b8 -r cca96a509cfe lisp/mule/japanese-hooks.el --- a/lisp/mule/japanese-hooks.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/japanese-hooks.el Mon Aug 13 09:25:29 2007 +0200 @@ -176,7 +176,7 @@ (let ((proc (get-buffer-process (current-buffer)))) (set-process-input-coding-system proc 'euc-japan) (set-process-output-coding-system proc 'euc-japan)))) - (set-buffer-file-coding-system-for-read 'autodetect) + (set-buffer-file-coding-system-for-read 'automatic-conversion) (set-default-buffer-file-coding-system 'euc-japan) (setq keyboard-coding-system 'euc-japan) (setq terminal-coding-system 'euc-japan) diff -r d101af7320b8 -r cca96a509cfe lisp/mule/korean-hooks.el --- a/lisp/mule/korean-hooks.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/korean-hooks.el Mon Aug 13 09:25:29 2007 +0200 @@ -94,7 +94,7 @@ (let ((proc (get-buffer-process (current-buffer)))) (set-process-input-coding-system proc 'euc-korea) (set-process-output-coding-system proc 'euc-korea)))) - (set-buffer-file-coding-system-for-read 'autodetect) + (set-buffer-file-coding-system-for-read 'automatic-conversion) (set-default-buffer-file-coding-system 'euc-korea) (setq keyboard-coding-system 'euc-korea) (setq terminal-coding-system 'euc-korea) diff -r d101af7320b8 -r cca96a509cfe lisp/mule/mule-coding.el --- a/lisp/mule/mule-coding.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/mule-coding.el Mon Aug 13 09:25:29 2007 +0200 @@ -167,7 +167,7 @@ ;;;; Definitions of predefined coding systems (make-coding-system - 'autodetect 'autodetect + 'automatic-conversion 'automatic-conversion "Automatic conversion." '(mnemonic "Auto")) diff -r d101af7320b8 -r cca96a509cfe lisp/mule/mule-files.el --- a/lisp/mule/mule-files.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/mule-files.el Mon Aug 13 09:25:29 2007 +0200 @@ -43,23 +43,7 @@ (define-obsolete-variable-alias 'file-coding-system 'buffer-file-coding-system) -(defvar coding-system-for-write nil - "Overriding coding system used when writing a file. -You should *bind* this, not set it. If this is non-nil, it specifies -the coding system that will be used when a file is wrote in, and -overrides `buffer-file-coding-system', -`insert-file-contents-pre-hook', etc. Use those variables instead of -this one for permanent changes to the environment.") - -(defvar coding-system-for-read nil - "Overriding coding system used when reading a file. -You should *bind* this, not set it. If this is non-nil, it specifies -the coding system that will be used when a file is read in, and -overrides `buffer-file-coding-system-for-read', -`buffer-file-coding-system-alist', etc. Use those variables instead -of this one for permanent changes to the environment.") - -(defvar buffer-file-coding-system-for-read 'autodetect +(defvar buffer-file-coding-system-for-read 'automatic-conversion "Coding system used when reading a file. This provides coarse-grained control; for finer-grained control, use `buffer-file-coding-system-alist'. From a Lisp program, if you wish @@ -176,7 +160,7 @@ (if (re-search-forward "^From" nil 'move) (beginning-of-line)) (setq end (point)) - (decode-coding-region start end 'autodetect)))))) + (decode-coding-region start end 'automatic-conversion)))))) (defun find-coding-system-magic-cookie () "Look for the coding-system magic cookie in the current buffer.\n" @@ -364,9 +348,10 @@ (setq return-val coding-system) (if (null (find-coding-system coding-system)) (progn - (message "Invalid coding-system (%s), using 'autodetect" - coding-system) - (setq coding-system 'autodetect))) + (message + "Invalid coding-system (%s), using 'automatic-conversion" + coding-system) + (setq coding-system 'automatic-conversion))) (setq return-val (insert-file-contents-internal filename visit beg end replace coding-system diff -r d101af7320b8 -r cca96a509cfe lisp/mule/mule-init.el --- a/lisp/mule/mule-init.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/mule-init.el Mon Aug 13 09:25:29 2007 +0200 @@ -128,10 +128,6 @@ (add-hook 'dired-mode-hook (lambda () - (make-local-variable 'process-output-coding-system) - (make-local-variable 'process-input-coding-system) - (setq process-output-coding-system pathname-coding-system) - (setq process-input-coding-system pathname-coding-system) (make-local-variable 'process-environment) (setenv "LC_MESSAGES" "C") (setenv "LC_TIME" "C")))) diff -r d101af7320b8 -r cca96a509cfe lisp/mule/mule-load.el --- a/lisp/mule/mule-load.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/mule/mule-load.el Mon Aug 13 09:25:29 2007 +0200 @@ -43,9 +43,9 @@ ; (load-gc "egg-wnn") ; (setq egg-default-startup-file "eggrc-wnn"))) -;(if (featurep 'canna) -; (progn -; (load-gc "canna"))) +;; (if (and (boundp 'CANNA) CANNA) +;; (load-gc "canna") +;; ) ;; Now load files to set up all the different languages/environments ;; that Mule knows about. diff -r d101af7320b8 -r cca96a509cfe lisp/oobr/br-ftr.el --- a/lisp/oobr/br-ftr.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/oobr/br-ftr.el Mon Aug 13 09:25:29 2007 +0200 @@ -9,7 +9,7 @@ ;; ORG: InfoDock Associates ;; ;; ORIG-DATE: 20-Aug-91 at 18:16:36 -;; LAST-MOD: 20-Feb-97 at 07:02:51 by Bob Weiner +;; LAST-MOD: 18-Mar-97 at 22:19:28 by Bob Weiner ;; ;; Copyright (C) 1991-1996, Free Software Foundation, Inc. ;; See the file BR-COPY for license information. @@ -191,7 +191,11 @@ (file)) (set-buffer (funcall br-find-file-noselect-function br-feature-tags-file)) (goto-char 1) - (if (search-forward feature-sig nil t) + ;; Add a newline to feature-sig to avoid matching to signatures that + ;; contain the desired signature's classname as a substring, e.g. when + ;; looking for a signature from Object, we don't want to match to + ;; ClassObject. + (if (search-forward (concat "\n" feature-sig) nil t) (setq file (br-feature-file-of-tag))) (set-buffer obuf) file)) @@ -415,7 +419,7 @@ "Return the file name of the file whose tag point is within. Assumes the tag table is the current buffer." (save-excursion - (search-backward " " nil t) + (search-backward "\f" nil t) (forward-line 1) (let ((start (point))) (end-of-line) @@ -429,7 +433,8 @@ result) (unwind-protect (progn - (set-buffer (funcall br-find-file-noselect-function br-feature-tags-file)) + (set-buffer + (funcall br-find-file-noselect-function br-feature-tags-file)) (setq result (br-feature-def-file feature-tag-regexp)) (if result (cons (br-feature-current) result))) (set-buffer obuf)))) diff -r d101af7320b8 -r cca96a509cfe lisp/oobr/br-start.el --- a/lisp/oobr/br-start.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/oobr/br-start.el Mon Aug 13 09:25:29 2007 +0200 @@ -9,7 +9,7 @@ ;; ORG: InfoDock Associates ;; ;; ORIG-DATE: 5-Sep-92 at 23:31:03 -;; LAST-MOD: 20-Feb-97 at 06:59:33 by Bob Weiner +;; LAST-MOD: 9-Apr-97 at 00:16:58 by Bob Weiner ;; ;; Copyright (C) 1992, 1993, 1994, 1997 Free Software Foundation, Inc. ;; See the file BR-COPY for license information. @@ -73,8 +73,14 @@ (defun oo-browser (&optional same-env-flag) "Prompt for an Environment and language over which to run the OO-Browser. Optional prefix argument SAME-ENV-FLAG means browse the current Environment, -if any, without prompting." - (interactive "P") +if any, without prompting. Otherwise, if called interactively, give the user +a choice whether to re-browse the last Environment or to browse a new one." + (interactive + (list (prog1 + (if (and (not current-prefix-arg) br-env-file br-lang-prefix) + (y-or-n-p (format "(OO-Browser): Browse %s again? " br-env-file)) + current-prefix-arg) + (message "")))) (if (and same-env-flag br-env-file br-lang-prefix) (funcall (intern-soft (concat br-lang-prefix "browse"))) (call-interactively 'br-env-browse))) diff -r d101af7320b8 -r cca96a509cfe lisp/oobr/br.el --- a/lisp/oobr/br.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/oobr/br.el Mon Aug 13 09:25:29 2007 +0200 @@ -9,7 +9,7 @@ ;; ORG: InfoDock Associates ;; ;; ORIG-DATE: 12-Dec-89 -;; LAST-MOD: 21-Feb-97 at 16:45:11 by Bob Weiner +;; LAST-MOD: 9-Apr-97 at 00:31:44 by Bob Weiner ;; ;; Copyright (C) 1989-1996 Free Software Foundation, Inc. ;; See the file BR-COPY for license information. @@ -991,8 +991,13 @@ ;; Too dangerous to include (br-editor-kill) here. ;; The user can invoke it manually if desired. ) - (and *br-prev-wconfig* (set-window-configuration *br-prev-wconfig*)) - (br-interrupt arg))) + ;; The following `let' clause is necessary since br-interrupt buries + ;; buffers and so must be called before the window configuration restore, + ;; but it also may set *br-prev-wconfig* to nil, so we have to cache its + ;; value. + (let ((wconfig *br-prev-wconfig*)) + (br-interrupt arg) + (if wconfig (set-window-configuration wconfig))))) (defun br-refresh () "Restore OO-Browser to its state upon startup." diff -r d101af7320b8 -r cca96a509cfe lisp/packages/add-log.el --- a/lisp/packages/add-log.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/add-log.el Mon Aug 13 09:25:29 2007 +0200 @@ -29,29 +29,47 @@ ;;; Code: -;;;###autoload -(defvar change-log-default-name nil - "*Name of a change log file for \\[add-change-log-entry].") +(defgroup change-log nil + "Change log maintenance" + :group 'tools + :prefix "change-log-" + :prefix "add-log-") + ;;;###autoload -(defvar add-log-current-defun-function nil +(defcustom change-log-default-name nil + "*Name of a change log file for \\[add-change-log-entry]." + :type '(choice (const :tag "default" nil) + string) + :group 'change-log) + +;;;###autoload +(defcustom add-log-current-defun-function nil "\ *If non-nil, function to guess name of current function from surrounding text. \\[add-change-log-entry] calls this function (if nil, `add-log-current-defun' -instead) with no arguments. It returns a string or nil if it cannot guess.") +instead) with no arguments. It returns a string or nil if it cannot guess." + :type 'boolean + :group 'change-log) ;;;###autoload -(defvar add-log-full-name nil +(defcustom add-log-full-name nil "*Full name of user, for inclusion in ChangeLog daily headers. -This defaults to the value returned by the `user-full-name' function.") +This defaults to the value returned by the `user-full-name' function." + :type '(choice (const :tag "Default" nil) + string) + :group 'change-log) ;; So that the dump-time value doesn't go into loaddefs.el with the autoload. (or add-log-full-name (setq add-log-full-name (user-full-name))) ;;;###autoload -(defvar add-log-mailing-address nil +(defcustom add-log-mailing-address nil "*Electronic mail address of user, for inclusion in ChangeLog daily headers. -This defaults to the value of `user-mail-address'.") +This defaults to the value of `user-mail-address'." + :type '(choice (const :tag "Default" nil) + string) + :group 'change-log) ;; So that the dump-time value doesn't go into loaddefs.el with the autoload. (or add-log-mailing-address @@ -333,9 +351,11 @@ (paragraph-start (concat paragraph-start "\\|\\s *\\s("))) (fill-region beg end justify))) -(defvar add-log-current-defun-header-regexp +(defcustom add-log-current-defun-header-regexp "^\\([A-Z][A-Z_ ]*[A-Z_]\\|[-_a-zA-Z]+\\)[ \t]*[:=]" - "*Heuristic regexp used by `add-log-current-defun' for unknown major modes.") + "*Heuristic regexp used by `add-log-current-defun' for unknown major modes." + :type 'regexp + :group 'change-log) ;;;###autoload (defun add-log-current-defun () diff -r d101af7320b8 -r cca96a509cfe lisp/packages/auto-save.el --- a/lisp/packages/auto-save.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/auto-save.el Mon Aug 13 09:25:29 2007 +0200 @@ -2,7 +2,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: auto-save.el -;; Version: $Revision: 1.2 $ +;; Version: $Revision: 1.3 $ ;; RCS: ;; Description: Safer autosaving with support for efs and /tmp. ;; This version of auto-save is designed to work with efs, @@ -11,7 +11,7 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defconst auto-save-version (substring "$Revision: 1.2 $" 11 -2) +(defconst auto-save-version (substring "$Revision: 1.3 $" 11 -2) "Version number of auto-save.") ;;; Copyright (C) 1992 by Sebastian Kremer @@ -99,7 +99,15 @@ ;;;; CUSTOMIZATION ===================================================== -(defvar auto-save-directory nil +(defgroup auto-save nil + "Autosaving with support for efs and /tmp" + :group 'data) + +(put 'auto-save-interval 'custom-type 'integer) +(put 'auto-save-interval 'factory-value '(300)) +(custom-add-to-group 'auto-save 'auto-save-interval 'custom-variable) + +(defcustom 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 @@ -140,25 +148,35 @@ as auto save file. See also variables `auto-save-directory-fallback', -`efs-auto-save' and `efs-auto-save-remotely'.") +`efs-auto-save' and `efs-auto-save-remotely'." + :type '(choice (const :tag "same as file" nil) + directory) + :group 'auto-save) -(defvar auto-save-hash-p nil + +(defcustom 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'.") +individually by doing `recover-file'." + :type 'boolean + :group 'auto-save) ;;; 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 +(defcustom 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.") +Special value 'always deletes those files silently." + :type '(choice (const :tag "on" t) + (const :tag "off" nil) + (const :tag "delete silently" always)) + :group 'auto-save) ;;;; end of customization diff -r d101af7320b8 -r cca96a509cfe lisp/packages/bookmark.el --- a/lisp/packages/bookmark.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/bookmark.el Mon Aug 13 09:25:29 2007 +0200 @@ -5,7 +5,7 @@ ;; Author: Karl Fogel ;; Maintainer: Karl Fogel ;; Created: July, 1993 -;; Author's Update Number: 2.6.14 +;; Author's Update Number: 2.6.14-x ;; Keywords: bookmarks, placeholders, annotations ;;; Summary: @@ -98,12 +98,19 @@ ;;; User Variables -(defvar bookmark-use-annotations nil - "*If non-nil, saving a bookmark will query for an annotation in a -buffer.") +(defgroup bookmark nil + "Setting, annotation and jumping to bookmarks" + :group 'matching) -(defvar bookmark-save-flag t +(defcustom bookmark-use-annotations nil + "*If non-nil, saving a bookmark will query for an annotation in a +buffer." + :type 'boolean + :group 'bookmark) + + +(defcustom bookmark-save-flag t "*Controls when Emacs saves bookmarks to a file. --> Nil means never save bookmarks, except when `bookmark-save' is explicitly called \(\\[bookmark-save]\). @@ -119,7 +126,9 @@ behavior.\) To specify the file in which to save them, modify the variable -bookmark-default-file, which is `~/.emacs.bmk' by default.") +bookmark-default-file, which is `~/.emacs.bmk' by default." + :type '(choice (const nil) (const t) integer) + :group 'bookmark) (defconst bookmark-old-default-file "~/.emacs-bkmrks" @@ -130,53 +139,69 @@ (defvar bookmark-file nil "Old name for `bookmark-default-file'.") -(defvar bookmark-default-file - (if bookmark-file +(defcustom bookmark-default-file + (if (and (boundp 'bookmark-file) bookmark-file) ;; In case user set `bookmark-file' in her .emacs: bookmark-file (if (eq system-type 'ms-dos) "~/emacs.bmk" ; Cannot have initial dot [Yuck!] "~/.emacs.bmk")) - "*File in which to save bookmarks by default.") + "*File in which to save bookmarks by default." + :type 'file + :group 'bookmark) -(defvar bookmark-version-control 'nospecial +(defcustom bookmark-version-control 'nospecial "*Whether or not to make numbered backups of the bookmark file. It can have four values: t, nil, `never', and `nospecial'. The first three have the same meaning that they do for the variable `version-control', and the final value `nospecial' means just -use the value of `version-control'.") +use the value of `version-control'." + :type '(choice (const t) (const nil) (const never) (const nospecial)) + :group 'bookmark) -(defvar bookmark-completion-ignore-case t - "*Non-nil means bookmark functions ignore case in completion.") +(defcustom bookmark-completion-ignore-case t + "*Non-nil means bookmark functions ignore case in completion." + :type 'boolean + :group 'bookmark) -(defvar bookmark-sort-flag t +(defcustom bookmark-sort-flag t "*Non-nil means that bookmarks will be displayed sorted by bookmark name. Otherwise they will be displayed in LIFO order (that is, most -recently set ones come first, oldest ones come last).") - - -(defvar bookmark-automatically-show-annotations t - "*Nil means don't show annotations when jumping to a bookmark.") +recently set ones come first, oldest ones come last)." + :type 'boolean + :group 'bookmark) -(defvar bookmark-bmenu-file-column 30 - "*Column at which to display filenames in a buffer listing bookmarks. -You can toggle whether files are shown with \\\\[bookmark-bmenu-toggle-filenames].") +(defcustom bookmark-automatically-show-annotations t + "*Nil means don't show annotations when jumping to a bookmark." + :type 'boolean + :group 'bookmark) -(defvar bookmark-bmenu-toggle-filenames t +(defcustom bookmark-bmenu-file-column 30 + "*Column at which to display filenames in a buffer listing bookmarks. +You can toggle whether files are shown with \\\\[bookmark-bmenu-toggle-filenames]." + :type 'integer + :group 'bookmark) + + +(defcustom bookmark-bmenu-toggle-filenames t "*Non-nil means show filenames when listing bookmarks. This may result in truncated bookmark names. To disable this, put the following in your .emacs: -\(setq bookmark-bmenu-toggle-filenames nil\)") +\(setq bookmark-bmenu-toggle-filenames nil\)" + :type 'boolean + :group 'bookmark) -(defvar bookmark-menu-length 70 - "*Maximum length of a bookmark name displayed on a popup menu.") +(defcustom bookmark-menu-length 70 + "*Maximum length of a bookmark name displayed on a popup menu." + :type 'integer + :group 'boolean) ;;; No user-serviceable parts beyond this point. diff -r d101af7320b8 -r cca96a509cfe lisp/packages/compile.el --- a/lisp/packages/compile.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/compile.el Mon Aug 13 09:25:29 2007 +0200 @@ -33,13 +33,23 @@ ;;; Code: -;;;###autoload -(defvar compilation-mode-hook nil - "*List of hook functions run by `compilation-mode' (see `run-hooks').") +(defgroup compilation nil + "Compilation buffer processing" + :group 'programming) + ;;;###autoload -(defvar compilation-window-height nil - "*Number of lines in a compilation window. If nil, use Emacs default.") +(defcustom compilation-mode-hook nil + "*List of hook functions run by `compilation-mode' (see `run-hooks')." + :type 'hook + :group 'compilation) + +;;;###autoload +(defcustom compilation-window-height nil + "*Number of lines in a compilation window. If nil, use Emacs default." + :type '(choice (const nil) + integer) + :group 'compilation) ;; XEmacs change (defvar compilation-error-list 'invalid ; only valid buffer-local @@ -72,17 +82,21 @@ found. See that variable for more info.") ;;;###autoload -(defvar compilation-buffer-name-function nil +(defcustom compilation-buffer-name-function nil "Function to compute the name of a compilation buffer. The function receives one argument, the name of the major mode of the compilation buffer. It should return a string. -nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.") +nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'." + :type 'function + :group 'compilation) ;;;###autoload -(defvar compilation-finish-function nil +(defcustom compilation-finish-function nil "*Function to call when a compilation process finishes. It is called with two arguments: the compilation buffer, and a string -describing how the process finished.") +describing how the process finished." + :type 'function + :group 'compilation) (defvar compilation-last-buffer nil "The most recent compilation buffer. @@ -96,10 +110,12 @@ minor-mode-alist))) ;; XEmacs change -(defvar compilation-always-signal-completion nil - "Always give an audible signal upon compilation completion. +(defcustom compilation-always-signal-completion nil + "*Always give an audible signal upon compilation completion. By default that signal is only given if the bottom of the compilation -buffer is not visible in its window.") +buffer is not visible in its window." + :type 'boolean + :group 'compilation) (defvar compilation-parsing-end nil "Position of end of buffer when last error messages were parsed.") @@ -109,8 +125,8 @@ (defvar compilation-num-errors-found) -(defvar compilation-error-regexp-systems-list 'all - "This is either the symbol `all', or a list of systems for which +(defcustom compilation-error-regexp-systems-list 'all + "*This is either the symbol `all', or a list of systems for which compilation error regexps should be included in `compilation-error-regexp-alist'. @@ -130,7 +146,9 @@ aix: the operating system ultrix: the operating system -See also the variable `compilation-error-regexp-alist-alist'.") +See also the variable `compilation-error-regexp-alist-alist'." + :type '(choice (const all) (repeat symbol)) + :group 'compilation) (defun compilation-build-compilation-error-regexp-alist () (interactive) @@ -333,29 +351,38 @@ (compilation-build-compilation-error-regexp-alist) -(defvar compilation-read-command t - "If not nil, M-x compile reads the compilation command to use. -Otherwise, M-x compile just uses the value of `compile-command'.") +(defcustom compilation-read-command t + "*If not nil, M-x compile reads the compilation command to use. +Otherwise, M-x compile just uses the value of `compile-command'." + :type 'boolean + :group 'compilation) -(defvar compilation-ask-about-save t - "If not nil, M-x compile asks which buffers to save before compiling. -Otherwise, it saves all modified buffers without asking.") +(defcustom compilation-ask-about-save t + "*If not nil, M-x compile asks which buffers to save before compiling. +Otherwise, it saves all modified buffers without asking." + :type 'boolean + :group 'compilation) (defvar grep-regexp-alist '(("^\\([a-zA-Z]?:?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 2)) "Regexp used to match grep hits. See `compilation-error-regexp-alist'.") -(defvar grep-command "grep -n " - "Last grep command used in \\[grep]; default for next grep.") +(defcustom grep-command "grep -n " + "*Last grep command used in \\[grep]; default for next grep." + :type 'string + :group 'compilation) ;;;###autoload -(defvar compilation-search-path '(nil) +(defcustom compilation-search-path '(nil) "*List of directories to search for source files named in error messages. Elements should be directory names, not file names of directories. -nil as an element means to try the default directory.") +nil as an element means to try the default directory." + :type '(repeat (choice (const :tag "Default" nil) + directory)) + :group 'compilation) -(defvar compile-command "make -k " - "Last shell command used to do a compilation; default for next compilation. +(defcustom compile-command "make -k " + "*Last shell command used to do a compilation; default for next compilation. Sometimes it is useful for files to supply local values for this variable. You might also use mode hooks to specify it in certain modes, like this: @@ -365,7 +392,9 @@ (progn (make-local-variable 'compile-command) (setq compile-command (concat \"make -k \" - buffer-file-name))))))") + buffer-file-name))))))" + :type 'string + :group 'compilation) (defvar compilation-enter-directory-regexp "[^\n]*: Entering directory `\\([^\n]*\\)'$" @@ -421,10 +450,16 @@ (put 'compilation-mode 'font-lock-defaults '(compilation-font-lock-keywords t)) -(defvar compilation-mouse-motion-initiate-parsing t - "When set to a non-nil value, mouse motion over the compilation/grep output -buffer may initiate parsing of the error messages or grep hits") - +(defcustom compilation-mouse-motion-initiate-parsing t + "*Should mouse motion over the compilation buffer initiate parsing? +When set to a non-nil value, mouse motion over the compilation/grep +buffer may initiate parsing of the error messages or grep hits. +When this is nil, errors and grep matches will no longer be +highlighted until they have been parsed, but may still be selected +with the center mouse button. This will then initiate parsing +and jump to the corresponding source line." + :type 'boolean + :group 'compilation) ;;;###autoload (defun compile (command) diff -r d101af7320b8 -r cca96a509cfe lisp/packages/crypt.el --- a/lisp/packages/crypt.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/crypt.el Mon Aug 13 09:25:29 2007 +0200 @@ -5,7 +5,7 @@ ;; Kyle E. Jones ;; Maintainer: Lawrence R. Dodd ;; Created: crypt.el in 1988, crypt++.el on 18 Jan 1993 -;; Version: 2.82 +;; Version: 2.83 ;; Date: 1994/03/31 12:30:17 ;; Keywords: extensions @@ -40,7 +40,7 @@ ;;; LCD Archive Entry: ;;; crypt++|Rod Whitby and Lawrence R. Dodd|dodd@roebling.poly.edu| ;;; Code for handling all sorts of compressed and encrypted files.| -;;; 1994/03/31 12:30:17|2.82|~/misc/crypt++.el.Z| +;;; 1994/03/31 12:30:17|2.83|~/misc/crypt++.el.Z| ;;; AVAILABLE: ;;; @@ -68,7 +68,7 @@ ;;; VERSION: ;;; -;;; Version: 2.82 +;;; Version: 2.83 ;;; Ident: crypt++.el,v 2.82 1994/03/31 12:30:17 dodd Exp ;;; Date: 1994/03/31 12:30:17 @@ -692,33 +692,49 @@ ;;; (crypt-encoded-disable-auto-save, crypt-encrypted-disable-auto-save): ;;; New user-defined variables. (crypt-encoded-mode, crypt-encrypted-mode): ;;; Use them. +;;; 2.83 - +;;; hniksic: Added custom. ;;; Code: ;;;; User definable variables. -(defvar crypt-encryption-type 'crypt +(defgroup crypt nil + "Handling compressed and encrypted files." + :group 'data) + +(defcustom crypt-encryption-type 'crypt "*Method of encryption. Must be an element of `crypt-encryption-alist.' -If you change this after crypt++ is loaded then do \\[crypt-rebuild-tables].") +If you change this after crypt++ is loaded then do \\[crypt-rebuild-tables]." + :type 'symbol + :group 'crypt) -(defvar crypt-encryption-file-extension nil +(defcustom crypt-encryption-file-extension nil "*Regexp for extension of files encrypted with `crypt-encryption-type.' Should be of the form \"\\\\(\\\\.foo\\\\)$\". nil says use default values in `crypt-encryption-alist.' If you change this after crypt++ is loaded then do -\\[crypt-rebuild-tables].") +\\[crypt-rebuild-tables]." + :type 'regexp + :group 'crypt) -(defvar crypt-never-ever-decrypt nil - "*t says never attempt to decrypt a buffer.") +(defcustom crypt-never-ever-decrypt nil + "*t says never attempt to decrypt a buffer." + :type 'boolean + :group 'crypt) -(defvar crypt-auto-write-buffer-encrypted nil +(defcustom crypt-auto-write-buffer-encrypted nil "*t says files with `crypt-encryption-alist' file extension auto-encrypted. -nil says query. See `crypt-auto-write-buffer.'") +nil says query. See `crypt-auto-write-buffer.'" + :type 'boolean + :group 'crypt) -(defvar crypt-confirm-password nil - "*t says confirm new passwords and when writing a newly encrypted buffer.") +(defcustom crypt-confirm-password nil + "*t says confirm new passwords and when writing a newly encrypted buffer." + :type 'boolean + :group 'crypt) -(defvar crypt-encoded-disable-auto-save t +(defcustom crypt-encoded-disable-auto-save t "*If t, turn off auto-save-mode for buffers which are encoded. If non-nil but not t, then no message is displayed. @@ -730,9 +746,13 @@ It is probably best to set this variable to nil and use buffer-local variables in files for which you don't actually care about autosaves. -Unencoded recovery data is better than none at all.") +Unencoded recovery data is better than none at all." + :type '(choice (const :tag "on" t) + (const :tag "off" nil) + (const :tag "no message" other)) + :group 'crypt) -(defvar crypt-encrypted-disable-auto-save t +(defcustom crypt-encrypted-disable-auto-save t "*If t, turn off auto-save-mode for buffers which are encrypted. If non-nil but not t, then no message is displayed. @@ -743,7 +763,11 @@ You might consider setting this variable to nil and use buffer-local variables in files for which security is more important than data -recovery.") +recovery." + :type '(choice (const :tag "on" t) + (const :tag "off" nil) + (const :tag "no message" other)) + :group 'crypt) ;;; ENCRYPTION @@ -881,16 +905,20 @@ ;;; ENCODING -(defvar crypt-auto-decode-buffer t +(defcustom crypt-auto-decode-buffer t "*t says buffers visiting encoded files will be decoded automatically. -nil means to ask before doing the decoding.") +nil means to ask before doing the decoding." + :type 'boolean + :group 'crypt) -(defvar crypt-auto-write-buffer nil +(defcustom crypt-auto-write-buffer nil "*t says save files with `crypt-encoding-alist' file extensions as encoded. nil says to ask before doing this encoding. Similarly, buffers originating from encoded files to be written to files not ending in `crypt-encoding-alist' file extensions will be written in plain format automatically. nil says to -ask before doing this decoding.") +ask before doing this decoding." + :type 'boolean + :group 'crypt) ;; This is an internal variable documented here and not in a DOCSTRING in ;; order to save memory. If this variable's value has been changed from its @@ -908,7 +936,7 @@ (put 'crypt-auto-write-answer-local 'permanent-local t) ; for v19 Emacs (put 'crypt-auto-write-answer-local 'preserved t) ; for kill-fix.el -(defvar crypt-query-if-interactive t +(defcustom crypt-query-if-interactive t "*t says ask when saving buffers where `crypt-encoded-mode' was toggled. nil says that even if filename extension is plain (i.e., not listed in `crypt-encoding-alist') buffer will be written in an encoded format without @@ -921,9 +949,11 @@ NOTE: if `(crypt-encoded-mode)' was not called interactively (the usual scenario) then the value of this variable has no effect on how the buffer is written to disk. In such a case `crypt-no-extension-implies-plain' is then -the relevant variable.") +the relevant variable." + :type 'boolean + :group 'crypt) -(defvar crypt-no-extension-implies-plain t +(defcustom crypt-no-extension-implies-plain t "*t says file extensions not in `crypt-encoding-alist' may be written plain. if `crypt-auto-write-buffer' is also t then any file ending in a plain extension is written in plain format automatically, otherwise query user. @@ -933,19 +963,25 @@ NOTE: (1) this does not effect find-file (C-x C-f) since that works with a magic regexp. (2) there is no way to distinguish between write-file and -save-buffer so nil will mean that neither will query.") +save-buffer so nil will mean that neither will query." + :type 'boolean + :group 'crypt) -(defvar crypt-freeze-vs-fortran t +(defcustom crypt-freeze-vs-fortran t "*t says `.F' file extension denotes a frozen file not a Fortran file. If you change this variable after crypt++ has been loaded then do -\\[crypt-rebuild-tables].") +\\[crypt-rebuild-tables]." + :type 'boolean + :group 'crypt) -(defvar crypt-compact-vs-C++ nil +(defcustom crypt-compact-vs-C++ nil "*t says `.C' file extension denotes a compacted file not a C++ file. If you change this variable after crypt++ has been loaded then do -\\[crypt-rebuild-tables].") +\\[crypt-rebuild-tables]." + :type 'boolean + :group 'crypt) -(defvar crypt-ignored-filenames nil +(defcustom crypt-ignored-filenames nil "*List of regexp filenames for which encoded to plain conversion is not done. A filename with a plain extension, in encoded format, that is matched by one of these elements will be saved in encoded format without a query for conversion to @@ -955,15 +991,21 @@ for RMAIL and VM which look for files `RMAIL' and `INBOX,' respectively, to store incoming mail. For example, the gzip extensions on `RMAIL.gz' and `INBOX.gz' can be removed, this variable set to '\(\"INBOX$\" \"RMAIL$\"\) and -no query about conversion to plain format will be made.") +no query about conversion to plain format will be made." + :type '(repeat regexp) + :group 'crypt) -(defvar crypt-default-encoding "gzip" +(defcustom crypt-default-encoding "gzip" "*Default encoding type as string used when `crypt-encoded-mode' is toggled. -Must match one of the elements of `crypt-encoding-alist'.") +Must match one of the elements of `crypt-encoding-alist'." + :type 'string + :group 'crypt) -(defvar crypt-dos-has-ctrl-z nil +(defcustom crypt-dos-has-ctrl-z nil "t if this buffer had a ctrl-z stripped from end, otherwise, nil. -Buffer local and set by `crypt-dos-to-unix-region'") +Buffer local and set by `crypt-dos-to-unix-region'" + :type 'boolean + :group 'crypt) (make-variable-buffer-local 'crypt-dos-has-ctrl-z) (setq-default crypt-dos-has-ctrl-z nil) (put 'crypt-dos-has-ctrl-z 'permanent-local t) ; for v19 Emacs @@ -1916,7 +1958,7 @@ (if crypt-dos-has-ctrl-z (replace-match "")))))))) (defun crypt-unix-to-dos-region (start end) - "Converts region from START to END, from unix to os format. + "Converts region from START to END, from unix to dos format. Replaces \"\\n\" with \"\\r\\n\" and adds a ^Z at end of file if `crypt-dos-has-ctrl-z' is non-nil." (save-excursion @@ -2015,9 +2057,11 @@ (add-hook 'kill-buffer-hook 'crypt-forget-encryption-key) -(defvar crypt-forget-passwd-timeout (* 60 60) +(defcustom crypt-forget-passwd-timeout (* 60 60) "*Do not retain passwords for encrypted buffers more than this many seconds. -If nil, keep them indefinitely.") +If nil, keep them indefinitely." + :type '(choice integer (const :tag "indefinite" nil)) + :group 'crypt) (defun crypt-reset-passwd-timer () (if (fboundp 'get-itimer) ; XEmacs, or anything with itimer.el loaded. @@ -2392,14 +2436,18 @@ ;;; Code for conditionally decoding/decrypting an inserted file -(defvar crypt-bind-insert-file t +(defcustom crypt-bind-insert-file t "*t value means bind `crypt-insert-file' over `insert-file'. If you wish to change this variable after crypt++ has been loaded then do -\\[crypt-bind-insert-file].") +\\[crypt-bind-insert-file]." + :type 'boolean + :group 'crypt) -(defvar crypt-auto-decode-insert nil +(defcustom crypt-auto-decode-insert nil "*t says decode/decrypt files that are inserted with `crypt-insert-file'. -nil says to ask before doing this.") +nil says to ask before doing this." + :type 'boolean + :group 'crypt) ;;; Bind `crypt-insert-file' over wherever `insert-file' is bound? (defun crypt-bind-insert-file () diff -r d101af7320b8 -r cca96a509cfe lisp/packages/dabbrev.el --- a/lisp/packages/dabbrev.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/dabbrev.el Mon Aug 13 09:25:29 2007 +0200 @@ -98,43 +98,61 @@ ;;---------------------------------------------------------------- ;; Customization variables ;;---------------------------------------------------------------- -(defvar dabbrev-backward-only nil - "*If non-nil, `dabbrev-expand' only looks backwards.") + +(defgroup dabbrev nil + "Dynamic Abbreviations" + :tag "Dynamic Abbreviations" + :group 'abbrev) -(defvar dabbrev-limit nil - "*Limits region searched by `dabbrev-expand' to this many chars away.") +(defcustom dabbrev-backward-only nil + "*If non-nil, `dabbrev-expand' only looks backwards." + :type 'boolean + :group 'dabbrev) -(defvar dabbrev-abbrev-skip-leading-regexp nil +(defcustom dabbrev-limit nil + "*Limits region searched by `dabbrev-expand' to this many chars away." + :type '(choice (const :tag "off" nil) + integer) + :group 'dabbrev) + +(defcustom dabbrev-abbrev-skip-leading-regexp nil "*Regexp for skipping leading characters of an abbreviation. Example: Set this to \"\\\\$\" for programming languages in which variable names may appear with or without a leading `$'. \(For example, in Makefiles.) -Set this to nil if no characters should be skipped.") +Set this to nil if no characters should be skipped." + :type '(choice regexp + (const :tag "off" nil)) + :group 'dabbrev) ;; XEmacs change: The old defaults are just too obnoxious. Rarely ;; do you actually want the case-folding behavior here, even though ;; it's useful to have case-fold-search set to t most of the time. -(defvar dabbrev-case-fold-search nil ;;'case-fold-search +(defcustom dabbrev-case-fold-search nil ;;'case-fold-search "*Non-nil if dabbrev searches should ignore case. A value of nil means case is significant. The value of this variable is an expression; it is evaluated and the resulting value determines the decision. For example: setting this to `case-fold-search' means evaluate that -variable to see whether its value is nil.") +variable to see whether its value is nil." + :type 'sexp + :group 'dabbrev) -(defvar dabbrev-upcase-means-case-search nil +(defcustom dabbrev-upcase-means-case-search nil "*The significance of an uppercase character in an abbreviation. nil means case fold search, non-nil means case sensitive search. This variable has an effect only when the value of -`dabbrev-case-fold-search' evaluates to t.") +`dabbrev-case-fold-search' evaluates to t." + :type 'boolean + :group 'dabbrev) ;; XEmacs change: likewise here. ;; I recommend that you set this to nil. -(defvar dabbrev-case-replace nil ;;'case-replace +(defcustom dabbrev-case-replace nil ;;'case-replace "*Non-nil means dabbrev should preserve case when expanding the abbreviation. More precisely, it preserves the case pattern of the abbreviation as you typed it--as opposed to the case pattern of the expansion that is copied. @@ -144,9 +162,11 @@ variable to see if its value is t or nil. This variable has an effect only when the value of -`dabbrev-case-fold-search' evaluates to t.") +`dabbrev-case-fold-search' evaluates to t." + :type 'sexp + :group 'dabbrev) -(defvar dabbrev-abbrev-char-regexp nil +(defcustom dabbrev-abbrev-char-regexp nil "*Regexp to recognize a character in an abbreviation or expansion. This regexp will be surrounded with \\\\( ... \\\\) when actually used. @@ -166,9 +186,12 @@ expanding `yes-or-no-' signals an error because `-' is not part of a word; but expanding `yes-or-no' looks for a word starting with `no'. -The recommended value is \"\\\\sw\\\\|\\\\s_\".") +The recommended value is \"\\\\sw\\\\|\\\\s_\"." + :type '(choice (const nil) + regexp) + :group 'dabbrev) -(defvar dabbrev-check-all-buffers t +(defcustom dabbrev-check-all-buffers t "*Non-nil means dabbrev package should search *all* buffers. Dabbrev always searches the current buffer first. Then, if @@ -176,9 +199,11 @@ designated by `dabbrev-select-buffers-function'. Then, if `dabbrev-check-all-buffers' is non-nil, dabbrev searches -all the other buffers.") +all the other buffers." + :type 'boolean + :group 'dabbrev) -(defvar dabbrev-check-other-buffers t +(defcustom dabbrev-check-other-buffers t "*Should \\[dabbrev-expand] look in other buffers?\ nil: Don't look in other buffers. @@ -188,7 +213,11 @@ the current buffer, then ask the user whether to look in other buffers too. -The default value is t.") +The default value is t." + :type '(choice (const :tag "off" nil) + (const :tag "on" t) + (const :tag "ask" other)) + :group 'dabbrev) ;; I guess setting this to a function that selects all C- or C++- ;; mode buffers would be a good choice for a debugging buffer, @@ -201,7 +230,7 @@ A mode setting this variable should make it buffer local.") -(defvar dabbrev-friend-buffer-function 'dabbrev--same-major-mode-p +(defcustom dabbrev-friend-buffer-function 'dabbrev--same-major-mode-p "*A function to decide whether dabbrev should search OTHER-BUFFER. The function should take one argument, OTHER-BUFFER, and return non-nil if that buffer should be searched. Have a look at @@ -211,9 +240,11 @@ the value of `dabbrev-select-buffers-function' uses it. The function `dabbrev--select-buffers' is one function you can use here. -A mode setting this variable should make it buffer local.") +A mode setting this variable should make it buffer local." + :type 'function + :group 'dabbrev) -(defvar dabbrev-search-these-buffers-only nil +(defcustom dabbrev-search-these-buffers-only nil "If non-nil, a list of buffers which dabbrev should search. If this variable is non-nil, dabbrev will only look in these buffers. It will not even look in the current buffer if it is not a member of diff -r d101af7320b8 -r cca96a509cfe lisp/packages/diff.el --- a/lisp/packages/diff.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/diff.el Mon Aug 13 09:25:29 2007 +0200 @@ -2,7 +2,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: diff.el -;; Version: $Revision: 1.4 $ +;; Version: $Revision: 1.5 $ ;; Author: This file is based on diff.el by ;; sunpitt!wpmstr!fbresz@Sun.COM 1/27/89. ;; It has been completely rewritten in July 1994 by @@ -39,16 +39,27 @@ ;;; User Variables +(defgroup diff nil + "Handling output from Unix diff utility" + :group 'tools) + ;; should be in to loaddefs.el now. ;;;###autoload -(defvar diff-switches "-c" - "*A list of switches (strings) to pass to the diff program.") +(defcustom diff-switches "-c" + "*A list of switches (strings) to pass to the diff program." + :type '(choice string + (repeat string)) + :group 'diff) -(defvar diff-do-narrow nil - "*If non-nil diff buffers are initialized narrowed to each difference.") +(defcustom diff-do-narrow nil + "*If non-nil diff buffers are initialized narrowed to each difference." + :type 'boolean + :group 'diff) -(defvar diff-load-hooks nil - "Hooks to run after loading diff.el") +(defcustom diff-load-hooks nil + "Hooks to run after loading diff.el" + :type 'hook + :group 'diff) ;;; Internal variables diff -r d101af7320b8 -r cca96a509cfe lisp/packages/etags.el --- a/lisp/packages/etags.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/etags.el Mon Aug 13 09:25:29 2007 +0200 @@ -817,17 +817,6 @@ (require 'backquote) -(defmacro with-caps-disable-folding (string &rest body) "\ -Eval BODY with `case-fold-search' let to nil if STRING contains -uppercase letters and `search-caps-disable-folding' is t." - `(let ((case-fold-search - (if (and case-fold-search search-caps-disable-folding) - (isearch-no-upper-case-p ,string) - case-fold-search))) - ,@body)) -(put 'with-caps-disable-folding 'lisp-indent-function 1) -(put 'with-caps-disable-folding 'edebug-form-spec '(form body)) - (defun find-tag-internal (tagname) (let ((next (null tagname)) (exact (or tags-always-exact (consp tagname))) @@ -1225,7 +1214,8 @@ ;; to the beginning of it so perform-replace ;; will see it. (progn (goto-char (match-beginning 0)) t))) - tags-loop-operate (list 'perform-replace from to t t delimited)) + tags-loop-operate (list 'perform-replace from to t t + (not (null delimited)))) (tags-loop-continue (or file-list-form t))) ;; Miscellaneous diff -r d101af7320b8 -r cca96a509cfe lisp/packages/filladapt.el --- a/lisp/packages/filladapt.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/filladapt.el Mon Aug 13 09:25:29 2007 +0200 @@ -21,7 +21,7 @@ ;; LCD Archive Entry: ;; filladapt|Kyle Jones|kyle_jones@wonderworks.com| ;; Minor mode to adaptively set fill-prefix and overload filling functions| -;; 10-June-1996|2.09|~/packages/filladapt.el| +;; 10-June-1996|2.10|~/packages/filladapt.el| ;; These functions enhance the default behavior of Emacs' Auto Fill ;; mode and the commands fill-paragraph, lisp-fill-paragraph, @@ -72,19 +72,40 @@ (provide 'filladapt) -(defvar filladapt-version "2.09" +;; BLOB to make custom stuff work even without customize +(eval-and-compile + (condition-case () + (require 'custom) + (error nil)) + (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) + nil ;; We've got what we needed + ;; We have the old custom-library, hack around it! + (defmacro defgroup (&rest args) + nil) + (defmacro defcustom (var value doc &rest args) + (` (defvar (, var) (, value) (, doc)))))) + +(defgroup filladapt nil + "Enhanced filling" + :group 'editing) + +(defvar filladapt-version "2.10" "Version string for filladapt.") -(defvar filladapt-mode nil +(defcustom filladapt-mode nil "*Non-nil means that Filladapt minor mode is enabled. -Use the filladapt-mode command to toggle the mode on/off.") +Use the filladapt-mode command to toggle the mode on/off." + :type 'boolean + :group 'filladapt) (make-variable-buffer-local 'filladapt-mode) -(defvar filladapt-mode-line-string " Filladapt" +(defcustom filladapt-mode-line-string " Filladapt" "*String to display in the modeline when Filladapt mode is active. -Set this to nil if you don't want a modeline indicator for Filladapt.") +Set this to nil if you don't want a modeline indicator for Filladapt." + :type 'string + :group 'filladapt) -(defvar filladapt-fill-column-tolerance nil +(defcustom filladapt-fill-column-tolerance nil "*Tolerate filled paragraph lines ending this far from the fill column. If any lines other than the last paragraph line end at a column less than fill-column - filladapt-fill-column-tolerance, fill-column will @@ -94,17 +115,24 @@ A nil value means behave normally, that is, don't try refilling paragraphs to make filled line lengths fit within any particular -range.") +range." + :type '(choice (const nil) + integer) + :group 'filladapt) -(defvar filladapt-fill-column-forward-fuzz 5 +(defcustom filladapt-fill-column-forward-fuzz 5 "*Try values from fill-column to fill-column plus this variable when trying to make filled paragraph lines fall with the tolerance -range specified by filladapt-fill-column-tolerance.") +range specified by filladapt-fill-column-tolerance." + :type 'integer + :group 'filladapt) -(defvar filladapt-fill-column-backward-fuzz 5 +(defcustom filladapt-fill-column-backward-fuzz 5 "*Try values from fill-column to fill-column minus this variable when trying to make filled paragraph lines fall with the tolerance -range specified by filladapt-fill-column-tolerance.") +range specified by filladapt-fill-column-tolerance." + :type 'integer + :group 'filladapt) ;; install on minor-mode-alist (or (assq 'filladapt-mode minor-mode-alist) @@ -112,7 +140,7 @@ 'filladapt-mode-line-string) minor-mode-alist))) -(defvar filladapt-token-table +(defcustom filladapt-token-table '( ;; this must be first ("^" beginning-of-line) @@ -197,9 +225,11 @@ Matching is done case-sensitively. The corresponding SYM is added to the list, point is moved to (match-end 0) and the process is repeated. The process ends when there is no REGEXP in -the table that matches what is at point.") +the table that matches what is at point." + :type '(repeat (list regexp symbol)) + :group 'filladapt) -(defvar filladapt-not-token-table +(defcustom filladapt-not-token-table '( "[Ee].g." "[Ii].e." @@ -212,9 +242,11 @@ matches what is at point then the token generator gives up and doesn't try any of the regexps in filladapt-token-table. -Regexp matching is done case-sensitively.") +Regexp matching is done case-sensitively." + :type '(repeat regexp) + :group 'filladapt) -(defvar filladapt-token-match-table +(defcustom filladapt-token-match-table '( (citation-> citation->) (supercite-citation supercite-citation) @@ -239,9 +271,11 @@ (SYM [SYM1 [SYM2 ...]]) The first symbol SYM is the token, subsequent symbols are the -tokens that SYM will match.") +tokens that SYM will match." + :type '(repeat (repeat symbol)) + :group 'filladapt) -(defvar filladapt-token-match-many-table +(defcustom filladapt-token-match-many-table '( space ) @@ -249,18 +283,22 @@ If one of these tokens appears in a token list, it will eat all matching tokens in a token list being matched against it until it encounters a token that doesn't match or a token that ends on -a greater column number.") +a greater column number." + :type '(repeat symbol) + :group 'filladapt) -(defvar filladapt-token-paragraph-start-table +(defcustom filladapt-token-paragraph-start-table '( bullet ) "List of tokens that indicate the start of a paragraph. If parsing a line generates a token list containing one of these tokens, then the line is considered to be the start of a -paragraph.") +paragraph." + :type '(repeat symbol) + :group 'filladapt) -(defvar filladapt-token-conversion-table +(defcustom filladapt-token-conversion-table '( (citation-> . exact) (supercite-citation . exact) @@ -283,7 +321,10 @@ `exact' means copy the token's string directly into the fill prefix. `spaces' means convert all characters in the token string that are not a TAB or a space into spaces and copy the resulting string into - the fill prefix.") + the fill prefix." + :type '(repeat (cons symbol (choice (const exact) + (const spaces)))) + :group 'filladapt) (defvar filladapt-function-table (let ((assoc-list @@ -300,8 +341,10 @@ assoc-list ) "Table containing the old function definitions that filladapt usurps.") -(defvar filladapt-fill-paragraph-post-hook nil - "Hooks run after filladapt runs fill-paragraph.") +(defcustom filladapt-fill-paragraph-post-hook nil + "Hooks run after filladapt runs fill-paragraph." + :type 'hook + :group 'filladapt) (defvar filladapt-inside-filladapt nil "Non-nil if the filladapt version of a fill function executing. @@ -310,7 +353,7 @@ fill-region-as-paragraph -> fill-paragraph -> fill-region-as-paragraph ...") -(defvar filladapt-debug nil +(defcustom filladapt-debug nil "Non-nil means filladapt debugging is enabled. Use the filladapt-debug command to turn on debugging. @@ -320,7 +363,9 @@ using filladapt-debug-indentation-face-1 and filladapt-debug-indentation-face-2. b. display the current paragraph using the face specified by - filladapt-debug-paragraph-face.") + filladapt-debug-paragraph-face." + :type 'boolean + :group 'filladapt) (if filladapt-debug (add-hook 'post-command-hook 'filladapt-display-debug-info-maybe)) diff -r d101af7320b8 -r cca96a509cfe lisp/packages/gnuserv.el --- a/lisp/packages/gnuserv.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/gnuserv.el Mon Aug 13 09:25:29 2007 +0200 @@ -62,6 +62,13 @@ +(defgroup gnuserv nil + "Lisp interface between Emacs and gnuserv" + :prefix "server-" + :group 'processes + :group 'terminals) + + (defconst gnuserv-rcs-header-id "!Header: gnuserv.el,v 2.1 95/02/16 12:00:16 arup alpha !") @@ -78,29 +85,39 @@ If nil, then a new frame is created for each file edited. This variable has no effect in XEmacs versions older than 19.9.") -(defvar server-done-function 'kill-buffer +(defcustom server-done-function 'kill-buffer "*A function of one argument, a buffer, which removes the buffer after editing. Functions such as 'kill-buffer' and 'bury-buffer' are good values. See also -`server-done-temp-file-function'") +`server-done-temp-file-function'" + :type 'function + :group 'gnuserv) -(defvar server-done-temp-file-function 'kill-buffer +(defcustom server-done-temp-file-function 'kill-buffer "*A function of one argument, a buffer, which removes the buffer after editing a temporary file. Functions such as 'kill-buffer' and 'bury-buffer' are -good values. See also `server-done-function'") +good values. See also `server-done-function'" + :type 'function + :group 'gnuserv) -(defvar server-program "gnuserv" - "*The program to use as the edit server") +(defcustom server-program "gnuserv" + "*The program to use as the edit server" + :type 'string + :group 'gnuserv) - (defvar server-visit-hook nil - "*List of hooks to call when visiting a file for the Emacs server.") +(defcustom server-visit-hook nil + "*List of hooks to call when visiting a file for the Emacs server." + :type 'hook + :group 'gnuserv) ;; defined by server.el but obsolete? ;; (defvar server-switch-hook nil ;; "*List of hooks to call when switching to a buffer for the Emacs server.") -(defvar server-done-hook nil - "*List of hooks to call when done editing a buffer for the Emacs server.") +(defcustom server-done-hook nil + "*List of hooks to call when done editing a buffer for the Emacs server." + :type 'hook + :group 'gnuserv) (defvar server-process nil @@ -121,21 +138,27 @@ that can be given to the server process to identify a client. When a buffer is killed, it is removed from this list.") -(defvar server-kill-quietly nil +(defcustom server-kill-quietly nil "If this variable is set then don't confirm kills of buffers with - clients attached") +clients attached" + :type 'boolean + :group 'gnuserv) (defvar server-buffer-clients nil "List of client ids for clients requesting editing of the current buffer.") -(defvar server-temp-file-regexp "^/tmp/Re\\|/draft$" +(defcustom server-temp-file-regexp "^/tmp/Re\\|/draft$" "*Regexp which should match filenames of temporary files which are deleted and reused after each edit -by the programs that invoke the emacs server.") +by the programs that invoke the emacs server." + :type 'regexp + :group 'gnuserv) -(defvar server-make-temp-file-backup nil - "Non-nil makes the server backup temporary files also") +(defcustom server-make-temp-file-backup nil + "Non-nil makes the server backup temporary files also" + :type 'regexp + :group 'gnuserv) (make-variable-buffer-local 'server-buffer-clients) (setq-default server-buffer-clients nil) diff -r d101af7320b8 -r cca96a509cfe lisp/packages/info.el --- a/lisp/packages/info.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/info.el Mon Aug 13 09:25:29 2007 +0200 @@ -288,13 +288,25 @@ ;; Removed any pretense of ever referencing Info-directory since it ;; wasn't working anyhow. +;; Modified 4/5/97 by Tomasz J. Cholewo: +;; +;; Modified Info-search to use with-caps-disable-folding + ;; Code: -(defvar Info-inhibit-toolbar nil - "*Non-nil means don't use the specialized Info toolbar.") +(defgroup info nil + "Info subsystem" + :group 'help) -(defvar Info-novice nil - "*Non-nil means to ask for confirmation before switching Info files.") +(defcustom Info-inhibit-toolbar nil + "*Non-nil means don't use the specialized Info toolbar." + :type 'boolean + :group 'info) + +(defcustom Info-novice nil + "*Non-nil means to ask for confirmation before switching Info files." + :type 'boolean + :group 'info) (defvar Info-history nil "List of info nodes user has visited. @@ -304,35 +316,49 @@ "Non-nil if Info-find-node should modify Info-history. This is for use only by certain internal Info routines.") -(defvar Info-enable-edit nil +(defcustom Info-enable-edit nil "*Non-nil means the \\\\[Info-edit] command in Info can edit the current node. This is convenient if you want to write info files by hand. However, we recommend that you not do this. It is better to write a Texinfo file and generate the Info file from that, -because that gives you a printed manual as well.") +because that gives you a printed manual as well." + :type 'boolean + :group 'info) -(defvar Info-enable-active-nodes t +(defcustom Info-enable-active-nodes t "*Non-nil allows Info to execute Lisp code associated with nodes. -The Lisp code is executed when the node is selected.") +The Lisp code is executed when the node is selected." + :type 'boolean + :group 'info) -(defvar Info-restoring-point t - "*Non-nil means to restore the cursor position when re-entering a node.") +(defcustom Info-restoring-point t + "*Non-nil means to restore the cursor position when re-entering a node." + :type 'boolean + :group 'info) -(defvar Info-auto-advance 'twice +(defcustom Info-auto-advance 'twice "*Control what SPC and DEL do when they can't scroll any further. If nil, they beep and remain in the current node. If t, they move to the next node (like Info-global-next/prev). -If anything else, they must be pressed twice to move to the next node.") +If anything else, they must be pressed twice to move to the next node." + :type '(radio (const :tag "off" nil) + (const :tag "advance" t) + (const :tag "confirm" twice)) + :group 'info) -(defvar Info-fontify t +(defcustom Info-fontify t "*Non-nil enables font features in XEmacs. -This variable is ignored unless running under XEmacs.") +This variable is ignored unless running under XEmacs." + :type 'boolean + :group 'info) -(defvar Info-default-directory-list nil - "List of default directories to search for Info documentation files. +(defcustom Info-default-directory-list nil + "*List of default directories to search for Info documentation files. This value is used as the default for `Info-directory-list'. It is set -in startup.el.") +in startup.el." + :type '(repeat directory) + :group 'info) (defvar Info-directory-list (let ((path (getenv "INFOPATH"))) @@ -389,10 +415,12 @@ "List of possible matches for last Info-index command.") (defvar Info-index-first-alternative nil) -(defvar Info-annotations-path '("~/.infonotes" "/usr/lib/info.notes") +(defcustom Info-annotations-path '("~/.infonotes" "/usr/lib/info.notes") "*Names of files that contain annotations for different Info nodes. By convention, the first one should reside in your personal directory. -The last should be a world-writable \"public\" annotations file.") +The last should be a world-writable \"public\" annotations file." + :type '(repeat file) + :group 'info) (defvar Info-standalone nil "Non-nil if Emacs was started solely as an Info browser.") @@ -975,62 +1003,63 @@ (if (equal regexp "") (setq regexp Info-last-search) (setq Info-last-search regexp)) - (let ((found ()) - (onode Info-current-node) - (ofile Info-current-file) - (opoint (point)) - (osubfile Info-current-subfile)) - (save-excursion - (save-restriction - (widen) - (if (null Info-current-subfile) - (progn (re-search-forward regexp) (setq found (point))) - (condition-case nil - (progn (re-search-forward regexp) (setq found (point))) - (search-failed nil))))) - (if (not found) ;can only happen in subfile case -- else would have erred - (unwind-protect - (let ((list ())) - (set-buffer (marker-buffer Info-tag-table-marker)) - (goto-char (point-min)) - (search-forward "\n\^_\nIndirect:") - (save-restriction - (narrow-to-region (point) - (progn (search-forward "\n\^_") - (1- (point)))) - (goto-char (point-min)) - (search-forward (concat "\n" osubfile ": ")) - (beginning-of-line) - (while (not (eobp)) - (re-search-forward "\\(^.*\\): [0-9]+$") - (goto-char (+ (match-end 1) 2)) - (setq list (cons (cons (read (current-buffer)) - (buffer-substring (match-beginning 1) - (match-end 1))) - list)) - (goto-char (1+ (match-end 0)))) - (setq list (nreverse list) - list (cdr list))) - (while list - (message "Searching subfile %s..." (cdr (car list))) - (Info-read-subfile (car (car list))) - (setq list (cdr list)) - (goto-char (point-min)) - (if (re-search-forward regexp nil t) - (setq found (point) list ()))) - (if found - (message "") - (signal 'search-failed (list regexp)))) - (if (not found) - (progn (Info-read-subfile opoint) - (goto-char opoint) - (Info-select-node))))) - (widen) - (goto-char found) - (Info-select-node) - (or (and (equal onode Info-current-node) - (equal ofile Info-current-file)) - (Info-history-add ofile onode opoint)))) + (with-caps-disable-folding regexp + (let ((found ()) + (onode Info-current-node) + (ofile Info-current-file) + (opoint (point)) + (osubfile Info-current-subfile)) + (save-excursion + (save-restriction + (widen) + (if (null Info-current-subfile) + (progn (re-search-forward regexp) (setq found (point))) + (condition-case nil + (progn (re-search-forward regexp) (setq found (point))) + (search-failed nil))))) + (if (not found) ;can only happen in subfile case -- else would have erred + (unwind-protect + (let ((list ())) + (set-buffer (marker-buffer Info-tag-table-marker)) + (goto-char (point-min)) + (search-forward "\n\^_\nIndirect:") + (save-restriction + (narrow-to-region (point) + (progn (search-forward "\n\^_") + (1- (point)))) + (goto-char (point-min)) + (search-forward (concat "\n" osubfile ": ")) + (beginning-of-line) + (while (not (eobp)) + (re-search-forward "\\(^.*\\): [0-9]+$") + (goto-char (+ (match-end 1) 2)) + (setq list (cons (cons (read (current-buffer)) + (buffer-substring (match-beginning 1) + (match-end 1))) + list)) + (goto-char (1+ (match-end 0)))) + (setq list (nreverse list) + list (cdr list))) + (while list + (message "Searching subfile %s..." (cdr (car list))) + (Info-read-subfile (car (car list))) + (setq list (cdr list)) + (goto-char (point-min)) + (if (re-search-forward regexp nil t) + (setq found (point) list ()))) + (if found + (message "") + (signal 'search-failed (list regexp)))) + (if (not found) + (progn (Info-read-subfile opoint) + (goto-char opoint) + (Info-select-node))))) + (widen) + (goto-char found) + (Info-select-node) + (or (and (equal onode Info-current-node) + (equal ofile Info-current-file)) + (Info-history-add ofile onode opoint))))) ;; Extract the value of the node-pointer named NAME. ;; If there is none, use ERRORNAME in the error message; diff -r d101af7320b8 -r cca96a509cfe lisp/packages/ispell.el --- a/lisp/packages/ispell.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/ispell.el Mon Aug 13 09:25:29 2007 +0200 @@ -315,32 +315,47 @@ ;;; Code: -(defvar ispell-highlight-p t - "*Highlight spelling errors when non-nil.") +(defgroup ispell nil + "Spell checking using ispell" + :group 'processes) + -(defvar ispell-highlight-face 'highlight +(defcustom ispell-highlight-p t + "*Highlight spelling errors when non-nil." + :type 'boolean + :group 'ispell) + +(defcustom ispell-highlight-face 'highlight "*The face used for Ispell highlighting. For Emacses with overlays. Possible values are `highlight', `modeline', `secondary-selection', `region', and `underline'. This variable can be set by the user to whatever face they desire. It's most convenient if the cursor color and highlight color are -slightly different.") - -(defvar ispell-check-comments t - "*If nil, don't check spelling of comments.") +slightly different." + :type 'face + :group 'ispell) -(defvar ispell-query-replace-choices nil +(defcustom ispell-check-comments t + "*If nil, don't check spelling of comments." + :type 'boolean + :group 'ispell) + +(defcustom ispell-query-replace-choices nil "*Corrections made throughout region when non-nil. -Uses `query-replace' (\\[query-replace]) for corrections.") +Uses `query-replace' (\\[query-replace]) for corrections." + :type 'boolean + :group 'ispell) -(defvar ispell-skip-tib nil +(defcustom ispell-skip-tib nil "*Does not spell check `tib' bibliography references when non-nil. Skips any text between strings matching regular expressions `ispell-tib-ref-beginning' and `ispell-tib-ref-end'. TeX users beware: Any field starting with [. will skip until a .] -- even your whole buffer -- unless you set `ispell-skip-tib' to nil. That includes -a [.5mm] type of number....") +a [.5mm] type of number...." + :type 'boolean + :group 'ispell) (defvar ispell-tib-ref-beginning "[[<]\\." "Regexp matching the beginning of a Tib reference.") @@ -348,18 +363,24 @@ (defvar ispell-tib-ref-end "\\.[]>]" "Regexp matching the end of a Tib reference.") -(defvar ispell-keep-choices-win t +(defcustom ispell-keep-choices-win t "*When not nil, the `*Choices*' window remains for spelling session. -This minimizes redisplay thrashing.") +This minimizes redisplay thrashing." + :type 'boolean + :group 'ispell) -(defvar ispell-choices-win-default-height 2 +(defcustom ispell-choices-win-default-height 2 "*The default size of the `*Choices*' window, including status line. -Must be greater than 1.") +Must be greater than 1." + :type 'integer + :group 'ispell) -(defvar ispell-program-name "ispell" - "Program invoked by \\[ispell-word] and \\[ispell-region] commands.") +(defcustom ispell-program-name "ispell" + "Program invoked by \\[ispell-word] and \\[ispell-region] commands." + :type 'string + :group 'ispell) -(defvar ispell-alternate-dictionary +(defcustom ispell-alternate-dictionary (cond ((file-exists-p "/usr/dict/web2") "/usr/dict/web2") ((file-exists-p "/usr/share/dict/web2") "/usr/share/dict/web2") ((file-exists-p "/usr/dict/words") "/usr/dict/words") @@ -367,10 +388,14 @@ ((file-exists-p "/usr/share/dict/words") "/usr/share/dict/words") ((file-exists-p "/sys/dict") "/sys/dict") (t "/usr/dict/words")) - "*Alternate dictionary for spelling help.") + "*Alternate dictionary for spelling help." + :type 'file + :group 'ispell) -(defvar ispell-complete-word-dict ispell-alternate-dictionary - "*Dictionary used for word completion.") +(defcustom ispell-complete-word-dict ispell-alternate-dictionary + "*Dictionary used for word completion." + :type 'file + :group 'ispell) (defvar ispell-grep-command "egrep" "Name of the grep command for search processes.") @@ -384,12 +409,16 @@ "Name of the look command for search processes. This must be an absolute file name.") -(defvar ispell-look-p (file-exists-p ispell-look-command) +(defcustom ispell-look-p `(file-exists-p ispell-look-command) "*Non-nil means use `look' rather than `grep'. -Default is based on whether `look' seems to be available.") +Default is based on whether `look' seems to be available." + :type 'boolean + :group 'ispell) -(defvar ispell-have-new-look nil - "*Non-nil means use the `-r' option (regexp) when running `look'.") +(defcustom ispell-have-new-look nil + "*Non-nil means use the `-r' option (regexp) when running `look'." + :type 'boolean + :group 'ispell) (defvar ispell-look-options (if ispell-have-new-look "-dfr" "-df") "String of command options for `ispell-look-command'.") @@ -398,29 +427,41 @@ "When non-nil, Emacs uses ptys to communicate with Ispell. When nil, Emacs uses pipes.") -(defvar ispell-following-word nil +(defcustom ispell-following-word nil "*Non-nil means `ispell-word' checks the word around or after point. -Otherwise `ispell-word' checks the preceding word.") +Otherwise `ispell-word' checks the preceding word." + :type 'boolean + :group 'ispell) -(defvar ispell-help-in-bufferp nil +(defcustom ispell-help-in-bufferp nil "*Non-nil means display interactive keymap help in a buffer. -Otherwise use the minibuffer.") +Otherwise use the minibuffer." + :type 'boolean + :group 'ispell) -(defvar ispell-quietly nil - "*Non-nil means suppress messages in `ispell-word'.") +(defcustom ispell-quietly nil + "*Non-nil means suppress messages in `ispell-word'." + :type 'boolean + :group 'ispell) -(defvar ispell-format-word (function upcase) +(defcustom ispell-format-word (function upcase) "*Formatting function for displaying word being spell checked. -The function must take one string argument and return a string.") +The function must take one string argument and return a string." + :type 'function + :group 'ispell) ;;;###autoload -(defvar ispell-personal-dictionary nil +(defcustom ispell-personal-dictionary nil "*File name of your personal spelling dictionary, or nil. If nil, the default personal dictionary, \"~/.ispell_DICTNAME\" is used, -where DICTNAME is the name of your default dictionary.") +where DICTNAME is the name of your default dictionary." + :type 'file + :group 'ispell) -(defvar ispell-silently-savep nil - "*When non-nil, save the personal dictionary without confirmation.") +(defcustom ispell-silently-savep nil + "*When non-nil, save the personal dictionary without confirmation." + :type 'boolean + :group 'ispell) ;;; This variable contains the current dictionary being used if the ispell ;;; process is running. Otherwise it contains the global default. @@ -434,11 +475,13 @@ command to change it. Otherwise, this variable only takes effect in a newly started Ispell process.") -(defvar ispell-extra-args nil +(defcustom ispell-extra-args nil "*If non-nil, a list of extra switches to pass to the Ispell program. For example, '(\"-W\" \"3\") to cause it to accept all 1-3 character words as correct. See also `ispell-dictionary-alist', which may be used -for language-specific arguments.") +for language-specific arguments." + :type '(repeat string) + :group 'ispell) ;;; The preparation of the menu bar menu must be autoloaded ;;; because otherwise this file gets autoloaded every time Emacs starts @@ -485,6 +528,10 @@ "[A-Za-z\300\302\306\307\310\311\312\313\316\317\324\331\333\334\340\342\347\350\351\352\353\356\357\364\371\373\374\\]" "[^A-Za-z\300\302\306\307\310\311\312\313\316\317\324\331\333\334\340\342\347\350\351\352\353\356\357\364\371\373\374\\]" "[---'^`\"]" t nil "~tex") + ("italiano" ; italiano.aff + "[A-Za-z\300\310\311\314\315\316\322\331\332\340\350\351\354\355\356\362\371\372]" + "[^A-Za-z\300\310\311\314\315\316\322\331\332\340\350\351\354\355\356\362\371\372]" + "[']" t ("-d" "italiano") "~list") ("dansk" ; dansk.aff "[A-Z\306\330\305a-z\346\370\345]" "[^A-Z\306\330\305a-z\346\370\345]" "" nil ("-C") nil) diff -r d101af7320b8 -r cca96a509cfe lisp/packages/jka-compr.el --- a/lisp/packages/jka-compr.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/jka-compr.el Mon Aug 13 09:25:29 2007 +0200 @@ -101,19 +101,29 @@ ;;; Code: -(defvar jka-compr-shell "sh" +(defgroup compression nil + "Data compression utilities" + :group 'data) + +(defgroup jka-compr nil + "jka-compr customization" + :group 'compression) + + +(defcustom jka-compr-shell "sh" "*Shell to be used for calling compression programs. The value of this variable only matters if you want to discard the stderr of a compression/decompression program (see the documentation -for `jka-compr-compression-info-list').") - +for `jka-compr-compression-info-list')." + :type 'string + :group 'jka-compr) (defvar jka-compr-use-shell t) ;;; I have this defined so that .Z files are assumed to be in unix ;;; compress format; and .gz files, in gzip format. -(defvar jka-compr-compression-info-list +(defcustom jka-compr-compression-info-list ;;[regexp ;; compr-message compr-prog compr-args ;; uncomp-message uncomp-prog uncomp-args @@ -162,7 +172,21 @@ Because of the way `call-process' is defined, discarding the stderr output of a program adds the overhead of starting a shell each time the program is -invoked.") +invoked." + :type '(repeat (vector regexp + (choice :tag "Compress Message" + (string :format "%v") + (const :tag "No Message" nil)) + (string :tag "Compress Program") + (repeat :tag "Compress Arguments" string) + (choice :tag "Uncompress Message" + (string :format "%v") + (const :tag "No Message" nil)) + (string :tag "Uncompress Program") + (repeat :tag "Uncompress Arguments" string) + (boolean :tag "Append") + (boolean :tag "Auto Mode"))) + :group 'jka-compr) (defvar jka-compr-mode-alist-additions (list (cons "\\.tgz\\'" 'tar-mode)) @@ -317,10 +341,12 @@ ;;; Support for temp files. Much of this was inspired if not lifted ;;; from ange-ftp. -(defvar jka-compr-temp-name-template +(defcustom jka-compr-temp-name-template "/tmp/jka-com" "Prefix added to all temp files created by jka-compr. -There should be no more than seven characters after the final `/'") +There should be no more than seven characters after the final `/'" + :type 'string + :group 'jka-compr) (defvar jka-compr-temp-name-table (make-vector 31 nil)) diff -r d101af7320b8 -r cca96a509cfe lisp/packages/makeinfo.el --- a/lisp/packages/makeinfo.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/makeinfo.el Mon Aug 13 09:25:29 2007 +0200 @@ -49,15 +49,24 @@ (require 'compile) -(defvar makeinfo-run-command "makeinfo" +(defgroup makeinfo nil + "Run makeinfo conveniently" + :group 'docs) + + +(defcustom makeinfo-run-command "makeinfo" "*Command used to run `makeinfo' subjob. -The name of the file is appended to this string, separated by a space.") +The name of the file is appended to this string, separated by a space." + :type 'string + :group 'makeinfo) -(defvar makeinfo-options "--fill-column=70" +(defcustom makeinfo-options "--fill-column=70" "*String containing options for running `makeinfo'. Do not include `--footnote-style' or `--paragraph-indent'; the proper way to specify those is with the Texinfo commands -`@footnotestyle` and `@paragraphindent'.") +`@footnotestyle` and `@paragraphindent'." + :type 'string + :group 'makeinfo) (require 'texinfo) diff -r d101af7320b8 -r cca96a509cfe lisp/packages/man.el --- a/lisp/packages/man.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/packages/man.el Mon Aug 13 09:25:29 2007 +0200 @@ -30,17 +30,29 @@ ;; [ older changelog entries removed, since they're all about code that ;; I've deleted. ] -(defvar Manual-program "man" "\ -*Name of the program to invoke in order to format the source man pages.") +(defgroup man nil + "Browse manual pages" + :group 'help) -(defvar Manual-buffer-view-mode t "\ +(defcustom Manual-program "man" "\ +*Name of the program to invoke in order to format the source man pages." + :type 'string + :group 'man) + +(defcustom Manual-buffer-view-mode t "\ *Whether manual buffers should be placed in view-mode. nil means leave the buffer in fundamental-mode in another window. t means use `view-buffer' to display the man page in the current window. -Any other value means use `view-buffer-other-window'.") +Any other value means use `view-buffer-other-window'." + :type '(choice (const :tag "fundamental-mode other window" nil) + (const :tag "view-mode current window" t) + (const :tag "view-mode other window" other)) + :group 'man) -(defvar Manual-mode-hook nil - "Function or functions run on entry to Manual-mode.") +(defcustom Manual-mode-hook nil + "Function or functions run on entry to Manual-mode." + :type 'hook + :group 'man) (defvar Manual-page-history nil "\ A list of names of previously visited man page buffers.") @@ -48,7 +60,7 @@ ;; New variables. -(defvar Manual-use-rosetta-man (not (null (locate-file "rman" exec-path))) "\ +(defcustom Manual-use-rosetta-man (not (null (locate-file "rman" exec-path))) "\ If non-nil, use RosettaMan (rman) to filter man pages. This makes man-page cleanup virtually instantaneous, instead of potentially taking a long time. @@ -112,29 +124,26 @@ Notes for HTML consumers: This filter does real (heuristic) -parsing--no
!  Man page references are turned into hypertext links.")
+parsing--no 
!  Man page references are turned into hypertext links."
+  :type 'boolean
+  :group 'man)
 
-(make-face 'man-italic)
-(or (face-differs-from-default-p 'man-italic)
-    (copy-face 'italic 'man-italic))
-;; XEmacs (from Darrell Kindred): underlining is annoying due to
-;; large blank spaces in this face.
-;; (or (face-differs-from-default-p 'man-italic)
-;;    (set-face-underline-p 'man-italic t))
+(defface man-italic '((t (:italic t)))
+  "Manual italics face"
+  :group 'man)
 
-(make-face 'man-bold)
-(or (face-differs-from-default-p 'man-bold)
-    (copy-face 'bold 'man-bold))
-(or (face-differs-from-default-p 'man-bold)
-    (copy-face 'man-italic 'man-bold))
+(defface man-bold '((t (:bold t)))
+  "Manual bold face"
+  :group 'man)
 
-(make-face 'man-heading)
-(or (face-differs-from-default-p 'man-heading)
-    (copy-face 'man-bold 'man-heading))
+(defface man-heading '((t (:bold t)))
+  "Manual headings face"
+  :group 'man)
 
-(make-face 'man-xref)
-(or (face-differs-from-default-p 'man-xref)
-    (set-face-underline-p 'man-xref t))
+(defface man-xref '((t (:underline t)))
+  "Manual xrefs face"
+  :group 'man)
+
 
 (defvar Manual-mode-map
   (let ((m (make-sparse-keymap)))
diff -r d101af7320b8 -r cca96a509cfe lisp/packages/rcompile.el
--- a/lisp/packages/rcompile.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/packages/rcompile.el	Mon Aug 13 09:25:29 2007 +0200
@@ -106,12 +106,16 @@
   "Compile the current buffer's directory on HOST.  Log in as USER.
 See \\[compile]."
   (interactive
-   (let ((parsed (and (featurep 'ange-ftp)
-		      ;; XEmacs change
-		      (or (and (fboundp 'ange-ftp-ftp-name)
-			       (ange-ftp-ftp-name default-directory))
-			  (and (fboundp 'ange-ftp-ftp-path)
-			       (ange-ftp-ftp-path default-directory)))))
+   (let ((parsed 
+	  ;; XEmacs change
+	  (cond
+	   ((featurep 'efs)
+	    (efs-ftp-path default-directory))
+	   ((featurep 'ange-ftp)
+	    (if (fboundp 'ange-ftp-ftp-name)
+		(ange-ftp-ftp-name default-directory)
+	      (ange-ftp-ftp-path default-directory)))
+	   (t nil)))
          host user command prompt)
      (if parsed
          (setq host (nth 0 parsed)
@@ -145,12 +149,16 @@
          (setq remote-compile-user user))
         ((null remote-compile-user)
          (setq remote-compile-user (user-login-name))))
-  (let* ((parsed (and (featurep 'ange-ftp)
-		      ;; XEmacs change
-		      (or (and (fboundp 'ange-ftp-ftp-name)
-			       (ange-ftp-ftp-name default-directory))
-			  (and (fboundp 'ange-ftp-ftp-path)
-			       (ange-ftp-ftp-path default-directory)))))
+  (let* ((parsed
+	  ;; XEmacs change
+	  (cond
+	   ((featurep 'efs)
+	    (efs-ftp-path default-directory))
+	   ((featurep 'ange-ftp)
+	    (if (fboundp 'ange-ftp-ftp-name)
+		(ange-ftp-ftp-name default-directory)
+	      (ange-ftp-ftp-path default-directory)))
+	   (t nil)))
          (compile-command
           (format "%s %s -l %s \"(%scd %s; %s)\""
 		  remote-shell-program
diff -r d101af7320b8 -r cca96a509cfe lisp/packages/supercite.el
--- a/lisp/packages/supercite.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/packages/supercite.el	Mon Aug 13 09:25:29 2007 +0200
@@ -7,7 +7,7 @@
 ;; Last Modified: 1993/09/22 18:58:46
 ;; Keywords: citation attribution mail news article reply followup
 
-;; supercite.el revision: 3.55
+;; supercite.el revision: 3.55-x
 
 ;; Copyright (C) 1993 Barry A. Warsaw
 
@@ -47,48 +47,102 @@
 ;; start user configuration variables
 ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 
-(defvar sc-auto-fill-region-p t
-  "*If non-nil, automatically fill each paragraph after it has been cited.")
+(defgroup supercite nil
+  "Supercite package"
+  :prefix "sc-"
+  :group 'mail
+  :group 'news)
+
+(defgroup supercite-frames nil
+  "Supercite (regi) frames"
+  :prefix "sc-"
+  :group 'supercite)
 
-(defvar sc-blank-lines-after-headers 1
-  "*Number of blank lines to leave after mail headers have been nuked.
-Set to nil, to use whatever blank lines happen to occur naturally.")
+(defgroup supercite-attr nil
+  "Supercite attributions"
+  :prefix "sc-"
+  :group 'supercite)
+
+(defgroup supercite-cite nil
+  "Supercite citings"
+  :prefix "sc-"
+  :group 'supercite)
+
+(defgroup supercite-hooks nil
+  "Hooking into supercite"
+  :prefix "sc-"
+  :group 'supercite)
 
-(defvar sc-citation-leader "    "
-  "*String comprising first part of a citation.")
-(defvar sc-citation-delimiter ">"
+(defcustom sc-auto-fill-region-p t
+  "*If non-nil, automatically fill each paragraph after it has been cited."
+  :type 'boolean
+  :group 'supercite)
+
+(defcustom sc-blank-lines-after-headers 1
+  "*Number of blank lines to leave after mail headers have been nuked.
+Set to nil, to use whatever blank lines happen to occur naturally."
+  :type '(choice (const :tag "leave" nil)
+		 integer)
+  :group 'supercite)
+
+(defcustom sc-citation-leader "    "
+  "*String comprising first part of a citation."
+  :type 'string
+  :group 'supercite-cite)
+
+(defcustom sc-citation-delimiter ">"
   "*String comprising third part of a citation.
-This string is used in both nested and non-nested citations.")
-(defvar sc-citation-separator " "
-  "*String comprising fourth and last part of a citation.")
+This string is used in both nested and non-nested citations."
+  :type 'string
+  :group 'supercite-cite)
 
-(defvar sc-citation-leader-regexp "[ \t]*"
+(defcustom sc-citation-separator " "
+  "*String comprising fourth and last part of a citation."
+  :type 'string
+  :group 'supercite-cite)
+
+(defcustom sc-citation-leader-regexp "[ \t]*"
   "*Regexp describing citation leader for a cited line.
-This should NOT have a leading `^' character.")
+This should NOT have a leading `^' character."
+  :type 'regexp
+  :group 'supercite-cite)
 
 ;; Nemacs and Mule users note: please see the texinfo manual for
 ;; suggestions on setting these variables.
-(defvar sc-citation-root-regexp "[-._a-zA-Z0-9]*"
+(defcustom sc-citation-root-regexp "[-._a-zA-Z0-9]*"
   "*Regexp describing variable root part of a citation for a cited line.
 This should NOT have a leading `^' character.  See also
-`sc-citation-nonnested-root-regexp'.")
-(defvar sc-citation-nonnested-root-regexp "[-._a-zA-Z0-9]+"
+`sc-citation-nonnested-root-regexp'."
+  :type 'regexp
+  :group 'supercite-cite)
+
+(defcustom sc-citation-nonnested-root-regexp "[-._a-zA-Z0-9]+"
   "*Regexp describing the variable root part of a nested citation.
 This should NOT have a leading `^' character.  This variable is
 related to `sc-citation-root-regexp' but where as that varariable
 describes both nested and non-nested citation roots, this variable
-describes only nested citation roots.")
-(defvar sc-citation-delimiter-regexp "[>]+"
+describes only nested citation roots."
+  :type 'regexp
+  :group 'supercite-cite)
+
+(defcustom sc-citation-delimiter-regexp "[>]+"
   "*Regexp describing citation delimiter for a cited line.
-This should NOT have a leading `^' character.")
-(defvar sc-citation-separator-regexp "[ \t]*"
+This should NOT have a leading `^' character."
+  :type 'regexp
+  :group 'supercite-cite)
+
+(defcustom sc-citation-separator-regexp "[ \t]*"
   "*Regexp describing citation separator for a cited line.
-This should NOT have a leading `^' character.")
+This should NOT have a leading `^' character."
+  :type 'regexp
+  :group 'supercite-cite)
 
-(defvar sc-cite-blank-lines-p nil
-  "*If non-nil, put a citation on blank lines.")
+(defcustom sc-cite-blank-lines-p nil
+  "*If non-nil, put a citation on blank lines."
+  :type 'boolean
+  :group 'supercite-cite)
 
-(defvar sc-cite-frame-alist '()
+(defcustom sc-cite-frame-alist '()
   "*Alist for frame selection during citing.
 Each element of this list has the following form:
 
@@ -98,15 +152,29 @@
 
 Where INFOKEY is a key for `sc-mail-field', REGEXP is a regular
 expression to match against the INFOKEY's value.  FRAME is a citation
-frame, or a variable containing a citation frame.")
-(defvar sc-uncite-frame-alist '()
+frame, or a variable containing a citation frame."
+  :type '(repeat (list symbol (repeat (cons regexp
+					    (choice (repeat (repeat sexp))
+						    symbol)))))
+  :group 'supercite-frames)
+
+(defcustom sc-uncite-frame-alist '()
   "*Alist for frame selection during unciting.
-See the variable `sc-cite-frame-alist' for details.")
-(defvar sc-recite-frame-alist '()
+See the variable `sc-cite-frame-alist' for details."
+  :type '(repeat (list symbol (repeat (cons regexp
+					    (choice (repeat (repeat sexp))
+						    symbol)))))
+  :group 'supercite-frames)
+
+(defcustom sc-recite-frame-alist '()
   "*Alist for frame selection during reciting.
-See the variable `sc-cite-frame-alist' for details.")
+See the variable `sc-cite-frame-alist' for details."
+  :type '(repeat (list symbol (repeat (cons regexp
+					    (choice (repeat (repeat sexp))
+						    symbol)))))
+  :group 'supercite-frames)
 
-(defvar sc-default-cite-frame
+(defcustom sc-default-cite-frame
   '(;; initialize fill state and temporary variables when entering
     ;; frame. this makes things run much faster
     (begin (progn
@@ -147,17 +215,21 @@
     ;; be sure when we're done that we fill the last cited paragraph.
     (end                        (sc-fill-if-different ""))
     )
-  "*Default REGI frame for citing a region.")
+  "*Default REGI frame for citing a region."
+  :type '(repeat (repeat sexp))
+  :group 'supercite-frames)
 
-(defvar sc-default-uncite-frame
+(defcustom sc-default-uncite-frame
   '(;; do nothing on a blank line
     ("^[ \t]*$"       nil)
     ;; if the line is cited, uncite it
     ((sc-cite-regexp) (sc-uncite-line))
     )
-  "*Default REGI frame for unciting a region.")
+  "*Default REGI frame for unciting a region."
+  :type '(repeat (repeat sexp))
+  :group 'supercite-frames)
 
-(defvar sc-default-recite-frame
+(defcustom sc-default-recite-frame
   '(;; initialize fill state when entering frame
     (begin            (sc-fill-if-different))
     ;; do nothing on a blank line
@@ -169,9 +241,11 @@
     ;; be sure when we're done that we fill the last cited paragraph.
     (end              (sc-fill-if-different ""))
     )
-  "*Default REGI frame for reciting a region.")
+  "*Default REGI frame for reciting a region."
+  :type '(repeat (repeat sexp))
+  :group 'supercite-frames)
 
-(defvar sc-cite-region-limit t
+(defcustom sc-cite-region-limit t
   "*This variable controls automatic citation of yanked text.
 Legal values are:
 
@@ -186,42 +260,72 @@
 The gathering of attribution information is not affected by the value
 of this variable.  The number of lines in the region is calculated
 *after* all mail headers are removed.  This variable is only consulted
-during the initial citing via `sc-cite-original'.")
+during the initial citing via `sc-cite-original'."
+  :type '(choice (const :tag "always cite" t)
+		 (const :tag "do not cite" nil)
+		 (integer :tag "citation threshold"))
+  :group 'supercite-cite)
 
-(defvar sc-confirm-always-p t
-  "*If non-nil, always confirm attribution string before citing text body.")
+(defcustom sc-confirm-always-p t
+  "*If non-nil, always confirm attribution string before citing text body."
+  :type 'boolean
+  :group 'supercite-attr)
 
-(defvar sc-default-attribution "Anon"
-  "*String used when author's attribution cannot be determined.")
-(defvar sc-default-author-name "Anonymous"
-  "*String used when author's name cannot be determined.")
-
-(defvar sc-downcase-p nil
-  "*Non-nil means downcase the attribution and citation strings.")
+(defcustom sc-default-attribution "Anon"
+  "*String used when author's attribution cannot be determined."
+  :type 'string
+  :group 'supercite-attr)
+(defcustom sc-default-author-name "Anonymous"
+  "*String used when author's name cannot be determined."
+  :type 'string
+  :group 'supercite-attr)
+(defcustom sc-downcase-p nil
+  "*Non-nil means downcase the attribution and citation strings."
+  :type 'boolean
+  :group 'supercite-attr
+  :group 'supercite-cite)
+(defcustom sc-electric-circular-p t
+  "*If non-nil, treat electric references as circular."
+  :type 'boolean
+  :group 'supercite-attr)
 
-(defvar sc-electric-circular-p t
-  "*If non-nil, treat electric references as circular.")
-(defvar sc-electric-mode-hook nil
-  "*Hook for `sc-electric-mode' electric references mode.")
-(defvar sc-electric-references-p nil
-  "*Use electric references if non-nil.")
+(defcustom sc-electric-mode-hook nil
+  "*Hook for `sc-electric-mode' electric references mode."
+  :type 'hook
+  :group 'supercite-hooks)
+(defcustom sc-electric-references-p nil
+  "*Use electric references if non-nil."
+  :type 'boolean
+  :group 'supercite)
 
-(defvar sc-fixup-whitespace-p nil
-  "*If non-nil, delete all leading white space before citing.")
+(defcustom sc-fixup-whitespace-p nil
+  "*If non-nil, delete all leading white space before citing."
+  :type 'boolean
+  :group 'supercite)
 
-(defvar sc-load-hook nil
-  "*Hook which gets run once after Supercite loads.")
-(defvar sc-pre-hook nil
-  "*Hook which gets run before each invocation of `sc-cite-original'.")
-(defvar sc-post-hook nil
-  "*Hook which gets run after each invocation of `sc-cite-original'.")
+(defcustom sc-load-hook nil
+  "*Hook which gets run once after Supercite loads."
+  :type 'hook
+  :group 'supercite-hooks)
+(defcustom sc-pre-hook nil
+  "*Hook which gets run before each invocation of `sc-cite-original'."
+  :type 'hook
+  :group 'supercite-hooks)
+(defcustom sc-post-hook nil
+  "*Hook which gets run after each invocation of `sc-cite-original'."
+  :type 'hook
+  :group 'supercite-hooks)
 
-(defvar sc-mail-warn-if-non-rfc822-p t
-  "*Warn if mail headers don't conform to RFC822.")
-(defvar sc-mumble ""
-  "*Value returned by `sc-mail-field' if field isn't in mail headers.")
+(defcustom sc-mail-warn-if-non-rfc822-p t
+  "*Warn if mail headers don't conform to RFC822."
+  :type 'boolean
+  :group 'supercite-attr)
+(defcustom sc-mumble ""
+  "*Value returned by `sc-mail-field' if field isn't in mail headers."
+  :type 'string
+  :group 'supercite-attr)
 
-(defvar sc-name-filter-alist
+(defcustom sc-name-filter-alist
   '(
     ;; This first item removes any [bracketed] multi-word items in names.
     ;; Each word is already split into a separate string when this filter is
@@ -239,27 +343,37 @@
 Match is performed using `string-match'.  POSITION is the position in
 the name list which can match the regular expression, starting at zero
 for the first element.  Use `last' to match the last element in the
-list and `any' to match all elements.")
+list and `any' to match all elements."
+  :type '(repeat (cons regexp (choice (const last) (const any)
+				      (integer :tag "position"))))
+  :group 'supercite-attr)
 
-(defvar sc-nested-citation-p nil
+(defcustom sc-nested-citation-p nil
   "*Controls whether to use nested or non-nested citation style.
-Non-nil uses nested citations, nil uses non-nested citations.")
+Non-nil uses nested citations, nil uses non-nested citations."
+  :type 'boolean
+  :group 'supercite)
 
-(defvar sc-nuke-mail-headers 'all
+(defcustom sc-nuke-mail-headers 'all
   "*Controls mail header nuking.
 Used in conjunction with `sc-nuke-mail-header-list'.  Legal values are:
 
 `all'       -- nuke all mail headers
 `none'      -- don't nuke any mail headers
 `specified' -- nuke headers specified in `sc-nuke-mail-header-list'
-`keep'      -- keep headers specified in `sc-nuke-mail-header-list'")
+`keep'      -- keep headers specified in `sc-nuke-mail-header-list'"
+  :type '(choice (const all) (const none)
+		 (const specified) (const keep))
+  :group 'supercite)
 
-(defvar sc-nuke-mail-header-list nil
+(defcustom sc-nuke-mail-header-list nil
   "*List of mail header regexps to remove or keep in body of reply.
 This list contains regular expressions describing the mail headers to
-keep or nuke, depending on the value of `sc-nuke-mail-headers'.")
+keep or nuke, depending on the value of `sc-nuke-mail-headers'."
+  :type '(repeat regexp)
+  :group 'supercite)
 
-(defvar sc-preferred-attribution-list
+(defcustom sc-preferred-attribution-list
   '("sc-lastchoice" "x-attribution" "firstname" "initials" "lastname")
   "*Specifies what to use as the attribution string.
 Supercite creates a list of possible attributions when it scans the
@@ -297,9 +411,11 @@
 Middle name indexes can be any positive integer greater than 0,
 although it is unlikely that many authors will supply more than one
 middle name, if that many.  The string of all middle names is
-associated with the key \"middlenames\".")
+associated with the key \"middlenames\"."
+  :type '(repeat string)
+  :group 'supercite-attr)
 
-(defvar sc-attrib-selection-list nil
+(defcustom sc-attrib-selection-list nil
   "*An alist for selecting preferred attribution based on mail headers.
 Each element of this list has the following form:
 
@@ -314,28 +430,51 @@
 and the return value must be a string, which is used as the selected
 attribution.  Note that the variable `sc-preferred-attribution-list'
 must contain an element of the string \"sc-consult\" for this variable
-to be consulted during attribution selection.")
+to be consulted during attribution selection."
+  :type '(repeat (list symbol (repeat (cons regexp
+					    (choice (repeat (repeat sexp))
+						    symbol)))))
+  :group 'supercite-attr)
 
-(defvar sc-attribs-preselect-hook nil
-  "*Hook to run before selecting an attribution.")
-(defvar sc-attribs-postselect-hook nil
-  "*Hook to run after selecting an attribution, but before confirmation.")
+(defcustom sc-attribs-preselect-hook nil
+  "*Hook to run before selecting an attribution."
+  :type 'hook
+  :group 'supercite-attr
+  :group 'supercite-hooks)
+(defcustom sc-attribs-postselect-hook nil
+  "*Hook to run after selecting an attribution, but before confirmation."
+  :type 'hook
+  :group 'supercite-attr
+  :group 'supercite-hooks)
 
-(defvar sc-pre-cite-hook nil
-  "*Hook to run before citing a region of text.")
-(defvar sc-pre-uncite-hook nil
-  "*Hook to run before unciting a region of text.")
-(defvar sc-pre-recite-hook nil
-  "*Hook to run before reciting a region of text.")
+(defcustom sc-pre-cite-hook nil
+  "*Hook to run before citing a region of text."
+  :type 'hook
+  :group 'supercite-cite
+  :group 'supercite-hooks)
+(defcustom sc-pre-uncite-hook nil
+  "*Hook to run before unciting a region of text."
+  :type 'hook
+  :group 'supercite-cite
+  :group 'supercite-hooks)
+(defcustom sc-pre-recite-hook nil
+  "*Hook to run before reciting a region of text."
+  :type 'hook
+  :group 'supercite-cite
+  :group 'supercite-hooks)
 
-(defvar sc-preferred-header-style 4
+(defcustom sc-preferred-header-style 4
   "*Index into `sc-rewrite-header-list' specifying preferred header style.
-Index zero accesses the first function in the list.")
+Index zero accesses the first function in the list."
+  :type 'integer
+  :group 'supercite)
 
-(defvar sc-reference-tag-string ">>>>> "
-  "*String used at the beginning of built-in reference headers.")
+(defcustom sc-reference-tag-string ">>>>> "
+  "*String used at the beginning of built-in reference headers."
+  :type 'string
+  :group 'supercite)
 
-(defvar sc-rewrite-header-list
+(defcustom sc-rewrite-header-list
   '((sc-no-header)
     (sc-header-on-said)
     (sc-header-inarticle-writes)
@@ -349,17 +488,24 @@
   "*List of reference header rewrite functions.
 The variable `sc-preferred-header-style' controls which function in
 this list is chosen for automatic reference header insertions.
-Electric reference mode will cycle through this list of functions.")
+Electric reference mode will cycle through this list of functions."
+  :type '(repeat sexp)
+  :group 'supercite)
 
-(defvar sc-titlecue-regexp "\\s +-+\\s +"
+(defcustom sc-titlecue-regexp "\\s +-+\\s +"
   "*Regular expression describing the separator between names and titles.
-Set to nil to treat entire field as a name.")
+Set to nil to treat entire field as a name."
+  :type '(choice (const :tag "entire field as name" nil)
+		 regexp)
+  :group 'supercite-attr)
 
-(defvar sc-use-only-preference-p nil
+(defcustom sc-use-only-preference-p nil
   "*Controls what happens when the preferred attribution cannot be found.
 If non-nil, then `sc-default-attribution' will be used.  If nil, then
 some secondary scheme will be employed to find a suitable attribution
-string.")
+string."
+  :type 'boolean
+  :group 'supercite-attr)
 
 ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 ;; end user configuration variables
diff -r d101af7320b8 -r cca96a509cfe lisp/packages/texnfo-tex.el
--- a/lisp/packages/texnfo-tex.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/packages/texnfo-tex.el	Mon Aug 13 09:25:29 2007 +0200
@@ -66,30 +66,49 @@
 
 ;;; Variable definitions:
 
+(defgroup texinfo-tex nil
+  "TeX and hardcopy printing commands for Texinfo mode"
+  :prefix "texinfo-"
+  :group 'tex
+  :tag "Texinfo TeX"
+  :group 'texinfo)
+
 (require 'shell)
 
-(defvar texinfo-tex-shell-cd-command "cd"
-  "Command to give to shell running TeX to change directory.")
+(defcustom texinfo-tex-shell-cd-command "cd"
+  "Command to give to shell running TeX to change directory."
+  :type 'string
+  :group 'texinfo-tex)
 
-(defvar texinfo-tex-command "tex"
-  "*Command used by  texinfo-tex-region  to run tex on a region.")
+(defcustom texinfo-tex-command "tex"
+  "*Command used by  texinfo-tex-region  to run tex on a region."
+  :type 'string
+  :group 'texinfo-tex)
 
-(defvar texinfo-texindex-command "texindex"
-  "*Command used by  texinfo-texindex  to sort unsorted index files.")
+(defcustom texinfo-texindex-command "texindex"
+  "*Command used by  texinfo-texindex  to sort unsorted index files."
+  :type 'string
+  :group 'texinfo-tex)
 
-(defvar texinfo-tex-dvi-print-command "lpr -d"
-  "*Command string used by \\[tex-print] to print a .dvi file.")
+(defcustom texinfo-tex-dvi-print-command "lpr -d"
+  "*Command string used by \\[tex-print] to print a .dvi file."
+  :type 'string
+  :group 'texinfo-tex)
 
-(defvar texinfo-show-tex-queue-command "lpq"
+(defcustom texinfo-show-tex-queue-command "lpq"
   "*Command string used to show the Texinfo TeX print queue.
 Command is used by \\[texinfo-show-tex-print-queue] and it
-should show the queue that \\[texinfo-tex-print] puts jobs on.")
+should show the queue that \\[texinfo-tex-print] puts jobs on."
+  :type 'string
+  :group 'texinfo-tex)
 
-(defvar texinfo-delete-from-print-queue-command "lprm"
+(defcustom texinfo-delete-from-print-queue-command "lprm"
   "*Command string used to delete a job from the line printer queue.
 Command is used by \\[texinfo-delete-from-tex-print-queue] based on
 number provided by a previous \\[texinfo-show-tex-print-queue]
-command.")
+command."
+  :type 'string
+  :group 'texinfo-tex)
 
 (defvar texinfo-tex-trailer "@bye"
   "String appended after a region sent to TeX by texinfo-tex-region.")
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/about.el
--- a/lisp/prim/about.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/about.el	Mon Aug 13 09:25:29 2007 +0200
@@ -183,9 +183,8 @@
 		  (let ((coding-system-for-read 'binary))
 		    (insert-file-contents who-xpm))
 		  (if (looking-at "\037\235") ;may already be decompressed...
-		      (let ((coding-system-for-write 'binary)
-			    process-input-coding-system
-			    process-output-coding-system)
+		      (let ((coding-system-for-read 'binary)
+			    (coding-system-for-write 'binary))
 			(call-process-region (point-min) (point-max)
 					     "zcat" t t nil)))
 		  (set who (make-glyph
@@ -303,6 +302,7 @@
 	  ('larsi "About Lars Magne Ingebrigtsen")
 	  ('jens "About Jens Lautenbacher")
 	  ('jareth "About Jareth Hein")
+	  ('morioka "About MORIOKA Tomohiko")
 	  ('others "About Everyone")
 	  ('features "New XEmacs Features")
 	  ('history "XEmacs History")
@@ -805,9 +805,9 @@
 	  (insert " to go back to the previous page.\n")
 	  )
 
-	 ((eq xref 'jens)
+	 ((eq xref 'jareth)
 	  (about-face "P E Jareth Hein" 'bold)
-	  (insert " 
+	  (insert " 
 
 	Jareth Hein is a mountain boy who abandoned his home state of
 	Colorado for the perpetual state of chaos known as Tokyo in a
@@ -822,6 +822,26 @@
 	  (insert " to go back to the previous page.\n")
 	  )
 
+	 ((eq xref 'morioka)
+	  (about-face "MORIOKA Tomohiko" 'bold)
+	  (insert " 
+
+	I am the author of tm-view (general MIME Viewer for GNU Emacs)
+	and major author and maintainer of tm (Tools for MIME; general
+	MIME package for GNU Emacs).  In addition, I am working to unify
+	MULE API for Emacs and XEmacs.  In XEmacs, I have ported many mule
+	features.
+
+	I am a doctoral student at School of Information Science of JAIST
+	(Japan Advanced Institute of Science and Technology, Hokuriku).
+	I'm interested in Natural Language, Affordance and writing systems.")
+
+
+	  (insert "\n\n\tClick ")
+	  (about-xref "here" prev-page "Return to previous page")
+	  (insert " to go back to the previous page.\n")
+	  )
+
 	 ((eq xref 'others)
 	  (insert "Click ")
 	  (about-xref "here" 'about "Return to previous page")
@@ -902,7 +922,7 @@
 	the exams and XEmacs betas are released at a high rate this
 	may take some time...
 
-	") (about-xref "Jareth Hein" 'jens "Find out more about Jareth Hein") (insert " 
+	") (about-xref "Jareth Hein" 'jareth "Find out more about Jareth Hein") (insert " 
 	Jareth Hein is a mountain boy who abandoned his home state of
 	Colorado for the perpetual state of chaos known as Tokyo in a
 	failed attempt to become a cel-animator, and a more successful
@@ -911,6 +931,17 @@
 	MULE hacking. He's also getting his hands dirty in the graphics
 	areas as well.
 
+	") (about-xref "MORIOKA Tomohiko" 'morioka "Find out more about MORIOKA Tomohiko") (insert " 
+
+	I am the author of tm-view (general MIME Viewer for GNU Emacs)
+	and major author and maintainer of tm (Tools for MIME; general
+	MIME package for GNU Emacs).  In addition, I am working to unify
+	MULE API for Emacs and XEmacs.  In XEmacs, I have ported many mule
+	features.
+	I am a doctoral student at School of Information Science of JAIST
+	(Japan Advanced Institute of Science and Technology, Hokuriku).
+	I'm interested in Natural Language, Affordance and writing systems.
+
 	Darrell Kindred 
 	Unofficial maintainer of the xemacs-beta list of extant bugs
 	and contributor of an extraordinary number of important bug
@@ -976,6 +1007,7 @@
 	doing all of the above.  We couldn't have done it without them.
 
 	  Nagi M. Aboulenein 
+	  Per Abrahamsen 
 	  Gary Adams 
 	  Gennady Agranov 
 	  Mark Allender 
@@ -1131,10 +1163,10 @@
 	  Jason Stewart 
 	  Rick Tait 
 	  James Thompson 
-	  Morioka Tomohiko 
 	  Raymond L. Toy 
 	  John Turner 
 	  Juan E. Villacis 
+	  Jan Vroonhof 
 	  Vladimir Vukicevic 
 	  Peter Ware 
 	  Yoav Weiss 
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/auto-autoloads.el
--- a/lisp/prim/auto-autoloads.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/auto-autoloads.el	Mon Aug 13 09:25:29 2007 +0200
@@ -999,7 +999,7 @@
 
 ;;;***
 
-;;;### (autoloads (custom-make-dependencies custom-menu-update custom-save-all custom-buffer-create customize-apropos customize-customized customize-face customize-variable customize) "cus-edit" "custom/cus-edit.el")
+;;;### (autoloads (custom-make-dependencies custom-menu-create custom-save-all custom-buffer-create customize-apropos customize-customized customize-face customize-variable customize) "cus-edit" "custom/cus-edit.el")
 
 (autoload 'customize "cus-edit" "\
 Customize SYMBOL, which must be a customization group." t nil)
@@ -1028,8 +1028,11 @@
 (autoload 'custom-save-all "cus-edit" "\
 Save all customizations in `custom-file'." nil nil)
 
-(autoload 'custom-menu-update "cus-edit" "\
-Update customize menu." t nil)
+(autoload 'custom-menu-create "cus-edit" "\
+Create menu for customization group SYMBOL.
+If optional NAME is given, use that as the name of the menu. 
+Otherwise make up a name from SYMBOL.
+The menu is in a format applicable to `easy-menu-define'." nil nil)
 
 (autoload 'custom-make-dependencies "cus-edit" "\
 Batch function to extract custom dependencies from .el files.
@@ -2027,67 +2030,6 @@
 
 ;;;***
 
-;;;### (autoloads (mine-help mine-version mine) "mine" "games/mine.el")
-
-(autoload 'mine "mine" "\
-Play Mine.  Optional prefix argument is the number of mines.
-
-To play Mine, type `\\[mine]' or `\\[universal-argument] NUM \\[mine]'.  
-
-An optional prefix argument specifies the number of mines to be hidden
-in the field.  If no prefix argument is given, a percentage
-`mine-mines-%' of the field will contain mines.
-
-What is Mine?\\
-
-Mine is a classical game of hide and seek played on a rectangular grid
-containing `mine-xmax' by `mine-ymax' squares (the mine field).
-
-Your opponent (Emacs, in this case) has hidden several mines within
-this field.  The object of the game is to find every hidden mine.
-
-When you're sure a square does NOT contain a mine, you can hit it:
-move the mouse over the square and press `\\[mine-mouse-hit]' or 
-move the cursor with the usual keys and press `\\[mine-hit-curpoint]'.
-
-If the square is a mine, you lose.
-If the square isn't a mine, a number appears which represents
-the number of mines in the surrounding eight squares.  
-
-When you think a square DOES contain a mine, you can mark it:
-move the mouse over the square and press `\\[mine-mouse-mark]' or
-move the cursor with the usual keys and press `\\[mine-mark-curpoint]'.
-
-The number of hidden mines remaining in the mine field is indicated
-inside the buffer.  Every time you mark a square as a mine, this
-number decreases by one, even if you incorrectly mark a square.
-
-If `mine-torus' is non-nil (the default), the Mine game is played over
-a periodic field (like a torus).  Each mine is hidden periodically
-over the mine board `mine-nb-tiles-x' times in the x direction and
-`mine-nb-tiles-y' times in the y direction.
-
-If `mine-colorp' is non-nil (the default, if the system allows it),
-the game is displayed with colors.  The colors can be chosen with the
-variable `mine-colors'.
-
-If the redisplay is not fast enough, increase `mine-level'.  If you
-want to see a smoother (slower) redisplay, decrease `mine-level',
-`mine-count1-max' and `mine-count2-max'.
-
-You can get help on `mine-mode' and its key bindings by pressing `\\[mine-help]'
-while in the *Mine* buffer.
-" t nil)
-
-(autoload 'mine-version "mine" "\
-Return string describing the current version of Mine.
-When called interactively, displays the version." t nil)
-
-(autoload 'mine-help "mine" "\
-*Get help on `mine-mode'." t nil)
-
-;;;***
-
 ;;;### (autoloads (mpuz) "mpuz" "games/mpuz.el")
 
 (autoload 'mpuz "mpuz" "\
@@ -2105,6 +2047,45 @@
 
 ;;;***
 
+;;;### (autoloads (xmine-mode) "xmine" "games/xmine.el")
+
+(autoload 'xmine-mode "xmine" "\
+A mode for playing the well known mine searching game.
+
+   `\\\\[xmine-activate-function-button1]' or `\\\\[xmine-key-action1]' unhides a tile,
+   `\\\\[xmine-activate-function-button2]' or `\\\\[xmine-key-action2]' unhides all neighbours of a tile,
+   `\\\\[xmine-activate-function-button3]' or `\\\\[xmine-key-action3]' (un)flagges a tile to hold a mine.
+
+   `\\[xmine-key-new]' starts a new game.
+   `\\[xmine-key-quit]' ends a game.
+
+All keybindings (with alternatives) currently in effect:
+   \\{xmine-keymap}
+
+The rules are quite easy: You start by unhiding (random) tiles. An unhidden
+tile showing a number tells you something about the number of mines in it's
+neighborhood, where the neighborhood are all 8 tiles (or less if it's
+at a border) around the tile.
+
+E.g. a \"1\" shows you that there is only one mine in the neighborhood of
+this tile. Empty tiles have no mines around them, and empty tiles in
+the neighborhood of another empty tile are all automatically unhidden
+if you unhide one of them. You need to find a strategy to use the
+information you have from the numbers to \"flag\" the tiles with mines
+under them and unhide all other tiles. If you correctly made this
+without accidently unhiding a mine, you've won.
+
+If you are sure you have correctly flagged all mines around a unhidden tile,
+you can use Button-2 or \\[xmine-key-action2] on it to unhide all it's
+neighbors. But beware: If you made a mistake by flagging the wrong mines,
+you'll blow up! 
+
+Have Fun." t nil)
+
+(fset 'xmine 'xmine-mode)
+
+;;;***
+
 ;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism yow) "yow" "games/yow.el")
 
 (autoload 'yow "yow" "\
@@ -3924,7 +3905,7 @@
 ;;;### (autoloads (ksh-mode) "ksh-mode" "modes/ksh-mode.el")
 
 (autoload 'ksh-mode "ksh-mode" "\
-ksh-mode $Revision: 1.19 $ - Major mode for editing (Bourne, Korn or Bourne again)
+ksh-mode $Revision: 1.20 $ - Major mode for editing (Bourne, Korn or Bourne again)
 shell scripts.
 Special key bindings and commands:
 \\{ksh-mode-map}
@@ -4046,8 +4027,7 @@
 
 ;;;### (autoloads (define-mail-alias build-mail-aliases mail-aliases-setup) "mail-abbrevs" "modes/mail-abbrevs.el")
 
-(defvar mail-abbrev-mailrc-file nil "\
-Name of file with mail aliases.   If nil, ~/.mailrc is used.")
+(defcustom mail-abbrev-mailrc-file nil "Name of file with mail aliases.   If nil, ~/.mailrc is used." :type '(choice (const :tag "Default" nil) file) :group 'mail-abbrevs)
 
 (defvar mail-aliases nil "\
 Word-abbrev table of mail address aliases.
@@ -5279,7 +5259,7 @@
 
 (autoload 'vhdl-mode "vhdl-mode" "\
 Major mode for editing VHDL code.
-vhdl-mode $Revision: 1.19 $
+vhdl-mode $Revision: 1.20 $
 To submit a problem report, enter `\\[vhdl-submit-bug-report]' from a
 vhdl-mode buffer.  This automatically sets up a mail buffer with version
 information already added.  You just need to add a description of the
@@ -5437,7 +5417,8 @@
 (autoload 'oo-browser "br-start" "\
 Prompt for an Environment and language over which to run the OO-Browser.
 Optional prefix argument SAME-ENV-FLAG means browse the current Environment,
-if any, without prompting." t nil)
+if any, without prompting.  Otherwise, if called interactively, give the user
+a choice whether to re-browse the last Environment or to browse a new one." t nil)
 
 ;;;***
 
@@ -5547,21 +5528,13 @@
 
 ;;;### (autoloads (add-log-current-defun change-log-mode add-change-log-entry-other-window add-change-log-entry find-change-log prompt-for-change-log-name) "add-log" "packages/add-log.el")
 
-(defvar change-log-default-name nil "\
-*Name of a change log file for \\[add-change-log-entry].")
-
-(defvar add-log-current-defun-function nil "\
-*If non-nil, function to guess name of current function from surrounding text.
-\\[add-change-log-entry] calls this function (if nil, `add-log-current-defun'
-instead) with no arguments.  It returns a string or nil if it cannot guess.")
-
-(defvar add-log-full-name nil "\
-*Full name of user, for inclusion in ChangeLog daily headers.
-This defaults to the value returned by the `user-full-name' function.")
-
-(defvar add-log-mailing-address nil "\
-*Electronic mail address of user, for inclusion in ChangeLog daily headers.
-This defaults to the value of `user-mail-address'.")
+(defcustom change-log-default-name nil "*Name of a change log file for \\[add-change-log-entry]." :type '(choice (const :tag "default" nil) string) :group 'change-log)
+
+(defcustom add-log-current-defun-function nil "*If non-nil, function to guess name of current function from surrounding text.\n\\[add-change-log-entry] calls this function (if nil, `add-log-current-defun'\ninstead) with no arguments.  It returns a string or nil if it cannot guess." :type 'boolean :group 'change-log)
+
+(defcustom add-log-full-name nil "*Full name of user, for inclusion in ChangeLog daily headers.\nThis defaults to the value returned by the `user-full-name' function." :type '(choice (const :tag "Default" nil) string) :group 'change-log)
+
+(defcustom add-log-mailing-address nil "*Electronic mail address of user, for inclusion in ChangeLog daily headers.\nThis defaults to the value of `user-mail-address'." :type '(choice (const :tag "Default" nil) string) :group 'change-log)
 
 (autoload 'prompt-for-change-log-name "add-log" "\
 Prompt for a change log name." nil nil)
@@ -5994,27 +5967,15 @@
 
 ;;;### (autoloads (first-error previous-error next-error compilation-minor-mode grep compile) "compile" "packages/compile.el")
 
-(defvar compilation-mode-hook nil "\
-*List of hook functions run by `compilation-mode' (see `run-hooks').")
-
-(defvar compilation-window-height nil "\
-*Number of lines in a compilation window.  If nil, use Emacs default.")
-
-(defvar compilation-buffer-name-function nil "\
-Function to compute the name of a compilation buffer.
-The function receives one argument, the name of the major mode of the
-compilation buffer.  It should return a string.
-nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
-
-(defvar compilation-finish-function nil "\
-*Function to call when a compilation process finishes.
-It is called with two arguments: the compilation buffer, and a string
-describing how the process finished.")
-
-(defvar compilation-search-path '(nil) "\
-*List of directories to search for source files named in error messages.
-Elements should be directory names, not file names of directories.
-nil as an element means to try the default directory.")
+(defcustom compilation-mode-hook nil "*List of hook functions run by `compilation-mode' (see `run-hooks')." :type 'hook :group 'compilation)
+
+(defcustom compilation-window-height nil "*Number of lines in a compilation window.  If nil, use Emacs default." :type '(choice (const nil) integer) :group 'compilation)
+
+(defcustom compilation-buffer-name-function nil "Function to compute the name of a compilation buffer.\nThe function receives one argument, the name of the major mode of the\ncompilation buffer.  It should return a string.\nnil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'." :type 'function :group 'compilation)
+
+(defcustom compilation-finish-function nil "*Function to call when a compilation process finishes.\nIt is called with two arguments: the compilation buffer, and a string\ndescribing how the process finished." :type 'function :group 'compilation)
+
+(defcustom compilation-search-path '(nil) "*List of directories to search for source files named in error messages.\nElements should be directory names, not file names of directories.\nnil as an element means to try the default directory." :type '(repeat (choice (const :tag "Default" nil) directory)) :group 'compilation)
 
 (autoload 'compile "compile" "\
 Compile the program including the current buffer.  Default: run `make'.
@@ -6135,8 +6096,7 @@
 
 ;;;### (autoloads (diff-backup diff) "diff" "packages/diff.el")
 
-(defvar diff-switches "-c" "\
-*A list of switches (strings) to pass to the diff program.")
+(defcustom diff-switches "-c" "*A list of switches (strings) to pass to the diff program." :type '(choice string (repeat string)) :group 'diff)
 
 (autoload 'diff "diff" "\
 Find and display the differences between OLD and NEW files.
@@ -7018,14 +6978,11 @@
 
 ;;;### (autoloads (ispell-message ispell-minor-mode ispell-complete-word-interior-frag ispell-complete-word ispell-continue ispell-buffer ispell-region ispell-change-dictionary ispell-kill-ispell ispell-help ispell-word) "ispell" "packages/ispell.el")
 
-(defvar ispell-personal-dictionary nil "\
-*File name of your personal spelling dictionary, or nil.
-If nil, the default personal dictionary, \"~/.ispell_DICTNAME\" is used,
-where DICTNAME is the name of your default dictionary.")
+(defcustom ispell-personal-dictionary nil "*File name of your personal spelling dictionary, or nil.\nIf nil, the default personal dictionary, \"~/.ispell_DICTNAME\" is used,\nwhere DICTNAME is the name of your default dictionary." :type 'file :group 'ispell)
 
 (defvar ispell-dictionary-alist-1 '((nil "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B") nil) ("english" "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B") nil) ("british" "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B" "-d" "british") nil) ("deutsch" "[a-zA-Z\"]" "[^a-zA-Z\"]" "[']" t ("-C") "~tex") ("deutsch8" "[a-zA-ZÄÖÜäößü]" "[^a-zA-ZÄÖÜäößü]" "[']" t ("-C" "-d" "deutsch") "~latin1") ("nederlands" "[A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[^A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[']" t ("-C") nil) ("nederlands8" "[A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[^A-Za-zÀ-ÅÇÈ-ÏÒ-ÖÙ-Üà-åçè-ïñò-öù-ü]" "[']" t ("-C") nil)))
 
-(defvar ispell-dictionary-alist-2 '(("svenska" "[A-Za-z}{|\\133\\135\\\\]" "[^A-Za-z}{|\\133\\135\\\\]" "[']" nil ("-C") nil) ("svenska8" "[A-Za-zåäöÅÄö]" "[^A-Za-zåäöÅÄö]" "[']" nil ("-C" "-d" "svenska") "~list") ("francais7" "[A-Za-z]" "[^A-Za-z]" "[`'^---]" t nil nil) ("francais" "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü]" "[^A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü]" "[---']" t nil "~list") ("francais-tex" "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü\\]" "[^A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü\\]" "[---'^`\"]" t nil "~tex") ("dansk" "[A-ZÆØÅa-zæøå]" "[^A-ZÆØÅa-zæøå]" "" nil ("-C") nil)))
+(defvar ispell-dictionary-alist-2 '(("svenska" "[A-Za-z}{|\\133\\135\\\\]" "[^A-Za-z}{|\\133\\135\\\\]" "[']" nil ("-C") nil) ("svenska8" "[A-Za-zåäöÅÄö]" "[^A-Za-zåäöÅÄö]" "[']" nil ("-C" "-d" "svenska") "~list") ("francais7" "[A-Za-z]" "[^A-Za-z]" "[`'^---]" t nil nil) ("francais" "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü]" "[^A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü]" "[---']" t nil "~list") ("francais-tex" "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü\\]" "[^A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜàâçèéêëîïôùûü\\]" "[---'^`\"]" t nil "~tex") ("italiano" "[A-Za-zÀÈÉÌÍÎÒÙÚàèéìíîòùú]" "[^A-Za-zÀÈÉÌÍÎÒÙÚàèéìíîòùú]" "[']" t ("-d" "italiano") "~list") ("dansk" "[A-ZÆØÅa-zæøå]" "[^A-ZÆØÅa-zæøå]" "" nil ("-C") nil)))
 
 (defvar ispell-dictionary-alist (append ispell-dictionary-alist-1 ispell-dictionary-alist-2) "\
 An alist of dictionaries and their associated parameters.
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/custom-load.el
--- a/lisp/prim/custom-load.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/custom-load.el	Mon Aug 13 09:25:29 2007 +0200
@@ -1,79 +1,128 @@
 (put 'gnus-start 'custom-loads '("gnus-group" "gnus-int" "gnus-start" "gnus-util" "gnus"))
-(put 'extensions 'custom-loads '("wid-edit"))
+(put 'extensions 'custom-loads '("wid-edit" "tempo"))
+(put 'change-log 'custom-loads '("add-log"))
 (put 'message 'custom-loads '("message" "highlight-headers" "sendmail"))
+(put 'filladapt 'custom-loads '("filladapt"))
+(put 'psgml-dtd 'custom-loads '("psgml"))
 (put 'gnus-score-expire 'custom-loads '("gnus-kill" "gnus-score"))
 (put 'gnus-score-kill 'custom-loads '("gnus-kill"))
+(put 'bookmark 'custom-loads '("bookmark"))
 (put 'gnus-message 'custom-loads '("message"))
+(put 'mouse 'custom-loads '("mouse"))
+(put 'mail-abbrevs 'custom-loads '("mail-abbrevs"))
 (put 'gnus-summary-sort 'custom-loads '("gnus-sum"))
 (put 'nnmail-procmail 'custom-loads '("nnmail"))
+(put 'tex 'custom-loads '("texnfo-tex"))
 (put 'ssl 'custom-loads '("ssl"))
+(put 'tcl 'custom-loads '("tcl"))
 (put 'widgets 'custom-loads '("wid-browse" "wid-edit"))
-(put 'environment 'custom-loads '("cus-edit"))
+(put 'minibuffer 'custom-loads '("minibuf"))
+(put 'environment 'custom-loads '("minibuf" "modeline" "x-toolbar" "cus-edit"))
 (put 'gnus-article-buttons 'custom-loads '("gnus-art"))
 (put 'gnus-extract-archive 'custom-loads '("gnus-uu"))
+(put 'html 'custom-loads '("psgml-html"))
+(put 'cc-style 'custom-loads '("cc-mode"))
 (put 'gnus-article-headers 'custom-loads '("gnus-art" "gnus-sum"))
+(put 'texinfo 'custom-loads '("texinfo" "texnfo-tex"))
 (put 'gnus-score 'custom-loads '("gnus-nocem" "gnus"))
 (put 'gnus-summary-various 'custom-loads '("gnus-sum"))
+(put 'terminals 'custom-loads '("gnuserv"))
 (put 'gnus-topic 'custom-loads '("gnus-topic"))
 (put 'gnus-article-emphasis 'custom-loads '("gnus-art"))
 (put 'earcon 'custom-loads '("earcon"))
+(put 'boolean 'custom-loads '("bookmark"))
+(put 'auto-save 'custom-loads '("auto-save"))
 (put 'gnus-group-foreign 'custom-loads '("gnus-group"))
 (put 'gnus-article-washing 'custom-loads '("gnus-art"))
-(put 'mail 'custom-loads '("gnus" "message" "highlight-headers"))
+(put 'ispell 'custom-loads '("ispell"))
+(put 'mail 'custom-loads '("gnus" "message" "mail-abbrevs" "supercite" "highlight-headers"))
 (put 'gnus-summary-exit 'custom-loads '("gnus-sum"))
 (put 'gnus-article-saving 'custom-loads '("gnus-art"))
 (put 'gnus-extract-view 'custom-loads '("gnus-sum" "gnus-uu"))
+(put 'crypt 'custom-loads '("crypt"))
 (put 'comint 'custom-loads '("comint-xemacs"))
 (put 'gnus-group-listing 'custom-loads '("gnus-group"))
+(put 'man 'custom-loads '("man"))
 (put 'gnus-summary 'custom-loads '("gnus-sum" "gnus"))
 (put 'message-headers 'custom-loads '("message"))
+(put 'docs 'custom-loads '("texinfo" "makeinfo"))
+(put 'lisp-indent 'custom-loads '("cl-indent"))
+(put 'tools 'custom-loads '("make-mode" "add-log" "diff"))
+(put 'cc-comment 'custom-loads '("cc-mode"))
+(put 'editing-basics 'custom-loads '("simple"))
 (put 'gnus-group-select 'custom-loads '("gnus-sum"))
 (put 'display-time-balloon 'custom-loads '("time"))
+(put 'dabbrev 'custom-loads '("dabbrev"))
+(put 'help-appearance 'custom-loads '("help"))
 (put 'display-time 'custom-loads '("time"))
 (put 'hypermedia 'custom-loads '("wid-edit" "w3-cus"))
 (put 'w3-advanced 'custom-loads '("w3-cus"))
+(put 'lisp 'custom-loads '("cl-indent" "elp"))
+(put 'jka-compr 'custom-loads '("jka-compr"))
+(put 'diff 'custom-loads '("diff"))
+(put 'sh-script 'custom-loads '("sh-script"))
 (put 'w3-menus 'custom-loads '("w3-cus" "w3-menu"))
 (put 'gnus-summary-mail 'custom-loads '("gnus-sum"))
+(put 'elp 'custom-loads '("elp"))
+(put 'psgml 'custom-loads '("psgml-html" "psgml"))
+(put 'supercite-cite 'custom-loads '("supercite"))
 (put 'gnus-score-default 'custom-loads '("gnus-score" "gnus-sum"))
 (put 'nnmail-expire 'custom-loads '("nnmail"))
 (put 'gnus-thread 'custom-loads '("gnus-sum"))
 (put 'gnus-nocem 'custom-loads '("gnus-nocem"))
 (put 'gnus-threading 'custom-loads '("gnus-sum"))
 (put 'applications 'custom-loads '("cus-edit" "time"))
+(put 'paren-matching 'custom-loads '("simple"))
 (put 'gnus-summary-maneuvering 'custom-loads '("gnus-sum"))
 (put 'gnus-extract 'custom-loads '("gnus" "gnus-uu"))
-(put 'help 'custom-loads '("cus-edit"))
+(put 'help 'custom-loads '("help" "cus-edit" "info" "man"))
+(put 'supercite 'custom-loads '("supercite"))
 (put 'nnmail-split 'custom-loads '("nnmail"))
+(put 'minubuffer 'custom-loads '("minibuf"))
 (put 'gnus-article-various 'custom-loads '("gnus-art" "gnus-sum"))
 (put 'message-sending 'custom-loads '("message"))
 (put 'w3-files 'custom-loads '("w3-cus"))
 (put 'widget-browse 'custom-loads '("wid-browse"))
+(put 'data 'custom-loads '("auto-save" "crypt" "jka-compr"))
 (put 'gnus-article 'custom-loads '("gnus-art" "gnus-cite"))
+(put 'cc-indent 'custom-loads '("cc-mode"))
+(put 'compression 'custom-loads '("jka-compr"))
 (put 'comm 'custom-loads '("ssl"))
 (put 'gnus 'custom-loads '("gnus-art" "gnus-async" "gnus-cache" "gnus-demon" "gnus-dup" "gnus-eform" "gnus-uu" "gnus-win" "gnus" "nnmail"))
 (put 'gnus-treading 'custom-loads '("gnus-sum"))
+(put 'psgml-html 'custom-loads '("psgml-html"))
 (put 'nnmail 'custom-loads '("nnmail"))
 (put 'gnus-article-hiding 'custom-loads '("gnus-art" "gnus-sum"))
-(put 'customize 'custom-loads '("wid-edit" "custom" "cus-face" "cus-edit"))
+(put 'customize 'custom-loads '("wid-edit" "cus-face" "cus-edit"))
 (put 'w3-printing 'custom-loads '("w3-cus"))
 (put 'nnmail-duplicate 'custom-loads '("nnmail"))
+(put 'supercite-attr 'custom-loads '("supercite"))
 (put 'gnus-summary-visual 'custom-loads '("gnus-sum" "gnus"))
 (put 'w3-images 'custom-loads '("w3-cus"))
 (put 'gnus-group-various 'custom-loads '("gnus-group"))
+(put 'abbrev 'custom-loads '("dabbrev"))
 (put 'nnmail-retrieve 'custom-loads '("nnmail"))
 (put 'message-interface 'custom-loads '("message"))
 (put 'gnus-group 'custom-loads '("gnus-topic" "gnus"))
-(put 'programming 'custom-loads '("cus-edit"))
+(put 'programming 'custom-loads '("cus-edit" "compile"))
 (put 'gnus-article-signature 'custom-loads '("gnus-art"))
+(put 'toolbar 'custom-loads '("x-toolbar"))
+(put 'compilation 'custom-loads '("compile"))
 (put 'dired 'custom-loads '("dired-faces"))
 (put 'gnus-duplicate 'custom-loads '("gnus-dup"))
+(put 'sgml 'custom-loads '("psgml-html" "psgml"))
 (put 'gnus-score-adapt 'custom-loads '("gnus-score"))
+(put 'makeinfo 'custom-loads '("makeinfo"))
 (put 'nnmail-various 'custom-loads '("nnmail"))
+(put 'cc-auto 'custom-loads '("cc-mode"))
 (put 'nnmail-files 'custom-loads '("nnmail"))
 (put 'gnus-asynchronous 'custom-loads '("gnus-async"))
 (put 'gnus-visual 'custom-loads '("earcon" "gnus-art" "gnus-picon" "gnus" "smiley"))
 (put 'message-forwarding 'custom-loads '("message"))
+(put 'killing 'custom-loads '("simple"))
 (put 'message-news 'custom-loads '("message"))
+(put 'vrml-mode 'custom-loads '("vrml-mode"))
+(put 'vrml 'custom-loads '("vrml-mode"))
 (put 'games 'custom-loads '("xmine"))
 (put 'gnus-edit-form 'custom-loads '("gnus-eform"))
 (put 'external 'custom-loads '("cus-edit"))
@@ -81,35 +130,53 @@
 (put 'gnus-cite 'custom-loads '("gnus-cite"))
 (put 'gnus-demon 'custom-loads '("gnus-demon"))
 (put 'gnus-summary-choose 'custom-loads '("gnus-sum"))
+(put 'cc-mode 'custom-loads '("cc-mode"))
 (put 'development 'custom-loads '("cus-edit"))
+(put 'tempo 'custom-loads '("tempo"))
+(put 'gnuserv 'custom-loads '("gnuserv"))
 (put 'gnus-windows 'custom-loads '("gnus-win"))
 (put 'message-mail 'custom-loads '("message"))
 (put 'message-various 'custom-loads '("message"))
 (put 'gnus-group-levels 'custom-loads '("gnus-group"))
-(put 'languages 'custom-loads '("cus-edit"))
+(put 'languages 'custom-loads '("cus-edit" "sh-script" "tcl" "vrml-mode" "psgml"))
 (put 'gnus-summary-format 'custom-loads '("gnus-sum"))
 (put 'gnus-score-decay 'custom-loads '("gnus-score"))
 (put 'gnus-extract-post 'custom-loads '("gnus-uu"))
+(put 'supercite-hooks 'custom-loads '("supercite"))
+(put 'texinfo-tex 'custom-loads '("texnfo-tex"))
 (put 'faces 'custom-loads '("cus-edit" "wid-edit" "gnus" "message" "highlight-headers"))
+(put 'passwd 'custom-loads '("passwd"))
 (put 'gnus-various 'custom-loads '("gnus-sum"))
+(put 'cc-syntax 'custom-loads '("cc-mode"))
 (put 'xmine 'custom-loads '("xmine"))
+(put 'supercite-frames 'custom-loads '("supercite"))
 (put 'gnus-article-highlight 'custom-loads '("gnus-art"))
 (put 'emacs 'custom-loads '("cus-edit" "dired-faces"))
-(put 'processes 'custom-loads '("comint-xemacs"))
-(put 'news 'custom-loads '("gnus" "message" "highlight-headers"))
+(put 'processes 'custom-loads '("comint-xemacs" "executable" "gnuserv" "ispell" "passwd"))
+(put 'news 'custom-loads '("gnus" "message" "supercite" "highlight-headers"))
 (put 'w3-hooks 'custom-loads '("w3-cus"))
+(put 'executable 'custom-loads '("executable"))
 (put 'highlight-headers 'custom-loads '("highlight-headers"))
 (put 'message-insertion 'custom-loads '("message"))
+(put 'psgml-insert 'custom-loads '("psgml"))
 (put 'wp 'custom-loads '("cus-edit"))
 (put 'message-faces 'custom-loads '("message"))
 (put 'w3 'custom-loads '("w3-cus" "w3-script"))
+(put 'sh 'custom-loads '("sh-script"))
+(put 'isearch 'custom-loads '("isearch-mode"))
 (put 'gnus-score-files 'custom-loads '("gnus-score"))
+(put 'modeline 'custom-loads '("modeline"))
+(put 'makefile-mode 'custom-loads '("make-mode"))
 (put 'gnus-summary-marks 'custom-loads '("gnus-sum"))
 (put 'picons 'custom-loads '("gnus-picon"))
 (put 'nnmail-prepare 'custom-loads '("nnmail"))
 (put 'w3-display 'custom-loads '("w3-cus"))
 (put 'w3-parsing 'custom-loads '("w3-cus"))
 (put 'message-buffers 'custom-loads '("message"))
-(put 'editing 'custom-loads '("cus-edit"))
+(put 'editing 'custom-loads '("simple" "cus-edit" "filladapt"))
+(put 'matching 'custom-loads '("simple" "isearch-mode" "bookmark"))
 (put 'gnus-article-mime 'custom-loads '("gnus-art" "gnus-sum"))
+(put 'info 'custom-loads '("info"))
 (put 'w3-scripting 'custom-loads '("w3-script"))
+(put 'unix 'custom-loads '("sh-script"))
+(put 'c 'custom-loads '("cc-mode"))
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/frame.el
--- a/lisp/prim/frame.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/frame.el	Mon Aug 13 09:25:29 2007 +0200
@@ -1031,7 +1031,7 @@
 	(append (list save-frame) frames)
       frames)))
 
-(defvar temp-buffer-shrink-to-fit t
+(defvar temp-buffer-shrink-to-fit nil
   "*When non-nil resize temporary output buffers to minimize blank lines.")
 
 (defvar temp-buffer-max-height .5
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/glyphs.el
--- a/lisp/prim/glyphs.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/glyphs.el	Mon Aug 13 09:25:29 2007 +0200
@@ -609,7 +609,7 @@
 				 [jpeg :data nil] 2)))
        ,@(if (featurep 'png) '(("\.png$" [png :file nil] 2)))
        ,@(if (featurep 'png) '(("^\211PNG" [png :data nil] 2)))
-       ("" [autodetect :data nil] 2))))
+       ("" [automatic-conversion :data nil] 2))))
   ;; #### this should really be formatted-string, not string but we
   ;; don't have it implemented yet
   ;;
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/help.el
--- a/lisp/prim/help.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/help.el	Mon Aug 13 09:25:29 2007 +0200
@@ -35,6 +35,10 @@
 ;; or run interpreted, but not when the compiled code is loaded.
 ;(eval-when-compile (require 'help-macro))
 
+(defgroup help-appearance nil
+  "Appearance of help buffers"
+  :group 'help)
+
 (defvar help-map (let ((map (make-sparse-keymap)))
                    (set-keymap-name map 'help-map)
                    (set-keymap-prompt
@@ -339,10 +343,12 @@
          (substitute-command-keys
           (gettext "  \\[scroll-other-window] to scroll the help."))))))
 
-(defvar help-selects-help-window t
+(defcustom help-selects-help-window t
   "*If nil, use the \"old Emacs\" behavior for Help buffers.
 This just displays the buffer in another window, rather than selecting
-the window.")
+the window."
+  :type 'boolean
+  :group 'help-appearance)
 
 ;; Use this function for displaying help when C-h something is pressed
 ;; or in similar situations.  Do *not* use it when you are displaying
@@ -745,9 +751,12 @@
 	      (set-syntax-table stab)))
 	(error nil))))
 
-(defvar describe-function-show-arglist t  ; default to nil for the non-hackers?
-  "*If true, then describe-function will show its arglist if the function is
-not an autoload.")
+;; default to nil for the non-hackers?
+(defcustom describe-function-show-arglist t
+  "*If non-nil, describe-function will show its arglist,
+unless the function is autoloaded."
+  :type 'boolean
+  :group 'help-appearance)
 
 (defun describe-function-find-file (function)
   (and (boundp 'load-history) ; not standardly bound in XEmacs
@@ -1107,11 +1116,12 @@
 	       (terpri)
 	       (terpri)))
 	 ;; don't bother to print anything if variable is obsolete and aliased.
-	 (if (or (not obsolete) (not aliases))
-	     (if doc
-		 ;; note: documentation-property calls substitute-command-keys.
-		 (princ doc)
-	       (princ "not documented as a variable."))))
+	 (when (or (not obsolete) (not aliases))
+	   (if doc
+	       ;; note: documentation-property calls substitute-command-keys.
+	       (princ doc)
+	     (princ "not documented as a variable."))
+	   (terpri)))
        (save-excursion
 	 (set-buffer standard-output)
 	 ;; Return the text we displayed.
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/isearch-mode.el
--- a/lisp/prim/isearch-mode.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/isearch-mode.el	Mon Aug 13 09:25:29 2007 +0200
@@ -92,6 +92,11 @@
 ;;; 3/18/92 Fixed yanking in regexps.
 
 
+(defgroup isearch nil
+  "Incremental search"
+  :group 'matching)
+
+
 (defun isearch-char-to-string (c)
   (if (integerp c)
       (make-string 1 c)
@@ -119,26 +124,36 @@
 (defconst search-exit-option t
   "Non-nil means random control characters terminate incremental search.")
 
-(defvar search-slow-window-lines 1
+(defcustom search-slow-window-lines 1
   "*Number of lines in slow search display windows.
 These are the short windows used during incremental search on slow terminals.
 Negative means put the slow search window at the top (normally it's at bottom)
-and the value is minus the number of lines.")
+and the value is minus the number of lines."
+  :type 'integer
+  :group 'isearch)
 
-(defconst search-slow-speed 1200
+(defcustom search-slow-speed 1200
   "*Highest terminal speed at which to use \"slow\" style incremental search.
 This is the style where a one-line window is created to show the line
-that the search has reached.")
+that the search has reached."
+  :type 'integer
+  :group 'isearch)
 
-(defvar search-caps-disable-folding t
+(defcustom search-caps-disable-folding t
   "*If non-nil, upper case chars disable case fold searching.
-This does not apply to \"yanked\" strings.")
+This does not apply to \"yanked\" strings."
+  :type 'boolean
+  :group 'isearch)
 
-(defvar search-nonincremental-instead t
-  "*If non-nil, do a nonincremental search instead if exiting immediately.")
+(defcustom search-nonincremental-instead t
+  "*If non-nil, do a nonincremental search instead if exiting immediately."
+  :type 'boolean
+  :group 'isearch)
   
-(defconst search-whitespace-regexp "\\(\\s \\|[\n\r]\\)+"
-  "*If non-nil, regular expression to match a sequence of whitespace chars.")
+(defcustom search-whitespace-regexp "\\(\\s \\|[\n\r]\\)+"
+  "*If non-nil, regular expression to match a sequence of whitespace chars."
+  :type 'regexp
+  :group 'isearch)
 
 ;;;==================================================================
 ;;; Search ring.
@@ -148,10 +163,14 @@
 (defvar regexp-search-ring nil
   "List of regular expression search string sequences.")
 
-(defconst search-ring-max 16
-  "*Maximum length of search ring before oldest elements are thrown away.")
-(defconst regexp-search-ring-max 16
-  "*Maximum length of regexp search ring before oldest elements are thrown away.")
+(defcustom search-ring-max 16
+  "*Maximum length of search ring before oldest elements are thrown away."
+  :type 'integer
+  :group 'isearch)
+(defcustom regexp-search-ring-max 16
+  "*Maximum length of regexp search ring before oldest elements are thrown away."
+  :type 'integer
+  :group 'isearch)
 
 (defvar search-ring-yank-pointer nil
   "The tail of the search ring whose car is the last thing searched for.")
@@ -1012,9 +1031,11 @@
 ;;===========================================================
 ;; Search Ring
 
-(defvar search-ring-update nil
+(defcustom search-ring-update nil
   "*Non-nil if advancing or retreating in the search ring should cause search.
-Default nil means edit the string from the search ring first.")
+Default nil means edit the string from the search ring first."
+  :type 'boolean
+  :group 'isearch)
   
 (defun isearch-ring-adjust1 (advance)
   ;; Helper for isearch-ring-adjust
@@ -1388,7 +1409,7 @@
 ;;;========================================================
 ;;; Highlighting
 
-(defvar isearch-highlight t
+(defcustom isearch-highlight t
   "*Whether isearch and query-replace should highlight the text which 
 currently matches the search-string.")
 
@@ -1559,3 +1580,16 @@
   ;; this incorrectly returns t for "\\\\A"
   (let ((case-fold-search nil))
     (not (string-match "\\(^\\|[^\\]\\)[A-Z]" string))))
+
+;; Used by etags.el and info.el
+(defmacro with-caps-disable-folding (string &rest body) "\
+Eval BODY with `case-fold-search' let to nil if STRING contains
+uppercase letters and `search-caps-disable-folding' is t."
+  `(let ((case-fold-search
+          (if (and case-fold-search search-caps-disable-folding)
+              (isearch-no-upper-case-p ,string)
+            case-fold-search)))
+     ,@body))
+(put 'with-caps-disable-folding 'lisp-indent-function 1)
+(put 'with-caps-disable-folding 'edebug-form-spec '(form body))
+
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/loadup.el
--- a/lisp/prim/loadup.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/loadup.el	Mon Aug 13 09:25:29 2007 +0200
@@ -76,6 +76,8 @@
      (load-gc "replace") 		; match-string used in version.el.
      (load-gc "version.el")		; Ignore compiled-by-mistake version.elc
      (load-gc "cl")
+     (load-gc "widget")
+     (load-gc "custom") ; Before the world so everything can be customized
      (load-gc "cmdloop")
      (or (fboundp 'recursive-edit) (load-gc "cmdloop1"))
      (load-gc "keymap")
@@ -108,8 +110,6 @@
      ;; After fixing, eos/loaddefs-eos and loaddefs appear identical?!!
      ;; So just make loaddefs-eos go away...
      ;;(load-gc (if (featurep 'sparcworks) "eos/loaddefs-eos" "loaddefs"))
-     (load-gc "widget")
-     (load-gc "custom") ; Before loaddefs so that defcustom exists
      (load-gc "loaddefs") ; <=== autoloads get put here
      (load-gc "misc")
      (load-gc "profile")
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/minibuf.el
--- a/lisp/prim/minibuf.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/minibuf.el	Mon Aug 13 09:25:29 2007 +0200
@@ -29,9 +29,15 @@
 
 ;;; Code:
 
-(defvar insert-default-directory t
+(defgroup minibuffer nil
+  "Minibuffer customizations"
+  :group 'environment)
+
+
+(defcustom insert-default-directory t
  "*Non-nil means when reading a filename start with default dir in minibuffer."
- )
+ :type 'boolean
+ :group 'minibuffer)
 
 (defvar minibuffer-completion-table nil
   "Alist or obarray used for completion in the minibuffer.
@@ -58,20 +64,27 @@
 are not valid completions, an extra RET must be typed to confirm the
 response.  This is helpful for catching typos, etc.")
 
-(defvar completion-auto-help t
-  "*Non-nil means automatically provide help for invalid completion input.")
+(defcustom completion-auto-help t
+  "*Non-nil means automatically provide help for invalid completion input."
+  :type 'boolean
+  :group 'minibuffer)
 
-(defvar enable-recursive-minibuffers nil
+(defcustom enable-recursive-minibuffers nil
   "*Non-nil means to allow minibuffer commands while in the minibuffer.
 More precisely, this variable makes a difference when the minibuffer window
 is the selected window.  If you are in some other window, minibuffer commands
-are allowed even if a minibuffer is active.")
+are allowed even if a minibuffer is active."
+  :type 'boolean
+  :group 'minibuffer)
 
-(defvar minibuffer-max-depth 1
+(defcustom minibuffer-max-depth 1
   ;; See comment in #'minibuffer-max-depth-exceeded
   "*Global maximum number of minibuffers allowed;
 compare to enable-recursive-minibuffers, which is only consulted when the
-minibuffer is reinvoked while it is the selected window.")
+minibuffer is reinvoked while it is the selected window."
+  :type '(choice integer
+		 (const :tag "Indefinite" nil))
+  :group 'minibuffer)
 
 ;; Moved to C.  The minibuffer prompt must be setup before this is run
 ;; and that can only be done from the C side.
@@ -158,14 +171,18 @@
     map)
   "Minibuffer keymap used by shell-command and related commands.")
 
-(defvar use-dialog-box t
-  "Variable controlling usage of the dialog box.  If nil, the dialog box
-will never be used, even in response to mouse events.")
+(defcustom use-dialog-box t
+  "*Variable controlling usage of the dialog box.
+If nil, the dialog box will never be used, even in response to mouse events."
+  :type 'boolean
+  :group 'minibuffer)
 
-(defvar minibuffer-electric-file-name-behavior t
-  "If non-nil, slash and tilde in certain places cause immediate deletion.
+(defcustom minibuffer-electric-file-name-behavior t
+  "*If non-nil, slash and tilde in certain places cause immediate deletion.
 These are the same places where this behavior would occur later on anyway,
-in `substitute-in-file-name'.")
+in `substitute-in-file-name'."
+  :type 'boolean
+  :group 'minibuffer)
 
 (defun minibuffer-electric-slash ()
   ;; by Stig@hackvan.com
@@ -260,9 +277,12 @@
        (cons STRING (symbol-value minibuffer-history-variable)))")
 (defvar minibuffer-history-position)
 
-(defvar minibuffer-history-minimum-string-length 3
-  "If this variable is non-nil, a string will not be added to the
-minibuffer history if its length is less than that value.")
+(defcustom minibuffer-history-minimum-string-length 3
+  "*If this variable is non-nil, a string will not be added to the
+minibuffer history if its length is less than that value."
+  :type '(choice (const :tag "Any" nil)
+		 integer)
+  :group 'minibuffer)
 
 (defun read-from-minibuffer (prompt &optional initial-contents
                                     keymap
@@ -920,8 +940,8 @@
 ;; ange-ftp stuff, but it doesn't work.
 ;;
 
-(defvar minibuffer-smart-completion-tracking-behavior nil
-  "If non-nil, look for completions under mouse in all buffers.
+(defcustom minibuffer-smart-completion-tracking-behavior nil
+  "*If non-nil, look for completions under mouse in all buffers.
 This allows you to click on something that looks like a completion
 and have it selected, regardless of what buffer it is in.
 
@@ -931,7 +951,9 @@
    people not expecting it, and looks like a bug
 -- If ange-ftp is enabled, this tracking sometimes causes ange-ftp
    action as a result of mouse motion, which is *bad bad bad*.
-   Hopefully this bug will be fixed at some point.")
+   Hopefully this bug will be fixed at some point."
+  :type 'boolean
+  :group 'minibuffer)
 
 (defun minibuffer-smart-mouse-tracker (event)
   ;; Used as the mode-motion-hook of the minibuffer window, which is the
@@ -1993,10 +2015,12 @@
 
 
 
-(defvar force-dialog-box-use nil
-  "If non-nil, always use a dialog box for asking questions, if possible.
+(defcustom force-dialog-box-use nil
+  "*If non-nil, always use a dialog box for asking questions, if possible.
 You should *bind* this, not set it.  This is useful if you're doing
-something mousy but which wasn't actually invoked using the mouse.")
+something mousy but which wasn't actually invoked using the mouse."
+  :type 'boolean
+  :group 'minubuffer)
 
 ;; We include this here rather than dialog.el so it is defined
 ;; even when dialog boxes are not present.
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/modeline.el
--- a/lisp/prim/modeline.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/modeline.el	Mon Aug 13 09:25:29 2007 +0200
@@ -26,16 +26,24 @@
 ;;;                     General mouse modeline stuff                    ;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defvar drag-modeline-event-lag 150
-  "*The amount of time to wait (in msecs) between drag modeline events
-before updating the display. If this value is too small, dragging will
-be choppy because redisplay cannot keep up. If it is too large, dragging
-will be choppy because of the explicit redisplay delay specified.")
+(defgroup modeline nil
+  "Modeline customizations"
+  :group 'environment)
 
-(defvar modeline-click-swaps-buffers nil
+(defcustom drag-modeline-event-lag 150
+  "*The pause (in msecs) between drag modeline events before redisplaying.
+If this value is too small, dragging will be choppy because redisplay cannot
+keep up. If it is too large, dragging will be choppy because of the explicit
+redisplay delay specified."
+  :type 'integer
+  :group 'modeline)
+
+(defcustom modeline-click-swaps-buffers nil
   "*If non-nil, clicking on the modeline changes the current buffer.
 Click on the left half of the modeline cycles forward through the
-buffer list and clicking on the right half cycles backward.")
+buffer list and clicking on the right half cycles backward."
+  :type 'boolean
+  :group 'modeline)
 
 (defun mouse-drag-modeline (event)
   "Resize the window by dragging the modeline.
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/mouse.el
--- a/lisp/prim/mouse.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/mouse.el	Mon Aug 13 09:25:29 2007 +0200
@@ -34,14 +34,18 @@
 
 (global-set-key 'button2 'mouse-yank)
 
-(defvar mouse-track-rectangle-p nil
+(defcustom mouse-track-rectangle-p nil
   "*If true, then dragging out a region with the mouse selects rectangles
-instead of simple start/end regions.")
+instead of simple start/end regions."
+  :type 'boolean
+  :group 'mouse)
 
-(defvar mouse-yank-at-point nil
+(defcustom mouse-yank-at-point nil
   "*If non-nil, the function `mouse-yank' will yank text at the cursor location.
 Otherwise, the cursor will be moved to the location of the pointer click before
-text is inserted.")
+text is inserted."
+  :type 'boolean
+  :group 'mouse)
 
 (defvar mouse-yank-function 'yank	; x11/x-mouse changes this...
   "Function that is called upon by `mouse-yank' to actually insert text.")
@@ -497,11 +501,13 @@
 all hook functions are called regardless of their return
 values.")
 
-(defvar mouse-track-multi-click-time 400
-  "Maximum number of milliseconds allowed between clicks for a multi-click.
-See `mouse-track-click-hook'.")
+(defcustom mouse-track-multi-click-time 400
+  "*Maximum number of milliseconds allowed between clicks for a multi-click.
+See `mouse-track-click-hook'."
+  :type 'integer
+  :group 'mouse)
 
-(defvar mouse-track-scroll-delay 100
+(defcustom mouse-track-scroll-delay 100
   "Maximum of milliseconds between calls to `mouse-track-drag-hook'.
 If the user is dragging the mouse (i.e. the button is held down and
 a drag has been initiated) and does not move the mouse for this many
@@ -510,7 +516,9 @@
 in a selection when the user drags the mouse out the window it
 was in.
 
-A value of nil disables the timeout feature.")
+A value of nil disables the timeout feature."
+  :type '(choice integer (const :tag "Disabled" nil))
+  :group 'mouse)
 
 (defvar mouse-track-x-threshold '(face-width 'default)
   "Minimum number of pixels in the X direction for a drag to be initiated.
diff -r d101af7320b8 -r cca96a509cfe lisp/prim/simple.el
--- a/lisp/prim/simple.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/prim/simple.el	Mon Aug 13 09:25:29 2007 +0200
@@ -59,6 +59,19 @@
 
 ;;; Code:
 
+(defgroup editing-basics nil
+  "Most basic editing variables"
+  :group 'editing)
+
+(defgroup killing nil
+  "Killing and yanking commands"
+  :group 'editing)
+
+(defgroup paren-matching nil
+  "Matching and blinking of parens"
+  :group 'matching)
+
+
 (defun newline (&optional arg)
   "Insert a newline, and move to left margin of the new line if it's blank.
 The newline is marked with the text-property `hard'.
@@ -879,8 +892,10 @@
   (forward-line (- arg))
   (skip-chars-forward " \t"))
 
-(defvar kill-whole-line nil
-  "*If non-nil, `kill-line' with no arg at beg of line kills the whole line.")
+(defcustom kill-whole-line nil
+  "*If non-nil, `kill-line' with no arg at beg of line kills the whole line."
+  :type 'boolean
+  :group 'killing)
 
 (defun kill-line (&optional arg)
   "Kill the rest of the current line; if no nonblanks there, kill thru newline.
@@ -965,11 +980,13 @@
 ;current string, it is probably good enough to return nil if the string
 ;is equal (according to `string=') to the last text Emacs provided.")
 
-(defvar kill-hooks nil
-  "Functions run when something is added to the XEmacs kill ring.
+(defcustom kill-hooks nil
+  "*Functions run when something is added to the XEmacs kill ring.
 These functions are called with one argument, the string most recently
 cut or copied.  You can use this to, for example, make the most recent 
-kill become the X Clipboard selection.")
+kill become the X Clipboard selection."
+  :type 'hook
+  :group 'killing)
 
 
 ;;;; The kill ring data structure.
@@ -984,8 +1001,10 @@
 interaction; you may want to use them instead of manipulating the kill
 ring directly.")
 
-(defconst kill-ring-max 30
-  "*Maximum length of kill ring before oldest elements are thrown away.")
+(defcustom kill-ring-max 30
+  "*Maximum length of kill ring before oldest elements are thrown away."
+  :type 'integer
+  :group 'killing)
 
 (defvar kill-ring-yank-pointer nil
   "The tail of the kill ring whose car is the last thing yanked.")
@@ -1392,15 +1411,19 @@
 (make-variable-buffer-local 'mark-ring)
 (put 'mark-ring 'permanent-local t)
 
-(defconst mark-ring-max 16
-  "*Maximum size of mark ring.  Start discarding off end if gets this big.")
+(defcustom mark-ring-max 16
+  "*Maximum size of mark ring.  Start discarding off end if gets this big."
+  :type 'integer
+  :group 'killing)
 
 (defvar global-mark-ring nil
   "The list of saved global marks, most recent first.")
 
-(defconst global-mark-ring-max 16
+(defcustom global-mark-ring-max 16
   "*Maximum size of global mark ring.  \
-Start discarding off end if gets this big.")
+Start discarding off end if gets this big."
+  :type 'integer
+  :group 'killing)
 
 (defun set-mark-command (arg)
   "Set mark at where point is, or jump to mark.
@@ -1545,8 +1568,10 @@
 
 
 ;;; After 8 years of waiting ... -sb
-(defvar next-line-add-newlines nil  ; XEmacs
-  "*If non-nil, `next-line' inserts newline to avoid `end of buffer' error.")
+(defcustom next-line-add-newlines nil  ; XEmacs
+  "*If non-nil, `next-line' inserts newline to avoid `end of buffer' error."
+  :type 'boolean
+  :group 'editing-basics)
 
 (defun next-line (arg)
   "Move cursor vertically down ARG lines.
@@ -1608,13 +1633,17 @@
     (line-move (- arg)))
   nil)
 
-(defconst track-eol nil
+(defcustom track-eol nil
   "*Non-nil means vertical motion starting at end of line keeps to ends of lines.
 This means moving to the end of each line moved onto.
-The beginning of a blank line does not count as the end of a line.")
-
-(defvar goal-column nil
-  "*Semipermanent goal column for vertical motion, as set by \\[set-goal-column], or nil.")
+The beginning of a blank line does not count as the end of a line."
+  :type 'boolean
+  :group 'editing-basics)
+
+(defcustom goal-column nil
+  "*Semipermanent goal column for vertical motion, as set by \\[set-goal-column], or nil."
+  :type '(choice integer (const nil))
+  :group 'editing-basics)
 (make-variable-buffer-local 'goal-column)
 
 (defvar temporary-goal-column 0
@@ -1627,9 +1656,11 @@
 (eval-when-compile
   (defvar inhibit-point-motion-hooks))
 
-(defvar line-move-ignore-invisible nil
+(defcustom line-move-ignore-invisible nil
   "*Non-nil means \\[next-line] and \\[previous-line] ignore invisible lines.
-Outline mode sets this.")
+Use with care, as it slows down movement significantly.  Outline mode sets this."
+  :type 'boolean
+  :group 'editing-basics)
 
 ;; This is the guts of next-line and previous-line.
 ;; Arg says how many lines to move.
@@ -2624,8 +2655,10 @@
 	    'overwrite-mode-binary))
   (redraw-modeline))
 
-(defvar line-number-mode nil
-  "*Non-nil means display line number in modeline.")
+(defcustom line-number-mode nil
+  "*Non-nil means display line number in modeline."
+  :type 'boolean
+  :group 'editing-basics)
 
 (defun line-number-mode (arg)
   "Toggle Line Number mode.
@@ -2638,8 +2671,10 @@
 	  (> (prefix-numeric-value arg) 0)))
   (redraw-modeline))
 
-(defvar column-number-mode nil
-  "*Non-nil means display column number in mode line.")
+(defcustom column-number-mode nil
+  "*Non-nil means display column number in mode line."
+  :type 'boolean
+  :group 'editing-basics)
 
 (defun column-number-mode (arg)
   "Toggle Column Number mode.
@@ -2653,22 +2688,32 @@
   (redraw-modeline))
 
 
-(defvar blink-matching-paren t
-  "*Non-nil means show matching open-paren when close-paren is inserted.")
-
-(defvar blink-matching-paren-on-screen t
+(defcustom blink-matching-paren t
+  "*Non-nil means show matching open-paren when close-paren is inserted."
+  :type 'boolean
+  :group 'paren-matching)
+
+(defcustom blink-matching-paren-on-screen t
   "*Non-nil means show matching open-paren when it is on screen.
 nil means don't show it (but the open-paren can still be shown
-when it is off screen.")
-
-(defconst blink-matching-paren-distance 12000
-  "*If non-nil, is maximum distance to search for matching open-paren.")
-
-(defconst blink-matching-delay 1
-  "*The number of seconds that `blink-matching-open' will delay at a match.")
-
-(defconst blink-matching-paren-dont-ignore-comments nil
-  "*Non-nil means `blink-matching-paren' should not ignore comments.")
+when it is off screen."
+  :type 'boolean
+  :group 'paren-matching)
+
+(defcustom blink-matching-paren-distance 12000
+  "*If non-nil, is maximum distance to search for matching open-paren."
+  :type '(choice integer (const nil))
+  :group 'paren-matching)
+
+(defcustom blink-matching-delay 1
+  "*The number of seconds that `blink-matching-open' will delay at a match."
+  :type 'number
+  :group 'paren-matching)
+
+(defcustom blink-matching-paren-dont-ignore-comments nil
+  "*Non-nil means `blink-matching-paren' should not ignore comments."
+  :type 'boolean
+  :group 'paren-matching)
 
 (defun blink-matching-open ()
   "Move cursor momentarily to the beginning of the sexp before point."
@@ -3058,6 +3103,7 @@
 (defvar log-message-ignore-regexps
   '("^Mark set$"
     "^Undo!$"
+    "^Undo\\.\\.\\.$"
     "^Quit$"
     "^\\(Beginning\\|End\\) of buffer$"
     "^Fontifying"
diff -r d101af7320b8 -r cca96a509cfe lisp/psgml/psgml-html.el
--- a/lisp/psgml/psgml-html.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/psgml/psgml-html.el	Mon Aug 13 09:25:29 2007 +0200
@@ -47,28 +47,49 @@
 
 ;;{{{ user variables
 
+(defgroup html nil
+  "HyperText Markup Language"
+  :group 'sgml)
+
+(defgroup psgml-html nil
+  "HTML mode in conjunction with PSGML"
+  :tag "Psgml Html"
+  :prefix "html-helper-"
+  :group 'html
+  :group 'psgml)
+
 ;; Set this to be whatever signature you want on the bottom of your pages.
-(defvar html-helper-address-string
+(defcustom html-helper-address-string
   (concat ""
 	  (user-full-name) "")
-  "*The default author string of each file.")
+  "*The default author string of each file."
+  :type 'string
+  :group 'psgml-html)
 
-(defvar html-helper-htmldtd-version "\n"
-  "*Version of HTML DTD you're using.")
+(defcustom html-helper-htmldtd-version "\n"
+  "*Version of HTML DTD you're using."
+  :type 'string
+  :group 'psgml-html)
 
-(defvar html-helper-do-write-file-hooks t
-  "*If not nil, then modify `local-write-file-hooks' to do timestamps.")
+(defcustom html-helper-do-write-file-hooks t
+  "*If not nil, then modify `local-write-file-hooks' to do timestamps."
+  :type 'boolean
+  :group 'psgml-html)
 
-(defvar html-helper-build-new-buffer t
-  "*If not nil, then insert `html-helper-new-buffer-strings' for new buffers.")
+(defcustom html-helper-build-new-buffer t
+  "*If not nil, then insert `html-helper-new-buffer-strings' for new buffers."
+  :type 'boolean
+  :group 'psgml-html)
 
-(defvar html-helper-timestamp-hook 'html-helper-default-insert-timestamp
+(defcustom html-helper-timestamp-hook 'html-helper-default-insert-timestamp
   "*Hook called for timestamp insertion.
-Override this for your own timestamp styles.")
+Override this for your own timestamp styles."
+  :type 'boolean
+  :group 'psgml-html)
 
 ;; strings you might want to change
 
-(defvar html-helper-new-buffer-template
+(defcustom html-helper-new-buffer-template
   '(html-helper-htmldtd-version
     "\n"
     "  \n"
@@ -86,33 +107,43 @@
     "\n  \n\n")
   "*Template for new buffers.
 Inserted by `html-helper-insert-new-buffer-strings' if
-`html-helper-build-new-buffer' is set to t")
+`html-helper-build-new-buffer' is set to t"
+  :type 'sexp
+  :group 'psgml-html)
 
-(defvar html-helper-timestamp-start "\n"
+(defcustom html-helper-timestamp-start "\n"
   "*Start delimiter for timestamps.
 Everything between `html-helper-timestamp-start' and
 `html-helper-timestamp-end' will be deleted and replaced with the output
 of the functions `html-helper-timestamp-hook' if
-`html-helper-do-write-file-hooks' is t")
+`html-helper-do-write-file-hooks' is t"
+  :type 'string
+  :group 'psgml-html)
 
-(defvar html-helper-timestamp-end ""
+(defcustom html-helper-timestamp-end ""
   "*End delimiter for timestamps.
 Everything between `html-helper-timestamp-start' and
 `html-helper-timestamp-end' will be deleted and replaced with the output
 of the function `html-helper-insert-timestamp' if
-`html-helper-do-write-file-hooks' is t")
+`html-helper-do-write-file-hooks' is t"
+  :type 'string
+  :group 'psgml-html)
 
 ;; control over what types of tags to load. By default, we load all the
 ;; ones we know of.
 
-(defvar html-helper-types-to-install
+(defcustom html-helper-types-to-install
   '(anchor header logical phys list textel entity image head form)
   "*List of tag types to install when html-helper-mode is first loaded.
 If you want to not install some type of tag, override this variable.
-Order is significant: menus go in this order.")
+Order is significant: menus go in this order."
+  :type '(repeat symbol)
+  :group 'psgml-html)
 
-(defvar html-mode-hook nil
-  "*Hook called by `html-mode'.")
+(defcustom html-mode-hook nil
+  "*Hook called by `html-mode'."
+  :type 'hook
+  :group 'psgml-html)
 
 ;;}}} end of user variables
 ;;{{{ type based keymap and menu variable and function setup
diff -r d101af7320b8 -r cca96a509cfe lisp/psgml/psgml.el
--- a/lisp/psgml/psgml.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/psgml/psgml.el	Mon Aug 13 09:25:29 2007 +0200
@@ -1,5 +1,5 @@
 ;;; psgml.el --- SGML-editing mode with parsing support
-;; $Id: psgml.el,v 1.6 1997/03/08 23:26:54 steve Exp $
+;; $Id: psgml.el,v 1.7 1997/04/10 05:55:50 steve Exp $
 
 ;; Copyright (C) 1993, 1994, 1995, 1996 Lennart Staflin
 ;; Copyright (C) 1992 Free Software Foundation, Inc.
@@ -77,15 +77,39 @@
 
 ;;; User settable options:
 
-(defvar sgml-insert-missing-element-comment t
+(defgroup sgml nil
+  "Standard Generalized Markup Language"
+  :group 'languages)
+
+(defgroup psgml nil
+  "SGML-editing mode with parsing support"
+  :prefix "sgml-"
+  :group 'sgml)
+
+(defgroup psgml-insert nil
+  "Inserting features of psgml"
+  :prefix "sgml-"
+  :group 'psgml)
+
+(defgroup psgml-dtd nil
+  "DTD, CATALOG and DOCTYPE customizations in psgml"
+  :prefix "sgml-"
+  :group 'psgml)
+
+
+(defcustom sgml-insert-missing-element-comment t
   "*If true, and sgml-auto-insert-required-elements also true,
 `sgml-insert-element' will insert a comment if there is an element required
-but there is more than one to choose from." )
+but there is more than one to choose from."
+  :type 'boolean
+  :group 'psgml-insert)
 
-(defvar sgml-insert-end-tag-on-new-line nil
+(defcustom sgml-insert-end-tag-on-new-line nil
   "*If true, `sgml-insert-element' will put the end-tag on a new line
 after the start-tag. Useful on slow terminals if you find the end-tag after
-the cursor irritating." )
+the cursor irritating."
+  :type 'boolean
+  :group 'psgml-insert)
 
 (defvar sgml-doctype nil
   "*If set, this should be the name of a file that contains the doctype
@@ -94,23 +118,30 @@
 (put 'sgml-doctype 'sgml-type 'string)
 (make-variable-buffer-local 'sgml-doctype)
 
-(defvar sgml-system-identifiers-are-preferred nil
+(defcustom sgml-system-identifiers-are-preferred nil
   "*If nil, PSGML will look up external entities by searching the catalogs
 in `sgml-local-catalogs' and `sgml-catalog-files' and only if the
 entity is not found in the catalogs will a given system identifer be
 used. If the variable is non-nil and a system identifer is given, the
 system identifier will be used for the entity. If no system identifier
-is given the catalogs will searched.")
+is given the catalogs will searched."
+  :type 'boolean
+  :group 'psgml-dtd)
 
-(defvar sgml-range-indicator-max-length 9
+(defcustom sgml-range-indicator-max-length 9
   "*Maximum number of characters used from the first and last entry
-of a submenu to indicate the range of that menu.")
+of a submenu to indicate the range of that menu."
+  :type 'integer
+  :group 'psgml)
 
-(defvar sgml-default-doctype-name nil
-  "*Document type name to use if no document type declaration is present.")
+(defcustom sgml-default-doctype-name nil
+  "*Document type name to use if no document type declaration is present."
+  :type '(choice string (const nil))
+  :group 'psgml-dtd)
+
 (put 'sgml-default-doctype-name 'sgml-type 'string-or-nil)
 
-(defvar sgml-markup-faces '((start-tag 	. bold)
+(defcustom sgml-markup-faces '((start-tag 	. bold)
 			    (end-tag 	. bold)
 			    (comment 	. italic)
 			    (pi 	. bold)
@@ -131,7 +162,9 @@
 sgml	- SGML declaration
 start-tag
 entity  - general entity reference
-shortref- short reference")
+shortref- short reference"
+  :type '(repeat (cons symbol face))
+  :group 'psgml)
 
 (defvar sgml-buggy-subst-char-in-region 
   (or (not (boundp 'emacs-minor-version))
@@ -141,22 +174,30 @@
 The bug sets the buffer modified.  If this is set, folding commands
 will be slower.")
 
-(defvar sgml-set-face nil
-  "*If non-nil, psgml will set the face of parsed markup.")
+(defcustom sgml-set-face nil
+  "*If non-nil, psgml will set the face of parsed markup."
+  :type 'boolean
+  :group 'psgml)
 (put 'sgml-set-face 'sgml-desc "Set face of parsed markup")
 
-(defvar sgml-live-element-indicator nil
-  "*If non-nil, indicate current element in mode line.")
+(defcustom sgml-live-element-indicator nil
+  "*If non-nil, indicate current element in mode line."
+  :type 'boolean
+  :group 'psgml)
 
-(defvar sgml-auto-activate-dtd nil
+(defcustom sgml-auto-activate-dtd nil
   "*If non-nil, loading a sgml-file will automatically try to activate its DTD.
 Activation means either to parse the document type declaration or to
 load a previously saved parsed DTD.  The name of the activated DTD
-will be shown in the mode line.")
+will be shown in the mode line."
+  :type 'boolean
+  :group 'psgml-dtd)
 (put 'sgml-auto-activate-dtd 'sgml-desc "Auto Activate DTD")
 
-(defvar sgml-offer-save t
-  "*If non-nil, ask about saving modified buffers before \\[sgml-validate] is run.")
+(defcustom sgml-offer-save t
+  "*If non-nil, ask about saving modified buffers before \\[sgml-validate] is run."
+  :type 'boolean
+  :group 'psgml)
 
 (defvar sgml-parent-document nil
   "* Used when the current file is part of a bigger document.
@@ -186,10 +227,12 @@
 (make-variable-buffer-local 'sgml-parent-document)
 (put 'sgml-parent-document 'sgml-type 'list)
 
-(defvar sgml-tag-region-if-active t ;; wing change
+(defcustom sgml-tag-region-if-active t ;; wing change
   "*If non-nil, the Tags menu will tag a region if the region is 
 considered active by Emacs.  If nil, region must be active and
-transient-mark-mode/zmacs-regions must be on for the region to be tagged.")
+transient-mark-mode/zmacs-regions must be on for the region to be tagged."
+  :type 'boolean
+  :group 'psgml)
 
 (defvar sgml-normalize-trims t
   "*If non-nil, sgml-normalize will trim off white space from end of element
@@ -229,46 +272,64 @@
 
 (make-variable-buffer-local 'sgml-always-quote-attributes)
 
-(defvar sgml-auto-insert-required-elements t
+(defcustom sgml-auto-insert-required-elements t
   "*If non-nil, automatically insert required elements in the content
-of an inserted element.")
+of an inserted element."
+  :type 'boolean
+  :group 'psgml-insert)
 
-(defvar sgml-balanced-tag-edit t
-  "*If non-nil, always insert start-end tag pairs.")
+(defcustom sgml-balanced-tag-edit t
+  "*If non-nil, always insert start-end tag pairs."
+  :type 'boolean
+  :group 'psgml-insert)
 
-(defvar sgml-omittag-transparent (not sgml-balanced-tag-edit) ;; wing change
+(defcustom sgml-omittag-transparent (not sgml-balanced-tag-edit) ;; wing change
   "*If non-nil, will show legal tags inside elements with omittable start tags
-and legal tags beyond omittable end tags.")
+and legal tags beyond omittable end tags."
+  :type 'boolean
+  :group 'psgml)
 
-(defvar sgml-leave-point-after-insert nil
+(defcustom sgml-leave-point-after-insert nil
   "*If non-nil, the point will remain after inserted tag(s).
-If nil, the point will be placed before the inserted tag(s).")
+If nil, the point will be placed before the inserted tag(s)."
+  :type 'boolean
+  :group 'psgml-insert)
 
-(defvar sgml-warn-about-undefined-elements t
-  "*If non-nil, print a warning when a tag for an undefined element is found.")
+(defcustom sgml-warn-about-undefined-elements t
+  "*If non-nil, print a warning when a tag for an undefined element is found."
+  :type 'boolean
+  :group 'psgml)
 
-(defvar sgml-warn-about-undefined-entities t
-  "*If non-nil, print a warning when an undefined entity is found.")
+(defcustom sgml-warn-about-undefined-entities t
+  "*If non-nil, print a warning when an undefined entity is found."
+  :type 'boolean
+  :group 'psgml)
 
-(defvar sgml-ignore-undefined-elements nil
+(defcustom sgml-ignore-undefined-elements nil
   "*If non-nil, recover from an undefined element by ignoring the tag.
 If nil, recover from an undefined element by assuming it can occur any
-where and has content model ANY.")
+where and has content model ANY."
+  :type 'boolean
+  :group 'psgml)
 
-(defvar sgml-recompile-out-of-date-cdtd 'ask
+(defcustom sgml-recompile-out-of-date-cdtd 'ask
   "*If non-nil, out of date compiled DTDs will be automatically recompiled.
 If the value is `ask', PSGML will ask before recompiling. A `nil'
 value will cause PSGML to silently load an out of date compiled DTD.
 A DTD that referes to undefined external entities is always out of
 date, thus in such case it can be useful to set this variable to
-`nil'.")
+`nil'."
+  :type 'symbol
+  :group 'psgml-dtd)
 (put 'sgml-recompile-out-of-date-cdtd 'sgml-type '(("No" . nil)
 						   ("Yes" . t)
 						   ("Ask" . ask)))
 
-(defvar sgml-trace-entity-lookup nil
+(defcustom sgml-trace-entity-lookup nil
   "*If non-nil, log messages about catalog files used to look for
-external entities.") 
+external entities."
+  :type 'boolean
+  :group 'psgml-dtd) 
 
 (defvar sgml-indent-step 2
   "*How much to increment indent for every element level.
@@ -283,19 +344,25 @@
 (make-variable-buffer-local 'sgml-indent-data)
 
 ;;; Wing addition
-(defvar sgml-inhibit-indent-tags nil
+(defcustom sgml-inhibit-indent-tags nil
   "*List of tags within which indentation is inhibited.
-The tags should be given as strings.")
+The tags should be given as strings."
+  :type 'boolean
+  :group 'psgml)
 
-(defvar sgml-data-directory (expand-file-name "sgml" data-directory)
+(defcustom sgml-data-directory (expand-file-name "sgml" data-directory)
   "*Directory for pre-supplied data files (DTD's and such).
-Set this before loading psgml.")
+Set this before loading psgml."
+  :type 'directory
+  :group 'psgml)
 
-(defvar sgml-system-path nil
+(defcustom sgml-system-path nil
   ;; wing addition
   "*List of directories used to look for system identifiers.
 The directory listed in `sgml-data-directory' is always searched in
-addition to the directories listed here.")
+addition to the directories listed here."
+  :type '(repeat directory)
+  :group 'psgml)
 (put 'sgml-system-path 'sgml-type 'list)
 
 (defun sgml-parse-colon-path (cd-path)
@@ -312,12 +379,12 @@
       (setq cd-start (+ cd-colon 1)))
     cd-list))
 
-(defvar sgml-public-map (sgml-parse-colon-path
-			 (or (getenv "SGML_PATH")
-			     ;; Wing change
-			     (concat "%S:" (directory-file-name
-					    sgml-data-directory)
-				     "%o/%c/%d")))
+(defcustom sgml-public-map (sgml-parse-colon-path
+			    (or (getenv "SGML_PATH")
+				;; Wing change
+				(concat "%S:" (directory-file-name
+					       sgml-data-directory)
+					"%o/%c/%d")))
   
   "*Mapping from public identifiers to file names.
 This is a list of possible file names.  To find the file for a public
@@ -331,17 +398,21 @@
 used for the public identifier.  An element can also be a dotted pair
 (regexp . filename), the filename is a string treated as above, but
 only if the regular expression, regexp, matches the public
-identifier.")
+identifier."
+  :type '(repeat file)
+  :group 'psgml-dtd)
 (put 'sgml-public-map 'sgml-type 'list)
 
-(defvar sgml-local-catalogs nil
+(defcustom sgml-local-catalogs nil
 "*A list of SGML entity catalogs to be searched first when parsing the buffer.
 This is used in addtion to `sgml-catalog-files',  and `sgml-public-map'.
-This variable is automatically local to the buffer.")
+This variable is automatically local to the buffer."
+  :type '(repeat file)
+  :group 'psgml-dtd)
 (make-variable-buffer-local 'sgml-local-catalogs)
 (put 'sgml-local-catalogs 'sgml-type 'list)
 
-(defvar sgml-catalog-files (sgml-parse-colon-path
+(defcustom sgml-catalog-files (sgml-parse-colon-path
 			    (or (getenv "SGML_CATALOG_FILES")
 				;; Wing addition
 				(concat "CATALOG:"
@@ -350,21 +421,26 @@
                                         sgml-data-directory))))
   "*List of catalog entry files.
 The files are in the format defined in the SGML Open Draft Technical
-Resolution on Entity Management.")
+Resolution on Entity Management."
+  :type '(repeat file)
+  :group 'psgml-dtd)
 (put 'sgml-catalog-files 'sgml-type 'list)
 
 ;;; Wing addition
-(defvar sgml-ecat-files (list
+(defcustom sgml-ecat-files (list
 			 "ECAT"
 			 "~/sgml/ECAT"
 			 (expand-file-name "ECAT" sgml-data-directory))
-  "*List of catalog files for PSGML.")
+  "*List of catalog files for PSGML."
+  :type '(repeat file)
+  :group 'psgml-dtd)
 (put 'sgml-ecat-files 'sgml-type 'list)
 
-(defvar sgml-local-ecat-files nil
+(defcustom sgml-local-ecat-files nil
   "*List of local catalog files for PSGML.
-Automatically becomes buffer local if set.")
-
+Automatically becomes buffer local if set."
+  :type '(repeat file)
+  :group 'psgml-dtd)
 (make-variable-buffer-local 'sgml-local-ecat-files)
 (put 'sgml-local-ecat-files 'sgml-type 'list)
 
@@ -408,7 +484,7 @@
    (\"New page\"  \"\"))
 ")
 
-(defvar sgml-custom-dtd nil
+(defcustom sgml-custom-dtd nil
   "Menu entries to be added to the DTD menu.
 The value should be a list of entries to be added to the DTD menu.
 Every entry should be a list. The first element of the entry is a string
@@ -429,7 +505,16 @@
     (\"DOCBOOK\" \"\"
      \"~/sgml/docbook.ced\"
      sgml-omittag nil sgml-shorttag t)))
-")
+"
+  :type '(repeat (list (string :tag "Menu Entry")
+		       (choice (const :tag "No doctype")
+			       (string :tag "Declaration"))
+		       (repeat :inline t
+			       (list :inline t
+				     (symbol :tag "Variable")
+				     (sexp :tag "Value")))))
+  :group 'psgml-dtd)
+			       
 
 
 ;;; Faces used in edit attribute buffer:
@@ -442,9 +527,9 @@
 ;;; Its error messages can be parsed by next-error.
 ;;; The -s option suppresses output.
 
-(defvar sgml-validate-command (concat "nsgmls -s -m "
-				      sgml-data-directory
-				      "/CATALOG %s %s")
+(defcustom sgml-validate-command (concat "nsgmls -s -m "
+					 sgml-data-directory
+					 "/CATALOG %s %s")
   "*The shell command to validate an SGML document.
 
 This is a `format' control string that by default should contain two
@@ -464,7 +549,9 @@
 %b means the visited file of the current buffer
 %s means the SGML declaration specified in the sgml-declaration variable
 %d means the file containing the DOCTYPE declaration, if not in the buffer 
-")
+"
+  :type 'string
+  :group 'psgml)
 
 (defvar sgml-validate-files nil
   "If non-nil, a function of no arguments that returns a list of file names.
@@ -479,12 +566,16 @@
   "Alist of regexps to recognize error messages from `sgml-validate'.
 See `compilation-error-regexp-alist'.")
 
-(defvar sgml-declaration nil
-  "*If non-nil, this is the name of the SGML declaration file.")
+(defcustom sgml-declaration nil
+  "*If non-nil, this is the name of the SGML declaration file."
+  :type 'hook
+  :group 'psgml-dtd)
 (put 'sgml-declaration 'sgml-type 'string)
 
-(defvar sgml-mode-hook nil
-  "A hook or list of hooks to be run when entering sgml-mode")
+(defcustom sgml-mode-hook nil
+  "A hook or list of hooks to be run when entering sgml-mode"
+  :type 'hook
+  :group 'psgml)
 
 (defconst sgml-file-options
   '(
diff -r d101af7320b8 -r cca96a509cfe lisp/psgml/tempo.el
--- a/lisp/psgml/tempo.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/psgml/tempo.el	Mon Aug 13 09:25:29 2007 +0200
@@ -6,7 +6,7 @@
 ;; Modified: 20 Jun 1995
 ;; Version: 1.2.4
 ;; Keywords: extensions, languages, tools
-;; $Revision: 1.1.1.1 $
+;; $Revision: 1.2 $
 
 ;; This file is part of GNU Emacs.
 
@@ -111,26 +111,39 @@
 
 ;;; User options
 
-(defvar tempo-interactive t ;; wing change
+(defgroup tempo nil
+  "Flexible template insertion"
+  :group 'extensions)
+
+
+(defcustom tempo-interactive t ;; wing change
   "*Prompt user for strings in templates.
 If this variable is non-nil, `tempo-insert' prompts the
-user for text to insert in the templates")
+user for text to insert in the templates"
+  :type 'boolean
+  :group 'tempo)
 
-(defvar tempo-insert-region nil
+(defcustom tempo-insert-region nil
   "*Automatically insert current region when there is a `r' in the template
 If this variable is NIL, `r' elements will be treated just like `p'
 elements, unless the template function is given a prefix (or a non-nil
 argument). If this variable is non-NIL, the behaviour is reversed.
 
-In Transient Mark mode, this option is unused.")
+In Transient Mark mode, this option is unused."
+  :type 'boolean
+  :group 'tempo)
 
-(defvar tempo-show-completion-buffer t
+(defcustom tempo-show-completion-buffer t
   "*If non-NIL, show a buffer with possible completions, when only
-a partial completion can be found")
+a partial completion can be found"
+  :type 'boolean
+  :group 'tempo)
 
-(defvar tempo-leave-completion-buffer nil
+(defcustom tempo-leave-completion-buffer nil
   "*If NIL, a completion buffer generated by \\[tempo-complete-tag]
-disappears at the next keypress; otherwise, it remains forever.")
+disappears at the next keypress; otherwise, it remains forever."
+  :type 'boolean
+  :group 'tempo)
 
 ;;; Internal variables
 
diff -r d101af7320b8 -r cca96a509cfe lisp/tl/emu-x20.el
--- a/lisp/tl/emu-x20.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/tl/emu-x20.el	Mon Aug 13 09:25:29 2007 +0200
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1994,1995,1996,1997 MORIOKA Tomohiko
 
 ;; Author: MORIOKA Tomohiko 
-;; Version: $Id: emu-x20.el,v 1.6 1997/03/22 06:02:43 steve Exp $
+;; Version: $Id: emu-x20.el,v 1.7 1997/04/10 05:55:51 steve Exp $
 ;; Keywords: emulation, compatibility, Mule, XEmacs
 
 ;; This file is part of XEmacs.
@@ -40,9 +40,8 @@
 
 (defmacro as-binary-process (&rest body)
   `(let (selective-display	; Disable ^M to nl translation.
-	 (coding-system-for-write 'no-conversion)
-	 process-input-coding-system
-	 process-output-coding-system)
+	 (coding-system-for-read  'no-conversion)
+	 (coding-system-for-write 'no-conversion))
      ,@body))
 
 (defmacro as-binary-input-file (&rest body)
@@ -123,7 +122,7 @@
     ))
 
 (defun mime-charset-to-coding-system (charset)
-  "Return coding-system by MIME charset. [emu-x20.el]"
+  "Return coding-system by MIME charset."
   (if (stringp charset)
       (setq charset (intern (downcase charset)))
     )
@@ -132,35 +131,32 @@
       ))
 
 (defun detect-mime-charset-region (start end)
-  "Return MIME charset for region between START and END.
-\[emu-x20.el]"
+  "Return MIME charset for region between START and END."
   (charsets-to-mime-charset (charsets-in-region start end)))
 
 (defun encode-mime-charset-region (start end charset)
-  "Encode the text between START and END as MIME CHARSET.
-\[emu-x20.el]"
+  "Encode the text between START and END as MIME CHARSET."
   (let ((cs (mime-charset-to-coding-system charset)))
     (if cs
 	(encode-coding-region start end cs)
       )))
 
 (defun decode-mime-charset-region (start end charset)
-  "Decode the text between START and END as MIME CHARSET.
-\[emu-x20.el]"
+  "Decode the text between START and END as MIME CHARSET."
   (let ((cs (mime-charset-to-coding-system charset)))
     (if cs
 	(decode-coding-region start end cs)
       )))
 
 (defun encode-mime-charset-string (string charset)
-  "Encode the STRING as MIME CHARSET. [emu-x20.el]"
+  "Encode the STRING as MIME CHARSET."
   (let ((cs (mime-charset-to-coding-system charset)))
     (if cs
 	(encode-coding-string string cs)
       string)))
 
 (defun decode-mime-charset-string (string charset)
-  "Decode the STRING as MIME CHARSET. [emu-x20.el]"
+  "Decode the STRING as MIME CHARSET."
   (let ((cs (mime-charset-to-coding-system charset)))
     (if cs
 	(decode-coding-string string cs)
@@ -179,8 +175,7 @@
 (defun char-category (character)
   "Return string of category mnemonics for CHAR in TABLE.
 CHAR can be any multilingual character
-TABLE defaults to the current buffer's category table.
-\[emu-x20.el; Mule emulating function]"
+TABLE defaults to the current buffer's category table."
   (mapconcat (lambda (chr)
 	       (char-to-string (int-char chr))
 	       )
diff -r d101af7320b8 -r cca96a509cfe lisp/tl/emu-xemacs.el
--- a/lisp/tl/emu-xemacs.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/tl/emu-xemacs.el	Mon Aug 13 09:25:29 2007 +0200
@@ -5,7 +5,7 @@
 
 ;; Author: MORIOKA Tomohiko 
 ;; Version:
-;;	$Id: emu-xemacs.el,v 1.3 1997/03/16 03:05:44 steve Exp $
+;;	$Id: emu-xemacs.el,v 1.4 1997/04/10 05:55:51 steve Exp $
 ;; Keywords: emulation, compatibility, XEmacs
 
 ;; This file is part of XEmacs.
@@ -46,16 +46,18 @@
 ;;; @ overlay
 ;;;
 
-(defalias 'tl:make-overlay 'make-extent)
-(defalias 'tl:overlay-put 'set-extent-property)
-(defalias 'tl:overlay-buffer 'extent-buffer)
-
-(defun tl:move-overlay (extent start end &optional buffer)
-  (set-extent-endpoints extent start end)
-  )
+(condition-case err
+    (require 'overlay)
+  (error (defalias 'make-overlay 'make-extent)
+	 (defalias 'overlay-put 'set-extent-property)
+	 (defalias 'overlay-buffer 'extent-buffer)
+	 (defun move-overlay (extent start end &optional buffer)
+	   (set-extent-endpoints extent start end)
+	   )
+	 ))
 
 
-;;; @@ visible/invisible
+;;; @ visible/invisible
 ;;;
 
 (defmacro enable-invisible ())
diff -r d101af7320b8 -r cca96a509cfe lisp/tl/emu.el
--- a/lisp/tl/emu.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/tl/emu.el	Mon Aug 13 09:25:29 2007 +0200
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko 
-;; Version: $Id: emu.el,v 1.5 1997/03/16 03:05:44 steve Exp $
+;; Version: $Id: emu.el,v 1.6 1997/04/10 05:55:51 steve Exp $
 ;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs
 
 ;; This file is part of emu.
@@ -134,6 +134,17 @@
 	  default-mime-charset)))
 
 
+;;; @ Emacs 19 emulation
+;;;
+
+(defun-maybe minibuffer-prompt-width ()
+  "Return the display width of the minibuffer prompt."
+  (save-excursion
+    (set-buffer (window-buffer (minibuffer-window)))
+    (current-column)
+    ))
+
+
 ;;; @ Emacs 19.29 emulation
 ;;;
 
@@ -246,6 +257,22 @@
       (and (consp obj)(eq (car obj) 'lambda))
       ))
 
+(defun-maybe point-at-eol (&optional arg buffer)
+  "Return the character position of the last character on the current line.
+With argument N not nil or 1, move forward N - 1 lines first.
+If scan reaches end of buffer, return that position.
+This function does not move point. [XEmacs emulating function]"
+  (save-excursion
+    (if buffer
+	(set-buffer buffer)
+      )
+    (if arg
+	(forward-line (1- arg))
+      )
+    (end-of-line)
+    (point)
+    ))
+
 
 ;;; @ for XEmacs 20
 ;;;
@@ -256,6 +283,9 @@
 (or (fboundp 'int-char)
     (fset 'int-char (symbol-function 'identity))
     )
+(or (fboundp 'char-or-char-int-p)
+    (fset 'char-or-char-int-p (symbol-function 'integerp))
+    )
 
 
 ;;; @ for text/richtext and text/enriched
diff -r d101af7320b8 -r cca96a509cfe lisp/tm/gnus-sum-mime.el
--- a/lisp/tm/gnus-sum-mime.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/tm/gnus-sum-mime.el	Mon Aug 13 09:25:29 2007 +0200
@@ -5,7 +5,7 @@
 ;; Author: MORIOKA Tomohiko 
 ;; Created: 1996/8/6
 ;; Version:
-;;	$Id: gnus-sum-mime.el,v 1.5 1997/03/28 02:29:05 steve Exp $
+;;	$Id: gnus-sum-mime.el,v 1.6 1997/04/10 05:55:52 steve Exp $
 ;; Keywords: news, MIME, multimedia, multilingual, encoded-word
 
 ;; This file is not part of GNU Emacs yet.
@@ -55,11 +55,9 @@
 	   default-mime-charset)))
     (goto-char (point-min))
     (while (< (point)(point-max))
-      (decode-mime-charset-region (point)
-				  (point-at-eol)
-				  charset)
+      (decode-mime-charset-region (point) (point-at-eol) charset)
       (end-of-line)
-      (let ((signal-error-on-buffer-boundary nil))
+      (let (signal-error-on-buffer-boundary) ; for XEmacs
 	(forward-char))
       )))
 
diff -r d101af7320b8 -r cca96a509cfe lisp/tm/tm-def.el
--- a/lisp/tm/tm-def.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/tm/tm-def.el	Mon Aug 13 09:25:29 2007 +0200
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko 
-;; Version: $Id: tm-def.el,v 1.5 1997/03/16 03:05:46 steve Exp $
+;; Version: $Id: tm-def.el,v 1.6 1997/04/10 05:55:52 steve Exp $
 ;; Keywords: mail, news, MIME, multimedia, definition
 
 ;; This file is part of tm (Tools for MIME).
@@ -100,8 +100,8 @@
 ;;;
 
 (defun tm:set-face-region (b e face)
-  (let ((overlay (tl:make-overlay b e)))
-    (tl:overlay-put overlay 'face face)
+  (let ((overlay (make-overlay b e)))
+    (overlay-put overlay 'face face)
     ))
 
 (defvar tm:button-face 'bold
@@ -117,7 +117,7 @@
 (defun tm:add-button (from to func &optional data)
   "Create a button between FROM and TO with callback FUNC and data DATA."
   (and tm:button-face
-       (tl:overlay-put (tl:make-overlay from to) 'face tm:button-face))
+       (overlay-put (make-overlay from to) 'face tm:button-face))
   (add-text-properties from to
 		       (append (and tm:mouse-face
 				    (list 'mouse-face tm:mouse-face))
diff -r d101af7320b8 -r cca96a509cfe lisp/tm/tm-play.el
--- a/lisp/tm/tm-play.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/tm/tm-play.el	Mon Aug 13 09:25:29 2007 +0200
@@ -4,7 +4,7 @@
 
 ;; Author: MORIOKA Tomohiko 
 ;; Created: 1995/9/26 (separated from tm-view.el)
-;; Version: $Id: tm-play.el,v 1.5 1997/03/28 02:29:06 steve Exp $
+;; Version: $Id: tm-play.el,v 1.6 1997/04/10 05:55:52 steve Exp $
 ;; Keywords: mail, news, MIME, multimedia
 
 ;; This file is part of tm (Tools for MIME).
@@ -423,8 +423,9 @@
 ;;; @ rot13-47
 ;;;
 
-(unless (boundp 'view-mode-map)
-  (require 'view))
+(or (boundp 'view-mode-map)
+    (require 'view)
+    )
 
 (defconst mime-view-text/plain-mode-map (copy-keymap view-mode-map))
 (define-key mime-view-text/plain-mode-map
diff -r d101af7320b8 -r cca96a509cfe lisp/utils/elp.el
--- a/lisp/utils/elp.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/utils/elp.el	Mon Aug 13 09:25:29 2007 +0200
@@ -135,15 +135,24 @@
 ;; start of user configuration variables
 ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 
-(defvar elp-function-list nil
-  "*List of functions to profile.
-Used by the command `elp-instrument-list'.")
+(defgroup elp nil
+  "Emacs Lisp Profiler"
+  :group 'lisp)
+
 
-(defvar elp-reset-after-results t
+(defcustom elp-function-list nil
+  "*List of functions to profile.
+Used by the command `elp-instrument-list'."
+  :type '(repeat function)
+  :group 'elp)
+
+(defcustom elp-reset-after-results t
   "*Non-nil means reset all profiling info after results are displayed.
-Results are displayed with the `elp-results' command.")
+Results are displayed with the `elp-results' command."
+  :type 'boolean
+  :group 'elp)
 
-(defvar elp-sort-by-function 'elp-sort-by-total-time
+(defcustom elp-sort-by-function 'elp-sort-by-total-time
   "*Non-nil specifies elp results sorting function.
 These functions are currently available:
 
@@ -156,21 +165,30 @@
 \"element of LIST\" is really a 4 element vector where element 0 is
 the call count, element 1 is the total time spent in the function,
 element 2 is the average time spent in the function, and element 3 is
-the symbol's name string.")
+the symbol's name string."
+  :type 'function
+  :group 'elp)
 
-(defvar elp-report-limit 1
+(defcustom elp-report-limit 1
   "*Prevents some functions from being displayed in the results buffer.
 If a number, no function that has been called fewer than that number
 of times will be displayed in the output buffer.  If nil, all
-functions will be displayed.")
+functions will be displayed."
+  :type '(choice integer
+		 (const :tag "All" nil))
+  :group 'elp)
 
-(defvar elp-use-standard-output nil
-  "*Non-nil says to output to `standard-output' instead of a buffer.")
+(defcustom elp-use-standard-output nil
+  "*Non-nil says to output to `standard-output' instead of a buffer."
+  :type 'boolean
+  :group 'elp)
 
-(defvar elp-recycle-buffers-p t
+(defcustom elp-recycle-buffers-p t
   "*Nil says to not recycle the `elp-results-buffer'.
 In other words, a new unique buffer is create every time you run
-\\[elp-results].")
+\\[elp-results]."
+  :type 'boolean
+  :group 'elp)
 
 
 ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff -r d101af7320b8 -r cca96a509cfe lisp/utils/passwd.el
--- a/lisp/utils/passwd.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/utils/passwd.el	Mon Aug 13 09:25:29 2007 +0200
@@ -37,14 +37,23 @@
 
 ;;; Code:
 
-(defvar passwd-invert-frame-when-keyboard-grabbed t
+(defgroup passwd nil
+  "Prompting for passwords semi-securely"
+  :group 'processes)
+
+
+(defcustom passwd-invert-frame-when-keyboard-grabbed t
   "*If non-nil swap the foreground and background colors of all faces.
 This is done while the keyboard is grabbed in order to give a visual
-clue that a grab is in effect.")
+clue that a grab is in effect."
+  :type 'boolean
+  :group 'passwd)
 
-(defvar passwd-echo ?.
+(defcustom passwd-echo ?.
   "*The character which should be echoed when typing a password,
-or nil, meaning echo nothing.")
+or nil, meaning echo nothing."
+  :type 'sexp
+  :group 'passwd)
 
 (defvar read-passwd-map
   (let ((i 0)
diff -r d101af7320b8 -r cca96a509cfe lisp/version.el
--- a/lisp/version.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/version.el	Mon Aug 13 09:25:29 2007 +0200
@@ -25,7 +25,7 @@
 (defconst emacs-version "20.1"
   "Version numbers of this version of Emacs.")
 
-(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta11)")))
+(setq emacs-version (purecopy (concat emacs-version " XEmacs Lucid (beta12)")))
 
 (defconst emacs-major-version
   (progn (or (string-match "^[0-9]+" emacs-version)
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-autoload.el
--- a/lisp/vm/vm-autoload.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-autoload.el	Mon Aug 13 09:25:29 2007 +0200
@@ -1249,6 +1249,8 @@
 
 (autoload (quote vm-mime-display-button-text) "vm-mime" nil nil nil)
 
+(autoload (quote vm-mime-display-internal-text/html) "vm-mime" nil nil nil)
+
 (autoload (quote vm-mime-display-internal-text/plain) "vm-mime" nil nil nil)
 
 (autoload (quote vm-mime-display-internal-text/enriched) "vm-mime" nil nil nil)
@@ -1297,7 +1299,7 @@
 
 (autoload (quote vm-mime-run-display-function-at-point) "vm-mime" nil t nil)
 
-(autoload (quote vm-mime-set-extent-glyph-for-layout) "vm-mime" nil nil nil)
+(autoload (quote vm-mime-set-extent-glyph-for-type) "vm-mime" nil nil nil)
 
 (autoload (quote vm-mime-insert-button) "vm-mime" nil nil nil)
 
@@ -1548,12 +1550,6 @@
 
 (autoload (quote vm-copy) "vm-misc" nil nil nil)
 
-(autoload (quote vm-xemacs-p) "vm-misc" nil nil nil)
-
-(autoload (quote vm-xemacs-mule-p) "vm-misc" nil nil nil)
-
-(autoload (quote vm-fsfemacs-19-p) "vm-misc" nil nil nil)
-
 (autoload (quote vm-multiple-frames-possible-p) "vm-misc" nil nil nil)
 
 (autoload (quote vm-mouse-support-possible-p) "vm-misc" nil nil nil)
@@ -2182,7 +2178,7 @@
 
 Prefix arg or optional second arg READ-ONLY non-nil indicates
 that the folder should be considered read only.  No attribute
-changes, messages additions or deletions will be allowed in the
+changes, message additions or deletions will be allowed in the
 visited folder.
 
 Visiting the primary inbox causes any contents of the system mailbox to
@@ -2202,7 +2198,7 @@
 
 (autoload (quote vm-mode) "vm-startup" "Major mode for reading mail.
 
-This is VM 6.23.
+This is VM 6.24.
 
 Commands:
    h - summarize folder contents
@@ -2805,6 +2801,8 @@
 
 (autoload (quote vm-spool-files) "vm-vars" nil nil nil)
 
+(autoload (quote vm-note-emacs-version) "vm-vars" nil nil nil)
+
 (autoload (quote vm-version) "vm-version" "Returns the value of the variable vm-version." nil nil)
 
 (autoload (quote vm-build-virtual-message-list) "vm-virtual" nil nil nil)
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-folder.el
--- a/lisp/vm/vm-folder.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-folder.el	Mon Aug 13 09:25:29 2007 +0200
@@ -1166,7 +1166,7 @@
 	  (vm-total-count 0)
 	  (modulus (+ (% (vm-abs (random)) 11) 25))
 	  (case-fold-search t)
-	  data)
+	  oldpoint data)
       (while mp
 	(vm-increment vm-total-count)
 	(if (vm-attributes-of (car mp))
@@ -1182,17 +1182,28 @@
 			       (vm-text-of (car mp)) t)
 	    (goto-char (match-beginning 2))
 	    (condition-case ()
-		(setq data (read (current-buffer)))
-	      (error (setq data
-			   (list
-			    (make-vector vm-attributes-vector-length nil)
-			    (make-vector vm-cache-vector-length nil)
-			    nil))
-		     ;; In lieu of a valid attributes header
-		     ;; assume the message is new.  avoid
-		     ;; vm-set-new-flag because it asks for a
-		     ;; summary update.
-		     (vm-set-new-flag-in-vector (car data) t)))
+		(progn
+		  (setq oldpoint (point)
+			data (read (current-buffer)))
+		  (if (and (or (not (listp data)) (not (= 3 (length data))))
+			   (not (vectorp data)))
+		      (progn
+			(error "Bad x-vm-v5-data at %d in buffer %s"
+			       oldpoint (buffer-name))))
+		  data )
+	      (error 
+	       (message "Bad x-vm-v5-data header at %d in buffer %s, ignoring"
+			oldpoint (buffer-name))
+	       (setq data
+		     (list
+		      (make-vector vm-attributes-vector-length nil)
+		      (make-vector vm-cache-vector-length nil)
+		      nil))
+	       ;; In lieu of a valid attributes header
+	       ;; assume the message is new.  avoid
+	       ;; vm-set-new-flag because it asks for a
+	       ;; summary update.
+	       (vm-set-new-flag-in-vector (car data) t)))
 	    ;; support version 4 format
 	    (cond ((vectorp data)
 		   (setq data (vm-convert-v4-attributes data))
@@ -1406,8 +1417,19 @@
 	 (vm-skip-past-folder-header)
 	 (vm-skip-past-leading-message-separator)
 	 (if (re-search-forward vm-labels-header-regexp lim t)
-	     (let (list)
-	       (setq list (read (current-buffer)))
+	     (let ((oldpoint (point))
+		   list)
+	       (condition-case ()
+		   (progn
+		     (setq list (read (current-buffer)))
+		     (if (not (listp list))
+			 (error "Bad global label list at %d in buffer %s"
+				oldpoint (buffer-name)))
+		     list )
+		 (error
+		  (message "Bad global label list at %d in buffer %s, ignoring"
+			   oldpoint (buffer-name))
+		  (setq list nil) ))
 	       (mapcar (function
 			(lambda (s)
 			  (intern s vm-label-obarray)))
@@ -1418,7 +1440,8 @@
 ;; Returns non-nil if successful, nil otherwise.
 (defun vm-gobble-bookmark ()
   (let ((case-fold-search t)
-	n lim)
+	(n nil)
+	lim oldpoint)
     (save-excursion
       (vm-save-restriction
        (widen)
@@ -1431,7 +1454,18 @@
        (vm-skip-past-folder-header)
        (vm-skip-past-leading-message-separator)
        (if (re-search-forward vm-bookmark-header-regexp lim t)
-	   (setq n (read (current-buffer))))))
+	   (condition-case ()
+	       (progn
+		 (setq oldpoint (point)
+		       n (read (current-buffer)))
+		 (if (not (natnump n))
+		     (error "Bad bookmark at %d in buffer %s"
+			    oldpoint (buffer-name)))
+		 n )
+	     (error
+	      (message "Bad bookmark at %d in buffer %s, ignoring"
+		       oldpoint (buffer-name))
+	      (setq n 1))))))
     (if n
 	(vm-record-and-change-message-pointer
 	 vm-message-pointer
@@ -1490,13 +1524,25 @@
 	(vm-skip-past-folder-header)
 	(vm-skip-past-leading-message-separator)
 	(if (re-search-forward vm-message-order-header-regexp lim t)
-	    (progn
+	    (let ((oldpoint (point)))
 	      (message "Reordering messages...")
-	      (setq order (read (current-buffer))
-		    list-length (length vm-message-list)
+	      (condition-case nil
+		  (progn
+		    (setq order (read (current-buffer)))
+		    (if (not (listp order))
+			(error "Bad order header at %d in buffer %s"
+			       oldpoint (buffer-name)))
+		    order )
+		(error
+		 (message "Bad order header at %d in buffer %s, ignoring"
+			  oldpoint (buffer-name))
+		 (setq order nil)))
+	      (setq list-length (length vm-message-list)
 		    v (make-vector (max list-length (length order)) nil))
 	      (while (and order mp)
-		(aset v (1- (car order)) (car mp))
+		(condition-case nil
+		    (aset v (1- (car order)) (car mp))
+		  (args-out-of-range nil))
 		(setq order (cdr order) mp (cdr mp)))
 	      ;; lock out interrupts while the message list is in
 	      ;; an inconsistent state.
@@ -1529,8 +1575,13 @@
        (vm-skip-past-folder-header)
        (vm-skip-past-leading-message-separator)
        (if (re-search-forward vm-summary-header-regexp lim t)
-	   (progn
-	     (setq summary (read (current-buffer)))
+	   (let ((oldpoint (point)))
+	     (condition-case ()
+		 (setq summary (read (current-buffer)))
+	       (error
+		(message "Bad summary header at %d in buffer %s, ignoring"
+			 oldpoint (buffer-name))
+		(setq summary "")))
 	     (if (not (equal summary vm-summary-format))
 		 (while mp
 		   (vm-set-summary-of (car mp) nil)
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-menu.el
--- a/lisp/vm/vm-menu.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-menu.el	Mon Aug 13 09:25:29 2007 +0200
@@ -44,17 +44,18 @@
 
 (provide 'vm-menu)
 
+;; makeu sure the emacs/xemacs version variables are set, as they
+;; are needed below at load time.
+(vm-note-emacs-version)
+
 (defun vm-menu-fsfemacs-menus-p ()
-  (and (vm-fsfemacs-19-p)
+  (and vm-fsfemacs-19-p
        (fboundp 'menu-bar-mode)))
 
 (defun vm-menu-xemacs-menus-p ()
-  (and (vm-xemacs-p)
+  (and vm-xemacs-p
        (fboundp 'set-buffer-menubar)))
 
-;; defined again in vm-misc.el but we need it here for some
-;; initializations.  The "noautoload" vm.elc won't work without
-;; this.
 (defun vm-fsfemacs-19-p ()
   (and (string-match "^19" emacs-version)
        (not (string-match "XEmacs\\|Lucid" emacs-version))))
@@ -67,7 +68,7 @@
 (defconst vm-menu-folder-menu
   (list
    "Folder"
-   (if (vm-fsfemacs-19-p)
+   (if vm-fsfemacs-19-p
        ["Manipulate Folders" ignore (ignore)]
      vm-menu-folders-menu)
    "---"
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-mime.el
--- a/lisp/vm/vm-mime.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-mime.el	Mon Aug 13 09:25:29 2007 +0200
@@ -104,7 +104,7 @@
       
 (defun vm-mime-charset-decode-region (charset start end)
   (or (markerp end) (setq end (vm-marker end)))
-  (cond ((vm-xemacs-mule-p)
+  (cond (vm-xemacs-mule-p
 	 (if (eq (device-type) 'x)
 	     (let ((buffer-read-only nil)
 		   (cell (cdr (vm-string-assoc
@@ -822,9 +822,9 @@
 	     (defvar scroll-in-place)
 	     (make-local-variable 'scroll-in-place)
 	     (setq scroll-in-place nil)
-	     (and (vm-xemacs-mule-p)
+	     (and vm-xemacs-mule-p
 		  (set-buffer-file-coding-system 'no-conversion t))
-	     (cond ((vm-fsfemacs-19-p)
+	     (cond (vm-fsfemacs-19-p
 		    ;; need to do this outside the let because
 		    ;; loading disp-table initializes
 		    ;; standard-display-table.
@@ -896,7 +896,7 @@
       (narrow-to-region beg end)
       (catch 'done
 	(goto-char (point-min))
-	(if (vm-xemacs-mule-p)
+	(if vm-xemacs-mule-p
 	    (let ((charsets (delq 'ascii (charsets-in-region beg end))))
 	      (cond ((null charsets)
 		     "us-ascii")
@@ -960,23 +960,23 @@
 (defun vm-mime-can-display-internal (layout)
   (let ((type (car (vm-mm-layout-type layout))))
     (cond ((vm-mime-types-match "image/jpeg" type)
-	   (and (vm-xemacs-p)
+	   (and vm-xemacs-p
 		(featurep 'jpeg)
 		(eq (device-type) 'x)))
 	  ((vm-mime-types-match "image/gif" type)
-	   (and (vm-xemacs-p)
+	   (and vm-xemacs-p
 		(featurep 'gif)
 		(eq (device-type) 'x)))
 	  ((vm-mime-types-match "image/png" type)
-	   (and (vm-xemacs-p)
+	   (and vm-xemacs-p
 		(featurep 'png)
 		(eq (device-type) 'x)))
 	  ((vm-mime-types-match "image/tiff" type)
-	   (and (vm-xemacs-p)
+	   (and vm-xemacs-p
 		(featurep 'tiff)
 		(eq (device-type) 'x)))
 	  ((vm-mime-types-match "audio/basic" type)
-	   (and (vm-xemacs-p)
+	   (and vm-xemacs-p
 		(or (featurep 'native-sound)
 		    (featurep 'nas-sound))
 		(or (device-sound-enabled-p)
@@ -991,13 +991,11 @@
 	   (let ((charset (or (vm-mime-get-parameter layout "charset")
 			      "us-ascii")))
 	     (vm-mime-charset-internally-displayable-p charset)))
-;; commented out until w3-region behavior gets worked out
-;;
-;;	  ((vm-mime-types-match "text/html" type)
-;;	   (condition-case ()
-;;	       (progn (require 'w3)
-;;		      (fboundp 'w3-region))
-;;	     (error nil)))
+	  ((vm-mime-types-match "text/html" type)
+	   (condition-case ()
+	       (progn (require 'w3)
+		      (fboundp 'w3-region))
+	     (error nil)))
 	  (t nil))))
 
 (defun vm-mime-can-convert (type)
@@ -1260,28 +1258,26 @@
 (defun vm-mime-display-button-text (layout)
   (vm-mime-display-button-xxxx layout t))
 
-;; commented out until w3-region behavior is worked out
-;;
-;;(defun vm-mime-display-internal-text/html (layout)
-;;  (let ((buffer-read-only nil)
-;;	(work-buffer nil))
-;;    (message "Inlining text/html, be patient...")
-;;    ;; w3-region is not as tame as we would like.
-;;    ;; make sure the yoke is firmly attached.
-;;    (unwind-protect
-;;	(progn
-;;	  (save-excursion
-;;	    (set-buffer (setq work-buffer
-;;			      (generate-new-buffer " *workbuf*")))
-;;	    (vm-mime-insert-mime-body layout)
-;;	    (vm-mime-transfer-decode-region layout (point-min) (point-max))
-;;	    (save-excursion
-;;	      (save-window-excursion
-;;		(w3-region (point-min) (point-max)))))
-;;	  (insert-buffer-substring work-buffer))
-;;      (and work-buffer (kill-buffer work-buffer)))
-;;    (message "Inlining text/html... done")
-;;    t ))
+(defun vm-mime-display-internal-text/html (layout)
+  (let ((buffer-read-only nil)
+	(work-buffer nil))
+    (message "Inlining text/html, be patient...")
+    ;; w3-region is not as tame as we would like.
+    ;; make sure the yoke is firmly attached.
+    (unwind-protect
+	(progn
+	  (save-excursion
+	    (set-buffer (setq work-buffer
+			      (generate-new-buffer " *workbuf*")))
+	    (vm-mime-insert-mime-body layout)
+	    (vm-mime-transfer-decode-region layout (point-min) (point-max))
+	    (save-excursion
+	      (save-window-excursion
+		(w3-region (point-min) (point-max)))))
+	  (insert-buffer-substring work-buffer))
+      (and work-buffer (kill-buffer work-buffer)))
+    (message "Inlining text/html... done")
+    t ))
 
 (defun vm-mime-display-internal-text/plain (layout &optional no-highlighting)
   (let ((start (point)) end old-size
@@ -1344,7 +1340,7 @@
 	       (setq buffer-file-type (not (vm-mime-text-type-p layout)))
 	       ;; Tell XEmacs/MULE not to mess with the bits unless
 	       ;; this is a text type.
-	       (if (vm-xemacs-mule-p)
+	       (if vm-xemacs-mule-p
 		   (if (vm-mime-text-type-p layout)
 		       (set-buffer-file-coding-system 'no-conversion nil)
 		     (set-buffer-file-coding-system 'binary t)))
@@ -1684,7 +1680,7 @@
       'vm-mime-display-internal-message/partial)
 
 (defun vm-mime-display-internal-image-xxxx (layout feature name)
-  (if (and (vm-xemacs-p)
+  (if (and vm-xemacs-p
 	   (featurep feature)
 	   (eq (device-type) 'x))
       (let ((start (point)) end tempfile g e
@@ -1732,7 +1728,7 @@
   (vm-mime-display-internal-image-xxxx layout 'tiff "TIFF"))
 
 (defun vm-mime-display-internal-audio/basic (layout)
-  (if (and (vm-xemacs-p)
+  (if (and vm-xemacs-p
 	   (or (featurep 'native-sound)
 	       (featurep 'nas-sound))
 	   (or (device-sound-enabled-p)
@@ -1782,7 +1778,7 @@
   ;; drag window point along, to a place arbitrarily far from
   ;; where it was when the user triggered the button.
   (save-excursion
-    (cond ((vm-fsfemacs-19-p)
+    (cond (vm-fsfemacs-19-p
 	   (let (o-list o (found nil))
 	     (setq o-list (overlays-at (point)))
 	     (while (and o-list (not found))
@@ -1792,7 +1788,7 @@
 							 'vm-mime-function))
 			       (car o-list))))
 	       (setq o-list (cdr o-list)))))
-	  ((vm-xemacs-p)
+	  (vm-xemacs-p
 	   (let ((e (extent-at (point) nil 'vm-mime-layout)))
 	     (funcall (or function (extent-property e 'vm-mime-function))
 		      e))))))
@@ -1800,15 +1796,14 @@
 ;; for the karking compiler
 (defvar vm-menu-mime-dispose-menu)
 
-(defun vm-mime-set-extent-glyph-for-layout (e layout)
-  (if (and (vm-xemacs-p) (fboundp 'make-glyph)
+(defun vm-mime-set-extent-glyph-for-type (e type)
+  (if (and vm-xemacs-p (fboundp 'make-glyph)
 	   (eq (device-type) 'x) (> (device-bitplanes) 7))
-      (let ((type (car (vm-mm-layout-type layout)))
-	    (dir vm-image-directory)
+      (let ((dir vm-image-directory)
 	    (colorful (> (device-bitplanes) 15))
 	    (tuples
 	     '(("text" "document-simple.xpm" "document-colorful.xpm")
-	       ("image" "mona_stamp-simple.xpm" "mona_stamp-colorful.xpm")
+	       ("image" "mona_stamp-simple.gif" "mona_stamp-colorful.gif")
 	       ("audio" "audio_stamp-simple.xpm" "audio_stamp-colorful.xpm")
 	       ("video" "film-simple.xpm" "film-colorful.xpm")
 	       ("message" "message-simple.xpm" "message-colorful.xpm")
@@ -1822,7 +1817,7 @@
 			   (throw 'done (car tuples))
 			 (setq tuples (cdr tuples))))
 		     nil)
-	      file (and file (if colorful (nth 1 file) (nth 2 file)))
+	      file (and file (if colorful (nth 2 file) (nth 1 file)))
 	      sym (and file (intern file vm-image-obarray))
 	      glyph (and sym (boundp sym) (symbol-value sym))
 	      glyph (or glyph (not file)
@@ -1846,16 +1841,18 @@
     (if (not (bolp))
 	(insert "\n"))
     (insert caption "\n")
-    ;; we MUST have the five arg make-overlay.  overlays must
-    ;; advance when text is inserted at their start position or
-    ;; inline text and graphics will seep into the button
-    ;; overlay and then be removed when the button is removed.
-    (if (fboundp 'make-overlay)
+    ;; we must use the same interface that the vm-extent functions
+    ;; use.  if they use overlays, then we call make-overlay.
+    (if (eq (symbol-function 'vm-make-extent) 'make-overlay)
+	;; we MUST have the five arg make-overlay.  overlays must
+	;; advance when text is inserted at their start position or
+	;; inline text and graphics will seep into the button
+	;; overlay and then be removed when the button is removed.
 	(setq e (make-overlay start (point) nil t nil))
       (setq e (make-extent start (point)))
       (set-extent-property e 'start-open t)
       (set-extent-property e 'end-open t))
-    (vm-mime-set-extent-glyph-for-layout e layout)
+    (vm-mime-set-extent-glyph-for-type e (car (vm-mm-layout-type layout)))
     ;; for emacs
     (vm-set-extent-property e 'mouse-face 'highlight)
     (vm-set-extent-property e 'local-map keymap)
@@ -1920,7 +1917,7 @@
 	    (setq buffer-file-type (not (vm-mime-text-type-p layout)))
 	    ;; Tell XEmacs/MULE not to mess with the bits unless
 	    ;; this is a text type.
-	    (if (vm-xemacs-mule-p)
+	    (if vm-xemacs-mule-p
 		(if (vm-mime-text-type-p layout)
 		    (set-buffer-file-coding-system 'no-conversion nil)
 		  (set-buffer-file-coding-system 'binary t)))
@@ -2084,7 +2081,7 @@
       (vm-mime-types-match "message" (car (vm-mm-layout-type layout)))))
 
 (defun vm-mime-charset-internally-displayable-p (name)
-  (cond ((and (vm-xemacs-mule-p) (eq (device-type) 'x))
+  (cond ((and vm-xemacs-mule-p (eq (device-type) 'x))
 	 (vm-string-assoc name vm-mime-mule-charset-to-coding-alist))
 	((vm-multiple-fonts-possible-p)
 	 (or (vm-string-member name vm-mime-default-face-charsets)
@@ -2119,7 +2116,7 @@
     (car mp)))
 
 (defun vm-mime-make-multipart-boundary ()
-  (let ((boundary (make-string 40 ?a))
+  (let ((boundary (make-string 10 ?a))
 	(i 0))
     (random t)
     (while (< i (length boundary))
@@ -2250,7 +2247,7 @@
 					    (file-name-nondirectory object)
 					    "\"")))))
       (setq disposition (list "unspecified")))
-    (cond ((vm-fsfemacs-19-p)
+    (cond (vm-fsfemacs-19-p
 	   (put-text-property start end 'front-sticky nil)
 	   (put-text-property start end 'rear-nonsticky t)
 ;; can't be intangible because menu clicking at a position needs
@@ -2265,8 +2262,9 @@
 	   (put-text-property start end 'vm-mime-disposition disposition)
 	   (put-text-property start end 'vm-mime-encoded mimed)
 	   (put-text-property start end 'vm-mime-object object))
-	  ((fboundp 'make-extent)
+	  (vm-xemacs-p
 	   (setq e (make-extent start end))
+	   (vm-mime-set-extent-glyph-for-type e type)
 	   (set-extent-property e 'start-open t)
 	   (set-extent-property e 'face vm-mime-button-face)
 	   (set-extent-property e 'duplicable t)
@@ -2284,19 +2282,19 @@
 	   (set-extent-property e 'vm-mime-encoded mimed)))))
 
 (defun vm-mime-attachment-disposition-at-point ()
-  (cond ((vm-fsfemacs-19-p)
+  (cond (vm-fsfemacs-19-p
 	 (let ((disp (get-text-property (point) 'vm-mime-disposition)))
 	   (intern (car disp))))
-	((vm-xemacs-p)
+	(vm-xemacs-p
 	 (let* ((e (extent-at (point) nil 'vm-mime-disposition))
 		(disp (extent-property e 'vm-mime-disposition)))
 	   (intern (car disp))))))
 
 (defun vm-mime-set-attachment-disposition-at-point (sym)
-  (cond ((vm-fsfemacs-19-p)
+  (cond (vm-fsfemacs-19-p
 	 (let ((disp (get-text-property (point) 'vm-mime-disposition)))
 	   (setcar disp (symbol-name sym))))
-	((vm-xemacs-p)
+	(vm-xemacs-p
 	 (let* ((e (extent-at (point) nil 'vm-mime-disposition))
 		(disp (extent-property e 'vm-mime-disposition)))
 	   (setcar disp (symbol-name sym))))))
@@ -2400,11 +2398,11 @@
 Attachment tags added to the buffer with vm-mime-attach-file are expanded
 and the approriate content-type and boundary markup information is added."
   (interactive)
-  (cond ((vm-xemacs-mule-p)
+  (cond (vm-xemacs-mule-p
 	 (vm-mime-xemacs-encode-composition))
-	((vm-xemacs-p)
+	(vm-xemacs-p
 	 (vm-mime-xemacs-encode-composition))
-	((vm-fsfemacs-19-p)
+	(vm-fsfemacs-19-p
 	 (vm-mime-fsfemacs-encode-composition))
 	(t
 	 (error "don't know how to MIME encode composition for %s"
@@ -2449,7 +2447,7 @@
 	    (narrow-to-region (point) (point-max))
 	    (setq charset (vm-determine-proper-charset (point-min)
 						       (point-max)))
-	    (if (vm-xemacs-mule-p)
+	    (if vm-xemacs-mule-p
 		(encode-coding-region (point-min) (point-max)
 				      buffer-file-coding-system))
 	    (setq encoding (vm-determine-proper-content-transfer-encoding
@@ -2562,7 +2560,7 @@
 			  vm-mime-8bit-text-transfer-encoding)))
 		   (vm-mime-map-atomic-layouts 'vm-mime-transfer-encode-layout
 					       (vm-mm-layout-parts layout)))
-		 ;; now figure out a proper content trasnfer
+		 ;; now figure out a proper content transfer
 		 ;; encoding value for the enclosing entity.
 		 (re-search-forward "^\n" nil t)
 		 (save-restriction
@@ -2633,7 +2631,7 @@
 	    nil
 	  (setq charset (vm-determine-proper-charset (point)
 						     (point-max)))
-	  (if (vm-xemacs-mule-p)
+	  (if vm-xemacs-mule-p
 	      (encode-coding-region (point-min) (point-max)
 				    buffer-file-coding-system))
 	  (setq encoding (vm-determine-proper-content-transfer-encoding
@@ -2751,7 +2749,7 @@
 	    (narrow-to-region (point) (point-max))
 	    (setq charset (vm-determine-proper-charset (point-min)
 						       (point-max)))
-	    (if (vm-xemacs-mule-p)
+	    (if vm-xemacs-mule-p
 		(encode-coding-region (point-min) (point-max)
 				      file-coding-system))
 	    (setq encoding (vm-determine-proper-content-transfer-encoding
@@ -2877,7 +2875,7 @@
 			  vm-mime-8bit-text-transfer-encoding)))
 		   (vm-mime-map-atomic-layouts 'vm-mime-transfer-encode-layout
 					       (vm-mm-layout-parts layout)))
-		 ;; now figure out a proper content trasnfer
+		 ;; now figure out a proper content transfer
 		 ;; encoding value for the enclosing entity.
 		 (re-search-forward "^\n" nil t)
 		 (save-restriction
@@ -2948,7 +2946,7 @@
 	    nil
 	  (setq charset (vm-determine-proper-charset (point)
 						     (point-max)))
-	  (if (vm-xemacs-mule-p)
+	  (if vm-xemacs-mule-p
 	      (encode-coding-region (point-min) (point-max)
 				    file-coding-system))
 	  (setq encoding (vm-determine-proper-content-transfer-encoding
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-misc.el
--- a/lisp/vm/vm-misc.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-misc.el	Mon Aug 13 09:25:29 2007 +0200
@@ -188,7 +188,7 @@
 	    ;; writing out message separators
 	    (setq buffer-file-type nil)
 	    ;; Tell XEmacs/MULE to pick the correct newline conversion.
-	    (and (vm-xemacs-mule-p)
+	    (and vm-xemacs-mule-p
 		 (set-file-coding-system 'no-conversion nil))
 	    (write-region (point-min) (point-max) where t 'quiet))
 	(and temp-buffer (kill-buffer temp-buffer))))))
@@ -423,20 +423,6 @@
 	((markerp object) (copy-marker object))
 	(t object)))
 
-(defun vm-xemacs-p ()
-  (let ((case-fold-search nil))
-    (string-match "XEmacs" emacs-version)))
-
-(defun vm-xemacs-mule-p ()
-  (and (vm-xemacs-p)
-       (featurep 'mule)
-       (fboundp 'set-file-coding-system)
-       (fboundp 'get-coding-system)))
-
-(defun vm-fsfemacs-19-p ()
-  (and (string-match "^19" emacs-version)
-       (not (string-match "XEmacs\\|Lucid" emacs-version))))
-
 ;; make-frame might be defined and still not work.  This would
 ;; be true since the user could be running on a tty and using
 ;; XEmacs 19.12, or using FSF Emacs 19.28 (or prior FSF Emacs versions).
@@ -461,7 +447,7 @@
       (and (fboundp 'device-type) (eq (device-type) 'x))))
 
 (defun vm-toolbar-support-possible-p ()
-  (and (vm-xemacs-p)
+  (and vm-xemacs-p
        (vm-multiple-frames-possible-p)
        (featurep 'toolbar)))
 
@@ -579,12 +565,8 @@
 	   (get-file-buffer (file-truename file)))))
 
 (defun vm-set-region-face (start end face)
-  (cond ((fboundp 'make-overlay)
-	 (let ((o (make-overlay start end)))
-	   (overlay-put o 'face face)))
-	((fboundp 'make-extent)
-	 (let ((o (make-extent start end)))
-	   (set-extent-property o 'face face)))))
+  (let ((e (vm-make-extent start end)))
+    (vm-set-extent-property e 'face face)))
 
 (defun vm-default-buffer-substring-no-properties (beg end &optional buffer)
   (let ((s (if buffer
@@ -598,7 +580,7 @@
 (fset 'vm-buffer-substring-no-properties
   (cond ((fboundp 'buffer-substring-no-properties)
 	 (function buffer-substring-no-properties))
-	((vm-xemacs-p)
+	(vm-xemacs-p
 	 (function buffer-substring))
 	(t (function vm-default-buffer-substring-no-properties))))
 
@@ -617,37 +599,45 @@
       (set-buffer buffer))
     (set-buffer target-buffer)))
 
-(if (fboundp 'overlay-get)
-    (fset 'vm-extent-property 'overlay-get)
-  (fset 'vm-extent-property 'extent-property))
+(if (not (fboundp 'vm-extent-property))
+    (if (fboundp 'overlay-get)
+	(fset 'vm-extent-property 'overlay-get)
+      (fset 'vm-extent-property 'extent-property)))
 
-(if (fboundp 'overlay-put)
-    (fset 'vm-set-extent-property 'overlay-put)
-  (fset 'vm-set-extent-property 'set-extent-property))
+(if (not (fboundp 'vm-set-extent-property))
+    (if (fboundp 'overlay-put)
+	(fset 'vm-set-extent-property 'overlay-put)
+      (fset 'vm-set-extent-property 'set-extent-property)))
 
-(if (fboundp 'move-overlay)
-    (fset 'vm-set-extent-endpoints 'move-overlay)
-  (fset 'vm-set-extent-endpoints 'set-extent-endpoints))
+(if (not (fboundp 'vm-set-extent-endpoints))
+    (if (fboundp 'move-overlay)
+	(fset 'vm-set-extent-endpoints 'move-overlay)
+      (fset 'vm-set-extent-endpoints 'set-extent-endpoints)))
 
-(if (fboundp 'make-overlay)
-    (fset 'vm-make-extent 'make-overlay)
-  (fset 'vm-make-extent 'make-extent))
+(if (not (fboundp 'vm-make-extent))
+    (if (fboundp 'make-overlay)
+	(fset 'vm-make-extent 'make-overlay)
+      (fset 'vm-make-extent 'make-extent)))
 
-(if (fboundp 'overlay-end)
-    (fset 'vm-extent-end-position 'overlay-end)
-  (fset 'vm-extent-end-position 'extent-end-position))
+(if (not (fboundp 'vm-extent-end-position))
+    (if (fboundp 'overlay-end)
+	(fset 'vm-extent-end-position 'overlay-end)
+      (fset 'vm-extent-end-position 'extent-end-position)))
 
-(if (fboundp 'overlay-start)
-    (fset 'vm-extent-start-position 'overlay-start)
-  (fset 'vm-extent-start-position 'extent-start-position))
+(if (not (fboundp 'vm-extent-start-position))
+    (if (fboundp 'overlay-start)
+	(fset 'vm-extent-start-position 'overlay-start)
+      (fset 'vm-extent-start-position 'extent-start-position)))
 
-(if (fboundp 'delete-overlay)
-    (fset 'vm-detach-extent 'delete-overlay)
-  (fset 'vm-detach-extent 'detach-extent))
+(if (not (fboundp 'vm-detach-extent))
+    (if (fboundp 'delete-overlay)
+	(fset 'vm-detach-extent 'delete-overlay)
+      (fset 'vm-detach-extent 'detach-extent)))
 
-(if (fboundp 'overlay-properties)
-    (fset 'vm-extent-properties 'overlay-properties)
-  (fset 'vm-extent-properties 'extent-properties))
+(if (not (fboundp 'vm-extent-properties))
+    (if (fboundp 'overlay-properties)
+	(fset 'vm-extent-properties 'overlay-properties)
+      (fset 'vm-extent-properties 'extent-properties)))
 
 (defun vm-copy-extent (e)
   (let ((props (vm-extent-properties e))
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-mouse.el
--- a/lisp/vm/vm-mouse.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-mouse.el	Mon Aug 13 09:25:29 2007 +0200
@@ -18,18 +18,18 @@
 (provide 'vm-mouse)
 
 (defun vm-mouse-fsfemacs-mouse-p ()
-  (and (vm-fsfemacs-19-p)
+  (and vm-fsfemacs-19-p
        (fboundp 'set-mouse-position)))
 
 (defun vm-mouse-xemacs-mouse-p ()
-  (and (vm-xemacs-p)
+  (and vm-xemacs-p
        (fboundp 'set-mouse-position)))
 
 (defun vm-mouse-set-mouse-track-highlight (start end)
-  (cond ((fboundp 'make-overlay)
+  (cond (vm-fsfemacs-19-p
 	 (let ((o (make-overlay start end)))
 	   (overlay-put o 'mouse-face 'highlight)))
-	((fboundp 'make-extent)
+	(vm-xemacs-p
 	 (let ((o (make-extent start end)))
 	   (set-extent-property o 'highlight t)))))
 
@@ -218,7 +218,7 @@
 	       ;; newline convention used should be the local
 	       ;; one, whatever that is.
 	       (setq buffer-file-type nil)
-	       (and (vm-xemacs-mule-p)
+	       (and vm-xemacs-mule-p
 		    (set-buffer-file-coding-system 'no-conversion nil))
 	       (write-region (point-min) (point-max)
 			     (concat "/tmp/Mosaic." pid)
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-page.el
--- a/lisp/vm/vm-page.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-page.el	Mon Aug 13 09:25:29 2007 +0200
@@ -205,14 +205,14 @@
 
 (defun vm-highlight-headers ()
   (cond
-   ((and (vm-xemacs-p) vm-use-lucid-highlighting)
+   ((and vm-xemacs-p vm-use-lucid-highlighting)
     (require 'highlight-headers)
     ;; disable the url marking stuff, since VM has its own interface.
     (let ((highlight-headers-mark-urls nil)
 	  (highlight-headers-regexp (or vm-highlighted-header-regexp
 					highlight-headers-regexp)))
       (highlight-headers (point-min) (point-max) t)))
-   ((vm-xemacs-p)
+   (vm-xemacs-p
     (let (e)
       (map-extents (function
 		    (lambda (e ignore)
@@ -263,7 +263,7 @@
 				       (point-max))))
       (setq search-pairs (list (cons (point-min) (point-max)))))
     (cond
-     ((vm-xemacs-p)
+     (vm-xemacs-p
       (let (e)
 	(map-extents (function
 		      (lambda (e ignore)
@@ -299,7 +299,7 @@
 		  (set-extent-property e 'balloon-help 'vm-url-help)
 		  (set-extent-property e 'highlight t))))
 	  (setq search-pairs (cdr search-pairs)))))
-     ((and (vm-fsfemacs-19-p)
+     ((and vm-fsfemacs-19-p
 	   (fboundp 'overlay-put))
       (let (o-lists o p)
 	(setq o-lists (overlay-lists)
@@ -343,7 +343,7 @@
 
 (defun vm-energize-headers ()
   (cond
-   ((vm-xemacs-p)
+   (vm-xemacs-p
     (let ((search-tuples '(("^From:" vm-menu-author-menu)
 			   ("^Subject:" vm-menu-subject-menu)))
 	  regexp menu keymap e)
@@ -377,7 +377,7 @@
 	  (set-extent-property e 'balloon-help 'vm-mouse-3-help)
 	  (set-extent-property e 'highlight t))
 	(setq search-tuples (cdr search-tuples)))))
-   ((and (vm-fsfemacs-19-p)
+   ((and vm-fsfemacs-19-p
 	 (fboundp 'overlay-put))
     (let ((search-tuples '(("^From:" vm-menu-fsfemacs-author-menu)
 			   ("^Subject:" vm-menu-fsfemacs-subject-menu)))
@@ -470,7 +470,7 @@
 (defun vm-highlight-headers-maybe ()
   ;; highlight the headers
   (if (or vm-highlighted-header-regexp
-	  (and (vm-xemacs-p) vm-use-lucid-highlighting))
+	  (and vm-xemacs-p vm-use-lucid-highlighting))
       (save-restriction
 	(widen)
 	(narrow-to-region (vm-headers-of (car vm-message-pointer))
@@ -487,7 +487,7 @@
 	(vm-energize-headers)))
   ;; display xfaces, if we can
   (if (and vm-display-xfaces
-	   (vm-xemacs-p)
+	   vm-xemacs-p
 	   (vm-multiple-frames-possible-p)
 	   (featurep 'xface))
       (save-restriction
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-pop.el
--- a/lisp/vm/vm-pop.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-pop.el	Mon Aug 13 09:25:29 2007 +0200
@@ -191,7 +191,7 @@
 	  (setq process-buffer
 		(get-buffer-create (format "trace of POP session to %s" host)))
 	  ;; Tell XEmacs/MULE not to mess with the text.
-	  (and (vm-xemacs-mule-p)
+	  (and vm-xemacs-mule-p
 	       (set-buffer-file-coding-system 'no-conversion t))
 	  ;; clear the trace buffer of old output
 	  (save-excursion
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-reply.el
--- a/lisp/vm/vm-reply.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-reply.el	Mon Aug 13 09:25:29 2007 +0200
@@ -297,7 +297,18 @@
 		    (t (setq parts (list o))))
 	      (while parts
 		(cond ((vm-mime-text-type-p (car parts))
-		       (if (vm-mime-display-internal-text/plain (car parts) t)
+		       (if (cond ((vm-mime-types-match
+				   "text/html"
+				   (car (vm-mm-layout-type (car parts))))
+				  (vm-mime-display-internal-text/html
+				   (car parts)))
+				 ((vm-mime-types-match
+				   "text/enriched"
+				   (car (vm-mm-layout-type (car parts))))
+				  (vm-mime-display-internal-text/enriched
+				   (car parts)))
+				 ((vm-mime-display-internal-text/plain
+				   (car parts) t)))
 			   nil
 			 ;; charset problems probably
 			 ;; just dump the raw bits
@@ -1002,7 +1013,7 @@
     (and in-reply-to (insert "In-Reply-To: " in-reply-to "\n"))
     (and references (insert "References: " references "\n"))
     (insert "X-Mailer: VM " vm-version " under "
-	    (if (vm-fsfemacs-19-p) "Emacs " "")
+	    (if vm-fsfemacs-19-p "Emacs " "")
 	    emacs-version "\n")
     ;; REPLYTO support for FSF Emacs v19.29
     (and (eq mail-default-reply-to t)
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-save.el
--- a/lisp/vm/vm-save.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-save.el	Mon Aug 13 09:25:29 2007 +0200
@@ -496,7 +496,7 @@
        (vm-display nil nil '(vm-pipe-message-to-command)
 		   '(vm-pipe-message-to-command)))))
 
-(defun vm-print-message (count)
+(defun vm-print-message (&optional count)
   "Print the current message
 Prefix arg N means print the current message and the next N - 1 messages.
 Prefix arg -N means print the current message and the previous N - 1 messages.
@@ -514,6 +514,7 @@
   (vm-select-folder-buffer)
   (vm-check-for-killed-summary)
   (vm-error-if-folder-empty)
+  (or count (setq count 1))
   (let ((buffer (get-buffer-create "*Shell Command Output*"))
 	(command (mapconcat (function identity)
 			    (nconc (list vm-print-command)
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-startup.el
--- a/lisp/vm/vm-startup.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-startup.el	Mon Aug 13 09:25:29 2007 +0200
@@ -25,7 +25,7 @@
 
 Prefix arg or optional second arg READ-ONLY non-nil indicates
 that the folder should be considered read only.  No attribute
-changes, messages additions or deletions will be allowed in the
+changes, message additions or deletions will be allowed in the
 visited folder.
 
 Visiting the primary inbox causes any contents of the system mailbox to
@@ -81,7 +81,7 @@
       ;; This is only possible if a file is visited and then vm-mode
       ;; is run on it afterwards.
       (defvar buffer-file-coding-system)
-      (if (and (vm-xemacs-mule-p)
+      (if (and vm-xemacs-mule-p
 	       (not (eq (get-coding-system buffer-file-coding-system)
 			(get-coding-system 'no-conversion-unix)))
 	       (not (eq (get-coding-system buffer-file-coding-system)
@@ -275,7 +275,7 @@
 (defun vm-mode (&optional read-only)
   "Major mode for reading mail.
 
-This is VM 6.23.
+This is VM 6.24.
 
 Commands:
    h - summarize folder contents
@@ -1026,13 +1026,13 @@
   (vm-display nil nil '(vm-load-init-file) '(vm-load-init-file)))
 
 (defun vm-check-emacs-version ()
-  (cond ((and (vm-xemacs-p)
+  (cond ((and vm-xemacs-p
 	      (or (< emacs-major-version 19)
 		  (and (= emacs-major-version 19)
 		       (< emacs-minor-version 14))))
 	 (error "VM %s must be run on XEmacs 19.14 or a later version."
 		vm-version))
-	((and (vm-fsfemacs-19-p)
+	((and vm-fsfemacs-19-p
 	      (or (< emacs-major-version 19)
 		  (and (= emacs-major-version 19)
 		       (< emacs-minor-version 34))))
@@ -1052,6 +1052,7 @@
 	     ))))
 
 (defun vm-session-initialization ()
+  (vm-note-emacs-version)
   (vm-check-emacs-version)
   (vm-set-debug-flags)
   ;; If this is the first time VM has been run in this Emacs session,
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-summary.el
--- a/lisp/vm/vm-summary.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-summary.el	Mon Aug 13 09:25:29 2007 +0200
@@ -284,13 +284,13 @@
 	    (and old-window (select-window old-window)))))))
 
 (defun vm-summary-highlight-region (start end face)
-  (cond ((fboundp 'make-overlay)
+  (cond (vm-fsfemacs-19-p
 	 (if (and vm-summary-overlay (overlay-buffer vm-summary-overlay))
 	     (move-overlay vm-summary-overlay start end)
 	   (setq vm-summary-overlay (make-overlay start end))
 	   (overlay-put vm-summary-overlay 'evaporate nil)
 	   (overlay-put vm-summary-overlay 'face face)))
-	((fboundp 'make-extent)
+	(vm-xemacs-p
 	 (if (and vm-summary-overlay (extent-end-position vm-summary-overlay))
 	     (set-extent-endpoints vm-summary-overlay start end)
 	   (setq vm-summary-overlay (make-extent start end))
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-vars.el
--- a/lisp/vm/vm-vars.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-vars.el	Mon Aug 13 09:25:29 2007 +0200
@@ -271,9 +271,10 @@
 
 A nil value means don't do the checks.
 
-Depending on the value of vm-convert-folder-types VM will either
-convert the messages to the appropriate type before saving or
-incorporating them, or it will signal an error.")
+If non-nil, VM will either convert the messages to the appropriate
+type before saving or incorporating them, or it will signal an
+error.  The value of vm-convert-folder-types determines which
+action VM will take.")
 
 (defvar vm-convert-folder-types t
   "*Non-nil value means that when VM checks folder types and finds
@@ -683,8 +684,8 @@
 When VM prompts you for a target file name when saving a MIME body,
 any relative pathnames will be relative to this directory.")
 
-(defvar vm-mime-avoid-folding-content-type nil
-  "*Non-nil means don't send folded Content-Type headers in MIME messages.
+(defvar vm-mime-avoid-folding-content-type t
+  "*Non-nil means don't send folded Content- headers in MIME messages.
 `Folded' headers are headers broken into multiple lines as specified
 in RFC822 for readability and to avoid excessive line lengths.  At
 least one major UNIX vendor ships a version of sendmail that believes
@@ -3072,3 +3073,14 @@
 (defvar vm-frame-list nil)
 (if (not (boundp 'shell-command-switch))
     (defvar shell-command-switch "-c"))
+
+(defconst vm-xemacs-p nil)
+(defconst vm-xemacs-mule-p nil)
+(defconst vm-fsfemacs-19-p nil)
+(defun vm-note-emacs-version ()
+  (setq vm-xemacs-p (string-match "XEmacs" emacs-version)
+	vm-xemacs-mule-p (and vm-xemacs-p (featurep 'mule)
+			      ;; paranoia
+			      (fboundp 'set-file-coding-system))
+	vm-fsfemacs-19-p (not vm-xemacs-p)))
+(vm-note-emacs-version)
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-version.el
--- a/lisp/vm/vm-version.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-version.el	Mon Aug 13 09:25:29 2007 +0200
@@ -2,7 +2,7 @@
 
 (provide 'vm-version)
 
-(defconst vm-version "6.23"
+(defconst vm-version "6.24"
   "Version number of VM.")
 
 (defun vm-version ()
diff -r d101af7320b8 -r cca96a509cfe lisp/vm/vm-window.el
--- a/lisp/vm/vm-window.el	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/vm/vm-window.el	Mon Aug 13 09:25:29 2007 +0200
@@ -133,7 +133,7 @@
 	  (progn
 	    (set-buffer (setq work-buffer (get-buffer-create "*vm-wconfig*")))
 	    ;; for XEmacs/MULE
-	    (and (vm-xemacs-mule-p)
+	    (and vm-xemacs-mule-p
 		 (set-buffer-file-coding-system 'no-conversion))
 	    (erase-buffer)
 	    (print vm-window-configurations (current-buffer))
@@ -449,7 +449,7 @@
 
 (defun vm-bury-buffer (&optional buffer)
   (or buffer (setq buffer (current-buffer)))
-  (if (vm-xemacs-p)
+  (if vm-xemacs-p
       (if (vm-multiple-frames-possible-p)
 	  (vm-frame-loop 'bury buffer)
 	(bury-buffer buffer))
@@ -644,10 +644,10 @@
 ;; absent under Emacs 19.34.  So vm-frame-per-summary won't work
 ;; quite right under these Emacs versions.  XEmacs 19.15 should
 ;; have a working version of this function.
-;; 2 April 1997, frame-totallyt-visible-p apparently still broken
-;; under 19.15.  I give it up for now.
+;; 2 April 1997, frame-totally-visible-p apparently still broken
+;; under 19.15.  I give up for now.
 ;;(if (and (fboundp 'frame-totally-visible-p)
-;;	 (vm-xemacs-p)
+;;	 vm-xemacs-p
 ;;	 (or (>= emacs-major-version 20)
 ;;	     (>= emacs-minor-version 15)))
 ;;    (fset 'vm-frame-totally-visible-p 'frame-totally-visible-p)
diff -r d101af7320b8 -r cca96a509cfe lisp/w3/ChangeLog
--- a/lisp/w3/ChangeLog	Mon Aug 13 09:24:19 2007 +0200
+++ b/lisp/w3/ChangeLog	Mon Aug 13 09:25:29 2007 +0200
@@ -2,8 +2,53 @@
 
 * Makefile (xemacs-w3): Special target for XEmacs Build.
 
+Mon Apr  7 06:23:11 1997  William M. Perry  
+
+* w3-parse.el: Some more transitions - don't imply 

after some form + tags. + +* url-misc.el (url-finger): Ditto + +* url-http.el (url-http): Ditto + +* url-gopher.el (url-gopher-retrieve): Put in a process-sentinel of + 'ignore so that stupid 'process xxx exited with code nnn' messages are + not shown. + +* url.el (url-sentinel): Ditto + +* w3.el (w3-sentinel): remove call to url-clean-text - no longer needed + +Mon Apr 7 02:57:19 1997 Greg Stark + +* url.el (url-sentinel): once and for all eliminate the "first character + goes to wrong buffer" bug through brute force by setting the current + buffer to the buffer of the selected window at the end of a sentinel. + +* w3.el (w3-viewer-sentinel): ditto + +* w3-widget.el (widget-image-value-create): set tab-order to -1 on the + choice-items of client-side imagemaps to avoid having tab stop on them + three times, (it still stops on them twice) + +* Makefile: add "make fast" rule to not run a bazillion emacsen + +* FAQ: typos + +* docomp.el: try setting byte-compile-dynamic to t to reduce memory usage + +Fri Apr 4 06:23:31 1997 William M. Perry + +* url-file.el (url-format-directory): Use insert-file-contents instead of + -literally, so that ftp index files will work. + +* w3-emulate.el: lots of new commands to spoof the user-agent string. See + turn-[on|off]-[lynx|netscape|ie|arena]-masquerade-mode functions. + Thu Apr 3 07:22:27 1997 William M. Perry +* Emacs/W3 3.0.79 released + * w3-parse.el: Put in

as part of the content-model of

    so that

    at the front of a list doesn't cause a bogus list item to be shown. diff -r d101af7320b8 -r cca96a509cfe lisp/w3/FAQ --- a/lisp/w3/FAQ Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/FAQ Mon Aug 13 09:25:29 2007 +0200 @@ -35,7 +35,7 @@ recognize that key sequence. Then you may have to make your programs do useful things when they get a "backtab", Emacs for example will recognize it automatically but except for the Widget and W3 commands nothing is ever bound -it it. +to it. Step 1 On An XTerm: XTerm obeys standard X Toolkit translations which you can use to specify what character sequence Shift-Tab generates. The following X @@ -60,7 +60,7 @@ xmodmap -e 'keysym Tab = Tab' or adding that command to some global X configuration file (On Debian systems -adding ``Keysym Tab = Tab'' to /etc/X11/Xmodmap or ~/.Xmodmap is sufficient) +adding ``keysym Tab = Tab'' to /etc/X11/Xmodmap or ~/.Xmodmap is sufficient) Step 1 On A Linux Virtual Console: on a Linux virtual console you can configure what character sequences are generated by which keys using the diff -r d101af7320b8 -r cca96a509cfe lisp/w3/Makefile --- a/lisp/w3/Makefile Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/Makefile Mon Aug 13 09:25:29 2007 +0200 @@ -67,6 +67,9 @@ xemacs-w3: docomp.el $(OBJECTS) @echo Build of w3 complete... +fast: check-custom docomp.el + $(EMACS) $(BATCHFLAGS) $(DEPS) -f batch-byte-compile $(SOURCES) + all: w3.info w3 install: all diff -r d101af7320b8 -r cca96a509cfe lisp/w3/docomp.el --- a/lisp/w3/docomp.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/docomp.el Mon Aug 13 09:25:29 2007 +0200 @@ -61,7 +61,11 @@ (load "bytecomp" t t nil) ;; Emacs 19 byte compiler complains about too much stuff by default. ;; Turn off most of the warnings here. -(setq byte-compile-warnings '(free-vars)) +(setq byte-compile-warnings '(free-vars) + byte-compile-dynamic t + byte-compile-dynamic-docstrings t + byte-optimize t + ) (require 'w3-vars) (require 'url) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/font.el --- a/lisp/w3/font.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/font.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; font.el --- New font model ;; Author: wmperry -;; Created: 1997/03/28 20:23:52 -;; Version: 1.43 +;; Created: 1997/04/04 16:02:58 +;; Version: 1.44 ;; Keywords: faces ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -129,6 +129,7 @@ "optima")) ("elfin" . ("tymes")) ("monospace" . ("courier" + "courier new" "fixed" "lucidatypewriter" "clean" diff -r d101af7320b8 -r cca96a509cfe lisp/w3/mule-sysdp.el --- a/lisp/w3/mule-sysdp.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/mule-sysdp.el Mon Aug 13 09:25:29 2007 +0200 @@ -75,7 +75,7 @@ (set-buffer-file-coding-system code))) (xemacs (if (and (listp code) (not (car code))) - (setq code 'autodetect)) + (setq code 'automatic-conversion)) (decode-coding-region (point-min) (point-max) code) (set-buffer-file-coding-system code)) (otherwise diff -r d101af7320b8 -r cca96a509cfe lisp/w3/url-file.el --- a/lisp/w3/url-file.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/url-file.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-file.el --- File retrieval code ;; Author: wmperry -;; Created: 1997/02/19 23:38:31 -;; Version: 1.15 +;; Created: 1997/04/04 16:19:42 +;; Version: 1.16 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -131,7 +131,7 @@ (save-excursion (set-buffer url-working-buffer) (erase-buffer) - (insert-file-contents-literally + (insert-file-contents (expand-file-name url-directory-index-file dir))) (kill-buffer (current-buffer)) (find-file dir) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/url-gopher.el --- a/lisp/w3/url-gopher.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/url-gopher.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-gopher.el --- Gopher Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/03/18 01:02:58 -;; Version: 1.7 +;; Created: 1997/04/07 13:24:21 +;; Version: 1.8 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -269,6 +269,7 @@ (if (not (processp proc)) nil (save-excursion + (set-process-sentinel proc 'ignore) (process-send-string proc (concat selector "\r\n")) (while (and (or (not wait-for) (progn @@ -308,8 +309,6 @@ (condition-case () (url-kill-process proc) (error nil)) - (url-replace-regexp "\n*Connection closed.*\n*" "") - (url-replace-regexp "\n*Process .*gopher.*\n*" "") (while (looking-at "\r") (delete-char 1)))))) (defun url-do-gopher-cso-search (descr) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/url-http.el --- a/lisp/w3/url-http.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/url-http.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-http.el --- HTTP Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/04/03 20:34:59 -;; Version: 1.17 +;; Created: 1997/04/07 13:24:34 +;; Version: 1.18 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -565,6 +565,7 @@ nil (progn (url-process-put process 'url (or proxy-info url)) + (set-process-sentinel process 'ignore) (process-kill-without-query process) (process-send-string process request) (url-lazy-message "Request sent, waiting for response...") diff -r d101af7320b8 -r cca96a509cfe lisp/w3/url-misc.el --- a/lisp/w3/url-misc.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/url-misc.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-misc.el --- Misc Uniform Resource Locator retrieval code ;; Author: wmperry -;; Created: 1997/03/24 23:59:37 -;; Version: 1.13 +;; Created: 1997/04/07 13:24:49 +;; Version: 1.14 ;; Keywords: comm, data, processes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -65,6 +65,7 @@ (if (not (processp proc)) nil (process-kill-without-query proc) + (set-process-sentinel proc 'ignore) (if (= (string-to-char user) ?/) (setq user (substring user 1 nil))) (goto-char (point-min)) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/url-vars.el --- a/lisp/w3/url-vars.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/url-vars.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; url-vars.el --- Variables for Uniform Resource Locator tool ;; Author: wmperry -;; Created: 1997/04/03 21:42:29 -;; Version: 1.47 +;; Created: 1997/04/07 16:06:35 +;; Version: 1.48 ;; Keywords: comm, data, processes, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -26,7 +26,7 @@ ;;; Boston, MA 02111-1307, USA. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defconst url-version (let ((x "p3.0.79")) +(defconst url-version (let ((x "p3.0.80")) (if (string-match "State: \\([^ \t\n]+\\)" x) (substring x (match-beginning 1) (match-end 1)) x)) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/url.el --- a/lisp/w3/url.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/url.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,13 +1,13 @@ ;;; url.el --- Uniform Resource Locator retrieval tool ;; Author: wmperry -;; Created: 1997/04/03 15:23:07 -;; Version: 1.70 +;; Created: 1997/04/07 16:01:55 +;; Version: 1.72 ;; Keywords: comm, data, processes, hypermedia ;;; LCD Archive Entry: ;;; url|William M. Perry|wmperry@cs.indiana.edu| ;;; Functions for retrieving/manipulating URLs| -;;; 1997/04/03 15:23:07|1.70|Location Undetermined +;;; 1997/04/07 16:01:55|1.72|Location Undetermined ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1274,15 +1274,6 @@ (setq tmp (concat tmp str)) tmp)) -(defun url-clean-text () - "Clean up a buffer, removing any excess garbage from a gateway mechanism, -and decoding any MIME content-transfer-encoding used." - (set-buffer url-working-buffer) - (goto-char (point-min)) - (url-replace-regexp "Connection closed by.*\n*\\'" "") - (goto-char (point-min)) - (url-replace-regexp "Process .* exited abnormally.*\n*\\'" "")) - (defun url-remove-compressed-extensions (filename) (while (assoc (url-file-extension filename) url-uncompressor-alist) (setq filename (url-file-extension filename t))) @@ -1371,7 +1362,6 @@ (if url-be-asynchronous (progn (widen) - (url-clean-text) (cond ((and (null proc) (not url-working-buffer)) nil) ((url-mime-response-p) @@ -1383,7 +1373,9 @@ url-current-object)))))))) (if (member status '(401 301 302 303 204)) nil - (funcall url-default-retrieval-proc (buffer-name url-working-buffer)))))) + (funcall url-default-retrieval-proc (buffer-name url-working-buffer))))) + ;; FSF Emacs doesn't do this after calling a process-sentinel + (set-buffer (window-buffer (selected-window)))) (defun url-remove-relative-links (name) ;; Strip . and .. from pathnames @@ -1997,6 +1989,7 @@ variables interfere with the retrieval. HTTP/1.0 redirection will be honored before this function exits." (url-do-setup) + ;;(url-download-minor-mode t) (if (and (fboundp 'set-text-properties) (subrp (symbol-function 'set-text-properties))) (set-text-properties 0 (length url) nil url)) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/w3-emulate.el --- a/lisp/w3/w3-emulate.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/w3-emulate.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-emulate.el --- All variable definitions for emacs-w3 ;; Author: wmperry -;; Created: 1997/03/14 06:12:02 -;; Version: 1.12 +;; Created: 1997/04/04 14:24:19 +;; Version: 1.13 ;; Keywords: comm, help, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -203,6 +203,66 @@ (define-key w3-lynx-emulation-minor-mode-map "\C-t" 'ignore) ; toggle trace (define-key w3-lynx-emulation-minor-mode-map "\C-k" 'ignore) ; cookie jar +;; Things to masquerade as other browsers in the user-agent field +;; of an HTTP request. +(defun w3-masquerade-stub (arg app version) + (if (null arg) + (setq arg (if (equal url-package-name "Emacs-W3") 1 0))) + (if (= 0 arg) + (setq url-package-name "Emacs-W3" + url-package-version w3-version-number) + (setq url-package-name app + url-package-version version))) + +(defun w3-lynx-masquerade-mode (&optional arg) + (interactive "P") + (w3-masquerade-stub arg "Lynx" "2.6")) + +(defun turn-on-lynx-masquerade-mode () + (interactive) + (w3-lynx-masquerade-mode 1)) + +(defun turn-off-lynx-masquerade-mode () + (interactive) + (w3-lynx-masquerade-mode 0)) + +(defun w3-netscape-masquerade-mode (&optional arg) + (interactive "P") + (w3-masquerade-stub arg "Mozilla" "4.0")) + +(defun turn-on-netscape-masquerade-mode () + (interactive) + (w3-netscape-masquerade-mode 1)) + +(defun turn-off-netscape-masquerade-mode () + (interactive) + (w3-netscape-masquerade-mode 0)) + +(defun w3-ie-masquerade-mode (&optional arg) + (interactive "P") + (w3-masquerade-stub arg "Internet_Explorer" "3.02")) + +(defun turn-on-ie-masquerade-mode () + (interactive) + (w3-ie-masquerade-mode 1)) + +(defun turn-off-ie-masquerade-mode () + (interactive) + (w3-ie-masquerade-mode 0)) + +(defun w3-arena-masquerade-mode (&optional arg) + (interactive "P") + (w3-masquerade-stub arg "Arena" "0.9")) + +(defun turn-on-arena-masquerade-mode () + (interactive) + (w3-arena-masquerade-mode 1)) + +(defun turn-off-arena-masquerade-mode () + (interactive) + (w3-arena-masquerade-mode 0)) + +;; (provide 'w3-emulate) ;;; Local Variables: diff -r d101af7320b8 -r cca96a509cfe lisp/w3/w3-parse.el --- a/lisp/w3/w3-parse.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/w3-parse.el Mon Aug 13 09:25:29 2007 +0200 @@ -1414,10 +1414,10 @@ ;; FORM - - %body.content -(FORM) +(INPUT|KEYGEN|SELECT|TEXTAREA) ((form) ;; Same as BODY. Ugh! - (content-model . [((%body.content) + (content-model . [((%body.content %text) nil ;; Push

    before data characters. Non-SGML. - (((%text) p)) + nil nil)]) (exclusions . (form)) (inclusions . (input select textarea keygen label))) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/w3-vars.el --- a/lisp/w3/w3-vars.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/w3-vars.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-vars.el,v --- All variable definitions for emacs-w3 ;; Author: wmperry -;; Created: 1997/04/03 21:42:29 -;; Version: 1.120 +;; Created: 1997/04/07 16:06:34 +;; Version: 1.122 ;; Keywords: comm, help, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -33,7 +33,7 @@ (require 'w3-cus) ; Grab everything that is customized (defconst w3-version-number - (let ((x "p3.0.79")) + (let ((x "p3.0.80")) (if (string-match "State:[ \t\n]+.\\([^ \t\n]+\\)" x) (setq x (substring x (match-beginning 1) (match-end 1))) (setq x (substring x 1))) @@ -41,7 +41,7 @@ (function (lambda (x) (if (= x ?-) "." (char-to-string x)))) x "")) "Version # of w3-mode.") -(defconst w3-version-date (let ((x "1997/04/03 21:42:29")) +(defconst w3-version-date (let ((x "1997/04/07 16:06:34")) (if (string-match "Date: \\([^ \t\n]+\\)" x) (substring x (match-beginning 1) (match-end 1)) x)) @@ -400,7 +400,7 @@ (defconst w3-bug-address "wmperry@cs.indiana.edu" "Address of current maintainer, where to send bug reports.") -(defvar w3-continuation '(url-uncompress url-clean-text) +(defvar w3-continuation '(url-uncompress) "List of functions to call to process a document completely.") (defvar w3-current-isindex nil "Is the current document a searchable index?") (defvar w3-current-last-buffer nil "Last W3 buffer seen before this one.") @@ -408,7 +408,7 @@ (defvar w3-current-metainfo nil "An assoc list of tags for this doc.") (defvar w3-current-source nil "Source of current document.") (defvar w3-current-parse nil "Parsed version of current document.") -(defconst w3-default-continuation '(url-uncompress url-clean-text) +(defconst w3-default-continuation '(url-uncompress) "Default action to start with - cleans text and uncompresses if necessary.") (defvar w3-find-this-link nil "Link to go to within a document.") (defvar w3-hidden-forms nil "List of hidden form areas and their info.") diff -r d101af7320b8 -r cca96a509cfe lisp/w3/w3-widget.el --- a/lisp/w3/w3-widget.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/w3-widget.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3-widget.el --- An image widget ;; Author: wmperry -;; Created: 1997/03/26 15:31:17 -;; Version: 1.27 +;; Created: 1997/04/07 16:00:02 +;; Version: 1.28 ;; Keywords: faces, images ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -197,6 +197,7 @@ (if (and (not default) (stringp (aref x 2))) (setq default (aref x 2))) (list 'choice-item + :tab-order -1 :format "%[%t%]" :tag (or (aref x 3) (aref x 2)) :value (aref x 2)))) client-map))) diff -r d101af7320b8 -r cca96a509cfe lisp/w3/w3.el --- a/lisp/w3/w3.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/w3/w3.el Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions ;; Author: wmperry -;; Created: 1997/04/03 02:06:01 -;; Version: 1.105 +;; Created: 1997/04/07 15:59:56 +;; Version: 1.108 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -163,7 +163,9 @@ (copy-file fname (read-file-name "Save as: ") t)) (if (and (file-exists-p fname) (file-writable-p fname)) - (delete-file fname)))) + (delete-file fname))) + ;; FSF Emacs doesn't do this after calling a process-sentinel + (set-buffer (window-buffer (selected-window)))) (defun w3-notify-when-ready (buff) "Notify the user when BUFF is ready. @@ -1129,7 +1131,6 @@ (remove-hook 'after-change-functions 'url-after-change-function) (if url-be-asynchronous (progn - (url-clean-text) (cond ((not (get-buffer url-working-buffer)) nil) ((url-mime-response-p) (url-parse-mime-headers))) @@ -2157,7 +2158,7 @@ (widget-get link-at-point :from) (widget-get link-at-point :to) (w3-fix-spaces - (buffer-substring + (buffer-substring-no-properties (widget-get link-at-point :from) (widget-get link-at-point :to))))) (w3-map-links (function diff -r d101af7320b8 -r cca96a509cfe lisp/x11/x-menubar.el --- a/lisp/x11/x-menubar.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/x11/x-menubar.el Mon Aug 13 09:25:29 2007 +0200 @@ -132,12 +132,19 @@ ["Towers of Hanoi" hanoi t] ["Game of Life" life t] ["Multiplication Puzzle" mpuz t] - ["Mine Game" mine t] + ["Mine Game" xmine t] ) ) ("Options" - ,custom-help-menu + ("Customize" + ("Emacs" :filter (lambda (&rest junk) + (cdr (custom-menu-create 'emacs)))) + ["Group..." customize t] + ["Variable..." customize-variable t] + ["Face..." customize-face t] + ["Saved..." customize-customized t] + ["Apropos..." customize-apropos t]) ["Read Only" (toggle-read-only) :style toggle :selected buffer-read-only] ("Editing Options" diff -r d101af7320b8 -r cca96a509cfe lisp/x11/x-toolbar.el --- a/lisp/x11/x-toolbar.el Mon Aug 13 09:24:19 2007 +0200 +++ b/lisp/x11/x-toolbar.el Mon Aug 13 09:25:29 2007 +0200 @@ -25,64 +25,95 @@ ;; order to get different behaviour. ;; -(defvar toolbar-open-function 'find-file - "*Function to call when the open icon is selected.") +(defgroup toolbar nil + "Configure XEmacs Toolbar functions and properties" + :group 'environment) + +(defcustom toolbar-open-function 'find-file + "*Function to call when the open icon is selected." + :type '(radio (function-item find-file) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-open () (interactive) (call-interactively toolbar-open-function)) -(defvar toolbar-dired-function 'dired - "*Function to call when the dired icon is selected.") +(defcustom toolbar-dired-function 'dired + "*Function to call when the dired icon is selected." + :type '(radio (function-item dired) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-dired () (interactive) (call-interactively toolbar-dired-function)) -(defvar toolbar-save-function 'save-buffer - "*Function to call when the save icon is selected.") +(defcustom toolbar-save-function 'save-buffer + "*Function to call when the save icon is selected." + :type '(radio (function-item save-buffer) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-save () (interactive) (call-interactively toolbar-save-function)) -(defvar toolbar-print-function 'lpr-buffer - "*Function to call when the print icon is selected.") +(defcustom toolbar-print-function 'lpr-buffer + "*Function to call when the print icon is selected." + :type '(radio (function-item lpr-buffer) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-print () (interactive) (call-interactively toolbar-print-function)) -(defvar toolbar-cut-function 'x-kill-primary-selection - "*Function to call when the cut icon is selected.") +(defcustom toolbar-cut-function 'x-kill-primary-selection + "*Function to call when the cut icon is selected." + :type '(radio (function-item x-kill-primary-selection) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-cut () (interactive) (call-interactively toolbar-cut-function)) -(defvar toolbar-copy-function 'x-copy-primary-selection - "*Function to call when the copy icon is selected.") +(defcustom toolbar-copy-function 'x-copy-primary-selection + "*Function to call when the copy icon is selected." + :type '(radio (function-item x-copy-primary-selection) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-copy () (interactive) (call-interactively toolbar-copy-function)) -(defvar toolbar-paste-function 'x-yank-clipboard-selection - "*Function to call when the paste icon is selected.") +(defcustom toolbar-paste-function 'x-yank-clipboard-selection + "*Function to call when the paste icon is selected." + :type '(radio (function-item x-yank-primary-selection) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-paste () (interactive) (call-interactively toolbar-paste-function)) -(defvar toolbar-undo-function 'undo - "*Function to call when the undo icon is selected.") +(defcustom toolbar-undo-function 'undo + "*Function to call when the undo icon is selected." + :type '(radio (function-item undo) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-undo () (interactive) (call-interactively toolbar-undo-function)) -(defvar toolbar-replace-function 'query-replace - "*Function to call when the replace icon is selected.") +(defcustom toolbar-replace-function 'query-replace + "*Function to call when the replace icon is selected." + :type '(radio (function-item query-replace) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-replace () (interactive) @@ -92,13 +123,17 @@ ;; toolbar ispell variables and defuns ;; -(defvar toolbar-ispell-function - (lambda () - (interactive) - (if (region-active-p) - (ispell-region (region-beginning) (region-end)) - (ispell-buffer))) - "*Function to call when the ispell icon is selected.") +(defun toolbar-ispell-internal () + (interactive) + (if (region-active-p) + (ispell-region (region-beginning) (region-end)) + (ispell-buffer))) + +(defcustom toolbar-ispell-function 'toolbar-ispell-internal + "*Function to call when the ispell icon is selected." + :type '(radio (function-item toolbar-ispell-internal) + (function :tag "Other")) + :group 'toolbar) (defun toolbar-ispell () "Intelligently spell the region or buffer." @@ -109,28 +144,43 @@ ;; toolbar mail variables and defuns ;; -(defmacro toolbar-external (process &rest args) - `(lambda () (interactive) (call-process ,process nil 0 nil ,@args))) +;; This used to be a macro that expanded its arguments to a form that +;; called `call-process'. With the advent of customize, it's better +;; to have it as a defun, to make customization easier. +(defun toolbar-external (process &rest args) + (interactive) + (apply 'call-process process nil 0 nil args)) -(defvar toolbar-mail-commands-alist +(defcustom toolbar-mail-commands-alist `((vm . vm) (gnus . gnus-no-server) (rmail . rmail) (mh . mh-rmail) - (pine . ,(toolbar-external "xterm" "-e" "pine")) ; *gag* - (elm . ,(toolbar-external "xterm" "-e" "elm")) - (mutt . ,(toolbar-external "xterm" "-e" "mutt")) - (exmh . ,(toolbar-external "exmh")) + (pine . (toolbar-external "xterm" "-e" "pine")) ; *gag* + (elm . (toolbar-external "xterm" "-e" "elm")) + (mutt . (toolbar-external "xterm" "-e" "mutt")) + (exmh . (toolbar-external "exmh")) ;; How to turn on netscape mail, command-line?? - (netscape . ,(toolbar-external "netscape"))) - "Alist of mail readers and their commands. -The car of the alist is the mail reader, and the cdr is the form -used to start it.") + (netscape . (toolbar-external "netscape"))) + "*Alist of mail readers and their commands. +The car of each alist element is the mail reader, and the cdr is the form +used to start it." + :type '(repeat (cons (symbol :tag "Mailer") (function :tag "Start with"))) + :group 'toolbar) -(defvar toolbar-mail-reader 'vm +(defcustom toolbar-mail-reader 'vm "*Mail reader toolbar will invoke. -The legal values are `vm' and `gnus', but you can add your own values -by customizing `toolbar-mail-commands-alist'.") +The legal values are the keys from `toolbar-mail-command-alist', which should +be used to add new mail readers. + +Mail readers known by default are vm, gnus, rmail, mh, pine, elm, mutt, +exmh and netscape." + :type '(symbol :validate (lambda (wid) + (if (assq (widget-value wid) toolbar-mail-commands-alist) + nil + (widget-put wid :error "Unknown mail reader.") + wid))) + :group 'toolbar) (defun toolbar-mail () @@ -192,27 +242,40 @@ ;; toolbar news variables and defuns ;; -(defvar toolbar-news-commands-alist +(defcustom toolbar-news-commands-alist `((gnus . gnus) ; M-x all-hail-gnus - (rn . ,(toolbar-external "xterm" "-e" "rn")) - (nn . ,(toolbar-external "xterm" "-e" "nn")) - (trn . ,(toolbar-external "xterm" "-e" "trn")) - (xrn . ,(toolbar-external "xrn")) - (slrn . ,(toolbar-external "xterm" "-e" "slrn")) - (pine . ,(toolbar-external "xterm" "-e" "pine")) ; *gag* - (tin . ,(toolbar-external "xterm" "-e" "tin")) ; *gag* - (netscape . ,(toolbar-external "netscape" "news:"))) - "Alist of news readers and their commands. -Each list element is a pair. The car of the pair is the mail -reader, and the cdr is the form used to start it.") + (rn . (toolbar-external "xterm" "-e" "rn")) + (nn . (toolbar-external "xterm" "-e" "nn")) + (trn . (toolbar-external "xterm" "-e" "trn")) + (xrn . (toolbar-external "xrn")) + (slrn . (toolbar-external "xterm" "-e" "slrn")) + (pine . (toolbar-external "xterm" "-e" "pine")) ; *gag* + (tin . (toolbar-external "xterm" "-e" "tin")) ; *gag* + (netscape . (toolbar-external "netscape" "news:"))) + "*Alist of news readers and their commands. +The car of each alist element the pair is the news reader, and the cdr +is the form used to start it." + :type '(repeat (cons (symbol :tag "Reader") (sexp :tag "Start with"))) + :group 'toolbar) -(defvar toolbar-news-reader 'gnus +(defcustom toolbar-news-reader 'gnus "*News reader toolbar will invoke. -The legal values are gnus, rn, nn, trn, xrn, slrn, pine and netscape. -You can add your own values by customizing `toolbar-news-commands-alist'.") +The legal values are the keys from `toolbar-news-command-alist', which should +be used to add new news readers. -(defvar toolbar-news-use-separate-frame t - "*Whether Gnus is invoked in a separate frame.") +Newsreaders known by default are gnus, rn, nn, trn, xrn, slrn, pine and +netscape." + :type '(symbol :validate (lambda (wid) + (if (assq (widget-value wid) toolbar-news-commands-alist) + nil + (widget-put wid :error "Unknown newsreader.") + wid))) + :group 'toolbar) + +(defcustom toolbar-news-use-separate-frame t + "*Whether Gnus is invoked in a separate frame." + :type 'boolean + :group 'toolbar) (defvar toolbar-news-frame nil "The frame in which news is displayed.") diff -r d101af7320b8 -r cca96a509cfe man/ChangeLog --- a/man/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ b/man/ChangeLog Mon Aug 13 09:25:29 2007 +0200 @@ -1,3 +1,13 @@ +Mon Apr 7 21:02:39 1997 Steven L Baur + + * lispref/lispref.texi: Update version numbers (with patches from + Hrvoje Niksic). + + * lispref/building.texi (Building XEmacs): Update version numbers + and build identification. + + * lispref/intro.texi (Introduction): Update version number. + Sun Mar 23 15:47:05 1997 Steven L Baur * Makefile (srcs): Add efs.texi. diff -r d101af7320b8 -r cca96a509cfe man/Makefile --- a/man/Makefile Mon Aug 13 09:24:19 2007 +0200 +++ b/man/Makefile Mon Aug 13 09:25:29 2007 +0200 @@ -33,7 +33,7 @@ .SUFFIXES: .info .texi .dvi # Subdirectories to make recursively. -SUBDIR = xemacs lispref new-users-guide internals tm auctex +SUBDIR = xemacs lispref new-users-guide internals tm auctex gnats ../info/%.info : %.texi -$(MAKEINFO) -o $@ $< diff -r d101af7320b8 -r cca96a509cfe man/custom.texi --- a/man/custom.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/custom.texi Mon Aug 13 09:25:29 2007 +0200 @@ -13,7 +13,7 @@ @comment node-name, next, previous, up @top The Customization Library -Version: 1.69 +Version: 1.74 @menu * Introduction:: @@ -272,7 +272,8 @@ It is possible to specify that a face should have different attributes on different device types. For example, a face may make text red on a -color device, and bold on a monochrome device. +color device, and bold on a monochrome device. You do this by +activating `Edit All' in the state menu. The way this is presented in the customization buffer is to have a list of display specifications, and for each display specification a list of @@ -282,8 +283,9 @@ @example *** custom-invalid-face: (sample) + State: this item is unchanged from its factory setting. [ ] Face used when the customize item is invalid. - [INS] [DEL] Display: [ ] Type: [ ] X [ ] TTY + [INS] [DEL] Display: [ ] Type: [ ] X [ ] PM [ ] Win32 [ ] DOS [ ] TTY [X] Class: [X] Color [ ] Grayscale [ ] Monochrome [ ] Background: [ ] Light [ ] Dark Attributes: [ ] Bold: off @@ -303,7 +305,7 @@ @end example This has two display specifications. The first will match all color -displays, independently on whether the device is X11 or a tty, and +displays, independently on what window system the device belongs to, and whether background color is dark or light. For devices matching this specification, @samp{custom-invalid-face} will force text to be displayed in yellow on red, but leave all other attributes alone. @@ -318,8 +320,7 @@ the check boxes. The first checkbox in each line in the display specification is special. It specify whether this particular property will even be relevant. By not checking the box in the first display, we -match all device types, also device types other than X11 and tty, for -example ms-windows, nextstep, and mac os. +match all device types, also device types other than those listed. After modifying the face, you can activate the state button to make the changes take effect. The menu items in the state button menu is similar @@ -406,6 +407,10 @@ @comment node-name, next, previous, up @section Declarations +This section describes how to declare customization groups, variables, +and faces. It doesn't contain any examples, but please look at the file +@file{cus-edit.el} which contains many declarations you can learn from. + @menu * Declaring Groups:: * Declaring Variables:: @@ -635,8 +640,7 @@ should not be allowed to select the @samp{Factory} menu item. @item -We need @strong{much} better support for keyboard operations in the -customize buffer. +Better support for keyboard operations in the customize buffer. @item Integrate with @file{w3} so you can customization buffers with much @@ -653,16 +657,16 @@ variable. @item -There should be a way to see only the "current" display when editing a -face, and that should be "on" by default. - -@item Support undo using lmi's @file{gnus-undo.el}. @item Make it possible to append to `choice', `radio', and `set' options. @item +Make it possible to customize code, for example to enable or disable a +global minor mode. + +@item Ask whether set or modified variables should be saved in @code{kill-buffer-hook}. @@ -678,6 +682,9 @@ Suggested by Jens Lautenbacher @samp{}.@refill +@item +Empty customization groups should start open (harder than it looks). + @end itemize @contents diff -r d101af7320b8 -r cca96a509cfe man/gnus.texi --- a/man/gnus.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/gnus.texi Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Gnus 5.4.40 Manual +@settitle Gnus 5.4.42 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -287,7 +287,7 @@ @tex @titlepage -@title Gnus 5.4.40 Manual +@title Gnus 5.4.42 Manual @author by Lars Magne Ingebrigtsen @page @@ -323,7 +323,7 @@ spool or your mbox file. All at the same time, if you want to push your luck. -This manual corresponds to Gnus 5.4.40. +This manual corresponds to Gnus 5.4.42. @end ifinfo @@ -13997,12 +13997,14 @@ Raja R. Harinath, Hisashige Kenji, @c Hisashige Marc Horowitz, +Gunnar Horrigmo, François Felix Ingrand, Ishikawa Ichiro, @c Ishikawa Lee Iverson, Rajappa Iyer, Randell Jesup, Fred Johansen, +Kim-Minh Kaplan, Greg Klanderman, Karl Kleinpaste, Peter Skov Knudsen, diff -r d101af7320b8 -r cca96a509cfe man/info.texi --- a/man/info.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/info.texi Mon Aug 13 09:25:29 2007 +0200 @@ -932,12 +932,15 @@ selected. @item Info-directory-list -The list of directories to search for Info files. Each element is a -string (directory name) or @code{nil} (try default directory). +The list of directories to search for Info files. This variable is set +on startup automatically either from the @code{INFOPATH} environment +variable (if it exists) or, else, @code{Info-default-directory-list}. +Any user settings of this variable will be ignored. -@item Info-directory -The standard directory for Info documentation files. Only used when the -function @code{Info-directory} is called. +@item Info-default-directory-list +List of default directories to search for Info documentation files. +This value is used as the default for @code{Info-directory-list} in the +absence of a setting for the @code{INFOPATH} environment variable. @end table @node Create an Info File, , Advanced Info, Top diff -r d101af7320b8 -r cca96a509cfe man/internals/internals.texi --- a/man/internals/internals.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/internals/internals.texi Mon Aug 13 09:25:29 2007 +0200 @@ -491,6 +491,8 @@ version 19.14 released June 23, 1996. @item version 20.0 released February 9, 1997. +@item +version 19.15 released March 28, 1997. @end itemize @node GNU Emacs 19 @@ -579,6 +581,8 @@ @cindex Illinois, University of @cindex SPARCWorks @cindex Andreessen, Marc +@cindex Baur, Steve +@cindex Buchholz, Martin @cindex Kaplan, Simon @cindex Wing, Ben @cindex Thompson, Chuck @@ -608,11 +612,23 @@ Communications Corp. (co-founded by the same Marc Andreessen, who had quit his Epoch job to work on a graphical browser for the World Wide Web). Chuck then become the primary maintainer of XEmacs, and put out -versions 19.11, 19.12, and 19.13 in conjunction with Ben. For 19.12 and +versions 19.11 through 19.14 in conjunction with Ben. For 19.12 and 19.13, Chuck added the new redisplay and many other display improvements and Ben added MULE support (support for Asian and other languages) and redesigned most of the internal Lisp subsystems to better support the -MULE work and the various other features being added to XEmacs. +MULE work and the various other features being added to XEmacs. After +19.14 Chuck retired as primary maintainer and Steve Baur stepped in. + +@cindex MULE merged XEmacs appears + Soon after 19.13 was released, work began in earnest on the MULE +internationalization code and the source tree was divided into two +development paths. The MULE version was initially called 19.20, but was +soon renamed to 20.0. In 1996 Martin Buchholz of Sun Microsystems took +over the care and feeding of it and worked on it in parallel with the +19.14 development that was occurring at the same time. After much work +by Martin, it was decided to release 20.0 ahead of 19.15 in February +1997. The source tree remained divided until 20.1 when the version 19 +source was finally retired. @cindex merging attempts Many attempts have been made to merge XEmacs and GNU Emacs, but they diff -r d101af7320b8 -r cca96a509cfe man/lispref/building.texi --- a/man/lispref/building.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/lispref/building.texi Mon Aug 13 09:25:29 2007 +0200 @@ -134,8 +134,8 @@ @example @group (emacs-version) - @result{} "XEmacs 20.0 [Lucid] (i586-unknown-linux2.0.18) - of Wed Feb 6 1997 on nene" + @result{} "XEmacs 20.1 [Lucid] (i586-unknown-linux2.0.29) + of Mon Apr 7 1997 on altair.xemacs.org" @end group @end example @@ -149,15 +149,15 @@ @example @group -emacs-build-time - @result{} "Wed Mar 6 14:55:57 1996" +emacs-build-time "Mon Apr 7 20:28:52 1997" + @result{} @end group @end example @end defvar @defvar emacs-version The value of this variable is the version of Emacs being run. It is a -string, e.g. @code{"20.0 XEmacs Lucid"}. +string, e.g. @code{"20.1 XEmacs Lucid"}. @end defvar The following two variables did not exist before FSF GNU Emacs version @@ -166,12 +166,12 @@ @defvar emacs-major-version The major version number of Emacs, as an integer. For XEmacs version -20.0, the value is 20. +20.1, the value is 20. @end defvar @defvar emacs-minor-version The minor version number of Emacs, as an integer. For XEmacs version -20.0, the value is 0. +20.1, the value is 1. @end defvar @node Pure Storage diff -r d101af7320b8 -r cca96a509cfe man/lispref/intro.texi --- a/man/lispref/intro.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/lispref/intro.texi Mon Aug 13 09:25:29 2007 +0200 @@ -424,7 +424,7 @@ programming languages, and later chapters describe features that are peculiar to XEmacs Lisp or relate specifically to editing. - This is edition 3.0. + This is edition 3.2. @menu * Caveats:: Flaws and a request for help. @@ -472,8 +472,9 @@ This manual was originally written for FSF Emacs 19 and was updated by Ben Wing (wing@@666.com) for Lucid Emacs 19.10 and later for XEmacs -19.12, 19.13, 19.14, and 20.0. Please send comments and corrections -relating to XEmacs-specific portions of this manual to +19.12, 19.13, 19.14, and 20.0. It was further updated by the XEmacs +Development Team for 19.15 and 20.1. Please send comments and +corrections relating to XEmacs-specific portions of this manual to @example xemacs@@xemacs.org @end example @@ -858,7 +859,8 @@ sections: events, faces, extents, glyphs, specifiers, toolbar, menubars, scrollbars, dialog boxes, devices, consoles, hash tables, range tables, char tables, databases, and others. The section on annotations was -originally written by Chuck Thompson. +originally written by Chuck Thompson. Corrections to v3.1 were done by +Martin Buchholz, Steve Baur, and Hrvoje Niksic. Corrections to the original GNU Emacs Lisp Reference Manual were supplied by Karl Berry, Jim Blandy, Bard Bloom, Stephane Boucher, David diff -r d101af7320b8 -r cca96a509cfe man/lispref/lispref.texi --- a/man/lispref/lispref.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/lispref/lispref.texi Mon Aug 13 09:25:29 2007 +0200 @@ -15,6 +15,7 @@ GNU Emacs Lisp Reference Manual v2.4, June 1995 XEmacs Lisp Programmer's Manual (for 19.13) Third Edition, July 1995 XEmacs Lisp Reference Manual (for 19.14 and 20.0) v3.1, March 1996 +XEmacs Lisp Reference Manual (for 19.15 and 20.1) v3.2, April 1997 @c Please REMEMBER to update edition number in *four* places in this file @c and also in *one* place in intro.texi @@ -74,7 +75,7 @@ @c and also in the file intro.texi. @c This manual documents XEmacs 19.14 and 20.0 and was based on the @c documentation for FSF Emacs 19.29 (v2.4). -@subtitle Version 3.1 (for XEmacs 19.14 and 20.0), March 1996 +@subtitle Version 3.2 (for XEmacs 19.15 and 20.1), April 1997 @author by Ben Wing @author @@ -87,9 +88,9 @@ Copyright @copyright{} 1994, 1995 Sun Microsystems, Inc. Copyright @copyright{} 1995, 1996 Ben Wing. @sp 2 -Version 3.1 @* -Revised for XEmacs Versions 19.14 and 20.0,@* -March, 1996.@* +Version 3.2 @* +Revised for XEmacs Versions 19.15 and 20.1,@* +April, 1997.@* Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -116,7 +117,7 @@ @ifinfo This Info file contains the third edition of the XEmacs Lisp -Reference Manual, corresponding to XEmacs versions 19.14 and 20.0. +Reference Manual, corresponding to XEmacs versions 19.15 and 20.1. @end ifinfo @menu diff -r d101af7320b8 -r cca96a509cfe man/message.texi --- a/man/message.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/message.texi Mon Aug 13 09:25:29 2007 +0200 @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 5.4.40 Manual +@settitle Message 5.4.42 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -39,7 +39,7 @@ @tex @titlepage -@title Message 5.4.40 Manual +@title Message 5.4.42 Manual @author by Lars Magne Ingebrigtsen @page @@ -79,7 +79,7 @@ * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 5.4.40. Message is distributed with +This manual corresponds to Message 5.4.42. Message is distributed with the Gnus distribution bearing the same version number as this manual has. diff -r d101af7320b8 -r cca96a509cfe man/psgml.texi --- a/man/psgml.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/psgml.texi Mon Aug 13 09:25:29 2007 +0200 @@ -7,7 +7,7 @@ @syncodeindex vr cp @synindex ky cp @c %**end of header -@c $Id: psgml.texi,v 1.1.1.1 1996/12/18 22:43:46 steve Exp $ +@c $Id: psgml.texi,v 1.2 1997/04/10 05:56:17 steve Exp $ @ifinfo @format @@ -199,7 +199,7 @@ archive. This is done with the @code{gunzip} and @code{tar} commands. @example -gunzip psgml-1.0a12.tar.gz; tar xf psgml-1.0a12.tar +gunzip psgml-1.0.1.tar.gz; tar xf psgml-1.0.1.tar @end example This should create a subdirectory to the current directory with the diff -r d101af7320b8 -r cca96a509cfe man/texinfo.texi --- a/man/texinfo.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/texinfo.texi Mon Aug 13 09:25:29 2007 +0200 @@ -13,7 +13,7 @@ @paragraphindent 2 @finalout @comment %**end of header -@comment $Id: texinfo.texi,v 1.2 1997/03/08 23:27:25 steve Exp $ +@comment $Id: texinfo.texi,v 1.3 1997/04/10 05:56:19 steve Exp $ @c Before release, run C-u C-c C-u C-a (texinfo-all-menus-update with a @c prefix arg). This updates the node pointers, which texinfmt.el needs. @@ -12968,7 +12968,7 @@ @item If you are using Emacs, list the name of the file in a second @file{dir} file, in its directory; and then add the name of that directory to the -@code{Info-directory-list} variable in your personal or site +@code{Info-default-directory-list} variable in your personal or site initialization file. This tells Emacs's Info reader where to look for @file{dir} @@ -12997,13 +12997,13 @@ In this case, the absolute file name of the @file{info-test} file is written as the second part of the menu entry.@refill -@vindex Info-directory-list +@vindex Info-default-directory-list Alternatively, you could write the following in your @file{.emacs} file:@refill @example @group -(setq Info-directory-list +(setq Info-default-directory-list '("/home/bob/manuals" "/usr/local/emacs/info")) @end group diff -r d101af7320b8 -r cca96a509cfe man/w3.texi --- a/man/w3.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/w3.texi Mon Aug 13 09:25:29 2007 +0200 @@ -183,15 +183,15 @@ @node Downloading, Building and Installing, Getting Started, Getting Started @section Downloading -:: WORK :: What you need, and why -:: WORK :: Where to download Emacs, XEmacs, various platforms -:: WORK :: Where to download Emacs/W3 +:: WORK :: What you need, and why@* +:: WORK :: Where to download Emacs, XEmacs, various platforms@* +:: WORK :: Where to download Emacs/W3@* :: WORK :: Where to download related utilities (netpbm, xv, gimp, etc.) @node Building and Installing, Startup Files, Downloading, Getting Started @section Building and Installing -:: WORK :: Document makefile variables +:: WORK :: Document makefile variables@* :: WORK :: Document what gets installed where, why @node Startup Files, Preferences Panel, Building and Installing, Getting Started @@ -199,7 +199,7 @@ @cindex Startup files @cindex Default stylesheet -:: WORK :: startup files +:: WORK :: startup files@* This section should document where Emacs/W3 looks for its startup files, and what each one does. 'profile' 'stylesheet' 'hotlist' 'history' etc. @@ -208,7 +208,7 @@ @cindex Preferences @kindex M-x w3-preferences-edit -:: WORK :: pref panel +:: WORK :: pref panel@* This should document the quick preferences panel. M-x w3-preferences-edit @node Basic Usage, Compatibility, Getting Started, Top @@ -640,7 +640,7 @@ @findex w3-lynx-emulation-minor-mode @vindex w3-mode-hook -:: WORK :: Document lynx emulation +:: WORK :: Document lynx emulation@* @table @kbd @item Down arrow Highlight next topic @@ -746,7 +746,7 @@ Invoke the Cookie Jar Page @end table -:: WORK :: Document netscape emulation +:: WORK :: Document netscape emulation@* Uh, turn this into pretty tables about what keys are emulated. @example @@ -770,8 +770,8 @@ @node Hotlist Handling, Session History, Emulation, Compatibility @section Hotlist Handling -:: WORK :: Document that it supports different types of hotlist formats -:: WORK :: Make sure everything hotlist related can be accessed via 'h' +:: WORK :: Document that it supports different types of hotlist formats@* +:: WORK :: Make sure everything hotlist related can be accessed via 'h'@* In order to avoid having to traverse many documents to get to the same document over and over, Emacs/W3 supports a ``hotlist'' like Mosaic. This is a file that contains @sc{url}s and aliases. Hotlists allow quick access to any @@ -869,7 +869,7 @@ @node Global History, , Session History, Compatibility @section Global History -:: WORK :: Document that the global history can have diff. formats +:: WORK :: Document that the global history can have diff. formats@* Most web browsers also support the idea of a ``history'' of @sc{url}s the user has visited, and it displays them in a different style than normal @sc{url}s. @@ -2977,7 +2977,7 @@ If a Emacs/W3 thinks it has encountered invalid @sc{html}, then a debugging message is displayed. -:: WORK :: Need to list the different values w3-debug-html can have, and +:: WORK :: Need to list the different values w3-debug-html can have, and@* :: WORK :: what they do :: @node Hooks, Other Variables, Debugging HTML, Advanced Features @@ -3295,7 +3295,7 @@ Use this method if you must first telnet and log into a gateway host, and then run telnet from that host to connect to outside machines. -:: WORK :: document telnet gw variables +:: WORK :: document telnet gw variables@* This section needs more information, specifically documenting the following variables. For now, please do @key{C-h v} on the variable for more information. @@ -3313,7 +3313,7 @@ @file{rlogin} to log into the remote machine without having to send the username and password over the wire every time. -:: WORK :: document rlogin gw variables +:: WORK :: document rlogin gw variables@* This section needs more information, specifically documenting the following variables. For now, please do @key{C-h v} on the variable for more information. @@ -3333,7 +3333,7 @@ @item @sc{socks} Use if the firewall has a @sc{socks} gateway running on it. -:: WORK :: document socks variables +:: WORK :: document socks variables@* This section needs more information, specifically documenting the following variables. For now, please do @key{C-h v} on the variable for more information. @@ -3592,7 +3592,7 @@ @node Down with DoubleClick, General Index, Mailcap Files, Top @appendix Down with DoubleClick -:: WORK :: Document why doubleclick is evil +:: WORK :: Document why doubleclick is evil@* :: WORK :: Document how you can never see another ad from them again @node General Index, Key Index, Down with DoubleClick, Top diff -r d101af7320b8 -r cca96a509cfe man/widget.texi --- a/man/widget.texi Mon Aug 13 09:24:19 2007 +0200 +++ b/man/widget.texi Mon Aug 13 09:25:29 2007 +0200 @@ -1,6 +1,6 @@ \input texinfo.tex -@c $Id: widget.texi,v 1.11 1997/04/05 18:08:23 steve Exp $ +@c $Id: widget.texi,v 1.12 1997/04/10 05:56:22 steve Exp $ @c %**start of header @setfilename widget @@ -15,7 +15,7 @@ @comment node-name, next, previous, up @top The Emacs Widget Library -Version: 1.69 +Version: 1.74 @menu * Introduction:: @@ -643,6 +643,18 @@ property. The value should be a string, which will be inserted in the buffer. +The following extra properties are recognized. + +@table @code +@item :text-format +The format string used when the push button cannot be displayed +graphically. There are two escapes, @code{%s}, which must be present +exactly once, will be substituted with the tag, and @code{%%} will be +substituted with a singe @samp{%}. +@end table + +By default the tag will be shown in brackets. + @node editable-field, text, push-button, Basic Types @comment node-name, next, previous, up @subsection The @code{editable-field} Widget diff -r d101af7320b8 -r cca96a509cfe msdos/ChangeLog --- a/msdos/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -Thu Jul 14 19:53:46 1994 Morten Welinder (terra@diku.dk) - - * sed2.inp (HAVE_STRERROR): Define. - -Fri Jul 8 16:19:02 1994 Morten Welinder (terra@diku.dk) - - * sed1.inp, sed2.inp: Use "m/intel386" instead of "m/dos386.h". - -Wed Jun 1 20:02:54 1994 Morten Welinder (terra@diku.dk) - - * sed4.inp: New file for configuring src/paths.h. - -Mon May 30 04:33:36 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu) - - * Version 19.25 released. - -Sun May 22 17:12:14 1994 Morten Welinder (terra@diku.dk) - - * sed1.inp: Adding dos-fns.elc to the set of lisp files was moved - to src/makefile.in.in. - -Fri May 20 20:32:07 1994 Morten Welinder (terra@tyr.diku.dk) - - * sed2.inp: Reflect change from CONFIGURATION to EMACS_CONFIGURATION. - Also set it to correct three-part value. - -Mon May 16 19:47:53 1994 Morten Welinder (terra@tyr.diku.dk) - - * Version 19.23 released. - - * sed1.inp: Don't use `+' in regexps as different stream - editors interpret them differently. Use `*' instead. - -Thu May 12 16:06:34 1994 Morten Welinder (terra@diku.dk) - - * mainmake (install): Set the minimum stack (for running under - DPMI) to 512K. Avoid using wildcard for matching one file. - -Sun May 8 07:35:11 1994 Morten Welinder (terra@diku.dk) - - * sed3.inp: Don't pass version to [ce]tags. - -Sat Apr 30 20:35:43 1994 Morten Welinder (terra@diku.dk) - - * sed1.inp: don't comment out the inc-vers run as that - does not exist anymore. - Don't reset DEBUG_MOLE as that no longer is used. - Identify the file being patched as src/... - * sed2.inp: Identify the file being patched as src/... - * sed3.inp: We don't have to have the version number in here - anymore. Instead we patch the way it is passed from make to - the C compiler. - -Fri Apr 29 00:38:09 1994 Morten Welinder (terra@diku.dk) - - * sed1.inp: Set CFLAGS=-O2, not -g. Handle the new - M_FILE, S_FILE, and SET_MAKE defines. Get rid of ^Ms. - - * sed2.inp: We have bcmp. Configuration is "msdos". - Get rid of ^Ms. - - * sed3.inp: Set CFLAGS=-O2, not -g. Correct for - new configuration regarding utilities not to compile. - Fix version number. Get rid of ^Ms. - -Sat Jan 8 00:34:24 1994 Morten Welinder (terra@diku.dk) - - * sed3.inp: improve make-compatibility by not using drive - specifications and by not specifying an explicit shell. - -Fri Jan 7 14:51:47 1994 Morten Welinder (terra@diku.dk) - - * sed1.inp: Incorporate the actions of patch1. - * patch1: File deleted. - -Wed Jan 5 12:11:01 1993 Morten Welinder (terra@diku.dk) - - * mainmake: New file, makefile for the main directory. - - * patch1: New file. Context diff to turn src/makefile.in into - a msdos version called makefile. - - * emacs.pif: New file, program information file for Emacs under - Windows. (This file contains non-printable characters.) - - * emacs.ico: New file, icon for Emacs under Windows. It's so ugly - that someone is bound to create a better. Mail uuencoded icons - to terra@diku.dk, but be prepared to sign a copyright disclaimer. - (This file contains non-printable characters.) - - * sed3.inp: New file for changing lib-src/makefile.in into - lib-src/makefile. - - * sed2.inp: New file for changing src/config.h-in into src/config.h - - * sed1.inp: New file for changing src/makefile.in.in into src/makefile diff -r d101af7320b8 -r cca96a509cfe msdos/emacs.ico Binary file msdos/emacs.ico has changed diff -r d101af7320b8 -r cca96a509cfe msdos/emacs.pif Binary file msdos/emacs.pif has changed diff -r d101af7320b8 -r cca96a509cfe msdos/mainmake --- a/msdos/mainmake Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -# make all to compile and build Emacs. -# make install to install it. -# make TAGS to update tags tables. -# -# make clean or make mostlyclean -# Delete all files from the current directory that are normally -# created by building the program. Don't delete the files that -# record the configuration. Also preserve files that could be made -# by building, but normally aren't because the distribution comes -# with them. -# -# Delete `.dvi' files here if they are not part of the distribution. -# -# make distclean -# Delete all files from the current directory that are created by -# configuring or building the program. If you have unpacked the -# source and built the program without creating any other files, -# `make distclean' should leave only the files that were in the -# distribution. -# -# make realclean -# Delete everything from the current directory that can be -# reconstructed with this Makefile. This typically includes -# everything deleted by distclean, plus more: C source files -# produced by Bison, tags tables, info files, and so on. -# -# make extraclean -# Still more severe - delete backup and autosave files, too. - -all: lib-src src - -lib-src: FRC - cd lib-src - $(MAKE) - cd .. - -src: FRC - cd src - $(MAKE) - cd .. - -install: all - -md bin - cd lib-src - coff2exe hexl - coff2exe etags - coff2exe ctags - coff2exe b2m - mv -f *.exe ../bin/ - cd .. - cd src - coff2exe emacs - stubedit emacs.exe minstack=512k - mv -f emacs.exe ../bin/ - cd .. - -FRC: - -TAGS tags: lib-src - cd src - go32 ../lib-src/etags *.[ch] ../lisp/*.el ../lisp/term/*.el - cd .. - -check: - @echo "We don't have any tests for GNU Emacs yet." diff -r d101af7320b8 -r cca96a509cfe msdos/sed1.inp --- a/msdos/sed1.inp Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -sed1.inp------------------------------------------------------------- -# Configuration script for src/makefile -# ---------------------------------------------------------------------- -s/^#.*// -s/^[ \f\t][ \f\t]*$// -s/^ / / -/^obj=/s!$! dosfns.o msdos.o! -s/\.h\.in/.h-in/ -s!^ \./temacs! go32 temacs! -s!/bin/sh!command.com! -/^MAKE *=/s/^/# / -/^SHELL *=/s/^/# / -/^srcdir *=/s/@[^@\n]*@/./ -/^VPATH *=/s/@[^@\n]*@/./ -/^CC *=/s/@[^@\n]*@/gcc/ -/^CPP *=/s/@[^@\n]*@/gcc -e/ -/^CFLAGS *=/s/@[^@\n]*@/-O2 -g/ -/^LN_S *=/s/@[^@\n]*@/ln -s/ -/^M_FILE *=/s!@[^@\n]*@!m/intel386.h! -/^S_FILE *=/s!@[^@\n]*@!s/msdos.h! -/^@SET_MAKE@$/s/@SET_MAKE@// -/^.\${libsrc}make-doc/s!>.*$!! -/^.\${libsrc}make-docfile/s!make-docfile!make-docfile -o ../etc/DOC! -/^.\${libsrc}make-docfile/s/\$/go32 $/ -/^[ ]*$/d diff -r d101af7320b8 -r cca96a509cfe msdos/sed2.inp --- a/msdos/sed2.inp Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -sed2.inp------------------------------------------------------------- -# Configuration script for src/config.h -# ---------------------------------------------------------------------- -/^#undef LISP_FLOAT_TYPE *$/s/undef/define/ -/^#undef GNU_MALLOC *$/s/undef/define/ -/^#undef REL_ALLOC *$/s/undef/define/ -/^#undef HAVE_SYS_TIMEB_H *$/s/undef/define/ -/^#undef HAVE_SYS_TIME_H *$/s/undef/define/ -# /^#undef HAVE_UNISTD_H *$/s/undef/define/ -/^#undef HAVE_GETTIMEOFDAY *$/s/undef/define/ -/^#undef HAVE_GETHOSTNAME *$/s/undef/define/ -/^#undef HAVE_DUP2 *$/s/undef/define/ -/^#undef HAVE_TM_ZONE *$/s/undef/define/ -/^#undef TM_IN_SYS_TIME *$/s/undef/define/ -/^#undef TIME_WITH_SYS_TIME *$/s/undef/define/ -/^#undef HAVE_RENAME *$/s/undef/define/ -/^#undef HAVE_CLOSEDIR *$/s/undef/define/ -/^#undef HAVE_RANDOM *$/s/undef/define/ -/^#undef HAVE_MKDIR *$/s/undef/define/ -/^#undef HAVE_RMDIR *$/s/undef/define/ -/^#undef HAVE_BCMP *$/s/undef/define/ -/^#undef HAVE_BCOPY *$/s/undef/define/ -/^#undef HAVE_FREXP *$/s/undef/define/ -/^#undef HAVE_FTIME *$/s/undef/define/ -/^#undef HAVE_STRERROR *$/s/undef/define/ -s/^#define USER_FULL_NAME .*$/#define USER_FULL_NAME (getenv ("NAME"))/ -s/^#undef STACK_DIRECTION *$/#define STACK_DIRECTION -1/ -s/^#undef EMACS_CONFIGURATION *$/#define EMACS_CONFIGURATION "i386-unknown-msdos"/ -s!^#undef config_opsysfile *$!#define config_opsysfile "s/msdos.h"! -s!^#undef config_machfile *$!#define config_machfile "m/intel386.h"! diff -r d101af7320b8 -r cca96a509cfe msdos/sed3.inp --- a/msdos/sed3.inp Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -sed3.inp------------------------------------------------------------- -# Configuration script for lib-src/makefile -# ---------------------------------------------------------------------- -/^# DIST: /d -/^SHELL *=/s/^/# / -/^CC *=/s/=.*$/=gcc/ -# Actually, here we should patch in the exact version number, but only -# [ce]tags uses it. Don't pass it. This is more update-resistant. -/-DVERSION=/s/-DVERSION="\\"\${version}\\""// -/^configname *=/s/=.*$/=msdos/ -/^archlibdir *=/s!=.*$!=/emacs/bin! -/^bindir *=/s!=.*$!=/emacs/bin! -/^libdir *=/s!=.*$!=/emacs/bin! -/^srcdir *=/s!=.*$!=.! -/^VPATH *=/s!=.*$!=.! -/^CFLAGS *=/s!=.*$!=-O2 -g! -/^C_SWITCH_SYSTEM *=/s!=.*$!=-DMSDOS! -/^LOADLIBES *=/s!=.*$!=! -/^ALLOCA *=/s!=.*$!=alloca.o! -/^INSTALLABLES/s/emacsclient *// -s!^ \./! go32 ./! -/^UTILITIES=/s/ wakeup// -/^UTILITIES=/s/ movemail// -/^UTILITIES=/s/ emacsserver// -/^UTILITIES=/s/ timer// diff -r d101af7320b8 -r cca96a509cfe msdos/sed4.inp --- a/msdos/sed4.inp Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -# -sed4.inp------------------------------------------------------------- -# Configuration script for src/paths.h -# ---------------------------------------------------------------------- -/^#define *PATH_LOADSEARCH/s/".*"/rootrelativepath ("lisp")/ -/^#define *PATH_DATA/s/".*"/rootrelativepath ("etc")/ -/^#define *PATH_DOC/s/".*"/rootrelativepath ("etc")/ -/^#define *PATH_INFO/s/".*"/rootrelativepath ("info")/ diff -r d101af7320b8 -r cca96a509cfe src/ChangeLog --- a/src/ChangeLog Mon Aug 13 09:24:19 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 09:25:29 2007 +0200 @@ -1,3 +1,83 @@ +Mon Apr 7 18:12:26 1997 David Moore + + * xmu.c: Renamed local `initialized' variable to `hex_initialized' + and don't assign to static, as some compilers crash. + (initHexTable): Use it. + (XmuReadBitmapData): Use it. + +Sun Apr 6 18:03:47 1997 David Moore + + * fileio.c (Fexpand_file_name): Clean up GC protection. + + * dired.c (Fdirectory_files): Clean up GC protection. + + * insdel.c (signal_after_change): Don't run after_change_functions + on special Vprin1_to_string_buffer. + (signal_before_change): Ditto for before_change_functions. + +Fri Apr 4 14:41:17 1997 David Moore + + * buffer.c (Fkill_buffer): Don't kill special + Vprin1_to_string_buffer. + +Mon Apr 7 19:13:40 1997 Steven L Baur + + * Makefile.in.in (xemacs-version.h): Added to rename main_1 to + something reflecting the XEmacs version in use (for lusers + reporting crashes who forget to include the version number). + + * toolbar.c (specifier_vars_of_toolbar): Strip HAVE_NEXTSTEP. + + * sound.c: Strip HAVE_NEXTSTEP. + + * redisplay.c (init_redisplay): Strip HAVE_NEXTSTEP. + + * faces.c: Strip HAVE_NEXTSTEP. + (update_EmacsFrame): Ditto. + + * events.c (event_equal): Strip HAVE_NEXTSTEP. + (event_hash): Ditto. + (format_event_object): Ditto. + + * event-stream.c (init_event_stream): Strip HAVE_NEXTSTEP. + + * emacs.c (main_1): Strip HAVE_NEXTSTEP. + Attempt hack to change name of main_1 to something reflecting the + current version for lusers who don't include version numbers with + stack backtraces. + + * device.c: Strip HAVE_NEXTSTEP. + + * console.c (Fconsole_type): Remove reference to unimplemented ns + windows type. + +Sun Apr 6 08:08:33 1997 Steven L Baur + + * frame.h: Strip NeXTStep stuff. + + * device.h: Strip NeXTStep stuff. + + * console.h: More NeXTStep trimming. + + * console-x.h: Strip Epoch stuff. + + * symsinit.h (init_sunpro): Strip vms/Epoch stuff. + + * events.h (union magic_data): Strip NeXTStep stuff. + + * console.h: Strip NeXTStep stuff. + + * config.h.in: Strip unimplemented NeXTStep/Epoch stuff out. + + * Makefile.in.in: Remove unused NeXTStep support. It's all in the + cvs attic if someone wishes to revive it. + (epoch.o): Remove last vestiges of non-existent epoch support. + +Sat Apr 5 17:16:49 1997 Steven L Baur + + * fns.c: Correct DOC string to not equate integers and + characters. + Thu Apr 3 08:01:50 1997 Steve Carney * s/decosf4.0-static.h: New file. diff -r d101af7320b8 -r cca96a509cfe src/Makefile.in.in --- a/src/Makefile.in.in Mon Aug 13 09:24:19 2007 +0200 +++ b/src/Makefile.in.in Mon Aug 13 09:25:29 2007 +0200 @@ -465,12 +465,6 @@ LD_SWITCH_X_SYSTEM LD_SWITCH_MACHINE \ -L. $(LIBX11_LDFLAGS) ENERGIZE_LDFLAGS XILDOFF NO_GNU_LINKER -#ifdef HAVE_NEXTSTEP -.SUFFIXES: .m -.m.o: - $(CC) -c $(ALL_CFLAGS) $< -#endif - .c.o: $(CC) -c $(ALL_CFLAGS) $< @@ -541,52 +535,6 @@ #define XMU_OBJS xmu.o #endif -#ifdef EPOCH -#define EPOCH_OBJS epoch.o -#else -#define EPOCH_OBJS -#endif - -#ifdef MULE - -/* We ignore mule-mcpath.o for the moment. */ - -# ifdef HAVE_CANNA -# define CANNA_OBJS mule-canna.o -# define CANNA_OBJ_SRC ${muledirfromsrc}/mule-canna.c -# define LIB_CANNA -lcanna -lRKC -# else -# define CANNA_OBJS -# define CANNA_OBJ_SRC -# define LIB_CANNA -# endif -# ifdef HAVE_WNN -# define WNN_OBJS mule-wnnfns.o -# define WNN_OBJ_SRC ${muledirfromsrc}/mule-wnnfns.c -# define LIB_WNN -lwnn -# else -# define WNN_OBJS -# define WNN_OBJ_SRC -# define LIB_WNN -# endif -/* Chuck says that you have to have at least one specified actual - object file per line. */ -mule_objs= mule.o mule-ccl.o CANNA_OBJS \ - WNN_OBJS mule-charset.o mule-coding.o -mule_obj_src= ${muledirfromsrc}/mule.c \ - ${muledirfromsrc}/mule-ccl.c CANNA_OBJ_SRC \ - WNN_OBJ_SRC ${muledirfromsrc}/mule-charset.c \ - ${muledirfromsrc}/mule-coding.c - -#else /* not MULE */ - -mule_objs= -mule_obj_src= -#define LIB_CANNA -#define LIB_WNN - -#endif /* not MULE */ - /* LWLIBSRCDIR is defined above regardless of X being used or not. This avoids having to conditionalize the dependencies on lwlib.h */ LWLIBBUILDDIR = $(dot)$(dot)/lwlib @@ -656,36 +604,50 @@ #else # define XOBJS # define XMU_OBJS -# define EPOCH_OBJS + #endif /* HAVE_X_WINDOWS */ -#ifdef HAVE_NEXTSTEP -#ifdef HAVE_TOOLBARS -#define TOOLBAR_NS_OBJS toolbar-ns.o -#else -#define TOOLBAR_NS_OBJS -#endif -#ifdef HAVE_MENUBARS -#define MENUBAR_NS_OBJS menubar-ns.o -#else -#define MENUBAR_NS_OBJS -#endif -#ifdef HAVE_SCROLLBARS -#define SCROLLBAR_NS_OBJS scrollbar-ns.o -#else -#define SCROLLBAR_NS_OBJS -#endif -#ifdef HAVE_DIALOGS -#define DIALOG_NS_OBJS dialog-ns.o -#else -#define DIALOG_NS_OBJS -#endif -#define NSOBJS console-ns.o device-ns.o DIALOG_NS_OBJS event-ns.o frame-ns.o \ - glyphs-ns.o MENUBAR_NS_OBJS nsselect.o objects-ns.o \ - redisplay-ns.o SCROLLBAR_NS_OBJS TOOLBAR_NS_OBJS -#else -# define NSOBJS -#endif /* HAVE_NEXTSTEP */ +/* We should be able to deal with Canna and Wnn in tty mode once MULE is */ +/* ported to tty, right? */ +#ifdef MULE + +/* We ignore mule-mcpath.o for the moment. */ + +# ifdef HAVE_CANNA +# define CANNA_OBJS mule-canna.o +# define CANNA_OBJ_SRC ${muledirfromsrc}/mule-canna.c +# define LIB_CANNA -lcanna -lRKC +# else +# define CANNA_OBJS +# define CANNA_OBJ_SRC +# define LIB_CANNA +# endif +# ifdef HAVE_WNN +# define WNN_OBJS mule-wnnfns.o +# define WNN_OBJ_SRC ${muledirfromsrc}/mule-wnnfns.c +# define LIB_WNN -lwnn +# else +# define WNN_OBJS +# define WNN_OBJ_SRC +# define LIB_WNN +# endif +/* Chuck says that you have to have at least one specified actual + object file per line. */ +mule_objs= mule.o mule-ccl.o CANNA_OBJS \ + WNN_OBJS mule-charset.o mule-coding.o +mule_obj_src= ${muledirfromsrc}/mule.c \ + ${muledirfromsrc}/mule-ccl.c CANNA_OBJ_SRC \ + WNN_OBJ_SRC ${muledirfromsrc}/mule-charset.c \ + ${muledirfromsrc}/mule-coding.c + +#else /* not MULE */ + +mule_objs= +mule_obj_src= +#define LIB_CANNA +#define LIB_WNN + +#endif /* not MULE */ #ifndef ORDINARY_LINK /* Fix linking if compiled with GCC. */ @@ -905,7 +867,7 @@ cmds.o console.o console-stream.o \ data.o DATABASE_OBJS DEBUG_OBJS device.o DIALOG_OBJS dired.o doc.o \ doprnt.o dynarr.o \ - editfns.o elhash.o emacs.o ENERGIZE_OBJS EPOCH_OBJS eval.o events.o \ + editfns.o elhash.o emacs.o ENERGIZE_OBJS eval.o events.o \ event-stream.o EVENT_UNIXOID_OBJS extents.o \ faces.o fileio.o filelock.o filemode.o floatfns.o fns.o font-lock.o \ frame.o \ @@ -915,7 +877,7 @@ keymap.o $(RTC_PATCH_O) \ lread.o lstream.o \ macros.o marker.o md5.o MENUBAR_OBJS minibuf.o MOCKLISPOBJS \ - NAS_OBJS NSOBJS \ + NAS_OBJS \ objects.o opaque.o \ print.o process.o profile.o pure.o \ rangetab.o REALPATH_OBJS redisplay.o redisplay-output.o regex.o \ @@ -1085,15 +1047,8 @@ #define X11_LISP #endif -#ifdef HAVE_NEXTSTEP -/* lisp files preloaded if compiled with support for NeXTstep */ -#define NS_LISP -#else -#define NS_LISP -#endif - #ifdef HAVE_TTY -/* lisp files preloaded if compiled with support for NeXTstep */ +/* lisp files preloaded if compiled with support for tty */ #define TTY_LISP ${lispdir}term/tty-init.elc #else #define TTY_LISP @@ -1132,12 +1087,6 @@ #define NOMULE_LISP ${lispdir}prim/files-nomule.elc #endif -#ifdef EPOCH -#define EPOCH_LISP ${lispdir}epoch/epoch.elc -#else -#define EPOCH_LISP -#endif - #ifdef ENERGIZE /* Lisp files preloaded if compiled with support for Energize */ #define ENERGIZE_LISP \ @@ -1270,7 +1219,7 @@ ${lispdir}packages/vc-hooks.elc \ ${lispdir}prim/replace.elc ${lispdir}prim/specifier.elc \ ${lispdir}modes/auto-show.elc SUNPRO_LISP TTY_LISP \ - ${lispdir}bytecomp/bytecomp-runtime.elc FLOAT_LISP EPOCH_LISP \ + ${lispdir}bytecomp/bytecomp-runtime.elc FLOAT_LISP \ ${lispdir}prim/itimer.elc ${lispdir}prim/itimer-autosave.elc \ ${lispdir}ediff/ediff-hook.elc \ ${lispdir}custom/widget.elc \ @@ -1278,7 +1227,7 @@ ${lispdir}packages/fontl-hooks.elc SCROLLBAR_LISP \ ${lispdir}prim/buffer.elc MENUBAR_LISP \ ${lispdir}packages/buff-menu.elc DIALOG_LISP MULE_LISP NOMULE_LISP \ - ${lispdir}modes/abbrev.elc X11_LISP NS_LISP ENERGIZE_LISP TOOLTALK_LISP + ${lispdir}modes/abbrev.elc X11_LISP ENERGIZE_LISP TOOLTALK_LISP /* Other Lisp files that are not dumped out but where it is convenient (or required?) for them to be byte-compiled early, before xemacs is @@ -1639,6 +1588,13 @@ @echo "Consult the file \`INSTALL' for instructions for building Emacs." exit 1 +/* Cover your eyes, please */ +xemacs-version.h: ${lispdir}version.el + @echo "#define main_1 xemacs_`grep emacs-version ${lispdir}version.el | sed 's/.*\"\(.*\)\.\(.*\)\"/\1_\2/ \ +1q'`_`grep -i xemacs.*lucid.*beta ${lispdir}version.el | sed 's/.*\(beta[0-9]*\).*/\1/ \ +1q'`" > xemacs-version.h + + /* Some machines have alloca built-in. They should define HAVE_ALLOCA, or may just let alloca.s be used but generate no code. @@ -1747,7 +1703,7 @@ /**/# This is used in making a distribution. /**/# Do not use it on development directories! distclean: clean versionclean - rm -f config.h paths.h puresize_adjust.h Emacs.ad.h Makefile Makefile.in .pure + rm -f config.h paths.h puresize_adjust.h Emacs.ad.h Makefile Makefile.in .pure version.h realclean: distclean rm -f TAGS versionclean: @@ -1758,7 +1714,7 @@ /* The rule for the [sm] files has to be written a little funny to avoid looking like a C comment to CPP. */ SOURCES = *.[chm] *.pswm [sm]/?* COPYING paths.h.in Makefile.in.in \ - config.h.in README COPYING ChangeLog vms.pp-trans + config.h.in README COPYING ChangeLog unlock: chmod u+w $(SOURCES) @@ -2504,24 +2460,8 @@ emacs.o: sysfile.h emacs.o: systime.h emacs.o: systty.h +emacs.o: xemacs-version.h energize.o: config.h -epoch.o: blocktype.h -epoch.o: config.h -epoch.o: conslots.h -epoch.o: console-x.h -epoch.o: console.h -epoch.o: device.h -epoch.o: dynarr.h -epoch.o: events.h -epoch.o: frame.h -epoch.o: frameslots.h -epoch.o: objects-x.h -epoch.o: objects.h -epoch.o: scrollbar.h -epoch.o: specifier.h -epoch.o: systime.h -epoch.o: toolbar.h -epoch.o: xintrinsic.h eval.o: backtrace.h eval.o: blocktype.h eval.o: buffer.h @@ -3616,7 +3556,6 @@ vm-limit.o: config.h vm-limit.o: dynarr.h vm-limit.o: mem-limits.h -vmsproc.o: vmsproc.h window.o: blocktype.h window.o: buffer.h window.o: bufslots.h diff -r d101af7320b8 -r cca96a509cfe src/buffer.c --- a/src/buffer.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/buffer.c Mon Aug 13 09:25:29 2007 +0200 @@ -461,7 +461,7 @@ */ (filename)) { - /* This function can GC */ + /* This function can GC. GC checked 1997.04.06. */ REGISTER Lisp_Object tail, buf, tem; struct gcpro gcpro1; @@ -1245,6 +1245,10 @@ if (EQ (buf, Vecho_area_buffer)) return Qnil; + /* Or the special invisible internal prin1 buffer. */ + if (EQ (buf, Vprin1_to_string_buffer)) + return Qnil; + /* Query if the buffer is still modified. */ if (INTERACTIVE && !NILP (b->filename) && BUF_MODIFF (b) > BUF_SAVE_MODIFF (b)) @@ -2512,14 +2516,14 @@ DEFVAR_BUFFER_LOCAL ("buffer-file-coding-system", buffer_file_coding_system /* *Current coding system for the current buffer. -When the buffer is written out into a file, this coding system will -be used for the encoding. Automatically buffer-local when set in -any fashion. This is normally set automatically when a file is loaded -in based on the determined coding system of the file (assuming that -`buffer-file-coding-system-for-read' is set to `autodetect', which calls -for automatic determination of the file's coding system). Normally the -modeline indicates the current file coding system using its mnemonic -abbreviation. +When the buffer is written out into a file, this coding system will be +used for the encoding. Automatically buffer-local when set in any +fashion. This is normally set automatically when a file is loaded in +based on the determined coding system of the file (assuming that +`buffer-file-coding-system-for-read' is set to `automatic-conversion', +which calls for automatic determination of the file's coding system). +Normally the modeline indicates the current file coding system using +its mnemonic abbreviation. The default value for this variable (which is normally used for buffers without associated files) is also used when automatic diff -r d101af7320b8 -r cca96a509cfe src/callproc.c --- a/src/callproc.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/callproc.c Mon Aug 13 09:25:29 2007 +0200 @@ -546,7 +546,7 @@ instream = make_decoding_input_stream (XLSTREAM (instream), - Fget_coding_system (Vprocess_input_coding_system)); + Fget_coding_system (Vcoding_system_for_read)); Lstream_set_character_mode (XLSTREAM (instream)); #endif /* MULE */ GCPRO1 (instream); diff -r d101af7320b8 -r cca96a509cfe src/config.h.in --- a/src/config.h.in Mon Aug 13 09:24:19 2007 +0200 +++ b/src/config.h.in Mon Aug 13 09:25:29 2007 +0200 @@ -58,11 +58,8 @@ #endif #endif -/* Do you have the the NeXTstep window system? */ -#undef HAVE_NEXTSTEP - /* Define HAVE_WINDOW_SYSTEM if any windowing system is available. */ -#if defined (HAVE_X_WINDOWS) || defined (HAVE_NEXTSTEP) +#if defined (HAVE_X_WINDOWS) /* || defined (HAVE_NEXTSTEP) */ #define HAVE_WINDOW_SYSTEM #endif @@ -296,10 +293,6 @@ /* Define HAVE_NCURSES_TERM_H if ncurses/term.h is present. */ #undef HAVE_NCURSES_TERM_H -/* Do you want to include extra functionality that was present in Epoch? - This code has received only limited testing. */ -#undef EPOCH - #define LOWTAGS /* Define USE_ASSERTIONS if you want the abort() to be changed to assert(). diff -r d101af7320b8 -r cca96a509cfe src/console-ns.h --- a/src/console-ns.h Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* Define NeXTstep specific console, device and frame object for XEmacs. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Written by Carl Edman. */ - -#ifndef _XEMACS_DEVICE_NS_H_ -#define _XEMACS_DEVICE_NS_H_ - -#ifdef HAVE_NEXTSTEP -#endif /* HAVE_NEXTSTEP */ - -#endif /* _XEMACS_DEVICE_NS_H_ */ diff -r d101af7320b8 -r cca96a509cfe src/console-x.h --- a/src/console-x.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/console-x.h Mon Aug 13 09:25:29 2007 +0200 @@ -376,12 +376,6 @@ #endif /* XIM_XLIB */ #endif /* HAVE_XIM */ -/* This needs to go in an include file that's included by inline.c - in order for the error-checking functions to get defined. */ -#ifdef EPOCH -DECLARE_LRECORD (x_resource, struct Lisp_X_Resource); -#endif - /* Variables associated with the X display frame this emacs is using. */ extern XtAppContext Xt_app_con; @@ -505,11 +499,6 @@ #endif /* XIM_XLIB */ #endif /* HAVE_XIM */ -#ifdef EPOCH -extern Lisp_Object Qx_property_change, Qx_client_message, Qx_map, Qx_unmap; -extern Lisp_Object Vepoch_event, Vepoch_event_handler; -#endif - extern int in_resource_setting; extern int in_specifier_change_function; diff -r d101af7320b8 -r cca96a509cfe src/console.c --- a/src/console.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/console.c Mon Aug 13 09:25:29 2007 +0200 @@ -256,11 +256,6 @@ Vwindow_system = Qx; else #endif -#ifdef HAVE_NEXTSTEP - if (CONSOLE_NS_P (XCONSOLE (console))) - Vwindow_system = Qns; - else -#endif Vwindow_system = Qnil; } @@ -315,7 +310,6 @@ Return the type of the specified console (e.g. `x' or `tty'). Value is `tty' for a tty console (a character-only terminal), `x' for a console that is an X display, -`ns' for a console that is a NeXTstep connection (not yet implemented), `win32' for a console that is a Windows or Windows NT connection (not yet implemented), `pc' for a console that is a direct-write MS-DOS connection (not yet diff -r d101af7320b8 -r cca96a509cfe src/console.h --- a/src/console.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/console.h Mon Aug 13 09:25:29 2007 +0200 @@ -437,11 +437,6 @@ #else #define CONSOLE_TYPESYM_X_P(typesym) 0 #endif -#ifdef HAVE_NEXTSTEP -#define CONSOLE_TYPESYM_NS_P(typesym) EQ (typesym, Qns) -#else -#define CONSOLE_TYPESYM_NS_P(typesym) 0 -#endif #ifdef HAVE_TTY #define CONSOLE_TYPESYM_TTY_P(typesym) EQ (typesym, Qtty) #else @@ -450,16 +445,12 @@ #define CONSOLE_TYPESYM_STREAM_P(typesym) EQ (typesym, Qstream) #define CONSOLE_TYPESYM_WIN_P(typesym) \ - (CONSOLE_TYPESYM_X_P (typesym) || CONSOLE_TYPESYM_NS_P (typesym)) + (CONSOLE_TYPESYM_X_P (typesym)) #define CONSOLE_X_P(con) CONSOLE_TYPESYM_X_P (CONSOLE_TYPE (con)) #define CHECK_X_CONSOLE(z) CHECK_CONSOLE_TYPE (z, x) #define CONCHECK_X_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, x) -#define CONSOLE_NS_P(con) CONSOLE_TYPESYM_NS_P (CONSOLE_TYPE (con)) -#define CHECK_NS_CONSOLE(z) CHECK_CONSOLE_TYPE (z, ns) -#define CONCHECK_NS_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, ns) - #define CONSOLE_TTY_P(con) CONSOLE_TYPESYM_TTY_P (CONSOLE_TYPE (con)) #define CHECK_TTY_CONSOLE(z) CHECK_CONSOLE_TYPE (z, tty) #define CONCHECK_TTY_CONSOLE(z) CONCHECK_CONSOLE_TYPE (z, tty) @@ -504,9 +495,6 @@ #ifdef HAVE_X_WINDOWS extern Lisp_Object Qx; #endif /* HAVE_X_WINDOWS */ -#ifdef HAVE_NEXTSTEP -extern Lisp_Object Qns; -#endif /* HAVE_NEXTSTEP */ int valid_console_type_p (Lisp_Object type); diff -r d101af7320b8 -r cca96a509cfe src/device-ns.m --- a/src/device-ns.m Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* Device functions for NeXTstep. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Author: Carl Edman */ diff -r d101af7320b8 -r cca96a509cfe src/device.c --- a/src/device.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/device.c Mon Aug 13 09:25:29 2007 +0200 @@ -362,9 +362,6 @@ #ifdef HAVE_X_WINDOWS extern Lisp_Object Vdefault_x_device; #endif -#ifdef HAVE_NEXTSTEP -extern Lisp_Object Vdefault_ns_device; -#endif #ifdef HAVE_X_WINDOWS diff -r d101af7320b8 -r cca96a509cfe src/device.h --- a/src/device.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/device.h Mon Aug 13 09:25:29 2007 +0200 @@ -270,10 +270,6 @@ #define CHECK_X_DEVICE(z) CHECK_DEVICE_TYPE (z, x) #define CONCHECK_X_DEVICE(z) CONCHECK_DEVICE_TYPE (z, x) -#define DEVICE_NS_P(dev) CONSOLE_TYPESYM_NS_P (DEVICE_TYPE (dev)) -#define CHECK_NS_DEVICE(z) CHECK_DEVICE_TYPE (z, ns) -#define CONCHECK_NS_DEVICE(z) CONCHECK_DEVICE_TYPE (z, ns) - #define DEVICE_TTY_P(dev) CONSOLE_TYPESYM_TTY_P (DEVICE_TYPE (dev)) #define CHECK_TTY_DEVICE(z) CHECK_DEVICE_TYPE (z, tty) #define CONCHECK_TTY_DEVICE(z) CONCHECK_DEVICE_TYPE (z, tty) diff -r d101af7320b8 -r cca96a509cfe src/dired.c --- a/src/dired.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/dired.c Mon Aug 13 09:25:29 2007 +0200 @@ -53,7 +53,7 @@ */ (dirname, full, match, nosort, files_only)) { - /* This function can GC */ + /* This function can GC. GC checked 1997.04.06. */ DIR *d; Bytecount dirname_length; Lisp_Object list, name, dirfilename = Qnil; @@ -66,10 +66,8 @@ char slashfilename[MAXNAMLEN+2]; char *filename = slashfilename; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; - - /* #### Needs more gcpro's */ - GCPRO5 (dirname, match, files_only, tail_cons, dirfilename); + struct gcpro gcpro1, gcpro2, gcpro3; + GCPRO3 (dirname, dirfilename, tail_cons); /* If the file name has special constructs in it, call the corresponding file handler. */ @@ -85,6 +83,8 @@ nosort); } + /* #### why do we do Fexpand_file_name after file handlers here, + but earlier everywhere else? */ dirname = Fexpand_file_name (dirname, Qnil); dirfilename = Fdirectory_file_name (dirname); @@ -225,7 +225,7 @@ */ (file, dirname)) { - /* This function can GC */ + /* This function can GC. GC checked 1996.04.06. */ Lisp_Object handler; /* If the directory name has special constructs in it, @@ -254,7 +254,7 @@ */ (file, dirname)) { - /* This function can GC */ + /* This function can GC. GC checked 1997.06.04. */ Lisp_Object handler; struct gcpro gcpro1; @@ -619,7 +619,7 @@ */ (filename)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.06.04. */ Lisp_Object values[12]; Lisp_Object dirname = Qnil; struct stat s; @@ -627,20 +627,23 @@ Lisp_Object handler; struct gcpro gcpro1, gcpro2; - GCPRO1 (filename); + GCPRO2 (filename, dirname); filename = Fexpand_file_name (filename, Qnil); /* If the file name has special constructs in it, call the corresponding file handler. */ handler = Ffind_file_name_handler (filename, Qfile_attributes); - UNGCPRO; if (!NILP (handler)) - return call2 (handler, Qfile_attributes, filename); + { + UNGCPRO; + return call2 (handler, Qfile_attributes, filename); + } if (lstat ((char *) XSTRING_DATA (filename), &s) < 0) - return Qnil; - - GCPRO2 (filename, dirname); + { + UNGCPRO; + return Qnil; + } #ifdef BSD4_2 dirname = Ffile_name_directory (filename); diff -r d101af7320b8 -r cca96a509cfe src/emacs.c --- a/src/emacs.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/emacs.c Mon Aug 13 09:25:29 2007 +0200 @@ -43,6 +43,9 @@ #include "sysfile.h" #include "systime.h" +/* Hack to get version number in stack backtraces */ +#include "xemacs-version.h" + #if defined (HAVE_LOCALE_H) && \ (defined (I18N2) || defined (I18N3) || defined (I18N4)) #include @@ -690,15 +693,6 @@ display_use = "x"; #endif /* HAVE_X_WINDOWS */ - -#ifdef HAVE_NEXTSTEP - if (argmatch (argv, argc, "-NXHost", 0, 6, 0, &skip_args) || - argmatch (argv, argc, "-MachLaunch", 0, 9, 0, &skip_args)) - { - display_arg = 1; - display_use = "ns"; - } -#endif /* HAVE_NEXTSTEP */ } #endif /* HAVE_WINDOW_SYSTEM */ @@ -875,20 +869,6 @@ #endif #endif /* HAVE_X_WINDOWS */ -#ifdef HAVE_NEXTSTEP - syms_of_device_ns (); - syms_of_frame_ns (); - syms_of_glyphs_ns (); - syms_of_objects_ns (); -#ifdef HAVE_MENUBARS - syms_of_menubar_ns (); -#endif - syms_of_nsselect (); -#ifdef HAVE_SCROLLBARS - syms_of_scrollbar_ns (); -#endif -#endif /* HAVE_NEXTSTEP */ - #ifdef MULE syms_of_mule (); syms_of_mule_ccl (); diff -r d101af7320b8 -r cca96a509cfe src/emacsfns.h --- a/src/emacsfns.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/emacsfns.h Mon Aug 13 09:25:29 2007 +0200 @@ -1166,7 +1166,7 @@ extern Lisp_Object Qall; extern Lisp_Object Qassoc; extern Lisp_Object Qat; -extern Lisp_Object Qautodetect; +extern Lisp_Object Qautomatic_conversion; extern Lisp_Object Qbad_variable; extern Lisp_Object Qbefore; extern Lisp_Object Qbinary; diff -r d101af7320b8 -r cca96a509cfe src/epoch.c --- a/src/epoch.c Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1366 +0,0 @@ -/* Epoch functionality. - Copyright (C) 1985-1995 Free Software Foundation, Inc. - Copyright (C) 1996 Ben Wing. - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -#include -#include "lisp.h" - -#include "console-x.h" -#include "objects-x.h" -#include "events.h" -#include "frame.h" - -Lisp_Object Qx_property_change, Qx_client_message, Qx_map, Qx_unmap; -Lisp_Object Vepoch_event, Vepoch_event_handler; - - -/************************************************************************/ -/* X resources */ -/************************************************************************/ - -Lisp_Object Qx_resource_live_p; - -#define XX_RESOURCE(x) XRECORD (x, x_resource, struct Lisp_X_Resource) -#define XSETX_RESOURCE(x, p) XSETRECORD (x, p, x_resource) -#define X_RESOURCEP(x) RECORDP (x, x_resource) -#define GC_X_RESOURCEP(x) GC_RECORDP (x, x_resource) -#define CHECK_X_RESOURCE(x) CHECK_RECORD (x, x_resource) - -#define X_RESOURCE_LIVE_P(xr) (DEVICE_LIVE_P (XDEVICE ((xr)->device))) -#define CHECK_LIVE_X_RESOURCE(x) \ - do { CHECK_X_RESOURCE (x); \ - if (!X_RESOURCE_LIVE_P (XX_RESOURCE (x))) \ - x = wrong_type_argument (Qx_resource_live_p, (x)); \ - } while (0) - -struct Lisp_X_Resource -{ - struct lcrecord_header header; - - XID xid; - Atom type; - Lisp_Object device; -}; - -Lisp_Object Qx_resourcep; -static Lisp_Object mark_x_resource (Lisp_Object, void (*) (Lisp_Object)); -static void print_x_resource (Lisp_Object, Lisp_Object, int); -static void finalize_x_resource (void *, int); -static int x_resource_equal (Lisp_Object o1, Lisp_Object o2, int depth); -static unsigned long x_resource_hash (Lisp_Object obj, int depth); -DEFINE_LRECORD_IMPLEMENTATION ("x-resource", x_resource, - mark_x_resource, print_x_resource, - finalize_x_resource, x_resource_equal, - x_resource_hash, struct Lisp_X_Resource); - -static Lisp_Object -mark_x_resource (Lisp_Object obj, void (*markobj) (Lisp_Object)) -{ - return XX_RESOURCE (obj)->device; -} - -static void -print_x_resource (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) -{ - char buf[100]; - Bufbyte *default_string = "Resource"; - Lisp_Object atom_symbol; - Lisp_Object device = XX_RESOURCE (obj)->device; - - if (print_readably) - { - if (!DEVICE_LIVE_P (XDEVICE (device))) - error ("printing unreadable object #"); - else - error ("printing unreadable object #", - (unsigned int) XX_RESOURCE (obj)->xid); - } - - if (!DEVICE_LIVE_P (XDEVICE (device))) - write_c_string ("#", printcharfun); - else - { - atom_symbol = x_atom_to_symbol (XDEVICE (device), - XX_RESOURCE (obj)->type); - sprintf (buf, "#",(unsigned int) XX_RESOURCE (obj)->xid); - write_c_string (buf, printcharfun); - } -} - -static void -finalize_x_resource (void *header, int for_disksave) -{ -} - -static int -x_resource_equal (Lisp_Object o1, Lisp_Object o2, int depth) -{ - return (XX_RESOURCE (o1)->xid == XX_RESOURCE (o2)->xid && - EQ (XX_RESOURCE (o1)->device, XX_RESOURCE (o2)->device)); -} - -static unsigned long -x_resource_hash (Lisp_Object obj, int depth) -{ - return HASH2 (XX_RESOURCE (obj)->xid, - internal_hash (XX_RESOURCE (obj)->device, depth)); -} - -/* - * Epoch equivalent: epoch::resourcep - */ -DEFUN ("x-resource-p", Fx_resource_p, 1, 1, 0, /* -Return non-nil if OBJECT is an X resource object. -*/ - (object)) -{ - return (X_RESOURCEP (object) ? Qt : Qnil); -} - -DEFUN ("x-resource-live-p", Fx_resource_live_p, 1, 1, 0, /* -Return non-nil if OBJECT is a live X resource object. -That means that the X resource's device is live. -*/ - (object)) -{ - return (X_RESOURCEP (object) && - X_RESOURCE_LIVE_P (XX_RESOURCE (object)) ? Qt : Qnil); -} - -DEFUN ("x-resource-device", Fx_resource_device, 1, 1, 0, /* -Return the device that OBJECT (an X resource object) exists on. -*/ - (object)) -{ - CHECK_LIVE_X_RESOURCE (object); - return XX_RESOURCE (object)->device; -} - -/* - * Epoch equivalent: epoch::set-resource-type -*/ -DEFUN ("set-x-resource-type", Fset_x_resource_type, 2, 2, 0, /* -Set the type of RESOURCE to TYPE. The new type must be an atom. -*/ - (resource, type)) -{ - CHECK_LIVE_X_RESOURCE (resource); - CHECK_LIVE_X_RESOURCE (type); - - if (XX_RESOURCE (type)->type != XA_ATOM) - error ("New type must be an atom"); - - XX_RESOURCE (resource)->type = XX_RESOURCE (type)->xid; - return resource; -} - -static Lisp_Object -make_x_resource (XID xid, Atom type, Lisp_Object device) -{ - struct Lisp_X_Resource *xr = - alloc_lcrecord (sizeof (struct Lisp_X_Resource), lrecord_x_resource); - Lisp_Object val; - - xr->xid = xid; - xr->type = type; - xr->device = device; - XSETX_RESOURCE (val, xr); - - return val; -} - -static Lisp_Object -get_symbol_or_string_as_symbol (Lisp_Object name) -{ - retry: - if (SYMBOLP (name)) - return name; - else if (STRINGP (name)) - return Fintern (name, Qnil); - else - { - signal_simple_continuable_error ("Must be symbol or string", - name); - goto retry; - } - return Qnil; /* not reached */ -} - -/* - * Epoch equivalent: epoch::intern-atom - */ -DEFUN ("x-intern-atom", Fx_intern_atom, 1, 2, 0, /* -Convert a string or symbol into an atom and return as an X resource. -Optional argument DEVICE specifies the display connection and defaults -to the selected device. -*/ - (name, device)) -{ - Atom atom; - struct device *d = decode_x_device (device); - - XSETDEVICE (device, d); - atom = symbol_to_x_atom (d, get_symbol_or_string_as_symbol (name), 0); - return make_x_resource (atom, XA_ATOM, device); -} - -/* - * Epoch equivalent: epoch::unintern-atom - */ -DEFUN ("x-atom-name", Fx_atom_name, 1, 1, 0, /* -Return the name of an X atom resource as a string. -*/ - (atom)) -{ - Lisp_Object val; - - CHECK_LIVE_X_RESOURCE (atom); - if (XX_RESOURCE (atom)->type != XA_ATOM) - signal_simple_error ("Resource is not an atom", atom); - - val = x_atom_to_symbol (XDEVICE (XX_RESOURCE (atom)->device), - XX_RESOURCE (atom)->xid); - if (NILP (val)) - return Qnil; - return Fsymbol_name (val); -} - -/* - * Epoch equivalent: epoch::string-to-resource - */ -DEFUN ("string-to-x-resource", Fstring_to_x_resource, 2, 3, 0, /* -Convert a numeric STRING to an X-RESOURCE. -STRING is assumed to represent a 32-bit numer value. X-RESOURCE must be -an X atom. Optional BASE argument should be a number between 2 and 36, -specifying the base for converting STRING. -*/ - (string, type, base)) -{ - XID xid; - struct Lisp_X_Resource *xr; - char *ptr; - int b; - - CHECK_STRING (string); - CHECK_LIVE_X_RESOURCE (type); - - if (NILP (base)) - b = 0; - else - { - CHECK_INT (base); - b = XINT (base); - check_int_range (b, 2, 36); - } - - if (XX_RESOURCE (type)->type != XA_ATOM) - error ("Resource must be an atom"); - xr = XX_RESOURCE (type); - - xid = (XID) strtol ((CONST char *) XSTRING_DATA (string), &ptr, b); - - return ((ptr == (char *) XSTRING_DATA (string)) - ? Qnil - : make_x_resource (xid, xr->xid, xr->device)); -} - -/* - * Epoch equivalent: epoch::resource-to-type - */ -DEFUN ("x-resource-to-type", Fx_resource_to_type, 1, 1, 0, /* -Return an x-resource of type ATOM whose value is the type of the argument -*/ - (resource)) -{ - struct Lisp_X_Resource *xr; - - CHECK_LIVE_X_RESOURCE (resource); - xr = XX_RESOURCE (resource); - - return make_x_resource (xr->type, XA_ATOM, xr->device); -} - -/* internal crap stolen from Epoch */ -static char LongToStringBuffer[33]; /* can't have statics inside functions! */ -static char * -long_to_string (unsigned long n, unsigned int base) -{ - char *digit = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - char *s = LongToStringBuffer + 32; /* at most 33 characters in binary */ - - *s = 0; /* terminate */ - while (n) /* something there */ - { - *--s = digit[n % base]; /* store bottom digit */ - n /= base; /* shift right */ - } - if (*s == 0) *--s = '0'; /* in case nothing was put in string */ - return s; -} - -/* - * Epoch equivalent: epoch::resource-to-string - */ -DEFUN ("x-resource-to-string", Fx_resource_to_string, 1, 2, 0, /* -Convert the xid of RESOURCE to a numeric string. -Optional BASE specifies the base for the conversion (2..36 inclusive) -*/ - (resource, base)) -{ - int cbase = 10; - - CHECK_LIVE_X_RESOURCE (resource); - if (!NILP (base)) - { - CHECK_INT (base); - cbase = XINT (base); - check_int_range (cbase, 2, 36); - } - - return build_string (long_to_string (XX_RESOURCE (resource)->xid, cbase)); -} - -/* - * Epoch equivalent: epoch::xid-of-frame - */ -DEFUN ("x-id-of-frame", Fx_id_of_frame, 0, 1, 0, /* -Return the window ID of FRAME as an x-resource. -This differs from `x-window-id' in that its return value is an -x-resource rather than a string. -*/ - (frame)) -{ - struct frame *f = decode_x_frame (frame); - - return make_x_resource (XtWindow (FRAME_X_SHELL_WIDGET (f)), XA_WINDOW, - FRAME_DEVICE (f)); -} - -/* Given a frame or ID X resource, return the X window and device - it refers to. If text_p is non-zero, the window returned corresponds - to the text widget of the frame rather than the shell widget. */ - -static void -epoch_get_window_and_device (Lisp_Object frame, Window *window, - Lisp_Object *device, int text_p) -{ - if (X_RESOURCEP (frame)) - { - CHECK_LIVE_X_RESOURCE (frame); - if (XX_RESOURCE (frame)->type != XA_WINDOW) - error ("Frame resource must be of type WINDOW"); - *window = XX_RESOURCE (frame)->xid; - *device = XX_RESOURCE (frame)->device; - } - else - { - struct frame *f = decode_x_frame (frame); - - XSETFRAME (frame, f); - if (text_p) - *window = XtWindow (FRAME_X_TEXT_WIDGET (f)); - else - *window = XX_RESOURCE (Fx_id_of_frame (frame))->xid; - *device = FRAME_DEVICE (f); - } - -} - -/* - * Epoch equivalent: epoch::query-tree -*/ -DEFUN ("x-query-tree", Fx_query_tree, 0, 1, 0, /* -Return the portion of the window tree adjacent to FRAME. -Return value is the list ( ROOT PARENT . CHILDREN ). The FRAME arg -can either be a frame object or an x-resource of type window. -*/ - (frame)) -{ - Window win; - Window root, parent, *children; - unsigned int count; - int retval; - Lisp_Object val; - Lisp_Object device; - - epoch_get_window_and_device (frame, &win, &device, 0); - - retval = - XQueryTree (DEVICE_X_DISPLAY (XDEVICE (device)), win, &root, &parent, - &children, &count); - - /* Thank you, X-Consortium. XQueryTree doesn't return Success like everyone - * else, it returns 1. (Success is defined to be 0 in the standard header - * files) - */ - if (!retval) return Qnil; - - val = Qnil; - while (count) - val = Fcons (make_x_resource (children[--count], XA_WINDOW, device), val); - - XFree (children); - - return Fcons (make_x_resource (root, XA_WINDOW, device), - Fcons ((parent - ? make_x_resource (parent, XA_WINDOW, device) - : Qnil), - val)); -} - -/* more internal crap stolen from Epoch */ - -static void -verify_vector_has_consistent_type (Lisp_Object vector) -{ - int i; /* vector index */ - XID rtype; /* X_resource type (if vector of - X_resources) */ - int length; /* vector length */ - struct Lisp_Vector *v = XVECTOR (vector); - Lisp_Object *element; - Lisp_Object sample; - Lisp_Object type_obj; /* base type of vector elements */ - Lisp_Object device; - - sample = v->contents[0]; - type_obj = sample; - if (X_RESOURCEP (sample)) - { - CHECK_LIVE_X_RESOURCE (sample); - rtype = XX_RESOURCE (sample)->type; - device = XX_RESOURCE (sample)->device; - } - length = v->size; - element = v->contents; - - for (i = 1; i < length; ++i, ++element) - { - QUIT; - if (X_RESOURCEP (type_obj)) - CHECK_LIVE_X_RESOURCE (type_obj); - if ((XTYPE (*element) != XTYPE (type_obj)) - || (LRECORDP (type_obj) && - (XRECORD_LHEADER (*element)->implementation != - XRECORD_LHEADER (type_obj)->implementation)) - || (X_RESOURCEP (type_obj) && - (rtype != XX_RESOURCE (*element)->type - || !EQ (device, XX_RESOURCE (*element)->device)))) - error ("Vector has inconsistent types"); - } -} - -static void -verify_list_has_consistent_type (Lisp_Object list) -{ - Lisp_Object type_obj; - XID rtype; /* X_resource type (if vector of - X_resources) */ - Lisp_Object temp = Fcar (list); - Lisp_Object device; - - type_obj = temp; - if (X_RESOURCEP (temp)) - { - CHECK_LIVE_X_RESOURCE (temp); - rtype = XX_RESOURCE (temp)->type; - device = XX_RESOURCE (temp)->device; - } - list = Fcdr (list); - - for ( ; !NILP (list) ; list = Fcdr (list)) - { - QUIT; - temp = Fcar (list); - if (X_RESOURCEP (temp)) - CHECK_LIVE_X_RESOURCE (temp); - if ((XTYPE (temp) != XTYPE (type_obj)) - || (LRECORDP (type_obj) && - (XRECORD_LHEADER (temp)->implementation != - XRECORD_LHEADER (type_obj)->implementation)) - || (X_RESOURCEP (type_obj) && - (rtype != XX_RESOURCE (temp)->type - || !EQ (device, XX_RESOURCE (temp)->device)))) - error ("List has inconsistent types"); - } -} - -#define BYTESIZE 8 -/* 16 bit types */ -typedef short int int16; -typedef short unsigned int uint16; - -/* the Calculate functions return allocated memory that must be free'd. - I tried to use alloca, but that fails. Sigh. -*/ -static void * -calculate_vector_property (Lisp_Object vector, unsigned long *count, - Atom *type, int *format) -{ - /* !!#### This function has not been Mule-ized */ - int length; - unsigned int size,tsize; - int i; - struct Lisp_Vector *v; - void *addr; - - v = XVECTOR (vector); - *count = length = v->size; - - switch (XTYPE (v->contents[0])) - { - case Lisp_Int: - *type = XA_INTEGER; - if (*format != 8 && *format != 16) *format = 32; - size = *format * length; - addr = (void *) xmalloc (size); - for ( i = 0 ; i < length ; ++i ) - switch (*format) - { - case 32 : - ((int *)addr)[i] = XINT (v->contents[i]); - break; - case 16 : - ((int16 *)addr)[i] = XINT (v->contents[i]); - break; - case 8 : - ((char *)addr)[i] = XINT (v->contents[i]); - break; - } - break; - - case Lisp_Record: - if (X_RESOURCEP (v->contents[0])) - { - CHECK_LIVE_X_RESOURCE (v->contents[0]); - size = BYTESIZE * sizeof (XID) * length; - *format = BYTESIZE * sizeof (XID); - *type = XX_RESOURCE (v->contents[0])->type; - addr = (void *) xmalloc (size); - for ( i = 0 ; i < length ; ++i ) - ( (XID *) addr) [i] = XX_RESOURCE (v->contents[i])->xid; - } - break; - - case Lisp_String: - *format = BYTESIZE * sizeof (char); - *type = XA_STRING; - for ( i=0, size=0 ; i < length ; ++i ) - size += (XSTRING_LENGTH (v->contents[i]) + - 1); /* include null */ - addr = (void *) xmalloc (size); - *count = size; - for ( i = 0 , size = 0 ; i < length ; ++i ) - { - tsize = XSTRING_LENGTH (v->contents[i]) + 1; - memmove (((char *) addr), XSTRING_DATA (v->contents[i]), - tsize); - size += tsize; - } - break; - - default: - error ("Invalid type for conversion"); - } - return addr; -} - -static void * -calculate_list_property (Lisp_Object list, unsigned long *count, - Atom *type, int *format) -{ - /* !!#### This function has not been Mule-ized */ - int length; - unsigned int size, tsize; - int i; - Lisp_Object tlist,temp; - void *addr; - - *count = length = XINT (Flength (list)); - - switch (XTYPE (Fcar (list))) - { - case Lisp_Int: - *type = XA_INTEGER; - if (*format != 8 && *format != 16) *format = 32; - size = *format * length; - addr = (void *) xmalloc (size); - for ( i = 0 ; i < length ; ++i, list = Fcdr (list)) - switch (*format) - { - case 32 : ((int *)addr)[i] = XINT (Fcar (list)); break; - case 16 : ((int16 *)addr)[i] = XINT (Fcar (list)); break; - case 8 : ((char *)addr)[i] = XINT (Fcar (list)); break; - } - break; - - case Lisp_Record: - if (X_RESOURCEP (Fcar (list))) - { - Lisp_Object car = Fcar (list); - CHECK_LIVE_X_RESOURCE (car); - size = BYTESIZE * sizeof (XID) * length; - *format = BYTESIZE * sizeof (XID); - *type = XX_RESOURCE (Fcar (list))->type; - addr = (void *) xmalloc (size); - for ( i = 0 ; i < length ; ++i, list = Fcdr (list)) - { - Lisp_Object carr = Fcar (list); - CHECK_LIVE_X_RESOURCE (carr); - ((XID *)addr)[i] = XX_RESOURCE (carr)->xid; - } - } - break; - - case Lisp_String: - *format = BYTESIZE * sizeof (char); - *type = XA_STRING; - for ( i=0, size=0 , tlist=list ; i < length ; ++i, tlist = Fcdr (tlist) ) - size += XSTRING_LENGTH (Fcar (tlist)) + 1; /* include null */ - addr = (void *) xmalloc (size); - *count = size; - for ( i=0, size=0, tlist=list ; i < length ; - ++i , tlist = Fcdr (tlist) ) - { - temp = Fcar (tlist); - tsize = XSTRING_LENGTH (temp) + 1; - memmove (((char *) addr), XSTRING_DATA (temp), tsize); - size += tsize; - } - break; - - default: - error ("Invalid type for conversion"); - } - return addr; -} - -/* Returns whether the conversion was successful or not */ -static int -convert_elisp_to_x (Lisp_Object value, void **addr, unsigned long *count, - Atom *type, int *format, int *free_storage) -{ - /* !!#### This function has not been Mule-ized */ - if (VECTORP (value)) - verify_vector_has_consistent_type (value); - else if (CONSP (value)) - verify_list_has_consistent_type (value); - - *free_storage = 0; - switch (XTYPE (value)) - { - case Lisp_String: - *format = BYTESIZE; - *type = XA_STRING; - *count = strlen ((CONST char *) XSTRING_DATA (value)) + 1; - *addr = (void *) XSTRING_DATA (value); - break; - - case Lisp_Int: - *type = XA_INTEGER; - *count = 1; - *free_storage = 1; - *addr = (void *) xmalloc (sizeof (int)); - /* This is ugly - - * we have to deal with the possibility of different formats - */ - switch (*format) - { - default : - case 32 : - *format = 32; - *((int *)(*addr)) = XINT (value); - break; - case 16 : - *((int16 *)(*addr)) = XINT (value); - break; - case 8 : - *((char *)(*addr)) = XINT (value); - break; - } - break; - - case Lisp_Record: - if (X_RESOURCEP (value)) - { - CHECK_LIVE_X_RESOURCE (value); - *format = sizeof (XID) * BYTESIZE; - *type = XX_RESOURCE (value)->type; - *count = 1; - *addr = (void *) & (XX_RESOURCE (value)->xid); - } - break; - - case Lisp_Cons: - *addr = calculate_list_property (value, count, type, format); - *free_storage = 1; /* above allocates storage */ - break; - - case Lisp_Vector: - *addr = calculate_vector_property (value, count, type, format); - *free_storage = 1; /* above allocates storage */ - break; - - default : - error ("Improper type for conversion"); - } - - return 1; -} - -static Lisp_Object -format_size_hints (XSizeHints *hints) -{ - Lisp_Object result; - struct Lisp_Vector *v; - - result = Fmake_vector (make_int (6), Qnil); - v = XVECTOR (result); - - /* ugly but straightforward - just step through the members and flags - * and stick in the ones that are there - */ - if (hints->flags & (PPosition|USPosition)) - v->contents[0] = Fcons (make_int (hints->x), make_int (hints->y)); - if (hints->flags & (PSize|USSize)) - v->contents[1] = Fcons (make_int (hints->width), - make_int (hints->height)); - if (hints->flags & PMinSize) - v->contents[2] = Fcons (make_int (hints->min_width), - make_int (hints->min_height)); - if (hints->flags & PMaxSize) - v->contents[3] = Fcons (make_int (hints->max_width), - make_int (hints->max_height)); - if (hints->flags & PResizeInc) - v->contents[4] = Fcons (make_int (hints->width_inc), - make_int (hints->height_inc)); - if (hints->flags & PAspect) - v->contents[5] = Fcons (make_int (hints->min_aspect.x), - Fcons (make_int (hints->min_aspect.y), - Fcons (make_int (hints->max_aspect.x), - make_int (hints->max_aspect.y)))); - - return result; -} - -static Lisp_Object -format_string_property (char *buffer, unsigned long count) -{ - /* !!#### This function has not been Mule-ized */ - Lisp_Object value = Qnil; /* data */ - Lisp_Object temp; /* temp value holder */ - int len; /* length of current string */ - char *strend; - - while (count) - { - strend = memchr (buffer, 0, (int) count); - len = strend ? strend - buffer : count; - if (len) - { - temp = make_string ((Bufbyte *) buffer, len); - value = Fcons (temp, value); - } - buffer = strend + 1; /* skip null, or leaving loop if no null */ - count -= len + !!strend; - } - - return (NILP (Fcdr (value)) - ? Fcar (value) - : Fnreverse (value)); -} - -static Lisp_Object -format_integer_32_property (long *buff, unsigned long count) -{ - Lisp_Object value = Qnil; /* return value */ - while (count) - value = Fcons (make_int (buff[--count]), value); - - return (NILP (Fcdr (value)) - ? Fcar (value) - : value); -} - -static Lisp_Object -format_integer_16_property (int16 *buff, unsigned long count) -{ - Lisp_Object value = Qnil; /* return value */ - - while (count) - value = Fcons (make_int (buff[--count]), value); - - return (NILP (Fcdr (value)) - ? Fcar (value) - : value); -} - -static Lisp_Object -format_integer_8_property (char *buff, unsigned long count) -{ - Lisp_Object value = Qnil; /* return value */ - - while (count) - value = Fcons (make_int (buff[--count]), value); - - return (NILP (Fcdr (value)) - ? Fcar (value) - : value); -} - -static Lisp_Object -format_integer_property (void *buff, unsigned long count, int format) -{ - switch (format) - { - case 8: - return format_integer_8_property ((char *) buff, count); - break; - case 16: - return format_integer_16_property ((int16 *) buff, count); - break; - case 32: - return format_integer_32_property ((long *) buff, count); - break; - default: - return Qnil; - } -} - -static Lisp_Object -format_cardinal_32_property (unsigned long *buff, unsigned long count) -{ - Lisp_Object value = Qnil; /* return value */ - - while (count) - value = Fcons (make_int (buff[--count]), value); - - return (NILP (Fcdr (value)) - ? Fcar (value) - : value); -} - -static Lisp_Object -format_cardinal_16_property (uint16 *buff, unsigned long count) -{ - Lisp_Object value = Qnil; /* return value */ - - while (count) - value = Fcons (make_int (buff[--count]), value); - - return (NILP (Fcdr (value)) - ? Fcar (value) - : value); -} - -static Lisp_Object -format_cardinal_8_property (unsigned char *buff, unsigned long count) -{ - Lisp_Object value = Qnil; /* return value */ - - while (count) - value = Fcons (make_int (buff[--count]), value); - - return (NILP (Fcdr (value)) - ? Fcar (value) - : value); -} - -static Lisp_Object -format_cardinal_property (void *buff, unsigned long count, int format) -{ - switch (format) - { - case 8: - return format_cardinal_8_property ((unsigned char *) buff, count); - break; - case 16: - return format_cardinal_16_property ((uint16 *) buff, count); - break; - case 32: - return format_cardinal_32_property ((unsigned long *) buff, count); - default: - return Qnil; - } -} - -static Lisp_Object -format_unknown_property (struct device *d, void *buff, unsigned long count, - Atom type, int format) -{ - Lisp_Object value = Qnil; /* return value */ - Lisp_Object device = Qnil; - - XSETDEVICE (device, d); - - switch (format) - { - case 32: - { - XID *xid = (XID *) buff; - int non_zero = 0; - while (count--) - if (non_zero || xid[count]) - { - value = Fcons (make_x_resource (xid[count], type, device), - value); - non_zero = 1; - } - } - break; - } - - return (NILP (Fcdr (value)) - ? Fcar (value) - : value); -} - -static Lisp_Object -convert_x_to_elisp (struct device *d, void *buffer, unsigned long count, - Atom type, int format) -{ - /* !!#### This function has not been Mule-ized */ - Lisp_Object value = Qnil; - - switch (type) - { - case None: - value = Qnil; - break; - case XA_STRING: - value = format_string_property (buffer, count); - break; - case XA_INTEGER: - value = format_integer_property ((long *) buffer, count, format); - break; - case XA_CARDINAL: - value = format_cardinal_property ((unsigned long *) buffer, - count, format); - break; - case XA_WM_SIZE_HINTS: - value = format_size_hints ((XSizeHints *) buffer); - break; - default: - value = format_unknown_property (d, (void *) buffer, count, type, - format); - break; - } - - return value; -} - -/* get a property given its atom, device, and window */ -static Lisp_Object -raw_get_property (struct device *d, Window win, Atom prop) -{ - /* !!#### This function has not been Mule-ized */ - Lisp_Object value = Qnil; - Atom actual_type; - int actual_format; - unsigned char *buffer; - unsigned long count, remaining; - int zret; - Display *dpy = DEVICE_X_DISPLAY (d); - - zret = XGetWindowProperty (dpy, win, prop, - 0L, 1024L, False, AnyPropertyType, - &actual_type, &actual_format, - &count, &remaining, &buffer); - - /* If remaining is set, then there's more of the property to get. - Let's just do the whole read again, this time with enough space - to get it all. */ - if (zret == Success && remaining > 0) - { - XFree (buffer); - zret = XGetWindowProperty (dpy, win, prop, - 0L, 1024L + ((remaining + 3) / 4), - False, AnyPropertyType, - &actual_type, &actual_format, - &count, &remaining, &buffer); - } - - if (zret != Success) - return Qnil; /* failed */ - - value = convert_x_to_elisp (d, buffer, count, actual_type, actual_format); - - XFree (buffer); - return value; -} - -/* - * Epoch equivalent: epoch::get-property - */ -DEFUN ("x-get-property", Fx_get_property, 1, 2, 0, /* -Retrieve the X window property for a frame. Arguments are -PROPERTY: must be a string or an X-resource of type ATOM. -FRAME: (optional) If present, must be a frame object, a frame id, or -and X-resource of type WINDOW. Defaults to the current frame. -Returns the value of the property, or nil if the property couldn't -be retrieved. -*/ - (name, frame)) -{ - Atom prop = None; - Lisp_Object device; - Display *dpy; - Window win; - - /* We can't use Fx_id_of_frame because it returns the xid of - the shell widget. But the property change has to take place - on the edit widget in order for a PropertyNotify event to - be generated */ - epoch_get_window_and_device (frame, &win, &device, 1); - dpy = DEVICE_X_DISPLAY (XDEVICE (device)); - - if (STRINGP (name) || SYMBOLP (name)) - { - prop = symbol_to_x_atom (XDEVICE (device), - get_symbol_or_string_as_symbol (name), - 1); - } - else if (X_RESOURCEP (name)) - { - CHECK_LIVE_X_RESOURCE (name); - if (XX_RESOURCE (name)->type != XA_ATOM) - error ("Property must be an ATOM X-resource"); - prop = XX_RESOURCE (name)->xid; - } - else - error ("Property must be a string or X-resource ATOM"); - - if (prop == None) - return Qnil; - - /* now we have the atom, let's ask for the property! */ - return raw_get_property (XDEVICE (device), win, prop); -} - -static Lisp_Object -raw_set_property (Display *dpy, Window win, Atom prop, Lisp_Object value) -{ - /* !!#### This function has not been Mule-ized */ - Atom actual_type; /* X type of items */ - int actual_format; /* size of data items (8,16,32) */ - unsigned long count; /* Number of data items */ - void* addr; /* address of data item array */ - int zret; /* X call return value */ - int free_storage; /* set if addr points at non-malloc'd store */ - - actual_format = 0; /* don't force a particular format */ - convert_elisp_to_x (value, &addr, &count, &actual_type, &actual_format, - &free_storage); - - zret = XChangeProperty (dpy, win, prop, actual_type, actual_format, - PropModeReplace, (char *) addr, count); - XFlush (dpy); - - if (free_storage) - xfree (addr); - - return value; -} - -DEFUN ("x-set-property", Fx_set_property, 2, 3, 0, /* -Set a named property for a frame. The first argument (required) -is the name of the property. The second is the value to set the propery -to. The third (optional) is the frame, default is -the current frame. -*/ - (name, value, frame)) -{ - Atom prop = None; /* name of the property */ - Lisp_Object device; - Display *dpy; - Window win; - - /* We can't use Fx_id_of_frame because it returns the xid of - the shell widget. But the property change has to take place - on the edit widget in order for a PropertyNotify event to - be generated */ - epoch_get_window_and_device (frame, &win, &device, 1); - dpy = DEVICE_X_DISPLAY (XDEVICE (device)); - - /* parse the atom name, either a string or an actual atom */ - if (STRINGP (name) || SYMBOLP (name)) - { - prop = symbol_to_x_atom (XDEVICE (device), - get_symbol_or_string_as_symbol (name), - 0); - } - else if (X_RESOURCEP (name)) - { - CHECK_LIVE_X_RESOURCE (name); - if (XX_RESOURCE (name)->type != XA_ATOM) - error ("Property must be an X-resource ATOM"); - prop = XX_RESOURCE (name)->xid; - } - else - error ("Property must be a string or X-resource ATOM"); - - if (prop == None) - return Qnil; - - /* that's it. Now set it */ - return raw_set_property (dpy, win, prop, value); -} - -/* - * Epoch equivalent: epoch::send-client-message - */ -DEFUN ("x-send-client-message", Fx_send_client_message, 1, 5, 0, /* -Send a client message to DEST, marking it as being from SOURCE. -The message is DATA of TYPE with FORMAT. If TYPE and FORMAT are omitted, -they are deduced from DATA. If SOURCE is nil, the current frame is used. -*/ - (dest, source, data, type, format)) -{ - /* !!#### This function has not been Mule-ized */ - int actual_format = 0; - Atom actual_type; - unsigned long count; - void *addr; - int free_storage; - XEvent ev; - Lisp_Object result; - Window dest_win; - Lisp_Object dest_device; - Window src_win; - Lisp_Object src_device; - Display *dpy; - - epoch_get_window_and_device (dest, &dest_win, &dest_device, 0); - - if (NILP (source)) - /* This catches a return of nil */ - XSETFRAME (source, device_selected_frame (XDEVICE (dest_device))); - - epoch_get_window_and_device (source, &src_win, &src_device, 0); - - if (!EQ (src_device, dest_device)) - error ("Destination and source must be on the same device"); - - dpy = DEVICE_X_DISPLAY (XDEVICE (dest_device)); - - ev.xclient.window = src_win; - - /* check format before data, because it can cause the data format to vary */ - if (!NILP (format)) - { - CHECK_INT (format); - actual_format = XINT (format); - if (actual_format != 8 && actual_format != 16 && actual_format != 32) - error ("Format must be 8, 16, or 32, or nil"); - } - - /* clear out any cruft */ - memset ((char *) &ev.xclient.data, 0, 20); - - /* look for the data */ - if (!NILP (data)) - { - convert_elisp_to_x (data, &addr, &count, &actual_type, &actual_format, - &free_storage); - if ((count * actual_format) > 20*8) - { - if (free_storage) - xfree (addr); - error ("Data is too big to fit in a client message"); - } - memmove (&ev.xclient.data, (char *)addr, count * (actual_format/8)); - if (free_storage) - xfree (addr); - } - - if (!NILP (type)) - { - CHECK_LIVE_X_RESOURCE (type); - if (XX_RESOURCE (type)->type != XA_ATOM) - error ("Resource for message type must be an atom"); - actual_type = XX_RESOURCE (type)->xid; - } - - ev.xany.type = ClientMessage; - ev.xclient.message_type = actual_type; - ev.xclient.format = actual_format; - /* There's no better way to set the mask than to hard code the correct - * width bit pattern. 1L<<24 == OwnerGrabButtonMask, is the largest - * This is the word from the X-consortium. - */ - result = (XSendEvent (dpy, dest_win, False, (1L<<25)-1L,&ev) - ? Qt - : Qnil); - XFlush (dpy); - return result; -} - -/* - * These duplicate the needed functionality from the Epoch event handler. - */ -static Lisp_Object -read_client_message (struct device *d, XClientMessageEvent *cm) -{ - Lisp_Object result; - Lisp_Object device = Qnil; - - XSETDEVICE (device, d); - if (!cm->format) /* this is probably a sign of a bug somewhere else */ - result = Qnil; - else - result = Fcons (make_x_resource (cm->message_type, XA_ATOM, device), - Fcons (make_x_resource (cm->window, XA_WINDOW, device), - convert_x_to_elisp (d, (void *) cm->data.b, - (20*8)/cm->format, - cm->message_type, - cm->format))); - - return result; -} - -static Lisp_Object -read_property_event (XPropertyEvent *pe, Lisp_Object frame) -{ - Lisp_Object result, value; - struct frame *f = XFRAME (frame); - struct device *d = XDEVICE (FRAME_DEVICE (f)); - Lisp_Object atom; - - atom = x_atom_to_symbol (d, pe->atom); - - /* didn't get a name, blow this one off */ - if (NILP (atom)) - return Qnil; - - /* We can't use Fx_id_of_frame because it returns the xid of - the shell widget. But the property change has to take place - on the edit widget in order for a PropertyNotify event to - be generated */ - value = raw_get_property (d, XtWindow (FRAME_X_TEXT_WIDGET (f)), - pe->atom); - result = Fcons (Fsymbol_name (atom), value); - - return result; -} - -void dispatch_epoch_event (struct frame *f, XEvent *event, Lisp_Object type); -void -dispatch_epoch_event (struct frame *f, XEvent *event, Lisp_Object type) -{ - /* This function can GC */ - struct Lisp_Vector *evp; - struct device *d = XDEVICE (FRAME_DEVICE (f)); - - if (NILP (Vepoch_event_handler)) - return; - - if (!VECTORP (Vepoch_event) || XVECTOR (Vepoch_event)->size < 3) - Vepoch_event = Fmake_vector (make_int (3), Qnil); - evp = XVECTOR (Vepoch_event); - - XSETFRAME (evp->contents[2], f); - - if (EQ (type, Qx_property_change)) - { - evp->contents[0] = Qx_property_change; - evp->contents[1] = - read_property_event (&event->xproperty, evp->contents[2]); - } - else if (EQ (type, Qx_client_message)) - { - evp->contents[0] = Qx_client_message; - evp->contents[1] = read_client_message (d, &event->xclient); - } - else if (EQ (type, Qx_map)) - { - evp->contents[0] = Qx_map; - evp->contents[1] = Qt; - } - else if (EQ (type, Qx_unmap)) - { - evp->contents[0] = Qx_unmap; - evp->contents[1] = Qnil; - } - else - { - Vepoch_event = Qnil; - } - - if (NILP (Vepoch_event)) - return; - - Ffuncall (1, &Vepoch_event_handler); - - Vepoch_event = Qnil; - return; -} - - -void -syms_of_epoch (void) -{ - DEFSUBR (Fx_intern_atom); - DEFSUBR (Fx_atom_name); - DEFSUBR (Fstring_to_x_resource); - DEFSUBR (Fx_resource_to_type); - DEFSUBR (Fx_resource_to_string); - DEFSUBR (Fx_id_of_frame); - DEFSUBR (Fx_query_tree); - DEFSUBR (Fx_get_property); - DEFSUBR (Fx_set_property); - DEFSUBR (Fx_send_client_message); - DEFSUBR (Fx_resource_p); - DEFSUBR (Fx_resource_device); - DEFSUBR (Fx_resource_live_p); - DEFSUBR (Fset_x_resource_type); - - defsymbol (&Qx_resourcep, "x-resource-p"); - defsymbol (&Qx_resource_live_p, "x-resource-live-p"); - defsymbol (&Qx_property_change, "x-property-change"); - defsymbol (&Qx_client_message, "x-client-message"); - defsymbol (&Qx_map, "x-map"); - defsymbol (&Qx_unmap, "x-unmap"); -} - -void -vars_of_epoch (void) -{ - Fprovide (intern ("epoch")); - - DEFVAR_LISP ("epoch-event-handler", &Vepoch_event_handler /* -If this variable is not nil, then it is assumed to have -a function in it. When an epoch event is received for a frame, this -function is called. -*/ ); - Vepoch_event_handler = Qnil; - - DEFVAR_LISP ("epoch-event", &Vepoch_event /* -Bound to the value of the current event when epoch-event-handler is called. -*/ ); - Vepoch_event = Qnil; -} diff -r d101af7320b8 -r cca96a509cfe src/event-Xt.c --- a/src/event-Xt.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/event-Xt.c Mon Aug 13 09:25:29 2007 +0200 @@ -691,8 +691,8 @@ /* ### Use Fget_coding_system (Vcomposed_input_coding_system) */ instream = - make_decoding_input_stream (XLSTREAM (instream), - Fget_coding_system (Qautodetect)); + make_decoding_input_stream + (XLSTREAM (instream), Fget_coding_system (Qautomatic_conversion)); while ((ch = Lstream_get_emchar (XLSTREAM (instream))) != EOF) { diff -r d101af7320b8 -r cca96a509cfe src/event-stream.c --- a/src/event-stream.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/event-stream.c Mon Aug 13 09:25:29 2007 +0200 @@ -4187,9 +4187,6 @@ #if defined (DEBUG_TTY_EVENT_STREAM) || !defined (HAVE_X_WINDOWS) vars_of_event_tty (); #endif -#ifdef HAVE_NEXTSTEP - vars_of_event_ns (); -#endif recent_keys_ring_index = 0; @@ -4518,11 +4515,6 @@ init_event_Xt_late (); else #endif -#ifdef HAVE_NEXTSTEP - if (!strcmp (display_use, "ns")) - init_event_ns_late (); - else -#endif { /* For TTY's, use the Xt event loop if we can; it allows us to later open an X connection. */ diff -r d101af7320b8 -r cca96a509cfe src/events.c --- a/src/events.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/events.c Mon Aug 13 09:25:29 2007 +0200 @@ -303,11 +303,6 @@ (XEvent *) &e2->event.magic.underlying_x_event, sizeof (e1->event.magic.underlying_x_event))); #endif -#ifdef HAVE_NEXTSTEP - if (CONSOLE_NS_P (XCONSOLE (console))) - return (e1->event.magic.underlying_ns_event == - e2->event.magic.underlying_ns_event); -#endif return (e1->event.magic.underlying_tty_event == e2->event.magic.underlying_tty_event); } @@ -369,13 +364,6 @@ memory_hash (&e->event.magic.underlying_x_event, sizeof (e->event.magic.underlying_x_event))); #endif -#ifdef HAVE_NEXTSTEP - if (CONSOLE_NS_P (XCONSOLE (console))) - return - HASH2 (hash, - memory_hash (&e->event.magic.underlying_ns_event, - sizeof (e->event.magic.underlying_ns_event))); -#endif return HASH2 (hash, memory_hash (&e->event.magic.underlying_tty_event, @@ -962,10 +950,6 @@ name = x_event_name (event->event.magic.underlying_x_event.xany.type); #endif -#ifdef HAVE_NEXTSTEP - if (CONSOLE_NS_P (XCONSOLE (console))) - name = ns_event_name (event->event.magic.underlying_ns_event); -#endif if (name) strcpy (buf, name); else strcpy (buf, "???"); return; diff -r d101af7320b8 -r cca96a509cfe src/events.h --- a/src/events.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/events.h Mon Aug 13 09:25:29 2007 +0200 @@ -344,19 +344,12 @@ # include #endif -#if defined (HAVE_NEXTSTEP) && defined(emacs) -# import -#endif - union magic_data { char underlying_tty_event; #ifdef HAVE_X_WINDOWS XEvent underlying_x_event; #endif -#ifdef HAVE_NEXTSTEP - NXEvent underlying_ns_event; -#endif }; struct Lisp_Event diff -r d101af7320b8 -r cca96a509cfe src/extents.c --- a/src/extents.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/extents.c Mon Aug 13 09:25:29 2007 +0200 @@ -6185,6 +6185,9 @@ ME_ALL_EXTENTS_CLOSED | ME_END_CLOSED | /* it might QUIT or error if the user has fucked with the extent plist. */ + /* #### dmoore - I think this should include + ME_MIGHT_MOVE_SOE, since the callback function + might recurse back into map_extents_bytind. */ ME_MIGHT_THROW | ME_MIGHT_MODIFY_EXTENTS); diff -r d101af7320b8 -r cca96a509cfe src/faces.c --- a/src/faces.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/faces.c Mon Aug 13 09:25:29 2007 +0200 @@ -47,11 +47,6 @@ #include "EmacsFrame.h" #endif /* HAVE_X_WINDOWS */ -#ifdef HAVE_NEXTSTEP -#include "console-ns.h" -#include "objects-ns.h" -#endif /* HAVE_NEXTSTEP */ - /* Qfont, Qdoc_string, Qface defined in general.c */ Lisp_Object Qfacep; Lisp_Object Qforeground, Qbackground, Qdisplay_table; @@ -1674,13 +1669,6 @@ } } #endif /* HAVE_X_WINDOWS */ - -#ifdef HAVE_NEXTSTEP - if (FRAME_NS_P (frm)) - { - /* This code still needs to be written */ - } -#endif /* HAVE_NEXSTEP */ } static void diff -r d101af7320b8 -r cca96a509cfe src/fileio.c --- a/src/fileio.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/fileio.c Mon Aug 13 09:25:29 2007 +0200 @@ -413,7 +413,7 @@ */ (file)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Bufbyte *beg; Bufbyte *p; Lisp_Object handler; @@ -481,7 +481,7 @@ */ (file)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Bufbyte *beg, *p, *end; Lisp_Object handler; @@ -517,7 +517,7 @@ */ (filename)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Lisp_Object handler; /* If the file name has special constructs in it, @@ -617,7 +617,7 @@ */ (file)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ char *buf; Lisp_Object handler; @@ -803,7 +803,7 @@ */ (directory)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ char *buf; Lisp_Object handler; @@ -871,7 +871,7 @@ */ (name, defalt)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Bufbyte *nm; Bufbyte *newdir, *p, *o; @@ -893,7 +893,6 @@ Bufbyte *tmp, *defdir; #endif /* DOS_NT */ Lisp_Object handler; - struct gcpro gcpro1; CHECK_STRING (name); @@ -1401,10 +1400,10 @@ */ (filename, defalt)) { - /* This function can call lisp */ - struct gcpro gcpro1; + /* This function can GC. GC checked 1997.04.06. */ Lisp_Object expanded_name; Lisp_Object handler; + struct gcpro gcpro1; CHECK_STRING (filename); @@ -1528,7 +1527,7 @@ */ (string)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Bufbyte *nm; Bufbyte *s, *p, *o, *x, *endp; @@ -1777,7 +1776,7 @@ barf_or_query_if_file_exists (Lisp_Object absname, CONST char *querystring, int interactive, struct stat *statptr) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ struct stat statbuf; /* stat is a good way to tell whether the file exists, @@ -1831,7 +1830,7 @@ */ (filename, newname, ok_if_already_exists, keep_time)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ int ifd, ofd, n; char buf[16 * 1024]; struct stat st, out_st; @@ -1997,7 +1996,7 @@ */ (dirname)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ char dir [MAXPATHLEN]; Lisp_Object handler; struct gcpro gcpro1; @@ -2041,7 +2040,7 @@ */ (dirname)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Lisp_Object handler; struct gcpro gcpro1; @@ -2068,7 +2067,7 @@ */ (filename)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Lisp_Object handler; struct gcpro gcpro1; @@ -2097,7 +2096,7 @@ int internal_delete_file (Lisp_Object filename) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ return NILP (condition_case_1 (Qt, Fdelete_file, filename, internal_delete_file_1, Qnil)); } @@ -2113,7 +2112,7 @@ */ (filename, newname, ok_if_already_exists)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Lisp_Object handler; struct gcpro gcpro1, gcpro2; @@ -2206,7 +2205,7 @@ */ (filename, newname, ok_if_already_exists)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.04.06. */ Lisp_Object handler; struct gcpro gcpro1, gcpro2; @@ -2263,7 +2262,7 @@ */ (filename, linkname, ok_if_already_exists)) { - /* This function can call lisp */ + /* This function can GC. GC checked 1997.06.04. */ Lisp_Object handler; struct gcpro gcpro1, gcpro2; diff -r d101af7320b8 -r cca96a509cfe src/fns.c --- a/src/fns.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/fns.c Mon Aug 13 09:25:29 2007 +0200 @@ -468,7 +468,7 @@ DEFUN ("concat", Fconcat, 0, MANY, 0, /* Concatenate all the arguments and make the result a string. The result is a string whose elements are the elements of all the arguments. -Each argument may be a string or a list or vector of characters (integers). +Each argument may be a string or a list or vector of characters. Do not use individual integers as arguments! The behavior of `concat' in that case will be changed later! diff -r d101af7320b8 -r cca96a509cfe src/frame-ns.h --- a/src/frame-ns.h Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* Define X specific frame object for XEmacs. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -#ifndef _XEMACS_FRAME_NS_H_ -#define _XEMACS_FRAME_NS_H_ - -#ifdef HAVE_NEXTSTEP -#endif /* HAVE_NEXTSTEP */ - -#endif /* _XEMACS_FRAME_NS_H_ */ diff -r d101af7320b8 -r cca96a509cfe src/frame-ns.m --- a/src/frame-ns.m Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* Functions for the NeXTstep window system. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Author: Carl Edman */ diff -r d101af7320b8 -r cca96a509cfe src/frame.h --- a/src/frame.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/frame.h Mon Aug 13 09:25:29 2007 +0200 @@ -244,10 +244,6 @@ #define CHECK_X_FRAME(z) CHECK_FRAME_TYPE (z, x) #define CONCHECK_X_FRAME(z) CONCHECK_FRAME_TYPE (z, x) -#define FRAME_NS_P(frm) CONSOLE_TYPESYM_NS_P (FRAME_TYPE (frm)) -#define CHECK_NS_FRAME(z) CHECK_FRAME_TYPE (z, ns) -#define CONCHECK_NS_FRAME(z) CONCHECK_FRAME_TYPE (z, ns) - #define FRAME_TTY_P(frm) CONSOLE_TYPESYM_TTY_P (FRAME_TYPE (frm)) #define CHECK_TTY_FRAME(z) CHECK_FRAME_TYPE (z, tty) #define CONCHECK_TTY_FRAME(z) CONCHECK_FRAME_TYPE (z, tty) diff -r d101af7320b8 -r cca96a509cfe src/general.c --- a/src/general.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/general.c Mon Aug 13 09:25:29 2007 +0200 @@ -36,7 +36,7 @@ Lisp_Object Qall; Lisp_Object Qassoc; Lisp_Object Qat; -Lisp_Object Qautodetect; +Lisp_Object Qautomatic_conversion; Lisp_Object Qbad_variable; Lisp_Object Qbefore; Lisp_Object Qbinary; @@ -163,7 +163,7 @@ defsymbol (&Qall, "all"); defsymbol (&Qassoc, "assoc"); defsymbol (&Qat, "at"); - defsymbol (&Qautodetect, "autodetect"); + defsymbol (&Qautomatic_conversion, "automatic-conversion"); defsymbol (&Qbad_variable, "bad-variable"); defsymbol (&Qbefore, "before"); defsymbol (&Qbinary, "binary"); diff -r d101af7320b8 -r cca96a509cfe src/glyphs-ns.h --- a/src/glyphs-ns.h Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* NeXTstep specific glyphs and related. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -#ifndef _XEMACS_GLYPHS_NS_H_ -#define _XEMACS_GLYPHS_NS_H_ - -#include "glyphs.h" - -#ifdef HAVE_NEXTSTEP -#endif /* HAVE_NEXTSTEP */ - -#endif /* _XEMACS_GLYPHS_NS_H_ */ diff -r d101af7320b8 -r cca96a509cfe src/glyphs-ns.m --- a/src/glyphs-ns.m Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* NeXTstep-specific Lisp objects. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Author: Carl Edman */ diff -r d101af7320b8 -r cca96a509cfe src/glyphs-x.c --- a/src/glyphs-x.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/glyphs-x.c Mon Aug 13 09:25:29 2007 +0200 @@ -104,7 +104,7 @@ DEFINE_IMAGE_INSTANTIATOR_FORMAT (font); -DEFINE_IMAGE_INSTANTIATOR_FORMAT (autodetect); +DEFINE_IMAGE_INSTANTIATOR_FORMAT (automatic_conversion); static void cursor_font_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, @@ -2588,8 +2588,10 @@ (value, device, encode_error_behavior_flag (ERROR_ME_NOT)); else { + Lisp_Object frame = DEVICE_SELECTED_FRAME(XDEVICE(device)); + Lisp_Object window = FRAME_SELECTED_WINDOW(XFRAME(frame)); assert (COLOR_SPECIFIERP (value)); - value = Fspecifier_instance (value, Qnil, Qnil, Qnil); + value = Fspecifier_instance (value, window, Qnil, Qnil); } if (NILP (value)) continue; @@ -3113,17 +3115,18 @@ /********************************************************************** - * Autodetect * + * Automatic_Conversion * **********************************************************************/ static void -autodetect_validate (Lisp_Object instantiator) +automatic_conversion_validate (Lisp_Object instantiator) { data_must_be_present (instantiator); } static Lisp_Object -autodetect_normalize (Lisp_Object instantiator, Lisp_Object console_type) +automatic_conversion_normalize (Lisp_Object instantiator, + Lisp_Object console_type) { Lisp_Object file = find_keyword_in_vector (instantiator, Q_data); Lisp_Object filename = Qnil; @@ -3196,14 +3199,14 @@ specification. (We can't do that now because we don't know what dest-types it's going to be instantiated into.) */ { - Lisp_Object result = alist_to_tagged_vector (Qautodetect, alist); + Lisp_Object result = alist_to_tagged_vector (Qautomatic_conversion, alist); free_alist (alist); RETURN_UNGCPRO (result); } } static int -autodetect_possible_dest_types (void) +automatic_conversion_possible_dest_types (void) { return IMAGE_MONO_PIXMAP_MASK | @@ -3213,9 +3216,11 @@ } static void -autodetect_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, - Lisp_Object pointer_fg, Lisp_Object pointer_bg, - int dest_mask) +automatic_conversion_instantiate (Lisp_Object image_instance, + Lisp_Object instantiator, + Lisp_Object pointer_fg, + Lisp_Object pointer_bg, + int dest_mask) { Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); struct gcpro gcpro1, gcpro2, gcpro3; @@ -3934,14 +3939,15 @@ IIFORMAT_VALID_KEYWORD (xface, Q_background, check_valid_string); #endif - INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (autodetect, "autodetect"); - - IIFORMAT_HAS_METHOD (autodetect, validate); - IIFORMAT_HAS_METHOD (autodetect, normalize); - IIFORMAT_HAS_METHOD (autodetect, possible_dest_types); - IIFORMAT_HAS_METHOD (autodetect, instantiate); - - IIFORMAT_VALID_KEYWORD (autodetect, Q_data, check_valid_string); + INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (automatic_conversion, + "automatic-conversion"); + + IIFORMAT_HAS_METHOD (automatic_conversion, validate); + IIFORMAT_HAS_METHOD (automatic_conversion, normalize); + IIFORMAT_HAS_METHOD (automatic_conversion, possible_dest_types); + IIFORMAT_HAS_METHOD (automatic_conversion, instantiate); + + IIFORMAT_VALID_KEYWORD (automatic_conversion, Q_data, check_valid_string); } void diff -r d101af7320b8 -r cca96a509cfe src/glyphs.c --- a/src/glyphs.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/glyphs.c Mon Aug 13 09:25:29 2007 +0200 @@ -144,9 +144,10 @@ DEFUN ("valid-image-instantiator-format-p", Fvalid_image_instantiator_format_p, 1, 1, 0, /* Given an IMAGE-INSTANTIATOR-FORMAT, return non-nil if it is valid. -Valid formats are some subset of 'nothing, 'string, 'formatted-string, 'xpm, -'xbm, 'xface, 'gif, 'jpeg, 'png, 'tiff, 'cursor-font, 'font, 'autodetect, -and 'subwindow, depending on how XEmacs was compiled. +Valid formats are some subset of 'nothing, 'string, 'formatted-string, +'xpm, 'xbm, 'xface, 'gif, 'jpeg, 'png, 'tiff, 'cursor-font, 'font, +'automatic-conversion, and 'subwindow, depending on how XEmacs was +compiled. */ (image_instantiator_format)) { @@ -1836,7 +1837,7 @@ probably be fixed.) 'subwindow (An embedded X window; not currently implemented.) -'autodetect +'automatic-conversion (XEmacs tries to guess what format the data is in. If X support exists, the data string will be checked to see if it names a filename. If so, and this filename contains XBM or XPM data, the appropriate @@ -1863,7 +1864,7 @@ value of the `image-instance-file-name' function when applied to the resulting image-instance. This keyword is not valid for instantiator formats `nothing', `string', `formatted-string', - `cursor-font', `font', `autodetect', and `inherit'.) + `cursor-font', `font', `automatic-conversion', and `inherit'.) :foreground :background (For `xbm', `xface', `cursor-font', and `font'. These keywords diff -r d101af7320b8 -r cca96a509cfe src/glyphs.h --- a/src/glyphs.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/glyphs.h Mon Aug 13 09:25:29 2007 +0200 @@ -51,8 +51,8 @@ font pointer subwindow subwindow inherit mono-pixmap - autodetect mono-pixmap, color-pixmap, pointer, - text + automatic-conversion mono-pixmap, color-pixmap, pointer, + text */ typedef struct ii_keyword_entry_dynarr_type diff -r d101af7320b8 -r cca96a509cfe src/insdel.c --- a/src/insdel.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/insdel.c Mon Aug 13 09:25:29 2007 +0200 @@ -2182,6 +2182,7 @@ /* Now in any case run the before-change-functions if any. */ if (!preparing_for_armageddon && + !EQ (buffer, Vprin1_to_string_buffer) && (!NILP (symbol_value_in_buffer (Qbefore_change_functions, buffer)) || /* Obsolete, for compatibility */ !NILP (symbol_value_in_buffer (Qbefore_change_function, buffer)))) @@ -2240,6 +2241,7 @@ } if (!preparing_for_armageddon && + !EQ (buffer, Vprin1_to_string_buffer) && (!NILP (symbol_value_in_buffer (Qafter_change_functions, buffer)) || /* Obsolete, for compatibility */ !NILP (symbol_value_in_buffer (Qafter_change_function, buffer)))) diff -r d101af7320b8 -r cca96a509cfe src/menubar-ns.m --- a/src/menubar-ns.m Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* Implements an elisp-programmable menubar -- NeXTstep interface. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Author: Carl Edman */ diff -r d101af7320b8 -r cca96a509cfe src/mule-coding.c --- a/src/mule-coding.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/mule-coding.c Mon Aug 13 09:25:29 2007 +0200 @@ -36,8 +36,8 @@ Lisp_Object Vkeyboard_coding_system; Lisp_Object Vterminal_coding_system; -Lisp_Object Vprocess_input_coding_system; -Lisp_Object Vprocess_output_coding_system; +Lisp_Object Vcoding_system_for_read; +Lisp_Object Vcoding_system_for_write; Lisp_Object Vpathname_coding_system; /* Table of symbols identifying each coding category. */ @@ -574,7 +574,7 @@ TYPE describes the conversion method used and should be one of -nil or 'autodetect +nil or 'automatic-conversion Automatic conversion. XEmacs attempts to detect the coding system used in the file. 'no-conversion @@ -744,14 +744,15 @@ int need_to_setup_eol_systems = 1; /* Convert type to constant */ - if (NILP (type) || EQ (type, Qautodetect)) { ty = CODESYS_AUTODETECT; } - else if (EQ (type, Qshift_jis)) { ty = CODESYS_SHIFT_JIS; } - else if (EQ (type, Qiso2022)) { ty = CODESYS_ISO2022; } - else if (EQ (type, Qbig5)) { ty = CODESYS_BIG5; } - else if (EQ (type, Qccl)) { ty = CODESYS_CCL; } - else if (EQ (type, Qno_conversion)) { ty = CODESYS_NO_CONVERSION; } + if (NILP (type) || EQ (type, Qautomatic_conversion)) + { ty = CODESYS_AUTODETECT; } + else if (EQ (type, Qshift_jis)) { ty = CODESYS_SHIFT_JIS; } + else if (EQ (type, Qiso2022)) { ty = CODESYS_ISO2022; } + else if (EQ (type, Qbig5)) { ty = CODESYS_BIG5; } + else if (EQ (type, Qccl)) { ty = CODESYS_CCL; } + else if (EQ (type, Qno_conversion)) { ty = CODESYS_NO_CONVERSION; } #ifdef DEBUG_XEMACS - else if (EQ (type, Qinternal)) { ty = CODESYS_INTERNAL; } + else if (EQ (type, Qinternal)) { ty = CODESYS_INTERNAL; } #endif else signal_simple_error ("Invalid coding system type", type); @@ -946,7 +947,7 @@ { switch (XCODING_SYSTEM_TYPE (Fget_coding_system (coding_system))) { - case CODESYS_AUTODETECT: return Qautodetect; + case CODESYS_AUTODETECT: return Qautomatic_conversion; case CODESYS_SHIFT_JIS: return Qshift_jis; case CODESYS_ISO2022: return Qiso2022; case CODESYS_BIG5: return Qbig5; @@ -1471,10 +1472,11 @@ DEFUN ("detect-coding-region", Fdetect_coding_region, 2, 3, 0, /* Detect coding system of the text in the region between START and END. -Returned value is a list of possible coding systems ordered by priority. -If only ASCII characters are found, it returns 'autodetect or one of its -subsidiary coding systems according to a detected end-of-line type. -Optional arg BUFFER defaults to the current buffer. +Returned value is a list of possible coding systems ordered by +priority. If only ASCII characters are found, it returns +'automatic-conversion or one of its subsidiary coding systems +according to a detected end-of-line type. Optional arg BUFFER +defaults to the current buffer. */ (start, end, buffer)) { @@ -1506,7 +1508,8 @@ if (decst.mask == ~0) { - val = subsidiary_coding_system (Fget_coding_system (Qautodetect), + val = subsidiary_coding_system (Fget_coding_system + (Qautomatic_conversion), decst.eol_type); } else @@ -4707,20 +4710,26 @@ */ ); Vterminal_coding_system = Qnil; - DEFVAR_LISP ("process-input-coding-system", &Vprocess_input_coding_system /* -Default coding system used by C process routines for inputting data. -This can be changed for a particular process using -`set-process-input-coding-system'. + DEFVAR_LISP ("coding-system-for-read", &Vcoding_system_for_read /* +Overriding coding system used when writing a file or process. +You should *bind* this, not set it. If this is non-nil, it specifies +the coding system that will be used when a file or process is read +in, and overrides `buffer-file-coding-system-for-read', +`insert-file-contents-pre-hook', etc. Use those variables instead of +this one for permanent changes to the environment. */ ); - Vprocess_input_coding_system = Qnil; - - DEFVAR_LISP ("process-output-coding-system", - &Vprocess_output_coding_system /* -Default coding system used by C process routines for outputting data. -This can be changed for a particular process using -`set-process-output-coding-system'. + Vcoding_system_for_read = Qnil; + + DEFVAR_LISP ("coding-system-for-write", + &Vcoding_system_for_write /* +Overriding coding system used when writing a file or process. +You should *bind* this, not set it. If this is non-nil, it specifies +the coding system that will be used when a file or process is wrote +in, and overrides `buffer-file-coding-system', +`write-region-pre-hook', etc. Use those variables instead of this one +for permanent changes to the environment. */ ); - Vprocess_output_coding_system = Qnil; + Vcoding_system_for_write = Qnil; DEFVAR_LISP ("pathname-coding-system", &Vpathname_coding_system /* Coding system used to convert pathnames when accessing files. diff -r d101af7320b8 -r cca96a509cfe src/mule-coding.h --- a/src/mule-coding.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/mule-coding.h Mon Aug 13 09:25:29 2007 +0200 @@ -225,8 +225,8 @@ extern Lisp_Object Vkeyboard_coding_system; extern Lisp_Object Vterminal_coding_system; -extern Lisp_Object Vprocess_input_coding_system; -extern Lisp_Object Vprocess_output_coding_system; +extern Lisp_Object Vcoding_system_for_read; +extern Lisp_Object Vcoding_system_for_write; extern Lisp_Object Vpathname_coding_system; extern Lisp_Object Qescape_quoted; diff -r d101af7320b8 -r cca96a509cfe src/objects-ns.h --- a/src/objects-ns.h Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* NeXTstep specific Lisp objects. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -#ifndef _XEMACS_OBJECTS_NS_H_ -#define _XEMACS_OBJECTS_NS_H_ - -#include "objects.h" - -#ifdef HAVE_NEXTSTEP -#endif /* HAVE_NEXTSTEP */ - -#endif /* _XEMACS_OBJECTS_NS_H_ */ diff -r d101af7320b8 -r cca96a509cfe src/objects-ns.m --- a/src/objects-ns.m Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* NeXTstep-specific Lisp objects. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Author: Carl Edman */ diff -r d101af7320b8 -r cca96a509cfe src/process.c --- a/src/process.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/process.c Mon Aug 13 09:25:29 2007 +0200 @@ -781,11 +781,11 @@ #ifdef MULE p->instream = make_decoding_input_stream (XLSTREAM (p->instream), - Fget_coding_system (Vprocess_input_coding_system)); + Fget_coding_system (Vcoding_system_for_read)); Lstream_set_character_mode (XLSTREAM (p->instream)); p->outstream = make_encoding_output_stream (XLSTREAM (p->outstream), - Fget_coding_system (Vprocess_output_coding_system)); + Fget_coding_system (Vcoding_system_for_write)); /* CODE_CNTL (&out_state[outchannel]) |= CC_END; !!#### What's going on here? */ #endif /* MULE */ @@ -1027,6 +1027,8 @@ } p->pid = make_int (pid); + /* #### dmoore - why is this commented out, otherwise we leave + subtty = forkin, but then we close forkin just below. */ /* p->subtty = -1; */ #ifdef WINDOWSNT @@ -1098,11 +1100,12 @@ */ (int nargs, Lisp_Object *args)) { + /* This function can call lisp */ /* !!#### This function has not been Mule-ized */ - /* This function can GC */ Lisp_Object buffer, name, program, proc, current_dir; Lisp_Object tem; int speccount = specpdl_depth (); + struct gcpro gcpro1, gcpro2, gcpro3; #ifdef VMS char *new_argv; int len; @@ -1111,44 +1114,39 @@ #endif int i; + name = args[0]; buffer = args[1]; + program = args[2]; + current_dir = Qnil; + + /* Protect against various file handlers doing GCs below. */ + GCPRO3 (buffer, program, current_dir); + if (!NILP (buffer)) buffer = Fget_buffer_create (buffer); - CHECK_STRING (args[0]); /* name */ - CHECK_STRING (args[2]); /* program */ + CHECK_STRING (name); + CHECK_STRING (program); /* Make sure that the child will be able to chdir to the current buffer's current directory, or its unhandled equivalent. We can't just have the child check for an error when it does the chdir, since it's in a vfork. - We have to GCPRO around this because Fexpand_file_name and - Funhandled_file_name_directory might call a file name handling - function. The argument list is protected by the caller, so all - we really have to worry about is buffer. */ - { - struct gcpro gcpro1, gcpro2; /* Caller gc-protects args[] */ - - current_dir = current_buffer->directory; - - GCPRO2 (buffer, current_dir); - - current_dir = - expand_and_dir_to_file (Funhandled_file_name_directory (current_dir), - Qnil); + Note: these assignments and calls are like this in order to insure + "caller protects args" GC semantics. */ + current_dir = current_buffer->directory; + current_dir = Funhandled_file_name_directory (current_dir); + current_dir = expand_and_dir_to_file (current_dir, Qnil); + #if 0 /* This loser breaks ange-ftp */ - if (NILP (Ffile_accessible_directory_p (current_dir))) - report_file_error ("Setting current directory", - list1 (current_buffer->directory)); + /* dmoore - if you re-enable this code, you have to gcprotect + current_buffer through the above calls. */ + if (NILP (Ffile_accessible_directory_p (current_dir))) + report_file_error ("Setting current directory", + list1 (current_buffer->directory)); #endif /* 0 */ - UNGCPRO; - } - - name = args[0]; - program = args[2]; - #ifdef VMS /* Make a one member argv with all args concatenated together separated by a blank. */ @@ -1171,36 +1169,31 @@ /* Need to add code here to check for program existence on VMS */ #else /* not VMS */ - new_argv = (char **) - alloca ((nargs - 1) * sizeof (char *)); - - new_argv[0] = (char *) XSTRING_DATA (program); - /* If program file name is not absolute, search our path for it */ if (!IS_DIRECTORY_SEP (XSTRING_BYTE (program, 0)) && !(XSTRING_LENGTH (program) > 1 && IS_DEVICE_SEP (XSTRING_BYTE (program, 1)))) { - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; /* Caller protects args[] */ - GCPRO4 (buffer, current_dir, name, program); + struct gcpro ngcpro1; tem = Qnil; + NGCPRO1 (tem); locate_file (Vexec_path, program, EXEC_SUFFIXES, &tem, X_OK); - UNGCPRO; if (NILP (tem)) report_file_error ("Searching for program", list1 (program)); - tem = Fexpand_file_name (tem, Qnil); - new_argv[0] = (char *) XSTRING_DATA (tem); + program = Fexpand_file_name (tem, Qnil); + NUNGCPRO; } else { - /* #### dmoore - file-directory-p can call lisp, make sure everything - here protects itself. */ if (!NILP (Ffile_directory_p (program))) error ("Specified program for new process is a directory"); } + /* Nothing below here GCs so our string pointers shouldn't move. */ + new_argv = (char **) alloca ((nargs - 1) * sizeof (char *)); + new_argv[0] = (char *) XSTRING_DATA (program); for (i = 3; i < nargs; i++) { tem = args[i]; @@ -1230,6 +1223,7 @@ create_process (proc, new_argv, (char *) XSTRING_DATA (current_dir)); + UNGCPRO; return unbind_to (speccount, proc); } @@ -2028,6 +2022,18 @@ return encoding_stream_coding_system (XLSTREAM (XPROCESS (process)->outstream)); } +DEFUN ("process-coding-system", Fprocess_coding_system, 1, 1, 0, /* +Return a pair of coding-system for decoding and encoding of PROCESS. +*/ + (process)) +{ + process = get_process (process); + return Fcons(decoding_stream_coding_system + (XLSTREAM (XPROCESS (process)->instream)), + encoding_stream_coding_system + (XLSTREAM (XPROCESS (process)->outstream)) ); +} + DEFUN ("set-process-input-coding-system", Fset_process_input_coding_system, 2, 2, 0, /* Set PROCESS's input coding system to CODESYS. @@ -2053,6 +2059,21 @@ return Qnil; } +DEFUN ("set-process-coding-system", + Fset_process_coding_system, 1, 3, 0, /* +Set coding-systems of PROCESS to DECODING and ENCODING. +*/ + (process, decoding, encoding)) +{ + if(!NILP(decoding)){ + Fset_process_input_coding_system(process, decoding); + } + if(!NILP(encoding)){ + Fset_process_output_coding_system(process, encoding); + } + return Qnil; +} + #endif /* MULE */ @@ -3336,6 +3357,8 @@ DEFSUBR (Fprocess_output_coding_system); DEFSUBR (Fset_process_input_coding_system); DEFSUBR (Fset_process_output_coding_system); + DEFSUBR (Fprocess_coding_system); + DEFSUBR (Fset_process_coding_system); #endif /* MULE */ } diff -r d101af7320b8 -r cca96a509cfe src/redisplay-ns.m --- a/src/redisplay-ns.m Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* NeXTstep output and frame manipulation routines. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Author: Carl Edman */ diff -r d101af7320b8 -r cca96a509cfe src/redisplay.c --- a/src/redisplay.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/redisplay.c Mon Aug 13 09:25:29 2007 +0200 @@ -8108,14 +8108,6 @@ return; } #endif -#ifdef HAVE_NEXTSTEP - if (!strcmp (display_use, "ns")) - { - Vwindow_system = Qns; - Vinitial_window_system = Qns; - return; - } -#endif /* If no window system has been specified, try to use the terminal. */ if (!isatty (0)) diff -r d101af7320b8 -r cca96a509cfe src/sound.c --- a/src/sound.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/sound.c Mon Aug 13 09:25:29 2007 +0200 @@ -32,10 +32,6 @@ #include "console-x.h" #endif -#ifdef HAVE_NEXTSTEP -#include "console-ns.h" -#endif - #include "commands.h" #include "device.h" #include "redisplay.h" diff -r d101af7320b8 -r cca96a509cfe src/specifier.c --- a/src/specifier.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/specifier.c Mon Aug 13 09:25:29 2007 +0200 @@ -2345,6 +2345,8 @@ else if (DEVICEP (domain)) device = domain; else + /* #### dmoore - dammit, this should just signal an error or something + shouldn't it? */ abort (); if (NILP (buffer) && !NILP (window)) diff -r d101af7320b8 -r cca96a509cfe src/symsinit.h --- a/src/symsinit.h Mon Aug 13 09:24:19 2007 +0200 +++ b/src/symsinit.h Mon Aug 13 09:25:29 2007 +0200 @@ -69,7 +69,6 @@ void syms_of_elhash (void); void syms_of_emacs (void); void syms_of_energize (void); -void syms_of_epoch (void); void syms_of_eval (void); void syms_of_event_stream (void); void syms_of_event_Xt (void); @@ -126,8 +125,6 @@ void syms_of_toolbar (void); void syms_of_tooltalk (void); void syms_of_undo (void); -void syms_of_vmsfns (void); -void syms_of_vmsproc (void); void syms_of_window (void); void syms_of_xselect (void); @@ -205,7 +202,6 @@ void vars_of_elhash (void); void vars_of_emacs (void); void vars_of_energize (void); -void vars_of_epoch (void); void vars_of_eval (void); void vars_of_event_stream (void); void vars_of_event_tty (void); @@ -327,8 +323,5 @@ void init_xemacs_process (void); void init_redisplay (void); void init_sunpro (void); -void init_vms_input (void); -void init_vmsfns (void); -void init_vmsproc (void); #endif /* _XEMACS_SYMSINIT_H_ */ diff -r d101af7320b8 -r cca96a509cfe src/toolbar-ns.m --- a/src/toolbar-ns.m Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* toolbar implementation -- NeXTstep interface. - Copyright (C) 1995 Carl Edman - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not in FSF. */ - -/* Author: Carl Edman */ diff -r d101af7320b8 -r cca96a509cfe src/toolbar.c --- a/src/toolbar.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/toolbar.c Mon Aug 13 09:25:29 2007 +0200 @@ -1680,12 +1680,6 @@ else elt = list1 (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_HEIGHT))); #endif -#ifdef HAVE_NEXTSTEP - if (!EQ(elt, Qnil)) - elt = Fcons (Fcons (list1 (Qns), make_int (DEFAULT_TOOLBAR_HEIGHT)), elt); - else - elt = list1 (Fcons (list1 (Qns), make_int (DEFAULT_TOOLBAR_HEIGHT))); -#endif if (!EQ(elt, Qnil)) set_specifier_fallback (Vdefault_toolbar_height, elt); @@ -1699,12 +1693,6 @@ else elt = list1 (Fcons (list1 (Qx), make_int (DEFAULT_TOOLBAR_WIDTH))); #endif -#ifdef HAVE_NEXTSTEP - if (!EQ(elt, Qnil)) - elt = Fcons (Fcons (list1 (Qns), make_int (DEFAULT_TOOLBAR_WIDTH)), elt); - else - elt = list1 (Fcons (list1 (Qns), make_int (DEFAULT_TOOLBAR_WIDTH))); -#endif if (!EQ(elt, Qnil)) set_specifier_fallback (Vdefault_toolbar_width, elt); diff -r d101af7320b8 -r cca96a509cfe src/vms-pp.c --- a/src/vms-pp.c Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,245 +0,0 @@ -/* vms_pp - preprocess emacs files in such a way that they can be - * compiled on VMS without warnings. - * Copyright (C) 1986 Free Software Foundation, Inc. - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not synched with FSF. */ - - * - * Usage: - * vms_pp infile outfile - * implicit inputs: - * The file "vms_pp.trans" has the names and their translations. - * description: - * Vms_pp takes the input file and scans it, replacing the long - * names with shorter names according to the table read in from - * vms_pp.trans. The line is then written to the output file. - * - * Additionally, the "#undef foo" construct is replaced with: - * #ifdef foo - * #undef foo - * #endif - * - * The construct #if defined(foo) is replaced with - * #ifdef foo - * #define foo_VAL 1 - * #else - * #define foo_VAL 0 - * #endif - * #define defined(XX) XX_val - * #if defined(foo) - * - * This last contruction only works on single line #if's and takes - * advantage of a questionable C pre-processor trick. If there are - * comments within the #if, that contain "defined", then this will - * bomb. - */ -#include - -#define Max_table 100 -#define Table_name "vms_pp.trans" -#define Word_member \ -"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$" - -static FILE *in,*out; /* read from, write to */ -struct item { /* symbol table entries */ - char *name; - char *value; -}; -static struct item name_table[Max_table]; /* symbol table */ -static int defined_defined = 0; /* small optimization */ - -main(argc,argv) int argc; char **argv; { - char buffer[1024]; - - if(argc != 3) { /* check argument count */ - fprintf(stderr,"usage: vms_pp infile outfile"); - exit(); - } - init_table(); /* read in translation table */ - -/* open input and output files - */ - if((in = fopen(argv[1],"r")) == NULL) { - fprintf(stderr,"vms_pp: unable to open file '%s'",argv[1]); - exit(); - } - if((out = fopen(argv[2],"w")) == NULL) { - fprintf(stderr,"vms_pp: unable to create file '%s'",argv[2]); - exit(); - } - - while(fgets(buffer,1023,in) != NULL) { /* loop through buffer until end */ - process_line(buffer); /* process the line */ - fputs(buffer,out); /* write out the line */ - } -} - -/* buy - allocate and copy a string - */ -static char *buy(str) char *str; { - char *temp; - - if(!(temp = malloc(strlen(str)+1))) { - fprintf(stderr,"vms_pp: can't allocate memory"); - exit(); - } - strcpy(temp,str); - return temp; -} - -/* gather_word - return a buffer full of the next word - */ -static char *gather_word(ptr,word) char *ptr, *word;{ - for(; strchr(Word_member,*ptr); ptr++,word++) - *word = *ptr; - *word = 0; - return ptr; -} - -/* skip_white - skip white space - */ -static char *skip_white(ptr) char *ptr; { - while(*ptr == ' ' || *ptr == '\t') - ptr++; - return ptr; -} - -/* init_table - initialize translation table. - */ -init_table() { - char buf[256],*ptr,word[128]; - FILE *in; - int i; - - if((in = fopen(Table_name,"r")) == NULL) { /* open file */ - fprintf(stderr,"vms_pp: can't open '%s'",Table_name); - exit(); - } - for(i = 0; fgets(buf,255,in) != NULL;) { /* loop through lines */ - ptr = skip_white(buf); - if(*ptr == '!') /* skip comments */ - continue; - ptr = gather_word(ptr,word); /* get long word */ - if(*word == 0) { /* bad entry */ - fprintf(stderr,"vms_pp: bad input line '%s'\n",buf); - continue; - } - name_table[i].name = buy(word); /* set up the name */ - ptr = skip_white(ptr); /* skip white space */ - ptr = gather_word(ptr,word); /* get equivalent name */ - if(*word == 0) { /* bad entry */ - fprintf(stderr,"vms_pp: bad input line '%s'\n",buf); - continue; - } - name_table[i].value = buy(word); /* and the equivalent name */ - i++; /* increment to next position */ - } - for(; i < Max_table; i++) /* mark rest as unused */ - name_table[i].name = 0; -} - -/* process_line - do actual line processing - */ -process_line(buf) char *buf; { - char *in_ptr,*out_ptr; - char word[128],*ptr; - int len; - - check_pp(buf); /* check for preprocessor lines */ - - for(in_ptr = out_ptr = buf; *in_ptr;) { - if(!strchr(Word_member,*in_ptr)) /* non alpha-numeric? just copy */ - *out_ptr++ = *in_ptr++; - else { - in_ptr = gather_word(in_ptr,word); /* get the 'word' */ - if(strlen(word) > 31) /* length is too long */ - replace_word(word); /* replace the word */ - for(ptr = word; *ptr; ptr++,out_ptr++) /* copy out the word */ - *out_ptr = *ptr; - } - } - *out_ptr = 0; -} - -/* check_pp - check for preprocessor lines - */ -check_pp(buf) char *buf; { - char *ptr,*p; - char word[128]; - - ptr = skip_white(buf); /* skip white space */ - if(*ptr != '#') /* is this a preprocessor line? */ - return; /* no, just return */ - - ptr = skip_white(++ptr); /* skip white */ - ptr = gather_word(ptr,word); /* get command word */ - if(!strcmp("undef",word)) { /* undef? */ - ptr = skip_white(ptr); - ptr = gather_word(ptr,word); /* get the symbol to undef */ - fprintf(out,"#ifdef %s\n",word); - fputs(buf,out); - strcpy(buf,"#endif"); - return; - } - if(!strcmp("if",word)) { /* check for if */ - for(;;) { - ptr = strchr(ptr,'d'); /* look for d in defined */ - if(!ptr) /* are we done? */ - return; - if(strchr(Word_member,*(ptr-1))){ /* at beginning of word? */ - ptr++; continue; /* no, continue looking */ - } - ptr = gather_word(ptr,word); /* get the word */ - if(strcmp(word,"defined")) /* skip if not defined */ - continue; - ptr = skip_white(ptr); /* skip white */ - if(*ptr != '(') /* look for open paren */ - continue; /* error, continue */ - ptr++; /* skip paren */ - ptr = skip_white(ptr); /* more white skipping */ - ptr = gather_word(ptr,word); /* get the thing to test */ - if(!*word) /* null word is bad */ - continue; - fprintf(out,"#ifdef %s\n",word); /* generate the code */ - fprintf(out,"#define %s_VAL 1\n",word); - fprintf(out,"#else\n"); - fprintf(out,"#define %s_VAL 0\n",word); - fprintf(out,"#endif\n"); - if(!defined_defined) { - fprintf(out,"#define defined(XXX) XXX/**/_VAL\n"); - defined_defined = 1; - } - } - } -} - -/* replace_word - look the word up in the table, and replace it - * if a match is found. - */ -replace_word(word) char *word; { - int i; - - for(i = 0; i < Max_table && name_table[i].name; i++) - if(!strcmp(word,name_table[i].name)) { - strcpy(word,name_table[i].value); - return; - } - fprintf(stderr,"couldn't find '%s'\n",word); -} diff -r d101af7320b8 -r cca96a509cfe src/vms-pwd.h --- a/src/vms-pwd.h Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* XEmacs password definition file. - Copyright (C) 1986 Free Software Foundation. - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: FSF 19.30. */ - -#ifdef VMS -/* On VMS, we read the UAF file and emulate some of the necessary - fields for Emacs. */ -#include "uaf.h" - -struct passwd { - char pw_name[UAF$S_USERNAME+1]; - char pw_passwd[UAF$S_PWD]; - short pw_uid; - short pw_gid; - char pw_gecos[UAF$S_OWNER+1]; - char pw_dir[UAF$S_DEFDEV+UAF$S_DEFDIR+1]; - char pw_shell[UAF$S_DEFCLI+1]; -}; -#endif /* VMS */ diff -r d101af7320b8 -r cca96a509cfe src/vmsfns.c --- a/src/vmsfns.c Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,958 +0,0 @@ -/* VMS subprocess and command interface. - Copyright (C) 1987, 1988, 1992, 1993 Free Software Foundation, Inc. - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not synched with FSF. */ - -/* Written by Mukesh Prasad. */ - -/* - * INTERFACE PROVIDED BY EMACS FOR VMS SUBPROCESSES: - * - * Emacs provides the following functions: - * - * "spawn-subprocess", which takes as arguments: - * - * (i) an integer to identify the spawned subprocess in future - * operations, - * (ii) A function to process input from the subprocess, and - * (iii) A function to be called upon subprocess termination. - * - * First argument is required. If second argument is missing or nil, - * the default action is to insert all received messages at the current - * location in the current buffer. If third argument is missing or nil, - * no action is taken upon subprocess termination. - * The input-handler is called as - * (input-handler num string) - * where num is the identifying integer for the subprocess and string - * is a string received from the subprocess. exit-handler is called - * with the identifying integer as the argument. - * - * "send-command-to-subprocess" takes two arguments: - * - * (i) Subprocess identifying integer. - * (ii) String to send as a message to the subprocess. - * - * "stop-subprocess" takes the subprocess identifying integer as - * argument. - * - * Implementation is done by spawning an asynchronous subprocess, and - * communicating to it via mailboxes. - */ - -#ifdef VMS - -#include -#include "lisp.h" -#include -#include -#include -/* #include */ -#include -#include -#include - -#ifdef VMS4_4 /* I am being cautious; perhaps this exists in older versions */ -#include -#endif - -/* #include */ - -#define CLI$M_NOWAIT 1 /* clidef.h is missing from C library */ -#define SYI$_VERSION 4096 /* syidef.h is missing from C library */ -#define JPI$_CLINAME 522 /* JPI$_CLINAME is missing from jpidef.h */ -#define JPI$_MASTER_PID 805 /* JPI$_MASTER_PID missing from jpidef.h */ -#define LIB$_NOSUCHSYM 1409892 /* libclidef.h missing */ - -#define MSGSIZE 160 /* Maximum size for mailbox operations */ - -#ifndef PRV$V_ACNT - -/* these defines added as hack for VMS 5.1-1. SJones, 8-17-89 */ -/* this is _really_ nasty and needs to be changed ASAP - should see about - using the union defined in SYS$LIBRARY:PRVDEF.H under v5 */ - -#define PRV$V_ACNT 0x09 -#define PRV$V_ALLSPOOL 0x04 -#define PRV$V_ALTPRI 0x0D -#define PRV$V_BUGCHK 0x17 -#define PRV$V_BYPASS 0x1D -#define PRV$V_CMEXEC 0x01 -#define PRV$V_CMKRNL 0x00 -#define PRV$V_DETACH 0x05 -#define PRV$V_DIAGNOSE 0x06 -#define PRV$V_DOWNGRADE 0x21 -#define PRV$V_EXQUOTA 0x13 -#define PRV$V_GROUP 0x08 -#define PRV$V_GRPNAM 0x03 -#define PRV$V_GRPPRV 0x22 -#define PRV$V_LOG_IO 0x07 -#define PRV$V_MOUNT 0x11 -#define PRV$V_NETMBX 0x14 -#define PRV$V_NOACNT 0x09 -#define PRV$V_OPER 0x12 -#define PRV$V_PFNMAP 0x1A -#define PRV$V_PHY_IO 0x16 -#define PRV$V_PRMCEB 0x0A -#define PRV$V_PRMGBL 0x18 -#define PRV$V_PRMJNL 0x25 -#define PRV$V_PRMMBX 0x0B -#define PRV$V_PSWAPM 0x0C -#define PRV$V_READALL 0x23 -#define PRV$V_SECURITY 0x26 -#define PRV$V_SETPRI 0x0D -#define PRV$V_SETPRV 0x0E -#define PRV$V_SHARE 0x1F -#define PRV$V_SHMEM 0x1B -#define PRV$V_SYSGBL 0x19 -#define PRV$V_SYSLCK 0x1E -#define PRV$V_SYSNAM 0x02 -#define PRV$V_SYSPRV 0x1C -#define PRV$V_TMPJNL 0x24 -#define PRV$V_TMPMBX 0x0F -#define PRV$V_UPGRADE 0x20 -#define PRV$V_VOLPRO 0x15 -#define PRV$V_WORLD 0x10 -#endif - -/* IO status block for mailbox operations. */ -struct mbx_iosb -{ - short status; - short size; - int pid; -}; - -/* Structure for maintaining linked list of subprocesses. */ -struct process_list -{ - int name; /* Numeric identifier for subprocess */ - int process_id; /* VMS process address */ - int process_active; /* 1 iff process has not exited yet */ - int mbx_chan; /* Mailbox channel to write to process */ - struct mbx_iosb iosb; /* IO status block for write operations */ - Lisp_Object input_handler; /* Input handler for subprocess */ - Lisp_Object exit_handler; /* Exit handler for subprocess */ - struct process_list * next; /* Linked list chain */ -}; - -/* Structure for privilege list. */ -struct privilege_list -{ - char * name; - int mask; -}; - -/* Structure for finding VMS related information. */ -struct vms_objlist -{ - char * name; /* Name of object */ - Lisp_Object (* objfn)(); /* Function to retrieve VMS object */ -}; - -static int exit_ast (); /* Called upon subprocess exit */ -static int create_mbx (); /* Creates mailbox */ -static void mbx_msg (); /* Writes null terminated string to mbx */ -static void write_to_mbx (); /* Writes message to string */ -static void start_mbx_input (); /* Queues I/O request to mailbox */ - -static int input_mbx_chan = 0; /* Channel to read subprocess input on */ -static char input_mbx_name[20]; - /* Storage for mailbox device name */ -static struct dsc$descriptor_s input_mbx_dsc; - /* Descriptor for mailbox device name */ -static struct process_list * process_list = 0; - /* Linked list of subprocesses */ -static char mbx_buffer[MSGSIZE]; - /* Buffer to read from subprocesses */ -static struct mbx_iosb input_iosb; - /* IO status block for mailbox reads */ - -int have_process_input, /* Non-zero iff subprocess input pending */ - process_exited; /* Non-zero iff suprocess exit pending */ - -/* List of privilege names and mask offsets */ -static struct privilege_list priv_list[] = { - - { "ACNT", PRV$V_ACNT }, - { "ALLSPOOL", PRV$V_ALLSPOOL }, - { "ALTPRI", PRV$V_ALTPRI }, - { "BUGCHK", PRV$V_BUGCHK }, - { "BYPASS", PRV$V_BYPASS }, - { "CMEXEC", PRV$V_CMEXEC }, - { "CMKRNL", PRV$V_CMKRNL }, - { "DETACH", PRV$V_DETACH }, - { "DIAGNOSE", PRV$V_DIAGNOSE }, - { "DOWNGRADE", PRV$V_DOWNGRADE }, /* Isn't VMS as low as you can go? */ - { "EXQUOTA", PRV$V_EXQUOTA }, - { "GRPPRV", PRV$V_GRPPRV }, - { "GROUP", PRV$V_GROUP }, - { "GRPNAM", PRV$V_GRPNAM }, - { "LOG_IO", PRV$V_LOG_IO }, - { "MOUNT", PRV$V_MOUNT }, - { "NETMBX", PRV$V_NETMBX }, - { "NOACNT", PRV$V_NOACNT }, - { "OPER", PRV$V_OPER }, - { "PFNMAP", PRV$V_PFNMAP }, - { "PHY_IO", PRV$V_PHY_IO }, - { "PRMCEB", PRV$V_PRMCEB }, - { "PRMGBL", PRV$V_PRMGBL }, - { "PRMJNL", PRV$V_PRMJNL }, - { "PRMMBX", PRV$V_PRMMBX }, - { "PSWAPM", PRV$V_PSWAPM }, - { "READALL", PRV$V_READALL }, - { "SECURITY", PRV$V_SECURITY }, - { "SETPRI", PRV$V_SETPRI }, - { "SETPRV", PRV$V_SETPRV }, - { "SHARE", PRV$V_SHARE }, - { "SHMEM", PRV$V_SHMEM }, - { "SYSGBL", PRV$V_SYSGBL }, - { "SYSLCK", PRV$V_SYSLCK }, - { "SYSNAM", PRV$V_SYSNAM }, - { "SYSPRV", PRV$V_SYSPRV }, - { "TMPJNL", PRV$V_TMPJNL }, - { "TMPMBX", PRV$V_TMPMBX }, - { "UPGRADE", PRV$V_UPGRADE }, - { "VOLPRO", PRV$V_VOLPRO }, - { "WORLD", PRV$V_WORLD }, - - }; - -static Lisp_Object - vms_account(), vms_cliname(), vms_owner(), vms_grp(), vms_image(), - vms_parent(), vms_pid(), vms_prcnam(), vms_terminal(), vms_uic_int(), - vms_uic_str(), vms_username(), vms_version_fn(), vms_trnlog(), - vms_symbol(), vms_proclist(); - -/* Table of arguments to Fvms_object, and the handlers that get the data. */ - -static struct vms_objlist vms_object [] = { - { "ACCOUNT", vms_account }, /* Returns account name as a string */ - { "CLINAME", vms_cliname }, /* Returns CLI name (string) */ - { "OWNER", vms_owner }, /* Returns owner process's PID (int) */ - { "GRP", vms_grp }, /* Returns group number of UIC (int) */ - { "IMAGE", vms_image }, /* Returns executing image (string) */ - { "PARENT", vms_parent }, /* Returns parent proc's PID (int) */ - { "PID", vms_pid }, /* Returns process's PID (int) */ - { "PRCNAM", vms_prcnam }, /* Returns process's name (string) */ - { "TERMINAL", vms_terminal }, /* Returns terminal name (string) */ - { "UIC", vms_uic_int }, /* Returns UIC as integer */ - { "UICGRP", vms_uic_str }, /* Returns UIC as string */ - { "USERNAME", vms_username }, /* Returns username (string) */ - { "VERSION", vms_version_fn },/* Returns VMS version (string) */ - { "LOGICAL", vms_trnlog }, /* Translates VMS logical name */ - { "DCL-SYMBOL", vms_symbol }, /* Translates DCL symbol */ - { "PROCLIST", vms_proclist }, /* Returns list of all PIDs on system */ - }; - -Lisp_Object Qdefault_subproc_input_handler; - -extern int process_ef; /* Event flag for subprocess operations */ - -DEFUN ("default-subprocess-input-handler", Fdefault_subproc_input_handler, 2, 2, 0, /* -Default input handler for input from spawned subprocesses. -*/ - (name, input)) -{ - /* Just insert in current buffer */ - buffer_insert1 (current_buffer, input); - buffer_insert_c_char ('\n'); -} - -DEFUN ("spawn-subprocess", Fspawn_subprocess, 1, 3, 0, /* -Spawn an asynchronous VMS suprocess for command processing. -*/ - (name, input_handler, exit_handler)) -{ - /* This function can GC */ - int status; - char output_mbx_name[20]; - struct dsc$descriptor_s output_mbx_dsc; - struct process_list *ptr, *p, *prev; - - CHECK_INT (name); - if (! input_mbx_chan) - { - if (! create_mbx (&input_mbx_dsc, input_mbx_name, &input_mbx_chan, 1)) - return Qnil; - start_mbx_input (); - } - ptr = 0; - prev = 0; - while (ptr) - { - struct process_list *next = ptr->next; - if (ptr->name == XINT (name)) - { - if (ptr->process_active) - return Qt; - - /* Delete this process and run its exit handler. */ - if (prev) - prev->next = next; - else - process_list = next; - if (! NILP (ptr->exit_handler)) - Feval (Fcons (ptr->exit_handler, Fcons (make_int (ptr->name), - Qnil))); - sys$dassgn (ptr->mbx_chan); - break; - } - else - prev = ptr; - ptr = next; - } - if (! ptr) - ptr = xmalloc (sizeof (struct process_list)); - if (! create_mbx (&output_mbx_dsc, output_mbx_name, &ptr->mbx_chan, 2)) - { - xfree (ptr); - return Qnil; - } - if (NILP (input_handler)) - input_handler = Qdefault_subproc_input_handler; - ptr->input_handler = input_handler; - ptr->exit_handler = exit_handler; - message ("Creating subprocess..."); - status = lib$spawn (0, &output_mbx_dsc, &input_mbx_dsc, &CLI$M_NOWAIT, 0, - &ptr->process_id, 0, 0, exit_ast, &ptr->process_active); - if (! (status & 1)) - { - sys$dassgn (ptr->mbx_chan); - xfree (ptr); - error ("Unable to spawn subprocess"); - return Qnil; - } - ptr->name = XINT (name); - ptr->next = process_list; - ptr->process_active = 1; - process_list = ptr; - message ("Creating subprocess...done"); - return Qt; -} - -static void -mbx_msg (ptr, msg) - struct process_list *ptr; - char *msg; -{ - write_to_mbx (ptr, msg, strlen (msg)); -} - -DEFUN ("send-command-to-subprocess", Fsend_command_to_subprocess, 2, 2, - "sSend command to subprocess: \nsSend subprocess %s command: ", /* -Send to VMS subprocess named NAME the string COMMAND. -*/ - (name, command)) -{ - struct process_list * ptr; - - CHECK_INT (name); - CHECK_STRING (command); - for (ptr = process_list; ptr; ptr = ptr->next) - if (XINT (name) == ptr->name) - { - write_to_mbx (ptr, XSTRING_DATA (command), XSTRING_LENGTH (command)); - return Qt; - } - return Qnil; -} - -DEFUN ("stop-subprocess", Fstop_subprocess, 1, 1, "sStop subprocess: ", /* -Stop VMS subprocess named NAME. -*/ - (name)) -{ - struct process_list * ptr; - - CHECK_INT (name); - for (ptr = process_list; ptr; ptr = ptr->next) - if (XINT (name) == ptr->name) - { - ptr->exit_handler = Qnil; - if (sys$delprc (&ptr->process_id, 0) & 1) - ptr->process_active = 0; - return Qt; - } - return Qnil; -} - -static int -exit_ast (active) - int * active; -{ - process_exited = 1; - *active = 0; - sys$setef (process_ef); -} - -/* Process to handle input on the input mailbox. - * Searches through the list of processes until the matching PID is found, - * then calls its input handler. - */ - -process_command_input () -{ - /* This function can GC */ - struct process_list * ptr; - char * msg; - int msglen; - Lisp_Object expr; - - msg = mbx_buffer; - msglen = input_iosb.size; - /* Hack around VMS oddity of sending extraneous CR/LF characters for - * some of the commands (but not most). - */ - if (msglen > 0 && *msg == '\r') - { - msg++; - msglen--; - } - if (msglen > 0 && msg[msglen - 1] == '\n') - msglen--; - if (msglen > 0 && msg[msglen - 1] == '\r') - msglen--; - /* Search for the subprocess in the linked list. - */ - expr = Qnil; - for (ptr = process_list; ptr; ptr = ptr->next) - if (ptr->process_id == input_iosb.pid) - { - expr = Fcons (ptr->input_handler, - Fcons (make_int (ptr->name), - Fcons (make_string (msg, msglen), - Qnil))); - break; - } - have_process_input = 0; - start_mbx_input (); - clear_waiting_for_input (); /* Otherwise Ctl-g will cause crash. JCB */ - if (! NILP (expr)) - Feval (expr); -} - -/* Searches process list for any processes which have exited. Calls their - * exit handlers and removes them from the process list. - */ - -process_exit () -{ - /* This function can GC */ - struct process_list * ptr, * prev, * next; - - process_exited = 0; - prev = 0; - ptr = process_list; - while (ptr) - { - next = ptr->next; - if (! ptr->process_active) - { - if (prev) - prev->next = next; - else - process_list = next; - if (! NILP (ptr->exit_handler)) - Feval (Fcons (ptr->exit_handler, Fcons (make_int (ptr->name), - Qnil))); - sys$dassgn (ptr->mbx_chan); - xfree (ptr); - } - else - prev = ptr; - ptr = next; - } -} - -/* Called at emacs exit. - */ - -kill_vms_processes () -{ - struct process_list * ptr; - - for (ptr = process_list; ptr; ptr = ptr->next) - if (ptr->process_active) - { - sys$dassgn (ptr->mbx_chan); - sys$delprc (&ptr->process_id, 0); - } - sys$dassgn (input_mbx_chan); - process_list = 0; - input_mbx_chan = 0; -} - -/* Creates a temporary mailbox and retrieves its device name in 'buf'. - * Makes the descriptor pointed to by 'dsc' refer to this device. - * 'buffer_factor' is used to allow sending messages asynchronously - * till some point. - */ - -static int -create_mbx (dsc, buf, chan, buffer_factor) - struct dsc$descriptor_s *dsc; - char *buf; - int *chan; - int buffer_factor; -{ - int strval[2]; - int status; - - status = sys$crembx (0, chan, MSGSIZE, MSGSIZE * buffer_factor, 0, 0, 0); - if (! (status & 1)) - { - message ("Unable to create mailbox. Need TMPMBX privilege."); - return 0; - } - strval[0] = 16; - strval[1] = buf; - status = lib$getdvi (&DVI$_DEVNAM, chan, 0, 0, strval, - &dsc->dsc$w_length); - if (! (status & 1)) - return 0; - dsc->dsc$b_dtype = DSC$K_DTYPE_T; - dsc->dsc$b_class = DSC$K_CLASS_S; - dsc->dsc$a_pointer = buf; - return 1; -} /* create_mbx */ - -/* AST routine to be called upon receiving mailbox input. - * Sets flag telling keyboard routines that input is available. - */ - -static int -mbx_input_ast () -{ - have_process_input = 1; -} - -/* Issue a QIO request on the input mailbox. - */ -static void -start_mbx_input () -{ - sys$qio (process_ef, input_mbx_chan, IO$_READVBLK, &input_iosb, - mbx_input_ast, 0, mbx_buffer, sizeof (mbx_buffer), - 0, 0, 0, 0); -} - -/* Send a message to the subprocess input mailbox, without blocking if - * possible. - */ -static void -write_to_mbx (ptr, buf, len) - struct process_list *ptr; - char *buf; - int len; -{ - sys$qiow (0, ptr->mbx_chan, IO$_WRITEVBLK | IO$M_NOW, &ptr->iosb, - 0, 0, buf, len, 0, 0, 0, 0); -} - -DEFUN ("setprv", Fsetprv, 1, 3, 0, /* -Set or reset a VMS privilege. First arg is privilege name. -Second arg is t or nil, indicating whether the privilege is to be -set or reset. Default is nil. Returns t if success, nil if not. -If third arg is non-nil, does not change privilege, but returns t -or nil depending upon whether the privilege is already enabled. -*/ - (priv, value, getprv)) -{ - int prvmask[2], prvlen, newmask[2]; - char * prvname; - int found, i; - struct privilege_list * ptr; - - CHECK_STRING (priv); - priv = Fupcase (priv, Fcurrent_buffer ()); - prvname = XSTRING_DATA (priv); - prvlen = XSTRING_LENGTH (priv); - found = 0; - prvmask[0] = 0; - prvmask[1] = 0; - for (i = 0; i < sizeof (priv_list) / sizeof (priv_list[0]); i++) - { - ptr = &priv_list[i]; - if (prvlen == strlen (ptr->name) && - memcmp (prvname, ptr->name, prvlen) == 0) - { - if (ptr->mask >= 32) - prvmask[1] = 1 << (ptr->mask % 32); - else - prvmask[0] = 1 << ptr->mask; - found = 1; - break; - } - } - if (! found) - error ("Unknown privilege name %s", XSTRING_DATA (priv)); - if (NILP (getprv)) - { - if (sys$setprv (NILP (value) ? 0 : 1, prvmask, 0, 0) == SS$_NORMAL) - return Qt; - return Qnil; - } - /* Get old priv value */ - if (sys$setprv (0, 0, 0, newmask) != SS$_NORMAL) - return Qnil; - if ((newmask[0] & prvmask[0]) - || (newmask[1] & prvmask[1])) - return Qt; - return Qnil; -} - -/* Retrieves VMS system information. */ - -#ifdef VMS4_4 /* I don't know whether these functions work in old versions */ - -DEFUN ("vms-system-info", Fvms_system_info, 1, 3, 0, /* -Retrieve VMS process and system information. -The first argument (a string) specifies the type of information desired. -The other arguments depend on the type you select. -For information about a process, the second argument is a process ID -or a process name, with the current process as a default. -These are the possibilities for the first arg (upper or lower case ok): - account Returns account name - cliname Returns CLI name - owner Returns owner process's PID - grp Returns group number - parent Returns parent process's PID - pid Returns process's PID - prcnam Returns process's name - terminal Returns terminal name - uic Returns UIC number - uicgrp Returns formatted [UIC,GRP] - username Returns username - version Returns VMS version - logical Translates VMS logical name (second argument) - dcl-symbol Translates DCL symbol (second argument) - proclist Returns list of all PIDs on system (needs WORLD privilege). -*/ - (type, arg1, arg2)) -{ - int i, typelen; - char * typename; - struct vms_objlist * ptr; - - CHECK_STRING (type); - type = Fupcase (type, Fcurrent_buffer ()); - typename = XSTRING_DATA (type); - typelen = XSTRING_LENGTH (type); - for (i = 0; i < sizeof (vms_object) / sizeof (vms_object[0]); i++) - { - ptr = &vms_object[i]; - if (typelen == strlen (ptr->name) - && memcpy (typename, ptr->name, typelen) == 0) - return (* ptr->objfn)(arg1, arg2); - } - error ("Unknown object type %s", typename); -} - -/* Given a reference to a VMS process, returns its process id. */ - -static int -translate_id (Lisp_Object pid, int owner) - /* if pid is null/0, return owner. If this - * flag is 0, return self. */ -{ - int status, code, id, i, numeric, size; - Bufbyte *p; - int prcnam[2]; - - if (NILP (pid) - || STRINGP (pid) && XSTRING_LENGTH (pid) == 0 - || ZEROP (pid)) - { - code = owner ? JPI$_OWNER : JPI$_PID; - status = lib$getjpi (&code, 0, 0, &id); - if (! (status & 1)) - error ("Cannot find %s: %s", - owner ? "owner process" : "process id", - vmserrstr (status)); - return (id); - } - if (INTP (pid)) - return (XINT (pid)); - CHECK_STRING (pid); - pid = Fupcase (pid, Fcurrent_buffer ()); - size = XSTRING_LENGTH (pid); - p = XSTRING_DATA (pid); - numeric = 1; - id = 0; - for (i = 0; i < size; i++, p++) - if (isxdigit (*p)) - { - id *= 16; - if (isdigit (*p)) - id += *p - '0'; - else - id += *p - 'A' + 10; - } - else - { - numeric = 0; - break; - } - if (numeric) - return (id); - prcnam[0] = XSTRING_LENGTH (pid); - prcnam[1] = XSTRING_DATA (pid); - status = lib$getjpi (&JPI$_PID, 0, prcnam, &id); - if (! (status & 1)) - error ("Cannot find process id: %s", - vmserrstr (status)); - return (id); -} /* translate_id */ - -/* VMS object retrieval functions. */ - -static Lisp_Object -getjpi (jpicode, arg, numeric) - int jpicode; /* Type of GETJPI information */ - Lisp_Object arg; - int numeric; /* 1 if numeric value expected */ -{ - int id, status, numval; - char str[128]; - int strdsc[2] = { sizeof (str), str }; - short strlen; - - id = translate_id (arg, 0); - status = lib$getjpi (&jpicode, &id, 0, &numval, strdsc, &strlen); - if (! (status & 1)) - error ("Unable to retrieve information: %s", - vmserrstr (status)); - if (numeric) - return (make_int (numval)); - return (make_string (str, strlen)); -} - -static Lisp_Object -vms_account (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_ACCOUNT, arg1, 0); -} - -static Lisp_Object -vms_cliname (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_CLINAME, arg1, 0); -} - -static Lisp_Object -vms_grp (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_GRP, arg1, 1); -} - -static Lisp_Object -vms_image (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_IMAGNAME, arg1, 0); -} - -static Lisp_Object -vms_owner (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_OWNER, arg1, 1); -} - -static Lisp_Object -vms_parent (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_MASTER_PID, arg1, 1); -} - -static Lisp_Object -vms_pid (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_PID, arg1, 1); -} - -static Lisp_Object -vms_prcnam (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_PRCNAM, arg1, 0); -} - -static Lisp_Object -vms_terminal (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_TERMINAL, arg1, 0); -} - -static Lisp_Object -vms_uic_int (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_UIC, arg1, 1); -} - -static Lisp_Object -vms_uic_str (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_UIC, arg1, 0); -} - -static Lisp_Object -vms_username (arg1, arg2) - Lisp_Object arg1, arg2; -{ - return getjpi (JPI$_USERNAME, arg1, 0); -} - -static Lisp_Object -vms_version_fn (arg1, arg2) - Lisp_Object arg1, arg2; -{ - char str[40]; - int status; - int strdsc[2] = { sizeof (str), str }; - short strlen; - - status = lib$getsyi (&SYI$_VERSION, 0, strdsc, &strlen, 0, 0); - if (! (status & 1)) - error ("Unable to obtain version: %s", vmserrstr (status)); - return (make_string (str, strlen)); -} - -static Lisp_Object -vms_trnlog (arg1, arg2) - Lisp_Object arg1, arg2; -{ - char str[100]; - int status, symdsc[2]; - int strdsc[2] = { sizeof (str), str }; - short length, level; - - CHECK_STRING (arg1); - symdsc[0] = XSTRING_LENGTH (arg1); - symdsc[1] = XSTRING_DATA (arg1); - status = lib$sys_trnlog (symdsc, &length, strdsc); - if (! (status & 1)) - error ("Unable to translate logical name: %s", vmserrstr (status)); - if (status == SS$_NOTRAN) - return (Qnil); - return (make_string (str, length)); -} - -static Lisp_Object -vms_symbol (arg1, arg2) - Lisp_Object arg1, arg2; -{ - char str[100]; - int status, symdsc[2]; - int strdsc[2] = { sizeof (str), str }; - short length, level; - - CHECK_STRING (arg1); - symdsc[0] = XSTRING_LENGTH (arg1); - symdsc[1] = XSTRING_DATA (arg1); - status = lib$get_symbol (symdsc, strdsc, &length, &level); - if (! (status & 1)) { - if (status == LIB$_NOSUCHSYM) - return (Qnil); - else - error ("Unable to translate symbol: %s", vmserrstr (status)); - } - return (make_string (str, length)); -} - -static Lisp_Object -vms_proclist (arg1, arg2) - Lisp_Object arg1, arg2; -{ - Lisp_Object retval; - int id, status, pid; - - retval = Qnil; - pid = -1; - for (;;) - { - status = lib$getjpi (&JPI$_PID, &pid, 0, &id); - if (status == SS$_NOMOREPROC) - break; - if (! (status & 1)) - error ("Unable to get process ID: %s", vmserrstr (status)); - retval = Fcons (make_int (id), retval); - } - return (Fsort (retval, intern ("<"))); -} - -DEFUN ("shrink-to-icon", Fshrink_to_icon, 0, 0, 0, /* -If emacs is running in a workstation window, shrink to an icon. -*/ - ()) -{ - static char result[128]; - static $DESCRIPTOR (result_descriptor, result); - static $DESCRIPTOR (tt_name, "TT:"); - static int chan = 0; - static int buf = 0x9d + ('2'<<8) + ('2'<<16) + (0x9c<<24); - int status; - static int temp = JPI$_TERMINAL; - - status = lib$getjpi (&temp, 0, 0, 0, &result_descriptor, 0); - if (status != SS$_NORMAL) - error ("Unable to determine terminal type."); - if (result[0] != 'W' || result[1] != 'T') /* see if workstation */ - error ("Can't shrink-to-icon on a non workstation terminal"); - if (!chan) /* assign channel if not assigned */ - if ((status = sys$assign (&tt_name, &chan, 0, 0)) != SS$_NORMAL) - error ("Can't assign terminal, %d", status); - status = sys$qiow (0, chan, IO$_WRITEVBLK+IO$M_BREAKTHRU, 0, 0, 0, - &buf, 4, 0, 0, 0, 0); - if (status != SS$_NORMAL) - error ("Can't shrink-to-icon, %d", status); -} - -#endif /* VMS4_4 */ - -init_vmsfns (void) -{ - process_list = 0; - input_mbx_chan = 0; -} - -syms_of_vmsfns (void) -{ - DEFSUBR (Fdefault_subproc_input_handler); - DEFSUBR (Fspawn_subprocess); - DEFSUBR (Fsend_command_to_subprocess); - DEFSUBR (Fstop_subprocess); - DEFSUBR (Fsetprv); -#ifdef VMS4_4 - DEFSUBR (Fvms_system_info); - DEFSUBR (Fshrink_to_icon); -#endif /* VMS4_4 */ - defsymbol (&Qdefault_subproc_input_handler, - "default-subprocess-input-handler"); -} -#endif /* VMS */ diff -r d101af7320b8 -r cca96a509cfe src/vmsmap.c --- a/src/vmsmap.c Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,227 +0,0 @@ -/* VMS mapping of data and alloc arena for XEmacs. - Copyright (C) 1986, 1987 Free Software Foundation, Inc. - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not synched with FSF. */ - -/* Written by Mukesh Prasad. */ - -#ifdef VMS - -#include -#include "lisp.h" -#include -#include -#include -#include - -/* RMS block size */ -#define BLOCKSIZE 512 - -/* Maximum number of bytes to be written in one RMS write. - * Must be a multiple of BLOCKSIZE. - */ -#define MAXWRITE (BLOCKSIZE * 30) - -/* This funniness is to ensure that sdata occurs alphabetically BEFORE the - $DATA psect and that edata occurs after ALL Emacs psects. This is - because the VMS linker sorts all psects in a cluster alphabetically - during the linking, unless you use the cluster_psect command. Emacs - uses the cluster command to group all Emacs psects into one cluster; - this keeps the dumped data separate from any loaded libraries. */ - -globaldef {"$D$ATA"} char sdata[512]; /* Start of saved data area */ -globaldef {"__DATA"} char edata[512]; /* End of saved data area */ - -/* Structure to write into first block of map file. - */ - -struct map_data -{ - char * sdata; /* Start of data area */ - char * edata; /* End of data area */ - int datablk; /* Block in file to map data area from/to */ -}; - -static void fill_fab (), fill_rab (); -static int write_data (); - -extern char *start_of_data (); -extern int vms_out_initial; /* Defined in malloc.c */ - -/* Maps in the data and alloc area from the map file. - */ - -int -mapin_data (name) - char * name; -{ - struct FAB fab; - struct RAB rab; - int status, size; - int inadr[2]; - struct map_data map_data; - - /* Open map file. */ - fab = cc$rms_fab; - fab.fab$b_fac = FAB$M_BIO|FAB$M_GET; - fab.fab$l_fna = name; - fab.fab$b_fns = strlen (name); - status = sys$open (&fab); - if (status != RMS$_NORMAL) - { - printf ("Map file not available, running bare Emacs....\n"); - return 0; /* Map file not available */ - } - /* Connect the RAB block */ - rab = cc$rms_rab; - rab.rab$l_fab = &fab; - rab.rab$b_rac = RAB$C_SEQ; - rab.rab$l_rop = RAB$M_BIO; - status = sys$connect (&rab); - if (status != RMS$_NORMAL) - lib$stop (status); - /* Read the header data */ - rab.rab$l_ubf = &map_data; - rab.rab$w_usz = sizeof (map_data); - rab.rab$l_bkt = 0; - status = sys$read (&rab); - if (status != RMS$_NORMAL) - lib$stop (status); - status = sys$close (&fab); - if (status != RMS$_NORMAL) - lib$stop (status); - if (map_data.sdata != start_of_data ()) - { - printf ("Start of data area has moved: cannot map in data.\n"); - return 0; - } - if (map_data.edata != edata) - { - printf ("End of data area has moved: cannot map in data.\n"); - return 0; - } - fab.fab$l_fop |= FAB$M_UFO; - status = sys$open (&fab); - if (status != RMS$_NORMAL) - lib$stop (status); - /* Map data area. */ - inadr[0] = map_data.sdata; - inadr[1] = map_data.edata; - status = sys$crmpsc (inadr, 0, 0, SEC$M_CRF | SEC$M_WRT, 0, 0, 0, - fab.fab$l_stv, 0, map_data.datablk, 0, 0); - if (! (status & 1)) - lib$stop (status); -} - -/* Writes the data and alloc area to the map file. - */ -mapout_data (into) - char * into; -{ - struct FAB fab; - struct RAB rab; - int status; - struct map_data map_data; - int datasize, msize; - - if (vms_out_initial) - { - error ("Out of initial allocation. Must rebuild emacs with more memory (VMS_ALLOCATION_SIZE)."); - return 0; - } - map_data.sdata = start_of_data (); - map_data.edata = edata; - datasize = map_data.edata - map_data.sdata + 1; - map_data.datablk = 2 + (sizeof (map_data) + BLOCKSIZE - 1) / BLOCKSIZE; - /* Create map file. */ - fab = cc$rms_fab; - fab.fab$b_fac = FAB$M_BIO|FAB$M_PUT; - fab.fab$l_fna = into; - fab.fab$b_fns = strlen (into); - fab.fab$l_fop = FAB$M_CBT; - fab.fab$b_org = FAB$C_SEQ; - fab.fab$b_rat = 0; - fab.fab$b_rfm = FAB$C_VAR; - fab.fab$l_alq = 1 + map_data.datablk + - ((datasize + BLOCKSIZE - 1) / BLOCKSIZE); - status = sys$create (&fab); - if (status != RMS$_NORMAL) - { - error ("Could not create map file"); - return 0; - } - /* Connect the RAB block */ - rab = cc$rms_rab; - rab.rab$l_fab = &fab; - rab.rab$b_rac = RAB$C_SEQ; - rab.rab$l_rop = RAB$M_BIO; - status = sys$connect (&rab); - if (status != RMS$_NORMAL) - { - error ("RMS connect to map file failed"); - return 0; - } - /* Write the header */ - rab.rab$l_rbf = &map_data; - rab.rab$w_rsz = sizeof (map_data); - status = sys$write (&rab); - if (status != RMS$_NORMAL) - { - error ("RMS write (header) to map file failed"); - return 0; - } - if (! write_data (&rab, map_data.datablk, map_data.sdata, datasize)) - return 0; - status = sys$close (&fab); - if (status != RMS$_NORMAL) - { - error ("RMS close on map file failed"); - return 0; - } - return 1; -} - -static int -write_data (rab, firstblock, data, length) - struct RAB * rab; - char * data; -{ - int status; - - rab->rab$l_bkt = firstblock; - while (length > 0) - { - rab->rab$l_rbf = data; - rab->rab$w_rsz = length > MAXWRITE ? MAXWRITE : length; - status = sys$write (rab, 0, 0); - if (status != RMS$_NORMAL) - { - error ("RMS write to map file failed"); - return 0; - } - data = &data[MAXWRITE]; - length -= MAXWRITE; - rab->rab$l_bkt = 0; - } - return 1; -} /* write_data */ - -#endif /* VMS */ - diff -r d101af7320b8 -r cca96a509cfe src/vmspaths.h --- a/src/vmspaths.h Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -/* Synched up with: Not synched with FSF. */ - -/* the default search path for Lisp function "load" */ -#define PATH_LOADSEARCH "EMACS_LIBRARY:[LISP]" - -/* the extra search path for programs to invoke. - This is appended to whatever the PATH environment variable says. */ -#define PATH_EXEC "EMACS_LIBRARY:[ETC]" - -/* the name of the directory that contains lock files - with which we record what files are being modified in Emacs. - This directory should be writable by everyone. */ -#define PATH_LOCK "EMACS_LIBRARY:[LOCK]" - -/* the name of the file !!!SuperLock!!! in the directory - specified by PATH_LOCK. Yes, this is redundant. */ -#define PATH_SUPERLOCK "EMACS_LIBRARY:[LOCK]$$$SUPERLOCK$$$." diff -r d101af7320b8 -r cca96a509cfe src/vmsproc.c --- a/src/vmsproc.c Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,781 +0,0 @@ -/* Interfaces to subprocesses on VMS. - Copyright (C) 1988 Free Software Foundation, Inc. - -This file is part of XEmacs. - -XEmacs 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. - -XEmacs 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 XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Synched up with: Not synched with FSF. */ - - -/* - Event flag and `select' emulation - - 0 is never used - 1 is the terminal - 23 is the timer event flag - 24-31 are reserved by VMS -*/ -#include -#include -#include -#include -#include "vmsproc.h" - -#define KEYBOARD_EVENT_FLAG 1 -#define TIMER_EVENT_FLAG 23 - -static VMS_PROC_STUFF procList[MAX_EVENT_FLAGS+1]; - -get_kbd_event_flag () -{ - /* - Return the first event flag for keyboard input. - */ - VMS_PROC_STUFF *vs = &procList[KEYBOARD_EVENT_FLAG]; - - vs->busy = 1; - vs->pid = 0; - return (vs->eventFlag); -} - -get_timer_event_flag () -{ - /* - Return the last event flag for use by timeouts - */ - VMS_PROC_STUFF *vs = &procList[TIMER_EVENT_FLAG]; - - vs->busy = 1; - vs->pid = 0; - return (vs->eventFlag); -} - -VMS_PROC_STUFF * -get_vms_process_stuff () -{ - /* - Return a process_stuff structure - - We use 1-23 as our event flags to simplify implementing - a VMS `select' call. - */ - int i; - VMS_PROC_STUFF *vs; - - for (i=1, vs = procList; ibusy) - { - vs->busy = 1; - vs->inputChan = 0; - vs->pid = 0; - sys$clref (vs->eventFlag); - return (vs); - } - } - return ((VMS_PROC_STUFF *)0); -} - -give_back_vms_process_stuff (vs) - VMS_PROC_STUFF *vs; -{ - /* - Return an event flag to our pool - */ - vs->busy = 0; - vs->inputChan = 0; - vs->pid = 0; -} - -VMS_PROC_STUFF * -get_vms_process_pointer (pid) - int pid; -{ - /* - Given a pid, return the VMS_STUFF pointer - */ - int i; - VMS_PROC_STUFF *vs; - - /* Don't search the last one */ - for (i=0, vs=procList; ibusy && vs->pid == pid) - return (vs); - } - return ((VMS_PROC_STUFF *)0); -} - -start_vms_process_read (vs) - VMS_PROC_STUFF *vs; -{ - /* - Start an asynchronous read on a VMS process - We will catch up with the output sooner or later - */ - int status; - int ProcAst (); - - status = sys$qio (vs->eventFlag, vs->outputChan, IO$_READVBLK, - vs->iosb, 0, vs, - vs->inputBuffer, sizeof (vs->inputBuffer), 0, 0, 0, 0); - if (status != SS$_NORMAL) - return (0); - else - return (1); -} - -extern int waiting_for_ast; /* in sysdep.c */ -extern int timer_ef; -extern int input_ef; - -select (nDesc, rdsc, wdsc, edsc, timeOut) - int nDesc; - int *rdsc; - int *wdsc; - int *edsc; - int *timeOut; -{ - /* Emulate a select call - - We know that we only use event flags 1-23 - - timeout == 100000 & bit 0 set means wait on keyboard input until - something shows up. If timeout == 0, we just read the event - flags and return what we find. */ - - int nfds = 0; - int status; - int time[2]; - int delta = -10000000; - int zero = 0; - int timeout = *timeOut; - unsigned long mask, readMask, waitMask; - - if (rdsc) - readMask = *rdsc << 1; /* Unix mask is shifted over 1 */ - else - readMask = 0; /* Must be a wait call */ - - sys$clref (KEYBOARD_EVENT_FLAG); - sys$setast (0); /* Block interrupts */ - sys$readef (KEYBOARD_EVENT_FLAG, &mask); /* See what is set */ - mask &= readMask; /* Just examine what we need */ - if (mask == 0) - { /* Nothing set, we must wait */ - if (timeout != 0) - { /* Not just inspecting... */ - if (!(timeout == 100000 && - readMask == (1 << KEYBOARD_EVENT_FLAG))) - { - lib$emul (&timeout, &delta, &zero, time); - sys$setimr (TIMER_EVENT_FLAG, time, 0, 1); - waitMask = readMask | (1 << TIMER_EVENT_FLAG); - } - else - waitMask = readMask; - if (waitMask & (1 << KEYBOARD_EVENT_FLAG)) - { - sys$clref (KEYBOARD_EVENT_FLAG); - waiting_for_ast = 1; /* Only if reading from 0 */ - } - sys$setast (1); - sys$wflor (KEYBOARD_EVENT_FLAG, waitMask); - sys$cantim (1, 0); - sys$readef (KEYBOARD_EVENT_FLAG, &mask); - if (readMask & (1 << KEYBOARD_EVENT_FLAG)) - waiting_for_ast = 0; - } - } - sys$setast (1); - - /* - Count number of descriptors that are ready - */ - mask &= readMask; - if (rdsc) - *rdsc = (mask >> 1); /* Back to Unix format */ - for (nfds = 0; mask; mask >>= 1) - { - if (mask & 1) - nfds++; - } - return (nfds); -} - -#define MAX_BUFF 1024 - -write_to_vms_process (vs, buf, len) - VMS_PROC_STUFF *vs; - char *buf; - int len; -{ - /* - Write something to a VMS process. - - We have to map newlines to carriage returns for VMS. - */ - char ourBuff[MAX_BUFF]; - short iosb[4]; - int status; - int in, out; - - while (len > 0) - { - out = map_nl_to_cr (buf, ourBuff, len, MAX_BUFF); - status = sys$qiow (0, vs->inputChan, IO$_WRITEVBLK|IO$M_NOFORMAT, - iosb, 0, 0, ourBuff, out, 0, 0, 0, 0); - if (status != SS$_NORMAL || (status = iosb[0]) != SS$_NORMAL) - { - error ("Could not write to subprocess: %x", status); - return (0); - } - len =- out; - } - return (1); -} - -static -map_nl_to_cr (in, out, maxIn, maxOut) - char *in; - char *out; - int maxIn; - int maxOut; -{ - /* - Copy `in' to `out' remapping `\n' to `\r' - */ - int c; - int o; - - for (o=0; maxIn-- > 0 && o < maxOut; o++) - { - c = *in++; - *out++ = (c == '\n') ? '\r' : c; - } - return (o); -} - -clean_vms_buffer (buf, len) - char *buf; - int len; -{ - /* - Sanitize output from a VMS subprocess - Strip CR's and NULLs - */ - char *oBuf = buf; - char c; - int l = 0; - - while (len-- > 0) - { - c = *buf++; - if (c == '\r' || c == '\0') - ; - else - { - *oBuf++ = c; - l++; - } - } - return (l); -} - -/* - For the CMU PTY driver -*/ -#define PTYNAME "PYA0:" - -get_pty_channel (inDevName, outDevName, inChannel, outChannel) - char *inDevName; - char *outDevName; - int *inChannel; - int *outChannel; -{ - int PartnerUnitNumber; - int status; - struct { - int l; - char *a; - } d; - struct { - short BufLen; - short ItemCode; - int *BufAddress; - int *ItemLength; - } g[2]; - - d.l = strlen (PTYNAME); - d.a = PTYNAME; - *inChannel = 0; /* Should be `short' on VMS */ - *outChannel = 0; - *inDevName = *outDevName = '\0'; - status = sys$assign (&d, inChannel, 0, 0); - if (status == SS$_NORMAL) - { - *outChannel = *inChannel; - g[0].BufLen = sizeof (PartnerUnitNumber); - g[0].ItemCode = DVI$_UNIT; - g[0].BufAddress = &PartnerUnitNumber; - g[0].ItemLength = (int *)0; - g[1].BufLen = g[1].ItemCode = 0; - status = sys$getdviw (0, *inChannel, 0, &g, 0, 0, 0, 0); - if (status == SS$_NORMAL) - { - sprintf (inDevName, "_TPA%d:", PartnerUnitNumber); - strcpy (outDevName, inDevName); - } - } - return (status); -} - -VMSgetwd (buf) - char *buf; -{ - /* - Return the current directory - */ - char curdir[256]; - char *getenv (); - char *s; - short len; - int status; - struct - { - int l; - char *a; - } d; - - s = getenv ("SYS$DISK"); - if (s) - strcpy (buf, s); - else - *buf = '\0'; - - d.l = 255; - d.a = curdir; - status = sys$setddir (0, &len, &d); - if (status & 1) - { - curdir[len] = '\0'; - strcat (buf, curdir); - } -} - -static -call_process_ast (vs) - VMS_PROC_STUFF *vs; -{ - sys$setef (vs->eventFlag); -} - -void -child_setup (in, out, err, new_argv, env) - int in, out, err; - char **new_argv; - char **env; -{ - /* ??? I suspect that maybe this shouldn't be done on VMS. */ - /* Close Emacs's descriptors that this process should not have. */ - close_process_descs (); - - if (STRINGP (current_buffer->directory)) - chdir (XSTRING_DATA (current_buffer->directory)); -} - -DEFUN ("call-process-internal", Fcall_process_internal, 1, MANY, 0 /* -Call PROGRAM synchronously in a separate process. -Program's input comes from file INFILE (nil means null device, `NLA0:'). -Insert output in BUFFER before point; t means current buffer; - nil for BUFFER means discard it; 0 means discard and don't wait. -Fourth arg DISPLAY non-nil means redisplay buffer as output is inserted. -Remaining arguments are strings passed as command arguments to PROGRAM. -This function waits for PROGRAM to terminate, unless BUFFER is 0; -if you quit, the process is killed. -*/ ) - (int nargs, Lisp_Object *args) -{ - /* This function can GC */ - Lisp_Object display, buffer, path; - char oldDir[512]; - int inchannel, outchannel; - int len; - int call_process_ast (); - struct - { - int l; - char *a; - } dcmd, din, dout; - char inDevName[65]; - char outDevName[65]; - short iosb[4]; - int status; - int SpawnFlags = CLI$M_NOWAIT; - VMS_PROC_STUFF *vs; - VMS_PROC_STUFF *get_vms_process_stuff (); - int fd[2]; - int filefd; - int pid; - char buf[1024]; - int speccount = specpdl_depth (); - unsigned char **new_argv; - struct buffer *old = current_buffer; - - CHECK_STRING (args[0]); - - if (nargs <= 1 || NILP (args[1])) - args[1] = build_string ("NLA0:"); - else - args[1] = Fexpand_file_name (args[1], - current_buffer->directory); - - CHECK_STRING (args[1]); - - { - Lisp_Object tem; - buffer = tem = args[2]; - if (nargs <= 2) - buffer = Qnil; - else if (!(ZEROP (tem, Qnil) || EQ (tem, Qt) || EQ (tem)) - { - buffer = Fget_buffer (tem); - CHECK_BUFFER (buffer); - } - } - - display = nargs >= 3 ? args[3] : Qnil; - - { - /* - if (args[0] == "*dcl*" then we need to skip pas the "-c", - else args[0] is the program to run. - */ - int i; - int arg0; - int firstArg; - - if (strcmp (XSTRING_DATA (args[0]), "*dcl*") == 0) - { - arg0 = 5; - firstArg = 6; - } - else - { - arg0 = 0; - firstArg = 4; - } - len = XSTRING_LENGTH (args[arg0]) + 1; - for (i = firstArg; i < nargs; i++) - { - CHECK_STRING (args[i]); - len += XSTRING_LENGTH (args[i]) + 1; - } - new_argv = alloca (len); - strcpy (new_argv, XSTRING_DATA (args[arg0])); - for (i = firstArg; i < nargs; i++) - { - strcat (new_argv, " "); - strcat (new_argv, XSTRING_DATA (args[i])); - } - dcmd.l = len-1; - dcmd.a = new_argv; - - status = get_pty_channel (inDevName, outDevName, &inchannel, &outchannel); - if (!(status & 1)) - error ("Error getting PTY channel: %x", status); - if (INTP (buffer)) - { - dout.l = strlen ("NLA0:"); - dout.a = "NLA0:"; - } - else - { - dout.l = strlen (outDevName); - dout.a = outDevName; - } - - vs = get_vms_process_stuff (); - if (!vs) - { - sys$dassgn (inchannel); - sys$dassgn (outchannel); - error ("Too many VMS processes"); - } - vs->inputChan = inchannel; - vs->outputChan = outchannel; - } - - filefd = open (XSTRING_DATA (args[1]), O_RDONLY, 0); - if (filefd < 0) - { - sys$dassgn (inchannel); - sys$dassgn (outchannel); - give_back_vms_process_stuff (vs); - report_file_error ("Opening process input file", Fcons (args[1], Qnil)); - } - else - close (filefd); - - din.l = XSTRING_LENGTH (args[1]); - din.a = XSTRING_DATA (args[1]); - - /* - Start a read on the process channel - */ - if (!INTP (buffer)) - { - start_vms_process_read (vs); - SpawnFlags = CLI$M_NOWAIT; - } - else - SpawnFlags = 0; - - /* - On VMS we need to change the current directory - of the parent process before forking so that - the child inherit that directory. We remember - where we were before changing. - */ - VMSgetwd (oldDir); - child_setup (0, 0, 0, 0, 0); - status = lib$spawn (&dcmd, &din, &dout, &SpawnFlags, 0, &vs->pid, - &vs->exitStatus, 0, call_process_ast, vs); - chdir (oldDir); - - if (status != SS$_NORMAL) - { - sys$dassgn (inchannel); - sys$dassgn (outchannel); - give_back_vms_process_stuff (vs); - error ("Error calling LIB$SPAWN: %x", status); - } - pid = vs->pid; - - if (INTP (buffer)) - { -#if defined (NO_SUBPROCESSES) - wait_without_blocking (); -#endif - return Qnil; - } - - record_unwind_protect (call_process_cleanup, - Fcons (make_int (fd[0]), make_int (pid))); - - - if (BUFFERP (buffer)) - Fset_buffer (buffer); - - while (1) - { - QUIT; - - sys$waitfr (vs->eventFlag); - if (vs->iosb[0] & 1) - { - if (!NILP (buffer)) - { - vs->iosb[1] = clean_vms_buffer (vs->inputBuffer, vs->iosb[1]); - InsCStr (vs->inputBuffer, vs->iosb[1]); - } - if (!NILP (display) && INTERACTIVE) - redisplay (); - QUIT; - if (!start_vms_process_read (vs)) - break; /* The other side went away */ - } - else - break; - } - sys$dassgn (inchannel); - sys$dassgn (outchannel); - give_back_vms_process_stuff (vs); - - /* Wait for it to terminate, unless it already has. */ - wait_for_termination (pid); - - set_current_buffer (old); - - return unbind_to (speccount, Qnil); -} - -create_process (process, new_argv) - Lisp_Object process; - char *new_argv; -{ - int pid, inchannel, outchannel, forkin, forkout; - char old_dir[512]; - char in_dev_name[65]; - char out_dev_name[65]; - short iosb[4]; - int status; - int spawn_flags = CLI$M_NOWAIT; - int child_sig (); - struct { - int l; - char *a; - } din, dout, dprompt, dcmd; - VMS_PROC_STUFF *vs; - VMS_PROC_STUFF *get_vms_process_stuff (); - - status = get_pty_channel (in_dev_name, out_dev_name, &inchannel, &outchannel); - if (!(status & 1)) - { - remove_process (process); - error ("Error getting PTY channel: %x", status); - } - dout.l = strlen (out_dev_name); - dout.a = out_dev_name; - dprompt.l = strlen (DCL_PROMPT); - dprompt.a = DCL_PROMPT; - - if (strcmp (new_argv, "*dcl*") == 0) - { - din.l = strlen (in_dev_name); - din.a = in_dev_name; - dcmd.l = 0; - dcmd.a = (char *)0; - } - else - { - din.l = strlen ("NLA0:"); - din.a = "NLA0:"; - dcmd.l = strlen (new_argv); - dcmd.a = new_argv; - } - - /* Delay interrupts until we have a chance to store - the new fork's pid in its process structure */ - sys$setast (0); - - vs = get_vms_process_stuff (); - if (vs == 0) - { - sys$setast (1); - remove_process (process); - error ("Too many VMS processes"); - } - vs->inputChan = inchannel; - vs->outputChan = outchannel; - - /* Start a read on the process channel */ - start_vms_process_read (vs); - - /* Switch current directory so that the child inherits it. */ - VMSgetwd (old_dir); - child_setup (0, 0, 0, 0, 0); - - status = lib$spawn (&dcmd, &din, &dout, &spawn_flags, 0, &vs->pid, - &vs->exitStatus, 0, child_sig, vs, &dprompt); - chdir (old_dir); - - if (status != SS$_NORMAL) - { - sys$setast (1); - remove_process (process); - error ("Error calling LIB$SPAWN: %x", status); - } - vs->pid &= 0xffff; /* It needs to fit in a FASTINT, - we don't need the rest of the bits */ - pid = vs->pid; - - /* - ON VMS process->infd holds the (event flag-1) - that we use for doing I/O on that process. - `input_wait_mask' is the cluster of event flags - we can wait on. - - Event flags returned start at 1 for the keyboard. - Since Unix expects descriptor 0 for the keyboard, - we substract one from the event flag. - */ - inchannel = vs->eventFlag-1; - - /* Record this as an active process, with its channels. - As a result, child_setup will close Emacs's side of the pipes. */ - chan_process[inchannel] = process; - XPROCESS (process)->infd = make_int (inchannel); - XPROCESS (process)->outfd = make_int (outchannel); - XPROCESS (process)->flags = make_int (RUNNING); - - /* Delay interrupts until we have a chance to store - the new fork's pid in its process structure */ - -#define NO_ECHO "set term/noecho\r" - sys$setast (0); - /* - Send a command to the process to not echo input - - The CMU PTY driver does not support SETMODEs. - */ - write_to_vms_process (vs, NO_ECHO, strlen (NO_ECHO)); - - XPROCESS (process)->pid = make_int (pid); - sys$setast (1); -} - -child_sig (VMS_PROC_STUFF *vs) -{ - int pid; - Lisp_Object tail, proc; - struct Lisp_Process *p; - int old_errno = errno; - - pid = vs->pid; - sys$setef (vs->eventFlag); - - for (tail = Vprocess_alist; XSYMBOL (tail) != XSYMBOL (Qnil); tail = XCDR (tail)) - { - proc = XCDR (XCAR (tail)); - p = XPROCESS (proc); - if (EQ (p->childp, Qt) && XINT (p->pid) == pid) - break; - } - - if (XSYMBOL (tail) == XSYMBOL (Qnil)) - return; - - child_changed++; - p->flags = make_int (EXITED | CHANGED); - /* Truncate the exit status to 24 bits so that it fits in a FASTINT */ - p->reason = make_int ((vs->exitStatus) & 0xffffff); -} - -void -syms_of_vmsproc (void) -{ - DEFSUBR (Fcall_process_internal); -} - -void -init_vmsproc (void) -{ - char *malloc (); - int i; - VMS_PROC_STUFF *vs; - - for (vs=procList, i=0; ibusy = 0; - vs->eventFlag = i; - sys$clref (i); - vs->inputChan = 0; - vs->pid = 0; - } - procList[0].busy = 1; /* Zero is reserved */ -} diff -r d101af7320b8 -r cca96a509cfe src/vmsproc.h --- a/src/vmsproc.h Mon Aug 13 09:24:19 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* - Structure for storing VMS specific information for an EMACS process - - We use the event flags 1-23 for processes, keyboard input and timer -*/ - -/* Synched up with: Not synched with FSF. */ - -/* - Same as MAXDESC in process.c -*/ -#define MAX_EVENT_FLAGS 23 - -typedef struct { - char inputBuffer[1024]; - short inputChan; - short outputChan; - short busy; - int pid; - int eventFlag; - int exitStatus; - short iosb[4]; -} VMS_PROC_STUFF; diff -r d101af7320b8 -r cca96a509cfe src/xmu.c --- a/src/xmu.c Mon Aug 13 09:24:19 2007 +0200 +++ b/src/xmu.c Mon Aug 13 09:25:29 2007 +0200 @@ -167,7 +167,7 @@ /* shared data for the image read/parse logic */ static short hexTable[256]; /* conversion value */ -static Bool initialized = False; /* easier to fill in at run time */ +static int hex_initialized; /* easier to fill in at run time */ /* @@ -201,7 +201,7 @@ hexTable['}'] = -1; hexTable['\n'] = -1; hexTable['\t'] = -1; - initialized = True; + hex_initialized = 1; } /* @@ -268,7 +268,7 @@ #endif /* first time initialization */ - if (initialized == False) initHexTable(); + if (!hex_initialized) initHexTable(); /* error cleanup and return macro */ #define RETURN(code) { if (data) free (data); return code; }