summaryrefslogtreecommitdiff
path: root/lisp/nxml/nxml-maint.el
diff options
context:
space:
mode:
authorMark A. Hershberger <mah@everybody.org>2007-11-23 06:58:00 +0000
committerMark A. Hershberger <mah@everybody.org>2007-11-23 06:58:00 +0000
commit8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc (patch)
tree7bcd47a7dcbbad100dd3e8f8a7e08b48353c58a8 /lisp/nxml/nxml-maint.el
parentf7cf8b2009b0bc2526d50c3455f737a543122dd4 (diff)
downloademacs-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.el106
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