-*- indented-text -*-
+to 21.2.16 "Sumida"
+-- make selection more mswindows conformant.
+-- Make customize use specifiers from Jan Vroonhof
+-- Cyrillic CCL crash fix from MORIOKA Tomohiko
+-- DEC OSF Build fix and miscellaneous Lisp fix from Steve Baur
+-- raw-text coding system synch from MORIOKA Tomohiko
+
 to 21.2.15 "Sakuragawa"
 -- new self tests from Oscar Figueiredo and Hrvoje Niksic
 -- Miscellaneous bug fixes from Yoshiki Hayashi, Jerry James, Hirokazu FUKUI,
 
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
 1999-06-04  SL Baur  <steve@steve1.m17n.org>
 
        * configure.in (CPP): Correct test for locating $site_prefix
 
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: _dynodump.h,v 1.3 1997/05/29 04:22:29 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: _dynodump.h,v 1.5 1996/05/23 18:39:07 georgn Exp $ - SMI"
 
 #ifndef        _DYNODUMP_DOT_H
 #define        _DYNODUMP_DOT_H
 
  * 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 1998/03/31 20:10:55 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: dynodump.c,v 1.8 1996/05/23 18:39:21 georgn Exp $ - SMI"
 
 #define __EXTENSIONS__ 1
 
 
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: _relocate.c,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: _relocate.c,v 1.4 1995/06/26 20:12:41 georgn Exp $ - SMI"
 
 /* LINTLIBRARY */
 
 
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: machdep.h,v 1.2 1995/02/16 22:58:43 georgn Exp $ - SMI"
 
 /*
  * Global include file for all sgs Intel machine dependent macros, constants
 
  * Mountain View, California 94043
  */
 
-#pragma ident "@(#) $Id: _relocate.c,v 1.4 1998/03/31 20:10:55 steve Exp $ - SMI"
+#pragma ident "@(#) $Id: _relocate.c,v 1.3 1995/06/26 20:16:39 georgn Exp $ - SMI"
 
 /* LINTLIBRARY */
 
 
  * Mountain View, California 94043
  */
 
-#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:20 steve Exp $ - SMI"
+#pragma ident "@(#) $Id: machdep.h,v 1.2 1995/02/16 22:58:49 georgn Exp $ - SMI"
 
 /*
  * Global include file for all sgs PowerPC machine dependent macros, constants
 
 /*
  * Update the value of the `_edata' and `_end' symbols.
  */
-#pragma ident  "@(#) $Id: _relocate.c,v 1.4 1998/03/31 20:10:55 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: _relocate.c,v 1.4 1995/06/26 20:13:26 georgn Exp $ - SMI"
 
 #include       <libelf.h>
 #include       <string.h>
 
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:26 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: machdep.h,v 1.2 1995/02/16 22:58:55 georgn Exp $ - SMI"
 
 /*
  * Global include file for all sgs SPARC machine dependent macros, constants
 
 /*
  * Update the value of the `_edata' and `_end' symbols.
  */
-#pragma ident  "@(#) $Id: syms.c,v 1.3 1997/05/29 04:22:30 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: syms.c,v 1.2 1995/03/06 22:39:22 georgn Exp $ - SMI"
 
 #include       <libelf.h>
 #include       <string.h>
 
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
 1999-06-04  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.15 is released
 
 
 Report bugs to <bug-gnu-emacs@prep.ai.mit.edu>.'
 
-Id='$Id: rcs2log,v 1.2 1997/07/09 04:31:03 steve Exp $'
+Id='$Id: rcs2log,v 1.37 1997/03/21 22:19:30 eggert Exp $'
 
 # Copyright 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 
 
        * mule/cyrillic.el (cyrillic-koi8-r-decode-table): Use NBSP of ISO
        8859-5 instead of ISO 8859-1.
 
+1999-06-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * files.el (insert-file-contents-literally): Treat file as binary;
+       call file-name-handlers. [sync with Emacs 20.3.10]
+
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
 1999-06-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
        * mule/cyrillic.el (cyrillic-koi8-r-decode-table): Set 32 for
        missing characters to avoid crash.
 
