]> code.delx.au - gnu-emacs/commitdiff
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-97
authorMiles Bader <miles@gnu.org>
Mon, 16 Jan 2006 08:37:27 +0000 (08:37 +0000)
committerMiles Bader <miles@gnu.org>
Mon, 16 Jan 2006 08:37:27 +0000 (08:37 +0000)
Merge from emacs--cvs-trunk--0

Patches applied:

 * emacs--cvs-trunk--0  (patch 616-696)

   - Add lisp/mh-e/.arch-inventory
   - Update from CVS
   - Merge from gnus--rel--5.10
   - Update from CVS: lisp/smerge-mode.el: Add 'tools' to file keywords.
   - lisp/gnus/ChangeLog: Remove duplicate entry

 * gnus--rel--5.10  (patch 147-181)

   - Update from CVS
   - Merge from emacs--cvs-trunk--0
   - Update from CVS: lisp/mml.el (mml-preview): Doc fix.
   - Update from CVS: texi/message.texi: Fix default values.
   - Update from CVS: texi/gnus.texi (RSS): Addition.

115 files changed:
1  2 
configure
configure.in
etc/MORE.STUFF
etc/NEWS
etc/PROBLEMS
etc/TODO
leim/Makefile.in
leim/quail/cyrillic.el
leim/quail/indian.el
leim/quail/latin-alt.el
leim/quail/latin-post.el
leim/quail/latin-pre.el
leim/quail/pypunct-b5.el
leim/quail/symbol-ksc.el
leim/quail/thai.el
leim/quail/tibetan.el
leim/quail/uni-input.el
lib-src/makefile.w32-in
lisp/ChangeLog
lisp/Makefile.in
lisp/arc-mode.el
lisp/bindings.el
lisp/composite.el
lisp/cus-start.el
lisp/descr-text.el
lisp/desktop.el
lisp/disp-table.el
lisp/emacs-lisp/byte-opt.el
lisp/emacs-lisp/bytecomp.el
lisp/emacs-lisp/cl-macs.el
lisp/faces.el
lisp/font-lock.el
lisp/gnus/gnus-start.el
lisp/gnus/message.el
lisp/gnus/mm-bodies.el
lisp/gnus/mml.el
lisp/gnus/rfc2047.el
lisp/international/mule-cmds.el
lisp/international/mule.el
lisp/international/quail.el
lisp/isearch.el
lisp/language/mlm-util.el
lisp/ldefs-boot.el
lisp/loadup.el
lisp/mail/rmail.el
lisp/mail/sendmail.el
lisp/makefile.w32-in
lisp/progmodes/perl-mode.el
lisp/progmodes/sh-script.el
lisp/ps-bdf.el
lisp/simple.el
lisp/startup.el
lisp/subr.el
lisp/tar-mode.el
lisp/term.el
lisp/term/mac-win.el
lisp/term/w32-win.el
lisp/term/x-win.el
lisp/textmodes/ispell.el
lisp/textmodes/sgml-mode.el
lisp/w32-fns.el
lisp/wid-edit.el
man/cc-mode.texi
src/.gdbinit
src/ChangeLog
src/Makefile.in
src/alloc.c
src/buffer.c
src/bytecode.c
src/callproc.c
src/casetab.c
src/category.c
src/category.h
src/ccl.c
src/ccl.h
src/charset.c
src/charset.h
src/coding.c
src/coding.h
src/composite.c
src/composite.h
src/data.c
src/dispextern.h
src/doc.c
src/editfns.c
src/emacs.c
src/fileio.c
src/fns.c
src/fontset.c
src/fontset.h
src/fringe.c
src/indent.c
src/insdel.c
src/keyboard.c
src/keymap.c
src/lisp.h
src/lread.c
src/macfns.c
src/macterm.c
src/makefile.w32-in
src/minibuf.c
src/print.c
src/process.c
src/search.c
src/syntax.c
src/term.c
src/w32fns.c
src/w32term.c
src/window.c
src/xdisp.c
src/xfaces.c
src/xfns.c
src/xmenu.c
src/xterm.c
src/xterm.h

diff --cc configure
Simple merge
diff --cc configure.in
Simple merge
diff --cc etc/MORE.STUFF
Simple merge
diff --cc etc/NEWS
Simple merge
diff --cc etc/PROBLEMS
Simple merge
diff --cc etc/TODO
Simple merge
Simple merge
Simple merge
Simple merge
index 50efdae1657ca060420495b0d1b754861368389c,58893788ebc4fe02d392bd461fef1164f3798000..3b9dc0518ae4a53e12208292e357c8963ff69731
@@@ -1,8 -1,9 +1,9 @@@
 -;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: iso-2022-7bit;-*-
 +;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: utf-8;-*-
  
- ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
- ;; Licensed to the Free Software Foundation.
- ;; Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ ;; Copyright (C) 1997, 1998, 2001, 2002  Free Software Foundation, Inc.
+ ;; Copyright (C) 1997, 1999
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
  
  ;; Keywords: multilingual, input method, latin
  
index 553962aef8ec1e9d9c3777f6b4e1a61d28e698e4,046ec326e5c21f8d4cafe8d22cb1b03758435297..1f4d2414a76be97667f534da100a9e6259c31443
@@@ -1,13 -1,11 +1,14 @@@
 -;;; latin-post.el --- Quail packages for inputting various European characters  -*-coding: iso-2022-7bit;-*-
 +;;; latin-post.el --- Quail packages for inputting various European characters  -*-coding: utf-8;-*-
  
- ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
- ;;   Licensed to the Free Software Foundation.
- ;; Copyright (C) 2001, 2002 Free Software Foundation.
+ ;; Copyright (C) 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
+ ;; Copyright (C) 1997
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
 +;; Copyright (C) 2003
 +;;   National Institute of Advanced Industrial Science and Technology (AIST)
 +;;   Registration Number H13PRO009
  
 -;; Keywords: multilingual, input method, latin
 +;; Keywords: multilingual, input method, latin, i18n
  
  ;; This file is part of GNU Emacs.
  
index 87389ab6476e6072aa3b4b5090843b956efbca4e,661c6700bef3b0ad8d9cdaa5309abfd2ca674635..80690c8ce1e170888c7935fb4e802637f4de5e1c
@@@ -1,8 -1,10 +1,10 @@@
 -;;; latin-pre.el --- Quail packages for inputting various European characters  -*-coding: iso-2022-7bit;-*-
 +;;; latin-pre.el --- Quail packages for inputting various European characters  -*-coding: utf-8;-*-
  
- ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
- ;; Licensed to the Free Software Foundation.
- ;; Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+ ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+ ;;   Free Software Foundation, Inc.
+ ;; Copyright (C) 1997, 1999, 2005
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
  
  ;; Keywords: mule, multilingual, latin, input method
  
index 0f49af9ef61ae3a4a918bbecc5fab318d490e5bc,b035ea2e6ba6d02762868a56342215d81fccf461..ee053c67f138295e7474385e51a78f8ac68f7562
@@@ -1,7 -1,8 +1,8 @@@
 -;;; pypunct-b5.el --- Quail packages for Chinese (pinyin + extra symbols)
 +;;; pypunct-b5.el --- Quail packages for Chinese (pinyin + extra symbols) -*-coding: iso-2022-7bit;-*-
  
- ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
- ;; Licensed to the Free Software Foundation.
+ ;; Copyright (C) 1997, 2000
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
  
  ;; Author: Ken'ichi HANDA <handa@etl.go.jp>
  
index 39d75ae9c92f6aba4fe3fb52e9837b48da529cb9,6440c3893126ee926bce3f5c6bffef4ee7556ad8..385fe9476962af75bc2407be4f579d9dffec594e
@@@ -1,7 -1,9 +1,9 @@@
 -;;; symbol-ksc.el --- Quail-package for Korean Symbol (KSC5601)
 +;;; symbol-ksc.el --- Quail-package for Korean Symbol (KSC5601) -*-coding: iso-2022-7bit;-*-
  
- ;; Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
- ;; Licensed to the Free Software Foundation.
+ ;; Copyright (C) 1997, 2005  Free Software Foundation, Inc.
+ ;; Copyright (C) 1997, 1998
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
  
  ;; Keywords: multilingual, input method, Korean, Hangul
  
index b2c5b2f3cc2ca29644185645b9e6694409491cb6,579ac35be0605c05a23cfb9c1bbd8140d85d2d24..f27aab7acb02835e349e5825413a50b98ad2d737
@@@ -1,8 -1,6 +1,6 @@@
 -;;; thai.el --- Quail package for inputting Thai characters
 +;;; thai.el --- Quail package for inputting Thai characters -*-coding: iso-2022-7bit;-*-
  
- ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
- ;; Licensed to the Free Software Foundation.
- ;; Copyright (C) 2005
+ ;; Copyright (C) 1995, 1997, 1999, 2005
  ;;   National Institute of Advanced Industrial Science and Technology (AIST)
  ;;   Registration Number H14PRO021
  
index 64d456d2636b985efd6ba104befa7d442b5fabef,c3da8a4a0ffe55e95ac050593ed72e6a738c24c2..e9d998525c3665340c43eb7c54e380d44f51cf21
@@@ -1,7 -1,9 +1,9 @@@
 -;;; tibetan.el --- Quail package for inputting Tibetan characters
 +;;; tibetan.el --- Quail package for inputting Tibetan characters -*-coding: iso-2022-7bit;-*-
  
- ;; Copyright (C) 1995 Free Software Foundation, Inc.
- ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
+ ;; Copyright (C) 1995  Free Software Foundation, Inc.
+ ;; Copyright (C) 1995, 1998, 1999, 2000
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
  
  ;; Keywords: multilingual, input method, Tibetan
  
index 9dcb51c45b3b11447b11347fbd5858072b7eb51a,eae6ed01f68cad2e23a3ed76573203a2777ef65a..d623c333a06f29c31b0fd884ad5730b28f7931f2
@@@ -1,6 -1,9 +1,9 @@@
  ;;; uni-input.el --- Hex Unicode input method
  
- ;; Copyright (C) 2001, 2002  Free Software Foundation, Inc.
 -;; Copyright (C) 2001, 2003  Free Software Foundation, Inc.
++;; Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
+ ;; Copyright (C) 2004
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
  
  ;; Author: Dave Love <fx@gnu.org>
  ;; Keywords: i18n
index cdb153f836392012cb5529b829d14079e9b222ac,bf7a293adc6738eb30c1f1a6d6174c1c2176298d..e8bc7399da0f4e22cc7decde782e7c03e8193d60
@@@ -191,6 -192,21 +192,11 @@@ lisp1= 
        $(lispsource)international/mule-conf.el \
        $(lispsource)international/mule-cmds.elc \
        $(lispsource)international/characters.elc \
 -      $(lispsource)international/ucs-tables.elc \
 -      $(lispsource)international/utf-8.elc \
 -      $(lispsource)international/utf-16.elc \
 -      $(lispsource)international/latin-1.el \
 -      $(lispsource)international/latin-2.el \
 -      $(lispsource)international/latin-3.el \
 -      $(lispsource)international/latin-4.el \
 -      $(lispsource)international/latin-5.el \
 -      $(lispsource)international/latin-8.el \
 -      $(lispsource)international/latin-9.el \
+       $(lispsource)image.elc \
+       $(lispsource)international/fontset.elc \
+       $(lispsource)dnd.elc \
+       $(lispsource)mwheel.elc \
+       $(lispsource)tool-bar.elc \
        $(lispsource)case-table.elc
  
  lisp2 = \
diff --cc lisp/ChangeLog
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index cf6ac6ac4ade468946b80ec14c2396871d16d80a,550268ac1d9b4343a33de7fd7d269ccb6fac12d4..8a32f6202c51f382fb7d1c33d6d414c986177cb3
@@@ -212,30 -180,9 +180,30 @@@ otherwise.
        ;; Text properties
        (when properties
        (newline)
-       (widget-insert "There are text properties here:\n")
+       (insert "There are text properties here:\n")
        (describe-property-list properties)))))
  \f
 +(defcustom describe-char-unidata-list nil
 +  "List of Unicode-based character property names shown by `describe-char'."
 +  :group 'mule
 +  :version "23.1"
 +  :type '(set
 +        (const :tag "Unicode Name" name)
 +        (const :tag "Unicode general category " general-category)
 +        (const :tag "Unicode canonical combining class"
 +               canonical-combining-class)
 +        (const :tag "Unicode bidi class" bidi-class)
 +        (const :tag "Unicode decomposition mapping" decomposition)
 +        (const :tag "Unicode decimal digit value" decimal-digit-value)
 +        (const :tag "Unicode digit value" digit-value)
 +        (const :tag "Unicode numeric value" numeric-value)
 +        (const :tag "Unicode mirrored" mirrored)
 +        (const :tag "Unicode old name" old-name)
 +        (const :tag "Unicode ISO 10646 comment" iso-10646-comment)
 +        (const :tag "Unicode simple uppercase mapping" uppercase)
 +        (const :tag "Unicode simple lowercase mapping" lowercase)
 +        (const :tag "Unicode simple titlecase mapping" titlecase)))
 +
  (defcustom describe-char-unicodedata-file nil
    "Location of Unicode data file.
  This is the UnicodeData.txt file from the Unicode consortium, used for
@@@ -395,45 -426,58 +363,53 @@@ as well as widgets, buttons, overlays, 
         (multibyte-p enable-multibyte-characters)
         (overlays (mapcar #'(lambda (o) (overlay-properties o))
                           (overlays-at pos)))
 -       item-list max-width unicode)
+        (char-description (if (not multibyte-p)
+                              (single-key-description char)
+                            (if (< char 128)
+                                (single-key-description char)
+                              (string-to-multibyte
+                               (char-to-string char)))))
+        (text-props-desc
+         (let ((tmp-buf (generate-new-buffer " *text-props*")))
+           (unwind-protect
+               (progn
+                 (describe-text-properties pos tmp-buf)
+                 (with-current-buffer tmp-buf (buffer-string)))
+             (kill-buffer tmp-buf))))
 +       item-list max-width code)
  
 -    (if (or (< char 256)
 -          (memq 'mule-utf-8 (find-coding-systems-region pos (1+ pos)))
 -          (get-char-property pos 'untranslated-utf-8))
 -      (setq unicode (or (get-char-property pos 'untranslated-utf-8)
 -                        (encode-char char 'ucs))))
 +    (setq code (encode-char char charset))
      (setq item-list
          `(("character"
-           ,(format "%s (0%o, %d, 0x%x)"
-                    (apply 'propertize (if (not multibyte-p)
-                                           (single-key-description char)
-                                         (if (< char 128)
-                                             (single-key-description char)
-                                           (string-to-multibyte
-                                            (char-to-string char))))
-                           (text-properties-at pos))
-                    char char char))
 -           ,(format "%s (%d, #o%o, #x%x%s)"
++           ,(format "%s (%d, #o%o, #x%x)"
+                     (apply 'propertize char-description
+                            (text-properties-at pos))
 -                    char char char
 -                    (if unicode
 -                        (format ", U+%04X" unicode)
 -                      "")))
 -          ("charset"
++                    char char char))
 +          ("preferred charset"
-            ,`(widget-create 'link
-                             :notify (lambda (&rest ignore)
-                                       (describe-character-set ',charset))
-                             ,(symbol-name charset))
+            ,`(insert-text-button
+               ,(symbol-name charset)
+               'type 'help-character-set 'help-args '(,charset))
             ,(format "(%s)" (charset-description charset)))
            ("code point"
 -           ,(let ((split (split-char char)))
 -              `(insert-text-button
 -                ,(if (= (charset-dimension charset) 1)
 -                     (format "#x%02X" (nth 1 split))
 -                   (format "#x%02X #x%02X" (nth 1 split)
 -                           (nth 2 split)))
 -                'action (lambda (&rest ignore)
 -                          (list-charset-chars ',charset)
 -                          (with-selected-window
 -                              (get-buffer-window "*Character List*" 0)
 -                            (goto-char (point-min))
 -                            (forward-line 2) ;Skip the header.
 -                            (let ((case-fold-search nil))
 -                              (search-forward ,(char-to-string char)
 -                                              nil t))))
 -                'help-echo
 -                "mouse-2, RET: show this character in its character set")))
 +           ,(let ((str (if (integerp code)
 +                           (format (if (< code 256) "0x%02X" "0x%04X") code)
 +                         (format "0x%04X%04X" (car code) (cdr code)))))
 +              (if (<= (charset-dimension charset) 2)
-                   `(widget-create
-                     'link
-                     :notify (lambda (&rest ignore)
++                  `(insert-text-button
++                    ,str
++                    'action (lambda (&rest ignore)
 +                              (list-charset-chars ',charset)
 +                              (with-selected-window
 +                                  (get-buffer-window "*Character List*" 0)
 +                                (goto-char (point-min))
 +                                (forward-line 2) ;Skip the header.
 +                                (let ((case-fold-search nil))
 +                                  (if (search-forward ,(char-to-string char)
 +                                                      nil t)
 +                                      (goto-char (match-beginning 0))))))
-                     ,str)
++                    'help-echo
++                    "mouse-2, RET: show this character in its character set")
 +                str)))
            ("syntax"
             ,(let ((syntax (syntax-after pos)))
                (with-temp-buffer
             ,@(let ((category-set (char-category-set char)))
                 (if (not category-set)
                     '("-- none --")
-                  (mapcar #'(lambda (x) (format "%c:%s  "
+                  (mapcar #'(lambda (x) (format "%c:%s"
                                                 x (category-docstring x)))
                           (category-set-mnemonics category-set)))))
 -          ,@(let ((props (aref char-code-property-table char))
 -                  ps)
 -              (when props
 -                (while props
 -                  (push (format "%s:" (pop props)) ps)
 -                  (push (format "%s;" (pop props)) ps))
 -                (list (cons "Properties" (nreverse ps)))))
            ("to input"
             ,@(let ((key-list (and (eq input-method-function
                                        'quail-input-method)
                          ((and (< char 32) (not (memq char '(9 10))))
                           'escape-glyph)))))
                (if face (list (list "hardcoded face"
-                                    `(widget-create
-                                      'link
-                                      :notify (lambda (&rest ignore)
-                                                (describe-face ',face))
-                                      ,(format "%s" face))))))
-           ,@(let ((unicodedata (describe-char-unicode-data char)))
+                                    `(insert-text-button
+                                      ,(symbol-name face)
+                                      'type 'help-face 'help-args '(,face))))))
+           ,@(let ((unicodedata (and unicode
+                                     (describe-char-unicode-data unicode))))
                (if unicodedata
                    (cons (list "Unicode data" " ") unicodedata)))))
 -    (setq max-width (apply #'max (mapcar #'(lambda (x)
 +    (setq max-width (apply #'max (mapcar #'(lambda (x) 
                                             (if (cadr x) (length (car x)) 0))
                                         item-list)))
-     (with-output-to-temp-buffer "*Help*"
+     (help-setup-xref nil (interactive-p))
+     (with-output-to-temp-buffer (help-buffer)
        (with-current-buffer standard-output
        (set-buffer-multibyte multibyte-p)
        (let ((formatter (format "%%%ds:" max-width)))
          (insert "\nSee the variable `reference-point-alist' for "
                  "the meaning of the rule.\n"))
  
-       (describe-text-properties pos (current-buffer))
-       (describe-text-mode)))))
 +      (if (not describe-char-unidata-list)
 +          (insert "\nCharacter code properties are not shown: ")
 +        (insert "\nCharacter code properties: "))
 +      (widget-create 'link
 +                     :notify (lambda (&rest ignore)
 +                               (customize-variable
 +                                'describe-char-unidata-list))
 +                     "customize what to show")
 +      (insert "\n")
 +      (dolist (elt describe-char-unidata-list)
 +        (let ((val (get-char-code-property char elt))
 +              description)
 +          (when val
 +            (setq description (char-code-property-description elt val))
 +            (if description
 +                (insert (format "  %s: %s (%s)\n" elt val description))
 +              (insert (format "  %s: %s\n" elt val))))))
 +
+         (if text-props-desc (insert text-props-desc))
+       (setq help-xref-stack-item (list 'help-insert-string (buffer-string)))
+       (toggle-read-only 1)
+       (print-help-return-message)))))
  
  (defalias 'describe-char-after 'describe-char)
  (make-obsolete 'describe-char-after 'describe-char "22.1")
diff --cc lisp/desktop.el
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc lisp/faces.el
Simple merge
index bde2469c7fb7d98e917281005ce970152f867b6b,00394e86762c0bad7758c8085f90c16f3ecfb769..c413bffa76ef4f73696681a938929f33d2627937
@@@ -1988,9 -1961,80 +1961,81 @@@ This function could be MATCHER in a MAT
            ;; Move over any item value, etc., to the next item.
            (while (not (looking-at "[ \t\n]*\\(\\(,\\)\\|;\\|\\'\\)"))
              (goto-char (or (scan-sexps (point) 1) (point-max))))
 -          (goto-char (match-end 2)))
 +          (if (match-end 2)
 +              (goto-char (match-end 2))))
        (error t)))))
+ ;; C preprocessor(cpp) is used outside of C, C++ and Objective-C source file.
+ ;; e.g. assembler code and GNU linker script in Linux kernel.
+ ;; `cpp-font-lock-keywords' is handy for modes for the files.
+ ;;
+ ;; Here we cannot use `regexp-opt' because because regex-opt is not preloaded
+ ;; while font-lock.el is preloaded to emacs. So values pre-calculated with 
+ ;; regexp-opt are used here.
+ ;; `cpp-font-lock-keywords-source-directives' is calculated from:
+ ;;
+ ;;        (regexp-opt
+ ;;         '("define"  "elif" "else" "endif" "error" "file" "if" "ifdef"
+ ;;           "ifndef" "include" "line" "pragma" "undef"))
+ ;;
+ (defconst cpp-font-lock-keywords-source-directives
+   "define\\|e\\(?:l\\(?:if\\|se\\)\\|ndif\\|rror\\)\\|file\\|i\\(?:f\\(?:n?def\\)?\\|nclude\\)\\|line\\|pragma\\|undef"
+   "Regular expressoin used in `cpp-font-lock-keywords'.")
+ ;; `cpp-font-lock-keywords-source-depth' is calculated from:
+ ;;
+ ;;          (regexp-opt-depth (regexp-opt
+ ;;                   '("define"  "elif" "else" "endif" "error" "file" "if" "ifdef"
+ ;;                     "ifndef" "include" "line" "pragma" "undef")))
+ ;;
+ (defconst cpp-font-lock-keywords-source-depth 0
+   "An integer representing regular expression depth of `cpp-font-lock-keywords-source-directives'.
+ Used in `cpp-font-lock-keywords'.")
+ (defconst cpp-font-lock-keywords
+   (let* ((directives cpp-font-lock-keywords-source-directives)
+        (directives-depth cpp-font-lock-keywords-source-depth))
+     (list
+      ;;
+      ;; Fontify error directives.
+      '("^#[ \t]*error[ \t]+\\(.+\\)" 1 font-lock-warning-face prepend)
+      ;;
+      ;; Fontify filenames in #include <...> preprocessor directives as strings.
+      '("^#[ \t]*\\(?:import\\|include\\)[ \t]*\\(<[^>\"\n]*>?\\)"
+        1 font-lock-string-face prepend)
+      ;;
+      ;; Fontify function macro names.
+      '("^#[ \t]*define[ \t]+\\([[:alpha:]_][[:alnum:]_$]*\\)(" 
+        (1 font-lock-function-name-face prepend)
+        ;;
+        ;; Macro arguments.
+        ((lambda (limit)
+         (re-search-forward
+          "\\(?:\\([[:alpha:]_][[:alnum:]_]*\\)[,]?\\)" 
+          (or (save-excursion (re-search-forward ")" limit t)) 
+              limit)
+          t)) 
+       nil nil (1 font-lock-variable-name-face prepend)))
+      ;;
+      ;; Fontify symbol names in #elif or #if ... defined preprocessor directives.
+      '("^#[ \t]*\\(?:elif\\|if\\)\\>"
+        ("\\<\\(defined\\)\\>[ \t]*(?\\([[:alpha:]_][[:alnum:]_]*\\)?" nil nil
+       (1 font-lock-builtin-face prepend) (2 font-lock-variable-name-face prepend t)))
+      ;;
+      ;; Fontify otherwise as symbol names, and the preprocessor directive names.
+      (list
+       (concat "^\\(#[ \t]*\\(?:" directives
+             "\\)\\)\\>[ \t!]*\\([[:alpha:]_][[:alnum:]_]*\\)?")
+       '(1 font-lock-preprocessor-face prepend)
+       (list (+ 2 directives-depth)
+           'font-lock-variable-name-face nil t))))
+     "Font lock keyords for C preprocessor directives.
+ `c-mode', `c++-mode' and `objc-mode' have their own 
+ font lock keyords for C preprocessor directives. This definition is for the
+ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
+ `ld-script-mode'.")
  \f
  ;; Lisp.
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 709067fd24b50ab599f2d48444ae50e16db88806,7756aa58ccd8fa869af4c5a8ae344e07e0b9e8e3..4b643fbc6988f5e43e601b5f67959f83a300fe32
@@@ -2671,11 -2655,11 +2682,11 @@@ If there's no description string for VA
    "Return a pretty description of STR that is encoded by CODING-SYSTEM."
    (setq str (string-as-unibyte str))
    (mapconcat
 -   (if (and coding-system (eq (coding-system-type coding-system) 2))
 +   (if (and coding-system (eq (coding-system-type coding-system) 'iso-2022))
         ;; Try to get a pretty description for ISO 2022 escape sequences.
         (function (lambda (x) (or (cdr (assq x iso-2022-control-alist))
-                                (format "0x%02X" x))))
-      (function (lambda (x) (format "0x%02X" x))))
+                                (format "#x%02X" x))))
+      (function (lambda (x) (format "#x%02X" x))))
     str " "))
  
  (defun encode-coding-char (char coding-system)
Simple merge
Simple merge
diff --cc lisp/isearch.el
Simple merge
Simple merge
Simple merge
diff --cc lisp/loadup.el
Simple merge
Simple merge
Simple merge
Simple merge
index cb2ec81f5015353ca3cb15d5c6cfad9990c0ee30,f5a857f9015568c0dcff35e0968754039aaad9f4..910322804a2bcdfb5592afad988db93e94db7560
@@@ -295,88 -298,93 +298,93 @@@ The expansion is entirely correct becau
        (modify-syntax-entry close ")" st))
      st))
  
- (defun perl-font-lock-syntactic-face-function (state)
-   (let ((char (nth 3 state)))
-     (cond
-      ((not char)
-       ;; Comment or docstring.
-       (if (nth 7 state) font-lock-doc-face font-lock-comment-face))
-      ((and (characterp char) (eq (char-syntax (nth 3 state)) ?\"))
-       ;; Normal string.
-       font-lock-string-face)
-      ((eq (nth 3 state) ?\n)
-       ;; A `format' command.
-       (save-excursion
-       (when (and (re-search-forward "^\\s *\\.\\s *$" nil t)
-                  (not (eobp)))
-         (put-text-property (point) (1+ (point)) 'syntax-table '(7)))
-       font-lock-string-face))
-      (t
-       ;; This is regexp like quote thingy.
-       (setq char (char-after (nth 8 state)))
-       (save-excursion
-       (let ((twoargs (save-excursion
-                        (goto-char (nth 8 state))
-                        (skip-syntax-backward " ")
-                        (skip-syntax-backward "w")
-                        (member (buffer-substring
-                                 (point) (progn (forward-word 1) (point)))
-                                '("tr" "s" "y"))))
-             (close (cdr (assq char perl-quote-like-pairs)))
-             (pos (point))
-             (st (perl-quote-syntax-table char)))
-         (if (not close)
-             ;; The closing char is the same as the opening char.
-             (with-syntax-table st
-               (parse-partial-sexp (point) (point-max)
-                                   nil nil state 'syntax-table)
-               (when twoargs
-                 (parse-partial-sexp (point) (point-max)
-                                     nil nil state 'syntax-table)))
-           ;; The open/close chars are matched like () [] {} and <>.
-           (let ((parse-sexp-lookup-properties nil))
-             (condition-case err
-                 (progn
-                   (with-syntax-table st
-                     (goto-char (nth 8 state)) (forward-sexp 1))
-                   (when twoargs
-                     (save-excursion
-                       ;; Skip whitespace and make sure that font-lock will
-                       ;; refontify the second part in the proper context.
-                       (put-text-property
-                        (point) (progn (forward-comment (point-max)) (point))
-                        'font-lock-multiline t)
-                       ;;
-                       (unless
-                           (save-excursion
-                             (with-syntax-table
-                                 (perl-quote-syntax-table (char-after))
-                               (forward-sexp 1))
-                             (put-text-property pos (line-end-position)
-                                                'jit-lock-defer-multiline t)
-                             (looking-at "\\s-*\\sw*e"))
-                         (put-text-property (point) (1+ (point))
-                                            'syntax-table
-                                            (if (assoc (char-after)
-                                                       perl-quote-like-pairs)
-                                                '(15) '(7)))))))
-               ;; The arg(s) is not terminated, so it extends until EOB.
-               (scan-error (goto-char (point-max))))))
-         ;; Point is now right after the arg(s).
-         ;; Erase any syntactic marks within the quoted text.
-         (put-text-property pos (1- (point)) 'syntax-table nil)
-         (when (eq (char-before (1- (point))) ?$)
-           (put-text-property (- (point) 2) (1- (point))
-                              'syntax-table '(1)))
-         (put-text-property (1- (point)) (point)
-                            'syntax-table (if close '(15) '(7)))
-         font-lock-string-face))))))
-           ;; (if (or twoargs (not (looking-at "\\s-*\\sw*e")))
-           ;;  font-lock-string-face
-           ;;   (font-lock-fontify-syntactically-region
-           ;;    ;; FIXME: `end' is accessed via dyn-scoping.
-           ;;    pos (min end (1- (point))) nil '(nil))
-           ;;   nil)))))))
+ (defun perl-font-lock-special-syntactic-constructs (limit)
+   ;; We used to do all this in a font-lock-syntactic-face-function, which
+   ;; did not work correctly because sometimes some parts of the buffer are
+   ;; treated with font-lock-syntactic-keywords but not with
+   ;; font-lock-syntactic-face-function (mostly because of
+   ;; font-lock-syntactically-fontified).  That meant that some syntax-table
+   ;; properties were missing.  So now we do the parse-partial-sexp loop
+   ;; ourselves directly from font-lock-syntactic-keywords, so we're sure
+   ;; it's done when necessary.
+   (let ((state (syntax-ppss))
+         char)
+     (while (< (point) limit)
+       (cond
+        ((or (null (setq char (nth 3 state)))
 -            (and (char-valid-p char) (eq (char-syntax (nth 3 state)) ?\")))
++            (and (characterp char) (eq (char-syntax (nth 3 state)) ?\")))
+         ;; Normal text, or comment, or docstring, or normal string.
+         nil)
+        ((eq (nth 3 state) ?\n)
+         ;; A `format' command.
+         (save-excursion
+           (when (and (re-search-forward "^\\s *\\.\\s *$" nil t)
+                      (not (eobp)))
+             (put-text-property (point) (1+ (point)) 'syntax-table '(7)))))
+        (t
+         ;; This is regexp like quote thingy.
+         (setq char (char-after (nth 8 state)))
+         (save-excursion
+           (let ((twoargs (save-excursion
+                            (goto-char (nth 8 state))
+                            (skip-syntax-backward " ")
+                            (skip-syntax-backward "w")
+                            (member (buffer-substring
+                                     (point) (progn (forward-word 1) (point)))
+                                    '("tr" "s" "y"))))
+                 (close (cdr (assq char perl-quote-like-pairs)))
+                 (pos (point))
+                 (st (perl-quote-syntax-table char)))
+             (if (not close)
+                 ;; The closing char is the same as the opening char.
+                 (with-syntax-table st
+                   (parse-partial-sexp (point) (point-max)
+                                       nil nil state 'syntax-table)
+                   (when twoargs
+                     (parse-partial-sexp (point) (point-max)
+                                         nil nil state 'syntax-table)))
+               ;; The open/close chars are matched like () [] {} and <>.
+               (let ((parse-sexp-lookup-properties nil))
+                 (condition-case err
+                     (progn
+                       (with-syntax-table st
+                         (goto-char (nth 8 state)) (forward-sexp 1))
+                       (when twoargs
+                         (save-excursion
+                           ;; Skip whitespace and make sure that font-lock will
+                           ;; refontify the second part in the proper context.
+                           (put-text-property
+                            (point) (progn (forward-comment (point-max)) (point))
+                            'font-lock-multiline t)
+                           ;;
+                           (unless
+                               (save-excursion
+                                 (with-syntax-table
+                                     (perl-quote-syntax-table (char-after))
+                                   (forward-sexp 1))
+                                 (put-text-property pos (line-end-position)
+                                                    'jit-lock-defer-multiline t)
+                                 (looking-at "\\s-*\\sw*e"))
+                             (put-text-property (point) (1+ (point))
+                                                'syntax-table
+                                                (if (assoc (char-after)
+                                                           perl-quote-like-pairs)
+                                                    '(15) '(7)))))))
+                   ;; The arg(s) is not terminated, so it extends until EOB.
+                   (scan-error (goto-char (point-max))))))
+             ;; Point is now right after the arg(s).
+             ;; Erase any syntactic marks within the quoted text.
+             (put-text-property pos (1- (point)) 'syntax-table nil)
+             (when (eq (char-before (1- (point))) ?$)
+               (put-text-property (- (point) 2) (1- (point))
+                                  'syntax-table '(1)))
+             (put-text-property (1- (point)) (point)
+                                'syntax-table (if close '(15) '(7)))))))
+       (setq state (parse-partial-sexp (point) limit nil nil state
+                                     'syntax-table))))
+   ;; Tell font-lock that this needs not further processing.
+   nil)
  
  
  (defcustom perl-indent-level 4
Simple merge
diff --cc lisp/ps-bdf.el
index c4e8a444aff9683536a55f3d27c15f0971914989,090f04312189134b83b5ea883f889a011154c085..44a1223dc42befaee5d92f711e8cdf3388d2240e
@@@ -1,14 -1,12 +1,15 @@@
  ;;; ps-bdf.el --- BDF font file handler for ps-print
  
- ;; Copyright (C) 1998, 1999, 2001 Electrotechnical Laboratory, JAPAN.
- ;;   Licensed to the Free Software Foundation.
- ;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
 -;; Copyright (C) 1998, 1999, 2001  Free Software Foundation, Inc.
++;; Copyright (C) 1998, 1999, 2001, 2002, 2003  Free Software Foundation, Inc.
+ ;; Copyright (C) 1998, 1999, 2001, 2003
+ ;;   National Institute of Advanced Industrial Science and Technology (AIST)
+ ;;   Registration Number H14PRO021
 +;; Copyright (C) 2003
 +;;   National Institute of Advanced Industrial Science and Technology (AIST)
 +;;   Registration Number H13PRO009
  
  ;; Keywords: wp, BDF, font, PostScript
 -;; Maintainer: Kenichi Handa <handa@etl.go.jp>
 +;; Maintainer: Kenichi Handa <handa@m17n.org>
  ;; Time-stamp: <2003/07/11 21:13:44 vinicius>
  
  ;; This file is part of GNU Emacs.
diff --cc lisp/simple.el
index 682880eba583969189cf91466b67b9cb8a3c10fc,46045d2d3f7cbe5d55ba22e8c476d61dba4b1402..1f00d52155e0b747555d53cb36c87e828f844552
@@@ -900,9 -946,9 +946,9 @@@ in *Help* buffer.  See also the comman
        (if (or (not coding)
                (eq (coding-system-type coding) t))
            (setq coding default-buffer-file-coding-system))
 -      (if (not (char-valid-p char))
 +      (if (eq (char-charset char) 'eight-bit)
            (setq encoding-msg
-                 (format "(0%o, %d, 0x%x, raw-byte)" char char char))
 -                (format "(%d, #o%o, #x%x, invalid)" char char char))
++                (format "(%d, #o%o, #x%x, raw-byte)" char char char))
          ;; Check if the character is displayed with some `display'
          ;; text property.  In that case, set under-display to the
          ;; buffer substring covered by that property.
diff --cc lisp/startup.el
Simple merge
diff --cc lisp/subr.el
Simple merge
Simple merge
diff --cc lisp/term.el
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc lisp/w32-fns.el
Simple merge
Simple merge
index a59c022625730a6ac3a118abb02c7f5744fa8cb3,92d4ac20aa0db99162371c93b9f10a55d406ca8d..0d6e88f20eaed96f87f661e4b58dcb83e0af796e
@@@ -114,6 -207,10 +207,10 @@@ license to the document, as described i
  @page
  @vskip 0pt plus 1filll
  @insertcopying
 -This manual was generated from $Revision: 5.241 $ of $RCSfile: cc-mode.texi,v $, which can be
++This manual was generated from $Revision: 1.32 $ of $RCSfile: cc-mode.texi,v $, which can be
+ downloaded from
+ @url{http://cvs.sf.net/viewcvs.py/cc-mode/cc-mode/cc-mode.texi}.
  @end titlepage
  
  @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --cc src/.gdbinit
Simple merge
diff --cc src/ChangeLog
Simple merge
diff --cc src/Makefile.in
Simple merge
diff --cc src/alloc.c
Simple merge
diff --cc src/buffer.c
Simple merge
diff --cc src/bytecode.c
Simple merge
diff --cc src/callproc.c
Simple merge
diff --cc src/casetab.c
Simple merge
diff --cc src/category.c
index cd1be5a8da09f5969d4e5a4547881473fe959ab2,866a7cdd4294cd703afcb296fdb47b97d20eee88..3f4a9dd83f495ec4ecf74449fd982797bd05610f
@@@ -1,9 -1,8 +1,11 @@@
  /* GNU Emacs routines to deal with category tables.
-    Copyright (C) 1995, 1997 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
+    Copyright (C) 1998, 2001, 2004 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 1998, 1999
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/category.h
index c025d4095490a8123c32edd85afb39c0e1b8779c,ade8704db090e72edbd1a6ec6d0d8c49da63892d..fc755ed7d86432bf0bb1f6d043d69ced58c26831
@@@ -1,9 -1,7 +1,10 @@@
  /* Declarations having to do with Emacs category tables.
-    Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
+    Copyright (C) 1995, 1998, 1999
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/ccl.c
index 7f6ec1a7aa32aa9c49bbdcc28453ef08ac1cb6c1,69658f779a706cb597bfbd4121dd5ec0353de32c..301cf010ba1ad28282db5c81c677319afa0808da
+++ b/src/ccl.c
@@@ -1,10 -1,8 +1,11 @@@
  /* CCL (Code Conversion Language) interpreter.
-    Copyright (C) 1995, 1997 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
     Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 1998, 2003, 2004, 2005
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/ccl.h
index b14c18b8f25fc1131b0473e10cf6816c9f3ca01e,21a72df1d0bf0285578e1519133d2271672b8bad..96417e79fa50d2db52af660337a921e831ae1fd4
+++ b/src/ccl.h
@@@ -1,9 -1,7 +1,10 @@@
  /* Header for CCL (Code Conversion Language) interpreter.
-    Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
+    Copyright (C) 1995, 1998, 2000
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/charset.c
index d2d5686b899c8971a7c2d048f9bce3151c201972,fb9804c03060f4b76dbf34352836866822bf8823..15a5d75ecbda122a75bc1ee5128767729e2d2f92
@@@ -1,10 -1,8 +1,11 @@@
 -/* Basic multilingual character support.
 +/* Basic character set support.
-    Copyright (C) 1995, 97, 98, 2000, 2001 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
     Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003, 2004
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/charset.h
index a06c3a1b094656104e4cafbeaa8b53458d64baa9,d6b1dee187f9b90223755d7ea9426dc8e56e7e2b..782e92799ff0e11afff06334e85908e25a98e4a8
@@@ -1,10 -1,8 +1,11 @@@
 -/* Header for multibyte character handler.
 +/* Header for charset handler.
-    Copyright (C) 1995, 1997, 1998 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
     Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 1998, 2003
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/coding.c
index 1a9b13fd10ead33418906846137ae8784911c78f,5985e895ef6e85e238314f6316618336abf4399d..c283b5a4369cdfe4726660d764fe64f3234e5848
@@@ -1,10 -1,8 +1,11 @@@
 -/* Coding system handler (conversion, detection, and etc).
 +/* Coding system handler (conversion, detection, etc).
-    Copyright (C) 1995, 1997, 1998 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
     Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 1998, 2002, 2003, 2004, 2005
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/coding.h
index c182f182e6788836fb8de2a81e1e40720273bd37,470ce3ad75a2361c06ccff2bc41873e2676b2459..834724cf340d8a3acc67eaceb83df60f7d14e315
@@@ -1,10 -1,8 +1,11 @@@
  /* Header for coding system handler.
-    Copyright (C) 1995, 1997 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
+    Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 1998, 2000
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
-    Copyright (C) 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
  
diff --cc src/composite.c
index 3d50886dc3caaa90bd5be5b591fd235185738e2d,54aa2ed9840190c32a9d727fe5220f4df0029294..3b3743b6b2e43a048e938fe36772ccc78141d235
@@@ -1,10 -1,8 +1,11 @@@
  /* Composite sequence support.
-    Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
     Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1999
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
  
  This file is part of GNU Emacs.
  
diff --cc src/composite.h
index 37a75c8a80b0e04b85ce683e042ccbacfc56fc5d,99db0506814e88581404dff51cbe9f83d541c4da..ecfa4db3a569d1cd7e14ef3bf5b3343ee3e18aba
@@@ -1,10 -1,8 +1,11 @@@
  /* Header for composite sequence handler.
-    Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
+    Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1997
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
-    Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
  
diff --cc src/data.c
Simple merge
Simple merge
diff --cc src/doc.c
Simple merge
diff --cc src/editfns.c
Simple merge
diff --cc src/emacs.c
Simple merge
diff --cc src/fileio.c
Simple merge
diff --cc src/fns.c
Simple merge
diff --cc src/fontset.c
index c63bec61a150e581cd1f077910445c8325980ffe,c6789a8e0758b26dc92dee4c32c25bbe41fc40cc..e5d1f4c0b033dd6613a8f58f46d79e0ab02b440e
@@@ -1,11 -1,9 +1,12 @@@
  /* Fontset handler.
-    Copyright (C) 1995, 1997, 2000 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
+    Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 1998, 2000, 2003, 2004, 2005
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 -
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
-    Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++ 
  This file is part of GNU Emacs.
  
  GNU Emacs is free software; you can redistribute it and/or modify
diff --cc src/fontset.h
index 33bbeda4f5205255874e614f057fe34f6665560a,aaf12facf9485340b6d1c399d9cfd21a54295e06..c3ef769d1ea4220e8d0630e07460f24d909e6ce3
@@@ -1,10 -1,8 +1,11 @@@
  /* Header for fontset handler.
-    Copyright (C) 1995, 1997, 2000 Electrotechnical Laboratory, JAPAN.
-      Licensed to the Free Software Foundation.
+    Copyright (C) 1998, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+    Copyright (C) 1995, 1997, 2000
+      National Institute of Advanced Industrial Science and Technology (AIST)
+      Registration Number H14PRO021
 +   Copyright (C) 2003
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
-    Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
  
diff --cc src/fringe.c
Simple merge
diff --cc src/indent.c
Simple merge
diff --cc src/insdel.c
Simple merge
diff --cc src/keyboard.c
Simple merge
diff --cc src/keymap.c
index 271b0672b1efb16a70bb86366c1376bf6a114919,8f462b3af7327692906252ed689125c969c33336..07bf957cdca451b9ebca217e4e151826aad81e64
@@@ -959,21 -958,9 +969,22 @@@ store_in_keymap (keymap, idx, def
    keymap_end:
      /* We have scanned the entire keymap, and not found a binding for
         IDX.  Let's add one.  */
 -    CHECK_IMPURE (insertion_point);
 -    XSETCDR (insertion_point,
 -           Fcons (Fcons (idx, def), XCDR (insertion_point)));
 +    {
 +      Lisp_Object elt;
 +
 +      if (CONSP (idx) && CHARACTERP (XCAR (idx)))
 +      {
 +        /* IDX specifies a range of characters, and not all of them
 +           were handled yet, which means this keymap doesn't have a
 +           char-table.  So, we insert a char-table now.  */
 +        elt = Fmake_char_table (Qkeymap, Qnil);
 +        Fset_char_table_range (elt, idx, NILP (def) ? Qt : def);
 +      }
 +      else
 +      elt = Fcons (idx, def);
++      CHECK_IMPURE (insertion_point);
 +      XSETCDR (insertion_point, Fcons (elt, XCDR (insertion_point)));
 +    }
    }
  
    return def;
diff --cc src/lisp.h
index 1cefd7ba4b53181c011bbf705e891f5021c6cb03,b8213c516cb0968ff8b8d156119a997f1b16a6a8..a80f76ddd8ef09a86bcfe68ea643feb478a12fe3
@@@ -2557,32 -2563,8 +2573,33 @@@ extern void init_alloc_once P_ ((void))
  extern void init_alloc P_ ((void));
  extern void syms_of_alloc P_ ((void));
  extern struct buffer * allocate_buffer P_ ((void));
+ extern int valid_lisp_object_p P_ ((Lisp_Object));
  
 +/* Defined in chartab.c */
 +EXFUN (Fmake_char_table, 2);
 +EXFUN (Fchar_table_parent, 1);
 +EXFUN (Fset_char_table_parent, 2);
 +EXFUN (Fchar_table_extra_slot, 2);
 +EXFUN (Fset_char_table_extra_slot, 3);
 +EXFUN (Fchar_table_range, 2);
 +EXFUN (Fset_char_table_range, 3);
 +EXFUN (Fset_char_table_default, 3);
 +EXFUN (Foptimize_char_table, 1);
 +EXFUN (Fmap_char_table, 2);
 +extern Lisp_Object copy_char_table P_ ((Lisp_Object));
 +extern Lisp_Object sub_char_table_ref P_ ((Lisp_Object, int));
 +extern Lisp_Object char_table_ref P_ ((Lisp_Object, int));
 +extern Lisp_Object char_table_ref_and_range P_ ((Lisp_Object, int,
 +                                               int *, int *));
 +extern Lisp_Object char_table_set P_ ((Lisp_Object, int, Lisp_Object));
 +extern Lisp_Object char_table_set_range P_ ((Lisp_Object, int, int,
 +                                           Lisp_Object));
 +extern int char_table_translate P_ ((Lisp_Object, int));
 +extern void map_char_table P_ ((void (*) (Lisp_Object, Lisp_Object,
 +                                        Lisp_Object),
 +                              Lisp_Object, Lisp_Object, Lisp_Object));
 +extern void syms_of_chartab P_ ((void));
 +
  /* Defined in print.c */
  extern Lisp_Object Vprin1_to_string_buffer;
  extern void debug_print P_ ((Lisp_Object));
diff --cc src/lread.c
index 5778a9d3a0cd21cfbfbd8d697108b31e0ddce3fc,4d9ddfbd0092dac0efd2a7e4b4b57da2cae26392..7a4437350b18e7248c60cf5e0305a74a2adf2093
@@@ -1523,7 -1341,9 +1535,7 @@@ readevalloop (readcharfun, stream, sour
    record_unwind_protect (readevalloop_1, load_convert_to_unibyte ? Qt : Qnil);
    load_convert_to_unibyte = !NILP (unibyte);
  
-   GCPRO1 (sourcename);
 -  readchar_backlog = -1;
 -
+   GCPRO4 (sourcename, readfun, start, end);
  
    LOADHIST_ATTACH (sourcename);
  
@@@ -1893,16 -1773,15 +1932,15 @@@ read_escape (readcharfun, stringp
        return c | alt_modifier;
  
      case 's':
-       if (stringp)
-       return ' ';
        c = READCHAR;
-       if (c != '-') {
-       UNREAD (c);
-       return ' ';
-       }
+       if (c != '-')
+       {
+         UNREAD (c);
+         return ' ';
+       }
        c = READCHAR;
        if (c == '\\')
 -      c = read_escape (readcharfun, 0, byterep);
 +      c = read_escape (readcharfun, 0);
        return c | super_modifier;
  
      case 'C':
diff --cc src/macfns.c
Simple merge
diff --cc src/macterm.c
index f0574c9078f5035777408db78e951e94c8028ef6,b620bf1f68359ba8b26c92cbfd895857a64da998..4e7b0fde4e26062abe2f17f3cd5a7a7c789d4f64
@@@ -86,17 -85,7 +85,9 @@@ Boston, MA 02110-1301, USA.  *
  #include "intervals.h"
  #include "atimer.h"
  #include "keymap.h"
 +#include "character.h"
 +#include "ccl.h"
  
- /* Set of macros that handle mapping of Mac modifier keys to emacs.  */
- #define macCtrlKey     (NILP (Vmac_reverse_ctrl_meta) ? controlKey :  \
-                       (NILP (Vmac_command_key_is_meta) ? optionKey : cmdKey))
- #define macShiftKey    (shiftKey)
- #define macMetaKey     (NILP (Vmac_reverse_ctrl_meta) ?                       \
-                       (NILP (Vmac_command_key_is_meta) ? optionKey : cmdKey) \
-                       : controlKey)
- #define macAltKey      (NILP (Vmac_command_key_is_meta) ? cmdKey : optionKey)
  \f
  
  /* Non-nil means Emacs uses toolkit scroll bars.  */
Simple merge
diff --cc src/minibuf.c
Simple merge
diff --cc src/print.c
Simple merge
diff --cc src/process.c
Simple merge
diff --cc src/search.c
index 346c0e589faf2b4e8185354ed51ef84d8558ec1c,e12bf69d2a177f7bb8833fba5af4dc62319c8398..e35545f0e19bae1f1188ef07c1e1d2a4e67939a8
@@@ -1140,10 -1174,10 +1140,10 @@@ search_buffer (string, pos, pos_byte, l
        int raw_pattern_size_byte;
        unsigned char *patbuf;
        int multibyte = !NILP (current_buffer->enable_multibyte_characters);
-       unsigned char *base_pat = SDATA (string);
+       unsigned char *base_pat;
        /* Set to positive if we find a non-ASCII char that need
         translation.  Otherwise set to zero later.  */
 -      int charset_base = -1;
 +      int char_base = -1;
        int boyer_moore_ok = 1;
  
        /* MULTIBYTE says whether the text to be searched is multibyte.
diff --cc src/syntax.c
Simple merge
diff --cc src/term.c
Simple merge
diff --cc src/w32fns.c
Simple merge
diff --cc src/w32term.c
Simple merge
diff --cc src/window.c
index be3ecaa2b0b0bbe845acd2418f791a064b2ced96,7c829d1fb89c8aa57567287dc88afd6b00c95a55..e2678a3f3b89d6a2f43da46b986e266755b54e57
@@@ -3522,9 -3537,9 +3537,9 @@@ displayed.  */
        window = Fsplit_window (window, Qnil, Qnil);
        else
        {
 -        Lisp_Object upper, lower, other;
 +        Lisp_Object upper, other;
  
-         window = Fget_lru_window (frames);
+         window = Fget_lru_window (frames, Qt);
          /* If the LRU window is selected, and big enough,
             and can be split, split it.  */
          if (!NILP (window)
diff --cc src/xdisp.c
Simple merge
diff --cc src/xfaces.c
index 2c5f729f6c58f4679ab64735d0a997bacbe3b774,9a34717b7787eeb1739dcd60f282e4861aefcf89..ba1bbe7f1f619976441b5786009ccfc449076396
@@@ -3207,10 -3166,9 +3227,11 @@@ check_lface_attrs (attrs
           || SYMBOLP (attrs[LFACE_STIPPLE_INDEX])
           || !NILP (Fbitmap_spec_p (attrs[LFACE_STIPPLE_INDEX])));
    xassert (UNSPECIFIEDP (attrs[LFACE_FONT_INDEX])
+          || IGNORE_DEFFACE_P (attrs[LFACE_FONT_INDEX])
           || NILP (attrs[LFACE_FONT_INDEX])
           || STRINGP (attrs[LFACE_FONT_INDEX]));
 +  xassert (UNSPECIFIEDP (attrs[LFACE_FONTSET_INDEX])
 +         || STRINGP (attrs[LFACE_FONTSET_INDEX]));
  #endif
  }
  
@@@ -3402,8 -3360,8 +3423,8 @@@ lface_fully_specified_p (attrs
  
    for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
      if (i != LFACE_FONT_INDEX && i != LFACE_INHERIT_INDEX
 -      && i != LFACE_AVGWIDTH_INDEX)
 +      && i != LFACE_AVGWIDTH_INDEX && i != LFACE_FONTSET_INDEX)
-       if (UNSPECIFIEDP (attrs[i])
+       if ((UNSPECIFIEDP (attrs[i]) || IGNORE_DEFFACE_P (attrs[i]))
  #ifdef MAC_OS
          /* MAC_TODO: No stipple support on Mac OS yet, this index is
             always unspecified.  */
diff --cc src/xfns.c
Simple merge
diff --cc src/xmenu.c
Simple merge
diff --cc src/xterm.c
index e20935f0be4f935d91b65f93e73ad04fc46da243,113a942de5f22c16e22cd292a26b4e29b2a1f45f..d34a25ab6f6ac281ffb15569ed84a678db2bf0f1
@@@ -6241,14 -6241,27 +6247,35 @@@ handle_one_xevent (dpyinfo, eventp, fin
              goto done_keysym;
            }
  
 +        /* Keysyms directly mapped to Unicode characters.  */
 +        if (keysym >= 0x01000100 && keysym <= 0x0110FFFF)
 +          {
 +            inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
 +            inev.ie.code = keysym & 0xFFFFFF;
 +            goto done_keysym;
 +          }
 +
+         /* Keysyms directly mapped to supported Unicode characters.  */
+         if ((keysym >= 0x01000100 && keysym <= 0x010033ff)
+             || (keysym >= 0x0100e000 && keysym <= 0x0100ffff))
+           {
+             int code, charset_id, c1, c2;
+             if (keysym < 0x01002500)
+               charset_id = charset_mule_unicode_0100_24ff,
+                 code = (keysym & 0xFFFF) - 0x100;
+             else if (keysym < 0x0100e000)
+               charset_id = charset_mule_unicode_2500_33ff,
+                 code = (keysym & 0xFFFF) - 0x2500;
+             else
+               charset_id = charset_mule_unicode_e000_ffff,
+                 code = (keysym & 0xFFFF) - 0xe000;
+             c1 = (code / 96) + 32, c2 = (code % 96) + 32;
+             inev.ie.kind = MULTIBYTE_CHAR_KEYSTROKE_EVENT;
+             inev.ie.code = MAKE_CHAR (charset_id, c1, c2);
+             goto done_keysym;
+           }
          /* Now non-ASCII.  */
          if (HASH_TABLE_P (Vx_keysym_table)
              && (NATNUMP (c = Fgethash (make_number (keysym),
diff --cc src/xterm.h
Simple merge