;;; iso8859-1.el --- Set case and syntax tables for Latin 1

;; Copyright (C) 1992, 1997 Free Software Foundation, Inc.

;; Author: Jamie Zawinski <jwz@jwz.org>
;; Created: 19-aug-92
;; Maintainer: XEmacs Development Team
;; Keywords: internal, dumped

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

;;; Commentary:

;; created by jwz, 19-aug-92.
;; Sets the case and syntax tables for the ISO-8859/1 character set.

;;; Code:

(let ((table (standard-syntax-table)))
  ;;
  ;; The symbol characters
  ;;
  (modify-syntax-entry ?\240 "_"     table)   ; nobreakspace
  (modify-syntax-entry ?\241 "."     table)   ; exclamdown
  (modify-syntax-entry ?\242 "_"     table)   ; cent
  (modify-syntax-entry ?\243 "_"     table)   ; sterling
  (modify-syntax-entry ?\244 "_"     table)   ; currency
  (modify-syntax-entry ?\245 "_"     table)   ; yen
  (modify-syntax-entry ?\246 "_"     table)   ; brokenbar
  (modify-syntax-entry ?\247 "_"     table)   ; section
  (modify-syntax-entry ?\250 "_"     table)   ; diaeresis
  (modify-syntax-entry ?\251 "_"     table)   ; copyright
  (modify-syntax-entry ?\252 "_"     table)   ; ordfeminine
  (modify-syntax-entry ?\253 "(\273" table)   ; guillemotleft
  (modify-syntax-entry ?\254 "_"     table)   ; notsign
  (modify-syntax-entry ?\255 "_"     table)   ; hyphen
  (modify-syntax-entry ?\256 "_"     table)   ; registered
  (modify-syntax-entry ?\257 "_"     table)   ; macron
  (modify-syntax-entry ?\260 "_"     table)   ; degree
  (modify-syntax-entry ?\261 "_"     table)   ; plusminus
  (modify-syntax-entry ?\262 "_"     table)   ; twosuperior
  (modify-syntax-entry ?\263 "_"     table)   ; threesuperior
  (modify-syntax-entry ?\264 "_"     table)   ; acute
  (modify-syntax-entry ?\265 "_"     table)   ; mu
  (modify-syntax-entry ?\266 "_"     table)   ; paragraph
  (modify-syntax-entry ?\267 "_"     table)   ; periodcentered
  (modify-syntax-entry ?\270 "_"     table)   ; cedilla
  (modify-syntax-entry ?\271 "_"     table)   ; onesuperior
  (modify-syntax-entry ?\272 "_"     table)   ; masculine
  (modify-syntax-entry ?\273 ")\253" table)   ; guillemotright
  (modify-syntax-entry ?\274 "_"     table)   ; onequarter
  (modify-syntax-entry ?\275 "_"     table)   ; onehalf
  (modify-syntax-entry ?\276 "_"     table)   ; threequarters
  (modify-syntax-entry ?\277 "_"     table)   ; questiondown
  ;;
  ;; the upper-case characters (plus "multiply" and "ssharp") 
  ;;
  (modify-syntax-entry ?\300 "w" table)   ; Agrave
  (modify-syntax-entry ?\301 "w" table)   ; Aacute
  (modify-syntax-entry ?\302 "w" table)   ; Acircumflex
  (modify-syntax-entry ?\303 "w" table)   ; Atilde
  (modify-syntax-entry ?\304 "w" table)   ; Adiaeresis
  (modify-syntax-entry ?\305 "w" table)   ; Aring
  (modify-syntax-entry ?\306 "w" table)   ; AE
  (modify-syntax-entry ?\307 "w" table)   ; Ccedilla
  (modify-syntax-entry ?\310 "w" table)   ; Egrave
  (modify-syntax-entry ?\311 "w" table)   ; Eacute
  (modify-syntax-entry ?\312 "w" table)   ; Ecircumflex
  (modify-syntax-entry ?\313 "w" table)   ; Ediaeresis
  (modify-syntax-entry ?\314 "w" table)   ; Igrave
  (modify-syntax-entry ?\315 "w" table)   ; Iacute
  (modify-syntax-entry ?\316 "w" table)   ; Icircumflex
  (modify-syntax-entry ?\317 "w" table)   ; Idiaeresis
  (modify-syntax-entry ?\320 "w" table)   ; ETH
  (modify-syntax-entry ?\321 "w" table)   ; Ntilde
  (modify-syntax-entry ?\322 "w" table)   ; Ograve
  (modify-syntax-entry ?\323 "w" table)   ; Oacute
  (modify-syntax-entry ?\324 "w" table)   ; Ocircumflex
  (modify-syntax-entry ?\325 "w" table)   ; Otilde
  (modify-syntax-entry ?\326 "w" table)   ; Odiaeresis
  (modify-syntax-entry ?\327 "_" table)   ; multiply
  (modify-syntax-entry ?\330 "w" table)   ; Ooblique
  (modify-syntax-entry ?\331 "w" table)   ; Ugrave
  (modify-syntax-entry ?\332 "w" table)   ; Uacute
  (modify-syntax-entry ?\333 "w" table)   ; Ucircumflex
  (modify-syntax-entry ?\334 "w" table)   ; Udiaeresis
  (modify-syntax-entry ?\335 "w" table)   ; Yacute
  (modify-syntax-entry ?\336 "w" table)   ; THORN
  (modify-syntax-entry ?\337 "w" table)   ; ssharp
  ;;
  ;; the lower-case characters (plus "division" and "ydiaeresis")
  ;;
  (modify-syntax-entry ?\340 "w" table)   ; agrave
  (modify-syntax-entry ?\341 "w" table)   ; aacute
  (modify-syntax-entry ?\342 "w" table)   ; acircumflex
  (modify-syntax-entry ?\343 "w" table)   ; atilde
  (modify-syntax-entry ?\344 "w" table)   ; adiaeresis
  (modify-syntax-entry ?\345 "w" table)   ; aring
  (modify-syntax-entry ?\346 "w" table)   ; ae
  (modify-syntax-entry ?\347 "w" table)   ; ccedilla
  (modify-syntax-entry ?\350 "w" table)   ; egrave
  (modify-syntax-entry ?\351 "w" table)   ; eacute
  (modify-syntax-entry ?\352 "w" table)   ; ecircumflex
  (modify-syntax-entry ?\353 "w" table)   ; ediaeresis
  (modify-syntax-entry ?\354 "w" table)   ; igrave
  (modify-syntax-entry ?\355 "w" table)   ; iacute
  (modify-syntax-entry ?\356 "w" table)   ; icircumflex
  (modify-syntax-entry ?\357 "w" table)   ; idiaeresis
  (modify-syntax-entry ?\360 "w" table)   ; eth
  (modify-syntax-entry ?\361 "w" table)   ; ntilde
  (modify-syntax-entry ?\362 "w" table)   ; ograve
  (modify-syntax-entry ?\363 "w" table)   ; oacute
  (modify-syntax-entry ?\364 "w" table)   ; ocircumflex
  (modify-syntax-entry ?\365 "w" table)   ; otilde
  (modify-syntax-entry ?\366 "w" table)   ; odiaeresis
  (modify-syntax-entry ?\367 "_" table)   ; division
  (modify-syntax-entry ?\370 "w" table)   ; ooblique
  (modify-syntax-entry ?\371 "w" table)   ; ugrave
  (modify-syntax-entry ?\372 "w" table)   ; uacute
  (modify-syntax-entry ?\373 "w" table)   ; ucircumflex
  (modify-syntax-entry ?\374 "w" table)   ; udiaeresis
  (modify-syntax-entry ?\375 "w" table)   ; yacute
  (modify-syntax-entry ?\376 "w" table)   ; thorn
  (modify-syntax-entry ?\377 "w" table)   ; ydiaeresis
  )


