Mercurial > hg > xemacs-beta
view lisp/mule/mule-charset.el @ 502:7039e6323819
[xemacs-hg @ 2001-05-04 22:41:46 by ben]
----------------------- byte-comp warning fixes -----------------
New functions for cleanly eliminating byte-compiler warnings.
Their definitions require no changes at all in bytecomp.el,
meaning that any package that wants to use them and be compatible
with older versions of XEmacs need only copy the code and rename
the functions (i.e. prefix them with the package name).
Eliminate byte-compiler warnings using the new functions in
bytecomp-runtime.el.
Move coding-system-put,get,category, since they're not
Mule-specific and are used in prefer-coding-system.
font.el was incredibly ugly. Clean it up. Avoid using defsubst
for any exported functions, to avoid possible compatibility
problems if we later change the internal interface. (It happened
before, with face accessors, between 19.8 and 19.9). Fix tons
of warnings.
Clean up (new function gpm-is-supported-p eliminates duplicate
code in gpm-create/delete-device-hook) and eliminate warnings.
---------- make byte-recompile-directory work in the ---------
core `lisp' dir, even in the absence of
a Mule XEmacs (i.e. make it skip the Mule
files rather than trying to compile them).
now you should be able to do `touch *.el'
in the `lisp' dir, then
M-x byte-recompile-directory, and get no
warnings.
Avoid trying to compile Mule files in byte-recompile-directory
when we're not in a Mule XEmacs, since we're highly likely to get
syntax errors.
Add a coding-system cookie to all Mule files so that
byte-recompile-directory ignores them.
Magic cookie function moved to files.el from code-files.el (for
use by bytecomp even in a non-coding-system XEmacs), and changed
names and semantics for use by bytecomp. NOTE: IMO this is an
internal function that we can change as we like (and there is
absolutely no code anywhere else using the function).
---------------- GUI improvements: menus, help -------------------
Rearrange order of keymap declarations to be alphabetical.
Improve help on help to include all bindings, and group by
category. Add bindings for new Info commands. Remove
warnings. Use command-hyper-apropos in place of command-apropos.
Add a function to do the equivalent of command-apropos.
Evals its help-text argument so you can put expressions there.
Used now by help-for-help.
Add binding to continue text searches. Expand index searches to
work over multiple info documents. Add commands to search
text/index in User and Lispref.
Add new entry, "Uncomment Region" (parallels "Comment Out Region").
Redo Help menu; add bindings for new Info commands to search the
index or text of the User and Lispref manuals. Add command for
mark-paragraph, activate-region. Make Edit->R accelerator be
rectangle, not register (more commonly used), and put rectangle
first. Fix the Edit Init File entry to never load the .elc file.
Simplify the default-popup-menu. Add Cmds->Tabs menu.
Use kp-left not kp_left, etc.
---------------- Miscellaneous bug fixes/cleanup -------------------
byte-compiler-options: Correct doc string.
easy-menu-do-define: fix extra quote.
fill-paragraph-or-region:Rewrite to be more correct -- use
call-interactively so that we always get exactly the same
behavior as if the functions were called directly.
No need to fiddle with zmacs-region-stays, now that bogus
clearing of it (2001-04-28 src/ChangeLog) is removed.
Put dialog titles back in -- this time correctly. Fix various
other problems with leaks and such.
key-sequence-list-description:
Clean up fun to always correctly canonicalize.
Clean up Kinsoku comments, synch comment-region with FSF 20.7.
* simple.el (region-exists-p):
* simple.el (region-active-p):
Add comment about which one is correct to use in menu specs.
* sound.el (load-sound-file):
Minor code clean up.
* startup.el:
* startup.el (command-line-early):
* startup.el (initial-scratch-message):
Comment changes. Add info about sample.init.el to splash screen.
Improve initial-scratch-message and clarify purpose of Scratch
buffer. Fix byte-compile warning.
------------------------ Added features -------------------------
Add new variable to control whether etags checks all parent
directories for tag files. (On by default.)
* hash-table.el: New file, useful utility functions.
* dumped-lisp.el (preloaded-file-list): Dump hash-table.el.
------------ notable bug fix: Windows event code --------------
Get critical quit working.
------------ notable bug fix and new feature: regex code --------------
Shy groups were implemented in a horrible, half-assed way that
would cause them to screw up regex searching in most cases.
Fixed to work correctly.
Also extended back-reference syntax past 9. Only is recognized
as such if there are at least that many non-shy groups; and
optionally will warn about such uses, to catch old code that
might be using them differently. (Added variable to control
this in search.c -- `warn-about-possibly-incompatible-back-
references', on by default for the moment. Declared in lisp.h.
---------------- process/SIGIO improvements -------------------
define USE_GETADDRINFO to replace more complex conditional,
and use it. the code conditionalized on this in
unix_open_network_stream had *serious* problems handling errors.
it's now fixed, and major amounts of duplicate code between
the two versions were combined.
don't disable SIGIO and other interrupts unless
CONNECT_NEEDS_SLOWED_INTERRUPTS is defined -- don't penalize OS's
without bugs. similarly for a freebsd bug that was affecting all
OS's.
* s\ultrix.h:
define CONNECT_NEEDS_SLOWED_INTERRUPTS, since that's the OS
mentioned as having a kernel bug.
* sysdep.c (request_sigio_on_device):
* sysdep.c (unrequest_sigio_on_device):
fix SIGIO problems on Linux. add check for O_ASYNC in case it's
defined and FASYNC isn't. add comment about other ways to do
SIGIO on Linux.
* callproc.c (Fold_call_process_internal):
* process.c (Fstart_process_internal):
Deal with the possibility that `default-directory' doesn't
have terminating slash. Correct comments about vfork.
---------------- Miscellaneous bug fixes/cleanup -------------------
* callint.c (Finteractive):
Add lots of documentation -- exactly what the Lisp equivalents of
all the interactive specs are.
* console.h (struct console): change type of quit_char to Emchar.
* event-msw.c (lstream_type_create_mswindows_selectable): spacing
change.
Eliminate events-mod.h and combine into events.h.
* emacs.c:
* emacs.c (make_arg_list_1):
* emacs.c (main_1):
A couple of char->Extbyte changes, add a comment.
* glyphs-msw.c:
Correct indentation of function defns to not exceed 80 cols.
Try (sort of) to fix some code that sets the colors of the
progress gauge. (Commented out)
* keymap.c (syms_of_keymap):
use DEFSYMBOL.
* process.c (read_process_output):
No need to fiddle with zmacs_region_stays, now that bogus
clearing of it (see below) is removed.
* search.c (Freplace_match): warning fix.
author | ben |
---|---|
date | Fri, 04 May 2001 22:42:35 +0000 |
parents | abe6d1db359e |
children | 943eaba38521 |
line wrap: on
line source
;;; mule-charset.el --- Charset functions for Mule. -*- coding: iso-2022-7bit; -*- ;; Copyright (C) 1992 Free Software Foundation, Inc. ;; Copyright (C) 1995 Amdahl Corporation. ;; Copyright (C) 1996 Sun Microsystems. ;; Author: Unknown ;; Keywords: i18n, mule, internal ;; This file is part of XEmacs. ;; XEmacs 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) ;; any later version. ;; XEmacs is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Synched up with: Not synched. API at source level synched with FSF 20.3.9. ;;; Commentary: ;; These functions are not compatible at the bytecode level with Emacs/Mule, ;; and they never will be. -sb [1999-05-26] ;;; Code: ;;;; Classifying text according to charsets (defun charsets-in-region (start end &optional buffer) "Return a list of the charsets in the region between START and END. BUFFER defaults to the current buffer if omitted." (let (list) (save-excursion (if buffer (set-buffer buffer)) (save-restriction (narrow-to-region start end) (goto-char (point-min)) (while (not (eobp)) (let* (prev-charset (ch (char-after (point))) (charset (char-charset ch))) (if (not (eq prev-charset charset)) (progn (setq prev-charset charset) (or (memq charset list) (setq list (cons charset list)))))) (forward-char)))) list)) (defun charsets-in-string (string) "Return a list of the charsets in STRING." (let ((i 0) (len (length string)) prev-charset charset list) (while (< i len) (setq charset (char-charset (aref string i))) (if (not (eq prev-charset charset)) (progn (setq prev-charset charset) (or (memq charset list) (setq list (cons charset list))))) (setq i (1+ i))) list)) ;;;; Charset accessors (defun charset-iso-graphic-plane (charset) "Return the `graphic' property of CHARSET. See `make-charset'." (charset-property charset 'graphic)) (defun charset-iso-final-char (charset) "Return the final byte of the ISO 2022 escape sequence designating CHARSET." (charset-property charset 'final)) (defun charset-chars (charset) "Return the number of characters per dimension of CHARSET." (charset-property charset 'chars)) (defun charset-width (charset) "Return the number of display columns per character of CHARSET. This only applies to TTY mode (under X, the actual display width can be automatically determined)." (charset-property charset 'columns)) ;; #### FSFmacs returns 0 (defun charset-direction (charset) "Return the display direction (0 for `l2r' or 1 for `r2l') of CHARSET. Only left-to-right is currently implemented." (if (eq (charset-property charset 'direction) 'l2r) 0 1)) ;; Not in Emacs/Mule (defun charset-registry (charset) "Return the registry of CHARSET. This is a regular expression matching the registry field of fonts that can display the characters in CHARSET." (charset-property charset 'registry)) (defun charset-ccl-program (charset) "Return the CCL program of CHARSET. See `make-charset'." (charset-property charset 'ccl-program)) (defun charset-bytes (charset) "Useless in XEmacs, returns 1." 1) (define-obsolete-function-alias 'charset-columns 'charset-width) ;; 19990409 (define-obsolete-function-alias 'charset-final 'charset-iso-final-char) ;; 19990409 (define-obsolete-function-alias 'charset-graphic 'charset-iso-graphic-plane) ;; 19990409 (define-obsolete-function-alias 'charset-doc-string 'charset-description) ;; 19990409 ;;;; Define setf methods for all settable Charset properties (defsetf charset-registry set-charset-registry) (defsetf charset-ccl-program set-charset-ccl-program) ;;; FSF compatibility functions (defun charset-after (&optional pos) "Return charset of a character in current buffer at position POS. If POS is nil, it defauls to the current point. If POS is out of range, the value is nil." (when (null pos) (setq pos (point))) (check-argument-type 'integerp pos) (unless (or (< pos (point-min)) (> pos (point-max))) (char-charset (char-after pos)))) ;; Yuck! ;; We're not going to support this. ;(defun charset-info (charset) ; "Return a vector of information of CHARSET. ;The elements of the vector are: ; CHARSET-ID, BYTES, DIMENSION, CHARS, WIDTH, DIRECTION, ; LEADING-CODE-BASE, LEADING-CODE-EXT, ; ISO-FINAL-CHAR, ISO-GRAPHIC-PLANE, ; REVERSE-CHARSET, SHORT-NAME, LONG-NAME, DESCRIPTION, ; PLIST, ;where ;CHARSET-ID (integer) is the identification number of the charset. ;BYTES (integer) is the length of multi-byte form of a character in ; the charset: one of 1, 2, 3, and 4. ;DIMENSION (integer) is the number of bytes to represent a character of ;the charset: 1 or 2. ;CHARS (integer) is the number of characters in a dimension: 94 or 96. ;WIDTH (integer) is the number of columns a character in the charset ; occupies on the screen: one of 0, 1, and 2. ;DIRECTION (integer) is the rendering direction of characters in the ; charset when rendering. If 0, render from left to right, else ; render from right to left. ;LEADING-CODE-BASE (integer) is the base leading-code for the ; charset. ;LEADING-CODE-EXT (integer) is the extended leading-code for the ; charset. All charsets of less than 0xA0 has the value 0. ;ISO-FINAL-CHAR (character) is the final character of the ; corresponding ISO 2022 charset. ;ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked ; while encoding to variants of ISO 2022 coding system, one of the ; following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR). ;REVERSE-CHARSET (integer) is the charset which differs only in ; LEFT-TO-RIGHT value from the charset. If there's no such a ; charset, the value is -1. ;SHORT-NAME (string) is the short name to refer to the charset. ;LONG-NAME (string) is the long name to refer to the charset ;DESCRIPTION (string) is the description string of the charset. ;PLIST (property list) may contain any type of information a user ; want to put and get by functions `put-charset-property' and ; `get-charset-property' respectively." ; (vector ; (charset-id charset) ; 1 ; (charset-dimension charset) ; (charset-chars charset) ; (charset-width charset) ; (charset-direction charset) ; nil ;; (charset-leading-code-base (charset)) ; nil ;; (charset-leading-code-ext (charset)) ; (charset-iso-final-char charset) ; (charset-iso-graphic-plane charset) ; -1 ; (charset-short-name charset) ; (charset-long-name charset) ; (charset-description charset) ; (charset-plist charset))) ;(make-compatible 'charset-info "Don't use this if you can help it.") (defun define-charset (charset-id charset property-vector) "Define CHARSET-ID as the identification number of CHARSET with INFO-VECTOR. If CHARSET-ID is nil, it is decided automatically, which means CHARSET is treated as a private charset. INFO-VECTOR is a vector of the format: [DIMENSION CHARS WIDTH DIRECTION ISO-FINAL-CHAR ISO-GRAPHIC-PLANE SHORT-NAME LONG-NAME DESCRIPTION] The meanings of each elements is as follows: DIMENSION (integer) is the number of bytes to represent a character: 1 or 2. CHARS (integer) is the number of characters in a dimension: 94 or 96. WIDTH (integer) is the number of columns a character in the charset occupies on the screen: one of 0, 1, and 2. DIRECTION (integer) is the rendering direction of characters in the charset when rendering. If 0, render from left to right, else render from right to left. ISO-FINAL-CHAR (character) is the final character of the corresponding ISO 2022 charset. ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked while encoding to variants of ISO 2022 coding system, one of the following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR). SHORT-NAME (string) is the short name to refer to the charset. LONG-NAME (string) is the long name to refer to the charset. DESCRIPTION (string) is the description string of the charset." (make-charset charset (aref property-vector 8) (list 'short-name (aref property-vector 6) 'long-name (aref property-vector 7) 'dimension (aref property-vector 0) 'columns (aref property-vector 2) 'chars (aref property-vector 1) 'final (aref property-vector 4) 'graphic (aref property-vector 5) 'direction (aref property-vector 3)))) (make-compatible 'define-charset "") ;;; Charset property (defalias 'get-charset-property 'get) (defalias 'put-charset-property 'put) (defalias 'charset-plist 'object-plist) (defalias 'set-charset-plist 'setplist) ;; Setup auto-fill-chars for charsets that should invoke auto-filling. ;; SPACE and NEWLIE are already set. (let ((l '(katakana-jisx0201 japanese-jisx0208 japanese-jisx0212 chinese-gb2312 chinese-big5-1 chinese-big5-2))) (while l (put-char-table (car l) t auto-fill-chars) (setq l (cdr l)))) ;;; mule-charset.el ends here