This commit was generated by cvs2svn to compensate for changes in r4995,
authortomo <tomo>
Thu, 22 Aug 2002 16:40:24 +0000 (16:40 +0000)
committertomo <tomo>
Thu, 22 Aug 2002 16:40:24 +0000 (16:40 +0000)
which included commits to RCS files with non-trunk default branches.

35 files changed:
PROBLEMS
configure.usage
dynodump/dynodump.c
etc/NEWS
etc/gnuserv.1
lib-src/ChangeLog
lib-src/gnuclient.c
lib-src/gnuserv.h
lisp/auto-save.el
lisp/build-report.el
lisp/byte-optimize.el
lisp/dialog.el
lisp/help.el
lisp/ldap.el
lisp/loaddefs.el
lisp/menubar-items.el
lwlib/ChangeLog
man/ChangeLog
man/info.texi
man/internals/internals.texi
man/texinfo.texi
man/xemacs-faq.texi
nt/ChangeLog
nt/minitar.c
src/elhash.c
src/event-msw.c
src/frame-msw.c
src/keymap.c
src/menubar.c
src/s/cygwin32.h
src/scrollbar-msw.c
src/scrollbar-msw.h
tests/ChangeLog
tests/automated/lisp-tests.el
version.sh

index dab9c7c..2daf276 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -2,7 +2,7 @@
 
 This file describes various problems that have been encountered
 in compiling, installing and running XEmacs.  It has been updated for
-XEmacs 21.0.
+XEmacs 21.4.
 
 This file is rather large, but we have tried to sort the entries by
 their respective relevance for XEmacs, but may have not succeeded
@@ -611,6 +611,14 @@ microsoft website.
 * Problems with running XEmacs
 ==============================
 ** General
+*** gnuserv is running, some clients can connect, but others cannot.
+
+The code in gnuslib.c respects the value of TMPDIR.  If the server and
+the client have different values in their environment, you lose.
+One program known to set TMPDIR and manifest this problem is exmh.
+You can defeat the use of TMPDIR by unsetting USE_TMPDIR at the top of
+gnuserv.h at build time.
+
 *** C-z just refreshes the screen instead of suspending Emacs.
 
 You are probably using a shell that doesn't support job control, even
index 4f95ce2..c6c25b6 100644 (file)
@@ -193,6 +193,11 @@ Additional features:
 --pdump                 New, experimental, non-working, don't-sue-me-if-
                         your-house-collapses-and-your-wife-leaves-you,
                         portable dumper.
+--with-file-coding      Allows transparent use of "foreign" line break
+                        conventions in text files (such as LF-delimited text
+                        imported from a Unix system to a Windows environment),
+                        optionally including autodetection.  Defaults to ON
+                        on Windows, OFF on Unix.
 
 Internationalization options:
 
index b39f93b..b7090ca 100644 (file)
@@ -73,7 +73,7 @@
  * N.B. The above commentary is not quite correct in the flags have been hardwired
  *      to RTLD_SAVREL.
  */
-#pragma ident  "@(#) $Id: dynodump.c,v 1.6.2.2 2000/09/20 02:39:17 martinb Exp $ - SMI"
+#pragma ident  "@(#) $Id: dynodump.c,v 1.8 2001/04/12 18:20:43 michaels Exp $ - SMI"
 
 #define __EXTENSIONS__ 1
 
index 268e048..c6bba49 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3,9 +3,12 @@
 * Introduction
 ==============
 
-This file presents some general information about XEmacs.  It is
-primarily about the changes in recent XEmacs versions and its release
-history.
+This file presents the changes in recent XEmacs versions.  It
+primarily documents user-visible (interface) changes, but also
+includes internal changes of possible interest to the users.  When
+describing new features, we try to also document ways of reverting to
+the old behavior, where applicable.  If you dislike a recent change in
+how XEmacs behaves, this file might contain a remedy.
 
 Use `C-c C-f' to move to the next equal level of outline, and
 `C-c C-b' to move to previous equal level.  `C-h m' will give more
@@ -17,25 +20,18 @@ in each release should look at the appropriate section of this file.
 Starting with version 20.0, XEmacs includes ChangeLogs, which can be
 consulted for a more detailed list of changes.
 
-Users interested in some of the details of how XEmacs differs from GNU
-Emacs should read the section "What's Different?" near the end of this
-file.
-
     N.B.  The term "GNU Emacs" refers to any release of Emacs Version
     19 from the Free Software Foundation's GNU Project.  (We do not
     say just "Emacs" as Richard M. Stallman ["RMS"] prefers, because
     it is clearly a more generic term.)  The term "XEmacs" refers to
-    this program or to its predecessors "Era" and "Lucid Emacs".  The
-    predecessor of all these program is called "Emacs 18".  When no
-    particular version is implied, "Emacs" will be used.
+    this program or sometimes to its predecessors "Era" and "Lucid
+    Emacs".  The predecessor of all these program is called "Emacs
+    18".  When no particular version is implied, "Emacs" will be used.
 
 \f
-* Changes in XEmacs 21.2
+* Changes in XEmacs 21.4
 ========================
 
-** The modeline's text is now scrollable. Please refer to the variable
-`modeline-scrolling-method' for more information.
-
 ** The delete key now deletes forward by default.
 
 This is regulated by the variable `delete-key-deletes-forward', which
@@ -50,23 +46,38 @@ to set `delete-key-deletes-forward' to nil is if you want to use the
 Delete key to delete backwards, despite the presence (according to
 Xlib) of a BackSpace key on the keyboard.
 
+** You can now build XEmacs with support for GTK+ widget set.
+
+XEmacs built that way uses GTK+ to draw menubars, scrollbars, and
+other GUI components, as well GDK for drawing text, choosing fonts,
+allocating colors, etc.  Additionally, GTK-XEmacs supports Lisp
+functions for writing your own GTK programs in Emacs Lisp!
+
+To use this, build XEmacs with the `--with-gtk' configure flag.  (Of
+course, you'll need to have the GTK+ libraries and header files on the
+system.)  Gnome widgets and functionality are supported where
+available, and can be turned off.
+
 ** Shifted motion keys now select text by default.  You can turn this
 off by setting `shifted-motion-keys-select-region' to nil.
 
-** You can now set the variable `kill-whole-line' to `always', which
-makes `kill-line' (C-k) delete the entire line always, not just when
-the cursor is at the beginning of the line.  This behavior, as well as
-the existing kill-whole-line behavior, now only take effect when
-kill-line is called interactively, although this is a departure from a
-previous behavior in the case of setting this variable kill-whole-line
-to t.  It is almost certainly what has always been intended, and most
-likely the old way of doing things introduced bugs.
-
-The new function `historical-kill-line' ignores the `kill-whole-line'
-setting and always gives the historical behavior of only killing to
-the end of the line.  This function is bound to Sh-C-k, so that the
-kill to end of line behavior is available, even when `kill-whole-line'
-has been customized.
+** There is a new command `kill-entire-line' that always kills the
+entire line at point, regardless of whether the point is at the
+beginning of line, and regardless of the setting of `kill-whole-line'.
+
+** The variable `kill-whole-line' now only takes effect when kill-line
+is called interactively.  Although this is a departure from a previous
+behavior in the case of setting this variable kill-whole-line to t,
+it is almost certainly what has always been intended, and most likely
+the old way of doing things introduced bugs.
+
+** The help buffers created by the plethora of C-h commands now
+contain hyperlinks.
+
+** The modeline's text is now scrollable.  This is controlled by the
+variable `modeline-scrolling-method', which you need to set to a
+non-nil value.  You can also choose scrolling types; see the docstring
+of `modeline-scrolling-method' for more information.
 
 ** XEmacs menus now have accelerators by default.  If a menu item does
 not have an accelerator specified, one is created dynamically, using
