
(deflocalvar dbc-database nil "The database associated with this format.
This variable is also set in the summary format.")

(deflocalvar dbc-database-modified-p nil "T if the database has been modified, nil otherwise.
Mirrors the value of the modified-p slot of the database.
This has to be a real variable so it can go in mode-line-format.
Set it using `dbc-set-database-modified-p'.")

(defun dbc-update-database-modified-p nil (byte-code "	ÂH‰‡" [dbc-database-modified-p dbc-database 30] 2))

(proclaim-inline dbc-update-database-modified-p)

(defun dbc-set-database-modified-p (value) (byte-code "Ã	Iˆ	‰‡" [dbc-database value dbc-database-modified-p 30] 3))

(proclaim-inline dbc-set-database-modified-p)

(deflocalvar dbc-omit-p nil "Non-nil if omitting is in effect, nil otherwise.
Use function `dbc-set-omit-p', which works in either a data display buffer or
a summary buffer and sets the variable's value in both, instead of setting
this directly.
Setting this to nil is cheaper than changing the omit function to the empty
one, since no omit bits are recomputed.  
This variable is automatically set by the omitting functions.")

(defun dbc-set-omit-p (value) "\
Set `dbc-omit-p' to VALUE in both data display buffer and summary buffer.
Does no other housekeeping." (byte-code "ÇÈ !p	=ƒt ‰ˆÉ!… Ê!… …q Ç!p	=ƒ3 ‰‚p ËŽqˆÌ!Í =?…I Î!`=‰…f p=…f Ì!=…f Í =?…m Ï`\"ˆ*)*‚ÐŽqˆÌ!Í =?…Š Î!`=‰ˆÉ!…� Ê!…� …ð Ç!p	=ƒ² ‰‚ï ÑŽqˆÌ!Í =?…È Î!`=‰…å p=…å Ì!=…å Í =?…ì Ï`\"ˆ*)*…p=…Ì!=…Í =?…Ï`\"ˆ*)*‡" [target-buffer this-buffer dbc-omit-p value dbf-summary-buffer target-window track-window-point-p get-buffer-create db-data-display-buffer bufferp buffer-name ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3))] 29))

(deflocalvar dbc-link nil "The link of the record currently being displayed, or nil.")

