Mercurial > emacs
view lisp/=mim-syntax.el @ 28256:06cfa273543d
* pcvs.el: Add a minimal leading commentary.
(cvs-make-cvs-buffer): Change the header part by removing the startup
message and adding a `Module' entry. Also replace the FOOTER and
HEADER special fileinfos with the new support in ewoc for updating
its own footer and header.
(cvs-update-header): Update to use the header/footer of the ewoc.
(cvs-mode): Use define-derived-mode and set truncate-lines to t.
(cvs-is-within-p): New function.
(cvs-mode-run): Take advantage of `save-some-buffers's new ability
to only examine some subset of the buffers.
* pcvs-info.el (cvs-fileinfo-pp): Use the new property-preserving
`format' instead of our own ad-hoc functions.
Remove HEADER and FOOTER cases, now handled in the EWOC.
(cvs-fileinfo<): Remove HEADER and FOOTER cases.
* pcvs-parse.el (cvs-parse-run-table): Change message for unknown
output to avoid scaring the user.
(cvs-parse-table): Catch message for non-up-to-date commits.
* pcvs-defs.el (cvs-startup-message): Remove.
(cvs-global-menu): New autoloaded menu.
* pcvs-util.el (cvs-string-fill): Remove.
* emacs-lisp/ewoc.el (ewoc--create-special-node): Remove.
(ewoc--refresh-node): Don't take the whole EWOC but only the relevant
PP part of it and also make it work for footers and headers.
(ewoc-create): Drop POS and BUFFER arguments.
Use the DLL's dummy node to store the end-of-footer position.
(ewoc-map, ewoc-invalidate): Update call to ewoc--refresh-node.
(ewoc-refresh): Remove unused `header' variable.
(ewoc-(get|set)-hf): New functions.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 22 Mar 2000 02:57:01 +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