@@ -90,6 +101,11 @@ it easier to anticipate where consecutive C-s or C-r will place the
 point.  If you want to disable the feature, set
 `isearch-highlight-all-matches' to nil.
 
+** The "coding systems" feature now works even in an XEmacs compiled
+without international (Mule) support.  This means that for example
+XEmacs can recognize newline convention used by the file you are
+editing.
+
 ** You can now use the buffer tabs to switch between buffers.  The
 tabs are located between the toolbar and the uppermost window, in a
 location called "gutter".  If you dislike the buffer tabs, you can
@@ -114,6 +130,16 @@ you can now edit the default value by pressing the down arrow,
 accessing the logical "future" value.  Not all minibuffer prompts have
 yet been converted to support this feature.
 
+** International keysyms are now supported under X.  This means that
+XEmacs running under Mule will automatically recognize the keysym
+`scaron' to be the lower-case `s' with caron in the Latin 2 character
+set.  (Specifically, it will bind the keysym to `self-insert' and
+augment its `ascii-character' property.)  This is very useful with
+XFree under European locales as shipped by recent Linux distributions.
+If XEmacs is compiled without Mule support, the feature still works,
+but it is unaware of different character sets -- it unconditionally
+sets the `ascii-character' property to values in the [160, 256) range.
+
 ** The rectangle functions have been almost completely rewritten in
 order to avoid inserting undesirable spaces, notably at the end of
 lines.  Two typical examples of the old behavior were
@@ -176,7 +202,7 @@ The new primitives available for this purpose are functions named
 It will try NAS first, then ESD, then playing native sound directly.
 
 ** X-Face support is now available under MS-Windows.
-If an X-Face libary built under MS-Windows is available then XEmacs
+If an X-Face library built under MS-Windows is available then XEmacs
 will use this at build time.
 
 ** The font-menu is now available under MS-Windows.
@@ -193,6 +219,14 @@ The only thing selection doesn't do is set the clipboard automatically
 as this would break the MS-Windows model.  If you want this behavior
 then set `selection-sets-clipboard' to t.
 
+** Motif selection support is now more correct (but slower) in its behaviour.
+
+Changes have been made to allow correct operation of cut/copy/paste
+operations between native widgets and XEmacs buffers. However, this
+can lead to a lot of X traffic which slows down the performance of
+`C-k'. If you want the old behaviour then set
+`x-selection-strict-motif-ownership' to nil.
+
 ** Mail spool locking now works correctly.
 XEmacs has always come with a little auxiliary program, movemail,
 which moves mail out of the system's spool area into user storage.  To
@@ -208,42 +242,45 @@ environment's mail spool locking conventions.  When you're using a
 binary kit, set the `mail-lock-method' variable at startup, or the
 EMACSLOCKMETHOD environment variable.
 
-** Init file will move to ~/.xemacs/init.el.
+** Indentation no longer indents comments that begin at column zero.
+This makes it easy to deal with commented out regions of code.
 
-If `~/.xemacs/init.el' exists, XEmacs will prefer it over `~/.emacs'
-as an init file.  The file may be byte-compiled as
-`~/.xemacs/init.elc'.
+** Init file changes.
 
-Future versions of XEmacs will stop supporting `~/.emacs' as an init
-file.  XEmacs offers automatic migration upon startup.
+*** XEmacs now supports a `~/.xemacs/init.el' startup file.  If
+it exists, XEmacs will prefer it over `.emacs' and `.emacs.el'.  The
+file may be byte-compiled as `~/.xemacs/init.elc'.
 
-** Custom file will move to ~/.xemacs/custom.el.
+If present, the `~/.xemacs/' directory may contain startup files for
+XEmacs packages that support it.
 
-Whereas customize settings were formerly stored in the regular init
-file, XEmacs now prefers them to be in a separate file
-`~/.xemacs/custom.el', completely under automatic control.  This
-change goes with the migration of the init file, and XEmacs offers
-automatic migration upon startup.
+*** Init file in your home directory may be called `.emacs.el'.
 
-** Init file may be called .emacs.el.
-
-For the time being, like in GNU Emacs 20.4 and on, you can now name
-the XEmacs init file `.emacs.el'.  Formerly the name had to be
-`.emacs'.  If you use the name `.emacs.el', you can byte-compile the
-file in the usual way.
+Like in GNU Emacs 20.4 and on, you can now name the XEmacs init file
+located in your home directory `.emacs.el'.  Formerly the name had to
+be `.emacs'.  If you use the name `.emacs.el', you can byte-compile
+the file in the usual way.
 
 If both `.emacs' and `.emacs.el' exist, the latter file is the one
 that is used.
 
-** New command-line switches -user-init-file and -user-init-directory.
+*** New command-line switches -user-init-file and -user-init-directory.
 These can be used to specify alternate locations for what is normally
 ~/.emacs and ~/.xemacs.
 
-Moreover, -user <user> (which used to only work in unpredictable ways)
-is now equivalent to -user-init-file ~<user>/.xemacs/init.el
--user-init-directory ~<user>/.xemacs.  or -user-init-file
-~<user>/.emacs -user-init-directory ~<user>/.xemacs, whichever init
-file comes first.
+Moreover, the `-user <user>' command-line option (which used to only
+work in unpredictable ways) is now equivalent to `-user-init-file
+~<user>/.xemacs/init.el -user-init-directory ~<user>/.xemacs', or
+`-user-init-file ~<user>/.emacs -user-init-directory ~<user>/.xemacs',
+whichever init file comes first.
+
+*** Custom file will move to ~/.xemacs/custom.el.
+
+Whereas customize settings were formerly stored in the regular init
+file, XEmacs now prefers them to be in a separate file
+`~/.xemacs/custom.el', completely under automatic control.  This
+change goes with the migration of the init file, and XEmacs offers
+automatic migration upon startup.
 
 ** New variable `mswindows-alt-by-itself-activates-menu'.
 If you set this variable to nil then pressing and releasing the Alt
@@ -268,6 +305,26 @@ to the PostgreSQL RDBMS (libpq) is available in XEmacs Lisp.
 Supported versions of PostgreSQL are 6.5.3 (earlier versions may work,
 but have not been tested) and 7.0-beta1.
 
+** Help functions (e.g. `C-h f') now know how to print macro argument
+lists.  If your macro definition included an argument list for the
+sake of help output, you no longer need to do that.
+
+** Mule changes.
+
+*** Windows 1251 code page is now supported as coding system
+`windows-1251'.
+
+*** Czech, Thai, Cyrillic-KOI8, Vietnamese, Ethiopic support now
+available.
+
+*** The appropriate characters in Latin 3 and Latin 4 character sets
+are correctly defined as words.
+
+*** The default coding-priority-list is now safer.  This means that if
+you have no language environment set, Mule no longer automatically
+recognizes ISO 2022 escapes in your files.  This makes editing binary
+files safe.
+
 ** Etags changes.
 
 *** In DOS, etags looks for file.cgz if it cannot find file.c.
@@ -287,7 +344,7 @@ declarations when given the --declarations option.
 *** New language Ada: tags are functions, procedures, packages, tasks, and
 types.
 
-*** In Fortran, procedure is no more tagged.
+*** In Fortran, procedure is no longer tagged.
 
 *** In Java, tags are created for "interface".
 
@@ -303,27 +360,34 @@ variables are tagged.
 for PSWrap.
 
 \f
-* Lisp and internal changes in XEmacs 21.2
+* Lisp and internal changes in XEmacs 21.4
 ==========================================
 
 ** A new portable dumper is available for beta testing.
 
 Olivier Galibert has written a portable dumper for XEmacs, based on
-initial work by Kyle Jones.  Normally, XEmacs C sources link into an
-executable called `temacs', which loads the Lisp code and "unexecs"
-into a proper `xemacs' executable.  The unexec() process is hard to
+initial work by Kyle Jones.  To perform even the most basic editor,
+XEmacs requires some amount of Lisp code to be loaded.  To avoid
+repeating the expensive loading process at every startup, XEmacs is
+built in a special way.  Its C sources link into an executable called
+`temacs', which loads the bootstrap Lisp code and uses a special
+"unexec" call to dump the resulting memory image into a proper
+`xemacs' executable on disk.  The unexec() process is hard to
 implement correctly and makes XEmacs very hard to port to new
 operating systems, or even to new releases of old systems.
 
-A portable dumper is a different approach to dumping: instead of
-dumping full-fledged executable, it only dumps out the initialized
+The new portable dumper uses a different approach to dumping: instead
+of dumping full-fledged executable, it only dumps out the initialized
 data structures (both Lisp and C) into an external file.  A normally
-running XEmacs only needs to mmap() that file and relocate a bit to
-get to the initialized data.  In that scheme, there is no difference
+running XEmacs only needs to mmap that file and relocate a bit to get
+to the initialized data.  In that scheme, there is no difference
 between `temacs' and `xemacs'.
 
-This is all very experimental, though.  Configure with `--pdump' to
-try testing it.
+Unfortunately, the portable dumper has not been completely finished
+for this release, and will not be used by default.  However, if you
+wish to experiment with it, or if you need to compile XEmacs on a new
+and unsupported platform, you can test it by configuring XEmacs with
+`--pdump' flag.
 
 ** Much effort has been invested to make XEmacs Lisp faster:
 
@@ -331,7 +395,7 @@ try testing it.
 This is especially the case when running a Mule-enabled XEmacs.
 
 A general overhaul of the lisp engine should produce a speedup of 1.4
-in a Latin-1 XEmacs, and 2.1 in a Mule XEmacs.  These numbers were
+in a non-Mule XEmacs, and 2.1 in a Mule XEmacs.  These numbers were
 obtained running `(byte-compile "simple.el")', which should be a
 pretty typical test of "pure" Lisp.
 
@@ -344,6 +408,9 @@ makes intensive use of hash tables.
 *** The garbage collector has been tuned, leading to a speedup of
 1.16.
 
+*** The byte-compiler and the byte-optimizer have been tuned to
+produce better code in many small ways.
+
 *** The family of functions that iterate over lists, like `memq', and
 `rassq', have been made a little faster (typically 1.3).
 
@@ -377,11 +444,42 @@ usage.
 The buffers-tab functionality and progress gauge have been implemented
 using this feature.
 
-** `user-init-file' and `user-init-directory' are now absolute
-file/directory names.  Previously, both variables used to be relative
-to (concat "~" init-file-user).  This turned out to be too complicated
-for most packages (and some core Lisp files) to use correctly.  Also,
-the `init-file-user' variable has been obsoleted in the process.
+** A new Windows installer, netinstall ported from Cygwin.
+
+Nearly complete automation of the XEmacs install process from
+ftp.xemacs.org.  Includes selection of Lisp packages to install, etc.
+
+** Syntax tables may now be specified for a part of a buffer by
+attaching the `syntax-table' property to an extent.  For compatibility
+with GNU Emacs, you may use the text-property interface to achieve the
+same result.
+
+** Case translation now supports international characters.
+
+*** Instead of being lists of 256-character strings, case tables are
+now opaque objects.  The interface to access them is almost the same,
+except it now works for international characters, and you can set the
+case pairs using `put-case-table-pair'.  `set-case-table' and friends
+still support the old list/string based interface for backward
+compatibility.
+
+*** As a consequence of this change, functions `downcase' and `upcase'
+as well as all the case-transformation commands now work with
+non-ASCII characters.  Built-in tables cover all the Latin character
+sets that we support.  If your language has a distinction between
+upper and lower case that is not handled by XEmacs/Mule, please let us
+know.
+
+*** The code that implements case-insensitive search has been modified
+to respect the case table settings.  This also applies to regexp
+search.
+
+** Values of variables `user-init-file' and `user-init-directory' are
+now absolute file/directory names.  Previously, both variables used to
+be relative to `(concat "~" init-file-user)'.  This turned out to be
+too complicated for most packages (and some core Lisp files) to use
+correctly.  Also, the `init-file-user' variable has been obsoleted in
+the process.
 
 The user-visible options like `-u' have not changed their behavior.
 
@@ -427,8 +525,9 @@ now take an additional argument which specifies the default value.  If
 this argument is non-nil, it should be a string; that string is used
 in two ways:
 
-  It is returned if the user enters empty input.
-  It is available through the history command M-n.
+ * It is returned if the user enters empty input.
+ * It is available as the logical "future" entry, by pressing the down
+   arrow.
 
 ** LDAP changes.
 
@@ -477,7 +576,7 @@ operation.
 ** `translate-region' has been improved in several ways.  Its TABLE
 argument used to be a 256-character string.  In addition to this, it
 can now also be a vector or a char-table, which makes the function
-useful for Mule, which it wasn't.  If TABLE a vector or a generic
+useful for Mule, which it wasn't.  If TABLE is a vector or a generic
 char-table, you can map characters to strings instead of to other
 characters.  For instance:
 
@@ -514,8 +613,12 @@ interned in the global obarray.  For example:
 
 This behavior is compatible with other code which treats symbols
 beginning with colon as keywords only if they are interned in the
-global obarray.  `keywordp' used to wrongly return t in both cases
-above.
+global obarray.  `keywordp' used to wrongly return t in both above
+cases.
+
+** The function `replace-in-string' has been rewritten to use
+`replace-match'.  This not only makes it much faster, but adds all the
+features of `replace-match'.
 
 ** New variables `this-command-properties' and
 `last-command-properties' are now available for communication between
@@ -529,8 +632,8 @@ only once, and automatically removes itself after the first time it
 has run.
 
 ** The descriptor that specifies the text of a menu item can now be an
-evaluated expression.  This makes this descriptor parallel with
-others, which can also be expressions.
+evaluated expression.  This makes it parallel with other descriptors,
+which can also be expressions.
 
 \f
 * Changes in XEmacs 21.0
@@ -1021,3 +1124,6 @@ configure command line to get it back.
 *** `Info-default-directory-list' is now obsolete.  If you want to
 change the path which XEmacs uses to search for info files, set
 `Info-directory-list' instead.
+
+\f
+* For older news, see the file ONEWS.
index 09f213b..f649172 100644 (file)
@@ -171,9 +171,11 @@ the server is restarted.
 A Unix-domain socket is used to communicate between \fIgnuclient\fP
 and \fIgnuserv\fP if the symbol UNIX_DOMAIN_SOCKETS is defined at the
 top of gnuserv.h.  A file called /tmp/gsrvdir????/gsrv is created for
-communication and if deleted will cause communication between server
-and client to fail.  Only the user running gnuserv will be able to
-connect to the socket.
+communication.  If the symbol USE_TMPDIR is set at the top of gnuserv.h,
+$TMPDIR, when set, is used instead of /tmp.  If that file is deleted,
+or TMPDIR has different values for the server and the client, communication
+between server and client will fail.  Only the user running gnuserv will be
+able to connect to the socket.
 .SH INTERNET-DOMAIN SOCKETS
 Internet-domain sockets are used to communicate between
 \fIgnuclient\fP and \fIgnuserv\fP if the symbol
index cf45be8..1924dd1 100644 (file)
@@ -1,3 +1,16 @@
+2001-04-14  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.2.47 "Zephir" is released.
+
+2000-08-01  Jon Schewe  <jpschewe@eggplant.mtu.net>
+
+       * gnuclient.c (filename_expand): Let Cygwin convert Windows path
+       to Unix.
+
+2001-03-23  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * gnuserv.h: Document TMPDIR lossage if client/server values differ.
+
 2001-03-21  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.46 "Urania" is released.
index 2b1e5d7..4ed986d 100644 (file)
@@ -48,6 +48,10 @@ Boston, MA 02111-1307, USA.
  * ../etc/gnuserv.README relative to the directory containing this file)
  */
 
+#ifdef  CYGWIN
+extern void cygwin_conv_to_posix_path(const char *path, char *posix_path);
+#endif
+
 #include "gnuserv.h"
 
 char gnuserv_version[] = "gnuclient version " GNUSERV_VERSION;
@@ -189,35 +193,26 @@ filename_expand (char *fullpath, char *filename)
   /* fullpath - returned full pathname */
   /* filename - filename to expand */
 {
-  int len;
+#ifdef  CYGWIN
+  char cygwinFilename[MAXPATHLEN+1];
+#endif
 
+  int len;
   fullpath[0] = '\0';
 
+#ifdef  CYGWIN
+  /*
+    If we're in cygwin, just convert it and let the unix stuff handle it.
+  */
+  cygwin_conv_to_posix_path(filename, cygwinFilename);
+  filename = cygwinFilename;
+#endif
+
   if (filename[0] && filename[0] == '/')
      {
        /* Absolute (unix-style) pathname.  Do nothing */
        strcat (fullpath, filename);
      }
-#ifdef  CYGWIN
-  else if (filename[0] && filename[0] == '\\' &&
-           filename[1] && filename[1] == '\\')
-    {
-      /* This path includes the server name (something like
-         "\\server\path"), so we assume it's absolute.  Do nothing to
-         it. */
-      strcat (fullpath, filename);
-    }
-  else if (filename[0] &&
-           filename[1] && filename[1] == ':' &&
-           filename[2] && filename[2] == '\\')
-    {
-      /* Absolute pathname with drive letter.  Convert "<drive>:"
-         to "//<drive>/". */
-      strcat (fullpath, "//");
-      strncat (fullpath, filename, 1);
-      strcat (fullpath, &filename[2]);
-    }
-#endif
   else
     {
       /* Assume relative Unix style path.  Get the current directory
index 05eed4a..6ee2f0b 100644 (file)
@@ -32,6 +32,9 @@
 
 #define GNUSERV_VERSION "3.12"
 
+/* Note: this setting can cause client-server connection failure if the
+ * value of TMPDIR is not shared by client and server at run-time.
+ */
 #define USE_TMPDIR
 
 #define PATCHLEVEL 2
index f061f67..a54b581 100644 (file)
@@ -2,6 +2,7 @@
 
 ;; Copyright (C) 1997 Free Software Foundation, Inc.
 ;; Copyright (C) 1992 by Sebastian Kremer <sk@thp.uni-koeln.de>
+;; Copyright (C) 2001 Ben Wing.
 
 ;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>
 ;; Maintainer: XEmacs Development Team
 ;; disk, in case NFS is slow.  The auto-save file used for
 ;;     /usr/foo/bar/baz.txt
 ;; will be
-;;     AUTOSAVE/#\!usr\!foo\!bar\!baz.txt#
+;;     AUTOSAVE/#=2Fusr=2Ffoo=2Fbar=2Fbaz.txt#"
 ;; assuming AUTOSAVE is the non-nil value of the variable
 ;; `auto-save-directory'.
 
-;; Takes care that autosave files for non-file-buffers (e.g. *mail*)
-;; from two simultaneous Emacses don't collide.
-
 ;; Autosaves even if the current directory is not writable.
 
 ;; Can limit autosave names to 14 characters using a hash function,
@@ -60,7 +58,7 @@
 ;;       (concat "/tmp/" (user-login-name) "-autosave/"))
 
 ;; If you don't want to save in /tmp (e.g., because it is swap
