changeset 40901:f2a856e8a39c

(ps-mode-font-lock-keywords-1): Merge two regular expressions into one. (ps-mode): Make local bindings for `comment-start' and `comment-start-skip'. (ps-mode-looking-at-nested): Simplify an if-else construct; use `set-match-data' to set the result.
author Richard M. Stallman <rms@gnu.org>
date Sat, 10 Nov 2001 19:36:51 +0000
parents 733a4e58f062
children 95bf86aa6120
files lisp/progmodes/ps-mode.el
diffstat 1 files changed, 16 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/ps-mode.el	Sat Nov 10 19:36:24 2001 +0000
+++ b/lisp/progmodes/ps-mode.el	Sat Nov 10 19:36:51 2001 +0000
@@ -5,7 +5,7 @@
 ;; Author:     Peter Kleiweg <kleiweg@let.rug.nl>
 ;; Maintainer: Peter Kleiweg <kleiweg@let.rug.nl>
 ;; Created:    20 Aug 1997
-;; Version:    1.1f, 25 Oct 2001
+;; Version:    1.1g, 9 Nov 2001
 ;; Keywords:   PostScript, languages
 
 ;; This file is part of GNU Emacs.
@@ -30,7 +30,7 @@
 
 ;;; Code:
 
-(defconst ps-mode-version "1.1f, 25 Oct 2001")
+(defconst ps-mode-version "1.1g, 9 Nov 2001")
 (defconst ps-mode-maintainer-address "Peter Kleiweg <kleiweg@let.rug.nl>")
 
 (require 'easymenu)
@@ -256,9 +256,12 @@
    ps-mode-font-lock-keywords-1
    (list
     '("//\\w+" . font-lock-type-face)
-    '("^\\(/\\w+\\)\\>[[ \t]*\\(%.*\\)?\r?$"
-      . (1 font-lock-function-name-face))
-    '("^\\(/\\w+\\)\\>\\([ \t]*{\\|[ \t]*<<\\|.*\\<def\\>\\|[ \t]+[0-9]+[ \t]+dict\\>\\)"
+    `(,(concat
+	"^\\(/\\w+\\)\\>"
+	"\\([[ \t]*\\(%.*\\)?\r?$"	; Nothing but `[' or comment after the name.
+	"\\|[ \t]*\\({\\|<<\\)"		; `{' or `<<' following the name.
+	"\\|[ \t]+[0-9]+[ \t]+dict\\>"	; `[0-9]+ dict' following the name.
+	"\\|.*\\<def\\>\\)")		; `def' somewhere on the same line.
       . (1 font-lock-function-name-face))
     '("/\\w+" . font-lock-variable-name-face)
     (cons ps-mode-operators 'font-lock-keyword-face)))
@@ -523,7 +526,10 @@
  	  ps-mode-font-lock-keywords-1
  	  ps-mode-font-lock-keywords-2
  	  ps-mode-font-lock-keywords-3)
- 	 t)))
+	 t))
+  (set (make-local-variable 'comment-start) "%")
+  ;; NOTE: `\' has a special meaning in strings only
+  (set (make-local-variable 'comment-start-skip) "%+[ \t]*"))
 
 (defun ps-mode-show-version ()
   "Show current version of PostScript mode."
@@ -573,15 +579,13 @@
       ;; Search next bracket, stepping over escaped brackets.
       (if (not (looking-at "\\([^()\\\n]\\|\\\\.\\)*\\([()]\\)"))
           (setq level -1)
-        (if (string= "(" (match-string 2))
-	    (setq level (1+ level))
-          (setq level (1- level)))
-        (goto-char (setq pos (match-end 0)))))
+	(setq level (+ level (if (string= "(" (match-string 2)) 1 -1)))
+	(goto-char (setq pos (match-end 0)))))
     (if (not (= level 0))
         nil
       ;; Found string with nested brackets, now set match data nr 2.
-      (goto-char first)
-      (re-search-forward "\\(%\\)\\|\\((.*\\)" pos))))
+      (set-match-data (list first pos nil nil first pos))
+      pos)))
 
 ;; This function should search for a string or comment
 ;; If comment, return as match data nr 1