]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge from emacs--devo--0
authorMiles Bader <miles@gnu.org>
Wed, 19 Jul 2006 00:42:56 +0000 (00:42 +0000)
committerMiles Bader <miles@gnu.org>
Wed, 19 Jul 2006 00:42:56 +0000 (00:42 +0000)
Patches applied:

 * emacs--devo--0  (patch 343-356)

   - Update from CVS
   - Update for ERC 5.1.3.
   - Merge from gnus--rel--5.10

 * gnus--rel--5.10  (patch 113-115)

   - Merge from emacs--devo--0
   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-90

63 files changed:
1  2 
admin/README
configure
configure.in
etc/HELLO
etc/NEWS
etc/PROBLEMS
etc/TODO
lisp/ChangeLog
lisp/Makefile.in
lisp/bindings.el
lisp/emacs-lisp/bytecomp.el
lisp/gnus/gnus-start.el
lisp/gnus/mm-util.el
lisp/info.el
lisp/international/mule.el
lisp/isearch.el
lisp/ldefs-boot.el
lisp/progmodes/sh-script.el
lisp/simple.el
lisp/subr.el
lisp/term/x-win.el
src/ChangeLog
src/ChangeLog.unicode
src/Makefile.in
src/alloc.c
src/buffer.c
src/buffer.h
src/bytecode.c
src/casetab.c
src/category.c
src/category.h
src/character.h
src/cmds.c
src/coding.c
src/data.c
src/dired.c
src/dispextern.h
src/dispnew.c
src/doc.c
src/editfns.c
src/fileio.c
src/fns.c
src/frame.c
src/frame.h
src/fringe.c
src/keyboard.c
src/keymap.c
src/lisp.h
src/lread.c
src/macterm.c
src/marker.c
src/minibuf.c
src/msdos.c
src/print.c
src/process.c
src/search.c
src/syntax.c
src/w32term.c
src/window.c
src/xdisp.c
src/xfaces.c
src/xfns.c
src/xterm.c

diff --cc admin/README
index 3ead9902843fd51525dd193773ddc0a264ec5db1,008717bcee52858fbae2c7c556bb18eb60bded19..2540ccc73c1f0b78f8e54dd317362661c1d86f5a
@@@ -3,26 -5,67 +5,74 @@@ and maintaining Emacs.  These files ar
  because they are not deemed generally useful, and you have to know
  what you do when using them.
  