-;; mounted) but rather in ~/autosave/
+;; mounted) but rather in ~/.autosave/
 ;;   (setq auto-save-directory (expand-file-name "~/.autosave/"))
 
 ;; If you want to save each file in its own directory (the default)
@@ -144,7 +142,7 @@ a file named
 
 will have a longish filename like
 
-    AUTO-SAVE-DIRECTORY/#\\!home\\!sk\\!lib\\!emacs\\!lisp\\!auto-save.el#
+    AUTO-SAVE-DIRECTORY/#=2Fhome=2Fsk=2Flib=2Femacs=2Flisp=2Fauto-save.el#
 
 as auto save file.
 
@@ -222,12 +220,7 @@ created by you, never nil.")
 \f
 ;;; Computing an autosave name for a file and vice versa
 
-;; #### Now that this file is dumped, we should turn off the routine
-;; from files.el.  But it would make it harder to remove it!
-
-(defun make-auto-save-file-name (&optional file-name);; redefines files.el
-  ;; auto-save-file-name-p need not be redefined.
-
+(defun make-auto-save-file-name (&optional file-name)
   "Return file name to use for auto-saves of current buffer.
 Does not consider `auto-save-visited-file-name'; that is checked
 before calling this function.
@@ -285,8 +278,8 @@ See also function `auto-save-file-name-p'."
            (save-name (or file-name
                           ;; Prevent autosave errors.  Buffername
                           ;; (to become non-dir part of filename) will
-                          ;; be unslashified twice.  Don't care.
-                          (auto-save-unslashify-name (buffer-name))))
+                          ;; be escaped twice.  Don't care.
+                          (auto-save-escape-name (buffer-name))))
            (remote-p (and (stringp file-name)
                           (fboundp 'efs-ftp-path)
                           (efs-ftp-path file-name))))
