Fix up multi-tty merge

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-261
Creator:  Stefan Monnier <monnier@iro.umontreal.ca>
This commit is contained in:
Miles Bader 2007-10-12 21:06:27 +00:00
parent 47632e43ca
commit 985773c903
29 changed files with 4149 additions and 4260 deletions

12
configure vendored
View file

@ -18922,11 +18922,13 @@ _ACEOF
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 confdefs.h >>conftest.$ac_ext
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;
}

View file

@ -1,6 +1,9 @@
# Unlike most emacs dirs, etc has a simple non-autoconf-generated makefile
source ^(Makefile)$
# Auto-generated files, which ignore
precious ^(buildobj\.lst)$
# Generated files (DOC-X is generated on windows)
backup ^(DOC(|-[0-9.]*|-X))$

View file

@ -1,3 +1,31 @@
2007-10-12 Stefan Monnier <monnier@iro.umontreal.ca>
Fix up multy-tty merge.
* version.el (emacs-version): Bump to 23.0.60.
* term/x-win.el (x-initialize-window-system): Don't try to create
a fontset from a font-specification anymore. This was removed on the
unicode branch and mistakenly re-added by the multi-tty merge.
* term/w32-win.el: Remove duplicate code that's now in
w32-initialize-window-system.
(w32-initialize-window-system): Don't try to create a fontset from
a font-specification anymore. This was removed on the unicode branch
and mistakenly re-added by the multi-tty merge.
* term/mac-win.el: Remove duplicate top-level code.
* ldefs-boot.el: Update.
* language/ethio-util.el:
* international/characters.el: Use utf-8 rather than utf-8-emacs
since it works as well and has the advantage of working with
non-unicode versions of Emacs.
* international/encoded-kb.el (encoded-kbd-setup-display): Use the new
multi-tty code, which includes the previous local change.
2007-09-07 Kenichi Handa <handa@m17n.org>
* skeleton.el (skeleton-internal-1): Use integerp and stringp

View file

@ -283,7 +283,7 @@ Not documented
;;;;;; do* do loop return-from return block etypecase typecase ecase
;;;;;; case load-time-value eval-when destructuring-bind function*
;;;;;; defmacro* defun* gentemp gensym cl-compile-time-init) "cl-macs"
;;;;;; "cl-macs.el" "6990af555f962480552cf0867f3d5bab")
;;;;;; "cl-macs.el" "6ebe05f6ba95a14ea35d74ef52c17882")
;;; Generated autoloads from cl-macs.el
(autoload 'cl-compile-time-init "cl-macs" "\

View file

@ -1171,7 +1171,7 @@
))
;; Local Variables:
;; coding: utf-8-emacs
;; coding: utf-8
;; End:
;; arch-tag: 85889c35-9f4d-4912-9bf5-82de31b0d42d

View file

@ -333,53 +333,43 @@ The following key sequence may cause multilingual text insertion."
(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.
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)))))
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))))
(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)

View file

@ -1,4 +1,4 @@
;;; ethio-util.el --- utilities for Ethiopic -*- coding: utf-8-emacs; -*-
;;; ethio-util.el --- utilities for Ethiopic -*- coding: utf-8; -*-
;; Copyright (C) 1997, 1998, 2002, 2003, 2004, 2005, 2006, 2007
;; Free Software Foundation, Inc.

File diff suppressed because one or more lines are too long

View file