-1999-06-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
+1999-06-09  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
-       * files.el (insert-file-contents-literally): Treat file as binary;
-       call file-name-handlers. [sync with Emacs 20.3.10]
+       * coding.el (set-terminal-coding-system): Only set the console
+       coding system on the selected console if it is a tty.
+
+1999-06-10  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * cus-face.el: 
+       * cus-edit.el: 
+       * faces.el: 
+       (custom): 
+       (face-spec-set): 
+       * faces.el (frob-face-property): 
+       * font-menu.el (font-menu-set-font): 
+                 Actually apply changes from 1999-03-17
+
+1999-06-10  Andy Piper  <andy@xemacs.org>
+
+       * select.el (get-selection): abstract out non error-signalling
+       part.
+       (get-selection-no-error): get-selection without signalling an
+       error.
+       (selection-is-clipboard-p): new variable. controls whether the
+       selection sets the clipboard.
+       (own-selection): use it.
+
+       * mouse.el (insert-selection): fallback to clipboard after trying
+       primary selection and cutbuffer.
+
+1999-06-05  Andy Piper  <andy@xemacs.org>
+
+       * x-select.el (xselect-kill-buffer-hook-1): use generalised
+       selection functions.
 
 1999-06-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
 
   (interactive "zterminal-coding-system: ")
   (get-coding-system coding-system) ; correctness check
   (setq terminal-coding-system coding-system)
-  (set-console-tty-coding-system (device-console) terminal-coding-system)
+  ; #### should this affect all current tty consoles ?
+  (if (eq (device-type) 'tty)
+      (set-console-tty-coding-system (device-console) terminal-coding-system))
   (redraw-modeline t))
 
 (defun set-pathname-coding-system (coding-system)
 
             (unless (widget-get widget :custom-form)
                 (widget-put widget :custom-form custom-face-default-form))
             (let* ((symbol (widget-value widget))
-                   (spec (or (get symbol 'customized-face)
-                             (get symbol 'saved-face)
-                             (get symbol 'face-defface-spec)
-                             ;; Attempt to construct it.
-                             (list (list t (face-custom-attributes-get
-                                            symbol (selected-frame))))))
+                   (spec (custom-face-get-spec symbol))
                    (form (widget-get widget :custom-form))
                    (indent (widget-get widget :indent))
                    (edit (widget-create-child-and-convert
         (child (car (widget-get widget :children)))
         (value (widget-value child)))
     (put symbol 'customized-face value)
-    (face-spec-set symbol value)
+    (face-spec-set symbol value nil '(custom))
     (custom-face-state-set widget)
     (custom-redraw-magic widget)))
 
   (let* ((symbol (widget-value widget))
         (child (car (widget-get widget :children)))
         (value (widget-value child)))
-    (face-spec-set symbol value)
+    (face-spec-set symbol value nil '(custom))
     (put symbol 'saved-face value)
     (put symbol 'customized-face nil)
     (custom-save-all)
     (unless value
       (signal 'error (list "No saved value for this face" symbol)))
     (put symbol 'customized-face nil)
-    (face-spec-set symbol value)
+    (face-spec-set symbol value nil '(custom))
     (widget-value-set child value)
     (custom-face-state-set widget)
     (custom-redraw-magic widget)))
     (when (get symbol 'saved-face)
       (put symbol 'saved-face nil)
       (custom-save-all))
-    (face-spec-set symbol value)
+    (face-spec-set symbol value nil '(custom))
     (widget-value-set child value)
     (custom-face-state-set widget)
     (custom-redraw-magic widget)))
 
            frame)
        ;; Create global face.
        (make-empty-face face)
-       (face-display-set face value)
+       (face-display-set face value nil '(custom))
        ;; Create frame local faces
        (while frames
          (setq frame (car frames)
                frames (cdr frames))
-         (face-display-set face value frame))
+         (face-display-set face value frame '(custom)))
        (init-face-from-resources face)))
     (when (and doc (null (face-doc-string face)))
       (set-face-doc-string face doc))
 The GET function should take two arguments, the face to examine, and
 optonally the frame where the face should be examined.")
 
-(defun face-custom-attributes-set (face frame &rest atts)
+(defun face-custom-attributes-set (face frame tags &rest atts)
   "For FACE on FRAME set the attributes [KEYWORD VALUE]....
 Each keyword should be listed in `custom-face-attributes'.
 
           (fun (nth 2 (assq name custom-face-attributes))))
       (setq atts (cdr (cdr atts)))
       (condition-case nil
-         (funcall fun face value frame)
+         (funcall fun face value frame tags)
        (error nil)))))
 
 (defun face-custom-attributes-get (face frame)
       (list (list t (face-custom-attributes-get
                     symbol (selected-frame))))))
 
-(defun custom-set-face-bold (face value &optional frame)
+(defun custom-set-face-bold (face value &optional frame tags)
   "Set the bold property of FACE to VALUE."
   (if value
-      (make-face-bold face frame)
-    (make-face-unbold face frame)))
+      (make-face-bold face frame tags)
+    (make-face-unbold face frame tags)))
 
 ;; Really, we should get rid of these font.el dependencies...  They
 ;; are still presenting a problem with dumping the faces (font.el is
         (fontobj (font-create-object font)))
     (font-bold-p fontobj)))
 
-(defun custom-set-face-italic (face value &optional frame)
+(defun custom-set-face-italic (face value &optional frame tags)
   "Set the italic property of FACE to VALUE."
   (if value
-      (make-face-italic face frame)
-    (make-face-unitalic face frame)))
+      (make-face-italic face frame tags)
+    (make-face-unitalic face frame tags)))
 
 (defun custom-face-italic (face &rest args)
   "Return non-nil if the font of FACE is italic."
-  (let* ((font (apply 'face-font-name face args))
+  (let* ((font (apply 'face-font-name face))
         ;; Gag
         (fontobj (font-create-object font)))
     (font-italic-p fontobj)))
     (and image 
         (image-instance-file-name image))))
 
-(defun custom-set-face-font-size (face size &rest args)
+(defun custom-set-face-font-size (face size &optional locale tags)
   "Set the font of FACE to SIZE"
-  (let* ((font (apply 'face-font-name face args))
+  (let* ((font (apply 'face-font-name face locale))
         ;; Gag
         (fontobj (font-create-object font)))
     (set-font-size fontobj size)
-    (apply 'font-set-face-font face fontobj args)))
+    (apply 'font-set-face-font face fontobj locale tags)))
 
 (defun custom-face-font-size (face &rest args)
   "Return the size of the font of FACE as a string."
         (fontobj (font-create-object font)))
     (format "%s" (font-size fontobj))))
 
-(defun custom-set-face-font-family (face family &rest args)
+(defun custom-set-face-font-family (face family &optional locale tags)
   "Set the font of FACE to FAMILY."
-  (let* ((font (apply 'face-font-name face args))
+  (let* ((font (apply 'face-font-name face locale))
         ;; Gag
         (fontobj (font-create-object font)))
     (set-font-family fontobj family)
-    (apply 'font-set-face-font face fontobj args)))
+    (apply 'font-set-face-font face fontobj locale tags)))
 
 (defun custom-face-font-family (face &rest args)
   "Return the name of the font family of FACE."
   (let ((spec (face-spec-update-all-matching (custom-face-get-spec face)
                                             display plist)))
     (put face 'customized-face spec)
-    (face-spec-set face spec)))
+    (face-spec-set face spec nil '(custom))))
 
 ;;; Initializing.
 
            (when (or now (find-face face))
              (unless (find-face face)
                (make-empty-face face))
-             (face-spec-set face spec))
+             (face-spec-set face spec nil '(custom)))
            (setq args (cdr args)))
        ;; Old format, a plist of FACE SPEC pairs.
        (let ((face (nth 0 args))
 
 ;; WE DEMAND LEXICAL SCOPING!!!
 ;; WE DEMAND LEXICAL SCOPING!!!
 ;; WE DEMAND LEXICAL SCOPING!!!
-(defun frob-face-property (face property func &optional locale)
+(defun frob-face-property (face property func &optional locale tags)
   "Change the specifier for FACE's PROPERTY according to FUNC, in LOCALE.
 This function is ugly and messy and is primarily used as an internal
 helper function for `make-face-bold' et al., so you probably don't
 the specification; otherwise, the process just outlined is
 iterated over each existing device and the concatenated results
 substituted for the specification."
-  (let ((sp (face-property face property)))
+  (let ((sp (face-property face property))
+       temp-sp)
     (if (valid-specifier-domain-p locale)
        ;; this is easy.
        (let* ((inst (face-property-instance face property locale))
               (name (and inst (funcall func inst (dfw-device locale)))))
          (when name
-           (add-spec-to-specifier sp name locale)))
+           (add-spec-to-specifier sp name locale tags)))
       ;; otherwise, map over all specifications ...
       ;; but first, some further kludging:
       ;; (1) if we're frobbing the global property, make sure
       ;; (2) if we're frobbing a particular locale, nothing would
       ;;     happen if that locale has no instantiators.  So signal
       ;;     an error to indicate this.
-      (if (and (or (eq locale 'global) (eq locale 'all) (not locale))
-              (not (face-property face property 'global)))
-         (copy-specifier (face-property 'default property)
-                         (face-property face property)
-                         'global))
+
+      (setq temp-sp
+           (if (and (or (eq locale 'global) (eq locale 'all) (not locale))
+                    (not (face-property face property 'global)))
+               (copy-specifier (face-property 'default property)
+                               nil 'global)
+             sp))
       (if (and (valid-specifier-locale-p locale)
-              (not (face-property face property locale)))
+              (not (specifier-specs temp-sp locale)))
          (error "Property must have a specification in locale %S" locale))
       (map-specifier
-       sp
-       (lambda (sp locale inst-list func)
+       temp-sp
+       (lambda (sp-arg locale inst-list func)
         (let* ((device (dfw-device locale))
                ;; if a device can be derived from the locale,
                ;; call frob-face-property-1 for that device.
                ;; Otherwise map frob-face-property-1 over each device.
                (result
                 (if device
-                    (list (frob-face-property-1 sp device inst-list func))
+                    (list (frob-face-property-1 sp-arg device inst-list func))
                   (mapcar (lambda (device)
-                            (frob-face-property-1 sp device
+                            (frob-face-property-1 sp-arg device
                                                   inst-list func))
                           (device-list))))
                new-result)
           ;; remove duplicates and nils from the obtained list of
-          ;; instantiators.
+          ;; instantiators. Also add tags amd remove 'defaults'.
           (mapcar (lambda (arg)
-                    (when (and arg (not (member arg new-result)))
+                    (when arg
+                      (if (not (consp arg))
+                          (setq arg (cons tags arg))
+                        (setcar arg (append tags (delete 'default
+                                                         (car arg))))))
+                    (when (and arg (not (member arg new-result)))                     
                       (setq new-result (cons arg new-result))))
                   result)
           ;; add back in.
       (setq inst-list (cdr inst-list)))
     (or result first-valid)))
 
-(defun frob-face-font-2 (face locale unfrobbed-face frobbed-face
+(defun frob-face-font-2 (face locale tags unfrobbed-face frobbed-face
                              tty-thunk x-thunk standard-face-mapping)
   ;; another kludge to make things more intuitive.  If we're
   ;; inheriting from a standard face in this locale, frob the
            (not (equal (face-property-instance face 'font domain)
                        (face-property-instance unfrobbed-face 'font domain)))
            (set-face-property face 'font (vector frobbed-face)
-                              the-locale))))))
+                              the-locale tags))))))
 
-(defun make-face-bold (face &optional locale)
+(defun make-face-bold (face &optional locale tags)
   "Make FACE bold in LOCALE, if possible.
 This will attempt to make the font bold for X locales and will set the
 highlight flag for TTY locales.
 circumstances."
   (interactive (list (read-face-name "Make which face bold: ")))
   (frob-face-font-2
-   face locale 'default 'bold
+   face locale tags 'default 'bold
    (lambda ()
      ;; handle TTY specific entries
      (when (featurep 'tty)
-       (set-face-highlight-p face t locale 'tty)))
+       (set-face-highlight-p face t locale (cons 'tty tags))))
    (lambda ()
      ;; handle X specific entries
      (when (featurep 'x)
-       (frob-face-property face 'font 'x-make-font-bold locale))
+       (frob-face-property face 'font 'x-make-font-bold locale tags))
      (when (featurep 'mswindows)
-       (frob-face-property face 'font 'mswindows-make-font-bold locale))
+       (frob-face-property face 'font 'mswindows-make-font-bold locale tags))
      )
    '(([default] . [bold])
      ([bold] . t)
      ([italic] . [bold-italic])
      ([bold-italic] . t))))
 
-(defun make-face-italic (face &optional locale)
+(defun make-face-italic (face &optional locale tags)
   "Make FACE italic in LOCALE, if possible.
 This will attempt to make the font italic for X locales and will set
 the underline flag for TTY locales.
 for more specifics on exactly how this function works."
   (interactive (list (read-face-name "Make which face italic: ")))
   (frob-face-font-2
-   face locale 'default 'italic
+   face locale tags 'default 'italic
    (lambda ()
      ;; handle TTY specific entries
      (when (featurep 'tty)
-       (set-face-underline-p face t locale 'tty)))
+       (set-face-underline-p face t locale (cons 'tty tags))))
    (lambda ()
      ;; handle X specific entries
      (when (featurep 'x)
-       (frob-face-property face 'font 'x-make-font-italic locale))
+       (frob-face-property face 'font 'x-make-font-italic locale tags))
      (when (featurep 'mswindows)
-       (frob-face-property face 'font 'mswindows-make-font-italic locale))
+       (frob-face-property face 'font 'mswindows-make-font-italic locale tags))
      )
    '(([default] . [italic])
      ([bold] . [bold-italic])
      ([italic] . t)
      ([bold-italic] . t))))
 
-(defun make-face-bold-italic (face &optional locale)
+(defun make-face-bold-italic (face &optional locale tags)
   "Make FACE bold and italic in LOCALE, if possible.
 This will attempt to make the font bold-italic for X locales and will
 set the highlight and underline flags for TTY locales.
 for more specifics on exactly how this function works."
   (interactive (list (read-face-name "Make which face bold-italic: ")))
   (frob-face-font-2
-   face locale 'default 'bold-italic
+   face locale tags 'default 'bold-italic
    (lambda ()
      ;; handle TTY specific entries
      (when (featurep 'tty)
-       (set-face-highlight-p face t locale 'tty)
-       (set-face-underline-p face t locale 'tty)))
+       (set-face-highlight-p face t locale (cons 'tty tags))
+       (set-face-underline-p face t locale (cons 'tty tags))))
    (lambda ()
      ;; handle X specific entries
      (when (featurep 'x)
-       (frob-face-property face 'font 'x-make-font-bold-italic locale))
+       (frob-face-property face 'font 'x-make-font-bold-italic locale tags))
      (when (featurep 'mswindows)
-       (frob-face-property face 'font 'mswindows-make-font-bold-italic locale))
+       (frob-face-property face 'font 'mswindows-make-font-bold-italic locale tags))
      )
    '(([default] . [italic])
      ([bold] . [bold-italic])
      ([italic] . [bold-italic])
      ([bold-italic] . t))))
 
-(defun make-face-unbold (face &optional locale)
+(defun make-face-unbold (face &optional locale tags)
   "Make FACE non-bold in LOCALE, if possible.
 This will attempt to make the font non-bold for X locales and will
 unset the highlight flag for TTY locales.
 for more specifics on exactly how this function works."
   (interactive (list (read-face-name "Make which face non-bold: ")))
   (frob-face-font-2
-   face locale 'bold 'default
+   face locale tags 'bold 'default
    (lambda ()
      ;; handle TTY specific entries
      (when (featurep 'tty)
-       (set-face-highlight-p face nil locale 'tty)))
+       (set-face-highlight-p face nil locale (cons 'tty tags))))
    (lambda ()
      ;; handle X specific entries
      (when (featurep 'x)
-       (frob-face-property face 'font 'x-make-font-unbold locale))
+       (frob-face-property face 'font 'x-make-font-unbold locale tags))
      (when (featurep 'mswindows)
-       (frob-face-property face 'font 'mswindows-make-font-unbold locale))
+       (frob-face-property face 'font 'mswindows-make-font-unbold locale tags))
      )
    '(([default] . t)
      ([bold] . [default])
      ([italic] . t)
      ([bold-italic] . [italic]))))
 
-(defun make-face-unitalic (face &optional locale)
+(defun make-face-unitalic (face &optional locale tags)
   "Make FACE non-italic in LOCALE, if possible.
 This will attempt to make the font non-italic for X locales and will
 unset the underline flag for TTY locales.
 for more specifics on exactly how this function works."
   (interactive (list (read-face-name "Make which face non-italic: ")))
   (frob-face-font-2
-   face locale 'italic 'default
+   face locale tags 'italic 'default
    (lambda ()
      ;; handle TTY specific entries
      (when (featurep 'tty)
-       (set-face-underline-p face nil locale 'tty)))
+       (set-face-underline-p face nil locale (cons 'tty tags))))
    (lambda ()
      ;; handle X specific entries
      (when (featurep 'x)
-       (frob-face-property face 'font 'x-make-font-unitalic locale))
+       (frob-face-property face 'font 'x-make-font-unitalic locale tags))
      (when (featurep 'mswindows)
-       (frob-face-property face 'font 'mswindows-make-font-unitalic locale))
+       (frob-face-property face 'font 'mswindows-make-font-unitalic locale tags))
      )
    '(([default] . t)
      ([bold] . t)
 ;; Old name, used by custom.  Also, FSFmacs name.
 (defvaralias 'initialize-face-resources 'init-face-from-resources)
 
-(defun face-spec-set (face spec &optional frame)
+;; Make sure all custom setting are added with this tag so we can
+;; identify-them
+(define-specifier-tag 'custom)
+
+(defun face-spec-set (face spec &optional frame tags)
   "Set FACE's face attributes according to the first matching entry in SPEC.
 If optional FRAME is non-nil, set it for that frame only.
 If it is nil, then apply SPEC to each frame individually.
 See `defface' for information about SPEC."
   (if frame
       (progn
-       (reset-face face frame)
-       (face-display-set face spec frame)
+       (reset-face face frame tags)
+       (face-display-set face spec frame tags)
        (init-face-from-resources face frame))
     (let ((frames (relevant-custom-frames)))
-      (reset-face face)
-      (if (and (eq 'default face) (featurep 'x))
-         (x-init-global-faces))
-      (face-display-set face spec)
+      (reset-face face nil tags)
+      ;; This should not be needed. We only remove our own specifiers
+      ;; (if (and (eq 'default face) (featurep 'x))
+      ;;         (x-init-global-faces))
+      (face-display-set face spec nil tags)
       (while frames
-       (face-display-set face spec (car frames))
+       (face-display-set face spec (car frames) tags)
        (pop frames))
       (init-face-from-resources face))))
 
-(defun face-display-set (face spec &optional frame)
+(defun face-display-set (face spec &optional frame tags)
   "Set FACE to the attributes to the first matching entry in SPEC.
 Iff optional FRAME is non-nil, set it for that frame only.
 See `defface' for information about SPEC."
       (when (face-spec-set-match-display display frame)
        ;; Avoid creating frame local duplicates of the global face.
        (unless (and frame (eq display (get face 'custom-face-display)))
-         (apply 'face-custom-attributes-set face frame atts))
+         (apply 'face-custom-attributes-set face frame tags atts))
        (unless frame
          (put face 'custom-face-display display))
        (setq spec nil)))))
 
        (set-face-font 'default new-default-face-font
                       (and font-menu-this-frame-only-p (selected-frame)))
       ;; OK Let Customize do it.
-      (when (and family (not (equal family from-family)))
-       (setq new-props (append (list :family family) new-props)))
-      (when (and size (not (equal size from-size)))
-       (setq new-props (append
-          (list :size (concat (int-to-string (/ size (specifier-instance
-                                                      font-menu-size-scaling
-                                                      (selected-device)))) "pt")) new-props)))
-      (custom-set-face-update-spec 'default '((type x)) new-props)
+      (custom-set-face-update-spec 'default
+               (list (list 'type (device-type)))
+               (list :family family
+                     :size (concat
+                            (int-to-string
+                             (/ size
+                                (specifier-instance font-menu-size-scaling
+                                     (selected-device))))
+                             "pt")))            
       (message "Font %s" (face-font-name 'default)))))
 
 
 
 ;; Author: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Created: Jan 1998
-;; Version: $Revision: 1.7.2.5 $
+;; Version: $Revision: 1.7.2.3 $
 ;; Keywords: help comm
 
 ;; This file is part of XEmacs
 
 ;; Last Modified By: Heiko M|nkel <muenkel@tnt.uni-hannover.de>
 ;; Additional XEmacs integration By: Chuck Thompson <cthomp@cs.uiuc.edu>
 ;; Last Modified On: Thu Jul 1 14:23:00 1994
-;; RCS Info        : $Revision: 1.3.2.2 $ $Locker:  $
+;; RCS Info        : $Revision: 1.3.2.1 $ $Locker:  $
 ;; ========================================================================
 ;; NOTE: XEmacs must be redumped if this file is changed.
 ;;
 
 (defun insert-selection (&optional check-cutbuffer-p move-point-event)
   "Insert the current selection into buffer at point."
   (interactive "P")
+  ;; we fallback to the clipboard if the current selection is not existent
   (let ((text (if check-cutbuffer-p
-                 (or (condition-case () (get-selection) (error ()))
+                 (or (get-selection-no-error) 
                      (get-cutbuffer)
-                     (error "No selection or cut buffer available"))
-               (get-selection))))
+                     (get-selection-no-error 'CLIPBOARD)
+                     (error "No selection, clipboard or cut buffer available"))
+               (or (get-selection-no-error)
+                   (get-selection 'CLIPBOARD)))))
     (cond (move-point-event
           (mouse-set-point move-point-event)
           (push-mark (point)))
 
 If a list is provided, the types are tried in sequence until
 there is a successful conversion.")
 
+(defvar selection-is-clipboard-p nil 
+  "Controls the selection's relationship to the clipboard.
+When non-nil, any operation that sets the primary selection will also
+set the clipboard.")
+
 (defun copy-primary-selection ()
   "Copy the selection to the Clipboard and the kill ring."
   (interactive)
   "Return the value of a Windows selection.
 The argument TYPE (default `PRIMARY') says which selection,
 and the argument DATA-TYPE (default `STRING', or `COMPOUND_TEXT' under Mule)
-says how to convert the data."
+says how to convert the data. If there is no selection an error is signalled."
+  (let ((text (get-selection-no-error type data-type)))
+    (when (not (stringp text))
+      (error "Selection is not a string: %S" text))
+    text))
+
+(defun get-selection-no-error (&optional type data-type)
+  "Return the value of a Windows selection.
+The argument TYPE (default `PRIMARY') says which selection,
+and the argument DATA-TYPE (default `STRING', or `COMPOUND_TEXT' under Mule)
+says how to convert the data. Returns NIL if there is no selection"
   (or type (setq type 'PRIMARY))
   (or data-type (setq data-type selected-text-type))
   (let ((text
           (get-selection-internal type data-type))))
     (when (and (consp text) (symbolp (car text)))
       (setq text (cdr text)))
-    (when (not (stringp text))
-      (error "Selection is not a string: %S" text))
     text))
 
 ;; FSFmacs calls this `x-set-selection', and reverses the
             valid))
       (signal 'error (list "invalid selection" data)))
   (or type (setq type 'PRIMARY))
-  (if data
-      (own-selection-internal type data)
-    (disown-selection-internal type))
+  (if (null data)
+      (disown-selection-internal type)
+    (own-selection-internal type data)
+    (when (and (eq type 'PRIMARY)
+              selection-is-clipboard-p)
+      (own-selection-internal 'CLIPBOARD data)))
   (cond ((eq type 'PRIMARY)
         (setq primary-selection-extent
               (select-make-extent-for-selection
 
                 (list (cons ;; these need not be ordered.
                        (copy-marker (point-marker))
                        (copy-marker (mark-marker))))))
-  (x-own-selection selection 'SECONDARY))
+  (own-selection selection 'SECONDARY))
 
 (defun x-notice-selection-requests (selection type successful)
   "for possible use as the value of x-sent-selection-hooks."
 
 (defun xselect-kill-buffer-hook-1 (selection)
   (let (value)
-    (if (and (x-selection-owner-p selection)
+    (if (and (selection-owner-p selection)
             (setq value (get-selection-internal selection '_EMACS_INTERNAL))
             ;; The _EMACS_INTERNAL selection type has a converter registered
             ;; for it that does no translation.  This only works if emacs is
 
+++ /dev/null
-Dummy file to keep CVS happy.
 
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
 1999-06-04  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.15 is released
 
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
 1999-06-04  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.15 is released
 
 @synindex fn cp
 @synindex ky cp
 @comment %**end of header
-@comment $Id: info-stnd.texi,v 1.3 1998/06/30 06:35:28 steve Exp $
+@comment $Id: info-stnd.texi,v 1.3 1997/07/06 21:49:30 karl Exp $
 
 @dircategory Texinfo documentation system
 @direntry
 
 @setfilename ../info/info.info
 @settitle Info 1.0
 @comment %**end of header 
-@comment $Id: info.texi,v 1.4 1998/06/30 06:35:28 steve Exp $
+@comment $Id: info.texi,v 1.4 1997/07/10 21:58:11 karl Exp $
 
 @dircategory Texinfo documentation system
 @direntry
 
 % texinfo.tex -- TeX macros to handle Texinfo files.
-% $Id: texinfo.tex,v 1.5 1998/06/13 04:28:12 steve Exp $
+% $Id: texinfo.tex,v 2.227 1998/02/25 22:54:34 karl Exp $
 %
 % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98
 % Free Software Foundation, Inc.
 
 % This automatically updates the version number based on RCS.
 \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}}
-\deftexinfoversion$Revision: 1.5 $
+\deftexinfoversion$Revision: 2.227 $
 \message{Loading texinfo package [Version \texinfoversion]:}
 
 % If in a .fmt file, print the version number
 
 \input texinfo.tex    @c -*-texinfo-*-
-@c $Id: texinfo.texi,v 1.8.2.1 1999/03/04 15:48:24 steveb Exp $
+@c $Id: texinfo.txi,v 1.50 1998/02/27 21:21:34 karl Exp $
 @c %**start of header
 
 @c All text is ignored before the setfilename.
 
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1999/05/13 12:26:40 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 1999/03/04 15:48:25 $
 @sp 1
 @author Tony Rossini <arossini@@stat.sc.edu>
 @author Ben Wing <wing@@666.com>
 
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
 1999-05-14  Adrian Aichner  <aichner@ecf.teradyne.com>
 
        * xemacs.mak (GUNG_HO): Explicitly default to 0.
 
        (CCL_MODE_DECODING): New macro.
        (ccl_driver): Add new argument `conversion_mode'.
 
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
+1999-06-10  Andy Piper  <andy@xemacs.org>
+
+       * select-msw.c (mswindows_own_selection): only set the clipboard
+       if asked.
+       (mswindows_get_foreign_selection): only get the clipboard if
+       asked.
+       (mswindows_disown_selection): only disown the clipboard if asked.
+
 1999-06-03  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
        * file-coding.c (coding_system_from_mask): Use `raw-text' instead
 
   Lisp_Object converted_value = get_local_selection (selection_name, QSTRING);
   if (!NILP (converted_value) &&
       CONSP (converted_value) &&
-      EQ (XCAR (converted_value), QSTRING))
+      EQ (XCAR (converted_value), QSTRING) &&
+      /* pure mswindows behaviour only says we can own the selection 
+        if it is the clipboard */
+      EQ (selection_name, QCLIPBOARD))
     Fmswindows_set_clipboard (XCDR (converted_value));
 
   return Qnil;
 static Lisp_Object
 mswindows_get_foreign_selection (Lisp_Object selection_symbol, Lisp_Object target_type)
 {
-  return Fmswindows_get_clipboard ();
+  if (EQ (selection_symbol, QCLIPBOARD))
+    return Fmswindows_get_clipboard ();
+  else
+    return Qnil;
 }
 
 DEFUN ("mswindows-selection-exists-p", Fmswindows_selection_exists_p, 0, 0, 0, /*
 static void
 mswindows_disown_selection (Lisp_Object selection, Lisp_Object timeval)
 {
-  Fmswindows_delete_selection ();
+  if (EQ (selection, QCLIPBOARD))
+    Fmswindows_delete_selection ();
 }
 
 \f
 
 
 /* Synched up with: Not in FSF. */
 
-/* #pragma ident "@(#) $Id: unexsol2.c,v 1.3 1997/10/13 03:35:33 steve Exp $" */
+/* #pragma ident "@(#) $Id: unexsol2.c,v 1.2 1995/01/25 20:39:16 georgn Exp $" */
 
 #include <stdlib.h>
 #include <stdio.h>
 
+1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.16 is released
+
 1999-06-07  Hrvoje Niksic  <hniksic@srce.hr>
 
        * automated/base64-tests.el: Check for error instead for nil where 
 
 emacs_is_beta=t
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=15
-xemacs_codename="Sakuragawa"
+emacs_beta_version=16
+xemacs_codename="Sumida"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=7