@@ -316,12 +309,26 @@ See also function `auto-save-file-name-p'."
 
     (error (warn "Error caught in `make-auto-save-file-name':\n%s"
                 (error-message-string error-data))
-          (if buffer-file-name
-              (concat (file-name-directory buffer-file-name)
-                      "#"
-                      (file-name-nondirectory buffer-file-name)
-                      "#")
-            (expand-file-name (concat "#%" (buffer-name) "#"))))))
+          (let ((fname
+                 (if file-name
+                     (concat (file-name-directory file-name)
+                             "#"
+                             (file-name-nondirectory file-name)
+                             "#")
+                   (expand-file-name
+                    (concat "#%" (auto-save-escape-name (buffer-name))
+                            "#")))))
+            (if (or (file-writable-p fname)
+                    (file-exists-p fname))
+                fname
+              (expand-file-name (concat "~/"
+                                        (file-name-nondirectory fname))))))))
+
+(defun auto-save-file-name-p (filename)
+  "Return non-nil if FILENAME can be yielded by `make-auto-save-file-name'.
+FILENAME should lack slashes.
+You can redefine this for customization."
+  (string-match "\\`#.*#\\'" filename))
 
 (defun auto-save-original-name (savename)
   "Reverse of `make-auto-save-file-name'.
@@ -342,13 +349,13 @@ Hashed files are not understood, see `auto-save-hash-p'."
               (equal savedir
                      (expand-file-name auto-save-directory-fallback)))
           ;; it is of the `-fixed-directory' type
-          (auto-save-slashify-name (substring basename 1 -1)))
+          (auto-save-unescape-name (substring basename 1 -1)))
          (t
           ;; else it is of `-same-directory' type
           (concat savedir (substring basename 1 -1))))))
 
 (defun auto-save-name-in-fixed-directory (filename &optional prefix)
-  ;; Unslashify and enclose the whole FILENAME in `#' to make an auto
+  ;; Escape and enclose the whole FILENAME in `#' to make an auto
   ;; save file in the auto-save-directory, or if that is nil, in
   ;; auto-save-directory-fallback (which must be the name of an
   ;; existing directory).  If the results would be too long for 14
@@ -356,7 +363,7 @@ Hashed files are not understood, see `auto-save-hash-p'."
   ;; into a shorter name.
   ;; Optional PREFIX is string to use instead of "#" to prefix name.
   (let ((base-name (concat (or prefix "#")
-                          (auto-save-unslashify-name filename)
+                          (auto-save-escape-name filename)
                           "#")))
     (if (and auto-save-hash-p
             auto-save-hash-directory
@@ -386,34 +393,83 @@ Hashed files are not understood, see `auto-save-hash-p'."
            (file-name-nondirectory filename)
            "#")))
 
-;; #### The following two should probably use `replace-in-string'.
-
-(defun auto-save-unslashify-name (s)
-  ;;  "Quote any slashes in string S by replacing them with the two
-  ;;characters `\\!'.
-  ;;Also, replace any backslash by double backslash, to make it one-to-one."
-  (let ((limit 0))
-    (while (string-match "[/\\]" s limit)
-      (setq s (concat (substring s 0 (match-beginning 0))
-                     (if (string= (substring s
-                                             (match-beginning 0)
-                                             (match-end 0))
-                                  "/")
-                         "\\!"
-                       "\\\\")
-                     (substring s (match-end 0))))
-      (setq limit (1+ (match-end 0)))))
-  s)
-
-(defun auto-save-slashify-name (s)
-  ;;"Reverse of `auto-save-unslashify-name'."
-  (let (pos)
-    (while (setq pos (string-match "\\\\[\\!]" s pos))
-      (setq s (concat (substring s 0 pos)
-                     (if (eq ?! (aref s (1+ pos))) "/" "\\")
-                     (substring s (+ pos 2)))
-           pos (1+ pos))))
-  s)
+(defconst auto-save-reserved-chars
+  '(
+    ?\0 ?\1 ?\2 ?\3 ?\4 ?\5 ?\6 ?\7 ?\10 ?\11 ?\12 ?\13 ?\14 ?\15 ?\16
+    ?\17 ?\20 ?\21 ?\22 ?\23 ?\24 ?\25 ?\26 ?\27 ?\30 ?\31 ?\32 ?\33
+    ?\34 ?\35 ?\36 ?\37 ?\40 ?? ?* ?: ?< ?> ?| ?/ ?\\ ?& ?^ ?% ?= ?\")
+  "List of characters disallowed (or potentially disallowed) in filenames.
+Includes everything that can get us into trouble under MS Windows or Unix.")
+
+;; This code based on code in Bill Perry's url.el.
+    
+(defun auto-save-escape-name (str)
+  "Escape any evil nasty characters in a potential filename.
+Uses quoted-printable-style escaping -- e.g. the dreaded =3D.
+Does not use URL escaping (with %) because filenames beginning with #% are
+a special signal for non-file buffers."
+  (mapconcat
+   (function
+    (lambda (char)
+      (if (memq char auto-save-reserved-chars)
+         (if (< char 16)
+             (upcase (format "=0%x" char))
+           (upcase (format "=%x" char)))
+       (char-to-string char))))
+   str ""))
+
+(defun auto-save-unhex (x)
+  (if (> x ?9)
+      (if (>= x ?a)
+         (+ 10 (- x ?a))
+       (+ 10 (- x ?A)))
+    (- x ?0)))
+
+(defun auto-save-unescape-name (str)
+  "Undo any escaping of evil nasty characters in a file name.
+See `auto-save-escape-name'."
+  (setq str (or str ""))
+  (let ((tmp "")
+       (case-fold-search t))
+    (while (string-match "=[0-9a-f][0-9a-f]" str)
+      (let* ((start (match-beginning 0))
+            (ch1 (auto-save-unhex (elt str (+ start 1))))
+            (code (+ (* 16 ch1)
+                     (auto-save-unhex (elt str (+ start 2))))))
+       (setq tmp (concat tmp (substring str 0 start)
+                         (char-to-string code))
+             str (substring str (match-end 0)))))
+    (setq tmp (concat tmp str))
+    tmp))
+
+;; The old versions are below.
+
+;(defun auto-save-escape-name (s)
+;  ;;  "Quote any slashes in string S by replacing them with the two
+;  ;;characters `\\!'.
+;  ;;Also, replace any backslash by double backslash, to make it one-to-one."
+;  (let ((limit 0))
+;    (while (string-match "[/\\]" s limit)
+;      (setq s (concat (substring s 0 (match-beginning 0))
+;                    (if (string= (substring s
+;                                            (match-beginning 0)
+;                                            (match-end 0))
+;                                 "/")
+;                        "\\!"
+;                      "\\\\")
+;                    (substring s (match-end 0))))
+;      (setq limit (1+ (match-end 0)))))
+;  s)
+
+;(defun auto-save-unescape-name (s)
+;  ;;"Reverse of `auto-save-escape-name'."
+;  (let (pos)
+;    (while (setq pos (string-match "\\\\[\\!]" s pos))
+;      (setq s (concat (substring s 0 pos)
+;                    (if (eq ?! (aref s (1+ pos))) "/" "\\")
+;                    (substring s (+ pos 2)))
+;          pos (1+ pos))))
+;  s)
 
 \f
 ;;; Hashing for autosave names
@@ -454,7 +510,7 @@ Hashed files are not understood, see `auto-save-hash-p'."
 
 ;; This leaves two characters that could be used to wrap it in `#' or
 ;; make two filenames from it: one for autosaving, and another for a
-;; file containing the name of the autosaved filed, to make hashing
+;; file containing the name of the autosaved file, to make hashing
 ;; reversible.
 ;(defun auto-save-cyclic-hash-12 (s)
 ;  "Outputs the 12-characters ascii hex representation of a 6-bytes
@@ -518,8 +574,14 @@ Hashed files (see `auto-save-hash-p') are not understood, use
            (t
             (incf total)
             (with-output-to-temp-buffer "*Directory*"
-              (apply 'call-process "ls" nil standard-output nil
-                     "-l" afile (if file (list file))))
+              (buffer-disable-undo standard-output)
+              (save-excursion
+                (set-buffer "*Directory*")
+                (setq default-directory (file-name-directory afile))
+                (insert-directory afile "-l")
+                (when file
+                  (setq default-directory (file-name-directory file))
+                  (insert-directory file "-l"))))
             (if (yes-or-no-p (format "Recover %s from auto save file? "
                                      (or file "non-file buffer")))
                 (let* ((obuf (current-buffer)))
index c7e126d..51c8cc4 100644 (file)
@@ -4,7 +4,7 @@
 
 ;; Author: Adrian Aichner <adrian@xemacs.org>
 ;; Date: Sun., Apr. 20, 1997-2000.
-;; Version: $Revision: 1.5.2.9 $
+;; Version: $Revision: 1.8 $
 ;; Keywords: internal
 
 ;; This file is part of XEmacs.
index f591e82..dad9de8 100644 (file)
       (decf (nth 1 form) last)
       (butlast form))
 
-     ;; (- 0 x ...)  -->  (- (- x) ...)
-     ((and (eq 0 (nth 1 form)) (>= (length form) 3))
-      `(- (- ,(nth 2 form)) ,@(nthcdr 3 form)))
+     ;; (- 0 ...) -->
+     ((eq 0 (nth 1 form))
+      (case (length form)
+       ;; (- 0) --> 0
+       (2 0)
+       ;; (- 0 x)  -->  (- x)
+       (3 `(- ,(nth 2 form)))
+       ;; (- 0 x y ...)  -->  (- (- x) y ...)
+       (t `(- (- ,(nth 2 form)) ,@(nthcdr 3 form)))))
 
      (t (byte-optimize-predicate form)))))
 
index 03a9931..b142d15 100644 (file)
@@ -642,7 +642,9 @@ The keywords allowed are
                       (set-buffer-dedicated-frame newbuf frame)
                       (set-frame-property frame 'dialog-box-buffer newbuf)
                       (with-current-buffer newbuf
-                        (setq frame-title-format cl-title)
+                        ;; Should be frame specific, so
+                        ;; we don't do this for now.
+                        ;; (setq frame-title-format cl-title)
                         (make-local-hook 'delete-frame-hook)
                         (add-hook 'delete-frame-hook
                                   #'(lambda (frame)
index e7e769f..a764234 100644 (file)
@@ -1075,60 +1075,38 @@ part of the documentation of internal subroutines."
             (string-match "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'" doc))
        (setq doc (substring doc 0 (match-beginning 0))))
     doc))
-;  (let ((name-char "[-+a-zA-Z0-9_*]") (sym-char "[-+a-zA-Z0-9_:*]"))
-;    (list
-;     ;;
-;     ;; The symbol itself.
-;     (list (concat "\\`\\(" name-char "+\\)\\(:\\)?")
-;         '(1 (if (match-beginning 2)
-;                 'font-lock-function-name-face
-;               'font-lock-variable-name-face)
-;             nil t))
-;     ;;
-;     ;; Words inside `' which tend to be symbol names.
-;     (list (concat "`\\(" sym-char sym-char "+\\)'")
-;         1 '(prog1
-;                'font-lock-reference-face
-;              (add-list-mode-item (match-beginning 1)
-;                             (match-end 1)
-;                             nil
-;                             'help-follow-reference))
-;         t)
-;     ;;
-;     ;; CLisp `:' keywords as references.
-;     (list (concat "\\<:" sym-char "+\\>") 0 'font-lock-reference-face t)))
 
 ;; replacement for `princ' that puts the text in the specified face,
 ;; if possible
 (defun Help-princ-face (object face)
   (cond ((bufferp standard-output)
-        (let ((opoint (point standard-output)))
-          (princ object)
-          (put-nonduplicable-text-property opoint (point standard-output)
-                                           'face face standard-output)))
-       ((markerp standard-output)
-        (let ((buf (marker-buffer standard-output))
-              (pos (marker-position standard-output)))
-          (princ object)
-          (put-nonduplicable-text-property
-           pos (marker-position standard-output) 'face face buf)))
-       (t princ object)))
+        (let ((opoint (point standard-output)))
+          (princ object)
+          (put-nonduplicable-text-property opoint (point standard-output)
+                                           'face face standard-output)))
+       ((markerp standard-output)
+        (let ((buf (marker-buffer standard-output))
+              (pos (marker-position standard-output)))
+          (princ object)
+          (put-nonduplicable-text-property
+           pos (marker-position standard-output) 'face face buf)))
+       (t princ object)))
 
 ;; replacement for `prin1' that puts the text in the specified face,
 ;; if possible
 (defun Help-prin1-face (object face)
   (cond ((bufferp standard-output)
-        (let ((opoint (point standard-output)))
-          (prin1 object)
-          (put-nonduplicable-text-property opoint (point standard-output)
-                                           'face face standard-output)))
-       ((markerp standard-output)
-        (let ((buf (marker-buffer standard-output))
-              (pos (marker-position standard-output)))
-          (prin1 object)
-          (put-nonduplicable-text-property
-           pos (marker-position standard-output) 'face face buf)))
-       (t prin1 object)))
+        (let ((opoint (point standard-output)))
+          (prin1 object)
+          (put-nonduplicable-text-property opoint (point standard-output)
+                                           'face face standard-output)))
+       ((markerp standard-output)
+        (let ((buf (marker-buffer standard-output))
+              (pos (marker-position standard-output)))
+          (prin1 object)
+          (put-nonduplicable-text-property
+           pos (marker-position standard-output) 'face face buf)))
+       (t prin1 object)))
 
 (defvar help-symbol-regexp
   (let ((sym-char "[+a-zA-Z0-9_:*]")
@@ -1185,7 +1163,7 @@ part of the documentation of internal subroutines."
   ;; properties:
   ;; 1. mouse-face is 'highlight (so the extent gets highlighted on mouse over)
   ;; 2. help-symbol is the name of the symbol.
-  ;; 3. face is 'font-lock-reference-face.
+  ;; 3. face is 'hyper-apropos-hyperlink.
   ;; 4. context-menu is a list of context menu items, specific to whether
   ;;    the symbol is a function, variable, or both.
   ;; 5. activate-function will cause the function or variable to be described,
@@ -1207,7 +1185,7 @@ part of the documentation of internal subroutines."
            (let ((ex (make-extent b e)))
              (set-extent-property ex 'mouse-face 'highlight)
              (set-extent-property ex 'help-symbol sym)
-             (set-extent-property ex 'face 'font-lock-reference-face)
+             (set-extent-property ex 'face 'hyper-apropos-hyperlink)
              (set-extent-property
               ex 'context-menu
               (cond ((and var fun)
@@ -1292,7 +1270,8 @@ part of the documentation of internal subroutines."
     (if describe-function-show-arglist
        (let ((arglist (function-arglist function)))
          (when arglist
-           (Help-princ-face arglist 'font-lock-comment-face)
+           (require 'hyper-apropos)
+           (Help-princ-face arglist 'hyper-apropos-documentation)
            (terpri))))
     (terpri)
     (cond (kbd-macro-p
@@ -1434,7 +1413,7 @@ there is no variable around that point, nil is returned."
        (let ((print-escape-newlines t))
         (princ "`")
         ;; (Help-princ-face (symbol-name variable)
-        ;;               'font-lock-variable-name-face) overkill
+        ;;               'font-lock-variable-name-face) overkill
         (princ (symbol-name variable))
         (princ "' is ")
         (while (variable-alias variable)
@@ -1457,9 +1436,11 @@ there is no variable around that point, nil is returned."
           (if file-name
               (princ (format "  -- loaded from \"%s\"\n" file-name))))
         (princ "\nValue: ")
-        (if (not (boundp variable))
-            (Help-princ-face "void\n" 'font-lock-comment-face)
-          (Help-prin1-face (symbol-value variable) 'font-lock-comment-face)
+        (require 'hyper-apropos)
+        (if (not (boundp variable))
+            (Help-princ-face "void\n" 'hyper-apropos-documentation)
+          (Help-prin1-face (symbol-value variable)
+                           'hyper-apropos-documentation)
           (terpri))
         (terpri)
         (cond ((local-variable-p variable (current-buffer))
index 8ddc567..31f082f 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Created: Jan 1998
-;; Version: $Revision: 1.7.2.11 $
+;; Version: $Revision: 1.10 $
 ;; Keywords: help comm
 
 ;; This file is part of XEmacs
index 6ec4914..fa59466 100644 (file)
 ;; are ignored in completion,
 ;; making it more likely you will get a unique match.
 (setq completion-ignored-extensions
-             ;; this is way way way bogus.
-             ;; completely wtf?
-             ;; the only things that should be here are those that are
-             ;; (a) universally recognizable, and
-             ;; (b) obvious backup files, or
-             ;; (c) obvious binary files that are generated on a
-             ;;     PER-SOURCE-FILE basis, so that they will actually
-             ;;     cause annoyance.  This includes .exe files, e.g.
+      ;; this is way way way bogus.
+      ;; completely wtf?
+      ;; the only things that should be here are those that are
+      ;; (a) universally recognizable, and
+      ;; (b) obvious backup files, or
+      ;; (c) obvious binary files that are generated on a
+      ;;     PER-SOURCE-FILE basis, so that they will actually
+      ;;     cause annoyance.  This excludes executables (.exe, .com)
+      ;;     and libraries (.a, .lib, .dll).
 ;            '(".o" ".elc" "~" ".bin" ".lbin" ".fasl"
 ;              ".dvi" ".toc" ;".log"
 ;              ".aux" ".a" ".ln"
 ;              ".diff" ".oi" ".class")))
       '(".o" ".obj" ".elc" "~"
        ".bin" ".lbin" ;; #### these are doubtful, esp. the latter.
-       ".dvi";; possibly doubtful, too.
+       ".dvi" ;; possibly doubtful, too.
        ".class"))
 
 \f
index 54a82e8..7dab08c 100644 (file)
 
 ;;; Code:
 
-(defun menu-truncate-list (list n)
-  (if (<= (length list) n)
-      list
-    (butlast list (- (length list) n))))
+(defun Menubar-items-truncate-list (list n)
+  (mapcar #'(lambda (x)
+             (if (<= (length x) 50) x (concat "..." (substring x -50))))
+         (if (<= (length list) n)
+             list
+           (butlast list (- (length list) n)))))
 
 (defun submenu-generate-accelerator-spec (list &optional omit-chars-list)
   "Add auto-generated accelerator specifications to a submenu.
@@ -432,7 +434,7 @@ which will not be used as accelerators."
                   (mapcar #'(lambda (string)
                               (vector string
                                       (list 'grep string)))
-                          (menu-truncate-list grep-history 10)))))
+                          (Menubar-items-truncate-list grep-history 10)))))
             (append menu '("---") items))))
        ["%_Grep..." grep :active (fboundp 'grep)]
        ["%_Kill Grep" kill-compilation
@@ -540,7 +542,7 @@ which will not be used as accelerators."
                   (mapcar #'(lambda (string)
                               (vector string
                                       (list 'compile string)))
-                          (menu-truncate-list compile-history 10)))))
+                          (Menubar-items-truncate-list compile-history 10)))))
             (append menu '("---") items))))
        ["%_Compile..." compile :active (fboundp 'compile)]
        ["%_Repeat Compilation" recompile :active (fboundp 'recompile)]
index 73a67bd..6082627 100644 (file)
@@ -1,7 +1,57 @@
+2001-04-14  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.2.47 "Zephir" is released.
+
+2001-03-30  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * ChangeLog: Restore logs lost in the GTK merge.
+
 2001-03-21  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.46 "Urania" is released.
 
+2001-03-15  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * xlwradio.c: Revert gratuitous whitespace changes from GTK merge.
+
+2001-02-23  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.45 "Thelxepeia" is released.
+
+2001-02-16  Raymond Toy  <toy@rtp.ericsson.se>
+
+       * lwlib-Xaw.c: Always include ATHENA_AsciiText_h_ to get the
+       text-field widget.
+       (xaw_creation_table): Always include the text-field widget
+
+2001-02-08  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.44 "Thalia" is released.
+
+2001-02-06  Martin Buchholz  <martin@xemacs.org>
+
+       * xlwgauge.c:
+       * xlwgcs.c:
+       * xlwgcs.c (XtAllocateGC): Fix typo for X11R4.
+       * xlwgcs.h:
+       * xlwradio.c (RadioExpose):
+       * xlwcheckbox.c:
+       Remove use of BSD-specific types.
+       s/u_(char|short|int_long)/unsigned $1/g
+
+2001-02-05  Martin Buchholz  <martin@xemacs.org>
+
+       * lwlib-Xm.c (xm_update_one_value):
+       Obey the man page; use XtFree instead of free.
+
+2001-02-02  Martin Buchholz  <martin@xemacs.org>
+
+       * config.h.in: Use "..." to include config.h
+
+2001-01-26  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.43 "Terspichore" is released.
+
 2001-01-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.42 "Poseidon" is released.
index 74239eb..fc2f422 100644 (file)
@@ -1,3 +1,22 @@
+2001-04-14  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.2.47 "Zephir" is released.
+
+2001-03-30  Ben Wing  <ben@xemacs.org>
+
+       * internals\internals.texi:
+       * internals\internals.texi (Top):
+       * internals\internals.texi (Lucid Emacs):
+       * internals\internals.texi (XEmacs):
+       * internals\internals.texi (XEmacs From the Outside):
+       Bump version to 1.4 and fix this everywhere.  Document all
+       XEmacs releases up through 21.2.46.
+
+2001-03-16  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * lispref/postgresql.texi (libpq Lisp Symbols and DataTypes): Save
+       result of INSERT in R in pq-cmd-status example.
+
 2001-03-21  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.46 "Urania" is released.
index 8df0772..e4e05f9 100644 (file)
@@ -3,7 +3,7 @@
 @setfilename ../info/info.info
 @settitle Info
 @comment %**end of header
-@comment $Id: info.texi,v 1.4.2.6 2000/11/29 08:27:28 stephent Exp $
+@comment $Id: info.texi,v 1.8 2001/04/12 18:22:00 michaels Exp $
 
 @dircategory Texinfo documentation system
 @direntry
index f82c7ee..0c2a707 100644 (file)
@@ -63,7 +63,7 @@ instead of in the original English.
 
 @titlepage
 @title XEmacs Internals Manual
-@subtitle Version 1.3, August 1999
+@subtitle Version 1.4, March 2001
 
 @author Ben Wing
 @author Martin Buchholz
@@ -74,14 +74,14 @@ instead of in the original English.
 @vskip 0pt plus 1fill
 
 @noindent
-Copyright @copyright{} 1992 - 1996 Ben Wing. @*
+Copyright @copyright{} 1992 - 1996, 2001 Ben Wing. @*
 Copyright @copyright{} 1996, 1997 Sun Microsystems, Inc. @*
 Copyright @copyright{} 1994 - 1998 Free Software Foundation. @*
 Copyright @copyright{} 1994, 1995 Board of Trustees, University of Illinois.
 
 @sp 2
-Version 1.3 @*
-August 1999.@*
+Version 1.4 @*
+March 2001.@*
 
 Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
@@ -105,7 +105,7 @@ instead of in the original English.
 @node Top, A History of Emacs, (dir), (dir)
 
 @ifinfo
-This Info file contains v1.3 of the XEmacs Internals Manual, August 1999.
+This Info file contains v1.4 of the XEmacs Internals Manual, March 2001.
 @end ifinfo
 
 @menu
@@ -497,7 +497,7 @@ release their own version of Emacs, which became Lucid Emacs 19.0.
 and Eric Benson, and the work was later taken over by Jamie Zawinski,
 who became ``Mr. Lucid Emacs'' for many releases.
 
-  A time line for Lucid Emacs/XEmacs is
+  A time line for Lucid Emacs is
 
 @itemize @bullet
 @item
@@ -545,7 +545,39 @@ version 19.16 released October 31, 1997.
 @item
 version 20.3 (the first stable version of XEmacs 20.x) released November 30,
 1997.
+@item
 version 20.4 released February 28, 1998.
+@item
+version 21.1.2 released May 14, 1999. (The version naming scheme was
+changed at this point: [a] the second version number is odd for stable
+versions, even for beta versions; [b] a third version number is added,
+replacing the "beta xxx" ending for beta versions and allowing for
+periodic maintenance releases for stable versions.  Therefore, 21.0 was
+never "officially" released; similarly for 21.2, etc.)
+@item
+version 21.1.3 released June 26, 1999.
+@item
+version 21.1.4 released July 8, 1999.
+@item
+version 21.1.6 released August 14, 1999. (There was no 21.1.5.)
+@item
+version 21.1.7 released September 26, 1999.
+@item
+version 21.1.8 released November 2, 1999.
+@item
+version 21.1.9 released February 13, 2000.
+@item
+version 21.1.10 released May 7, 2000.
+@item
+version 21.1.10a released June 24, 2000.
+@item
+version 21.1.11 released July 18, 2000.
+@item
+version 21.1.12 released August 5, 2000.
+@item
+version 21.1.13 released January 7, 2001.
+@item
+version 21.1.14 released January 27, 2001.
 @end itemize
 
 @node GNU Emacs 19
@@ -724,6 +756,157 @@ have consistently failed.
 
   A more detailed history is contained in the XEmacs About page.
 
+  A time line for XEmacs is
+
+@itemize @bullet
+@item
+version 19.11 (first XEmacs) released September 13, 1994.
+@item
+version 19.12 released June 23, 1995.
+@item
+version 19.13 released September 1, 1995.
+@item
+version 19.14 released June 23, 1996.
+@item
+version 20.0 released February 9, 1997.
+@item
+version 19.15 released March 28, 1997.
+@item
+version 20.1 (not released to the net) April 15, 1997.
+@item
+version 20.2 released May 16, 1997.
+@item
+version 19.16 released October 31, 1997.
+@item
+version 20.3 (the first stable version of XEmacs 20.x) released November 30,
+1997.
+@item
+version 20.4 released February 28, 1998.
+@item
+version 21.0.60 released December 10, 1998. (The version naming scheme was
+changed at this point: [a] the second version number is odd for stable
+versions, even for beta versions; [b] a third version number is added,
+replacing the "beta xxx" ending for beta versions and allowing for
+periodic maintenance releases for stable versions.  Therefore, 21.0 was
+never "officially" released; similarly for 21.2, etc.)
+@item
+version 21.0.61 released January 4, 1999.
+@item
+version 21.0.63 released February 3, 1999.
+@item
+version 21.0.64 released March 1, 1999.
+@item
+version 21.0.65 released March 5, 1999.
+@item
+version 21.0.66 released March 12, 1999.
+@item
+version 21.0.67 released March 25, 1999.
+@item
+version 21.1.2 released May 14, 1999. (This is the followup to 21.0.67.
+The second version number was bumped to indicate the beginning of the
+"stable" series.)
+@item
+version 21.1.3 released June 26, 1999.
+@item
+version 21.1.4 released July 8, 1999.
+@item
+version 21.1.6 released August 14, 1999. (There was no 21.1.5.)
+@item
+version 21.1.7 released September 26, 1999.
+@item
+version 21.1.8 released November 2, 1999.
+@item
+version 21.1.9 released February 13, 2000.
+@item
+version 21.1.10 released May 7, 2000.
+@item
+version 21.1.10a released June 24, 2000.
+@item
+version 21.1.11 released July 18, 2000.
+@item
+version 21.1.12 released August 5, 2000.
+@item
+version 21.1.13 released January 7, 2001.
+@item
+version 21.1.14 released January 27, 2001.
+@item
+version 21.2.9 released February 3, 1999.
+@item
+version 21.2.10 released February 5, 1999.
+@item
+version 21.2.11 released March 1, 1999.
+@item
+version 21.2.12 released March 5, 1999.
+@item
+version 21.2.13 released March 12, 1999.
+@item
+version 21.2.14 released May 14, 1999.
+@item
+version 21.2.15 released June 4, 1999.
+@item
+version 21.2.16 released June 11, 1999.
+@item
+version 21.2.17 released June 22, 1999.
+@item
+version 21.2.18 released July 14, 1999.
+@item
+version 21.2.19 released July 30, 1999.
+@item
+version 21.2.20 released November 10, 1999.
+@item
+version 21.2.21 released November 28, 1999.
+@item
+version 21.2.22 released November 29, 1999.
+@item
+version 21.2.23 released December 7, 1999.
+@item
+version 21.2.24 released December 14, 1999.
+@item
+version 21.2.25 released December 24, 1999.
+@item
+version 21.2.26 released December 31, 1999.
+@item
+version 21.2.27 released January 18, 2000.
+@item
+version 21.2.28 released February 7, 2000.
+@item
+version 21.2.29 released February 16, 2000.
+@item
+version 21.2.30 released February 21, 2000.
+@item
+version 21.2.31 released February 23, 2000.
+@item
+version 21.2.32 released March 20, 2000.
+@item
+version 21.2.33 released May 1, 2000.
+@item
+version 21.2.34 released May 28, 2000.
+@item
+version 21.2.35 released July 19, 2000.
+@item
+version 21.2.36 released October 4, 2000.
+@item
+version 21.2.37 released November 14, 2000.
+@item
+version 21.2.38 released December 5, 2000.
+@item
+version 21.2.39 released December 31, 2000.
+@item
+version 21.2.40 released January 8, 2001.
+@item
+version 21.2.41 released January 17, 2001.
+@item
+version 21.2.42 released January 20, 2001.
+@item
+version 21.2.43 released January 26, 2001.
+@item
+version 21.2.44 released February 8, 2001.
+@item
+version 21.2.45 released February 23, 2001.
+@item
+version 21.2.46 released March 21, 2001.
+@end itemize
+
 @node XEmacs From the Outside, The Lisp Language, A History of Emacs, Top
 @chapter XEmacs From the Outside
 @cindex XEmacs from the outside
index d683f64..b9e80cb 100644 (file)
@@ -1,5 +1,5 @@
 \input texinfo.tex    @c -*-texinfo-*-
-@c $Id: texinfo.texi,v 1.8.2.7 2001/01/09 20:52:53 adrian Exp $
+@c $Id: texinfo.texi,v 1.14 2001/04/12 18:22:02 michaels Exp $
 @c %**start of header
 
 @c All text is ignored before the setfilename.
index 9d63f48..6e4d628 100644 (file)
@@ -7,7 +7,7 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/03/08 08:19:10 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/04/12 18:22:04 $
 @sp 1
 @author Tony Rossini <rossini@@biostat.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
index 80b62f8..d15f32b 100644 (file)
@@ -1,3 +1,11 @@
+2001-04-14  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.2.47 "Zephir" is released.
+
+2001-03-14  Craig Lanning  <CraigL@Knology.net>
+
+       * minitar.c: Clean up some compiler warnings.
+
 2001-03-21  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.46 "Urania" is released.
index 2fa8b52..a903c6d 100644 (file)
 
 #include <stdio.h>
 #include <errno.h>
+#include <string.h>
+#include <io.h>
 
 #include <zlib.h>
 
+static int
 Usage(char *name)
 {
   fprintf(stderr,"Usage: %s file.tar.gz [base-dir]\n",name);
@@ -28,7 +31,8 @@ Usage(char *name)
 #define BLOCKSIZE 512
 #define MAXNAMELEN 1024
 
-int octal(char *str)
+static int
+octal(char *str)
 {
   int ret = -1;
   sscanf(str,"%o",&ret);
@@ -39,7 +43,8 @@ int octal(char *str)
    the final component is assumed to be a file, rather than a
    path component, so it is not created as a directory */
 
-int makepath(char *path)
+static int
+makepath(char *path)
 {
   char tmp[MAXNAMELEN];
   char *cp;
@@ -53,7 +58,11 @@ int makepath(char *path)
     tmp[cp-path] = '\0';
     if (strlen(tmp) == 0)
       continue;
+#ifdef WIN32_NATIVE
+    if (mkdir(tmp)){
+#else
     if (mkdir(tmp,0777)){
+#endif
       if (errno == EEXIST)
        continue;
       else
@@ -66,12 +75,12 @@ int makepath(char *path)
   
                     
 
+int
 main(int argc, char **argv)
 {
   char fullname[MAXNAMELEN];
   char *basedir = ".";
   char *tarfile;
-  char *cp;
   int size;
   char osize[13];
   char name[101];
index f1462fe..b034860 100644 (file)
@@ -1201,6 +1201,19 @@ may remhash or puthash the entry currently being processed by FUNCTION.
   return Qnil;
 }
 
+/* #### If the Lisp function being called does a puthash and this
+   #### causes the hash table to be resized, the results will be quite
+   #### random and we will likely crash.  To fix this, either set a
+   #### flag in the hash table while we're mapping and signal an error
+   #### when new entries are added, or fix things to make this
+   #### operation work properly, like this: Store two hash tables in
+   #### each hash table object -- the second one is written to when
+   #### you do a puthash inside of a mapping operation, and the
+   #### various operations need to check both hash tables for entries.
+   #### As soon as the last maphash over a particular hash table
+   #### object terminates, the entries in the second table are added
+   #### to the first (using an unwind-protect). --ben */
+
 /* Map *C* function FUNCTION over the elements of a lisp hash table. */
 void
 elisp_maphash (maphash_function_t function,
index fec746e..1350d26 100644 (file)
@@ -2745,7 +2745,9 @@ mswindows_wnd_proc (HWND hwnd, UINT message_, WPARAM wParam, LPARAM lParam)
        int delta = (short) HIWORD (wParam); /* Wheel rotation amount */
        struct gcpro gcpro1, gcpro2;
 
-       if (mswindows_handle_mousewheel_event (mswindows_find_frame (hwnd), keys,  delta))
+       if (mswindows_handle_mousewheel_event (mswindows_find_frame (hwnd),
+                                              keys, delta,
+                                              MAKEPOINTS (lParam)))
          {
            GCPRO2 (emacs_event, fobj);
            mswindows_pump_outstanding_events ();       /* Can GC */
index 9ea792d..60e60e4 100644 (file)
@@ -199,10 +199,9 @@ mswindows_init_frame_1 (struct frame *f, Lisp_Object props)
 
   hwnd = CreateWindowEx (exstyle,
                         XEMACS_CLASS,
-                        STRINGP(f->name) ? XSTRING_DATA(f->name) :
-                        (STRINGP(name) ?
-                         (const Extbyte*)XSTRING_DATA(name) :
-                         (const Extbyte*)XEMACS_CLASS),
+                        STRINGP (f->name) ? (LPCTSTR) XSTRING_DATA (f->name) :
+                        (STRINGP (name) ? (LPCTSTR) XSTRING_DATA (name) :
+                         XEMACS_CLASS),
                         style,
                         rect_default.left, rect_default.top,
                         rect_default.width, rect_default.height,
index 4aa26f7..89f705e 100644 (file)
@@ -2990,7 +2990,8 @@ faster.
      (function, keymap, sort_first))
 {
   /* This function can GC */
-  struct gcpro gcpro1, gcpro2;
+  struct gcpro gcpro1, gcpro2, gcpro3;
+  Lisp_Object table = Qnil;
 
  /* tolerate obviously transposed args */
   if (!NILP (Fkeymapp (function)))
@@ -2999,9 +3000,17 @@ faster.
       function = keymap;
       keymap = tmp;
     }
-  GCPRO2 (function, keymap);
+
+  GCPRO3 (function, keymap, table);
   keymap = get_keymap (keymap, 1, 1);
-  map_keymap (XKEYMAP (keymap)->table, !NILP (sort_first),
+
+  /* elisp_maphash does not allow mapping functions to modify the hash
+     table being mapped over.  Since map-keymap explicitly allows a
+     mapping function to modify KEYMAP, we map over a copy of the hash
+     table instead.  */
+  table = Fcopy_hash_table (XKEYMAP (keymap)->table);
+
+  map_keymap (table, !NILP (sort_first),
              map_keymap_mapper, LISP_TO_VOID (function));
   UNGCPRO;
   return Qnil;
index d0d60d7..d48425d 100644 (file)
@@ -723,6 +723,7 @@ the actions of menu traversal keys in a commonly used PC operating system.
 */ );
 
   Fprovide (intern ("menubar"));
+  Fprovide (intern ("menu-accelerator-support"));
 }
 
 void
index 4b01e7f..5819001 100644 (file)
@@ -113,7 +113,8 @@ double logb (double);
 # endif /* CYGWIN_VERSION_DLL_MAJOR <= 20 */
 
 /* Still left out of 1.1! */
-double logb (double);
+double logb (double);
+int killpg (int pgrp, int sig);
 
 #endif
 
index 832fcbd..d323d9a 100644 (file)
@@ -266,7 +266,7 @@ mswindows_handle_scrollbar_event (HWND hwnd, int code, int pos)
 }
 
 static int
-can_scroll(struct scrollbar_instance* scrollbar)
+can_scroll (struct scrollbar_instance* scrollbar)
 {
   return scrollbar != NULL
        && IsWindowVisible (SCROLLBAR_MSW_HANDLE (scrollbar))
@@ -274,15 +274,48 @@ can_scroll(struct scrollbar_instance* scrollbar)
 }
 
 int
-mswindows_handle_mousewheel_event (Lisp_Object frame, int keys, int delta)
+mswindows_handle_mousewheel_event (Lisp_Object frame, int keys, int delta,
+                                  POINTS where)
 {
   int hasVertBar, hasHorzBar;  /* Indicates presence of scroll bars */
   unsigned wheelScrollLines = 0; /* Number of lines per wheel notch */
+  Lisp_Object win;
+  struct window_mirror *mirror;
+  POINT donde_esta;
 
-  /* Find the currently selected window */
-  Lisp_Object win = FRAME_SELECTED_WINDOW (XFRAME (frame));
-  struct window* w = XWINDOW (win);
-  struct window_mirror* mirror = find_window_mirror (w);
+  donde_esta.x = where.x;
+  donde_esta.y = where.y;
+
+  ScreenToClient (FRAME_MSWINDOWS_HANDLE (XFRAME (frame)), &donde_esta);
+
+  /* Find the window to scroll */
+  {
+    int mene, _mene, tekel, upharsin;
+    Bufpos mens, sana;
+    Charcount in;
+    Lisp_Object corpore, sano;
+    struct window *needle_in_haystack;
+
+    // stderr_out ("donde_esta: %d %d\n", donde_esta.x, donde_esta.y);
+    pixel_to_glyph_translation (XFRAME (frame), donde_esta.x, donde_esta.y,
+                               &mene, &_mene, &tekel, &upharsin,
+                               &needle_in_haystack,
+                               &mens, &sana, &in, &corpore, &sano);
+
+    if (needle_in_haystack)
+      {
+       XSETWINDOW (win, needle_in_haystack);
+       // stderr_out ("found needle\n");
+       // debug_print (win);
+      }
+    else
+      {
+       win = FRAME_SELECTED_WINDOW (XFRAME (frame));
+       needle_in_haystack = XWINDOW (win);
+      }
+
+    mirror = find_window_mirror (needle_in_haystack);
+  }
 
   /* Check that there is something to scroll */
   hasVertBar = can_scroll (mirror->scrollbar_vertical_instance);
index a7f1e8b..9b4338e 100644 (file)
@@ -57,7 +57,8 @@ EMACS_INT mswindows_window_is_scrollbar (struct frame *f, Window win);
      */
 
 void mswindows_handle_scrollbar_event (HWND hwnd, int code, int pos);
-int mswindows_handle_mousewheel_event (Lisp_Object frame, int keys, int delta);
+int mswindows_handle_mousewheel_event (Lisp_Object frame, int keys, int delta,
+                                      POINTS where);
 
 #endif /* HAVE_MS_WINDOWS and HAVE_SCROLLBARS */
 #endif /* INCLUDED_scrollbar_msw_h_ */
index 57d1848..f1ead77 100644 (file)
@@ -1,3 +1,12 @@
+2001-04-14  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.2.47 "Zephir" is released.
+
+2001-03-23  Martin Buchholz  <martin@xemacs.org>
+
+       * automated/lisp-tests.el:
+       Add test for mis-byte-compilation of (- 0 x).
+
 2001-03-21  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.46 "Urania" is released.
index 8f4bbfb..b2b6077 100644 (file)
   (Assert (= (- one) -1))
   (Assert (= (- one one) 0))
   (Assert (= (- one one one) -1))
+  (Assert (= (- 0 one) -1))
+  (Assert (= (- 0 one one) -2))
   (Assert (= (+ one 1) 2))
   (dolist (zero '(0 0.0 ?\0))
     (Assert (= (+ 1 zero) 1))
index 77efe2a..282b647 100644 (file)
@@ -1,9 +1,9 @@
 #!/bin/sh
-emacs_is_beta=t
+emacs_is_beta=
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=46
-xemacs_codename="Urania"
+emacs_beta_version=47
+xemacs_codename="Zephir"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=8