forms: Format Description

 
 6 The Format Description
 ************************
 
 The variable ‘forms-format-list’ specifies the format of the data in the
 data file, and how to convert the data for display in Forms mode.  Its
 value must be a list of Forms mode “formatting elements”, each of which
 can be a string, a number, a Lisp list, or a Lisp symbol that evaluates
 to one of those.  The formatting elements are processed in the order
 they appear in the list.
 
 STRING
      A string formatting element is inserted in the forms “as is,” as
      text that the user cannot alter.
 
 NUMBER
      A number element selects a field of the record.  The contents of
      this field are inserted in the display at this point.  Field
      numbers count starting from 1 (one).
 
 LIST
      A formatting element that is a list specifies a function call.
      This function is called every time a record is displayed, and its
      result, which must be a string, is inserted in the display text.
      The function should do nothing but returning a string.
 
      The function you call can access the fields of the record as a list
      in the variable ‘forms-fields’.
 
 SYMBOL
      A symbol used as a formatting element should evaluate to a string,
      number, or list; the value is interpreted as a formatting element,
      as described above.
 
    If a record does not contain the number of fields as specified in
 ‘forms-number-of-fields’, a warning message will be printed.  Excess
 fields are ignored, missing fields are set to empty.
 
    The control file which displays ‘/etc/passwd’ file as demonstrated in
 the beginning of this manual might look as follows:
 
      ;; This demo visits ‘/etc/passwd’.
 
      (setq forms-file "/etc/passwd")
      (setq forms-number-of-fields 7)
      (setq forms-read-only t)                 ; to make sure
      (setq forms-field-sep ":")
      ;; Don’t allow multi-line fields.
      (setq forms-multi-line nil)
 
      (setq forms-format-list
            (list
             "====== /etc/passwd ======\n\n"
             "User : "    1
             "   Uid: "   3
             "   Gid: "   4
             "\n\n"
             "Name : "    5
             "\n\n"
             "Home : "    6
             "\n\n"
             "Shell: "    7
             "\n"))
 
    When you construct the value of ‘forms-format-list’, you should
 usually either quote the whole value, like this,
 
      (setq forms-format-list
           '(
             "====== " forms-file " ======\n\n"
             "User : "    1
             (make-string 20 ?-)
             ...
            ))
 
 or quote the elements which are lists, like this:
 
      (setq forms-format-list
            (list
             "====== " forms-file " ======\n\n"
             "User : "    1
             '(make-string 20 ?-)
             ...
            ))
 
    Forms mode validates the contents of ‘forms-format-list’ when you
 visit a database.  If there are errors, processing is aborted with an
 error message which includes a descriptive text.  SeeError
 Messages, for a detailed list of error messages.
 
    If no ‘forms-format-list’ is specified, Forms mode will supply a
 default format list.  This list contains the name of the file being
 visited, and a simple label for each field indicating the field number.