(defconst iso8859/1-case-table nil
  "The case table for ISO-8859/1 characters.")

;;; This macro expands into
;;;  (setq iso8859/1-case-table (purecopy '("..." nil nil nil)))
;;; doing the computation of the case table at compile-time.

((macro
  . (lambda (&rest pairs)
      (let ((downcase (make-string 256 0))
	    (i 0))
	(while (< i 256)
	  (aset downcase i (if (and (>= i ?A) (<= i ?Z)) (+ i 32) i))
	  (setq i (1+ i)))
	(while pairs
	  (aset downcase (car (car pairs)) (car (cdr (car pairs))))
	  (setq pairs (cdr pairs)))
	(cons 'setq
	      (cons 'iso8859/1-case-table
		    (list
		     (list 'quote
			   (list downcase nil nil nil))))))))
 
 (?\300  ?\340)		; Agrave
 (?\301  ?\341)		; Aacute
 (?\302  ?\342)		; Acircumflex
 (?\303  ?\343)		; Atilde
 (?\304  ?\344)		; Adiaeresis
 (?\305  ?\345)		; Aring
 (?\306  ?\346)		; AE
 (?\307  ?\347)		; Ccedilla
 (?\310  ?\350)		; Egrave
 (?\311  ?\351)		; Eacute
 (?\312  ?\352)		; Ecircumflex
 (?\313  ?\353)		; Ediaeresis
 (?\314  ?\354)		; Igrave
 (?\315  ?\355)		; Iacute
 (?\316  ?\356)		; Icircumflex
 (?\317  ?\357)		; Idiaeresis
 (?\320  ?\360)		; ETH
 (?\321  ?\361)		; Ntilde
 (?\322  ?\362)		; Ograve
 (?\323  ?\363)		; Oacute
 (?\324  ?\364)		; Ocircumflex
 (?\325  ?\365)		; Otilde
 (?\326  ?\366)		; Odiaeresis
 (?\330  ?\370)		; Ooblique
 (?\331  ?\371)		; Ugrave
 (?\332  ?\372)		; Uacute
 (?\333  ?\373)		; Ucircumflex
 (?\334  ?\374)		; Udiaeresis
 (?\335  ?\375)		; Yacute
 (?\336  ?\376)		; THORN
 )

(set-standard-case-table (mapcar 'copy-sequence iso8859/1-case-table))

(setq-default ctl-arrow 'iso-8859/1)

(provide 'iso8859-1)

;;; iso8859-1.el ends here
