From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Jason Rumney <jasonr@gnu.org>
Cc: emacs-unicode@gnu.org, emacs-devel@gnu.org, Miles Bader <miles@gnu.org>
Subject: Re: unicode merge failures 2007-10-12
Date: Fri, 12 Oct 2007 00:05:02 -0400 [thread overview]
Message-ID: <jwvwstt6kt2.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <jwv7ilt9m8x.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Thu\, 11 Oct 2007 21\:04\:46 -0400")
>>>>> "Stefan" == Stefan Monnier <monnier@iro.umontreal.ca> 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 emacs@sv.gnu.org/emacs--unicode--0--patch-258 to compare with
* comparing to emacs@sv.gnu.org/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)))))
\f
-;;; 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 <handa@m17n.org>
+
+ * editfns.c (Ftranslate_region_internal): New function.
+ (syms_of_editfns): Defsubr it.
+
2004-10-22 Jan Djärv <jan.h.d@swipnet.se>
* 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);
}
\f
@@ -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
next prev parent reply other threads:[~2007-10-12 4:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-11 16:13 unicode merge failures 2007-10-12 Miles Bader
2007-10-11 22:35 ` Jason Rumney
2007-10-12 1:04 ` Stefan Monnier
2007-10-12 4:05 ` Stefan Monnier [this message]
2007-10-12 17:43 ` Stefan Monnier
2007-10-12 21:30 ` Dan Nicolaescu
2007-10-12 21:51 ` Miles Bader
2007-10-12 22:12 ` Dan Nicolaescu
2007-10-16 23:04 ` James Cloos
2007-10-17 0:04 ` Andreas Schwab
2007-10-17 1:04 ` Kenichi Handa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwvwstt6kt2.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=emacs-devel@gnu.org \
--cc=emacs-unicode@gnu.org \
--cc=jasonr@gnu.org \
--cc=miles@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.