aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Vromans1995-01-05 11:54:18 +0000
committerJohan Vromans1995-01-05 11:54:18 +0000
commitac7e3dbebec661c46b90386d7562bc463e2cb16a (patch)
tree1888d61a2da00179539a555f04ee789633267ec5
parentf9b4aacf1bc578575e80eda5e687ab472f0fc211 (diff)
downloademacs-ac7e3dbebec661c46b90386d7562bc463e2cb16a.tar.gz
emacs-ac7e3dbebec661c46b90386d7562bc463e2cb16a.zip
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.
-rw-r--r--lisp/forms.el193
1 files changed, 176 insertions, 17 deletions
diff --git a/lisp/forms.el b/lisp/forms.el
index 2011d35c56a..c8276c7f68c 100644
--- a/lisp/forms.el
+++ b/lisp/forms.el
@@ -1,8 +1,8 @@
1;;; forms.el -- Forms mode: edit a file as a form to fill in. 1;;; forms.el -- Forms mode: edit a file as a form to fill in.
2;;; Copyright (C) 1991, 1993 Free Software Foundation, Inc. 2;;; Copyright (C) 1991, 1994 Free Software Foundation, Inc.
3 3
4;; Author: Johan Vromans <jv@nl.net> 4;; Author: Johan Vromans <jv@nl.net>
5;; Version: $Revision: 2.9 $ 5;; Version: $Revision: 2.13 $
6 6
7;; This file is part of GNU Emacs. 7;; This file is part of GNU Emacs.
8 8
@@ -232,7 +232,8 @@
232;;; \C-c \C-l forms-jump-record 232;;; \C-c \C-l forms-jump-record
233;;; \C-c \C-n forms-next-record 233;;; \C-c \C-n forms-next-record
234;;; \C-c \C-p forms-prev-record 234;;; \C-c \C-p forms-prev-record
235;;; \C-c \C-s forms-search 235;;; \C-c \C-r forms-search-backward
236;;; \C-c \C-s forms-search-forward
236;;; \C-c \C-x forms-exit 237;;; \C-c \C-x forms-exit
237;;; 238;;;
238;;; Read-only mode commands: 239;;; Read-only mode commands:
@@ -244,7 +245,8 @@
244;;; l forms-jump-record 245;;; l forms-jump-record
245;;; n forms-next-record 246;;; n forms-next-record
246;;; p forms-prev-record 247;;; p forms-prev-record
247;;; s forms-search 248;;; r forms-search-backward
249;;; s forms-search-forward
248;;; x forms-exit 250;;; x forms-exit
249;;; 251;;;
250;;; Of course, it is also possible to use the \C-c prefix to obtain the 252;;; Of course, it is also possible to use the \C-c prefix to obtain the
@@ -279,10 +281,10 @@
279(provide 'forms) ;;; official 281(provide 'forms) ;;; official
280(provide 'forms-mode) ;;; for compatibility 282(provide 'forms-mode) ;;; for compatibility
281 283
282(defconst forms-version (substring "$Revision: 2.9 $" 11 -2) 284(defconst forms-version (substring "$Revision: 2.13 $" 11 -2)
283 "The version number of forms-mode (as string). The complete RCS id is: 285 "The version number of forms-mode (as string). The complete RCS id is:
284 286
285 $Id: forms.el,v 2.9 1994/07/26 19:47:39 rms Exp rms $") 287 $Id: forms.el,v 2.13 1994/10/15 10:59:17 jv Exp $")
286 288
287(defvar forms-mode-hooks nil 289(defvar forms-mode-hooks nil
288 "Hook functions to be run upon entering Forms mode.") 290 "Hook functions to be run upon entering Forms mode.")
@@ -376,7 +378,7 @@ Defaults to t if this emacs is capable of handling text properties.")
376 "List of strings of the current record, as parsed from the file.") 378 "List of strings of the current record, as parsed from the file.")
377 379
378(defvar forms--search-regexp nil 380(defvar forms--search-regexp nil
379 "Last regexp used by forms-search.") 381 "Last regexp used by forms-search functions.")
380 382
381(defvar forms--format nil 383(defvar forms--format nil
382 "Formatting routine.") 384 "Formatting routine.")
@@ -416,7 +418,8 @@ Commands: Equivalent keys in read-only mode:
416 \\C-c \\C-l forms-jump-record l 418 \\C-c \\C-l forms-jump-record l
417 \\C-c \\C-n forms-next-record n 419 \\C-c \\C-n forms-next-record n
418 \\C-c \\C-p forms-prev-record p 420 \\C-c \\C-p forms-prev-record p
419 \\C-c \\C-s forms-search s 421 \\C-c \\C-r forms-search-reverse r
422 \\C-c \\C-s forms-search-forward s
420 \\C-c \\C-x forms-exit x 423 \\C-c \\C-x forms-exit x
421" 424"
422 (interactive) 425 (interactive)
@@ -603,9 +606,10 @@ Commands: Equivalent keys in read-only mode:
603 (if read-file-filter 606 (if read-file-filter
604 (save-excursion 607 (save-excursion
605 (set-buffer forms--file-buffer) 608 (set-buffer forms--file-buffer)
606 (let ((inhibit-read-only t)) 609 (let ((inhibit-read-only t)
607 (run-hooks 'read-file-filter)) 610 (file-modified (buffer-modified-p)))
608 (set-buffer-modified-p nil) 611 (run-hooks 'read-file-filter)
612 (if (not file-modified) (set-buffer-modified-p nil)))
609 (if write-file-filter 613 (if write-file-filter
610 (progn 614 (progn
611 (make-variable-buffer-local 'local-write-file-hooks) 615 (make-variable-buffer-local 'local-write-file-hooks)
@@ -1220,7 +1224,8 @@ Commands: Equivalent keys in read-only mode:
1220 (define-key forms-mode-map "\C-l" 'forms-jump-record) 1224 (define-key forms-mode-map "\C-l" 'forms-jump-record)
1221 (define-key forms-mode-map "\C-n" 'forms-next-record) 1225 (define-key forms-mode-map "\C-n" 'forms-next-record)
1222 (define-key forms-mode-map "\C-p" 'forms-prev-record) 1226 (define-key forms-mode-map "\C-p" 'forms-prev-record)
1223 (define-key forms-mode-map "\C-s" 'forms-search) 1227 (define-key forms-mode-map "\C-r" 'forms-search-backward)
1228 (define-key forms-mode-map "\C-s" 'forms-search-forward)
1224 (define-key forms-mode-map "\C-x" 'forms-exit) 1229 (define-key forms-mode-map "\C-x" 'forms-exit)
1225 (define-key forms-mode-map "<" 'forms-first-record) 1230 (define-key forms-mode-map "<" 'forms-first-record)
1226 (define-key forms-mode-map ">" 'forms-last-record) 1231 (define-key forms-mode-map ">" 'forms-last-record)
@@ -1236,22 +1241,118 @@ Commands: Equivalent keys in read-only mode:
1236 (define-key forms-mode-ro-map "l" 'forms-jump-record) 1241 (define-key forms-mode-ro-map "l" 'forms-jump-record)
1237 (define-key forms-mode-ro-map "n" 'forms-next-record) 1242 (define-key forms-mode-ro-map "n" 'forms-next-record)
1238 (define-key forms-mode-ro-map "p" 'forms-prev-record) 1243 (define-key forms-mode-ro-map "p" 'forms-prev-record)
1239 (define-key forms-mode-ro-map "s" 'forms-search) 1244 (define-key forms-mode-ro-map "r" 'forms-search-backward)
1245 (define-key forms-mode-ro-map "s" 'forms-search-forward)
1240 (define-key forms-mode-ro-map "x" 'forms-exit) 1246 (define-key forms-mode-ro-map "x" 'forms-exit)
1241 (define-key forms-mode-ro-map "<" 'forms-first-record) 1247 (define-key forms-mode-ro-map "<" 'forms-first-record)
1242 (define-key forms-mode-ro-map ">" 'forms-last-record) 1248 (define-key forms-mode-ro-map ">" 'forms-last-record)
1243 (define-key forms-mode-ro-map "?" 'describe-mode) 1249 (define-key forms-mode-ro-map "?" 'describe-mode)
1244 (define-key forms-mode-ro-map " " 'forms-next-record) 1250 (define-key forms-mode-ro-map " " 'forms-next-record)
1245 (forms--mode-commands1 forms-mode-ro-map) 1251 (forms--mode-commands1 forms-mode-ro-map)
1252 (forms--mode-menu-ro forms-mode-ro-map)
1246 1253
1247 ;; This is the normal, local map. 1254 ;; This is the normal, local map.
1248 (setq forms-mode-edit-map (make-keymap)) 1255 (setq forms-mode-edit-map (make-keymap))
1249 (define-key forms-mode-edit-map "\t" 'forms-next-field) 1256 (define-key forms-mode-edit-map "\t" 'forms-next-field)
1250 (define-key forms-mode-edit-map "\C-c" forms-mode-map) 1257 (define-key forms-mode-edit-map "\C-c" forms-mode-map)
1251 (forms--mode-commands1 forms-mode-edit-map) 1258 (forms--mode-commands1 forms-mode-edit-map)
1259 (forms--mode-menu-edit forms-mode-edit-map)
1252 ) 1260 )
1253 1261
1254(defun forms--mode-commands1 (map) 1262(defun forms--mode-menu-ro (map)
1263;;; Menu initialisation
1264; (define-key map [menu-bar] (make-sparse-keymap))
1265 (define-key map [menu-bar forms]
1266 (cons "Forms" (make-sparse-keymap "Forms")))
1267 (define-key map [menu-bar forms menu-forms-exit]
1268 '("Exit" . forms-exit))
1269 (define-key map [menu-bar forms menu-forms-sep1]
1270 '("----"))
1271 (define-key map [menu-bar forms menu-forms-save]
1272 '("Save data" . forms-save-buffer))
1273 (define-key map [menu-bar forms menu-forms-print]
1274 '("Print data" . forms-print))
1275 (define-key map [menu-bar forms menu-forms-describe]
1276 '("Describe mode" . describe-mode))
1277 (define-key map [menu-bar forms menu-forms-toggle-ro]
1278 '("Toggle View/Edit" . forms-toggle-read-only))
1279 (define-key map [menu-bar forms menu-forms-jump-record]
1280 '("Jump" . forms-jump-record))
1281 (define-key map [menu-bar forms menu-forms-search-backward]
1282 '("Search backward" . forms-search-backward))
1283 (define-key map [menu-bar forms menu-forms-search-forward]
1284 '("Search forward" . forms-search-forward))
1285 (define-key map [menu-bar forms menu-forms-delete-record]
1286 '("Delete" . forms-delete-record))
1287 (define-key map [menu-bar forms menu-forms-insert-record]
1288 '("Insert" . forms-insert-record))
1289 (define-key map [menu-bar forms menu-forms-sep2]
1290 '("----"))
1291 (define-key map [menu-bar forms menu-forms-last-record]
1292 '("Last record" . forms-last-record))
1293 (define-key map [menu-bar forms menu-forms-first-record]
1294 '("First record" . forms-first-record))
1295 (define-key map [menu-bar forms menu-forms-prev-record]
1296 '("Previous record" . forms-prev-record))
1297 (define-key map [menu-bar forms menu-forms-next-record]
1298 '("Next record" . forms-next-record))
1299 (define-key map [menu-bar forms menu-forms-sep3]
1300 '("----"))
1301 (define-key map [menu-bar forms menu-forms-prev-field]
1302 '("Previous field" . forms-prev-field))
1303 (define-key map [menu-bar forms menu-forms-next-field]
1304 '("Next field" . forms-next-field))
1305 (put 'forms-insert-record 'menu-enable '(not forms-read-only))
1306 (put 'forms-delete-record 'menu-enable '(not forms-read-only))
1307)
1308(defun forms--mode-menu-edit (map)
1309;;; Menu initialisation
1310; (define-key map [menu-bar] (make-sparse-keymap))
1311 (define-key map [menu-bar forms]
1312 (cons "Forms" (make-sparse-keymap "Forms")))
1313 (define-key map [menu-bar forms menu-forms-edit--exit]
1314 '("Exit" . forms-exit))
1315 (define-key map [menu-bar forms menu-forms-edit-sep1]
1316 '("----"))
1317 (define-key map [menu-bar forms menu-forms-edit-save]
1318 '("Save data" . forms-save-buffer))
1319 (define-key map [menu-bar forms menu-forms-edit-print]
1320 '("Print data" . forms-print))
1321 (define-key map [menu-bar forms menu-forms-edit-describe]
1322 '("Describe mode" . describe-mode))
1323 (define-key map [menu-bar forms menu-forms-edit-toggle-ro]
1324 '("Toggle View/Edit" . forms-toggle-read-only))
1325 (define-key map [menu-bar forms menu-forms-edit-jump-record]
1326 '("Jump" . forms-jump-record))
1327 (define-key map [menu-bar forms menu-forms-edit-search-backward]
1328 '("Search backward" . forms-search-backward))
1329 (define-key map [menu-bar forms menu-forms-edit-search-forward]
1330 '("Search forward" . forms-search-forward))
1331 (define-key map [menu-bar forms menu-forms-edit-delete-record]
1332 '("Delete" . forms-delete-record))
1333 (define-key map [menu-bar forms menu-forms-edit-insert-record]
1334 '("Insert" . forms-insert-record))
1335 (define-key map [menu-bar forms menu-forms-edit-sep2]
1336 '("----"))
1337 (define-key map [menu-bar forms menu-forms-edit-last-record]
1338 '("Last record" . forms-last-record))
1339 (define-key map [menu-bar forms menu-forms-edit-first-record]
1340 '("First record" . forms-first-record))
1341 (define-key map [menu-bar forms menu-forms-edit-prev-record]
1342 '("Previous record" . forms-prev-record))
1343 (define-key map [menu-bar forms menu-forms-edit-next-record]
1344 '("Next record" . forms-next-record))
1345 (define-key map [menu-bar forms menu-forms-edit-sep3]
1346 '("----"))
1347 (define-key map [menu-bar forms menu-forms-edit-prev-field]
1348 '("Previous field" . forms-prev-field))
1349 (define-key map [menu-bar forms menu-forms-edit-next-field]
1350 '("Next field" . forms-next-field))
1351 (put 'forms-insert-record 'menu-enable '(not forms-read-only))
1352 (put 'forms-delete-record 'menu-enable '(not forms-read-only))
1353)
1354
1355(defun forms--mode-commands1 (map)
1255 "Helper routine to define keys." 1356 "Helper routine to define keys."
1256 (define-key map [TAB] 'forms-next-field) 1357 (define-key map [TAB] 'forms-next-field)
1257 (define-key map [S-tab] 'forms-prev-field) 1358 (define-key map [S-tab] 'forms-prev-field)
@@ -1694,10 +1795,10 @@ it is called to fill (some of) the fields with default values."
1694 (forms-jump-record forms--current-record))) 1795 (forms-jump-record forms--current-record)))
1695 (message "")) 1796 (message ""))
1696 1797
1697(defun forms-search (regexp) 1798(defun forms-search-forward (regexp)
1698 "Search REGEXP in file buffer." 1799 "Search forward for record containing REGEXP."
1699 (interactive 1800 (interactive
1700 (list (read-string (concat "Search for" 1801 (list (read-string (concat "Search forward for"
1701 (if forms--search-regexp 1802 (if forms--search-regexp
1702 (concat " (" 1803 (concat " ("
1703 forms--search-regexp 1804 forms--search-regexp
@@ -1726,6 +1827,38 @@ it is called to fill (some of) the fields with default values."
1726 (re-search-forward regexp nil t)))) 1827 (re-search-forward regexp nil t))))
1727 (setq forms--search-regexp regexp)) 1828 (setq forms--search-regexp regexp))
1728 1829
1830(defun forms-search-backward (regexp)
1831 "Search backward for record containing REGEXP."
1832 (interactive
1833 (list (read-string (concat "Search backward for"
1834 (if forms--search-regexp
1835 (concat " ("
1836 forms--search-regexp
1837 ")"))
1838 ": "))))
1839 (if (equal "" regexp)
1840 (setq regexp forms--search-regexp))
1841 (forms--checkmod)
1842
1843 (let (the-line the-record here
1844 (fld-sep forms-field-sep))
1845 (if (save-excursion
1846 (set-buffer forms--file-buffer)
1847 (setq here (point))
1848 (beginning-of-line)
1849 (if (null (re-search-backward regexp nil t))
1850 (progn
1851 (goto-char here)
1852 (message (concat "\"" regexp "\" not found."))
1853 nil)
1854 (setq the-record (forms--get-record))
1855 (setq the-line (1+ (count-lines (point-min) (point))))))
1856 (progn
1857 (setq forms--current-record the-line)
1858 (forms--show-record the-record)
1859 (re-search-forward regexp nil t))))
1860 (setq forms--search-regexp regexp))
1861
1729(defun forms-save-buffer (&optional args) 1862(defun forms-save-buffer (&optional args)
1730 "Forms mode replacement for save-buffer. 1863 "Forms mode replacement for save-buffer.
1731It saves the data buffer instead of the forms buffer. 1864It saves the data buffer instead of the forms buffer.
@@ -1802,6 +1935,32 @@ Calls `forms-write-file-filter' before writing out the data."
1802 (throw 'done t)))))) 1935 (throw 'done t))))))
1803 nil 1936 nil
1804 (goto-char (aref forms--markers (1- (length forms--markers))))))) 1937 (goto-char (aref forms--markers (1- (length forms--markers)))))))
1938
1939(defun forms-print ()
1940 "Send the records to the printer with 'print-buffer', one record per page."
1941 (interactive)
1942 (let ((inhibit-read-only t)
1943 (save-record forms--current-record)
1944 (nb-record 1)
1945 (record nil))
1946 (while (<= nb-record forms--total-records)
1947 (forms-jump-record nb-record)
1948 (setq record (buffer-string))
1949 (save-excursion
1950 (set-buffer (get-buffer-create "*forms-print*"))
1951 (goto-char (buffer-end 1))
1952 (insert record)
1953 (setq buffer-read-only nil)
1954 (if (< nb-record forms--total-records)
1955 (insert "\n \n")))
1956 (setq nb-record (1+ nb-record)))
1957 (save-excursion
1958 (set-buffer "*forms-print*")
1959 (print-buffer)
1960 (set-buffer-modified-p nil)
1961 (kill-buffer (current-buffer)))
1962 (forms-jump-record save-record)))
1963
1805;;; 1964;;;
1806;;; Special service 1965;;; Special service
1807;;; 1966;;;