From: Miles Bader Date: Wed, 21 Mar 2007 13:33:07 +0000 (+0000) Subject: Merge from emacs--devo--0 X-Git-Tag: emacs-pretest-23.0.90~8295^2~564 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d85d38392e338f66053a6a6f1017720660239338;p=emacs.git Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 670-674) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 209-210) - Merge from emacs--devo--0 - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-185 --- d85d38392e338f66053a6a6f1017720660239338 diff --cc lisp/Makefile.in index 9d6b07e83e8,8adaa27e619..5ad3542c7ad --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@@ -89,15 -87,15 +89,15 @@@ doit $(lisp)/cus-load.el: touch $@ - custom-deps: $(lisp)/loaddefs.el $(lisp)/cus-load.el doit + custom-deps: $(lisp)/subdirs.el $(lisp)/loaddefs.el $(lisp)/cus-load.el doit wd=$(lisp); $(setwins_almost); \ echo Directories: $$wins; \ - $(EMACS) $(EMACSOPT) -l cus-dep --eval '(setq generated-custom-dependencies-file "$(lisp)/cus-load.el")' -f custom-make-dependencies $$wins + LC_ALL=C $(EMACS) $(EMACSOPT) -l cus-dep --eval '(setq generated-custom-dependencies-file "$(lisp)/cus-load.el")' -f custom-make-dependencies $$wins - finder-data: $(lisp)/loaddefs.el doit + finder-data: $(lisp)/subdirs.el $(lisp)/loaddefs.el doit wd=$(lisp); $(setwins_almost); \ echo Directories: $$wins; \ - $(EMACS) $(EMACSOPT) -l finder --eval '(setq generated-finder-keywords-file "$(lisp)/finder-inf.el")' -f finder-compile-keywords-make-dist $$wins + LC_ALL=C $(EMACS) $(EMACSOPT) -l finder --eval '(setq generated-finder-keywords-file "$(lisp)/finder-inf.el")' -f finder-compile-keywords-make-dist $$wins $(lisp)/loaddefs.el: echo ";;; loaddefs.el --- automatically extracted autoloads" >> $@ @@@ -109,10 -107,10 +109,10 @@@ echo ";; no-update-autoloads: t" >> $@ echo ";; End:" >> $@ echo ";;; loaddefs.el ends here" >> $@ - autoloads: $(lisp)/loaddefs.el doit + autoloads: $(lisp)/subdirs.el $(lisp)/loaddefs.el doit wd=$(lisp); $(setwins_almost); \ echo Directories: $$wins; \ - $(EMACS) $(EMACSOPT) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins + LC_ALL=C $(EMACS) $(EMACSOPT) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins $(lisp)/subdirs.el: $(MAKE) $(MFLAGS) update-subdirs diff --cc src/Makefile.in index ada18576e3d,1ce3702336f..f62bb8c2b26 --- a/src/Makefile.in +++ b/src/Makefile.in @@@ -1129,36 -1112,33 +1129,37 @@@ 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 atimer.h +dired.o: dired.c commands.h buffer.h $(config_h) character.h charset.h \ - coding.h regex.h systime.h blockinput.h ++ coding.h regex.h systime.h blockinput.h atimer.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) + msdos.h dosfns.h dispextern.h charset.h coding.h atimer.h systime.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 blockinput.h $(config_h) + coding.h dispextern.h frame.h blockinput.h atimer.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 blockinput.h $(config_h) + coding.h msdos.h dispextern.h blockinput.h atimer.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 window.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) @@@ -1181,14 -1161,14 +1182,14 @@@ malloc.o: malloc.c $(config_h gmalloc.o: gmalloc.c $(config_h) ralloc.o: ralloc.c $(config_h) vm-limit.o: vm-limit.c mem-limits.h $(config_h) -marker.o: marker.c buffer.h charset.h $(config_h) +marker.o: marker.c buffer.h character.h $(config_h) md5.o: md5.c md5.h $(config_h) minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h keyboard.h \ - buffer.h commands.h charset.h msdos.h $(INTERVAL_SRC) keymap.h $(config_h) + buffer.h commands.h character.h msdos.h $(INTERVAL_SRC) keymap.h $(config_h) mktime.o: mktime.c $(config_h) msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \ - termopts.h termchar.h charset.h coding.h ccl.h disptab.h window.h \ + termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \ - keyboard.h intervals.h buffer.h commands.h blockinput.h $(config_h) + keyboard.h intervals.h buffer.h commands.h blockinput.h atimer.h $(config_h) process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \ commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \ blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \ @@@ -1209,8 -1187,8 +1210,8 @@@ sysdep.o: sysdep.c syssignal.h systty. process.h dispextern.h termhooks.h termchar.h termopts.h \ frame.h atimer.h window.h msdos.h dosfns.h keyboard.h $(config_h) term.o: term.c termchar.h termhooks.h termopts.h $(config_h) cm.h frame.h \ - disptab.h dispextern.h keyboard.h charset.h coding.h ccl.h msdos.h \ - window.h keymap.h blockinput.h atimer.h systime.h + disptab.h dispextern.h keyboard.h character.h charset.h coding.h ccl.h \ - msdos.h window.h keymap.h ++ msdos.h window.h keymap.h blockinput.h atimer.h systime.h termcap.o: termcap.c $(config_h) terminfo.o: terminfo.c $(config_h) tparam.o: tparam.c $(config_h) @@@ -1225,33 -1203,25 +1226,34 @@@ widget.o: widget.c xterm.h frame.h disp $(srcdir)/../lwlib/lwlib.h $(config_h) window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ termhooks.h disptab.h keyboard.h dispextern.h msdos.h composite.h \ - keymap.h blockinput.h $(INTERVAL_SRC) xterm.h w32term.h macterm.h $(config_h) + keymap.h blockinput.h atimer.h systime.h $(INTERVAL_SRC) \ + xterm.h w32term.h macterm.h $(config_h) -xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h coding.h \ - termchar.h frame.h window.h disptab.h termhooks.h charset.h $(config_h) \ - keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h w32term.h macterm.h \ - msdos.h composite.h fontset.h blockinput.h atimer.h systime.h keymap.h -xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \ - window.h charset.h msdos.h dosfns.h composite.h atimer.h systime.h \ - keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) $(config_h) +xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \ + coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \ - charset.h keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h w32term.h \ - macterm.h $(config_h) msdos.h composite.h fontset.h blockinput.h atimer.h \ ++ charset.h $(config_h) keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h \ ++ w32term.h macterm.h msdos.h composite.h fontset.h blockinput.h atimer.h \ + systime.h keymap.h $(FONTSRC) +xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \ + window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \ - systime.h keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) \ ++ systime.h keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) \ + $(FONTSRC) $(config_h) xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \ $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \ - charset.h gtkutil.h $(config_h) + character.h charset.h coding.h gtkutil.h $(config_h) termhooks.h \ + fontset.h $(FONTSRC) +xfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ + font.h $(config_h) +xftfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ + font.h $(config_h) +ftxfont.o: dispextern.h xterm.h frame.h blockinput.h character.h charset.h \ + font.h $(config_h) xmenu.o: xmenu.c xterm.h termhooks.h window.h dispextern.h frame.h buffer.h \ - keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h \ - gtkutil.h msdos.h coding.h $(config_h) + charset.h keyboard.h $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h \ + systime.h gtkutil.h msdos.h coding.h $(config_h) xterm.o: xterm.c xterm.h termhooks.h termopts.h termchar.h window.h buffer.h \ - dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \ - keyboard.h gnu.h charset.h ccl.h fontset.h composite.h \ - coding.h process.h gtkutil.h $(config_h) + dispextern.h frame.h disptab.h blockinput.h atimer.h systime.h syssignal.h \ + keyboard.h gnu.h character.h charset.h ccl.h fontset.h composite.h \ + coding.h process.h gtkutil.h $(FONTSRC) $(config_h) xselect.o: xselect.c process.h dispextern.h frame.h xterm.h blockinput.h \ buffer.h atimer.h systime.h $(config_h) xrdb.o: xrdb.c $(config_h) epaths.h @@@ -1276,13 -1245,15 +1279,15 @@@ data.o: data.c buffer.h puresize.h char eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \ dispextern.h $(config_h) floatfns.o: floatfns.c $(config_h) -fns.o: fns.c commands.h $(config_h) frame.h buffer.h charset.h keyboard.h \ +fns.o: fns.c commands.h $(config_h) frame.h buffer.h character.h keyboard.h \ keymap.h frame.h window.h dispextern.h $(INTERVAL_SRC) coding.h md5.h \ - blockinput.h xterm.h + blockinput.h atimer.h systime.h xterm.h -print.o: print.c process.h frame.h window.h buffer.h keyboard.h charset.h \ - $(config_h) dispextern.h termchar.h $(INTERVAL_SRC) msdos.h composite.h \ +print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \ - $(config_h) dispextern.h termchar.h $(INTERVAL_SRC) msdos.h composite.h ++ $(config_h) dispextern.h termchar.h $(INTERVAL_SRC) msdos.h composite.h \ + blockinput.h atimer.h systime.h -lread.o: lread.c commands.h keyboard.h buffer.h epaths.h charset.h \ - $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h blockinput.h \ - atimer.h systime.h +lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \ - charset.h $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h ++ charset.h $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h \ ++ blockinput.h atimer.h systime.h /* Text properties support */ textprop.o: textprop.c buffer.h window.h dispextern.h $(INTERVAL_SRC) \ diff --cc src/lread.c index 78b59340855,30aab7cce32..178b381af10 --- a/src/lread.c +++ b/src/lread.c @@@ -449,152 -416,18 +450,164 @@@ unreadchar (readcharfun, c read_from_string_index_byte = string_char_to_byte (readcharfun, read_from_string_index); } + else if (CONSP (readcharfun)) + { + unread_char = c; + } else if (EQ (readcharfun, Qlambda)) - read_bytecode_char (1); - else if (EQ (readcharfun, Qget_file_char)) + { + unread_char = c; + } + else if (EQ (readcharfun, Qget_file_char) + || EQ (readcharfun, Qget_emacs_mule_file_char)) + { + if (load_each_byte) - ungetc (c, instream); ++ { ++ BLOCK_INPUT; ++ ungetc (c, instream); ++ UNBLOCK_INPUT; ++ } + else + unread_char = c; + } + else + call1 (readcharfun, make_number (c)); +} + +static int +readbyte_for_lambda (c, readcharfun) + int c; + Lisp_Object readcharfun; +{ + return read_bytecode_char (c >= 0); +} + + +static int +readbyte_from_file (c, readcharfun) + int c; + Lisp_Object readcharfun; +{ + if (c >= 0) { + BLOCK_INPUT; ungetc (c, instream); + UNBLOCK_INPUT; + return 0; + } + ++ BLOCK_INPUT; + c = getc (instream); ++ UNBLOCK_INPUT; ++ +#ifdef EINTR - /* Interrupted reads have been observed while reading over the network */ - while (c == EOF && ferror (instream) && errno == EINTR) - { - QUIT; - clearerr (instream); - c = getc (instream); - } ++ /* Interrupted reads have been observed while reading over the network */ ++ while (c == EOF && ferror (instream) && errno == EINTR) ++ { ++ QUIT; ++ clearerr (instream); ++ BLOCK_INPUT; ++ c = getc (instream); ++ UNBLOCK_INPUT; + } +#endif ++ + return (c == EOF ? -1 : c); +} + +static int +readbyte_from_string (c, readcharfun) + int c; + Lisp_Object readcharfun; +{ + Lisp_Object string = XCAR (readcharfun); + + if (c >= 0) + { + read_from_string_index--; + read_from_string_index_byte + = string_char_to_byte (string, read_from_string_index); + } + + if (read_from_string_index >= read_from_string_limit) + c = -1; else - call1 (readcharfun, make_number (c)); + FETCH_STRING_CHAR_ADVANCE (c, string, + read_from_string_index, + read_from_string_index_byte); + return c; } + +/* Read one non-ASCII character from INSTREAM. The character is + encoded in `emacs-mule' and the first byte is already read in + C. */ + +extern char emacs_mule_bytes[256]; + +static int +read_emacs_mule_char (c, readbyte, readcharfun) + int c; + int (*readbyte) P_ ((int, Lisp_Object)); + Lisp_Object readcharfun; +{ + /* Emacs-mule coding uses at most 4-byte for one character. */ + unsigned char buf[4]; + int len = emacs_mule_bytes[c]; + struct charset *charset; + int i; + unsigned code; + + if (len == 1) + /* C is not a valid leading-code of `emacs-mule'. */ + return BYTE8_TO_CHAR (c); + + i = 0; + buf[i++] = c; + while (i < len) + { + c = (*readbyte) (-1, readcharfun); + if (c < 0xA0) + { + while (--i > 1) + (*readbyte) (buf[i], readcharfun); + return BYTE8_TO_CHAR (buf[0]); + } + buf[i++] = c; + } + + if (len == 2) + { + charset = emacs_mule_charset[buf[0]]; + code = buf[1] & 0x7F; + } + else if (len == 3) + { + if (buf[0] == EMACS_MULE_LEADING_CODE_PRIVATE_11 + || buf[0] == EMACS_MULE_LEADING_CODE_PRIVATE_12) + { + charset = emacs_mule_charset[buf[1]]; + code = buf[2] & 0x7F; + } + else + { + charset = emacs_mule_charset[buf[0]]; + code = ((buf[1] << 8) | buf[2]) & 0x7F7F; + } + } + else + { + charset = emacs_mule_charset[buf[1]]; + code = ((buf[2] << 8) | buf[3]) & 0x7F7F; + } + c = DECODE_CHAR (charset, code); + if (c < 0) + Fsignal (Qinvalid_read_syntax, + Fcons (build_string ("invalid multibyte form"), Qnil)); + return c; +} + + static Lisp_Object read_internal_start P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); static Lisp_Object read0 P_ ((Lisp_Object));