;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\207" [require eieio cl-generic] 2)#@123 While inserting a set of fields, collect in this variable.
Once an insertion set is done, these fields will be activated.
(defvar srecode-field-archive nil (#$ . 154))
(custom-declare-face 'srecode-field-face '((((class color) (background dark)) (:underline "green")) (((class color) (background light)) (:underline "green4"))) "Face used to specify editable fields from a template." :group 'semantic-faces)
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\312\313\314\315!\"\210\312\316\317\315!\"\210\312\320\316\"\210\321\320\322\323#\210\324\315\325\316#\326\315\327\330\331$\207" [custom-declare-variable srecode-fields-exit-confirmation funcall function #[0 "\300\207" [nil] 1 ""] "Ask for confirmation before leaving field editing mode." :group srecode :type boolean defalias srecode-overlaid-p eieio-make-class-predicate srecode-overlaid srecode-overlaid--eieio-childp eieio-make-child-predicate srecode-overlaid-child-p make-obsolete "use (cl-typep ... 'srecode-overlaid) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((overlay :documentation "Overlay representing this field.\nThe overlay will crossreference this object.")) (:documentation "An object that gets automatically bound to an overlay.\nHas virtual :start and :end initializers.")] 8)#@73 Create a new object of class type `srecode-overlaid'.

(fn &rest SLOTS)
(defalias 'srecode-overlaid #[128 "\300\301\302#\207" [apply make-instance srecode-overlaid] 5 (#$ . 1465)])
(byte-code "\300\301\302\303#\300\207" [function-put srecode-overlaid compiler-macro srecode-overlaid--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'srecode-overlaid--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 1771)])
(byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\300\311\302\312\302\313%\210\300\314\302\315\302\316%\210\300\317\302\320\302\321%\210\300\322\302\323\302\324%\207" [cl-generic-define-method initialize-instance nil ((olaid srecode-overlaid) &optional args) curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[770 "\300\211\211\211\203K @\301=\203 A\262@\262A\262\202 @\302=\2034 A\262@\262A\262\202 @B\262A\262@B\262A\262\202 \303p\304\300%\262\305\306\304#\210\307\310#\210\237\"\207" [nil :start :end make-overlay t overlay-put srecode-init-only eieio-oset overlay] 13 "\n\n(fn CL--CNM OLAID &optional ARGS)"]] 6 "Initialize OLAID, being sure it archived.\n\n(fn OLAID &optional ARGS)"]] 5 "\n\n(fn CL--NM)"] srecode-overlaid-activate ((olaid srecode-overlaid)) #[257 "\300\301\"\302!\303!\304p\305\306%\307!\210\310\311#\210\312\301#\207" [eieio-oref overlay overlay-start overlay-end make-overlay nil t delete-overlay overlay-put srecode eieio-oset] 10 "Activate the overlaid area.\n\n(fn OLAID)"] srecode-delete ((olaid srecode-overlaid)) #[257 "\300\301\302\"!\210\303\302\"\207" [delete-overlay eieio-oref overlay slot-makeunbound] 5 "Delete the overlay from OLAID.\n\n(fn OLAID)"] srecode-empty-region-p ((olaid srecode-overlaid)) #[257 "\300!\301U\207" [srecode-region-size 0] 3 "Return non-nil if the region covered by OLAID is of length 0.\n\n(fn OLAID)"] srecode-region-size ((olaid srecode-overlaid)) #[257 "\300\301\302\"!\303\301\302\"!\211Z\207" [overlay-start eieio-oref overlay overlay-end] 6 "Return the length of region covered by OLAID.\n\n(fn OLAID)"] srecode-point-in-region-p ((olaid srecode-overlaid)) #[257 "\300\301\302\"!\303\301\302\"!`Y\205 `X\207" [overlay-start eieio-oref overlay overlay-end] 6 "Return non-nil if point is in the region of OLAID.\n\n(fn OLAID)"]] 6)#@70 Return a list of overlaid fields of type CLASS at point.

(fn CLASS)
(defalias 'srecode-overlaid-at-point #[257 "\300`!\301\203% \302@\303\"\211\203 \304\"\203 \211B\262\210A\262\202 \211\237@\207" [overlays-at nil overlay-get srecode object-of-class-p] 7 (#$ . 4075)])
(byte-code "\300\301\302\303\302\304%\210\305\306\307\310!\"\210\305\311\312\310!\"\210\305\313\311\"\210\314\313\315\316#\210\317\310\320\311#\321\310\322\323\324$\207" [cl-generic-define-method srecode-overlaid-text nil ((olaid srecode-overlaid) &optional set-to) #[513 "\300\301\"\302!;\204 \303\304!\"\207\212\211\304!|\210\211b\210c\210\305\211G\\#)\210\306\207" [eieio-oref overlay overlay-start buffer-substring-no-properties overlay-end move-overlay nil] 9 "Return the text under OLAID.\nIf SET-TO is a string, then replace the text of OLAID with SET-TO.\n\n(fn OLAID &optional SET-TO)"] defalias srecode-template-inserted-region-p eieio-make-class-predicate srecode-template-inserted-region srecode-template-inserted-region--eieio-childp eieio-make-child-predicate srecode-template-inserted-region-child-p make-obsolete "use (cl-typep ... 'srecode-template-inserted-region) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (srecode-overlaid) ((fields :documentation "A list of field overlays in this region.") (active-region :allocation :class :initform nil :documentation "The template region currently being handled.")) (:documentation "Manage a buffer region in which fields exist.")] 6)#@89 Create a new object of class type `srecode-template-inserted-region'.

(fn &rest SLOTS)
(defalias 'srecode-template-inserted-region #[128 "\300\301\302#\207" [apply make-instance srecode-template-inserted-region] 5 (#$ . 5604)])
(byte-code "\300\301\302\303#\300\207" [function-put srecode-template-inserted-region compiler-macro srecode-template-inserted-region--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'srecode-template-inserted-region--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 5990)])
(byte-code "\300\301\302\303\304\305%\210\300\306\302\307\304\310%\210\300\311\302\312\304\313%\207" [cl-generic-define-method initialize-instance nil ((ir srecode-template-inserted-region) &rest _args) curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[642 "\301\302#\210\303 \207" [srecode-field-archive eieio-oset fields nil] 7 "\n\n(fn CL--CNM IR &rest ARGS)"]] 6 "Initialize IR, capturing the active fields, and creating the overlay.\n\n(fn IR &rest ARGS)"]] 5 "\n\n(fn CL--NM)"] srecode-overlaid-activate ((ir srecode-template-inserted-region)) #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\300\301\"\211\203 \211@\302!\210A\266\202\202 \210 \210\300\301\"@\303\300\304\"!b\266\305\306#\210\307\310\311\312\211$\207" [eieio-oref fields srecode-overlaid-activate overlay-start overlay eieio-oset active-region add-hook post-command-hook srecode-field-post-command t] 7 "\n\n(fn CL--CNM IR)"]] 6 "Activate the template area for IR.\n\n(fn IR)"]] 5 "\n\n(fn CL--NM)"] srecode-delete ((ir srecode-template-inserted-region)) #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\300\301\302#\210\303\304\305\306\"\"\210 \210\307\310\311\312#\207" [eieio-oset active-region nil mapc srecode-delete eieio-oref fields remove-hook post-command-hook srecode-field-post-command t] 7 "\n\n(fn CL--CNM IR)"]] 6 "Call into our base, but also clear out the fields.\n\n(fn IR)"]] 5 "\n\n(fn CL--NM)"]] 6)#@47 Return the active region for template fields.
(defalias 'srecode-active-template-region #[0 "\300\301\302\"\207" [eieio-oref-default srecode-template-inserted-region active-region] 3 (#$ . 8182)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put srecode-active-template-region speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@49 Srecode field handler in the post command hook.
(defalias 'srecode-field-post-command #[0 "\300\301\302\"\211\204 \303\304\305\306#\207\307!?\205 \310!\207" [eieio-oref-default srecode-template-inserted-region active-region remove-hook post-command-hook srecode-field-post-command t srecode-point-in-region-p srecode-delete] 5 (#$ . 8540)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias srecode-field-p eieio-make-class-predicate srecode-field srecode-field--eieio-childp eieio-make-child-predicate srecode-field-child-p make-obsolete "use (cl-typep ... 'srecode-field) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (srecode-overlaid) ((tail :documentation "Overlay used on character just after this field.\nUsed to provide useful keybindings there.") (name :initarg :name :documentation "The name of this field.\nUsually initialized from the dictionary entry name that\nthe users needs to edit.") (prompt :initarg :prompt :documentation "A prompt string to use if this were in the minibuffer.\nDisplay when the cursor enters this field.") (read-fcn :initarg :read-fcn :documentation "A function that would be used to read a string.\nTry to use this to provide useful completion when available.")) (:documentation "Representation of one field.")] 6)#@70 Create a new object of class type `srecode-field'.

(fn &rest SLOTS)
(defalias 'srecode-field #[128 "\300\301\302#\207" [apply make-instance srecode-field] 5 (#$ . 9938)])
(byte-code "\300\301\302\303#\300\207" [function-put srecode-field compiler-macro srecode-field--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'srecode-field--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 10229)])#@35 Keymap applied to field overlays.
(defvar srecode-field-keymap (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\301\312\311#\210\301\313\314#\210\207" [make-sparse-keymap define-key "	" srecode-field-next "\211" srecode-field-prev "" srecode-field-end "" srecode-field-start "\355" "" srecode-field-exit-ask] 5) (#$ . 10473))
(byte-code "\300\301\302\303\304\305%\210\300\306\302\307\304\310%\210\300\311\302\312\304\313%\207" [cl-generic-define-method initialize-instance nil ((field srecode-field) &optional _args) curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[770 "\235\204\f \301C\" \207" [srecode-field-archive append] 6 "\n\n(fn CL--CNM FIELD &optional ARGS)"]] 6 "Initialize FIELD, being sure it archived.\n\n(fn FIELD &optional ARGS)"]] 5 "\n\n(fn CL--NM)"] srecode-overlaid-activate ((field srecode-field)) #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 " \210\301\302\"\303\211\304\305\306#\210\304\307#\210\304\310\311#\210\304\312\313#\210\304\314\315#\210\316!\262\317\211Tp#\262\304\320#\210\304\307#\210\304\305\306#\210\321\322#\207" [srecode-field-keymap eieio-oref overlay nil overlay-put face srecode-field-face keymap modification-hooks (srecode-field-mod-hook) insert-behind-hooks (srecode-field-behind-hook) insert-in-front-hooks (srecode-field-mod-hook) overlay-end make-overlay srecode eieio-oset tail] 9 "\n\n(fn CL--CNM FIELD)"]] 6 "Activate the FIELD area.\n\n(fn FIELD)"]] 5 "\n\n(fn CL--NM)"] srecode-delete ((olaid srecode-field)) #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\300\301\302\"!\210\303\302\"\210 \207" [delete-overlay eieio-oref tail slot-makeunbound] 6 "\n\n(fn CL--CNM OLAID)"]] 6 "Delete our secondary overlay.\n\n(fn OLAID)"]] 5 "\n\n(fn CL--NM)"]] 6)#@55 Maximum size of a field before canceling replication.
(defvar srecode-field-replication-max-size 100 (#$ . 12781))#@269 Modification hook for the field overlay.
OL is the overlay.
AFTER is non-nil if it is called after the change.
START and END are the bounds of the change.
PRE-LEN is used in the after mode for the length of the changed text.

(fn OL AFTER START END &optional PRE-LEN)
(defalias 'srecode-field-mod-hook #[1284 "\205\201 ?\205\201 \303\304\"\305\306\307\"\205~ \310\307\"\310\311\"\312\313!\314!S#\210\312\314!S\314!#\266\315!\316\317\320\"\211\205D \310\321\"\310\322\"\211\205z \211@\211=\204s \310\322\"\230\203s G\nV\203m \323\324!\210\202s \315\"\210A\266\202\202I \262\266\204)\262\207" [undo-in-progress inhibit-modification-hooks srecode-field-replication-max-size overlay-get srecode t slot-boundp overlay eieio-oref tail move-overlay overlay-start overlay-end srecode-overlaid-text eieio-oref-default srecode-template-inserted-region active-region fields name message "Field size too large for replication."] 16 (#$ . 12902)])#@269 Modification hook for the field overlay.
OL is the overlay.
AFTER is non-nil if it is called after the change.
START and END are the bounds of the change.
PRE-LEN is used in the after mode for the length of the changed text.

(fn OL AFTER START END &optional PRE-LEN)
(defalias 'srecode-field-behind-hook #[1284 "\205 \300\301!#\210\302%\207" [move-overlay overlay-start srecode-field-mod-hook] 11 (#$ . 13872)])
(cl-generic-define-method 'srecode-field-goto nil '((field srecode-field)) nil #[257 "\300\301\302\"!b\207" [overlay-start eieio-oref overlay] 5 "Goto the FIELD.\n\n(fn FIELD)"])#@25 Move to the next field.
(defalias 'srecode-field-next #[0 "\300\301!\300\302!\204 \303\304!\210\211\204 \303\305!\210\306\307\"\211\205E @=\203> \211A\2033 \310A@!\210\202; \310\306\307\"@!\210\311\262\211A\262\202 \207" [srecode-overlaid-at-point srecode-field srecode-template-inserted-region error "Not in a field" "Not in a template region" eieio-oref fields srecode-field-goto nil] 7 (#$ . 14481) nil])#@25 Move to the prev field.
(defalias 'srecode-field-prev #[0 "\300\301!\300\302!\204 \303\304!\210\211\204 \303\305!\210\306\307\310\"!\211\205G @=\203@ \211A\2035 \311A@!\210\202= \311\307\310\"@!\210\312\262\211A\262\202 \207" [srecode-overlaid-at-point srecode-field srecode-template-inserted-region error "Not in a field" "Not in a template region" reverse eieio-oref fields srecode-field-goto nil] 7 (#$ . 14905) nil])#@32 Move to the end of this field.
(defalias 'srecode-field-end #[0 "\300\301!\302\303\304\"!b\207" [srecode-overlaid-at-point srecode-field overlay-end eieio-oref overlay] 5 (#$ . 15342) nil])#@32 Move to the end of this field.
(defalias 'srecode-field-start #[0 "\300\301!\302\303\304\"!b\207" [srecode-overlaid-at-point srecode-field overlay-start eieio-oref overlay] 5 (#$ . 15538) nil])#@56 Ask if the user wants to exit field-editing mini-mode.
(defalias 'srecode-field-exit-ask #[0 "\203\n \301\302!\205 \303\304\305\306\"!\207" [srecode-fields-exit-confirmation y-or-n-p "Exit field-editing mode? " srecode-delete eieio-oref-default srecode-template-inserted-region active-region] 4 (#$ . 15738) nil])
(provide 'srecode/fields)
