view lisp/=mim-syntax.el @ 26114:c19849fe02b5

Doc fix, duplex and setpagedevice configuration. (ps-print-version): New version number (4.2). (ps-spool-config, ps-spool-tumble): New vars. (ps-print-prologue-1): Changed to defconst, adjust PostScript programming, new PostScript procedure to handle errors. (ps-print-prologue-2): Changed to defconst. (ps-print-duplex-feature): New const: duplex and tumble setting. (ps-setup, ps-begin-file): Fix funs. (ps-boolean-capitalized): New fun. Doc fix, n-up printing. (ps-print-version): New version number (5.0). (ps-page-dimensions-database): Added document media. (ps-n-up-printing, ps-n-up-margin, ps-n-up-border-p, ps-n-up-filling) (ps-page-order, ps-printing-region-p): New vars. (ps-n-up-printing, ps-n-up-filling, ps-header-sheet, ps-end-job): New funs. (ps-page-dimensions-get-media, ps-n-up-landscape, ps-n-up-lines) (ps-n-up-columns, ps-n-up-missing, ps-n-up-xcolumn, ps-n-up-ycolumn) (ps-n-up-xline, ps-n-up-yline, ps-n-up-repeat, ps-n-up-end) (ps-n-up-xstart, ps-n-up-ystart): New macros. (ps-print-begin-sheet-hook): New hook. (ps-boundingbox-re, ps-n-up-database, ps-n-up-filling-database): New const. (ps-setup, ps-begin-file, ps-get-buffer-name, ps-begin-job) (ps-end-file, ps-dummy-page, ps-generate): Fix funs. (ps-print-prologue-1): Adjust PostScript programming for n-up printing. (ps-count-lines): Changed to defun. (ps-header-page): Changed to defsubst, fix fun. (ps-printing-region): Doc fix, adjust programming code. (ps-output-boolean, ps-background-pages, ps-background-text) (ps-background-image, ps-background, ps-get-boundingbox): Adjust programming code. Doc fix, better customization. (ps-print-region-function, ps-number-of-columns, ps-spool-tumble) (ps-print-color-p, ps-printing-region-p, ps-n-up-database) (ps-end-file): Doc fix. (ps-setup, ps-begin-file): Fun fix. (postscript): New group. (ps-zebra-gray, ps-banner-page-when-duplexing): New vars. (ps-print-prologue-1): Adjust PostScript programming. (ps-print): Adjust group hierarchy. (ps-print-n-up, ps-print-zebra, ps-print-background, ps-print-printer) (ps-print-page): New subgroups. (ps-print-prologue-header, ps-printer-name, ps-lpr-command) (ps-lpr-switches, ps-page-dimensions-database, ps-paper-type) (ps-landscape-mode, ps-print-control-characters, ps-n-up-printing) (ps-n-up-margin, ps-n-up-border-p, ps-n-up-filling, ps-zebra-stripes) (ps-zebra-stripe-height, ps-print-background-image) (ps-print-background-text, ps-spool-config): Adjust customization. (dos-ps-printer): Definition eliminated.
author Kenichi Handa <handa@m17n.org>
date Wed, 20 Oct 1999 01:06:27 +0000
parents 213978acbc1e
children
line wrap: on
line source

;;; mim-syntax.el --- syntax checker for Mim (MDL).

;; Copyright (C) 1985 Free Software Foundation, Inc.

;; Author: K. Shane Hartman
;; Maintainer: FSF
;; Keywords: languages

;; This file is part of GNU Emacs.

;; GNU Emacs 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, or (at your option)
;; any later version.

;; GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to
;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

;;; Code:

(require 'mim-mode)

(defun slow-syntax-check-mim ()
  "Check Mim syntax slowly.
Points out the context of the error, if the syntax is incorrect."
  (interactive)
  (message "checking syntax...")
  (let ((stop (point-max)) point-stack current last-bracket whoops last-point)
    (save-excursion
      (goto-char (point-min))
      (while (and (not whoops)
		  (re-search-forward "\\s(\\|\\s)\\|\"\\|[\\]" stop t))
	(setq current (preceding-char))
	(cond ((= current ?\")
	       (condition-case nil
		   (progn (re-search-forward "[^\\]\"")
			  (setq current nil))
		 (error (setq whoops (point)))))
	      ((= current ?\\)
	       (condition-case nil (forward-char 1) (error nil)))
	      ((= (char-syntax current) ?\))
	       (if (or (not last-bracket)
		       (not (= (logand (lsh (aref (syntax-table) last-bracket) -8)
				       ?\177)
			       current)))
		   (setq whoops (point))
		 (setq last-point (car point-stack))
		 (setq last-bracket (if last-point (char-after (1- last-point))))
		 (setq point-stack (cdr point-stack))))
	      (t
	       (if last-point (setq point-stack (cons last-point point-stack)))
	       (setq last-point (point))
	       (setq last-bracket current)))))
    (cond ((not (or whoops last-point))
	   (message "Syntax correct"))
	  (whoops
	   (goto-char whoops)
	   (cond ((equal current ?\")
		  (error "Unterminated string"))
		 ((not last-point)
		  (error "Extraneous %s" (char-to-string current)))
		 (t
		  (error "Mismatched %s with %s"
			   (save-excursion
			     (setq whoops (1- (point)))
			     (goto-char (1- last-point))
			     (buffer-substring (point)
					       (min (progn (end-of-line) (point))
						    whoops)))
			   (char-to-string current)))))
	  (t
	   (goto-char last-point)
	   (error "Unmatched %s" (char-to-string last-bracket))))))
      
(defun fast-syntax-check-mim ()
  "Checks Mim syntax quickly.
Answers correct or incorrect, cannot point out the error context."
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (let (state)
      (while (and (not (eobp))
		  (equal (car (setq state (parse-partial-sexp (point) (point-max) 0)))
			 0)))
      (if (equal (car state) 0)
	  (message "Syntax correct")
	(error "Syntax incorrect")))))

;;; mim-syntax.el ends here