Mercurial > emacs
changeset 10346:a6018b04fb9d
Change forms-search to forms-search-forward, and add
forms-search-backward.
(forms--mode-menu-ro, forms--mode-menu-edit): New
functions to create a pulldown menu in the menubar.
(forms--mode-commands): Call them for the edit and view mode.
(forms-print): New function.
author | Johan Vromans <jvromans@squirrel.nl> |
---|---|
date | Thu, 05 Jan 1995 11:54:18 +0000 |
parents | 9952a5ab70d1 |
children | 8f382ecc4dfa |
files | lisp/forms.el |
diffstat | 1 files changed, 176 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/forms.el Thu Jan 05 07:45:50 1995 +0000 +++ b/lisp/forms.el Thu Jan 05 11:54:18 1995 +0000 @@ -1,8 +1,8 @@ ;;; forms.el -- Forms mode: edit a file as a form to fill in. -;;; Copyright (C) 1991, 1993 Free Software Foundation, Inc. +;;; Copyright (C) 1991, 1994 Free Software Foundation, Inc. ;; Author: Johan Vromans <jv@nl.net> -;; Version: $Revision: 2.9 $ +;; Version: $Revision: 2.13 $ ;; This file is part of GNU Emacs. @@ -232,7 +232,8 @@ ;;; \C-c \C-l forms-jump-record ;;; \C-c \C-n forms-next-record ;;; \C-c \C-p forms-prev-record -;;; \C-c \C-s forms-search +;;; \C-c \C-r forms-search-backward +;;; \C-c \C-s forms-search-forward ;;; \C-c \C-x forms-exit ;;; ;;; Read-only mode commands: @@ -244,7 +245,8 @@ ;;; l forms-jump-record ;;; n forms-next-record ;;; p forms-prev-record -;;; s forms-search +;;; r forms-search-backward +;;; s forms-search-forward ;;; x forms-exit ;;; ;;; Of course, it is also possible to use the \C-c prefix to obtain the @@ -279,10 +281,10 @@ (provide 'forms) ;;; official (provide 'forms-mode) ;;; for compatibility -(defconst forms-version (substring "$Revision: 2.9 $" 11 -2) +(defconst forms-version (substring "$Revision: 2.13 $" 11 -2) "The version number of forms-mode (as string). The complete RCS id is: - $Id: forms.el,v 2.9 1994/07/26 19:47:39 rms Exp rms $") + $Id: forms.el,v 2.13 1994/10/15 10:59:17 jv Exp $") (defvar forms-mode-hooks nil "Hook functions to be run upon entering Forms mode.") @@ -376,7 +378,7 @@ "List of strings of the current record, as parsed from the file.") (defvar forms--search-regexp nil - "Last regexp used by forms-search.") + "Last regexp used by forms-search functions.") (defvar forms--format nil "Formatting routine.") @@ -416,7 +418,8 @@ \\C-c \\C-l forms-jump-record l \\C-c \\C-n forms-next-record n \\C-c \\C-p forms-prev-record p - \\C-c \\C-s forms-search s + \\C-c \\C-r forms-search-reverse r + \\C-c \\C-s forms-search-forward s \\C-c \\C-x forms-exit x " (interactive) @@ -603,9 +606,10 @@ (if read-file-filter (save-excursion (set-buffer forms--file-buffer) - (let ((inhibit-read-only t)) - (run-hooks 'read-file-filter)) - (set-buffer-modified-p nil) + (let ((inhibit-read-only t) + (file-modified (buffer-modified-p))) + (run-hooks 'read-file-filter) + (if (not file-modified) (set-buffer-modified-p nil))) (if write-file-filter (progn (make-variable-buffer-local 'local-write-file-hooks) @@ -1220,7 +1224,8 @@ (define-key forms-mode-map "\C-l" 'forms-jump-record) (define-key forms-mode-map "\C-n" 'forms-next-record) (define-key forms-mode-map "\C-p" 'forms-prev-record) - (define-key forms-mode-map "\C-s" 'forms-search) + (define-key forms-mode-map "\C-r" 'forms-search-backward) + (define-key forms-mode-map "\C-s" 'forms-search-forward) (define-key forms-mode-map "\C-x" 'forms-exit) (define-key forms-mode-map "<" 'forms-first-record) (define-key forms-mode-map ">" 'forms-last-record) @@ -1236,22 +1241,118 @@ (define-key forms-mode-ro-map "l" 'forms-jump-record) (define-key forms-mode-ro-map "n" 'forms-next-record) (define-key forms-mode-ro-map "p" 'forms-prev-record) - (define-key forms-mode-ro-map "s" 'forms-search) + (define-key forms-mode-ro-map "r" 'forms-search-backward) + (define-key forms-mode-ro-map "s" 'forms-search-forward) (define-key forms-mode-ro-map "x" 'forms-exit) (define-key forms-mode-ro-map "<" 'forms-first-record) (define-key forms-mode-ro-map ">" 'forms-last-record) (define-key forms-mode-ro-map "?" 'describe-mode) (define-key forms-mode-ro-map " " 'forms-next-record) (forms--mode-commands1 forms-mode-ro-map) + (forms--mode-menu-ro forms-mode-ro-map) ;; This is the normal, local map. (setq forms-mode-edit-map (make-keymap)) (define-key forms-mode-edit-map "\t" 'forms-next-field) (define-key forms-mode-edit-map "\C-c" forms-mode-map) (forms--mode-commands1 forms-mode-edit-map) + (forms--mode-menu-edit forms-mode-edit-map) ) -(defun forms--mode-commands1 (map) +(defun forms--mode-menu-ro (map) +;;; Menu initialisation +; (define-key map [menu-bar] (make-sparse-keymap)) + (define-key map [menu-bar forms] + (cons "Forms" (make-sparse-keymap "Forms"))) + (define-key map [menu-bar forms menu-forms-exit] + '("Exit" . forms-exit)) + (define-key map [menu-bar forms menu-forms-sep1] + '("----")) + (define-key map [menu-bar forms menu-forms-save] + '("Save data" . forms-save-buffer)) + (define-key map [menu-bar forms menu-forms-print] + '("Print data" . forms-print)) + (define-key map [menu-bar forms menu-forms-describe] + '("Describe mode" . describe-mode)) + (define-key map [menu-bar forms menu-forms-toggle-ro] + '("Toggle View/Edit" . forms-toggle-read-only)) + (define-key map [menu-bar forms menu-forms-jump-record] + '("Jump" . forms-jump-record)) + (define-key map [menu-bar forms menu-forms-search-backward] + '("Search backward" . forms-search-backward)) + (define-key map [menu-bar forms menu-forms-search-forward] + '("Search forward" . forms-search-forward)) + (define-key map [menu-bar forms menu-forms-delete-record] + '("Delete" . forms-delete-record)) + (define-key map [menu-bar forms menu-forms-insert-record] + '("Insert" . forms-insert-record)) + (define-key map [menu-bar forms menu-forms-sep2] + '("----")) + (define-key map [menu-bar forms menu-forms-last-record] + '("Last record" . forms-last-record)) + (define-key map [menu-bar forms menu-forms-first-record] + '("First record" . forms-first-record)) + (define-key map [menu-bar forms menu-forms-prev-record] + '("Previous record" . forms-prev-record)) + (define-key map [menu-bar forms menu-forms-next-record] + '("Next record" . forms-next-record)) + (define-key map [menu-bar forms menu-forms-sep3] + '("----")) + (define-key map [menu-bar forms menu-forms-prev-field] + '("Previous field" . forms-prev-field)) + (define-key map [menu-bar forms menu-forms-next-field] + '("Next field" . forms-next-field)) + (put 'forms-insert-record 'menu-enable '(not forms-read-only)) + (put 'forms-delete-record 'menu-enable '(not forms-read-only)) +) +(defun forms--mode-menu-edit (map) +;;; Menu initialisation +; (define-key map [menu-bar] (make-sparse-keymap)) + (define-key map [menu-bar forms] + (cons "Forms" (make-sparse-keymap "Forms"))) + (define-key map [menu-bar forms menu-forms-edit--exit] + '("Exit" . forms-exit)) + (define-key map [menu-bar forms menu-forms-edit-sep1] + '("----")) + (define-key map [menu-bar forms menu-forms-edit-save] + '("Save data" . forms-save-buffer)) + (define-key map [menu-bar forms menu-forms-edit-print] + '("Print data" . forms-print)) + (define-key map [menu-bar forms menu-forms-edit-describe] + '("Describe mode" . describe-mode)) + (define-key map [menu-bar forms menu-forms-edit-toggle-ro] + '("Toggle View/Edit" . forms-toggle-read-only)) + (define-key map [menu-bar forms menu-forms-edit-jump-record] + '("Jump" . forms-jump-record)) + (define-key map [menu-bar forms menu-forms-edit-search-backward] + '("Search backward" . forms-search-backward)) + (define-key map [menu-bar forms menu-forms-edit-search-forward] + '("Search forward" . forms-search-forward)) + (define-key map [menu-bar forms menu-forms-edit-delete-record] + '("Delete" . forms-delete-record)) + (define-key map [menu-bar forms menu-forms-edit-insert-record] + '("Insert" . forms-insert-record)) + (define-key map [menu-bar forms menu-forms-edit-sep2] + '("----")) + (define-key map [menu-bar forms menu-forms-edit-last-record] + '("Last record" . forms-last-record)) + (define-key map [menu-bar forms menu-forms-edit-first-record] + '("First record" . forms-first-record)) + (define-key map [menu-bar forms menu-forms-edit-prev-record] + '("Previous record" . forms-prev-record)) + (define-key map [menu-bar forms menu-forms-edit-next-record] + '("Next record" . forms-next-record)) + (define-key map [menu-bar forms menu-forms-edit-sep3] + '("----")) + (define-key map [menu-bar forms menu-forms-edit-prev-field] + '("Previous field" . forms-prev-field)) + (define-key map [menu-bar forms menu-forms-edit-next-field] + '("Next field" . forms-next-field)) + (put 'forms-insert-record 'menu-enable '(not forms-read-only)) + (put 'forms-delete-record 'menu-enable '(not forms-read-only)) +) + +(defun forms--mode-commands1 (map) "Helper routine to define keys." (define-key map [TAB] 'forms-next-field) (define-key map [S-tab] 'forms-prev-field) @@ -1694,10 +1795,10 @@ (forms-jump-record forms--current-record))) (message "")) -(defun forms-search (regexp) - "Search REGEXP in file buffer." +(defun forms-search-forward (regexp) + "Search forward for record containing REGEXP." (interactive - (list (read-string (concat "Search for" + (list (read-string (concat "Search forward for" (if forms--search-regexp (concat " (" forms--search-regexp @@ -1726,6 +1827,38 @@ (re-search-forward regexp nil t)))) (setq forms--search-regexp regexp)) +(defun forms-search-backward (regexp) + "Search backward for record containing REGEXP." + (interactive + (list (read-string (concat "Search backward for" + (if forms--search-regexp + (concat " (" + forms--search-regexp + ")")) + ": ")))) + (if (equal "" regexp) + (setq regexp forms--search-regexp)) + (forms--checkmod) + + (let (the-line the-record here + (fld-sep forms-field-sep)) + (if (save-excursion + (set-buffer forms--file-buffer) + (setq here (point)) + (beginning-of-line) + (if (null (re-search-backward regexp nil t)) + (progn + (goto-char here) + (message (concat "\"" regexp "\" not found.")) + nil) + (setq the-record (forms--get-record)) + (setq the-line (1+ (count-lines (point-min) (point)))))) + (progn + (setq forms--current-record the-line) + (forms--show-record the-record) + (re-search-forward regexp nil t)))) + (setq forms--search-regexp regexp)) + (defun forms-save-buffer (&optional args) "Forms mode replacement for save-buffer. It saves the data buffer instead of the forms buffer. @@ -1802,6 +1935,32 @@ (throw 'done t)))))) nil (goto-char (aref forms--markers (1- (length forms--markers))))))) + +(defun forms-print () + "Send the records to the printer with 'print-buffer', one record per page." + (interactive) + (let ((inhibit-read-only t) + (save-record forms--current-record) + (nb-record 1) + (record nil)) + (while (<= nb-record forms--total-records) + (forms-jump-record nb-record) + (setq record (buffer-string)) + (save-excursion + (set-buffer (get-buffer-create "*forms-print*")) + (goto-char (buffer-end 1)) + (insert record) + (setq buffer-read-only nil) + (if (< nb-record forms--total-records) + (insert "\n\n"))) + (setq nb-record (1+ nb-record))) + (save-excursion + (set-buffer "*forms-print*") + (print-buffer) + (set-buffer-modified-p nil) + (kill-buffer (current-buffer))) + (forms-jump-record save-record))) + ;;; ;;; Special service ;;;