;ELC   
;;; compiled by ckclark@major.MIT.EDU on Tue Aug  3 03:08:48 1993
;;; from file /afs/sipb.mit.edu/contrib/emacs/elisp19/edb/db-format.el
;;; emacs version 19.16.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19")))
    (error "This file was compiled for Emacs 19"))

(defvar dbf-always-forms nil "\
Forms executed every time that the format is selected.
These forms are only executed when a different format is replaced, not
every time that a record is displayed (or even every time that
`db-alternate-format' is called).  See also
`dbf-before-display-record-function'.")
(make-variable-buffer-local (quote dbf-always-forms))
(defvar dbf-displayspecs nil "\
An array of field specifiers, one for each field of the display format.
There are `dbf-displayspecs-length' of them.")
(make-variable-buffer-local (quote dbf-displayspecs))
(defvar dbf-displayspecs-length nil "\
The number of displayspecs in the current format.")
(make-variable-buffer-local (quote dbf-displayspecs-length))
(defvar dbf-inter-field-text nil "\
A vector with one string, the constant text that precedes that field in
the display, per displayspec, plus a final slot for trailing text.")
(make-variable-buffer-local (quote dbf-inter-field-text))
(defvar db-fontification db-running-lucid-emacs "\
Non-nil if uneditable text in data display buffers should use a special font.
Don't set this unless you are running Lucid GNU Emacs!")
(byte-code "! !\"" [boundp dbf-recordindex-displayspecno-vector nil make-variable-buffer-local defalias dbf-fieldname->displayspecno #[(fieldname) "\n\"H" [dbf-recordindex-displayspecno-vector fieldname->fieldnumber fieldname dbc-database] 4]] 3)
(defvar dbf-fieldabbrevs nil "\
Database-format-specific alist of fieldabbrevs and displayspecs.")
(make-variable-buffer-local (quote dbf-fieldabbrevs))
(defvar dbf-this-displayspec nil "\
The displayspec currently being operated upon, or nil.")
(make-variable-buffer-local (quote dbf-this-displayspec))
(defvar dbf-this-field-index nil "\
The index in `dbf-displayspecs' of the current displayspec, or nil.")
(byte-code "!\"\"\"" [make-variable-buffer-local dbf-this-field-index defalias dbf-this-field-name #[nil "\n H\"" [dbf-this-displayspec fieldnumber->fieldname 1 dbc-database] 3] dbf-this-field-modified-p #[nil " " [buffer-modified-p] 1] dbf-set-this-field-modified-p #[(arg) "	!" [set-buffer-modified-p arg] 2]] 3)
(defvar dbf-wraparound-p t "\
Value t, nil, or 'delay determines whether going forward from the last
field (or backward from the first) wraps, is prohibited, or delays.
'delay has the effect of prohibiting such movement the first time, but if
the user immediately makes a second attempt, that one is successful.
Somewhat analogous to dbc-wraparound-p.")
(make-variable-buffer-local (quote dbf-wraparound-p))
(defvar dbf-this-field-beginning-pos nil "\
A position, the beginning of the current field.")
(make-variable-buffer-local (quote dbf-this-field-beginning-pos))
(defvar dbf-this-field-end-marker (make-marker) "\
A mark one character past the end of the current field, or nil if current
field extends to end of buffer.")
(byte-code "!!  " [make-variable-buffer-local dbf-this-field-end-marker boundp dbf-moving-mark make-marker] 2)
(defvar dbf-this-record nil "\
The record currently displayed and edited.  This is an honest-to-goodness
record whose slots are filled from `dbf-this-record-original' if it's modified.
The variable's value should never be set except by `copy-record-to-record'; its
slots may be freely modified, however.
This is only used if `dbf-this-record-modified-p' is t.")
(make-variable-buffer-local (quote dbf-this-record))
(defvar dbf-this-record-original nil "\
The original of  dbf-this-record; a pointer to some poor unsuspecting
record that shouldn't be modified until everything has been checked out.
That is, when the user is setting fields, this record remains unchanged
and  dbf-this-record, a copy of the original, is munged instead.")
(make-variable-buffer-local (quote dbf-this-record-original))
(defvar dbf-this-record-modified-p nil "\
T if the current record has been modified, nil otherwise.
This determines which record is returned by `dbf-displayed-record':
if non-nil, then `dbf-this-record-original' has been copied to `dbf-this-record'.
It's best to use `dbf-set-this-record-modified-p' to set this variable.")
(make-variable-buffer-local (quote dbf-this-record-modified-p))
(defvar dbf-set-this-record-modified-function nil "\
A function called every time the working copy `dbf-this-record' is created
by `dbf-set-this-record-modified-p'.  The function takes no arguments and
its return value is ignored.  It is called after `dbf-this-record-original'
is copied to `dbf-this-record' and after `dbf-this-record-modified-p' is set
to t.")
(make-variable-buffer-local (quote dbf-set-this-record-modified-function))
(defalias 'dbf-set-this-record-modified-p #[(arg) " 	 \"\"" [arg dbf-this-record-modified-p copy-record-to-record dbf-this-record-original dbf-this-record db-funcall-maybe-default nil dbf-set-this-record-modified-function] 3 "\
Set the value of `dbf-this-record-modified-p' to ARG.
If ARG is non-nil and `dbf-this-record-modified-p' is nil, also do the
necessary record-copying and call `dbf-set-this-record-modified-function'."])
(defalias 'dbf-displayed-record '(macro . #[nil "" [(if dbf-this-record-modified-p dbf-this-record dbf-this-record-original)] 1 "\
Return the record currently displayed in this data display buffer.
This is `dbf-this-record' if `dbf-this-record-modified-p' is non-nil and
`dbf-this-record-original' otherwise."]))
(defvar dbf-fields-displayed nil "\
A vector of one string, the displayed text for that field, per displayspec.")
(make-variable-buffer-local (quote dbf-fields-displayed))
(defvar dbf-redisplay-entire-record-p nil "\
T if the whole record needs to be redisplayed.
This is often set by change functions.")
(make-variable-buffer-local (quote dbf-redisplay-entire-record-p))
(defvar db-view-mode-hooks nil "\
Function or list of functions called when database view mode is entered.")
(defvar db-edit-mode-hooks nil "\
Function or list of functions called when database edit mode is entered.")
(defvar dbf-before-display-record-function nil "\
A function called before a record is displayed by `display-record'.
The function should take one argument, the record.

This is a good place to put calls to `db-alternate-format'.  Depending on
your function's implementation, however, you may silently override any user
calls to that function.")
(make-variable-buffer-local (quote dbf-before-display-record-function))
(defvar dbf-enter-field-function nil "\
A function called whenever a display field is entered.
The function takes the displayspec index as an argument, which is
guaranteed to be `dbf-this-field-index'.")
(make-variable-buffer-local (quote dbf-enter-field-function))
(defvar dbf-first-change-function nil "\
A function called the first time a record field is modified, or nil.
The function takes the fieldname and the old and new values as arguments,
and returns t if the record should be redisplayed.")
(make-variable-buffer-local (quote dbf-first-change-function))
(defvar dbf-every-change-function nil "\
A function called whenever a record field is modified, or nil.
The function takes the fieldname and the old and new values as arguments,
and returns t if the record should be redisplayed.")
(make-variable-buffer-local (quote dbf-every-change-function))
(defvar dbf-change-functions nil "\
A vector of one function (or nil) per record field (not display field).
The functions take the fieldname and the old and new values as arguments,
and return t if the record should be redisplayed.
Use `dbf-set-change-function' to set the fields of this vector.")
(make-variable-buffer-local (quote dbf-change-functions))
(defalias 'dbf-set-change-function #[(fieldname function) "\n\"I" [dbf-change-functions fieldname->fieldnumber fieldname dbc-database function] 4 "\
Set the change function for FIELDNAME to FUNCTION in the current database.
FUNCTION should take the fieldname and the old and new values as arguments,
and return t if the record should be redisplayed."])
(defvar dbf-after-record-change-function nil "\
Function called whenever changes to a record are recorded semi-permanently
by `dbf-process-current-record-maybe'.  For convenience, the function
takes the record as an argument, which is guaranteed to be `dbf-this-record'.
Its return value is ignored.")
(make-variable-buffer-local (quote dbf-after-record-change-function))
(defvar dbf-reset-on-edit-list nil "\
An alist of (variable-name . default-value) pairs.
Every time Edit Mode is entered, these buffer-local variables are reset to
their default values.  This is good for making sure that something only
happens once each time a record is edited.")
(make-variable-buffer-local (quote dbf-reset-on-edit-list))
(defvar dbf-minor-mode nil "\
A symbol, either 'view or 'edit.")
(make-variable-buffer-local (quote dbf-minor-mode))
(defvar dbf-minor-mode-name nil "\
\"View\" or \"Edit\".")
(make-variable-buffer-local (quote dbf-minor-mode-name))
(defvar dbf-format-name nil "\
The string representing the format currently in use.")
(make-variable-buffer-local (quote dbf-format-name))
(defvar dbf-format-file nil "\
The format file from which this format was built.")
(make-variable-buffer-local (quote dbf-format-file))
(defvar dbf-alternate-format-names nil "\
Association list of format names and format specifiers.
Each format name is an arbitrary string.
A format specifier is a filename or a list of values for format variables.
The user sets the format specifier to a filename, and after that format file
has been read, EDB replaces the filename with a list of values for format
variables, so that the file need not be read again.

It is convenient for a database designer to set this, pre-assigning format
names to files so that the user only needs to remember the format names,
not the filenames.")
(make-variable-buffer-local (quote dbf-alternate-format-names))
(defvar dbf-alternate-format-files nil "\
Association list of file names and format file specifiers.
A format file specifier is a list of values for format variables.
The user should not set this variable; use `dbf-alternate-format-names' instead.")
(byte-code "!\"\"\"\"\"PܰR \"$ Q&&()+),.)/\"\"##\"\"##\"\"##@ A \"B C \"@ #B #D E \"F G \"D #F #H I \"J K \"H #J #L M \"N O \"L #N #P Q \"R S \"P #R #T U \"V W \"T #V #X Y \"Z [ \"X #Z #\\ ] \"^ _ \"\\ #^ #` a \"b c \"` #b #d e \"f g \"d #f #h i \"j k \"h #j #l m \"n o \"l #n #p q \"r s \"p #r #t uv w \"v x #y z \"y { #" [make-variable-buffer-local dbf-alternate-format-files defalias dbf-make-format-spec #[nil "	\n" [dbf-format-file dbf-summary-format dbf-summary-function dbf-fields-displayed dbf-field-search-defaults] 5] dbf-install-format-spec #[(format-spec) "@A@A@A@A@A" [format-spec dbf-format-file dbf-summary-format dbf-summary-function dbf-fields-displayed dbf-field-search-defaults] 3] format-spec-format-file #[(format-spec) "< @" [format-spec] 1] dbf-make-format-file-spec #[nil "	\n" [dbf-always-forms dbf-displayspecs dbf-displayspecs-length dbf-inter-field-text dbf-recordindex-displayspecno-vector] 5] dbf-install-format-file-spec #[(format-file-spec) "@	\"A@AA@88	" [format-file-spec dbf-always-forms mapcar eval dbf-displayspecs dbf-displayspecs-length 3 dbf-inter-field-text 4 dbf-recordindex-displayspecno-vector] 3] "\\(\\\\\\\\\\)*" doubled-backslash-regexp "\\(^\\|[^\\]\\)" non-backslash-character-regexp "[-<>a-zA-Z0-9]+" symbol-or-number-regexp "[a-zA-Z][-<>a-zA-Z0-9]*" symbol-regexp "\\\\" fieldname-regexp "#\\|\\$\\|\"\\|'\\|\\[[^]]+\\]" displaytype-nonsymbol-regexp ",?" "\\(" "\\|" "\\)" displaytype-regexp "\\(=\\(" "\\)\\)?" fieldoption-regexp 1 fieldoption-regexp-symbol 3 fieldoption-regexp-equals "\\)*" fieldoptions-regexp "\\(\\\\ \\)?" displayspec-regexp displayspec-regexp-fieldname 2 displayspec-regexp-fieldoptions displayspec-regexp-content-beginning 0 displayspec-regexp-content-end displayspec-regexp-content-end-alt displayspec-record-index (macro . #[(vector) "	E" [aref vector 1] 3]) displayspec-set-record-index (macro . #[(vector value) "	F" [aset vector 1 value] 4]) put edebug-form-hook (form) (form form) displayspec-indent (macro . #[(vector) "	E" [aref vector 2] 3]) displayspec-set-indent (macro . #[(vector value) "	F" [aset vector 2 value] 4]) displayspec-min-width (macro . #[(vector) "	E" [aref vector 3] 3]) displayspec-set-min-width (macro . #[(vector value) "	F" [aset vector 3 value] 4]) displayspec-max-width (macro . #[(vector) "	E" [aref vector 4] 3]) displayspec-set-max-width (macro . #[(vector value) "	F" [aset vector 4 value] 4]) displayspec-min-height (macro . #[(vector) "	E" [aref vector 5] 3]) displayspec-set-min-height (macro . #[(vector value) "	F" [aset vector 5 value] 4]) displayspec-max-height (macro . #[(vector) "	E" [aref vector 6] 3]) displayspec-set-max-height (macro . #[(vector value) "	F" [aset vector 6 value] 4]) displayspec-min-bytes (macro . #[(vector) "	E" [aref vector 7] 3]) displayspec-set-min-bytes (macro . #[(vector value) "	F" [aset vector 7 value] 4]) displayspec-max-bytes (macro . #[(vector) "	E" [aref vector 8] 3]) displayspec-set-max-bytes (macro . #[(vector value) "	F" [aset vector 8 value] 4]) displayspec-truncation-display-action (macro . #[(vector) "	E" [aref vector 9] 3]) displayspec-set-truncation-display-action (macro . #[(vector value) "	F" [aset vector 9 value] 4]) displayspec-padding-action (macro . #[(vector) "	E" [aref vector 10] 3]) displayspec-set-padding-action (macro . #[(vector value) "	F" [aset vector 10 value] 4]) displayspec-actual->display (macro . #[(vector) "	E" [aref vector 11] 3]) displayspec-set-actual->display (macro . #[(vector value) "	F" [aset vector 11 value] 4]) displayspec-display->actual (macro . #[(vector) "	E" [aref vector 12] 3]) displayspec-set-display->actual (macro . #[(vector value) "	F" [aset vector 12 value] 4]) displayspec-match-actual->display (macro . #[(vector) "	E" [aref vector 13] 3]) displayspec-set-match-actual->display (macro . #[(vector value) "	F" [aset vector 13 value] 4]) displayspec-match-display->actual (macro . #[(vector) "	E" [aref vector 14] 3]) displayspec-set-match-display->actual (macro . #[(vector value) "	F" [aset vector 14 value] 4]) displayspec-truncation-editing-action (macro . #[(vector) "	E" [aref vector 15] 3]) displayspec-set-truncation-editing-action (macro . #[(vector value) "	F" [aset vector 15 value] 4]) displayspec-reachablep (macro . #[(vector) "	E" [aref vector 16] 3]) displayspec-set-reachablep (macro . #[(vector value) "	F" [aset vector 16 value] 4]) 16 displayspec-length old-make-displayspec #[nil "\"I)" [make-vector 17 nil result 0 displayspec] 4] nil copy-displayspec (macro . #[(struct) "	D" [copy-sequence struct] 2]) (form)] 7)
(defalias 'displayspec-p #[(object) "	! 	GU 	H=" [vectorp object 17 0 displayspec] 2 "\
T if OBJECT is a displayspec."])
(defalias 'make-displayspec #[nil " I	I	I	)" [old-make-displayspec ds 5 1 6 16 t] 4 "\
Create and return a new displayspec."])
(byte-code "EEEEEEEEEEEEEEEEEEEEEEEEEE2\"\"\"\"\"\"@ \"" ["indent" 2 (lambda (x) t) "noindent" (lambda (x) nil) "width" (3 4) string->number "min-width" 3 "max-width" 4 "length" (3 4) "min-length" "max-length" "height" (5 6) "min-height" 5 "max-height" 6 "bytes" (7 8) "min-bytes" 7 "max-bytes" 8 "trunc-display" 9 intern "truncation-display-action" "padding-action" 10 "right-justify" right-justify-slotsetter-function "actual->display" 11 "a->d" "display->actual" 12 "d->a" "truncation-editing-action" 15 "trunc-edit" "reachable" 16 (lambda (x) t) "unreachable" (lambda (x) nil) optspec-list defalias #[(&rest args) "B" [32 t] 2] optspecinfo-accessor #[(optspec-info) "A@" [optspec-info] 1] optspecinfo-specfunction #[(optspec-info) "AA@" [optspec-info] 1] display->actual-call (macro . #[(d->a fieldtext prev-value record recordfieldno) "\nDDD\n	FE" [let dac-d->a d->a dac-fieldtext fieldtext if db-vararg-call funcall 2 5 prev-value record recordfieldno] 13]) actual->display-call (macro . #[(a->d fieldtext record recordfieldno) "\nDDFDEE" [let* adc-a->d a->d adc-fieldtext fieldtext adc-result if db-vararg-call funcall 2 4 record recordfieldno (if (stringp adc-result) adc-result "<ERROR>")] 14]) dbf-point-min (macro lambda nil 1) dbf-this-field-text #[nil " {" [dbf-this-field-beginning-pos dbf-this-field-end-pos] 2]] 28)
(defalias 'dbf-set-this-field-text #[(field-text) " |b\nc" [dbf-this-field-beginning-pos dbf-this-field-end-pos field-text] 2 "\
Make the format display FIELD-TEXT in the current field."])
(byte-code "\"\"\"\"\"\"\"" [defalias dbf-this-field-text-unrect #[nil " 	!)" [dbf-this-field-text text unindentify] 2] indentify-absolute #[(text) "  	\"P# )" [dbf-this-field-indent amt db-string-substitute-substring-general-case "\n" make-string 32 text] 6] unindentify #[(text) "  É	!P# )" [dbf-this-field-indent amt db-string-substitute-substring-general-case "\n" space-maybe-regexp text] 6] space-maybe-regexp #[(n) "& \\\"\\SV# IZ )Ǉ" [n make-string 32 result 0 63 2 ""] 4] dbf-set-field-text #[(fieldno field-text) "!" [error "dbf-set-field-text not yet implemented."] 2] dbf-goto-field #[(fieldno) "!" [error "dbf-goto-field not yet implemented."] 2] dbf-set-this-field-index (macro . #[(new-index) "\nDDE" [let* i new-index (index (and i (% i dbf-displayspecs-length))) (setq dbf-this-field-index index dbf-this-displayspec (and index (aref dbf-displayspecs index)))] 3])] 3)
(defalias 'db-view-mode #[(&optional arg) " 	 ! =  =?F !\n!b!C  !" [db-data-display-buffer-p error "Only call this in database mode." arg dbf-minor-mode view db-edit-mode dbf-process-field-maybe t "View" dbf-minor-mode-name use-local-map database-view-mode-map nil dbf-this-field-index dbf-this-displayspec buffer-read-only 1 dbf-set-this-field-modified-p db-running-lucid-emacs db-lucid-view-mode-menubar run-hooks db-view-mode-hooks] 2 "\
Switch to database view mode.
With an argument, toggle between view and edit modes." "P"])
(defalias 'db-edit-mode #[(&optional arg) " 	 ! =  \n!H- 1 !\" B  !" [db-data-display-buffer-p error "Only call this in database mode." arg dbf-minor-mode edit db-view-mode "Edit" dbf-minor-mode-name use-local-map database-edit-mode-map dbc-database 31 nil buffer-read-only message "Database is not modifiable; use db-toggle-modifiable-p to change that." mapcar #[(varname-value) "	@!	@	AL" [make-variable-buffer-local varname-value] 2] dbf-reset-on-edit-list force-mode-line-update db-running-lucid-emacs db-lucid-edit-mode-menubar run-hooks db-edit-mode-hooks] 3 "\
Switch to Database Edit mode.
With an argument, toggle between Edit and View modes."])
(defalias (quote db-parse-buffer-error) #[(format-string &rest args) "\n # !" [db-debug-p apply error format-string args db-emergency-restore-format db-message "I was confused about where I was.  Changes to the field might have been lost."] 4])
(defalias 'db-next-line-or-field #[(arg) "i!  \n!  	V# ! b*" [nil goal-line goal-column db-forward-line-wrapping arg db-jump-to-point db-current-line move-to-column db-previous-field-internal 1 dbf-this-field-end-pos] 2 "\
Move to ARGth next line.  If that would move out of the current field,
move to the closest field to that, but not the current one, wrapping if necessary." "p"])
(defalias 'db-move-to-field-exact #[(arg) "!\"#" [db-first-field-internal t db-next-field-internal arg db-funcall-maybe-default nil dbf-enter-field-function dbf-this-field-index] 4 "\
Move to the ARGth field in the display.  Ignores reachablep."])
(defalias 'db-next-field #[(arg) "!\nbV ! [!!\n#" [dbf-process-field-maybe t dbf-this-field-beginning-pos arg 0 db-next-field-internal db-previous-field-internal dbf-set-this-field-modified-p nil db-funcall-maybe-default dbf-enter-field-function dbf-this-field-index] 4 "\
Move to ARGth next reachable field, wrapping if necessary.
When called interactively, ARG defaults to 1." "p"])
(defalias (quote db-next-field-internal) #[(arg &optional exact) "V \nHŚ Ƃ\" `G\\#\" b) TSUf 	HŚC ƂQ `G\\#Q b)a 	HS#b	HŚu Ƃ `G\\# b) 	H#  HH  T \nH#  H`p! \nH!! dU? Tp)" [arg 0 dbf-fields-displayed dbf-this-field-index s "" t search-forward dbf-displayspecs-length dbf-inter-field-text db-parse-buffer-error "Didn't find trailing text `%s' after field %s." 1 "Didn't find field separator `%s' before field %s." exact dbf-displayspecs 16 "Didn't find field %s text `%s'." dbf-this-displayspec dbf-this-field-beginning-pos buffer-disable-undo buffer-enable-undo looking-at regexp-quote end-of-match dbf-this-field-end-marker] 6])
(defalias 'db-previous-line-or-field #[(arg) "i [!!  U1 ! b!` ^b +" [db-current-line nil this-line vacated-line goal-column db-forward-line-wrapping arg move-to-column db-jump-to-point db-previous-field-internal 1 dbf-this-field-end-pos] 4 "\
Move to ARGth previous line.  If that would move out of the current field,
move to the closest field to that, but not the current one, wrapping if necessary." "p"])
(defalias 'db-previous-field #[(&optional arg) "!\nbV ! [!!\n#" [dbf-process-field-maybe t dbf-this-field-beginning-pos arg 0 db-previous-field-internal db-next-field-internal dbf-set-this-field-modified-p nil db-funcall-maybe-default dbf-enter-field-function dbf-this-field-index] 4 "\
Move to ARGth previous reachable field, wrapping if necessary.
When called interactively, ARG defaults to 1." "p"])
(byte-code "\"\"" [defalias db-previous-field-internal #[(arg) "	! \nSV HȚ! ɂ+ `GZ#) `SSWu SdbHȚX ɂb `GZ#)k `u H#HȚ ɂ `GZ#) H#HH T H# H`p! 	\n \nU d\nU? \nTؓ)" [marker-position dbf-this-field-end-marker prev-inter-field-text-beginning arg 0 dbf-inter-field-text dbf-this-field-index s "" t search-backward dbf-displayspecs-length db-parse-buffer-error "Didn't find trailing text `%s' after field %s." dbf-fields-displayed "Didn't find field %s text `%s'." dbf-displayspecs 16 "Didn't find field separator `%s' before field %s." dbf-this-displayspec dbf-this-field-beginning-pos buffer-disable-undo buffer-enable-undo 1 nil] 6] db-first-field-internal #[(&optional exact) " !  bHȚ# 3 `G\\#3 ĕb)@ H#!V HHV !!" [dbf-this-field-index dbf-process-field-maybe t db-edit-mode 0 1 dbf-inter-field-text s "" search-forward db-parse-buffer-error "Didn't find field separator `%s' before field %s." db-next-field-internal exact dbf-displayspecs 16 dbf-set-this-field-modified-p nil] 5]] 3)
(defalias 'db-first-field #[nil "!#" [db-first-field-internal nil db-funcall-maybe-default dbf-enter-field-function dbf-this-field-index] 4 "\
Move to first field." nil])
(defalias 'db-last-field #[nil "!!" [db-first-field-internal nil db-previous-field 1] 2 "\
Move to last field." nil])
(defalias 'db-scroll-up #[nil " !" [scroll-up db-jump-to-point t] 2 "\
Like scroll-up, but also edits the nearest database field." nil])
(defalias 'db-scroll-down #[nil " !" [scroll-down db-jump-to-point t] 2 "\
Like scroll-down, but also edits the nearest database field." nil])
(defalias 'db-jump-to-point #[(&optional quietly) "  	 \n`X ` X ``Ɠ	$ \nb	: !`V: !\nb> !!UL )Ɖ Vi 	SWi \"R H  H\"\"!	#\n] ^b)     y`\"`W  [ !b!!+" [db-data-display-buffer-p dbf-this-field-index dbf-this-field-beginning-pos dbf-this-field-end-pos new-point dbf-moving-mark nil marker-position dbf-process-field-maybe t db-first-field-internal moving-pos 1 dbf-displayspecs-length db-next-field-internal dbf-this-displayspec 16 quietly db-message "%s field is unreachable." fieldnumber->fieldname dbc-database db-funcall-maybe-default dbf-enter-field-function dbf-in-indentation-p db-beginning-of-line-or-field db-summary-buffer-p 0 count-lines dbs-point lines lines-signed dbfs-lines difference dbs-next-record-ignore-omitting] 6 "\
If in a data display buffer, move to the field containing or following point.
In a summary buffer, move to the record displayed around point." nil])
(defvar db-mouse-buffer-switch-moves-point-p t "\
If this variable is non-nil, then whenever a mouse event causes a database
buffer to become the current buffer, `db-jump-to-point' is called, placing
point as close to the mouse click as possible.
If this variable is nil, then mouse clicks in a database buffer only move
point when they do not cause a buffer switch, that is, when that database
buffer was alrady the current buffer.

Set this variable if you prefer that switching to a database buffer via
mouse clicks does not move point.  (One reason besides personal preference
is the use of software such as Hyperbole which causes mouse events outside
the data display buffer to make it active.)")
(byte-code "\"\"\"\"\"\"\"" [defalias db-x-jump-to-point #[nil "`p  	`= p=?\" 	`=?' p='  *" [this-buffer here x-flush-mouse-queue db-mouse-buffer-switch-moves-point-p db-jump-to-point] 2 nil nil] dbf-this-field-end-pos #[nil "	! \nS d)" [marker-position dbf-this-field-end-marker pos] 3] dbf-this-field-beginning-pos (macro . #[nil "" [dbf-this-field-beginning-pos] 1]) dbf-this-field-indent #[nil "H H H\nbi)" [dbf-this-displayspec 2 dbf-this-field-beginning-pos] 2] dbf-check-if-beyond-field #[(&optional quietly) " `	V 	b\n? !)" [dbf-this-field-end-pos end-pos quietly dbf-inform-outside-field "End of field."] 2] dbf-check-if-before-field #[(&optional quietly) "`W b	? !" [dbf-this-field-beginning-pos quietly db-message "Beginning of field."] 2] dbf-check-if-outside-field #[(&optional quietly) "	!	!" [dbf-check-if-before-field quietly dbf-check-if-beyond-field] 2]] 3)
(defvar dbf-field-boundary-action (quote error) "\
Controls action when point attempts to leave a field.
One of nil, 'message, 'beep, 'ding, 'error.
'beep and 'ding are identical and also show a message.
Having a variable is overkill, but I don't yet know what the Right Thing is.")
(byte-code "!\"" [make-variable-buffer-local dbf-field-boundary-action defalias dbf-inform-outside-field #[(message) "=\n \n!= \n! =$ \n! =. \n!=6 Ƈ\"" [dbf-field-boundary-action error message ding db-message beep nil "What value does this dbf-field-boundary-action value mean?  %s"] 3]] 3)
(defalias 'db-beginning-of-field #[nil "b" [dbf-this-field-beginning-pos] 1 "\
Move to the beginning of the current field." nil])
(defalias 'db-end-of-field #[nil " b" [dbf-this-field-end-pos] 1 "\
Move to the end of the current field." nil])
(defalias (quote dbf-in-indentation-p) #[nil "  	V ! i	W)" [dbf-this-field-indent amt 0 db-looking-back-at "^ +"] 3])
(defalias 'db-beginning-of-line-or-field #[nil "y !! b!" [0 looking-at space-maybe-regexp dbf-this-field-indent dbf-check-if-outside-field t] 3 "\
Move to the beginning of the current line of the current field." nil])
(defalias 'db-end-of-line-or-field #[(arg) "!" [arg dbf-check-if-outside-field t] 2 "\
Move to the end of the current line of the current field." "p"])
(defalias 'db-forward-char #[(arg) "W [! V9 m! ! u!P!2 bS  )" [arg 0 db-backward-char dbf-this-field-indent indent dbf-inform-outside-field "End of field." 1 looking-at "^" space-maybe-regexp dbf-check-if-outside-field] 5 "\
Like forward-char, but won't go outside field." "p"])
(defalias 'db-backward-char #[(arg) "W [! VF o! ! `!P!: U: b)!S  )" [arg 0 db-forward-char dbf-this-field-indent indent dbf-inform-outside-field "Beginning of field." here re-search-backward "^" space-maybe-regexp backward-char 1 dbf-check-if-outside-field] 5 "\
Like backward-char, but won't go outside field." "p"])
(byte-code "\"\"" [defalias db-delete-char #[(arg) "`	!`|" [db-forward-char arg] 3 nil "p"] db-backward-delete-char #[(arg) "`	!`|" [db-backward-char arg] 3 nil "p"]] 3)
(defalias 'db-forward-word #[(arg) "v " [arg dbf-check-if-outside-field] 1 "\
Like forward-word, but won't go outside field." "p"])
(defalias 'db-backward-word #[(arg) "	[!" [db-forward-word arg] 2 "\
Like backward-word, but won't go outside field." "p"])
(defalias 'db-copy-region-as-kill #[(beg end) "= {!W\"/ {!BGV/ Sȡ	\n" [last-command db-kill-region kill-append unindentify beg end kill-ring kill-ring-max nil this-command kill-ring-yank-pointer] 5 "\
Save the region as if killed, but don't kill it." "r"])
(defalias 'db-kill-region #[(beg end) "	\n\"	\n|" [db-copy-region-as-kill beg end] 3 "\
Kill between point and mark.
The text is deleted but saved in the kill ring.  See `kill-region' for details." "*r"])
(defalias 'db-kill-word #[(arg) "`\n!`\"" [db-kill-region db-forward-word arg] 4 "\
Like kill-word, but won't delete outside the field." "p"])
(defalias 'db-backward-kill-word #[(arg) "	[!" [db-kill-word arg] 2 "\
Like backward-kill-word, but won't delete outside the field." "p"])
(defalias 'db-kill-line #[(arg) "`\n!` W  !P! ȕb`\")" [here db-end-of-line-or-field arg dbf-this-field-end-pos looking-at "[ 	]*\n" space-maybe-regexp dbf-this-field-indent 0 db-kill-region] 4 "\
Like kill-line, but won't delete outside the field." "p"])
(defalias 'db-kill-to-end #[nil "` \"" [db-kill-region dbf-this-field-end-pos] 3 "\
Kill from point to the end of the current field." nil])
(defalias 'db-newline #[(arg) "H  \"\nW*  !& \"!)9 \nU6 !9 !)" [dbf-this-displayspec 6 max-height count-lines dbf-this-field-beginning-pos dbf-this-field-end-pos dbf-this-field-indent indent newline 1 db-old-insert make-string 32 db-next-field db-message "Field is at maximum height already."] 5 "\
Insert a newline.  Will not make the current field too tall.
If the current field's maximum height is 1 line, move to the next field instead." "p"])
(defalias 'db-open-line #[(arg) "`\n!b)" [here db-newline arg] 2 "\
Insert a newline and leave point before it.
Will not make the current field too tall." "p"])
(byte-code "! KM\"" [fboundp db-old-insert insert defalias db-insert-item #[(string-or-char) "\n; \n \n!!!" [db-old-insert indentify-absolute string-or-char char-to-string] 4]] 3)
(defalias 'db-insert #[(&rest args) " \n \"\"" [db-data-display-buffer-p mapcar db-insert-item args apply db-old-insert] 3 "\
Any number of args, strings or chars.  Insert them after point, moving point forward.
Does special manipulations in database data display buffers."])
(byte-code "M\"\"\"\"" [insert db-insert defalias dbf-process-field-maybe #[(set-field-text-p) " 	 \n!Ç" [dbf-this-field-modified-p dbf-process-field set-field-text-p t] 2] dbf-process-field #[(set-field-text-p) "`W ` V ` $ H H \n= \nЏ*? \n*HR T H !$ \"I ! % ##$ % ##%H % ##   H!!,!" [dbf-this-field-beginning-pos dbf-this-field-end-pos db-parse-buffer-error "Point was outside (%d) of current field (%d - %d)." dbf-this-field-text dbf-fields-displayed dbf-this-field-index dbf-this-displayspec 12 dbf-this-field-text-unrect dac-fieldtext dac-d->a vararg-common-2 vararg-common-1 err (funcall vararg-common-1 vararg-common-2) ((wrong-number-of-arguments (byte-code "	\n\n  H\n  $" [vararg-common-1 vararg-common-2 dbf-this-record-modified-p dbf-this-record dbf-this-record-original dbf-this-field-index] 5)) (error (byte-code "	@	A\"  " [signal err] 3))) field-value 1 record-index dbf-this-record-modified-p dbf-this-record dbf-this-record-original old-field-value saved-modified-p dbf-set-this-record-modified-p t record-set-field-from-index dbc-database set-field-text-p displayspec->displayed-rep db-funcall-maybe-default nil dbf-first-change-function dbf-this-field-name dbf-redisplay-entire-record-p dbf-every-change-function dbf-change-functions dbf-redisplay-entire-record-maybe dbf-set-this-field-text dbf-set-this-field-modified-p] 7] dbf-redisplay-entire-record-maybe #[nil " !Ç" [dbf-redisplay-entire-record-p nil db-emergency-restore-format t] 2] dbf-process-current-record-maybe #[(set-text-p) ": \n!B   #\"\nI\n\"!!?B !" [dbc-index dbf-process-field-maybe set-text-p dbf-this-record-modified-p db-funcall-maybe-default nil dbf-after-record-change-function dbf-this-record dbf-this-record-original copy-record-to-record dbc-link 5 dbf-update-summary-item dbc-set-database-modified-p t dbf-set-this-field-modified-p y-or-n-p "Abandon the displayed information? "] 4]] 3)
(defalias 'db-revert-field #[(&optional quietly) "  \nH!!?&  \"?&  \"" [dbf-this-field-modified-p dbf-set-this-field-text dbf-fields-displayed dbf-this-field-index dbf-set-this-field-modified-p nil quietly db-message "Reverted %s." dbf-this-field-name "Can't revert %s; no changes since moving onto it."] 3 "\
Replace the onscreen text in this field with that of the underlying record.
In other words, undo any changes made since entering this field." nil])
(defalias 'db-revert-record #[nil "!\n* \n  \"% !!)!" [db-revert-field t dbf-this-record-modified-p nil buffer-read-only display-record dbf-this-record dbf-this-record-original dbf-this-field-index db-move-to-field-exact db-message "Reverted record." "Can't revert this record; no changes since selecting it."] 3 "\
Set the record to be the same as the corresponding one in the database.
In other words, undo any changes made since entering this record." nil])
(defalias (quote string->displaytype) #[(string) ";7  Ø ćŘ Ƙ% Ǉ\"3 OD!" [string "#" integer "$" number "\"" "'" one-line-string string-match "^\\[.*\\]$" alternative-one-char 1 -1 intern] 4])
(defalias 'displaytype->displayspec #[(displaytype) "\n!\"A! !    9  !)" [assoc string->displaytype displaytype db-displaytypes displayspec displayspec-p copy-sequence displaytype->displayspec] 3 "\
Return a copy of the displayspec corresponding to string or symbol DISPLAYTYPE.
Return nil if there's no corresponding displayspec."])
(byte-code "\"\"\"\"\"\"\"" [defalias make-displayspec-from-string #[(displayspec-string database) "\nQ\" \"\"" [string-match "^" displayspec-regexp "$" displayspec-string error "`%s' doesn't look like a field specification" make-displayspec-from-string-internal database] 4] make-displayspec-from-string-internal #[(displayspec-string database) "	\n\"\" A!f O!( \"< < \"\"\n\"\"\\ \"$I**" [db-match-string displayspec-regexp-fieldname displayspec-string fieldname assoc dbf-fieldabbrevs abbrev-assoc copy-sequence intern 1 nil database fieldname->fieldnumber displayspec index error "%s is not a field or field abbreviation." make-displayspec-from-type-and-options database-recordfieldspec-type db-match-string-maybe displayspec-regexp-fieldoptions "Type %s in field %d (%s) not recognized."] 6] make-displayspec-from-type-and-options #[(displaytype optionstring &optional notype-ok) " 	 	! 	\" ƉP\"= \"!!= ϕON 	I 	!N \"њ P\"c \"ϕ\"\"~ \"\"\"#OO *" [optionstring displaytype displaytype->displayspec error "No such displaytype as `%s'." make-displayspec nil match-end-0 displayspec string-match "^" displaytype-regexp string->displaytype db-match-string 1 0 "No type specified in `%s'." "" fieldoption-regexp "`%s' isn't an optional field specification." update-displayspec-from-optspec-and-value assoc fieldoption-regexp-symbol optspec-list "%s isn't a valid optional field specifier name or type." db-match-string-maybe fieldoption-regexp-equals] 8] update-displayspec-from-optspec-and-value #[(displayspec optspec value) "	!	!! I= !# \"= <9 = @IA) \"*" [optspecinfo-accessor optspec optspecinfo-specfunction value accessor displayspec db-functionp error "Unrecognized optspecinfo-accessor %s."] 4] db-setup-data-display-buffer #[(format-file database new-database-p) "	!	! 	\"\"q		\"	, ! O H@ !H\"!!	p" [expand-file-name format-file file-readable-p error "Can't read format file `%s'." db-make-data-display-buffer database new-database-p nil buffer-read-only insert-file-contents dbf-format-file read-db-aux-file db-really-hack-local-variables 16 db-set-field-variables make-vector 10 dbf-change-functions make-record dbc-database dbf-this-record db-setup-ddb-parse-displayspecs t] 3] db-make-data-display-buffer #[(database new-database-p) "\nH!!p=? \nH!! !	)\n\n8 \nH\"\n! p ӎq! =?W !`=\nH!j !	)\n\n \nH\"\n! p p= !=  = `\"+*" [get-buffer-create create-file-buffer database 4 this-buffer target-buffer file-name-directory dir expand-file-name default-directory dbc-database new-database-p make-vector 10 nil dbf-change-functions make-record dbf-this-record database-mode ((byte-code "	! 	! 	q" [bufferp this-buffer buffer-name] 2)) get-buffer-window target-window selected-window window-point track-window-point-p set-window-point] 5] db-setup-ddb-parse-displayspecs #[(database) "!db!ĕd|b#\" ! ŉb2 #2  ȉY !b\"b# v \" }b\"*{B y``{)   |H= iIB_  d}b\"*d{B!#!$G%%\"'%T\"(.H\"*+%WK*$+HH+I+T+/) !!" [db-operate-on-local-variables delete-region re-search-backward "[^ 	\n]" 0 1 re-search-forward "[ 	]+$" nil t replace-match "" search-forward "\\\\" db-unused-char-in-buffer inter-field-text-list displayspec-list this-displayspec end beginning backslash-placeholder prev-field-end char-to-string replace-string dbf-default-summary-format displayspec-regexp displayspec-regexp-content-beginning displayspec-regexp-content-end displayspec-regexp-content-end-alt make-displayspec-from-string-internal database "\\" dbf-summary-format 2 vconcat dbf-inter-field-text dbf-displayspecs dbf-displayspecs-length make-vector dbf-fields-displayed dbf-field-search-defaults 10 dbf-recordindex-displayspecno-vector fsno dbf-set-summary-format set-buffer-modified-p] 8]] 3)
(defalias 'db-additional-data-display-buffer #[nil "!p\"HBI!\n!!!+" [dbf-process-current-record-maybe t orig-buffer dbc-database database db-make-data-display-buffer nil data-display-buffer 7 switch-to-buffer-other-window db-copy-buffer-local-variables make-record dbf-this-record db-emergency-restore-format] 5 "\
Create another data display buffer in which to view this database." nil])
(defalias 'db-alternate-format #[(&optional format-name filename) " 	?D / / B$ʚ/ ˉ$7 ! \"Ar !i n \"n $n !)  BB !)t 	 ! !	 	\"   	 BB)\"A !	 !\"A!0#$%\"p! ! #! BB./.00/! BB* *)tD2@3B4\"" [format-name dbf-format-name db-view-mode filename completing-read "Use which format? (? for options, RET to specify a file) " ("") dbf-alternate-format-names #[(assoc-elt) "@;" [assoc-elt] 1] t "" nil read-file-name "File for new format: " locate-format-file assoc format-spec format-spec-format-file fs-filename db-same-file-p error "Format name %s is associated with %s, not %s." "`%s' is not the name of a format." y-or-n-p "Would you like to give the current format a name? " read-string "Name for current format: " old-fmtname-assoc dbf-make-format-spec dbf-format-file dbf-alternate-format-files new-format-spec dbf-install-format-file-spec dbf-install-format-spec intern dbc-database buffer-read-only database db-message "Reading format from %s." buffer-disable-undo erase-buffer insert-file db-really-hack-local-variables db-setup-ddb-parse-displayspecs dbf-make-format-file-spec dbf-default-summary-format dbf-summary-format dbf-summary-function display-record dbf-this-record-modified-p dbf-this-record dbf-this-record-original] 6 "\
Select and use an alternate display format to view the database.
If neither FORMAT-NAME nor FILENAME is specified (as is the case when this
is called interactively), the user is prompted for them.  In Emacs Lisp
code, if `dbf-alternate-format-names' has been been set, usually only one of
the arguments is specified.  If both are specified, then FORMAT-NAME
becomes a name for the format FILENAME specifies; if FORMAT-NAME is already
associated with a different format file, an error is signalled.

If the current format is unnamed, the user is prompted for a name
to give it, so that it can be conveniently restored if need be.  This
behavior is suppressed, and the record is not displayed, if the function is
not being called interactively.

Selecting the current format does not cause any work to be done.

Some databases automatically set the format of the record being displayed,
usually by setting `dbf-before-display-record-function' to a function that
overrides the format in effect when a record is about to be displayed.
This may cause this function to appear not to be doing any work.  In
actuality the format is being set, then reset." nil])
(defalias 'db-emergency-restore-format #[(&optional recompute) "		 \n\n \" !!)" [display-record dbf-this-record-modified-p dbf-this-record dbf-this-record-original recompute dbf-this-field-index this-field-index dbf-set-this-field-modified-p nil db-move-to-field-exact] 3 "\
Replace a format with a fresh one; use this if the format gets munged.
Changes made to the current field since last moving onto it may be lost.
If optional prefix arg RECOMPUTE is non-nil, `display-record' recomputes
the displayed text as well." "P"])
(defalias 'dbf-set-summary-format #[(summary-format) "GSU GSO H% \"" [summary-format 10 0 dbf-summary-format dbf-set-summary-out-of-date-p t dbf-summary-recompute-all-p dbc-database 12 dbf-make-summary-maker] 3 "\
Specify the format used in the Database Summary buffer.
Argument SUMMARY-FORMAT is a string containing display specifications.
Call this in the data display buffer, or in a format file or auxiliary file." "sSummary format: "])
(defalias 'dbf-always '(macro . #[(&rest body) "EED\"" [append progn setq dbf-always-forms nconc body] 7 "\
Execute BODY, and place its forms in `dbf-always-forms'.
They will be executed each time that this format replaces another."]))
(put (quote dbf-always) (quote edebug-form-spec) (quote (&rest form)))
(defalias 'display-record #[(record &optional recompute fieldno-limit) "\n  =?	\n\n\"	6 4 5  p!J ped% W H`H!r `\"  Y H \" \n\"i\"P#IH!TO `H! `\"!bp!'." [0 nil record dbf-this-record-modified-p dbf-this-record dbf-this-record-original db-debug-p ext-start inhibit-quit is-displayed-record-p buffer-read-only printed-rep displayspec field-index db-funcall-maybe dbf-before-display-record-function dbc-update-database-modified-p buffer-disable-undo db-fontification map-extents #[(x y) "	!" [delete-extent x] 2] erase-buffer dbf-displayspecs-length dbf-displayspecs db-old-insert dbf-inter-field-text db-fontify recompute dbf-fields-displayed fieldno-limit make-string 3 32 displayspec->printed-rep db-string-substitute-substring-general-case "\n" dbf-set-this-field-modified-p 1 buffer-enable-undo quit-flag] 8 "\
Display RECORD.  If optional arg RECOMPUTE is non-nil, the display
representations will be computed first; RECOMPUTE is typically non-nil only
the first time a record is shown.  If optional third arg FIELDNO-LIMIT is
non-nil, only fieldnumbers strictly less than it will be displayed."])
(byte-code "\"\"" [defalias displayspec->printed-rep #[(displayspec record) "HH\nH  ˏ*\" ;. / +\"THH_ W_ Z\"P } V} Z#O +GHH W H! # Z]@ \"!A !P !P))<:V:H#= 6#=$6#O6#1SO#P6#\")<-" [displayspec 1 record-index 11 adc-a->d record adc-fieldtext vararg-common-2 vararg-common-1 err (funcall vararg-common-1 vararg-common-2) ((wrong-number-of-arguments (funcall vararg-common-1 vararg-common-2 record record-index)) (error (byte-code "	@	A\"  " [signal err] 3))) adc-result "<ERROR>" display-rep count-array 10 5 6 max-height min-height display-rep-height make-string 0 db-find-char-from-end 3 4 max-width min-width display-rep-length padding-action db-functionp 32 pad-string 9 trunc-action widen error "Value %s is too wide; should be between %s and %s characters." "Unrecognized trunc-action %s."] 8] displayspec->displayed-rep #[(displayspec record) "	\n\"H1 H   \"P#2 \"- !2 2 )" [displayspec->printed-rep dbf-this-displayspec dbf-this-record pr displayspec 2 db-string-substitute-substring-general-case "\n" make-string dbf-this-field-indent 32 db-find-char 10 error "Don't know how much to indent."] 5]] 3)
(defalias 'database-mode #[nil "!	 " [database-mode major-mode "Database" mode-name nil buffer-file-name auto-save-mode 0 ("-" (dbc-database-modified-p "*" "-") (dbf-this-record-modified-p "*" "-") "%*" "-Database: %17b   %[(" dbf-minor-mode-name minor-mode-alist " " dbc-index-fraction ")%]" "---" (-3 . "%p") "-%-") mode-line-format db-view-mode] 2 "\
A mode for viewing and editing formatted data; a database front end.
In Database Edit Mode, fields of the database may be changed.
In Database View Mode, keystrokes are bound to database commands.
Typically, if point is on a field, the buffer is in Edit Mode;
if point is at the beginning of the buffer, the buffer is in View Mode.
See the mode line to find out which mode the buffer is in.

View mode key bindings:

\\{database-view-mode-map}

Edit mode key bindings:

\\{database-edit-mode-map}"])
(byte-code "\"\"" [defalias db-data-display-buffer-p #[nil "=" [major-mode database-mode] 2] database-buffer-p #[nil "   " [db-data-display-buffer-p db-summary-buffer-p] 1]] 3)
