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:
parent
47632e43ca
commit
985773c903
29 changed files with 4149 additions and 4260 deletions
12
configure
vendored
12
configure
vendored
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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))$
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" "\
|
||||
|
|
|
@ -1171,7 +1171,7 @@
|
|||
))
|
||||
|
||||
;; Local Variables:
|
||||
;; coding: utf-8-emacs
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
;; arch-tag: 85889c35-9f4d-4912-9bf5-82de31b0d42d
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
7789
lisp/ldefs-boot.el
7789
lisp/ldefs-boot.el
File diff suppressed because one or more lines are too long
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
50
src/alloc.c
50
src/alloc.c
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
22
src/coding.c
22
src/coding.c
|
@ -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);
|
||||
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
15
src/emacs.c
15
src/emacs.c
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
144
src/xdisp.c
144
src/xdisp.c
|
@ -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. */
|
||||
|
|
|
@ -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;
|
||||
|
|
40
src/xterm.c
40
src/xterm.c
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue