Mercurial > hg > xemacs-beta
view lisp/mule/hebrew.el @ 5327:d1b17a33450b
Move the heavy lifting from cl-seq.el to C.
src/ChangeLog addition:
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
Move the heavy lifting from cl-seq.el to C, finally making those
functions first-class XEmacs citizens, with circularity checking,
built-in support for tests other than #'eql, and as much
compatibility with current Common Lisp as Paul Dietz' tests require.
* fns.c (check_eq_nokey, check_eq_key, check_eql_nokey)
(check_eql_key, check_equal_nokey, check_equal_key)
(check_equalp_nokey, check_equalp_key, check_string_match_nokey)
(check_string_match_key, check_other_nokey, check_other_key)
(check_if_nokey, check_if_key, check_match_eq_key)
(check_match_eql_key, check_match_equal_key)
(check_match_equalp_key, check_match_other_key): New. These are
basically to provide function pointers to be used by Lisp
functions that take TEST, TEST-NOT and KEY arguments.
(get_check_match_function_1, get_check_test_function)
(get_check_match_function): These functions work out which of the
previous list of functions to use, given the keywords supplied by
the user.
(count_with_tail): New. This is the bones of #'count.
(list_count_from_end, string_count_from_end): Utility functions
for #'count.
(Fcount): New, moved from cl-seq.el.
(list_position_cons_before): New. The implementation of #'member*,
and important in implementing various other functions.
(FmemberX, Fadjoin, FassocX, FrassocX, Fposition, Ffind)
(FdeleteX, FremoveX, Fdelete_duplicates, Fremove_duplicates)
(Fnsubstitute, Fsubstitute, Fsublis, Fnsublis, Fsubst, Fnsubst)
(Ftree_equal, Fmismatch, Fsearch, Fintersection, Fnintersection)
(Fsubsetp, Fset_difference, Fnset_difference, Fnunion, Funion)
(Fset_exclusive_or, Fnset_exclusive_or): New, moved here from
cl-seq.el.
(position): New. The implementation of #'find and #'position.
(list_delete_duplicates_from_end, subst, sublis, nsublis)
(tree_equal, mismatch_from_end, mismatch_list_list)
(mismatch_list_string, mismatch_list_array)
(mismatch_string_array, mismatch_string_string)
(mismatch_array_array, get_mismatch_func): Helper C functions for
the Lisp-visible functions.
(venn, nvenn): New. The implementation of the main Lisp functions that
treat lists as sets.
lisp/ChangeLog addition:
2010-12-30 Aidan Kehoe <kehoea@parhasard.net>
* cl-seq.el:
Move the heavy lifting from this file to C. Dump the
cl-parsing-keywords macro, but don't use defun* for the functions
we define that do take keywords, dynamic scope lossage makes that
not practical.
* subr.el (sort, fillarray): Move these aliases here.
(map-plist): #'nsublis is now built-in, but at this point #'eql
isn't necessarily available as a test; use #'eq.
* obsolete.el (cl-delete-duplicates): Make this available for old
compiler macros and old code.
(memql): Document that this is equivalent to #'member*, and worse.
* cl.el (adjoin, subst): Removed. These are in C.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Thu, 30 Dec 2010 01:59:52 +0000 |
parents | 257b468bf2ca |
children | 308d34e9f07d |
line wrap: on
line source
;;; hebrew.el --- Support for Hebrew -*- coding: iso-2022-7bit; -*- ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. ;; Licensed to the Free Software Foundation. ;; Keywords: multilingual, Hebrew ;; 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) ;; any later version. ;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ISO 8859-8 (Hebrew) support. ;;; Code: ; (make-charset 'hebrew-iso8859-8 ; "Right-Hand Part of Latin/Hebrew Alphabet (ISO/IEC 8859-8): ISO-IR-138" ; '(dimension ; 1 ; registry "ISO8859-8" ; chars 96 ; columns 1 ; direction r2l ; final ?H ; graphic 1 ; short-name "RHP of ISO8859/8" ; long-name "RHP of Hebrew (ISO 8859-8): ISO-IR-138" ; )) ;; Syntax of Hebrew characters (loop for c from 96 to 122 do (modify-syntax-entry (make-char 'hebrew-iso8859-8 c) "w")) (modify-syntax-entry (make-char 'hebrew-iso8859-8 32) "w") ; no-break space (make-coding-system 'iso-8859-8 'fixed-width "ISO-8859-8 (Hebrew)" '(unicode-map ((#x80 ?\u0080) ;; <control> (#x81 ?\u0081) ;; <control> (#x82 ?\u0082) ;; <control> (#x83 ?\u0083) ;; <control> (#x84 ?\u0084) ;; <control> (#x85 ?\u0085) ;; <control> (#x86 ?\u0086) ;; <control> (#x87 ?\u0087) ;; <control> (#x88 ?\u0088) ;; <control> (#x89 ?\u0089) ;; <control> (#x8A ?\u008A) ;; <control> (#x8B ?\u008B) ;; <control> (#x8C ?\u008C) ;; <control> (#x8D ?\u008D) ;; <control> (#x8E ?\u008E) ;; <control> (#x8F ?\u008F) ;; <control> (#x90 ?\u0090) ;; <control> (#x91 ?\u0091) ;; <control> (#x92 ?\u0092) ;; <control> (#x93 ?\u0093) ;; <control> (#x94 ?\u0094) ;; <control> (#x95 ?\u0095) ;; <control> (#x96 ?\u0096) ;; <control> (#x97 ?\u0097) ;; <control> (#x98 ?\u0098) ;; <control> (#x99 ?\u0099) ;; <control> (#x9A ?\u009A) ;; <control> (#x9B ?\u009B) ;; <control> (#x9C ?\u009C) ;; <control> (#x9D ?\u009D) ;; <control> (#x9E ?\u009E) ;; <control> (#x9F ?\u009F) ;; <control> (#xA0 ?\u00A0) ;; NO-BREAK SPACE (#xA2 ?\u00A2) ;; CENT SIGN (#xA3 ?\u00A3) ;; POUND SIGN (#xA4 ?\u00A4) ;; CURRENCY SIGN (#xA5 ?\u00A5) ;; YEN SIGN (#xA6 ?\u00A6) ;; BROKEN BAR (#xA7 ?\u00A7) ;; SECTION SIGN (#xA8 ?\u00A8) ;; DIAERESIS (#xA9 ?\u00A9) ;; COPYRIGHT SIGN (#xAA ?\u00D7) ;; MULTIPLICATION SIGN (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (#xAC ?\u00AC) ;; NOT SIGN (#xAD ?\u00AD) ;; SOFT HYPHEN (#xAE ?\u00AE) ;; REGISTERED SIGN (#xAF ?\u00AF) ;; MACRON (#xB0 ?\u00B0) ;; DEGREE SIGN (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE (#xB4 ?\u00B4) ;; ACUTE ACCENT (#xB5 ?\u00B5) ;; MICRO SIGN (#xB6 ?\u00B6) ;; PILCROW SIGN (#xB7 ?\u00B7) ;; MIDDLE DOT (#xB8 ?\u00B8) ;; CEDILLA (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE (#xBA ?\u00F7) ;; DIVISION SIGN (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS (#xDF ?\u2017) ;; DOUBLE LOW LINE (#xE0 ?\u05D0) ;; HEBREW LETTER ALEF (#xE1 ?\u05D1) ;; HEBREW LETTER BET (#xE2 ?\u05D2) ;; HEBREW LETTER GIMEL (#xE3 ?\u05D3) ;; HEBREW LETTER DALET (#xE4 ?\u05D4) ;; HEBREW LETTER HE (#xE5 ?\u05D5) ;; HEBREW LETTER VAV (#xE6 ?\u05D6) ;; HEBREW LETTER ZAYIN (#xE7 ?\u05D7) ;; HEBREW LETTER HET (#xE8 ?\u05D8) ;; HEBREW LETTER TET (#xE9 ?\u05D9) ;; HEBREW LETTER YOD (#xEA ?\u05DA) ;; HEBREW LETTER FINAL KAF (#xEB ?\u05DB) ;; HEBREW LETTER KAF (#xEC ?\u05DC) ;; HEBREW LETTER LAMED (#xED ?\u05DD) ;; HEBREW LETTER FINAL MEM (#xEE ?\u05DE) ;; HEBREW LETTER MEM (#xEF ?\u05DF) ;; HEBREW LETTER FINAL NUN (#xF0 ?\u05E0) ;; HEBREW LETTER NUN (#xF1 ?\u05E1) ;; HEBREW LETTER SAMEKH (#xF2 ?\u05E2) ;; HEBREW LETTER AYIN (#xF3 ?\u05E3) ;; HEBREW LETTER FINAL PE (#xF4 ?\u05E4) ;; HEBREW LETTER PE (#xF5 ?\u05E5) ;; HEBREW LETTER FINAL TSADI (#xF6 ?\u05E6) ;; HEBREW LETTER TSADI (#xF7 ?\u05E7) ;; HEBREW LETTER QOF (#xF8 ?\u05E8) ;; HEBREW LETTER RESH (#xF9 ?\u05E9) ;; HEBREW LETTER SHIN (#xFA ?\u05EA) ;; HEBREW LETTER TAV (#xFD ?\u200E) ;; LEFT-TO-RIGHT MARK (#xFE ?\u200F)) ;; RIGHT-TO-LEFT MARK mnemonic "MIME/Hbrw")) (make-coding-system 'ctext-hebrew 'iso2022 "ISO-8859-8-E (Hebrew, explicit directional coding)" '(charset-g0 ascii charset-g1 hebrew-iso8859-8 charset-g2 t charset-g3 t safe-charsets (ascii hebrew-iso8859-8) mnemonic "CText/Hbrw" )) (set-language-info-alist "Hebrew" '((charset hebrew-iso8859-8) (coding-system iso-8859-8) (coding-priority iso-8859-8) ;; Not available in packages. ;; (input-method . "hebrew") (sample-text . "Hebrew [2],Hylem[0](B") (documentation . "Right-to-left writing is not yet supported.") )) ;;; hebrew.el ends here