emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: unicode merge failures 2007-10-12


From: Stefan Monnier
Subject: Re: unicode merge failures 2007-10-12
Date: Fri, 12 Oct 2007 00:05:02 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.50 (gnu/linux)

>>>>> "Stefan" == Stefan Monnier <address@hidden> writes:

>> Miles Bader wrote:
>>> M  src/xdisp.c
>>> M  src/coding.c
>>> 
>> These two look like multi-tty wins - the only difference being that
>> global variables are replaced with members of the terminal struct.

>> The others are harder to judge, my approach would be to diff each one
>> with its branch point, and decide which has the simpler changes, then
>> try to manually apply the equivalent changes to the other branch's
>> version. encoded-kb.el seems to have been completely rewritten for
>> multi-tty, but the others look like the actual changes involved could be
>> quite simple.

> I'm looking into it.

I believe the patch below makes it work (*very* lightly tested).
Can people take a look at it and tell me if it makes sense?


        Stefan


* looking for address@hidden/emacs--unicode--0--patch-258 to compare with
* comparing to address@hidden/emacs--unicode--0--patch-258
A  etc/buildobj.lst
A  tmp.diff
M  lisp/emacs-lisp/cl-loaddefs.el
M  src/chartab.c
M  lisp/ChangeLog
M  src/coding.h
M  src/coding.c
M  src/term.c
M  src/doc.c
M  src/ChangeLog.10
M  src/w32term.c
M  src/alloc.c
M  lisp/term/w32-win.el
M  src/xterm.c
M  lisp/term/mac-win.el
M  lisp/international/encoded-kb.el
M  src/emacs.c
M  lisp/international/characters.el
M  src/xfaces.c
M  src/lread.c
M  lisp/language/ethio-util.el
M  lisp/version.el
M  src/terminal.c
M  src/fontset.c
M  src/xdisp.c
M  lisp/term/x-win.el
M  lisp/ps-print.el
M  src/Makefile.in
M  lisp/ldefs-boot.el
M  configure

* modified files

--- orig/configure
+++ mod/configure
@@ -18922,11 +18922,13 @@
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdio.h>
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
 int
 main ()
 {
-return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
   ;
   return 0;
 }
@@ -18966,11 +18968,13 @@
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 #define _LARGEFILE_SOURCE 1
-#include <stdio.h>
+#include <sys/types.h> /* for off_t */
+     #include <stdio.h>
 int
 main ()
 {
-return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
+int (*fp) (FILE *, off_t, int) = fseeko;
+     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
   ;
   return 0;
 }


