;;; forms.el --- Forms mode: edit a file as a form to fill in
-;; Copyright (C) 1991, 1994-1997, 2001-2012 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1994-1997, 2001-2014 Free Software Foundation,
+;; Inc.
;; Author: Johan Vromans <jvromans@squirrel.nl>
;;; Commentary:
-;; Visit a file using a form. See forms-d2.el for examples.
+;; Visit a file using a form. See etc/forms for examples.
;;
;; === Naming conventions
;;
(defvar forms--rw-face nil
"Face used to represent read-write data on the screen.")
\f
+(defvar read-file-filter) ; bound in forms--intuit-from-file
+
;;;###autoload
(defun forms-mode (&optional primary)
"Major mode to visit files in a field-structured manner using a form.
;;(message "forms: proceeding setup...")
- ;; Since we aren't really implementing a minor mode, we hack the modeline
+ ;; Since we aren't really implementing a minor mode, we hack the mode line
;; directly to get the text " View " into forms-read-only form buffers. For
;; that reason, this variable must be buffer only.
(make-local-variable 'minor-mode-alist)
`(lambda (arg)
(let ((inhibit-read-only t))
,@(apply 'append
- (mapcar 'forms--make-format-elt-using-text-properties
+ (mapcar #'forms--make-format-elt-using-text-properties
forms-format-list))
;; Prevent insertion before the first text.
,@(if (numberp (car forms-format-list))
(setq forms--iif-start nil))
`(lambda (arg)
,@(apply 'append
- (mapcar 'forms--make-format-elt forms-format-list)))))
+ (mapcar #'forms--make-format-elt forms-format-list)))))
;; We have tallied the number of markers and dynamic texts,
;; so we can allocate the arrays now.
(goto-char (point-min))
,@(apply 'append
(mapcar
- 'forms--make-parser-elt
+ #'forms--make-parser-elt
(append forms-format-list (list nil)))))))))
(forms--debug 'forms--parser))
(setq forms--field nil)))
))
\f
-(defvar read-file-filter) ; bound in forms--intuit-from-file
-
(defun forms--intuit-from-file ()
"Get number of fields and a default form using the data file."
;; Build new record.
(setq forms--the-record-list (forms--parse-form))
(setq the-record
- (mapconcat 'identity forms--the-record-list forms-field-sep))
+ (mapconcat #'identity forms--the-record-list forms-field-sep))
- (if (string-match (regexp-quote forms-field-sep)
- (mapconcat 'identity forms--the-record-list ""))
+ (if (string-match-p (regexp-quote forms-field-sep)
+ (mapconcat #'identity forms--the-record-list ""))
(error "Field separator occurs in record - update refused"))
;; Handle multi-line fields, if allowed.
(forms--trans the-record "\n" forms-multi-line))
;; A final sanity check before updating.
- (if (string-match "\n" the-record)
+ (if (string-match-p "\n" the-record)
(error "Multi-line fields in this record - update refused"))
(with-current-buffer forms--file-buffer
(setq the-list (cdr (append the-fields nil))))
(setq the-list (make-list forms-number-of-fields "")))
- (setq the-record
- (mapconcat
- 'identity
- the-list
- forms-field-sep))
+ (setq the-record (mapconcat #'identity the-list forms-field-sep))
(with-current-buffer forms--file-buffer
(forms--goto-record ln)
\f
;;; Debugging
-(defvar forms--debug nil
- "Enables forms-mode debugging if not nil.")
+(defcustom forms--debug nil
+ "If non-nil, enable Forms mode debugging."
+ :type 'boolean
+ :group 'forms)
(defun forms--debug (&rest args)
"Internal debugging routine."