1;;; forms-d2.el --- demo forms-mode 2 3;; Copyright (C) 1991, 1994-1997, 2001-2021 Free Software Foundation, 4;; Inc. 5 6;; Author: Johan Vromans <jvromans@squirrel.nl> 7;; Created: 1989 8 9;; This file is part of GNU Emacs. 10 11;; GNU Emacs is free software: you can redistribute it and/or modify 12;; it under the terms of the GNU General Public License as published by 13;; the Free Software Foundation, either version 3 of the License, or 14;; (at your option) any later version. 15 16;; GNU Emacs is distributed in the hope that it will be useful, 17;; but WITHOUT ANY WARRANTY; without even the implied warranty of 18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19;; GNU General Public License for more details. 20 21;; You should have received a copy of the GNU General Public License 22;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. 23 24;;; Commentary: 25 26;; This sample forms exploit most of the features of forms mode. 27 28;;; Code: 29 30;; Set the name of the data file. 31(setq forms-file (expand-file-name "forms/forms-d2.dat" data-directory)) 32 33;; Use 'forms-enumerate' to set field names and number thereof. 34(setq forms-number-of-fields 35 (forms-enumerate 36 '(arch-newsgroup ; 1 37 arch-volume ; 2 38 arch-issue ; and ... 39 arch-article ; ... so 40 arch-shortname ; ... ... on 41 arch-parts 42 arch-from 43 arch-longname 44 arch-keywords 45 arch-date 46 arch-remarks))) 47 48;; The following functions are used by this form for layout purposes. 49;; 50(defun arch-tocol (target &optional fill) 51 "Produces a string to skip to column TARGET. Prepends newline if needed. 52The optional FILL should be a character, used to fill to the column." 53 (if (null fill) 54 (setq fill ?\s)) 55 (if (< target (current-column)) 56 (concat "\n" (make-string target fill)) 57 (make-string (- target (current-column)) fill))) 58;; 59(defun arch-rj (target field &optional fill) 60 "Produces a string to skip to column TARGET minus the width of field FIELD. 61Prepends newline if needed. The optional FILL should be a character, 62used to fill to the column." 63 (arch-tocol (- target (length (nth field forms-fields))) fill)) 64 65;; Record filters. 66;; 67(defun arch-new-record-filter (the-record) 68 "Form a new record with some defaults." 69 (aset the-record arch-from (user-full-name)) 70 (aset the-record arch-date (current-time-string)) 71 the-record ; return it 72) 73(setq forms-new-record-filter 'arch-new-record-filter) 74 75;; The format list. 76(setq forms-format-list 77 (list 78 "====== Public Domain Software Archive ======\n\n" 79 arch-shortname 80 " - " arch-longname 81 "\n\n" 82 "Article: " arch-newsgroup 83 "/" arch-article 84 " " 85 '(arch-tocol 40) 86 "Issue: " arch-issue 87 " " 88 '(arch-rj 73 10) 89 "Date: " arch-date 90 "\n\n" 91 "Submitted by: " arch-from 92 "\n" 93 '(arch-tocol 79 ?-) 94 "\n" 95 "Keywords: " arch-keywords 96 "\n\n" 97 "Parts: " arch-parts 98 "\n\n====== Remarks ======\n\n" 99 arch-remarks 100 )) 101 102;; That's all, folks! 103 104;;; forms-d2.el ends here 105