Commits

Anonymous committed 44bf6e8

Use regexp-opt instead of make-regexp.

Comments (0)

Files changed (4)

+2002-06-21  Ville Skyttä  <ville.skytta@xemacs.org>
+
+	* Makefile (VERSION): Unsupported XEmacs package 0.02 released.
+
+	* Makefile (ELCS): Remove make-regexp.elc.
+
+	* dbide-font.el (docbook-font-lock-keywords):
+	Use regexp-opt instead of make-regexp, "syncing" with xslide.
+
+	* dbide-font.el.upstream: New.
+
 2002-06-20  Ville Skyttä  <ville.skytta@xemacs.org>
 
 	* Makefile: Include XEmacs.rules the official way.
 
 # This file is not yet part of XEmacs.
 
-VERSION = 0.01
+VERSION = 0.02
 AUTHOR_VERSION = 0.1
 MAINTAINER = Ville Skyttä <ville.skytta@xemacs.org>
 PACKAGE = docbookide
 CATEGORY = unsupported
 
 ELCS = dbide-abbrev.elc dbide-data.elc dbide-font.elc dbide-process.elc \
-	docbookide.elc make-regexp.elc
+	docbookide.elc
 
 EXTRA_SOURCES = dot_emacs README
 
 ;; Send bugs to docbookide-bug@menteith.com
 
 
