Next: , Previous: , Up: Forms Mode [Contents][Index]


10 Long Example

The following example exploits most of the features of Forms mode. This example is included in the distribution as file etc/forms/forms-d2.el.

;; demo2 -- demo forms-mode -*- emacs-lisp -*-
;; This sample forms exploit most of the features of forms mode.
;; Set the name of the data file.
(setq forms-file
 (expand-file-name "forms/forms-d2.dat" data-directory))
;; Use forms-enumerate to set field names and number thereof.
(setq forms-number-of-fields
 (forms-enumerate
 '(arch-newsgroup ; 1
 arch-volume ; 2
 arch-issue ; and ...
 arch-article ; ... so
 arch-shortname ; ... ... on
 arch-parts
 arch-from
 arch-longname
 arch-keywords
 arch-date
 arch-remarks)))
;; The following functions are used by this form for layout purposes.
;;
(defun arch-tocol (target &optional fill)
 "Produces a string to skip to column TARGET.
Prepends newline if needed.
The optional FILL should be a character, used to fill to the column."
 (if (null fill)
 (setq fill ? ))
 (if (< target (current-column))
 (concat "\n" (make-string target fill))
 (make-string (- target (current-column)) fill)))
;;
(defun arch-rj (target field &optional fill)
 "Produces a string to skip to column TARGET\
 minus the width of field FIELD.
Prepends newline if needed.
The optional FILL should be a character,
used to fill to the column."
 (arch-tocol (- target (length (nth field forms-fields))) fill))
;; Record filters.
;;
(defun new-record-filter (the-record)
 "Form a new record with some defaults."
 (aset the-record arch-from (user-full-name))
 (aset the-record arch-date (current-time-string))
 the-record) ; return it
(setq forms-new-record-filter 'new-record-filter)
;; The format list.
(setq forms-format-list
 (list
 "====== Public Domain Software Archive ======\n\n"
 arch-shortname
 " - " arch-longname
 "\n\n"
 "Article: " arch-newsgroup
 "/" arch-article
 " "
 '(arch-tocol 40)
 "Issue: " arch-issue
 " "
 '(arch-rj 73 10)
 "Date: " arch-date
 "\n\n"
 "Submitted by: " arch-from
 "\n"
 '(arch-tocol 79 ?-)
 "\n"
 "Keywords: " arch-keywords
 "\n\n"
 "Parts: " arch-parts
 "\n\n====== Remarks ======\n\n"
 arch-remarks
 ))
;; That’s all, folks!

Next: Credits, Previous: Error Messages, Up: Forms Mode [Contents][Index]

AltStyle によって変換されたページ (->オリジナル) /