view lisp/mule/mule-win32-init.el @ 5607:1a507c4c6c42

Refactor out sequence-oriented builtins from fns.c to the new sequence.c. src/ChangeLog addition: 2011-12-04 Aidan Kehoe <kehoea@parhasard.net> * Makefile.in.in (objs): * depend: Add sequence.o to the list of objects and dependencies. * alloc.c: * alloc.c (mark_bit_vector): * alloc.c (print_bit_vector): * alloc.c (bit_vector_equal): * alloc.c (internal_bit_vector_equalp_hash): * alloc.c (bit_vector_hash): * alloc.c (init_alloc_once_early): Move the implementation of the bit vector type here from fns.c. * emacs.c (main_1): Call syms_of_sequence() here, now sequence.c is included. * fns.c (Fold_rassq): Move this together with the rest of the Fold_* functions. * fns.c: * fns.c (syms_of_fns): Move most functions dealing with sequences generally, and especially those taking key arguments, to a separate file, sequence.c. * general-slots.h: Qyes_or_no_p belong here, not fns.c. * lisp.h: Make Flist_length available here, it's used by sequence.c * sequence.c: * sequence.c (check_sequence_range): * sequence.c (Flength): * sequence.c (check_other_nokey): * sequence.c (check_other_key): * sequence.c (check_if_key): * sequence.c (check_match_eq_key): * sequence.c (check_match_eql_key): * sequence.c (check_match_equal_key): * sequence.c (check_match_equalp_key): * sequence.c (check_match_other_key): * sequence.c (check_lss_key): * sequence.c (check_lss_key_car): * sequence.c (check_string_lessp_key): * sequence.c (check_string_lessp_key_car): * sequence.c (get_check_match_function_1): * sequence.c (get_merge_predicate): * sequence.c (count_with_tail): * sequence.c (list_count_from_end): * sequence.c (string_count_from_end): * sequence.c (Fcount): * sequence.c (Fsubseq): * sequence.c (list_position_cons_before): * sequence.c (FmemberX): * sequence.c (Fadjoin): * sequence.c (FassocX): * sequence.c (FrassocX): * sequence.c (position): * sequence.c (Fposition): * sequence.c (Ffind): * sequence.c (delq_no_quit_and_free_cons): * sequence.c (FdeleteX): * sequence.c (FremoveX): * sequence.c (list_delete_duplicates_from_end): * sequence.c (Fdelete_duplicates): * sequence.c (Fremove_duplicates): * sequence.c (Fnreverse): * sequence.c (Freverse): * sequence.c (list_merge): * sequence.c (array_merge): * sequence.c (list_array_merge_into_list): * sequence.c (list_list_merge_into_array): * sequence.c (list_array_merge_into_array): * sequence.c (Fmerge): * sequence.c (list_sort): * sequence.c (array_sort): * sequence.c (FsortX): * sequence.c (Ffill): * sequence.c (mapcarX): * sequence.c (shortest_length_among_sequences): * sequence.c (Fmapconcat): * sequence.c (FmapcarX): * sequence.c (Fmapvector): * sequence.c (Fmapcan): * sequence.c (Fmap): * sequence.c (Fmap_into): * sequence.c (Fsome): * sequence.c (Fevery): * sequence.c (Freduce): * sequence.c (replace_string_range_1): * sequence.c (Freplace): * sequence.c (Fnsubstitute): * sequence.c (Fsubstitute): * sequence.c (subst): * sequence.c (sublis): * sequence.c (Fsublis): * sequence.c (nsublis): * sequence.c (Fnsublis): * sequence.c (Fsubst): * sequence.c (Fnsubst): * sequence.c (tree_equal): * sequence.c (Ftree_equal): * sequence.c (mismatch_from_end): * sequence.c (mismatch_list_list): * sequence.c (mismatch_list_string): * sequence.c (mismatch_list_array): * sequence.c (mismatch_string_array): * sequence.c (mismatch_string_string): * sequence.c (mismatch_array_array): * sequence.c (get_mismatch_func): * sequence.c (Fmismatch): * sequence.c (Fsearch): * sequence.c (venn): * sequence.c (nvenn): * sequence.c (Funion): * sequence.c (Fset_exclusive_or): * sequence.c (Fnset_exclusive_or): * sequence.c (syms_of_sequence): Add this file, containing those general functions that dealt with sequences that were in fns.c. * symsinit.h: Make syms_of_sequence() available here. man/ChangeLog addition: 2011-12-04 Aidan Kehoe <kehoea@parhasard.net> * internals/internals.texi (Basic Lisp Modules): Document sequence.c here too.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 04 Dec 2011 18:42:50 +0000
parents 248176c74e6b
children
line wrap: on
line source

;;; mule-win32-init.el --- initialization code for MS Windows/Cygwin under MULE
;;; Copyright (C) 2001, 2002 Ben Wing.

;; 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 3 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.

(make-coding-system
 'mswindows-multibyte 'mswindows-multibyte
 "MS Windows Multibyte (current code page)"
 '(mnemonic "MSW-MB"
   documentation
   "MS Windows multibyte -- current code page.

This implements the encoding specified by the current code page --
i.e. the ANSI code page corresponding to the current locale, as
returned by

  (mswindows-locale-code-page (mswindows-current-locale))
"
   locale current
   code-page ansi))

;; we temporarily aliased this to raw-text in intl-win32.c.
(define-coding-system-alias 'mswindows-multibyte-system-default nil)
(make-coding-system
 'mswindows-multibyte-system-default 'mswindows-multibyte
 "MS Windows Multibyte (system default code page)"
 '(mnemonic "MSW-MB-SysDef"
   documentation
   "MS Windows multibyte -- system default code page.

This implements the encoding specified by the system default code page
-- i.e. the ANSI code page corresponding to the system default locale,
as returned by

  (mswindows-locale-code-page (mswindows-system-default-locale))
"
   locale system-default
   code-page ansi))

(make-coding-system
 'mswindows-multibyte-user-default 'mswindows-multibyte
 "MS Windows Multibyte (user default code page)"
 '(mnemonic "MSW-MB-UserDef"
   documentation
   "MS Windows multibyte -- user default code page.

This implements the encoding specified by the user default code page
-- i.e. the ANSI code page corresponding to the user default locale,
as returned by

  (mswindows-locale-code-page (mswindows-user-default-locale))
"
   locale user-default
   code-page ansi))

(make-coding-system
 'mswindows-multibyte-oem 'mswindows-multibyte
 "MS Windows Multibyte (current OEM code page)"
 '(mnemonic "MSW-MB-OEM"
   documentation
   "MS Windows multibyte -- current OEM code page.

This implements the encoding specified by the current OEM code page
-- i.e. the OEM code page corresponding to the current locale,
as returned by

  (mswindows-locale-oem-code-page (mswindows-current-locale))
"
   locale current
   code-page oem))

(make-coding-system
 'mswindows-multibyte-oem-system-default 'mswindows-multibyte
 "MS Windows Multibyte (system default OEM code page)"
 '(mnemonic "MSW-MB-OEM-SysDef"
   documentation
   "MS Windows multibyte -- system default OEM code page.

This implements the encoding specified by the system default OEM code page
-- i.e. the OEM code page corresponding to the system default locale,
as returned by

  (mswindows-locale-oem-code-page (mswindows-system-default-locale))
"
   locale system-default
   code-page oem))

(make-coding-system
 'mswindows-multibyte-oem-user-default 'mswindows-multibyte
 "MS Windows Multibyte (user default OEM code page)"
 '(mnemonic "MSW-MB-OEM-UserDef"
   documentation
   "MS Windows multibyte -- user default OEM code page.

This implements the encoding specified by the user default OEM code page
-- i.e. the OEM code page corresponding to the user default locale,
as returned by

  (mswindows-locale-oem-code-page (mswindows-user-default-locale))
"
   locale user-default
   code-page oem))

(loop
  for (ansioem cp category name)
  in '(("EBCDIC"      037 no-conversion "EBCDIC")
       ("OEM"         437 no-conversion "MS-DOS United States")
       ("EBCDIC"      500 no-conversion "EBCDIC \"500V1\"")

       ;; This is ISO-8859-6. 
       ;; ("OEM"         708 "Arabic (ASMO 708)")
       ("OEM"         709 no-conversion "Arabic (ASMO 449+, BCON V4)")
       ("OEM"         710 no-conversion "Arabic (Transparent Arabic)")
       ("OEM"         720 no-conversion "Arabic (Transparent ASMO)")
       ("OEM"         737 no-conversion "Greek (formerly 437G)")
       ("OEM"         775 no-conversion "Baltic")
       ("OEM"         850 no-conversion "MS-DOS Multilingual (Latin I)")
       ("OEM"         852 no-conversion "MS-DOS Slavic (Latin II)")
       ("OEM"         855 no-conversion "IBM Cyrillic (primarily Russian)")
       ("OEM"         857 no-conversion "IBM Turkish")
       ("OEM"         860 no-conversion "MS-DOS Portuguese")
       ("OEM"         861 no-conversion "MS-DOS Icelandic")
       ("OEM"         862 no-conversion "Hebrew")
       ("OEM"         863 no-conversion "MS-DOS Canadian-French")
       ("OEM"         864 no-conversion "Arabic")
       ("OEM"         865 no-conversion "MS-DOS Nordic")
       ; ("OEM"         866 no-conversion "MS-DOS Russian")
       ("OEM"         869 no-conversion "IBM Modern Greek")
       ; ("Ansi/OEM"    874 no-conversion "Thai")
       ("EBCDIC"      875 no-conversion "EBCDIC")
       ("Ansi/OEM"    932 shift_jis "Japanese")
       ("Ansi/OEM"    936 iso_8_2 "Chinese (PRC, Singapore)")
       ("Ansi/OEM"    949 iso_8_2 "Korean")
       ("Ansi/OEM"    950 big5 "Chinese (Taiwan; Hong Kong SAR, PRC)")
       ("EBCDIC"      1026 no-conversion "EBCDIC")

       ;; This code page doesn't work. See 
       ;; http://blogs.msdn.com/michkap/archive/2005/08/01/446475.aspx
       ; ("ANSI"        1200 utf-16-little-endian "Unicode (BMP of ISO 10646)")

       ;; We implement this ourselves, and keeping the same implementation
       ;; across platforms means behaviour is a bit more consistent.
       ; ("ANSI"        1250 no-conversion "Windows 3.1 Eastern European")
       ; ("ANSI"        1251 no-conversion "Windows 3.1 Cyrillic")
       ; ("ANSI"        1252 no-conversion "Windows 3.1 US (ANSI)")

        ; ("ANSI"        1253 no-conversion "Windows 3.1 Greek")
       ("ANSI"        1254 no-conversion "Windows 3.1 Turkish")
       ("ANSI"        1255 no-conversion "Hebrew")
       ;; We implement these ourselves.
       ; ("ANSI"        1256 no-conversion "Arabic")
       ("ANSI"        1257 no-conversion "Baltic")
       ("ANSI"        1258 no-conversion "VietNam")
       ;; #### Is this category right? I don't have Lunde to hand, and the
       ;; online information on Johab is scant.
       ("Ansi/OEM"    1361 iso_8_2 "Korean (Johab)")
       ("Mac"         10000 no-conversion "Macintosh Roman")
       ("Mac"         10001 shift_jis "Macintosh Japanese")
       ("Mac"         10006 no-conversion "Macintosh Greek I")
       ("Mac"         10007 no-conversion "Macintosh Cyrillic")
       ("Mac"         10029 no-conversion "Macintosh Latin 2")
       ("Mac"         10079 no-conversion "Macintosh Icelandic")
       ("Mac"         10081 no-conversion "Macintosh Turkish"))
  do
  (make-coding-system
   (intern (format "windows-%s" cp))
   'mswindows-multibyte
   (format "MS Windows code page %s (%s, %s)" cp ansioem name)
   `(mnemonic
     ,(format "MSW-%s" cp)
     code-page ,cp
     documentation
     ,(format
       "MS Windows Multibyte -- code page %s (%s, %s).

This implements the encoding specified by code page %s.
For more information on code pages, see `mswindows-charset-code-page'."
       cp ansioem name cp)))
  (define-coding-system-alias 
    (intern (format "cp%s" cp))
    (intern (format "windows-%s" cp)))
  (coding-system-put (intern (format "windows-%s" cp)) 'category category))