- Brief description of scripts found here:
- admin.el              utilities for setting version numbers and alike
- alloc-color.c         a utility program that allocates a given number of
-                       colors on X.  Can be used to debug Emacs with
-                       dense colormaps (PseudoColor).
- build-configs         build Emacs in various configurations
- check-doc-strings     check doc strings against documentation
- cus-test.el           tests for custom types and load problems
- diff-tar-files                show files added/removed between two tar files
- make-emacs            build Emacs in various ways
- make-tarball.txt      instructions to create pretest or release tarballs
- quick-install-emacs   install emacs quickly (`incrementally')
- revdiff                       get CVS diffs of files
+ * Instructions and scripts used to prepare an Emacs release.
+ ** FOR-RELEASE
+ Living list of activities that must be completed before the next release.
+ ** make-tarball.txt
+ Instructions to create pretest or release tarballs, annoucements, etc.
+ ** admin.el
+ Utilities for setting version numbers and alike.
+ ** make-announcement, make-changelog-diff
+ Scripts used to prepare release announcements.
+ * Scripts that can be used to build and test Emacs.
+ ** build-configs
+ Build Emacs in various configurations.
+ ** make-emacs
+ Build Emacs in various ways.
+ ** quick-install-emacs
+ Install emacs quickly (`incrementally').
+ ** alloc-color.c
+ A utility program that allocates a given number of colors on X.  Can
+ be used to debug Emacs with dense colormaps (PseudoColor).
+ ** check-doc-strings
+ Check doc strings against documentation.
+ ** cus-test.el
+ Tests for custom types and load problems.
+ ** diff-tar-files
+ Show files added/removed between two tar files.
+ ** revdiff
+ Get CVS diffs of files.
\f
+ Local variables:
+ mode: outline
+ paragraph-separate: "[        \f]*$"
+ end:
  
 +Brief description of sub-directories:
 +
 +charsets              scripts for generating charset map files
 +                      in ../etc/charsets
 +unidata                       scripts for generating character property files
 +                      in ../lisp/international
 +
  # arch-tag: 812b9461-bc0a-46a7-925e-24bd41118463
diff --cc configure
Simple merge
diff --cc configure.in
Simple merge
diff --cc etc/HELLO
index 458e93ef667abe61bcdc49f8427ed411bb4c0754,14d9dc04efa14e47b52d727e013fc8e7dbe8acc1..e12a901e5487283493f5aedfc2dcaa7cfdfc2181
+++ b/etc/HELLO
@@@ -30,31 -30,31 +30,31 @@@ French (fran\e,Ag\e(Bais)    Bonjour, Salu
  Georgian (\e$,1JEJ0J@J7J5J4J:J8\e(B)    \e$,1J2J0J;J0J@JOJ=J1J0\e(B
  German (Deutsch)      Guten Tag, Gr\e,A|_\e(B Gott
  Greek (\e,Fekkgmij\\e(B)        \e,FCei\\e(B \e,Fsar\e(B
 -Hebrew (\e,Hraxiz\e(B)  \e,Hylem\e(B
 +Hebrew (\e,Hzixar\e(B)  \e,Hylem\e(B
- Hungarian (??)        Sz\e,Bi\e(Bp j\e,Bs\e(B napot!
+ Hungarian (magyar)    Sz\e,Bi\e(Bp j\e,Bs\e(B napot!
 -Hindi (\e4\e$,4!}t%"+\e0\e$,15y5\7f5B\e1\e4\e$,4!.v#"Yv#"2\e0\e$,15f6 \e1\e(B)     \e4\e$,4!8v#")\e0\e$,15h\e1\e4\e$,4!hv#")\e0\e$,15n\e1\e4\e$,4!zv#!)v#")v#"D\e0\e$,15x6-5d6'\e1\e(B, \e4\e$,4!8v#")\e0\e$,15h\e1\e4\e$,4!hv#")\e0\e$,15n\e1\e4\e$,4!zv# ev#"Rv#")\e0\e$,15x6-5U5~\e1\e4\e$,4!nv#"W\e0\e$,15p\e1\e(B \e4\e$,4 J\e0\e$,16D\e1\e(B
 +Hindi (\e$,15y5\7f5B5f6 \e(B)     \e$,15h5n5x6-5d6'\e(B, \e$,15h5n5x6-5U5~5p\e(B \e$,16D\e(B
  Italian (italiano)    Ciao, Buon giorno
  Javanese (Jawa)       System.out.println("Halo, selamat sore!");
 -Kannada (\e4\e$,43Ov#4z\e0\e$,1>u\e1\e4\e$,44Kv#4zv#4M\e0\e$,1?(?M?(\e1\e4\e$,43sv#4z\e0\e$,1?!\e1\e(B)       \e4\e$,44Kv#4z\e0\e$,1?(\e1\e4\e$,44hv#4zv#4\7f\e0\e$,1?.\e1\e4\e$,44qv#4{v#3Q\e0\e$,1?8?M>u?>\e1\e4\e$,44av#4z\e0\e$,1?0\e1\e(B
 -Lao (\e(1>RJRERG\e(B)   \e(1JP:R-\e04U\e1\e(B, \e0\e(1"m\e1c\e0Ki\e1b*!\e04U\e1\e(B
 -Malayalam (\e4\e$,46A\e0\e$,1@N\e1\e4\e$,46E\e0\e$,1@R\e1\e4\e$,46Bv#6M\e0\e$,1@O@^\e1\e4\e$,46Fv#6W\e0\e$,1@S@"\e1\e(B)   \e4\e$,46<\e0\e$,1@H\e1\e4\e$,46A\e0\e$,1@N\e1\e4\e$,46Kv#6Vv#6)v#6M\e0\e$,1@X@m@5@^\e1\e4\e$,46Cv#6W\e0\e$,1@P@"\e1\e(B
 +Kannada (\e$,1>u?(?M?(?!\e(B)   \e$,1?(?.?8?M>u?>?0\e(B
 +Lao (\e(1>RJRERG\e(B)   \e(1JP:R-4U\e(B, \e(1"mcKib*!4U\e(B
 +Malayalam (\e$,1@N@R@O@^@S@"\e(B)       \e$,1@H@N@X@m@5@^@P@"\e(B
  Maltese (il-Malti)    Bon\e,Cu\e(Bu, Sa\e,C11\e(Ba
 -Mathematics   \e$,1x \e(B p \e$,1x(\e(B world \e$,1s"\e(B hello p  \e$,2!a\e(B
 +Mathematics   \e$B"O\e(B p \e$A!J\e(B world \e$(O#@\e(B hello p  \e$A!u\e(B
  Nederlands, Vlaams    Hallo, Dag
  Norwegian (norsk)     Hei, God dag
 -Polish (polski)       Dzie\e,Bq\e(B dobry! Cze\e,B6f\e(B!
 +Polish  (j\e,Bj\e(Bzyk polski)  Dzie\e,Bq\e(B dobry! Cze\e,B6f\e(B!
  Russian (\e,L`caaZXY\e(B)       \e,L7T`PRabRcYbU\e(B!
 -Slovak (sloven\e,Bh\e(Bina)     Dobr\e,B}\e(B de\e,Br\e(B
 +Slovak (sloven\e,Bh\e(Bina)     Dobr\e,A}\e(B de\e,Br\e(B
  Slovenian (sloven\e,B9h\e(Bina) Pozdravljeni!
  Spanish (espa\e,Aq\e(Bol)       \e,A!\e(BHola!
 -Swedish (svenska)     Hej, Goddag, Hall\e,Ae\e(B
 -Tamil (\e4\e$,4*N\e0\e$,1<D\e1\e4\e$,4(i\e0\e$,1<N<_\e1\e4\e$,4*Vv#)b\e0\e$,1<T<m\e1\e(B)     \e4\e$,4*U\e0\e$,1<U\e1\e4\e$,4*M\e0\e$,1<C\e1\e4\e$,4*Hv#)b\e0\e$,1<5<m\e1\e4\e$,4*H\e0\e$,1<5\e1\e4\e$,4*Qv#)b\e0\e$,1<N<m\e1\e(B
 -Thai (\e,T@RIRd7B\e(B)  \e,TJ\e0GQ\e1J\e04U\e1$\e0CQ\e1:\e(B, \e,TJ\e0GQ\e1J\e04U\e1\e0$h\e1P\e(B
 -Tibetan (\e4\e$(7"7r'"]\e0"7"]\e1\e4"2\e0"2\e1!;\e4%P\e0"G#!"Q\e1\e4"2\e0"2\e1!;\e(B)       \e4\e$(7"7\e0"7\e1\e4$P\e0"!#C"Q\e1!;\e4"Er'"S\e0"E"S\e1\e4"G\e0"G\e1!;\e4"7\e0"7\e1\e4"2r'"[\e0"2"[\e1!;\e4"Dr'"[\e0"D"[\e1\e4"#\e0"#\e1\e4"G\e0"G\e1!>\e(B
 -Tigrigna (\e$(3"8#r!N"^\e(B)    \e$(3!Q!,!<"8\e(B
 -Turkish (T\e,M|\e(Brk\e,Mg\e(Be)  Merhaba
 +Swedish (p\e,Ae\e(B svenska)    Hej, Goddag, Hall\e,Ae\e(B
 +Tamil (\e$,1<D<N<_<T<m\e(B)     \e$,1<U<C<5<m<5<N<m\e(B
 +Thai (\e,T@RIRd7B\e(B)  \e,TJGQJ4U$CQ:\e(B, \e,TJGQJ4U$hP\e(B
 +Tibetan (\e$(7"7"]"2!;"G#!"Q"2!;\e(B)   \e$(7"7"!#C"Q!;"E"S"G!;"7"2"[!;"D"["#"G!>\e(B
 +Tigrigna (\e$,1NUP-MmN{\e(B)    \e$,1MpMKM[NU\e(B
 +Turkish (T\e,A|\e(Brk\e,Ag\e(Be)  Merhaba
  Ukrainian (\e,LcZ`Pw]alZP\e(B)  \e,L2vbPn\e(B
 -Vietnamese (Ti\e,1*\e(Bng Vi\e,1.\e(Bt)   Ch\e,1`\e(Bo b\e,1U\e(Bn
 +Vietnamese (ti\e,1*\e(Bng Vi\e,1.\e(Bt)   Ch\e,A`\e(Bo b\e,1U\e(Bn
  
  Japanese (\e$BF|K\8l\e(B)       \e$B$3$s$K$A$O\e(B, \e(I:]FAJ\e(B
  Chinese (\e$AVPND\e(B,\e$AFUM(;0\e(B,\e$A::So\e(B)  \e$ADc:C\e(B
diff --cc etc/NEWS
Simple merge
diff --cc etc/PROBLEMS
Simple merge
diff --cc etc/TODO
Simple merge
diff --cc lisp/ChangeLog
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc lisp/info.el
Simple merge
index ae3301e24a9fbcc44d086774ce2436fbc2eb595c,31e3b5cedb0f4fa5cb820f69bfc66c79851fb61c..06c863916db90aa256dd0421cf1dae56939fd788
@@@ -1,6 -1,6 +1,6 @@@
 -;;; mule.el --- basic commands for mulitilingual environment
 +;;; mule.el --- basic commands for multilingual environment
  
- ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
  ;;   Free Software Foundation, Inc.
  ;; Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
  ;;   National Institute of Advanced Industrial Science and Technology (AIST)
diff --cc lisp/isearch.el
Simple merge
Simple merge
Simple merge
diff --cc lisp/simple.el
Simple merge
diff --cc lisp/subr.el
Simple merge
Simple merge
diff --cc src/ChangeLog
Simple merge
index fcfc9d316575e692ed95143419bed7f4885b9968,0000000000000000000000000000000000000000..7af2aa0784cd2d5e6c83bbe21c6d50cc7f486a2f
mode 100644,000000..100644
--- /dev/null
@@@ -1,3862 -1,0 +1,3866 @@@
++2006-07-18  Miles Bader  <miles@gnu.org>
++
++      * character.h (CHECK_CHARACTER): Redefine in terms of CHECK_TYPE.
++
 +2006-07-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.h (LGLYPH_XOFF, LGLYPH_YOFF, LGLYPH_WIDTH, LGLYPH_WADJUST)
 +      (LGLYPH_SET_WIDTH): Adjusted for the change of LGLYPH format.
 +      (LGLYPH_ADJUSTMENT, LGLYPH_SET_ADJUSTMENT): New macros.
 +
 +      * font.c (font_merge_old_spec): Treat '*' in foundry as a wild
 +      card.
 +      (DEVICE_DELTA): Fix typo.
 +      (font_otf_gpos): Adjusted for the change of LGLYPH format.
 +      (font_prepare_composition): Likewise.
 +
 +      * xterm.c (x_draw_composite_glyph_string_foreground): Adjusted for
 +      the change of LGLYPH format.
 +
 +2006-07-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * ftfont.c (ftfont_list): Fix typo.
 +      (ftfont_build_basic_charsets): Don't include letters with
 +      diactrics.
 +
 +2006-07-09  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * xfaces.c (realize_non_ascii_face): Set face->extra to NULL.
 +
 +      * xftfont.c (xftfont_done_face): Call XftDrawDestroy only if
 +      xftface_info is non-NULL.
 +
 +2006-07-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * ftfont.c (ftfont_list): Fix typo.
 +      (ftfont_build_basic_charsets): Don't include letters with
 +      diactrics.
 +
 +2006-07-05  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * ftfont.c (ftfont_list): Move misplaced #endif
 +
 +2006-07-05  Kenichi Handa  <handa@m17n.org>
 +
 +      * ftfont.c (ftfont_list): Pay attention to the case that
 +      FC_CAPABILITY is not defined.
 +
 +2006-07-03  Kenichi Handa  <handa@m17n.org>
 +
 +      * xftfont.c (xftfont_open): Set charset related members to -1.
 +
 +      * ftfont.c (ftfont_list): Handle QCotf property.  Handling of
 +      QCname fixed.
 +      (ftfont_open): Set charset related members to -1.
 +
 +      * fontset.c (Votf_script_alist): New variable.
 +      (syms_of_fontset): Initialize it.
 +      (fontset_font): Delete unused variable.
 +
 +      * fontset.h (Votf_script_alist): Extern it.
 +
 +      * font.c (font_find_for_lface): Code optimized.
 +
 +      * font.h (font_close_object, font_merge_old_spec): Extern them.
 +
 +2006-06-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.c (QCscalable, Qc, Qm, Qp, Qd): New variables.
 +      (syms_of_font): Initialize them.
 +      (font_pixel_size): Allow float value in dpi.
 +      (font_prop_validate_type): Deleted.
 +      (font_prop_validate_symbol, font_prop_validate_style): Argument
 +      changed.  Caller changed.
 +      (font_prop_validate_non_neg): Renamed from
 +      font_prop_validate_size.
 +      (font_prop_validate_extra): Deleted.
 +      (font_prop_validate_spacing): New function.
 +      (font_property_table): Add elements for all known properties.
 +      (get_font_prop_index): Renamed from check_font_prop_name.  New
 +      argument FROM.  Caller changed.
 +      (font_prop_validate): Validate all known properties.
 +      (font_put_extra): Argument force deleted.  Caller changed.
 +      (font_expand_wildcards): Make it static.  Fix the way of shrinking
 +      the possible range.
 +      (font_parse_xlfd): Arguemnt merge deleted.  Fix handling of RESX,
 +      RESY, SPACING, and AVGWIDTH.  Don't validate property values here.
 +      Caller changed.
 +      (font_unparse_xlfd): Handle dpi, spacing, and scalable properties.
 +      (font_parse_fcname): Arguemnt merge deleted.  Fix parsing of point
 +      size.  Don't validate properties values here.  Caller changed.
 +      (font_unparse_fcname): Handle dpi, spacing, and scalable
 +      properties.
 +      (font_open_by_name): Delete unused variable.
 +      (Ffont_spec): Likewise.  Validate property values.
 +      (Ffont_match_p): New function.
 +
 +      * font.h (QCscalable): Extern it.
 +      (font_parse_xlfd, font_parse_fcname): Prototype adjusted.
 +
 +      * ftfont.c (ftfont_list): Handle properties dpi, spacing, and
 +      scalable.
 +
 +      * xfont.c (xfont_query_font): Adjusted for the change of
 +      font_parse_xlfd.
 +      (xfont_list_pattern): New function.
 +      (xfont_list): Use xfont_list_pattern.
 +
 +      * xftfont.c (xftfont_prepare_face): Cancel previous change.
 +      (xftfont_done_face): Likewise.
 +
 +2006-06-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.h (Flist_fonts): EXFUN it.
 +
 +2006-06-25  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32term.c (w32_initialize): Add back smoothing_type and
 +      smoothing_enabled definitions.
 +
 +2006-06-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (x_draw_glyph_string) [USE_FONT_BACKEND]: Check
 +      s->face->font on determining underline position.
 +
 +2006-06-21  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.c (font_parse_xlfd): Fix generating of CHARSET_REGISTRY field.
 +      (font_has_char): Accept font-object too.
 +      (font_find_for_lface): Try at first with a size specified in face.
 +
 +      * xftfont.c (xftfont_prepare_face): Make non-ascii face share
 +      face->extra with ascii face.
 +      (xftfont_done_face): Don't free face->extra of non-ascii face.
 +
 +2006-06-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * frame.c (x_set_font) [USE_FONT_BACKEND]: Fix argument to
 +      font_open_by_name.
 +
 +2006-06-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.h (QCspacing, QCdpi): Extern them.
 +      (enum font_spacing): New enum.
 +      (FONT_PIXEL_SIZE_QUANTUM): New macro.
 +
 +      * font.c (POINT_TO_PIXEL): Don't divice POINT by 10.
 +      (QCspacing, QCdpi): New variables.
 +      (syms_of_font): Initialize them.
 +      (font_pixel_size): New function.
 +      (font_put_extra): New function.
 +      (font_parse_xlfd): Fix handling of font size.  Add QCdpi property
 +      in FONT_EXTRA.
 +      (font_parse_fcname): Handle enumenrated values (e.g. bold).  Fix
 +      handling font size.  Add QCname property that contains only
 +      unknown properties.
 +      (font_score): Change argument.  Caller changed.  Pay attention to
 +      FONT_PIXEL_SIZE_QUANTUM.
 +      (font_sort_entites): Fix handling of font size.
 +      (font_list_entities): Likewise.
 +      (font_find_for_lface): Likewise.
 +      (font_open_for_lface): Likewise.
 +      (font_open_by_name): Likewise.
 +      (Ffont_spec): Add QCname property that contains only unknown
 +      properties.
 +
 +      * ftfont.c (ftfont_list): Use assq_no_quit, not Fassq.  Don't
 +      include weight in listing pattern, instead check weight of each
 +      listed font.  Don't include scalable in pattern.  Pay attention to
 +      FONT_PIXEL_SIZE_QUANTUM.
 +
 +2006-06-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * lread.c (read_escape): Fix the code synched with HEAD.
 +
 +      * font.c (font_parse_fcname): Fix parsing of point-size.
 +      (font_unparse_fcname): Produce symbolic names for style
 +      properties.
 +      (font_list_entities): Handle float size correctly.
 +      (font_open_by_name): Prefer `normal' property values if the name
 +      doesn't specify them.
 +
 +      * fontset.c (Finternal_char_font): Use font_get_name, not
 +      Ffont_xlfd_name.
 +
 +      * ftfont.c (ftfont_pattern_entity): Use the numeric value 100 for
 +      FC_WEIGHT_REGULAR.  Exclude FC_SIZE and FC_PIXEL_SIZE from listing
 +      pattern.  Don't force scalable.
 +
 +      * xftfont.c (xftfont_open): For generating a name, start from
 +      96-byte buffer.
 +
 +2006-06-16  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 +
 +      * frame.h (x_new_fontset2): Fix prototype.
 +
 +2006-06-16  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.h (struct font_driver): Member parse_name deleted.
 +      (font_match_p, font_get_spec, font_parse_fcname)
 +      (font_unparse_fcname): Extern them.
 +      (font_get_name): Prototype adjusted.
 +
 +      * font.c (XLFD_SMALLNUM_MASK): Delete this macro.
 +      (XLFD_LARGENUM_MASK): Delete XLFD_ENCODING_MASK from it.
 +      (font_expand_wildcards): Fix handling ENCODING field.  Avoid
 +      unnecessary checks for weight, slant, and swidth.
 +      (font_parse_fcname): New function.
 +      (font_unparse_fcname): New function.
 +      (font_parse_name): New function.
 +      (font_match_p): New function.
 +      (font_get_name): Return value changed to Lisp string.
 +      (font_get_spec): New function.
 +      (Qunspecified, Qignore_defface): Don't extern them.
 +      (font_find_for_lface): Assume that LFACE is fully specified.
 +      (font_load_for_face): If lface[LFACE_FONT_INDEX] is an font
 +      object, use it for FACE.
 +      (font_open_by_name): Call Ffont_spec with QCname prop.  Don't call
 +      driver->parse_name.
 +      (Ffont_spec): Call font_parse_name, not font_parse_xlfd.
 +
 +      * fontset.h (new_fontset_from_font) [USE_FONT_BACKEND]: Prototype
 +      adjusted.
 +
 +      * fontset.c (new_fontset_from_font) [USE_FONT_BACKEND]: Argument F
 +      deleted.  Don't call Fnew_fontset.  Instead, directly call
 +      make_fontset.
 +
 +      * frame.h (x_new_fontset2) [USE_FONT_BACKEND]: Prototype adjusted.
 +
 +      * frame.c (x_set_font) [USE_FONT_BACKEND]: Adjusted for the change
 +      of x_new_fontset2.
 +
 +      * ftfont.c (Qmonospace, Qsans_serif, Qserif, Qmono, Qsans)
 +      (Qsans__serif): New variables.
 +      (ftfont_generic_family_list): New variable.
 +      (syms_of_ftfont): Initialize the above variables.
 +      (ftfont_pattern_entity): Argument NAME deleted.
 +      (ftfont_list_generic_family): New function.
 +      (ftfont_parse_name): Delete this function.
 +      (ftfont_list): Try generic family only when FcFontList found no
 +      font.
 +      (ftfont_list_family): Fix args to FcObjectSetBuild.
 +
 +      * xfaces.c (check_lface_attrs) [USE_FONT_BACKEND]: Accept font
 +      object in attrs[LFACE_FONT_INDEX].
 +      (set_lface_from_font_name): Cancel all changes for font-backend.
 +      (set_lface_from_font_and_fontset) [USE_FONT_BACKEND]: New
 +      function.
 +      (Finternal_set_lisp_face_attribute) [USE_FONT_BACKEND]: Accept a
 +      font object in QCfont attribute.
 +      (set_font_frame_param) [USE_FONT_BACKEND]: Likewise.
 +      (realize_default_face) [USE_FONT_BACKEND]: Call
 +      set_lface_from_font_and_fontset.
 +
 +      * xfns.c (x_default_font_parameter) [USE_FONT_BACKEND]: Try also
 +      "fixed", and signal error here if no suitable font was found.
 +
 +      * xfont.c (xfont_parse_name): Delete this function.
 +
 +      * xftfont.c (xftfont_open): Change coding style of error
 +      handling.  Generate fontconfig's fontname pattern.
 +
 +      * xterm.h (struct x_output) [USE_FONT_BACKEND]: New member fontp.
 +      (FRAME_FONT_OBJECT) [USE_FONT_BACKEND]: New macro.
 +
 +      * xterm.c (x_new_fontset2) [USE_FONT_BACKEND]: Change arguments.
 +      Both args FONTSET and FONT_OBJECT must be existing ones.
 +
 +2006-06-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macterm.c (mac_set_unicode_keystroke_event): Don't use MAKE_CHAR.
 +
 +2006-06-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfont.c (xfont_open, xfont_encode_char): Fix typo.
 +
 +      * font.h (struct font): Fix typo.
 +
 +      * font.c (enum xlfd_field_index): Rename XLFD_XXX_SIZE_INDEX to
 +      XLFD_XXX_INDEX.
 +      (enum xlfd_field_mask): New enum.
 +      (intern_font_field): Argument changed.  Caller changed.  If digits
 +      are followed by non-digits, return a symbol.
 +      (font_expand_wildcards): New function.
 +      (font_parse_xlfd): Fix wildcard handling.
 +      (Ffont_spec): If :name is specified, reflect the info in the other
 +      properties.
 +
 +      * ftfont.c (ftfont_pattern_entity): Fix typo.
 +      (ftfont_list): Enforce FC_LANG in PATTERN to cancel the effect of
 +      locale.
 +
 +2006-06-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * font.h (Qiso8859_1, Qiso10646_1, Qunicode_bmp): Extern them.
 +
 +      * font.c (Qiso8859_1, Qiso10646_1, Qunicode_bmp): Moved from
 +      ftfont.c.
 +      (font_unparse_xlfd): Fix argument type declaration.  Append "*" if
 +      registry doesn't specify encoding part.
 +      (font_find_for_lface): Pay attention to LFACE_FONT_INDEX.
 +      (font_open_by_name): At first try parsing the name.
 +      (syms_of_font): Declare Qiso8859_1, Qiso10646_1, and Qunicode_bmp
 +      as Lisp symbols.
 +
 +      * fontset.c (reorder_font_vector): Pay attention to the case that
 +      the 3rd element of font_def is nil.
 +      (fontset_font): For the default fontset, append one more fontset
 +      elements for a script-based font specification.  Don't add script
 +      attribute on finding a font.
 +      (new_fontset_from_font): Unconditionally set FONTSET_ASCII to the
 +      font name.
 +      (fontset_ascii_font): If a font can't be opened, return nil.
 +
 +      * ftfont.c (Qiso8859_1, Qiso10646_1, Qunicode_bmp): Moved to
 +      font.c.
 +      (ftfont_pattern_entity): New function.
 +      (ftfont_get_cache): Assume that freetype_font_cache is already
 +      initialized.
 +      (ftfont_list): Handle the case that a file is specified in font
 +      name.  Use ftfont_pattern_entity to generate entities.
 +      (ftfont_has_char): Check if the pattern contains FC_CHARSET.
 +      (syms_of_ftfont): Initialize freetype_font_cache.
 +
 +      * xftfont.c (xftfont_open): Make the font name fontconfig's
 +      style.  Add BLOCK_INPUT and UNBLOCK_INPUT.
 +      (xftfont_close): Free font->font.name if not NULL.
 +
 +      * xfont.c (xfont_list): If script is specified for a font, return
 +      null_vector.
 +      (xfont_list_family): Declare argument type.
 +
 +      * xfaces.c (set_lface_from_font_name): If a font doesn't have a
 +      name, set LFACE_FONT (lface) to nil.
 +
 +      * xterm.c (x_new_fontset2): If an ASCII font couldn't be loaded,
 +      return Qnil.
 +
 +2006-06-08  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32term.c (w32_initialize): Manually sync 2006-06-05 change from
 +      HEAD.
 +
 +2006-06-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * emacs.c (main): Check -enable-font-backend arg after the check
 +      of -nl.
 +      (standard_args): Add "-enable-font-backend".
 +
 +      * coding.c (Ffind_operation_coding_system): Sync with HEAD.
 +
 +      * callproc.c (Fcall_process): Sync with HEAD.
 +
 +      * coding.h (CODING_REQUIRE_ENCODING): Comment sync with HEAD.
 +
 +2006-06-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * xftfont.c (xftfont_default_fid): Set fid_known to 1.
 +      (struct xftdraw_list, xftdraw_list): Delete them.
 +      (register_xftdraw, check_xftdraw): Delete them.
 +      (xftfont_prepare_face): Don't call register_xftdraw.
 +      (xftfont_done_face): Don't call check_xftdraw.
 +      (xftfont_draw): Get backroudn color only when with_background is
 +      nonzero.
 +
 +      * xfont.c (xfont_encode_char): Fix calculation of char2b.
 +
 +2006-06-06  Kenichi Handa  <handa@m17n.org>
 +
 +      These changes are for the new font handling codes.
 +
 +      * Makefile.in (ALL_CFLAGS): Add @FREETYPE_CFLAGS@,
 +      @FONTCONFIG_CFLAGS@, and @LIBOTF_CFLAGS@.
 +      (LIB_X11_LIB): If HAVE_XFT is defined, set to @XFT_LIBS@.
 +      (FONTSRC, FONTOBJ): New variables.
 +      (obj): Add $(FONTOBJ).
 +      (SOME_MACHINE_OBJECTS): Lib_X11_Lib.
 +      (LIBES): Add @FREETYPE_LIBS@, @FONTCONFIG_LIBS@, and
 +      @LIBOTF_LIBS@.
 +      (font.o, ftfont.o, xfont.o, xftfont.o, ftxfont.o): New targets.
 +      (fontset.o, xdisp.o, xfaces.o, xfns.o, xterm.o): Depends on
 +      $(FONTSRC).
 +
 +      * font.h, font.c, xfont.c, ftfont.c, xftfont.c, ftxfont.c: New
 +      files.
 +
 +      * character.h (Vscript_representative_chars): Extern it.
 +
 +      * character.c (Vscript_representative_chars): New variable.
 +      (syms_of_character): Declare it as a Lisp variable.
 +
 +      * composite.c (get_composition_id) [USE_FONT_BACKEND]: If
 +      enable_font_backend is nonzero, accept the composition method
 +      COMPOSITION_WITH_GLYPH_STRING.
 +
 +      * composite.h (enum composition_method) [USE_FONT_BACKEND]: New
 +      enumeration COMPOSITION_WITH_GLYPH_STRING.
 +
 +      * config.in: Re-generated.
 +
 +      * dispextern.h (struct glyph_string) [USE_FONT_BACKEND]: New
 +      members clip_x, clip_y, clip_width, and clip_height.
 +      (struct face) [USE_FONT_BACKEND]: New members font_info and extra.
 +
 +      * emacs.c (main) [USE_FONT_BACKEND]: Handle arg
 +      --enable-font-backend.  Call syms_of_font.
 +
 +      * fns.c (assoc_no_quit): New function.
 +
 +      * fontset.h (FONT_INFO_FROM_FACE): New macro.
 +      (face_for_font, new_fontset_from_font)
 +      (fontset_ascii_font) [USE_FONT_BACKEND]: Extern them.
 +
 +      * fontset.c [USE_FONT_BACKEND]: Include "font.h".
 +      (fontset_font, fontset_ascii, face_for_char)
 +      (make_fontset_for_ascii_face, Ffont_info)
 +      (Finternal_char_font) [USE_FONT_BACKEND]: If enable_font_backend
 +      is nonzero, use font-backend mechanism.
 +      (find_font_encoding): Make it non-static.
 +      (new_fontset_from_font, fontset_ascii_font) [USE_FONT_BACKEND]:
 +      New functions.
 +
 +      * frame.h (struct frame): New members resx and resy.
 +      (struct frame) [USE_FONT_BACKEND]: New member font_driver_list.
 +      (x_new_fontset2) [USE_FONT_BACKEND]: Extern it.
 +
 +      * frame.c [USE_FONT_BACKEND]: Include "font.h".
 +      (make_frame, x_set_font) [USE_FONT_BACKEND]: Use font-backend
 +      mechanism.
 +
 +      * lisp.h (assoc_no_quit): Extern it.
 +
 +      * xdisp.c: If USE_FONT_BACKEND is defined, include "font.h".
 +      Through out the file, use FONT_INFO_FROM_FACE instead of
 +      FONT_INFO_FROM_ID, use get_per_char_metric instead of
 +      rif->per_char_metric.
 +      (handle_composition_prop) [USE_FONT_BACKEND]: If the composition
 +      method is COMPOSITION_WITH_GLYPH_STRING, just set it->c to ' '.
 +      (get_glyph_face_and_encoding, fill_composite_glyph_string)
 +      (get_char_face_and_encoding, BUILD_COMPOSITE_GLYPH_STRING)
 +      (x_produce_glyphs) [USE_FONT_BACKEND]: If enable_font_backend is
 +      nonzero, use font-backend mechanism.
 +      (get_per_char_metric): New function.
 +
 +      * xfaces.c [USE_FONT_BACKEND]: Include "font.h".
 +      (set_lface_from_font_name)
 +      (set_font_frame_param, free_realized_face)
 +      (prepare_face_for_display, clear_face_gcs)
 +      (Finternal_set_font_selection_order, realize_x_face)
 +      [USE_FONT_BACKEND]: If enable_font_backend is nonzero, use
 +      font-backend mechanism.
 +      (clear_face_cache) [USE_FONT_BACKEND]: Don't call
 +      clear_font_table.
 +      (load_face_font) [USE_FONT_BACKEND]: Abort.
 +      (face_symbolic_value, face_symbolic_weight, face_symbolic_slant)
 +      (face_symbolic_swidth, face_for_font) [USE_FONT_BACKEND]: New
 +      functions.
 +
 +      * xfns.c [USE_FONT_BACKEND]: Include "font.h".
 +      (x_default_font_parameter) [USE_FONT_BACKEND]: New function.
 +      (Fx_create_frame) [USE_FONT_BACKEND]: If enable_font_backend is
 +      nonzero, register all available font drivers.  Call
 +      x_default_font_parameter for deciding a font.
 +      (x_create_tip_frame) [USE_FONT_BACKEND]: Likewise.
 +
 +      * xterm.c [USE_FONT_BACKEND]: Include "font.h".
 +      (x_set_mouse_face_gc, x_set_glyph_string_clipping)
 +      (x_set_glyph_string_clipping_exactly)
 +      (x_compute_glyph_string_overhangs)
 +      (x_draw_glyph_string_foreground)
 +      (x_draw_composite_glyph_string_foreground, x_draw_glyph_string)
 +      (x_free_frame_resources) [USE_FONT_BACKEND]: If
 +      enable_font_backend is nonzero, use font-backend mechanism.
 +      (x_new_fontset2) [USE_FONT_BACKEND]: New function.
 +
 +2006-05-15  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.h (system_eol_type): Fix synching with HEAD.
 +
 +      * coding.c (system_eol_type): Sync with HEAD.
 +      (coding_inherit_eol_type): If PARENT is nil, inherit from
 +      system_eol_type.
 +      (syms_of_coding): Initialize system_eol_type.
 +
 +      * callproc.c (Fcall_process): Sync with HEAD.
 +
 +      * process.c (setup_process_coding_systems): Fix synching with
 +      HEAD.
 +      (read_process_output): Likewise.
 +      (Fset_process_coding_system): Inherit system's eol format if
 +      necessary.
 +
 +      * fileio.c (choose_write_coding_system): Fix synching with HEAD.
 +
 +      * keymap.c (push_key_description): Fix synching with HEAD.
 +
 +2006-05-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macgui.h (USE_ATSUI): Don't enable on emacs-unicode-2 branch.
 +
 +2006-04-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_eol): Pay attention to buffer relocation in
 +      del_range_2.
 +      (decode_coding): Call decode_eol before restoring undo_list.
 +
 +2006-03-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (Fdefine_charset_internal): Fix setting of
 +      emacs_mule_bytes.
 +
 +2006-03-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * keyboard.c (read_char): Check if C is a character or not before
 +      looking up Vkeyboard_translate_table.
 +
 +2006-03-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (DECODE_EMACS_MULE_20_RELATIVE_COMPOSITION): Fix
 +      condition to terminate the loop.
 +
 +2006-03-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (produce_composition): Compare charbuf[i] instead of
 +      args[i] against 0.
 +      (Fterminal_coding_system): Use EQ to compare Lisp objects.
 +
 +2006-03-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (DECODE_COMPOSITION_START): If the source is short, set
 +      coding->result to CODING_RESULT_INSUFFICIENT_SRC.
 +      (decode_coding_gap): Set CODING_MODE_LAST_BLOCK after the call of
 +      detect_coding.
 +      (emacs_mule_char): Handle old style (Emacs 20) component character
 +      of a composition.
 +      (DECODE_EMACS_MULE_COMPOSITION_RULE_20): Fix parsing a composition
 +      rule.
 +      (DECODE_EMACS_MULE_20_RULEBASE_COMPOSITION): Likewise.
 +      (decode_coding_emacs_mule): Handle invalid bytes correctly.
 +
 +2006-03-04  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (encode_coding_ccl): Allocate destination dynamically
 +      when necessary.
 +
 +2006-03-03  Kenichi Handa  <handa@m17n.org>
 +
 +      * ccl.c (Fccl_execute_on_string): Fix the condition of terminating
 +      the loop.  When quitted, show a proper error message.
 +
 +2006-03-02  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding): Fix previous change.
 +
 +      * xterm.c (x_set_glyph_string_clipping_exactly): Set
 +      src->clip_head and src->clip_tail temporarily instead of src->hl.
 +
 +      * ccl.c (CCL_WRITE_STRING): Handle a flag bit for multibyte
 +      character sequence.
 +      (Fccl_execute_on_string): Use ASET, not XSET.
 +
 +2006-03-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * search.c (search_buffer): Fix handling of "\\" in a trivial
 +      regexp.
 +
 +2006-02-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding): Fix the condition of terminating the
 +      decoding loop.
 +
 +2006-02-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * data.c (Faset): On setting a character bigger than 255 in a
 +      unibyte string, signal an error instead of make the string
 +      multibyte.
 +
 +2006-02-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (map_charset_chars): Fix for ascii-compatible charset
 +      made by a mapping table.
 +
 +2006-02-21  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (fill_composite_glyph_string): Check s->face is NULL or
 +      not.
 +      (BUILD_COMPOSITE_GLYPH_STRING): If C is TAB, set s->face to NULL.
 +      (x_produce_glyphs): If CH is TAB, set cmp->offsets properly.
 +
 +      * xterm.c (x_draw_composite_glyph_string_foreground): Check
 +      s->face is NULL or not.
 +
 +2006-02-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (x_set_glyph_string_clipping_exactly): New function.
 +      (x_draw_glyph_string): Fix drawing of right_overhang and
 +      left_overhang around/on cursor.
 +
 +      * xdisp.c (draw_glyphs): Fix inclusion of right_overwriting
 +      glyphs.
 +
 +      * term.c (produce_glyphs): Sync to HEAD.
 +
 +2006-02-15  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (x_produce_glyphs): Handle composition with TAB.
 +
 +2006-02-05  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c: Cancel incorrect synching with HEAD.
 +
 +2006-02-03  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (Fdefine_coding_system_internal): Avoid a duplicated
 +      element in Vcoding_system_alist.
 +      (Fdefine_coding_system_alias): Likewise.
 +
 +2006-01-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF.
 +
 +      * coding.c: Sync to HEAD for handling autoload-coding-system.
 +      (Qcoding_system_define_form): New variable.
 +      (syms_of_coding): Intern and staticpro it.
 +      (Fcoding_system_p): Check Qcoding_system_define_form.
 +      (Fcheck_coding_system): Try to autoload the definition of
 +      CODING-SYSTEM.
 +      
 +      * coding.h (CODING_SYSTEM_P): If ID is not available, call
 +      Fcoding_system_p.
 +      (CHECK_CODING_SYSTEM): If ID is not available, call
 +      Fcheck_coding_system.
 +      (CHECK_CODING_SYSTEM_GET_SPEC): Try also Fcheck_coding_system.
 +      (CHECK_CODING_SYSTEM_GET_ID): Likewise.
 +
 +2006-01-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (handle_one_xevent): Delete unnecessary code inserted by
 +      sync with HEAD.
 +
 +      * coding.c (code_conversion_restore): GCPRO arg.
 +
 +2005-12-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * character.c (lisp_string_width): Check multibyteness of STRING.
 +
 +2005-10-18  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macterm.c (mac_encode_char): Call ccl_driver with the last arg
 +      Qnil.  Use JIS_TO_SJIS instead of ENCODE_SJIS.
 +      (decode_mac_font_name): Use decode_coding_c_string instead of
 +      decode_coding.
 +      (x_load_font): Initialize fontp->fontset to -1.  Set
 +      fontp->encoding_type.
 +
 +2005-10-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * search.c (search_buffer): Give up BM search on case-fold-search
 +      if one of a target character has a case-equivalence of different
 +      byte length even if that target charcter is an ASCII.
 +      (simple_search): Fix culculation of byte length of matched text.
 +      (boyer_moore): Fix handling of case-equivalent multibyte
 +      characters.
 +
 +2005-10-15  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding): Fix handling of invalid bytes.
 +
 +2005-10-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (handle_one_xevent): Handle keysyms directly mapped to
 +      Unicode characters.
 +
 +2005-09-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (encode_coding_object): If a pre-write-conversion
 +      function makes a new buffer, kill it.
 +
 +2005-07-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (QCascii_compatible_p): New variable. 
 +      (syms_of_coding): Initialize it.
 +      (ONE_MORE_BYTE): Decrement `src' before calling string_char.
 +      (ONE_MORE_BYTE_NO_CHECK): Likewise.
 +      (record_conversion_result): Add `default:' case.
 +      (coding_charset_list): Delete unused variable `coding_type'.
 +      (Fdefine_coding_system_internal): Add `ascii-compatible-p'
 +      property in the plist of the coding system.
 +      (Fcoding_system_put): Check QCascii_compatible_p.
 +
 +2005-06-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (get_next_display_element): Sync with the change in
 +      HEAD (2005-06-08).
 +
 +2005-06-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * callproc.c (Fcall_process): Sync with the change in
 +      HEAD (2005-06-04).
 +
 +2005-06-05  Miles Bader  <miles@gnu.org>
 +
 +      * xfaces.c (Finternal_lisp_face_equal_p): Restore previously
 +      removed calculation of frame `f', as it's now used.
 +
 +2005-05-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macterm.c (x_font_name_to_mac_font_name): Sync with trunk
 +      for the case that does not require code conversion.
 +
 +2005-05-11  Kenichi Handa  <handa@m17n.org>
 +
 +      * Makefile.in (shortlisp): Cancel previous change.
 +      (RUN_TEMACS): Include "-nl" if HAVE_SHM is defined.
 +      (emacs${EXEEXT}): Run $(RUN_TEMACS) unconditionally.
 +      (UNIDATA): New variable.
 +      (${lispsource}international/charprop.el): Depends on ${UNIDATA}.
 +      (bootstrap-emacs${EXEEXT}): Depends on charprop.el.  Run
 +      $(RUN_TEMACS) unconditionally.
 +
 +2005-05-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * Makefile.in (shortlisp): Add ../lisp/international/charprop.el.
 +      (temacs${EXEEXT}): Build charprop.el if necessary.
 +      (admindir): New variable.
 +      ($(lispsource)international/charprop.el): New target.
 +
 +2005-05-04  Miles Bader  <miles@gnu.org>
 +
 +      * character.c (chars-in-region): Obsolete function removed.
 +      (syms_of_character): Remove its initialization.
 +
 +2005-04-28  Benjamin Riefenstahl  <b.riefenstahl@turtle-trading.net>
 +
 +      * w32select.c (validate_coding_system)
 +      (setup_windows_coding_system): New functions.
 +      (convert_to_handle_as_coded, Fw32_get_clipboard_data): Use
 +      setup_windows_coding_system.
 +      (setup_config, Fw32_get_clipboard_data): Use
 +      validate_coding_system.
 +      (Fx_selection_exists): Move call to setup_config to a place
 +      were signals are allowed. 
 +
 +      * lisp.h (Fcoding_system_base, Fcoding_system_eol_type)
 +      (Fcheck_coding_system): Add declarations.
 +
 +2005-04-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * s/ms-w32.h (STDC_HEADERS): Sync with the change in
 +      HEAD (2005-04-23).
 +
 +2005-04-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (load_charset_map_from_vector): Fix for the first
 +      iteration.
 +
 +2005-04-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macfns.c (Fx_create_frame, x_create_tip_frame): Pass Lisp
 +      string as the second argument for x_new_fontset.
 +
 +2005-04-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * fns.c (Fstring_as_multibyte): Fix the change for syncing with
 +      CVS head.
 +
 +2005-04-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * search.c (search_buffer): Fix the change for syncing with CVS
 +      head.
 +      (search_buffer): Likewise.
 +
 +2005-03-31  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (get_next_display_element): Sync with CVS head.
 +
 +2005-03-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding_object): Use safe_call1 instead of call1.
 +      (encode_coding_object): Use safe_call instead of call2.
 +
 +2005-03-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (set_default_ascii_font): Fix the change for
 +      syncing with CVS head.
 +
 +2005-01-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (Fset_fontset_font): Check family element of a given
 +      vector.
 +
 +      * Makefile.in (lisp): Include charprop.el.
 +
 +2005-01-17  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * macfns.c (Fx_create_frame, x_create_tip_frame): Fix crash.
 +      Not sure if it's unnecessary.
 +
 +2005-01-16  Steven Tamm  <steventamm@mac.com>
 +
 +      * macfns.c (Fx_create_frame, x_create_tip_frame): ifdef'd out
 +      some possibly unnecessary fontset checking code that crashed
 +      when creating a new frame
 +
 +2005-01-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfaces.c (merge_faces): Fix argument to lookup_derived_face and
 +      lookup_face.
 +
 +      * xdisp.c (Fformat_mode_line): Fix argument to lookup_named_face.
 +
 +      * fringe.c (draw_fringe_bitmap_1): Fix argument to
 +      lookup_named_face.
 +
 +2004-12-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (get_next_display_element): Sync to the change in HEAD
 +      on 2004-12-21.
 +
 +2004-12-11  Kenichi Handa  <handa@m17n.org>
 +
 +      * search.c: Sync to the change in HEAD on 2004-11-19, 20.
 +
 +      * w32console.c: Sync to the change in HEAD on 2004-12-01.
 +
 +      * coding.c: Cancel the change done in HEAD on 2004-11-30.
 +      (coding_charset_list): New function.
 +
 +      * coding.h (coding_charset_list): Extern it.
 +
 +      * term.c: Sync to the change in HEAD on 2004-11-30.
 +
 +2004-12-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (Fset_fontset_font): Call find_font_encoding with
 +      concatenation of family and registry.
 +
 +2004-12-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * character.h (BYTE8_STRING): Fix typo.
 +
 +      * editfns.c (Ftranslate_region_internal): Don't convert unibyte
 +      string to multibyte (sync to HEAD).
 +
 +      * casefiddle.c (casify_region): Handle changes in byte-length
 +      using replace_range_2 (sync to HEAD).
 +
 +2004-11-24  Andreas Schwab  <schwab@suse.de>
 +
 +      * chartab.c (map_char_table): GCPRO table and arg.
 +
 +2004-10-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * syntax.c (skip_syntaxes): Return lispy 0 (not nil) if point is
 +      already at limit.
 +
 +2004-10-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (fs_load_font): Use fast_string_match_ignore_case
 +      instead of fast_c_string_match_ignore_case.
 +      (find_font_encoding): Argument changed to Lisp_Object.  Use
 +      fast_string_match_ignore_case instead of
 +      fast_c_string_match_ignore_case.  Caller changed.
 +
 +2004-10-15  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (get_next_display_element): In unibyte case, decide to
 +      display in octal form by checking a chacter by
 +      UNIBYTE_CHAR_HAS_MULTIBYTE_P.
 +
 +      * charset.c (Fset_unibyte_charset): Setup
 +      unibyte_has_multibyte_table.
 +
 +      * character.c (unibyte_has_multibyte_table): New variable.
 +
 +      * character.h (unibyte_has_multibyte_table): Extern it.
 +      (UNIBYTE_CHAR_HAS_MULTIBYTE_P): New macro.
 +
 +2004-10-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * callproc.c (Fcall_process): Fix merging of 2004-10-13 change.
 +
 +2004-10-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (encode_coding_iso_2022): Fix handling of charset
 +      annotation.
 +
 +2004-10-12  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (setup_coding_system): If coding_system is nil, use
 +      Qundecided.
 +      (Fterminal_coding_system): Return nil if terminal coding system is
 +      `undecided'.
 +      (syms_of_coding): Define coding-system `undecided' here.  Setup
 +      terminal_coding as `undecided'.
 +
 +2004-10-04  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (message_dolog, set_message_1): Call
 +      unibyte_char_to_multibyte with arg type int.
 +
 +      * fileio.c (Fsubstitute_in_file_name): Fix previous change.
 +
 +      * lread.c (read1): Fix reading of a char-table.
 +
 +      * print.c (print_object): Include sub char-table in cicularities
 +      detection.
 +
 +2004-10-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * keymap.c (where_is_internal_2): Fix for the case that KEY is a
 +      cons.  Append the found sequences in car of ARGS instead of
 +      prepending.
 +
 +2004-09-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * fileio.c (report_file_error): Make a unibyte string from
 +      strerror (errorno).
 +      (Fsubstitute_in_file_name): Fix the arg to
 +      unibyte_char_to_multibyte.  It is evaluated twice.
 +
 +2004-09-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.h (CHAR_CHARSET): Shortcut for ASCII case.
 +
 +2004-09-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (detect_coding): Fix previous change.
 +
 +2004-09-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (detect_coding_utf_16): Don't set detect_info->found if
 +      BOM is not found.
 +      (detect_coding): Optimization for ISO-2022 when no 8-bit data is
 +      found.
 +      (detect_coding_system): Likewise.
 +      
 +2004-09-01  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32fns.c (x_to_w32_font): Update to use new coding struct.
 +
 +2004-08-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (Fdeclare_equiv_charset): Fix handing of CHARS.
 +      (Fiso_charset): Likewise.
 +
 +2004-08-03  Steven Tamm  <steventamm@mac.com>
 +
 +      * macterm.c (mac_encode_char): Add charset argument and update
 +      to use encoding_type    
 +      (x_new_font,x_new_fontset): Merge in changes from xterm.c;
 +      switch to pure fontset
 +      (decode_mac_font_name): Temporarily remove decoding
 +      (x_font_name_to_mac_font_name): Temporarily remove encoding
 +      (x_load_font): Temporarily remove encoding
 +
 +2004-06-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfaces.c (Fface_font): If frame is not on a window system,
 +      ignore CHARACTER arg.  If HAVE_WINDOW_SYSTEM is not defined, don't
 +      refer to face->font.
 +      (split_font_name_into_vector, build_font_name_from_vector)
 +      (lookup_non_ascii_face, realize_non_ascii_face): Define them only
 +      whne HAVE_WINDOW_SYSTEM is defined.
 +
 +2004-05-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (BUILD_GLYPH_STRINGS): Check if s is NULL.
 +      (x_produce_glyphs): Fix setting of members of cmp in case
 +      cmp->glyph_len is zero,
 +
 +      * fontset.c (Fset_fontset_font): Docstring fixed.
 +      (Ffontset_info): Make it backward compatible.  New arg ALL.
 +
 +2004-05-11  Kim F. Storm  <storm@cua.dk>
 +
 +      * process.c (read_process_output): Grow decoding_buf when needed;
 +      this could cause a crash in allocate_string and compact_small_strings.
 +
 +2004-04-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * fileio.c (WRITE_BUF_SIZE): This macro deleted.
 +      (e_write): Fix previous change.
 +
 +2004-04-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (setup_coding_system): Set coding->common_flags
 +      correctly for raw-text.
 +      (consume_chars): On encoding unibyte text by raw-text, don't check
 +      multibyte form.
 +      (encode_coding): On encoding by raw-text, never use translation
 +      tables.
 +
 +      * fileio.c (e_write): Short cut for the case of no encoding.
 +
 +2004-04-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (detect_coding): Delete unused variables.
 +      (detect_coding_system): Likewise.
 +
 +2004-04-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (encode_coding_utf_8): Fix handling of raw-byte char.
 +      (consume_chars): Fix handling of 8-bit bytes in unibyte source.
 +
 +2004-04-14  Kenichi Handa  <handa@m17n.org>
 +
 +      Sync all files to HEAD.
 +
 +2004-04-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (Ffind_coding_systems_region_internal): Include
 +      raw-text and no-conversion in the result.
 +
 +      * fontset.h: Sync to HEAD.
 +
 +      * fontset.c: Sync to HEAD.
 +
 +2004-04-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (find_font_encoding): Return `ascii' for unknown
 +      encoding.
 +      (load_font_get_repertory): Delete unnecessary check of ENCODING of
 +      FONT_DEF.
 +      (font_def_arg, add_arg, from_arg, to_arg): New args.
 +      (set_fontset_font): Argument changed.
 +      (Fset_fontset_font): Fix for the case that TARGET is a script
 +      name and charset name.
 +      (new_fontset_from_font_name): Fix argument to Fnew_fontset.
 +
 +2004-04-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (fontset_font): Renamed from fontset_face.  Return
 +      value changed.
 +      (face_suitable_for_char_p): Adjusted for the change of
 +      fontset_font.
 +      (face_for_char): Likewise.
 +      (make_fontset_for_ascii_face): Fix setting of the fontset element
 +      for ASCII.
 +      (Finternal_char_font): Use fontset_font instead of FACE_FOR_CHAR
 +      to get a font name.
 +      (Ffontset_info): Adjusted for the change of fontset_font.
 +
 +      * composite.c: Sync to HEAD.
 +
 +      * search.c: Sync to HEAD.
 +
 +      * coding.c: Sync to HEAD.
 +      (emacs_mule_char): Check invalid code more regidly.
 +      
 +      * coding.h: Sync to HEAD.
 +
 +      * charset.c: Sync to HEAD.
 +
 +      * charset.h: Sync to HEAD.
 +
 +      * character.h (LEADING_CODE_LATIN_1_MIN)
 +      (LEADING_CODE_LATIN_1_MAX): Delete these macros.
 +
 +2004-04-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * category.h: Sync to HEAD.
 +
 +      * category.c: Sync to HEAD.
 +
 +      * syntax.h: Sync to HEAD.
 +
 +      * syntax.c: Sync to HEAD.
 +
 +      * regex.h: Sync to HEAD.
 +
 +      * regex.c: Sync to HEAD.
 +
 +2004-04-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * editfns.c: Sync to HEAD.
 +      (check_translation): New function.
 +      (Ftranslate_region_internal): Handle M:N mapping.
 +
 +2004-04-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfaces.c (xlfd_point_size): Set font->numeric[XLFD_PIXEL_SIZE].
 +
 +2004-03-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (DECODE_DESIGNATION): Set chars_96 to -1 instead of
 +      goto invalid_code.
 +      (decode_coding_iso_2022): Fix handling of invalid designation.
 +
 +      * fileio.c (Finsert_file_contents): Be sure to call unbind_to
 +      after calling code_conversion_save.
 +
 +2004-03-11  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (handle_auto_composed_prop): Fix Lisp_Object/int mixup.
 +
 +      * print.c (print_prune_string_charset): Fix Lisp_Object/int mixup.
 +
 +      * fontset.c: Include "intervals.h".
 +      (fontset_face): Fix comparing of Lisp_Objects.
 +      (free_face_fontset): Fix Lisp_Object/int mixup.
 +      (new_fontset_from_font_name): Likewise.
 +
 +      * editfns.c (Ftranslate_region_internal): Fix Lisp_Object/int mixup.
 +
 +      * coding.c: Add many prototypes for static functions.
 +      (get_translation_table): Allow max_lookup to be NULL.
 +      (decode_coding): Call get_translation_table with max_lookup NULL.
 +      (Ffind_coding_systems_region_internal): Likewise.
 +      (Funencodable_char_position, Fcheck_coding_systems_region):
 +      Likewise.
 +
 +2004-03-11  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (get_translation_table): Declare it as Lisp_Object.
 +      (LOOKUP_TRANSLATION_TABLE): New macro.
 +      (produce_chars): Use LOOKUP_TRANSLATION_TABLE instead of
 +      CHAR_TABLE_REF.
 +      (consume_chars): Likewise.
 +
 +2004-03-11  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (MAX_ANNOTATION_LENGTH): Adjusted for the change of
 +      annotation data format.
 +      (ADD_ANNOTATION_DATA, ADD_COMPOSITION_DATA, ADD_CHARSET_DATA):
 +      Change arguments FROM and TO to single argument NCHARS.  Caller
 +      changed.
 +      (decode_coding_utf_8): Pay attention to coding->charbuf_used.
 +      (decode_coding_utf_16, decode_coding_emacs_mule)
 +      (decode_coding_iso_2022, decode_coding_sjis, decode_coding_big5)
 +      (decode_coding_ccl, decode_coding_charset): Likewise.
 +      (get_translation): New function.
 +      (produce_chars): New arguments translation_table and last_block.
 +      Translate characters here.  Return number of carryover chars.
 +      Caller changed.
 +      (produce_composition): New argument pos.  Caller changed.
 +      Adjusted for the change of annotation data format.
 +      (produce_charset, produce_annotation): Likewise.
 +      (decode_coding, encode_coding): Don't call translate_chars.
 +      (consume_chars): New arg translation_table.  Caller changed.
 +      (translate_chars): Deleted.
 +      (syms_of_coding): Make translation-table's number of extra slots
 +      2.
 +
 +2004-03-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * search.c (simple_search): Fix setting this_pos_byte in backward
 +      search.
 +
 +      * coding.c (detect_coding_emacs_mule): Fix counting of encoded
 +      byte sequence.
 +      (detect_coding_ccl): Fix setting of the variable valids.
 +
 +2004-03-04  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (x_list_fonts): Fix the detection of an auto-scaled font.
 +
 +      * coding.c (decode_coding_utf_16): Fix handling of surrogate pair.
 +
 +      * editfns.c (Ftranslate_region_internal): Renamed from
 +      Ftranslate_region.  Accept a char-table in TABLE.
 +      (syms_of_editfns): Defsubr Stranslate_region_internal.
 +
 +      * xfaces.c (set_lface_from_font_name): If a font is specified for
 +      a frame, generate a fontset from the font.
 +      (build_scalable_font_name): If the scalable font is requested for
 +      a specific size, don't change that size.
 +      (try_font_list): Try a scalable font also in the case that a
 +      pattern string is specified,
 +      
 +
 +2004-03-03  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfaces.c (Fface_font): New optional arg CHARACTER.
 +
 +2004-02-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.h (CHARSET_OFFSET): New macro.
 +
 +2004-02-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (x_get_font_repertory): Fix for non-Unicode-bmp charset.
 +
 +      * fontset.c (fontset_face): Handle the case that repertory is a
 +      char-table.
 +      (find_font_encoding): Return nil for unknown encoding.
 +      (Fset_fontset_font): Ignore a font of unknown encoding.
 +
 +2004-02-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * keymap.c (describe_vector): Handle default value of a char
 +      table.
 +
 +      * fontset.c (fontset_face): Handle fallback fonts correctly.
 +      (Ffontset_info): Return infomation about fallback fonts.
 +
 +2004-02-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (FONTSET_DEFAULT): New macro.
 +      (FONTSET_ADD): Handle the case that range is nil.
 +      (fontset_add): Likewise.
 +      (Fset_fontset_font): Change the 2nd arg name to TARGET, and handle
 +      the case that it is nil.
 +      (dump_fontset): Call FONTSET_DEFAULT, not FONTSET_FALLBACK.
 +      (syms_of_fontset): Set char-table-extra-slots property of fontset
 +      to 9.
 +
 +      * charset.h (CHAR_CHARSET_P): Fix for the case that the method is
 +      subset or superset.
 +
 +2004-01-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * emacs.c (main): Call init_charset after syms_of_XXX.
 +
 +      * charset.c (Vcharset_map_directory): Deleted.
 +      (Vcharset_map_path): New variable
 +      (load_charset_map_from_file): Use Vcharset_map_path instead.
 +      (init_charset): Initialize Vcharset_map_path.
 +      (syms_of_charset): Delete declaration of "charset-map-directory",
 +      add declaration of "charset-map-path".
 +
 +2004-01-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * fns.c (string_char_to_byte): Optimize for ASCII only string.
 +      (string_byte_to_char): Likewise.
 +
 +      * fileio.c (Finsert_file_contents): Avoid detecting a code twice.
 +
 +      * coding.c (detect_coding_iso_2022): Fix handling of SS2 and SS3.
 +      (detect_coding): Treat '\0' as normal ASCII byte..
 +      (detect_coding_system): Likewise.
 +
 +2004-01-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.h (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
 +
 +      * coding.c (QCmnemonic, QCdefalut_char)
 +      (QCdecode_translation_table, QCencode_translation_table)
 +      (QCpost_read_conversion, QCpre_write_conversion): New variables.
 +      (get_translation_table): Return a list of translation tables if
 +      necessary.
 +      (decode_coding): Call get_translation_table with ENCODEP 0.
 +      (char_encodable_p): If translation_table is non-nil, always call
 +      translate_char.
 +      (Fdefine_coding_system_internal): Accept list of translation
 +      tables as :encode-translation-table and :decode-translation-table.
 +      (Fcoding_system_put): New function.
 +      (syms_of_coding): Declare new symbols.  Defsubr
 +      Scoding_system_put.
 +      (decode_coding_sjis): Handle 4th charset (typically JISX0212).
 +      (encode_coding_sjis): Likewise.
 +
 +      * charset.c (map_charset_chars): Fix arg to map_charset_chars in
 +      when the charset is superset type.
 +
 +      * character.c (translate_char): Accept list of translation tables.
 +
 +2004-01-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.h (enum coding_attr_index): New member
 +      coding_attr_trans_tbl.
 +      (CODING_ATTR_TRANS_TBL): New macro.
 +
 +      * coding.c (get_translation_table): New function.
 +      (translate_chars): Fix the bug of skipping annotation data.
 +      (decode_coding): Utilze get_translation_table.
 +      (encode_coding): Likewise.
 +      (char_encodable_p): Translate char if necessary.
 +      (Funencodable_char_position): Likewise.
 +      (Ffind_coding_systems_region_internal): Setup translation table
 +      for encode in a coding system attribute vector in advance.
 +      (Fcheck_coding_systems_region): Likewise.
 +      (Fdefine_coding_system_internal): Allow a symbol as translation
 +      table.  For shift-jis type coding system, allow 4th charset.
 +
 +2004-01-24  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding_sjis): Check the first byte rigidly.
 +
 +      * xdisp.c (get_next_display_element): Pass -1 as POS to
 +      FACE_FOR_CHAR if displaying a C-string.
 +
 +2004-01-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (get_composition_id): Handle xoff and yoff in a
 +      composition rule.
 +
 +      * composite.h (COMPOSITION_DECODE_RULE): New arg xoff and yoff.
 +      (struct composition): New member lbearing and rbearing.
 +
 +      * xdisp.c (move_it_to): Optimize for the case (op & MOVE_TO_Y).
 +      (x_get_glyph_overhangs): Handle a composition glyph.
 +      (x_produce_glyphs): Setup lbearing and rbreaing for a composition
 +      glyph.
 +
 +      * xterm.c (x_compute_glyph_string_overhangs): Handle also a
 +      composition glyph.
 +
 +2004-01-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * print.c: Include charset.h.
 +      (Vprint_charset_text_property): New variable.
 +      (Qdefault): Extern it.
 +      (PRINT_STRING_NON_CHARSET_FOUND)
 +      (PRINT_STRING_UNSAFE_CHARSET_FOUND): New macros.
 +      (print_check_string_result): New variable.
 +      (print_check_string_charset_prop): New function.
 +      (print_prune_charset_plist): New variable.
 +      (print_prune_string_charset): New function.
 +      (print_object): Call print_prune_string_charset if
 +      Vprint_charset_text_property is not t.
 +      (print_interval): Print nothing if itnerval->plist is nil.
 +      (syms_of_print): Declare Vprint_charset_text_property as a lisp
 +      variable.  Init and staticpro print_prune_charset_plist.
 +
 +2004-01-15  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (new_fontset_from_font_name): Use the specified font
 +      for all characters in the new fontset.
 +
 +      * macterm.c (x_set_mouse_face_gc): Call FACE_FOR_CHAR with POS and
 +      OBJECT args.
 +
 +      * xdisp.c (x_produce_glyphs): Call FACE_FOR_CHAR with POS and
 +      OBJECT args for composition too.
 +
 +      * w32term.c (x_set_mouse_face_gc): Call FACE_FOR_CHAR with POS and
 +      OBJECT args.
 +
 +2004-01-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * dispextern.h (FACE_FOR_CHAR): New args POS and OBJECT.
 +
 +      * fontset.c (reorder_font_vector): Adjusted for the change of
 +      FONT_DEF format.
 +      (fontset_face): New arg id.  Caller changed.
 +      (face_for_char): New args pos and object.
 +      (make_fontset_for_ascii_face): Adjusted for the change of FONT_DEF
 +      format.n
 +      (fs_query_fontset): Check NAME by Fassoc too.
 +      (Fset_fontset_font): Allow non-XLFD font name.
 +      (Ffontset_info): Adjusted for the change of FONT_DEF format.
 +
 +      * fontset.h (face_for_char): Prototype adjusted.
 +
 +      * xdisp.c (face_before_or_after_it_pos): Call FACE_FOR_CHAR with
 +      POS and OBJECT args.
 +      (get_next_display_element): Likewise.
 +      (append_space): Likewise.
 +      (extend_face_to_end_of_line): Likewise.
 +      (get_char_face_and_encoding): Likewise.
 +      (BUILD_COMPOSITE_GLYPH_STRING): Likewise.
 +      (x_produce_glyphs): Likewise.
 +
 +      * xfaces.c (compute_char_face): Call FACE_FOR_CHAR with
 +      POS and OBJECT args.
 +
 +      * xterm.c (x_set_mouse_face_gc): Call FACE_FOR_CHAR with
 +      POS and OBJECT args.
 +
 +2004-01-03  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32select.c (Fw32_set_clipboard_data): Avoid potential realloc
 +      of GlobalAlloc'ed memory.
 +
 +2003-12-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * ccl.c (Fccl_execute_on_string): Fix the condition of loop.
 +
 +      * charset.h (charset_table_used): Delete extern.
 +
 +      * charset.c (charset_table_used): Make it static.
 +      (map_charset_chars): Fix args to c_function with.
 +
 +      * chartab.c (map_sub_char_table_for_charset): Fix args to
 +      c_function with.
 +
 +      * coding.h (enum coding_result_code): Delete
 +      CODING_RESULT_INSUFFICIENT_CMP, add CODING_RESULT_INVALID_SRC.
 +
 +      * coding.c (Qinsufficient_source, Qinconsistent_eol)
 +      (Qinvalid_source, Qinterrupted, Qinsufficient_memory): New
 +      variables.
 +      (Vlast_code_conversion_error): New variables.
 +      (syms_of_coding): DEFSYM or DEFVAR_LISP them. 
 +      (ONE_MORE_BYTE): Record error if any instead of signaling an
 +      error.  If non-ASCII multibyte char is found, return the negative
 +      value of the code.  All callers changed to check it.
 +      (ONE_MORE_BYTE_NO_CHECK): Likewise.
 +      (record_conversion_result): New function.  All codes setting
 +      coding->result are changed to call this function.
 +      (detect_coding_utf_8): Don't use the local variable incomplete.
 +      (decode_coding_utf_8): Likewise.
 +      (emacs_mule_char): Change the second arg to `const'.
 +      (detect_coding_emacs_mule): Don't use the local variable
 +      incomplete.
 +      (detect_coding_sjis): Likewise.
 +      (detect_coding_big5): Likewise.
 +      (decode_coding): Fix of flushing out unprocessed data.
 +      (make_conversion_work_buffer): Fix making of a work buffer.
 +      (decode_coding_object): Return coding->dst_object;
 +
 +      * fontset.c (set_fontset_font): Fix args.
 +
 +      * lisp.h (CHARACTERBITS): Define as 22.
 +
 +      * process.c (send_process): Be sure to set coding->src_multibyte.
 +
 +      * xdisp.c (handle_auto_composed_prop): Fix setting of limit.
 +
 +2003-12-02  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (handle_auto_composed_prop): Give limit to
 +      Fnext_single_char_property_change.
 +
 +2003-12-02  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (detect_coding): Fix previous change.
 +      (detect_coding_system): Likewise.
 +
 +2003-12-02  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (syms_of_composite): Don't make the compostion hash
 +      table week.
 +
 +      * fontset.c (Fset_fontset_font): Fix docstring.
 +
 +      * lisp.h (detect_coding_system): Adjust prototype.
 +
 +      * fileio.c (kill_workbuf_unwind): Delete this function.
 +      (Finsert_file_contents): Adjust the call of detect_coding_system.
 +      Get conversion_buffer by code_conversion_save.  Use the macor
 +      CODING_MAY_REQUIRE_DECODING.  After decoding, update
 +      coding_system.
 +
 +      * coding.h (make_conversion_work_buffer): Delete extern.
 +      (code_conversion_save): Extern it.
 +
 +      * coding.c (enum iso_code_class_type): Delete ISO_carriage_return.
 +      (CODING_GET_INFO): Delete argument eol_type.  Callers changed.
 +      (decode_coding_utf_8): Don't do eol converion.
 +      (detect_coding_utf_16): Check coding->src_chars, not
 +      coding->src_bytes.  Add heuristics for those that have no
 +      signature.
 +      (decode_coding_emacs_mule): Don't do eol converion.
 +      (decode_coding_iso_2022): Likewise.
 +      (decode_coding_sjis): Likewise.
 +      (decode_coding_big5): Likewise.
 +      (decode_coding_charset): Likewise.
 +      (adjust_coding_eol_type): Return a new coding system.
 +      (detect_coding): Don't detect eol.  Fix for utf-16 detection.
 +      (decode_eol): In case of CRLF->LF conversion, use del_range_2 on
 +      each change.
 +      (decode_coding): Pay attention to undo_list.  Do eol convesion for
 +      all types of coding-systems (if necessary).
 +      (Vcode_conversion_work_buf_list): Delete it.
 +      (Vcode_conversion_reused_workbuf): Renamed from
 +      Vcode_conversion_reused_work_buf.
 +      (Vcode_conversion_workbuf_name): New variable.
 +      (reused_workbuf_in_use): New variable.
 +      (make_conversion_work_buffer): Delete the arg DEPTH.
 +      (code_conversion_restore): Argument changed to cons.
 +      (code_conversion_save): Delete the argument BUFFER.  Callers
 +      changed.
 +      (detect_coding_system): New argument src_chars.  Callers changed.
 +      Fix for utf-16 detection.
 +      (init_coding_once): Don't use ISO_carriage_return.
 +      (syms_of_coding): Initialized Vcode_conversion_workbuf_name and
 +      reused_workbuf_in_use.
 +
 +2003-11-24  Kenichi Handa  <handa@m17n.org>
 +
 +      * keymap.c (store_in_keymap): Pay attention to the case that idx
 +      is a cons specifying a character range.
 +
 +      * coding.c (Fdefine_coding_system_internal): Fix previous change.
 +
 +2003-11-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (handle_auto_composed_prop): Fix the case of returning
 +      HANDLED_RECOMPUTE_PROPS.
 +
 +      * coding.c (Fdefine_coding_system_internal): Fix checking of
 +      ascii compatibility.
 +
 +2003-11-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (find_charsets_in_text): Delete unused locale
 +      variable.
 +      (Fset_charset_priority): Update Vemacs_mule_charset_list too.
 +
 +      * coding.c (encode_coding_emacs_mule): Emit bytes with MSB.
 +      Resync charset_list to Vemacs_mule_charset_list.
 +
 +      * keymap.c (store_in_keymap): Pay attention to the case that idx
 +      is a cons specifying a character range.
 +
 +2003-11-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (update_compositions): Bind inhibit-read-only, etc
 +      to t before calling remove-list-of-text-properties.
 +
 +      * print.c (print_object): Always print ASCII chars as is.
 +
 +2003-11-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * keymap.c (Fdefine_key): Fix handling of Lucid style event type
 +      list.
 +
 +      * fns.c (Fmapconcat): Signal an error if SEQUENCE is a char table.
 +      (Fmapcar): Likewise.
 +      (Fmapc): Likewise.
 +
 +2003-11-15  Kenichi Handa  <handa@m17n.org>
 +
 +      * syntax.c (skip_chars): Be sure to alloca char_ranges when
 +      necessary.
 +
 +2003-11-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfaces.c (set_lface_from_font_name): Fix for the case that
 +      FONTNAME is not fontset name.
 +
 +2003-11-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * fns.c (base64_encode_1): Fix previous change.
 +
 +2003-11-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (set_fontset_font): New function.
 +      (Fset_fontset_font): If a font is specified for a charset, use
 +      map_charset_chars to store the font spec in a fontset.
 +
 +2003-10-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (fontset_face): Create a fallback fontset on demand
 +      (make_fontset): Don't create a fallback fontset here.
 +      (free_face_fontset): Free a fallback fontset (if any) too.
 +      (n_auto_fontsets): Delete this variable.
 +      (auto_fontset_alist): New variable.
 +      (new_fontset_from_font_name): Check auto_fontset_alist.
 +      (dump_fontset) [FONTSET_DEBUG]: Fully re-written.
 +      (Ffontset_list_all) [FONTSET_DEBUG]: New function.
 +      (syms_of_fontset): Initialize and staticpro auto_fontset_alist.
 +      Defsubr Sfontset_list_all.
 +
 +2003-10-24  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (x_list_fonts): Fix excluding of auto-scaled fonts.
 +
 +2003-10-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (Fnew_fontset): Check NAME more rigidly.
 +
 +2003-10-17  Kenichi Handa  <handa@m17n.org>
 +
 +      * editfns.c (Fgoto_char): Fix docstring.
 +
 +2003-10-16  Kenichi Handa  <handa@m17n.org>
 +
 +      * insdel.c (insert_from_gap): Adjust intervals correctly.
 +
 +2003-10-12  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32term.c (GLYPHSET, WCRANGE): Define if system headers don't.
 +      (pfnGetFontUnicodeRanges): New dynamically loaded function.
 +      (w32_initialize): Try to load it.
 +      (x_get_font_repertory): Use it if available.
 +      (w32_encode_char): Add shortcut for unicode output.
 +
 +      * w32fns.c (w32_load_system_font): Default charset to -1.
 +      (x_to_w32_charset): Match all fonts for unicode.
 +      (w32_to_x_charset): New parameter matching. Don't return partial
 +      or wildcard charsets.
 +      (w32_to_all_x_charsets): Don't return partial or wildcard charsets.
 +      (w32_codepage_for_font): Return CP_UNICODE for unicode.
 +      (w32_to_x_font): Match charset to real charset.
 +      (enum_font_cb2): Always list unicode versions.
 +
 +      * makefile.w32-in (temacs): Increase EMHEAP.
 +
 +2003-10-11  Jason Rumney  <jasonr@gnu.org>
 +
 +      * w32term.c (w32_encode_char): New charset parameter.
 +      font_info.encoding becomes encoding_type.
 +      (x_get_font_repertory): New function. Warning: stub only!
 +      (x_new_font): Return quickly if font already set.
 +      (x_new_fontset): fontsetname parameter is Lisp_Object.
 +      Use new fs_query_fontset. Try new_fontset_from_font_name. Use
 +      fontset_name for return value.
 +
 +      * w32term.h: Declare x_get_font_repertory.
 +
 +      * w32select.c (Fw32_set_clipboard_data): Use string_x_string_p in
 +      place of find_charset_in_text. Use encode_coding_object in place
 +      of encode_coding.
 +      (Fw32_get_clipboard_data): Use decode_coding_c_string in place of
 +      decode_coding.
 +
 +      * w32fns.c (Fx_create_frame, x_create_tip_frame): Use new version
 +      of x_new_fontset.
 +      (w32_load_system_font): Initialize charset as unicode.
 +      font_info.encoding becomes encoding_type.
 +      (w32_to_x_font): Use decode_coding_c_string in place of
 +      decode_coding.
 +      (x_to_w32_font): Use encode_coding_object in place of
 +      encode_coding.
 +      (syms_of_w32fns): Set get_font_repertory_func.
 +
 +      * w32console.c: Include character.h. Use terminal_encode_buffer
 +      from term.c.
 +      (write_glyphs): Use new version of encode_terminal_code. Use
 +      encode_coding_object in place of encode_coding.
 +
 +      * w32bdf.c (w32_load_bdf_font): Clear font_info before filling.
 +      encoding becomes encoding_type.
 +
 +      * term.c (terminal_encode_buffer): Make externally visible.
 +
 +      * makefile.w32-in: Add character.h dependancies.
 +      (character.o, chartab.o): New targets.
 +
 +2003-10-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * fileio.c (Finsert_file_contents) [DOS_NT]: Use the macro
 +      CODING_ID_EOL_TYPE..
 +
 +2003-10-07  Andreas Schwab  <schwab@suse.de>
 +
 +      * coding.c (produce_chars): Revert last change.
 +
 +2003-10-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.h (charset_unicode): Extern it.
 +
 +      * charset.c (string_xstring_p): Check by (C >= 0x100).
 +      (find_charsets_in_text): Format of the arc CHARSETS changed.  New
 +      arg MULTIBYTE.
 +      (Ffind_charset_region, Ffind_charset_string): Adjusted for the
 +      change of find_charsets_in_text.
 +      (Fsplit_char): Fix doc.  Never return unknown.
 +
 +      * chartab.c (char_table_translate): Use CHARACTERP, not INETEGERP.
 +
 +      * coding.c (Fdefine_coding_system_alias): Update
 +      Vcoding_system_list.
 +
 +      * fontset.c (load_font_get_repertory): Pay attention to the case
 +      that ENCODING of a font is specified by a char-table.
 +
 +      * xterm.c (x_get_font_repertory): Handle the case that the
 +      encoding of font is other than Unicode.
 +
 +2003-10-02  Kenichi Handa  <handa@m17n.org>
 +
 +      * term.c (encode_terminal_code): Don't handle glyph-table.  Check
 +      if a character is encodable by the terminal coding system.  If
 +      not, produces proper number of `?'s.  Update
 +      terminal_encode_buffer and terminal_encode_buf_size if necessary.
 +      (produce_glyphs): Check by CHAR_BYTE8_P, not SINGLE_BYTE_CHAR_P.
 +
 +2003-10-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * term.c (terminal_encode_buffer, terminal_encode_buf_size): New
 +      variables.
 +      (encode_terminal_code): Argument changed.  Encode multiple
 +      characters at once.  Store the result of encoding in
 +      terminal_encode_buffer.
 +      (write_glyphs): Adjusted for the change of encode_terminal_code.
 +      (insert_glyphs): Likewise.
 +      (term_init): Initialize terminal_encode_buffer and
 +      terminal_encode_buf_size.
 +
 +      * coding.c (consume_chars): If coding->src_object is nil, don't
 +      check annotation.
 +
 +2003-09-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * character.c (char_string): Use ASCII_CHAR_P instead of
 +      SINGLE_BYTE_CHAR_P.
 +
 +2003-09-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (handle_auto_composed_prop): Check if the last
 +      characters of auto-composed region is newly composed with the
 +      following characters.
 +      (handle_composition_prop): Fix checking of point being inside
 +      composition.
 +
 +2003-09-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * fns.c (concat): Don't change multibyteness of the result by
 +      concatenating an 8-bit character.
 +
 +      * data.c (Faset): Check newelt by CHECK_CHARACTER.  Don't change
 +      multibyteness of the result when newelt is an 8-bit character.
 +
 +2003-09-29  Dave Love  <fx@gnu.org>
 +
 +      * xmenu.c (find_and_call_menu_selection): Make menu_bar_items_used
 +      EMACS_INT.
 +
 +      * xfns.c (DefaultDepthOfScreen, x_encode_text): Remove unused vars.
 +
 +      * xfaces.c (face_numeric_value): Declare dim size_t.
 +      (Finternal_lisp_face_equal_p): Remove unused f.
 +
 +      * xdisp.c (BUILD_CHAR_GLYPH_STRINGS, display_and_set_cursor)
 +      (MATRIX_ROW): Remove unused vars.
 +      (draw_glyphs, x_insert_glyphs, fast_find_position)
 +      (fast_find_position, fast_find_string_pos): Use EMACS_INT for
 +      byte/char counts.
 +
 +      * regex.c (regex_compile): Remove unused var.
 +
 +      * minibuf.c (Fminibuffer_complete_word): Remove unused var.
 +
 +      * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap)
 +      (Faccessible_keymaps, where_is_internal): Remove unused vars.
 +
 +      * keyboard.c (cancel_hourglass_unwind): Return Qnil.
 +
 +      * frame.c (frame_name_fnn_p): Make len EMACS_INT.
 +
 +      * fileio.c (Fwrite_region): Remove unused var.
 +
 +      * dispnew.c (adjust_frame_glyphs_for_frame_redisplay)
 +      (adjust_frame_glyphs_for_window_redisplay): Remove unused ch_dim.
 +
 +      * composite.c (Fremove_list_of_text_properties): Declare.
 +
 +      * coding.c (inhibit_pre_post_conversion): Removed (unused).
 +      (alloc_destination, produce_chars): Use EMACS_INT for byte/char
 +      counts.
 +      (coding_inherit_eol_type): Remove unused attrs.
 +      (detect_coding): Cast arg of detect_eol.
 +
 +      * charset.c (syms_of_charset): Remove unused var p.
 +      (find_charsets_in_text, Ffind_charset_region): Use EMACS_INT for
 +      byte/char counts.
 +
 +      * casetab.c (set_case_table): Remove unused var.
 +
 +      * window.c (Fdisplay_buffer, Fframe_selected_window): Remove
 +      unsued vars.
 +
 +2003-09-26  Dave Love  <fx@gnu.org>
 +
 +      * xterm.c (x_bitmap_mask): Declare.
 +
 +2003-09-17  Dave Love  <fx@gnu.org>
 +
 +      * xterm.c (x_term_init): Fix type error.
 +
 +      * lisp.h: Add Funibyte_char_to_multibyte.
 +
 +      * coding.c (Fread_coding_system): Fix arg of XSETSTRING.
 +      (Fset_coding_system_priority): Doc fix.
 +
 +      * alloc.c: Sync with HEAD version.
 +
 +      * ccl.c (ccl_driver): Fix arg of CHARACTERP.
 +
 +      * indent.c (check_composition): Make start and end EMACS_INT.
 +
 +      * character.c (lisp_string_width): Make ignore and end EMACS_INT.
 +
 +      * xdisp.c (handle_composition_prop, check_point_in_composition):
 +      Make buffer positions EMACS_INT.
 +
 +      * composite.c (find_composition, run_composition_function)
 +      (update_compositions, Ffind_composition_internal): Make buffer
 +      positions EMACS_INT.
 +
 +      * composite.h (find_composition, update_compositions): Make
 +      position args EMACS_INT.
 +
 +      * keyboard.c (adjust_point_for_property): Make beg and end
 +      EMACS_INT.
 +
 +      * intervals.c (get_property_and_range)
 +      * intervals.h (get_property_and_range): Make start and end EMACS_INT.
 +
 +      * unexalpha.c: Don't include varargs.h.
 +
 +2003-09-16  Dave Love  <fx@gnu.org>
 +
 +      * coding.h (ENCODE_UTF_8): New.
 +
 +      * Makefile.in (gtkutil.o): Depend on coding.h.
 +
 +      * coding.c (Fset_coding_system_priority): Doc fix.
 +
 +2003-09-16  Kenichi Handa  <handa@m17n.org>
 +
 +      * fileio.c (Finsert_file_contents): Call setup_coding_system in
 +      the case of auto saving.
 +
 +2003-09-10  Andreas Schwab  <schwab@suse.de>
 +
 +      * chartab.c (map_char_table): Protect `range' from GC.
 +      (map_char_table_for_charset): Likewise.
 +
 +2003-07-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding_sjis): Check bytes more rigidly.
 +
 +2003-06-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * fileio.c (choose_write_coding_system): Return a decided coding
 +      system.
 +      (Fwrite_region): Set Vlast_coding_system_used to the return value
 +      of choose_write_coding_system.
 +
 +2003-06-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (Fset_charset_priority): Pay attention to duplicated
 +      arguments.
 +
 +      * coding.c (QCcategory): New variable.
 +      (syms_of_coding): Defsym it.  Set all elements of
 +      Vcoding_category_table and their symbol values.
 +      (Fset_coding_system_priority): Doc fix.  Update symbol qvalues of
 +      coding-category-XXX, and coding-category-list.
 +      (Fdefine_coding_system_internal): Add category in the plist.
 +
 +2003-06-05  Kenichi Handa  <handa@m17n.org>
 +
 +      * callproc.c (Fcall_process): Handle carryover correctly.
 +
 +      * coding.c (decode_coding_iso_2022): Fix handling of invalid
 +      bytes.
 +      (raw_text_coding_system): Check NILP (coding_system).
 +      (coding_inherit_eol_type): Check NILP (coding_system) and
 +      NILP (parent).
 +      (consume_chars): Fix for the case of raw-text. 
 +
 +      * process.c (read_process_output): Handle carryover correctly.
 +
 +2003-06-02  Dave Love  <fx@gnu.org>
 +
 +      * regex.c (re_search_2): Fix last change.
 +
 +2003-05-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * regex.c (GET_CHAR_BEFORE_2): Check multibyte, not
 +      target_multibyte.  Even in a unibyte case, return a converted
 +      multibyte char.
 +      (GET_CHAR_AFTER): New macro.
 +      (PATFETCH): Translate via multibyte char.
 +      (HANDLE_UNIBYTE_RANGE): Delete this macro.
 +      (SETUP_MULTIBYTE_RANGE): New macro.
 +      (regex_compile): Setup compiled code so that its multibyteness
 +      matches that of a target.  Fix the handling of "[X-YZ]" using
 +      SETUP_MULTIBYTE_RANGE.
 +      (analyse_first) <charset>: For filling fastmap for all multibyte
 +      characters, don't check by BASE_LEADING_CODE_P.
 +      (re_search_2): Don't check RE_TARGET_MULTIBYTE_P (bufp).  It is
 +      the same as RE_MULTIBYTE_P (bufp) now.
 +      (mutually_exclusive_p): Check by (! multibyte ||
 +      IS_REAL_ASCII (c)).
 +      (TARGET_CHAR_AND_LENGTH): Delete this macro.
 +      (TRANSLATE_VIA_MULTIBYTE): New macro.
 +      (re_match_2_internal): Don't check RE_TARGET_MULTIBYTE_P (bufp).
 +      It is the same as RE_MULTIBYTE_P (bufp) now.
 +      <exactn>: Translate via multibyte.
 +      <anychar>: Fetch a character by RE_STRING_CHAR_AND_LENGTH.  Don't
 +      translate it.
 +      <charset, charset_not>: Fetch a character by
 +      RE_STRING_CHAR_AND_LENGTH.  Translate via multibyte.
 +      <duplicate>: Call bcmp_translate with the last arg `multibyte'.
 +      <wordbound, notwordbound, wordbeg, wordend, syntaxspec,
 +      notsyntaxspec, categoryspec, notcategoryspec> Fetch a character
 +      by GET_CHAR_AFTER.
 +      (bcmp_translate):  Likewise.
 +      
 +      * search.c (compile_pattern): Check the member target_multibyte,
 +      not the member multibyte of buf.
 +
 +      * lread.c (read1): While reading a string, set force_singlebyte
 +      and force_multibyte correctly.
 +
 +      * charset.c (Fset_unibyte_charset): Fix setting up of
 +      unibyte_to_multibyte_table.
 +      (init_charset_once): Likewise.
 +
 +2003-05-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (setup_coding_system): If coding has
 +      post-read-conversion or pre-write-conversion, set
 +      CODING_REQUIRE_DECODING_MASK and CODING_REQUIRE_ENCODING_MASK
 +      respectively.
 +      (decode_coding_gap): Run post-read-conversion if any.
 +
 +      * fileio.c (Finsert_file_contents): Even if we read into a
 +      unibyte buffer, check if we must decode the result or not.
 +
 +2003-05-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (make_conversion_work_buffer): Change the work buffer
 +      name to the same one as that of Emacs 21.
 +
 +2003-05-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.h (make_conversion_work_buffer): Prototype adjusted.
 +      (code_conversion_restore): Don't extern it.
 +
 +      * coding.c (detected_mask): Delete unused variable.
 +      (decode_coding_iso_2022): Pay attention to the byte sequence of
 +      CTEXT extended segment, and retain those bytes as is.
 +      (decode_coding_ccl): Delete unused variable `valids'.
 +      (setup_coding_system): Delete unused variable `category'.
 +      (consume_chars): Delete unused variable `category'.  Make it work
 +      for non-multibyte case.
 +      (make_conversion_work_buffer): Argument changed.
 +      (saved_coding): Delete unused variable.
 +      (code_conversion_restore): Don't check saved_coding->destination.
 +      (code_conversion_save): New function.
 +      (decode_coding_gap, encode_coding_gap): Call code_conversion_save
 +      instead of record_unwind_protect.
 +      (decode_coding_object, encode_coding_object): Likewise.  Recover
 +      PT.
 +      (detect_coding_system): Delete unused variable `mask'.
 +      (Fdefine_coding_system_internal): Delete unsed vaiable id;
 +
 +      * fileio.c (kill_workbuf_unwind): New function.
 +      (Finsert_file_contents): On replacing, call
 +      make_conversion_work_buffer with correct args, and call
 +      record_unwind_protect with the first arg kill_workbuf_unwind.
 +
 +      * lisp.h (Fgenerate_new_buffer_name): EXFUN it.
 +
 +2003-05-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (BASE_FONTSET_P): Check FONTSET_BASE, not
 +      FONTSET_NAME.
 +      (fontset_add): Fix for the case that TO is less than TO1.
 +      (Ffontset_info): Don't use fallback fontset on checking the
 +      default fontset.
 +      (dump_fontset): New function for debugging.
 +
 +      * coding.c (Fdefine_coding_system_internal): Fix for the case that
 +      coding_type is Qcharset.
 +
 +2003-05-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * chartab.c (map_sub_char_table): New argument DEFAULT_VAL.
 +      (map_char_table): Don't inherit the value from the parent on
 +      initializing VAL.  Adjusted for the above change.
 +
 +2003-05-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (Qsignature, Qendian): Delete these variables.
 +      (syms_of_coding): Don't initialize them.
 +      (CATEGORY_MASK_UTF_16_AUTO): New macro.
 +      (detect_coding_utf_16): Add CATEGORY_MASK_UTF_16_AUTO in
 +      detect_info->found.
 +      (decode_coding_utf_16): Don't detect BOM here.
 +      (encode_coding_utf_16): Produce BOM if CODING_UTF_16_BOM (coding)
 +      is NOT utf_16_without_bom.
 +      (setup_coding_system): For a coding system of type utf-16, check
 +      if the attribute :endian is Qbig or not (not nil or not), and set
 +      CODING_REQUIRE_DETECTION_MASK if BOM detection is required.
 +      (detect_coding): If coding type is utf-16 and BOM detection is
 +      required, detect it.
 +      (Fdefine_coding_system_internal): For a coding system of type
 +      utf-16, check if the attribute :endian is Qbig or not (not nil or
 +      not).
 +
 +2003-05-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (coding_set_source): Fix for the case that the current
 +      buffer is different from coding->src_object.
 +      (decode_coding_object): Don't use the conversion work buffer if
 +      DST_OBJECT is a buffer.
 +
 +2003-05-04  Dave Love  <fx@gnu.org>
 +
 +      * lread.c (read_emacs_mule_char) [len==2]: Index
 +      emacs_mule_charset correctly.
 +
 +2003-02-16  Dave Love  <fx@gnu.org>                           
 +
 +      * coding.c (Qbig5, Vbig5_coding_system, CATEGORY_MASK_BIG5)
 +      (detect_coding_big5, decode_coding_big5, encode_coding_big5)
 +      (Fdecode_big5_char, Fencode_big5_char): Deleted.  (Big5 no longer
 +      treated specially.)
 +      (setup_coding_system, coding_category, CATEGORY_MASK_ANY)
 +      (detected_mask): Remove Big5 bits.
 +
 +2003-04-09  Kenichi Handa  <handa@m17n.org>
 +
 +      The following changes are to make the font rescaling facility
 +      compatible with Emacs 21.
 +
 +      * xfaces.c (Vface_font_rescale_alist): Renamed from
 +      Vface_resizing_fonts.
 +      (struct font_name): Rename member resizing_ratio to rescale_ratio.
 +      (font_rescale_ratio): Renamed from font_resizing_ratio.
 +      (split_font_name): Set font->rescale_ratio.
 +      (better_font_p): Pay attention to font->rescale_ratio.
 +      (build_scalable_font_name): Likewise.  Change RESX, and RESY
 +      fields.
 +      (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp
 +      variable.
 +
 +2003-03-28  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (Qutf_16_be_nosig, Qutf_16_be, Qutf_16_le_nosig)
 +      (Qutf_16_le): Remove these variables.
 +      (syms_of_coding): Don't DEFSYM them.
 +      (decode_coding_utf_16): Fix handling of BOM.
 +      (encode_coding_utf_16): Fix handling of BOM.
 +
 +2003-03-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * fileio.c (Finsert_file_contents): On replacing, before decoding
 +      the file into the work buffer, set point of the work buffer to the
 +      end.
 +
 +2003-02-13  Dave Love  <fx@gnu.org>
 +
 +      * coding.c (Fcheck_coding_systems_region): Fix type errors.
 +
 +2003-02-04  Dave Love  <fx@gnu.org>
 +
 +      * xterm.c (XTread_socket): Check Lisp types for Vx_keysym_table
 +      and fix C types.
 +
 +2003-01-31  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (SKIP_GLYPHS): New macro.
 +      (set_cursor_from_row): Pay attention to string display properties.
 +
 +      * category.c (copy_category_entry): Fix for the case that RANGE
 +      is an integer.
 +
 +      * xterm.c (x_encode_char): Call ccl_driver with the last arg Qnil.
 +
 +      * w32term.c (w32_encode_char): Call ccl_driver with the last arg
 +      Qnil.
 +
 +2003-01-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (Fcharset_id_internal): New function.
 +      (syms_of_charset): Defsubr it.
 +
 +      * coding.c (decode_coding_ccl, encode_coding_ccl): Call ccl_driver
 +      with the last arg charset_list acquired from coding.
 +      (Fdefine_coding_system_internal): For ccl-based coding system, fix
 +      the attribute coding_attr_ccl_valids.
 +
 +      * coding.h (enum define_coding_ccl_arg_index): Set the first
 +      member coding_arg_ccl_decoder to coding_arg_max.
 +
 +      * ccl.h (ccl_driver): Prototype adjusted.
 +
 +      * ccl.c (CCL_DECODE_CHAR, CCL_ENCODE_CHAR): New macros.
 +      (ccl_driver): New arg CHARSET_LIST.  Use the above macros instead
 +      of DECODE_CAHR, ENCODE_CHAR, CHAR_CHARSET.
 +      (Fccl_execute): Call ccl_driver with the last arg Qnil.
 +      (Fccl_execute_on_string): Likewise.
 +
 +2003-01-11  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.h (ENCODE_CHAR): If the method is SUBSET or SUPERSET,
 +      call encode_char.
 +
 +      * charset.c (encode_char): Fix handling of methods SUBSET and
 +      SUPERSET.
 +
 +      * xterm.c (x_new_fontset): Fix previous change.
 +
 +2003-01-10  Dave Love  <fx@gnu.org>
 +
 +      * composite.c (syms_of_composite): Make composition_hash_table
 +      weak.
 +
 +2003-01-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * dispextern.h (check_face_attributes, generate_ascii_font_name)
 +      (font_name_registry): Don't extern them.
 +      (split_font_name_into_vector, build_font_name_from_vector): Extern
 +      them.
 +
 +      * fontset.h (Qfontset): Don't extern it.
 +      (new_fontset_from_font_name): Extern it.
 +
 +      * fontset.c: Give 8 extra slots to fontset objects.
 +      (Qfontset_info): New variable.
 +      (syms_of_fontset): Defsym it.
 +      (FONTSET_FALLBACK): New macro.
 +      (fontset_face): Try also the default fontset.
 +      (make_fontset): Realize a fallback fontset from the default
 +      fontset.
 +      (generate_ascii_font_name): Moved from xfaces.c.  Rewritten by
 +      using split_font_name_into_vector and build_font_name_from_vector.
 +      (Fset_fontset_font): Access the elements of font_spec by enum
 +      FONT_SPEC_INDEX.  If font_spec is a string, extract the registry
 +      name by using split_font_name_into_vector.
 +      (Fnew_fontset): If no ASCII font is specified in FONTLIST,
 +      generate a proper font name from the fontset name.  Update
 +      Vfontset_alias_alist.
 +      (n_auto_fontsets): New variable.
 +      (new_fontset_from_font_name): New function.
 +      (Ffont_info): Store the information about fonts generated from the
 +      default fontset in the first extra slot of the returned
 +      char-table.
 +
 +      * xfaces.c (generate_ascii_font_name): Moved to fontset.c.
 +      (font_name_registry): Function deleted.
 +      (split_font_name_into_vector): New function.
 +      (build_font_name_from_vector): New function.
 +      (font_list): The argument REGISTRY is now a list of registry
 +      names.
 +      (choose_face_font): If we are choosing an ASCII font, and ATTRS
 +      specifies an explicit font name, return the name as is.  Make a
 +      list of registy names.
 +
 +      * xfns.c (x_set_font, x_create_tip_frame): Adjusted to the change
 +      of x_new_fontset.
 +      (Fx_create_frame): Don't call x_new_fontset here.  Just use
 +      x_list_fonts to check the existence of fonts.
 +
 +      * xterm.h (x_new_fontset): Prototype adjusted.
 +
 +      * xterm.c (x_new_fontset): Change the arg FONTSETNAME to Lisp
 +      string.  Use new_fontset_from_font_name to create a fontset from a
 +      font name.
 +
 +2003-01-07  Dave Love  <fx@gnu.org>
 +
 +      * Makefile.in: Fix some dependencies.
 +
 +      * keymap.c (Fapropos_internal): Don't gcpro apropos_predicate but
 +      set it to nil before returning.
 +
 +      * composite.c (update_compositions): Fix type error.
 +
 +      * syntax.c (skip_chars, skip_syntaxes): Fix type errors.
 +
 +2003-01-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (x_new_font): Optimize for the case that the font is
 +      already set for the frame.
 +
 +2003-01-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * chartab.c (char_table_ascii): Check if the char table contents
 +      is sub-char-table or not.
 +      (char_table_set): Fix argument to char_table_ascii.
 +      (char_table_set_range): Likewise.
 +
 +      * coding.c (CATEGORY_MASK_RAW_TEXT): New macro.
 +      (detect_coding_utf_8, detect_coding_utf_16)
 +      (detect_coding_emacs_mule, detect_coding_iso_2022)
 +      (detect_coding_sjis, detect_coding_big5)
 +      (detect_coding_ccl, detect_coding_charset): Change argument MASK
 +      to DETECT_INFO.  Update DETECT_INFO and return 1 if the byte
 +      sequence is valid in this coding system.  Callers changed.
 +      (MAX_ANNOTATION_LENGTH): New macro.
 +      (ADD_ANNOTATION_DATA): New macro.
 +      (ADD_COMPOSITION_DATA): Argument changed.  Callers changed.  Call
 +      ADD_ANNOTATION_DATA.  The format of annotation data changed.
 +      (ADD_CHARSET_DATA): New macro.
 +      (emacs_mule_char): New argument ID.  Callers changed.
 +      (decode_coding_emacs_mule, decode_coding_iso_2022)
 +      (decode_coding_sjis, decode_coding_big5, decode_coding_charset):
 +      Produce charset annotation data in coding->charbuf.
 +      (encode_coding_emacs_mule, encode_coding_iso_2022): Pay attention
 +      to charset annotation data in coding->charbuf.
 +      (setup_coding_system): Add CODING_ANNOTATE_CHARSET_MASK
 +      coding->common_flags if the coding system is iso-2022 based and
 +      uses designation.
 +      (produce_composition): Adjusted for the new annotation data
 +      format.
 +      (produce_charset): New function.
 +      (produce_annotation): Handle charset annotation.
 +      (handle_composition_annotation, handle_charset_annotation): New
 +      functions.
 +      (consume_chars): Handle charset annotation.  Utilize the above two
 +      functions.
 +      (encode_coding_object): If SRC_OBJECT and DST_OBJECT are the same
 +      buffer, get the deleted text as a string and set
 +      coding->src_object to that string.
 +      (detect_coding, detect_coding_system): Use the new struct
 +      coding_detection_info.
 +
 +      * coding.h (struct coding_detection_info): New structure.
 +      (struct coding_system): Prototype of the member `detector'
 +      adjusted.
 +      (CODING_ANNOTATE_CHARSET_MASK): New macro.
 +
 +2003-01-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * insdel.c (insert_from_gap): Fix argument to offset_intervals.
 +
 +2003-01-03  Dave Love  <fx@gnu.org>
 +
 +      * keymap.c (apropos_predicate, apropos_accumulate): Declare
 +      static.
 +      (Fapropos_internal): Don't gcpro apropos_accumulate.  Set result
 +      to new local and nullify apropos_accumulate before returning.
 +      (syms_of_keymap): Staticpro and initialize apropos_accumulate.
 +
 +2002-12-05  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (Fdefine_charset_internal): Setup charset.fast_map
 +      correctly.
 +
 +2002-11-26  Dave Love  <fx@gnu.org>
 +
 +      * fns.c (Flanginfo): Call synchronize_system_time_locale.
 +
 +2002-11-07  Kenichi Handa  <handa@m17n.org>
 +
 +      The following changes are to make character composition happen
 +      automatically on displaying.
 +
 +      * Makefile.in (lisp, shortlisp): Add composite.elc
 +
 +      * composite.h (Qauto_composed, Vauto_composition_function,
 +      Qauto_composition_function): Extern them.
 +
 +      * composite.c (Vcomposition_function_table,
 +      Qcomposition_function_table): Delete variables.
 +      (Qauto_composed, Vauto_composition_function,
 +      Qauto_composition_function): New variables.
 +      (run_composition_function): Don't call
 +      compose-chars-after-function.
 +      (update_compositions): Clear `auto-composed' text property.
 +      (compose_chars_in_text): Delete this function.
 +      (syms_of_composite): Staticpro Qauto_composed and
 +      Qauto_composition_function.  Declare Vauto_composition_function as
 +      a Lisp variable.
 +
 +      * dispextern.h (enum prop_idx): Add member AUTO_COMPOSED_PROP_IDX.
 +
 +      * xdisp.c (it_props): Add an entry for Qauto_composed.
 +      (handle_auto_composed_prop): New function.
 +
 +      * xselect.c (selection_data_to_lisp_data): Don't call
 +      compose_chars_in_text.
 +
 +2002-11-06  Dave Love  <fx@gnu.org>
 +
 +      * keyboard.c (read_char): Modify checking around use of
 +      Vkeyboard_translate_table.
 +
 +      * xterm.c (XTread_socket): Check Lisp types for Vx_keysym_table
 +      and fix C types.
 +
 +2002-11-06  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding_utf_8): When eol_type is Qdos, handle
 +      the case that the last byte is '\r' correctly.
 +      (decode_coding_emacs_mule): Likewise.
 +      (decode_coding_iso_2022): Likewise.
 +      (decode_coding_sjis): Likewise.
 +      (decode_coding_big5): Likewise.
 +      (decode_coding_charset): Likewise.
 +      (produce_chars): Likewise.
 +      (decode_coding): Flushing out the unprocessed data correctly.
 +      (decode_coding_gap): Set CODING_MODE_LAST_BLOCK bit of
 +      coding->mode.
 +
 +2002-10-31  Dave Love  <fx@gnu.org>
 +
 +      * xterm.c (XTread_socket): Fix changes for defined keysyms.  Add
 +      XK_ISO... case.
 +      (xaw_scroll_callback): Revert last change.
 +
 +2002-10-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (Fset_charset_priority): Update
 +      Viso_2022_charset_list.
 +
 +2002-10-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfaces.c (Vface_resizing_fonts): New variable.
 +      (struct font_name): New member `resizing_ratio'.
 +      (font_resizing_ratio): New function.
 +      (split_font_name): Set font->resizing_ratio.
 +      (better_font_p): Pay attention to font->resizing_ratio.
 +      (build_scalable_font_name): Likewise.  Don't change POINT_SIZE,
 +      RESX, and RESY fields.
 +      (try_alternative_families): Try scalable fonts if
 +      Vscalable_fonts_allowed is not Qt.
 +      (syms_of_xfaces): Declare Vface_resizing_fonts as a Lisp variable.
 +
 +2002-10-29  Dave Love  <fx@gnu.org>
 +
 +      * xterm.c (xaw_scroll_callback): Cast correctly.
 +
 +2002-10-28  Dave Love  <fx@gnu.org>
 +
 +      * keyboard.c (lispy_accent_codes, lispy_accent_keys): Extend.
 +      (lispy_kana_keys): Comment out.
 +      (make_lispy_event) [XK_kana_A]: Comment out.
 +
 +      * xterm.c (xaw_scroll_callback): Cast call_data.
 +      (XTread_socket): Deal with ASCII keysyms.
 +      (syms_of_xterm) <Vx_keysym_table>: Fix args of make_hash_table.
 +
 +2002-10-27  Dave Love  <fx@gnu.org>
 +
 +      * xterm.c (Vx_keysym_table): New.
 +      (syms_of_xterm): Initialize it.
 +      (XTread_socket): Use it.
 +      From head: Eliminate incorrect optimization that tried to avoid
 +      decoding the output of X*LookupString.
 +      (x_get_font_repertory): Delete charset declaration.
 +
 +2002-10-16  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (detect_coding): Fix previous change.
 +      (detect_coding_charset): If only ASCII bytes are found, return 0.
 +      (detect_coding_system): Fix previous change.
 +      (Fdefine_coding_system_internal): Setup CODING_ATTR_ASCII_COMPAT
 +      (attrs) correctly.
 +
 +2002-10-15  Dave Love  <fx@gnu.org>
 +
 +      * coding.c (Fcheck_coding_system): Doc fix.
 +
 +      * editfns.c (Finsert_byte): Return a proper value.
 +
 +2002-10-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding): Fix args to translate_chars.  Pay
 +      attention to Vstandard_translation_table_for_decode.
 +      (encode_coding): Fix args to translate_chars.  Pay attention to
 +      Vstandard_translation_table_for_encode.
 +
 +      * data.c (Faset): Check NEWELT by ASCII_CHAR_P, not by
 +      SINGLE_BYTE_CHAR_P.
 +
 +      * editfns.c (general_insert_function): Check VAL by ASCII_CHAR_P,
 +      not by SINGLE_BYTE_CHAR_P.
 +
 +      * fns.c (concat): Check CH by ASCII_CHAR_P, not by
 +      SINGLE_BYTE_CHAR_P.
 +
 +      * insdel.c (copy_text): Check C by ASCII_CHAR_P, not by
 +      SINGLE_BYTE_CHAR_P.
 +
 +      * keymap.c (Ftext_char_description): Check C by ASCII_CHAR_P, not
 +      by SINGLE_BYTE_CHAR_P.
 +
 +      * search.c (Freplace_match): Check C by ASCII_CHAR_P, not by
 +      SINGLE_BYTE_CHAR_P.
 +
 +2002-10-14  Dave Love  <fx@gnu.org>
 +
 +      * fns.c (Fstring_as_multibyte, Fstring_to_multibyte): Doc fix.
 +
 +2002-10-10  Dave Love  <fx@gnu.org>
 +
 +      * fns.c (Flanginfo): Fix typo.
 +
 +      * unexelf.c (unexec): Make last change conditional on Irix 6.5.
 +
 +2002-10-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (detect_coding_utf_8): Check incomplete byte sequence.
 +      Don't update *mask when correctly detected.
 +      (detect_coding_utf_16): Likewise.
 +      (detect_coding_emacs_mule): Likewise.
 +      (detect_coding_iso_2022): Likewise.
 +      (detect_coding_sjis): Likewise.
 +      (detect_coding_big5): Likewise.
 +      (detect_coding_ccl): Likewise.
 +      (decode_coding_sjis): Fix decoding of katakana-jisx0201.
 +      (detect_eol): Delete the argument CODING, and add the argument
 +      CATEGORY.
 +      (detect_coding): Adjusted for the changes above.
 +      (detect_coding_system): Likewise.
 +
 +2002-10-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * character.c (char_string): Renamed from
 +      char_string_with_unification.  Pay attention to
 +      CHAR_MODIFIER_MASK.
 +      (string_char): Renamed from string_char.
 +
 +      * character.h (CHAR_STRING): Call char_string if C is greater than
 +      MAX_3_BYTE_CHAR.
 +      (CHAR_STRING_ADVANCE): Likewise.
 +      (STRING_CHAR): Call string_char instead of
 +      string_char_with_unification.
 +      (STRING_CHAR_AND_LENGTH): Likewise.
 +      (STRING_CHAR_ADVANCE): Likewise.
 +
 +2002-10-09  Dave Love  <fx@gnu.org>
 +
 +      * coding.c (decode_coding_utf_8): Treat surrogates as invalid.
 +
 +2002-10-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * keymap.c (push_key_description): Pay attention to
 +      force_multibyte.
 +
 +      * regex.c (re_search_2): Fix for the case of unibyte buffer.
 +
 +2002-10-06  Dave Love  <fx@gnu.org>
 +
 +      * charset.c (define_charset_internal): Rename `supprementary'.
 +
 +      * Makefile.in (lisp, shortlisp): Remove latin-N.
 +
 +2002-10-05  Dave Love  <fx@gnu.org>
 +
 +      * xfns.c (x_window, x_window): Use use_xim.
 +
 +      * xterm.c (use_xim): Initialize.
 +      (xim_open_dpy, xim_initialize, xim_close_dpy): Use use_xim.
 +      (x_term_init): Maybe set use_xim.
 +
 +      * xterm.h (use_xim) [HAVE_X_I18N]: Declare.
 +
 +2002-10-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * search.c (search_buffer): Fix case-fold-search of multibyte
 +      characters.
 +      (boyer_moore): Rename the last argument to char_high_bits.
 +
 +2002-09-27  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (display_string): Fix for the case of zero width glyph.
 +
 +      * xfns.c (x_set_font): Change the error message of the case that
 +      x_new_fontset returns Qt.
 +
 +      * xfaces.c (set_lface_from_font_name): Reject the default fontset.
 +      (Finternal_set_lisp_face_attribute): Use signal_error for the
 +      error of invalid fontset.
 +
 +      * xterm.c (x_new_fontset): If FONTSETNAME specifies the default
 +      fontset, return Qt.
 +
 +2002-09-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * regex.c (re_search_2): Fix previous change.
 +
 +2002-09-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * syntax.c (skip_syntaxes): Fix previous change.
 +
 +2002-09-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * syntax.c (skip_chars): Fix previous change.
 +      (skip_syntaxes): Fix previous change.
 +
 +2002-09-06  Dave Love  <fx@gnu.org>
 +
 +      * config.in: Restore it.
 +
 +2002-09-05  Dave Love  <fx@gnu.org>
 +
 +      * config.in: Removed (now auto-generated).
 +
 +      * s/usg5-4.h: Fix last change.
 +
 +      * unexelf.c (unexec): Make .got handling not SGI-specific.
 +
 +      * syntax.c (syms_of_syntax) <multibyte-syntax-as-symbol>: Doc fix.
 +
 +      * regex.c: Use `ifdef HAVE_ALLOCA_H', not `if HAVE_ALLOCA_H'.
 +
 +      * keyboard.c (read_key_sequence): Fix type error.
 +
 +      * buffer.c (Fset_buffer_multibyte, Fset_buffer_multibyte): Fix
 +      type error.
 +
 +      * fontset.c (fontset_add): Return Lisp_Object.
 +
 +2002-09-03  Dave Love  <fx@gnu.org>
 +
 +      * charset.h (charset_ordered_list_tick): Declare extern.
 +
 +2002-09-03  Kenichi Handa  <handa@m17n.org>
 +
 +      The following changes (and some of 2002-08-20 changes of mine) are
 +      for handling syntax, category, and case conversion for unibyte
 +      characters by converting them to multibyte on the fly.  With these
 +      changes, we don't have to setup syntax and case tables for unibyte
 +      characters in each language environment.
 +
 +      * abbrev.c (Fexpand_abbrev): Convert a unibyte character to
 +      multibyte if necessary.
 +
 +      * bytecode.c (Fbyte_code): Likewise.
 +
 +      * character.h (LEADING_CODE_LATIN_1_MIN) 
 +      (LEADING_CODE_LATIN_1_MAX): New macros.
 +      (unibyte_to_multibyte_table): Extern it.
 +      (unibyte_char_to_multibyte): New macro.
 +      (MAKE_CHAR_MULTIBYTE): Use unibyte_to_multibyte_table.
 +      (CHAR_LEADING_CODE): New macro.
 +      (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE): New macro.
 +
 +      * character.c (unibyte_to_multibyte_table): New variable.
 +      (unibyte_char_to_multibyte): Move to character.h and defined as
 +      macro.
 +      (multibyte_char_to_unibyte): If C is an eight-bit character,
 +      convert it to the corresponding byte value.
 +
 +      * charset.c (Fset_unibyte_charset): If the dimension of CHARSET is
 +      not 1, singals an error.  Update the elements of
 +      unibyte_to_multibyte_table.
 +      (init_charset_once): Initialize unibyte_to_multibyte_table.
 +      (syms_of_charset): Define the charset `iso-8859-1'.
 +
 +      * casefiddle.c (casify_object): Fix previous change.
 +
 +      * cmds.c (internal_self_insert): In a multibyte buffer, insert C
 +      as is without converting it to unibyte.  In a unibyte buffer,
 +      convert C to multibyte before checking the syntax.
 +
 +      * lisp.h (unibyte_char_to_multibyte): Extern deleted.
 +
 +      * minibuf.c (Fminibuffer_complete_word): Use the macro
 +      FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE.
 +
 +      * regex.h (struct re_pattern_buffer): New member target_multibyte.
 +
 +      * regex.c (RE_TARGET_MULTIBYTE_P): New macro.
 +      (GET_CHAR_BEFORE_2): Check target_multibyte, not multibyte.  If
 +      that is zero, convert an eight-bit char to multibyte.
 +      (MAKE_CHAR_MULTIBYTE, CHAR_LEADING_CODE): New dummy new macros for
 +      non-emacs case.
 +      (PATFETCH): Convert an eight-bit char to multibyte.
 +      (HANDLE_UNIBYTE_RANGE): New macro.
 +      (regex_compile): Setup the compiled pattern for multibyte chars
 +      even if the given regex string is unibyte.  Use PATFETCH_RAW
 +      instead of PATFETCH in many places.  To handle `charset'
 +      specification of unibyte, call HANDLE_UNIBYTE_RANGE.   Use bitmap
 +      only for ASCII chars.
 +      (analyse_first) <exactn>: Simplified because the compiled pattern
 +      is multibyte.
 +      <charset_not>: Setup fastmap from bitmap only for ASCII chars.
 +      <charset>: Use CHAR_LEADING_CODE to get leading codes.
 +      <categoryspec>: If multibyte, setup fastmap only for ASCII chars
 +      here.
 +      (re_compile_fastmap) [emacs]: Call analyse_first with the arg
 +      multibyte always 1.
 +      (re_search_2) In emacs, set the locale variable multibyte to 1,
 +      otherwise to 0.  New local variable target_multibyte.  Check it
 +      to decide the multibyteness of STR1 and STR2.  If
 +      target_multibyte is zero, convert unibyte chars to multibyte
 +      before translating and checking fastmap.
 +      (TARGET_CHAR_AND_LENGTH): New macro.
 +      (re_match_2_internal): In emacs, set the locale variable multibyte
 +      to 1, otherwise to 0.  New local variable target_multibyte.  Check
 +      it to decide the multibyteness of STR1 and STR2.  Use
 +      TARGET_CHAR_AND_LENGTH to fetch a character from D.
 +      <charset, charset_not>: If multibyte is nonzero, check fastmap
 +      only for ASCII chars.   Call bcmp_translate with
 +      target_multibyte, not with multibyte.
 +      <begline>: Declare the local variable C as `unsigned'.
 +      (bcmp_translate): Change the last arg name to target_multibyte.
 +
 +      * search.c (compile_pattern_1): Don't adjust the multibyteness of
 +      the regexp pattern and the matching target.  Set cp->buf.multibyte
 +      to the multibyteness of the regexp pattern.  Set
 +      cp->but.target_multibyte to the multibyteness of the matching
 +      target.
 +      (wordify): Use FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE instead of
 +      FETCH_STRING_CHAR_ADVANCE.
 +      (Freplace_match): Convert unibyte chars to multibyte.
 +
 +      * syntax.c (char_quoted): Use FETCH_CHAR_AS_MULTIBYTE to convert
 +      unibyte chars to multibyte.
 +      (back_comment): Likewise.
 +      (scan_words): Likewise.
 +      (skip_chars): The arg syntaxp is deleted, and the code for
 +      handling syntaxes is moved to skip_syntaxes.  Callers changed.
 +      Fix the case that the multibyteness of STRING and the current
 +      buffer doesn't match.
 +      (skip_syntaxes): New function.
 +      (SYNTAX_WITH_MULTIBYTE_CHECK): Check C by ASCII_CHAR_P, not by
 +      SINGLE_BYTE_CHAR_P.
 +      (Fforward_comment): Use FETCH_CHAR_AS_MULTIBYTE to convert unibyte
 +      chars to multibyte.
 +      (scan_lists): Likewise.
 +      (Fbackward_prefix_chars): Likewise.
 +      (scan_sexps_forward): Likewise.
 +
 +2002-08-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfaces.c (QCfontset): New variable.
 +      (LFACE_FONTSET): New macro.
 +      (check_lface_attrs): Check also LFACE_FONTSET_INDEX.
 +      (set_lface_from_font_name): Setup LFACE_FONTSET (lface).
 +      (Finternal_set_lisp_face_attribute): Handle QCfontset.
 +      (Finternal_get_lisp_face_attribute): Likewise.
 +      (lface_same_font_attributes_p): Fix checking of LFACE_FONT_INDEX,
 +      check also LFACE_FONTSET_INDEX.
 +      (face_fontset): Check attrs[LFACE_FONTSET_INDEX], not
 +      attrs[LFACE_FONT_INDEX].
 +      (syms_of_xfaces): Intern and staticpro QCfontset.
 +
 +      * dispextern.h (enum lface_attribute_index): New member
 +      LFACE_FONTSET_INDEX.
 +
 +      * fns.c (base64_encode_1): Handle eight-bit chars correctly.
 +
 +2002-08-21  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (coding_set_destination): Fix coding->destination for
 +      the case converting a region.
 +      (encode_coding_utf_8): Encode eight-bit chars as single byte.
 +      (encode_coding_object): Fix coding->dst_pos and
 +      coding->dst_pos_byte for the case converting a region.
 +
 +      * insdel.c (insert_from_gap): Make it work even if PT != GTP.
 +
 +      * character.h (BYTE8_STRING): New macro.
 +
 +      * fns.c (base64_decode_1): Insert eight-bit chars correctly.
 +
 +2002-08-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (get_next_display_element): Don't display unibyte 8-bit
 +      characters by octal form.
 +
 +      * abbrev.c (Fexpand_abbrev): Fix for the multibyte case.
 +
 +      * buffer.h (_fetch_multibyte_char_len): Extern deleted.
 +      (FETCH_MULTIBYTE_CHAR): Don't use _fetch_multibyte_char_len.
 +      (BUF_FETCH_MULTIBYTE_CHAR): Likewise.
 +      (FETCH_CHAR_AS_MULTIBYTE): New macro.
 +
 +      * casetab.c (set_canon, set_identity, shuffle): Simplified.
 +
 +      * casefiddle.c (casify_object): Simplified.  Handle the case that
 +      the case conversion change the byte length.  
 +      (casify_region): Likewise
 +
 +      * character.h (MAKE_CHAR_UNIBYTE, MAKE_CHAR_MULTIBYTE): New
 +      macros.
 +
 +      * character.c (_fetch_multibyte_char_len): This variable deleted.
 +      (syms_of_character): Setup Vprintable_chars.
 +
 +      * editfns.c (Fchar_equal): Fix for the unibyte case.
 +      (Finsert_byte): New function.
 +      (syms_of_editfns): Defsubr it.
 +
 +      * keyboard.c (read_key_sequence): Use ~CHAR_MODIFIER_MASK instead
 +      of direct code 0x3ffff.
 +
 +      * search.c (Freplace_match): Fix for the unibyte case.
 +
 +2002-08-19  Kenichi Handa  <handa@m17n.org>
 +
 +      * lread.c (safe_to_load_p): Fix the logic.
 +
 +      * syntax.c (scan_words): Don't treat characters belonging to
 +      different scripts as constituting a word.
 +
 +      * editfns.c (Fformat): Use ASCII_CHAR_P, not SINGLE_BYTE_CHAR_P.
 +
 +      * fontset.c (Fset_fontset_font): Treat `ascii' as charset, not
 +      script.
 +
 +      * emacs.c (main): In the case of --unibyte, instead of aborting on
 +      finding non-empty buffer, make it unibyte.
 +
 +2002-08-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * xterm.c (x_new_fontset): Call `create-fontset-from-ascii-font'
 +      to create a fontset.
 +
 +2002-08-18  Dave Love  <fx@gnu.org>
 +
 +      * character.c (Funibyte_char_to_multibyte): Doc fix.
 +
 +      * xfns.c [HAVE_STDLIB_H]: Fix last change.
 +
 +2002-08-15  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (fontset_add): Make the type `int'.
 +      (fontset_id_valid_p): Define it if FONTSET_DEBUG is defined.
 +
 +      * character.c (unibyte_char_to_multibyte): Refer to
 +      charset_unibyte, not charset_primary.
 +      (multibyte_char_to_unibyte): Likewise.
 +      (Funibyte_char_to_multibyte): Likewise.
 +
 +      * charset.h: (charset_unibyte): Extern it instead of
 +      charset_primary.
 +
 +      * charset.c (charset_unibyte): Renamed from charset_primary.
 +      (Funibyte_charset): Renamed from Fprimary_charset.
 +      (Fset_unibyte_charset): Renamed from Fset_primary_charset.
 +      (syms_of_charset): Adjusted for the above changes.
 +
 +      * w32term.c (x_produce_glyphs): Use ASCII_CHAR_P, not
 +      SINGLE_BYTE_CHAR_P.  Fix the logic of handling non-ASCII char when
 +      it->multibyte_p is zero.
 +
 +      * lisp.h (nonascii_insert_offset, Vnonascii_translation_table):
 +      Extern deleted.
 +
 +2002-08-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (Fdefine_coding_system_internal): Fix category setting
 +      for a coding system of type iso-2022.
 +
 +2002-08-02  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.h (FS_LOAD_FONT): Call fs_load_font with the arg CHARSET
 +      -1.
 +
 +2002-08-01  Kenichi Handa  <handa@m17n.org>
 +
 +      * syntax.c (Vnext_word_boundary_function_table): New variable.
 +      (syms_of_syntax): Declare it as a Lisp variable.
 +      (scan_words): Call functions in Vnext_word_boundary_function_table
 +      if any.
 +
 +      * xterm.c (x_load_font): Initialize fontp->fontset to -1.
 +
 +      * fontset.c (fs_load_font): If fontp->charset is not negative,
 +      return fontp without setting its members.
 +
 +2002-07-31  Dave Love  <fx@gnu.org>
 +
 +      * config.in: Generated with autoheader.
 +
 +      * xfns.c [HAVE_STDLIB_H]: Change logic (instead of fixing typo).
 +
 +      * m/sparc.h (HAVE_ALLOCA): Delete.
 +
 +      * s/irix6-5.h: Don't include strings.h.
 +      (bcopy, bzero, bcmp): Don't undef.
 +
 +      * s/irix6-0.h (bcopy, bzero, bcmp): Don't undef.
 +
 +      * s/usg5-4.h (NO_SIOCTL_H): Don't define.
 +      (TIOCSIGSEND): Don't test IRIX6.
 +      (bcopy, bzero, bcmp): Define conditionally.
 +
 +2002-07-31  Kenichi Handa  <handa@m17n.org>
 +
 +      * buffer.c (Qas, Qmake, Qto): New variables.
 +      (Fset_buffer_multibyte): New optional arg METHOD.  Caller changed.
 +      (syms_of_buffer): Intern and staticpro Qas, Qmake, and Qto.
 +
 +      * callproc.c (Fcall_process): Don't call insert_1_both directly if
 +      we are inserting a process output into a multibyte buffer.
 +
 +      * character.h (CHAR_TO_BYTE8): If C is not eight-bit char, call
 +      multibyte_char_to_unibyte.
 +
 +      * character.c (Funibyte_char_to_multibyte): If C can't be decoded
 +      by the primary charset, make it eight-bit char.
 +      (Fmultibyte_char_to_unibyte): Call CHAR_TO_BYTE8.
 +
 +      * charset.c: (charset_eight_bit, Qeight_bit_control): New
 +      variables.
 +      (charset_8_bit__control, charset_8_bit_graphic,
 +      Qeight_bit_control, Qeight_bit_graphic): These variables deleted.
 +      (define_charset_internal): New function.
 +      (syms_of_charset): Call define_charset_internal for pre-defined
 +      charsets.
 +
 +      * charset.h (charset_8_bit): Extern it.
 +
 +      * coding.c (make_conversion_work_buffer): Adjusted for the change
 +      of Fset_buffer_multibyte.
 +      (encode_coding_raw_text): Increment p0 in the loop.
 +
 +      * lisp.h (Fset_buffer_multibyte): Prototype adjusted.
 +
 +      * xdisp.c (setup_echo_area_for_printing, set_message_1): Adjusted
 +      for the change of Fset_buffer_multibyte.
 +
 +      * fns.c (Fstring_to_multibyte): New function.
 +      (syms_of_fns): Declare Fstring_to_multibyte as Lisp subroutine.
 +
 +2002-07-30  Dave Love  <fx@gnu.org>
 +
 +      * xfns.c (x_put_x_image): Declare args.
 +
 +      * xfaces.c (font_name_registry, choose_face_font): Delete unused
 +      vars.
 +      (try_font_list): Declare an arg.
 +
 +      * xdisp.c (message2_nolog, set_message): Declare an arg.
 +
 +      * terminfo.c (tparam): Declare an arg.  Use P_ to declare tparm.
 +
 +      * syntax.c (scan_sexps_forward): Declare an arg.
 +
 +      * scroll.c (calculate_scrolling, calculate_direct_scrolling):
 +      Declare an arg.
 +
 +      * lisp.h (Fnew_fontset): Declare.
 +
 +      * keymap.c (push_key_description): Call CHARACTERP correctly.
 +
 +      * fontset.c (fontset_add): Declare args.  Call make_number
 +      correctly.
 +      (face_for_char): Delete unused vars.
 +      (Fset_fontset_font): Doc fix.  Delete unused vars.
 +
 +      * doc.c (Fsubstitute_command_keys): Delete unused vars.
 +
 +      * composite.c (update_compositions): Declare arg.
 +
 +      * cm.c (calccost, cmgoto): Declare args.
 +
 +      * charset.c: Remove `emacs' conditional.  Doc fixes.
 +      (map_char_table_for_charset): Declare.
 +
 +      * character.c (syms_of_character) <translation-table-vector>: Doc
 +      fix.
 +
 +      * ccl.c: Remove `emacs' conditional.  Include hash table stuff
 +      from trunk.
 +
 +2002-07-26  Kenichi Handa  <handa@m17n.org>
 +
 +      The following changes are to allow specifying multiple font
 +      patterns for a character range (specified by script or charset).
 +
 +      * Makefile.in (abbrev.o): Depend on syntax.h.
 +      (xfaces.o): Depend on charset.h.
 +
 +      * alloc.c (Fmake_string): Use ASCII_CHAR_P, not
 +      SINGLE_BYTE_CHAR_P.
 +
 +      * ccl.c (Fccl_execute_on_string): Add `const' to local variables.
 +
 +      * character.h (Vchar_script_table): Extern it.
 +
 +      * character.c (Vscript_alist): This variable deleted.
 +      (Vchar_script_table, Qchar_script_table): New variable.
 +      (syms_of_character): Declare Vchar_script_table as a lisp variable
 +      and initialize it.
 +
 +      * chartab.c (Fmake_char_table): Doc fixed.  If PURPOSE doesn't
 +      have property char-table-extra-slots, make no extra slot.
 +
 +      * dispextern.h (struct face): Member `charset' deleted.
 +      (FACE_SUITABLE_FOR_CHAR_P): Use ASCII_CHAR_P, not
 +      SINGLE_BYTE_CHAR_P.
 +      (FACE_FOR_CHAR): Likewise.
 +      (choose_face_font, lookup_non_ascii_face, font_name_registry): Add
 +      prototypes
 +      (lookup_face, lookup_named_face, lookup_derived_face): Prototype
 +      fixed.
 +      (generate_ascii_font_name): Renamed from generate_ascii_font.
 +      
 +      * fontset.h (get_font_repertory_func): New prototype.
 +      (make_fontset_for_ascii_face, fs_load_font): Prototypes fixed.
 +      (FS_LOAD_FONT): Call fs_load_font with the 3rd arg charset_ascii.
 +
 +      * fontset.c (Qprepend, Qappend): New variables.
 +      (FONTSET_CHARSET_ALIST, FONTSET_FACE_ALIST): These macros deleted.
 +      (FONTSET_NOFONT_FACE, FONTSET_REPERTORY): New macros.
 +      (FONTSET_REF): Optimize if FONTSET is Vdefault_fontset.
 +      (FONTSET_REF_AND_RANGE, FONTSET_ADD): New macros.
 +      (fontset_ref_and_range, fontset_add, reorder_font_vector)
 +      (load_font_get_repertory): New functions.
 +      (fontset_set): This function deleted.
 +      (fontset_face): New arg FACE.  Return face ID, not face.
 +      Completely re-written to handle new fontset structure.  Caller
 +      changed.
 +      (free_face_fontset): Use ASET istead of AREF (X) = Y.
 +      (face_for_char): Don't call lookup_face.
 +      (make_fontset_for_ascii_face): New arg FACE.
 +      (fs_load_font): New arg CHARSET_ID.  Don't check
 +      Vfont_encoding_alist here.
 +      (find_font_encoding): New function.
 +      (list_fontsets): Use STRINGP, not ! NILP.
 +      (accumulate_script_ranges): New function.
 +      (Fset_fontset_font, Fnew_fontset, Ffontset_info): Completely
 +      re-written to handle new fontset structure.
 +      (Ffontset_font): Return a copy of element.
 +      (syms_of_fontset): Define symbols Qprepend and Qappend.  Fix
 +      docstring of font-encoding-alist.
 +
 +      * lisp.h (CHAR_TABLE_REF): Remove unnecessary check (IDX >= 0).
 +      (Fset_fotset_font): Fix arguments to 5.
 +
 +      * msdos.c (XMenuActivate): Adjuted for the change of
 +      lookup_derived_face.
 +
 +      * xdisp.c (message_dolog, set_message_1, extend_face_to_end_of_line):
 +      Use ASCII_CHAR_P, not SINGLE_BYTE_CHAR_P.
 +      (highlight_trailing_whitespace): Adjusted for the change of
 +      lookup_named_face.
 +
 +      * xfaces.c: Include charset.h.
 +      (load_face_font): Argument C deleted.  Caller changed.
 +      (generate_ascii_font_name): Renamed from generate_ascii_font.
 +      (font_name_registry): New function.
 +      (cache_face): Store ascii faces before non-ascii faces in buckets.
 +      (lookup_face): Arguments C and BASE_FACE deleted.  Caller changed.
 +      Lookup only ascii faces.
 +      (lookup_non_ascii_face): New function.
 +      (lookup_named_face): Argument C deleted.  Caller changed.
 +      (lookup_derived_face): Argument C deleted.  Caller changed.
 +      (try_font_list): New arg PATTERN.  Caller changed.  If PATTERN is
 +      a string, just call font_list with it.
 +      (choose_face_font): Arguments FACE and C deleted.  New arg
 +      FONT_SPEC.  Caller changed.
 +      (realize_face): Arguments C and BASE_FACE deleted.  Caller
 +      (realize_x_face): Likewise.
 +      (realize_non_ascii_face): New function.
 +      (realize_x_face): Call load_face_font here.
 +      (realize_tty_face): Argument C deleted.  Caller changed.
 +      (compute_char_face): If CH is not ascii, call FACE_FOR_CHAR to
 +      get a face ID.
 +      (dump_realized_face): Don't print charset of FACE.
 +
 +      * xfns.c (x_set_font): Always call x_new_fontset and
 +      store_frame_parameter.
 +      (Fx_create_frame): Call x_new_fontset, not x_new_font.
 +      (syms_of_xfns): Set get_font_repertory_func to
 +      x_get_font_repertory.
 +
 +      * xterm.h (x_get_font_repertory): Extern it.
 +
 +      * xterm.c (x_produce_glyphs): Use ASCII_CHAR_P, not
 +      SINGLE_BYTE_CHAR_P.  Fix the logic of handling non-ASCII char when
 +      it->multibyte_p is zero.
 +      (XTread_socket): Use ASCII_CHAR_P, not SINGLE_BYTE_CHAR_P.
 +      (x_new_fontset): If FONTSETNAME doesn't match any existing
 +      fontsets, create a new one.
 +      (x_get_font_repertory): New function.
 +
 +2002-07-25  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (Ffind_coding_systems_region_internal): Detect an
 +      ASCII only string correctly.
 +
 +      * lread.c (Fload): Don't load with Qload_force_doc_strings t if
 +      version is 0.
 +
 +2002-07-24  Kenichi Handa  <handa@m17n.org>
 +
 +      * lread.c: Include "coding.h".
 +      (Qget_emacs_mule_file_char, Qload_force_doc_strings,
 +      load_each_byte, unread_char): New variables.
 +      (readchar_backlog): This variable deleted.
 +      (readchar): Return a character unless load_each_byte is nonzero.
 +      Handle the case that readcharfun is Qget_emacs_mule_file_char or a
 +      cons.  If unread_char is not -1, simply return it.
 +      (unreadchar): Handle the case that readcharfun is
 +      Qget_emacs_mule_file_char or a cons.  Set unread_char if
 +      necessary.
 +      (read_multibyte): This function deleted.
 +      (readbyte_for_lambda, readbyte_from_file, readbyte_from_string)
 +      (read_emacs_mule_char): New functions.
 +      (Fload): Even if the file doesn't have the extention ".elc", if
 +      safe_to_load_p returns a positive version number, assume that the
 +      file contains bytecompiled code.  If the version is less than 22,
 +      load the file while decoding multibyte sequences by emacs-mule.
 +      (readevalloop): Don't use readchar_backlog.
 +      (Fread): Likewise.  Pay attention to the case that STREAM is a
 +      cons.
 +      (Fread_from_string): Pay attention to the case that STREAM is a
 +      cons.
 +      (read_escape): The arg BYTEREP deleted.
 +      (read1): Set load_each_byte to 1 temporarily while handling
 +      #@NUMBER.  Don't call read_multibyte.
 +      (read_vector): Call Fread with a cons.  If readcharfun is
 +      Qget_emacs_mule_file_char, decode the read string by emacs-mule.
 +      (read_list): If doc_reference is 2, make the cdr part string as
 +      unibyte.
 +      (syms_of_lread): Intern and staticpro Qget_emacs_mule_file_char
 +      and Qload_force_doc_strings.
 +
 +2002-07-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * xdisp.c (face_before_or_after_it_pos): Call
 +      FETCH_MULTIBYTE_CHAR with byte postion, not char position.
 +
 +2002-07-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * character.h (TRAILING_CODE_P): New macro.
 +      (MAYBE_UNIFY_CHAR): Adjusted for the change of Funify_charset.
 +      (string_char_with_unification): Fix prototype.
 +      (Vscript_alist): Extern it.
 +
 +      * character.c (Vscript_alist): New variable.
 +      (string_char_with_unification): Add `const' to local variables.
 +      (str_as_unibyte): Likewise.
 +      (string_escape_byte8): Likewise.
 +      (syms_of_character): Declare script-alist as a Lisp variable.
 +
 +      * charset.h (Vcharset_ordered_list): Extern it.
 +      (charset_ordered_list_tick): Extern it.
 +      (EMACS_MULE_LEADING_CODE_PRIVATE_11)
 +      (EMACS_MULE_LEADING_CODE_PRIVATE_12)
 +      (EMACS_MULE_LEADING_CODE_PRIVATE_21)
 +      (EMACS_MULE_LEADING_CODE_PRIVATE_22): New macros
 +      (Funify_charset): Adjusted for the change of Funify_charset.
 +
 +      * charset.c (charset_ordered_list_tick): New variable.
 +      (Fdefine_charset_internal): Increment charset_ordered_list_tick.
 +      (Funify_charset): New optional arg DEUNIFY.  If it is non-nil,
 +      deunify intead of unify a charset.
 +      (string_xstring_p): Add `const' to local variables.
 +      (find_charsets_in_text): Add `const' to arguemnts and local
 +      variables.
 +      (encode_char): Adjusted for the change of Funify_charset.  Fix
 +      detecting of invalid code.
 +      (Fset_charset_priority): Increment charset_ordered_list_tick.
 +      (Fmap_charset_chars): Fix handling of default value for FROM_CODE
 +      and TO_CODE.
 +
 +      * coding.c (LEADING_CODE_PRIVATE_11, LEADING_CODE_PRIVATE_12)
 +      (LEADING_CODE_PRIVATE_21, LEADING_CODE_PRIVATE_22): Macros
 +      deleted.  Callers changed to use
 +      EMACS_MULE_LEADING_CODE_PRIVATE_11, etc.
 +      (decode_coding_ccl): Add `const' to local variables.
 +      (consume_chars): Likewise.
 +      (Ffind_coding_systems_region_internal): Likewise.
 +      (Fcheck_coding_systems_region): Likewise.
 +
 +      * print.c (print_object): Use octal form for printing the
 +      contents of a bool vector.
 +
 +2002-07-18  Dave Love  <fx@gnu.org>
 +
 +      * lread.c (Fload) <!load_dangerous_libraries>: Don't leak fd.
 +      <version == 20>: Refuse to load.
 +
 +2002-07-17  Dave Love  <fx@gnu.org>
 +
 +      * fns.c: Move coding.h.
 +      (Qcodeset, Qdays, Qmonths): New.
 +      (concat): Use CHARACTERP instead of INTERGERP.
 +      (Flocale_codeset): Deleted.
 +      (Flanginfo): New function.
 +      (syms_of_fns): Changed accordingly.
 +
 +      * coding.c (adjust_coding_eol_type): Fix eol_type/eol_seen mixup.
 +
 +2002-07-16  Dave Love  <fx@gnu.org>
 +
 +      * casetab.c (init_casetab_once, init_casetab_once): Fix
 +      CHAR_TABLE_SET call.
 +
 +      * category.c (Fmodify_category_entry): Fix CATEGORY_MEMBER call.
 +
 +      * character.c (syms_of_character): Fix CHAR_TABLE_SET call.
 +
 +      * charset.c (Fmap_charset_chars): Check args.  Convert Lisp types.
 +      (load_charset_map, Fdeclare_equiv_charset, Fencode_char)
 +      (Fset_charset_priority, syms_of_charset): Convert Lisp types.
 +
 +      * charset.h (CHECK_CHARSET_GET_ID): Use XINT on AREF result.
 +
 +      * coding.c (ENCODE_DESIGNATION, decode_eol)
 +      (make_conversion_work_buffer, code_conversion_restore)
 +      (Fdefine_coding_system_internal): Convert Lisp types.
 +      (code_conversion_restore): Use EQ, not ==.
 +      (Fencode_coding_string): Fix code_convert_string call.
 +
 +      * coding.h (code_convert_region): Fix prototype.
 +
 +      * dispextern.h (redraw_frame, redraw_garbaged_frames): Removed.
 +
 +      * fontset.c (fontset_ref, fontset_set, fs_load_font) 
 +      (Ffontset_info): Convert Lisp types.
 +
 +      * syntax.h (SYNTAX_ENTRY_INT): Don't use make_number.
 +
 +      * xterm.c (note_mouse_movement): Fix call of window_from_coordinates.
 +
 +      * xdisp.c (display_mode_element): Fix call of Fset_text_properties.
 +
 +      * chartab.c: Include "...h", not <...h> in some cases.
 +
 +      * callproc.c (Fcall_process): Remove unused variables.
 +
 +2002-07-12  Dave Love  <fx@gnu.org>
 +
 +      * coding.c (Fset_coding_system_priority): Allow null arg list.
 +
 +2002-07-03  Dave Love  <fx@gnu.org>
 +
 +      * minibuf.c (Fminibuffer_complete_word): Remove unused var.
 +      (Fself_insert_and_exit): Use CHARACTERP.
 +
 +      * callproc.c (Fcall_process): Remove unused vars.
 +
 +      * xterm.c (XTread_socket): Add extra dead keysyms.
 +
 +      * xdisp.c (decode_mode_spec_coding): Use CHARACTERP.
 +
 +      * dispextern.h: Remove prototypes for redraw_frame,
 +      redraw_garbaged_frames.
 +
 +      * cmds.c (Fself_insert_command): Use CHARACTERP.
 +
 +      * chartab.c (make_sub_char_table): Remove unused var.
 +      (Fset_char_table_default, Fmap_char_table): Doc fix.
 +
 +      * keymap.c (access_keymap): Remove generic char code.
 +      (push_key_description): Use CHARACTERP.
 +
 +2002-07-01  Dave Love  <fx@gnu.org>
 +
 +      * charset.c: Doc fixes.
 +      (Funify_charset): Extra checking.
 +
 +2002-06-24  Dave Love  <fx@gnu.org>
 +
 +      * lread.c: Remove some unused variables.
 +      (safe_to_load_p): If safe, return the magic number version byte.
 +      (Fload): Maybe use load-with-code-conversion.
 +
 +2002-06-12  Kenichi Handa  <handa@m17n.org>
 +
 +      * category.c (Fmodify_category_entry): Don't modify the contents
 +      of category_set for characters out of the range.  Avoid
 +      unnecessary modification.
 +
 +      * character.h (MAYBE_UNIFY_CHAR): Adjusted for the change of
 +      Vchar_unify_table.  The default value of the table is now nil.
 +
 +      * character.c (syms_of_character): Setup Vchar_width_table for
 +      eight-bit-control and raw-byte chars.
 +
 +      * charset.h (enum define_charset_arg_index): Delete
 +      charset_arg_parents and add charset_arg_subset and
 +      charset_arg_superset.
 +      (enum charset_attr_index): Delete charset_parents and add
 +      charset_subset and charset_superset.
 +      (enum charset_method): Delete CHARSET_METHOD_INHERIT and add
 +      CHARSET_METHOD_SUBSET and CHARSET_METHOD_SUPERSET.
 +      (CHARSET_ATTR_PARENTS, CHARSET_PARENTS): Macros deleted.
 +      (CHARSET_ATTR_SUBSET, CHARSET_ATTR_SUPERSET, CHARSET_SUBSET)
 +      (CHARSET_SUPERSET): New macros.
 +      (charset_work): Extern it.
 +      (ENCODE_CHAR): Use charset_work.
 +      (CHAR_CHARSET_P): Adjusted for the change of encoder format.
 +      (map_charset_chars): Extern it.
 +
 +      * charset.c (load_charset_map): Set the default value of encoder
 +      and deunifier char-tables to nil.
 +      (map_charset_chars): Argument changed.  Callers changed.  Use
 +      map_char_table_for_charset instead of map_char_table.
 +      (Fmap_charset_chars): New optional args from_code and to_code.
 +      (Fdefine_charset_internal): Adjusted for the change of
 +      `define-charset' (:parents -> :subset or :superset).
 +      (charset_work): New variable.
 +      (encode_char): Adjusted for the change of
 +      Fdefine_charset_internal.
 +      (syms_of_charset): Likewise.
 +      (Ffind_charset_string): Setup the vector `charsets' correctly.
 +
 +      * chartab.c (sub_char_table_ref_and_range): New arg defalt.  Fix
 +      the previous change.
 +      (char_table_ref_and_range): Adjusted for the above change.
 +      (map_sub_char_table_for_charset): New function.
 +      (map_char_table_for_charset): New function.
 +
 +      * keymap.c (describe_vector): Handle a char-table directly here.
 +      (describe_char_table): Deleted.
 +
 +      * lisp.h (map_charset_chars): Deleted.
 +
 +2002-06-11  Dave Love  <fx@gnu.org>
 +
 +      * fns.c (count_combining): Comment out (unused).
 +      (Flocale_codeset): New.
 +      (syms_of_fns): Defsubr it.
 +
 +      * config.in (HAVE_PTY_H, HAVE_SIZE_T, HAVE_LANGINFO_CODESET): New.
 +      (size_t): Removed.
 +      
 +2002-06-06  Dave Love  <fx@gnu.org>
 +
 +      * Makefile.in (chartab.o): Depend on charset.h
 +
 +2002-06-03  Kenichi Handa  <handa@m17n.org>
 +
 +      * character.c (syms_of_character): Set the default value of
 +      Vprintable_chars to Qnil.
 +
 +2002-05-31  Dave Love  <fx@gnu.org>
 +
 +      * Makefile.in (lisp, shortlisp): Change indian.elc to indian.el.
 +
 +2002-05-31  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.c (load_charset_map): Handle the case that from < to
 +      correctly.
 +
 +      * coding.c (encode_coding_emacs_mule): Pay attention to raw-8-bit
 +      chars.
 +      (encode_coding_iso_2022): Likewise.
 +      (encode_coding_sjis): Likewise.
 +      (encode_coding_big5): Likewise.
 +      (encode_coding_charset): Likewise.
 +
 +2002-05-30  Kenichi Handa  <handa@m17n.org>
 +
 +      * Makefile.in (lisp): Change chinese.elc to chinese.el.  They are
 +      not bytecompiled now.
 +      (shortlisp): Likewise.
 +
 +      * charset.c (charset_jisx0201_roman, charset_jisx0208_1978)
 +      (charset_jisx0208): New variables.
 +      (Fdefine_charset_internal): Setup them if appropriate.
 +      (init_charset_once): Initialize them to -1.
 +
 +      * charset.h (charset_jisx0201_roman, charset_jisx0208_1978,
 +      charset_jisx0208): Extern them.
 +
 +      * coding.c (CODING_ISO_FLAG_USE_ROMAN): New macro
 +      (CODING_ISO_FLAG_USE_OLDJIS): New macro.
 +      (CODING_ISO_FLAG_FULL_SUPPORT): Macro definition changed.
 +      (setup_iso_safe_charsets): Fix arguemtns to Fassq.
 +      (DECODE_DESIGNATION): Pay attention to CODING_ISO_FLAG_USE_ROMAN
 +      and CODING_ISO_FLAG_USE_OLDJIS.
 +      (ENCODE_ISO_CHARACTER_DIMENSION1): Likewise.
 +      (ENCODE_ISO_CHARACTER_DIMENSION2): Likewise.
 +      (encode_coding_iso_2022): Change the 1st arg to
 +      ENCODE_ISO_CHARACTER to a variable.
 +
 +2002-05-29  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.h (enum define_charset_arg_index): New enums
 +      charset_arg_min_code and charset_arg_max_code.
 +      (struct charset): New member char_index_offset.
 +
 +      * charset.c (CODE_POINT_TO_INDEX): Take charset->char_index_offset
 +      into account.
 +      (INDEX_TO_CODE_POINT): Likewise.
 +      (Fdefine_charset_internal): Handle args[charset_arg_min_code] and
 +      args[charset_arg_max_code].  Setup charset.char_index_offset.
 +      (syms_of_charset): Fix args to Fdefine_charset_internal.
 +
 +2002-05-27  Dave Love  <fx@gnu.org>
 +
 +      * coding.c (decode_coding_utf_8): Reject overlong sequences.
 +
 +2002-05-26  Dave Love  <fx@gnu.org>
 +
 +      * coding.c: Doc fixes.
 +      (Fcoding_system_aliases): Fix return value.
 +      (Qmac): Remove (duplicated) definition.
 +
 +2002-05-25  Dave Love  <fx@gnu.org>
 +
 +      * charset.c (Fcharset_priority_list, Fset_charset_priority): New
 +      functions.
 +
 +      * character.c (Fstring): Doc fix.
 +
 +      * charset.c (Fdefine_charset_alias): Update Vcharset_list.
 +
 +      * fontset.c (Ffontset_info): Doc fix.  Return charset names, not
 +      ids.
 +      (font-encoding-alist): Doc fix.
 +
 +2002-05-24  Dave Love  <fx@gnu.org>
 +
 +      * term.c (costs_set): Declare static, non-initialized for pcc.
 +      (encode_terminal_code): Remove ensued var.
 +
 +      * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal decl
 +      for K&R.
 +
 +      * xterm.c (xlwmenu_window_p): Fix prototype for K&R.
 +
 +      * coding.c (setup_iso_safe_charsets): Fix arg decl for K&R.
 +      (suffixes): Moved out of make_subsidiaries for K&R.
 +
 +      * charset.c (map_charset_chars): Fix c_function declaration for
 +      K&R.
 +
 +      * lisp.h (DEFUN) [!PROTOTYPES]: Remove spurious `args'.
 +
 +2002-05-23  Dave Love  <fx@gnu.org>
 +
 +      * data.c (Fchar_or_string_p): Doc fix.  Use CHARACTERP.
 +
 +      * category.c (Fmodify_category_entry): Doc fix.  Remove unused
 +      vars.
 +
 +2002-05-23  Yong Lu <lyongu@asia-infonet.com>
 +
 +      * charset.c (Fdefine_charset_internal): Fix argument to bzero.
 +
 +      * coding.c (Fdefine_coding_system_internal): Fix previous change.
 +      (decode_coding_charset): Workaround for the bug of GCC 2.96.
 +
 +2002-05-23  Kenichi Handa  <handa@m17n.org>
 +
 +      * Makefile.in (lisp): Change cyrillic.elc to cyrillic.el,
 +      vietnamese.elc to vietnamese.el.  They are not bytecompiled now.
 +      (shortlisp): Likewise.
 +
 +2002-05-22  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding_charset): Adjusted for the change of
 +      Fdefine_coding_system_internal.
 +      (Fdefine_coding_system_internal): For a coding system of
 +      `charset' type, store a list of charset IDs in
 +      `charset_attr_charset_valids' element of coding attributes.
 +
 +      * charset.c (Fmake_char): Fix previous change.
 +
 +2002-05-21  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (ONE_MORE_BYTE_NO_CHECK): Increment consumed_chars.
 +      (emacs_mule_char): New arg src.  Delete arg `composition'.  Caller
 +      changed.  Handle 2-byte and 3-byte charsets correctly.
 +      (DECODE_EMACS_MULE_COMPOSITION_RULE_20): Renamed from
 +      DECODE_EMACS_MULE_COMPOSITION_RULE.  Caller changed.
 +      (DECODE_EMACS_MULE_COMPOSITION_RULE_21): New macro.
 +      (DECODE_EMACS_MULE_21_COMPOSITION): Call
 +      DECODE_EMACS_MULE_COMPOSITION_RULE_21.  Produce correct annotation
 +      sequence.
 +      (decode_coding_emacs_mule): Handle composition correctly.  Rewind
 +      `src' and `consumed_chars' correctly before calling
 +      emacs_mule_char.
 +      (DECODE_COMPOSITION_START): Correctly handle the case of altchar
 +      and alt&rule composition.
 +      (decode_coding_iso_2022): Handle composition correctly.
 +      (init_coding_once): Setup emacs_mule_bytes for private charsets.
 +      
 +      * charset.c (Fdefine_charset_internal): Fix bug for the case of
 +      re-defining a charset.  If the charset has :emacs-mule-id, setup
 +      emacs_mule_bytes.
 +      (Fmake_char): If CODE1 is nil, use the minimum code of the
 +      charset.
 +
 +2002-05-20  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (encode_coding_iso_2022): If coding requires safe
 +      encoding, produce a character specified by
 +      CODING_INHIBIT_CHARACTER_SUBSTITUTION.
 +      (encode_coding_sjis): Likewise.
 +      (encode_coding_big5): Likewise.
 +      (encode_coding_charset): Likewise.
 +
 +2002-05-17  Dave Love  <fx@gnu.org>
 +
 +      * xterm.c (XSetIMValues): Declare.
 +
 +      * process.c: Conditionally include sys/wait.h, pty.h.
 +
 +      * print.c (print_object): Fix print format for 64-bit
 +      systems.
 +
 +      * keyboard.c (modify_event_symbol): Fix print format for 64-bit
 +      systems.
 +
 +      * buffer.c (emacs_strerror): Declare.
 +      (MMAP_ALLOCATED_P, mmap_enlarge, syms_of_buffer): Import changes
 +      from trunk.
 +
 +      * fontset.c (Fclear_face_cache): Declare.
 +      (accumulate_font_info): Commented-out (unused).
 +      (face_for_char, Fset_fontset_font, Ffontset_info): Remove unused
 +      variables.
 +
 +      * character.h (string_escape_byte8): Declare.
 +
 +      * charset.c (load_charset_map, load_charset_map_from_file): Remove
 +      unused vars.
 +      (Fdefine_charset_internal, Fsplit_char, syms_of_charset)
 +      (Fmap_charset_chars): Doc fix.
 +
 +      * coding.c (Vchar_coding_system_table, Qchar_coding_system):
 +      Removed.
 +      (Fset_coding_system_priority, Fset_coding_system_priority) 
 +      (Fdefine_coding_system_internal): Doc fix.
 +
 +2002-05-16  Dave Love  <fx@gnu.org>
 +
 +      * s/osf5-0.h (C_SWITCH_SYSTEM) [!__GNUC__]: Remove -nointrinsics.
 +
 +2002-05-16  Kenichi Handa  <handa@m17n.org>
 +
 +      * character.c (string_escape_byte8): Make multibyte string with
 +      correct size.
 +
 +      * charset.c (Fmake_char): Delete unnecessary code.
 +
 +2002-05-14  Kenichi Handa  <handa@m17n.org>
 +
 +      * xfns.c (x_encode_text): Allocate coding.destination here, and
 +      call encode_coding_object with dst_object Qnil.
 +
 +      * buffer.c (Fset_buffer_multibyte): Convert 8-bit bytes to
 +      multibyte form correctly.
 +
 +      * fontset.c (fs_load_font): Check fontp->full_name (not fontname)
 +      against Vfont_encoding_alist.
 +
 +      * coding.c (Fdecode_sjis_char): Fix typo (0x7F->0xFF).  Fix the
 +      handling of charset list.
 +      (encode_coding_iso_2022): Setup coding->safe_charsets in advance.
 +      (decode_coding_object): Move point to coding->dst_pos before
 +      calling post-read-conversion function.
 +      (encode_coding_object): Give correct arguments to
 +      pre-write-conversion.  Ignore the return value of
 +      pre-write-conversion function.  Pay attention to the case that
 +      pre-write-conversion changes the current buffer.  If dst_object is
 +      Qt, even if coding->src_bytes is zero, allocate at least one byte
 +      to coding->destination.
 +
 +      * coding.h (JIS_TO_SJIS): Fix typo (j1->s1, j2->s2).
 +
 +      * charset.c (Fmake_char): Make it more backward compatible.
 +      (Fmap_charset_chars): Fix docstring.
 +
 +2002-05-13  Dave Love  <fx@gnu.org>
 +
 +      * coding.c: Doc fixes.
 +      (Fdefine_coding_system_alias): Use names, not symbols, in
 +      coding-system-alist.
 +
 +2002-05-13  Kenichi Handa  <handa@m17n.org>
 +
 +      * fontset.c (free_realized_fontsets): Call Fclear_face_cache instead
 +      of calling free_realized_face.
 +
 +2002-05-10  Yong Lu <lyongu@asia-infonet.com>
 +
 +      * charset.c (load_charset_map): Fix previous change.
 +      (read_hex): Don't treat SPC as a comment starter.
 +      (decode_char): If CODE_POINT_TO_INDEX retruns -1, always return
 +      -1.
 +      (Fdecode_char): Fix typo.
 +
 +2002-05-10  Kenichi Handa  <handa@m17n.org>
 +
 +      * charset.h (struct charset): New member `code_space_mask'.
 +
 +      * coding.c (coding_set_source): Delete the local variable
 +      beg_byte.
 +      (encode_coding_charset): Delete the local variable charset.
 +      (Fdefine_coding_system_internal): Likewise.
 +      (Fdefine_coding_system_internal): Setup
 +      attrs[coding_attr_charset_valids] correctly.
 +
 +      * charset.c (CODE_POINT_TO_INDEX): Utilize `code_space_mask'
 +      member to check if CODE is valid or not.
 +      (Fdefine_charset_internal): Initialize `code_space_mask' member.
 +      (encode_char): Before calling CODE_POINT_TO_INDEX, check if CODE
 +      is within the range of charset->min_code and carset->max_code.
 +
 +2002-05-09  Dave Love  <fx@gnu.org>
 +
 +      * syntax.h (syntax_temp) [!__GNUC__]: Declare.
 +
 +      * dispextern.h (generate_ascii_font): Fix return type.
 +
 +      * xfaces.c (generate_ascii_font): Fix arg declaration.
 +
 +      * coding.c (coding_inherit_eol_type)
 +      (Fset_terminal_coding_system_internal)
 +      (Fset_safe_terminal_coding_system_internal): Fix arg declarations.
 +
 +2002-05-08  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (decode_coding_charset, encode_coding_charset): Handle
 +      multiple charsets correctly.
 +
 +2002-05-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * search.c (boyer_moore): Fix handling of mulitbyte character
 +      translation.
 +
 +      * xdisp.c (display_mode_element): When the variable `elt' is
 +      changed, update `this' and `lisp_string'.
 +
 +2002-05-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * buffer.c (Fset_buffer_multibyte): Fix 8-bit char handling.
 +
 +      * callproc.c (Fcall_process): Be sure to give the current buffer
 +      to decode_coding_c_string.  Update PT and PT_BYTE after the
 +      insertion.
 +
 +      * charset.c (struct charset_map_entries): New struct.
 +      (load_charset_map): Renamed from parse_charset_map.  New args
 +      entries and n_entries.  Caller changed.
 +      (load_charset_map_from_file): Renamed from load_charset_map.
 +      Caller changed.  New arg control_flag.  Call load_charset_map at
 +      the tail.
 +      (load_charset_map_from_vector): New function.
 +      (Fdefine_charset_internal): Setup charset.compact_codes_p.
 +      (encode_char): If the charset is compact, change a character index
 +      to a code point.
 +
 +      * coding.c (coding_alloc_by_making_gap): Check the case that the
 +      source and destination are the same correctly.
 +      (decode_coding_raw_text): Set coding->consumed_char and
 +      coding->consumed to 0.
 +      (produce_chars): If coding->chars_at_source is nonzero, update
 +      coding->consumed_char and coding->consumed before calling
 +      alloc_destination.
 +      (Fdefine_coding_system_alias): Register ALIAS in
 +      Vcoding_system_alist.
 +      (syms_of_coding): Define `no-convesion' coding system at the tail.
 +
 +      * fileio.c (Finsert_file_contents): Set coding_system instead of
 +      val.  If the current buffer is multibyte, always call
 +      decode_coding_gap.
 +
 +      * xfaces.c (try_font_list): Give higher priority to fontset's
 +      family than face's family.
 +
 +2002-04-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * callproc.c (Fcall_process): Be sure to give the current buffer
 +      to decode_coding_c_string.
 +
 +      * xfaces.c (try_font_list): Give a family specified in a fontset
 +      higher priority than a family specified in a face.
 +
 +2002-04-09  Kenichi Handa  <handa@m17n.org>
 +
 +      * fileio.c (Finsert_file_contents): Fix calculation of `inserted'.
 +      Fix arguments to insert_from_buffer.
 +
 +      * xdisp.c (display_mode_element): Fix calculation of `bytepos'.
 +
 +2002-03-11  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (produce_chars): Set the variable `multibytep' correctly.
 +      (decode_coding_gap): Set coding->dst_multibyte correctly.
 +
 +2002-03-07  Kenichi Handa  <handa@m17n.org>
 +
 +      * coding.c (encode_coding_utf_8): Initialize produced_chars to 0.
 +      (decode_coding_utf_16): Fix converting high and low bytes to
 +      code-point.
 +      (encode_coding_utf_16): Substitute coding->default_char for
 +      non-Unicode characters.
 +      (decode_coding): Don't call record_insert here.
 +      (setup_coding_system): Initialize `surrogate' of
 +      coding->spec.utf_16 to 0.
 +      (EMIT_ONE_BYTE): Fix for multibyte case.
 +
 +      * insdel.c (insert_from_gap): Call record_insert.
 +
 +2002-03-04  Kenichi Handa  <handa@m17n.org>
 +
 +      * casefiddle.c (casify_region): Fix multibyte case.
 +
 +      * character.c (c_string_width): Add return type `int'.
 +      (char_string_with_unification): Arg ADVANCED deleted.
 +
 +      * character.h (CHAR_VALID_P): Don't call CHARACTERP.
 +      (CHAR_STRING): Adjusted for the change of
 +      char_string_with_unification.
 +      (CHAR_STRING_ADVANCE): Make it do-while statement.
 +
 +      * chartab.c (sub_char_table_set_range): Optimized for the case
 +      DEPTH == 3.  Add workaround code for a GCC optimization bug.
 +
 +      * charset.c (parse_charset_map): Remove an unused variable.
 +
 +      * coding.c: Delete unused variables.
 +
 +      * fileio.c (Finsert_file_contents): Set coding_system to Qnil
 +      earlier.  If inserted is zero and the coding system doesn't
 +      require flushing, don't call decode_coding_gap.
 +
 +      * syntax.h (SET_RAW_SYNTAX_ENTRY): Don't call make_number.
 +
 +2002-03-01  Kenichi Handa  <handa@m17n.org>
 +
 +      The following changes are for using Unicode as an internal
 +      character model, and use UTF-8 format for buffer/string
 +      representation.
 +
 +      * .gdbinit (xchartable): Adjusted for the change of char table
 +      structure.
 +      (xsubchartable, xcoding, xcharset, xcurbuf): New commands.
 +      
 +      * Makefile.in (obj): Add character.o and chartab.o.
 +      (lisp, shortlisp): Remove utf-8.elc:
 +      (*.o): For many files, change dependency on charset.h to
 +      character.h, and add dependency on character.h.
 +      (character.o, chartab.o): New targets.
 +      
 +      * abbrev.c, bytecode.c, casefiddle.c, cmds.c, dispnew.c, doc.c,
 +      doprnt.c, dosfns.c, frame.c, marker.c, minibuf.c, msdos.c,
 +      w16select.c, w32bdf.c, w32console.c: Include "character.h" instead
 +      of "charset.h".
 +      
 +      * dired.c, filelock.c: Include "character.h".
 +
 +      * alloc.c: Include "character.h" instead of "charset.h".
 +      (Fmake_char_table): Moved to chartab.c.
 +      (make_sub_char_table): Likewise.
 +      (syms_of_alloc): Remove defsubr for Smake_char_table.
 +
 +      * buffer.c: Include "character.h" instead of "charset.h", don't
 +      include "coding.h".
 +      (Fset_buffer_multibyte): Adjuted for UTF-8.
 +
 +      * buffer.h: EXFUN Fbuffer_live_p.
 +
 +      * callproc.c: Include "character.h" instead of "charset.h".
 +      (Fcall_process): Big change for the new code-conversion APIs.
 +
 +      * casetab.c: Include "character.h" instead of "charset.h".
 +      (set_canon, set_identity, shuffle): Adjusted for the new
 +      map_char_table spec.
 +      (init_casetab_once): Call CHAR_TABLE_SET instead of directly
 +      accessing the char table structure.
 +
 +      * chartab.c: New file that implements char table.
 +
 +      * category.c: Include "character.h".
 +      (copy_category_entry): New function.
 +      (copy_category_table): Call map_char_table and copy_category_entry.
 +      (Fmake_category_table): Initialize all top-vel slots.
 +      (char_category_set): New function.
 +      (modify_lower_category_set): Deleted.
 +      (Fmodify_category_entry): Call char_table_ref_and_range.
 +
 +      * category.h (CATEGORY_SET): Just call char_category_set.
 +
 +      * ccl.c: Include "character.h".
 +      (Qccl, Qcclp): New variables.
 +      (CCL_WRITE_CHAR): Alway treat the arg CH as a character even if
 +      it's less than 256.
 +      (CCL_WRITE_MULTIBYTE_CHAR): Deleted.
 +      (CCL_WRITE_STRING, CCL_READ_CHAR): Adjusted for the change of SRC
 +      and DST type.
 +      (ccl_driver): Types of arguments changed.  Code adjusted for that.
 +      (Fccl_execute, Fccl_execute_on_string): Adjusted for the change of
 +      ccl_driver.
 +      (syms_of_ccl): Intern and staticpro Qccl and Qcclp.
 +
 +      * ccl.h (struct ccl_program): Members eol_type and multibyte
 +      deleted.  New members src_multibyte, dst_multibyte, consumed, and
 +      produced.
 +      (struct ccl_spec): Members decoder and encoder deleted.  New
 +      memeber ccl.
 +      (CODING_SPEC_CCL_PROGRAM): New macro.
 +      (ccl_driver): Prototype updated.
 +      (Qccl, Qcclp, Fccl_program_p): Extern them.
 +      (CHECK_CCL_PROGRAM): New macro.
 +
 +      * character.c, character.h, chartab.c: New files. 
 +
 +      * charset.c: Mostly re-written.  Character and multibyte sequence
 +      handling codes are moved to character.c.
 +
 +      * charset.h: Mostly re-written.  Character and multibyte sequence
 +      handling codes are moved to character.h.
 +
 +      * coding.c, coding.h: Mostly re-written.
 +
 +      * composite.c: Include "character.h" instead of "charset.h".
 +      (CHAR_WIDTH): Moved to character.h.
 +      (HASH_KEY, HASH_VALUE): Deleted.
 +
 +      * composite.h (enum composition_method): Order of enumeration
 +      symbols changed.
 +
 +      * data.c: Include "character.h" instead of "charset.h".
 +      (Faref): Call CHAR_TABLE_REF for a char table.
 +      (Faset): Call CHAR_TABLE_SET for a char table.
 +
 +      * dispextern.h (free_realized_face, check_face_attribytes,
 +      generate_ascii_font): Extern them.
 +      (free_realized_multibyte_face): Extern deleted.
 +
 +      * disptab.h (DISP_CHAR_VECTOR): Adjusted for the change of char
 +      table structure.
 +      
 +      * editfns.c: Include "character.h" instead of "charset.h".
 +      (Fchar_to_string): Always call CHAR_STRING.
 +
 +      * emacs.c (main): Call init_charset_once, init_charset,
 +      syms_of_chartab, and syms_of_character.
 +
 +      * fileio.c: Include "character.h" instead of "charset.h".
 +      (Finsert_file_contents): Big change for the new code-conversion
 +      API.
 +      (choose_write_coding_system): Likewise.
 +      (Fwrite_region): Likewise.
 +      (build_annotations_2): Deleted.
 +      (e_write): Big change for the new code-conversion API.
 +
 +      * fns.c: Include "character.h" instead of "charset.h".
 +      (copy_sub_char_table): Moved to chartab.c.
 +      (Fcopy_sequence): Call copy_char_table for a char table.
 +      (concat): Delete codes calling count_multibyte.
 +      (string_char_to_byte): Adjusted for the new multibyte form.
 +      (string_byte_to_char): Likewise.
 +      (internal_equal): Adjusted for the change of char table structure.
 +      (Fchar_table_subtype, Fchar_table_parent, Fset_char_table_parent,
 +      Fchar_table_extra_slot, Fset_char_table_extra_slot,
 +      Fchar_table_range, Fset_char_table_range, Fset_char_table_default,
 +      char_table_translate, optimize_sub_char_table,
 +      Foptimize_char_table, map_char_table, Fmap_char_table): Moved to
 +      chartab.c.
 +      (char_table_ref_and_index): Deleted.
 +      (HASH_KEY, HASH_VALUE): Moved to lisp.h.
 +      (Fmd5): Call preferred_coding_system instead of accessing
 +      Vcoding_category_list.  Adjusted for the new code-conversion API.
 +      (syms_of_fns): Defsubr for char table related functions moved to
 +      chartab.c.
 +
 +      * fontset.c: Mostly re-written.
 +
 +      * fontset.h (struct font_info): Type of the member encoding_type
 +      changed.
 +      (enum FONT_SPEC_INDEX): New enum.
 +      (fontset_font_pattern, fs_load_font): Prototype updated.
 +      (FS_LOAD_FONT): Adjusted for the change of fs_load_font.
 +
 +      * indent.c: Include "character.h" instead of "charset.h".
 +      (MULTIBYTE_BYTES_WIDTH): Call CHAR_WIDTH instead of
 +      WIDTH_BY_CHAR_HEAD.
 +
 +      * insdel.c: Include "character.h" instead of "charset.h".
 +      (copy_text): Don't refer to Vnonascii_translation_table.
 +      (insert_from_gap): New function.
 +
 +      * keyboard.c: Include "character.h" instead of "charset.h".
 +      (command_loop_1): Never call direct_output_forward_char before
 +      a non-ASCII character.
 +      (read_char): If Vkeyboard_translate_table is a char table, always
 +      translated a character.
 +
 +      * keymap.c: Include "character.h".
 +      (store_in_keymap): Handle the case that IDX is a cons.
 +      (Fdefine_key): Handle the case that KEY is a cons and the car part
 +      is also a cons (range).
 +      (push_key_description): Adjusted for the new character code.
 +      (describe_vector): Call describe_char_table for a char table.
 +      (describe_char_table): New function.
 +
 +      * keymap.h (describe_char_table): Extern it.
 +
 +      * lisp.h (enum pvec_type): New member PVEC_SUB_CHAR_TABLE.
 +      (XSUB_CHAR_TABLE, XSETSUB_CHAR_TABLE): New macros.
 +      (CHAR_TABLE_ORDINARY_SLOTS, CHAR_TABLE_SINGLE_BYTE_SLOTS,
 +      SUB_CHAR_TABLE_ORDINARY_SLOTS, SUB_CHAR_TABLE_STANDARD_SLOTS):
 +      Deleted.
 +      (CHAR_TABLE_REF, CHAR_TABLE_SET): Adjusted for the new char table
 +      structure.
 +      (CHAR_TABLE_TRANSLATE): Just call char_table_translate.
 +      (CHARTAB_SIZE_BITS_0, CHARTAB_SIZE_BITS_1, CHARTAB_SIZE_BITS_2,
 +      CHARTAB_SIZE_BITS_3): New macros.
 +      (chartab_size): Extern it.
 +      (struct Lisp_Char_Table): Re-designed.
 +      (struct Lisp_Sub_Char_Table): New structure.
 +      (HASH_KEY, HASH_VALUE): Moved from fns.c.
 +      (CHARACTERBITS): Defined as 22.
 +      (GLYPH_MASK_FACE, GLYPH_MASK_CHAR): Adjusted for the above change.
 +      (SUB_CHAR_TABLE_P): Check PVEC_CHAR_TABLE.
 +      (GC_SUB_CHAR_TABLE_P): New macro.
 +      (Fencode_coding_string, Fdecode_coding_string): EXFUN Updated.
 +      (code_convert_string_norecord): Extern deleted.
 +      (init_character_once, syms_of_character, init_charset,
 +      syms_of_composite, Qeq, Fmakehash, insert_from_gap): Extern them.
 +
 +      * lread.c: Include "character.h".
 +      (read_multibyte): New arg NBYTES.
 +      (read_escape): The meaning of returned *BYTEREP changed.
 +      (to_multibyte): Deleted.
 +      (read1): Adjuted the handling of char table and string.
 +
 +      * print.c: Include "character.h" instead of "charset.h".
 +      (print_string): Convert 8-bit raw bytes to octal form by
 +      string_escape_byte8.
 +      (print_object): Adjusted for the new multibyte form.  Print 8-bit
 +      raw bytes always in octal form.  Handle sub char table correctly.
 +
 +      * process.c: Include "character.h" instead of "charset.h".
 +      (read_process_output): Adjusted for the new code-conversion API.
 +      (send_process): Likewise.
 +
 +      * puresize.h (BASE_PURESIZE): Increased.
 +
 +      * regex.c: Include "character.h" instead of "charset.h".
 +      (BYTE8_TO_CHAR, CHAR_BYTE8_P) [not emacs]: New dummy macros.
 +      (regex_compile): Accept a range whose starting and ending
 +      character have different leading bytes.
 +      (analyse_first): Adjusted for the above change.
 +
 +      * search.c: Include "character.h" instead of "charset.h".
 +      (search_buffer, boyer_moore): Adjusted for the new multibyte form.
 +      (Freplace_match): Adjusted for the change of
 +      multibyte_char_to_unibyte.
 +
 +      * syntax.c: Include "character.h" instead of "charset.h".
 +      (syntax_parent_lookup): Deleted.
 +      (Fmodify_syntax_entry): Accept a cons as CHAR.
 +      (skip_chars): Adjusted for the new multibyte form.
 +      (init_syntax_once): Call char_table_set_range instead of directly
 +      accessing the structure of a char table.
 +
 +      * syntax.h (SET_RAW_SYNTAX_ENTRY): Call CHAR_TABLE_SET.
 +      (SYNTAX_ENTRY_FOLLOW_PARENT): Macro deleted.
 +      (SET_RAW_SYNTAX_ENTRY_RANGE): New macro.
 +      (SYNTAX_ENTRY_INT): Call CHAR_TABLE_REF.
 +
 +      * term.c: Include "buffer.h" and "character.h".
 +      (encode_terminal_code): Adjusted for the new code-conversion API.
 +      (write_glyphs): Likewise.
 +      (produce_glyphs): Call CHAR_WIDTH instead of CHARSET_WIDTH.
 +
 +      * w32term.c (x_new_font): Adjusted for the change of FS_LOAD_FONT.
 +
 +      * xdisp.c: Include "character.h".
 +      (get_next_display_element): Adjusted for the new multibyte form.
 +      (disp_char_vector): Adjusted for the new char table structure.
 +      (decode_mode_spec_coding): Adjusted for the new structure of
 +      coding system.
 +      (decode_mode_spec): Adjusted for the new code-conversion API.
 +
 +      * xfaces.c: Include "character.h" instead of "charset.h".
 +      (load_face_font): Adjusted for the change of choose_face_font and
 +      FS_LOAD_FONT.
 +      (generate_ascii_font): New function.
 +      (set_lface_from_font_name): Adjusted for the change of
 +      FS_LOAD_FONT.
 +      (set_font_frame_param): Adjusted for the change of
 +      choose_face_font.
 +      (free_realized_face): Make it public.
 +      (free_realized_faces_for_fontset): Renamed from
 +      free_realized_multibyte_face.  Free also faces realized for ASCII.
 +      (choose_face_font): Argments changed.  Adjusted for the change of
 +      fontset_font_pattern and FS_LOAD_FONT.
 +
 +      * xfns.c: Include "character.h".
 +      (x_encode_text): Adjusted for the new code-conversion API.
 +
 +      * xselect.c: Don't include "charset.h".
 +      (selection_data_to_lisp_data): Adjusted for the new code
 +      covnersion API.
 +
 +      * xterm.c: Include "character.h".
 +      (x_encode_char): New argument CHARSET.  Caller changed.
 +      (x_get_char_face_and_encoding): Call ENCODE_CHAR instead of
 +      SPLIT_CHAR.
 +      (x_get_glyph_face_and_encoding): Likewise.
 +      (x_produce_glyphs): Don't check Vnonascii_translation_table Call
 +      CHAR_WIDTH instead of CHARSET_WIDTH.
 +      (XTread_socket): Adjusted for the new code-conversion API.
 +      (x_new_font): Adjusted for the change of FS_LOAD_FONT.
 +      (x_load_font): Adjusted for the change of struct font.
 +
 +;; Local Variables:
 +;; coding: iso-2022-7bit
 +;; End:
 +
 +    Copyright (C) 2002 Free Software Foundation, Inc.
 +  Copying and distribution of this file, with or without modification,
 +  are permitted provided the copyright notice and this notice are preserved.
 +
 +;;; arch-tag: 1bff38bd-2030-46ae-9d18-f15e6006b665
diff --cc src/Makefile.in
index 342540df7be1365ebe03c6b8ba9c4a5524cd24a0,18f276c00de0dba26a7f5b7a3563ad895148b64f..beee481d61180bff91046611d02464a94b97cdb5
@@@ -1128,36 -1107,32 +1128,36 @@@ cmds.o: cmds.c syntax.h buffer.h charac
  pre-crt0.o: pre-crt0.c
  ecrt0.o: ecrt0.c $(config_h)
        CRT0_COMPILE ${srcdir}/ecrt0.c
 -dired.o: dired.c commands.h buffer.h $(config_h) charset.h coding.h regex.h \
 -   systime.h blockinput.h
 +dired.o: dired.c commands.h buffer.h $(config_h) character.h charset.h \
-    coding.h regex.h systime.h
++   coding.h regex.h systime.h blockinput.h
  dispnew.o: dispnew.c  systty.h systime.h commands.h process.h frame.h \
     window.h buffer.h dispextern.h termchar.h termopts.h termhooks.h cm.h \
     disptab.h indent.h intervals.h \
 -   xterm.h blockinput.h atimer.h charset.h msdos.h composite.h keyboard.h \
 +   xterm.h blockinput.h atimer.h character.h msdos.h composite.h keyboard.h \
     $(config_h)
 -doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h keymap.h charset.h
 -doprnt.o: doprnt.c charset.h $(config_h)
 +doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h keymap.h character.h
 +doprnt.o: doprnt.c character.h $(config_h)
  dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
     msdos.h dosfns.h dispextern.h charset.h coding.h $(config_h)
 -editfns.o: editfns.c window.h buffer.h systime.h $(INTERVAL_SRC) charset.h \
 +editfns.o: editfns.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \
-    coding.h dispextern.h frame.h $(config_h)
+    coding.h dispextern.h frame.h blockinput.h $(config_h)
  emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
     termhooks.h buffer.h atimer.h systime.h $(INTERVAL_SRC) $(config_h) \
     window.h dispextern.h keyboard.h keymap.h
 -fileio.o: fileio.c window.h buffer.h systime.h $(INTERVAL_SRC) charset.h \
 +fileio.o: fileio.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \
-    coding.h msdos.h dispextern.h $(config_h)
+    coding.h msdos.h dispextern.h blockinput.h $(config_h)
 -filelock.o: filelock.c buffer.h charset.h coding.h systime.h epaths.h $(config_h)
 +filelock.o: filelock.c buffer.h character.h charset.h coding.h systime.h \
 +   epaths.h $(config_h)
  filemode.o: filemode.c  $(config_h)
  frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
 -   blockinput.h atimer.h systime.h buffer.h charset.h fontset.h \
 +   blockinput.h atimer.h systime.h buffer.h character.h fontset.h \
     msdos.h dosfns.h dispextern.h w32term.h macterm.h $(config_h)
  fringe.o: fringe.c dispextern.h frame.h window.h buffer.h $(config_h)
 -fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h charset.h frame.h \
 -   keyboard.h $(config_h)
 +font.o: font.c dispextern.h frame.h ccl.h character.h charset.h font.h \
 +   $(config_h)
 +ftfont.o: dispextern.h frame.h character.h charset.h font.h $(config_h)
 +fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h character.h \
 +   charset.h frame.h keyboard.h $(FONTSRC) $(config_h)
  getloadavg.o: getloadavg.c $(config_h)
  image.o: image.c frame.h window.h dispextern.h blockinput.h atimer.h \
     systime.h xterm.h w32term.h w32gui.h macterm.h macgui.h $(config_h)
diff --cc src/alloc.c
Simple merge
diff --cc src/buffer.c
Simple merge
diff --cc src/buffer.h
Simple merge
diff --cc src/bytecode.c
Simple merge
diff --cc src/casetab.c
Simple merge
diff --cc src/category.c
Simple merge
diff --cc src/category.h
Simple merge
diff --cc src/character.h
index d02fdfb8b79ae535f42bf2c75947d3838f970bbd,0000000000000000000000000000000000000000..72823752d96853f7435480b617edc2d9247f0196
mode 100644,000000..100644
--- /dev/null
@@@ -1,664 -1,0 +1,662 @@@
- #define CHECK_CHARACTER(x)                                            \
-   do {                                                                        \
-     if (! CHARACTERP(x)) x = wrong_type_argument (Qcharacterp, (x));  \
-   } while (0)
 +/* Header for multibyte character handler.
 +   Copyright (C) 1995, 1997, 1998 Electrotechnical Laboratory, JAPAN.
 +     Licensed to the Free Software Foundation.
 +   Copyright (C) 2003, 2006
 +     National Institute of Advanced Industrial Science and Technology (AIST)
 +     Registration Number H13PRO009
 +
 +This file is part of GNU Emacs.
 +
 +GNU Emacs is free software; you can redistribute it and/or modify
 +it under the terms of the GNU General Public License as published by
 +the Free Software Foundation; either version 2, or (at your option)
 +any later version.
 +
 +GNU Emacs is distributed in the hope that it will be useful,
 +but WITHOUT ANY WARRANTY; without even the implied warranty of
 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +GNU General Public License for more details.
 +
 +You should have received a copy of the GNU General Public License
 +along with GNU Emacs; see the file COPYING.  If not, write to
 +the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 +Boston, MA 02111-1307, USA.  */
 +
 +#ifndef EMACS_CHARACTER_H
 +#define EMACS_CHARACTER_H
 +
 +/* character code     1st byte   byte sequence
 +   --------------     --------   -------------
 +        0-7F          00..7F     0xxxxxxx
 +       80-7FF         C2..DF     110xxxxx 10xxxxxx
 +      800-FFFF                E0..EF     1110xxxx 10xxxxxx 10xxxxxx
 +    10000-1FFFFF      F0..F7     11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
 +   200000-3FFF7F      F8         11111000 1000xxxx 10xxxxxx 10xxxxxx 10xxxxxx
 +   3FFF80-3FFFFF      C0..C1     1100000x 10xxxxxx (for eight-bit-char)
 +   400000-...         invalid
 +
 +   invalid 1st byte   80..BF     10xxxxxx
 +                      F9..FF     11111xxx (xxx != 000)
 +*/
 +
 +/* Maximum character code ((1 << CHARACTERBITS) - 1).  */
 +#define MAX_CHAR  0x3FFFFF
 +
 +/* Maximum Unicode character code.  */
 +#define MAX_UNICODE_CHAR 0x10FFFF
 +
 +/* Maximum N-byte character codes.  */
 +#define MAX_1_BYTE_CHAR 0x7F
 +#define MAX_2_BYTE_CHAR 0x7FF
 +#define MAX_3_BYTE_CHAR 0xFFFF
 +#define MAX_4_BYTE_CHAR 0x1FFFFF
 +#define MAX_5_BYTE_CHAR 0x3FFF7F
 +
 +/* Nonzero iff C is a character that corresponds to a raw 8-bit
 +   byte.  */
 +#define CHAR_BYTE8_P(c) ((c) > MAX_5_BYTE_CHAR)
 +
 +/* Return the character code for raw 8-bit byte BYTE.  */
 +#define BYTE8_TO_CHAR(byte) ((byte) + 0x3FFF00)
 +
 +/* Return the raw 8-bit byte for character C.  */
 +#define CHAR_TO_BYTE8(c)      \
 +  (CHAR_BYTE8_P (c)           \
 +   ? (c) - 0x3FFF00           \
 +   : multibyte_char_to_unibyte (c, Qnil))
 +
 +/* Nonzero iff BYTE is the 1st byte of a multibyte form of a character
 +   that corresponds to a raw 8-bit byte.  */
 +#define CHAR_BYTE8_HEAD_P(byte) ((byte) == 0xC0 || (byte) == 0xC1)
 +
 +/* Mapping table from unibyte chars to multibyte chars.  */
 +extern int unibyte_to_multibyte_table[256];
 +
 +/* Convert the unibyte character C to the corresponding multibyte
 +   character.  If C can't be converted, return C.  */
 +#define unibyte_char_to_multibyte(c)  \
 +  ((c) < 256 ? unibyte_to_multibyte_table[(c)] : (c))
 +
 +/* Nth element is 1 iff unibyte char N can be mapped to a multibyte
 +   char.  */
 +extern char unibyte_has_multibyte_table[256];
 +
 +#define UNIBYTE_CHAR_HAS_MULTIBYTE_P(c) (unibyte_has_multibyte_table[(c)])
 +
 +/* If C is not ASCII, make it unibyte. */
 +#define MAKE_CHAR_UNIBYTE(c)  \
 +  do {                                \
 +    if (! ASCII_CHAR_P (c))   \
 +      c = CHAR_TO_BYTE8 (c);  \
 +  } while (0)
 +
 +
 +/* If C is not ASCII, make it multibyte.  It assumes C < 256.  */
 +#define MAKE_CHAR_MULTIBYTE(c) ((c) = unibyte_to_multibyte_table[(c)])
 +
 +/* This is the maximum byte length of multibyte form.  */
 +#define MAX_MULTIBYTE_LENGTH 5
 +
 +/* Return a Lisp character whose character code is C.  It assumes C is
 +   a valid character code.  */
 +#define make_char(c) make_number (c)
 +
 +/* Nonzero iff C is an ASCII byte.  */
 +#define ASCII_BYTE_P(c) ((unsigned) (c) < 0x80)
 +
 +/* Nonzero iff X is a character.  */
 +#define CHARACTERP(x) (NATNUMP (x) && XFASTINT (x) <= MAX_CHAR)
 +
 +/* Nonzero iff C is valid as a character code.  GENERICP is not used
 +   now.  */
 +#define CHAR_VALID_P(c, genericp) ((unsigned) (c) <= MAX_CHAR)
 +
 +/* Check if Lisp object X is a character or not.  */
++#define CHECK_CHARACTER(x) \
++  CHECK_TYPE (CHARACTERP (x), Qcharacterp, x)
 +
 +#define CHECK_CHARACTER_CAR(x) \
 +  do {                                        \
 +    Lisp_Object tmp = XCAR (x);               \
 +    CHECK_CHARACTER (tmp);            \
 +    XSETCAR ((x), tmp);                       \
 +  } while (0)
 +
 +#define CHECK_CHARACTER_CDR(x) \
 +  do {                                        \
 +    Lisp_Object tmp = XCDR (x);               \
 +    CHECK_CHARACTER (tmp);            \
 +    XSETCDR ((x), tmp);                       \
 +  } while (0)
 +
 +/* Nonzero iff C is an ASCII character.  */
 +#define ASCII_CHAR_P(c) ((unsigned) (c) < 0x80)
 +
 +/* Nonzero iff C is a character of code less than 0x100.  */
 +#define SINGLE_BYTE_CHAR_P(c) ((unsigned) (c) < 0x100)
 +
 +/* Nonzero if character C has a printable glyph.  */
 +#define CHAR_PRINTABLE_P(c)   \
 +  (((c) >= 32 && ((c) < 127)  \
 +    || ! NILP (CHAR_TABLE_REF (Vprintable_chars, (c)))))
 +
 +/* Return byte length of multibyte form for character C.  */
 +#define CHAR_BYTES(c)                 \
 +  ( (c) <= MAX_1_BYTE_CHAR ? 1                \
 +    : (c) <= MAX_2_BYTE_CHAR ? 2      \
 +    : (c) <= MAX_3_BYTE_CHAR ? 3      \
 +    : (c) <= MAX_4_BYTE_CHAR ? 4      \
 +    : (c) <= MAX_5_BYTE_CHAR ? 5      \
 +    : 2)
 +
 +
 +/* Return the leading code of multibyte form of C.  */
 +#define CHAR_LEADING_CODE(c)                          \
 +  ((c) <= MAX_1_BYTE_CHAR ? c                         \
 +   : (c) <= MAX_2_BYTE_CHAR ? (0xC0 | ((c) >> 6))     \
 +   : (c) <= MAX_3_BYTE_CHAR ? (0xE0 | ((c) >> 12))    \
 +   : (c) <= MAX_4_BYTE_CHAR ? (0xF0 | ((c) >> 18))    \
 +   : (c) <= MAX_5_BYTE_CHAR ? 0xF8                    \
 +   : (0xC0 | (((c) >> 6) & 0x01)))
 +
 +
 +/* Store multibyte form of the character C in P.  The caller should
 +   allocate at least MAX_MULTIBYTE_LENGTH bytes area at P in advance.
 +   Returns the length of the multibyte form.  */
 +
 +#define CHAR_STRING(c, p)                     \
 +  ((unsigned) (c) <= MAX_1_BYTE_CHAR          \
 +   ? ((p)[0] = (c),                           \
 +      1)                                      \
 +   : (unsigned) (c) <= MAX_2_BYTE_CHAR                \
 +   ? ((p)[0] = (0xC0 | ((c) >> 6)),           \
 +      (p)[1] = (0x80 | ((c) & 0x3F)),         \
 +      2)                                      \
 +   : (unsigned) (c) <= MAX_3_BYTE_CHAR                \
 +   ? ((p)[0] = (0xE0 | ((c) >> 12)),          \
 +      (p)[1] = (0x80 | (((c) >> 6) & 0x3F)),  \
 +      (p)[2] = (0x80 | ((c) & 0x3F)),         \
 +      3)                                      \
 +   : char_string (c, p))
 +
 +/* Store multibyte form of byte B in P.  The caller should allocate at
 +   least MAX_MULTIBYTE_LENGTH bytes area at P in advance.  Returns the
 +   length of the multibyte form.  */
 +
 +#define BYTE8_STRING(b, p)                    \
 +  ((p)[0] = (0xC0 | (((b) >> 6) & 0x01)),     \
 +   (p)[1] = (0x80 | ((b) & 0x3F)),            \
 +   2)
 +
 +
 +/* Store multibyte form of the character C in P.  The caller should
 +   allocate at least MAX_MULTIBYTE_LENGTH bytes area at P in advance.
 +   And, advance P to the end of the multibyte form.  */
 +
 +#define CHAR_STRING_ADVANCE(c, p)             \
 +  do {                                                \
 +    if ((c) <= MAX_1_BYTE_CHAR)                       \
 +      *(p)++ = (c);                           \
 +    else if ((c) <= MAX_2_BYTE_CHAR)          \
 +      *(p)++ = (0xC0 | ((c) >> 6)),           \
 +      *(p)++ = (0x80 | ((c) & 0x3F));         \
 +    else if ((c) <= MAX_3_BYTE_CHAR)          \
 +      *(p)++ = (0xE0 | ((c) >> 12)),          \
 +      *(p)++ = (0x80 | (((c) >> 6) & 0x3F)),  \
 +      *(p)++ = (0x80 | ((c) & 0x3F));         \
 +    else                                      \
 +      (p) += char_string ((c), (p));          \
 +  } while (0)
 +
 +
 +/* Nonzero iff BYTE starts a non-ASCII character in a multibyte
 +   form.  */
 +#define LEADING_CODE_P(byte) (((byte) & 0xC0) == 0xC0)
 +
 +/* Nonzero iff BYTE is a trailing code of a non-ASCII character in a
 +   multibyte form.  */
 +#define TRAILING_CODE_P(byte) (((byte) & 0xC0) == 0x80)
 +
 +/* Nonzero iff BYTE starts a character in a multibyte form.
 +   This is equivalent to:
 +      (ASCII_BYTE_P (byte) || LEADING_CODE_P (byte))  */
 +#define CHAR_HEAD_P(byte) (((byte) & 0xC0) != 0x80)
 +
 +/* Just kept for backward compatibility.  This macro will be removed
 +   in the future.  */
 +#define BASE_LEADING_CODE_P LEADING_CODE_P
 +
 +/* How many bytes a character that starts with BYTE occupies in a
 +   multibyte form.  */
 +#define BYTES_BY_CHAR_HEAD(byte)      \
 +  (!((byte) & 0x80) ? 1                       \
 +   : !((byte) & 0x20) ? 2             \
 +   : !((byte) & 0x10) ? 3             \
 +   : !((byte) & 0x08) ? 4             \
 +   : 5)
 +
 +
 +/* Return the length of the multi-byte form at string STR of length
 +   LEN while assuming that STR points a valid multi-byte form.  As
 +   this macro isn't necessary anymore, all callers will be changed to
 +   use BYTES_BY_CHAR_HEAD directly in the future.  */
 +
 +#define MULTIBYTE_FORM_LENGTH(str, len)               \
 +  BYTES_BY_CHAR_HEAD (*(str))
 +
 +/* Parse multibyte string STR of length LENGTH and set BYTES to the
 +   byte length of a character at STR while assuming that STR points a
 +   valid multibyte form.  As this macro isn't necessary anymore, all
 +   callers will be changed to use BYTES_BY_CHAR_HEAD directly in the
 +   future.  */
 +
 +#define PARSE_MULTIBYTE_SEQ(str, length, bytes)       \
 +  (bytes) = BYTES_BY_CHAR_HEAD (*(str))
 +
 +/* The byte length of multibyte form at unibyte string P ending at
 +   PEND.  If STR doesn't point a valid multibyte form, return 0.  */
 +
 +#define MULTIBYTE_LENGTH(p, pend)                             \
 +  (p >= pend ? 0                                              \
 +   : !((p)[0] & 0x80) ? 1                                     \
 +   : ((p + 1 >= pend) || (((p)[1] & 0xC0) != 0x80)) ? 0               \
 +   : ((p)[0] & 0xE0) == 0xC0 ? 2                              \
 +   : ((p + 2 >= pend) || (((p)[2] & 0xC0) != 0x80)) ? 0               \
 +   : ((p)[0] & 0xF0) == 0xE0 ? 3                              \
 +   : ((p + 3 >= pend) || (((p)[3] & 0xC0) != 0x80)) ? 0               \
 +   : ((p)[0] & 0xF8) == 0xF0 ? 4                              \
 +   : ((p + 4 >= pend) || (((p)[4] & 0xC0) != 0x80)) ? 0               \
 +   : (p)[0] == 0xF8 && ((p)[1] & 0xF0) == 0x80 ? 5            \
 +   : 0)
 +
 +
 +/* Like MULTIBYTE_LENGTH but don't check the ending address.  */
 +
 +#define MULTIBYTE_LENGTH_NO_CHECK(p)                  \
 +  (!((p)[0] & 0x80) ? 1                                       \
 +   : ((p)[1] & 0xC0) != 0x80 ? 0                      \
 +   : ((p)[0] & 0xE0) == 0xC0 ? 2                      \
 +   : ((p)[2] & 0xC0) != 0x80 ? 0                      \
 +   : ((p)[0] & 0xF0) == 0xE0 ? 3                      \
 +   : ((p)[3] & 0xC0) != 0x80 ? 0                      \
 +   : ((p)[0] & 0xF8) == 0xF0 ? 4                      \
 +   : ((p)[4] & 0xC0) != 0x80 ? 0                      \
 +   : (p)[0] == 0xF8 && ((p)[1] & 0xF0) == 0x80 ? 5    \
 +   : 0)
 +
 +/* If P is before LIMIT, advance P to the next character boundary.  It
 +   assumes that P is already at a character boundary of the sane
 +   mulitbyte form whose end address is LIMIT.  */
 +
 +#define NEXT_CHAR_BOUNDARY(p, limit)  \
 +  do {                                        \
 +    if ((p) < (limit))                        \
 +      (p) += BYTES_BY_CHAR_HEAD (*(p));       \
 +  } while (0)
 +
 +
 +/* If P is after LIMIT, advance P to the previous character boundary.
 +   It assumes that P is already at a character boundary of the sane
 +   mulitbyte form whose beginning address is LIMIT.  */
 +
 +#define PREV_CHAR_BOUNDARY(p, limit)                                  \
 +  do {                                                                        \
 +    if ((p) > (limit))                                                        \
 +      {                                                                       \
 +      const unsigned char *p0 = (p);                                  \
 +      do {                                                            \
 +        p0--;                                                         \
 +      } while (p0 >= limit && ! CHAR_HEAD_P (*p0));                   \
 +      (p) = (BYTES_BY_CHAR_HEAD (*p0) == (p) - p0) ? p0 : (p) - 1;    \
 +      }                                                                       \
 +  } while (0)
 +
 +/* Return the character code of character whose multibyte form is at
 +   P.  The argument LEN is ignored.  It will be removed in the
 +   future.  */
 +
 +#define STRING_CHAR(p, len)                                   \
 +  (!((p)[0] & 0x80)                                           \
 +   ? (p)[0]                                                   \
 +   : ! ((p)[0] & 0x20)                                                \
 +   ? (((((p)[0] & 0x1F) << 6)                                 \
 +       | ((p)[1] & 0x3F))                                     \
 +      + (((unsigned char) (p)[0]) < 0xC2 ? 0x3FFF80 : 0))     \
 +   : ! ((p)[0] & 0x10)                                                \
 +   ? ((((p)[0] & 0x0F) << 12)                                 \
 +      | (((p)[1] & 0x3F) << 6)                                        \
 +      | ((p)[2] & 0x3F))                                      \
 +   : string_char ((p), NULL, NULL))
 +
 +
 +/* Like STRING_CHAR but set ACTUAL_LEN to the length of multibyte
 +   form.  The argument LEN is ignored.  It will be removed in the
 +   future.  */
 +
 +#define STRING_CHAR_AND_LENGTH(p, len, actual_len)            \
 +  (!((p)[0] & 0x80)                                           \
 +   ? ((actual_len) = 1, (p)[0])                                       \
 +   : ! ((p)[0] & 0x20)                                                \
 +   ? ((actual_len) = 2,                                               \
 +      (((((p)[0] & 0x1F) << 6)                                        \
 +      | ((p)[1] & 0x3F))                                      \
 +       + (((unsigned char) (p)[0]) < 0xC2 ? 0x3FFF80 : 0)))   \
 +   : ! ((p)[0] & 0x10)                                                \
 +   ? ((actual_len) = 3,                                               \
 +      ((((p)[0] & 0x0F) << 12)                                        \
 +       | (((p)[1] & 0x3F) << 6)                                       \
 +       | ((p)[2] & 0x3F)))                                    \
 +   : string_char ((p), NULL, &actual_len))
 +
 +
 +/* Like STRING_CHAR but advance P to the end of multibyte form.  */
 +
 +#define STRING_CHAR_ADVANCE(p)                                        \
 +  (!((p)[0] & 0x80)                                           \
 +   ? *(p)++                                                   \
 +   : ! ((p)[0] & 0x20)                                                \
 +   ? ((p) += 2,                                                       \
 +      ((((p)[-2] & 0x1F) << 6)                                        \
 +       | ((p)[-1] & 0x3F)                                     \
 +       | ((unsigned char) ((p)[-2]) < 0xC2 ? 0x3FFF80 : 0)))  \
 +   : ! ((p)[0] & 0x10)                                                \
 +   ? ((p) += 3,                                                       \
 +      ((((p)[-3] & 0x0F) << 12)                                       \
 +       | (((p)[-2] & 0x3F) << 6)                              \
 +       | ((p)[-1] & 0x3F)))                                   \
 +   : string_char ((p), &(p), NULL))
 +
 +
 +/* Fetch the "next" character from Lisp string STRING at byte position
 +   BYTEIDX, character position CHARIDX.  Store it into OUTPUT.
 +
 +   All the args must be side-effect-free.
 +   BYTEIDX and CHARIDX must be lvalues;
 +   we increment them past the character fetched.  */
 +
 +#define FETCH_STRING_CHAR_ADVANCE(OUTPUT, STRING, CHARIDX, BYTEIDX)   \
 +  if (1)                                                              \
 +    {                                                                 \
 +      CHARIDX++;                                                      \
 +      if (STRING_MULTIBYTE (STRING))                                  \
 +      {                                                               \
 +        unsigned char *ptr = &XSTRING (STRING)->data[BYTEIDX];        \
 +        int len;                                                      \
 +                                                                      \
 +        OUTPUT = STRING_CHAR_AND_LENGTH (ptr, 0, len);                \
 +        BYTEIDX += len;                                               \
 +      }                                                               \
 +      else                                                            \
 +      OUTPUT = XSTRING (STRING)->data[BYTEIDX++];                     \
 +    }                                                                 \
 +  else
 +
 +/* Like FETCH_STRING_CHAR_ADVANCE but return a multibyte character eve
 +   if STRING is unibyte.  */
 +
 +#define FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE(OUTPUT, STRING, CHARIDX, BYTEIDX) \
 +  if (1)                                                                    \
 +    {                                                                       \
 +      CHARIDX++;                                                            \
 +      if (STRING_MULTIBYTE (STRING))                                        \
 +      {                                                                     \
 +        unsigned char *ptr = &XSTRING (STRING)->data[BYTEIDX];              \
 +        int len;                                                            \
 +                                                                            \
 +        OUTPUT = STRING_CHAR_AND_LENGTH (ptr, 0, len);                      \
 +        BYTEIDX += len;                                                     \
 +      }                                                                     \
 +      else                                                                  \
 +      {                                                                     \
 +        OUTPUT = XSTRING (STRING)->data[BYTEIDX++];                         \
 +        MAKE_CHAR_MULTIBYTE (OUTPUT);                                       \
 +      }                                                                     \
 +    }                                                                       \
 +  else
 +
 +
 +/* Like FETCH_STRING_CHAR_ADVANCE but assumes STRING is multibyte.  */
 +
 +#define FETCH_STRING_CHAR_ADVANCE_NO_CHECK(OUTPUT, STRING, CHARIDX, BYTEIDX) \
 +  if (1)                                                                   \
 +    {                                                                      \
 +      unsigned char *ptr = &XSTRING (STRING)->data[BYTEIDX];               \
 +      int len;                                                                     \
 +                                                                           \
 +      OUTPUT = STRING_CHAR_AND_LENGTH (ptr, 0, len);                       \
 +      BYTEIDX += len;                                                      \
 +      CHARIDX++;                                                           \
 +    }                                                                      \
 +  else
 +
 +
 +/* Like FETCH_STRING_CHAR_ADVANCE but fetch character from the current
 +   buffer.  */
 +
 +#define FETCH_CHAR_ADVANCE(OUTPUT, CHARIDX, BYTEIDX)          \
 +  if (1)                                                      \
 +    {                                                         \
 +      CHARIDX++;                                              \
 +      if (!NILP (current_buffer->enable_multibyte_characters))        \
 +      {                                                       \
 +        unsigned char *ptr = BYTE_POS_ADDR (BYTEIDX);         \
 +        int len;                                              \
 +                                                              \
 +        OUTPUT= STRING_CHAR_AND_LENGTH (ptr, 0, len);         \
 +        BYTEIDX += len;                                       \
 +      }                                                       \
 +      else                                                    \
 +      {                                                       \
 +        OUTPUT = *(BYTE_POS_ADDR (BYTEIDX));                  \
 +        BYTEIDX++;                                            \
 +      }                                                       \
 +    }                                                         \
 +  else
 +
 +
 +/* Like FETCH_CHAR_ADVANCE but assumes the current buffer is multibyte.  */
 +
 +#define FETCH_CHAR_ADVANCE_NO_CHECK(OUTPUT, CHARIDX, BYTEIDX) \
 +  if (1)                                                      \
 +    {                                                         \
 +      unsigned char *ptr = BYTE_POS_ADDR (BYTEIDX);           \
 +      int len;                                                        \
 +                                                              \
 +      OUTPUT= STRING_CHAR_AND_LENGTH (ptr, 0, len);           \
 +      BYTEIDX += len;                                         \
 +      CHARIDX++;                                              \
 +    }                                                         \
 +  else
 +
 +
 +/* Increase the buffer byte position POS_BYTE of the current buffer to
 +   the next character boundary.  No range checking of POS.  */
 +
 +#define INC_POS(pos_byte)                             \
 +  do {                                                        \
 +    unsigned char *p = BYTE_POS_ADDR (pos_byte);      \
 +    pos_byte += BYTES_BY_CHAR_HEAD (*p);              \
 +  } while (0)
 +
 +
 +/* Decrease the buffer byte position POS_BYTE of the current buffer to
 +   the previous character boundary.  No range checking of POS.  */
 +
 +#define DEC_POS(pos_byte)                     \
 +  do {                                                \
 +    unsigned char *p;                         \
 +                                              \
 +    pos_byte--;                                       \
 +    if (pos_byte < GPT_BYTE)                  \
 +      p = BEG_ADDR + pos_byte - 1;            \
 +    else                                      \
 +      p = BEG_ADDR + GAP_SIZE + pos_byte - 1; \
 +    while (!CHAR_HEAD_P (*p))                 \
 +      {                                               \
 +      p--;                                    \
 +      pos_byte--;                             \
 +      }                                               \
 +  } while (0)
 +
 +/* Increment both CHARPOS and BYTEPOS, each in the appropriate way.  */
 +
 +#define INC_BOTH(charpos, bytepos)                            \
 +  do                                                          \
 +    {                                                         \
 +      (charpos)++;                                            \
 +      if (NILP (current_buffer->enable_multibyte_characters)) \
 +      (bytepos)++;                                            \
 +      else                                                    \
 +      INC_POS ((bytepos));                                    \
 +    }                                                         \
 +  while (0)
 +
 +
 +/* Decrement both CHARPOS and BYTEPOS, each in the appropriate way.  */
 +
 +#define DEC_BOTH(charpos, bytepos)                            \
 +  do                                                          \
 +    {                                                         \
 +      (charpos)--;                                            \
 +      if (NILP (current_buffer->enable_multibyte_characters)) \
 +      (bytepos)--;                                            \
 +      else                                                    \
 +      DEC_POS ((bytepos));                                    \
 +    }                                                         \
 +  while (0)
 +
 +
 +/* Increase the buffer byte position POS_BYTE of the current buffer to
 +   the next character boundary.  This macro relies on the fact that
 +   *GPT_ADDR and *Z_ADDR are always accessible and the values are
 +   '\0'.  No range checking of POS_BYTE.  */
 +
 +#define BUF_INC_POS(buf, pos_byte)                            \
 +  do {                                                                \
 +    unsigned char *p = BUF_BYTE_ADDRESS (buf, pos_byte);      \
 +    pos_byte += BYTES_BY_CHAR_HEAD (*p);                      \
 +  } while (0)
 +
 +
 +/* Decrease the buffer byte position POS_BYTE of the current buffer to
 +   the previous character boundary.  No range checking of POS_BYTE.  */
 +
 +#define BUF_DEC_POS(buf, pos_byte)                                    \
 +  do {                                                                        \
 +    unsigned char *p;                                                 \
 +    pos_byte--;                                                               \
 +    if (pos_byte < BUF_GPT_BYTE (buf))                                        \
 +      p = BUF_BEG_ADDR (buf) + pos_byte - 1;                          \
 +    else                                                              \
 +      p = BUF_BEG_ADDR (buf) + BUF_GAP_SIZE (buf) + pos_byte - 1;     \
 +    while (!CHAR_HEAD_P (*p))                                         \
 +      {                                                                       \
 +      p--;                                                            \
 +      pos_byte--;                                                     \
 +      }                                                                       \
 +  } while (0)
 +
 +
 +/* If C is a character to be unified with a Unicode character, return
 +   the unified Unicode character.  */
 +
 +#define MAYBE_UNIFY_CHAR(c)                                   \
 +  if (c > MAX_UNICODE_CHAR                                    \
 +      && CHAR_TABLE_P (Vchar_unify_table))                    \
 +    {                                                         \
 +      Lisp_Object val;                                                \
 +      int unified;                                            \
 +                                                              \
 +      val = CHAR_TABLE_REF (Vchar_unify_table, c);            \
 +      if (! NILP (val))                                               \
 +      {                                                       \
 +        if (SYMBOLP (val))                                    \
 +          {                                                   \
 +            Funify_charset (val, Qnil, Qnil);                 \
 +            val = CHAR_TABLE_REF (Vchar_unify_table, c);      \
 +          }                                                   \
 +        if ((unified = XINT (val)) >= 0)                      \
 +          c = unified;                                        \
 +      }                                                       \
 +    }                                                         \
 +  else
 +
 +
 +/* Return the width of ASCII character C.  The width is measured by
 +   how many columns occupied on the screen when displayed in the
 +   current buffer.  */
 +
 +#define ASCII_CHAR_WIDTH(c)                                           \
 +  (c < 0x20                                                           \
 +   ? (c == '\t'                                                               \
 +      ? XFASTINT (current_buffer->tab_width)                          \
 +      : (c == '\n' ? 0 : (NILP (current_buffer->ctl_arrow) ? 4 : 2))) \
 +   : (c < 0x7f                                                                \
 +      ? 1                                                             \
 +      : ((NILP (current_buffer->ctl_arrow) ? 4 : 2))))
 +
 +/* Return the width of character C.  The width is measured by how many
 +   columns occupied on the screen when displayed in the current
 +   buffer.  */
 +
 +#define CHAR_WIDTH(c)         \
 +  (ASCII_CHAR_P (c)           \
 +   ? ASCII_CHAR_WIDTH (c)     \
 +   : XINT (CHAR_TABLE_REF (Vchar_width_table, c)))
 +
 +extern int char_resolve_modifier_mask P_ ((int));
 +extern int char_string P_ ((int, unsigned char *));
 +extern int string_char P_ ((const unsigned char *,
 +                          const unsigned char **, int *));
 +
 +extern int translate_char P_ ((Lisp_Object, int c));
 +extern int char_printable_p P_ ((int c));
 +extern void parse_str_as_multibyte P_ ((const unsigned char *, int, int *,
 +                                      int *));
 +extern int parse_str_to_multibyte P_ ((unsigned char *, int));
 +extern int str_as_multibyte P_ ((unsigned char *, int, int, int *));
 +extern int str_to_multibyte P_ ((unsigned char *, int, int));
 +extern int str_as_unibyte P_ ((unsigned char *, int));
 +extern int strwidth P_ ((unsigned char *, int));
 +extern int c_string_width P_ ((const unsigned char *, int, int, int *, int *));
 +extern int lisp_string_width P_ ((Lisp_Object, int, int *, int *));
 +
 +extern Lisp_Object Vprintable_chars;
 +
 +extern Lisp_Object Qcharacterp, Qauto_fill_chars;
 +extern Lisp_Object Vtranslation_table_vector;
 +extern Lisp_Object Vchar_width_table;
 +extern Lisp_Object Vchar_direction_table;
 +extern Lisp_Object Vchar_unify_table;
 +
 +extern Lisp_Object string_escape_byte8 P_ ((Lisp_Object));
 +
 +/* Return a translation table of id number ID.  */
 +#define GET_TRANSLATION_TABLE(id) \
 +  (XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)]))
 +
 +/* A char-table for characters which may invoke auto-filling.  */
 +extern Lisp_Object Vauto_fill_chars;
 +
 +extern Lisp_Object Vchar_script_table;
 +extern Lisp_Object Vscript_representative_chars;
 +
 +/* Copy LEN bytes from FROM to TO.  This macro should be used only
 +   when a caller knows that LEN is short and the obvious copy loop is
 +   faster than calling bcopy which has some overhead.  Copying a
 +   multibyte sequence of a character is the typical case.  */
 +
 +#define BCOPY_SHORT(from, to, len)            \
 +  do {                                                \
 +    int i = len;                              \
 +    unsigned char *from_p = from, *to_p = to; \
 +    while (i--) *to_p++ = *from_p++;          \
 +  } while (0)
 +
 +#define DEFSYM(sym, name)     \
 +  do { (sym) = intern ((name)); staticpro (&(sym)); } while (0)
 +
 +#endif /* EMACS_CHARACTER_H */
 +
 +/* arch-tag: 4ef86004-2eff-4073-8cea-cfcbcf7188ac
 +   (do not change this comment) */
diff --cc src/cmds.c
Simple merge
diff --cc src/coding.c
index 023dc95c35e81b94ef34d2ca082797812758d597,a3fd8f91284845d2c85eb50a7f465bb265c8a500..cb6df79fca02b47300a6148ae20a40e20418e974
@@@ -7170,282 -6595,69 +7170,281 @@@ function `define-coding-system'.  */
      }
    if (!NILP (Fcoding_system_p (coding_system)))
      return coding_system;
-   while (1)
-     Fsignal (Qcoding_system_error, Fcons (coding_system, Qnil));
+   xsignal1 (Qcoding_system_error, coding_system);
  }
 +
  \f
 +/* Detect how the bytes at SRC of length SRC_BYTES are encoded.  If
 +   HIGHEST is nonzero, return the coding system of the highest
 +   priority among the detected coding systems.  Otherwize return a
 +   list of detected coding systems sorted by their priorities.  If
 +   MULTIBYTEP is nonzero, it is assumed that the bytes are in correct
 +   multibyte form but contains only ASCII and eight-bit chars.
 +   Otherwise, the bytes are raw bytes.
 +
 +   CODING-SYSTEM controls the detection as below:
 +
 +   If it is nil, detect both text-format and eol-format.  If the
 +   text-format part of CODING-SYSTEM is already specified
 +   (e.g. `iso-latin-1'), detect only eol-format.  If the eol-format
 +   part of CODING-SYSTEM is already specified (e.g. `undecided-unix'),
 +   detect only text-format.  */
 +
  Lisp_Object
 -detect_coding_system (src, src_bytes, highest, multibytep)
 +detect_coding_system (src, src_chars, src_bytes, highest, multibytep,
 +                    coding_system)
       const unsigned char *src;
 -     int src_bytes, highest;
 +     int src_chars, src_bytes, highest;
       int multibytep;
 +     Lisp_Object coding_system;
  {
 -  int coding_mask, eol_type;
 -  Lisp_Object val, tmp;
 -  int dummy;
 +  const unsigned char *src_end = src + src_bytes;
 +  Lisp_Object attrs, eol_type;
 +  Lisp_Object val;
 +  struct coding_system coding;
 +  int id;
 +  struct coding_detection_info detect_info;
 +  enum coding_category base_category;
 +
 +  if (NILP (coding_system))
 +    coding_system = Qundecided;
 +  setup_coding_system (coding_system, &coding);
 +  attrs = CODING_ID_ATTRS (coding.id);
 +  eol_type = CODING_ID_EOL_TYPE (coding.id);
 +  coding_system = CODING_ATTR_BASE_NAME (attrs);
 +
 +  coding.source = src;
 +  coding.src_chars = src_chars;
 +  coding.src_bytes = src_bytes;
 +  coding.src_multibyte = multibytep;
 +  coding.consumed = 0;
 +  coding.mode |= CODING_MODE_LAST_BLOCK;
  
 -  coding_mask = detect_coding_mask (src, src_bytes, NULL, &dummy, multibytep);
 -  eol_type  = detect_eol_type (src, src_bytes, &dummy);
 -  if (eol_type == CODING_EOL_INCONSISTENT)
 -    eol_type = CODING_EOL_UNDECIDED;
 +  detect_info.checked = detect_info.found = detect_info.rejected = 0;
  
 -  if (!coding_mask)
 +  /* At first, detect text-format if necessary.  */
 +  base_category = XINT (CODING_ATTR_CATEGORY (attrs));
 +  if (base_category == coding_category_undecided)
      {
 -      val = Qundecided;
 -      if (eol_type != CODING_EOL_UNDECIDED)
 +      enum coding_category category;
 +      struct coding_system *this;
 +      int c, i;
 +
 +      /* Skip all ASCII bytes except for a few ISO2022 controls.  */
 +      for (i = 0; src < src_end; i++, src++)
 +      {
 +        c = *src;
 +        if (c & 0x80)
 +          break;
 +        if (c < 0x20
 +            && (c == ISO_CODE_ESC || c == ISO_CODE_SI || c == ISO_CODE_SO)
 +            && inhibit_iso_escape_detection)
 +          {
 +            coding.head_ascii = src - coding.source;
 +            if (detect_coding_iso_2022 (&coding, &detect_info))
 +              {
 +                /* We have scanned the whole data.  */
 +                if (! (detect_info.rejected & CATEGORY_MASK_ISO_7_ELSE))
 +                  /* We didn't find an 8-bit code.  */
 +                  src = src_end;
 +                break;
 +              }
 +          }
 +      }
 +      coding.head_ascii = src - coding.source;
 +
 +      if (src < src_end
 +        || detect_info.found)
 +      {
 +        if (src == src_end)
 +          /* As all bytes are 7-bit, we can ignore non-ISO-2022 codings.  */
 +          for (i = 0; i < coding_category_raw_text; i++)
 +            {
 +              category = coding_priorities[i];
 +              if (detect_info.found & (1 << category))
 +                break;
 +            }
 +        else
 +          for (i = 0; i < coding_category_raw_text; i++)
 +            {
 +              category = coding_priorities[i];
 +              this = coding_categories + category;
 +
 +              if (this->id < 0)
 +                {
 +                  /* No coding system of this category is defined.  */
 +                  detect_info.rejected |= (1 << category);
 +                }
 +              else if (category >= coding_category_raw_text)
 +                continue;
 +              else if (detect_info.checked & (1 << category))
 +                {
 +                  if (highest
 +                      && (detect_info.found & (1 << category)))
 +                    break;
 +                }
 +              else
 +                {
 +                  if ((*(this->detector)) (&coding, &detect_info)
 +                      && highest
 +                      && (detect_info.found & (1 << category)))
 +                    {
 +                      if (category == coding_category_utf_16_auto)
 +                        {
 +                          if (detect_info.found & CATEGORY_MASK_UTF_16_LE)
 +                            category = coding_category_utf_16_le;
 +                          else
 +                            category = coding_category_utf_16_be;
 +                        }
 +                      break;
 +                    }
 +                }
 +            }
 +      }
 +
 +      if (detect_info.rejected == CATEGORY_MASK_ANY)
 +      {
 +        detect_info.found = CATEGORY_MASK_RAW_TEXT;
 +        id = coding_categories[coding_category_raw_text].id;
 +        val = Fcons (make_number (id), Qnil);
 +      }
 +      else if (! detect_info.rejected && ! detect_info.found)
 +      {
 +        detect_info.found = CATEGORY_MASK_ANY;
 +        id = coding_categories[coding_category_undecided].id;
 +        val = Fcons (make_number (id), Qnil);
 +      }
 +      else if (highest)
 +      {
 +        if (detect_info.found)
 +          {
 +            detect_info.found = 1 << category;
 +            val = Fcons (make_number (this->id), Qnil);
 +          }
 +        else
 +          for (i = 0; i < coding_category_raw_text; i++)
 +            if (! (detect_info.rejected & (1 << coding_priorities[i])))
 +              {
 +                detect_info.found = 1 << coding_priorities[i];
 +                id = coding_categories[coding_priorities[i]].id;
 +                val = Fcons (make_number (id), Qnil);
 +                break;
 +              }
 +      }
 +      else
        {
 -        Lisp_Object val2;
 -        val2 = Fget (Qundecided, Qeol_type);
 -        if (VECTORP (val2))
 -          val = XVECTOR (val2)->contents[eol_type];
 +        int mask = detect_info.rejected | detect_info.found;
 +        int found = 0;
 +        val = Qnil;
 +
 +        for (i = coding_category_raw_text - 1; i >= 0; i--)
 +          {
 +            category = coding_priorities[i];
 +            if (! (mask & (1 << category)))
 +              {
 +                found |= 1 << category;
 +                id = coding_categories[category].id;
 +                val = Fcons (make_number (id), val);
 +              }
 +          }
 +        for (i = coding_category_raw_text - 1; i >= 0; i--)
 +          {
 +            category = coding_priorities[i];
 +            if (detect_info.found & (1 << category))
 +              {
 +                id = coding_categories[category].id;
 +                val = Fcons (make_number (id), val);
 +              }
 +          }
 +        detect_info.found |= found;
        }
 -      return (highest ? val : Fcons (val, Qnil));
      }
 -
 -  /* At first, gather possible coding systems in VAL.  */
 -  val = Qnil;
 -  for (tmp = Vcoding_category_list; CONSP (tmp); tmp = XCDR (tmp))
 +  else if (base_category == coding_category_utf_16_auto)
      {
 -      Lisp_Object category_val, category_index;
 -
 -      category_index = Fget (XCAR (tmp), Qcoding_category_index);
 -      category_val = Fsymbol_value (XCAR (tmp));
 -      if (!NILP (category_val)
 -        && NATNUMP (category_index)
 -        && (coding_mask & (1 << XFASTINT (category_index))))
 +      if (detect_coding_utf_16 (&coding, &detect_info))
        {
 -        val = Fcons (category_val, val);
 -        if (highest)
 -          break;
 +        struct coding_system *this;
 +
 +        if (detect_info.found & CATEGORY_MASK_UTF_16_LE)
 +          this = coding_categories + coding_category_utf_16_le;
 +        else if (detect_info.found & CATEGORY_MASK_UTF_16_BE)
 +          this = coding_categories + coding_category_utf_16_be;
 +        else if (detect_info.rejected & CATEGORY_MASK_UTF_16_LE_NOSIG)
 +          this = coding_categories + coding_category_utf_16_be_nosig;
 +        else
 +          this = coding_categories + coding_category_utf_16_le_nosig;
 +        val = Fcons (make_number (this->id), Qnil);
        }
      }
 -  if (!highest)
 -    val = Fnreverse (val);
 -
 -  /* Then, replace the elements with subsidiary coding systems.  */
 -  for (tmp = val; CONSP (tmp); tmp = XCDR (tmp))
 +  else
      {
 -      if (eol_type != CODING_EOL_UNDECIDED
 -        && eol_type != CODING_EOL_INCONSISTENT)
 -      {
 -        Lisp_Object eol;
 -        eol = Fget (XCAR (tmp), Qeol_type);
 -        if (VECTORP (eol))
 -          XSETCAR (tmp, XVECTOR (eol)->contents[eol_type]);
 -      }
 +      detect_info.found = 1 << XINT (CODING_ATTR_CATEGORY (attrs));
 +      val = Fcons (make_number (coding.id), Qnil);
      }
 +
 +  /* Then, detect eol-format if necessary.  */
 +  {
 +    int normal_eol = -1, utf_16_be_eol = -1, utf_16_le_eol;
 +    Lisp_Object tail;
 +
 +    if (VECTORP (eol_type))
 +      {
 +      if (detect_info.found & ~CATEGORY_MASK_UTF_16)
 +        normal_eol = detect_eol (coding.source, src_bytes,
 +                                 coding_category_raw_text);
 +      if (detect_info.found & (CATEGORY_MASK_UTF_16_BE
 +                               | CATEGORY_MASK_UTF_16_BE_NOSIG))
 +        utf_16_be_eol = detect_eol (coding.source, src_bytes,
 +                                    coding_category_utf_16_be);
 +      if (detect_info.found & (CATEGORY_MASK_UTF_16_LE
 +                               | CATEGORY_MASK_UTF_16_LE_NOSIG))
 +        utf_16_le_eol = detect_eol (coding.source, src_bytes,
 +                                    coding_category_utf_16_le);
 +      }
 +    else
 +      {
 +      if (EQ (eol_type, Qunix))
 +        normal_eol = utf_16_be_eol = utf_16_le_eol = EOL_SEEN_LF;
 +      else if (EQ (eol_type, Qdos))
 +        normal_eol = utf_16_be_eol = utf_16_le_eol = EOL_SEEN_CRLF;
 +      else
 +        normal_eol = utf_16_be_eol = utf_16_le_eol = EOL_SEEN_CR;
 +      }
 +
 +    for (tail = val; CONSP (tail); tail = XCDR (tail))
 +      {
 +      enum coding_category category;
 +      int this_eol;
 +
 +      id = XINT (XCAR (tail));
 +      attrs = CODING_ID_ATTRS (id);
 +      category = XINT (CODING_ATTR_CATEGORY (attrs));
 +      eol_type = CODING_ID_EOL_TYPE (id);
 +      if (VECTORP (eol_type))
 +        {
 +          if (category == coding_category_utf_16_be
 +              || category == coding_category_utf_16_be_nosig)
 +            this_eol = utf_16_be_eol;
 +          else if (category == coding_category_utf_16_le
 +                   || category == coding_category_utf_16_le_nosig)
 +            this_eol = utf_16_le_eol;
 +          else
 +            this_eol = normal_eol;
 +
 +          if (this_eol == EOL_SEEN_LF)
 +            XSETCAR (tail, AREF (eol_type, 0));
 +          else if (this_eol == EOL_SEEN_CRLF)
 +            XSETCAR (tail, AREF (eol_type, 1));
 +          else if (this_eol == EOL_SEEN_CR)
 +            XSETCAR (tail, AREF (eol_type, 2));
 +          else
 +            XSETCAR (tail, CODING_ID_NAME (id));
 +        }
 +      else
 +        XSETCAR (tail, CODING_ID_NAME (id));
 +      }
 +  }
 +
    return (highest ? XCAR (val) : val);
  }
  
diff --cc src/data.c
Simple merge
diff --cc src/dired.c
Simple merge
Simple merge
diff --cc src/dispnew.c
Simple merge
diff --cc src/doc.c
Simple merge
diff --cc src/editfns.c
Simple merge
diff --cc src/fileio.c
index 82af5cf6cf9db9b5f0b4002252efebe2e80d19ba,d26b28087263fcdbcbed0172795ecd29cf449047..a8408927f5ca61024da2913a74d31aae06d3fd28
@@@ -74,9 -74,10 +74,10 @@@ extern int errno
  #include "lisp.h"
  #include "intervals.h"
  #include "buffer.h"
 -#include "charset.h"
 +#include "character.h"
  #include "coding.h"
  #include "window.h"
+ #include "blockinput.h"
  
  #ifdef WINDOWSNT
  #define NOMINMAX 1
diff --cc src/fns.c
index 3b4b3e5149bdec0cb0c0d0e88c41ebd84b151770,c222a6c45e0f38edcf067fc313133066a677d6a1..4c1e5b79ae2c2da41ee263531709e09b79d3c6e0
+++ b/src/fns.c
@@@ -575,11 -611,10 +570,10 @@@ concat (nargs, args, target_type, last_
            for (i = 0; i < len; i++)
              {
                ch = XVECTOR (this)->contents[i];
-               if (! CHARACTERP (ch))
-                 wrong_type_argument (Qcharacterp, ch);
 -              CHECK_NUMBER (ch);
++              CHECK_CHARACTER (ch);
                this_len_byte = CHAR_BYTES (XINT (ch));
                result_len_byte += this_len_byte;
 -              if (!SINGLE_BYTE_CHAR_P (XINT (ch)))
 +              if (! ASCII_CHAR_P (XINT (ch)) && ! CHAR_BYTE8_P (XINT (ch)))
                  some_multibyte = 1;
              }
          else if (BOOL_VECTOR_P (this) && XBOOL_VECTOR (this)->size > 0)
            for (; CONSP (this); this = XCDR (this))
              {
                ch = XCAR (this);
-               if (! CHARACTERP (ch))
-                 wrong_type_argument (Qcharacterp, ch);
 -              CHECK_NUMBER (ch);
++              CHECK_CHARACTER (ch);
                this_len_byte = CHAR_BYTES (XINT (ch));
                result_len_byte += this_len_byte;
 -              if (!SINGLE_BYTE_CHAR_P (XINT (ch)))
 +              if (! ASCII_CHAR_P (XINT (ch)) && ! CHAR_BYTE8_P (XINT (ch)))
                  some_multibyte = 1;
              }
          else if (STRINGP (this))
@@@ -1514,32 -1568,9 +1487,25 @@@ The value is actually the first elemen
        QUIT;
      }
  
-   if (CONSP (list))
-     result = XCAR (list);
-   else if (NILP (list))
-     result = Qnil;
-   else
-     result = wrong_type_argument (Qlistp, list);
-   return result;
+   return CAR (list);
  }
  
 +/* Like Fassoc but never report an error and do not allow quits.
 +   Use only on lists known never to be circular.  */
 +
 +Lisp_Object
 +assoc_no_quit (key, list)
 +     Lisp_Object key, list;
 +{
 +  while (CONSP (list)
 +       && (!CONSP (XCAR (list))
 +           || (!EQ (XCAR (XCAR (list)), key)
 +               && NILP (Fequal (XCAR (XCAR (list)), key)))))
 +    list = XCDR (list);
 +
 +  return CONSP (list) ? XCAR (list) : Qnil;
 +}
 +
  DEFUN ("rassq", Frassq, Srassq, 2, 2, 0,
         doc: /* Return non-nil if KEY is `eq' to the cdr of an element of LIST.
  The value is actually the first element of LIST whose cdr is KEY.  */)
diff --cc src/frame.c
Simple merge
diff --cc src/frame.h
Simple merge
diff --cc src/fringe.c
Simple merge
diff --cc src/keyboard.c
Simple merge
diff --cc src/keymap.c
Simple merge
diff --cc src/lisp.h
Simple merge
diff --cc src/lread.c
index 5d8e39d7fb117345190ce41dee1953ba78aed0aa,88a70f691c345474eb1636a9c2c1d47b1fdb4014..08ba5123fcb29d16a05b02ed750beb34d03f5f42
@@@ -226,17 -214,10 +226,20 @@@ static void readevalloop P_ ((Lisp_Obje
  static Lisp_Object load_unwind P_ ((Lisp_Object));
  static Lisp_Object load_descriptor_unwind P_ ((Lisp_Object));
  
+ static void invalid_syntax P_ ((const char *, int)) NO_RETURN;
+ static void end_of_file_error P_ (()) NO_RETURN;
  \f
 +/* Functions that read one byte from the current source READCHARFUN
 +   or unreads one byte.  If the integer argument C is -1, it returns
 +   one read byte, or -1 when there's no more byte in the source.  If C
 +   is 0 or positive, it unreads C, and the return value is not
 +   interesting.  */
 +
 +static int readbyte_for_lambda P_ ((int, Lisp_Object));
 +static int readbyte_from_file P_ ((int, Lisp_Object));
 +static int readbyte_from_string P_ ((int, Lisp_Object));
 +
  /* Handle unreading and rereading of characters.
     Write READCHAR to read a character,
     UNREAD(c) to unread c to be read again.
@@@ -2253,24 -2153,16 +2263,23 @@@ read1 (readcharfun, pch, first_in_list
              if (c == '[')
                {
                  Lisp_Object tmp;
 +                int depth, size;
 +
                  tmp = read_vector (readcharfun, 0);
 -                if (XVECTOR (tmp)->size != SUB_CHAR_TABLE_STANDARD_SLOTS)
 +                if (!INTEGERP (AREF (tmp, 0)))
 +                  error ("Invalid depth in char-table");
 +                depth = XINT (AREF (tmp, 0));
 +                if (depth < 1 || depth > 3)
 +                  error ("Invalid depth in char-table");
 +                size = XVECTOR (tmp)->size - 2;
 +                if (chartab_size [depth] != size)
                    error ("Invalid size char-table");
 -                XSETCHAR_TABLE (tmp, XCHAR_TABLE (tmp));
 -                XCHAR_TABLE (tmp)->top = Qnil;
 +                XSETSUB_CHAR_TABLE (tmp, XSUB_CHAR_TABLE (tmp));
                  return tmp;
                }
-             Fsignal (Qinvalid_read_syntax,
-                      Fcons (make_string ("#^^", 3), Qnil));
+             invalid_syntax ("#^^", 3);
            }
-         Fsignal (Qinvalid_read_syntax, Fcons (make_string ("#^", 2), Qnil));
+         invalid_syntax ("#^", 2);
        }
        if (c == '&')
        {
  
              UNREAD (c);
              tmp = read1 (readcharfun, pch, first_in_list);
 -            if (size_in_chars != SCHARS (tmp)
 -                /* We used to print 1 char too many
 -                   when the number of bits was a multiple of 8.
 -                   Accept such input in case it came from an old version.  */
 -                && ! (XFASTINT (length)
 -                      == (SCHARS (tmp) - 1) * BOOL_VECTOR_BITS_PER_CHAR))
 +            if (STRING_MULTIBYTE (tmp)
 +                || (size_in_chars != SCHARS (tmp)
 +                    /* We used to print 1 char too many
 +                       when the number of bits was a multiple of 8.
 +                       Accept such input in case it came from an old
 +                       version.  */
 +                    && ! (XFASTINT (length)
 +                          == (SCHARS (tmp) - 1) * BOOL_VECTOR_BITS_PER_CHAR)))
-               Fsignal (Qinvalid_read_syntax,
-                        Fcons (make_string ("#&...", 5), Qnil));
+               invalid_syntax ("#&...", 5);
  
              val = Fmake_bool_vector (length, Qnil);
              bcopy (SDATA (tmp), XBOOL_VECTOR (val)->data,
diff --cc src/macterm.c
Simple merge
diff --cc src/marker.c
Simple merge
diff --cc src/minibuf.c
Simple merge
diff --cc src/msdos.c
Simple merge
diff --cc src/print.c
Simple merge
diff --cc src/process.c
Simple merge
diff --cc src/search.c
Simple merge
diff --cc src/syntax.c
index 4f5481ca111ea8fc3ff1af2de4161b3edd1c5ce4,eee9151f87867519866d6f673a9eaae990d735e2..b0b4bdc00327f75ae45dbe3830e40a32363f8edd
@@@ -97,11 -97,11 +97,12 @@@ static int find_start_modiff
  
  
  static int find_defun_start P_ ((int, int));
- static int back_comment P_ ((int, int, int, int, int, int *, int *));
+ static int back_comment P_ ((EMACS_INT, EMACS_INT, EMACS_INT, int, int,
+                            EMACS_INT *, EMACS_INT *));
  static int char_quoted P_ ((int, int));
 -static Lisp_Object skip_chars P_ ((int, int, Lisp_Object, Lisp_Object, int));
 +static Lisp_Object skip_chars P_ ((int, Lisp_Object, Lisp_Object, int));
 +static Lisp_Object skip_syntaxes P_ ((int, Lisp_Object, Lisp_Object));
- static Lisp_Object scan_lists P_ ((int, int, int, int));
+ static Lisp_Object scan_lists P_ ((EMACS_INT, EMACS_INT, EMACS_INT, int));
  static void scan_sexps_forward P_ ((struct lisp_parse_state *,
                                    int, int, int, int,
                                    int, Lisp_Object, int));
diff --cc src/w32term.c
Simple merge
diff --cc src/window.c
Simple merge
diff --cc src/xdisp.c
Simple merge
diff --cc src/xfaces.c
index 43d1352f3358e40e39b5b3202aa1e0cbb51c423e,f67ea61b37ae18cdf6a2120689c1708cd17daea0..6a05611939e6a14f7fa5acb2310ed2c823f165ac
@@@ -496,9 -486,8 +496,8 @@@ static int font_scalable_p P_ ((struct 
  static int get_lface_attributes P_ ((struct frame *, Lisp_Object, Lisp_Object *, int));
  static int load_pixmap P_ ((struct frame *, Lisp_Object, unsigned *, unsigned *));
  static unsigned char *xstrlwr P_ ((unsigned char *));
- static void signal_error P_ ((char *, Lisp_Object));
  static struct frame *frame_or_selected_frame P_ ((Lisp_Object, int));
 -static void load_face_font P_ ((struct frame *, struct face *, int));
 +static void load_face_font P_ ((struct frame *, struct face *));
  static void load_face_colors P_ ((struct frame *, struct face *, Lisp_Object *));
  static void free_face_colors P_ ((struct frame *, struct face *));
  static int face_color_gray_p P_ ((struct frame *, char *));
diff --cc src/xfns.c
Simple merge
diff --cc src/xterm.c
Simple merge