--- orig/lisp/international/encoded-kb.el
+++ mod/lisp/international/encoded-kb.el
@@ -333,53 +333,43 @@
 (defun encoded-kbd-setup-display (display)
   "Set up a `input-decode-map' for `keyboard-coding-system' on DISPLAY.
 
-(put 'encoded-kbd-mode 'permanent-local t)
-;;;###autoload
-(define-minor-mode encoded-kbd-mode
-  "Toggle Encoded-kbd minor mode.
-With arg, turn Encoded-kbd mode on if and only if arg is positive.
-
-You should not turn this mode on manually, instead use the command
-\\[set-keyboard-coding-system] which turns on or off this mode
-automatically.
-
-In Encoded-kbd mode, a text sent from keyboard is accepted
-as a multilingual text encoded in a coding system set by
-\\[set-keyboard-coding-system]."
-  :global t :group 'keyboard :group 'mule
-
-  (if encoded-kbd-mode
-      ;; We are turning on Encoded-kbd mode.
-      (let ((coding (keyboard-coding-system))
-           result)
-       (or saved-key-translation-map
-           (if (keymapp key-translation-map)
-               (setq saved-key-translation-map
-                     (copy-keymap key-translation-map))
-             (setq key-translation-map (make-sparse-keymap))))
-       (or saved-input-mode
-           (setq saved-input-mode
-                 (current-input-mode)))
-       (setq result (and coding (encoded-kbd-setup-keymap coding)))
-       (if result
-           (if (eq result 8)
-               (set-input-mode
-                (nth 0 saved-input-mode) 
-                (nth 1 saved-input-mode)
-                'use-8th-bit
-                (nth 3 saved-input-mode)))
-         (setq encoded-kbd-mode nil
-               saved-key-translation-map nil
-               saved-input-mode nil)
-         (error "Unsupported coding system in Encoded-kbd mode: %S"
-                coding)))
-
-    ;; We are turning off Encoded-kbd mode.
-    (when saved-input-mode
-      (setq key-translation-map saved-key-translation-map
-           saved-key-translation-map nil)
-      (apply 'set-input-mode saved-input-mode)
-      (setq saved-input-mode nil))))
+DISPLAY may be a display id, a frame, or nil for the selected frame's display."
+  (let ((frame (if (framep display) display (car (frames-on-display-list 
display)))))
+    (when frame
+      (with-selected-frame frame
+       ;; Remove any previous encoded-kb keymap from input-decode-map.
+       (let ((m input-decode-map))
+         (if (equal (keymap-prompt m) "encoded-kb")
+             (setq input-decode-map (keymap-parent m))
+           (while (keymap-parent m)
+             (if (equal (keymap-prompt (keymap-parent m)) "encoded-kb")
+                 (set-keymap-parent m (keymap-parent (keymap-parent m))))
+             (setq m (keymap-parent m)))))
+
+       (if (keyboard-coding-system)
+           ;; We are turning on Encoded-kbd mode.
+           (let ((coding (keyboard-coding-system))
+                 (keymap (make-sparse-keymap "encoded-kb"))
+                 (cim (current-input-mode))
+                 result)
+             (set-keymap-parent keymap input-decode-map)
+             (setq input-decode-map keymap)
+             (unless (terminal-parameter nil 
'encoded-kbd-saved-input-meta-mode)
+               (set-terminal-parameter nil 'encoded-kbd-saved-input-mode (nth 
2 cim)))
+             (setq result (and coding (encoded-kbd-setup-keymap keymap 
coding)))
+             (if result
+                 (when (and (eq result 8)
+                            (memq (nth 2 cim) '(t nil)))
+                   (set-input-meta-mode 'use-8th-bit))
+               (set-terminal-parameter nil 'encoded-kbd-saved-input-meta-mode 
nil)
+               (error "Unsupported coding system in Encoded-kbd mode: %S"
+                      coding)))
+         ;; We are turning off Encoded-kbd mode.
+         (when (and (terminal-parameter nil 'encoded-kbd-saved-input-meta-mode)
+                    (not (equal (nth 2 (current-input-mode))
+                                (terminal-parameter nil 
'encoded-kbd-saved-input-meta-mode))))
+           (set-input-meta-mode (terminal-parameter nil 
'encoded-kbd-saved-input-meta-mode)))
+         (set-terminal-parameter nil 'saved-input-meta-mode nil))))))
 
 (provide 'encoded-kb)
 


--- orig/lisp/term/mac-win.el
+++ mod/lisp/term/mac-win.el
@@ -2346,34 +2346,6 @@
          (mac-dnd-drop-data event (selected-frame) window
                             (cdr item) (car item) action)))))

-;;; Do the actual Windows setup here; the above code just defines
-;;; functions and variables that we use now.
-
-(setq command-line-args (x-handle-args command-line-args))
-
-;;; Make sure we have a valid resource name.
-(or (stringp x-resource-name)
-    (let (i)
-      (setq x-resource-name (invocation-name))
-
-      ;; Change any . or * characters in x-resource-name to hyphens,
-      ;; so as not to choke when we use it in X resource queries.
-      (while (setq i (string-match "[.*]" x-resource-name))
-       (aset x-resource-name i ?-))))
-
-(if (x-display-list)
-    ;; On Mac OS 8/9, Most coding systems used in code conversion for
-    ;; font names are not ready at the time when the terminal frame is
-    ;; created.  So we reconstruct font name table for the initial
-    ;; frame.
-    (mac-clear-font-name-table)
-  (x-open-connection "Mac"
-                    x-command-line-resources
-                    ;; Exit Emacs with fatal error if this fails.
-                    t))
-
-(setq frame-creation-function 'x-create-frame-with-faces)
-
 (setq font-encoding-alist
       (append
        '(("mac-roman" . mac-roman)


--- orig/lisp/term/w32-win.el
+++ mod/lisp/term/w32-win.el
@@ -1076,44 +1076,6 @@
 
 See the documentation of `create-fontset-from-fontset-spec' for the format.")
 
-;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
-(when (fboundp 'new-fontset)
-      ;; Setup the default fontset.
-      (setup-default-fontset)
-      ;; Create the standard fontset.
-      (create-fontset-from-fontset-spec w32-standard-fontset-spec t)
-      ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1,...).
-      (create-fontset-from-x-resource))
-
-;; Apply a geometry resource to the initial frame.  Put it at the end
-;; of the alist, so that anything specified on the command line takes
-;; precedence.
-(let* ((res-geometry (x-get-resource "geometry" "Geometry"))
-       parsed)
-  (if res-geometry
-      (progn
-       (setq parsed (x-parse-geometry res-geometry))
-       ;; If the resource specifies a position,
-       ;; call the position and size "user-specified".
-       (if (or (assq 'top parsed) (assq 'left parsed))
-           (setq parsed (cons '(user-position . t)
-                              (cons '(user-size . t) parsed))))
-       ;; All geometry parms apply to the initial frame.
-       (setq initial-frame-alist (append initial-frame-alist parsed))
-       ;; The size parms apply to all frames.
-       (if (assq 'height parsed)
-           (push (cons 'height (cdr (assq 'height parsed)))
-                 default-frame-alist))
-       (if (assq 'width parsed)
-           (push (cons 'width (cdr (assq 'width parsed)))
-                 default-frame-alist)))))
-
-;; Check the reverseVideo resource.
-(let ((case-fold-search t))
-  (let ((rv (x-get-resource "reverseVideo" "ReverseVideo")))
-    (if (and rv (string-match "^\\(true\\|yes\\|on\\)$" rv))
-       (push '(reverse . t) default-frame-alist))))
-
 (defun x-win-suspend-error ()
   "Report an error when a suspend is attempted."
   (error "Suspending an Emacs running under W32 makes no sense"))
@@ -1145,7 +1107,7 @@
       ;; Append list of fontsets currently defined.
       ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
       (if (fboundp 'new-fontset)
-      (append w32-fixed-font-alist (list (generate-fontset-menu)))))))
+          (append w32-fixed-font-alist (list (generate-fontset-menu)))))))
   (if fonts
       (let (font)
        (while fonts
@@ -1199,30 +1161,6 @@
   (create-fontset-from-fontset-spec w32-standard-fontset-spec t)
   ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1,...).
   (create-fontset-from-x-resource)
-  ;; Try to create a fontset from a font specification which comes
-  ;; from initial-frame-alist, default-frame-alist, or X resource.
-  ;; A font specification in command line argument (i.e. -fn XXXX)
-  ;; should be already in default-frame-alist as a `font'
-  ;; parameter.  However, any font specifications in site-start
-  ;; library, user's init file (.emacs), and default.el are not
-  ;; yet handled here.
-
-  (let ((font (or (cdr (assq 'font initial-frame-alist))
-                  (cdr (assq 'font default-frame-alist))
-                  (x-get-resource "font" "Font")))
-        xlfd-fields resolved-name)
-    (if (and font
-             (not (query-fontset font))
-             (setq resolved-name (x-resolve-font-name font))
-             (setq xlfd-fields (x-decompose-font-name font)))
-        (if (string= "fontset"
-                     (aref xlfd-fields xlfd-regexp-registry-subnum))
-            (new-fontset font
-                         (x-complement-fontset-spec xlfd-fields nil))
-          ;; Create a fontset from FONT.  The fontset name is
-          ;; generated from FONT.
-          (create-fontset-from-ascii-font font
-                                          resolved-name "startup"))))
 
   ;; Apply a geometry resource to the initial frame.  Put it at the end
   ;; of the alist, so that anything specified on the command line takes


--- orig/lisp/term/x-win.el
+++ mod/lisp/term/x-win.el
@@ -2469,28 +2469,6 @@
   ;; Create fontset specified in X resources "Fontset-N" (N is 0, 1, ...).
   (create-fontset-from-x-resource)
 
-  ;; Try to create a fontset from a font specification which comes
-  ;; from initial-frame-alist, default-frame-alist, or X resource.
-  ;; A font specification in command line argument (i.e. -fn XXXX)
-  ;; should be already in default-frame-alist as a `font'
-  ;; parameter.  However, any font specifications in site-start
-  ;; library, user's init file (.emacs), and default.el are not
-  ;; yet handled here.
-
-  (let ((font (or (cdr (assq 'font initial-frame-alist))
-                 (cdr (assq 'font default-frame-alist))
-                 (x-get-resource "font" "Font")))
-       xlfd-fields resolved-name)
-    (if (and font
-            (not (query-fontset font))
-            (setq resolved-name (x-resolve-font-name font))
-            (setq xlfd-fields (x-decompose-font-name font)))
-       (if (string= "fontset" (aref xlfd-fields xlfd-regexp-registry-subnum))
-           (new-fontset font (x-complement-fontset-spec xlfd-fields nil))
-         ;; Create a fontset from FONT.  The fontset name is
-         ;; generated from FONT.
-         (create-fontset-from-ascii-font font resolved-name "startup"))))
-
   ;; Set scroll bar mode to right if set by X resources. Default is left.
   (if (equal (x-get-resource "verticalScrollBars" "ScrollBars") "right")
       (customize-set-variable 'scroll-bar-mode 'right))


--- orig/lisp/version.el
+++ mod/lisp/version.el
@@ -30,7 +30,7 @@
 (defconst emacs-copyright "Copyright (C) 2007 Free Software Foundation, Inc."
   "Short copyright string for this version of Emacs.")
 
-(defconst emacs-version "23.0.50" "\
+(defconst emacs-version "23.0.60" "\
 Version numbers of this version of Emacs.")
 
 (defconst emacs-major-version


--- orig/src/ChangeLog.10
+++ mod/src/ChangeLog.10
@@ -12403,6 +12403,11 @@
        * regex.c (re_error_msgid): Add an entry for REG_ERANGEX.
        (regex_compile): Return REG_ERANGEX if appropriate.
 
+2004-10-22  Kenichi Handa  <address@hidden>
+
+       * editfns.c (Ftranslate_region_internal): New function.
+       (syms_of_editfns): Defsubr it.
+
 2004-10-22  Jan Djärv  <address@hidden>
 
        * xfns.c (xic_create_xfontset): Initialize missing_list to NULL.


--- orig/src/Makefile.in
+++ mod/src/Makefile.in
@@ -1007,7 +1007,7 @@
 #endif
 
 temacs${EXEEXT}: MAKE_PARALLEL $(LOCALCPP) $(STARTFILES) stamp-oldxmenu ${obj} 
${otherobj} OBJECTS_MACHINE prefix-args${EXEEXT}
-       echo "${obj} ${otherobj} " OBJECTS_MACHINE > buildobj.lst
+       echo "${obj} ${otherobj} " OBJECTS_MACHINE > ${etc}buildobj.lst
        $(LD) YMF_PASS_LDFLAGS (${STARTFLAGS} ${TEMACS_LDFLAGS}) $(LDFLAGS) \
     -o temacs ${STARTFILES} ${obj} ${otherobj}  \
     OBJECTS_MACHINE ${LIBES}
@@ -1133,7 +1133,7 @@
        CRT0_COMPILE ${srcdir}/ecrt0.c
 dired.o: dired.c commands.h buffer.h $(config_h) character.h charset.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 \
+dispnew.o: dispnew.c 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 character.h msdos.h composite.h keyboard.h \
@@ -1156,7 +1156,7 @@
 frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
    blockinput.h atimer.h systime.h buffer.h character.h fontset.h \
    msdos.h dosfns.h dispextern.h w32term.h macterm.h termchar.h $(config_h)
-fringe.o: fringe.c dispextern.h frame.h window.h buffer.h termhook.h 
$(config_h)
+fringe.o: fringe.c dispextern.h frame.h window.h buffer.h termhooks.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)
@@ -1188,7 +1188,7 @@
 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 character.h msdos.h $(INTERVAL_SRC) keymap.h \
-   terhooks.h $(config_h)
+   termhooks.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 character.h coding.h ccl.h disptab.h window.h \
@@ -1288,11 +1288,10 @@
  keymap.h frame.h window.h dispextern.h $(INTERVAL_SRC) coding.h md5.h \
  blockinput.h atimer.h systime.h xterm.h termhooks.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 character.h \
- charset.h $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h \
- blockinput.h atimer.h systime.h
+ charset.h $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h
 
 /* Text properties support */
 textprop.o: textprop.c buffer.h window.h dispextern.h $(INTERVAL_SRC) \
@@ -1357,7 +1356,7 @@
        rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o 
libXMenu11.a liblw.a
        rm -f ../etc/DOC
        rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT}
-       rm -f buildobj.lst
+       rm -f ${etc}buildobj.lst
 clean: mostlyclean
        rm -f emacs-*${EXEEXT} emacs${EXEEXT}
 /**/# This is used in making a distribution.


--- orig/src/alloc.c
+++ mod/src/alloc.c
@@ -3070,51 +3070,6 @@
 }
 
 
-DEFUN ("make-char-table", Fmake_char_table, Smake_char_table, 1, 2, 0,
-       doc: /* Return a newly created char-table, with purpose PURPOSE.
-Each element is initialized to INIT, which defaults to nil.
-PURPOSE should be a symbol which has a `char-table-extra-slots' property.
-The property's value should be an integer between 0 and 10.  */)
-     (purpose, init)
-     register Lisp_Object purpose, init;
-{
-  Lisp_Object vector;
-  Lisp_Object n;
-  CHECK_SYMBOL (purpose);
-  n = Fget (purpose, Qchar_table_extra_slots);
-  CHECK_NUMBER (n);
-  if (XINT (n) < 0 || XINT (n) > 10)
-    args_out_of_range (n, Qnil);
-  /* Add 2 to the size for the defalt and parent slots.  */
-  vector = Fmake_vector (make_number (CHAR_TABLE_STANDARD_SLOTS + XINT (n)),
-                        init);
-  XSETPVECTYPE (XVECTOR (vector), PVEC_CHAR_TABLE);
-  XCHAR_TABLE (vector)->top = Qt;
-  XCHAR_TABLE (vector)->parent = Qnil;
-  XCHAR_TABLE (vector)->purpose = purpose;
-  XSETCHAR_TABLE (vector, XCHAR_TABLE (vector));
-  return vector;
-}
-
-
-/* Return a newly created sub char table with slots initialized by INIT.
-   Since a sub char table does not appear as a top level Emacs Lisp
-   object, we don't need a Lisp interface to make it.  */
-
-Lisp_Object
-make_sub_char_table (init)
-     Lisp_Object init;
-{
-  Lisp_Object vector
-    = Fmake_vector (make_number (SUB_CHAR_TABLE_STANDARD_SLOTS), init);
-  XSETPVECTYPE (XVECTOR (vector), PVEC_CHAR_TABLE);
-  XCHAR_TABLE (vector)->top = Qnil;
-  XCHAR_TABLE (vector)->defalt = Qnil;
-  XSETCHAR_TABLE (vector, XCHAR_TABLE (vector));
-  return vector;
-}
-
-
 DEFUN ("vector", Fvector, Svector, 0, MANY, 0,
        doc: /* Return a newly created vector with specified arguments as 
elements.
 Any number of arguments, even zero arguments, are allowed.
@@ -4964,7 +4919,10 @@
       for (i = 0; i < size; i++)
        vec->contents[i] = Fpurecopy (XVECTOR (obj)->contents[i]);
       if (COMPILEDP (obj))
-       XSETCOMPILED (obj, vec);
+       {
+         XSETPVECTYPE (vec, PVEC_COMPILED);
+         XSETCOMPILED (obj, vec);
+       }
       else
        XSETVECTOR (obj, vec);
       return obj;


--- orig/src/chartab.c
+++ mod/src/chartab.c
@@ -7,7 +7,7 @@
 
 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)
+the Free Software Foundation; either version 3, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -85,6 +85,7 @@
 
   size = VECSIZE (struct Lisp_Char_Table) - 1 + n_extras;
   vector = Fmake_vector (make_number (size), init);
+  XSETPVECTYPE (XVECTOR (vector), PVEC_CHAR_TABLE);
   XCHAR_TABLE (vector)->parent = Qnil;
   XCHAR_TABLE (vector)->purpose = purpose;
   XSETCHAR_TABLE (vector, XCHAR_TABLE (vector));
@@ -100,6 +101,7 @@
   int size = VECSIZE (struct Lisp_Sub_Char_Table) - 1 + chartab_size[depth];
 
   table = Fmake_vector (make_number (size), defalt);
+  XSETPVECTYPE (XVECTOR (table), PVEC_SUB_CHAR_TABLE);
   XSUB_CHAR_TABLE (table)->depth = make_number (depth);
   XSUB_CHAR_TABLE (table)->min_char = make_number (min_char);
   XSETSUB_CHAR_TABLE (table, XSUB_CHAR_TABLE (table));
@@ -156,6 +158,7 @@
   int i;
 
   copy = Fmake_vector (make_number (size), Qnil);
+  XSETPVECTYPE (XVECTOR (copy), PVEC_CHAR_TABLE);
   XCHAR_TABLE (copy)->defalt = XCHAR_TABLE (table)->defalt;
   XCHAR_TABLE (copy)->parent = XCHAR_TABLE (table)->parent;
   XCHAR_TABLE (copy)->purpose = XCHAR_TABLE (table)->purpose;


--- orig/src/coding.c
+++ mod/src/coding.c
@@ -387,9 +387,6 @@
    terminal coding system is nil.  */
 struct coding_system safe_terminal_coding;
 
-/* Default coding system to be used to write a file.  */
-struct coding_system default_buffer_file_coding;
-
 Lisp_Object Vfile_coding_system_alist;
 Lisp_Object Vprocess_coding_system_alist;
 Lisp_Object Vnetwork_coding_system_alist;
@@ -8329,9 +8326,10 @@
      (terminal)
      Lisp_Object terminal;
 {
-  Lisp_Object coding_system;
+  struct coding_system *terminal_coding
+    = TERMINAL_TERMINAL_CODING (get_terminal (terminal, 1));
+  Lisp_Object coding_system = CODING_ID_NAME (terminal_coding->id);
 
-  coding_system = TERMINAL_TERMINAL_CODING (get_terminal (terminal, 
1))->symbol;
   /* For backward compatibility, return nil if it is `undecided'. */
   return (! EQ (coding_system, Qundecided) ? coding_system : Qnil);
 }
@@ -8354,11 +8352,13 @@
 }
 
 DEFUN ("keyboard-coding-system",
-       Fkeyboard_coding_system, Skeyboard_coding_system, 0, 0, 0,
+       Fkeyboard_coding_system, Skeyboard_coding_system, 0, 1, 0,
        doc: /* Return coding system specified for decoding keyboard input.  */)
-     ()
+     (terminal)
+     Lisp_Object terminal;
 {
-  return CODING_ID_NAME (keyboard_coding.id);
+  return CODING_ID_NAME (TERMINAL_KEYBOARD_CODING
+                        (get_terminal (terminal, 1))->id);
 }
 

@@ -8643,11 +8643,11 @@
   else
     {
       charset_list = Fcopy_sequence (charset_list);
-      for (tail = charset_list; !NILP (tail); tail = Fcdr (tail))
+      for (tail = charset_list; CONSP (tail); tail = XCDR (tail))
        {
          struct charset *charset;
 
-         val = Fcar (tail);
+         val = XCAR (tail);
          CHECK_CHARSET_GET_CHARSET (val, charset);
          if (EQ (coding_type, Qiso_2022)
              ? CHARSET_ISO_FINAL (charset) < 0
@@ -9827,8 +9827,6 @@
     Fdefine_coding_system_internal (coding_arg_max, args);
   }
 
-  setup_coding_system (Qno_conversion, &keyboard_coding);
-  setup_coding_system (Qundecided, &terminal_coding);
   setup_coding_system (Qno_conversion, &safe_terminal_coding);
 
   {


--- orig/src/coding.h
+++ mod/src/coding.h
@@ -746,9 +746,6 @@
    terminal coding system is nil.  */
 extern struct coding_system safe_terminal_coding;
 
-/* Default coding system to be used to write a file.  */
-extern struct coding_system default_buffer_file_coding;
-
 /* Default coding systems used for process I/O.  */
 extern Lisp_Object Vdefault_process_coding_system;
 


--- orig/src/doc.c
+++ mod/src/doc.c
@@ -617,8 +617,10 @@
     int nr_read;
     char *cp = NULL;
     char *beg, *end;
+    Lisp_Object buildobj = Fexpand_file_name (build_string ("buildobj.lst"),
+                                             Vdoc_directory);
 
-    fd = emacs_open ("buildobj.lst", O_RDONLY, 0);
+    fd = emacs_open (SDATA (buildobj), O_RDONLY, 0);
     if (fd < 0)
       report_file_error ("Opening file buildobj.lst", Qnil);
 


--- orig/src/emacs.c
+++ mod/src/emacs.c
@@ -1324,7 +1324,6 @@
       syms_of_macterm ();
       syms_of_macmenu ();
       syms_of_macselect ();
-      syms_of_data ();
       syms_of_search ();
       syms_of_frame ();
 
@@ -1332,6 +1331,16 @@
       mac_term_init (build_string ("Mac"), NULL, NULL);
       init_keyboard ();
 #endif
+      /* Called before syms_of_fileio, because it sets up Qerror_condition.  */
+      syms_of_data ();
+      syms_of_fileio ();
+      /* Before syms_of_coding to initialize Vgc_cons_threshold.  */
+      syms_of_alloc ();
+      /* Before syms_of_coding because it initializes Qcharsetp.  */
+      syms_of_charset ();
+      /* Before init_window_once, because it sets up the
+        Vcoding_system_hash_table.  */
+      syms_of_coding ();       /* This should be after syms_of_fileio.  */
 
       init_window_once ();     /* Init the window system.  */
       init_fileio_once ();     /* Must precede any path manipulation.  */
@@ -1553,7 +1562,6 @@
       /* Called before init_window_once for Mac OS Classic.  */
       syms_of_data ();
 #endif
-      syms_of_alloc ();
       syms_of_chartab ();
       syms_of_lread ();
       syms_of_print ();
@@ -1574,7 +1582,6 @@
       syms_of_ccl ();
 #endif
       syms_of_character ();
-      syms_of_charset ();
       syms_of_cmds ();
 #ifndef NO_DIR_LIBRARY
       syms_of_dired ();
@@ -1583,8 +1590,6 @@
       syms_of_doc ();
       syms_of_editfns ();
       syms_of_emacs ();
-      syms_of_fileio ();
-      syms_of_coding ();       /* This should be after syms_of_fileio.  */
 #ifdef CLASH_DETECTION
       syms_of_filelock ();
 #endif /* CLASH_DETECTION */


--- orig/src/fontset.c
+++ mod/src/fontset.c
@@ -1442,7 +1442,7 @@
     {
       Lisp_Object this = AREF (Vfontset_table, id);
 
-      if (EQ (FONTSET_BASE (this), base))
+      if (CHAR_TABLE_P (this) && EQ (FONTSET_BASE (this), base))
        {
          Fclear_face_cache (Qt);
          break;


--- orig/src/lread.c
+++ mod/src/lread.c
@@ -2324,7 +2324,7 @@
              tmp = read_vector (readcharfun, 0);
              if (XVECTOR (tmp)->size < CHAR_TABLE_STANDARD_SLOTS)
                error ("Invalid size char-table");
-             XSETCHAR_TABLE (tmp, XCHAR_TABLE (tmp));
+             XSETPVECTYPE (XVECTOR (tmp), PVEC_CHAR_TABLE);
              return tmp;
            }
          else if (c == '^')
@@ -2344,7 +2344,7 @@
                  size = XVECTOR (tmp)->size - 2;
                  if (chartab_size [depth] != size)
                    error ("Invalid size char-table");
-                 XSETSUB_CHAR_TABLE (tmp, XSUB_CHAR_TABLE (tmp));
+                 XSETPVECTYPE (XVECTOR (tmp), PVEC_SUB_CHAR_TABLE);
                  return tmp;
                }
              invalid_syntax ("#^^", 3);


--- orig/src/term.c
+++ mod/src/term.c
@@ -41,7 +41,6 @@
 #include "lisp.h"
 #include "termchar.h"
 #include "termopts.h"
-#include "lisp.h"
 #include "buffer.h"
 #include "character.h"
 #include "charset.h"


--- orig/src/terminal.c
+++ mod/src/terminal.c
@@ -242,8 +242,8 @@
   terminal->terminal_coding =
     (struct coding_system *) xmalloc (sizeof (struct coding_system));
 
-  setup_coding_system (Qnil, terminal->keyboard_coding);
-  setup_coding_system (Qnil, terminal->terminal_coding);
+  setup_coding_system (Qno_conversion, terminal->keyboard_coding);
+  setup_coding_system (Qundecided, terminal->terminal_coding);
 
   terminal->param_alist = Qnil;
   return terminal;


--- orig/src/xdisp.c
+++ mod/src/xdisp.c
@@ -18210,9 +18210,11 @@
          {
            /* No need to mention EOL here--the terminal never needs
               to do EOL conversion.  */
-           p = decode_mode_spec_coding (CODING_ID_NAME (keyboard_coding.id),
+           p = decode_mode_spec_coding (CODING_ID_NAME
+                                        (FRAME_KEYBOARD_CODING (f)->id),
                                         p, 0);
-           p = decode_mode_spec_coding (CODING_ID_NAME (terminal_coding.id),
+           p = decode_mode_spec_coding (CODING_ID_NAME
+                                        (FRAME_TERMINAL_CODING (f)->id),
                                         p, 0);
          }
        p = decode_mode_spec_coding (b->buffer_file_coding_system,
@@ -19615,70 +19617,6 @@
 }
 
 
-/* Get face and two-byte form of character C in face FACE_ID on frame
-   F.  The encoding of C is returned in *CHAR2B.  MULTIBYTE_P non-zero
-   means we want to display multibyte text.  DISPLAY_P non-zero means
-   make sure that X resources for the face returned are allocated.
-   Value is a pointer to a realized face that is ready for display if
-   DISPLAY_P is non-zero.  */
-
-static INLINE struct face *
-get_char_face_and_encoding (f, c, face_id, char2b, multibyte_p, display_p)
-     struct frame *f;
-     int c, face_id;
-     XChar2b *char2b;
-     int multibyte_p, display_p;
-{
-  struct face *face = FACE_FROM_ID (f, face_id);
-
-  if (!multibyte_p)
-    {
-      /* Unibyte case.  We don't have to encode, but we have to make
-        sure to use a face suitable for unibyte.  */
-      STORE_XCHAR2B (char2b, 0, c);
-      face_id = FACE_FOR_CHAR (f, face, c);
-      face = FACE_FROM_ID (f, face_id);
-    }
-  else if (c < 128)
-    {
-      /* Case of ASCII in a face known to fit ASCII.  */
-      STORE_XCHAR2B (char2b, 0, c);
-    }
-  else
-    {
-      int c1, c2, charset;
-
-      /* Split characters into bytes.  If c2 is -1 afterwards, C is
-        really a one-byte character so that byte1 is zero.  */
-      SPLIT_CHAR (c, charset, c1, c2);
-      if (c2 > 0)
-       STORE_XCHAR2B (char2b, c1, c2);
-      else
-       STORE_XCHAR2B (char2b, 0, c1);
-
-      /* Maybe encode the character in *CHAR2B.  */
-      if (face->font != NULL)
-       {
-         struct font_info *font_info
-           = FONT_INFO_FROM_ID (f, face->font_info_id);
-         if (font_info)
-           FRAME_RIF (f)->encode_char (c, char2b, font_info, 0);
-       }
-    }
-
-  /* Make sure X resources of the face are allocated.  */
-#ifdef HAVE_X_WINDOWS
-  if (display_p)
-#endif
-    {
-      xassert (face != NULL);
-      PREPARE_FACE_FOR_DISPLAY (f, face);
-    }
-
-  return face;
-}
-
-
 /* Set background width of glyph string S.  START is the index of the
    first glyph following S.  LAST_X is the right-most x-position + 1
    in the drawing area.  */
--- orig/src/xfaces.c
+++ mod/src/xfaces.c
@@ -5572,11 +5572,11 @@
            free_face_fontset (f, face);
          if (face->gc)
            {
+             BLOCK_INPUT;
 #ifdef USE_FONT_BACKEND
              if (enable_font_backend && face->font_info)
                font_done_for_face (f, face);
 #endif /* USE_FONT_BACKEND */
-             BLOCK_INPUT;
              x_free_gc (f, face->gc);
              face->gc = 0;
              UNBLOCK_INPUT;
@@ -5747,11 +5747,11 @@
          struct face *face = c->faces_by_id[i];
          if (face && face->gc)
            {
+             BLOCK_INPUT;
 #ifdef USE_FONT_BACKEND
              if (enable_font_backend && face->font_info)
                font_done_for_face (c->f, face);
 #endif /* USE_FONT_BACKEND */
-             BLOCK_INPUT;
              x_free_gc (c->f, face->gc);
              face->gc = 0;
              UNBLOCK_INPUT;


--- orig/src/xterm.c
+++ mod/src/xterm.c
@@ -6777,17 +6777,6 @@
                copy_bufptr = coding.destination;
              }
 
-               require = decoding_buffer_size (&coding, nbytes);
-               p = (unsigned char *) alloca (require);
-               coding.mode |= CODING_MODE_LAST_BLOCK;
-               /* We explicitly disable composition handling because
-                  key data should not contain any composition sequence.  */
-               coding.composing = COMPOSITION_DISABLED;
-               decode_coding (&coding, copy_bufptr, p, nbytes, require);
-               nbytes = coding.produced;
-               nchars = coding.produced_char;
-               copy_bufptr = p;
-
                /* Convert the input data to a sequence of
                   character events.  */
                for (i = 0; i < nbytes; i += len)
@@ -6803,6 +6792,5 @@
                    inev.ie.code = c;
                    kbd_buffer_store_event_hold (&inev.ie, hold_quit);
                  }
-             }
 
            /* Previous code updated count by nchars rather than nbytes,



* added files





reply via email to

[Prev in Thread] Current Thread [Next in Thread]