diff options
author | Mark A. Hershberger <mah@everybody.org> | 2007-11-23 06:58:00 +0000 |
---|---|---|
committer | Mark A. Hershberger <mah@everybody.org> | 2007-11-23 06:58:00 +0000 |
commit | 8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc (patch) | |
tree | 7bcd47a7dcbbad100dd3e8f8a7e08b48353c58a8 /lisp/nxml/nxml-maint.el | |
parent | f7cf8b2009b0bc2526d50c3455f737a543122dd4 (diff) | |
download | emacs-8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc.tar.gz emacs-8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc.tar.bz2 emacs-8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc.zip |
Initial merge of nxml
Diffstat (limited to 'lisp/nxml/nxml-maint.el')
-rw-r--r-- | lisp/nxml/nxml-maint.el | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/lisp/nxml/nxml-maint.el b/lisp/nxml/nxml-maint.el new file mode 100644 index 00000000000..015c0c7dadf --- /dev/null +++ b/lisp/nxml/nxml-maint.el @@ -0,0 +1,106 @@ +;;; nxml-maint.el --- commands for maintainers of nxml-*.el + +;; Copyright (C) 2003 Free Software Foundation, Inc. + +;; Author: James Clark +;; Keywords: XML + +;; This program 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 of +;; the License, or (at your option) any later version. + +;; This program 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 this program; if not, write to the Free +;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, +;; MA 02111-1307 USA + +;;; Commentary: + +;;; Code: + +;;; Generating files with Unicode char names. + +(require 'nxml-uchnm) + +(defun nxml-create-unicode-char-name-sets (file) + "Generate files containing char names from Unicode standard." + (interactive "fUnicodeData file: ") + (mapcar (lambda (block) + (let ((nameset (nxml-unicode-block-char-name-set (nth 0 block)))) + (save-excursion + (find-file (concat (get nameset 'nxml-char-name-set-file) + ".el")) + (erase-buffer) + (insert "(nxml-define-char-name-set '") + (prin1 nameset (current-buffer)) + (insert "\n '())\n") + (goto-char (- (point) 3))))) + nxml-unicode-blocks) + (save-excursion + (find-file file) + (goto-char (point-min)) + (let ((blocks nxml-unicode-blocks) + code name) + (while (re-search-forward "^\\([0-9A-F]+\\);\\([^<;][^;]*\\);" + nil + t) + (setq code (string-to-number (match-string 1) 16)) + (setq name (match-string 2)) + (while (and blocks + (> code (nth 2 (car blocks)))) + (setq blocks (cdr blocks))) + (when (and (<= (nth 1 (car blocks)) code) + (<= code (nth 2 (car blocks)))) + (save-excursion + (find-file (concat (get (nxml-unicode-block-char-name-set + (nth 0 (car blocks))) + 'nxml-char-name-set-file) + ".el")) + (insert "(") + (prin1 name (current-buffer)) + (insert (format " #x%04X)\n " code)))))))) + +;;; Parsing target repertoire files from ucs-fonts. +;; This is for converting the TARGET? files in +;; http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz +;; into a glyph set. + +(defun nxml-insert-target-repertoire-glyph-set (file var) + (interactive "fTarget file: \nSVariable name: ") + (let (lst head) + (save-excursion + (set-buffer (find-file-noselect file)) + (goto-char (point-min)) + (while (re-search-forward "^ *\\([a-FA-F0-9]\\{2\\}\\)[ \t]+" nil t) + (let ((row (match-string 1)) + (eol (save-excursion (end-of-line) (point)))) + (while (re-search-forward "\\([a-FA-F0-9]\\{2\\}\\)-\\([a-FA-F0-9]\\{2\\}\\)\\|\\([a-FA-F0-9]\\{2\\}\\)" eol t) + (setq lst + (cons (if (match-beginning 3) + (concat "#x" row (match-string 3)) + (concat "(#x" row (match-string 1) + " . #x" row (match-string 2) ")")) + lst)))))) + (setq lst (nreverse lst)) + (insert (format "(defconst %s\n [" var)) + (while lst + (setq head (car lst)) + (setq lst (cdr lst)) + (insert head) + (when (= (length head) 6) + (while (and lst (= (length (car lst)) 6)) + (insert " ") + (insert (car lst)) + (setq lst (cdr lst)))) + (when lst (insert "\n "))) + (insert "])\n"))) + +(provide 'nxml-maint) + +;;; nxml-maint.el ends here |