-;; before we begin
-(eval-and-compile
-  (autoload 'make-regexp "make-regexp"))
-(eval-and-compile
-  (autoload 'make-regexps "make-regexp"))
-
 ;;;; Variables
 
 ;;(setq font-lock-face-attributes
    ;;
    (list
     (concat "\\(</?\\)\\("
-	    (make-regexp
+	    (regexp-opt
 	     (append
 	      (mapcar 'car docbook-element-symbol-alist)
 	      (mapcar 'car docbook-element-symbol-alist-1)
    ;;
    (list
     (concat "\\(</?\\)\\("
-	    (make-regexp
+	    (regexp-opt
 	     (append
 	      (mapcar 'car docbook-element-symbol-alist-4)
 	      (mapcar 'car docbook-element-symbol-alist-5)
    ;;
    ;; DOCBOOK attributes
    ;;
-   (make-regexps "\\b"
-		 (list (mapcar 'car docbook-attributes-alist)
-		       docbook-docbook-alternate-face)
-		 "[ \t]*"
-		 '(("=[ \t]*\"") docbook-docbook-alternate-face)
-		 '("\\([^\"<>]*\\)" 1 font-lock-variable-name-face)
-		 '(("\"") docbook-docbook-alternate-face))
-   (make-regexps "\\b"
-		 (list (mapcar 'car docbook-attributes-alist)
-		       docbook-docbook-alternate-face)
-		 "[ \t]*"
-		 '(("=[ \t]*'") docbook-docbook-alternate-face)
-		 '("\\([^'<>]*\\)" 1 font-lock-variable-name-face)
-		 '(("'") docbook-docbook-alternate-face))
+   (let* ((docbook-attributes-alist-regexp
+           (regexp-opt
+            (mapcar 'car docbook-attributes-alist)
+            t))
+          (docbook-attributes-alist-regexp-depth
+           (regexp-opt-depth
+            (regexp-opt
+             (mapcar 'car docbook-attributes-alist)
+             t))))
+     (list
+      (concat
+       "\\b\\("
+       docbook-attributes-alist-regexp
+       "[ \t]*=[ \t]*\"\\)"
+       "\\([^\"<]*\\)"
+       "\\(\"\\)")
+      (list 1 docbook-docbook-alternate-face)
+      (list (+ 2 docbook-attributes-alist-regexp-depth)
+            font-lock-variable-name-face)
+      (list (+ 3 docbook-attributes-alist-regexp-depth)
+            docbook-docbook-alternate-face)))
+   ;; The same attributes as above, but with single quotes.
+   (let* ((docbook-attributes-alist-regexp
+           (regexp-opt
+            (mapcar 'car docbook-attributes-alist)
+            t))
+          (docbook-attributes-alist-regexp-depth
+           (regexp-opt-depth
+            (regexp-opt
+             (mapcar 'car docbook-attributes-alist)
+             t))))
+     (list
+      (concat
+       "\\b\\("
+       docbook-attributes-alist-regexp
+       "[ \t]*=[ \t]*'\\)"
+       "\\([^'<]*\\)"
+       "\\('\\)")
+      (list 1 docbook-docbook-alternate-face)
+      (list (+ 2 docbook-attributes-alist-regexp-depth)
+            font-lock-variable-name-face)
+      (list (+ 3 docbook-attributes-alist-regexp-depth)
+            docbook-docbook-alternate-face)))
    ;;
    ;; Mark the start and end of literals, but don't do anything to their
    ;; contents

dbide-font.el.upstream

+;;;; dbide-data.el --- DocBook font lock keywords
+;; $Id$
+
+;; Copyright (C) 2000 Norman Walsh
+;; Based extensively on (one might go so far as to say "totally hacked
+;; from") Tony Graham's xslide.
+
+;; Author: Norman Walsh <ndw@nwalsh.com>
+;; Created: 29 March 2000
+;; Version: $Revision$
+;; Keywords: languages, xml, docbook
+
+;;; This file is not part of GNU Emacs.
+
+;; 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+;;;; Commentary:
+
+;; Font lock mode keywords for use when editing DOCBOOK stylesheets
+
+;; Send bugs to docbookide-bug@menteith.com
+
+
+;; before we begin
+(eval-and-compile
+  (autoload 'make-regexp "make-regexp"))
+(eval-and-compile
+  (autoload 'make-regexps "make-regexp"))
+
+;;;; Variables
+
+;;(setq font-lock-face-attributes
+;;      (append
+;;       (list
+;;	'(docbook-docbook-element-face "Khaki" nil nil nil)
+;;	'(docbook-docbook-attribute-face "LightGray"))
+;;       font-lock-face-attributes))
+
+(defvar docbook-font-lock-face-attributes
+  (list
+   '(docbook-docbook-main-face "light slate gray")
+   '(docbook-docbook-alternate-face "light slate gray")
+   '(docbook-other-element-face "blue"))
+  "*List of DOCBOOK-specific font lock faces and their attributes")
+
+;; Something to do when we read this file
+(while (car docbook-font-lock-face-attributes)
+  (let ((face-attributes (car docbook-font-lock-face-attributes)))
+    (setq docbook-font-lock-face-attributes
+	  (cdr docbook-font-lock-face-attributes))
+    (let* ((face (car face-attributes))
+	   (foreground (cadr face-attributes)))
+    (make-face face)
+    (set-face-foreground face foreground)
+    ;; The font-lock stuff requires a variable with the same name as
+    ;; the face
+    (set face face))))
+
+;;;; Constants
+
+(defvar docbook-font-lock-keywords
+  (list
+   ;;
+   ;; Reserved XML Processing instruction
+   ;;
+   '(
+    "\\(<\\?\\)\\(xml\\)\\(\\s-+version\\s-*=\\s-*\\('[^']+'\\|\"[^\"]+\"\\)\\)?\\(\\s-+encoding\\s-*=\\s-*\\('[^']+'\\|\"[^\"]+\"\\)\\)?\\(\\s-+standalone\\s-*=\\s-*\\('\\(yes\\|no\\)'\\|\"\\(yes\\|no\\)\"\\)\\)?\\s-*\\(\\?>\\)"
+    (1 font-lock-keyword-face)
+    (2 font-lock-type-face nil)
+    (3 font-lock-type-face nil t)
+    (5 font-lock-type-face nil t)
+    (7 font-lock-type-face nil t)
+    (11 font-lock-keyword-face))
+   ;;
+   ;; Non-reserved XML Processing instruction
+   ;; Any XML PI that doesn't start with "<?xml"
+   ;;
+   '("\\(<\\?\\)\\([^ \t?>]+\\)[ \t]*\\([^?>]\\|\\?[^>]\\|>[^\n\r]\\)*\\(\\?>\\)"
+     (1 font-lock-keyword-face)
+     (2 font-lock-variable-name-face)
+     (4 font-lock-keyword-face))
+   ;;
+   ;; Entity references
+   ;; These come early so entity references as the names in element, etc.
+   ;; declarations retain their colour and don't get turned into
+   ;; font-lock-variable-name-face.  E.g:
+   ;; <!ENTITY % %entity; "..." >
+   ;;
+   '("[%&][^; \t]+;" . font-lock-reference-face)
+   ;;
+   ;; Marked section start
+   ;;
+   '("\\(<!\\[\\)[^[]*\\(\\[\\)"
+     (1 font-lock-keyword-face)
+     (2 font-lock-keyword-face))
+;   ;;
+;   ;; Content of tags
+;   ;;
+;   (list
+;    (concat ">\\([^<]+\\)<")
+;    '(1 font-lock-string-face keep))
+   ;;
+   ;; DOCBOOK elements (group 1)
+   ;;
+   (list
+    (concat "\\(</?\\)\\("
+	    (make-regexp
+	     (append
+	      (mapcar 'car docbook-element-symbol-alist)
+	      (mapcar 'car docbook-element-symbol-alist-1)
+	      (mapcar 'car docbook-element-symbol-alist-2)
+	      (mapcar 'car docbook-element-symbol-alist-3)))
+	    "\\)\\(\\s-+\\([^/>]\\|/[^>]\\)+\\)*\\(/?>\\)")
+    '(1 docbook-docbook-main-face)
+    '(2 docbook-docbook-alternate-face))
+   ;;
+   ;; DOCBOOK elements (group 2)
+   ;;
+   (list
+    (concat "\\(</?\\)\\("
+	    (make-regexp
+	     (append
+	      (mapcar 'car docbook-element-symbol-alist-4)
+	      (mapcar 'car docbook-element-symbol-alist-5)
+	      (mapcar 'car docbook-element-symbol-alist-6)
+	      (mapcar 'car docbook-element-symbol-alist-7)
+	      (mapcar 'car docbook-element-symbol-alist-8)))
+	    "\\)\\(\\s-+\\([^/>]\\|/[^>]\\)+\\)*\\(/?>\\)")
+    '(1 docbook-docbook-main-face)
+    '(2 docbook-docbook-alternate-face))
+   (list
+    (concat "</?" "\\([^/>]\\|/[^>]\\)*\\(/?>\\)")
+    '(2 docbook-docbook-main-face))
+   ;;
+   ;; DOCBOOK attributes
+   ;;
+   (make-regexps "\\b"
+		 (list (mapcar 'car docbook-attributes-alist)
+		       docbook-docbook-alternate-face)
+		 "[ \t]*"
+		 '(("=[ \t]*\"") docbook-docbook-alternate-face)
+		 '("\\([^\"<>]*\\)" 1 font-lock-variable-name-face)
+		 '(("\"") docbook-docbook-alternate-face))
+   (make-regexps "\\b"
+		 (list (mapcar 'car docbook-attributes-alist)
+		       docbook-docbook-alternate-face)
+		 "[ \t]*"
+		 '(("=[ \t]*'") docbook-docbook-alternate-face)
+		 '("\\([^'<>]*\\)" 1 font-lock-variable-name-face)
+		 '(("'") docbook-docbook-alternate-face))
+   ;;
+   ;; Mark the start and end of literals, but don't do anything to their
+   ;; contents
+   ;;
+   '("\\('\\)[^']*\\('\\)"
+     (1 font-lock-string-face)
+     (2 font-lock-string-face))
+   '("\\(\"\\)[^\"]*\\(\"\\)"
+     (1 font-lock-string-face)
+     (2 font-lock-string-face))
+   ;;
+   ;; Put comment patterns last so they mask anything
+   ;; that might be inside the comment
+   ;;
+   '("\\(<!--[^-]*\\(-[^-]+\\)*-->\\)"
+     (1 font-lock-comment-face t))
+   )
+  "Additional expressions to highlight in DOCBOOK mode.")
+
+;;;; Code:
+(defun docbook-font-lock-mark-block-function ()
+  "Function to mark the area of text we want to fontify.
+
+Used with font-lock-fontify-block.  Set font-lock-mark-block-function
+to this function for this function to take effect.
+
+This function marks the area beginning five \"<\" before point and five
+\">\" at ends of lines after point.  The default without a function like
+this is to fontify 16 lines before and after point, but then the region
+often starts or ends partway through a comment or declaration, turning
+that half white because the keywords didn't match, and it just looks so
+ugly."
+  (let ((current-point (point)))
+    (re-search-forward ">$" (point-max) 'limit 5)
+    (set-mark (point))
+    (goto-char current-point)
+    (re-search-backward "^<" (point-min) 'limit 5)))
+
+(defun docbook-font-lock-region-point-min ()
+  "Return the start point of the region we want to fontify"
+  (save-excursion
+    (re-search-backward "^<" (point-min) 'limit 5)
+    (point)))
+
+(defun docbook-font-lock-region-point-max ()
+  "Return the start point of the region we want to fontify"
+  (save-excursion
+    (re-search-forward ">$" (point-max) 'limit 5)
+    (point)))
+
+(provide 'dbide-font)
+
+;; end of dbide-font.el