@ -6498,7 +6498,7 @@ If FACE is not a valid face name, use default face."
;; But autoload them here to make the separation invisible.
;;;### (autoloads (ps-mule-end-job ps-mule-begin-job ps-mule-initialize
;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "bb18668f99d691db470ec2a32753ba28")
;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "ba0ba38bf1f9831ca12701290fd4b211")
;;; Generated autoloads from ps-mule.el
(defvar ps-multibyte-buffer nil "\
@ -6544,20 +6544,20 @@ Valid values are:
Any other value is treated as nil.")
(custom-autoload (quote ps-multibyte-buffer) "ps-mule" t)
(custom-autoload 'ps-multibyte-buffer "ps-mule" t)
(autoload (quote ps-mule-initialize) "ps-mule" "\
(autoload 'ps-mule-initialize "ps-mule" "\
Initialize global data for printing multi-byte characters.
\(fn)" nil nil)
(autoload (quote ps-mule-begin-job) "ps-mule" "\
(autoload 'ps-mule-begin-job "ps-mule" "\
Start printing job for multi-byte chars between FROM and TO.
It checks if all multi-byte characters in the region are printable or not.
\(fn FROM TO)" nil nil)
(autoload (quote ps-mule-end-job) "ps-mule" "\
(autoload 'ps-mule-end-job "ps-mule" "\
Finish printing job for multi-byte chars.
\(fn)" nil nil)

View file

@ -2346,34 +2346,6 @@ See also `mac-dnd-known-types'."
(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)

View file

@ -1076,44 +1076,6 @@ European languages which are distributed with Windows as
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 @@ pop-up menu are unaffected by `w32-list-proportional-fonts')."
;; 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 @@ pop-up menu are unaffected by `w32-list-proportional-fonts')."
(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

View file

@ -2469,28 +2469,6 @@ order until succeed.")
;; 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))

View file

@ -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

View file

@ -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,Ad(Brv <jan.h.d@swipnet.se>
* xfns.c (xic_create_xfontset): Initialize missing_list to NULL.

View file

@ -1,3 +1,52 @@
2007-10-12 Stefan Monnier <monnier@iro.umontreal.ca>
Fix up multy-tty merge.
* xterm.c (handle_one_xevent): Remove duplicate code and fix up nesting
and indentation.
* xfaces.c (free_realized_face, clear_face_gcs):
Include font_done_for_face in the input_blocked section, just in case.
* xdisp.c (decode_mode_spec): Use terminal-local coding systems.
(get_char_face_and_encoding): Undo last change and remove the *other*
duplicate definition (i.e. keep the one that's better scoped and that
includes code for the font-backend).
* terminal.c (create_terminal): Default keyboard_coding to
`no-conversion' and terminal_coding to `undecided'.
* lread.c (read1): Use XSETPVECTYPE to set a pseudovector's tag.
* fontset.c (free_realized_fontsets): Check that the table entry does
contain a fontset before trying to compare it to `base'.
* emacs.c (main): Move syms_of_data, syms_of_fileio, syms_of_alloc,
syms_of_charset, and syms_of_coding earlier because init_window_once
now needs Vcoding_system_hash_table to be setup.
* coding.h (default_buffer_file_coding): Remove.
* coding.c (default_buffer_file_coding): Remove.
(Fterminal_coding_system, Fkeyboard_coding_system): Use ->id rather
than ->symbol, and use the terminal-local coding system.
(syms_of_coding): Don't setup the coding-systems that are not
terminal-local.
(Fdefine_coding_system_internal): Use XCAR/XCDR.
* chartab.c (Fmake_char_table, make_sub_char_table, copy_char_table):
Use XSETPVECTYPE now that XSETCHAR_TABLE doesn't set the tag anymore.
* alloc.c (Fmake_char_table, make_sub_char_table): Remove. They're now
in chartab.c and were re-added here by mistake.
(Fpurecopy): Use XSETPVECTYPE after copying a COMPILED pseudovector.
* doc.c (Fsnarf_documentation):
* Makefile.in (temacs${EXEEXT}, mostlyclean): Move buildobj.lst from
src to etc.
* ChangeLog.10: Add mistakenly removed entry.
2007-10-12 Dan Nicolaescu <dann@ics.uci.edu>
* Makefile.in (fringe.o, minibuf.o): Fix dependencies.

View file

@ -1007,7 +1007,7 @@ ${lispsource}international/charprop.el: temacs${EXEEXT} ${UNIDATA}
#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 @@ ecrt0.o: ecrt0.c $(config_h)
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 \
@ -1288,11 +1288,10 @@ 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 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 @@ mostlyclean:
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.

View file

@ -3070,51 +3070,6 @@ See also the function `vector'. */)
}
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 @@ Does not copy symbols. Copies strings without text properties. */)
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;

View file

@ -7,7 +7,7 @@ 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)
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 @@ the char-table has no extra slot. */)
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 @@ make_sub_char_table (depth, min_char, defalt)
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 @@ copy_char_table (table)
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;

View file

@ -387,9 +387,6 @@ int inherit_process_coding_system;
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 @@ frame's terminal device. */)
(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 ("set-keyboard-coding-system-internal", Fset_keyboard_coding_system_intern
}
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 @@ usage: (define-coding-system-internal ...) */)
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 @@ character.");
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);
{

View file

@ -746,9 +746,6 @@ extern int inherit_process_coding_system;
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;

View file

@ -617,8 +617,10 @@ the same file name is found in the `doc-directory'. */)
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);

View file

@ -1324,7 +1324,6 @@ main (argc, argv
syms_of_macterm ();
syms_of_macmenu ();
syms_of_macselect ();
syms_of_data ();
syms_of_search ();
syms_of_frame ();
@ -1332,6 +1331,16 @@ main (argc, argv
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 @@ main (argc, argv
/* 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 @@ main (argc, argv
syms_of_ccl ();
#endif
syms_of_character ();
syms_of_charset ();
syms_of_cmds ();
#ifndef NO_DIR_LIBRARY
syms_of_dired ();
@ -1583,8 +1590,6 @@ main (argc, argv
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 */

View file

@ -1442,7 +1442,7 @@ free_realized_fontsets (base)
{
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;

View file

@ -2324,7 +2324,7 @@ read1 (readcharfun, pch, first_in_list)
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 @@ read1 (readcharfun, pch, first_in_list)
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);

View file

@ -41,7 +41,6 @@ Boston, MA 02110-1301, USA. */
#include "lisp.h"
#include "termchar.h"
#include "termopts.h"
#include "lisp.h"
#include "buffer.h"
#include "character.h"
#include "charset.h"

View file

@ -242,8 +242,8 @@ create_terminal (void)
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;

View file

@ -18210,9 +18210,11 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
{
/* 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,
@ -19037,6 +19039,80 @@ append_glyph_string (head, tail, s)
}
/* 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);
#ifdef USE_FONT_BACKEND
if (enable_font_backend)
{
struct font *font = (struct font *) face->font_info;
if (font)
{
unsigned code = font->driver->encode_char (font, c);
if (code != FONT_INVALID_CODE)
STORE_XCHAR2B (char2b, (code >> 8), (code & 0xFF));
else
STORE_XCHAR2B (char2b, 0, 0);
}
}
else
#endif /* USE_FONT_BACKEND */
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, -1, Qnil);
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 if (face->font != NULL)
{
struct font_info *font_info
= FONT_INFO_FROM_ID (f, face->font_info_id);
struct charset *charset = CHARSET_FROM_ID (font_info->charset);
unsigned code = ENCODE_CHAR (charset, c);
if (CHARSET_DIMENSION (charset) == 1)
STORE_XCHAR2B (char2b, 0, code);
else
STORE_XCHAR2B (char2b, (code >> 8), (code & 0xFF));
/* Maybe encode the character in *CHAR2B. */
FRAME_RIF (f)->encode_char (c, char2b, font_info, charset, NULL);
}
/* 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;
}
/* Get face and two-byte form of character glyph GLYPH on frame F.
The encoding of GLYPH->u.ch is returned in *CHAR2B. Value is
a pointer to a realized face that is ready for display. */
@ -19541,70 +19617,6 @@ right_overwriting (s)
}
/* 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, -1, Qnil);
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. */

View file

@ -5572,11 +5572,11 @@ free_realized_face (f, face)
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 @@ clear_face_gcs (c)
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;

View file

@ -6777,32 +6777,20 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
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)
{
if (nchars == nbytes)
c = copy_bufptr[i], len = 1;
else
c = STRING_CHAR_AND_LENGTH (copy_bufptr + i,
nbytes - i, len);
inev.ie.kind = (SINGLE_BYTE_CHAR_P (c)
? ASCII_KEYSTROKE_EVENT
: MULTIBYTE_CHAR_KEYSTROKE_EVENT);
inev.ie.code = c;
kbd_buffer_store_event_hold (&inev.ie, hold_quit);
}
/* Convert the input data to a sequence of
character events. */
for (i = 0; i < nbytes; i += len)
{
if (nchars == nbytes)
c = copy_bufptr[i], len = 1;
else
c = STRING_CHAR_AND_LENGTH (copy_bufptr + i,
nbytes - i, len);
inev.ie.kind = (SINGLE_BYTE_CHAR_P (c)
? ASCII_KEYSTROKE_EVENT
: MULTIBYTE_CHAR_KEYSTROKE_EVENT);
inev.ie.code = c;
kbd_buffer_store_event_hold (&inev.ie, hold_quit);
}
/* Previous code updated count by nchars rather than nbytes,