# HG changeset patch # User Richard M. Stallman # Date 1005421011 0 # Node ID f2a856e8a39ce0f9f18a9b0f479cd71cc02f854f # Parent 733a4e58f062cca2cb9b27807687c55ce382a8ae (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. diff -r 733a4e58f062 -r f2a856e8a39c lisp/progmodes/ps-mode.el --- 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 ;; Maintainer: Peter Kleiweg ;; 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 ") (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]*<<\\|.*\\\\|[ \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' 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