(deflocalvar dbc-index nil "The index of the record currently being displayed (and of its link), or nil.
Use `dbc-set-index' to set this value unless you know what you are doing.")

(deflocalvar dbc-index-fraction nil "A string of the form dbc-index/database-no-of-records.
Variables with numeric values aren't allowed in mode-line-format.
An asterisk (*) precedes dbc-index if the current record is marked.
The fraction is surrounded by square brackets if the current record is omitted.
This variable should only be set by calling `dbc-set-index'.")

(deflocalvar dbc-wraparound-p (quote delay) "Value t, nil, or 'delay determines whether going forward from the last
record (or backward from the first) wraps, is prohibited, or denies on the
first attempt only and then wraps.")

(deflocalvar dbf-stay-in-edit-mode-p t "*Whether edit mode is preserved when switching records in EDB.
Automatically becomes local to the current buffer when set in any fashion.
Only has an effect when set in an EDB data display buffer.")

(deflocalvar db-new-record-function nil "Function called on empty records before they're inserted in the database.
Takes two arguments, the record and the database.")

(defvar db-kill-buffer-hook-inhibit-p nil)

(defvar db-delete-record-modifies-database-p t "\
Non-nil if deleting a record should mark the database as modified.")

(defvar db-mention-filename-on-save-p t)

(defvar db-auto-edit-mode t "\
nil if movement around the data display buffer is permitted in view mode.
When this variable is non-nil (it defaults to t), mousing and most
movement commands cause edit mode to be entered on the appropriate field.
Don't set this variable directly; use command `db-toggle-auto-edit-mode'.")

(defvar database-view-mode-map (make-keymap))

(suppress-keymap database-view-mode-map)

(define-key database-view-mode-map "n" (quote db-next-record))

(define-key database-view-mode-map "p" (quote db-previous-record))

(define-key database-view-mode-map "<" (quote db-first-record))

(define-key database-view-mode-map ">" (quote db-last-record))

(define-key database-view-mode-map (db-meta-prefix-ify "<") (quote db-first-record))

(define-key database-view-mode-map (db-meta-prefix-ify ">") (quote db-last-record))

(define-key database-view-mode-map "j" (quote db-jump-to-record))

(define-key database-view-mode-map " " (quote db-next-screen-or-record))

(define-key database-view-mode-map "" (quote db-previous-screen-or-record))

(define-key database-view-mode-map (db-meta-prefix-ify "n") (quote db-next-record-ignore-omitting))

(define-key database-view-mode-map (db-meta-prefix-ify "p") (quote db-previous-record-ignore-omitting))

(define-key database-view-mode-map (db-meta-prefix-ify "") (quote db-next-marked-record))

(define-key database-view-mode-map (db-meta-prefix-ify "") (quote db-previous-marked-record))

(define-key database-view-mode-map "	" (quote db-first-field))

(define-key database-view-mode-map (db-meta-prefix-ify "	") (quote db-last-field))

(define-key database-view-mode-map "" (quote db-first-field))

(define-key database-view-mode-map "" (quote db-last-field))

(define-key database-view-mode-map "e" (quote db-first-field))

(define-key database-view-mode-map "" (quote undefined))

(define-key database-view-mode-map "" (quote undefined))

(define-key database-view-mode-map "" (quote undefined))

(define-key database-view-mode-map "" (quote undefined))

(define-key database-view-mode-map "" (quote db-scroll-up))

(define-key database-view-mode-map (db-meta-prefix-ify "v") (quote db-scroll-down))

(define-key database-view-mode-map "u" (quote db-revert-record))

(define-key database-view-mode-map "r" (quote db-revert-database))

(define-key database-view-mode-map "a" (quote db-add-record))

(define-key database-view-mode-map "i" (quote db-add-record))

(define-key database-view-mode-map "d" (quote db-delete-record))

(define-key database-view-mode-map "k" (quote db-delete-record))

(define-key database-view-mode-map "o" (quote db-output-record-to-db))

(define-key database-view-mode-map "c" (quote db-copy-record))

(define-key database-view-mode-map (db-meta-prefix-ify "S") (quote db-search))

(define-key database-view-mode-map (db-meta-prefix-ify "s") (quote db-search))

(define-key database-view-mode-map "s" (quote db-search))

(define-key database-view-mode-map "S" (quote db-incremental-search))

(define-key database-view-mode-map "" (quote db-isearch-forward))

(define-key database-view-mode-map "" (quote db-isearch-backward))

(define-key database-view-mode-map "q" (quote db-quit))

(define-key database-view-mode-map "x" (quote db-exit))

(define-key database-view-mode-map "m" (quote db-mark-record))

(define-key database-view-mode-map "?" (quote describe-mode))

(define-key database-view-mode-map "O" (quote db-omit-record))

(define-key database-view-mode-map (db-meta-prefix-ify "o") (quote db-omitting-toggle))

(define-key database-view-mode-map (db-meta-prefix-ify "O") (quote db-omitting-set))

(define-key database-view-mode-map (db-meta-prefix-ify "") (quote db-toggle-show-omitted-records))

(define-key database-view-mode-map "D" (quote db-summary))

(define-key database-view-mode-map "h" (quote db-summary))

(define-key database-view-mode-map "H" (quote db-summary))

(define-key database-view-mode-map "r" (quote db-report))

(define-key database-view-mode-map "" (quote db-accept-record))

(define-key database-view-mode-map "b" (quote undefined))

(define-key database-view-mode-map "f" (quote undefined))

(define-key database-view-mode-map "g" (quote undefined))

(define-key database-view-mode-map "l" (quote undefined))

(define-key database-view-mode-map "t" (quote undefined))

(define-key database-view-mode-map "w" (quote undefined))

(define-key database-view-mode-map "y" (quote undefined))

(define-key database-view-mode-map "z" (quote undefined))

(defvar database-edit-mode-map (make-keymap))

(if (not db-running-lucid-emacs) (global-set-key " " (quote db-x-jump-to-point)))

(define-key database-edit-mode-map "" (quote db-view-mode))

(define-key database-edit-mode-map "U" (quote db-revert-field))

(define-key database-edit-mode-map (db-meta-prefix-ify "n") (quote db-next-record))

(define-key database-edit-mode-map (db-meta-prefix-ify "p") (quote db-previous-record))

(define-key database-edit-mode-map "	" (quote db-next-field))

(define-key database-edit-mode-map (db-meta-prefix-ify "	") (quote db-previous-field))

(define-key database-edit-mode-map (db-meta-prefix-ify "<") (quote db-first-field))

(define-key database-edit-mode-map (db-meta-prefix-ify ">") (quote db-last-field))

(define-key database-edit-mode-map "" (quote db-scroll-up))

(define-key database-edit-mode-map (db-meta-prefix-ify "v") (quote db-scroll-down))

(define-key database-edit-mode-map "" (quote db-next-line-or-field))

(define-key database-edit-mode-map "" (quote db-previous-line-or-field))

(define-key database-edit-mode-map "" (quote db-forward-char))

(define-key database-edit-mode-map "" (quote db-backward-char))

(define-key database-edit-mode-map (db-meta-prefix-ify "f") (quote db-forward-word))

(define-key database-edit-mode-map (db-meta-prefix-ify "b") (quote db-backward-word))

(define-key database-edit-mode-map "" (quote db-beginning-of-line-or-field))

(define-key database-edit-mode-map "" (quote db-end-of-line-or-field))

(define-key database-edit-mode-map "" (quote db-newline))

(define-key database-edit-mode-map "
" (quote db-newline))

(define-key database-edit-mode-map "" (quote db-open-line))

(define-key database-edit-mode-map "" (quote db-delete-char))

(define-key database-edit-mode-map "" (quote db-backward-delete-char))

(define-key database-edit-mode-map (db-meta-prefix-ify "d") (quote db-kill-word))

(define-key database-edit-mode-map (db-meta-prefix-ify "") (quote db-backward-kill-word))

(define-key database-edit-mode-map "" (quote db-kill-line))

(define-key database-edit-mode-map (db-meta-prefix-ify "k") (quote db-kill-to-end))

(define-key database-edit-mode-map "" (quote db-kill-region))

(define-key database-edit-mode-map (db-meta-prefix-ify "w") (quote db-copy-region-as-kill))

(define-key database-edit-mode-map (db-meta-prefix-ify "s") (quote db-search-field))

(define-key database-edit-mode-map "" (quote db-isearch-forward))

(define-key database-edit-mode-map "" (quote db-isearch-backward))

(define-key database-edit-mode-map (db-meta-prefix-ify "?") (quote db-field-help))

(define-key database-view-mode-map "" (quote db-save-database))

(define-key database-edit-mode-map "" (quote db-save-database))

(define-key database-view-mode-map "" (quote db-write-database-file))

(define-key database-edit-mode-map "" (quote db-write-database-file))

(define-key database-view-mode-map "" (quote db-toggle-modifiable-p))

(define-key database-edit-mode-map "" (quote db-toggle-modifiable-p))

(define-key database-view-mode-map "n" (quote undefined))

(define-key database-edit-mode-map "n" (quote undefined))

(defun db-field-help nil "\
Display help for current field using the recordfieldspec help-info field.
If this is a string, display it.  If it is a form, eval it and display the
result." (interactive) (byte-code "Äˆ?…
 ÅÆ!ˆÇHÈ	\"ÉHÊ
ƒ+ 
;ƒ$ 
‚( ËÌÍ�‚2 ÎÏÐ	\"\"Ñ\"*‡" [dbf-this-displayspec field-index help-text dbc-database nil error "Not on a field." 1 database-recordfieldspec 8 db-best-fit-message err (byte-code "Á!‡" [help-text eval] 2) ((error (byte-code "ÂÃ	#‡" [help-text err format "This help form:

  %s

failed with this error:

%s"] 4))) format "No help available for `%s'." fieldnumber->fieldname " *DB Help*"] 8))

(defun db-quit nil "\
Quit editing the database for now; bury its buffers." (interactive) (byte-code "ÀˆÁ ‡" [nil db-bury] 2))

(defun db-exit (&optional kill) "\
Be done with the database; like `db-quit', but offers to save any changes.
With prefix arg, kills the data display buffer, and the database, if that was
its only data display buffer." (interactive "P") (byte-code "ÂˆÃÀ!ˆ	ƒ Ä ‚ Å ‡" [t kill nil db-save-database db-kill-buffers db-quit] 4))

(defun db-kill-buffers nil "\
Kill this buffer, and the associated summary or data display buffer, if any.
If its last data display buffer is killed, the database is killed too.
Does not offer to save changes to the database or to this record; use `db-exit'
with optional argument to do so." (byte-code "ÉÊ !p	=ƒ3 Ë ˆÌpÍH\"
ƒ\" Í
I‚( Ì\"‰)ˆÆÎp!)‚– ÏŽqˆÐ!Ñ =?…L Ò!`=Ë ˆÌpÍH\"
ƒc Í
I‚i Ì\"‰)ˆÆÎp!)…‹ p=…‹ Ð!=…‹ Ñ =?…“ Ó`\"ˆ*)*‡" [target-buffer this-buffer remaining-buffers dbc-database db-databases db-kill-buffer-hook-inhibit-p t target-window track-window-point-p get-buffer-create db-data-display-buffer dbf-kill-summary delq 7 kill-buffer ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 19))

(defun dbf-kill-summary nil (byte-code "Ç!… È!… …n É!p	
=ƒ) Êp!ˆÄËp!)‚m ÌŽ	qˆÍ	!Î =?…? Ï!`=Êp!ˆÄËp!)…c p	=…c Í	!=…c Î =?…j Ð`\"ˆ*)*‡" [dbf-summary-buffer target-buffer this-buffer db-kill-buffer-hook-inhibit-p t target-window track-window-point-p bufferp buffer-name get-buffer-create delete-windows-on kill-buffer ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 16))

(defun db-kill-buffer-hook nil (byte-code "?… Ä † Å …3 	† Æ ƒ- ÇÈ
ÉHÊQ!…* ËÃ!ˆÌÃ!‚0 ÌÃ!ˆÍ ‡" [db-kill-buffer-hook-inhibit-p dbf-this-record-modified-p dbc-database t db-data-display-buffer-p db-summary-buffer-p dbf-this-field-modified-p y-or-n-p "Commit the current record before killing " 1 "? " dbf-process-current-record-maybe db-save-database db-kill-buffers] 9))

(defun db-bury (&optional not-data-display not-summary) (byte-code "ÉÉÊË !p
=ƒ2 ?… p?…- Ì!…- Í!…- ‰‚� ÎŽ
qˆÏ
!Ð =?…K Ñ!`=?…S p?…i Ì!…i Í!…i ‰…… p
=…… Ï
!=…… Ð =?…� Ò`\"ˆ*)*ˆ…� Ó!ˆÔ!ˆ	…© Ó	!ˆÔ	!*‡" [data-display-buffer summary-buffer target-buffer this-buffer not-data-display not-summary dbf-summary-buffer target-window track-window-point-p nil get-buffer-create db-data-display-buffer bufferp buffer-name ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point delete-windows-on bury-buffer] 17))

(if (not (fboundp (quote db-old-save-some-buffers))) (progn (fset (quote db-old-save-some-buffers) (symbol-function (quote save-some-buffers))) (fset (quote save-some-buffers) (quote db-save-some-buffers))))

(defun db-save-some-buffers (&optional quietly exiting) "\
Save some modified databases and file-visiting buffers.
Asks user about each one.  With argument, saves all with no questions." (interactive "P") (byte-code "ÂˆÃ!ˆÄ	\"‡" [quietly exiting nil db-save-some-databases db-old-save-some-buffers] 4))

(defun db-save-some-databases (&optional quietly) "\
Save some modified databases.  Asks user about each one.
With argument, saves all with no questions." (interactive "P") (byte-code "Ëˆ	ËËË…S@AÌ
!‰ˆ…O‰ˆ…ˆ Í@!p=ƒ; ÎÇ!‚~ ÏŽqˆÐ!Ñ =?…T Ò!`=	ÎÇ!	…s p=…s Ð!=…s Ñ =?…{ Ó`\"ˆ*)*ˆA‰ˆ‚\" ˆÍ@!p=ƒ  Ô
?!‚å ÕŽqˆÐ!Ñ =?…¹ Ò!`=	Ô
?!	…Ú p=…Ú Ð!=…Ú Ñ =?…â Ó`\"ˆ*)*ˆ‰ˆ…OÍ@!p=ƒÖ ‚E×ŽqˆÐ!Ñ =?…Ò!`=	Ö 	…:p=…:Ð!=…:Ñ =?…BÓ`\"ˆ*)*ˆA‰ˆ‚ë ˆ‚
 ,‡" [databases db-databases this-database buffers buffers-remaining target-buffer this-buffer t target-window track-window-point-p quietly nil database-clean-data-display-buffers get-buffer-create dbf-process-current-record-maybe ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point db-save-database ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) force-mode-line-update ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3))] 33))

(defun db-find-file (database-file &optional prompt-for-format) "\
Read a database from DATABASE-FILE; prompts when called interactively.
If the database file doesn't specify a format and the format file can't be
inferred from DATABASE-FILE, the user is prompted for it too.
The user is always prompted for the format if prefix arg PROMPT-FOR-FORMAT
is non-nil.
If the database is already read in and PROMPT-FOR-FORMAT is nil, the existing
database buffer is merely selected.
When called non-interactively, argument PROMPT-FOR-FORMAT may be a string, the
name of a format file to use." (interactive "fDatabase file: 
P") (byte-code "ÅˆÎ!‰ˆ
;… 
ÅÅ
;… Å‰ˆ
?…Æ Ï!‰ˆ?†6 Ð!?…6 Å‰ˆ…< 	…Æ ÑHÅ…Å Ò	Ó@!p		=ƒe 
‚« ÔŽqˆÕ!Ö =?…€ ×!`=
…  p=…  Õ!=…  Ö =?…¨ Ø`\"ˆ*)*\"ƒ» @Å‰‚Á A‰ˆ‚G *ˆ?…Ó Ù	
#‰ˆ?…ß Ð!@‰ˆÚ!ˆ‰+ˆÛ ‡" [database-file format-file prompt-for-format database data-display-buffer nil ddbs ddb-format-file target-buffer this-buffer dbf-format-file target-window track-window-point-p dbc-database expand-file-name db-find-read-in-database database-clean-data-display-buffers 7 db-same-file-p get-buffer-create ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point read-database-file switch-to-buffer db-first-record] 16))

(defun db-this-buffer nil "\
Run EDB on the file corresponding to the current buffer.
The current buffer is killed first." (interactive) (byte-code "ÁˆÂp!Ãp!ˆÄ!)‡" [file nil buffer-file-name kill-buffer db-find-file] 4))

(defun db-find-read-in-database (database-filename) (byte-code "	Ä
?…
 …* Å@ÆH\"… Ç@!@…! @A‰ˆ‚ ˆ
*‡" [databases db-databases result database-filename nil db-same-file-p 4 database-clean-data-display-buffers] 5))

(defun database-clean-data-display-buffers (database) (byte-code "	ÆH
…\" Ç
@!?… È
@\"‰ˆ
A‰ˆ‚ ˆ?ƒ7 É	ÃÄ#ˆÈ	\"‰‚; 	ÆIˆ*‡" [ddbs database remaining t nil db-databases 7 buffer-name delq db-save-database-no-buffer] 7))

(defun db-revert-database nil "\
Replace the database with the data on disk.
This undoes all changes since the database was last saved." (interactive) (byte-code "ÄˆÅÆÇÈH\"!…4 pÉÊ!qˆË	ÈHÄ\"ˆÌ ‰ˆÍ	\"ˆÎÏÐ	!\"ˆÑÒ!+‡" [dbc-database database data-display-buffer db-buffer nil yes-or-no-p format "Revert database from file %s? " 4 generate-new-buffer "read-database-file" insert-file-contents read-database-internal-file-layout-maybe read-database-file-helper mapcar (lambda (data-display-buffer) (byte-code "qˆÄ ˆÅÁ!ˆÁ‰ˆÆÁ\"‡" [data-display-buffer nil dbf-this-record-modified-p dbc-index dbc-update-database-modified-p dbf-set-this-field-modified-p db-jump-to-record] 5)) database-clean-data-display-buffers db-message "Reverted database from disk."] 10))

(defun db-save-database (&optional query quietly) "\
Save the database to disk in the default save file.
Any changes to the current record are processed first.
The default save file is the file it was last saved to or read from.
If optional arg QUERY is specified, the user is asked first.
Optional second arg QUIETLY suppresses messages regarding the filename." (interactive) (byte-code "ÂˆÈÉ !p	=ƒ ÂˆÊÃ!ˆÂˆË\"‚j ÌŽqˆÍ!Î =?…7 Ï!`=ÂˆÊÃ!ˆÂˆË\"…_ p=…_ Í!=…_ Î =?…g Ð`\"ˆ*)*‡" [target-buffer this-buffer nil t query quietly target-window track-window-point-p get-buffer-create db-data-display-buffer dbf-process-current-record-maybe db-save-database-helper ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 15))

(defun db-save-database-helper (query quietly) (byte-code "ƒ 	?† ÅÆ
ÇHÈQ!… É
ÊH\"‚: ?…: ËÌ…, Í
!?ƒ8 ÎÏ
ÇH\"‚9 Ð\"‡" [dbc-database-modified-p query dbc-database quietly db-mention-filename-on-save-p y-or-n-p "Save database " 1 "? " db-write-database-file 4 db-message "No changes need to be saved%s." database-unnamed-p format " in %s" ""] 9))

(defun db-save-database-no-buffer (database query quietly) (byte-code "ÁÆ\"*‡" [dbc-index nil dbc-database database query quietly db-save-database-helper] 3))

(defun db-write-database-file (&optional filename quietly) "\
Save the database to disk in file FILENAME; it becomes the default save file.
Any changes to the current record are processed first.
If FILENAME is not specified, the user is prompted for it.
Optional second arg QUIETLY suppresses messages regarding the filename." (interactive) (byte-code "ÅˆÈÀ!ˆ	?… ÉÊË
ÌH\"!‰ˆÍ	
ÎH\"?…, 
Î	IˆÏÐÑ	!!!ˆƒ7 Ò	P‚8 ÓÅˆ?…E ÔÕ\"ˆÖ
	\"ˆ†R ?…Z Ô×\")‡" [t filename dbc-database message-filename db-mention-filename-on-save-p nil quietly db-io-error-p dbf-process-current-record-maybe read-file-name format "Save database %s into file: " 1 equal 4 rename-buffer generate-new-buffer-name file-name-nondirectory " to file " "" db-message "Saving database%s..." write-database-file "Saving database%s...done"] 12))

(defun db-toggle-internal-file-layout (&optional arg) "\
Toggle whether the database will be saved in EDB's internal file layout.
With a nonzero prefix argument, set it to use internal file layout.
With a zero prefix argument, set it not to use internal file layout." (interactive "P") (byte-code "ÂˆÃ	ƒ ÄÅ	!!?‚ ÃH?I‡" [dbc-database arg nil 16 zerop prefix-numeric-value] 6))

(defun db-toggle-modifiable-p (&optional arg) "\
Toggle whether the database may be modified by the user.
With a nonzero prefix argument, set it modifiable.
With a zero prefix argument, set it non-modifiable." (interactive "P") (byte-code "Éˆ	ƒ ÊË	!!?‚ 
ÌH?
ÌIˆÍÎ !p=ƒ4 Ï=…1 ?‰‚ ÐŽqˆÑ!Ò =?…M Ó!`=Ï=…Z ?‰…t p=…t Ñ!=…t Ò =?…| Ô`\"ˆ*)*)‡" [modifiable-p arg dbc-database target-buffer this-buffer dbf-minor-mode buffer-read-only target-window track-window-point-p nil zerop prefix-numeric-value 31 get-buffer-create db-data-display-buffer edit ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 13))

(defmacro dbf-goto-record-internal (&rest record-selector-body) (byte-code "ÁÂÃ#‡" [record-selector-body append (progn (db-view-mode) (dbf-process-current-record-maybe nil)) ((setq dbf-this-record-original (link-record dbc-link)) (display-record (dbf-displayed-record) t))] 4))

(put (quote dbf-goto-record-internal) (quote lisp-indent-hook) 0)

(put (quote dbf-goto-record-internal) (quote edebug-form-spec) (quote (&rest form)))

(defun db-jump-to-record (arg &optional respect-omitting) "\
Show the database's ARGth record.
Omitting is ignored unless optional argument RESPECT-OMITTING is specified." (interactive "NJump to record number: ") (byte-code "ÂˆÌÍ !p	=ƒ4 Î ˆÏÂ!ˆÐ?\"ˆÑH‰ˆÒƒ. ‚/ É\"‚– ÓŽqˆÔ!

Õ =?…M Ö
!`=Î ˆÏÂ!ˆÐ?\"ˆÑH‰ˆÒƒn ‚o É\"…‹ p=…‹ 
Ô!=…‹ 
Õ =?…“ ×
`\"ˆ*)*ˆØ …Ÿ Ù ‡" [target-buffer this-buffer nil arg respect-omitting dbf-this-record-original dbc-link dbf-this-record-modified-p dbf-this-record t target-window track-window-point-p get-buffer-create db-data-display-buffer db-view-mode dbf-process-current-record-maybe db-select-record 6 display-record ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point db-summary-buffer-p dbs-synch-summary-with-format] 19))

(defun db-first-record (&optional ignore-omitting) "\
Show the database's first record.
With optional prefix argument, ignores omitting." (interactive "P") (byte-code "ÂˆÃ ƒ ÄÅ?\"‚ Æ ƒ ebˆÇ ‚ ÈÉ!‡" [ignore-omitting t nil db-data-display-buffer-p db-jump-to-record 1 db-summary-buffer-p db-jump-to-point error "db-first-record called in wrong context."] 6))

(defun db-last-record (&optional ignore-omitting) "\
Show the database's last record.
With optional prefix argument, ignores omitting." (interactive "P") (byte-code "ÃˆÄ ƒ ÅÆH	?\"‚! Ç ƒ dbˆÈ ‚! ÉÊ!‡" [dbc-database ignore-omitting t nil db-data-display-buffer-p db-jump-to-record 3 db-summary-buffer-p db-jump-to-point error "db-last-record called in wrong context"] 6))

(defun db-next-record (arg &optional ignore-omitting markedp) "\
Go to the ARGth next record.
In that record, go to the current field, if any." (interactive "p") (byte-code "ÄˆÔ …	 Õ ˆÖ× !p	=ƒP Ø ˆÙÄ!ˆÚ#ˆ	ÛH‰ˆÜ
ƒ; ‚= Ì\"ˆ
…F …L Ý
!)‚Æ ÞŽqˆß!à =?…i á!`=Ø ˆÙÄ!ˆÚ#ˆ	ÛH‰ˆÜ
ƒ� ‚‘ Ì\"ˆ
…š …  Ý
!)…» p=…» ß!=…» à =?…Ã â`\"ˆ*)*ˆÔ …1Ö!p	=ƒß ‚!ãŽqˆß!à =?…ø á!`=…p=…ß!=…à =?…â`\"ˆ*)*äZ!ˆå!)‡" [target-buffer this-buffer this-field-index dbf-this-field-index nil arg ignore-omitting markedp dbf-this-record-original dbc-link dbf-this-record-modified-p dbf-this-record t dbf-stay-in-edit-mode-p target-window track-window-point-p index dbs-data-display-buffer dbc-index dbs-index db-summary-buffer-p dbs-synch-format-with-summary get-buffer-create db-data-display-buffer db-view-mode dbf-process-current-record-maybe db-select-next-record 6 display-record db-move-to-field-exact ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) dbs-forward-record dbs-set-index] 31))

(defun db-previous-record (arg &optional ignore-omitting markedp) "\
Go to the ARGth previous record.
In that record, go to the current field, if any." (interactive "p") (byte-code "ÃˆÄ[	
#‡" [arg ignore-omitting markedp nil db-next-record] 4))

(proclaim-inline db-previous-record)

(defun db-next-record-ignore-omitting (arg) "\
Go to the ARGth next record, ignoring omissions.
That is, all records, even those which are omitted, are counted." (interactive "p") (byte-code "ÂˆÃÁ\"‡" [arg t nil db-next-record] 3))

(proclaim-inline db-next-record-ignore-omitting)

(defun db-previous-record-ignore-omitting (arg) "\
Go to the ARGth previous record, ignoring omissions.
That is, all records, even those which are omitted, are counted." (interactive "p") (byte-code "ÁˆÂ[!‡" [arg nil db-next-record-ignore-omitting] 2))

(proclaim-inline db-previous-record-ignore-omitting)

(defun db-next-marked-record (arg) "\
Go to the ARGth next marked record.
Omitted records are treated according to db-omit-p." (interactive "p") (byte-code "ÁˆÃÁÂ#‡" [arg nil t db-next-record] 4))

(proclaim-inline db-next-marked-record)

(defun db-previous-marked-record (arg) "\
Go to the ARGth previous marked record.
Omitted records are treated according to db-omit-p." (interactive "p") (byte-code "ÁˆÂ[!‡" [arg nil db-next-marked-record] 2))

(proclaim-inline db-previous-marked-record)

(defun db-set-auto-edit-mode (arg) "\
Set `db-auto-edit-mode' to ARG." (byte-code "	‰ˆ…	 Â‡" [db-auto-edit-mode arg nil] 2))

(defun db-toggle-auto-edit-mode (&optional arg) "\
Change whether cursor movement in view mode causes edit mode to be entered.
See variable `db-auto-edit-mode'.
With a nonzero prefix argument, set  db-auto-edit-mode to t.
With a zero prefix argument, set  db-auto-edit-mode to nil." (interactive "P") (byte-code "ÂˆÃƒ ÄÅ!!?‚ 	?!‡" [arg db-auto-edit-mode nil db-set-auto-edit-mode zerop prefix-numeric-value] 4))

(defun dbc-set-index (index) (byte-code "	ÇÈÉHƒ Ê‚ ËÉH$… ÌHƒ' ÍÎQ‚( )‰‡" [dbc-index index dbc-index-fraction frac dbc-link dbc-database dbc-omit-p format "%s%d/%d" 3 "+" "" 4 "[" "]"] 6))

(defun db-select-next-record (arg &optional ignore-omitting markedp) (interactive "p") (byte-code "ÌˆÍ	
… ?É=†\" Î=…\" 
Ï=&@‰ˆÐA@!ˆAA…M Ï‰ˆAA@ÑWƒJ ÒÓ!‚M ÒÔ!)‡" [link-index-list dbc-database dbc-link dbc-index arg dbc-omit-p ignore-omitting markedp dbc-wraparound-p t last-command this-command nil next-link-and-index delay db-next-record-failed dbc-set-index 0 db-message "First record." "Last record."] 9))

(defun db-select-prev-record (arg &optional ignore-omitting) (interactive "p") (byte-code "ÂˆÃ[	\"‡" [arg ignore-omitting nil db-select-next-record] 3))

(proclaim-inline db-select-prev-record)

(defun db-select-first-record (&optional ignore-omitting) (interactive) (byte-code "Åˆ	ÆH‰ˆ
… ÇH… ?ƒ! È‰ˆÉÈ!‚$ ÊÈ!‡" [dbc-link dbc-database dbc-omit-p ignore-omitting dbc-index nil 2 4 1 db-select-next-record dbc-set-index] 3))

(defun db-select-last-record (&optional ignore-omitting) (interactive) (byte-code "Æˆ	ÇHÈ‰ˆÄÉÊ\")‡" [dbc-link dbc-database dbc-index dbc-wraparound t ignore-omitting nil 2 1 db-select-next-record -1] 3))

(proclaim-inline db-select-last-record)

(defun db-select-record (arg &optional ignore-omitting) (interactive "nRecord number: ") (byte-code "ÃˆÄ	\"ƒ Å
!ˆÆS
\"‚! ÃˆÇ ˆÈÉ	ÊH#‡" [arg dbc-database ignore-omitting nil database-index-in-range db-select-first-record db-select-next-record beep db-message "Record number %d out of range 1..%d" 3] 9))

(defun db-next-screen-or-record (arg) "\
Go to the ARGth next screenful of this display, or to the ARGth
next record, if this is the last screenful of this display.
If point is in the summary buffer and the data display buffer is not visible,
then move to the next record." (interactive "p") (byte-code "ÄˆÅ ƒ Æ!‚2 Ç …2 È
!	ƒ. É ÊŽË	!ˆÆ!))ˆÌ ‚1 Í!)‡" [arg ddb-window dbs-data-display-buffer this-window nil db-data-display-buffer-p dbf-next-screen-or-record db-summary-buffer-p get-buffer-window selected-window ((byte-code "Á!‡" [this-window select-window] 2)) select-window dbs-synch-summary-with-format db-next-record] 10))

(defun dbf-next-screen-or-record (arg) (byte-code "Â ƒ Ã!‚# ÄV… Â ?…# ÅÁ!ˆS‰ˆ‚ ‡" [arg nil eob-visible-p db-next-record 0 scroll-up] 7))

(defun db-previous-screen-or-record (arg) "\
Go to the ARGth previous screenful of this display, or to the ARGth
previous record, if this is the first screenful of this display.
If point is in the summary buffer and the data display buffer is not visible,
then move to the previous record." (interactive "p") (byte-code "ÄˆÅ ƒ Æ!‚2 Ç …2 È
!	ƒ. É ÊŽË	!ˆÆ!))ˆÌ ‚1 Í!)‡" [arg ddb-window dbs-data-display-buffer this-window nil db-data-display-buffer-p dbf-previous-screen-or-record db-summary-buffer-p get-buffer-window selected-window ((byte-code "Á!‡" [this-window select-window] 2)) select-window dbs-synch-summary-with-format db-previous-record] 10))

(defun dbf-previous-screen-or-record (arg) (byte-code "Â ƒ Ã!‚+ ÄV… Â ?…# ÅÁ!ˆS‰ˆ‚ ˆÂ …+ eb‡" [arg nil bob-visible-p db-previous-record 0 scroll-down] 7))

(defun db-beginning-of-field-or-record nil "\
Move to the beginning of this field; if at its beginning, to the first field." (interactive) (byte-code "Áˆ`Uƒ Â ‚ Ã ‡" [dbf-this-field-beginning-pos nil db-first-field db-beginning-of-field] 3))

(defun db-end-of-field-or-record nil "\
Move to the end of this field; if at its end, to the last field." (interactive) (byte-code "Àˆ`Á Uƒ Â ‚ Ã ‡" [nil dbf-this-field-end-pos db-last-field db-end-of-field] 4))

(defun db-add-record nil "\
Add a new record to the database immediately before the current record." (interactive) (byte-code "ÃˆÌ …
 Í!ˆÎ
!ÏÃ	
$ˆÐ	
#)ˆT‰ˆ
ÑÆIˆÒ ˆ…3 Ó!…¦ Ô!…F Õ!…F …¦ Ö!p		=ƒ_ × ‚¥ ØŽqˆÓ!

Ù =?…z Ú
!`=× …š p=…š 
Ó!=…š 
Ù =?…¢ Û
`\"ˆ*)*ˆÜÝ!ˆÞß!ˆà ‡" [dbs-data-display-buffer new-record dbc-database nil db-new-record-function dbc-index t dbf-summary-buffer target-buffer this-buffer target-window track-window-point-p db-summary-buffer-p pop-to-buffer make-default-record db-funcall-maybe-default database-add-record 30 dbf-set-summary-out-of-date-p get-buffer-window bufferp buffer-name get-buffer-create dbs-synch-summary-with-format ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) selected-window window-point set-window-point db-message "Added a new record." db-previous-record 1 db-first-field] 22))

(defun db-delete-record (&optional force) "\
Remove the current record from the database.
With a prefix arg, doesn't verify." (interactive "P") (byte-code "Æˆ†	 ÇÈ!…% É	
\"ˆS‰ˆ… ÊÅ!ˆËÌ!ˆÍÎ!‡" [force dbc-database dbc-link dbc-index db-delete-record-modifies-database-p t nil y-or-n-p "Delete this record? " database-delete-link dbc-set-database-modified-p db-message "Record deleted." db-next-record 1] 6))

(defun db-copy-record (&optional arg) "\
Insert a copy of the current record in the database immediately after it.
The second of the two records is made the current record.
With a prefix arg, inserts that many copies." (interactive "p") (byte-code "ÉˆÊË !p	=ƒ5 ÌÂ!ˆÍV…2 ÎÏÐH!#ˆÑT!ˆS‰ˆ‚ ‚˜ ÒŽqˆÓ!Ô =?…N Õ!`=ÌÂ!ˆÍV…s ÎÏÐH!#ˆÑT!ˆS‰ˆ‚T …� p=…� Ó!=…� Ô =?…• Ö`\"ˆ*)*ˆ× …¡ Ø ˆÙ ˆÚÛ!‡" [target-buffer this-buffer t arg dbc-link dbc-database dbc-index target-window track-window-point-p nil get-buffer-create db-data-display-buffer dbf-process-current-record-maybe 0 database-add-record copy-sequence 6 dbc-set-index ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point db-summary-buffer-p dbs-synch-summary-with-format force-mode-line-update db-message "Record copied."] 21))

(deflocalvar db-for-output nil "Default database to which to output records.")

(defun db-output-record-to-db (database) "\
Copy the current record to DATABASE.
DATABASE must be read in and compatible with the current database." (interactive (byte-code "ÅÁÆÇ
\"\"ƒ ÈÉÊÁÃ%\"A‚ ËÌ!ˆÁ)C‡" [db-alist nil db-databases t db-for-output delq mapcar (lambda (database) (byte-code "	=?… Â	\"… ÃH† ÄHB‡" [database dbc-database databases-compatible 1 4] 3)) assoc completing-read "Output record to which database (? for choices): " error "No compatible databases are currently read in!"] 9)) (byte-code "Áˆ…u Ë … Ì ˆÍÎ !p=ƒ) ÏÐH\"‚t ÑŽqˆÒ!		Ó =?…D Ô	!`=
ÏÐH\"
…i p=…i 	Ò!=…i 	Ó =?…q Õ	`\"ˆ*)*‡" [db-alist nil db-databases t db-for-output database target-buffer this-buffer dbc-link target-window track-window-point-p db-summary-buffer-p dbs-synch-format-with-summary get-buffer-create db-data-display-buffer database-add-record 6 ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 15))

(defun db-sort (&optional dont-confirm) "\
Sort the database.  With a prefix arg, don't confirm the sort order." (interactive "P") (byte-code "ÇˆÈÉ !p	=ƒ& ÊÂ!ˆƒ  Ë!ˆÌ ‚# Í!‚t ÎŽqˆÏ!Ð =?…< Ñ!`=ÊÂ!ˆƒO Ë!ˆÌ ‚R Í!…j p=…j Ï!=…j Ð =?…q Ò`\"ˆ*)*‡" [target-buffer this-buffer t dont-confirm dbc-database target-window track-window-point-p nil get-buffer-create db-data-display-buffer dbf-process-current-record-maybe database-sort dbf-finished-sorting database-sort-interface ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 19))

(defun dbf-finished-sorting nil (byte-code "Æ ˆÇÈ!… É!… !ˆÈ!…  É!…  …q Ê!p	
=ƒ5 Ë‰‚p ÌŽ	qˆÍ	!Î =?…K Ï!`=Ë‰…f p	=…f Í	!=…f Î =?…m Ð`\"ˆ*)*ˆÑ ˆÒ ‡" [dbf-summary-buffer target-buffer this-buffer dbs-no-of-records target-window track-window-point-p dbc-compute-index delete-windows-on bufferp buffer-name get-buffer-create -1 ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point dbc-update-database-modified-p force-mode-line-update] 16))

(defun dbc-compute-index nil (byte-code "È
ÉH	ÊÆ	…; …; =…$ ‰ˆ	ÊH‰ˆÉHT‰ˆ	=…7 È‰ˆ‚ ˆÈ,ˆË!)‡" [this-index first-link dbc-database maplinks-link maplinks-index maplinks-not-done t dbc-link nil 2 1 dbc-set-index] 3))

(defun db-field-query-replace nil "\
Replace some instances of a value in this field with some other value.
Confirms before each replacement." (interactive) (byte-code "Îˆ?…
 ÝÞ!ˆ
ßHà\"áâ\"!	Î
ÎÎÎãÎ!ˆäHåæ!ƒW çèé�*‚Y *‰
ˆê
Î$ˆëH
ƒ† çìí�*‚ˆ ;ƒ• ‚– î+‰ˆäHåïð\"!ƒ¾ çñò�*‚À *‰ˆêÎ$ˆëHƒí çóô�*‚ï ;ƒü ‚ý î+‰ˆõö\"ˆ÷ø!ˆù	Ü\".
‡" [dbf-this-field-index old-dbc-index dbc-index displayspec dbf-this-displayspec fsno record-index fieldname dbc-database order-function original-value ov-printed replacement-value rv-printed nil dac-d->a dac-fieldtext vararg-common-1 vararg-common-2 adc-a->d adc-fieldtext adc-result vararg-common-1 vararg-common-2 vararg-common-1 vararg-common-2 vararg-common-1 vararg-common-2 t error "Call this when on a field." 1 fieldnumber->fieldname recordfieldspec-order-function database-recordfieldspec dbf-process-current-record-maybe 12 read-string "Query replace: " err (byte-code "Â	\"‡" [vararg-common-1 vararg-common-2 funcall] 3) ((wrong-number-of-arguments (byte-code "Ä	ÂÂ%‡" [vararg-common-1 vararg-common-2 nil record-index funcall] 6)) (error (byte-code "À… Â	@	A\"ˆ‚  ‡" [t err signal] 4))) record-check-constraint 11 (byte-code "Â	\"‡" [vararg-common-1 vararg-common-2 funcall] 3) ((wrong-number-of-arguments (byte-code "Ä	Â$‡" [vararg-common-1 vararg-common-2 nil record-index funcall] 5)) (error (byte-code "À… Â	@	A\"ˆ‚  ‡" [t err signal] 4))) "<ERROR>" format "Query replace %s with: " (byte-code "Â	\"‡" [vararg-common-1 vararg-common-2 funcall] 3) ((wrong-number-of-arguments (byte-code "Ä	ÂÂ%‡" [vararg-common-1 vararg-common-2 nil record-index funcall] 6)) (error (byte-code "À… Â	@	A\"ˆ‚  ‡" [t err signal] 4))) (byte-code "Â	\"‡" [vararg-common-1 vararg-common-2 funcall] 3) ((wrong-number-of-arguments (byte-code "Ä	Â$‡" [vararg-common-1 vararg-common-2 nil record-index funcall] 5)) (error (byte-code "À… Â	@	A\"ˆ‚  ‡" [t err signal] 4))) maprecords (lambda (record) (byte-code "ÎÏ	
H#U…R Ð
Ä\"ˆÎHÑÒ\"ƒ! Ä‚0 Ó`G\\Ä#…0 ÔÎ!b)ˆÎ‰ˆÕ!ˆÖ×Ø	
$!…R Ù
$‡" [order-function original-value record record-index t s dbf-inter-field-text dbf-this-field-index fsno fieldname ov-printed rv-printed replacement-value dbc-database 0 funcall display-record equal "" search-forward match-end db-next-field-internal y-or-n-p format "Replace `%s' with `%s'? " record-set-field-from-index] 13)) db-message "Replacement done." db-jump-to-record] 15))

(defun db-accept-record nil "\
Install the current record in the database; make any changes permanent." (interactive) (byte-code "ÁˆÂÀ!‡" [t nil dbf-process-current-record-maybe] 2))

(fset (quote db-commit-record) (quote db-accept-record))

(defun db-search-field (pattern &optional mark) "\
Search for occurrences of PATTERN in the current field of any record.
Finds the first match after the current record; wraps around automatically.
With prefix arg, marks all matches in addition to going to the first one.
If omitting is in effect, omitted records are ignored." (interactive (byte-code "Ä ÅÆÇ\"	ƒ 
	H‚ ÈÉ!\")D‡" [fieldname dbf-this-field-index dbf-field-search-defaults current-prefix-arg dbf-this-field-name read-string format "Search in %s for: " error "Only call db-search-field when on a field in a data display buffer."] 6)) (byte-code "ÙˆÞß\"… àá!ˆâ\"ã\"äHå
\"		Ùæ ÙÙÙç
	IˆƒQ èé#‚W èê#ˆ
ëHäØÙˆ…ö …ö …� ìH?…Ø †� ?…Ë íHH‰ˆÙˆî	#…Ë ?…¹ Ø‰ˆ…Ë T‰ˆïØIˆ=…Ø Ù‰ˆëHT‰ˆ=…ò Ù‰ˆ‚s ˆÙ-ˆƒX=ƒèð\"‚Uñ ˆòÙ!ˆ‰ˆó!ˆíH‰ˆôƒ4‚6Ø\"ˆõ!ˆƒPö ˆè÷#‚Uèø\"‚^èù#.‡" [fieldname dbf-this-field-index dbf-field-search-defaults current-prefix-arg pattern pat dbf-this-displayspec pat-display-rep this-record-index recordfieldspec dbc-database this-field-index this-field success success-link success-index matches mark omitp dbc-omit-p first-link maplinks-link maplinks-index maplinks-not-done t nil dbc-link dbf-this-record-original dbf-this-record-modified-p dbf-this-record equal "" error "You didn't enter a pattern for which to search." db-parse-match-pattern db-print-match-pattern 1 database-recordfieldspec dbf-this-field-name 0 db-message "Marking all %s in %s..." "Searching in %s for %s..." 2 4 6 db-match 3 "This record has the only match for %s." db-view-mode dbf-process-current-record-maybe dbc-set-index display-record db-move-to-field-exact dbf-set-summary-out-of-date-p "Searching for %s...marked %s matches." "Searching for %s...found." "Couldn't find a match in %s for %s."] 22))

(if nil (defun db-search (pattern &optional mark) "Search for occurrences of PATTERN in any field of any record.
Finds the first match after the current record; wraps around automatically.
With prefix arg, marks all matches in addition to going to the first one.
If omitting is in effect, omitted records are ignored." (interactive (list (read-string "Search in all fields for: " (aref dbf-field-search-defaults dbf-displayspecs-length)) current-prefix-arg)) (if (equal "" pattern) (error "You didn't enter a pattern for which to search.")) (let* ((pats (vconcat (mapcar (function (lambda (displayspec) (db-parse-match-pattern pattern displayspec))) dbf-displayspecs))) (pat-display-rep pattern) (record-indexes (vconcat (mapcar (function (lambda (displayspec) (displayspec-record-index displayspec))) dbf-displayspecs))) (recordfieldspecs (vconcat (mapcar (function (lambda (record-index) (database-recordfieldspec dbc-database record-index))) record-indexes))) this-record this-field success success-link success-index success-field-index (matches 0)) (aset dbf-field-search-defaults dbf-displayspecs-length pat-display-rep) (if mark (db-message "Marking all %s..." pat-display-rep) (db-message "Searching for %s..." pat-display-rep)) (maplinks-macro (progn (if (or mark (not success)) (progn (setq this-record (link-record maplinks-link)) (db-debug-message "db-search:  this-record = #%d, %s" maplinks-index this-record) (mapfields-macro (progn (db-debug-message "db-search:  this-field = #%d, %s" this-field-index this-field) (if (db-match (aref pats this-field-index) this-field (aref recordfieldspecs this-field-index)) (progn (if (not success) (setq success-link maplinks-link success-index maplinks-index success t success-field-index this-field-index this-field-index field-index-max)) (if mark (progn (setq matches (1+ matches)) (link-set-markedp maplinks-link t)))))) this-record dbc-database))) (if (eq maplinks-link dbc-link) (setq success nil))) dbc-database dbc-omit-p) (if success-index (if (eq dbc-link success-link) (db-message "This record has the only match for %s." pat-display-rep) (progn (dbf-goto-record-internal (setq dbc-link success-link) (dbc-set-index success-index)) (db-move-to-field-exact success-field-index) (if mark (progn (dbf-set-summary-out-of-date-p) (db-message "Searching for %s...marked %s matches." pat-display-rep matches)) (db-message "Searching for %s...found." pat-display-rep)))) (db-message "Couldn't find any match for %s." pat-display-rep)))))

(defun db-search nil "\
Please do not use `db-search', which is unimplemented; use `db-search-field'.
In a future version of EDB, `db-search' will permit searching on all fields
of a record simultaneously." (interactive) (byte-code "ÀˆÁÂ!‡" [nil error "db-search is unimplemented; use db-search-field instead (M-s from Edit mode)."] 2))

(defun db-isearch-forward nil "\
Like isearch-forward, but maintains the correspondence between the format
and summary buffers." (interactive) (byte-code "ÀˆÁ ˆÂ ‡" [nil isearch-forward db-jump-to-point] 3))

(defun db-isearch-backward nil "\
Like isearch-backward, but maintains the correspondence between the format
and summary buffers." (interactive) (byte-code "ÀˆÁ ˆÂ ‡" [nil isearch-backward db-jump-to-point] 3))

(defun db-mark-record (&optional arg) "\
Toggle whether the current record is marked.
With a nonzero prefix argument, set it to be marked.
With a zero prefix argument, set it to be unmarked." (interactive "P") (byte-code "ÇˆÈÉ !p	=ƒ2 
Êƒ ËÌ!!?‚\" 
ÊH?IˆÍ
\"ˆÎ!ˆÏ ‚Œ ÐŽqˆÑ!Ò =?…H Ó!`=
ÊƒY ËÌ!!?‚] 
ÊH?IˆÍ
\"ˆÎ!ˆÏ …‚ p=…‚ Ñ!=…‚ Ò =?…‰ Ô`\"ˆ*)*‡" [target-buffer this-buffer dbc-link arg dbc-index target-window track-window-point-p nil get-buffer-create db-data-display-buffer 3 zerop prefix-numeric-value dbf-update-summary-item dbc-set-index force-mode-line-update ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 21))

(defun db-omit-record (&optional arg) "\
Change whether the current record is omitted.
With a nonzero prefix argument, set it to be omitted.
With a zero prefix argument, set it to be unomitted." (interactive "P") (byte-code "ÉˆÊË !p	=ƒ? 
Ìƒ ÍÎ!!?‚\" 
ÌH?Iˆƒ/ Ï
\"‚5 ÐÆ!ˆÑ ˆÒ!ˆÓ ‚¬ ÔŽqˆÕ!Ö =?…X ×!`=
Ìƒi ÍÎ!!?‚m 
ÌH?Iˆƒz Ï
\"‚€ ÐÆ!ˆÑ ˆÒ!ˆÓ …¡ p=…¡ Õ!=…¡ Ö =?…© Ø`\"ˆ*)*‡" [target-buffer this-buffer dbc-link arg dbc-omit-p dbc-index t target-window track-window-point-p nil get-buffer-create db-data-display-buffer 4 zerop prefix-numeric-value dbf-update-summary-item dbc-set-omit-p dbf-update-summary-marks dbc-set-index force-mode-line-update ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 25))

(defun db-omit-unmarked-records nil "\
Omit all unmarked records.  Also clears all mark bits and sets `dbc-omit-p'." (interactive) (byte-code "ÉˆÌÍ !p	=ƒs ÃÎHÏÃÉˆ…f …f 
…1 ÐH?…I ÑHƒD ÑÉI‚I ÐÃIˆÎHT‰ˆ=…b É‰ˆ‚$ ˆÉ-ˆÒÃ!ˆÓ ‚ÔŽqˆÕ!

Ö =?…Œ ×
!`=ÃÎHÏÃÉˆ…å …å 
…° ÐH?…È ÑHƒÃ ÑÉI‚È ÐÃIˆÎHT‰ˆ=…á É‰ˆ‚£ ˆÉ-ˆÒÃ!ˆÓ …	p=…	
Õ!=…	
Ö =?…Ø
`\"ˆ*)*‡" [target-buffer this-buffer omitp t first-link dbc-database maplinks-link maplinks-index maplinks-not-done nil target-window track-window-point-p get-buffer-create db-data-display-buffer 2 1 4 3 dbc-set-omit-p dbf-update-summary-marks ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 15))

(defun db-mark-unomitted-records nil "\
Mark all unomitted records.  Also clears all omit bits." (interactive) (byte-code "ÈˆËÌ !p	=ƒY ÍH
ÎÇ
…L …L ÏHƒ0 ÏÈI‚4 ÐÇIˆÍHT‰ˆ
=…H È‰ˆ‚ ˆÈ,ˆÑÇ!ˆÒ ‚à ÓŽqˆÔ!		Õ =?…r Ö	!`=
ÍH
ÎÇ
…± …± ÏHƒ• ÏÈI‚™ ÐÇIˆÍHT‰ˆ
=…­ È‰ˆ‚ƒ ˆÈ,ˆÑÇ!ˆÒ 
…Õ p=…Õ 	Ô!=…Õ 	Õ =?…Ý ×	`\"ˆ*)*‡" [target-buffer this-buffer first-link dbc-database maplinks-link maplinks-index maplinks-not-done t nil target-window track-window-point-p get-buffer-create db-data-display-buffer 2 1 4 3 dbc-set-omit-p dbf-update-summary-marks ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 15))

(defun db-unomit-all nil "\
Clear the omit bit of every record." (interactive) (byte-code "ÈˆÌÍ !p	=ƒP ÎH
ÏÇ
…? …? ÐÈIˆÎHT‰ˆ
=…; È‰ˆ‚ ˆÈ,ˆÑ	!ˆÒ ˆÓ ‚Î ÔŽqˆÕ!

Ö =?…i ×
!`=ÎH
ÏÇ
…› …› ÐÈIˆÎHT‰ˆ
=…— È‰ˆ‚z ˆÈ,ˆÑ	!ˆÒ ˆÓ …Ã p=…Ã 
Õ!=…Ã 
Ö =?…Ë Ø
`\"ˆ*)*‡" [target-buffer this-buffer first-link dbc-database maplinks-link maplinks-index maplinks-not-done t nil dbc-index target-window track-window-point-p get-buffer-create db-data-display-buffer 2 1 4 dbc-set-index force-mode-line-update dbf-update-summary-marks ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 17))

(defun db-unmark-all nil "\
Clear the mark bit of every record." (interactive) (byte-code "ÈˆÌÍ !p	=ƒP ÎH
ÏÇ
…? …? ÐÈIˆÎHT‰ˆ
=…; È‰ˆ‚ ˆÈ,ˆÑ	!ˆÒ ˆÓ ‚Î ÔŽqˆÕ!

Ö =?…i ×
!`=ÎH
ÏÇ
…› …› ÐÈIˆÎHT‰ˆ
=…— È‰ˆ‚z ˆÈ,ˆÑ	!ˆÒ ˆÓ …Ã p=…Ã 
Õ!=…Ã 
Ö =?…Ë Ø
`\"ˆ*)*‡" [target-buffer this-buffer first-link dbc-database maplinks-link maplinks-index maplinks-not-done t nil dbc-index target-window track-window-point-p get-buffer-create db-data-display-buffer 2 1 3 dbc-set-index force-mode-line-update dbf-update-summary-marks ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 17))

(defun db-omitting-toggle (&optional arg) "\
Change whether omitting is in effect.
With a nonzero prefix argument, turn omitting on.
With a zero prefix argument, turn omitting off.

This does not change the current omit-function, and an omit bit is always
computed for each record, but omit bits have no effect on any operations
if omitting is not in effect." (interactive "P") (byte-code "ÈˆÉÊ !p	=ƒ@ Ë
ƒ ÌÍ
!!?‚ ?!ˆ?ƒ+ Î ‚- Ï ˆÐ ˆÑÒƒ; Ó‚< Ô\"‚® ÕŽqˆÖ!× =?…Y Ø!`=Ë
ƒi ÌÍ
!!?‚k ?!ˆ?ƒw Î ‚y Ï ˆÐ ˆÑÒƒ‡ Ó‚ˆ Ô\"…£ p=…£ Ö!=…£ × =?…« Ù`\"ˆ*)*‡" [target-buffer this-buffer arg dbc-omit-p dbf-summary-show-omitted-records-p t target-window track-window-point-p nil get-buffer-create db-data-display-buffer dbc-set-omit-p zerop prefix-numeric-value dbf-fill-summary-buffer-and-move-to-proper-record dbf-update-summary-marks force-mode-line-update db-message "Omitting is now %sin effect." "" "not " ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 25))

(defun db-omitting-set nil "\
Set the criteria for automatically determining whether to omit a record.
This isn't implemented yet." (interactive) (byte-code "ÀˆÁÂ!‡" [nil error "db-omitting-set is not yet implemented."] 2))

(defun db-toggle-show-omitted-records (&optional arg) "\
Toggle whether omitted records are shown in the summary.
With a nonzero prefix argument, show omitted records in the summary.
With a zero prefix argument, don't show omitted records in the summary." (interactive "P") (byte-code "ÆˆÉÊ !p	=ƒ³ ƒ ËÌ!!?‚ 
?‰ˆ
ƒ* Í ‚¢ Î!…7 Ï!…7 …¢ É!p	=ƒU ÆebˆÐÑ!ˆÒ )‚¡ ÓŽqˆÔ!Õ =?…n Ö!`=ÆebˆÐÑ!ˆÒ )…– p=…– Ô!=…– Õ =?…ž ×`\"ˆ*)*ˆ
ƒ­ ØÙ!‚° ØÚ!‚”ÛŽqˆÔ!Õ =?…Ì Ö!`=ƒÛ ËÌ!!?‚Ý 
?‰ˆ
ƒé Í ‚aÎ!…ö Ï!…ö …aÉ!p	=ƒÆebˆÐÑ!ˆÒ )‚`ÜŽqˆÔ!Õ =?…-Ö!`=ÆebˆÐÑ!ˆÒ )…Up=…UÔ!=…UÕ =?…]×`\"ˆ*)*ˆ
ƒlØÙ!‚oØÚ!…‰p=…‰Ô!=…‰Õ =?…‘×`\"ˆ*)*‡" [target-buffer this-buffer dbf-summary-show-omitted-records-p arg dbf-summary-buffer buffer-read-only nil target-window track-window-point-p get-buffer-create db-data-display-buffer zerop prefix-numeric-value dbf-fill-summary-buffer-and-move-to-proper-record bufferp buffer-name delete-matching-lines "^.\\[" dbs-move-to-proper-record ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point db-message "Omitted records will now be shown." "Omitted records will not now be shown." ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3))] 47))

(defun db-report (report-filename &optional markedp) "\
Create a report according to REPORT-FILENAME.
Prefix argument MARKEDP, if non-nil, means report on only marked records.
If omitting is in effect, omitted records are not reported upon.
When called interactively, prompts for REPORT-FILENAME." (interactive "fReport format file: 
P") (byte-code "ÆˆÑÀ!ˆ
ÆÆÒ‹ˆÓ
ÆÆÀ%ÔÕÖ×A\"E‰)ˆ
	ØÙÚ!!ˆÆ‰ˆÛ ˆ		ÜHÝÀÆˆ…” …” …^ ÞH?…v ?†l ßH…v àáH\"ˆÜHT‰ˆ=…� Æ‰ˆ‚P ˆÆ-ˆeb)+‡" [t database dbc-database report-format report-function buffer-read-only nil report-filename lasfl omit-p dbc-omit-p omitp first-link maplinks-link maplinks-index maplinks-not-done markedp dbf-process-current-record-maybe ((byte-code "ÄÅ!qˆÁ‰ˆÆ ˆÇ
!ˆÈed\"‰‡" [buffer-read-only nil report-filename report-format get-buffer-create " *Database work buffer*" erase-buffer insert-file-contents buffer-substring] 6)) format->lines-and-stringform-list lambda (formatted-record) append (insert) switch-to-buffer get-buffer-create "*Database Report*" erase-buffer 2 1 4 3 funcall 6] 11))

(defun data-display-buffer-database (data-display-buffer) (byte-code "Æ	!p
=ƒ ‚I ÇŽqˆÈ!É =?…& Ê!`=…? p=…? È!=…? É =?…F Ë`\"ˆ*)*‡" [target-buffer data-display-buffer this-buffer dbc-database target-window track-window-point-p get-buffer-create ((byte-code "Á!…	 Â!… q‡" [this-buffer bufferp buffer-name] 3)) get-buffer-window selected-window window-point set-window-point] 10))

(proclaim-inline data-display-buffer-database)

(defun display-current-record (recompute) (byte-code "Äƒ	 	‚
 
\"‡" [dbf-this-record-modified-p dbf-this-record dbf-this-record-original recompute display-record] 3))

(proclaim-inline display-current-record)
